diff --git a/LICENSE b/LICENSE index f3aca7b99..8cc76f6c1 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License -Copyright (c) 2018 Google LLC. +Copyright (c) 2019 Google LLC. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/_mq.scss b/_mq.scss index 1b6343c22..7f8af1579 100644 --- a/_mq.scss +++ b/_mq.scss @@ -5,23 +5,23 @@ $breakpoints: ( xs: ( begin: 0, - end: 599px + end: 599.9px ), sm: ( begin: 600px, - end: 959px + end: 959.9px ), md: ( begin: 960px, - end: 1279px + end: 1279.9px ), lg: ( begin: 1280px, - end: 1919px + end: 1919.9px ), xl: ( begin: 1920px, - end: 5000px + end: 4999.99px ), ) !default; @@ -29,20 +29,20 @@ $breakpoints: ( // Material Design breakpoints // @type map $overlapping-gt: ( - xs: 600px, - sm: 960px, - md: 1280px, - lg: 1920px, + gt-xs: 600px, + gt-sm: 960px, + gt-md: 1280px, + gt-lg: 1920px, ) !default; // Overlapping breakpoints that are less than defined // Material Design breakpoints // @type map $overlapping-lt: ( - sm: 599px, - md: 959px, - lg: 1279px, - xl: 1919px, + lt-sm: 599.9px, + lt-md: 959.9px, + lt-lg: 1279.9px, + lt-xl: 1919.9px, ) !default; @@ -66,11 +66,11 @@ $overlapping-lt: ( @media (min-width: $min) and (max-width: $max) { @content; } } @else if map-has-key($overlapping-gt, $bp) { - $min: map-get($breakpoints, $bp); + $min: map-get($overlapping-gt, $bp); @media (min-width: $min) { @content; } } @else if map-has-key($overlapping-lt, $bp) { - $max: map-get($breakpoints, $bp); + $max: map-get($overlapping-lt, $bp); @media (max-width: $max) { @content; } } } diff --git a/bundles/flex-layout-core.umd.js b/bundles/flex-layout-core.umd.js index 5e9c2aafe..889c883f8 100644 --- a/bundles/flex-layout-core.umd.js +++ b/bundles/flex-layout-core.umd.js @@ -8,7 +8,7 @@ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('rxjs'), require('rxjs/operators')) : typeof define === 'function' && define.amd ? define('@angular/flex-layout/core', ['exports', '@angular/core', '@angular/common', 'rxjs', 'rxjs/operators'], factory) : - (factory((global.ng = global.ng || {}, global.ng['flex-layout'] = global.ng['flex-layout'] || {}, global.ng['flex-layout'].core = {}),global.ng.core,global.ng.common,global.rxjs,global.rxjs.operators)); + (factory((global.ng = global.ng || {}, global.ng.flexLayout = global.ng.flexLayout || {}, global.ng.flexLayout.core = {}),global.ng.core,global.ng.common,global.rxjs,global.rxjs.operators)); }(this, (function (exports,core,common,rxjs,operators) { 'use strict'; /*! ***************************************************************************** @@ -53,7 +53,7 @@ var __assign = function() { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * Find all of the server-generated stylings, if any, and remove them @@ -64,24 +64,36 @@ var __assign = function() { * @return {?} */ function removeStyles(_document, platformId) { - return function () { + return (/** + * @return {?} + */ + function () { if (common.isPlatformBrowser(platformId)) { /** @type {?} */ var elements = Array.from(_document.querySelectorAll("[class*=" + CLASS_NAME + "]")); + // RegExp constructor should only be used if passing a variable to the constructor. + // When using static regular expression it is more performant to use reg exp literal. + // This is also needed to provide Safari 9 compatibility, please see + // https://stackoverflow.com/questions/37919802 for more discussion. /** @type {?} */ var classRegex_1 = /\bflex-layout-.+?\b/g; - elements.forEach(function (el) { + elements.forEach((/** + * @param {?} el + * @return {?} + */ + function (el) { el.classList.contains(CLASS_NAME + "ssr") && el.parentNode ? el.parentNode.removeChild(el) : el.className.replace(classRegex_1, ''); - }); + })); } - }; + }); } -/** * +/** * Provider to remove SSR styles on the browser - @type {?} */ + * @type {?} + */ var BROWSER_PROVIDER = { - provide: /** @type {?} */ (core.APP_BOOTSTRAP_LISTENER), + provide: (/** @type {?} */ (core.APP_BOOTSTRAP_LISTENER)), useFactory: removeStyles, deps: [common.DOCUMENT, core.PLATFORM_ID], multi: true @@ -91,263 +103,169 @@ var CLASS_NAME = 'flex-layout-'; /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -/** @type {?} */ -var BREAKPOINT = new core.InjectionToken('Flex Layout token, collect all breakpoints into one provider', { - providedIn: 'root', - factory: function () { return null; } -}); - /** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * ***************************************************************** + * Define module for the MediaQuery API + * ***************************************************************** */ -/** @type {?} */ -var RESPONSIVE_ALIASES = [ - 'xs', 'gt-xs', 'sm', 'gt-sm', 'md', 'gt-md', 'lg', 'gt-lg', 'xl' -]; -/** @type {?} */ -var DEFAULT_BREAKPOINTS = [ - { - alias: 'xs', - mediaQuery: '(min-width: 0px) and (max-width: 599px)', - priority: 100, - }, - { - alias: 'gt-xs', - overlapping: true, - mediaQuery: '(min-width: 600px)', - priority: 7, - }, - { - alias: 'lt-sm', - overlapping: true, - mediaQuery: '(max-width: 599px)', - priority: 10, - }, - { - alias: 'sm', - mediaQuery: '(min-width: 600px) and (max-width: 959px)', - priority: 100, - }, - { - alias: 'gt-sm', - overlapping: true, - mediaQuery: '(min-width: 960px)', - priority: 8, - }, - { - alias: 'lt-md', - overlapping: true, - mediaQuery: '(max-width: 959px)', - priority: 9, - }, - { - alias: 'md', - mediaQuery: '(min-width: 960px) and (max-width: 1279px)', - priority: 100, - }, - { - alias: 'gt-md', - overlapping: true, - mediaQuery: '(min-width: 1280px)', - priority: 9, - }, - { - alias: 'lt-lg', - overlapping: true, - mediaQuery: '(max-width: 1279px)', - priority: 8, - }, - { - alias: 'lg', - mediaQuery: '(min-width: 1280px) and (max-width: 1919px)', - priority: 100, - }, - { - alias: 'gt-lg', - overlapping: true, - mediaQuery: '(min-width: 1920px)', - priority: 10, - }, - { - alias: 'lt-xl', - overlapping: true, - mediaQuery: '(max-width: 1919px)', - priority: 7, - }, - { - alias: 'xl', - mediaQuery: '(min-width: 1920px) and (max-width: 5000px)', - priority: 100, +var CoreModule = /** @class */ (function () { + function CoreModule() { } -]; + CoreModule.decorators = [ + { type: core.NgModule, args: [{ + providers: [BROWSER_PROVIDER] + },] }, + ]; + return CoreModule; +}()); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ - -/** @type {?} */ -var HANDSET_PORTRAIT = '(orientation: portrait) and (max-width: 599px)'; -/** @type {?} */ -var HANDSET_LANDSCAPE = '(orientation: landscape) and (max-width: 959px)'; -/** @type {?} */ -var TABLET_LANDSCAPE = '(orientation: landscape) and (min-width: 960px) and (max-width: 1279px)'; -/** @type {?} */ -var TABLET_PORTRAIT = '(orientation: portrait) and (min-width: 600px) and (max-width: 839px)'; -/** @type {?} */ -var WEB_PORTRAIT = '(orientation: portrait) and (min-width: 840px)'; -/** @type {?} */ -var WEB_LANDSCAPE = '(orientation: landscape) and (min-width: 1280px)'; -/** @type {?} */ -var ScreenTypes = { - 'HANDSET': HANDSET_PORTRAIT + ", " + HANDSET_LANDSCAPE, - 'TABLET': TABLET_PORTRAIT + " , " + TABLET_LANDSCAPE, - 'WEB': WEB_PORTRAIT + ", " + WEB_LANDSCAPE + " ", - 'HANDSET_PORTRAIT': "" + HANDSET_PORTRAIT, - 'TABLET_PORTRAIT': TABLET_PORTRAIT + " ", - 'WEB_PORTRAIT': "" + WEB_PORTRAIT, - 'HANDSET_LANDSCAPE': HANDSET_LANDSCAPE + "]", - 'TABLET_LANDSCAPE': "" + TABLET_LANDSCAPE, - 'WEB_LANDSCAPE': "" + WEB_LANDSCAPE -}; -/** * - * Extended Breakpoints for handset/tablets with landscape or portrait orientations - @type {?} */ -var ORIENTATION_BREAKPOINTS = [ - { 'alias': 'handset', 'mediaQuery': ScreenTypes.HANDSET }, - { 'alias': 'handset.landscape', 'mediaQuery': ScreenTypes.HANDSET_LANDSCAPE }, - { 'alias': 'handset.portrait', 'mediaQuery': ScreenTypes.HANDSET_PORTRAIT }, - { 'alias': 'tablet', 'mediaQuery': ScreenTypes.TABLET }, - { 'alias': 'tablet.landscape', 'mediaQuery': ScreenTypes.TABLET }, - { 'alias': 'tablet.portrait', 'mediaQuery': ScreenTypes.TABLET_PORTRAIT }, - { 'alias': 'web', 'mediaQuery': ScreenTypes.WEB, overlapping: true }, - { 'alias': 'web.landscape', 'mediaQuery': ScreenTypes.WEB_LANDSCAPE, overlapping: true }, - { 'alias': 'web.portrait', 'mediaQuery': ScreenTypes.WEB_PORTRAIT, overlapping: true } -]; +/** + * Class instances emitted [to observers] for each mql notification + */ +var /** + * Class instances emitted [to observers] for each mql notification + */ +MediaChange = /** @class */ (function () { + /** + * @param matches whether the mediaQuery is currently activated + * @param mediaQuery e.g. (min-width: 600px) and (max-width: 959px) + * @param mqAlias e.g. gt-sm, md, gt-lg + * @param suffix e.g. GtSM, Md, GtLg + * @param priority the priority of activation for the given breakpoint + */ + function MediaChange(matches, mediaQuery, mqAlias, suffix, priority) { + if (matches === void 0) { matches = false; } + if (mediaQuery === void 0) { mediaQuery = 'all'; } + if (mqAlias === void 0) { mqAlias = ''; } + if (suffix === void 0) { suffix = ''; } + if (priority === void 0) { priority = 0; } + this.matches = matches; + this.mediaQuery = mediaQuery; + this.mqAlias = mqAlias; + this.suffix = suffix; + this.priority = priority; + this.property = ''; + } + /** Create an exact copy of the MediaChange */ + /** + * Create an exact copy of the MediaChange + * @return {?} + */ + MediaChange.prototype.clone = /** + * Create an exact copy of the MediaChange + * @return {?} + */ + function () { + return new MediaChange(this.matches, this.mediaQuery, this.mqAlias, this.suffix); + }; + return MediaChange; +}()); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** - * Extends an object with the *enumerable* and *own* properties of one or more source objects, - * similar to Object.assign. + * Utility to emulate a CSS stylesheet * - * @param {?} dest The object which will have properties copied to it. - * @param {...?} sources The source objects from which properties will be copied. - * @return {?} + * This utility class stores all of the styles for a given HTML element + * as a readonly `stylesheet` map. */ -function extendObject(dest) { - var sources = []; - for (var _i = 1; _i < arguments.length; _i++) { - sources[_i - 1] = arguments[_i]; - } - if (dest == null) { - throw TypeError('Cannot convert undefined or null to object'); +var StylesheetMap = /** @class */ (function () { + function StylesheetMap() { + this.stylesheet = new Map(); } - for (var _a = 0, sources_1 = sources; _a < sources_1.length; _a++) { - var source = sources_1[_a]; - if (source != null) { - for (var key in source) { - if (source.hasOwnProperty(key)) { - dest[key] = source[key]; - } + /** + * Add an individual style to an HTML element + */ + /** + * Add an individual style to an HTML element + * @param {?} element + * @param {?} style + * @param {?} value + * @return {?} + */ + StylesheetMap.prototype.addStyleToElement = /** + * Add an individual style to an HTML element + * @param {?} element + * @param {?} style + * @param {?} value + * @return {?} + */ + function (element, style, value) { + /** @type {?} */ + var stylesheet = this.stylesheet.get(element); + if (stylesheet) { + stylesheet.set(style, value); + } + else { + this.stylesheet.set(element, new Map([[style, value]])); + } + }; + /** + * Clear the virtual stylesheet + */ + /** + * Clear the virtual stylesheet + * @return {?} + */ + StylesheetMap.prototype.clearStyles = /** + * Clear the virtual stylesheet + * @return {?} + */ + function () { + this.stylesheet.clear(); + }; + /** + * Retrieve a given style for an HTML element + */ + /** + * Retrieve a given style for an HTML element + * @param {?} el + * @param {?} styleName + * @return {?} + */ + StylesheetMap.prototype.getStyleForElement = /** + * Retrieve a given style for an HTML element + * @param {?} el + * @param {?} styleName + * @return {?} + */ + function (el, styleName) { + /** @type {?} */ + var styles = this.stylesheet.get(el); + /** @type {?} */ + var value = ''; + if (styles) { + /** @type {?} */ + var style = styles.get(styleName); + if (typeof style === 'number' || typeof style === 'string') { + value = style + ''; } } - } - return dest; -} + return value; + }; + StylesheetMap.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ StylesheetMap.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function StylesheetMap_Factory() { return new StylesheetMap(); }, token: StylesheetMap, providedIn: "root" }); + return StylesheetMap; +}()); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -/** @type {?} */ -var ALIAS_DELIMITERS = /(\.|-|_)/g; + /** - * @param {?} part - * @return {?} - */ -function firstUpperCase(part) { - /** @type {?} */ - var first = part.length > 0 ? part.charAt(0) : ''; - /** @type {?} */ - var remainder = (part.length > 1) ? part.slice(1) : ''; - return first.toUpperCase() + remainder; -} -/** - * Converts snake-case to SnakeCase. - * @param {?} name Text to UpperCamelCase - * @return {?} - */ -function camelCase(name) { - return name - .replace(ALIAS_DELIMITERS, '|') - .split('|') - .map(firstUpperCase) - .join(''); -} -/** - * For each breakpoint, ensure that a Suffix is defined; - * fallback to UpperCamelCase the unique Alias value - * @param {?} list - * @return {?} - */ -function validateSuffixes(list) { - list.forEach(function (bp) { - if (!bp.suffix) { - bp.suffix = camelCase(bp.alias); // create Suffix value based on alias - bp.overlapping = !!bp.overlapping; // ensure default value - } - }); - return list; -} -/** - * Merge a custom breakpoint list with the default list based on unique alias values - * - Items are added if the alias is not in the default list - * - Items are merged with the custom override if the alias exists in the default list - * @param {?} defaults - * @param {?=} custom - * @return {?} - */ -function mergeByAlias(defaults, custom) { - if (custom === void 0) { custom = []; } - /** @type {?} */ - var dict = {}; - defaults.forEach(function (bp) { - dict[bp.alias] = bp; - }); - // Merge custom breakpoints - custom.forEach(function (bp) { - if (dict[bp.alias]) { - extendObject(dict[bp.alias], bp); - } - else { - dict[bp.alias] = bp; - } - }); - return validateSuffixes(Object.keys(dict).map(function (k) { return dict[k]; })); -} -/** - * HOF to sort the breakpoints by priority - * @param {?} a - * @param {?} b - * @return {?} - */ -function prioritySort(a, b) { - /** @type {?} */ - var priorityA = a.priority || 0; - /** @type {?} */ - var priorityB = b.priority || 0; - return priorityB - priorityA; -} - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DEFAULT_CONFIG = { @@ -357,2236 +275,1242 @@ var DEFAULT_CONFIG = { disableVendorPrefixes: false, serverLoaded: false, useColumnBasisZero: true, + printWithBreakpoints: [], + mediaTriggerAutoRestore: true, + ssrObserveBreakpoints: [], }; /** @type {?} */ var LAYOUT_CONFIG = new core.InjectionToken('Flex Layout token, config options for the library', { providedIn: 'root', - factory: function () { return DEFAULT_CONFIG; } + factory: (/** + * @return {?} + */ + function () { return DEFAULT_CONFIG; }) }); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -/** * - * Injection token unique to the flex-layout library. - * Use this token when build a custom provider (see below). - @type {?} */ -var BREAKPOINTS = new core.InjectionToken('Token (@angular/flex-layout) Breakpoints', { +/** + * Token that is provided to tell whether the FlexLayoutServerModule + * has been included in the bundle + * + * NOTE: This can be manually provided to disable styles when using SSR + * @type {?} + */ +var SERVER_TOKEN = new core.InjectionToken('FlexLayoutServerLoaded', { providedIn: 'root', - factory: function () { - /** @type {?} */ - var breakpoints = core.inject(BREAKPOINT); - /** @type {?} */ - var layoutConfig = core.inject(LAYOUT_CONFIG); - /** @type {?} */ - var bpFlattenArray = [].concat.apply([], (breakpoints || []) - .map(function (v) { return Array.isArray(v) ? v : [v]; })); - /** @type {?} */ - var builtIns = (layoutConfig.disableDefaultBps ? [] : DEFAULT_BREAKPOINTS) - .concat(layoutConfig.addOrientationBps ? ORIENTATION_BREAKPOINTS : []); - return mergeByAlias(builtIns, bpFlattenArray); - } + factory: (/** + * @return {?} + */ + function () { return false; }) +}); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var BREAKPOINT = new core.InjectionToken('Flex Layout token, collect all breakpoints into one provider', { + providedIn: 'root', + factory: (/** + * @return {?} + */ + function () { return null; }) }); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ + /** - * Registry of 1..n MediaQuery breakpoint ranges - * This is published as a provider and may be overridden from custom, application-specific ranges + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * For the specified MediaChange, make sure it contains the breakpoint alias + * and suffix (if available). + * @param {?} dest + * @param {?} source + * @return {?} + */ +function mergeAlias(dest, source) { + dest = dest ? dest.clone() : new MediaChange(); + if (source) { + dest.mqAlias = source.alias; + dest.mediaQuery = source.mediaQuery; + dest.suffix = (/** @type {?} */ (source.suffix)); + dest.priority = (/** @type {?} */ (source.priority)); + } + return dest; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @license + * Copyright Google LLC All Rights Reserved. * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + * @type {?} */ -var BreakPointRegistry = /** @class */ (function () { - function BreakPointRegistry(_registry) { - this._registry = _registry; +var INLINE = 'inline'; +/** @type {?} */ +var LAYOUT_VALUES = ['row', 'column', 'row-reverse', 'column-reverse']; +/** + * Validate the direction|'direction wrap' value and then update the host's inline flexbox styles + * @param {?} value + * @return {?} + */ +function buildLayoutCSS(value) { + var _a = validateValue(value), direction = _a[0], wrap = _a[1], isInline = _a[2]; + return buildCSS(direction, wrap, isInline); +} +/** + * Validate the value to be one of the acceptable value options + * Use default fallback of 'row' + * @param {?} value + * @return {?} + */ +function validateValue(value) { + value = value ? value.toLowerCase() : ''; + var _a = value.split(' '), direction = _a[0], wrap = _a[1], inline = _a[2]; + // First value must be the `flex-direction` + if (!LAYOUT_VALUES.find((/** + * @param {?} x + * @return {?} + */ + function (x) { return x === direction; }))) { + direction = LAYOUT_VALUES[0]; + } + if (wrap === INLINE) { + wrap = (inline !== INLINE) ? inline : ''; + inline = INLINE; + } + return [direction, validateWrapValue(wrap), !!inline]; +} +/** + * Convert layout-wrap='' to expected flex-wrap style + * @param {?} value + * @return {?} + */ +function validateWrapValue(value) { + if (!!value) { + switch (value.toLowerCase()) { + case 'reverse': + case 'wrap-reverse': + case 'reverse-wrap': + value = 'wrap-reverse'; + break; + case 'no': + case 'none': + case 'nowrap': + value = 'nowrap'; + break; + // All other values fallback to 'wrap' + default: + value = 'wrap'; + break; + } } - Object.defineProperty(BreakPointRegistry.prototype, "items", { + return value; +} +/** + * Build the CSS that should be assigned to the element instance + * BUG: + * 1) min-height on a column flex container won’t apply to its flex item children in IE 10-11. + * Use height instead if possible; height : vh; + * + * This way any padding or border specified on the child elements are + * laid out and drawn inside that element's specified width and height. + * @param {?} direction + * @param {?=} wrap + * @param {?=} inline + * @return {?} + */ +function buildCSS(direction, wrap, inline) { + if (wrap === void 0) { wrap = null; } + if (inline === void 0) { inline = false; } + return { + 'display': inline ? 'inline-flex' : 'flex', + 'box-sizing': 'border-box', + 'flex-direction': direction, + 'flex-wrap': !!wrap ? wrap : null + }; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @abstract + */ +var /** + * @abstract + */ +BaseDirective2 = /** @class */ (function () { + function BaseDirective2(elementRef, styleBuilder, styler, marshal) { + this.elementRef = elementRef; + this.styleBuilder = styleBuilder; + this.styler = styler; + this.marshal = marshal; + this.DIRECTIVE_KEY = ''; + this.inputs = []; + /** + * The most recently used styles for the builder + */ + this.mru = {}; + this.destroySubject = new rxjs.Subject(); /** - * Accessor to raw list + * Cache map for style computation */ + this.styleCache = new Map(); + } + Object.defineProperty(BaseDirective2.prototype, "parentElement", { + /** Access to host element's parent DOM node */ get: /** - * Accessor to raw list + * Access to host element's parent DOM node + * @protected * @return {?} */ function () { - return this._registry.slice(); + return this.elementRef.nativeElement.parentElement; }, enumerable: true, configurable: true }); - Object.defineProperty(BreakPointRegistry.prototype, "sortedItems", { - /** - * Accessor to sorted list used for registration with matchMedia API - * - * NOTE: During breakpoint registration, we want to register the overlaps FIRST - * so the non-overlaps will trigger the MatchMedia:BehaviorSubject last! - * And the largest, non-overlap, matching breakpoint should be the lastReplay value + Object.defineProperty(BaseDirective2.prototype, "nativeElement", { + /** Access to the HTMLElement for the directive */ + get: /** + * Access to the HTMLElement for the directive + * @protected + * @return {?} */ + function () { + return this.elementRef.nativeElement; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(BaseDirective2.prototype, "activatedValue", { + /** Access to the activated value for the directive */ get: /** - * Accessor to sorted list used for registration with matchMedia API - * - * NOTE: During breakpoint registration, we want to register the overlaps FIRST - * so the non-overlaps will trigger the MatchMedia:BehaviorSubject last! - * And the largest, non-overlap, matching breakpoint should be the lastReplay value + * Access to the activated value for the directive * @return {?} */ function () { - /** @type {?} */ - var overlaps = this._registry.filter(function (it) { return it.overlapping === true; }); - /** @type {?} */ - var nonOverlaps = this._registry.filter(function (it) { return it.overlapping !== true; }); - return overlaps.concat(nonOverlaps); + return this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY); + }, + set: /** + * @param {?} value + * @return {?} + */ + function (value) { + this.marshal.setValue(this.nativeElement, this.DIRECTIVE_KEY, value, this.marshal.activatedAlias); }, enumerable: true, configurable: true }); + /** For @Input changes */ /** - * Search breakpoints by alias (e.g. gt-xs) - */ - /** - * Search breakpoints by alias (e.g. gt-xs) - * @param {?} alias + * For \@Input changes + * @param {?} changes * @return {?} */ - BreakPointRegistry.prototype.findByAlias = /** - * Search breakpoints by alias (e.g. gt-xs) - * @param {?} alias + BaseDirective2.prototype.ngOnChanges = /** + * For \@Input changes + * @param {?} changes * @return {?} */ - function (alias) { - return this._registry.find(function (bp) { return bp.alias == alias; }) || null; + function (changes) { + var _this = this; + Object.keys(changes).forEach((/** + * @param {?} key + * @return {?} + */ + function (key) { + if (_this.inputs.indexOf(key) !== -1) { + /** @type {?} */ + var bp = key.split('.').slice(1).join('.'); + /** @type {?} */ + var val = changes[key].currentValue; + _this.setValue(val, bp); + } + })); }; /** - * @param {?} query * @return {?} */ - BreakPointRegistry.prototype.findByQuery = /** - * @param {?} query + BaseDirective2.prototype.ngOnDestroy = /** * @return {?} */ - function (query) { - return this._registry.find(function (bp) { return bp.mediaQuery == query; }) || null; + function () { + this.destroySubject.next(); + this.destroySubject.complete(); + this.marshal.releaseElement(this.nativeElement); }; - Object.defineProperty(BreakPointRegistry.prototype, "overlappings", { - /** - * Get all the breakpoints whose ranges could overlapping `normal` ranges; - * e.g. gt-sm overlaps md, lg, and xl - */ - get: /** - * Get all the breakpoints whose ranges could overlapping `normal` ranges; - * e.g. gt-sm overlaps md, lg, and xl - * @return {?} - */ - function () { - return this._registry.filter(function (it) { return it.overlapping == true; }); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(BreakPointRegistry.prototype, "aliases", { - /** - * Get list of all registered (non-empty) breakpoint aliases - */ - get: /** - * Get list of all registered (non-empty) breakpoint aliases - * @return {?} - */ - function () { - return this._registry.map(function (it) { return it.alias; }); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(BreakPointRegistry.prototype, "suffixes", { - /** - * Aliases are mapped to properties using suffixes - * e.g. 'gt-sm' for property 'layout' uses suffix 'GtSm' - * for property layoutGtSM. - */ - get: /** - * Aliases are mapped to properties using suffixes - * e.g. 'gt-sm' for property 'layout' uses suffix 'GtSm' - * for property layoutGtSM. - * @return {?} - */ - function () { - return this._registry.map(function (it) { return !!it.suffix ? it.suffix : ''; }); - }, - enumerable: true, - configurable: true - }); - BreakPointRegistry.decorators = [ - { type: core.Injectable, args: [{ providedIn: 'root' },] }, - ]; - /** @nocollapse */ - BreakPointRegistry.ctorParameters = function () { return [ - { type: Array, decorators: [{ type: core.Inject, args: [BREAKPOINTS,] }] } - ]; }; - /** @nocollapse */ BreakPointRegistry.ngInjectableDef = core.defineInjectable({ factory: function BreakPointRegistry_Factory() { return new BreakPointRegistry(core.inject(BREAKPOINTS)); }, token: BreakPointRegistry, providedIn: "root" }); - return BreakPointRegistry; -}()); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * Class instances emitted [to observers] for each mql notification - */ -var /** - * Class instances emitted [to observers] for each mql notification - */ -MediaChange = /** @class */ (function () { + /** Register with central marshaller service */ /** - * @param matches whether the mediaQuery is currently activated - * @param mediaQuery e.g. (min-width: 600px) and (max-width: 959px) - * @param mqAlias e.g. gt-sm, md, gt-lg - * @param suffix e.g. GtSM, Md, GtLg + * Register with central marshaller service + * @protected + * @param {?=} extraTriggers + * @return {?} */ - function MediaChange(matches, mediaQuery, mqAlias, suffix) { - if (matches === void 0) { matches = false; } - if (mediaQuery === void 0) { mediaQuery = 'all'; } - if (mqAlias === void 0) { mqAlias = ''; } - if (suffix === void 0) { suffix = ''; } - this.matches = matches; - this.mediaQuery = mediaQuery; - this.mqAlias = mqAlias; - this.suffix = suffix; - this.property = ''; - } - /** Create an exact copy of the MediaChange */ + BaseDirective2.prototype.init = /** + * Register with central marshaller service + * @protected + * @param {?=} extraTriggers + * @return {?} + */ + function (extraTriggers) { + if (extraTriggers === void 0) { extraTriggers = []; } + this.marshal.init(this.elementRef.nativeElement, this.DIRECTIVE_KEY, this.updateWithValue.bind(this), this.clearStyles.bind(this), extraTriggers); + }; + /** Add styles to the element using predefined style builder */ /** - * Create an exact copy of the MediaChange + * Add styles to the element using predefined style builder + * @protected + * @param {?} input + * @param {?=} parent * @return {?} */ - MediaChange.prototype.clone = /** - * Create an exact copy of the MediaChange + BaseDirective2.prototype.addStyles = /** + * Add styles to the element using predefined style builder + * @protected + * @param {?} input + * @param {?=} parent * @return {?} */ - function () { - return new MediaChange(this.matches, this.mediaQuery, this.mqAlias, this.suffix); + function (input, parent) { + /** @type {?} */ + var builder = this.styleBuilder; + /** @type {?} */ + var useCache = builder.shouldCache; + /** @type {?} */ + var genStyles = this.styleCache.get(input); + if (!genStyles || !useCache) { + genStyles = builder.buildStyles(input, parent); + if (useCache) { + this.styleCache.set(input, genStyles); + } + } + this.mru = __assign({}, genStyles); + this.applyStyleToElement(genStyles); + builder.sideEffect(input, genStyles, parent); }; - return MediaChange; -}()); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * MediaMonitor configures listeners to mediaQuery changes and publishes an Observable facade to - * convert mediaQuery change callbacks to subscriber notifications. These notifications will be - * performed within the ng Zone to trigger change detections and component updates. - * - * NOTE: both mediaQuery activations and de-activations are announced in notifications - */ -var MatchMedia = /** @class */ (function () { - function MatchMedia(_zone, _platformId, _document) { - this._zone = _zone; - this._platformId = _platformId; - this._document = _document; - this._registry = new Map(); - this._source = new rxjs.BehaviorSubject(new MediaChange(true)); - this._observable$ = this._source.asObservable(); - } + /** Remove generated styles from an element using predefined style builder */ /** - * For the specified mediaQuery? + * Remove generated styles from an element using predefined style builder + * @protected + * @return {?} + */ + BaseDirective2.prototype.clearStyles = /** + * Remove generated styles from an element using predefined style builder + * @protected + * @return {?} */ + function () { + var _this = this; + Object.keys(this.mru).forEach((/** + * @param {?} k + * @return {?} + */ + function (k) { + _this.mru[k] = ''; + })); + this.applyStyleToElement(this.mru); + this.mru = {}; + }; + /** Force trigger style updates on DOM element */ /** - * For the specified mediaQuery? - * @param {?} mediaQuery + * Force trigger style updates on DOM element + * @protected * @return {?} */ - MatchMedia.prototype.isActive = /** - * For the specified mediaQuery? - * @param {?} mediaQuery + BaseDirective2.prototype.triggerUpdate = /** + * Force trigger style updates on DOM element + * @protected * @return {?} */ - function (mediaQuery) { - /** @type {?} */ - var mql = this._registry.get(mediaQuery); - return !!mql ? mql.matches : false; + function () { + this.marshal.triggerUpdate(this.nativeElement, this.DIRECTIVE_KEY); }; /** - * External observers can watch for all (or a specific) mql changes. - * Typically used by the MediaQueryAdaptor; optionally available to components - * who wish to use the MediaMonitor as mediaMonitor$ observable service. + * Determine the DOM element's Flexbox flow (flex-direction). * - * NOTE: if a mediaQuery is not specified, then ALL mediaQuery activations will - * be announced. + * Check inline style first then check computed (stylesheet) style. + * And optionally add the flow value to element's inline style. */ /** - * External observers can watch for all (or a specific) mql changes. - * Typically used by the MediaQueryAdaptor; optionally available to components - * who wish to use the MediaMonitor as mediaMonitor$ observable service. + * Determine the DOM element's Flexbox flow (flex-direction). * - * NOTE: if a mediaQuery is not specified, then ALL mediaQuery activations will - * be announced. - * @param {?=} mediaQuery + * Check inline style first then check computed (stylesheet) style. + * And optionally add the flow value to element's inline style. + * @protected + * @param {?} target + * @param {?=} addIfMissing * @return {?} */ - MatchMedia.prototype.observe = /** - * External observers can watch for all (or a specific) mql changes. - * Typically used by the MediaQueryAdaptor; optionally available to components - * who wish to use the MediaMonitor as mediaMonitor$ observable service. + BaseDirective2.prototype.getFlexFlowDirection = /** + * Determine the DOM element's Flexbox flow (flex-direction). * - * NOTE: if a mediaQuery is not specified, then ALL mediaQuery activations will - * be announced. - * @param {?=} mediaQuery + * Check inline style first then check computed (stylesheet) style. + * And optionally add the flow value to element's inline style. + * @protected + * @param {?} target + * @param {?=} addIfMissing * @return {?} */ - function (mediaQuery) { - if (mediaQuery) { - this.registerQuery(mediaQuery); + function (target, addIfMissing) { + if (addIfMissing === void 0) { addIfMissing = false; } + if (target) { + var _a = this.styler.getFlowDirection(target), value = _a[0], hasInlineValue = _a[1]; + if (!hasInlineValue && addIfMissing) { + /** @type {?} */ + var style = buildLayoutCSS(value); + /** @type {?} */ + var elements = [target]; + this.styler.applyStyleToElements(style, elements); + } + return value.trim(); } - return this._observable$.pipe(operators.filter(function (change) { return (mediaQuery ? (change.mediaQuery === mediaQuery) : true); })); + return 'row'; }; + /** Applies styles given via string pair or object map to the directive element */ /** - * Based on the BreakPointRegistry provider, register internal listeners for each unique - * mediaQuery. Each listener emits specific MediaChange data to observers - */ - /** - * Based on the BreakPointRegistry provider, register internal listeners for each unique - * mediaQuery. Each listener emits specific MediaChange data to observers - * @param {?} mediaQuery + * Applies styles given via string pair or object map to the directive element + * @protected + * @param {?} style + * @param {?=} value + * @param {?=} element * @return {?} */ - MatchMedia.prototype.registerQuery = /** - * Based on the BreakPointRegistry provider, register internal listeners for each unique - * mediaQuery. Each listener emits specific MediaChange data to observers - * @param {?} mediaQuery + BaseDirective2.prototype.applyStyleToElement = /** + * Applies styles given via string pair or object map to the directive element + * @protected + * @param {?} style + * @param {?=} value + * @param {?=} element * @return {?} */ - function (mediaQuery) { - var _this = this; - /** @type {?} */ - var list = Array.isArray(mediaQuery) ? Array.from(new Set(mediaQuery)) : [mediaQuery]; - if (list.length > 0) { - buildQueryCss(list, this._document); - } - list.forEach(function (query) { - /** @type {?} */ - var onMQLEvent = function (e) { - _this._zone.run(function () { return _this._source.next(new MediaChange(e.matches, query)); }); - }; - /** @type {?} */ - var mql = _this._registry.get(query); - if (!mql) { - if (query === 'print') { - // If we are listening for a print media query we need to add a `beforeprint` event listener to trigger the `mql` synchronously. - // Regular matchMedia events are not synchronous and do not have time to update the layout before the print dialog shows and takes a snapshot. - // Workaround for #869 - // This requires explicit use of `fxLayout.print` to racing between size based layouts. We don't know the size of prints - // before hand so you must use a single layout for printing. - window.addEventListener('beforeprint', function () { - onMQLEvent(/** @type {?} */ ({ - mediaQuery: query, - matches: true, - })); - }); - } - mql = _this._buildMQL(query); - mql.addListener(onMQLEvent); - _this._registry.set(query, mql); - } - if (mql.matches) { - onMQLEvent(/** @type {?} */ ((mql))); - } - }); + function (style, value, element) { + if (element === void 0) { element = this.nativeElement; } + this.styler.applyStyleToElement(element, style, value); }; /** - * Call window.matchMedia() to build a MediaQueryList; which - * supports 0..n listeners for activation/deactivation + * @protected + * @param {?} val + * @param {?} bp + * @return {?} + */ + BaseDirective2.prototype.setValue = /** + * @protected + * @param {?} val + * @param {?} bp + * @return {?} */ + function (val, bp) { + this.marshal.setValue(this.nativeElement, this.DIRECTIVE_KEY, val, bp); + }; /** - * Call window.matchMedia() to build a MediaQueryList; which - * supports 0..n listeners for activation/deactivation - * @param {?} query + * @protected + * @param {?} input * @return {?} */ - MatchMedia.prototype._buildMQL = /** - * Call window.matchMedia() to build a MediaQueryList; which - * supports 0..n listeners for activation/deactivation - * @param {?} query + BaseDirective2.prototype.updateWithValue = /** + * @protected + * @param {?} input * @return {?} */ - function (query) { - return constructMql(query, common.isPlatformBrowser(this._platformId)); + function (input) { + this.addStyles(input); }; - MatchMedia.decorators = [ - { type: core.Injectable, args: [{ providedIn: 'root' },] }, - ]; - /** @nocollapse */ - MatchMedia.ctorParameters = function () { return [ - { type: core.NgZone }, - { type: Object, decorators: [{ type: core.Inject, args: [core.PLATFORM_ID,] }] }, - { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] } - ]; }; - /** @nocollapse */ MatchMedia.ngInjectableDef = core.defineInjectable({ factory: function MatchMedia_Factory() { return new MatchMedia(core.inject(core.NgZone), core.inject(core.PLATFORM_ID), core.inject(common.DOCUMENT)); }, token: MatchMedia, providedIn: "root" }); - return MatchMedia; + return BaseDirective2; }()); -/** * - * Private global registry for all dynamically-created, injected style tags - * @see prepare(query) - @type {?} */ -var ALL_STYLES = {}; + /** - * For Webkit engines that only trigger the MediaQueryList Listener - * when there is at least one CSS selector for the respective media query. - * - * @param {?} mediaQueries - * @param {?} _document - * @return {?} + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -function buildQueryCss(mediaQueries, _document) { - /** @type {?} */ - var list = mediaQueries.filter(function (it) { return !ALL_STYLES[it]; }); - if (list.length > 0) { - /** @type {?} */ - var query = list.join(', '); - try { - /** @type {?} */ - var styleEl_1 = _document.createElement('style'); - styleEl_1.setAttribute('type', 'text/css'); - if (!(/** @type {?} */ (styleEl_1)).styleSheet) { - /** @type {?} */ - var 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"; - styleEl_1.appendChild(_document.createTextNode(cssText)); - } /** @type {?} */ - ((_document.head)).appendChild(styleEl_1); - // Store in private global registry - list.forEach(function (mq) { return ALL_STYLES[mq] = styleEl_1; }); - } - catch (e) { - console.error(e); - } - } -} + /** - * @param {?} query - * @param {?} isBrowser - * @return {?} + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -function constructMql(query, isBrowser) { - /** @type {?} */ - var canListen = isBrowser && !!(/** @type {?} */ (window)).matchMedia('all').addListener; - return canListen ? (/** @type {?} */ (window)).matchMedia(query) : /** @type {?} */ (({ - matches: query === 'all' || query === '', - media: query, - addListener: function () { - }, - removeListener: function () { - } - })); -} +/** + * NOTE: Smaller ranges have HIGHER priority since the match is more specific + * @type {?} + */ +var DEFAULT_BREAKPOINTS = [ + { + alias: 'xs', + mediaQuery: 'screen and (min-width: 0px) and (max-width: 599.9px)', + priority: 1000, + }, + { + alias: 'sm', + mediaQuery: 'screen and (min-width: 600px) and (max-width: 959.9px)', + priority: 900, + }, + { + alias: 'md', + mediaQuery: 'screen and (min-width: 960px) and (max-width: 1279.9px)', + priority: 800, + }, + { + alias: 'lg', + mediaQuery: 'screen and (min-width: 1280px) and (max-width: 1919.9px)', + priority: 700, + }, + { + alias: 'xl', + mediaQuery: 'screen and (min-width: 1920px) and (max-width: 4999.9px)', + priority: 600, + }, + { + alias: 'lt-sm', + overlapping: true, + mediaQuery: 'screen and (max-width: 599.9px)', + priority: 950, + }, + { + alias: 'lt-md', + overlapping: true, + mediaQuery: 'screen and (max-width: 959.9px)', + priority: 850, + }, + { + alias: 'lt-lg', + overlapping: true, + mediaQuery: 'screen and (max-width: 1279.9px)', + priority: 750, + }, + { + alias: 'lt-xl', + overlapping: true, + priority: 650, + mediaQuery: 'screen and (max-width: 1919.9px)', + }, + { + alias: 'gt-xs', + overlapping: true, + mediaQuery: 'screen and (min-width: 600px)', + priority: -950, + }, + { + alias: 'gt-sm', + overlapping: true, + mediaQuery: 'screen and (min-width: 960px)', + priority: -850, + }, { + alias: 'gt-md', + overlapping: true, + mediaQuery: 'screen and (min-width: 1280px)', + priority: -750, + }, + { + alias: 'gt-lg', + overlapping: true, + mediaQuery: 'screen and (min-width: 1920px)', + priority: -650, + } +]; /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ + +/* tslint:disable */ +/** @type {?} */ +var HANDSET_PORTRAIT = '(orientation: portrait) and (max-width: 599.9px)'; +/** @type {?} */ +var HANDSET_LANDSCAPE = '(orientation: landscape) and (max-width: 959.9px)'; +/** @type {?} */ +var TABLET_PORTRAIT = '(orientation: portrait) and (min-width: 600px) and (max-width: 839.9px)'; +/** @type {?} */ +var TABLET_LANDSCAPE = '(orientation: landscape) and (min-width: 960px) and (max-width: 1279.9px)'; +/** @type {?} */ +var WEB_PORTRAIT = '(orientation: portrait) and (min-width: 840px)'; +/** @type {?} */ +var WEB_LANDSCAPE = '(orientation: landscape) and (min-width: 1280px)'; +/** @type {?} */ +var ScreenTypes = { + 'HANDSET': HANDSET_PORTRAIT + ", " + HANDSET_LANDSCAPE, + 'TABLET': TABLET_PORTRAIT + " , " + TABLET_LANDSCAPE, + 'WEB': WEB_PORTRAIT + ", " + WEB_LANDSCAPE + " ", + 'HANDSET_PORTRAIT': "" + HANDSET_PORTRAIT, + 'TABLET_PORTRAIT': TABLET_PORTRAIT + " ", + 'WEB_PORTRAIT': "" + WEB_PORTRAIT, + 'HANDSET_LANDSCAPE': HANDSET_LANDSCAPE + "]", + 'TABLET_LANDSCAPE': "" + TABLET_LANDSCAPE, + 'WEB_LANDSCAPE': "" + WEB_LANDSCAPE +}; /** - * For the specified MediaChange, make sure it contains the breakpoint alias - * and suffix (if available). - * @param {?} dest - * @param {?} source - * @return {?} + * Extended Breakpoints for handset/tablets with landscape or portrait orientations + * @type {?} */ -function mergeAlias(dest, source) { - return extendObject(dest, source ? { - mqAlias: source.alias, - suffix: source.suffix - } : {}); -} +var ORIENTATION_BREAKPOINTS = [ + { 'alias': 'handset', priority: 2000, 'mediaQuery': ScreenTypes.HANDSET }, + { 'alias': 'handset.landscape', priority: 2000, 'mediaQuery': ScreenTypes.HANDSET_LANDSCAPE }, + { 'alias': 'handset.portrait', priority: 2000, 'mediaQuery': ScreenTypes.HANDSET_PORTRAIT }, + { 'alias': 'tablet', priority: 2100, 'mediaQuery': ScreenTypes.TABLET }, + { 'alias': 'tablet.landscape', priority: 2100, 'mediaQuery': ScreenTypes.TABLET }, + { 'alias': 'tablet.portrait', priority: 2100, 'mediaQuery': ScreenTypes.TABLET_PORTRAIT }, + { 'alias': 'web', priority: 2200, 'mediaQuery': ScreenTypes.WEB, overlapping: true }, + { 'alias': 'web.landscape', priority: 2200, 'mediaQuery': ScreenTypes.WEB_LANDSCAPE, overlapping: true }, + { 'alias': 'web.portrait', priority: 2200, 'mediaQuery': ScreenTypes.WEB_PORTRAIT, overlapping: true } +]; /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ + /** - * Base class for MediaService and pseudo-token for - * @deprecated use MediaObserver instead - * \@deletion-target v7.0.0-beta.21 - * @abstract - */ -var /** - * Base class for MediaService and pseudo-token for - * @deprecated use MediaObserver instead - * \@deletion-target v7.0.0-beta.21 - * @abstract + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -ObservableMedia = /** @class */ (function () { - function ObservableMedia() { - } - return ObservableMedia; -}()); + /** - * Class internalizes a MatchMedia service and exposes an Subscribable and Observable interface. - * This an Observable with that exposes a feature to subscribe to mediaQuery - * changes and a validator method (`isActive()`) to test if a mediaQuery (or alias) is - * currently active. - * - * !! Only mediaChange activations (not de-activations) are announced by the ObservableMedia - * - * This class uses the BreakPoint Registry to inject alias information into the raw MediaChange - * notification. For custom mediaQuery notifications, alias information will not be injected and - * those fields will be ''. - * - * !! This is not an actual Observable. It is a wrapper of an Observable used to publish additional - * methods like `isActive(). To access the Observable and use RxJS operators, use - * `.asObservable()` with syntax like media.asObservable().map(....). - * - * \@usage - * - * // RxJS - * import {filter} from 'rxjs/operators/filter'; - * import { ObservableMedia } from '\@angular/flex-layout'; - * - * \@Component({ ... }) - * export class AppComponent { - * status : string = ''; - * - * constructor( media:ObservableMedia ) { - * let onChange = (change:MediaChange) => { - * this.status = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : ''; - * }; - * - * // Subscribe directly or access observable to use filter/map operators - * // e.g. - * // media.subscribe(onChange); + * Extends an object with the *enumerable* and *own* properties of one or more source objects, + * similar to Object.assign. * - * media.asObservable() - * .pipe( - * filter((change:MediaChange) => true) // silly noop filter - * ).subscribe(onChange); - * } - * } - * @deprecated use MediaObserver instead - * \@deletion-target v7.0.0-beta.21 + * @param {?} dest The object which will have properties copied to it. + * @param {...?} sources The source objects from which properties will be copied. + * @return {?} */ -var MediaService = /** @class */ (function () { - function MediaService(breakpoints, mediaWatcher) { - this.breakpoints = breakpoints; - this.mediaWatcher = mediaWatcher; - /** - * Should we announce gt- breakpoint activations ? - */ - this.filterOverlaps = true; - this._registerBreakPoints(); - this.observable$ = this._buildObservable(); +function extendObject(dest) { + var sources = []; + for (var _i = 1; _i < arguments.length; _i++) { + sources[_i - 1] = arguments[_i]; } - /** - * Test if specified query/alias is active. - */ - /** - * Test if specified query/alias is active. - * @param {?} alias - * @return {?} - */ - MediaService.prototype.isActive = /** - * Test if specified query/alias is active. - * @param {?} alias - * @return {?} - */ - function (alias) { - return this.mediaWatcher.isActive(this._toMediaQuery(alias)); - }; - /** - * Proxy to the Observable subscribe method - */ - /** - * Proxy to the Observable subscribe method - * @param {?=} observerOrNext - * @param {?=} error - * @param {?=} complete - * @return {?} - */ - MediaService.prototype.subscribe = /** - * Proxy to the Observable subscribe method - * @param {?=} observerOrNext - * @param {?=} error - * @param {?=} complete - * @return {?} - */ - function (observerOrNext, error, complete) { - if (observerOrNext) { - if (typeof observerOrNext === 'object') { - return this.observable$.subscribe(observerOrNext.next, observerOrNext.error, observerOrNext.complete); + if (dest == null) { + throw TypeError('Cannot convert undefined or null to object'); + } + for (var _a = 0, sources_1 = sources; _a < sources_1.length; _a++) { + var source = sources_1[_a]; + if (source != null) { + for (var key in source) { + if (source.hasOwnProperty(key)) { + dest[key] = source[key]; + } } } - return this.observable$.subscribe(observerOrNext, error, complete); - }; - /** - * Access to observable for use with operators like - * .filter(), .map(), etc. - */ - /** - * Access to observable for use with operators like - * .filter(), .map(), etc. - * @return {?} - */ - MediaService.prototype.asObservable = /** - * Access to observable for use with operators like - * .filter(), .map(), etc. - * @return {?} - */ - function () { - return this.observable$; - }; - /** - * Register all the mediaQueries registered in the BreakPointRegistry - * This is needed so subscribers can be auto-notified of all standard, registered - * mediaQuery activations - * @return {?} - */ - MediaService.prototype._registerBreakPoints = /** - * Register all the mediaQueries registered in the BreakPointRegistry - * This is needed so subscribers can be auto-notified of all standard, registered - * mediaQuery activations - * @return {?} - */ - function () { - /** @type {?} */ - var queries = this.breakpoints.sortedItems.map(function (bp) { return bp.mediaQuery; }); - this.mediaWatcher.registerQuery(queries); - }; - /** - * Prepare internal observable - * - * NOTE: the raw MediaChange events [from MatchMedia] do not - * contain important alias information; as such this info - * must be injected into the MediaChange - * @return {?} - */ - MediaService.prototype._buildObservable = /** - * Prepare internal observable - * - * NOTE: the raw MediaChange events [from MatchMedia] do not - * contain important alias information; as such this info - * must be injected into the MediaChange - * @return {?} - */ - function () { - var _this = this; - /** @type {?} */ - var excludeOverlaps = function (change) { - /** @type {?} */ - var bp = _this.breakpoints.findByQuery(change.mediaQuery); - return !bp ? true : !(_this.filterOverlaps && bp.overlapping); - }; - /** - * Only pass/announce activations (not de-activations) - * Inject associated (if any) alias information into the MediaChange event - * Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only - */ - return this.mediaWatcher.observe().pipe(operators.filter(function (change) { return change.matches; }), operators.filter(excludeOverlaps), operators.map(function (change) { - return mergeAlias(change, _this._findByQuery(change.mediaQuery)); - })); - }; - /** - * Breakpoint locator by alias - * @param {?} alias - * @return {?} - */ - MediaService.prototype._findByAlias = /** - * Breakpoint locator by alias - * @param {?} alias - * @return {?} - */ - function (alias) { - return this.breakpoints.findByAlias(alias); - }; - /** - * Breakpoint locator by mediaQuery - * @param {?} query - * @return {?} - */ - MediaService.prototype._findByQuery = /** - * Breakpoint locator by mediaQuery - * @param {?} query - * @return {?} - */ - function (query) { - return this.breakpoints.findByQuery(query); - }; - /** - * Find associated breakpoint (if any) - * @param {?} query - * @return {?} - */ - MediaService.prototype._toMediaQuery = /** - * Find associated breakpoint (if any) - * @param {?} query - * @return {?} - */ - function (query) { - /** @type {?} */ - var bp = this._findByAlias(query) || this._findByQuery(query); - return bp ? bp.mediaQuery : query; - }; - MediaService.decorators = [ - { type: core.Injectable, args: [{ providedIn: 'root' },] }, - ]; - /** @nocollapse */ - MediaService.ctorParameters = function () { return [ - { type: BreakPointRegistry }, - { type: MatchMedia } - ]; }; - /** @nocollapse */ MediaService.ngInjectableDef = core.defineInjectable({ factory: function MediaService_Factory() { return new MediaService(core.inject(BreakPointRegistry), core.inject(MatchMedia)); }, token: MediaService, providedIn: "root" }); - return MediaService; -}()); -/** * - * @deprecated - * \@deletion-target v7.0.0-beta.21 - @type {?} */ -var ObservableMediaProvider = { - // tslint:disable-line:variable-name - provide: ObservableMedia, - useClass: MediaService -}; - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * ***************************************************************** - * Define module for the MediaQuery API - * ***************************************************************** - */ -var CoreModule = /** @class */ (function () { - function CoreModule() { - } - CoreModule.decorators = [ - { type: core.NgModule, args: [{ - providers: [BROWSER_PROVIDER, ObservableMediaProvider] - },] }, - ]; - return CoreModule; -}()); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * Utility to emulate a CSS stylesheet - * - * This utility class stores all of the styles for a given HTML element - * as a readonly `stylesheet` map. - */ -var StylesheetMap = /** @class */ (function () { - function StylesheetMap() { - this.stylesheet = new Map(); } - /** - * Add an individual style to an HTML element - */ - /** - * Add an individual style to an HTML element - * @param {?} element - * @param {?} style - * @param {?} value - * @return {?} - */ - StylesheetMap.prototype.addStyleToElement = /** - * Add an individual style to an HTML element - * @param {?} element - * @param {?} style - * @param {?} value - * @return {?} - */ - function (element, style, value) { - /** @type {?} */ - var stylesheet = this.stylesheet.get(element); - if (stylesheet) { - stylesheet.set(style, value); - } - else { - this.stylesheet.set(element, new Map([[style, value]])); - } - }; - /** - * Clear the virtual stylesheet - */ - /** - * Clear the virtual stylesheet - * @return {?} - */ - StylesheetMap.prototype.clearStyles = /** - * Clear the virtual stylesheet - * @return {?} - */ - function () { - this.stylesheet.clear(); - }; - /** - * Retrieve a given style for an HTML element - */ - /** - * Retrieve a given style for an HTML element - * @param {?} el - * @param {?} styleName - * @return {?} - */ - StylesheetMap.prototype.getStyleForElement = /** - * Retrieve a given style for an HTML element - * @param {?} el - * @param {?} styleName - * @return {?} - */ - function (el, styleName) { - /** @type {?} */ - var styles = this.stylesheet.get(el); - /** @type {?} */ - var value = ''; - if (styles) { - /** @type {?} */ - var style = styles.get(styleName); - if (typeof style === 'number' || typeof style === 'string') { - value = style + ''; - } - } - return value; - }; - StylesheetMap.decorators = [ - { type: core.Injectable, args: [{ providedIn: 'root' },] }, - ]; - /** @nocollapse */ StylesheetMap.ngInjectableDef = core.defineInjectable({ factory: function StylesheetMap_Factory() { return new StylesheetMap(); }, token: StylesheetMap, providedIn: "root" }); - return StylesheetMap; -}()); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** * - * Token that is provided to tell whether the FlexLayoutServerModule - * has been included in the bundle - * - * NOTE: This can be manually provided to disable styles when using SSR - @type {?} */ -var SERVER_TOKEN = new core.InjectionToken('FlexLayoutServerLoaded', { - providedIn: 'root', - factory: function () { return false; } -}); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ + return dest; +} /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -/** * - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - @type {?} */ -var INLINE = 'inline'; /** @type {?} */ -var LAYOUT_VALUES = ['row', 'column', 'row-reverse', 'column-reverse']; +var ALIAS_DELIMITERS = /(\.|-|_)/g; /** - * Validate the direction|'direction wrap' value and then update the host's inline flexbox styles - * @param {?} value + * @param {?} part * @return {?} */ -function buildLayoutCSS(value) { - var _a = validateValue(value), direction = _a[0], wrap = _a[1], isInline = _a[2]; - return buildCSS(direction, wrap, isInline); +function firstUpperCase(part) { + /** @type {?} */ + var first = part.length > 0 ? part.charAt(0) : ''; + /** @type {?} */ + var remainder = (part.length > 1) ? part.slice(1) : ''; + return first.toUpperCase() + remainder; } /** - * Validate the value to be one of the acceptable value options - * Use default fallback of 'row' - * @param {?} value + * Converts snake-case to SnakeCase. + * @param {?} name Text to UpperCamelCase * @return {?} */ -function validateValue(value) { - value = value ? value.toLowerCase() : ''; - var _a = value.split(' '), direction = _a[0], wrap = _a[1], inline = _a[2]; - // First value must be the `flex-direction` - if (!LAYOUT_VALUES.find(function (x) { return x === direction; })) { - direction = LAYOUT_VALUES[0]; - } - if (wrap === INLINE) { - wrap = (inline !== INLINE) ? inline : ''; - inline = INLINE; - } - return [direction, validateWrapValue(wrap), !!inline]; +function camelCase(name) { + return name + .replace(ALIAS_DELIMITERS, '|') + .split('|') + .map(firstUpperCase) + .join(''); } /** - * Convert layout-wrap='' to expected flex-wrap style - * @param {?} value + * For each breakpoint, ensure that a Suffix is defined; + * fallback to UpperCamelCase the unique Alias value + * @param {?} list * @return {?} */ -function validateWrapValue(value) { - if (!!value) { - switch (value.toLowerCase()) { - case 'reverse': - case 'wrap-reverse': - case 'reverse-wrap': - value = 'wrap-reverse'; - break; - case 'no': - case 'none': - case 'nowrap': - value = 'nowrap'; - break; - // All other values fallback to 'wrap' - default: - value = 'wrap'; - break; - } - } - return value; -} -/** - * Build the CSS that should be assigned to the element instance - * BUG: - * 1) min-height on a column flex container won’t apply to its flex item children in IE 10-11. - * Use height instead if possible; height : vh; - * - * This way any padding or border specified on the child elements are - * laid out and drawn inside that element's specified width and height. - * @param {?} direction - * @param {?=} wrap - * @param {?=} inline - * @return {?} - */ -function buildCSS(direction, wrap, inline) { - if (wrap === void 0) { wrap = null; } - if (inline === void 0) { inline = false; } - return { - 'display': inline ? 'inline-flex' : 'flex', - 'box-sizing': 'border-box', - 'flex-direction': direction, - 'flex-wrap': !!wrap ? wrap : null - }; -} - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * @deprecated - * \@deletion-target v7.0.0-beta.21 - */ -var /** - * @deprecated - * \@deletion-target v7.0.0-beta.21 - */ -KeyOptions = /** @class */ (function () { - function KeyOptions(baseKey, defaultValue, inputKeys) { - this.baseKey = baseKey; - this.defaultValue = defaultValue; - this.inputKeys = inputKeys; - } - return KeyOptions; -}()); -/** - * ResponsiveActivation acts as a proxy between the MonitorMedia service (which emits mediaQuery - * changes) and the fx API directives. The MQA proxies mediaQuery change events and notifies the - * directive via the specified callback. - * - * - The MQA also determines which directive property should be used to determine the - * current change 'value'... BEFORE the original `onMediaQueryChanges()` method is called. - * - The `ngOnDestroy()` method is also head-hooked to enable auto-unsubscribe from the - * MediaQueryServices. - * - * NOTE: these interceptions enables the logic in the fx API directives to remain terse and clean. - * @deprecated - * \@deletion-target v7.0.0-beta.21 - */ -var /** - * ResponsiveActivation acts as a proxy between the MonitorMedia service (which emits mediaQuery - * changes) and the fx API directives. The MQA proxies mediaQuery change events and notifies the - * directive via the specified callback. - * - * - The MQA also determines which directive property should be used to determine the - * current change 'value'... BEFORE the original `onMediaQueryChanges()` method is called. - * - The `ngOnDestroy()` method is also head-hooked to enable auto-unsubscribe from the - * MediaQueryServices. - * - * NOTE: these interceptions enables the logic in the fx API directives to remain terse and clean. - * @deprecated - * \@deletion-target v7.0.0-beta.21 - */ -ResponsiveActivation = /** @class */ (function () { - /** - * Constructor - */ - function ResponsiveActivation(_options, _mediaMonitor, _onMediaChanges) { - this._options = _options; - this._mediaMonitor = _mediaMonitor; - this._onMediaChanges = _onMediaChanges; - this._activatedInputKey = ''; - this._registryMap = this._buildRegistryMap(); - this._subscribers = this._configureChangeObservers(); - } - Object.defineProperty(ResponsiveActivation.prototype, "registryFromLargest", { - /** - * Get a readonly sorted list of the breakpoints corresponding to the directive properties - * defined in the HTML markup: the sorting is done from largest to smallest. The order is - * important when several media queries are 'registered' and from which, the browser uses the - * first matching media query. - */ - get: /** - * Get a readonly sorted list of the breakpoints corresponding to the directive properties - * defined in the HTML markup: the sorting is done from largest to smallest. The order is - * important when several media queries are 'registered' and from which, the browser uses the - * first matching media query. - * @return {?} - */ - function () { - return this._registryMap.slice().reverse(); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ResponsiveActivation.prototype, "activatedInputKey", { - /** - * Determine which directive @Input() property is currently active (for the viewport size): - * The key must be defined (in use) or fallback to the 'closest' overlapping property key - * that is defined; otherwise the default property key will be used. - * e.g. - * if `
` is used but the current activated mediaQuery alias - * key is `.md` then `.gt-sm` should be used instead - */ - get: /** - * Determine which directive \@Input() property is currently active (for the viewport size): - * The key must be defined (in use) or fallback to the 'closest' overlapping property key - * that is defined; otherwise the default property key will be used. - * e.g. - * if `
` is used but the current activated mediaQuery alias - * key is `.md` then `.gt-sm` should be used instead - * @return {?} - */ - function () { - return this._activatedInputKey || this._options.baseKey; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ResponsiveActivation.prototype, "activatedInput", { - /** - * Get the currently activated @Input value or the fallback default @Input value - */ - get: /** - * Get the currently activated \@Input value or the fallback default \@Input value - * @return {?} - */ - function () { - /** @type {?} */ - var key = this.activatedInputKey; - return this.hasKeyValue(key) ? this._lookupKeyValue(key) : this._options.defaultValue; - }, - enumerable: true, - configurable: true - }); - /** - * Fast validator for presence of attribute on the host element - */ - /** - * Fast validator for presence of attribute on the host element - * @param {?} key - * @return {?} - */ - ResponsiveActivation.prototype.hasKeyValue = /** - * Fast validator for presence of attribute on the host element - * @param {?} key - * @return {?} - */ - function (key) { - return this._options.inputKeys[key] !== undefined; - }; - /** - * Remove interceptors, restore original functions, and forward the onDestroy() call - */ - /** - * Remove interceptors, restore original functions, and forward the onDestroy() call - * @return {?} - */ - ResponsiveActivation.prototype.destroy = /** - * Remove interceptors, restore original functions, and forward the onDestroy() call - * @return {?} - */ - function () { - this._subscribers.forEach(function (link) { return link.unsubscribe(); }); - this._subscribers = []; - }; - /** - * For each *defined* API property, register a callback to `_onMonitorEvents( )` - * Cache 1..n subscriptions for internal auto-unsubscribes when the the directive destructs - * @return {?} - */ - ResponsiveActivation.prototype._configureChangeObservers = /** - * For each *defined* API property, register a callback to `_onMonitorEvents( )` - * Cache 1..n subscriptions for internal auto-unsubscribes when the the directive destructs - * @return {?} - */ - function () { - var _this = this; - /** @type {?} */ - var subscriptions = []; - this._registryMap.forEach(function (bp) { - if (_this._keyInUse(bp.key)) { - /** @type {?} */ - var buildChanges = function (change) { - change = change.clone(); - change.property = _this._options.baseKey; - return change; - }; - subscriptions.push(_this._mediaMonitor - .observe(bp.alias) - .pipe(operators.map(buildChanges)) - .subscribe(function (change) { - _this._onMonitorEvents(change); - })); - } - }); - return subscriptions; - }; - /** - * Build mediaQuery key-hashmap; only for the directive properties that are actually defined/used - * in the HTML markup - * @return {?} - */ - ResponsiveActivation.prototype._buildRegistryMap = /** - * Build mediaQuery key-hashmap; only for the directive properties that are actually defined/used - * in the HTML markup - * @return {?} - */ - function () { - var _this = this; - return this._mediaMonitor.breakpoints - .map(function (bp) { return (extendObject({}, bp, { - baseKey: _this._options.baseKey, - // e.g. layout, hide, self-align, flex-wrap - key: _this._options.baseKey + bp.suffix // e.g. layoutGtSm, layoutMd, layoutGtLg - })); }) - .filter(function (bp) { return _this._keyInUse(bp.key); }); - }; - /** - * Synchronizes change notifications with the current mq-activated @Input and calculates the - * mq-activated input value or the default value - */ - /** - * Synchronizes change notifications with the current mq-activated \@Input and calculates the - * mq-activated input value or the default value - * @param {?} change - * @return {?} - */ - ResponsiveActivation.prototype._onMonitorEvents = /** - * Synchronizes change notifications with the current mq-activated \@Input and calculates the - * mq-activated input value or the default value - * @param {?} change - * @return {?} - */ - function (change) { - if (change.property === this._options.baseKey) { - change.value = this._calculateActivatedValue(change); - this._onMediaChanges(change); - } - }; - /** - * Has the key been specified in the HTML markup and thus is intended - * to participate in activation processes. - * @param {?} key - * @return {?} - */ - ResponsiveActivation.prototype._keyInUse = /** - * Has the key been specified in the HTML markup and thus is intended - * to participate in activation processes. - * @param {?} key - * @return {?} - */ - function (key) { - return this._lookupKeyValue(key) !== undefined; - }; - /** - * Map input key associated with mediaQuery activation to closest defined input key - * then return the values associated with the targeted input property - * - * !! change events may arrive out-of-order (activate before deactivate) - * so make sure the deactivate is used ONLY when the keys match - * (since a different activate may be in use) - * @param {?} current - * @return {?} - */ - ResponsiveActivation.prototype._calculateActivatedValue = /** - * Map input key associated with mediaQuery activation to closest defined input key - * then return the values associated with the targeted input property - * - * !! change events may arrive out-of-order (activate before deactivate) - * so make sure the deactivate is used ONLY when the keys match - * (since a different activate may be in use) - * @param {?} current - * @return {?} - */ - function (current) { - /** @type {?} */ - var currentKey = this._options.baseKey + current.suffix; - /** @type {?} */ - var newKey = this._activatedInputKey; // e.g. newKey == hideGtSm - newKey = current.matches ? currentKey : ((newKey === currentKey) ? '' : newKey); - this._activatedInputKey = this._validateInputKey(newKey); - return this.activatedInput; - }; - /** - * For the specified input property key, validate it is defined (used in the markup) - * If not see if a overlapping mediaQuery-related input key fallback has been defined - * - * NOTE: scans in the order defined by activeOverLaps (largest viewport ranges -> smallest ranges) - * @param {?} inputKey - * @return {?} - */ - ResponsiveActivation.prototype._validateInputKey = /** - * For the specified input property key, validate it is defined (used in the markup) - * If not see if a overlapping mediaQuery-related input key fallback has been defined - * - * NOTE: scans in the order defined by activeOverLaps (largest viewport ranges -> smallest ranges) - * @param {?} inputKey - * @return {?} - */ - function (inputKey) { - var _this = this; - /** @type {?} */ - var isMissingKey = function (key) { return !_this._keyInUse(key); }; - if (isMissingKey(inputKey)) { - this._mediaMonitor.activeOverlaps.some(function (bp) { - /** @type {?} */ - var key = _this._options.baseKey + bp.suffix; - if (!isMissingKey(key)) { - inputKey = key; - return true; // exit .some() - } - return false; - }); - } - return inputKey; - }; - /** - * Get the value (if any) for the directive instances \@Input property (aka key) - * @param {?} key - * @return {?} - */ - ResponsiveActivation.prototype._lookupKeyValue = /** - * Get the value (if any) for the directive instances \@Input property (aka key) - * @param {?} key - * @return {?} - */ - function (key) { - return this._options.inputKeys[key]; - }; - return ResponsiveActivation; -}()); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * Abstract base class for the Layout API styling directives. - * @deprecated - * \@deletion-target v7.0.0-beta.21 - * @abstract - */ -var /** - * Abstract base class for the Layout API styling directives. - * @deprecated - * \@deletion-target v7.0.0-beta.21 - * @abstract - */ -BaseDirective = /** @class */ (function () { - function BaseDirective(_mediaMonitor, _elementRef, _styler, _styleBuilder) { - this._mediaMonitor = _mediaMonitor; - this._elementRef = _elementRef; - this._styler = _styler; - this._styleBuilder = _styleBuilder; - /** - * Dictionary of input keys with associated values - */ - this._inputMap = {}; - /** - * Has the `ngOnInit()` method fired - * - * Used to allow *ngFor tasks to finish and support queries like - * getComputedStyle() during ngOnInit(). - */ - this._hasInitialized = false; - /** - * Cache map for style computation - */ - this._styleCache = new Map(); - } - Object.defineProperty(BaseDirective.prototype, "activatedValue", { - /** - * Imperatively determine the current activated [input] value; - * if called before ngOnInit() this will return `undefined` - */ - get: /** - * Imperatively determine the current activated [input] value; - * if called before ngOnInit() this will return `undefined` - * @return {?} - */ - function () { - return this._mqActivation ? this._mqActivation.activatedInput : undefined; - }, - /** - * Change the currently activated input value and force-update - * the injected CSS (by-passing change detection). - * - * NOTE: Only the currently activated input value will be modified; - * other input values will NOT be affected. - */ - set: /** - * Change the currently activated input value and force-update - * the injected CSS (by-passing change detection). - * - * NOTE: Only the currently activated input value will be modified; - * other input values will NOT be affected. - * @param {?} value - * @return {?} - */ - function (value) { - var _a; - /** @type {?} */ - var key = 'baseKey'; - /** @type {?} */ - var previousVal; - if (this._mqActivation) { - key = this._mqActivation.activatedInputKey; - previousVal = this._inputMap[key]; - this._inputMap[key] = value; - } - /** @type {?} */ - var change = new core.SimpleChange(previousVal, value, false); - this.ngOnChanges(/** @type {?} */ (_a = {}, _a[key] = change, _a)); - }, - enumerable: true, - configurable: true - }); - /** - * Does this directive have 1 or more responsive keys defined - * Note: we exclude the 'baseKey' key (which is NOT considered responsive) - */ - /** - * Does this directive have 1 or more responsive keys defined - * Note: we exclude the 'baseKey' key (which is NOT considered responsive) - * @param {?} baseKey - * @return {?} - */ - BaseDirective.prototype.hasResponsiveAPI = /** - * Does this directive have 1 or more responsive keys defined - * Note: we exclude the 'baseKey' key (which is NOT considered responsive) - * @param {?} baseKey - * @return {?} - */ - function (baseKey) { - /** @type {?} */ - var totalKeys = Object.keys(this._inputMap).length; - /** @type {?} */ - var baseValue = this._inputMap[baseKey]; - return (totalKeys - (!!baseValue ? 1 : 0)) > 0; - }; - // ********************************************* - // Lifecycle Methods - // ********************************************* - /** - * Use post-component-initialization event to perform extra - * querying such as computed Display style - */ - /** - * Use post-component-initialization event to perform extra - * querying such as computed Display style - * @return {?} - */ - BaseDirective.prototype.ngOnInit = /** - * Use post-component-initialization event to perform extra - * querying such as computed Display style - * @return {?} - */ - function () { - this._hasInitialized = true; - }; - /** - * @param {?} change - * @return {?} - */ - BaseDirective.prototype.ngOnChanges = /** - * @param {?} change - * @return {?} - */ - function (change) { - throw new Error("BaseDirective::ngOnChanges should be overridden in subclass: " + change); - }; - /** - * @return {?} - */ - BaseDirective.prototype.ngOnDestroy = /** - * @return {?} - */ - function () { - if (this._mqActivation) { - this._mqActivation.destroy(); - } - delete this._mediaMonitor; - }; - Object.defineProperty(BaseDirective.prototype, "parentElement", { - // ********************************************* - // Protected Methods - // ********************************************* - /** Access to host element's parent DOM node */ - get: /** - * Access to host element's parent DOM node - * @return {?} - */ - function () { - return this._elementRef.nativeElement.parentNode; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(BaseDirective.prototype, "nativeElement", { - get: /** - * @return {?} - */ - function () { - return this._elementRef.nativeElement; - }, - enumerable: true, - configurable: true - }); - /** Add styles to the element using predefined style builder */ - /** - * Add styles to the element using predefined style builder - * @param {?} input - * @param {?=} parent - * @return {?} - */ - BaseDirective.prototype.addStyles = /** - * Add styles to the element using predefined style builder - * @param {?} input - * @param {?=} parent - * @return {?} - */ - function (input, parent) { - /** @type {?} */ - var builder = /** @type {?} */ ((this._styleBuilder)); - /** @type {?} */ - var useCache = builder.shouldCache; - /** @type {?} */ - var genStyles = this._styleCache.get(input); - if (!genStyles || !useCache) { - genStyles = builder.buildStyles(input, parent); - if (useCache) { - this._styleCache.set(input, genStyles); - } - } - this._applyStyleToElement(genStyles); - builder.sideEffect(input, genStyles, parent); - }; - /** Access the current value (if any) of the @Input property */ - /** - * Access the current value (if any) of the \@Input property - * @param {?} key - * @return {?} - */ - BaseDirective.prototype._queryInput = /** - * Access the current value (if any) of the \@Input property - * @param {?} key - * @return {?} - */ - function (key) { - return this._inputMap[key]; - }; - /** - * Was the directive's default selector used ? - * If not, use the fallback value! - */ - /** - * Was the directive's default selector used ? - * If not, use the fallback value! - * @param {?} key - * @param {?} fallbackVal - * @return {?} - */ - BaseDirective.prototype._getDefaultVal = /** - * Was the directive's default selector used ? - * If not, use the fallback value! - * @param {?} key - * @param {?} fallbackVal - * @return {?} - */ - function (key, fallbackVal) { - /** @type {?} */ - var val = this._queryInput(key); - /** @type {?} */ - var hasDefaultVal = (val !== undefined && val !== null); - return (hasDefaultVal && val !== '') ? val : fallbackVal; - }; - /** - * Quick accessor to the current HTMLElement's `display` style - * Note: this allows us to preserve the original style - * and optional restore it when the mediaQueries deactivate - */ - /** - * Quick accessor to the current HTMLElement's `display` style - * Note: this allows us to preserve the original style - * and optional restore it when the mediaQueries deactivate - * @param {?=} source - * @return {?} - */ - BaseDirective.prototype._getDisplayStyle = /** - * Quick accessor to the current HTMLElement's `display` style - * Note: this allows us to preserve the original style - * and optional restore it when the mediaQueries deactivate - * @param {?=} source - * @return {?} - */ - function (source) { - if (source === void 0) { source = this.nativeElement; } - /** @type {?} */ - var query = 'display'; - return this._styler.lookupStyle(source, query); - }; - /** Quick accessor to raw attribute value on the target DOM element */ - /** - * Quick accessor to raw attribute value on the target DOM element - * @param {?} attribute - * @param {?=} source - * @return {?} - */ - BaseDirective.prototype._getAttributeValue = /** - * Quick accessor to raw attribute value on the target DOM element - * @param {?} attribute - * @param {?=} source - * @return {?} - */ - function (attribute, source) { - if (source === void 0) { source = this.nativeElement; } - return this._styler.lookupAttributeValue(source, attribute); - }; - /** - * Determine the DOM element's Flexbox flow (flex-direction). - * - * Check inline style first then check computed (stylesheet) style. - * And optionally add the flow value to element's inline style. - */ - /** - * Determine the DOM element's Flexbox flow (flex-direction). - * - * Check inline style first then check computed (stylesheet) style. - * And optionally add the flow value to element's inline style. - * @param {?} target - * @param {?=} addIfMissing - * @return {?} - */ - BaseDirective.prototype._getFlexFlowDirection = /** - * Determine the DOM element's Flexbox flow (flex-direction). - * - * Check inline style first then check computed (stylesheet) style. - * And optionally add the flow value to element's inline style. - * @param {?} target - * @param {?=} addIfMissing - * @return {?} - */ - function (target, addIfMissing) { - if (addIfMissing === void 0) { addIfMissing = false; } - if (target) { - var _a = this._styler.getFlowDirection(target), value = _a[0], hasInlineValue = _a[1]; - if (!hasInlineValue && addIfMissing) { - /** @type {?} */ - var style = buildLayoutCSS(value); - /** @type {?} */ - var elements = [target]; - this._styler.applyStyleToElements(style, elements); - } - return value.trim(); - } - return 'row'; - }; - /** Applies styles given via string pair or object map to the directive element */ - /** - * Applies styles given via string pair or object map to the directive element - * @param {?} style - * @param {?=} value - * @param {?=} element - * @return {?} - */ - BaseDirective.prototype._applyStyleToElement = /** - * Applies styles given via string pair or object map to the directive element - * @param {?} style - * @param {?=} value - * @param {?=} element - * @return {?} - */ - function (style, value, element) { - if (element === void 0) { element = this.nativeElement; } - this._styler.applyStyleToElement(element, style, value); - }; - /** Applies styles given via string pair or object map to the directive's element */ - /** - * Applies styles given via string pair or object map to the directive's element - * @param {?} style - * @param {?} elements - * @return {?} - */ - BaseDirective.prototype._applyStyleToElements = /** - * Applies styles given via string pair or object map to the directive's element - * @param {?} style - * @param {?} elements - * @return {?} - */ - function (style, elements) { - this._styler.applyStyleToElements(style, elements); - }; - /** - * Save the property value; which may be a complex object. - * Complex objects support property chains - */ - /** - * Save the property value; which may be a complex object. - * Complex objects support property chains - * @param {?=} key - * @param {?=} source - * @return {?} - */ - BaseDirective.prototype._cacheInput = /** - * Save the property value; which may be a complex object. - * Complex objects support property chains - * @param {?=} key - * @param {?=} source - * @return {?} - */ - function (key, source) { - if (typeof source === 'object') { - for (var prop in source) { - this._inputMap[prop] = source[prop]; - } - } - else { - if (!!key) { - this._inputMap[key] = source; - } - } - }; - /** - * Build a ResponsiveActivation object used to manage subscriptions to mediaChange notifications - * and intelligent lookup of the directive's property value that corresponds to that mediaQuery - * (or closest match). - */ - /** - * Build a ResponsiveActivation object used to manage subscriptions to mediaChange notifications - * and intelligent lookup of the directive's property value that corresponds to that mediaQuery - * (or closest match). - * @param {?} key - * @param {?} defaultValue - * @param {?} onMediaQueryChange - * @return {?} - */ - BaseDirective.prototype._listenForMediaQueryChanges = /** - * Build a ResponsiveActivation object used to manage subscriptions to mediaChange notifications - * and intelligent lookup of the directive's property value that corresponds to that mediaQuery - * (or closest match). - * @param {?} key - * @param {?} defaultValue - * @param {?} onMediaQueryChange +function validateSuffixes(list) { + list.forEach((/** + * @param {?} bp * @return {?} */ - function (key, defaultValue, onMediaQueryChange) { - // tslint:disable-line:max-line-length - if (!this._mqActivation) { - /** @type {?} */ - var keyOptions = new KeyOptions(key, defaultValue, this._inputMap); - this._mqActivation = new ResponsiveActivation(keyOptions, this._mediaMonitor, function (change) { return onMediaQueryChange(change); }); + function (bp) { + if (!bp.suffix) { + bp.suffix = camelCase(bp.alias); // create Suffix value based on alias + bp.overlapping = !!bp.overlapping; // ensure default value } - return this._mqActivation; - }; - Object.defineProperty(BaseDirective.prototype, "childrenNodes", { - /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */ - get: /** - * Special accessor to query for all child 'element' nodes regardless of type, class, etc - * @return {?} - */ - function () { - /** @type {?} */ - var obj = this.nativeElement.children; - /** @type {?} */ - var buffer = []; - // iterate backwards ensuring that length is an UInt32 - for (var i = obj.length; i--;) { - buffer[i] = obj[i]; - } - return buffer; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(BaseDirective.prototype, "hasInitialized", { - get: /** - * @return {?} - */ - function () { - return this._hasInitialized; - }, - enumerable: true, - configurable: true - }); - return BaseDirective; -}()); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ + })); + return list; +} /** - * Adapter to the BaseDirective abstract class so it can be used via composition. - * @see BaseDirective - * @deprecated - * \@deletion-target v7.0.0-beta.21 - */ -var /** - * Adapter to the BaseDirective abstract class so it can be used via composition. - * @see BaseDirective - * @deprecated - * \@deletion-target v7.0.0-beta.21 + * Merge a custom breakpoint list with the default list based on unique alias values + * - Items are added if the alias is not in the default list + * - Items are merged with the custom override if the alias exists in the default list + * @param {?} defaults + * @param {?=} custom + * @return {?} */ -BaseDirectiveAdapter = /** @class */ (function (_super) { - __extends(BaseDirectiveAdapter, _super); - /** - * BaseDirectiveAdapter constructor - */ - function BaseDirectiveAdapter(_baseKey, // non-responsive @Input property name - // non-responsive @Input property name - _mediaMonitor, _elementRef, _styler) { - var _this = _super.call(this, _mediaMonitor, _elementRef, _styler) || this; - _this._baseKey = _baseKey; - _this._mediaMonitor = _mediaMonitor; - _this._elementRef = _elementRef; - _this._styler = _styler; - return _this; - } - Object.defineProperty(BaseDirectiveAdapter.prototype, "activeKey", { - /** - * Accessor to determine which @Input property is "active" - * e.g. which property value will be used. - */ - get: /** - * Accessor to determine which \@Input property is "active" - * e.g. which property value will be used. - * @return {?} - */ - function () { - /** @type {?} */ - var mqa = this._mqActivation; - /** @type {?} */ - var key = mqa ? mqa.activatedInputKey : this._baseKey; - // Note: ClassDirective::SimpleChanges uses 'klazz' instead of 'class' as a key - return (key === 'class') ? 'klazz' : key; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(BaseDirectiveAdapter.prototype, "inputMap", { - /** Hash map of all @Input keys/values defined/used */ - get: /** - * Hash map of all \@Input keys/values defined/used - * @return {?} - */ - function () { - return this._inputMap; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(BaseDirectiveAdapter.prototype, "mqActivation", { - /** - * @see BaseDirective._mqActivation - */ - get: /** - * @see BaseDirective._mqActivation - * @return {?} - */ - function () { - return /** @type {?} */ ((this._mqActivation)); - }, - enumerable: true, - configurable: true - }); - /** - * Does this directive have 1 or more responsive keys defined - * Note: we exclude the 'baseKey' key (which is NOT considered responsive) - */ - /** - * Does this directive have 1 or more responsive keys defined - * Note: we exclude the 'baseKey' key (which is NOT considered responsive) - * @return {?} - */ - BaseDirectiveAdapter.prototype.hasResponsiveAPI = /** - * Does this directive have 1 or more responsive keys defined - * Note: we exclude the 'baseKey' key (which is NOT considered responsive) - * @return {?} - */ - function () { - return _super.prototype.hasResponsiveAPI.call(this, this._baseKey); - }; - /** - * @see BaseDirective._queryInput - */ - /** - * @see BaseDirective._queryInput - * @param {?} key - * @return {?} - */ - BaseDirectiveAdapter.prototype.queryInput = /** - * @see BaseDirective._queryInput - * @param {?} key - * @return {?} - */ - function (key) { - return key ? this._queryInput(key) : undefined; - }; - /** - * Save the property value. - */ - /** - * Save the property value. - * @param {?=} key - * @param {?=} source - * @param {?=} cacheRaw - * @return {?} - */ - BaseDirectiveAdapter.prototype.cacheInput = /** - * Save the property value. - * @param {?=} key - * @param {?=} source - * @param {?=} cacheRaw - * @return {?} - */ - function (key, source, cacheRaw) { - if (cacheRaw === void 0) { cacheRaw = false; } - if (cacheRaw) { - this._cacheInputRaw(key, source); - } - else if (Array.isArray(source)) { - this._cacheInputArray(key, source); - } - else if (typeof source === 'object') { - this._cacheInputObject(key, source); - } - else if (typeof source === 'string') { - this._cacheInputString(key, source); - } - else { - throw new Error("Invalid class value '" + key + "' provided. Did you want to cache the raw value?"); - } - }; - /** - * @see BaseDirective._listenForMediaQueryChanges - */ - /** - * @see BaseDirective._listenForMediaQueryChanges - * @param {?} key - * @param {?} defaultValue - * @param {?} onMediaQueryChange - * @return {?} - */ - BaseDirectiveAdapter.prototype.listenForMediaQueryChanges = /** - * @see BaseDirective._listenForMediaQueryChanges - * @param {?} key - * @param {?} defaultValue - * @param {?} onMediaQueryChange - * @return {?} - */ - function (key, defaultValue, onMediaQueryChange) { - return this._listenForMediaQueryChanges(key, defaultValue, onMediaQueryChange); - }; - // ************************************************************ - // Protected Methods - // ************************************************************ - /** - * No implicit transforms of the source. - * Required when caching values expected later for KeyValueDiffers - */ - /** - * No implicit transforms of the source. - * Required when caching values expected later for KeyValueDiffers - * @param {?=} key - * @param {?=} source +function mergeByAlias(defaults, custom) { + if (custom === void 0) { custom = []; } + /** @type {?} */ + var dict = {}; + defaults.forEach((/** + * @param {?} bp * @return {?} */ - BaseDirectiveAdapter.prototype._cacheInputRaw = /** - * No implicit transforms of the source. - * Required when caching values expected later for KeyValueDiffers - * @param {?=} key - * @param {?=} source + function (bp) { + dict[bp.alias] = bp; + })); + // Merge custom breakpoints + custom.forEach((/** + * @param {?} bp * @return {?} */ - function (key, source) { - if (key) { - this._inputMap[key] = source; + function (bp) { + if (dict[bp.alias]) { + extendObject(dict[bp.alias], bp); } - }; - /** - * Save the property value for Array values. - */ - /** - * Save the property value for Array values. - * @param {?=} key - * @param {?=} source + else { + dict[bp.alias] = bp; + } + })); + return validateSuffixes(Object.keys(dict).map((/** + * @param {?} k * @return {?} */ - BaseDirectiveAdapter.prototype._cacheInputArray = /** - * Save the property value for Array values. - * @param {?=} key - * @param {?=} source + function (k) { return dict[k]; }))); +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Injection token unique to the flex-layout library. + * Use this token when build a custom provider (see below). + * @type {?} + */ +var BREAKPOINTS = new core.InjectionToken('Token (@angular/flex-layout) Breakpoints', { + providedIn: 'root', + factory: (/** * @return {?} */ - function (key, source) { - if (key === void 0) { key = ''; } - this._inputMap[key] = source ? source.join(' ') : ''; - }; + function () { + /** @type {?} */ + var breakpoints = core.inject(BREAKPOINT); + /** @type {?} */ + var layoutConfig = core.inject(LAYOUT_CONFIG); + /** @type {?} */ + var bpFlattenArray = [].concat.apply([], (breakpoints || []) + .map((/** + * @param {?} v + * @return {?} + */ + function (v) { return Array.isArray(v) ? v : [v]; }))); + /** @type {?} */ + var builtIns = (layoutConfig.disableDefaultBps ? [] : DEFAULT_BREAKPOINTS) + .concat(layoutConfig.addOrientationBps ? ORIENTATION_BREAKPOINTS : []); + return mergeByAlias(builtIns, bpFlattenArray); + }) +}); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * HOF to sort the breakpoints by descending priority + * @template T + * @param {?} a + * @param {?} b + * @return {?} + */ +function sortDescendingPriority(a, b) { + /** @type {?} */ + var priorityA = a ? a.priority || 0 : 0; + /** @type {?} */ + var priorityB = b ? b.priority || 0 : 0; + return priorityB - priorityA; +} +/** + * HOF to sort the breakpoints by ascending priority + * @template T + * @param {?} a + * @param {?} b + * @return {?} + */ +function sortAscendingPriority(a, b) { + /** @type {?} */ + var pA = a.priority || 0; + /** @type {?} */ + var pB = b.priority || 0; + return pA - pB; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Registry of 1..n MediaQuery breakpoint ranges + * This is published as a provider and may be overridden from custom, application-specific ranges + * + */ +var BreakPointRegistry = /** @class */ (function () { + function BreakPointRegistry(list) { + /** + * Memoized BreakPoint Lookups + */ + this.findByMap = new Map(); + this.items = list.slice().sort(sortAscendingPriority); + } /** - * Save the property value for key/value pair values. + * Search breakpoints by alias (e.g. gt-xs) */ /** - * Save the property value for key/value pair values. - * @param {?=} key - * @param {?=} source + * Search breakpoints by alias (e.g. gt-xs) + * @param {?} alias * @return {?} */ - BaseDirectiveAdapter.prototype._cacheInputObject = /** - * Save the property value for key/value pair values. - * @param {?=} key - * @param {?=} source + BreakPointRegistry.prototype.findByAlias = /** + * Search breakpoints by alias (e.g. gt-xs) + * @param {?} alias * @return {?} */ - function (key, source) { - if (key === void 0) { key = ''; } - /** @type {?} */ - var classes = []; - if (source) { - for (var prop in source) { - if (!!source[prop]) { - classes.push(prop); - } - } - } - this._inputMap[key] = classes.join(' '); + function (alias) { + return !alias ? null : this.findWithPredicate(alias, (/** + * @param {?} bp + * @return {?} + */ + function (bp) { return bp.alias == alias; })); }; /** - * Save the property value for string values. - */ - /** - * Save the property value for string values. - * @param {?=} key - * @param {?=} source + * @param {?} query * @return {?} */ - BaseDirectiveAdapter.prototype._cacheInputString = /** - * Save the property value for string values. - * @param {?=} key - * @param {?=} source + BreakPointRegistry.prototype.findByQuery = /** + * @param {?} query * @return {?} */ - function (key, source) { - if (key === void 0) { key = ''; } - this._inputMap[key] = source; - }; - return BaseDirectiveAdapter; -}(BaseDirective)); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * @abstract - */ -var /** - * @abstract - */ -BaseDirective2 = /** @class */ (function () { - function BaseDirective2(elementRef, styleBuilder, styler, marshal) { - this.elementRef = elementRef; - this.styleBuilder = styleBuilder; - this.styler = styler; - this.marshal = marshal; - this.DIRECTIVE_KEY = ''; - this.inputs = []; - /** - * The most recently used styles for the builder + function (query) { + return this.findWithPredicate(query, (/** + * @param {?} bp + * @return {?} */ - this.mru = {}; - this.destroySubject = new rxjs.Subject(); + function (bp) { return bp.mediaQuery == query; })); + }; + Object.defineProperty(BreakPointRegistry.prototype, "overlappings", { /** - * Cache map for style computation + * Get all the breakpoints whose ranges could overlapping `normal` ranges; + * e.g. gt-sm overlaps md, lg, and xl */ - this.styleCache = new Map(); - } - Object.defineProperty(BaseDirective2.prototype, "parentElement", { - /** Access to host element's parent DOM node */ get: /** - * Access to host element's parent DOM node + * Get all the breakpoints whose ranges could overlapping `normal` ranges; + * e.g. gt-sm overlaps md, lg, and xl * @return {?} */ function () { - return this.elementRef.nativeElement.parentElement; + return this.items.filter((/** + * @param {?} it + * @return {?} + */ + function (it) { return it.overlapping == true; })); }, enumerable: true, configurable: true }); - Object.defineProperty(BaseDirective2.prototype, "nativeElement", { - /** Access to the HTMLElement for the directive */ + Object.defineProperty(BreakPointRegistry.prototype, "aliases", { + /** + * Get list of all registered (non-empty) breakpoint aliases + */ get: /** - * Access to the HTMLElement for the directive + * Get list of all registered (non-empty) breakpoint aliases * @return {?} */ function () { - return this.elementRef.nativeElement; + return this.items.map((/** + * @param {?} it + * @return {?} + */ + function (it) { return it.alias; })); }, enumerable: true, configurable: true }); - Object.defineProperty(BaseDirective2.prototype, "activatedValue", { - /** Access to the activated value for the directive */ + Object.defineProperty(BreakPointRegistry.prototype, "suffixes", { + /** + * Aliases are mapped to properties using suffixes + * e.g. 'gt-sm' for property 'layout' uses suffix 'GtSm' + * for property layoutGtSM. + */ get: /** - * Access to the activated value for the directive + * Aliases are mapped to properties using suffixes + * e.g. 'gt-sm' for property 'layout' uses suffix 'GtSm' + * for property layoutGtSM. * @return {?} */ function () { - return this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY); - }, - set: /** - * @param {?} value - * @return {?} - */ - function (value) { - this.marshal.setValue(this.nativeElement, this.DIRECTIVE_KEY, value, this.marshal.activatedBreakpoint); + return this.items.map((/** + * @param {?} it + * @return {?} + */ + function (it) { return !!it.suffix ? it.suffix : ''; })); }, enumerable: true, configurable: true }); - /** For @Input changes */ - /** - * For \@Input changes - * @param {?} changes - * @return {?} - */ - BaseDirective2.prototype.ngOnChanges = /** - * For \@Input changes - * @param {?} changes - * @return {?} - */ - function (changes) { - var _this = this; - Object.keys(changes).forEach(function (key) { - if (_this.inputs.indexOf(key) !== -1) { - /** @type {?} */ - var bp = key.split('.').slice(1).join('.'); - /** @type {?} */ - var val = changes[key].currentValue; - _this.setValue(val, bp); - } - }); - }; - /** - * @return {?} - */ - BaseDirective2.prototype.ngOnDestroy = /** - * @return {?} - */ - function () { - this.destroySubject.next(); - this.destroySubject.complete(); - this.marshal.releaseElement(this.nativeElement); - }; - /** Register with central marshaller service */ /** - * Register with central marshaller service - * @param {?=} extraTriggers - * @return {?} - */ - BaseDirective2.prototype.init = /** - * Register with central marshaller service - * @param {?=} extraTriggers - * @return {?} + * Memoized lookup using custom predicate function */ - function (extraTriggers) { - if (extraTriggers === void 0) { extraTriggers = []; } - this.marshal.init(this.elementRef.nativeElement, this.DIRECTIVE_KEY, this.updateWithValue.bind(this), this.clearStyles.bind(this), extraTriggers); - }; - /** Add styles to the element using predefined style builder */ /** - * Add styles to the element using predefined style builder - * @param {?} input - * @param {?=} parent + * Memoized lookup using custom predicate function + * @private + * @param {?} key + * @param {?} searchFn * @return {?} */ - BaseDirective2.prototype.addStyles = /** - * Add styles to the element using predefined style builder - * @param {?} input - * @param {?=} parent + BreakPointRegistry.prototype.findWithPredicate = /** + * Memoized lookup using custom predicate function + * @private + * @param {?} key + * @param {?} searchFn * @return {?} */ - function (input, parent) { + function (key, searchFn) { /** @type {?} */ - var builder = this.styleBuilder; - /** @type {?} */ - var useCache = builder.shouldCache; - /** @type {?} */ - var genStyles = this.styleCache.get(input); - if (!genStyles || !useCache) { - genStyles = builder.buildStyles(input, parent); - if (useCache) { - this.styleCache.set(input, genStyles); - } + var response = this.findByMap.get(key); + if (!response) { + response = this.items.find(searchFn) || null; + this.findByMap.set(key, response); } - this.mru = __assign({}, genStyles); - this.applyStyleToElement(genStyles); - builder.sideEffect(input, genStyles, parent); + return response || null; }; - /** Remove generated styles from an element using predefined style builder */ + BreakPointRegistry.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ + BreakPointRegistry.ctorParameters = function () { return [ + { type: Array, decorators: [{ type: core.Inject, args: [BREAKPOINTS,] }] } + ]; }; + /** @nocollapse */ BreakPointRegistry.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function BreakPointRegistry_Factory() { return new BreakPointRegistry(core.ɵɵinject(BREAKPOINTS)); }, token: BreakPointRegistry, providedIn: "root" }); + return BreakPointRegistry; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * MediaMonitor configures listeners to mediaQuery changes and publishes an Observable facade to + * convert mediaQuery change callbacks to subscriber notifications. These notifications will be + * performed within the ng Zone to trigger change detections and component updates. + * + * NOTE: both mediaQuery activations and de-activations are announced in notifications + */ +var MatchMedia = /** @class */ (function () { + function MatchMedia(_zone, _platformId, _document) { + this._zone = _zone; + this._platformId = _platformId; + this._document = _document; + /** + * Initialize source with 'all' so all non-responsive APIs trigger style updates + */ + this.source = new rxjs.BehaviorSubject(new MediaChange(true)); + this.registry = new Map(); + this._observable$ = this.source.asObservable(); + } + Object.defineProperty(MatchMedia.prototype, "activations", { + /** + * Publish list of all current activations + */ + get: /** + * Publish list of all current activations + * @return {?} + */ + function () { + /** @type {?} */ + var results = []; + this.registry.forEach((/** + * @param {?} mql + * @param {?} key + * @return {?} + */ + function (mql, key) { + if (mql.matches) { + results.push(key); + } + })); + return results; + }, + enumerable: true, + configurable: true + }); /** - * Remove generated styles from an element using predefined style builder - * @return {?} - */ - BaseDirective2.prototype.clearStyles = /** - * Remove generated styles from an element using predefined style builder - * @return {?} + * For the specified mediaQuery? */ - function () { - var _this = this; - Object.keys(this.mru).forEach(function (k) { - _this.mru[k] = ''; - }); - this.applyStyleToElement(this.mru); - this.mru = {}; - }; - /** Force trigger style updates on DOM element */ /** - * Force trigger style updates on DOM element + * For the specified mediaQuery? + * @param {?} mediaQuery * @return {?} */ - BaseDirective2.prototype.triggerUpdate = /** - * Force trigger style updates on DOM element + MatchMedia.prototype.isActive = /** + * For the specified mediaQuery? + * @param {?} mediaQuery * @return {?} */ - function () { + function (mediaQuery) { /** @type {?} */ - var val = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY); - this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, val); + var mql = this.registry.get(mediaQuery); + return !!mql ? mql.matches : false; }; /** - * Determine the DOM element's Flexbox flow (flex-direction). + * External observers can watch for all (or a specific) mql changes. + * Typically used by the MediaQueryAdaptor; optionally available to components + * who wish to use the MediaMonitor as mediaMonitor$ observable service. * - * Check inline style first then check computed (stylesheet) style. - * And optionally add the flow value to element's inline style. + * Use deferred registration process to register breakpoints only on subscription + * This logic also enforces logic to register all mediaQueries BEFORE notify + * subscribers of notifications. */ /** - * Determine the DOM element's Flexbox flow (flex-direction). + * External observers can watch for all (or a specific) mql changes. + * Typically used by the MediaQueryAdaptor; optionally available to components + * who wish to use the MediaMonitor as mediaMonitor$ observable service. * - * Check inline style first then check computed (stylesheet) style. - * And optionally add the flow value to element's inline style. - * @param {?} target - * @param {?=} addIfMissing + * Use deferred registration process to register breakpoints only on subscription + * This logic also enforces logic to register all mediaQueries BEFORE notify + * subscribers of notifications. + * @param {?=} mqList + * @param {?=} filterOthers * @return {?} */ - BaseDirective2.prototype.getFlexFlowDirection = /** - * Determine the DOM element's Flexbox flow (flex-direction). + MatchMedia.prototype.observe = /** + * External observers can watch for all (or a specific) mql changes. + * Typically used by the MediaQueryAdaptor; optionally available to components + * who wish to use the MediaMonitor as mediaMonitor$ observable service. * - * Check inline style first then check computed (stylesheet) style. - * And optionally add the flow value to element's inline style. - * @param {?} target - * @param {?=} addIfMissing + * Use deferred registration process to register breakpoints only on subscription + * This logic also enforces logic to register all mediaQueries BEFORE notify + * subscribers of notifications. + * @param {?=} mqList + * @param {?=} filterOthers * @return {?} */ - function (target, addIfMissing) { - if (addIfMissing === void 0) { addIfMissing = false; } - if (target) { - var _a = this.styler.getFlowDirection(target), value = _a[0], hasInlineValue = _a[1]; - if (!hasInlineValue && addIfMissing) { - /** @type {?} */ - var style = buildLayoutCSS(value); + function (mqList, filterOthers) { + var _this = this; + if (filterOthers === void 0) { filterOthers = false; } + if (mqList && mqList.length) { + /** @type {?} */ + var matchMedia$ = this._observable$.pipe(operators.filter((/** + * @param {?} change + * @return {?} + */ + function (change) { + return !filterOthers ? true : (mqList.indexOf(change.mediaQuery) > -1); + }))); + /** @type {?} */ + var registration$ = new rxjs.Observable((/** + * @param {?} observer + * @return {?} + */ + function (observer) { + // tslint:disable-line:max-line-length /** @type {?} */ - var elements = [target]; - this.styler.applyStyleToElements(style, elements); - } - return value.trim(); + var matches = _this.registerQuery(mqList); + if (matches.length) { + /** @type {?} */ + var lastChange = (/** @type {?} */ (matches.pop())); + matches.forEach((/** + * @param {?} e + * @return {?} + */ + function (e) { + observer.next(e); + })); + _this.source.next(lastChange); // last match is cached + } + observer.complete(); + })); + return rxjs.merge(registration$, matchMedia$); } - return 'row'; + return this._observable$; }; - /** Applies styles given via string pair or object map to the directive element */ /** - * Applies styles given via string pair or object map to the directive element - * @param {?} style - * @param {?=} value - * @param {?=} element - * @return {?} - */ - BaseDirective2.prototype.applyStyleToElement = /** - * Applies styles given via string pair or object map to the directive element - * @param {?} style - * @param {?=} value - * @param {?=} element - * @return {?} + * Based on the BreakPointRegistry provider, register internal listeners for each unique + * mediaQuery. Each listener emits specific MediaChange data to observers */ - function (style, value, element) { - if (element === void 0) { element = this.nativeElement; } - this.styler.applyStyleToElement(element, style, value); - }; /** - * @param {?} val - * @param {?} bp + * Based on the BreakPointRegistry provider, register internal listeners for each unique + * mediaQuery. Each listener emits specific MediaChange data to observers + * @param {?} mediaQuery * @return {?} */ - BaseDirective2.prototype.setValue = /** - * @param {?} val - * @param {?} bp + MatchMedia.prototype.registerQuery = /** + * Based on the BreakPointRegistry provider, register internal listeners for each unique + * mediaQuery. Each listener emits specific MediaChange data to observers + * @param {?} mediaQuery * @return {?} */ - function (val, bp) { - this.marshal.setValue(this.nativeElement, this.DIRECTIVE_KEY, val, bp); + function (mediaQuery) { + var _this = this; + /** @type {?} */ + var list = Array.isArray(mediaQuery) ? mediaQuery : [mediaQuery]; + /** @type {?} */ + var matches = []; + buildQueryCss(list, this._document); + list.forEach((/** + * @param {?} query + * @return {?} + */ + function (query) { + /** @type {?} */ + var onMQLEvent = (/** + * @param {?} e + * @return {?} + */ + function (e) { + _this._zone.run((/** + * @return {?} + */ + function () { return _this.source.next(new MediaChange(e.matches, query)); })); + }); + /** @type {?} */ + var mql = _this.registry.get(query); + if (!mql) { + mql = _this.buildMQL(query); + mql.addListener(onMQLEvent); + _this.registry.set(query, mql); + } + if (mql.matches) { + matches.push(new MediaChange(true, query)); + } + })); + return matches; }; /** - * @param {?} input + * Call window.matchMedia() to build a MediaQueryList; which + * supports 0..n listeners for activation/deactivation + */ + /** + * Call window.matchMedia() to build a MediaQueryList; which + * supports 0..n listeners for activation/deactivation + * @protected + * @param {?} query * @return {?} */ - BaseDirective2.prototype.updateWithValue = /** - * @param {?} input + MatchMedia.prototype.buildMQL = /** + * Call window.matchMedia() to build a MediaQueryList; which + * supports 0..n listeners for activation/deactivation + * @protected + * @param {?} query * @return {?} */ - function (input) { - this.addStyles(input); + function (query) { + return constructMql(query, common.isPlatformBrowser(this._platformId)); }; - return BaseDirective2; + MatchMedia.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ + MatchMedia.ctorParameters = function () { return [ + { type: core.NgZone }, + { type: Object, decorators: [{ type: core.Inject, args: [core.PLATFORM_ID,] }] }, + { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] } + ]; }; + /** @nocollapse */ MatchMedia.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function MatchMedia_Factory() { return new MatchMedia(core.ɵɵinject(core.NgZone), core.ɵɵinject(core.PLATFORM_ID), core.ɵɵinject(common.DOCUMENT)); }, token: MatchMedia, providedIn: "root" }); + return MatchMedia; }()); - /** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * Private global registry for all dynamically-created, injected style tags + * @see prepare(query) + * @type {?} */ - +var ALL_STYLES = {}; /** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * For Webkit engines that only trigger the MediaQueryList Listener + * when there is at least one CSS selector for the respective media query. + * + * @param {?} mediaQueries + * @param {?} _document + * @return {?} + */ +function buildQueryCss(mediaQueries, _document) { + /** @type {?} */ + var list = mediaQueries.filter((/** + * @param {?} it + * @return {?} + */ + function (it) { return !ALL_STYLES[it]; })); + if (list.length > 0) { + /** @type {?} */ + var query = list.join(', '); + try { + /** @type {?} */ + var styleEl_1 = _document.createElement('style'); + styleEl_1.setAttribute('type', 'text/css'); + if (!((/** @type {?} */ (styleEl_1))).styleSheet) { + /** @type {?} */ + var 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"; + styleEl_1.appendChild(_document.createTextNode(cssText)); + } + (/** @type {?} */ (_document.head)).appendChild(styleEl_1); + // Store in private global registry + list.forEach((/** + * @param {?} mq + * @return {?} + */ + function (mq) { return ALL_STYLES[mq] = styleEl_1; })); + } + catch (e) { + console.error(e); + } + } +} +/** + * @param {?} query + * @param {?} isBrowser + * @return {?} */ +function constructMql(query, isBrowser) { + /** @type {?} */ + var canListen = isBrowser && !!((/** @type {?} */ (window))).matchMedia('all').addListener; + return canListen ? ((/** @type {?} */ (window))).matchMedia(query) : (/** @type {?} */ ((/** @type {?} */ ({ + matches: query === 'all' || query === '', + media: query, + addListener: (/** + * @return {?} + */ + function () { + }), + removeListener: (/** + * @return {?} + */ + function () { + }) + })))); +} /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * MockMatchMedia mocks calls to the Window API matchMedia with a build of a simulated @@ -2598,17 +1522,9 @@ var MockMatchMedia = /** @class */ (function (_super) { function MockMatchMedia(_zone, _platformId, _document, _breakpoints) { var _this = _super.call(this, _zone, _platformId, _document) || this; _this._breakpoints = _breakpoints; - /** - * Special flag used to test BreakPoint registrations with MatchMedia - */ - _this.autoRegisterQueries = true; - /** - * Allow fallback to overlapping mediaQueries to determine - * activatedInput(s). - */ - _this.useOverlaps = false; - _this._registry = new Map(); - _this._actives = []; + _this.autoRegisterQueries = true; // Used for testing BreakPoint registrations + // Used for testing BreakPoint registrations + _this.useOverlaps = false; // Allow fallback to overlapping mediaQueries return _this; } /** Easy method to clear all listeners for all mediaQueries */ @@ -2621,10 +1537,14 @@ var MockMatchMedia = /** @class */ (function (_super) { * @return {?} */ function () { - this._registry.forEach(function (mql) { - mql.destroy(); - }); - this._registry.clear(); + this.registry.forEach((/** + * @param {?} mql + * @return {?} + */ + function (mql) { + ((/** @type {?} */ (mql))).destroy(); + })); + this.registry.clear(); this.useOverlaps = false; }; /** Feature to support manual, simulated activation of a mediaQuery. */ @@ -2668,15 +1588,21 @@ var MockMatchMedia = /** @class */ (function (_super) { return (bp && bp.mediaQuery) || queryOrAlias; }; /** - * Manually activate any overlapping mediaQueries to simulate + * Manually onMediaChange any overlapping mediaQueries to simulate + * similar functionality in the window.matchMedia() + */ + /** + * Manually onMediaChange any overlapping mediaQueries to simulate * similar functionality in the window.matchMedia() + * @private * @param {?} mediaQuery * @param {?} useOverlaps * @return {?} */ MockMatchMedia.prototype._activateWithOverlaps = /** - * Manually activate any overlapping mediaQueries to simulate + * Manually onMediaChange any overlapping mediaQueries to simulate * similar functionality in the window.matchMedia() + * @private * @param {?} mediaQuery * @param {?} useOverlaps * @return {?} @@ -2702,7 +1628,7 @@ var MockMatchMedia = /** @class */ (function (_super) { this._activateByAlias('lt-xl, lt-lg, lt-md, lt-sm'); break; } - // Simulate activate of overlapping gt- mediaQuery ranges + // Simulate activation of overlapping gt- mediaQuery ranges switch (alias) { case 'xl': this._activateByAlias('gt-lg, gt-md, gt-sm, gt-xs'); @@ -2723,76 +1649,100 @@ var MockMatchMedia = /** @class */ (function (_super) { }; /** * + */ + /** + * + * @private * @param {?} aliases * @return {?} */ MockMatchMedia.prototype._activateByAlias = /** * + * @private * @param {?} aliases * @return {?} */ function (aliases) { var _this = this; /** @type {?} */ - var activate = function (alias) { + var activate = (/** + * @param {?} alias + * @return {?} + */ + function (alias) { /** @type {?} */ var bp = _this._breakpoints.findByAlias(alias); _this._activateByQuery(bp ? bp.mediaQuery : alias); - }; - aliases.split(',').forEach(function (alias) { return activate(alias.trim()); }); + }); + aliases.split(',').forEach((/** + * @param {?} alias + * @return {?} + */ + function (alias) { return activate(alias.trim()); })); }; /** * + */ + /** + * + * @private * @param {?} mediaQuery * @return {?} */ MockMatchMedia.prototype._activateByQuery = /** * + * @private * @param {?} mediaQuery * @return {?} */ function (mediaQuery) { /** @type {?} */ - var mql = this._registry.get(mediaQuery); - /** @type {?} */ - var alreadyAdded = this._actives - .reduce(function (found, it) { return (found || (mql ? (it.media === mql.media) : false)); }, false); - if (mql && !alreadyAdded) { - this._actives.push(mql.activate()); + var mql = (/** @type {?} */ (this.registry.get(mediaQuery))); + if (mql && !this.isActive(mediaQuery)) { + this.registry.set(mediaQuery, mql.activate()); } return this.hasActivated; }; + /** Deactivate all current MQLs and reset the buffer */ /** - * Deactivate all current Mock MQLs - * @return {?} + * Deactivate all current MQLs and reset the buffer + * @private + * @template THIS + * @this {THIS} + * @return {THIS} */ MockMatchMedia.prototype._deactivateAll = /** - * Deactivate all current Mock MQLs - * @return {?} + * Deactivate all current MQLs and reset the buffer + * @private + * @template THIS + * @this {THIS} + * @return {THIS} */ function () { - if (this._actives.length) { - // Deactivate all current MQLs and reset the buffer - for (var _i = 0, _a = this._actives; _i < _a.length; _i++) { - var it = _a[_i]; - it.deactivate(); - } - this._actives = []; - } - return this; + (/** @type {?} */ (this)).registry.forEach((/** + * @param {?} it + * @return {?} + */ + function (it) { + ((/** @type {?} */ (it))).deactivate(); + })); + return (/** @type {?} */ (this)); }; + /** Insure the mediaQuery is registered with MatchMedia */ /** * Insure the mediaQuery is registered with MatchMedia + * @private * @param {?} mediaQuery * @return {?} */ MockMatchMedia.prototype._registerMediaQuery = /** * Insure the mediaQuery is registered with MatchMedia + * @private * @param {?} mediaQuery * @return {?} */ function (mediaQuery) { - if (!this._registry.has(mediaQuery) && this.autoRegisterQueries) { + if (!this.registry.has(mediaQuery) && this.autoRegisterQueries) { this.registerQuery(mediaQuery); } }; @@ -2803,12 +1753,14 @@ var MockMatchMedia = /** @class */ (function (_super) { /** * Call window.matchMedia() to build a MediaQueryList; which * supports 0..n listeners for activation/deactivation + * @protected * @param {?} query * @return {?} */ - MockMatchMedia.prototype._buildMQL = /** + MockMatchMedia.prototype.buildMQL = /** * Call window.matchMedia() to build a MediaQueryList; which * supports 0..n listeners for activation/deactivation + * @protected * @param {?} query * @return {?} */ @@ -2817,10 +1769,11 @@ var MockMatchMedia = /** @class */ (function (_super) { }; Object.defineProperty(MockMatchMedia.prototype, "hasActivated", { get: /** + * @protected * @return {?} */ function () { - return this._actives.length > 0; + return this.activations.length > 0; }, enumerable: true, configurable: true @@ -2842,7 +1795,7 @@ var MockMatchMedia = /** @class */ (function (_super) { * - supports manual activation to simulate mediaQuery matching * - manages listeners */ -var /** +var /** * Special internal class to simulate a MediaQueryList and * - supports manual activation to simulate mediaQuery matching * - manages listeners @@ -2905,11 +1858,15 @@ MockMediaQueryList = /** @class */ (function () { var _this = this; if (!this._isActive) { this._isActive = true; - this._listeners.forEach(function (callback) { + this._listeners.forEach((/** + * @param {?} callback + * @return {?} + */ + function (callback) { /** @type {?} */ - var cb = /** @type {?} */ ((callback)); + var cb = (/** @type {?} */ (callback)); cb.call(null, _this); - }); + })); } return this; }; @@ -2926,11 +1883,15 @@ MockMediaQueryList = /** @class */ (function () { var _this = this; if (this._isActive) { this._isActive = false; - this._listeners.forEach(function (callback) { + this._listeners.forEach((/** + * @param {?} callback + * @return {?} + */ + function (callback) { /** @type {?} */ - var cb = /** @type {?} */ ((callback)); + var cb = (/** @type {?} */ (callback)); cb.call(null, _this); - }); + })); } return this; }; @@ -2951,7 +1912,7 @@ MockMediaQueryList = /** @class */ (function () { } if (this._isActive) { /** @type {?} */ - var cb = /** @type {?} */ ((listener)); + var cb = (/** @type {?} */ (listener)); cb.call(null, this); } }; @@ -3009,9 +1970,10 @@ MockMediaQueryList = /** @class */ (function () { }; return MockMediaQueryList; }()); -/** * +/** * Pre-configured provider for MockMatchMedia - @type {?} */ + * @type {?} + */ var MockMatchMediaProvider = { // tslint:disable-line:variable-name provide: MatchMedia, @@ -3020,604 +1982,1266 @@ var MockMatchMediaProvider = { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ + /** - * Special server-only class to simulate a MediaQueryList and - * - supports manual activation to simulate mediaQuery matching - * - manages listeners + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -var /** - * Special server-only class to simulate a MediaQueryList and - * - supports manual activation to simulate mediaQuery matching - * - manages listeners +/** @type {?} */ +var PRINT = 'print'; +/** @type {?} */ +var BREAKPOINT_PRINT = { + alias: PRINT, + mediaQuery: PRINT, + priority: 1000 +}; +/** + * PrintHook - Use to intercept print MediaQuery activations and force + * layouts to render with the specified print alias/breakpoint + * + * Used in MediaMarshaller and MediaObserver */ -ServerMediaQueryList = /** @class */ (function () { - function ServerMediaQueryList(_mediaQuery) { - this._mediaQuery = _mediaQuery; - this._isActive = false; - this._listeners = []; - this.onchange = null; +var PrintHook = /** @class */ (function () { + function PrintHook(breakpoints, layoutConfig, _platformId) { + this.breakpoints = breakpoints; + this.layoutConfig = layoutConfig; + this._platformId = _platformId; + // registeredBeforeAfterPrintHooks tracks if we registered the `beforeprint` + // and `afterprint` event listeners. + this.registeredBeforeAfterPrintHooks = false; + // isPrintingBeforeAfterEvent is used to track if we are printing from within + // a `beforeprint` event handler. This prevents the typicall `stopPrinting` + // form `interceptEvents` so that printing is not stopped while the dialog + // is still open. This is an extension of the `isPrinting` property on + // browsers which support `beforeprint` and `afterprint` events. + this.isPrintingBeforeAfterEvent = false; + /** + * Is this service currently in Print-mode ? + */ + this.isPrinting = false; + this.queue = new PrintQueue(); + this.deactivations = []; } - Object.defineProperty(ServerMediaQueryList.prototype, "matches", { + /** Add 'print' mediaQuery: to listen for matchMedia activations */ + /** + * Add 'print' mediaQuery: to listen for matchMedia activations + * @param {?} queries + * @return {?} + */ + PrintHook.prototype.withPrintQuery = /** + * Add 'print' mediaQuery: to listen for matchMedia activations + * @param {?} queries + * @return {?} + */ + function (queries) { + return queries.concat([PRINT]); + }; + /** Is the MediaChange event for any 'print' @media */ + /** + * Is the MediaChange event for any 'print' \@media + * @param {?} e + * @return {?} + */ + PrintHook.prototype.isPrintEvent = /** + * Is the MediaChange event for any 'print' \@media + * @param {?} e + * @return {?} + */ + function (e) { + return e.mediaQuery.startsWith(PRINT); + }; + Object.defineProperty(PrintHook.prototype, "printAlias", { + /** What is the desired mqAlias to use while printing? */ get: /** + * What is the desired mqAlias to use while printing? * @return {?} */ function () { - return this._isActive; + return this.layoutConfig.printWithBreakpoints || []; }, enumerable: true, configurable: true }); - Object.defineProperty(ServerMediaQueryList.prototype, "media", { + Object.defineProperty(PrintHook.prototype, "printBreakPoints", { + /** Lookup breakpoints associated with print aliases. */ get: /** + * Lookup breakpoints associated with print aliases. * @return {?} */ function () { - return this._mediaQuery; + var _this = this; + return (/** @type {?} */ (this.printAlias + .map((/** + * @param {?} alias + * @return {?} + */ + function (alias) { return _this.breakpoints.findByAlias(alias); })) + .filter((/** + * @param {?} bp + * @return {?} + */ + function (bp) { return bp !== null; })))); }, enumerable: true, configurable: true }); + /** Lookup breakpoint associated with mediaQuery */ + /** + * Lookup breakpoint associated with mediaQuery + * @param {?} __0 + * @return {?} + */ + PrintHook.prototype.getEventBreakpoints = /** + * Lookup breakpoint associated with mediaQuery + * @param {?} __0 + * @return {?} + */ + function (_a) { + var mediaQuery = _a.mediaQuery; + /** @type {?} */ + var bp = this.breakpoints.findByQuery(mediaQuery); + /** @type {?} */ + var list = bp ? this.printBreakPoints.concat([bp]) : this.printBreakPoints; + return list.sort(sortDescendingPriority); + }; + /** Update event with printAlias mediaQuery information */ + /** + * Update event with printAlias mediaQuery information + * @param {?} event + * @return {?} + */ + PrintHook.prototype.updateEvent = /** + * Update event with printAlias mediaQuery information + * @param {?} event + * @return {?} + */ + function (event) { + /** @type {?} */ + var bp = this.breakpoints.findByQuery(event.mediaQuery); + if (this.isPrintEvent(event)) { + // Reset from 'print' to first (highest priority) print breakpoint + bp = this.getEventBreakpoints(event)[0]; + event.mediaQuery = bp ? bp.mediaQuery : ''; + } + return mergeAlias(event, bp); + }; + // registerBeforeAfterPrintHooks registers a `beforeprint` event hook so we can + // trigger print styles synchronously and apply proper layout styles. + // It is a noop if the hooks have already been registered or the platform is + // not a browser(fallsback to mql print media queries). + // registerBeforeAfterPrintHooks registers a `beforeprint` event hook so we can + // trigger print styles synchronously and apply proper layout styles. + // It is a noop if the hooks have already been registered or the platform is + // not a browser(fallsback to mql print media queries). + /** + * @private + * @param {?} target + * @return {?} + */ + PrintHook.prototype.registerBeforeAfterPrintHooks = + // registerBeforeAfterPrintHooks registers a `beforeprint` event hook so we can + // trigger print styles synchronously and apply proper layout styles. + // It is a noop if the hooks have already been registered or the platform is + // not a browser(fallsback to mql print media queries). + /** + * @private + * @param {?} target + * @return {?} + */ + function (target) { + var _this = this; + if (!common.isPlatformBrowser(this._platformId) || this.registeredBeforeAfterPrintHooks) { + return; + } + this.registeredBeforeAfterPrintHooks = true; + // Could we have teardown logic to remove if there are no print listeners being used? + ((/** @type {?} */ (window))).addEventListener('beforeprint', (/** + * @return {?} + */ + function () { + // If we aren't already printing, start printing and update the styles as + // if there was a regular print `MediaChange`(from matchMedia). + if (!_this.isPrinting) { + _this.isPrintingBeforeAfterEvent = true; + _this.startPrinting(target, _this.getEventBreakpoints(new MediaChange(true, PRINT))); + target.updateStyles(); + } + })); + ((/** @type {?} */ (window))).addEventListener('afterprint', (/** + * @return {?} + */ + function () { + // If we aren't already printing, start printing and update the styles as + // if there was a regular print `MediaChange`(from matchMedia). + _this.isPrintingBeforeAfterEvent = false; + if (_this.isPrinting) { + _this.stopPrinting(target); + target.updateStyles(); + } + })); + }; + /** + * Prepare RxJs filter operator with partial application + * @return pipeable filter predicate + */ + /** + * Prepare RxJs filter operator with partial application + * @param {?} target + * @return {?} pipeable filter predicate + */ + PrintHook.prototype.interceptEvents = /** + * Prepare RxJs filter operator with partial application + * @param {?} target + * @return {?} pipeable filter predicate + */ + function (target) { + var _this = this; + this.registerBeforeAfterPrintHooks(target); + return (/** + * @param {?} event + * @return {?} + */ + function (event) { + if (_this.isPrintEvent(event)) { + if (event.matches && !_this.isPrinting) { + _this.startPrinting(target, _this.getEventBreakpoints(event)); + target.updateStyles(); + } + else if (!event.matches && _this.isPrinting && !_this.isPrintingBeforeAfterEvent) { + _this.stopPrinting(target); + target.updateStyles(); + } + } + else { + _this.collectActivations(event); + } + }); + }; + /** Stop mediaChange event propagation in event streams */ + /** + * Stop mediaChange event propagation in event streams + * @return {?} + */ + PrintHook.prototype.blockPropagation = /** + * Stop mediaChange event propagation in event streams + * @return {?} + */ + function () { + var _this = this; + return (/** + * @param {?} event + * @return {?} + */ + function (event) { + return !(_this.isPrinting || _this.isPrintEvent(event)); + }); + }; + /** + * Save current activateBreakpoints (for later restore) + * and substitute only the printAlias breakpoint + */ + /** + * Save current activateBreakpoints (for later restore) + * and substitute only the printAlias breakpoint + * @protected + * @param {?} target + * @param {?} bpList + * @return {?} + */ + PrintHook.prototype.startPrinting = /** + * Save current activateBreakpoints (for later restore) + * and substitute only the printAlias breakpoint + * @protected + * @param {?} target + * @param {?} bpList + * @return {?} + */ + function (target, bpList) { + this.isPrinting = true; + target.activatedBreakpoints = this.queue.addPrintBreakpoints(bpList); + }; + /** For any print de-activations, reset the entire print queue */ + /** + * For any print de-activations, reset the entire print queue + * @protected + * @param {?} target + * @return {?} + */ + PrintHook.prototype.stopPrinting = /** + * For any print de-activations, reset the entire print queue + * @protected + * @param {?} target + * @return {?} + */ + function (target) { + target.activatedBreakpoints = this.deactivations; + this.deactivations = []; + this.queue.clear(); + this.isPrinting = false; + }; + /** + * To restore pre-Print Activations, we must capture the proper + * list of breakpoint activations BEFORE print starts. OnBeforePrint() + * is supported; so 'print' mediaQuery activations are used as a fallback + * in browsers without `beforeprint` support. + * + * > But activated breakpoints are deactivated BEFORE 'print' activation. + * + * Let's capture all de-activations using the following logic: + * + * When not printing: + * - clear cache when activating non-print breakpoint + * - update cache (and sort) when deactivating + * + * When printing: + * - sort and save when starting print + * - restore as activatedTargets and clear when stop printing + */ + /** + * To restore pre-Print Activations, we must capture the proper + * list of breakpoint activations BEFORE print starts. OnBeforePrint() + * is supported; so 'print' mediaQuery activations are used as a fallback + * in browsers without `beforeprint` support. + * + * > But activated breakpoints are deactivated BEFORE 'print' activation. + * + * Let's capture all de-activations using the following logic: + * + * When not printing: + * - clear cache when activating non-print breakpoint + * - update cache (and sort) when deactivating + * + * When printing: + * - sort and save when starting print + * - restore as activatedTargets and clear when stop printing + * @param {?} event + * @return {?} + */ + PrintHook.prototype.collectActivations = /** + * To restore pre-Print Activations, we must capture the proper + * list of breakpoint activations BEFORE print starts. OnBeforePrint() + * is supported; so 'print' mediaQuery activations are used as a fallback + * in browsers without `beforeprint` support. + * + * > But activated breakpoints are deactivated BEFORE 'print' activation. + * + * Let's capture all de-activations using the following logic: + * + * When not printing: + * - clear cache when activating non-print breakpoint + * - update cache (and sort) when deactivating + * + * When printing: + * - sort and save when starting print + * - restore as activatedTargets and clear when stop printing + * @param {?} event + * @return {?} + */ + function (event) { + if (!this.isPrinting || this.isPrintingBeforeAfterEvent) { + if (!event.matches) { + /** @type {?} */ + var bp = this.breakpoints.findByQuery(event.mediaQuery); + if (bp) { // Deactivating a breakpoint + this.deactivations.push(bp); + this.deactivations.sort(sortDescendingPriority); + } + } + else if (!this.isPrintingBeforeAfterEvent) { + // Only clear deactivations if we aren't printing from a `beforeprint` event. + // Otherwise this will clear before `stopPrinting()` is called to restore + // the pre-Print Activations. + this.deactivations = []; + } + } + }; + PrintHook.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ + PrintHook.ctorParameters = function () { return [ + { type: BreakPointRegistry }, + { type: undefined, decorators: [{ type: core.Inject, args: [LAYOUT_CONFIG,] }] }, + { type: Object, decorators: [{ type: core.Inject, args: [core.PLATFORM_ID,] }] } + ]; }; + /** @nocollapse */ PrintHook.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function PrintHook_Factory() { return new PrintHook(core.ɵɵinject(BreakPointRegistry), core.ɵɵinject(LAYOUT_CONFIG), core.ɵɵinject(core.PLATFORM_ID)); }, token: PrintHook, providedIn: "root" }); + return PrintHook; +}()); +// ************************************************************************ +// Internal Utility class 'PrintQueue' +// ************************************************************************ +/** + * Utility class to manage print breakpoints + activatedBreakpoints + * with correct sorting WHILE printing + */ +var +// ************************************************************************ +// Internal Utility class 'PrintQueue' +// ************************************************************************ +/** + * Utility class to manage print breakpoints + activatedBreakpoints + * with correct sorting WHILE printing + */ +PrintQueue = /** @class */ (function () { + function PrintQueue() { + /** + * Sorted queue with prioritized print breakpoints + */ + this.printBreakpoints = []; + } + /** + * @param {?} bpList + * @return {?} + */ + PrintQueue.prototype.addPrintBreakpoints = /** + * @param {?} bpList + * @return {?} + */ + function (bpList) { + var _this = this; + bpList.push(BREAKPOINT_PRINT); + bpList.sort(sortDescendingPriority); + bpList.forEach((/** + * @param {?} bp + * @return {?} + */ + function (bp) { return _this.addBreakpoint(bp); })); + return this.printBreakpoints; + }; + /** Add Print breakpoint to queue */ + /** + * Add Print breakpoint to queue + * @param {?} bp + * @return {?} + */ + PrintQueue.prototype.addBreakpoint = /** + * Add Print breakpoint to queue + * @param {?} bp + * @return {?} + */ + function (bp) { + if (!!bp) { + /** @type {?} */ + var bpInList = this.printBreakpoints.find((/** + * @param {?} it + * @return {?} + */ + function (it) { return it.mediaQuery === bp.mediaQuery; })); + if (bpInList === undefined) { + // If this is a `printAlias` breakpoint, then append. If a true 'print' breakpoint, + // register as highest priority in the queue + this.printBreakpoints = isPrintBreakPoint(bp) ? [bp].concat(this.printBreakpoints) : this.printBreakpoints.concat([bp]); + } + } + }; + /** Restore original activated breakpoints and clear internal caches */ + /** + * Restore original activated breakpoints and clear internal caches + * @return {?} + */ + PrintQueue.prototype.clear = /** + * Restore original activated breakpoints and clear internal caches + * @return {?} + */ + function () { + this.printBreakpoints = []; + }; + return PrintQueue; +}()); +// ************************************************************************ +// Internal Utility methods +// ************************************************************************ +/** + * Only support intercept queueing if the Breakpoint is a print \@media query + * @param {?} bp + * @return {?} + */ +function isPrintBreakPoint(bp) { + return bp ? bp.mediaQuery.startsWith(PRINT) : false; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * Wraps the provided value in an array, unless the provided value is an array. + * @template T + * @param {?} value + * @return {?} + */ +function coerceArray(value) { + return Array.isArray(value) ? value : [value]; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * MediaObserver enables applications to listen for 1..n mediaQuery activations and to determine + * if a mediaQuery is currently activated. + * + * Since a breakpoint change will first deactivate 1...n mediaQueries and then possibly activate + * 1..n mediaQueries, the MediaObserver will debounce notifications and report ALL *activations* + * in 1 event notification. The reported activations will be sorted in descending priority order. + * + * This class uses the BreakPoint Registry to inject alias information into the raw MediaChange + * notification. For custom mediaQuery notifications, alias information will not be injected and + * those fields will be ''. + * + * Note: Developers should note that only mediaChange activations (not de-activations) + * are announced by the MediaObserver. + * + * \@usage + * + * // RxJS + * import { filter } from 'rxjs/operators'; + * import { MediaObserver } from '\@angular/flex-layout'; + * + * \@Component({ ... }) + * export class AppComponent { + * status: string = ''; + * + * constructor(mediaObserver: MediaObserver) { + * const media$ = mediaObserver.asObservable().pipe( + * filter((changes: MediaChange[]) => true) // silly noop filter + * ); + * + * media$.subscribe((changes: MediaChange[]) => { + * let status = ''; + * changes.forEach( change => { + * status += `'${change.mqAlias}' = (${change.mediaQuery})
` ; + * }); + * this.status = status; + * }); + * + * } + * } + */ +var MediaObserver = /** @class */ (function () { + function MediaObserver(breakpoints, matchMedia, hook) { + this.breakpoints = breakpoints; + this.matchMedia = matchMedia; + this.hook = hook; + /** + * Filter MediaChange notifications for overlapping breakpoints + */ + this.filterOverlaps = false; + this.destroyed$ = new rxjs.Subject(); + this._media$ = this.watchActivations(); + this.media$ = this._media$.pipe(operators.filter((/** + * @param {?} changes + * @return {?} + */ + function (changes) { return changes.length > 0; })), operators.map((/** + * @param {?} changes + * @return {?} + */ + function (changes) { return changes[0]; }))); + } /** - * Destroy the current list by deactivating the - * listeners and clearing the internal list + * Completes the active subject, signalling to all complete for all + * MediaObserver subscribers */ /** - * Destroy the current list by deactivating the - * listeners and clearing the internal list + * Completes the active subject, signalling to all complete for all + * MediaObserver subscribers * @return {?} */ - ServerMediaQueryList.prototype.destroy = /** - * Destroy the current list by deactivating the - * listeners and clearing the internal list + MediaObserver.prototype.ngOnDestroy = /** + * Completes the active subject, signalling to all complete for all + * MediaObserver subscribers * @return {?} */ function () { - this.deactivate(); - this._listeners = []; + this.destroyed$.next(); + this.destroyed$.complete(); }; - /** Notify all listeners that 'matches === TRUE' */ + // ************************************************ + // Public Methods + // ************************************************ /** - * Notify all listeners that 'matches === TRUE' - * @return {?} + * Observe changes to current activation 'list' */ - ServerMediaQueryList.prototype.activate = /** - * Notify all listeners that 'matches === TRUE' - * @return {?} - */ - function () { - var _this = this; - if (!this._isActive) { - this._isActive = true; - this._listeners.forEach(function (callback) { - /** @type {?} */ - var cb = /** @type {?} */ ((callback)); - cb.call(null, _this); - }); - } - return this; - }; - /** Notify all listeners that 'matches === false' */ + // ************************************************ + // Public Methods + // ************************************************ /** - * Notify all listeners that 'matches === false' + * Observe changes to current activation 'list' * @return {?} */ - ServerMediaQueryList.prototype.deactivate = /** - * Notify all listeners that 'matches === false' + MediaObserver.prototype.asObservable = + // ************************************************ + // Public Methods + // ************************************************ + /** + * Observe changes to current activation 'list' * @return {?} */ function () { - var _this = this; - if (this._isActive) { - this._isActive = false; - this._listeners.forEach(function (callback) { - /** @type {?} */ - var cb = /** @type {?} */ ((callback)); - cb.call(null, _this); - }); - } - return this; + return this._media$; }; - /** Add a listener to our internal list to activate later */ /** - * Add a listener to our internal list to activate later - * @param {?} listener - * @return {?} - */ - ServerMediaQueryList.prototype.addListener = /** - * Add a listener to our internal list to activate later - * @param {?} listener - * @return {?} + * Allow programmatic query to determine if one or more media query/alias match + * the current viewport size. + * @param value One or more media queries (or aliases) to check. + * @returns Whether any of the media queries match. */ - function (listener) { - if (this._listeners.indexOf(listener) === -1) { - this._listeners.push(listener); - } - if (this._isActive) { - /** @type {?} */ - var cb = /** @type {?} */ ((listener)); - cb.call(null, this); - } - }; - /** Don't need to remove listeners in the server environment */ /** - * Don't need to remove listeners in the server environment - * @param {?} _ - * @return {?} + * Allow programmatic query to determine if one or more media query/alias match + * the current viewport size. + * @param {?} value One or more media queries (or aliases) to check. + * @return {?} Whether any of the media queries match. */ - ServerMediaQueryList.prototype.removeListener = /** - * Don't need to remove listeners in the server environment - * @param {?} _ - * @return {?} + MediaObserver.prototype.isActive = /** + * Allow programmatic query to determine if one or more media query/alias match + * the current viewport size. + * @param {?} value One or more media queries (or aliases) to check. + * @return {?} Whether any of the media queries match. */ - function (_) { + function (value) { + var _this = this; + /** @type {?} */ + var aliases = splitQueries(coerceArray(value)); + return aliases.some((/** + * @param {?} alias + * @return {?} + */ + function (alias) { + /** @type {?} */ + var query = toMediaQuery(alias, _this.breakpoints); + return _this.matchMedia.isActive(query); + })); }; + // ************************************************ + // Internal Methods + // ************************************************ /** - * @param {?} _ - * @param {?} __ - * @param {?=} ___ - * @return {?} - */ - ServerMediaQueryList.prototype.addEventListener = /** - * @param {?} _ - * @param {?} __ - * @param {?=} ___ - * @return {?} + * Register all the mediaQueries registered in the BreakPointRegistry + * This is needed so subscribers can be auto-notified of all standard, registered + * mediaQuery activations */ - function (_, __, ___) { - }; + // ************************************************ + // Internal Methods + // ************************************************ /** - * @param {?} _ - * @param {?} __ - * @param {?=} ___ + * Register all the mediaQueries registered in the BreakPointRegistry + * This is needed so subscribers can be auto-notified of all standard, registered + * mediaQuery activations + * @private * @return {?} */ - ServerMediaQueryList.prototype.removeEventListener = /** - * @param {?} _ - * @param {?} __ - * @param {?=} ___ + MediaObserver.prototype.watchActivations = + // ************************************************ + // Internal Methods + // ************************************************ + /** + * Register all the mediaQueries registered in the BreakPointRegistry + * This is needed so subscribers can be auto-notified of all standard, registered + * mediaQuery activations + * @private * @return {?} */ - function (_, __, ___) { + function () { + /** @type {?} */ + var queries = this.breakpoints.items.map((/** + * @param {?} bp + * @return {?} + */ + function (bp) { return bp.mediaQuery; })); + return this.buildObservable(queries); }; /** - * @param {?} _ - * @return {?} - */ - ServerMediaQueryList.prototype.dispatchEvent = /** - * @param {?} _ - * @return {?} + * Only pass/announce activations (not de-activations) + * + * Since multiple-mediaQueries can be activation in a cycle, + * gather all current activations into a single list of changes to observers + * + * Inject associated (if any) alias information into the MediaChange event + * - Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only + * - Exclude print activations that do not have an associated mediaQuery + * + * NOTE: the raw MediaChange events [from MatchMedia] do not + * contain important alias information; as such this info + * must be injected into the MediaChange */ - function (_) { - return false; - }; - return ServerMediaQueryList; -}()); -/** - * Special server-only implementation of MatchMedia that uses the above - * ServerMediaQueryList as its internal representation - * - * Also contains methods to activate and deactivate breakpoints - */ -var ServerMatchMedia = /** @class */ (function (_super) { - __extends(ServerMatchMedia, _super); - function ServerMatchMedia(_zone, _platformId, _document) { - var _this = _super.call(this, _zone, _platformId, _document) || this; - _this._zone = _zone; - _this._platformId = _platformId; - _this._document = _document; - _this._registry = new Map(); - return _this; - } - /** Activate the specified breakpoint if we're on the server, no-op otherwise */ /** - * Activate the specified breakpoint if we're on the server, no-op otherwise - * @param {?} bp + * Only pass/announce activations (not de-activations) + * + * Since multiple-mediaQueries can be activation in a cycle, + * gather all current activations into a single list of changes to observers + * + * Inject associated (if any) alias information into the MediaChange event + * - Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only + * - Exclude print activations that do not have an associated mediaQuery + * + * NOTE: the raw MediaChange events [from MatchMedia] do not + * contain important alias information; as such this info + * must be injected into the MediaChange + * @private + * @param {?} mqList * @return {?} */ - ServerMatchMedia.prototype.activateBreakpoint = /** - * Activate the specified breakpoint if we're on the server, no-op otherwise - * @param {?} bp + MediaObserver.prototype.buildObservable = /** + * Only pass/announce activations (not de-activations) + * + * Since multiple-mediaQueries can be activation in a cycle, + * gather all current activations into a single list of changes to observers + * + * Inject associated (if any) alias information into the MediaChange event + * - Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only + * - Exclude print activations that do not have an associated mediaQuery + * + * NOTE: the raw MediaChange events [from MatchMedia] do not + * contain important alias information; as such this info + * must be injected into the MediaChange + * @private + * @param {?} mqList * @return {?} */ - function (bp) { + function (mqList) { + var _this = this; /** @type {?} */ - var lookupBreakpoint = this._registry.get(bp.mediaQuery); - if (lookupBreakpoint) { - lookupBreakpoint.activate(); - } + var hasChanges = (/** + * @param {?} changes + * @return {?} + */ + function (changes) { + /** @type {?} */ + var isValidQuery = (/** + * @param {?} change + * @return {?} + */ + function (change) { return (change.mediaQuery.length > 0); }); + return (changes.filter(isValidQuery).length > 0); + }); + /** @type {?} */ + var excludeOverlaps = (/** + * @param {?} changes + * @return {?} + */ + function (changes) { + return !_this.filterOverlaps ? changes : changes.filter((/** + * @param {?} change + * @return {?} + */ + function (change) { + /** @type {?} */ + var bp = _this.breakpoints.findByQuery(change.mediaQuery); + return !bp ? true : !bp.overlapping; + })); + }); + /** + */ + return this.matchMedia + .observe(this.hook.withPrintQuery(mqList)) + .pipe(operators.filter((/** + * @param {?} change + * @return {?} + */ + function (change) { return change.matches; })), operators.debounceTime(0, rxjs.asapScheduler), operators.switchMap((/** + * @param {?} _ + * @return {?} + */ + function (_) { return rxjs.of(_this.findAllActivations()); })), operators.map(excludeOverlaps), operators.filter(hasChanges), operators.takeUntil(this.destroyed$)); }; - /** Deactivate the specified breakpoint if we're on the server, no-op otherwise */ /** - * Deactivate the specified breakpoint if we're on the server, no-op otherwise - * @param {?} bp + * Find all current activations and prepare single list of activations + * sorted by descending priority. + */ + /** + * Find all current activations and prepare single list of activations + * sorted by descending priority. + * @private * @return {?} */ - ServerMatchMedia.prototype.deactivateBreakpoint = /** - * Deactivate the specified breakpoint if we're on the server, no-op otherwise - * @param {?} bp + MediaObserver.prototype.findAllActivations = /** + * Find all current activations and prepare single list of activations + * sorted by descending priority. + * @private * @return {?} */ - function (bp) { + function () { + var _this = this; /** @type {?} */ - var lookupBreakpoint = this._registry.get(bp.mediaQuery); - if (lookupBreakpoint) { - lookupBreakpoint.deactivate(); - } + var mergeMQAlias = (/** + * @param {?} change + * @return {?} + */ + function (change) { + /** @type {?} */ + var bp = _this.breakpoints.findByQuery(change.mediaQuery); + return mergeAlias(change, bp); + }); + /** @type {?} */ + var replaceWithPrintAlias = (/** + * @param {?} change + * @return {?} + */ + function (change) { + return _this.hook.isPrintEvent(change) ? _this.hook.updateEvent(change) : change; + }); + return this.matchMedia + .activations + .map((/** + * @param {?} query + * @return {?} + */ + function (query) { return new MediaChange(true, query); })) + .map(replaceWithPrintAlias) + .map(mergeMQAlias) + .sort(sortDescendingPriority); }; - /** - * Call window.matchMedia() to build a MediaQueryList; which - * supports 0..n listeners for activation/deactivation - */ - /** - * Call window.matchMedia() to build a MediaQueryList; which - * supports 0..n listeners for activation/deactivation + MediaObserver.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ + MediaObserver.ctorParameters = function () { return [ + { type: BreakPointRegistry }, + { type: MatchMedia }, + { type: PrintHook } + ]; }; + /** @nocollapse */ MediaObserver.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function MediaObserver_Factory() { return new MediaObserver(core.ɵɵinject(BreakPointRegistry), core.ɵɵinject(MatchMedia), core.ɵɵinject(PrintHook)); }, token: MediaObserver, providedIn: "root" }); + return MediaObserver; +}()); +/** + * Find associated breakpoint (if any) + * @param {?} query + * @param {?} locator + * @return {?} + */ +function toMediaQuery(query, locator) { + /** @type {?} */ + var bp = locator.findByAlias(query) || locator.findByQuery(query); + return bp ? bp.mediaQuery : query; +} +/** + * Split each query string into separate query strings if two queries are provided as comma + * separated. + * @param {?} queries + * @return {?} + */ +function splitQueries(queries) { + return queries.map((/** * @param {?} query * @return {?} */ - ServerMatchMedia.prototype._buildMQL = /** - * Call window.matchMedia() to build a MediaQueryList; which - * supports 0..n listeners for activation/deactivation + function (query) { return query.split(','); })) + .reduce((/** + * @param {?} a1 + * @param {?} a2 + * @return {?} + */ + function (a1, a2) { return a1.concat(a2); })) + .map((/** * @param {?} query * @return {?} */ - function (query) { - return new ServerMediaQueryList(query); - }; - ServerMatchMedia.decorators = [ - { type: core.Injectable }, - ]; - /** @nocollapse */ - ServerMatchMedia.ctorParameters = function () { return [ - { type: core.NgZone }, - { type: Object, decorators: [{ type: core.Inject, args: [core.PLATFORM_ID,] }] }, - { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] } - ]; }; - return ServerMatchMedia; -}(MatchMedia)); + function (query) { return query.trim(); })); +} /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** - * MediaMonitor uses the MatchMedia service to observe mediaQuery changes (both activations and - * deactivations). These changes are are published as MediaChange notifications. - * - * Note: all notifications will be performed within the - * ng Zone to trigger change detections and component updates. - * - * It is the MediaMonitor that: - * - auto registers all known breakpoints - * - injects alias information into each raw MediaChange event - * - provides accessor to the currently active BreakPoint - * - publish list of overlapping BreakPoint(s); used by ResponsiveActivation - * @deprecated - * \@deletion-target v7.0.0-beta.21 + * Class */ -var MediaMonitor = /** @class */ (function () { - function MediaMonitor(_breakpoints, _matchMedia) { - this._breakpoints = _breakpoints; - this._matchMedia = _matchMedia; - this._registerBreakpoints(); +var MediaTrigger = /** @class */ (function () { + function MediaTrigger(breakpoints, matchMedia, layoutConfig, _platformId, _document) { + this.breakpoints = breakpoints; + this.matchMedia = matchMedia; + this.layoutConfig = layoutConfig; + this._platformId = _platformId; + this._document = _document; + this.hasCachedRegistryMatches = false; + this.originalActivations = []; + this.originalRegistry = new Map(); } - Object.defineProperty(MediaMonitor.prototype, "breakpoints", { - /** - * Read-only accessor to the list of breakpoints configured in the BreakPointRegistry provider - */ - get: /** - * Read-only accessor to the list of breakpoints configured in the BreakPointRegistry provider - * @return {?} - */ - function () { - return this._breakpoints.items.slice(); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(MediaMonitor.prototype, "activeOverlaps", { - get: /** - * @return {?} - */ - function () { - var _this = this; - return this._breakpoints.overlappings - .reverse() - .filter(function (bp) { return _this._matchMedia.isActive(bp.mediaQuery); }); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(MediaMonitor.prototype, "active", { - get: /** + /** + * Manually activate range of breakpoints + * @param list array of mediaQuery or alias strings + */ + /** + * Manually activate range of breakpoints + * @param {?} list array of mediaQuery or alias strings + * @return {?} + */ + MediaTrigger.prototype.activate = /** + * Manually activate range of breakpoints + * @param {?} list array of mediaQuery or alias strings + * @return {?} + */ + function (list) { + list = list.map((/** + * @param {?} it * @return {?} - */ - function () { - var _this = this; - /** @type {?} */ - var items = this.breakpoints.reverse(); - /** @type {?} */ - var first = items.find(function (bp) { return bp.alias !== '' && _this._matchMedia.isActive(bp.mediaQuery); }); - return first || null; - }, - enumerable: true, - configurable: true - }); + */ + function (it) { return it.trim(); })); // trim queries + this.saveActivations(); + this.deactivateAll(); + this.setActivations(list); + this.prepareAutoRestore(); + }; /** - * For the specified mediaQuery alias, is the mediaQuery range active? + * Restore original, 'real' breakpoints and emit events + * to trigger stream notification */ /** - * For the specified mediaQuery alias, is the mediaQuery range active? - * @param {?} alias + * Restore original, 'real' breakpoints and emit events + * to trigger stream notification * @return {?} */ - MediaMonitor.prototype.isActive = /** - * For the specified mediaQuery alias, is the mediaQuery range active? - * @param {?} alias + MediaTrigger.prototype.restore = /** + * Restore original, 'real' breakpoints and emit events + * to trigger stream notification * @return {?} */ - function (alias) { - /** @type {?} */ - var bp = this._breakpoints.findByAlias(alias) || this._breakpoints.findByQuery(alias); - return this._matchMedia.isActive(bp ? bp.mediaQuery : alias); + function () { + if (this.hasCachedRegistryMatches) { + /** @type {?} */ + var extractQuery = (/** + * @param {?} change + * @return {?} + */ + function (change) { return change.mediaQuery; }); + /** @type {?} */ + var list = this.originalActivations.map(extractQuery); + try { + this.deactivateAll(); + this.restoreRegistryMatches(); + this.setActivations(list); + } + finally { + this.originalActivations = []; + if (this.resizeSubscription) { + this.resizeSubscription.unsubscribe(); + } + } + } }; + // ************************************************ + // Internal Methods + // ************************************************ /** - * External observers can watch for all (or a specific) mql changes. - * If specific breakpoint is observed, only return *activated* events - * otherwise return all events for BOTH activated + deactivated changes. + * Whenever window resizes, immediately auto-restore original + * activations (if we are simulating activations) */ + // ************************************************ + // Internal Methods + // ************************************************ /** - * External observers can watch for all (or a specific) mql changes. - * If specific breakpoint is observed, only return *activated* events - * otherwise return all events for BOTH activated + deactivated changes. - * @param {?=} alias + * Whenever window resizes, immediately auto-restore original + * activations (if we are simulating activations) + * @private * @return {?} */ - MediaMonitor.prototype.observe = /** - * External observers can watch for all (or a specific) mql changes. - * If specific breakpoint is observed, only return *activated* events - * otherwise return all events for BOTH activated + deactivated changes. - * @param {?=} alias + MediaTrigger.prototype.prepareAutoRestore = + // ************************************************ + // Internal Methods + // ************************************************ + /** + * Whenever window resizes, immediately auto-restore original + * activations (if we are simulating activations) + * @private * @return {?} */ - function (alias) { - if (alias === void 0) { alias = ''; } - /** @type {?} */ - var bp = this._breakpoints.findByAlias(alias) || this._breakpoints.findByQuery(alias); + function () { /** @type {?} */ - var hasAlias = function (change) { return (bp ? change.mqAlias !== '' : true); }; + var isBrowser = common.isPlatformBrowser(this._platformId) && this._document; /** @type {?} */ - var media$ = this._matchMedia.observe(bp ? bp.mediaQuery : alias); - return media$.pipe(operators.map(function (change) { return mergeAlias(change, bp); }), operators.filter(hasAlias)); + var enableAutoRestore = isBrowser && this.layoutConfig.mediaTriggerAutoRestore; + if (enableAutoRestore) { + /** @type {?} */ + var resize$ = rxjs.fromEvent(window, 'resize').pipe(operators.take(1)); + this.resizeSubscription = resize$.subscribe(this.restore.bind(this)); + } }; /** - * Immediate calls to matchMedia() to establish listeners - * and prepare for immediate subscription notifications + * Notify all matchMedia subscribers of de-activations + * + * Note: we must force 'matches' updates for + * future matchMedia::activation lookups + */ + /** + * Notify all matchMedia subscribers of de-activations + * + * Note: we must force 'matches' updates for + * future matchMedia::activation lookups + * @private * @return {?} */ - MediaMonitor.prototype._registerBreakpoints = /** - * Immediate calls to matchMedia() to establish listeners - * and prepare for immediate subscription notifications + MediaTrigger.prototype.deactivateAll = /** + * Notify all matchMedia subscribers of de-activations + * + * Note: we must force 'matches' updates for + * future matchMedia::activation lookups + * @private * @return {?} */ function () { /** @type {?} */ - var queries = this._breakpoints.sortedItems.map(function (bp) { return bp.mediaQuery; }); - this._matchMedia.registerQuery(queries); + var list = this.currentActivations; + this.forceRegistryMatches(list, false); + this.simulateMediaChanges(list, false); }; - MediaMonitor.decorators = [ - { type: core.Injectable, args: [{ providedIn: 'root' },] }, - ]; - /** @nocollapse */ - MediaMonitor.ctorParameters = function () { return [ - { type: BreakPointRegistry }, - { type: MatchMedia } - ]; }; - /** @nocollapse */ MediaMonitor.ngInjectableDef = core.defineInjectable({ factory: function MediaMonitor_Factory() { return new MediaMonitor(core.inject(BreakPointRegistry), core.inject(MatchMedia)); }, token: MediaMonitor, providedIn: "root" }); - return MediaMonitor; -}()); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * Class internalizes a MatchMedia service and exposes an Observable interface. - * This exposes an Observable with a feature to subscribe to mediaQuery - * changes and a validator method (`isActive()`) to test if a mediaQuery (or alias) is - * currently active. - * - * !! Only mediaChange activations (not de-activations) are announced by the MediaObserver - * - * This class uses the BreakPoint Registry to inject alias information into the raw MediaChange - * notification. For custom mediaQuery notifications, alias information will not be injected and - * those fields will be ''. - * - * !! This is not an actual Observable. It is a wrapper of an Observable used to publish additional - * methods like `isActive(). To access the Observable and use RxJS operators, use - * `.media$` with syntax like mediaObserver.media$.map(....). - * - * \@usage - * - * // RxJS - * import { filter } from 'rxjs/operators'; - * import { MediaObserver } from '\@angular/flex-layout'; - * - * \@Component({ ... }) - * export class AppComponent { - * status: string = ''; - * - * constructor(mediaObserver: MediaObserver) { - * const onChange = (change: MediaChange) => { - * this.status = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : ''; - * }; - * - * // Subscribe directly or access observable to use filter/map operators - * // e.g. mediaObserver.media$.subscribe(onChange); - * - * mediaObserver.media$() - * .pipe( - * filter((change: MediaChange) => true) // silly noop filter - * ).subscribe(onChange); - * } - * } - */ -var MediaObserver = /** @class */ (function () { - function MediaObserver(breakpoints, mediaWatcher) { - this.breakpoints = breakpoints; - this.mediaWatcher = mediaWatcher; - /** - * Whether to announce gt- breakpoint activations - */ - this.filterOverlaps = true; - this._registerBreakPoints(); - this.media$ = this._buildObservable(); - } /** - * Test if specified query/alias is active. + * Cache current activations as sorted, prioritized list of MediaChanges */ /** - * Test if specified query/alias is active. - * @param {?} alias + * Cache current activations as sorted, prioritized list of MediaChanges + * @private * @return {?} */ - MediaObserver.prototype.isActive = /** - * Test if specified query/alias is active. - * @param {?} alias + MediaTrigger.prototype.saveActivations = /** + * Cache current activations as sorted, prioritized list of MediaChanges + * @private * @return {?} */ - function (alias) { - return this.mediaWatcher.isActive(this._toMediaQuery(alias)); + function () { + var _this = this; + if (!this.hasCachedRegistryMatches) { + /** @type {?} */ + var toMediaChange = (/** + * @param {?} query + * @return {?} + */ + function (query) { return new MediaChange(true, query); }); + /** @type {?} */ + var mergeMQAlias = (/** + * @param {?} change + * @return {?} + */ + function (change) { + /** @type {?} */ + var bp = _this.breakpoints.findByQuery(change.mediaQuery); + return mergeAlias(change, bp); + }); + this.originalActivations = this.currentActivations + .map(toMediaChange) + .map(mergeMQAlias) + .sort(sortDescendingPriority); + this.cacheRegistryMatches(); + } }; /** - * Register all the mediaQueries registered in the BreakPointRegistry - * This is needed so subscribers can be auto-notified of all standard, registered - * mediaQuery activations + * Force set manual activations for specified mediaQuery list + */ + /** + * Force set manual activations for specified mediaQuery list + * @private + * @param {?} list * @return {?} */ - MediaObserver.prototype._registerBreakPoints = /** - * Register all the mediaQueries registered in the BreakPointRegistry - * This is needed so subscribers can be auto-notified of all standard, registered - * mediaQuery activations + MediaTrigger.prototype.setActivations = /** + * Force set manual activations for specified mediaQuery list + * @private + * @param {?} list * @return {?} */ - function () { - /** @type {?} */ - var queries = this.breakpoints.sortedItems.map(function (bp) { return bp.mediaQuery; }); - this.mediaWatcher.registerQuery(queries); + function (list) { + if (!!this.originalRegistry) { + this.forceRegistryMatches(list, true); + } + this.simulateMediaChanges(list); }; /** - * Prepare internal observable - * - * NOTE: the raw MediaChange events [from MatchMedia] do not - * contain important alias information; as such this info - * must be injected into the MediaChange + * For specified mediaQuery list manually simulate activations or deactivations + */ + /** + * For specified mediaQuery list manually simulate activations or deactivations + * @private + * @param {?} queries + * @param {?=} matches * @return {?} */ - MediaObserver.prototype._buildObservable = /** - * Prepare internal observable - * - * NOTE: the raw MediaChange events [from MatchMedia] do not - * contain important alias information; as such this info - * must be injected into the MediaChange + MediaTrigger.prototype.simulateMediaChanges = /** + * For specified mediaQuery list manually simulate activations or deactivations + * @private + * @param {?} queries + * @param {?=} matches * @return {?} */ - function () { + function (queries, matches) { var _this = this; + if (matches === void 0) { matches = true; } /** @type {?} */ - var excludeOverlaps = function (change) { + var toMediaQuery = (/** + * @param {?} query + * @return {?} + */ + function (query) { /** @type {?} */ - var bp = _this.breakpoints.findByQuery(change.mediaQuery); - return !bp ? true : !(_this.filterOverlaps && bp.overlapping); - }; - /** - * Only pass/announce activations (not de-activations) - * Inject associated (if any) alias information into the MediaChange event - * Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only - */ - return this.mediaWatcher.observe() - .pipe(operators.filter(function (change) { return change.matches; }), operators.filter(excludeOverlaps), operators.map(function (change) { - return mergeAlias(change, _this._findByQuery(change.mediaQuery)); + var locator = _this.breakpoints; + /** @type {?} */ + var bp = locator.findByAlias(query) || locator.findByQuery(query); + return bp ? bp.mediaQuery : query; + }); + /** @type {?} */ + var emitChangeEvent = (/** + * @param {?} query + * @return {?} + */ + function (query) { return _this.emitChangeEvent(matches, query); }); + queries.map(toMediaQuery).forEach(emitChangeEvent); + }; + /** + * Replace current registry with simulated registry... + * Note: this is required since MediaQueryList::matches is 'readOnly' + */ + /** + * Replace current registry with simulated registry... + * Note: this is required since MediaQueryList::matches is 'readOnly' + * @private + * @param {?} queries + * @param {?} matches + * @return {?} + */ + MediaTrigger.prototype.forceRegistryMatches = /** + * Replace current registry with simulated registry... + * Note: this is required since MediaQueryList::matches is 'readOnly' + * @private + * @param {?} queries + * @param {?} matches + * @return {?} + */ + function (queries, matches) { + /** @type {?} */ + var registry = new Map(); + queries.forEach((/** + * @param {?} query + * @return {?} + */ + function (query) { + registry.set(query, (/** @type {?} */ ({ matches: matches }))); })); + this.matchMedia.registry = registry; }; /** - * Breakpoint locator by alias - * @param {?} alias + * Save current MatchMedia::registry items. + */ + /** + * Save current MatchMedia::registry items. + * @private * @return {?} */ - MediaObserver.prototype._findByAlias = /** - * Breakpoint locator by alias - * @param {?} alias + MediaTrigger.prototype.cacheRegistryMatches = /** + * Save current MatchMedia::registry items. + * @private * @return {?} */ - function (alias) { - return this.breakpoints.findByAlias(alias); + function () { + /** @type {?} */ + var target = this.originalRegistry; + target.clear(); + this.matchMedia.registry.forEach((/** + * @param {?} value + * @param {?} key + * @return {?} + */ + function (value, key) { + target.set(key, value); + })); + this.hasCachedRegistryMatches = true; }; /** - * Breakpoint locator by mediaQuery - * @param {?} query + * Restore original, 'true' registry + */ + /** + * Restore original, 'true' registry + * @private * @return {?} */ - MediaObserver.prototype._findByQuery = /** - * Breakpoint locator by mediaQuery - * @param {?} query + MediaTrigger.prototype.restoreRegistryMatches = /** + * Restore original, 'true' registry + * @private * @return {?} */ - function (query) { - return this.breakpoints.findByQuery(query); + function () { + /** @type {?} */ + var target = this.matchMedia.registry; + target.clear(); + this.originalRegistry.forEach((/** + * @param {?} value + * @param {?} key + * @return {?} + */ + function (value, key) { + target.set(key, value); + })); + this.originalRegistry.clear(); + this.hasCachedRegistryMatches = false; }; /** - * Find associated breakpoint (if any) + * Manually emit a MediaChange event via the MatchMedia to MediaMarshaller and MediaObserver + */ + /** + * Manually emit a MediaChange event via the MatchMedia to MediaMarshaller and MediaObserver + * @private + * @param {?} matches * @param {?} query * @return {?} */ - MediaObserver.prototype._toMediaQuery = /** - * Find associated breakpoint (if any) + MediaTrigger.prototype.emitChangeEvent = /** + * Manually emit a MediaChange event via the MatchMedia to MediaMarshaller and MediaObserver + * @private + * @param {?} matches * @param {?} query * @return {?} */ - function (query) { - /** @type {?} */ - var bp = this._findByAlias(query) || this._findByQuery(query); - return bp ? bp.mediaQuery : query; + function (matches, query) { + this.matchMedia.source.next(new MediaChange(matches, query)); }; - MediaObserver.decorators = [ + Object.defineProperty(MediaTrigger.prototype, "currentActivations", { + get: /** + * @private + * @return {?} + */ + function () { + return this.matchMedia.activations; + }, + enumerable: true, + configurable: true + }); + MediaTrigger.decorators = [ { type: core.Injectable, args: [{ providedIn: 'root' },] }, ]; /** @nocollapse */ - MediaObserver.ctorParameters = function () { return [ + MediaTrigger.ctorParameters = function () { return [ { type: BreakPointRegistry }, - { type: MatchMedia } + { type: MatchMedia }, + { type: undefined, decorators: [{ type: core.Inject, args: [LAYOUT_CONFIG,] }] }, + { type: Object, decorators: [{ type: core.Inject, args: [core.PLATFORM_ID,] }] }, + { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] } ]; }; - /** @nocollapse */ MediaObserver.ngInjectableDef = core.defineInjectable({ factory: function MediaObserver_Factory() { return new MediaObserver(core.inject(BreakPointRegistry), core.inject(MatchMedia)); }, token: MediaObserver, providedIn: "root" }); - return MediaObserver; + /** @nocollapse */ MediaTrigger.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function MediaTrigger_Factory() { return new MediaTrigger(core.ɵɵinject(BreakPointRegistry), core.ɵɵinject(MatchMedia), core.ɵɵinject(LAYOUT_CONFIG), core.ɵɵinject(core.PLATFORM_ID), core.ɵɵinject(common.DOCUMENT)); }, token: MediaTrigger, providedIn: "root" }); + return MediaTrigger; }()); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ + /** * Applies CSS prefixes to appropriate style keys. * @@ -3681,7 +3305,7 @@ function applyCssPrefixes(target) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var StyleUtils = /** @class */ (function () { function StyleUtils(_serverStylesheet, _serverModuleLoaded, _platformId, layoutConfig) { @@ -3738,9 +3362,13 @@ var StyleUtils = /** @class */ (function () { if (elements === void 0) { elements = []; } /** @type {?} */ var styles = this.layoutConfig.disableVendorPrefixes ? style : applyCssPrefixes(style); - elements.forEach(function (el) { + elements.forEach((/** + * @param {?} el + * @return {?} + */ + function (el) { _this._applyMultiValueStyleToElement(styles, el); - }); + })); }; /** * Determine the DOM element's Flexbox flow (flex-direction) @@ -3850,12 +3478,18 @@ var StyleUtils = /** @class */ (function () { } // Note: 'inline' is the default of all elements, unless UA stylesheet overrides; // in which case getComputedStyle() should determine a valid value. - return value.trim(); + return value ? value.trim() : ''; }; /** * Applies the styles to the element. The styles object map may contain an array of values * Each value will be added as element style * Keys are sorted to add prefixed styles (like -webkit-x) first, before the standard ones + */ + /** + * Applies the styles to the element. The styles object map may contain an array of values + * Each value will be added as element style + * Keys are sorted to add prefixed styles (like -webkit-x) first, before the standard ones + * @private * @param {?} styles * @param {?} element * @return {?} @@ -3864,13 +3498,18 @@ var StyleUtils = /** @class */ (function () { * Applies the styles to the element. The styles object map may contain an array of values * Each value will be added as element style * Keys are sorted to add prefixed styles (like -webkit-x) first, before the standard ones + * @private * @param {?} styles * @param {?} element * @return {?} */ function (styles, element) { var _this = this; - Object.keys(styles).sort().forEach(function (key) { + Object.keys(styles).sort().forEach((/** + * @param {?} key + * @return {?} + */ + function (key) { /** @type {?} */ var el = styles[key]; /** @type {?} */ @@ -3887,15 +3526,17 @@ var StyleUtils = /** @class */ (function () { _this._serverStylesheet.addStyleToElement(element, key, value); } } - }); + })); }; /** + * @private * @param {?} element * @param {?} styleName * @param {?=} styleValue * @return {?} */ StyleUtils.prototype._setServerStyle = /** + * @private * @param {?} element * @param {?} styleName * @param {?=} styleValue @@ -3909,11 +3550,13 @@ var StyleUtils = /** @class */ (function () { this._writeStyleAttribute(element, styleMap); }; /** + * @private * @param {?} element * @param {?} styleName * @return {?} */ StyleUtils.prototype._getServerStyle = /** + * @private * @param {?} element * @param {?} styleName * @return {?} @@ -3924,10 +3567,12 @@ var StyleUtils = /** @class */ (function () { return styleMap[styleName] || ''; }; /** + * @private * @param {?} element * @return {?} */ StyleUtils.prototype._readStyleAttribute = /** + * @private * @param {?} element * @return {?} */ @@ -3957,11 +3602,13 @@ var StyleUtils = /** @class */ (function () { return styleMap; }; /** + * @private * @param {?} element * @param {?} styleMap * @return {?} */ StyleUtils.prototype._writeStyleAttribute = /** + * @private * @param {?} element * @param {?} styleMap * @return {?} @@ -3988,13 +3635,13 @@ var StyleUtils = /** @class */ (function () { { type: Object, decorators: [{ type: core.Inject, args: [core.PLATFORM_ID,] }] }, { type: undefined, decorators: [{ type: core.Inject, args: [LAYOUT_CONFIG,] }] } ]; }; - /** @nocollapse */ StyleUtils.ngInjectableDef = core.defineInjectable({ factory: function StyleUtils_Factory() { return new StyleUtils(core.inject(StylesheetMap, 8), core.inject(SERVER_TOKEN, 8), core.inject(core.PLATFORM_ID), core.inject(LAYOUT_CONFIG)); }, token: StyleUtils, providedIn: "root" }); + /** @nocollapse */ StyleUtils.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function StyleUtils_Factory() { return new StyleUtils(core.ɵɵinject(StylesheetMap, 8), core.ɵɵinject(SERVER_TOKEN, 8), core.ɵɵinject(core.PLATFORM_ID), core.ɵɵinject(LAYOUT_CONFIG)); }, token: StyleUtils, providedIn: "root" }); return StyleUtils; }()); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * A class that encapsulates CSS style generation for common directives @@ -4041,7 +3688,7 @@ StyleBuilder = /** @class */ (function () { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @@ -4099,29 +3746,30 @@ function _validateCalcValue(calc) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * MediaMarshaller - register responsive values from directives and * trigger them based on media query events */ var MediaMarshaller = /** @class */ (function () { - function MediaMarshaller(matchMedia, breakpoints) { + function MediaMarshaller(matchMedia, breakpoints, hook) { this.matchMedia = matchMedia; this.breakpoints = breakpoints; + this.hook = hook; this.activatedBreakpoints = []; this.elementMap = new Map(); this.elementKeyMap = new WeakMap(); - this.watcherMap = new WeakMap(); - this.builderMap = new WeakMap(); - this.clearBuilderMap = new WeakMap(); + this.watcherMap = new WeakMap(); // special triggers to update elements + // special triggers to update elements + this.updateMap = new WeakMap(); // callback functions to update styles + // callback functions to update styles + this.clearMap = new WeakMap(); // callback functions to clear styles + // callback functions to clear styles this.subject = new rxjs.Subject(); - this.matchMedia - .observe() - .subscribe(this.activate.bind(this)); - this.registerBreakpoints(); + this.observeActivations(); } - Object.defineProperty(MediaMarshaller.prototype, "activatedBreakpoint", { + Object.defineProperty(MediaMarshaller.prototype, "activatedAlias", { get: /** * @return {?} */ @@ -4132,16 +3780,16 @@ var MediaMarshaller = /** @class */ (function () { configurable: true }); /** - * activate or deactivate a given breakpoint + * Update styles on breakpoint activates or deactivates * @param mc */ /** - * activate or deactivate a given breakpoint + * Update styles on breakpoint activates or deactivates * @param {?} mc * @return {?} */ - MediaMarshaller.prototype.activate = /** - * activate or deactivate a given breakpoint + MediaMarshaller.prototype.onMediaChange = /** + * Update styles on breakpoint activates or deactivates * @param {?} mc * @return {?} */ @@ -4149,14 +3797,16 @@ var MediaMarshaller = /** @class */ (function () { /** @type {?} */ var bp = this.findByQuery(mc.mediaQuery); if (bp) { + mc = mergeAlias(mc, bp); if (mc.matches && this.activatedBreakpoints.indexOf(bp) === -1) { this.activatedBreakpoints.push(bp); - this.activatedBreakpoints.sort(prioritySort); + this.activatedBreakpoints.sort(sortDescendingPriority); this.updateStyles(); } else if (!mc.matches && this.activatedBreakpoints.indexOf(bp) !== -1) { // Remove the breakpoint when it's deactivated this.activatedBreakpoints.splice(this.activatedBreakpoints.indexOf(bp), 1); + this.activatedBreakpoints.sort(sortDescendingPriority); this.updateStyles(); } } @@ -4189,9 +3839,9 @@ var MediaMarshaller = /** @class */ (function () { */ function (element, key, updateFn, clearFn, extraTriggers) { if (extraTriggers === void 0) { extraTriggers = []; } + initBuilderMap(this.updateMap, element, key, updateFn); + initBuilderMap(this.clearMap, element, key, clearFn); this.buildElementKeyMap(element, key); - initBuilderMap(this.builderMap, element, key, updateFn); - initBuilderMap(this.clearBuilderMap, element, key, clearFn); this.watchExtraTriggers(element, key, extraTriggers); }; /** @@ -4219,14 +3869,12 @@ var MediaMarshaller = /** @class */ (function () { var bpMap = this.elementMap.get(element); if (bpMap) { /** @type {?} */ - var values = bp !== undefined ? bpMap.get(bp) : this.getFallback(bpMap, key); + var values = bp !== undefined ? bpMap.get(bp) : this.getActivatedValues(bpMap, key); if (values) { - /** @type {?} */ - var value = values.get(key); - return value !== undefined ? value : ''; + return values.get(key); } } - return ''; + return undefined; }; /** * whether the element has values for a given key @@ -4250,7 +3898,7 @@ var MediaMarshaller = /** @class */ (function () { var bpMap = this.elementMap.get(element); if (bpMap) { /** @type {?} */ - var values = this.getFallback(bpMap, key); + var values = this.getActivatedValues(bpMap, key); if (values) { return values.get(key) !== undefined || false; } @@ -4293,7 +3941,11 @@ var MediaMarshaller = /** @class */ (function () { bpMap.set(bp, values); this.elementMap.set(element, bpMap); } - this.updateElement(element, key, this.getValue(element, key)); + /** @type {?} */ + var value = this.getValue(element, key); + if (value !== undefined) { + this.updateElement(element, key, value); + } }; /** Track element value changes for a specific key */ /** @@ -4309,8 +3961,13 @@ var MediaMarshaller = /** @class */ (function () { * @return {?} */ function (element, key) { - return this.subject.asObservable() - .pipe(operators.filter(function (v) { return v.element === element && v.key === key; })); + return this.subject + .asObservable() + .pipe(operators.filter((/** + * @param {?} v + * @return {?} + */ + function (v) { return v.element === element && v.key === key; }))); }; /** update all styles for all elements on the current breakpoint */ /** @@ -4323,30 +3980,43 @@ var MediaMarshaller = /** @class */ (function () { */ function () { var _this = this; - this.elementMap.forEach(function (bpMap, el) { + this.elementMap.forEach((/** + * @param {?} bpMap + * @param {?} el + * @return {?} + */ + function (bpMap, el) { /** @type {?} */ - var valueMap = _this.getFallback(bpMap); + var keyMap = new Set((/** @type {?} */ (_this.elementKeyMap.get(el)))); /** @type {?} */ - var keyMap = new Set(/** @type {?} */ ((_this.elementKeyMap.get(el)))); + var valueMap = _this.getActivatedValues(bpMap); if (valueMap) { - valueMap.forEach(function (v, k) { + valueMap.forEach((/** + * @param {?} v + * @param {?} k + * @return {?} + */ + function (v, k) { _this.updateElement(el, k, v); keyMap.delete(k); - }); + })); } - keyMap.forEach(function (k) { - /** @type {?} */ - var fallbackMap = _this.getFallback(bpMap, k); - if (fallbackMap) { + keyMap.forEach((/** + * @param {?} k + * @return {?} + */ + function (k) { + valueMap = _this.getActivatedValues(bpMap, k); + if (valueMap) { /** @type {?} */ - var value = fallbackMap.get(k); + var value = valueMap.get(k); _this.updateElement(el, k, value); } else { _this.clearElement(el, k); } - }); - }); + })); + })); }; /** * clear the styles for a given element @@ -4367,12 +4037,12 @@ var MediaMarshaller = /** @class */ (function () { */ function (element, key) { /** @type {?} */ - var builders = this.clearBuilderMap.get(element); + var builders = this.clearMap.get(element); if (builders) { /** @type {?} */ - var builder = builders.get(key); - if (builder) { - builder(); + var clearFn = (/** @type {?} */ (builders.get(key))); + if (!!clearFn) { + clearFn(); this.subject.next({ element: element, key: key, value: '' }); } } @@ -4399,12 +4069,12 @@ var MediaMarshaller = /** @class */ (function () { */ function (element, key, value) { /** @type {?} */ - var builders = this.builderMap.get(element); + var builders = this.updateMap.get(element); if (builders) { /** @type {?} */ - var builder = builders.get(key); - if (builder) { - builder(value); + var updateFn = (/** @type {?} */ (builders.get(key))); + if (!!updateFn) { + updateFn(value); this.subject.next({ element: element, key: key, value: value }); } } @@ -4427,24 +4097,75 @@ var MediaMarshaller = /** @class */ (function () { /** @type {?} */ var watcherMap = this.watcherMap.get(element); if (watcherMap) { - watcherMap.forEach(function (s) { return s.unsubscribe(); }); + watcherMap.forEach((/** + * @param {?} s + * @return {?} + */ + function (s) { return s.unsubscribe(); })); this.watcherMap.delete(element); } /** @type {?} */ var elementMap = this.elementMap.get(element); if (elementMap) { - elementMap.forEach(function (_, s) { return elementMap.delete(s); }); + elementMap.forEach((/** + * @param {?} _ + * @param {?} s + * @return {?} + */ + function (_, s) { return elementMap.delete(s); })); this.elementMap.delete(element); } }; + /** + * trigger an update for a given element and key (e.g. layout) + * @param element + * @param key + */ + /** + * trigger an update for a given element and key (e.g. layout) + * @param {?} element + * @param {?=} key + * @return {?} + */ + MediaMarshaller.prototype.triggerUpdate = /** + * trigger an update for a given element and key (e.g. layout) + * @param {?} element + * @param {?=} key + * @return {?} + */ + function (element, key) { + var _this = this; + /** @type {?} */ + var bpMap = this.elementMap.get(element); + if (bpMap) { + /** @type {?} */ + var valueMap = this.getActivatedValues(bpMap, key); + if (valueMap) { + if (key) { + this.updateElement(element, key, valueMap.get(key)); + } + else { + valueMap.forEach((/** + * @param {?} v + * @param {?} k + * @return {?} + */ + function (v, k) { return _this.updateElement(element, k, v); })); + } + } + } + }; + /** Cross-reference for HTMLElement with directive key */ /** * Cross-reference for HTMLElement with directive key + * @private * @param {?} element * @param {?} key * @return {?} */ MediaMarshaller.prototype.buildElementKeyMap = /** * Cross-reference for HTMLElement with directive key + * @private * @param {?} element * @param {?} key * @return {?} @@ -4463,6 +4184,13 @@ var MediaMarshaller = /** @class */ (function () { * - directionality * - layout changes * - mutationobserver updates + */ + /** + * Other triggers that should force style updates: + * - directionality + * - layout changes + * - mutationobserver updates + * @private * @param {?} element * @param {?} key * @param {?} triggers @@ -4473,6 +4201,7 @@ var MediaMarshaller = /** @class */ (function () { * - directionality * - layout changes * - mutationobserver updates + * @private * @param {?} element * @param {?} key * @param {?} triggers @@ -4491,22 +4220,28 @@ var MediaMarshaller = /** @class */ (function () { var subscription = watchers.get(key); if (!subscription) { /** @type {?} */ - var newSubscription = rxjs.merge.apply(void 0, triggers).subscribe(function () { + var newSubscription = rxjs.merge.apply(void 0, triggers).subscribe((/** + * @return {?} + */ + function () { /** @type {?} */ var currentValue = _this.getValue(element, key); _this.updateElement(element, key, currentValue); - }); + })); watchers.set(key, newSubscription); } } }; + /** Breakpoint locator by mediaQuery */ /** * Breakpoint locator by mediaQuery + * @private * @param {?} query * @return {?} */ MediaMarshaller.prototype.findByQuery = /** * Breakpoint locator by mediaQuery + * @private * @param {?} query * @return {?} */ @@ -4515,12 +4250,19 @@ var MediaMarshaller = /** @class */ (function () { }; /** * get the fallback breakpoint for a given element, starting with the current breakpoint + * @param bpMap + * @param key + */ + /** + * get the fallback breakpoint for a given element, starting with the current breakpoint + * @private * @param {?} bpMap * @param {?=} key * @return {?} */ - MediaMarshaller.prototype.getFallback = /** + MediaMarshaller.prototype.getActivatedValues = /** * get the fallback breakpoint for a given element, starting with the current breakpoint + * @private * @param {?} bpMap * @param {?=} key * @return {?} @@ -4537,18 +4279,36 @@ var MediaMarshaller = /** @class */ (function () { } } } - return bpMap.get(''); + /** @type {?} */ + var lastHope = bpMap.get(''); + return (key === undefined || lastHope && lastHope.has(key)) ? lastHope : undefined; }; /** + * Watch for mediaQuery breakpoint activations + */ + /** + * Watch for mediaQuery breakpoint activations + * @private * @return {?} */ - MediaMarshaller.prototype.registerBreakpoints = /** + MediaMarshaller.prototype.observeActivations = /** + * Watch for mediaQuery breakpoint activations + * @private * @return {?} */ function () { /** @type {?} */ - var queries = this.breakpoints.sortedItems.map(function (bp) { return bp.mediaQuery; }); - this.matchMedia.registerQuery(queries); + var target = (/** @type {?} */ ((/** @type {?} */ (this)))); + /** @type {?} */ + var queries = this.breakpoints.items.map((/** + * @param {?} bp + * @return {?} + */ + function (bp) { return bp.mediaQuery; })); + this.matchMedia + .observe(this.hook.withPrintQuery(queries)) + .pipe(operators.tap(this.hook.interceptEvents(target)), operators.filter(this.hook.blockPropagation())) + .subscribe(this.onMediaChange.bind(this)); }; MediaMarshaller.decorators = [ { type: core.Injectable, args: [{ providedIn: 'root' },] }, @@ -4556,9 +4316,10 @@ var MediaMarshaller = /** @class */ (function () { /** @nocollapse */ MediaMarshaller.ctorParameters = function () { return [ { type: MatchMedia }, - { type: BreakPointRegistry } + { type: BreakPointRegistry }, + { type: PrintHook } ]; }; - /** @nocollapse */ MediaMarshaller.ngInjectableDef = core.defineInjectable({ factory: function MediaMarshaller_Factory() { return new MediaMarshaller(core.inject(MatchMedia), core.inject(BreakPointRegistry)); }, token: MediaMarshaller, providedIn: "root" }); + /** @nocollapse */ MediaMarshaller.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function MediaMarshaller_Factory() { return new MediaMarshaller(core.ɵɵinject(MatchMedia), core.ɵɵinject(BreakPointRegistry), core.ɵɵinject(PrintHook)); }, token: MediaMarshaller, providedIn: "root" }); return MediaMarshaller; }()); /** @@ -4580,43 +4341,37 @@ function initBuilderMap(map$$1, element, key, input) { } } +exports.ɵMatchMedia = MatchMedia; +exports.ɵMockMatchMedia = MockMatchMedia; +exports.ɵMockMatchMediaProvider = MockMatchMediaProvider; +exports.CoreModule = CoreModule; exports.removeStyles = removeStyles; exports.BROWSER_PROVIDER = BROWSER_PROVIDER; exports.CLASS_NAME = CLASS_NAME; -exports.CoreModule = CoreModule; exports.MediaChange = MediaChange; exports.StylesheetMap = StylesheetMap; exports.DEFAULT_CONFIG = DEFAULT_CONFIG; exports.LAYOUT_CONFIG = LAYOUT_CONFIG; exports.SERVER_TOKEN = SERVER_TOKEN; exports.BREAKPOINT = BREAKPOINT; -exports.BaseDirective = BaseDirective; -exports.BaseDirectiveAdapter = BaseDirectiveAdapter; +exports.mergeAlias = mergeAlias; exports.BaseDirective2 = BaseDirective2; -exports.prioritySort = prioritySort; -exports.RESPONSIVE_ALIASES = RESPONSIVE_ALIASES; exports.DEFAULT_BREAKPOINTS = DEFAULT_BREAKPOINTS; exports.ScreenTypes = ScreenTypes; exports.ORIENTATION_BREAKPOINTS = ORIENTATION_BREAKPOINTS; exports.BreakPointRegistry = BreakPointRegistry; exports.BREAKPOINTS = BREAKPOINTS; -exports.MatchMedia = MatchMedia; -exports.MockMatchMedia = MockMatchMedia; -exports.MockMediaQueryList = MockMediaQueryList; -exports.MockMatchMediaProvider = MockMatchMediaProvider; -exports.ServerMediaQueryList = ServerMediaQueryList; -exports.ServerMatchMedia = ServerMatchMedia; -exports.MediaMonitor = MediaMonitor; -exports.ObservableMedia = ObservableMedia; -exports.MediaService = MediaService; -exports.ObservableMediaProvider = ObservableMediaProvider; exports.MediaObserver = MediaObserver; -exports.KeyOptions = KeyOptions; -exports.ResponsiveActivation = ResponsiveActivation; +exports.MediaTrigger = MediaTrigger; +exports.sortDescendingPriority = sortDescendingPriority; +exports.sortAscendingPriority = sortAscendingPriority; +exports.coerceArray = coerceArray; exports.StyleUtils = StyleUtils; exports.StyleBuilder = StyleBuilder; exports.validateBasis = validateBasis; exports.MediaMarshaller = MediaMarshaller; +exports.BREAKPOINT_PRINT = BREAKPOINT_PRINT; +exports.PrintHook = PrintHook; Object.defineProperty(exports, '__esModule', { value: true }); diff --git a/bundles/flex-layout-core.umd.js.map b/bundles/flex-layout-core.umd.js.map index e0a2ee757..5a9718546 100644 --- a/bundles/flex-layout-core.umd.js.map +++ b/bundles/flex-layout-core.umd.js.map @@ -1 +1 @@ -{"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-observer/media-observer.ts","../../src/lib/core/media-monitor/media-monitor.ts","../../src/lib/core/match-media/server-match-media.ts","../../src/lib/core/match-media/mock/mock-match-media.ts","../../src/lib/core/base/base2.ts","../../src/lib/core/base/base-adapter.ts","../../src/lib/core/base/base.ts","../../src/lib/core/responsive-activation/responsive-activation.ts","../../src/lib/utils/layout-validator.ts","../../src/lib/core/tokens/server-token.ts","../../src/lib/core/stylesheet-map/stylesheet-map.ts","../../src/lib/core/module.ts","../../src/lib/core/observable-media/observable-media.ts","../../src/lib/core/add-alias.ts","../../src/lib/core/match-media/match-media.ts","../../src/lib/core/media-change.ts","../../src/lib/core/breakpoints/break-point-registry.ts","../../src/lib/core/breakpoints/break-points-token.ts","../../src/lib/core/tokens/library-config.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/tokens/breakpoint-token.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';\nimport {merge, Observable, Subject, Subscription} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nimport {BreakPoint} from '../breakpoints/break-point';\nimport {prioritySort} from '../breakpoints/breakpoint-tools';\nimport {BreakPointRegistry} from '../breakpoints/break-point-registry';\nimport {MatchMedia} from '../match-media/match-media';\nimport {MediaChange} from '../media-change';\n\ntype Builder = Function;\ntype ClearCallback = () => void;\ntype UpdateCallback = (val: any) => void;\ntype ValueMap = Map;\ntype BreakpointMap = Map;\ntype ElementMap = Map;\ntype ElementKeyMap = WeakMap>;\ntype SubscriptionMap = Map;\ntype WatcherMap = WeakMap;\ntype BuilderMap = WeakMap>;\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 // registry of special triggers to update elements\n private watcherMap: WatcherMap = new WeakMap();\n private builderMap: BuilderMap = new WeakMap();\n private clearBuilderMap: BuilderMap = new WeakMap();\n private subject: Subject = new Subject();\n\n get activatedBreakpoint(): string {\n return this.activatedBreakpoints[0] ? this.activatedBreakpoints[0].alias : '';\n }\n\n constructor(protected matchMedia: MatchMedia,\n protected breakpoints: BreakPointRegistry) {\n this.matchMedia\n .observe()\n .subscribe(this.activate.bind(this));\n this.registerBreakpoints();\n }\n\n /**\n * activate or deactivate a given breakpoint\n * @param mc\n */\n activate(mc: MediaChange) {\n const bp: BreakPoint | null = this.findByQuery(mc.mediaQuery);\n if (bp) {\n if (mc.matches && this.activatedBreakpoints.indexOf(bp) === -1) {\n this.activatedBreakpoints.push(bp);\n this.activatedBreakpoints.sort(prioritySort);\n this.updateStyles();\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.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[] = []): void {\n this.buildElementKeyMap(element, key);\n initBuilderMap(this.builderMap, element, key, updateFn);\n initBuilderMap(this.clearBuilderMap, element, key, clearFn);\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.getFallback(bpMap, key);\n if (values) {\n const value = values.get(key);\n return value !== undefined ? value : '';\n }\n }\n return '';\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.getFallback(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 this.updateElement(element, key, this.getValue(element, key));\n }\n\n /** Track element value changes for a specific key */\n trackValue(element: HTMLElement, key: string): Observable {\n return this.subject.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 valueMap = this.getFallback(bpMap);\n const keyMap = new Set(this.elementKeyMap.get(el)!);\n if (valueMap) {\n valueMap.forEach((v, k) => {\n this.updateElement(el, k, v);\n keyMap.delete(k);\n });\n }\n keyMap.forEach(k => {\n const fallbackMap = this.getFallback(bpMap, k);\n if (fallbackMap) {\n const value = fallbackMap.get(k);\n this.updateElement(el, k, value);\n } else {\n this.clearElement(el, k);\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.clearBuilderMap.get(element);\n if (builders) {\n const builder: Builder | undefined = builders.get(key);\n if (builder) {\n builder();\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.builderMap.get(element);\n if (builders) {\n const builder: Builder | undefined = builders.get(key);\n if (builder) {\n builder(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 /** 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[]) {\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 getFallback(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)) {\n return valueMap;\n }\n }\n }\n return bpMap.get('');\n }\n\n private registerBreakpoints() {\n const queries = this.breakpoints.sortedItems.map(bp => bp.mediaQuery);\n this.matchMedia.registerQuery(queries);\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 * @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, Optional, 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(@Optional() private _serverStylesheet: StylesheetMap,\n @Optional() @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 /**\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.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 {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {BreakPointRegistry} from '../breakpoints/break-point-registry';\nimport {MediaChange} from '../media-change';\nimport {MatchMedia} from '../match-media/match-media';\nimport {mergeAlias} from '../add-alias';\n\n/**\n * Class internalizes a MatchMedia service and exposes an Observable interface.\n\n * This exposes an Observable with a feature to subscribe to mediaQuery\n * changes and a validator method (`isActive()`) to test if a mediaQuery (or alias) is\n * currently active.\n *\n * !! Only mediaChange activations (not de-activations) are announced by the MediaObserver\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 * !! This is not an actual Observable. It is a wrapper of an Observable used to publish additional\n * methods like `isActive(). To access the Observable and use RxJS operators, use\n * `.media$` with syntax like mediaObserver.media$.map(....).\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 onChange = (change: MediaChange) => {\n * this.status = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : '';\n * };\n *\n * // Subscribe directly or access observable to use filter/map operators\n * // e.g. mediaObserver.media$.subscribe(onChange);\n *\n * mediaObserver.media$()\n * .pipe(\n * filter((change: MediaChange) => true) // silly noop filter\n * ).subscribe(onChange);\n * }\n * }\n */\n@Injectable({providedIn: 'root'})\nexport class MediaObserver {\n /**\n * Whether to announce gt- breakpoint activations\n */\n filterOverlaps = true;\n readonly media$: Observable;\n\n constructor(private breakpoints: BreakPointRegistry, private mediaWatcher: MatchMedia) {\n this._registerBreakPoints();\n this.media$ = this._buildObservable();\n }\n\n /**\n * Test if specified query/alias is active.\n */\n isActive(alias: string): boolean {\n return this.mediaWatcher.isActive(this._toMediaQuery(alias));\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 _registerBreakPoints() {\n const queries = this.breakpoints.sortedItems.map(bp => bp.mediaQuery);\n this.mediaWatcher.registerQuery(queries);\n }\n\n /**\n * Prepare internal observable\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() {\n const excludeOverlaps = (change: MediaChange) => {\n const bp = this.breakpoints.findByQuery(change.mediaQuery);\n return !bp ? true : !(this.filterOverlaps && bp.overlapping);\n };\n\n /**\n * Only pass/announce activations (not de-activations)\n * Inject associated (if any) alias information into the MediaChange event\n * Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only\n */\n return this.mediaWatcher.observe()\n .pipe(\n filter(change => change.matches),\n filter(excludeOverlaps),\n map((change: MediaChange) =>\n mergeAlias(change, this._findByQuery(change.mediaQuery))\n )\n );\n }\n\n /**\n * Breakpoint locator by alias\n */\n private _findByAlias(alias: string) {\n return this.breakpoints.findByAlias(alias);\n }\n\n /**\n * Breakpoint locator by mediaQuery\n */\n private _findByQuery(query: string) {\n return this.breakpoints.findByQuery(query);\n }\n\n /**\n * Find associated breakpoint (if any)\n */\n private _toMediaQuery(query: string) {\n const bp = this._findByAlias(query) || this._findByQuery(query);\n return bp ? bp.mediaQuery : query;\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} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {BreakPoint} from '../breakpoints/break-point';\nimport {BreakPointRegistry} from '../breakpoints/break-point-registry';\nimport {MatchMedia} from '../match-media/match-media';\nimport {MediaChange} from '../media-change';\nimport {mergeAlias} from '../add-alias';\n\n\n/**\n * MediaMonitor uses the MatchMedia service to observe mediaQuery changes (both activations and\n * deactivations). These changes are are published as MediaChange notifications.\n *\n * Note: all notifications will be performed within the\n * ng Zone to trigger change detections and component updates.\n *\n * It is the MediaMonitor that:\n * - auto registers all known breakpoints\n * - injects alias information into each raw MediaChange event\n * - provides accessor to the currently active BreakPoint\n * - publish list of overlapping BreakPoint(s); used by ResponsiveActivation\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\n@Injectable({providedIn: 'root'})\nexport class MediaMonitor {\n constructor(private _breakpoints: BreakPointRegistry, private _matchMedia: MatchMedia) {\n this._registerBreakpoints();\n }\n\n /**\n * Read-only accessor to the list of breakpoints configured in the BreakPointRegistry provider\n */\n get breakpoints(): BreakPoint[] {\n return [...this._breakpoints.items];\n }\n\n get activeOverlaps(): BreakPoint[] {\n return this._breakpoints.overlappings\n .reverse()\n .filter(bp => this._matchMedia.isActive(bp.mediaQuery));\n }\n\n get active(): BreakPoint | null {\n const items = this.breakpoints.reverse();\n const first = items.find(bp => bp.alias !== '' && this._matchMedia.isActive(bp.mediaQuery));\n return first || null;\n }\n\n /**\n * For the specified mediaQuery alias, is the mediaQuery range active?\n */\n isActive(alias: string): boolean {\n const bp = this._breakpoints.findByAlias(alias) || this._breakpoints.findByQuery(alias);\n return this._matchMedia.isActive(bp ? bp.mediaQuery : alias);\n }\n\n /**\n * External observers can watch for all (or a specific) mql changes.\n * If specific breakpoint is observed, only return *activated* events\n * otherwise return all events for BOTH activated + deactivated changes.\n */\n observe(alias: string = ''): Observable {\n const bp = this._breakpoints.findByAlias(alias) || this._breakpoints.findByQuery(alias);\n const hasAlias = (change: MediaChange) => (bp ? change.mqAlias !== '' : true);\n // Note: the raw MediaChange events [from MatchMedia] do not contain important alias information\n\n const media$ = this._matchMedia.observe(bp ? bp.mediaQuery : alias);\n return media$.pipe(\n map(change => mergeAlias(change, bp)),\n filter(hasAlias)\n );\n }\n\n /**\n * Immediate calls to matchMedia() to establish listeners\n * and prepare for immediate subscription notifications\n */\n private _registerBreakpoints() {\n const queries = this._breakpoints.sortedItems.map(bp => bp.mediaQuery);\n this._matchMedia.registerQuery(queries);\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 {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable, NgZone, PLATFORM_ID} from '@angular/core';\n\nimport {BreakPoint} from '../breakpoints/break-point';\nimport {MatchMedia} from './match-media';\n\n/**\n * Special server-only class to simulate a MediaQueryList and\n * - supports manual activation to simulate mediaQuery matching\n * - manages listeners\n */\nexport class ServerMediaQueryList 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 * 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(): ServerMediaQueryList {\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(null, this);\n });\n }\n return this;\n }\n\n /** Notify all listeners that 'matches === false' */\n deactivate(): ServerMediaQueryList {\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(null, this);\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(null, this);\n }\n }\n\n /** Don't need to remove listeners in the server environment */\n removeListener(_: EventListenerOrEventListenerObject | null) {\n }\n\n addEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | AddEventListenerOptions): void;\n addEventListener(_: string,\n __: EventListenerOrEventListenerObject,\n ___?: boolean | AddEventListenerOptions) {\n }\n\n removeEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | EventListenerOptions): void;\n removeEventListener(_: 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 * Special server-only implementation of MatchMedia that uses the above\n * ServerMediaQueryList as its internal representation\n *\n * Also contains methods to activate and deactivate breakpoints\n */\n@Injectable()\nexport class ServerMatchMedia extends MatchMedia {\n protected _registry: Map = new Map();\n\n constructor(protected _zone: NgZone,\n @Inject(PLATFORM_ID) protected _platformId: Object,\n @Inject(DOCUMENT) protected _document: any) {\n super(_zone, _platformId, _document);\n }\n\n /** Activate the specified breakpoint if we're on the server, no-op otherwise */\n activateBreakpoint(bp: BreakPoint) {\n const lookupBreakpoint = this._registry.get(bp.mediaQuery);\n if (lookupBreakpoint) {\n lookupBreakpoint.activate();\n }\n }\n\n /** Deactivate the specified breakpoint if we're on the server, no-op otherwise */\n deactivateBreakpoint(bp: BreakPoint) {\n const lookupBreakpoint = this._registry.get(bp.mediaQuery);\n if (lookupBreakpoint) {\n lookupBreakpoint.deactivate();\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): ServerMediaQueryList {\n return new ServerMediaQueryList(query);\n }\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, 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 /** Special flag used to test BreakPoint registrations with MatchMedia */\n autoRegisterQueries = true;\n\n /**\n * Allow fallback to overlapping mediaQueries to determine\n * activatedInput(s).\n */\n useOverlaps = false;\n\n protected _registry: Map = new Map();\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: MockMediaQueryList) => {\n mql.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 activate 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- 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 activate of overlapping gt- 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 // 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.split(',').forEach(alias => activate(alias.trim()));\n }\n\n /**\n *\n */\n private _activateByQuery(mediaQuery: string) {\n const mql = this._registry.get(mediaQuery);\n const alreadyAdded = this._actives\n .reduce((found, it) => (found || (mql ? (it.media === mql.media) : false)), false);\n\n if (mql && !alreadyAdded) {\n this._actives.push(mql.activate());\n }\n return this.hasActivated;\n }\n\n /** Deactivate all current Mock MQLs */\n private _deactivateAll() {\n if (this._actives.length) {\n // Deactivate all current MQLs and reset the buffer\n for (const it of this._actives) {\n it.deactivate();\n }\n this._actives = [];\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._actives.length > 0;\n }\n\n private _actives: MockMediaQueryList[] = [];\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 * 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(null, this);\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(null, this);\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(null, this);\n }\n }\n\n /** Don't need to remove listeners in the testing environment */\n removeListener(_: EventListenerOrEventListenerObject | null) {\n }\n\n addEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | AddEventListenerOptions): void;\n addEventListener(_: string,\n __: EventListenerOrEventListenerObject,\n ___?: boolean | AddEventListenerOptions) {\n }\n\n removeEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | EventListenerOptions): void;\n removeEventListener(_: 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 {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 = new Subject();\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.activatedBreakpoint);\n }\n\n /** Cache map for style computation */\n protected styleCache: Map = 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[] = []): 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 const val = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY);\n this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, val);\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 /** 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 this.addStyles(input);\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} from '@angular/core';\n\nimport {BaseDirective} from './base';\nimport {ResponsiveActivation} from '../responsive-activation/responsive-activation';\nimport {MediaQuerySubscriber} from '../media-change';\nimport {MediaMonitor} from '../media-monitor/media-monitor';\nimport {StyleUtils} from '../style-utils/style-utils';\n\n\n/**\n * Adapter to the BaseDirective abstract class so it can be used via composition.\n * @see BaseDirective\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport class BaseDirectiveAdapter extends BaseDirective {\n\n /**\n * Accessor to determine which @Input property is \"active\"\n * e.g. which property value will be used.\n */\n get activeKey() {\n let mqa = this._mqActivation;\n let key = mqa ? mqa.activatedInputKey : this._baseKey;\n // Note: ClassDirective::SimpleChanges uses 'klazz' instead of 'class' as a key\n return (key === 'class') ? 'klazz' : key;\n }\n\n /** Hash map of all @Input keys/values defined/used */\n get inputMap() {\n return this._inputMap;\n }\n\n /**\n * @see BaseDirective._mqActivation\n */\n get mqActivation(): ResponsiveActivation {\n return this._mqActivation!;\n }\n\n /**\n * BaseDirectiveAdapter constructor\n */\n constructor(protected _baseKey: string, // non-responsive @Input property name\n protected _mediaMonitor: MediaMonitor,\n protected _elementRef: ElementRef,\n protected _styler: StyleUtils) {\n super(_mediaMonitor, _elementRef, _styler);\n }\n\n /**\n * Does this directive have 1 or more responsive keys defined\n * Note: we exclude the 'baseKey' key (which is NOT considered responsive)\n */\n hasResponsiveAPI() {\n return super.hasResponsiveAPI(this._baseKey);\n }\n\n /**\n * @see BaseDirective._queryInput\n */\n queryInput(key: string | null) {\n return key ? this._queryInput(key) : undefined;\n }\n\n /**\n * Save the property value.\n */\n cacheInput(key?: string, source?: any, cacheRaw = false) {\n if (cacheRaw) {\n this._cacheInputRaw(key, source);\n } else if (Array.isArray(source)) {\n this._cacheInputArray(key, source);\n } else if (typeof source === 'object') {\n this._cacheInputObject(key, source);\n } else if (typeof source === 'string') {\n this._cacheInputString(key, source);\n } else {\n throw new Error(\n `Invalid class value '${key}' provided. Did you want to cache the raw value?`\n );\n }\n }\n\n /**\n * @see BaseDirective._listenForMediaQueryChanges\n */\n listenForMediaQueryChanges(key: string,\n defaultValue: any,\n onMediaQueryChange: MediaQuerySubscriber): ResponsiveActivation {\n return this._listenForMediaQueryChanges(key, defaultValue, onMediaQueryChange);\n }\n\n // ************************************************************\n // Protected Methods\n // ************************************************************\n\n /**\n * No implicit transforms of the source.\n * Required when caching values expected later for KeyValueDiffers\n */\n protected _cacheInputRaw(key?: string, source?: any) {\n if (key) {\n this._inputMap[key] = source;\n }\n }\n\n /**\n * Save the property value for Array values.\n */\n protected _cacheInputArray(key = '', source?: boolean[]) {\n this._inputMap[key] = source ? source.join(' ') : '';\n }\n\n /**\n * Save the property value for key/value pair values.\n */\n protected _cacheInputObject(key = '', source?: { [key: string]: boolean }) {\n let classes: string[] = [];\n if (source) {\n for (let prop in source) {\n if (!!source[prop]) {\n classes.push(prop);\n }\n }\n }\n this._inputMap[key] = classes.join(' ');\n }\n\n /**\n * Save the property value for string values.\n */\n protected _cacheInputString(key = '', source?: string) {\n this._inputMap[key] = source;\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 {\n ElementRef,\n OnDestroy,\n SimpleChanges,\n OnChanges,\n SimpleChange,\n} from '@angular/core';\n\nimport {buildLayoutCSS} from '../../utils/layout-validator';\nimport {\n StyleDefinition,\n StyleUtils,\n} from '../style-utils/style-utils';\nimport {ResponsiveActivation, KeyOptions} from '../responsive-activation/responsive-activation';\nimport {MediaMonitor} from '../media-monitor/media-monitor';\nimport {MediaQuerySubscriber} from '../media-change';\nimport {StyleBuilder} from '../style-builder/style-builder';\n\n/**\n * Abstract base class for the Layout API styling directives.\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport abstract class BaseDirective implements OnDestroy, OnChanges {\n\n /**\n * Imperatively determine the current activated [input] value;\n * if called before ngOnInit() this will return `undefined`\n */\n get activatedValue(): string | number {\n return this._mqActivation ? this._mqActivation.activatedInput : undefined;\n }\n\n /**\n * Change the currently activated input value and force-update\n * the injected CSS (by-passing change detection).\n *\n * NOTE: Only the currently activated input value will be modified;\n * other input values will NOT be affected.\n */\n set activatedValue(value: string | number) {\n let key = 'baseKey', previousVal;\n\n if (this._mqActivation) {\n key = this._mqActivation.activatedInputKey;\n previousVal = this._inputMap[key];\n this._inputMap[key] = value;\n }\n const change = new SimpleChange(previousVal, value, false);\n\n this.ngOnChanges({[key]: change} as SimpleChanges);\n }\n\n protected constructor(protected _mediaMonitor: MediaMonitor,\n protected _elementRef: ElementRef,\n protected _styler: StyleUtils,\n protected _styleBuilder?: StyleBuilder) {\n }\n\n /**\n * Does this directive have 1 or more responsive keys defined\n * Note: we exclude the 'baseKey' key (which is NOT considered responsive)\n */\n hasResponsiveAPI(baseKey: string) {\n const totalKeys = Object.keys(this._inputMap).length;\n const baseValue = this._inputMap[baseKey];\n return (totalKeys - (!!baseValue ? 1 : 0)) > 0;\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n /**\n * Use post-component-initialization event to perform extra\n * querying such as computed Display style\n */\n ngOnInit() {\n this._hasInitialized = true;\n }\n\n ngOnChanges(change: SimpleChanges) {\n throw new Error(`BaseDirective::ngOnChanges should be overridden in subclass: ${change}`);\n }\n\n ngOnDestroy() {\n if (this._mqActivation) {\n this._mqActivation.destroy();\n }\n delete this._mediaMonitor;\n }\n\n // *********************************************\n // Protected Methods\n // *********************************************\n\n /** Access to host element's parent DOM node */\n protected get parentElement(): any {\n return this._elementRef.nativeElement.parentNode;\n }\n\n protected get nativeElement(): HTMLElement {\n return this._elementRef.nativeElement;\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._applyStyleToElement(genStyles);\n builder.sideEffect(input, genStyles, parent);\n }\n\n /** Access the current value (if any) of the @Input property */\n protected _queryInput(key: string) {\n return this._inputMap[key];\n }\n\n /**\n * Was the directive's default selector used ?\n * If not, use the fallback value!\n */\n protected _getDefaultVal(key: string, fallbackVal: any): string | boolean {\n const val = this._queryInput(key);\n const hasDefaultVal = (val !== undefined && val !== null);\n return (hasDefaultVal && val !== '') ? val : fallbackVal;\n }\n\n /**\n * Quick accessor to the current HTMLElement's `display` style\n * Note: this allows us to preserve the original style\n * and optional restore it when the mediaQueries deactivate\n */\n protected _getDisplayStyle(source: HTMLElement = this.nativeElement): string {\n const query = 'display';\n return this._styler.lookupStyle(source, query);\n }\n\n /** Quick accessor to raw attribute value on the target DOM element */\n protected _getAttributeValue(attribute: string,\n source: HTMLElement = this.nativeElement): string {\n return this._styler.lookupAttributeValue(source, attribute);\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 let [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 /** 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 /** Applies styles given via string pair or object map to the directive's element */\n protected _applyStyleToElements(style: StyleDefinition, elements: HTMLElement[]) {\n this._styler.applyStyleToElements(style, elements);\n }\n\n /**\n * Save the property value; which may be a complex object.\n * Complex objects support property chains\n */\n protected _cacheInput(key?: string, source?: any) {\n if (typeof source === 'object') {\n for (let prop in source) {\n this._inputMap[prop] = source[prop];\n }\n } else {\n if (!!key) {\n this._inputMap[key] = source;\n }\n }\n }\n\n /**\n * Build a ResponsiveActivation object used to manage subscriptions to mediaChange notifications\n * and intelligent lookup of the directive's property value that corresponds to that mediaQuery\n * (or closest match).\n */\n protected _listenForMediaQueryChanges(key: string,\n defaultValue: any,\n onMediaQueryChange: MediaQuerySubscriber): ResponsiveActivation { // tslint:disable-line:max-line-length\n if (!this._mqActivation) {\n let keyOptions = new KeyOptions(key, defaultValue, this._inputMap);\n this._mqActivation = new ResponsiveActivation(keyOptions, this._mediaMonitor,\n (change) => onMediaQueryChange(change));\n }\n return this._mqActivation;\n }\n\n /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */\n protected get childrenNodes(): HTMLElement[] {\n const obj = this.nativeElement.children;\n const buffer: any[] = [];\n\n // iterate backwards ensuring that length is an UInt32\n for (let i = obj.length; i--; ) {\n buffer[i] = obj[i];\n }\n return buffer;\n }\n\n protected get hasInitialized() {\n return this._hasInitialized;\n }\n\n /** MediaQuery Activation Tracker */\n protected _mqActivation?: ResponsiveActivation;\n\n /** Dictionary of input keys with associated values */\n protected _inputMap: {[key: string]: any} = {};\n\n /**\n * Has the `ngOnInit()` method fired\n *\n * Used to allow *ngFor tasks to finish and support queries like\n * getComputedStyle() during ngOnInit().\n */\n protected _hasInitialized = false;\n\n /** Cache map for style computation */\n protected _styleCache: Map = new Map();\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 {Subscription} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {MediaChange, MediaQuerySubscriber} from '../media-change';\nimport {BreakPoint} from '../breakpoints/break-point';\nimport {MediaMonitor} from '../media-monitor/media-monitor';\nimport {extendObject} from '../../utils/object-extend';\n\n/**\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport interface BreakPointX extends BreakPoint {\n key: string;\n baseKey: string;\n}\n\n/**\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport class KeyOptions {\n constructor(public baseKey: string,\n public defaultValue: string|number|boolean,\n public inputKeys: { [key: string]: any }) {\n }\n}\n\n/**\n * ResponsiveActivation acts as a proxy between the MonitorMedia service (which emits mediaQuery\n * changes) and the fx API directives. The MQA proxies mediaQuery change events and notifies the\n * directive via the specified callback.\n *\n * - The MQA also determines which directive property should be used to determine the\n * current change 'value'... BEFORE the original `onMediaQueryChanges()` method is called.\n * - The `ngOnDestroy()` method is also head-hooked to enable auto-unsubscribe from the\n * MediaQueryServices.\n *\n * NOTE: these interceptions enables the logic in the fx API directives to remain terse and clean.\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport class ResponsiveActivation {\n private _activatedInputKey: string = '';\n private _registryMap: BreakPointX[] = this._buildRegistryMap();\n private _subscribers: Subscription[] = this._configureChangeObservers();\n\n /**\n * Constructor\n */\n constructor(private _options: KeyOptions,\n private _mediaMonitor: MediaMonitor,\n private _onMediaChanges: MediaQuerySubscriber) {\n }\n\n /**\n * Get a readonly sorted list of the breakpoints corresponding to the directive properties\n * defined in the HTML markup: the sorting is done from largest to smallest. The order is\n * important when several media queries are 'registered' and from which, the browser uses the\n * first matching media query.\n */\n get registryFromLargest(): BreakPointX[] {\n return [...this._registryMap].reverse();\n }\n\n /**\n * Determine which directive @Input() property is currently active (for the viewport size):\n * The key must be defined (in use) or fallback to the 'closest' overlapping property key\n * that is defined; otherwise the default property key will be used.\n * e.g.\n * if `
` is used but the current activated mediaQuery alias\n * key is `.md` then `.gt-sm` should be used instead\n */\n get activatedInputKey(): string {\n return this._activatedInputKey || this._options.baseKey;\n }\n\n /**\n * Get the currently activated @Input value or the fallback default @Input value\n */\n get activatedInput(): any {\n const key = this.activatedInputKey;\n return this.hasKeyValue(key) ? this._lookupKeyValue(key) : this._options.defaultValue;\n }\n\n /**\n * Fast validator for presence of attribute on the host element\n */\n hasKeyValue(key: string) {\n return this._options.inputKeys[key] !== undefined;\n }\n\n /**\n * Remove interceptors, restore original functions, and forward the onDestroy() call\n */\n destroy() {\n this._subscribers.forEach(link => link.unsubscribe());\n this._subscribers = [];\n }\n\n /**\n * For each *defined* API property, register a callback to `_onMonitorEvents( )`\n * Cache 1..n subscriptions for internal auto-unsubscribes when the the directive destructs\n */\n private _configureChangeObservers(): Subscription[] {\n const subscriptions: Subscription[] = [];\n\n this._registryMap.forEach(bp => {\n if (this._keyInUse(bp.key)) {\n // Inject directive default property key name: to let onMediaChange() calls\n // know which property is being triggered...\n const buildChanges = (change: MediaChange) => {\n change = change.clone();\n change.property = this._options.baseKey;\n return change;\n };\n\n subscriptions.push(\n this._mediaMonitor\n .observe(bp.alias)\n .pipe(map(buildChanges))\n .subscribe(change => {\n this._onMonitorEvents(change);\n })\n );\n }\n });\n\n return subscriptions;\n }\n\n /**\n * Build mediaQuery key-hashmap; only for the directive properties that are actually defined/used\n * in the HTML markup\n */\n private _buildRegistryMap() {\n return this._mediaMonitor.breakpoints\n .map(bp => extendObject({}, bp, {\n baseKey: this._options.baseKey, // e.g. layout, hide, self-align, flex-wrap\n key: this._options.baseKey + bp.suffix // e.g. layoutGtSm, layoutMd, layoutGtLg\n }))\n .filter(bp => this._keyInUse(bp.key));\n }\n\n /**\n * Synchronizes change notifications with the current mq-activated @Input and calculates the\n * mq-activated input value or the default value\n */\n protected _onMonitorEvents(change: MediaChange) {\n if (change.property === this._options.baseKey) {\n change.value = this._calculateActivatedValue(change);\n this._onMediaChanges(change);\n }\n }\n\n /**\n * Has the key been specified in the HTML markup and thus is intended\n * to participate in activation processes.\n */\n private _keyInUse(key: string): boolean {\n return this._lookupKeyValue(key) !== undefined;\n }\n\n /**\n * Map input key associated with mediaQuery activation to closest defined input key\n * then return the values associated with the targeted input property\n *\n * !! change events may arrive out-of-order (activate before deactivate)\n * so make sure the deactivate is used ONLY when the keys match\n * (since a different activate may be in use)\n */\n private _calculateActivatedValue(current: MediaChange): any {\n const currentKey = this._options.baseKey + current.suffix; // e.g. suffix == 'GtSm',\n let newKey = this._activatedInputKey; // e.g. newKey == hideGtSm\n\n newKey = current.matches ? currentKey : ((newKey === currentKey) ? '' : newKey);\n\n this._activatedInputKey = this._validateInputKey(newKey);\n return this.activatedInput;\n }\n\n /**\n * For the specified input property key, validate it is defined (used in the markup)\n * If not see if a overlapping mediaQuery-related input key fallback has been defined\n *\n * NOTE: scans in the order defined by activeOverLaps (largest viewport ranges -> smallest ranges)\n */\n private _validateInputKey(inputKey: string) {\n const isMissingKey = (key: string) => !this._keyInUse(key);\n\n if (isMissingKey(inputKey)) {\n this._mediaMonitor.activeOverlaps.some(bp => {\n const key = this._options.baseKey + bp.suffix;\n if (!isMissingKey(key)) {\n inputKey = key;\n return true; // exit .some()\n }\n return false;\n });\n }\n return inputKey;\n }\n\n /**\n * Get the value (if any) for the directive instances @Input property (aka key)\n */\n private _lookupKeyValue(key: string) {\n return this._options.inputKeys[key];\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='' 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 : 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 {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(\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 {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>();\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 */\nimport {NgModule} from '@angular/core';\n\nimport {BROWSER_PROVIDER} from './browser-provider';\nimport {ObservableMediaProvider} from './observable-media/observable-media';\n\n/**\n * *****************************************************************\n * Define module for the MediaQuery API\n * *****************************************************************\n */\n\n@NgModule({\n providers: [BROWSER_PROVIDER, ObservableMediaProvider]\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 {Injectable} from '@angular/core';\nimport {Observable, PartialObserver, Subscribable, Subscription} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {BreakPointRegistry} from '../breakpoints/break-point-registry';\nimport {MediaChange} from '../media-change';\nimport {MatchMedia} from '../match-media/match-media';\nimport {mergeAlias} from '../add-alias';\nimport {BreakPoint} from '../breakpoints/break-point';\n\n/**\n * Base class for MediaService and pseudo-token for\n * @deprecated use MediaObserver instead\n * @deletion-target v7.0.0-beta.21\n */\nexport abstract class ObservableMedia implements Subscribable {\n abstract isActive(query: string): boolean;\n\n abstract asObservable(): Observable;\n\n abstract subscribe(next?: (value: MediaChange) => void,\n error?: (error: any) => void,\n complete?: () => void): Subscription;\n abstract subscribe(observer?: PartialObserver): Subscription;\n}\n\n/**\n * Class internalizes a MatchMedia service and exposes an Subscribable and Observable interface.\n\n * This an Observable with that exposes a feature to subscribe to mediaQuery\n * changes and a validator method (`isActive()`) to test if a mediaQuery (or alias) is\n * currently active.\n *\n * !! Only mediaChange activations (not de-activations) are announced by the ObservableMedia\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 * !! This is not an actual Observable. It is a wrapper of an Observable used to publish additional\n * methods like `isActive(). To access the Observable and use RxJS operators, use\n * `.asObservable()` with syntax like media.asObservable().map(....).\n *\n * @usage\n *\n * // RxJS\n * import {filter} from 'rxjs/operators/filter';\n * import { ObservableMedia } from '@angular/flex-layout';\n *\n * @Component({ ... })\n * export class AppComponent {\n * status : string = '';\n *\n * constructor( media:ObservableMedia ) {\n * let onChange = (change:MediaChange) => {\n * this.status = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : '';\n * };\n *\n * // Subscribe directly or access observable to use filter/map operators\n * // e.g.\n * // media.subscribe(onChange);\n *\n * media.asObservable()\n * .pipe(\n * filter((change:MediaChange) => true) // silly noop filter\n * ).subscribe(onChange);\n * }\n * }\n * @deprecated use MediaObserver instead\n * @deletion-target v7.0.0-beta.21\n */\n@Injectable({providedIn: 'root'})\nexport class MediaService implements ObservableMedia {\n /**\n * Should we announce gt- breakpoint activations ?\n */\n filterOverlaps = true;\n\n constructor(private breakpoints: BreakPointRegistry,\n private mediaWatcher: MatchMedia) {\n this._registerBreakPoints();\n this.observable$ = this._buildObservable();\n }\n\n /**\n * Test if specified query/alias is active.\n */\n isActive(alias: string): boolean {\n return this.mediaWatcher.isActive(this._toMediaQuery(alias));\n }\n\n /**\n * Proxy to the Observable subscribe method\n */\n subscribe(observerOrNext?: PartialObserver | ((value: MediaChange) => void),\n error?: (error: any) => void,\n complete?: () => void): Subscription {\n if (observerOrNext) {\n if (typeof observerOrNext === 'object') {\n return this.observable$.subscribe(observerOrNext.next, observerOrNext.error,\n observerOrNext.complete);\n }\n }\n\n return this.observable$.subscribe(observerOrNext, error, complete);\n }\n\n /**\n * Access to observable for use with operators like\n * .filter(), .map(), etc.\n */\n asObservable(): Observable {\n return this.observable$;\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 _registerBreakPoints() {\n const queries = this.breakpoints.sortedItems.map(bp => bp.mediaQuery);\n this.mediaWatcher.registerQuery(queries);\n }\n\n /**\n * Prepare internal observable\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() {\n const excludeOverlaps = (change: MediaChange) => {\n const bp = this.breakpoints.findByQuery(change.mediaQuery);\n return !bp ? true : !(this.filterOverlaps && bp.overlapping);\n };\n\n /**\n * Only pass/announce activations (not de-activations)\n * Inject associated (if any) alias information into the MediaChange event\n * Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only\n */\n return this.mediaWatcher.observe().pipe(\n filter(change => change.matches),\n filter(excludeOverlaps),\n map((change: MediaChange) =>\n mergeAlias(change, this._findByQuery(change.mediaQuery)))\n );\n }\n\n /**\n * Breakpoint locator by alias\n */\n private _findByAlias(alias: string) {\n return this.breakpoints.findByAlias(alias);\n }\n\n /**\n * Breakpoint locator by mediaQuery\n */\n private _findByQuery(query: string) {\n return this.breakpoints.findByQuery(query);\n }\n\n /**\n * Find associated breakpoint (if any)\n */\n private _toMediaQuery(query: string) {\n const bp: BreakPoint | null = this._findByAlias(query) || this._findByQuery(query);\n return bp ? bp.mediaQuery : query;\n }\n\n private readonly observable$: Observable;\n}\n\n/**\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport const ObservableMediaProvider = { // tslint:disable-line:variable-name\n provide: ObservableMedia,\n useClass: MediaService\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';\nimport {extendObject} from '../utils/object-extend';\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 return extendObject(dest, source ? {\n mqAlias: source.alias,\n suffix: source.suffix\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, NgZone, PLATFORM_ID} from '@angular/core';\nimport {DOCUMENT, isPlatformBrowser} from '@angular/common';\nimport {BehaviorSubject, Observable} 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 {\n protected _registry = new Map();\n protected _source = new BehaviorSubject(new MediaChange(true));\n protected _observable$ = this._source.asObservable();\n\n constructor(protected _zone: NgZone,\n @Inject(PLATFORM_ID) protected _platformId: Object,\n @Inject(DOCUMENT) protected _document: any) {\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 : false;\n }\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 * NOTE: if a mediaQuery is not specified, then ALL mediaQuery activations will\n * be announced.\n */\n observe(mediaQuery?: string): Observable {\n if (mediaQuery) {\n this.registerQuery(mediaQuery);\n }\n\n return this._observable$.pipe(\n filter(change => (mediaQuery ? (change.mediaQuery === mediaQuery) : true))\n );\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) ? Array.from(new Set(mediaQuery)) : [mediaQuery];\n\n if (list.length > 0) {\n buildQueryCss(list, this._document);\n }\n\n list.forEach(query => {\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\n if (!mql) {\n if (query === 'print') {\n // If we are listening for a print media query we need to add a `beforeprint` event listener to trigger the `mql` synchronously.\n // Regular matchMedia events are not synchronous and do not have time to update the layout before the print dialog shows and takes a snapshot.\n // Workaround for #869\n // This requires explicit use of `fxLayout.print` to racing between size based layouts. We don't know the size of prints\n // before hand so you must use a single layout for printing.\n window.addEventListener('beforeprint', () => {\n onMQLEvent({\n mediaQuery: query,\n matches: true,\n } as any)\n })\n }\n\n \n mql = this._buildMQL(query);\n mql.addListener(onMQLEvent);\n this._registry.set(query, mql);\n }\n\n if (mql.matches) {\n onMQLEvent(mql as unknown as MediaQueryListEvent);\n }\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\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).matchMedia('all').addListener;\n\n return canListen ? (window).matchMedia(query) : {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => {\n },\n removeListener: () => {\n }\n } as unknown 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 */\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 */\n constructor(public matches = false,\n public mediaQuery = 'all',\n public mqAlias = '',\n public suffix = '') {\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 {Injectable, Inject} from '@angular/core';\n\nimport {BreakPoint} from './break-point';\nimport {BREAKPOINTS} from './break-points-token';\n\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\n constructor(@Inject(BREAKPOINTS) private _registry: BreakPoint[]) {\n }\n\n /**\n * Accessor to raw list\n */\n get items(): BreakPoint[] {\n return [...this._registry];\n }\n\n /**\n * Accessor to sorted list used for registration with matchMedia API\n *\n * NOTE: During breakpoint registration, we want to register the overlaps FIRST\n * so the non-overlaps will trigger the MatchMedia:BehaviorSubject last!\n * And the largest, non-overlap, matching breakpoint should be the lastReplay value\n */\n get sortedItems(): BreakPoint[] {\n let overlaps = this._registry.filter(it => it.overlapping === true);\n let nonOverlaps = this._registry.filter(it => it.overlapping !== true);\n\n return [...overlaps, ...nonOverlaps];\n }\n\n /**\n * Search breakpoints by alias (e.g. gt-xs)\n */\n findByAlias(alias: string): BreakPoint | null {\n return this._registry.find(bp => bp.alias == alias) || null;\n }\n\n findByQuery(query: string): BreakPoint | null {\n return this._registry.find(bp => bp.mediaQuery == query) || null;\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._registry.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._registry.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._registry.map(it => !!it.suffix ? it.suffix : '');\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\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('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 {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}\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};\n\nexport const LAYOUT_CONFIG = new InjectionToken(\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 */\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/** HOF to sort the breakpoints by priority */\nexport function prioritySort(a: BreakPoint, b: BreakPoint): number {\n const priorityA = a.priority || 0;\n const priorityB = b.priority || 0;\n return priorityB - priorityA;\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: 599px)';\nconst HANDSET_LANDSCAPE = '(orientation: landscape) and (max-width: 959px)';\n\nconst TABLET_LANDSCAPE = '(orientation: landscape) and (min-width: 960px) and (max-width: 1279px)';\nconst TABLET_PORTRAIT = '(orientation: portrait) and (min-width: 600px) and (max-width: 839px)';\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', 'mediaQuery': ScreenTypes.HANDSET},\n {'alias': 'handset.landscape', 'mediaQuery': ScreenTypes.HANDSET_LANDSCAPE},\n {'alias': 'handset.portrait', 'mediaQuery': ScreenTypes.HANDSET_PORTRAIT},\n\n {'alias': 'tablet', 'mediaQuery': ScreenTypes.TABLET},\n {'alias': 'tablet.landscape', 'mediaQuery': ScreenTypes.TABLET},\n {'alias': 'tablet.portrait', 'mediaQuery': ScreenTypes.TABLET_PORTRAIT},\n\n {'alias': 'web', 'mediaQuery': ScreenTypes.WEB, overlapping : true },\n {'alias': 'web.landscape', 'mediaQuery': ScreenTypes.WEB_LANDSCAPE, overlapping : true },\n {'alias': 'web.portrait', '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\nexport const RESPONSIVE_ALIASES = [\n 'xs', 'gt-xs', 'sm', 'gt-sm', 'md', 'gt-md', 'lg', 'gt-lg', 'xl'\n];\n\nexport const DEFAULT_BREAKPOINTS: BreakPoint[] = [\n {\n alias: 'xs',\n mediaQuery: '(min-width: 0px) and (max-width: 599px)',\n priority: 100,\n },\n {\n alias: 'gt-xs',\n overlapping: true,\n mediaQuery: '(min-width: 600px)',\n priority: 7,\n },\n {\n alias: 'lt-sm',\n overlapping: true,\n mediaQuery: '(max-width: 599px)',\n priority: 10,\n },\n {\n alias: 'sm',\n mediaQuery: '(min-width: 600px) and (max-width: 959px)',\n priority: 100,\n },\n {\n alias: 'gt-sm',\n overlapping: true,\n mediaQuery: '(min-width: 960px)',\n priority: 8,\n },\n {\n alias: 'lt-md',\n overlapping: true,\n mediaQuery: '(max-width: 959px)',\n priority: 9,\n },\n {\n alias: 'md',\n mediaQuery: '(min-width: 960px) and (max-width: 1279px)',\n priority: 100,\n },\n {\n alias: 'gt-md',\n overlapping: true,\n mediaQuery: '(min-width: 1280px)',\n priority: 9,\n },\n {\n alias: 'lt-lg',\n overlapping: true,\n mediaQuery: '(max-width: 1279px)',\n priority: 8,\n },\n {\n alias: 'lg',\n mediaQuery: '(min-width: 1280px) and (max-width: 1919px)',\n priority: 100,\n },\n {\n alias: 'gt-lg',\n overlapping: true,\n mediaQuery: '(min-width: 1920px)',\n priority: 10,\n },\n {\n alias: 'lt-xl',\n overlapping: true,\n mediaQuery: '(max-width: 1919px)',\n priority: 7,\n },\n {\n alias: 'xl',\n mediaQuery: '(min-width: 1920px) and (max-width: 5000px)',\n priority: 100,\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 {InjectionToken} from '@angular/core';\nimport {BreakPoint} from '../breakpoints/break-point';\n\nexport const BREAKPOINT = new InjectionToken(\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 {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: 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. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\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 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) : new P(function (resolve) { resolve(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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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 __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\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)) result[k] = mod[k];\r\n result.default = 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"],"names":["map","Injectable","merge","filter","Subject","Inject","PLATFORM_ID","Optional","isPlatformBrowser","isPlatformServer","DOCUMENT","NgZone","tslib_1.__extends","tslib_1.__assign","SimpleChange","InjectionToken","NgModule","BehaviorSubject","inject","APP_BOOTSTRAP_LISTENER"],"mappings":"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"} \ No newline at end of file +{"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;\ntype BreakpointMap = Map;\ntype ElementMap = Map;\ntype ElementKeyMap = WeakMap>;\ntype SubscriptionMap = Map;\ntype WatcherMap = WeakMap;\ntype BuilderMap = WeakMap>;\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 = 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[] = []): 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 {\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[]) {\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)) {\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, Optional, 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(@Optional() private _serverStylesheet: StylesheetMap,\n @Optional() @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 /**\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\n this.deactivateAll();\n this.restoreRegistryMatches();\n this.setActivations(list);\n\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();\n queries.forEach(query => {\n registry.set(query, {matches: 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() {\n return this.matchMedia.activations;\n }\n\n private hasCachedRegistryMatches = false;\n private originalActivations: MediaChange[] = [];\n private originalRegistry: Map = new Map();\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})
` ;\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 v8.0.0-beta.26\n */\n readonly media$: Observable;\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 {\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 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 {\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;\n private readonly destroyed$ = new Subject();\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 : query;\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(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, PLATFORM_ID} 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 { isPlatformBrowser } 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 {\n constructor(\n protected breakpoints: BreakPointRegistry,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n @Inject(PLATFORM_ID) protected _platformId: Object) {\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 // 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 the platform is\n // not a browser(fallsback to mql print media queries).\n private registerBeforeAfterPrintHooks(target: HookTarget) {\n if (!isPlatformBrowser(this._platformId) || this.registeredBeforeAfterPrintHooks) {\n return;\n }\n\n this.registeredBeforeAfterPrintHooks = true;\n\n // Could we have teardown logic to remove if there are no print listeners being used?\n (window).addEventListener('beforeprint', () => {\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 (window).addEventListener('afterprint', () => {\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\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 /** 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- 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- 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 // 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.split(',').forEach(alias => activate(alias.trim()));\n }\n\n /**\n *\n */\n private _activateByQuery(mediaQuery: string) {\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(null, this);\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(null, this);\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(null, this);\n }\n }\n\n /** Don't need to remove listeners in the testing environment */\n removeListener(_: MediaQueryListListener | null) {\n }\n\n addEventListener(\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(\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, 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 {\n /** Initialize source with 'all' so all non-responsive APIs trigger style updates */\n readonly source = new BehaviorSubject(new MediaChange(true));\n registry = new Map();\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 : false;\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;\n observe(mediaQueries: string[]): Observable;\n observe(mediaQueries: string[], filterOthers: boolean): Observable;\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 {\n if (mqList && mqList.length) {\n const matchMedia$: Observable = this._observable$.pipe(\n filter((change: MediaChange) => {\n return !filterOthers ? true : (mqList.indexOf(change.mediaQuery) > -1);\n })\n );\n const registration$: Observable = new Observable((observer: Observer) => { // tslint:disable-line:max-line-length\n const matches: Array = 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.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 /**\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).matchMedia('all').addListener;\n\n return canListen ? (window).matchMedia(query) : {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => {\n },\n removeListener: () => {\n }\n } as unknown 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();\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(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(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('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.9px)';\nconst HANDSET_LANDSCAPE = '(orientation: landscape) and (max-width: 959.9px)';\n\nconst TABLET_PORTRAIT = '(orientation: portrait) and (min-width: 600px) and (max-width: 839.9px)';\nconst TABLET_LANDSCAPE = '(orientation: landscape) and (min-width: 960px) and (max-width: 1279.9px)';\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},\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.9px)',\n priority: 1000,\n },\n {\n alias: 'sm',\n mediaQuery: 'screen and (min-width: 600px) and (max-width: 959.9px)',\n priority: 900,\n },\n {\n alias: 'md',\n mediaQuery: 'screen and (min-width: 960px) and (max-width: 1279.9px)',\n priority: 800,\n },\n {\n alias: 'lg',\n mediaQuery: 'screen and (min-width: 1280px) and (max-width: 1919.9px)',\n priority: 700,\n },\n {\n alias: 'xl',\n mediaQuery: 'screen and (min-width: 1920px) and (max-width: 4999.9px)',\n priority: 600,\n },\n {\n alias: 'lt-sm',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 599.9px)',\n priority: 950,\n },\n {\n alias: 'lt-md',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 959.9px)',\n priority: 850,\n },\n {\n alias: 'lt-lg',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 1279.9px)',\n priority: 750,\n },\n {\n alias: 'lt-xl',\n overlapping: true,\n priority: 650,\n mediaQuery: 'screen and (max-width: 1919.9px)',\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 = new Subject();\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 = 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[] = []): 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 /** 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 this.addStyles(input);\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='' 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 : 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(\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(\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(\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>();\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 * Define module for the MediaQuery API\n * *****************************************************************\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: 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. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\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 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) : new P(function (resolve) { resolve(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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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 __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\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)) result[k] = mod[k];\r\n result.default = 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"],"names":["map","Injectable","tap","filter","merge","Subject","Inject","PLATFORM_ID","Optional","isPlatformBrowser","isPlatformServer","DOCUMENT","fromEvent","take","of","takeUntil","debounceTime","asapScheduler","switchMap","NgZone","tslib_1.__extends","Observable","BehaviorSubject","inject","InjectionToken","tslib_1.__assign","NgModule","APP_BOOTSTRAP_LISTENER"],"mappings":";;;;;;;;;;;;;A4BAA;;;;;;;;;;;;;;;;AAgBA,IAAI,aAAa,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE;IAC/B,aAAa,GAAG,MAAM,CAAC,cAAc;SAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;QAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC9B,CAAC;;AAEF,AAAO,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;IAC5B,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;IACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;CACxF;;AAED,AAAO,IAAI,QAAQ,GAAG,WAAW;IAC7B,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE;QAC7C,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACjD,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACjB,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAChF;QACD,OAAO,CAAC,CAAC;MACZ;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;CAC1C;;;;;;;;;;;;;;ADvBD,SAAgB,YAAY,CAAC,SAAmB,EAAE,UAAkB,EAApE;IACE;;;IAAO,YAAT;QACI,IAAIS,wBAAiB,CAAC,UAAU,CAAC,EAAE;;YACvC,IAAY,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,UAA7D,GAAwE,UAAU,GAAlF,GAAqF,CAAC,CAAC,CAAvF;;;;;;YAMA,IAAY,YAAU,GAAG,sBAAsB,CAA/C;YACM,QAAQ,CAAC,OAAO;;;;YAAC,UAAA,EAAE,EAAzB;gBACQ,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAI,UAAU,GAA3C,KAAgD,CAAC,IAAI,EAAE,CAAC,UAAU;oBACxD,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,YAAU,EAAE,EAAE,CAAC,CAAC;aACxE,EAAC,CAAC;SACJ;KACF,EAAC;CACH;;;;;AAKD,AAAA,IAAa,gBAAgB,GAAG;IAC9B,OAAO,qBAAkCkB,2BAAsB,EAAA;IAC/D,UAAU,EAAE,YAAY;IACxB,IAAI,EAAE,CAAChB,eAAQ,EAAEJ,gBAAW,CAAC;IAC7B,KAAK,EAAE,IAAI;CACZ,CAAD;;AAEA,AAAA,IAAa,UAAU,GAAG,cAAc,CAAxC;;;;;;;;;;;AD1BA,AAAA,IAAA,UAAA,kBAAA,YAAA;IAAA,SAAA,UAAA,GAAA;KAIC;;QAJD,EAAA,IAAA,EAACmB,aAAQ,EAAT,IAAA,EAAA,CAAU;oBACR,SAAS,EAAE,CAAC,gBAAgB,CAAC;iBAC9B,EAAD,EAAA;;IAEA,OAAA,UAAC,CAAD;CAAC,EAAD,CAAA,CAAA;;;;;;;;;ADTA,AAAA,IAAA;;;;;;;;;;;IAWE,SAAF,WAAA,CAAqB,OAAe,EACf,UAAkB,EAClB,OAAY,EACZ,MAAW,EACX,QAAY,EAJjC;QAAqB,IAArB,OAAA,KAAA,KAAA,CAAA,EAAqB,EAAA,OAArB,GAAA,KAAoC,CAApC,EAAA;QACqB,IAArB,UAAA,KAAA,KAAA,CAAA,EAAqB,EAAA,UAArB,GAAA,KAAuC,CAAvC,EAAA;QACqB,IAArB,OAAA,KAAA,KAAA,CAAA,EAAqB,EAAA,OAArB,GAAA,EAAiC,CAAjC,EAAA;QACqB,IAArB,MAAA,KAAA,KAAA,CAAA,EAAqB,EAAA,MAArB,GAAA,EAAgC,CAAhC,EAAA;QACqB,IAArB,QAAA,KAAA,KAAA,CAAA,EAAqB,EAAA,QAArB,GAAA,CAAiC,CAAjC,EAAA;QAJqB,IAArB,CAAA,OAA4B,GAAP,OAAO,CAAQ;QACf,IAArB,CAAA,UAA+B,GAAV,UAAU,CAAQ;QAClB,IAArB,CAAA,OAA4B,GAAP,OAAO,CAAK;QACZ,IAArB,CAAA,MAA2B,GAAN,MAAM,CAAK;QACX,IAArB,CAAA,QAA6B,GAAR,QAAQ,CAAI;QAd/B,IAAF,CAAA,QAAU,GAAW,EAAE,CAAC;KAerB;;;;;;IAGD,WAAF,CAAA,SAAA,CAAA,KAAO;;;;IAAL,YAAF;QACI,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KAClF,CAAH;IACA,OAAA,WAAC,CAAD;CAAC,EAAD,CAAA,CAAA;;;;;;;;;;;;ADnBA,AAAA,IAAA,aAAA,kBAAA,YAAA;IAAA,SAAA,aAAA,GAAA;QAGW,IAAX,CAAA,UAAqB,GAAG,IAAI,GAAG,EAA2C,CAAC;KAmC1E;;;;;;;;;;;IA9BC,aAAF,CAAA,SAAA,CAAA,iBAAmB;;;;;;;IAAjB,UAAkB,OAAoB,EAAE,KAAa,EAAE,KAAoB,EAA7E;;QACA,IAAU,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAnD;QACI,IAAI,UAAU,EAAE;YACd,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACzD;KACF,CAAH;;;;;;;;IAKE,aAAF,CAAA,SAAA,CAAA,WAAa;;;;IAAX,YAAF;QACI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;KACzB,CAAH;;;;;;;;;;IAKE,aAAF,CAAA,SAAA,CAAA,kBAAoB;;;;;;IAAlB,UAAmB,EAAe,EAAE,SAAiB,EAAvD;;QACA,IAAU,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAA1C;;QACA,IAAQ,KAAK,GAAG,EAAE,CAAlB;QACI,IAAI,MAAM,EAAE;;YAChB,IAAY,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAzC;YACM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC1D,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC;aACpB;SACF;QACD,OAAO,KAAK,CAAC;KACd,CAAH;;QArCA,EAAA,IAAA,EAACzB,eAAU,EAAX,IAAA,EAAA,CAAY,EAAC,UAAU,EAAE,MAAM,EAAC,EAAhC,EAAA;;;IAfA,OAAA,aAAA,CAAA;CAqDC,EAAD,CAAA,CAAA;;;;;;;;;;;;AD/BA,AAAA,IAAa,cAAc,GAAwB;IACjD,eAAe,EAAE,IAAI;IACrB,iBAAiB,EAAE,KAAK;IACxB,iBAAiB,EAAE,KAAK;IACxB,qBAAqB,EAAE,KAAK;IAC5B,YAAY,EAAE,KAAK;IACnB,kBAAkB,EAAE,IAAI;IACxB,oBAAoB,EAAE,EAAE;IACxB,uBAAuB,EAAE,IAAI;IAC7B,qBAAqB,EAAE,EAAE;CAC1B,CAAD;;AAEA,AAAA,IAAa,aAAa,GAAG,IAAIuB,mBAAc,CAC3C,mDAAmD,EAAE;IACnD,UAAU,EAAE,MAAM;IAClB,OAAO;;;IAAE,YAAf,EAAqB,OAAA,cAAc,CAAnC,EAAmC,CAAA;CAC9B,CAAC,CAAN;;;;;;;;;;;;;ADvBA,AAAA,IAAa,YAAY,GAAG,IAAIA,mBAAc,CAC5C,wBAAwB,EAAE;IACxB,UAAU,EAAE,MAAM;IAClB,OAAO;;;IAAE,YAAb,EAAmB,OAAA,KAAK,CAAxB,EAAwB,CAAA;CACrB,CAAC,CAAJ;;;;;;;ADTA,AAAA,IAAa,UAAU,GAAG,IAAIA,mBAAc,CAC1C,8DAA8D,EAAE;IAC9D,UAAU,EAAE,MAAM;IAClB,OAAO;;;IAAE,YAAb,EAAmB,OAAA,IAAI,CAAvB,EAAuB,CAAA;CACpB,CAAC,CAAJ;;;;;;;;;;;;;;;;;;ADAA,SAAgB,UAAU,CAAC,IAAiB,EAAE,MAAyB,EAAvE;IACE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,WAAW,EAAE,CAAC;IAC/C,IAAI,MAAM,EAAE;QACV,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,MAAM,sBAAG,MAAM,CAAC,MAAM,EAAU,CAAC;QACtC,IAAI,CAAC,QAAQ,sBAAG,MAAM,CAAC,QAAQ,EAAU,CAAC;KAC3C;IACD,OAAO,IAAI,CAAC;CACb;;;;;;;;;;;;;;ADhBD,IAAa,MAAM,GAAG,QAAQ,CAA9B;;AACA,IAAa,aAAa,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAA/E;;;;;;AAKA,SAAgB,cAAc,CAAC,KAAa,EAA5C;IACM,IAAA,EAAN,GAAA,aAAA,CAAA,KAAA,CAAwD,EAAjD,SAAP,GAAA,EAAA,CAAA,CAAA,CAAgB,EAAE,IAAlB,GAAA,EAAA,CAAA,CAAA,CAAsB,EAAE,QAAxB,GAAA,EAAA,CAAA,CAAA,CAAwD,CAAxD;IACE,OAAO,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;CAC3C;;;;;;;AAMF,SAAgB,aAAa,CAAC,KAAa,EAA3C;IACE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC;IACrC,IAAA,EAAN,GAAA,KAAA,CAAA,KAAA,CAAA,GAAA,CAAkD,EAA3C,SAAP,GAAA,EAAA,CAAA,CAAA,CAAgB,EAAE,IAAlB,GAAA,EAAA,CAAA,CAAA,CAAsB,EAAE,MAAxB,GAAA,EAAA,CAAA,CAAA,CAAkD,CAAlD;;IAGE,IAAI,CAAC,aAAa,CAAC,IAAI;;;;IAAC,UAAA,CAAC,EAA3B,EAA+B,OAAA,CAAC,KAAK,SAAS,CAA9C,EAA8C,EAAC,EAAE;QAC7C,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;KAC9B;IAED,IAAI,IAAI,KAAK,MAAM,EAAE;QACnB,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,GAAG,EAAE,CAAC;QACzC,MAAM,GAAG,MAAM,CAAC;KACjB;IAED,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;CACvD;;;;;;AAcD,SAAgB,iBAAiB,CAAC,KAAa,EAA/C;IACE,IAAI,CAAC,CAAC,KAAK,EAAE;QACX,QAAQ,KAAK,CAAC,WAAW,EAAE;YACzB,KAAK,SAAS,CAAC;YACf,KAAK,cAAc,CAAC;YACpB,KAAK,cAAc;gBACjB,KAAK,GAAG,cAAc,CAAC;gBACvB,MAAM;YAER,KAAK,IAAI,CAAC;YACV,KAAK,MAAM,CAAC;YACZ,KAAK,QAAQ;gBACX,KAAK,GAAG,QAAQ,CAAC;gBACjB,MAAM;;YAGR;gBACE,KAAK,GAAG,MAAM,CAAC;gBACf,MAAM;SACT;KACF;IACD,OAAO,KAAK,CAAC;CACd;;;;;;;;;;;;;;AAWD,SAAS,QAAQ,CAAC,SAAiB,EAAE,IAA0B,EAAE,MAAc,EAA/E;IAAqC,IAArC,IAAA,KAAA,KAAA,CAAA,EAAqC,EAAA,IAArC,GAAA,IAA+D,CAA/D,EAAA;IAAiE,IAAjE,MAAA,KAAA,KAAA,CAAA,EAAiE,EAAA,MAAjE,GAAA,KAA+E,CAA/E,EAAA;IACE,OAAO;QACL,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM;QAC1C,YAAY,EAAE,YAAY;QAC1B,gBAAgB,EAAE,SAAS;QAC3B,WAAW,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI;KAClC,CAAC;CACH;;;;;;;;;AD5ED,AAAA,IAAA;;;;IA8BE,SAAF,cAAA,CAAkC,UAAsB,EACtB,YAA0B,EAC1B,MAAkB,EAClB,OAAwB,EAH1D;QAAkC,IAAlC,CAAA,UAA4C,GAAV,UAAU,CAAY;QACtB,IAAlC,CAAA,YAA8C,GAAZ,YAAY,CAAc;QAC1B,IAAlC,CAAA,MAAwC,GAAN,MAAM,CAAY;QAClB,IAAlC,CAAA,OAAyC,GAAP,OAAO,CAAiB;QA/B9C,IAAZ,CAAA,aAAyB,GAAG,EAAE,CAAC;QACnB,IAAZ,CAAA,MAAkB,GAAa,EAAE,CAAC;;;;QAEtB,IAAZ,CAAA,GAAe,GAAoB,EAAE,CAAC;QAC1B,IAAZ,CAAA,cAA0B,GAAkB,IAAInB,YAAO,EAAE,CAAC;;;;QAsB9C,IAAZ,CAAA,UAAsB,GAAiC,IAAI,GAAG,EAAE,CAAC;KAM9D;IAzBD,MAAF,CAAA,cAAA,CAAgB,cAAhB,CAAA,SAAA,EAAA,eAA6B,EAA7B;;;;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC;SACpD;;;KAAH,CAAA,CAAG;IAGD,MAAF,CAAA,cAAA,CAAgB,cAAhB,CAAA,SAAA,EAAA,eAA6B,EAA7B;;;;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;SACtC;;;KAAH,CAAA,CAAG;IAGD,MAAF,CAAA,cAAA,CAAM,cAAN,CAAA,SAAA,EAAA,gBAAoB,EAApB;;;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SACtE;;;;;QACD,UAAmB,KAAa,EAAlC;YACI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,EACjE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;SAChC;;;KAJH,CAAA,CAAG;;;;;;;IAgBD,cAAF,CAAA,SAAA,CAAA,WAAa;;;;;IAAX,UAAY,OAAsB,EAApC;QAAE,IAAF,KAAA,GAAA,IAAA,CAQG;QAPC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO;;;;QAAC,UAAA,GAAG,EAApC;YACM,IAAI,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;;gBAC3C,IAAc,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAApD;;gBACA,IAAc,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAA7C;gBACQ,KAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;aACxB;SACF,EAAC,CAAC;KACJ,CAAH;;;;IAEE,cAAF,CAAA,SAAA,CAAA,WAAa;;;IAAX,YAAF;QACI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACjD,CAAH;;;;;;;;IAGY,cAAZ,CAAA,SAAA,CAAA,IAAgB;;;;;;IAAd,UAAe,aAAqC,EAAtD;QAAiB,IAAjB,aAAA,KAAA,KAAA,CAAA,EAAiB,EAAA,aAAjB,GAAA,EAAsD,CAAtD,EAAA;QACI,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAC3B,aAAa,CACd,CAAC;KACH,CAAH;;;;;;;;;IAGY,cAAZ,CAAA,SAAA,CAAA,SAAqB;;;;;;;IAAnB,UAAoB,KAAa,EAAE,MAAe,EAApD;;QACA,IAAU,OAAO,GAAG,IAAI,CAAC,YAAY,CAArC;;QACA,IAAU,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAxC;;QAEA,IAAQ,SAAS,GAAgC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAA3E;QAEI,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE;YAC3B,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/C,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;aACvC;SACF;QAED,IAAI,CAAC,GAAG,GAAZoB,QAAA,CAAA,EAAA,EAAmB,SAAS,CAAC,CAAC;QAC1B,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACpC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;KAC9C,CAAH;;;;;;;IAGY,cAAZ,CAAA,SAAA,CAAA,WAAuB;;;;;IAArB,YAAF;QAAE,IAAF,KAAA,GAAA,IAAA,CAMG;QALC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO;;;;QAAC,UAAA,CAAC,EAAnC;YACM,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SAClB,EAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;KACf,CAAH;;;;;;;IAGY,cAAZ,CAAA,SAAA,CAAA,aAAyB;;;;;IAAvB,YAAF;QACI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;KACpE,CAAH;;;;;;;;;;;;;;;;;IAQY,cAAZ,CAAA,SAAA,CAAA,oBAAgC;;;;;;;;;;IAA9B,UAA+B,MAAmB,EAAE,YAAoB,EAA1E;QAAsD,IAAtD,YAAA,KAAA,KAAA,CAAA,EAAsD,EAAA,YAAtD,GAAA,KAA0E,CAA1E,EAAA;QACI,IAAI,MAAM,EAAE;YACJ,IAAA,EAAZ,GAAA,IAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,MAAA,CAA0E,EAA7D,KAAb,GAAA,EAAA,CAAA,CAAA,CAAkB,EAAE,cAApB,GAAA,EAAA,CAAA,CAAA,CAA0E,CAA1E;YAEM,IAAI,CAAC,cAAc,IAAI,YAAY,EAAE;;gBAC3C,IAAc,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAA3C;;gBACA,IAAc,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAjC;gBACQ,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;aACnD;YAED,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;SACrB;QAED,OAAO,KAAK,CAAC;KACd,CAAH;;;;;;;;;;IAGY,cAAZ,CAAA,SAAA,CAAA,mBAA+B;;;;;;;;IAA7B,UAA8B,KAAsB,EACtB,KAAuB,EACvB,OAAyC,EAFzE;QAEgC,IAAhC,OAAA,KAAA,KAAA,CAAA,EAAgC,EAAA,OAAhC,GAAuD,IAAI,CAAC,aAAa,CAAzE,EAAA;QACI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;KACxD,CAAH;;;;;;;IAEY,cAAZ,CAAA,SAAA,CAAA,QAAoB;;;;;;IAAlB,UAAmB,GAAQ,EAAE,EAAU,EAAzC;QACI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;KACxE,CAAH;;;;;;IAEY,cAAZ,CAAA,SAAA,CAAA,eAA2B;;;;;IAAzB,UAA0B,KAAa,EAAzC;QACI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KACvB,CAAH;IACA,OAAA,cAAC,CAAD;CAAC,EAAD,CAAA,CAAA;;;;;;;;;;;;;;;ADxIA,AAAA,IAAa,mBAAmB,GAAiB;IAC/C;QACE,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,sDAAsD;QAClE,QAAQ,EAAE,IAAI;KACf;IACD;QACE,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,wDAAwD;QACpE,QAAQ,EAAE,GAAG;KACd;IACD;QACE,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,yDAAyD;QACrE,QAAQ,EAAE,GAAG;KACd;IACD;QACE,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,0DAA0D;QACtE,QAAQ,EAAE,GAAG;KACd;IACD;QACE,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,0DAA0D;QACtE,QAAQ,EAAE,GAAG;KACd;IACD;QACE,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,iCAAiC;QAC7C,QAAQ,EAAE,GAAG;KACd;IACD;QACE,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,iCAAiC;QAC7C,QAAQ,EAAE,GAAG;KACd;IACD;QACE,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,kCAAkC;QAC9C,QAAQ,EAAE,GAAG;KACd;IACD;QACE,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,GAAG;QACb,UAAU,EAAE,kCAAkC;KAC/C;IACD;QACE,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,+BAA+B;QAC3C,QAAQ,EAAE,CAAC,GAAG;KACf;IACD;QACE,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,+BAA+B;QAC3C,QAAQ,EAAE,CAAC,GAAG;KACf,EAAE;QACD,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,gCAAgC;QAC5C,QAAQ,EAAE,CAAC,GAAG;KACf;IACD;QACE,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,gCAAgC;QAC5C,QAAQ,EAAE,CAAC,GAAG;KACf;CACF,CAAD;;;;;;;;;AD1EA,IAAM,gBAAgB,GAAI,kDAAkD,CAA5E;;AACA,IAAM,iBAAiB,GAAG,mDAAmD,CAA7E;;AAEA,IAAM,eAAe,GAAK,yEAAyE,CAAnG;;AACA,IAAM,gBAAgB,GAAI,2EAA2E,CAArG;;AAEA,IAAM,YAAY,GAAQ,gDAAgD,CAA1E;;AACA,IAAM,aAAa,GAAO,kDAAkD,CAA5E;;AAEA,AAAA,IAAa,WAAW,GAAG;IACzB,SAAS,EAAgB,gBAAgB,GAA3C,IAAA,GAAgD,iBAAmB;IACjE,QAAQ,EAAiB,eAAe,GAA1C,KAAA,GAAgD,gBAAkB;IAChE,KAAK,EAAoB,YAAY,GAAvC,IAAA,GAA4C,aAAa,GAAzD,GAA4D;IAE1D,kBAAkB,EAAI,EAAxB,GAA2B,gBAAkB;IAC3C,iBAAiB,EAAQ,eAAe,GAA1C,GAA6C;IAC3C,cAAc,EAAQ,EAAxB,GAA2B,YAAc;IAEvC,mBAAmB,EAAM,iBAAiB,GAA5C,GAA+C;IAC7C,kBAAkB,EAAI,EAAxB,GAA2B,gBAAkB;IAC3C,eAAe,EAAO,EAAxB,GAA2B,aAAe;CACzC,CAAD;;;;;AAKA,AAAA,IAAa,uBAAuB,GAAkB;IACpD,EAAC,OAAO,EAAE,SAAS,EAAa,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,OAAO,EAAC;IAClF,EAAC,OAAO,EAAE,mBAAmB,EAAG,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,iBAAiB,EAAC;IAC5F,EAAC,OAAO,EAAE,kBAAkB,EAAI,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,gBAAgB,EAAC;IAE3F,EAAC,OAAO,EAAE,QAAQ,EAAc,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,MAAM,EAAC;IACjF,EAAC,OAAO,EAAE,kBAAkB,EAAI,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,MAAM,EAAC;IACjF,EAAC,OAAO,EAAE,iBAAiB,EAAK,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,eAAe,EAAC;IAE1F,EAAC,OAAO,EAAE,KAAK,EAAiB,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,GAAG,EAAE,WAAW,EAAG,IAAI,EAAE;IACnG,EAAC,OAAO,EAAE,eAAe,EAAO,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,aAAa,EAAE,WAAW,EAAG,IAAI,EAAE;IAC7G,EAAC,OAAO,EAAE,cAAc,EAAQ,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,YAAY,EAAE,WAAW,EAAG,IAAI,EAAE;CAC7G,CAAD;;;;;;;;;;;;;;;;;;;;ADnCA,SAAgB,YAAY,CAAC,IAAS,EAAtC;IAAwC,IAAxC,OAAA,GAAA,EAAA,CAAyD;IAAzD,KAAwC,IAAxC,EAAA,GAAA,CAAyD,EAAjB,EAAxC,GAAA,SAAA,CAAA,MAAyD,EAAjB,EAAxC,EAAyD,EAAzD;QAAwC,OAAxC,CAAA,EAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAyD;;IACvD,IAAI,IAAI,IAAI,IAAI,EAAE;QAChB,MAAM,SAAS,CAAC,4CAA4C,CAAC,CAAC;KAC/D;IAED,KAAmB,IAArB,EAAA,GAAA,CAA4B,EAAP,SAArB,GAAA,OAA4B,EAAP,EAArB,GAAA,SAAA,CAAA,MAA4B,EAAP,EAArB,EAA4B,EAAE;QAAvB,IAAI,MAAM,GAAjB,SAAA,CAAA,EAAA,CAAiB,CAAjB;QACI,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;gBACtB,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oBAC9B,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;iBACzB;aACF;SACF;KACF;IAED,OAAO,IAAI,CAAC;CACb;;;;;;;ADpBD,IAAM,gBAAgB,GAAG,WAAW,CAApC;;;;;AACA,SAAS,cAAc,CAAC,IAAY,EAApC;;IACA,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAnD;;IACA,IAAM,SAAS,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAxD;IACE,OAAO,KAAK,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC;CACxC;;;;;;AAMD,SAAS,SAAS,CAAC,IAAY,EAA/B;IACE,OAAO,IAAI;SACN,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,cAAc,CAAC;SACnB,IAAI,CAAC,EAAE,CAAC,CAAC;CACf;;;;;;;AAMD,SAAgB,gBAAgB,CAAC,IAAkB,EAAnD;IACE,IAAI,CAAC,OAAO;;;;IAAC,UAAC,EAAc,EAA9B;QACI,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;YACd,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAChC,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC;SACnC;KACF,EAAC,CAAC;IACH,OAAO,IAAI,CAAC;CACb;;;;;;;;;AAOD,SAAgB,YAAY,CAAC,QAAsB,EAAE,MAAyB,EAA9E;IAAqD,IAArD,MAAA,KAAA,KAAA,CAAA,EAAqD,EAAA,MAArD,GAAA,EAA8E,CAA9E,EAAA;;IACA,IAAQ,IAAI,GAAgC,EAAE,CAA9C;IACE,QAAQ,CAAC,OAAO;;;;IAAC,UAAA,EAAE,EAArB;QACI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;KACrB,EAAC,CAAC;;IAEH,MAAM,CAAC,OAAO;;;;IAAC,UAAC,EAAc,EAAhC;QACI,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;YAClB,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;SAClC;aAAM;YACL,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;SACrB;KACF,EAAC,CAAC;IAEH,OAAO,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG;;;;IAAC,UAAA,CAAC,EAAjD,EAAqD,OAAA,IAAI,CAAC,CAAC,CAAC,CAA5D,EAA4D,EAAC,CAAC,CAAC;CAC9D;;;;;;;;;;;AD3CD,AAAA,IAAa,WAAW,GACtB,IAAID,mBAAc,CAAe,0CAA0C,EAAE;IAC3E,UAAU,EAAE,MAAM;IAClB,OAAO;;;IAAE,YAAb;;QACA,IAAY,WAAW,GAAQD,WAAM,CAAC,UAAU,CAAC,CAAjD;;QACA,IAAY,YAAY,GAAGA,WAAM,CAAC,aAAa,CAAC,CAAhD;;QACA,IAAY,cAAc,GAAiB,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,WAAW,IAAI,EAAE;aACxE,GAAG;;;;QAAC,UAAC,CAA4B,EAA1C,EAA+C,OAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAzE,EAAyE,EAAC,CAAC,CAA3E;;QACA,IAAY,QAAQ,GAAG,CAAC,YAAY,CAAC,iBAAiB,GAAG,EAAE,GAAG,mBAAmB;aACxE,MAAM,CAAC,YAAY,CAAC,iBAAiB,GAAG,uBAAuB,GAAG,EAAE,CAAC,CAA9E;QAEM,OAAO,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;KAC/C,CAAA;CACF,CAAC,CAAJ;;;;;;;;;;;;;ADpBA,SAAgB,sBAAsB,CAAyB,CAAW,EAAE,CAAW,EAAvF;;IACA,IAAQ,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,CAA3C;;IACA,IAAQ,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,CAA3C;IACE,OAAO,SAAS,GAAG,SAAS,CAAC;CAC9B;;;;;;;;AAGD,SAAgB,qBAAqB,CAAyB,CAAI,EAAE,CAAI,EAAxE;;IACA,IAAQ,EAAE,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAA5B;;IACA,IAAQ,EAAE,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAA5B;IACE,OAAO,EAAE,GAAG,EAAE,CAAC;CAChB;;;;;;;;;;;ADJD,AAAA,IAAA,kBAAA,kBAAA,YAAA;IAIE,SAAF,kBAAA,CAAmC,IAAkB,EAArD;;;;QAwDmB,IAAnB,CAAA,SAA4B,GAAG,IAAI,GAAG,EAA8B,CAAC;QAvDjE,IAAI,CAAC,KAAK,GAAO,IAAI,CAAzB,KAAA,EAAA,CAA2B,IAAI,CAAC,qBAAqB,CAAC,CAAC;KACpD;;;;;;;;;IAKD,kBAAF,CAAA,SAAA,CAAA,WAAa;;;;;IAAX,UAAY,KAAa,EAA3B;QACI,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK;;;;QAAE,UAAC,EAAE,EAA5D,EAAiE,OAAA,EAAE,CAAC,KAAK,IAAI,KAAK,CAAlF,EAAkF,EAAC,CAAC;KACjF,CAAH;;;;;IAEE,kBAAF,CAAA,SAAA,CAAA,WAAa;;;;IAAX,UAAY,KAAa,EAA3B;QACI,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK;;;;QAAE,UAAC,EAAE,EAA5C,EAAiD,OAAA,EAAE,CAAC,UAAU,IAAI,KAAK,CAAvE,EAAuE,EAAC,CAAC;KACtE,CAAH;IAME,MAAF,CAAA,cAAA,CAAM,kBAAN,CAAA,SAAA,EAAA,cAAkB,EAAlB;;;;;;;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM;;;;YAAC,UAAA,EAAE,EAA/B,EAAmC,OAAA,EAAE,CAAC,WAAW,IAAI,IAAI,CAAzD,EAAyD,EAAC,CAAC;SACxD;;;KAAH,CAAA,CAAG;IAKD,MAAF,CAAA,cAAA,CAAM,kBAAN,CAAA,SAAA,EAAA,SAAa,EAAb;;;;;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG;;;;YAAC,UAAA,EAAE,EAA5B,EAAgC,OAAA,EAAE,CAAC,KAAK,CAAxC,EAAwC,EAAC,CAAC;SACvC;;;KAAH,CAAA,CAAG;IAOD,MAAF,CAAA,cAAA,CAAM,kBAAN,CAAA,SAAA,EAAA,UAAc,EAAd;;;;;;;;;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG;;;;YAAC,UAAA,EAAE,EAA5B,EAAgC,OAAA,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAA5D,EAA4D,EAAC,CAAC;SAC3D;;;KAAH,CAAA,CAAG;;;;;;;;;;;IAKO,kBAAV,CAAA,SAAA,CAAA,iBAA2B;;;;;;;IAAzB,UAA0B,GAAW,EACjC,QAAqC,EAD3C;;QAEA,IAAQ,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAA1C;QACI,IAAI,CAAC,QAAQ,EAAE;YACb,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;SACnC;QACD,OAAO,QAAQ,IAAI,IAAI,CAAC;KAEzB,CAAH;;QAvDA,EAAA,IAAA,EAACtB,eAAU,EAAX,IAAA,EAAA,CAAY,EAAC,UAAU,EAAE,MAAM,EAAC,EAAhC,EAAA;;;;QAIA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAeK,WAAM,EAArB,IAAA,EAAA,CAAsB,WAAW,EAAjC,EAAA,CAAA,EAAA;;;IAxBA,OAAA,kBAAA,CAAA;CAiFC,EAAD,CAAA,CAAA;;;;;;;;;;;;;;;;;;AD5DA,AAAA,IAAA,UAAA,kBAAA,YAAA;IAME,SAAF,UAAA,CAAwB,KAAa,EACQ,WAAmB,EACtB,SAAc,EAFxD;QAAwB,IAAxB,CAAA,KAA6B,GAAL,KAAK,CAAQ;QACQ,IAA7C,CAAA,WAAwD,GAAX,WAAW,CAAQ;QACtB,IAA1C,CAAA,SAAmD,GAAT,SAAS,CAAK;;;;QAL7C,IAAX,CAAA,MAAiB,GAAG,IAAIgB,oBAAe,CAAc,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1E,IAAF,CAAA,QAAU,GAAG,IAAI,GAAG,EAA0B,CAAC;QA6GnC,IAAZ,CAAA,YAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KAxGnD;IAKD,MAAF,CAAA,cAAA,CAAM,UAAN,CAAA,SAAA,EAAA,aAAiB,EAAjB;;;;;;;;QAAE,YAAF;;YACA,IAAU,OAAO,GAAa,EAAE,CAAhC;YACI,IAAI,CAAC,QAAQ,CAAC,OAAO;;;;;YAAC,UAAC,GAAmB,EAAE,GAAW,EAA3D;gBACM,IAAI,GAAG,CAAC,OAAO,EAAE;oBACf,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACnB;aACF,EAAC,CAAC;YACH,OAAO,OAAO,CAAC;SAChB;;;KAAH,CAAA,CAAG;;;;;;;;;IAKD,UAAF,CAAA,SAAA,CAAA,QAAU;;;;;IAAR,UAAS,UAAkB,EAA7B;;QACA,IAAU,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAA7C;QACI,OAAO,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;KACpC,CAAH;;;;;;;;;;;;;;;;;;;;;;IAqBE,UAAF,CAAA,SAAA,CAAA,OAAS;;;;;;;;;;;;IAAP,UAAQ,MAAiB,EAAE,YAAoB,EAAjD;QAAE,IAAF,KAAA,GAAA,IAAA,CAsBG;QAtB0B,IAA7B,YAAA,KAAA,KAAA,CAAA,EAA6B,EAAA,YAA7B,GAAA,KAAiD,CAAjD,EAAA;QACI,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;;YACjC,IAAY,WAAW,GAA4B,IAAI,CAAC,YAAY,CAAC,IAAI,CAC/DnB,gBAAM;;;;YAAC,UAAC,MAAmB,EAArC;gBACY,OAAO,CAAC,YAAY,GAAG,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACxE,EAAC,CACL,CADP;;YAEA,IAAY,aAAa,GAA4B,IAAIkB,eAAU;;;;YAAC,UAAC,QAA+B,EAApG;;;gBACA,IAAc,OAAO,GAAuB,KAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAtE;gBACQ,IAAI,OAAO,CAAC,MAAM,EAAE;;oBAC5B,IAAgB,UAAU,sBAAG,OAAO,CAAC,GAAG,EAAE,EAAC,CAA3C;oBACU,OAAO,CAAC,OAAO;;;;oBAAC,UAAC,CAAc,EAAzC;wBACY,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;qBAClB,EAAC,CAAC;oBACH,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBAC9B;gBACD,QAAQ,CAAC,QAAQ,EAAE,CAAC;aACrB,EAAC,CAAR;YACM,OAAOjB,UAAK,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;SAC1C;QAED,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B,CAAH;;;;;;;;;;;IAME,UAAF,CAAA,SAAA,CAAA,aAAe;;;;;;IAAb,UAAc,UAA6B,EAA7C;QAAE,IAAF,KAAA,GAAA,IAAA,CAwBG;;QAvBH,IAAU,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC,UAAU,CAAC,CAAtE;;QACA,IAAU,OAAO,GAAkB,EAAE,CAArC;QAEI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEpC,IAAI,CAAC,OAAO;;;;QAAC,UAAC,KAAa,EAA/B;;YACA,IAAY,UAAU;;;;YAAG,UAAC,CAAsB,EAAhD;gBACQ,KAAI,CAAC,KAAK,CAAC,GAAG;;;gBAAC,YAAvB,EAA6B,OAAA,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAhF,EAAgF,EAAC,CAAC;aAC3E,CAAA,CAAP;;YAEA,IAAU,GAAG,GAAG,KAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAxC;YACM,IAAI,CAAC,GAAG,EAAE;gBACR,GAAG,GAAG,KAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC3B,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBAC5B,KAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;aAC/B;YAED,IAAI,GAAG,CAAC,OAAO,EAAE;gBACf,OAAO,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aAC5C;SACF,EAAC,CAAC;QAEH,OAAO,OAAO,CAAC;KAChB,CAAH;;;;;;;;;;;;IAMY,UAAZ,CAAA,SAAA,CAAA,QAAoB;;;;;;;IAAlB,UAAmB,KAAa,EAAlC;QACI,OAAO,YAAY,CAAC,KAAK,EAAEK,wBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;KACjE,CAAH;;QA/GA,EAAA,IAAA,EAACR,eAAU,EAAX,IAAA,EAAA,CAAY,EAAC,UAAU,EAAE,MAAM,EAAC,EAAhC,EAAA;;;;QAdA,EAAA,IAAA,EAA4BkB,WAAM,EAAlC;QAqBA,EAAA,IAAA,EAA0D,MAAM,EAAhE,UAAA,EAAA,CAAA,EAAA,IAAA,EAAeb,WAAM,EAArB,IAAA,EAAA,CAAsBC,gBAAW,EAAjC,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAeD,WAAM,EAArB,IAAA,EAAA,CAAsBK,eAAQ,EAA9B,EAAA,CAAA,EAAA;;;IA7BA,OAAA,UAAA,CAAA;CAuIC,EAAD,CAAA,CAAC;;;;;;AAMD,IAAM,UAAU,GAA2B,EAAE,CAA7C;;;;;;;;;AASA,SAAS,aAAa,CAAC,YAAsB,EAAE,SAAmB,EAAlE;;IACA,IAAQ,IAAI,GAAG,YAAY,CAAC,MAAM;;;;IAAC,UAAA,EAAE,EAArC,EAAyC,OAAA,CAAC,UAAU,CAAC,EAAE,CAAC,CAAxD,EAAwD,EAAC,CAAzD;IACE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;;QACvB,IAAU,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAjC;QAEI,IAAI;;YACR,IAAY,SAAO,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAtD;YAEM,SAAO,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACzC,IAAI,CAAC,oBAAC,SAAO,IAAS,UAAU,EAAE;;gBACxC,IAAc,OAAO,GAAG,0IAAxB,GAKS,KAAK,GALd,wBAMC,CAND;gBAOQ,SAAO,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;aACxD;YAED,mBAAA,SAAS,CAAC,IAAI,GAAE,WAAW,CAAC,SAAO,CAAC,CAAC;;YAGrC,IAAI,CAAC,OAAO;;;;YAAC,UAAA,EAAE,EAArB,EAAyB,OAAA,UAAU,CAAC,EAAE,CAAC,GAAG,SAAO,CAAjD,EAAiD,EAAC,CAAC;SAE9C;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClB;KACF;CACF;;;;;;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,SAAkB,EAAvD;;IACA,IAAQ,SAAS,GAAG,SAAS,IAAI,CAAC,CAAC,oBAAS,MAAM,IAAE,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,CAAjF;IAEE,OAAO,SAAS,GAAG,oBAAS,MAAM,IAAE,UAAU,CAAC,KAAK,CAAC,yCAAG;QACtD,OAAO,EAAE,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,EAAE;QACxC,KAAK,EAAE,KAAK;QACZ,WAAW;;;QAAE,YAAjB;SACK,CAAA;QACD,cAAc;;;QAAE,YAApB;SACK,CAAA;KACF,IAA6B,CAAC;CAChC;;;;;;;;;;;AD9KD,AAAA,IAAA,cAAA,kBAAA,UAAA,MAAA,EAAA;IACoCS,SAApC,CAAA,cAAA,EAAA,MAAA,CAAA,CAA8C;IAM5C,SAAF,cAAA,CAAc,KAAa,EACQ,WAAmB,EACtB,SAAc,EACxB,YAAgC,EAHtD;QAAE,IAAF,KAAA,GAII,MAJJ,CAAA,IAAA,CAAA,IAAA,EAIU,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,IAJxC,IAAA,CAKG;QAFmB,KAAtB,CAAA,YAAkC,GAAZ,YAAY,CAAoB;QANpD,KAAF,CAAA,mBAAqB,GAAG,IAAI,CAAC;;QAC3B,KAAF,CAAA,WAAa,GAAG,KAAK,CAAC;;KAOnB;;;;;;IAGD,cAAF,CAAA,SAAA,CAAA,QAAU;;;;IAAR,YAAF;QACI,IAAI,CAAC,QAAQ,CAAC,OAAO;;;;QAAC,UAAC,GAAmB,EAA9C;YACM,oBAAC,GAAG,IAAwB,OAAO,EAAE,CAAC;SACvC,EAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC1B,CAAH;;;;;;;;IAGE,cAAF,CAAA,SAAA,CAAA,QAAU;;;;;;IAAR,UAAS,UAAkB,EAAE,WAAmB,EAAlD;QAA+B,IAA/B,WAAA,KAAA,KAAA,CAAA,EAA+B,EAAA,WAA/B,GAAA,KAAkD,CAAlD,EAAA;QACI,WAAW,GAAG,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC;QAC9C,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAE7C,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YAC7C,IAAI,CAAC,cAAc,EAAE,CAAC;YAEtB,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;YACrC,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;SACrD;QAED,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B,CAAH;;;;;;;IAGE,cAAF,CAAA,SAAA,CAAA,cAAgB;;;;;IAAd,UAAe,YAAoB,EAArC;;QACA,IAAU,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,CAA1D;QACI,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,KAAK,YAAY,CAAC;KAC9C,CAAH;;;;;;;;;;;;;IAMU,cAAV,CAAA,SAAA,CAAA,qBAA+B;;;;;;;;IAA7B,UAA8B,UAAkB,EAAE,WAAoB,EAAxE;QACI,IAAI,WAAW,EAAE;;YACrB,IAAY,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC,CAA1D;;YACA,IAAY,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,GAAG,SAAS,CAA7C;;YAGM,QAAQ,KAAK;gBACX,KAAK,IAAI;oBACP,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;oBAC/B,MAAM;gBACR,KAAK,IAAI;oBACP,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;oBACtC,MAAM;gBACR,KAAK,IAAI;oBACP,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;oBAC7C,MAAM;gBACR,KAAK,IAAI;oBACP,IAAI,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,CAAC;oBACpD,MAAM;aACT;;YAGD,QAAQ,KAAK;gBACX,KAAK,IAAI;oBACP,IAAI,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,CAAC;oBACpD,MAAM;gBACR,KAAK,IAAI;oBACP,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;oBAC7C,MAAM;gBACR,KAAK,IAAI;oBACP,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;oBACtC,MAAM;gBACR,KAAK,IAAI;oBACP,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;oBAC/B,MAAM;aACT;SACF;;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;KAC1C,CAAH;;;;;;;;;;IAKU,cAAV,CAAA,SAAA,CAAA,gBAA0B;;;;;;IAAxB,UAAyB,OAAe,EAA1C;QAAE,IAAF,KAAA,GAAA,IAAA,CAMG;;QALH,IAAU,QAAQ;;;;QAAG,UAAC,KAAa,EAAnC;;YACA,IAAY,EAAE,GAAG,KAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAArD;YACM,KAAI,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;SACnD,CAAA,CAAL;QACI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO;;;;QAAC,UAAA,KAAK,EAApC,EAAwC,OAAA,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAA9D,EAA8D,EAAC,CAAC;KAC7D,CAAH;;;;;;;;;;IAKU,cAAV,CAAA,SAAA,CAAA,gBAA0B;;;;;;IAAxB,UAAyB,UAAkB,EAA7C;;QACA,IAAU,GAAG,sBAAuB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAsB,CAAvF;QAEI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC/C;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B,CAAH;;;;;;;;;IAGU,cAAV,CAAA,SAAA,CAAA,cAAwB;;;;;;;IAAtB,YAAF;QACI,mBAAA,IAAI,GAAC,QAAQ,CAAC,OAAO;;;;QAAC,UAAC,EAAkB,EAA7C;YACM,oBAAC,EAAE,IAAwB,UAAU,EAAE,CAAC;SACzC,EAAC,CAAC;QACH,0BAAO,IAAI,GAAC;KACb,CAAH;;;;;;;;IAGU,cAAV,CAAA,SAAA,CAAA,mBAA6B;;;;;;IAA3B,UAA4B,UAAkB,EAAhD;QACI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC9D,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;SAChC;KACF,CAAH;;;;;;;;;;;;IAMY,cAAZ,CAAA,SAAA,CAAA,QAAoB;;;;;;;IAAlB,UAAmB,KAAa,EAAlC;QACI,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;KACtC,CAAH;IAEE,MAAF,CAAA,cAAA,CAAgB,cAAhB,CAAA,SAAA,EAAA,cAA4B,EAA5B;;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;SACpC;;;KAAH,CAAA,CAAG;;QAzIH,EAAA,IAAA,EAACnB,eAAU,EAAX;;;;QAXA,EAAA,IAAA,EAA4BkB,WAAM,EAAlC;QAmBA,EAAA,IAAA,EAAgD,MAAM,EAAtD,UAAA,EAAA,CAAA,EAAA,IAAA,EAAeb,WAAM,EAArB,IAAA,EAAA,CAAsBC,gBAAW,EAAjC,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAeD,WAAM,EAArB,IAAA,EAAA,CAAsBK,eAAQ,EAA9B,EAAA,CAAA,EAAA;QAhBA,EAAA,IAAA,EAAQ,kBAAkB,EAA1B;;IAkJA,OAAA,cAAC,CAAD;CAAC,CA1ImC,UAAU,CA0I9C,CAAA,CAAC;;;;;;AAOD;;;;;;IAYE,SAAF,kBAAA,CAAsB,WAAmB,EAAzC;QAAsB,IAAtB,CAAA,WAAiC,GAAX,WAAW,CAAQ;QAX/B,IAAV,CAAA,SAAmB,GAAG,KAAK,CAAC;QAClB,IAAV,CAAA,UAAoB,GAA6B,EAAE,CAAC;QAyFlD,IAAF,CAAA,QAAU,GAA2B,IAAI,CAAC;KA9EvC;IATD,MAAF,CAAA,cAAA,CAAM,kBAAN,CAAA,SAAA,EAAA,SAAa,EAAb;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;;KAAH,CAAA,CAAG;IAED,MAAF,CAAA,cAAA,CAAM,kBAAN,CAAA,SAAA,EAAA,OAAW,EAAX;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,WAAW,CAAC;SACzB;;;KAAH,CAAA,CAAG;;;;;;;;;;IASD,kBAAF,CAAA,SAAA,CAAA,OAAS;;;;;IAAP,YAAF;QACI,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACtB,CAAH;;;;;;IAGE,kBAAF,CAAA,SAAA,CAAA,QAAU;;;;IAAR,YAAF;QAAE,IAAF,KAAA,GAAA,IAAA,CASG;QARC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,UAAU,CAAC,OAAO;;;;YAAC,UAAC,QAAQ,EAAvC;;gBACA,IAAc,EAAE,sBAA6D,QAAQ,EAAC,CAAtF;gBACQ,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAI,CAAC,CAAC;aACrB,EAAC,CAAC;SACJ;QACD,OAAO,IAAI,CAAC;KACb,CAAH;;;;;;IAGE,kBAAF,CAAA,SAAA,CAAA,UAAY;;;;IAAV,YAAF;QAAE,IAAF,KAAA,GAAA,IAAA,CASG;QARC,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,UAAU,CAAC,OAAO;;;;YAAC,UAAC,QAAQ,EAAvC;;gBACA,IAAc,EAAE,sBAA6D,QAAQ,EAAC,CAAtF;gBACQ,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAI,CAAC,CAAC;aACrB,EAAC,CAAC;SACJ;QACD,OAAO,IAAI,CAAC;KACb,CAAH;;;;;;;IAGE,kBAAF,CAAA,SAAA,CAAA,WAAa;;;;;IAAX,UAAY,QAAgC,EAA9C;QACI,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;YAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAChC;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;;YACxB,IAAY,EAAE,sBAA6D,QAAQ,EAAC,CAApF;YACM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACrB;KACF,CAAH;;;;;;;IAGE,kBAAF,CAAA,SAAA,CAAA,cAAgB;;;;;IAAd,UAAe,CAAgC,EAAjD;KACG,CAAH;;;;;;;IAQE,kBAAF,CAAA,SAAA,CAAA,gBAAkB;;;;;;IAAhB,UACI,CAAS,EACT,EAAsC,EACtC,GAAuC,EAH7C;KAIG,CAAH;;;;;;;IAQE,kBAAF,CAAA,SAAA,CAAA,mBAAqB;;;;;;IAAnB,UACI,CAAS,EACT,EAAsC,EACtC,GAAoC,EAH1C;KAIG,CAAH;;;;;IAEE,kBAAF,CAAA,SAAA,CAAA,aAAe;;;;IAAb,UAAc,CAAQ,EAAxB;QACI,OAAO,KAAK,CAAC;KACd,CAAH;IAGA,OAAA,kBAAC,CAAD;CAAC,EAAD,CAAA,CAAC;;;;;AAKD,AAAA,IAAa,sBAAsB,GAAG;;IACpC,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,cAAc;CACzB,CAAD;;;;;;;;;;;;AD/OA,IAAM,KAAK,GAAG,OAAO,CAArB;;AACA,AAAA,IAAa,gBAAgB,GAAG;IAC9B,KAAK,EAAE,KAAK;IACZ,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,IAAI;CACf,CAAD;;;;;;;AAQA,AAAA,IAAA,SAAA,kBAAA,YAAA;IAEE,SAAF,SAAA,CACgB,WAA+B,EACR,YAAiC,EACnC,WAAmB,EAHxD;QACgB,IAAhB,CAAA,WAA2B,GAAX,WAAW,CAAoB;QACR,IAAvC,CAAA,YAAmD,GAAZ,YAAY,CAAqB;QACnC,IAArC,CAAA,WAAgD,GAAX,WAAW,CAAQ;;;QA+C9C,IAAV,CAAA,+BAAyC,GAAY,KAAK,CAAC;;;;;;QAOjD,IAAV,CAAA,0BAAoC,GAAY,KAAK,CAAC;;;;QAsH5C,IAAV,CAAA,UAAoB,GAAG,KAAK,CAAC;QACnB,IAAV,CAAA,KAAe,GAAe,IAAI,UAAU,EAAE,CAAC;QACrC,IAAV,CAAA,aAAuB,GAAiB,EAAE,CAAC;KA7KxC;;;;;;;IAGD,SAAF,CAAA,SAAA,CAAA,cAAgB;;;;;IAAd,UAAe,OAAiB,EAAlC;QACI,OAAW,OAAO,CAAtB,MAAA,CAAA,CAAwB,KAAK,CAA7B,CAAA,CAA+B;KAC5B,CAAH;;;;;;;IAGE,SAAF,CAAA,SAAA,CAAA,YAAc;;;;;IAAZ,UAAa,CAAc,EAA7B;QACI,OAAO,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KACvC,CAAH;IAGE,MAAF,CAAA,cAAA,CAAM,SAAN,CAAA,SAAA,EAAA,YAAgB,EAAhB;;;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,YAAY,CAAC,oBAAoB,IAAI,EAAE,CAAC;SACrD;;;KAAH,CAAA,CAAG;IAGD,MAAF,CAAA,cAAA,CAAM,SAAN,CAAA,SAAA,EAAA,kBAAsB,EAAtB;;;;;;QAAE,YAAF;YAAE,IAAF,KAAA,GAAA,IAAA,CAIG;YAHC,0BAAO,IAAI,CAAC,UAAU;iBACjB,GAAG;;;;YAAC,UAAA,KAAK,EAAlB,EAAsB,OAAA,KAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAzD,EAAyD,EAAC;iBACjD,MAAM;;;;YAAC,UAAA,EAAE,EAAlB,EAAsB,OAAA,EAAE,KAAK,IAAI,CAAjC,EAAiC,EAAC,GAAiB;SAChD;;;KAAH,CAAA,CAAG;;;;;;;IAGD,SAAF,CAAA,SAAA,CAAA,mBAAqB;;;;;IAAnB,UAAoB,EAAyB,EAA/C;QAAA,IAAuB,UAAvB,GAAA,EAAA,CAAA,UAAiC,CAAjC;;QACA,IAAU,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAvD;;QACA,IAAU,IAAI,GAAG,EAAE,GAAO,IAAI,CAAC,gBAAgB,CAA/C,MAAA,CAAA,CAAiD,EAAE,CAAnD,CAAA,GAAuD,IAAI,CAAC,gBAAgB,CAA5E;QAEI,OAAO,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;KAC1C,CAAH;;;;;;;IAGE,SAAF,CAAA,SAAA,CAAA,WAAa;;;;;IAAX,UAAY,KAAkB,EAAhC;;QACA,IAAQ,EAAE,GAAuB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAA/E;QACI,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;;YAE5B,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,KAAK,CAAC,UAAU,GAAG,EAAE,GAAG,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC;SAC5C;QACD,OAAO,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;KAC9B,CAAH;;;;;;;;;;;;;;IAkBU,SAAV,CAAA,SAAA,CAAA,6BAAuC;;;;;;;;;;IAArC,UAAsC,MAAkB,EAA1D;QAAE,IAAF,KAAA,GAAA,IAAA,CA2BG;QA1BC,IAAI,CAACF,wBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,+BAA+B,EAAE;YAChF,OAAO;SACR;QAED,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC;;QAG5C,oBAAS,MAAM,IAAE,gBAAgB,CAAC,aAAa;;;QAAE,YAArD;;;YAGM,IAAI,CAAC,KAAI,CAAC,UAAU,EAAE;gBACpB,KAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;gBACvC,KAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAI,CAAC,mBAAmB,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBACnF,MAAM,CAAC,YAAY,EAAE,CAAC;aACvB;SACF,EAAC,CAAC;QAEH,oBAAS,MAAM,IAAE,gBAAgB,CAAC,YAAY;;;QAAE,YAApD;;;YAGM,KAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC;YACxC,IAAI,KAAI,CAAC,UAAU,EAAE;gBACnB,KAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC1B,MAAM,CAAC,YAAY,EAAE,CAAC;aACvB;SACF,EAAC,CAAC;KACJ,CAAH;;;;;;;;;;IAME,SAAF,CAAA,SAAA,CAAA,eAAiB;;;;;IAAf,UAAgB,MAAkB,EAApC;QAAE,IAAF,KAAA,GAAA,IAAA,CAiBG;QAhBC,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;QAE3C;;;;QAAO,UAAC,KAAkB,EAA9B;YACM,IAAI,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;gBAC5B,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,KAAI,CAAC,UAAU,EAAE;oBACrC,KAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC5D,MAAM,CAAC,YAAY,EAAE,CAAC;iBAEvB;qBAAM,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAI,CAAC,UAAU,IAAI,CAAC,KAAI,CAAC,0BAA0B,EAAE;oBAChF,KAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBAC1B,MAAM,CAAC,YAAY,EAAE,CAAC;iBACvB;aACF;iBAAM;gBACL,KAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;aAChC;SACF,EAAC;KACH,CAAH;;;;;;IAGE,SAAF,CAAA,SAAA,CAAA,gBAAkB;;;;IAAhB,YAAF;QAAE,IAAF,KAAA,GAAA,IAAA,CAIG;QAHC;;;;QAAO,UAAC,KAAkB,EAA9B;YACM,OAAO,EAAE,KAAI,CAAC,UAAU,IAAI,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;SACvD,EAAC;KACH,CAAH;;;;;;;;;;;;;IAMY,SAAZ,CAAA,SAAA,CAAA,aAAyB;;;;;;;;IAAvB,UAAwB,MAAkB,EAAE,MAA4B,EAA1E;QACI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;KACtE,CAAH;;;;;;;;IAGY,SAAZ,CAAA,SAAA,CAAA,YAAwB;;;;;;IAAtB,UAAuB,MAAkB,EAA3C;QACI,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC;QACjD,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KACzB,CAAH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoBE,SAAF,CAAA,SAAA,CAAA,kBAAoB;;;;;;;;;;;;;;;;;;;;IAAlB,UAAmB,KAAkB,EAAvC;QACI,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,0BAA0B,EAAE;YACvD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;;gBAC1B,IAAc,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAjE;gBACQ,IAAI,EAAE,EAAE;oBACN,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;iBACjD;aACF;iBAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE;;;;gBAI3C,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;aACzB;SACF;KACF,CAAH;;QA9KA,EAAA,IAAA,EAACR,eAAU,EAAX,IAAA,EAAA,CAAY,EAAC,UAAU,EAAE,MAAM,EAAC,EAAhC,EAAA;;;;QAzBA,EAAA,IAAA,EAAQ,kBAAkB,EAA1B;QA6BA,EAAA,IAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAOK,WAAM,EAAb,IAAA,EAAA,CAAc,aAAa,EAA3B,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAAkD,MAAM,EAAxD,UAAA,EAAA,CAAA,EAAA,IAAA,EAAOA,WAAM,EAAb,IAAA,EAAA,CAAcC,gBAAW,EAAzB,EAAA,CAAA,EAAA;;;IA3CA,OAAA,SAAA,CAAA;CA2NC,EAAD,CAAA,CAAC;;;;;;;;AAUD;;;;;;;;;IAAA,SAAA,UAAA,GAAA;;;;QAEE,IAAF,CAAA,gBAAkB,GAAiB,EAAE,CAAC;KA2BrC;;;;;IAzBC,UAAF,CAAA,SAAA,CAAA,mBAAqB;;;;IAAnB,UAAoB,MAA4B,EAAlD;QAAE,IAAF,KAAA,GAAA,IAAA,CAMG;QALC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpC,MAAM,CAAC,OAAO;;;;QAAC,UAAA,EAAE,EAArB,EAAyB,OAAA,KAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAA/C,EAA+C,EAAC,CAAC;QAE7C,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B,CAAH;;;;;;;IAGE,UAAF,CAAA,SAAA,CAAA,aAAe;;;;;IAAb,UAAc,EAAsB,EAAtC;QACI,IAAI,CAAC,CAAC,EAAE,EAAE;;YACd,IAAY,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI;;;;YAAC,UAAA,EAAE,EAApD,EAAwD,OAAA,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,UAAU,CAAvF,EAAuF,EAAC,CAAxF;YACM,IAAI,QAAQ,KAAK,SAAS,EAAE;;;gBAG1B,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,EAAE,CAAC,GAArD,CAAyD,EAAE,CAA3D,CAAA,MAAA,CAAgE,IAAI,CAAC,gBAAgB,CAArF,GACkB,IAAI,CAAC,gBAAgB,CADvC,MAAA,CAAA,CACyC,EAAE,CAD3C,CAC4C,CAAC;aACtC;SACF;KACF,CAAH;;;;;;IAGE,UAAF,CAAA,SAAA,CAAA,KAAO;;;;IAAL,YAAF;QACI,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;KAC5B,CAAH;IACA,OAAA,UAAC,CAAD;CAAC,EAAD,CAAA,CAAC;;;;;;;;;AAOD,SAAS,iBAAiB,CAAC,EAAsB,EAAjD;IACE,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;CACrD;;;;;;;;;;;;;ADlQD,SAAgB,WAAW,CAAI,KAAc,EAA7C;IACE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;CAC/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ADmDD,AAAA,IAAA,aAAA,kBAAA,YAAA;IAaE,SAAF,aAAA,CAAwB,WAA+B,EAC/B,UAAsB,EACtB,IAAe,EAFvC;QAAwB,IAAxB,CAAA,WAAmC,GAAX,WAAW,CAAoB;QAC/B,IAAxB,CAAA,UAAkC,GAAV,UAAU,CAAY;QACtB,IAAxB,CAAA,IAA4B,GAAJ,IAAI,CAAW;;;;QAJrC,IAAF,CAAA,cAAgB,GAAG,KAAK,CAAC;QA0HN,IAAnB,CAAA,UAA6B,GAAG,IAAIF,YAAO,EAAQ,CAAC;QArHhD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAC7BF,gBAAM;;;;QAAC,UAAC,OAAsB,EAApC,EAAyC,OAAA,OAAO,CAAC,MAAM,GAAG,CAAC,CAA3D,EAA2D,EAAC,EACtDH,aAAG;;;;QAAC,UAAC,OAAsB,EAAjC,EAAsC,OAAA,OAAO,CAAC,CAAC,CAAC,CAAhD,EAAgD,EAAC,CAC5C,CAAC;KACH;;;;;;;;;;IAMD,aAAF,CAAA,SAAA,CAAA,WAAa;;;;;IAAX,YAAF;QACI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B,CAAH;;;;;;;;;;;;;;IASE,aAAF,CAAA,SAAA,CAAA,YAAc;;;;;;;;IAAZ,YAAF;QACI,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB,CAAH;;;;;;;;;;;;;IAQE,aAAF,CAAA,SAAA,CAAA,QAAU;;;;;;IAAR,UAAS,KAAwB,EAAnC;QAAE,IAAF,KAAA,GAAA,IAAA,CAMG;;QALH,IAAU,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAApD;QACI,OAAO,OAAO,CAAC,IAAI;;;;QAAC,UAAA,KAAK,EAA7B;;YACA,IAAY,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,KAAI,CAAC,WAAW,CAAC,CAAzD;YACM,OAAO,KAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACxC,EAAC,CAAC;KACJ,CAAH;;;;;;;;;;;;;;;;;;;IAWU,aAAV,CAAA,SAAA,CAAA,gBAA0B;;;;;;;;;;;IAAxB,YAAF;;QACA,IAAU,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG;;;;QAAC,UAAA,EAAE,EAAjD,EAAqD,OAAA,EAAE,CAAC,UAAU,CAAlE,EAAkE,EAAC,CAAnE;QACI,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;KACtC,CAAH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgBU,aAAV,CAAA,SAAA,CAAA,eAAyB;;;;;;;;;;;;;;;;;IAAvB,UAAwB,MAAgB,EAA1C;QAAE,IAAF,KAAA,GAAA,IAAA,CAwBG;;QAvBH,IAAU,UAAU;;;;QAAG,UAAC,OAAsB,EAA9C;;YACA,IAAY,YAAY;;;;YAAG,UAAC,MAAmB,EAA/C,EAAoD,QAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAjF,EAAkF,CAAA,CAAlF;YACM,QAAQ,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;SAClD,CAAA,CAAL;;QACA,IAAU,eAAe;;;;QAAG,UAAC,OAAsB,EAAnD;YACM,OAAO,CAAC,KAAI,CAAC,cAAc,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM;;;;YAAC,UAAA,MAAM,EAAnE;;gBACA,IAAc,EAAE,GAAG,KAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAlE;gBACQ,OAAO,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC;aACrC,EAAC,CAAC;SACJ,CAAA,CAAL;;;QAII,OAAO,IAAI,CAAC,UAAU;aACjB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;aACzC,IAAI,CACDG,gBAAM;;;;QAAC,UAAC,MAAmB,EAAvC,EAA4C,OAAA,MAAM,CAAC,OAAO,CAA1D,EAA0D,EAAC,EAC/Ca,sBAAY,CAAC,CAAC,EAAEC,kBAAa,CAAC,EAC9BC,mBAAS;;;;QAAC,UAAA,CAAC,EAAvB,EAA2B,OAAAJ,OAAE,CAAC,KAAI,CAAC,kBAAkB,EAAE,CAAC,CAAxD,EAAwD,EAAC,EAC7Cd,aAAG,CAAC,eAAe,CAAC,EACpBG,gBAAM,CAAC,UAAU,CAAC,EAClBY,mBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B,CAAC;KACP,CAAH;;;;;;;;;;;IAMU,aAAV,CAAA,SAAA,CAAA,kBAA4B;;;;;;IAA1B,YAAF;QAAE,IAAF,KAAA,GAAA,IAAA,CAeG;;QAdH,IAAU,YAAY;;;;QAAG,UAAC,MAAmB,EAA7C;;YACA,IAAU,EAAE,GAAuB,KAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAlF;YACM,OAAO,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SAC/B,CAAA,CAAL;;QACA,IAAU,qBAAqB;;;;QAAG,UAAC,MAAmB,EAAtD;YACM,OAAO,KAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,KAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;SAChF,CAAA,CAAL;QAEI,OAAO,IAAI,CAAC,UAAU;aACjB,WAAW;aACX,GAAG;;;;QAAC,UAAA,KAAK,EAAlB,EAAsB,OAAA,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAlD,EAAkD,EAAC;aAC1C,GAAG,CAAC,qBAAqB,CAAC;aAC1B,GAAG,CAAC,YAAY,CAAC;aACjB,IAAI,CAAC,sBAAsB,CAAC,CAAC;KACnC,CAAH;;QAlIA,EAAA,IAAA,EAACd,eAAU,EAAX,IAAA,EAAA,CAAY,EAAC,UAAU,EAAE,MAAM,EAAC,EAAhC,EAAA;;;;QA/CA,EAAA,IAAA,EAAQ,kBAAkB,EAA1B;QAFA,EAAA,IAAA,EAAQ,UAAU,EAAlB;QACA,EAAA,IAAA,EAAQ,SAAS,EAAjB;;;IAdA,OAAA,aAAA,CAAA;CAoMC,EAAD,CAAA,CAAC;;;;;;;AAKD,SAAS,YAAY,CAAC,KAAa,EAAE,OAA2B,EAAhE;;IACA,IAAQ,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAArE;IACE,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,GAAG,KAAK,CAAC;CACnC;;;;;;;AAMD,SAAS,YAAY,CAAC,OAAiB,EAAvC;IACE,OAAO,OAAO,CAAC,GAAG;;;;IAAC,UAAC,KAAa,EAAnC,EAAwC,OAAA,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAxD,EAAwD,EAAC;SACxC,MAAM;;;;;IAAC,UAAC,EAAY,EAAE,EAAY,EAAnD,EAAwD,OAAA,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAArE,EAAqE,EAAC;SACrD,GAAG;;;;IAAC,UAAA,KAAK,EAA1B,EAA8B,OAAA,KAAK,CAAC,IAAI,EAAE,CAA1C,EAA0C,EAAC,CAAC;CAC3C;;;;;;;;;;;;;;AD/LD,AAAA,IAAA,YAAA,kBAAA,YAAA;IAGE,SAAF,YAAA,CACgB,WAA+B,EAC/B,UAAsB,EACC,YAAiC,EACnC,WAAmB,EACtB,SAAc,EALhD;QACgB,IAAhB,CAAA,WAA2B,GAAX,WAAW,CAAoB;QAC/B,IAAhB,CAAA,UAA0B,GAAV,UAAU,CAAY;QACC,IAAvC,CAAA,YAAmD,GAAZ,YAAY,CAAqB;QACnC,IAArC,CAAA,WAAgD,GAAX,WAAW,CAAQ;QACtB,IAAlC,CAAA,SAA2C,GAAT,SAAS,CAAK;QAuKtC,IAAV,CAAA,wBAAkC,GAAG,KAAK,CAAC;QACjC,IAAV,CAAA,mBAA6B,GAAkB,EAAE,CAAC;QACxC,IAAV,CAAA,gBAA0B,GAAgC,IAAI,GAAG,EAA0B,CAAC;KAxKzF;;;;;;;;;;IAMD,YAAF,CAAA,SAAA,CAAA,QAAU;;;;;IAAR,UAAS,IAAc,EAAzB;QACI,IAAI,GAAG,IAAI,CAAC,GAAG;;;;QAAC,UAAA,EAAE,EAAtB,EAA0B,OAAA,EAAE,CAAC,IAAI,EAAE,CAAnC,EAAmC,EAAC,CAAC;QAEjC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAE1B,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B,CAAH;;;;;;;;;;IAME,YAAF,CAAA,SAAA,CAAA,OAAS;;;;;IAAP,YAAF;QACI,IAAI,IAAI,CAAC,wBAAwB,EAAE;;YACvC,IAAY,YAAY;;;;YAAG,UAAC,MAAmB,EAA/C,EAAoD,OAAA,MAAM,CAAC,UAAU,CAArE,EAAqE,CAAA,CAArE;;YACA,IAAY,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,CAA7D;YACM,IAAI;gBAEF,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;aAE3B;oBAAS;gBACR,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;gBAC9B,IAAI,IAAI,CAAC,kBAAkB,EAAE;oBAC3B,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;iBACvC;aACF;SACF;KACF,CAAH;;;;;;;;;;;;;;;;;IAUU,YAAV,CAAA,SAAA,CAAA,kBAA4B;;;;;;;;;;IAA1B,YAAF;;QACA,IAAU,SAAS,GAAGQ,wBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,SAAS,CAA3E;;QACA,IAAU,iBAAiB,GAAG,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAApF;QAEI,IAAI,iBAAiB,EAAE;;YAC3B,IAAY,OAAO,GAAGG,cAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,CAACC,cAAI,CAAC,CAAC,CAAC,CAAC,CAA/D;YACM,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SACtE;KACF,CAAH;;;;;;;;;;;;;;;IAQU,YAAV,CAAA,SAAA,CAAA,aAAuB;;;;;;;;IAArB,YAAF;;QACA,IAAU,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAxC;QAEI,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACxC,CAAH;;;;;;;;;IAKU,YAAV,CAAA,SAAA,CAAA,eAAyB;;;;;IAAvB,YAAF;QAAE,IAAF,KAAA,GAAA,IAAA,CAeG;QAdC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;;YACxC,IAAY,aAAa;;;;YAAG,UAAC,KAAa,EAA1C,EAA+C,OAAA,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAA3E,EAA2E,CAAA,CAA3E;;YACA,IAAY,YAAY;;;;YAAG,UAAC,MAAmB,EAA/C;;gBACA,IAAc,EAAE,GAAuB,KAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAtF;gBACQ,OAAO,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;aAC/B,CAAA,CAAP;YAEM,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,kBAAkB;iBAC7C,GAAG,CAAC,aAAa,CAAC;iBAClB,GAAG,CAAC,YAAY,CAAC;iBACjB,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAElC,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;KACF,CAAH;;;;;;;;;;IAKU,YAAV,CAAA,SAAA,CAAA,cAAwB;;;;;;IAAtB,UAAuB,IAAc,EAAvC;QACI,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC3B,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACvC;QACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;KACjC,CAAH;;;;;;;;;;;IAKU,YAAV,CAAA,SAAA,CAAA,oBAA8B;;;;;;;IAA5B,UAA6B,OAAiB,EAAE,OAAc,EAAhE;QAAE,IAAF,KAAA,GAAA,IAAA,CASG;QAT+C,IAAlD,OAAA,KAAA,KAAA,CAAA,EAAkD,EAAA,OAAlD,GAAA,IAAgE,CAAhE,EAAA;;QACA,IAAU,YAAY;;;;QAAG,UAAC,KAAa,EAAvC;;YACA,IAAY,OAAO,GAAG,KAAI,CAAC,WAAW,CAAtC;;YACA,IAAY,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAzE;YACM,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,GAAG,KAAK,CAAC;SACnC,CAAA,CAAL;;QACA,IAAU,eAAe;;;;QAAG,UAAC,KAAa,EAA1C,EAA+C,OAAA,KAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAnF,EAAmF,CAAA,CAAnF;QAEI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;KACpD,CAAH;;;;;;;;;;;;;IAMU,YAAV,CAAA,SAAA,CAAA,oBAA8B;;;;;;;;IAA5B,UAA6B,OAAiB,EAAE,OAAgB,EAAlE;;QACA,IAAU,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAtD;QACI,OAAO,CAAC,OAAO;;;;QAAC,UAAA,KAAK,EAAzB;YACM,QAAQ,CAAC,GAAG,CAAC,KAAK,qBAAE,EAAC,OAAO,EAAE,OAAO,EAAC,GAAmB,CAAC;SAC3D,EAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;KACrC,CAAH;;;;;;;;;IAKU,YAAV,CAAA,SAAA,CAAA,oBAA8B;;;;;IAA5B,YAAF;;QACA,IAAU,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAxC;QAEI,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO;;;;;QAAC,UAAC,KAAqB,EAAE,GAAW,EAAxE;YACM,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACxB,EAAC,CAAC;QACH,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;KACtC,CAAH;;;;;;;;;IAKU,YAAV,CAAA,SAAA,CAAA,sBAAgC;;;;;IAA9B,YAAF;;QACA,IAAU,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAA3C;QAEI,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,gBAAgB,CAAC,OAAO;;;;;QAAC,UAAC,KAAqB,EAAE,GAAW,EAArE;YACM,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACxB,EAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;KACvC,CAAH;;;;;;;;;;;IAKU,YAAV,CAAA,SAAA,CAAA,eAAyB;;;;;;;IAAvB,UAAwB,OAAgB,EAAE,KAAa,EAAzD;QACI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;KAC9D,CAAH;IAEE,MAAF,CAAA,cAAA,CAAc,YAAd,CAAA,SAAA,EAAA,oBAAgC,EAAhC;;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;SACpC;;;KAAH,CAAA,CAAG;;QA7KH,EAAA,IAAA,EAACZ,eAAU,EAAX,IAAA,EAAA,CAAY,EAAC,UAAU,EAAE,MAAM,EAAC,EAAhC,EAAA;;;;QAPA,EAAA,IAAA,EAAQ,kBAAkB,EAA1B;QADA,EAAA,IAAA,EAAQ,UAAU,EAAlB;QAcA,EAAA,IAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAOK,WAAM,EAAb,IAAA,EAAA,CAAc,aAAa,EAA3B,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAAkD,MAAM,EAAxD,UAAA,EAAA,CAAA,EAAA,IAAA,EAAOA,WAAM,EAAb,IAAA,EAAA,CAAcC,gBAAW,EAAzB,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAOD,WAAM,EAAb,IAAA,EAAA,CAAcK,eAAQ,EAAtB,EAAA,CAAA,EAAA;;;IA/BA,OAAA,YAAA,CAAA;CA2MC,EAAD,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ADxLA,SAAgB,gBAAgB,CAAC,MAAmC,EAApE;IACE,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;;QAC1B,IAAQ,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAjC;QAEI,QAAQ,GAAG;YACT,KAAK,SAAS;gBACZ,IAAI,KAAK,KAAK,MAAM,EAAE;oBACpB,MAAM,CAAC,SAAS,CAAC,GAAG;wBAClB,cAAc;wBACd,MAAM;qBACP,CAAC;iBACH;qBAAM,IAAI,KAAK,KAAK,aAAa,EAAE;oBAClC,MAAM,CAAC,SAAS,CAAC,GAAG;wBAClB,qBAAqB;wBACrB,aAAa;qBACd,CAAC;iBACH;qBAAM;oBACL,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;iBAC3B;gBACD,MAAM;YAER,KAAK,aAAa,CAAC;YACnB,KAAK,YAAY,CAAC;YAClB,KAAK,eAAe,CAAC;YACrB,KAAK,MAAM,CAAC;YACZ,KAAK,YAAY,CAAC;YAClB,KAAK,WAAW,CAAC;YACjB,KAAK,WAAW,CAAC;YACjB,KAAK,aAAa,CAAC;YACnB,KAAK,WAAW,CAAC;YACjB,KAAK,iBAAiB;gBACpB,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;gBACjC,MAAM;YAER,KAAK,gBAAgB;gBACnB,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC;gBACvB,MAAM,CAAC,wBAAwB,CAAC,GAAG,KAAK,CAAC;gBACzC,MAAM,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC;gBACjC,MAAM;YAER,KAAK,OAAO;gBACV,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;gBACzE,MAAM;SACT;KACF;IACD,OAAO,MAAM,CAAC;CACf;;;;;;ADlDD,AAAA,IAAA,UAAA,kBAAA,YAAA;IAGE,SAAF,UAAA,CAAkC,iBAAgC,EACV,mBAA4B,EACzC,WAAmB,EACjB,YAAiC,EAH9E;QAAkC,IAAlC,CAAA,iBAAmD,GAAjB,iBAAiB,CAAe;QACV,IAAxD,CAAA,mBAA2E,GAAnB,mBAAmB,CAAS;QACzC,IAA3C,CAAA,WAAsD,GAAX,WAAW,CAAQ;QACjB,IAA7C,CAAA,YAAyD,GAAZ,YAAY,CAAqB;KAAI;;;;;;;;;;;IAKhF,UAAF,CAAA,SAAA,CAAA,mBAAqB;;;;;;;IAAnB,UAAoB,OAAoB,EACpB,KAA+B,EAC/B,KAAoC,EAF1D;QAEsB,IAAtB,KAAA,KAAA,KAAA,CAAA,EAAsB,EAAA,KAAtB,GAAA,IAA0D,CAA1D,EAAA;;QACA,IAAQ,MAAM,GAAoB,EAAE,CAApC;QACI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;YACtB,KAAK,GAAG,MAAM,CAAC;SAChB;QACD,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAqB,GAAG,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACnF,IAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtD,CAAH;;;;;;;;;;IAKE,UAAF,CAAA,SAAA,CAAA,oBAAsB;;;;;;IAApB,UAAqB,KAAsB,EAAE,QAA4B,EAA3E;QAAE,IAAF,KAAA,GAAA,IAAA,CAKG;QAL4C,IAA/C,QAAA,KAAA,KAAA,CAAA,EAA+C,EAAA,QAA/C,GAAA,EAA2E,CAA3E,EAAA;;QACA,IAAU,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAqB,GAAG,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAA5F;QACI,QAAQ,CAAC,OAAO;;;;QAAC,UAAA,EAAE,EAAvB;YACM,KAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SACjD,EAAC,CAAC;KACJ,CAAH;;;;;;;;;;;;;IAOE,UAAF,CAAA,SAAA,CAAA,gBAAkB;;;;;;;IAAhB,UAAiB,MAAmB,EAAtC;;QACA,IAAU,KAAK,GAAG,gBAAgB,CAAlC;;QACA,IAAQ,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAA/C;;QACA,IAAU,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC;aAC3DD,uBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,KAAK,GAAG,EAAE,CAAjF;QAEI,OAAO,CAAC,KAAK,IAAI,KAAK,EAAE,cAAc,CAAC,CAAC;KACzC,CAAH;;;;;;;;;;IAKE,UAAF,CAAA,SAAA,CAAA,oBAAsB;;;;;;IAApB,UAAqB,OAAoB,EAAE,SAAiB,EAA9D;QACI,OAAO,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KAC9C,CAAH;;;;;;;;;;IAKE,UAAF,CAAA,SAAA,CAAA,iBAAmB;;;;;;IAAjB,UAAkB,OAAoB,EAAE,SAAiB,EAA3D;QACI,OAAOD,wBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;YACxC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;KACxF,CAAH;;;;;;;;;;;;;IAME,UAAF,CAAA,SAAA,CAAA,WAAa;;;;;;;;IAAX,UAAY,OAAoB,EAAE,SAAiB,EAAE,UAAkB,EAAzE;QAAuD,IAAvD,UAAA,KAAA,KAAA,CAAA,EAAuD,EAAA,UAAvD,GAAA,KAAyE,CAAzE,EAAA;;QACA,IAAQ,KAAK,GAAG,EAAE,CAAlB;QACI,IAAI,OAAO,EAAE;;YACjB,IAAU,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAA7E;YACM,IAAI,CAAC,cAAc,EAAE;gBACnB,IAAIA,wBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;oBACvC,IAAI,CAAC,UAAU,EAAE;wBACf,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;qBAC/D;iBACF;qBAAM;oBACL,IAAI,IAAI,CAAC,mBAAmB,EAAE;wBAC5B,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;qBACvE;iBACF;aACF;SACF;;;QAID,OAAO,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;KAClC,CAAH;;;;;;;;;;;;;;;IAOU,UAAV,CAAA,SAAA,CAAA,8BAAwC;;;;;;;;;IAAtC,UAAuC,MAAuB,EACvB,OAAoB,EAD7D;QAAE,IAAF,KAAA,GAAA,IAAA,CAgBG;QAdC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO;;;;QAAC,UAAA,GAAG,EAA1C;;YACA,IAAY,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAA5B;;YACA,IAAY,MAAM,GAA+B,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAA9E;YACM,MAAM,CAAC,IAAI,EAAE,CAAC;YACd,KAAkB,IAAxB,EAAA,GAAA,CAA8B,EAAN,QAAxB,GAAA,MAA8B,EAAN,EAAxB,GAAA,QAAA,CAAA,MAA8B,EAAN,EAAxB,EAA8B,EAAE;gBAArB,IAAI,KAAK,GAApB,QAAA,CAAA,EAAA,CAAoB,CAApB;gBACQ,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;gBAChC,IAAIA,wBAAiB,CAAC,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAI,CAAC,mBAAmB,EAAE;oBACpEA,wBAAiB,CAAC,KAAI,CAAC,WAAW,CAAC;wBACjC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,KAAI,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;iBACrF;qBAAM;oBACL,KAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;iBAC/D;aACF;SACF,EAAC,CAAC;KACJ,CAAH;;;;;;;;IAEU,UAAV,CAAA,SAAA,CAAA,eAAyB;;;;;;;IAAvB,UAAwB,OAAY,EAAE,SAAiB,EAAE,UAAwB,EAAnF;QACI,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;;QAC5E,IAAU,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAtD;QACI,QAAQ,CAAC,SAAS,CAAC,GAAG,UAAU,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KAC9C,CAAH;;;;;;;IAEU,UAAV,CAAA,SAAA,CAAA,eAAyB;;;;;;IAAvB,UAAwB,OAAY,EAAE,SAAiB,EAAzD;;QACA,IAAU,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAtD;QACI,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KAClC,CAAH;;;;;;IAEU,UAAV,CAAA,SAAA,CAAA,mBAA6B;;;;;IAA3B,UAA4B,OAAY,EAA1C;;QACA,IAAU,QAAQ,GAA6B,EAAE,CAAjD;;QACA,IAAU,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAxD;QACI,IAAI,cAAc,EAAE;;YACxB,IAAY,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAnD;YACM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;gBACjD,IAAc,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAzC;gBACQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;;oBAC9B,IAAgB,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAA/C;oBACU,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;wBACrB,MAAM,IAAI,KAAK,CAAC,qBAA5B,GAAkD,KAAO,CAAC,CAAC;qBAChD;;oBACX,IAAgB,MAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAzD;oBACU,QAAQ,CAAC,MAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBACtD;aACF;SACF;QACD,OAAO,QAAQ,CAAC;KACjB,CAAH;;;;;;;IAEU,UAAV,CAAA,SAAA,CAAA,oBAA8B;;;;;;IAA5B,UAA6B,OAAY,EAAE,QAAkC,EAA/E;;QACA,IAAQ,cAAc,GAAG,EAAE,CAA3B;QACI,KAAK,IAAM,GAAG,IAAI,QAAQ,EAAE;;YAChC,IAAY,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAApC;YACM,IAAI,QAAQ,EAAE;gBACZ,cAAc,IAAI,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;aACnD;SACF;QACD,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;KAC/C,CAAH;;QAxJA,EAAA,IAAA,EAACR,eAAU,EAAX,IAAA,EAAA,CAAY,EAAC,UAAU,EAAE,MAAM,EAAC,EAAhC,EAAA;;;;QAJA,EAAA,IAAA,EAAQ,aAAa,EAArB,UAAA,EAAA,CAAA,EAAA,IAAA,EAOeO,aAAQ,EAPvB,CAAA,EAAA;QAQA,EAAA,IAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAeA,aAAQ,EAAvB,EAAA,EAAA,IAAA,EAA2BF,WAAM,EAAjC,IAAA,EAAA,CAAkC,YAAY,EAA9C,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAAwD,MAAM,EAA9D,UAAA,EAAA,CAAA,EAAA,IAAA,EAAeA,WAAM,EAArB,IAAA,EAAA,CAAsBC,gBAAW,EAAjC,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAeD,WAAM,EAArB,IAAA,EAAA,CAAsB,aAAa,EAAnC,EAAA,CAAA,EAAA;;;IArBA,OAAA,UAAA,CAAA;CAwKC,EAAD,CAAA,CAAA;;;;;;;;;;AD9JA,AAAA,IAAA;;;;;IAAA,SAAA,YAAA,GAAA;;;;QAGE,IAAF,CAAA,WAAa,GAAG,IAAI,CAAC;KAYpB;;;;;;;;;;;;;;;IAFC,YAAF,CAAA,SAAA,CAAA,UAAY;;;;;;;;;IAAV,UAAW,MAAc,EAAE,OAAwB,EAAE,OAAgB,EAAvE;KACG,CAAH;IACA,OAAA,YAAC,CAAD;CAAC,EAAD,CAAA,CAAA;;;;;;;;;;;;;;;;ADZA,SAAgB,aAAa,CAAC,KAAa,EAAE,IAAU,EAAE,MAAY,EAArE;IAA6C,IAA7C,IAAA,KAAA,KAAA,CAAA,EAA6C,EAAA,IAA7C,GAAA,GAAuD,CAAvD,EAAA;IAAyD,IAAzD,MAAA,KAAA,KAAA,CAAA,EAAyD,EAAA,MAAzD,GAAA,GAAqE,CAArE,EAAA;;IACA,IAAM,KAAK,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAnC;;IAEA,IAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAA/B;IACE,IAAI,CAAC,GAAG,CAAC,EAAE;QACT,KAAK,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;;QAC7D,IAAQ,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAtD;QACI,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;YACvB,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACtB,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;SACvB;KACF;SAAM,IAAI,CAAC,IAAI,CAAC,EAAE;QACjB,KAAK,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;KAC7C;SAAM;;QACT,IAAQ,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAlC;QACI,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,GAAG;YACrC,IAAI,EAAE,MAAM,EAAE,KAAK;SACpB,CAAC;KACP;IAED,OAAO,KAAK,CAAC;CACd;;;;;;;;;;;;;AAaD,SAAS,kBAAkB,CAAC,IAAY,EAAxC;IACE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;CACjE;;;;;;;;;;ADND,AAAA,IAAA,eAAA,kBAAA,YAAA;IAeE,SAAF,eAAA,CAAwB,UAAsB,EACtB,WAA+B,EAC/B,IAAe,EAFvC;QAAwB,IAAxB,CAAA,UAAkC,GAAV,UAAU,CAAY;QACtB,IAAxB,CAAA,WAAmC,GAAX,WAAW,CAAoB;QAC/B,IAAxB,CAAA,IAA4B,GAAJ,IAAI,CAAW;QAf7B,IAAV,CAAA,oBAA8B,GAAiB,EAAE,CAAC;QACxC,IAAV,CAAA,UAAoB,GAAe,IAAI,GAAG,EAAE,CAAC;QACnC,IAAV,CAAA,aAAuB,GAAkB,IAAI,OAAO,EAAE,CAAC;QAC7C,IAAV,CAAA,UAAoB,GAAe,IAAI,OAAO,EAAE,CAAC;;QACvC,IAAV,CAAA,SAAmB,GAAe,IAAI,OAAO,EAAE,CAAC;;QACtC,IAAV,CAAA,QAAkB,GAAe,IAAI,OAAO,EAAE,CAAC;;QAErC,IAAV,CAAA,OAAiB,GAA4B,IAAID,YAAO,EAAE,CAAC;QASvD,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;IARD,MAAF,CAAA,cAAA,CAAM,eAAN,CAAA,SAAA,EAAA,gBAAoB,EAApB;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;SAC/E;;;KAAH,CAAA,CAAG;;;;;;;;;;IAYD,eAAF,CAAA,SAAA,CAAA,aAAe;;;;;IAAb,UAAc,EAAe,EAA/B;;QACA,IAAU,EAAE,GAAsB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,CAAjE;QACI,IAAI,EAAE,EAAE;YACN,EAAE,GAAG,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAExB,IAAI,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC9D,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBAEvD,IAAI,CAAC,YAAY,EAAE,CAAC;aAErB;iBAAM,IAAI,CAAC,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;;gBAEtE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3E,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBAEvD,IAAI,CAAC,YAAY,EAAE,CAAC;aACrB;SACF;KACF,CAAH;;;;;;;;;;;;;;;;;;IAUE,eAAF,CAAA,SAAA,CAAA,IAAM;;;;;;;;;IAAJ,UAAK,OAAoB,EACpB,GAAW,EACX,QAAyB,EACzB,OAAuB,EACvB,aAAqC,EAJ5C;QAIO,IAAP,aAAA,KAAA,KAAA,CAAA,EAAO,EAAA,aAAP,GAAA,EAA4C,CAA5C,EAAA;QAEI,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QACvD,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAErD,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;KACtD,CAAH;;;;;;;;;;;;;;IAQE,eAAF,CAAA,SAAA,CAAA,QAAU;;;;;;;IAAR,UAAS,OAAoB,EAAE,GAAW,EAAE,EAAW,EAAzD;;QACA,IAAU,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAA9C;QACI,IAAI,KAAK,EAAE;;YACf,IAAY,MAAM,GAAG,EAAE,KAAK,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAA3F;YACM,IAAI,MAAM,EAAE;gBACV,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACxB;SACF;QACD,OAAO,SAAS,CAAC;KAClB,CAAH;;;;;;;;;;;;IAOE,eAAF,CAAA,SAAA,CAAA,QAAU;;;;;;IAAR,UAAS,OAAoB,EAAE,GAAW,EAA5C;;QACA,IAAU,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAA9C;QACI,IAAI,KAAK,EAAE;;YACf,IAAY,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAxD;YACM,IAAI,MAAM,EAAE;gBACV,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC;aAC/C;SACF;QACD,OAAO,KAAK,CAAC;KACd,CAAH;;;;;;;;;;;;;;;;IASE,eAAF,CAAA,SAAA,CAAA,QAAU;;;;;;;;IAAR,UAAS,OAAoB,EAAE,GAAW,EAAE,GAAQ,EAAE,EAAU,EAAlE;;QACA,IAAQ,KAAK,GAA8B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAvE;QACI,IAAI,CAAC,KAAK,EAAE;YACV,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SACrC;aAAM;;YACX,IAAY,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAA/D;YACM,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACtB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SACrC;;QACL,IAAU,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAA7C;QACI,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;SACzC;KACF,CAAH;;;;;;;;IAGE,eAAF,CAAA,SAAA,CAAA,UAAY;;;;;;IAAV,UAAW,OAAoB,EAAE,GAAW,EAA9C;QACI,OAAO,IAAI,CAAC,OAAO;aACd,YAAY,EAAE;aACd,IAAI,CAACF,gBAAM;;;;QAAC,UAAA,CAAC,EAAtB,EAA0B,OAAA,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAhE,EAAgE,EAAC,CAAC,CAAC;KAChE,CAAH;;;;;;IAGE,eAAF,CAAA,SAAA,CAAA,YAAc;;;;IAAZ,YAAF;QAAE,IAAF,KAAA,GAAA,IAAA,CAuBG;QAtBC,IAAI,CAAC,UAAU,CAAC,OAAO;;;;;QAAC,UAAC,KAAK,EAAE,EAAE,EAAtC;;YACA,IAAY,MAAM,GAAG,IAAI,GAAG,oBAAC,KAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,GAAE,CAAzD;;YACA,IAAU,QAAQ,GAAG,KAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAnD;YAEM,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,OAAO;;;;;gBAAC,UAAC,CAAC,EAAE,CAAC,EAA9B;oBACU,KAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;iBAClB,EAAC,CAAC;aACJ;YAED,MAAM,CAAC,OAAO;;;;YAAC,UAAA,CAAC,EAAtB;gBACQ,QAAQ,GAAG,KAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC7C,IAAI,QAAQ,EAAE;;oBACtB,IAAgB,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAvC;oBACU,KAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;iBAClC;qBAAM;oBACL,KAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;iBAC1B;aACF,EAAC,CAAC;SAEJ,EAAC,CAAC;KACJ,CAAH;;;;;;;;;;;;IAOE,eAAF,CAAA,SAAA,CAAA,YAAc;;;;;;IAAZ,UAAa,OAAoB,EAAE,GAAW,EAAhD;;QACA,IAAU,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAA/C;QACI,IAAI,QAAQ,EAAE;;YAClB,IAAY,OAAO,sBAAkB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAiB,CAAvE;YACM,IAAI,CAAC,CAAC,OAAO,EAAE;gBACb,OAAO,EAAE,CAAC;gBACV,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,OAAO,EAAlC,OAAkC,EAAE,GAAG,EAAvC,GAAuC,EAAE,KAAK,EAAE,EAAE,EAAC,CAAC,CAAC;aAC9C;SACF;KACF,CAAH;;;;;;;;;;;;;;IAQE,eAAF,CAAA,SAAA,CAAA,aAAe;;;;;;;IAAb,UAAc,OAAoB,EAAE,GAAW,EAAE,KAAU,EAA7D;;QACA,IAAU,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAhD;QACI,IAAI,QAAQ,EAAE;;YAClB,IAAY,QAAQ,sBAAmB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAkB,CAA1E;YACM,IAAI,CAAC,CAAC,QAAQ,EAAE;gBACd,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,OAAO,EAAlC,OAAkC,EAAE,GAAG,EAAvC,GAAuC,EAAE,KAAK,EAA9C,KAA8C,EAAC,CAAC,CAAC;aAC1C;SACF;KACF,CAAH;;;;;;;;;;IAME,eAAF,CAAA,SAAA,CAAA,cAAgB;;;;;IAAd,UAAe,OAAoB,EAArC;;QACA,IAAU,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAnD;QACI,IAAI,UAAU,EAAE;YACd,UAAU,CAAC,OAAO;;;;YAAC,UAAA,CAAC,EAA1B,EAA8B,OAAA,CAAC,CAAC,WAAW,EAAE,CAA7C,EAA6C,EAAC,CAAC;YACzC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACjC;;QACL,IAAU,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAnD;QACI,IAAI,UAAU,EAAE;YACd,UAAU,CAAC,OAAO;;;;;YAAC,UAAC,CAAC,EAAE,CAAC,EAA9B,EAAmC,OAAA,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAvD,EAAuD,EAAC,CAAC;YACnD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACjC;KACF,CAAH;;;;;;;;;;;;IAOE,eAAF,CAAA,SAAA,CAAA,aAAe;;;;;;IAAb,UAAc,OAAoB,EAAE,GAAY,EAAlD;QAAE,IAAF,KAAA,GAAA,IAAA,CAYG;;QAXH,IAAU,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAA9C;QACI,IAAI,KAAK,EAAE;;YACf,IAAY,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAA1D;YACM,IAAI,QAAQ,EAAE;gBACZ,IAAI,GAAG,EAAE;oBACP,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;iBACrD;qBAAM;oBACL,QAAQ,CAAC,OAAO;;;;;oBAAC,UAAC,CAAC,EAAE,CAAC,EAAhC,EAAqC,OAAA,KAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAtE,EAAsE,EAAC,CAAC;iBAC/D;aACF;SACF;KACF,CAAH;;;;;;;;;IAGU,eAAV,CAAA,SAAA,CAAA,kBAA4B;;;;;;;IAA1B,UAA2B,OAAoB,EAAE,GAAW,EAA9D;;QACA,IAAQ,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAhD;QACI,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;SACzC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KACjB,CAAH;;;;;;;;;;;;;;;;;;IAQU,eAAV,CAAA,SAAA,CAAA,kBAA4B;;;;;;;;;;;IAA1B,UAA2B,OAAoB,EACpB,GAAW,EACX,QAA2B,EAFxD;QAAE,IAAF,KAAA,GAAA,IAAA,CAkBG;QAfC,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE;;YACrC,IAAU,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAjD;YACM,IAAI,CAAC,QAAQ,EAAE;gBACb,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;gBACrB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;aACxC;;YACP,IAAY,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAA5C;YACM,IAAI,CAAC,YAAY,EAAE;;gBACzB,IAAc,eAAe,GAAGC,UAAK,CAArC,KAAA,CAAA,KAAA,CAAA,EAAyC,QAAQ,CAAjD,CAAmD,SAAS;;;gBAAC,YAA7D;;oBACA,IAAgB,YAAY,GAAG,KAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAA1D;oBACU,KAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;iBAChD,EAAC,CAAV;gBACQ,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;aACpC;SACF;KACF,CAAH;;;;;;;;IAGU,eAAV,CAAA,SAAA,CAAA,WAAqB;;;;;;IAAnB,UAAoB,KAAa,EAAnC;QACI,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KAC5C,CAAH;;;;;;;;;;;;;IAOU,eAAV,CAAA,SAAA,CAAA,kBAA4B;;;;;;;IAA1B,UAA2B,KAAoB,EAAE,GAAY,EAA/D;QACI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;YAC/D,IAAY,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAtD;;YACA,IAAY,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAnD;YACM,IAAI,QAAQ,EAAE;gBACZ,IAAI,GAAG,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBAC1C,OAAO,QAAQ,CAAC;iBACjB;aACF;SACF;;QACL,IAAU,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAlC;QACI,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ,GAAG,SAAS,CAAC;KACpF,CAAH;;;;;;;;;IAKU,eAAV,CAAA,SAAA,CAAA,kBAA4B;;;;;IAA1B,YAAF;;QACA,IAAU,MAAM,yCAAG,IAAI,IAAyB,CAAhD;;QACA,IAAU,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG;;;;QAAC,UAAA,EAAE,EAAjD,EAAqD,OAAA,EAAE,CAAC,UAAU,CAAlE,EAAkE,EAAC,CAAnE;QAEI,IAAI,CAAC,UAAU;aACV,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;aAC1C,IAAI,CACDF,aAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EACtCC,gBAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CACvC;aACA,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC/C,CAAH;;QA3SA,EAAA,IAAA,EAACF,eAAU,EAAX,IAAA,EAAA,CAAY,EAAC,UAAU,EAAE,MAAM,EAAC,EAAhC,EAAA;;;;QA5BA,EAAA,IAAA,EAAQ,UAAU,EAAlB;QADA,EAAA,IAAA,EAAQ,kBAAkB,EAA1B;QAIA,EAAA,IAAA,EAAQ,SAAS,EAAjB;;;IAlBA,OAAA,eAAA,CAAA;CAwVC,EAAD,CAAA,CAAC;;;;;;;;AAED,SAAS,cAAc,CAACD,MAAe,EACf,OAAoB,EACpB,GAAW,EACX,KAAsC,EAH9D;IAIE,IAAI,KAAK,KAAK,SAAS,EAAE;;QAC3B,IAAQ,MAAM,GAAGA,MAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAjC;QACI,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACnBA,MAAG,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;SAC1B;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KACxB;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/bundles/flex-layout-core.umd.min.js b/bundles/flex-layout-core.umd.min.js index d0a611a96..392035126 100644 --- a/bundles/flex-layout-core.umd.min.js +++ b/bundles/flex-layout-core.umd.min.js @@ -5,6 +5,6 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/common"),require("rxjs"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@angular/flex-layout/core",["exports","@angular/core","@angular/common","rxjs","rxjs/operators"],e):e((t.ng=t.ng||{},t.ng["flex-layout"]=t.ng["flex-layout"]||{},t.ng["flex-layout"].core={}),t.ng.core,t.ng.common,t.rxjs,t.rxjs.operators)}(this,function(t,e,i,r,n){"use strict";function o(t,e){function i(){this.constructor=t}w(t,e),t.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}function a(t,e){return function(){if(i.isPlatformBrowser(e)){var r=/\bflex-layout-.+?\b/g;Array.from(t.querySelectorAll("[class*="+j+"]")).forEach(function(t){t.classList.contains(j+"ssr")&&t.parentNode?t.parentNode.removeChild(t):t.className.replace(r,"")})}}}function s(t){for(var e=[],i=1;i0?t.charAt(0):"",i=t.length>1?t.slice(1):"";return e.toUpperCase()+i}function p(t){return t.replace(D,"|").split("|").map(u).join("")}function c(t){return t.forEach(function(t){t.suffix||(t.suffix=p(t.alias),t.overlapping=!!t.overlapping)}),t}function l(t,e){void 0===e&&(e=[]);var i={};return t.forEach(function(t){i[t.alias]=t}),e.forEach(function(t){i[t.alias]?s(i[t.alias],t):i[t.alias]=t}),c(Object.keys(i).map(function(t){return i[t]}))}function y(t,e){var i=t.priority||0;return(e.priority||0)-i}function f(t,e){var i=t.filter(function(t){return!W[t]});if(i.length>0){var r=i.join(", ");try{var n=e.createElement("style");if(n.setAttribute("type","text/css"),!n.styleSheet){var o="\n/*\n @angular/flex-layout - workaround for possible browser quirk with mediaQuery listeners\n see http://bit.ly/2sd4HMP\n*/\n@media "+r+" {.fx-query-test{ }}\n";n.appendChild(e.createTextNode(o))}e.head.appendChild(n),i.forEach(function(t){return W[t]=n})}catch(t){console.error(t)}}}function h(t,e){return e&&!!window.matchMedia("all").addListener?window.matchMedia(t):{matches:"all"===t||""===t,media:t,addListener:function(){},removeListener:function(){}}}function d(t,e){return s(t,e?{mqAlias:e.alias,suffix:e.suffix}:{})}function v(t){var e=m(t);return b(e[0],e[1],e[2])}function m(t){t=t?t.toLowerCase():"";var e=t.split(" "),i=e[0],r=e[1],n=e[2];return J.find(function(t){return t===i})||(i=J[0]),r===G&&(r=n!==G?n:"",n=G),[i,g(r),!!n]}function g(t){if(t)switch(t.toLowerCase()){case"reverse":case"wrap-reverse":case"reverse-wrap":t="wrap-reverse";break;case"no":case"none":case"nowrap":t="nowrap";break;default:t="wrap"}return t}function b(t,e,i){return void 0===e&&(e=null),void 0===i&&(i=!1),{display:i?"inline-flex":"flex","box-sizing":"border-box","flex-direction":t,"flex-wrap":e||null}}function _(t){for(var e in t){var i=t[e]||"";switch(e){case"display":t.display="flex"===i?["-webkit-flex","flex"]:"inline-flex"===i?["-webkit-inline-flex","inline-flex"]:i;break;case"align-items":case"align-self":case"align-content":case"flex":case"flex-basis":case"flex-flow":case"flex-grow":case"flex-shrink":case"flex-wrap":case"justify-content":t["-webkit-"+e]=i;break;case"flex-direction":i=i||"row",t["-webkit-flex-direction"]=i,t["flex-direction"]=i;break;case"order":t.order=t["-webkit-"+e]=isNaN(+i)?"0":i}}return t}function E(t,e,i){void 0===e&&(e="1"),void 0===i&&(i="1");var r=[e,i,t],n=t.indexOf("calc");if(n>0){r[2]=I(t.substring(n).trim());var o=t.substr(0,n).trim().split(" ");2==o.length&&(r[0]=o[0],r[1]=o[1])}else if(0==n)r[2]=I(t.trim());else{var o=t.split(" ");r=3===o.length?o:[e,i,t]}return r}function I(t){return t.replace(/[\s]/g,"").replace(/[\/\*\+\-]/g," $& ")}function A(t,e,i,r){if(void 0!==r){var n=t.get(e);n||(n=new Map,t.set(e,n)),n.set(i,r)}}var w=function(t,e){return(w=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(t,e)},M=function(){return M=Object.assign||function(t){for(var e,i=1,r=arguments.length;i0&&f(i,this._document),i.forEach(function(t){var i=function(i){e._zone.run(function(){return e._source.next(new F(i.matches,t))})},r=e._registry.get(t);r||("print"===t&&window.addEventListener("beforeprint",function(){i({mediaQuery:t,matches:!0})}),r=e._buildMQL(t),r.addListener(i),e._registry.set(t,r)),r.matches&&i(r)})},t.prototype._buildMQL=function(t){return h(t,i.isPlatformBrowser(this._platformId))},t.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[{type:e.NgZone},{type:Object,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]},{type:void 0,decorators:[{type:e.Inject,args:[i.DOCUMENT]}]}]},t.ngInjectableDef=e.defineInjectable({factory:function(){return new t(e.inject(e.NgZone),e.inject(e.PLATFORM_ID),e.inject(i.DOCUMENT))},token:t,providedIn:"root"}),t}(),W={},U=function(){function t(){}return t}(),z=function(){function t(t,e){this.breakpoints=t,this.mediaWatcher=e,this.filterOverlaps=!0,this._registerBreakPoints(),this.observable$=this._buildObservable()}return t.prototype.isActive=function(t){return this.mediaWatcher.isActive(this._toMediaQuery(t))},t.prototype.subscribe=function(t,e,i){return t&&"object"==typeof t?this.observable$.subscribe(t.next,t.error,t.complete):this.observable$.subscribe(t,e,i)},t.prototype.asObservable=function(){return this.observable$},t.prototype._registerBreakPoints=function(){var t=this.breakpoints.sortedItems.map(function(t){return t.mediaQuery});this.mediaWatcher.registerQuery(t)},t.prototype._buildObservable=function(){var t=this,e=function(e){var i=t.breakpoints.findByQuery(e.mediaQuery);return!i||!(t.filterOverlaps&&i.overlapping)};return this.mediaWatcher.observe().pipe(n.filter(function(t){return t.matches}),n.filter(e),n.map(function(e){return d(e,t._findByQuery(e.mediaQuery))}))},t.prototype._findByAlias=function(t){return this.breakpoints.findByAlias(t)},t.prototype._findByQuery=function(t){return this.breakpoints.findByQuery(t)},t.prototype._toMediaQuery=function(t){var e=this._findByAlias(t)||this._findByQuery(t);return e?e.mediaQuery:t},t.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[{type:N},{type:q}]},t.ngInjectableDef=e.defineInjectable({factory:function(){return new t(e.inject(N),e.inject(q))},token:t,providedIn:"root"}),t}(),$={provide:U,useClass:z},Y=function(){function t(){}return t.decorators=[{type:e.NgModule,args:[{providers:[x,$]}]}],t}(),H=function(){function t(){this.stylesheet=new Map}return t.prototype.addStyleToElement=function(t,e,i){var r=this.stylesheet.get(t);r?r.set(e,i):this.stylesheet.set(t,new Map([[e,i]]))},t.prototype.clearStyles=function(){this.stylesheet.clear()},t.prototype.getStyleForElement=function(t,e){var i=this.stylesheet.get(t),r="";if(i){var n=i.get(e);"number"!=typeof n&&"string"!=typeof n||(r=n+"")}return r},t.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],t.ngInjectableDef=e.defineInjectable({factory:function(){return new t},token:t,providedIn:"root"}),t}(),Z=new e.InjectionToken("FlexLayoutServerLoaded",{providedIn:"root",factory:function(){return!1}}),G="inline",J=["row","column","row-reverse","column-reverse"],X=function(){function t(t,e,i){this.baseKey=t,this.defaultValue=e,this.inputKeys=i}return t}(),tt=function(){function t(t,e,i){this._options=t,this._mediaMonitor=e,this._onMediaChanges=i,this._activatedInputKey="",this._registryMap=this._buildRegistryMap(),this._subscribers=this._configureChangeObservers()}return Object.defineProperty(t.prototype,"registryFromLargest",{get:function(){return this._registryMap.slice().reverse()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"activatedInputKey",{get:function(){return this._activatedInputKey||this._options.baseKey},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"activatedInput",{get:function(){var t=this.activatedInputKey;return this.hasKeyValue(t)?this._lookupKeyValue(t):this._options.defaultValue},enumerable:!0,configurable:!0}),t.prototype.hasKeyValue=function(t){return void 0!==this._options.inputKeys[t]},t.prototype.destroy=function(){this._subscribers.forEach(function(t){return t.unsubscribe()}),this._subscribers=[]},t.prototype._configureChangeObservers=function(){var t=this,e=[];return this._registryMap.forEach(function(i){if(t._keyInUse(i.key)){var r=function(e){return e=e.clone(),e.property=t._options.baseKey,e};e.push(t._mediaMonitor.observe(i.alias).pipe(n.map(r)).subscribe(function(e){t._onMonitorEvents(e)}))}}),e},t.prototype._buildRegistryMap=function(){var t=this;return this._mediaMonitor.breakpoints.map(function(e){return s({},e,{baseKey:t._options.baseKey,key:t._options.baseKey+e.suffix})}).filter(function(e){return t._keyInUse(e.key)})},t.prototype._onMonitorEvents=function(t){t.property===this._options.baseKey&&(t.value=this._calculateActivatedValue(t),this._onMediaChanges(t))},t.prototype._keyInUse=function(t){return void 0!==this._lookupKeyValue(t)},t.prototype._calculateActivatedValue=function(t){var e=this._options.baseKey+t.suffix,i=this._activatedInputKey;return i=t.matches?e:i===e?"":i,this._activatedInputKey=this._validateInputKey(i),this.activatedInput},t.prototype._validateInputKey=function(t){var e=this,i=function(t){return!e._keyInUse(t)};return i(t)&&this._mediaMonitor.activeOverlaps.some(function(r){var n=e._options.baseKey+r.suffix;return!i(n)&&(t=n,!0)}),t},t.prototype._lookupKeyValue=function(t){return this._options.inputKeys[t]},t}(),et=function(){function t(t,e,i,r){this._mediaMonitor=t,this._elementRef=e,this._styler=i,this._styleBuilder=r,this._inputMap={},this._hasInitialized=!1,this._styleCache=new Map}return Object.defineProperty(t.prototype,"activatedValue",{get:function(){return this._mqActivation?this._mqActivation.activatedInput:void 0},set:function(t){var i,r,n="baseKey";this._mqActivation&&(n=this._mqActivation.activatedInputKey,r=this._inputMap[n],this._inputMap[n]=t);var o=new e.SimpleChange(r,t,!1);this.ngOnChanges((i={},i[n]=o,i))},enumerable:!0,configurable:!0}),t.prototype.hasResponsiveAPI=function(t){return Object.keys(this._inputMap).length-(this._inputMap[t]?1:0)>0},t.prototype.ngOnInit=function(){this._hasInitialized=!0},t.prototype.ngOnChanges=function(t){throw new Error("BaseDirective::ngOnChanges should be overridden in subclass: "+t)},t.prototype.ngOnDestroy=function(){this._mqActivation&&this._mqActivation.destroy(),delete this._mediaMonitor},Object.defineProperty(t.prototype,"parentElement",{get:function(){return this._elementRef.nativeElement.parentNode},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"nativeElement",{get:function(){return this._elementRef.nativeElement},enumerable:!0,configurable:!0}),t.prototype.addStyles=function(t,e){var i=this._styleBuilder,r=i.shouldCache,n=this._styleCache.get(t);n&&r||(n=i.buildStyles(t,e),r&&this._styleCache.set(t,n)),this._applyStyleToElement(n),i.sideEffect(t,n,e)},t.prototype._queryInput=function(t){return this._inputMap[t]},t.prototype._getDefaultVal=function(t,e){var i=this._queryInput(t);return void 0!==i&&null!==i&&""!==i?i:e},t.prototype._getDisplayStyle=function(t){void 0===t&&(t=this.nativeElement);return this._styler.lookupStyle(t,"display")},t.prototype._getAttributeValue=function(t,e){return void 0===e&&(e=this.nativeElement),this._styler.lookupAttributeValue(e,t)},t.prototype._getFlexFlowDirection=function(t,e){if(void 0===e&&(e=!1),t){var i=this._styler.getFlowDirection(t),r=i[0];if(!i[1]&&e){var n=v(r),o=[t];this._styler.applyStyleToElements(n,o)}return r.trim()}return"row"},t.prototype._applyStyleToElement=function(t,e,i){void 0===i&&(i=this.nativeElement),this._styler.applyStyleToElement(i,t,e)},t.prototype._applyStyleToElements=function(t,e){this._styler.applyStyleToElements(t,e)},t.prototype._cacheInput=function(t,e){if("object"==typeof e)for(var i in e)this._inputMap[i]=e[i];else t&&(this._inputMap[t]=e)},t.prototype._listenForMediaQueryChanges=function(t,e,i){if(!this._mqActivation){var r=new X(t,e,this._inputMap);this._mqActivation=new tt(r,this._mediaMonitor,function(t){return i(t)})}return this._mqActivation},Object.defineProperty(t.prototype,"childrenNodes",{get:function(){for(var t=this.nativeElement.children,e=[],i=t.length;i--;)e[i]=t[i];return e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"hasInitialized",{get:function(){return this._hasInitialized},enumerable:!0,configurable:!0}),t}(),it=function(t){function e(e,i,r,n){var o=t.call(this,i,r,n)||this;return o._baseKey=e,o._mediaMonitor=i,o._elementRef=r,o._styler=n,o}return o(e,t),Object.defineProperty(e.prototype,"activeKey",{get:function(){var t=this._mqActivation,e=t?t.activatedInputKey:this._baseKey;return"class"===e?"klazz":e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"inputMap",{get:function(){return this._inputMap},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"mqActivation",{get:function(){return this._mqActivation},enumerable:!0,configurable:!0}),e.prototype.hasResponsiveAPI=function(){return t.prototype.hasResponsiveAPI.call(this,this._baseKey)},e.prototype.queryInput=function(t){return t?this._queryInput(t):void 0},e.prototype.cacheInput=function(t,e,i){if(void 0===i&&(i=!1),i)this._cacheInputRaw(t,e);else if(Array.isArray(e))this._cacheInputArray(t,e);else if("object"==typeof e)this._cacheInputObject(t,e);else{if("string"!=typeof e)throw new Error("Invalid class value '"+t+"' provided. Did you want to cache the raw value?");this._cacheInputString(t,e)}},e.prototype.listenForMediaQueryChanges=function(t,e,i){return this._listenForMediaQueryChanges(t,e,i)},e.prototype._cacheInputRaw=function(t,e){t&&(this._inputMap[t]=e)},e.prototype._cacheInputArray=function(t,e){void 0===t&&(t=""),this._inputMap[t]=e?e.join(" "):""},e.prototype._cacheInputObject=function(t,e){void 0===t&&(t="");var i=[];if(e)for(var r in e)e[r]&&i.push(r);this._inputMap[t]=i.join(" ")},e.prototype._cacheInputString=function(t,e){void 0===t&&(t=""),this._inputMap[t]=e},e}(et),rt=function(){function t(t,e,i,n){this.elementRef=t,this.styleBuilder=e,this.styler=i,this.marshal=n,this.DIRECTIVE_KEY="",this.inputs=[],this.mru={},this.destroySubject=new r.Subject,this.styleCache=new Map}return Object.defineProperty(t.prototype,"parentElement",{get:function(){return this.elementRef.nativeElement.parentElement},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"nativeElement",{get:function(){return this.elementRef.nativeElement},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"activatedValue",{get:function(){return this.marshal.getValue(this.nativeElement,this.DIRECTIVE_KEY)},set:function(t){this.marshal.setValue(this.nativeElement,this.DIRECTIVE_KEY,t,this.marshal.activatedBreakpoint)},enumerable:!0,configurable:!0}),t.prototype.ngOnChanges=function(t){var e=this;Object.keys(t).forEach(function(i){if(-1!==e.inputs.indexOf(i)){var r=i.split(".").slice(1).join("."),n=t[i].currentValue;e.setValue(n,r)}})},t.prototype.ngOnDestroy=function(){this.destroySubject.next(),this.destroySubject.complete(),this.marshal.releaseElement(this.nativeElement)},t.prototype.init=function(t){void 0===t&&(t=[]),this.marshal.init(this.elementRef.nativeElement,this.DIRECTIVE_KEY,this.updateWithValue.bind(this),this.clearStyles.bind(this),t)},t.prototype.addStyles=function(t,e){var i=this.styleBuilder,r=i.shouldCache,n=this.styleCache.get(t);n&&r||(n=i.buildStyles(t,e),r&&this.styleCache.set(t,n)),this.mru=M({},n),this.applyStyleToElement(n),i.sideEffect(t,n,e)},t.prototype.clearStyles=function(){var t=this;Object.keys(this.mru).forEach(function(e){t.mru[e]=""}),this.applyStyleToElement(this.mru),this.mru={}},t.prototype.triggerUpdate=function(){var t=this.marshal.getValue(this.nativeElement,this.DIRECTIVE_KEY);this.marshal.updateElement(this.nativeElement,this.DIRECTIVE_KEY,t)},t.prototype.getFlexFlowDirection=function(t,e){if(void 0===e&&(e=!1),t){var i=this.styler.getFlowDirection(t),r=i[0];if(!i[1]&&e){var n=v(r),o=[t];this.styler.applyStyleToElements(n,o)}return r.trim()}return"row"},t.prototype.applyStyleToElement=function(t,e,i){void 0===i&&(i=this.nativeElement),this.styler.applyStyleToElement(i,t,e)},t.prototype.setValue=function(t,e){this.marshal.setValue(this.nativeElement,this.DIRECTIVE_KEY,t,e)},t.prototype.updateWithValue=function(t){this.addStyles(t)},t}(),nt=function(t){function r(e,i,r,n){var o=t.call(this,e,i,r)||this;return o._breakpoints=n,o.autoRegisterQueries=!0,o.useOverlaps=!1,o._registry=new Map,o._actives=[],o}return o(r,t),r.prototype.clearAll=function(){this._registry.forEach(function(t){t.destroy()}),this._registry.clear(),this.useOverlaps=!1},r.prototype.activate=function(t,e){return void 0===e&&(e=!1),e=e||this.useOverlaps,t=this._validateQuery(t),!e&&this.isActive(t)||(this._deactivateAll(),this._registerMediaQuery(t),this._activateWithOverlaps(t,e)),this.hasActivated},r.prototype._validateQuery=function(t){var e=this._breakpoints.findByAlias(t);return e&&e.mediaQuery||t},r.prototype._activateWithOverlaps=function(t,e){if(e){var i=this._breakpoints.findByQuery(t),r=i?i.alias:"unknown";switch(r){case"lg":this._activateByAlias("lt-xl");break;case"md":this._activateByAlias("lt-xl, lt-lg");break;case"sm":this._activateByAlias("lt-xl, lt-lg, lt-md");break;case"xs":this._activateByAlias("lt-xl, lt-lg, lt-md, lt-sm")}switch(r){case"xl":this._activateByAlias("gt-lg, gt-md, gt-sm, gt-xs");break;case"lg":this._activateByAlias("gt-md, gt-sm, gt-xs");break;case"md":this._activateByAlias("gt-sm, gt-xs");break;case"sm":this._activateByAlias("gt-xs")}}return this._activateByQuery(t)},r.prototype._activateByAlias=function(t){var e=this,i=function(t){var i=e._breakpoints.findByAlias(t);e._activateByQuery(i?i.mediaQuery:t)};t.split(",").forEach(function(t){return i(t.trim())})},r.prototype._activateByQuery=function(t){var e=this._registry.get(t),i=this._actives.reduce(function(t,i){return t||!!e&&i.media===e.media},!1);return e&&!i&&this._actives.push(e.activate()),this.hasActivated},r.prototype._deactivateAll=function(){if(this._actives.length){for(var t=0,e=this._actives;t0},enumerable:!0,configurable:!0}),r.decorators=[{type:e.Injectable}],r.ctorParameters=function(){return[{type:e.NgZone},{type:Object,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]},{type:void 0,decorators:[{type:e.Inject,args:[i.DOCUMENT]}]},{type:N}]},r}(q),ot=function(){function t(t){this._mediaQuery=t,this._isActive=!1,this._listeners=[],this.onchange=null}return Object.defineProperty(t.prototype,"matches",{get:function(){return this._isActive},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"media",{get:function(){return this._mediaQuery},enumerable:!0,configurable:!0}),t.prototype.destroy=function(){this.deactivate(),this._listeners=[]},t.prototype.activate=function(){var t=this;return this._isActive||(this._isActive=!0,this._listeners.forEach(function(e){e.call(null,t)})),this},t.prototype.deactivate=function(){var t=this;return this._isActive&&(this._isActive=!1,this._listeners.forEach(function(e){e.call(null,t)})),this},t.prototype.addListener=function(t){if(-1===this._listeners.indexOf(t)&&this._listeners.push(t),this._isActive){t.call(null,this)}},t.prototype.removeListener=function(t){},t.prototype.addEventListener=function(t,e,i){},t.prototype.removeEventListener=function(t,e,i){},t.prototype.dispatchEvent=function(t){return!1},t}(),at={provide:q,useClass:nt},st=function(){function t(t){this._mediaQuery=t,this._isActive=!1,this._listeners=[],this.onchange=null}return Object.defineProperty(t.prototype,"matches",{get:function(){return this._isActive},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"media",{get:function(){return this._mediaQuery},enumerable:!0,configurable:!0}),t.prototype.destroy=function(){this.deactivate(),this._listeners=[]},t.prototype.activate=function(){var t=this;return this._isActive||(this._isActive=!0,this._listeners.forEach(function(e){e.call(null,t)})),this},t.prototype.deactivate=function(){var t=this;return this._isActive&&(this._isActive=!1,this._listeners.forEach(function(e){e.call(null,t)})),this},t.prototype.addListener=function(t){if(-1===this._listeners.indexOf(t)&&this._listeners.push(t),this._isActive){t.call(null,this)}},t.prototype.removeListener=function(t){},t.prototype.addEventListener=function(t,e,i){},t.prototype.removeEventListener=function(t,e,i){},t.prototype.dispatchEvent=function(t){return!1},t}(),ut=function(t){function r(e,i,r){var n=t.call(this,e,i,r)||this;return n._zone=e,n._platformId=i,n._document=r,n._registry=new Map,n}return o(r,t),r.prototype.activateBreakpoint=function(t){var e=this._registry.get(t.mediaQuery);e&&e.activate()},r.prototype.deactivateBreakpoint=function(t){var e=this._registry.get(t.mediaQuery);e&&e.deactivate()},r.prototype._buildMQL=function(t){return new st(t)},r.decorators=[{type:e.Injectable}],r.ctorParameters=function(){return[{type:e.NgZone},{type:Object,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]},{type:void 0,decorators:[{type:e.Inject,args:[i.DOCUMENT]}]}]},r}(q),pt=function(){function t(t,e){this._breakpoints=t,this._matchMedia=e,this._registerBreakpoints()}return Object.defineProperty(t.prototype,"breakpoints",{get:function(){return this._breakpoints.items.slice()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"activeOverlaps",{get:function(){var t=this;return this._breakpoints.overlappings.reverse().filter(function(e){return t._matchMedia.isActive(e.mediaQuery)})},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"active",{get:function(){var t=this;return this.breakpoints.reverse().find(function(e){return""!==e.alias&&t._matchMedia.isActive(e.mediaQuery)})||null},enumerable:!0,configurable:!0}),t.prototype.isActive=function(t){var e=this._breakpoints.findByAlias(t)||this._breakpoints.findByQuery(t);return this._matchMedia.isActive(e?e.mediaQuery:t)},t.prototype.observe=function(t){void 0===t&&(t="");var e=this._breakpoints.findByAlias(t)||this._breakpoints.findByQuery(t),i=function(t){return!e||""!==t.mqAlias};return this._matchMedia.observe(e?e.mediaQuery:t).pipe(n.map(function(t){return d(t,e)}),n.filter(i))},t.prototype._registerBreakpoints=function(){var t=this._breakpoints.sortedItems.map(function(t){return t.mediaQuery});this._matchMedia.registerQuery(t)},t.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[{type:N},{type:q}]},t.ngInjectableDef=e.defineInjectable({factory:function(){return new t(e.inject(N),e.inject(q))},token:t,providedIn:"root"}),t}(),ct=function(){function t(t,e){this.breakpoints=t,this.mediaWatcher=e,this.filterOverlaps=!0,this._registerBreakPoints(),this.media$=this._buildObservable()}return t.prototype.isActive=function(t){return this.mediaWatcher.isActive(this._toMediaQuery(t))},t.prototype._registerBreakPoints=function(){var t=this.breakpoints.sortedItems.map(function(t){return t.mediaQuery});this.mediaWatcher.registerQuery(t)},t.prototype._buildObservable=function(){var t=this,e=function(e){var i=t.breakpoints.findByQuery(e.mediaQuery);return!i||!(t.filterOverlaps&&i.overlapping)};return this.mediaWatcher.observe().pipe(n.filter(function(t){return t.matches}),n.filter(e),n.map(function(e){return d(e,t._findByQuery(e.mediaQuery))}))},t.prototype._findByAlias=function(t){return this.breakpoints.findByAlias(t)},t.prototype._findByQuery=function(t){return this.breakpoints.findByQuery(t)},t.prototype._toMediaQuery=function(t){var e=this._findByAlias(t)||this._findByQuery(t);return e?e.mediaQuery:t},t.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[{type:N},{type:q}]},t.ngInjectableDef=e.defineInjectable({factory:function(){return new t(e.inject(N),e.inject(q))},token:t,providedIn:"root"}),t}(),lt=function(){function t(t,e,i,r){this._serverStylesheet=t,this._serverModuleLoaded=e,this._platformId=i,this.layoutConfig=r}return t.prototype.applyStyleToElement=function(t,e,i){void 0===i&&(i=null);var r={};"string"==typeof e&&(r[e]=i,e=r),r=this.layoutConfig.disableVendorPrefixes?e:_(e),this._applyMultiValueStyleToElement(r,t)},t.prototype.applyStyleToElements=function(t,e){var i=this;void 0===e&&(e=[]);var r=this.layoutConfig.disableVendorPrefixes?t:_(t);e.forEach(function(t){i._applyMultiValueStyleToElement(r,t)})},t.prototype.getFlowDirection=function(t){var e=this.lookupStyle(t,"flex-direction"),r=this.lookupInlineStyle(t,"flex-direction")||i.isPlatformServer(this._platformId)&&this._serverModuleLoaded?e:"";return[e||"row",r]},t.prototype.lookupAttributeValue=function(t,e){return t.getAttribute(e)||""},t.prototype.lookupInlineStyle=function(t,e){return i.isPlatformBrowser(this._platformId)?t.style.getPropertyValue(e):this._getServerStyle(t,e)},t.prototype.lookupStyle=function(t,e,r){void 0===r&&(r=!1);var n="";if(t){(n=this.lookupInlineStyle(t,e))||(i.isPlatformBrowser(this._platformId)?r||(n=getComputedStyle(t).getPropertyValue(e)):this._serverModuleLoaded&&(n=this._serverStylesheet.getStyleForElement(t,e)))}return n.trim()},t.prototype._applyMultiValueStyleToElement=function(t,e){var r=this;Object.keys(t).sort().forEach(function(n){var o=t[n],a=Array.isArray(o)?o:[o];a.sort();for(var s=0,u=a;s0){var a=o.indexOf(":");if(-1===a)throw new Error("Invalid CSS style: "+o);var s=o.substr(0,a).trim();e[s]=o.substr(a+1).trim()}}return e},t.prototype._writeStyleAttribute=function(t,e){var i="";for(var r in e){e[r]&&(i+=r+":"+e[r]+";")}t.setAttribute("style",i)},t.decorators=[{type:e.Injectable,args:[{ -providedIn:"root"}]}],t.ctorParameters=function(){return[{type:H,decorators:[{type:e.Optional}]},{type:Boolean,decorators:[{type:e.Optional},{type:e.Inject,args:[Z]}]},{type:Object,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]},{type:void 0,decorators:[{type:e.Inject,args:[K]}]}]},t.ngInjectableDef=e.defineInjectable({factory:function(){return new t(e.inject(H,8),e.inject(Z,8),e.inject(e.PLATFORM_ID),e.inject(K))},token:t,providedIn:"root"}),t}(),yt=function(){function t(){this.shouldCache=!0}return t.prototype.sideEffect=function(t,e,i){},t}(),ft=function(){function t(t,e){this.matchMedia=t,this.breakpoints=e,this.activatedBreakpoints=[],this.elementMap=new Map,this.elementKeyMap=new WeakMap,this.watcherMap=new WeakMap,this.builderMap=new WeakMap,this.clearBuilderMap=new WeakMap,this.subject=new r.Subject,this.matchMedia.observe().subscribe(this.activate.bind(this)),this.registerBreakpoints()}return Object.defineProperty(t.prototype,"activatedBreakpoint",{get:function(){return this.activatedBreakpoints[0]?this.activatedBreakpoints[0].alias:""},enumerable:!0,configurable:!0}),t.prototype.activate=function(t){var e=this.findByQuery(t.mediaQuery);e&&(t.matches&&-1===this.activatedBreakpoints.indexOf(e)?(this.activatedBreakpoints.push(e),this.activatedBreakpoints.sort(y),this.updateStyles()):t.matches||-1===this.activatedBreakpoints.indexOf(e)||(this.activatedBreakpoints.splice(this.activatedBreakpoints.indexOf(e),1),this.updateStyles()))},t.prototype.init=function(t,e,i,r,n){void 0===n&&(n=[]),this.buildElementKeyMap(t,e),A(this.builderMap,t,e,i),A(this.clearBuilderMap,t,e,r),this.watchExtraTriggers(t,e,n)},t.prototype.getValue=function(t,e,i){var r=this.elementMap.get(t);if(r){var n=void 0!==i?r.get(i):this.getFallback(r,e);if(n){var o=n.get(e);return void 0!==o?o:""}}return""},t.prototype.hasValue=function(t,e){var i=this.elementMap.get(t);if(i){var r=this.getFallback(i,e);if(r)return void 0!==r.get(e)||!1}return!1},t.prototype.setValue=function(t,e,i,r){var n=this.elementMap.get(t);if(n){var o=(n.get(r)||new Map).set(e,i);n.set(r,o),this.elementMap.set(t,n)}else n=(new Map).set(r,(new Map).set(e,i)),this.elementMap.set(t,n);this.updateElement(t,e,this.getValue(t,e))},t.prototype.trackValue=function(t,e){return this.subject.asObservable().pipe(n.filter(function(i){return i.element===t&&i.key===e}))},t.prototype.updateStyles=function(){var t=this;this.elementMap.forEach(function(e,i){var r=t.getFallback(e),n=new Set(t.elementKeyMap.get(i));r&&r.forEach(function(e,r){t.updateElement(i,r,e),n.delete(r)}),n.forEach(function(r){var n=t.getFallback(e,r);if(n){var o=n.get(r);t.updateElement(i,r,o)}else t.clearElement(i,r)})})},t.prototype.clearElement=function(t,e){var i=this.clearBuilderMap.get(t);if(i){var r=i.get(e);r&&(r(),this.subject.next({element:t,key:e,value:""}))}},t.prototype.updateElement=function(t,e,i){var r=this.builderMap.get(t);if(r){var n=r.get(e);n&&(n(i),this.subject.next({element:t,key:e,value:i}))}},t.prototype.releaseElement=function(t){var e=this.watcherMap.get(t);e&&(e.forEach(function(t){return t.unsubscribe()}),this.watcherMap.delete(t));var i=this.elementMap.get(t);i&&(i.forEach(function(t,e){return i.delete(e)}),this.elementMap.delete(t))},t.prototype.buildElementKeyMap=function(t,e){var i=this.elementKeyMap.get(t);i||(i=new Set,this.elementKeyMap.set(t,i)),i.add(e)},t.prototype.watchExtraTriggers=function(t,e,i){var n=this;if(i&&i.length){var o=this.watcherMap.get(t);o||(o=new Map,this.watcherMap.set(t,o));if(!o.get(e)){var a=r.merge.apply(void 0,i).subscribe(function(){var i=n.getValue(t,e);n.updateElement(t,e,i)});o.set(e,a)}}},t.prototype.findByQuery=function(t){return this.breakpoints.findByQuery(t)},t.prototype.getFallback=function(t,e){for(var i=0;i0?t.charAt(0):"",i=t.length>1?t.slice(1):"";return e.toUpperCase()+i}function d(t){return t.replace(Z,"|").split("|").map(h).join("")}function y(t){return t.forEach(function(t){t.suffix||(t.suffix=d(t.alias),t.overlapping=!!t.overlapping)}),t}function v(t,e){void 0===e&&(e=[]);var i={};return t.forEach(function(t){i[t.alias]=t}),e.forEach(function(t){i[t.alias]?f(i[t.alias],t):i[t.alias]=t}),y(Object.keys(i).map(function(t){return i[t]}))}function m(t,e){var i=t?t.priority||0:0;return(e?e.priority||0:0)-i}function g(t,e){return(t.priority||0)-(e.priority||0)}function b(t,e){var i=t.filter(function(t){return!tt[t]});if(i.length>0){var r=i.join(", ");try{var n=e.createElement("style");if(n.setAttribute("type","text/css"),!n.styleSheet){var a="\n/*\n @angular/flex-layout - workaround for possible browser quirk with mediaQuery listeners\n see http://bit.ly/2sd4HMP\n*/\n@media "+r+" {.fx-query-test{ }}\n";n.appendChild(e.createTextNode(a))}e.head.appendChild(n),i.forEach(function(t){return tt[t]=n})}catch(t){console.error(t)}}}function A(t,e){return e&&!!window.matchMedia("all").addListener?window.matchMedia(t):{matches:"all"===t||""===t,media:t,addListener:function(){},removeListener:function(){}}}function E(t){return!!t&&t.mediaQuery.startsWith(nt)}function w(t){return Array.isArray(t)?t:[t]}function x(t,e){var i=e.findByAlias(t)||e.findByQuery(t);return i?i.mediaQuery:t}function k(t){return t.map(function(t){return t.split(",")}).reduce(function(t,e){return t.concat(e)}).map(function(t){return t.trim()})}function _(t){for(var e in t){var i=t[e]||"";switch(e){case"display":t.display="flex"===i?["-webkit-flex","flex"]:"inline-flex"===i?["-webkit-inline-flex","inline-flex"]:i;break;case"align-items":case"align-self":case"align-content":case"flex":case"flex-basis":case"flex-flow":case"flex-grow":case"flex-shrink":case"flex-wrap":case"justify-content":t["-webkit-"+e]=i;break;case"flex-direction":i=i||"row",t["-webkit-flex-direction"]=i,t["flex-direction"]=i;break;case"order":t.order=t["-webkit-"+e]=isNaN(+i)?"0":i}}return t}function M(t,e,i){void 0===e&&(e="1"),void 0===i&&(i="1");var r=[e,i,t],n=t.indexOf("calc");if(n>0){r[2]=P(t.substring(n).trim());var a=t.substr(0,n).trim().split(" ");2==a.length&&(r[0]=a[0],r[1]=a[1])}else if(0==n)r[2]=P(t.trim());else{var a=t.split(" ");r=3===a.length?a:[e,i,t]}return r}function P(t){return t.replace(/[\s]/g,"").replace(/[\/\*\+\-]/g," $& ")}function B(t,e,i,r){if(void 0!==r){var n=t.get(e);n||(n=new Map,t.set(e,n)),n.set(i,r)}}var I=function(t,e){return(I=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])})(t,e)},j=function(){return j=Object.assign||function(t){for(var e,i=1,r=arguments.length;i-1})),o=new r.Observable(function(e){var r=i.registerQuery(t);if(r.length){var n=r.pop();r.forEach(function(t){e.next(t)}),i.source.next(n)}e.complete()});return r.merge(o,a)}return this._observable$},t.prototype.registerQuery=function(t){var e=this,i=Array.isArray(t)?t:[t],r=[];return b(i,this._document),i.forEach(function(t){var i=function(i){e._zone.run(function(){return e.source.next(new Q(i.matches,t))})},n=e.registry.get(t);n||(n=e.buildMQL(t),n.addListener(i),e.registry.set(t,n)),n.matches&&r.push(new Q(!0,t))}),r},t.prototype.buildMQL=function(t){return A(t,i.isPlatformBrowser(this._platformId))},t.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[{type:e.NgZone},{type:Object,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]},{type:void 0,decorators:[{type:e.Inject,args:[i.DOCUMENT]}]}]},t.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new t(e.ɵɵinject(e.NgZone),e.ɵɵinject(e.PLATFORM_ID),e.ɵɵinject(i.DOCUMENT))},token:t,providedIn:"root"}),t}(),tt={},et=function(t){function r(e,i,r,n){var a=t.call(this,e,i,r)||this;return a._breakpoints=n,a.autoRegisterQueries=!0,a.useOverlaps=!1,a}return a(r,t),r.prototype.clearAll=function(){this.registry.forEach(function(t){t.destroy()}),this.registry.clear(),this.useOverlaps=!1},r.prototype.activate=function(t,e){return void 0===e&&(e=!1),e=e||this.useOverlaps,t=this._validateQuery(t),!e&&this.isActive(t)||(this._deactivateAll(),this._registerMediaQuery(t),this._activateWithOverlaps(t,e)),this.hasActivated},r.prototype._validateQuery=function(t){var e=this._breakpoints.findByAlias(t);return e&&e.mediaQuery||t},r.prototype._activateWithOverlaps=function(t,e){if(e){var i=this._breakpoints.findByQuery(t),r=i?i.alias:"unknown";switch(r){case"lg":this._activateByAlias("lt-xl");break;case"md":this._activateByAlias("lt-xl, lt-lg");break;case"sm":this._activateByAlias("lt-xl, lt-lg, lt-md");break;case"xs":this._activateByAlias("lt-xl, lt-lg, lt-md, lt-sm")}switch(r){case"xl":this._activateByAlias("gt-lg, gt-md, gt-sm, gt-xs");break;case"lg":this._activateByAlias("gt-md, gt-sm, gt-xs");break;case"md":this._activateByAlias("gt-sm, gt-xs");break;case"sm":this._activateByAlias("gt-xs")}}return this._activateByQuery(t)},r.prototype._activateByAlias=function(t){var e=this,i=function(t){var i=e._breakpoints.findByAlias(t);e._activateByQuery(i?i.mediaQuery:t)};t.split(",").forEach(function(t){return i(t.trim())})},r.prototype._activateByQuery=function(t){var e=this.registry.get(t);return e&&!this.isActive(t)&&this.registry.set(t,e.activate()),this.hasActivated},r.prototype._deactivateAll=function(){return this.registry.forEach(function(t){t.deactivate()}),this},r.prototype._registerMediaQuery=function(t){!this.registry.has(t)&&this.autoRegisterQueries&&this.registerQuery(t)},r.prototype.buildMQL=function(t){return new it(t)},Object.defineProperty(r.prototype,"hasActivated",{get:function(){return this.activations.length>0},enumerable:!0,configurable:!0}),r.decorators=[{type:e.Injectable}],r.ctorParameters=function(){return[{type:e.NgZone},{type:Object,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]},{type:void 0,decorators:[{type:e.Inject,args:[i.DOCUMENT]}]},{type:J}]},r}(X),it=function(){function t(t){this._mediaQuery=t,this._isActive=!1,this._listeners=[],this.onchange=null}return Object.defineProperty(t.prototype,"matches",{get:function(){return this._isActive},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"media",{get:function(){return this._mediaQuery},enumerable:!0,configurable:!0}),t.prototype.destroy=function(){this.deactivate(),this._listeners=[]},t.prototype.activate=function(){var t=this;return this._isActive||(this._isActive=!0,this._listeners.forEach(function(e){e.call(null,t)})),this},t.prototype.deactivate=function(){var t=this;return this._isActive&&(this._isActive=!1,this._listeners.forEach(function(e){e.call(null,t)})),this},t.prototype.addListener=function(t){if(-1===this._listeners.indexOf(t)&&this._listeners.push(t),this._isActive){t.call(null,this)}},t.prototype.removeListener=function(t){},t.prototype.addEventListener=function(t,e,i){},t.prototype.removeEventListener=function(t,e,i){},t.prototype.dispatchEvent=function(t){return!1},t}(),rt={provide:X,useClass:et},nt="print",at={alias:nt,mediaQuery:nt,priority:1e3},ot=function(){function t(t,e,i){this.breakpoints=t,this.layoutConfig=e,this._platformId=i,this.registeredBeforeAfterPrintHooks=!1,this.isPrintingBeforeAfterEvent=!1,this.isPrinting=!1,this.queue=new st,this.deactivations=[]}return t.prototype.withPrintQuery=function(t){return t.concat([nt])},t.prototype.isPrintEvent=function(t){return t.mediaQuery.startsWith(nt)},Object.defineProperty(t.prototype,"printAlias",{get:function(){return this.layoutConfig.printWithBreakpoints||[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"printBreakPoints",{get:function(){var t=this;return this.printAlias.map(function(e){return t.breakpoints.findByAlias(e)}).filter(function(t){return null!==t})},enumerable:!0,configurable:!0}),t.prototype.getEventBreakpoints=function(t){var e=t.mediaQuery,i=this.breakpoints.findByQuery(e);return(i?this.printBreakPoints.concat([i]):this.printBreakPoints).sort(m)},t.prototype.updateEvent=function(t){var e=this.breakpoints.findByQuery(t.mediaQuery);return this.isPrintEvent(t)&&(e=this.getEventBreakpoints(t)[0],t.mediaQuery=e?e.mediaQuery:""),s(t,e)},t.prototype.registerBeforeAfterPrintHooks=function(t){var e=this;i.isPlatformBrowser(this._platformId)&&!this.registeredBeforeAfterPrintHooks&&(this.registeredBeforeAfterPrintHooks=!0,window.addEventListener("beforeprint",function(){e.isPrinting||(e.isPrintingBeforeAfterEvent=!0,e.startPrinting(t,e.getEventBreakpoints(new Q(!0,nt))),t.updateStyles())}),window.addEventListener("afterprint",function(){e.isPrintingBeforeAfterEvent=!1,e.isPrinting&&(e.stopPrinting(t),t.updateStyles())}))},t.prototype.interceptEvents=function(t){var e=this;return this.registerBeforeAfterPrintHooks(t),function(i){e.isPrintEvent(i)?i.matches&&!e.isPrinting?(e.startPrinting(t,e.getEventBreakpoints(i)),t.updateStyles()):i.matches||!e.isPrinting||e.isPrintingBeforeAfterEvent||(e.stopPrinting(t),t.updateStyles()):e.collectActivations(i)}},t.prototype.blockPropagation=function(){var t=this;return function(e){return!(t.isPrinting||t.isPrintEvent(e))}},t.prototype.startPrinting=function(t,e){this.isPrinting=!0,t.activatedBreakpoints=this.queue.addPrintBreakpoints(e)},t.prototype.stopPrinting=function(t){t.activatedBreakpoints=this.deactivations,this.deactivations=[],this.queue.clear(),this.isPrinting=!1},t.prototype.collectActivations=function(t){if(!this.isPrinting||this.isPrintingBeforeAfterEvent)if(t.matches)this.isPrintingBeforeAfterEvent||(this.deactivations=[]);else{var e=this.breakpoints.findByQuery(t.mediaQuery);e&&(this.deactivations.push(e),this.deactivations.sort(m))}},t.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[{type:J},{type:void 0,decorators:[{type:e.Inject,args:[L]}]},{type:Object,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]}]},t.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new t(e.ɵɵinject(J),e.ɵɵinject(L),e.ɵɵinject(e.PLATFORM_ID))},token:t,providedIn:"root"}),t}(),st=function(){function t(){this.printBreakpoints=[]}return t.prototype.addPrintBreakpoints=function(t){var e=this;return t.push(at),t.sort(m),t.forEach(function(t){return e.addBreakpoint(t)}),this.printBreakpoints},t.prototype.addBreakpoint=function(t){if(t){void 0===this.printBreakpoints.find(function(e){return e.mediaQuery===t.mediaQuery})&&(this.printBreakpoints=E(t)?[t].concat(this.printBreakpoints):this.printBreakpoints.concat([t]))}},t.prototype.clear=function(){this.printBreakpoints=[]},t}(),ct=function(){function t(t,e,i){this.breakpoints=t,this.matchMedia=e,this.hook=i,this.filterOverlaps=!1,this.destroyed$=new r.Subject,this._media$=this.watchActivations(),this.media$=this._media$.pipe(n.filter(function(t){return t.length>0}),n.map(function(t){return t[0]}))}return t.prototype.ngOnDestroy=function(){this.destroyed$.next(),this.destroyed$.complete()},t.prototype.asObservable=function(){return this._media$},t.prototype.isActive=function(t){var e=this;return k(w(t)).some(function(t){var i=x(t,e.breakpoints);return e.matchMedia.isActive(i)})},t.prototype.watchActivations=function(){var t=this.breakpoints.items.map(function(t){return t.mediaQuery});return this.buildObservable(t)},t.prototype.buildObservable=function(t){var e=this,i=function(t){var e=function(t){return t.mediaQuery.length>0};return t.filter(e).length>0},a=function(t){return e.filterOverlaps?t.filter(function(t){var i=e.breakpoints.findByQuery(t.mediaQuery);return!i||!i.overlapping}):t};return this.matchMedia.observe(this.hook.withPrintQuery(t)).pipe(n.filter(function(t){return t.matches}),n.debounceTime(0,r.asapScheduler),n.switchMap(function(t){return r.of(e.findAllActivations())}),n.map(a),n.filter(i),n.takeUntil(this.destroyed$))},t.prototype.findAllActivations=function(){var t=this,e=function(e){return s(e,t.breakpoints.findByQuery(e.mediaQuery))},i=function(e){return t.hook.isPrintEvent(e)?t.hook.updateEvent(e):e};return this.matchMedia.activations.map(function(t){return new Q(!0,t)}).map(i).map(e).sort(m)},t.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[{type:J},{type:X},{type:ot}]},t.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new t(e.ɵɵinject(J),e.ɵɵinject(X),e.ɵɵinject(ot))},token:t,providedIn:"root"}),t}(),ut=function(){function t(t,e,i,r,n){this.breakpoints=t,this.matchMedia=e,this.layoutConfig=i,this._platformId=r,this._document=n,this.hasCachedRegistryMatches=!1,this.originalActivations=[],this.originalRegistry=new Map}return t.prototype.activate=function(t){t=t.map(function(t){return t.trim()}),this.saveActivations(),this.deactivateAll(),this.setActivations(t),this.prepareAutoRestore()},t.prototype.restore=function(){if(this.hasCachedRegistryMatches){var t=function(t){return t.mediaQuery},e=this.originalActivations.map(t);try{this.deactivateAll(),this.restoreRegistryMatches(),this.setActivations(e)}finally{this.originalActivations=[],this.resizeSubscription&&this.resizeSubscription.unsubscribe()}}},t.prototype.prepareAutoRestore=function(){if(i.isPlatformBrowser(this._platformId)&&this._document&&this.layoutConfig.mediaTriggerAutoRestore){var t=r.fromEvent(window,"resize").pipe(n.take(1));this.resizeSubscription=t.subscribe(this.restore.bind(this))}},t.prototype.deactivateAll=function(){var t=this.currentActivations;this.forceRegistryMatches(t,!1),this.simulateMediaChanges(t,!1)},t.prototype.saveActivations=function(){var t=this;if(!this.hasCachedRegistryMatches){var e=function(t){return new Q(!0,t)},i=function(e){return s(e,t.breakpoints.findByQuery(e.mediaQuery))};this.originalActivations=this.currentActivations.map(e).map(i).sort(m),this.cacheRegistryMatches()}},t.prototype.setActivations=function(t){this.originalRegistry&&this.forceRegistryMatches(t,!0),this.simulateMediaChanges(t)},t.prototype.simulateMediaChanges=function(t,e){var i=this;void 0===e&&(e=!0);var r=function(t){var e=i.breakpoints,r=e.findByAlias(t)||e.findByQuery(t);return r?r.mediaQuery:t},n=function(t){return i.emitChangeEvent(e,t)};t.map(r).forEach(n)},t.prototype.forceRegistryMatches=function(t,e){var i=new Map;t.forEach(function(t){i.set(t,{matches:e})}),this.matchMedia.registry=i},t.prototype.cacheRegistryMatches=function(){var t=this.originalRegistry;t.clear(),this.matchMedia.registry.forEach(function(e,i){t.set(i,e)}),this.hasCachedRegistryMatches=!0},t.prototype.restoreRegistryMatches=function(){var t=this.matchMedia.registry;t.clear(),this.originalRegistry.forEach(function(e,i){t.set(i,e)}),this.originalRegistry.clear(),this.hasCachedRegistryMatches=!1},t.prototype.emitChangeEvent=function(t,e){this.matchMedia.source.next(new Q(t,e))},Object.defineProperty(t.prototype,"currentActivations",{get:function(){return this.matchMedia.activations},enumerable:!0,configurable:!0}),t.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[{type:J},{type:X},{type:void 0,decorators:[{type:e.Inject,args:[L]}]},{type:Object,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]},{type:void 0,decorators:[{type:e.Inject,args:[i.DOCUMENT]}]}]},t.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new t(e.ɵɵinject(J),e.ɵɵinject(X),e.ɵɵinject(L),e.ɵɵinject(e.PLATFORM_ID),e.ɵɵinject(i.DOCUMENT))},token:t,providedIn:"root"}),t}(),pt=function(){function t(t,e,i,r){this._serverStylesheet=t,this._serverModuleLoaded=e,this._platformId=i,this.layoutConfig=r}return t.prototype.applyStyleToElement=function(t,e,i){void 0===i&&(i=null);var r={};"string"==typeof e&&(r[e]=i,e=r),r=this.layoutConfig.disableVendorPrefixes?e:_(e),this._applyMultiValueStyleToElement(r,t)},t.prototype.applyStyleToElements=function(t,e){var i=this;void 0===e&&(e=[]);var r=this.layoutConfig.disableVendorPrefixes?t:_(t);e.forEach(function(t){i._applyMultiValueStyleToElement(r,t)})},t.prototype.getFlowDirection=function(t){var e=this.lookupStyle(t,"flex-direction"),r=this.lookupInlineStyle(t,"flex-direction")||i.isPlatformServer(this._platformId)&&this._serverModuleLoaded?e:"";return[e||"row",r]},t.prototype.lookupAttributeValue=function(t,e){return t.getAttribute(e)||""},t.prototype.lookupInlineStyle=function(t,e){return i.isPlatformBrowser(this._platformId)?t.style.getPropertyValue(e):this._getServerStyle(t,e)},t.prototype.lookupStyle=function(t,e,r){void 0===r&&(r=!1);var n="";if(t){(n=this.lookupInlineStyle(t,e))||(i.isPlatformBrowser(this._platformId)?r||(n=getComputedStyle(t).getPropertyValue(e)):this._serverModuleLoaded&&(n=this._serverStylesheet.getStyleForElement(t,e)))}return n?n.trim():""},t.prototype._applyMultiValueStyleToElement=function(t,e){var r=this;Object.keys(t).sort().forEach(function(n){var a=t[n],o=Array.isArray(a)?a:[a];o.sort();for(var s=0,c=o;s0){var o=a.indexOf(":");if(-1===o)throw new Error("Invalid CSS style: "+a);var s=a.substr(0,o).trim();e[s]=a.substr(o+1).trim()}}return e},t.prototype._writeStyleAttribute=function(t,e){var i="";for(var r in e){e[r]&&(i+=r+":"+e[r]+";")}t.setAttribute("style",i)},t.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[{type:R,decorators:[{type:e.Optional}]},{type:Boolean,decorators:[{type:e.Optional},{type:e.Inject,args:[D]}]},{type:Object,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]},{type:void 0,decorators:[{type:e.Inject,args:[L]}]}]},t.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new t(e.ɵɵinject(R,8),e.ɵɵinject(D,8),e.ɵɵinject(e.PLATFORM_ID),e.ɵɵinject(L))},token:t,providedIn:"root"}),t}(),lt=function(){function t(){this.shouldCache=!0}return t.prototype.sideEffect=function(t,e,i){},t}(),ft=function(){function t(t,e,i){this.matchMedia=t,this.breakpoints=e,this.hook=i,this.activatedBreakpoints=[],this.elementMap=new Map,this.elementKeyMap=new WeakMap,this.watcherMap=new WeakMap,this.updateMap=new WeakMap,this.clearMap=new WeakMap,this.subject=new r.Subject,this.observeActivations()}return Object.defineProperty(t.prototype,"activatedAlias",{get:function(){return this.activatedBreakpoints[0]?this.activatedBreakpoints[0].alias:""},enumerable:!0,configurable:!0}),t.prototype.onMediaChange=function(t){var e=this.findByQuery(t.mediaQuery);e&&(t=s(t,e),t.matches&&-1===this.activatedBreakpoints.indexOf(e)?(this.activatedBreakpoints.push(e),this.activatedBreakpoints.sort(m),this.updateStyles()):t.matches||-1===this.activatedBreakpoints.indexOf(e)||(this.activatedBreakpoints.splice(this.activatedBreakpoints.indexOf(e),1),this.activatedBreakpoints.sort(m),this.updateStyles()))},t.prototype.init=function(t,e,i,r,n){void 0===n&&(n=[]),B(this.updateMap,t,e,i),B(this.clearMap,t,e,r),this.buildElementKeyMap(t,e),this.watchExtraTriggers(t,e,n)},t.prototype.getValue=function(t,e,i){var r=this.elementMap.get(t);if(r){var n=void 0!==i?r.get(i):this.getActivatedValues(r,e);if(n)return n.get(e)}},t.prototype.hasValue=function(t,e){var i=this.elementMap.get(t);if(i){var r=this.getActivatedValues(i,e);if(r)return void 0!==r.get(e)||!1}return!1},t.prototype.setValue=function(t,e,i,r){var n=this.elementMap.get(t);if(n){var a=(n.get(r)||new Map).set(e,i);n.set(r,a),this.elementMap.set(t,n)}else n=(new Map).set(r,(new Map).set(e,i)),this.elementMap.set(t,n);var o=this.getValue(t,e);void 0!==o&&this.updateElement(t,e,o)},t.prototype.trackValue=function(t,e){return this.subject.asObservable().pipe(n.filter(function(i){return i.element===t&&i.key===e}))},t.prototype.updateStyles=function(){var t=this;this.elementMap.forEach(function(e,i){var r=new Set(t.elementKeyMap.get(i)),n=t.getActivatedValues(e);n&&n.forEach(function(e,n){t.updateElement(i,n,e),r.delete(n)}),r.forEach(function(r){if(n=t.getActivatedValues(e,r)){var a=n.get(r);t.updateElement(i,r,a)}else t.clearElement(i,r)})})},t.prototype.clearElement=function(t,e){var i=this.clearMap.get(t);if(i){var r=i.get(e);r&&(r(),this.subject.next({element:t,key:e,value:""}))}},t.prototype.updateElement=function(t,e,i){var r=this.updateMap.get(t);if(r){var n=r.get(e);n&&(n(i),this.subject.next({element:t,key:e,value:i}))}},t.prototype.releaseElement=function(t){var e=this.watcherMap.get(t);e&&(e.forEach(function(t){return t.unsubscribe()}),this.watcherMap.delete(t));var i=this.elementMap.get(t);i&&(i.forEach(function(t,e){return i.delete(e)}),this.elementMap.delete(t))},t.prototype.triggerUpdate=function(t,e){var i=this,r=this.elementMap.get(t);if(r){var n=this.getActivatedValues(r,e);n&&(e?this.updateElement(t,e,n.get(e)):n.forEach(function(e,r){return i.updateElement(t,r,e)}))}},t.prototype.buildElementKeyMap=function(t,e){var i=this.elementKeyMap.get(t);i||(i=new Set,this.elementKeyMap.set(t,i)),i.add(e)},t.prototype.watchExtraTriggers=function(t,e,i){var n=this;if(i&&i.length){var a=this.watcherMap.get(t);a||(a=new Map,this.watcherMap.set(t,a));if(!a.get(e)){ +var o=r.merge.apply(void 0,i).subscribe(function(){var i=n.getValue(t,e);n.updateElement(t,e,i)});a.set(e,o)}}},t.prototype.findByQuery=function(t){return this.breakpoints.findByQuery(t)},t.prototype.getActivatedValues=function(t,e){for(var i=0;i {\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 /**\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.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 */\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 {Injectable} from '@angular/core';\nimport {merge, Observable, Subject, Subscription} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nimport {BreakPoint} from '../breakpoints/break-point';\nimport {prioritySort} from '../breakpoints/breakpoint-tools';\nimport {BreakPointRegistry} from '../breakpoints/break-point-registry';\nimport {MatchMedia} from '../match-media/match-media';\nimport {MediaChange} from '../media-change';\n\ntype Builder = Function;\ntype ClearCallback = () => void;\ntype UpdateCallback = (val: any) => void;\ntype ValueMap = Map;\ntype BreakpointMap = Map;\ntype ElementMap = Map;\ntype ElementKeyMap = WeakMap>;\ntype SubscriptionMap = Map;\ntype WatcherMap = WeakMap;\ntype BuilderMap = WeakMap>;\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 // registry of special triggers to update elements\n private watcherMap: WatcherMap = new WeakMap();\n private builderMap: BuilderMap = new WeakMap();\n private clearBuilderMap: BuilderMap = new WeakMap();\n private subject: Subject = new Subject();\n\n get activatedBreakpoint(): string {\n return this.activatedBreakpoints[0] ? this.activatedBreakpoints[0].alias : '';\n }\n\n constructor(protected matchMedia: MatchMedia,\n protected breakpoints: BreakPointRegistry) {\n this.matchMedia\n .observe()\n .subscribe(this.activate.bind(this));\n this.registerBreakpoints();\n }\n\n /**\n * activate or deactivate a given breakpoint\n * @param mc\n */\n activate(mc: MediaChange) {\n const bp: BreakPoint | null = this.findByQuery(mc.mediaQuery);\n if (bp) {\n if (mc.matches && this.activatedBreakpoints.indexOf(bp) === -1) {\n this.activatedBreakpoints.push(bp);\n this.activatedBreakpoints.sort(prioritySort);\n this.updateStyles();\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.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[] = []): void {\n this.buildElementKeyMap(element, key);\n initBuilderMap(this.builderMap, element, key, updateFn);\n initBuilderMap(this.clearBuilderMap, element, key, clearFn);\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.getFallback(bpMap, key);\n if (values) {\n const value = values.get(key);\n return value !== undefined ? value : '';\n }\n }\n return '';\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.getFallback(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 this.updateElement(element, key, this.getValue(element, key));\n }\n\n /** Track element value changes for a specific key */\n trackValue(element: HTMLElement, key: string): Observable {\n return this.subject.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 valueMap = this.getFallback(bpMap);\n const keyMap = new Set(this.elementKeyMap.get(el)!);\n if (valueMap) {\n valueMap.forEach((v, k) => {\n this.updateElement(el, k, v);\n keyMap.delete(k);\n });\n }\n keyMap.forEach(k => {\n const fallbackMap = this.getFallback(bpMap, k);\n if (fallbackMap) {\n const value = fallbackMap.get(k);\n this.updateElement(el, k, value);\n } else {\n this.clearElement(el, k);\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.clearBuilderMap.get(element);\n if (builders) {\n const builder: Builder | undefined = builders.get(key);\n if (builder) {\n builder();\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.builderMap.get(element);\n if (builders) {\n const builder: Builder | undefined = builders.get(key);\n if (builder) {\n builder(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 /** 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[]) {\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 getFallback(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)) {\n return valueMap;\n }\n }\n }\n return bpMap.get('');\n }\n\n private registerBreakpoints() {\n const queries = this.breakpoints.sortedItems.map(bp => bp.mediaQuery);\n this.matchMedia.registerQuery(queries);\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","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\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 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) : new P(function (resolve) { resolve(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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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 __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\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)) result[k] = mod[k];\r\n result.default = 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","/**\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: void)[]>>APP_BOOTSTRAP_LISTENER,\n useFactory: removeStyles,\n deps: [DOCUMENT, PLATFORM_ID],\n multi: true\n};\n\nexport const CLASS_NAME = 'flex-layout-';\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';\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/** HOF to sort the breakpoints by priority */\nexport function prioritySort(a: BreakPoint, b: BreakPoint): number {\n const priorityA = a.priority || 0;\n const priorityB = b.priority || 0;\n return priorityB - priorityA;\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, isPlatformBrowser} from '@angular/common';\nimport {BehaviorSubject, Observable} 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 {\n protected _registry = new Map();\n protected _source = new BehaviorSubject(new MediaChange(true));\n protected _observable$ = this._source.asObservable();\n\n constructor(protected _zone: NgZone,\n @Inject(PLATFORM_ID) protected _platformId: Object,\n @Inject(DOCUMENT) protected _document: any) {\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 : false;\n }\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 * NOTE: if a mediaQuery is not specified, then ALL mediaQuery activations will\n * be announced.\n */\n observe(mediaQuery?: string): Observable {\n if (mediaQuery) {\n this.registerQuery(mediaQuery);\n }\n\n return this._observable$.pipe(\n filter(change => (mediaQuery ? (change.mediaQuery === mediaQuery) : true))\n );\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) ? Array.from(new Set(mediaQuery)) : [mediaQuery];\n\n if (list.length > 0) {\n buildQueryCss(list, this._document);\n }\n\n list.forEach(query => {\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\n if (!mql) {\n if (query === 'print') {\n // If we are listening for a print media query we need to add a `beforeprint` event listener to trigger the `mql` synchronously.\n // Regular matchMedia events are not synchronous and do not have time to update the layout before the print dialog shows and takes a snapshot.\n // Workaround for #869\n // This requires explicit use of `fxLayout.print` to racing between size based layouts. We don't know the size of prints\n // before hand so you must use a single layout for printing.\n window.addEventListener('beforeprint', () => {\n onMQLEvent({\n mediaQuery: query,\n matches: true,\n } as any)\n })\n }\n\n \n mql = this._buildMQL(query);\n mql.addListener(onMQLEvent);\n this._registry.set(query, mql);\n }\n\n if (mql.matches) {\n onMQLEvent(mql as unknown as MediaQueryListEvent);\n }\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\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).matchMedia('all').addListener;\n\n return canListen ? (window).matchMedia(query) : {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => {\n },\n removeListener: () => {\n }\n } as unknown 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 {MediaChange} from './media-change';\nimport {BreakPoint} from './breakpoints/break-point';\nimport {extendObject} from '../utils/object-extend';\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 return extendObject(dest, source ? {\n mqAlias: source.alias,\n suffix: source.suffix\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='' 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 : 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 */\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 */\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 {InjectionToken} from '@angular/core';\nimport {BreakPoint} from '../breakpoints/break-point';\n\nexport const BREAKPOINT = new InjectionToken(\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 {BreakPoint} from '../break-point';\n\nexport const RESPONSIVE_ALIASES = [\n 'xs', 'gt-xs', 'sm', 'gt-sm', 'md', 'gt-md', 'lg', 'gt-lg', 'xl'\n];\n\nexport const DEFAULT_BREAKPOINTS: BreakPoint[] = [\n {\n alias: 'xs',\n mediaQuery: '(min-width: 0px) and (max-width: 599px)',\n priority: 100,\n },\n {\n alias: 'gt-xs',\n overlapping: true,\n mediaQuery: '(min-width: 600px)',\n priority: 7,\n },\n {\n alias: 'lt-sm',\n overlapping: true,\n mediaQuery: '(max-width: 599px)',\n priority: 10,\n },\n {\n alias: 'sm',\n mediaQuery: '(min-width: 600px) and (max-width: 959px)',\n priority: 100,\n },\n {\n alias: 'gt-sm',\n overlapping: true,\n mediaQuery: '(min-width: 960px)',\n priority: 8,\n },\n {\n alias: 'lt-md',\n overlapping: true,\n mediaQuery: '(max-width: 959px)',\n priority: 9,\n },\n {\n alias: 'md',\n mediaQuery: '(min-width: 960px) and (max-width: 1279px)',\n priority: 100,\n },\n {\n alias: 'gt-md',\n overlapping: true,\n mediaQuery: '(min-width: 1280px)',\n priority: 9,\n },\n {\n alias: 'lt-lg',\n overlapping: true,\n mediaQuery: '(max-width: 1279px)',\n priority: 8,\n },\n {\n alias: 'lg',\n mediaQuery: '(min-width: 1280px) and (max-width: 1919px)',\n priority: 100,\n },\n {\n alias: 'gt-lg',\n overlapping: true,\n mediaQuery: '(min-width: 1920px)',\n priority: 10,\n },\n {\n alias: 'lt-xl',\n overlapping: true,\n mediaQuery: '(max-width: 1919px)',\n priority: 7,\n },\n {\n alias: 'xl',\n mediaQuery: '(min-width: 1920px) and (max-width: 5000px)',\n priority: 100,\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\nimport {BreakPoint} from '../break-point';\n\n/* tslint:disable */\nconst HANDSET_PORTRAIT = '(orientation: portrait) and (max-width: 599px)';\nconst HANDSET_LANDSCAPE = '(orientation: landscape) and (max-width: 959px)';\n\nconst TABLET_LANDSCAPE = '(orientation: landscape) and (min-width: 960px) and (max-width: 1279px)';\nconst TABLET_PORTRAIT = '(orientation: portrait) and (min-width: 600px) and (max-width: 839px)';\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', 'mediaQuery': ScreenTypes.HANDSET},\n {'alias': 'handset.landscape', 'mediaQuery': ScreenTypes.HANDSET_LANDSCAPE},\n {'alias': 'handset.portrait', 'mediaQuery': ScreenTypes.HANDSET_PORTRAIT},\n\n {'alias': 'tablet', 'mediaQuery': ScreenTypes.TABLET},\n {'alias': 'tablet.landscape', 'mediaQuery': ScreenTypes.TABLET},\n {'alias': 'tablet.portrait', 'mediaQuery': ScreenTypes.TABLET_PORTRAIT},\n\n {'alias': 'web', 'mediaQuery': ScreenTypes.WEB, overlapping : true },\n {'alias': 'web.landscape', 'mediaQuery': ScreenTypes.WEB_LANDSCAPE, overlapping : true },\n {'alias': 'web.portrait', '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 {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}\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};\n\nexport const LAYOUT_CONFIG = new InjectionToken(\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 */\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('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 {Injectable, Inject} from '@angular/core';\n\nimport {BreakPoint} from './break-point';\nimport {BREAKPOINTS} from './break-points-token';\n\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\n constructor(@Inject(BREAKPOINTS) private _registry: BreakPoint[]) {\n }\n\n /**\n * Accessor to raw list\n */\n get items(): BreakPoint[] {\n return [...this._registry];\n }\n\n /**\n * Accessor to sorted list used for registration with matchMedia API\n *\n * NOTE: During breakpoint registration, we want to register the overlaps FIRST\n * so the non-overlaps will trigger the MatchMedia:BehaviorSubject last!\n * And the largest, non-overlap, matching breakpoint should be the lastReplay value\n */\n get sortedItems(): BreakPoint[] {\n let overlaps = this._registry.filter(it => it.overlapping === true);\n let nonOverlaps = this._registry.filter(it => it.overlapping !== true);\n\n return [...overlaps, ...nonOverlaps];\n }\n\n /**\n * Search breakpoints by alias (e.g. gt-xs)\n */\n findByAlias(alias: string): BreakPoint | null {\n return this._registry.find(bp => bp.alias == alias) || null;\n }\n\n findByQuery(query: string): BreakPoint | null {\n return this._registry.find(bp => bp.mediaQuery == query) || null;\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._registry.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._registry.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._registry.map(it => !!it.suffix ? it.suffix : '');\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 */\n constructor(public matches = false,\n public mediaQuery = 'all',\n public mqAlias = '',\n public suffix = '') {\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 {Injectable} from '@angular/core';\nimport {Observable, PartialObserver, Subscribable, Subscription} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {BreakPointRegistry} from '../breakpoints/break-point-registry';\nimport {MediaChange} from '../media-change';\nimport {MatchMedia} from '../match-media/match-media';\nimport {mergeAlias} from '../add-alias';\nimport {BreakPoint} from '../breakpoints/break-point';\n\n/**\n * Base class for MediaService and pseudo-token for\n * @deprecated use MediaObserver instead\n * @deletion-target v7.0.0-beta.21\n */\nexport abstract class ObservableMedia implements Subscribable {\n abstract isActive(query: string): boolean;\n\n abstract asObservable(): Observable;\n\n abstract subscribe(next?: (value: MediaChange) => void,\n error?: (error: any) => void,\n complete?: () => void): Subscription;\n abstract subscribe(observer?: PartialObserver): Subscription;\n}\n\n/**\n * Class internalizes a MatchMedia service and exposes an Subscribable and Observable interface.\n\n * This an Observable with that exposes a feature to subscribe to mediaQuery\n * changes and a validator method (`isActive()`) to test if a mediaQuery (or alias) is\n * currently active.\n *\n * !! Only mediaChange activations (not de-activations) are announced by the ObservableMedia\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 * !! This is not an actual Observable. It is a wrapper of an Observable used to publish additional\n * methods like `isActive(). To access the Observable and use RxJS operators, use\n * `.asObservable()` with syntax like media.asObservable().map(....).\n *\n * @usage\n *\n * // RxJS\n * import {filter} from 'rxjs/operators/filter';\n * import { ObservableMedia } from '@angular/flex-layout';\n *\n * @Component({ ... })\n * export class AppComponent {\n * status : string = '';\n *\n * constructor( media:ObservableMedia ) {\n * let onChange = (change:MediaChange) => {\n * this.status = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : '';\n * };\n *\n * // Subscribe directly or access observable to use filter/map operators\n * // e.g.\n * // media.subscribe(onChange);\n *\n * media.asObservable()\n * .pipe(\n * filter((change:MediaChange) => true) // silly noop filter\n * ).subscribe(onChange);\n * }\n * }\n * @deprecated use MediaObserver instead\n * @deletion-target v7.0.0-beta.21\n */\n@Injectable({providedIn: 'root'})\nexport class MediaService implements ObservableMedia {\n /**\n * Should we announce gt- breakpoint activations ?\n */\n filterOverlaps = true;\n\n constructor(private breakpoints: BreakPointRegistry,\n private mediaWatcher: MatchMedia) {\n this._registerBreakPoints();\n this.observable$ = this._buildObservable();\n }\n\n /**\n * Test if specified query/alias is active.\n */\n isActive(alias: string): boolean {\n return this.mediaWatcher.isActive(this._toMediaQuery(alias));\n }\n\n /**\n * Proxy to the Observable subscribe method\n */\n subscribe(observerOrNext?: PartialObserver | ((value: MediaChange) => void),\n error?: (error: any) => void,\n complete?: () => void): Subscription {\n if (observerOrNext) {\n if (typeof observerOrNext === 'object') {\n return this.observable$.subscribe(observerOrNext.next, observerOrNext.error,\n observerOrNext.complete);\n }\n }\n\n return this.observable$.subscribe(observerOrNext, error, complete);\n }\n\n /**\n * Access to observable for use with operators like\n * .filter(), .map(), etc.\n */\n asObservable(): Observable {\n return this.observable$;\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 _registerBreakPoints() {\n const queries = this.breakpoints.sortedItems.map(bp => bp.mediaQuery);\n this.mediaWatcher.registerQuery(queries);\n }\n\n /**\n * Prepare internal observable\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() {\n const excludeOverlaps = (change: MediaChange) => {\n const bp = this.breakpoints.findByQuery(change.mediaQuery);\n return !bp ? true : !(this.filterOverlaps && bp.overlapping);\n };\n\n /**\n * Only pass/announce activations (not de-activations)\n * Inject associated (if any) alias information into the MediaChange event\n * Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only\n */\n return this.mediaWatcher.observe().pipe(\n filter(change => change.matches),\n filter(excludeOverlaps),\n map((change: MediaChange) =>\n mergeAlias(change, this._findByQuery(change.mediaQuery)))\n );\n }\n\n /**\n * Breakpoint locator by alias\n */\n private _findByAlias(alias: string) {\n return this.breakpoints.findByAlias(alias);\n }\n\n /**\n * Breakpoint locator by mediaQuery\n */\n private _findByQuery(query: string) {\n return this.breakpoints.findByQuery(query);\n }\n\n /**\n * Find associated breakpoint (if any)\n */\n private _toMediaQuery(query: string) {\n const bp: BreakPoint | null = this._findByAlias(query) || this._findByQuery(query);\n return bp ? bp.mediaQuery : query;\n }\n\n private readonly observable$: Observable;\n}\n\n/**\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport const ObservableMediaProvider = { // tslint:disable-line:variable-name\n provide: ObservableMedia,\n useClass: MediaService\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';\nimport {ObservableMediaProvider} from './observable-media/observable-media';\n\n/**\n * *****************************************************************\n * Define module for the MediaQuery API\n * *****************************************************************\n */\n\n@NgModule({\n providers: [BROWSER_PROVIDER, ObservableMediaProvider]\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 {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>();\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 */\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(\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 {Subscription} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {MediaChange, MediaQuerySubscriber} from '../media-change';\nimport {BreakPoint} from '../breakpoints/break-point';\nimport {MediaMonitor} from '../media-monitor/media-monitor';\nimport {extendObject} from '../../utils/object-extend';\n\n/**\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport interface BreakPointX extends BreakPoint {\n key: string;\n baseKey: string;\n}\n\n/**\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport class KeyOptions {\n constructor(public baseKey: string,\n public defaultValue: string|number|boolean,\n public inputKeys: { [key: string]: any }) {\n }\n}\n\n/**\n * ResponsiveActivation acts as a proxy between the MonitorMedia service (which emits mediaQuery\n * changes) and the fx API directives. The MQA proxies mediaQuery change events and notifies the\n * directive via the specified callback.\n *\n * - The MQA also determines which directive property should be used to determine the\n * current change 'value'... BEFORE the original `onMediaQueryChanges()` method is called.\n * - The `ngOnDestroy()` method is also head-hooked to enable auto-unsubscribe from the\n * MediaQueryServices.\n *\n * NOTE: these interceptions enables the logic in the fx API directives to remain terse and clean.\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport class ResponsiveActivation {\n private _activatedInputKey: string = '';\n private _registryMap: BreakPointX[] = this._buildRegistryMap();\n private _subscribers: Subscription[] = this._configureChangeObservers();\n\n /**\n * Constructor\n */\n constructor(private _options: KeyOptions,\n private _mediaMonitor: MediaMonitor,\n private _onMediaChanges: MediaQuerySubscriber) {\n }\n\n /**\n * Get a readonly sorted list of the breakpoints corresponding to the directive properties\n * defined in the HTML markup: the sorting is done from largest to smallest. The order is\n * important when several media queries are 'registered' and from which, the browser uses the\n * first matching media query.\n */\n get registryFromLargest(): BreakPointX[] {\n return [...this._registryMap].reverse();\n }\n\n /**\n * Determine which directive @Input() property is currently active (for the viewport size):\n * The key must be defined (in use) or fallback to the 'closest' overlapping property key\n * that is defined; otherwise the default property key will be used.\n * e.g.\n * if `
` is used but the current activated mediaQuery alias\n * key is `.md` then `.gt-sm` should be used instead\n */\n get activatedInputKey(): string {\n return this._activatedInputKey || this._options.baseKey;\n }\n\n /**\n * Get the currently activated @Input value or the fallback default @Input value\n */\n get activatedInput(): any {\n const key = this.activatedInputKey;\n return this.hasKeyValue(key) ? this._lookupKeyValue(key) : this._options.defaultValue;\n }\n\n /**\n * Fast validator for presence of attribute on the host element\n */\n hasKeyValue(key: string) {\n return this._options.inputKeys[key] !== undefined;\n }\n\n /**\n * Remove interceptors, restore original functions, and forward the onDestroy() call\n */\n destroy() {\n this._subscribers.forEach(link => link.unsubscribe());\n this._subscribers = [];\n }\n\n /**\n * For each *defined* API property, register a callback to `_onMonitorEvents( )`\n * Cache 1..n subscriptions for internal auto-unsubscribes when the the directive destructs\n */\n private _configureChangeObservers(): Subscription[] {\n const subscriptions: Subscription[] = [];\n\n this._registryMap.forEach(bp => {\n if (this._keyInUse(bp.key)) {\n // Inject directive default property key name: to let onMediaChange() calls\n // know which property is being triggered...\n const buildChanges = (change: MediaChange) => {\n change = change.clone();\n change.property = this._options.baseKey;\n return change;\n };\n\n subscriptions.push(\n this._mediaMonitor\n .observe(bp.alias)\n .pipe(map(buildChanges))\n .subscribe(change => {\n this._onMonitorEvents(change);\n })\n );\n }\n });\n\n return subscriptions;\n }\n\n /**\n * Build mediaQuery key-hashmap; only for the directive properties that are actually defined/used\n * in the HTML markup\n */\n private _buildRegistryMap() {\n return this._mediaMonitor.breakpoints\n .map(bp => extendObject({}, bp, {\n baseKey: this._options.baseKey, // e.g. layout, hide, self-align, flex-wrap\n key: this._options.baseKey + bp.suffix // e.g. layoutGtSm, layoutMd, layoutGtLg\n }))\n .filter(bp => this._keyInUse(bp.key));\n }\n\n /**\n * Synchronizes change notifications with the current mq-activated @Input and calculates the\n * mq-activated input value or the default value\n */\n protected _onMonitorEvents(change: MediaChange) {\n if (change.property === this._options.baseKey) {\n change.value = this._calculateActivatedValue(change);\n this._onMediaChanges(change);\n }\n }\n\n /**\n * Has the key been specified in the HTML markup and thus is intended\n * to participate in activation processes.\n */\n private _keyInUse(key: string): boolean {\n return this._lookupKeyValue(key) !== undefined;\n }\n\n /**\n * Map input key associated with mediaQuery activation to closest defined input key\n * then return the values associated with the targeted input property\n *\n * !! change events may arrive out-of-order (activate before deactivate)\n * so make sure the deactivate is used ONLY when the keys match\n * (since a different activate may be in use)\n */\n private _calculateActivatedValue(current: MediaChange): any {\n const currentKey = this._options.baseKey + current.suffix; // e.g. suffix == 'GtSm',\n let newKey = this._activatedInputKey; // e.g. newKey == hideGtSm\n\n newKey = current.matches ? currentKey : ((newKey === currentKey) ? '' : newKey);\n\n this._activatedInputKey = this._validateInputKey(newKey);\n return this.activatedInput;\n }\n\n /**\n * For the specified input property key, validate it is defined (used in the markup)\n * If not see if a overlapping mediaQuery-related input key fallback has been defined\n *\n * NOTE: scans in the order defined by activeOverLaps (largest viewport ranges -> smallest ranges)\n */\n private _validateInputKey(inputKey: string) {\n const isMissingKey = (key: string) => !this._keyInUse(key);\n\n if (isMissingKey(inputKey)) {\n this._mediaMonitor.activeOverlaps.some(bp => {\n const key = this._options.baseKey + bp.suffix;\n if (!isMissingKey(key)) {\n inputKey = key;\n return true; // exit .some()\n }\n return false;\n });\n }\n return inputKey;\n }\n\n /**\n * Get the value (if any) for the directive instances @Input property (aka key)\n */\n private _lookupKeyValue(key: string) {\n return this._options.inputKeys[key];\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 {\n ElementRef,\n OnDestroy,\n SimpleChanges,\n OnChanges,\n SimpleChange,\n} from '@angular/core';\n\nimport {buildLayoutCSS} from '../../utils/layout-validator';\nimport {\n StyleDefinition,\n StyleUtils,\n} from '../style-utils/style-utils';\nimport {ResponsiveActivation, KeyOptions} from '../responsive-activation/responsive-activation';\nimport {MediaMonitor} from '../media-monitor/media-monitor';\nimport {MediaQuerySubscriber} from '../media-change';\nimport {StyleBuilder} from '../style-builder/style-builder';\n\n/**\n * Abstract base class for the Layout API styling directives.\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport abstract class BaseDirective implements OnDestroy, OnChanges {\n\n /**\n * Imperatively determine the current activated [input] value;\n * if called before ngOnInit() this will return `undefined`\n */\n get activatedValue(): string | number {\n return this._mqActivation ? this._mqActivation.activatedInput : undefined;\n }\n\n /**\n * Change the currently activated input value and force-update\n * the injected CSS (by-passing change detection).\n *\n * NOTE: Only the currently activated input value will be modified;\n * other input values will NOT be affected.\n */\n set activatedValue(value: string | number) {\n let key = 'baseKey', previousVal;\n\n if (this._mqActivation) {\n key = this._mqActivation.activatedInputKey;\n previousVal = this._inputMap[key];\n this._inputMap[key] = value;\n }\n const change = new SimpleChange(previousVal, value, false);\n\n this.ngOnChanges({[key]: change} as SimpleChanges);\n }\n\n protected constructor(protected _mediaMonitor: MediaMonitor,\n protected _elementRef: ElementRef,\n protected _styler: StyleUtils,\n protected _styleBuilder?: StyleBuilder) {\n }\n\n /**\n * Does this directive have 1 or more responsive keys defined\n * Note: we exclude the 'baseKey' key (which is NOT considered responsive)\n */\n hasResponsiveAPI(baseKey: string) {\n const totalKeys = Object.keys(this._inputMap).length;\n const baseValue = this._inputMap[baseKey];\n return (totalKeys - (!!baseValue ? 1 : 0)) > 0;\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n /**\n * Use post-component-initialization event to perform extra\n * querying such as computed Display style\n */\n ngOnInit() {\n this._hasInitialized = true;\n }\n\n ngOnChanges(change: SimpleChanges) {\n throw new Error(`BaseDirective::ngOnChanges should be overridden in subclass: ${change}`);\n }\n\n ngOnDestroy() {\n if (this._mqActivation) {\n this._mqActivation.destroy();\n }\n delete this._mediaMonitor;\n }\n\n // *********************************************\n // Protected Methods\n // *********************************************\n\n /** Access to host element's parent DOM node */\n protected get parentElement(): any {\n return this._elementRef.nativeElement.parentNode;\n }\n\n protected get nativeElement(): HTMLElement {\n return this._elementRef.nativeElement;\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._applyStyleToElement(genStyles);\n builder.sideEffect(input, genStyles, parent);\n }\n\n /** Access the current value (if any) of the @Input property */\n protected _queryInput(key: string) {\n return this._inputMap[key];\n }\n\n /**\n * Was the directive's default selector used ?\n * If not, use the fallback value!\n */\n protected _getDefaultVal(key: string, fallbackVal: any): string | boolean {\n const val = this._queryInput(key);\n const hasDefaultVal = (val !== undefined && val !== null);\n return (hasDefaultVal && val !== '') ? val : fallbackVal;\n }\n\n /**\n * Quick accessor to the current HTMLElement's `display` style\n * Note: this allows us to preserve the original style\n * and optional restore it when the mediaQueries deactivate\n */\n protected _getDisplayStyle(source: HTMLElement = this.nativeElement): string {\n const query = 'display';\n return this._styler.lookupStyle(source, query);\n }\n\n /** Quick accessor to raw attribute value on the target DOM element */\n protected _getAttributeValue(attribute: string,\n source: HTMLElement = this.nativeElement): string {\n return this._styler.lookupAttributeValue(source, attribute);\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 let [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 /** 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 /** Applies styles given via string pair or object map to the directive's element */\n protected _applyStyleToElements(style: StyleDefinition, elements: HTMLElement[]) {\n this._styler.applyStyleToElements(style, elements);\n }\n\n /**\n * Save the property value; which may be a complex object.\n * Complex objects support property chains\n */\n protected _cacheInput(key?: string, source?: any) {\n if (typeof source === 'object') {\n for (let prop in source) {\n this._inputMap[prop] = source[prop];\n }\n } else {\n if (!!key) {\n this._inputMap[key] = source;\n }\n }\n }\n\n /**\n * Build a ResponsiveActivation object used to manage subscriptions to mediaChange notifications\n * and intelligent lookup of the directive's property value that corresponds to that mediaQuery\n * (or closest match).\n */\n protected _listenForMediaQueryChanges(key: string,\n defaultValue: any,\n onMediaQueryChange: MediaQuerySubscriber): ResponsiveActivation { // tslint:disable-line:max-line-length\n if (!this._mqActivation) {\n let keyOptions = new KeyOptions(key, defaultValue, this._inputMap);\n this._mqActivation = new ResponsiveActivation(keyOptions, this._mediaMonitor,\n (change) => onMediaQueryChange(change));\n }\n return this._mqActivation;\n }\n\n /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */\n protected get childrenNodes(): HTMLElement[] {\n const obj = this.nativeElement.children;\n const buffer: any[] = [];\n\n // iterate backwards ensuring that length is an UInt32\n for (let i = obj.length; i--; ) {\n buffer[i] = obj[i];\n }\n return buffer;\n }\n\n protected get hasInitialized() {\n return this._hasInitialized;\n }\n\n /** MediaQuery Activation Tracker */\n protected _mqActivation?: ResponsiveActivation;\n\n /** Dictionary of input keys with associated values */\n protected _inputMap: {[key: string]: any} = {};\n\n /**\n * Has the `ngOnInit()` method fired\n *\n * Used to allow *ngFor tasks to finish and support queries like\n * getComputedStyle() during ngOnInit().\n */\n protected _hasInitialized = false;\n\n /** Cache map for style computation */\n protected _styleCache: Map = new Map();\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} from '@angular/core';\n\nimport {BaseDirective} from './base';\nimport {ResponsiveActivation} from '../responsive-activation/responsive-activation';\nimport {MediaQuerySubscriber} from '../media-change';\nimport {MediaMonitor} from '../media-monitor/media-monitor';\nimport {StyleUtils} from '../style-utils/style-utils';\n\n\n/**\n * Adapter to the BaseDirective abstract class so it can be used via composition.\n * @see BaseDirective\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport class BaseDirectiveAdapter extends BaseDirective {\n\n /**\n * Accessor to determine which @Input property is \"active\"\n * e.g. which property value will be used.\n */\n get activeKey() {\n let mqa = this._mqActivation;\n let key = mqa ? mqa.activatedInputKey : this._baseKey;\n // Note: ClassDirective::SimpleChanges uses 'klazz' instead of 'class' as a key\n return (key === 'class') ? 'klazz' : key;\n }\n\n /** Hash map of all @Input keys/values defined/used */\n get inputMap() {\n return this._inputMap;\n }\n\n /**\n * @see BaseDirective._mqActivation\n */\n get mqActivation(): ResponsiveActivation {\n return this._mqActivation!;\n }\n\n /**\n * BaseDirectiveAdapter constructor\n */\n constructor(protected _baseKey: string, // non-responsive @Input property name\n protected _mediaMonitor: MediaMonitor,\n protected _elementRef: ElementRef,\n protected _styler: StyleUtils) {\n super(_mediaMonitor, _elementRef, _styler);\n }\n\n /**\n * Does this directive have 1 or more responsive keys defined\n * Note: we exclude the 'baseKey' key (which is NOT considered responsive)\n */\n hasResponsiveAPI() {\n return super.hasResponsiveAPI(this._baseKey);\n }\n\n /**\n * @see BaseDirective._queryInput\n */\n queryInput(key: string | null) {\n return key ? this._queryInput(key) : undefined;\n }\n\n /**\n * Save the property value.\n */\n cacheInput(key?: string, source?: any, cacheRaw = false) {\n if (cacheRaw) {\n this._cacheInputRaw(key, source);\n } else if (Array.isArray(source)) {\n this._cacheInputArray(key, source);\n } else if (typeof source === 'object') {\n this._cacheInputObject(key, source);\n } else if (typeof source === 'string') {\n this._cacheInputString(key, source);\n } else {\n throw new Error(\n `Invalid class value '${key}' provided. Did you want to cache the raw value?`\n );\n }\n }\n\n /**\n * @see BaseDirective._listenForMediaQueryChanges\n */\n listenForMediaQueryChanges(key: string,\n defaultValue: any,\n onMediaQueryChange: MediaQuerySubscriber): ResponsiveActivation {\n return this._listenForMediaQueryChanges(key, defaultValue, onMediaQueryChange);\n }\n\n // ************************************************************\n // Protected Methods\n // ************************************************************\n\n /**\n * No implicit transforms of the source.\n * Required when caching values expected later for KeyValueDiffers\n */\n protected _cacheInputRaw(key?: string, source?: any) {\n if (key) {\n this._inputMap[key] = source;\n }\n }\n\n /**\n * Save the property value for Array values.\n */\n protected _cacheInputArray(key = '', source?: boolean[]) {\n this._inputMap[key] = source ? source.join(' ') : '';\n }\n\n /**\n * Save the property value for key/value pair values.\n */\n protected _cacheInputObject(key = '', source?: { [key: string]: boolean }) {\n let classes: string[] = [];\n if (source) {\n for (let prop in source) {\n if (!!source[prop]) {\n classes.push(prop);\n }\n }\n }\n this._inputMap[key] = classes.join(' ');\n }\n\n /**\n * Save the property value for string values.\n */\n protected _cacheInputString(key = '', source?: string) {\n this._inputMap[key] = source;\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 = new Subject();\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.activatedBreakpoint);\n }\n\n /** Cache map for style computation */\n protected styleCache: Map = 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[] = []): 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 const val = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY);\n this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, val);\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 /** 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 this.addStyles(input);\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, 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 /** Special flag used to test BreakPoint registrations with MatchMedia */\n autoRegisterQueries = true;\n\n /**\n * Allow fallback to overlapping mediaQueries to determine\n * activatedInput(s).\n */\n useOverlaps = false;\n\n protected _registry: Map = new Map();\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: MockMediaQueryList) => {\n mql.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 activate 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- 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 activate of overlapping gt- 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 // 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.split(',').forEach(alias => activate(alias.trim()));\n }\n\n /**\n *\n */\n private _activateByQuery(mediaQuery: string) {\n const mql = this._registry.get(mediaQuery);\n const alreadyAdded = this._actives\n .reduce((found, it) => (found || (mql ? (it.media === mql.media) : false)), false);\n\n if (mql && !alreadyAdded) {\n this._actives.push(mql.activate());\n }\n return this.hasActivated;\n }\n\n /** Deactivate all current Mock MQLs */\n private _deactivateAll() {\n if (this._actives.length) {\n // Deactivate all current MQLs and reset the buffer\n for (const it of this._actives) {\n it.deactivate();\n }\n this._actives = [];\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._actives.length > 0;\n }\n\n private _actives: MockMediaQueryList[] = [];\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 * 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(null, this);\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(null, this);\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(null, this);\n }\n }\n\n /** Don't need to remove listeners in the testing environment */\n removeListener(_: EventListenerOrEventListenerObject | null) {\n }\n\n addEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | AddEventListenerOptions): void;\n addEventListener(_: string,\n __: EventListenerOrEventListenerObject,\n ___?: boolean | AddEventListenerOptions) {\n }\n\n removeEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | EventListenerOptions): void;\n removeEventListener(_: 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 {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable, NgZone, PLATFORM_ID} from '@angular/core';\n\nimport {BreakPoint} from '../breakpoints/break-point';\nimport {MatchMedia} from './match-media';\n\n/**\n * Special server-only class to simulate a MediaQueryList and\n * - supports manual activation to simulate mediaQuery matching\n * - manages listeners\n */\nexport class ServerMediaQueryList 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 * 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(): ServerMediaQueryList {\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(null, this);\n });\n }\n return this;\n }\n\n /** Notify all listeners that 'matches === false' */\n deactivate(): ServerMediaQueryList {\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(null, this);\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(null, this);\n }\n }\n\n /** Don't need to remove listeners in the server environment */\n removeListener(_: EventListenerOrEventListenerObject | null) {\n }\n\n addEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | AddEventListenerOptions): void;\n addEventListener(_: string,\n __: EventListenerOrEventListenerObject,\n ___?: boolean | AddEventListenerOptions) {\n }\n\n removeEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | EventListenerOptions): void;\n removeEventListener(_: 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 * Special server-only implementation of MatchMedia that uses the above\n * ServerMediaQueryList as its internal representation\n *\n * Also contains methods to activate and deactivate breakpoints\n */\n@Injectable()\nexport class ServerMatchMedia extends MatchMedia {\n protected _registry: Map = new Map();\n\n constructor(protected _zone: NgZone,\n @Inject(PLATFORM_ID) protected _platformId: Object,\n @Inject(DOCUMENT) protected _document: any) {\n super(_zone, _platformId, _document);\n }\n\n /** Activate the specified breakpoint if we're on the server, no-op otherwise */\n activateBreakpoint(bp: BreakPoint) {\n const lookupBreakpoint = this._registry.get(bp.mediaQuery);\n if (lookupBreakpoint) {\n lookupBreakpoint.activate();\n }\n }\n\n /** Deactivate the specified breakpoint if we're on the server, no-op otherwise */\n deactivateBreakpoint(bp: BreakPoint) {\n const lookupBreakpoint = this._registry.get(bp.mediaQuery);\n if (lookupBreakpoint) {\n lookupBreakpoint.deactivate();\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): ServerMediaQueryList {\n return new ServerMediaQueryList(query);\n }\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 {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {BreakPoint} from '../breakpoints/break-point';\nimport {BreakPointRegistry} from '../breakpoints/break-point-registry';\nimport {MatchMedia} from '../match-media/match-media';\nimport {MediaChange} from '../media-change';\nimport {mergeAlias} from '../add-alias';\n\n\n/**\n * MediaMonitor uses the MatchMedia service to observe mediaQuery changes (both activations and\n * deactivations). These changes are are published as MediaChange notifications.\n *\n * Note: all notifications will be performed within the\n * ng Zone to trigger change detections and component updates.\n *\n * It is the MediaMonitor that:\n * - auto registers all known breakpoints\n * - injects alias information into each raw MediaChange event\n * - provides accessor to the currently active BreakPoint\n * - publish list of overlapping BreakPoint(s); used by ResponsiveActivation\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\n@Injectable({providedIn: 'root'})\nexport class MediaMonitor {\n constructor(private _breakpoints: BreakPointRegistry, private _matchMedia: MatchMedia) {\n this._registerBreakpoints();\n }\n\n /**\n * Read-only accessor to the list of breakpoints configured in the BreakPointRegistry provider\n */\n get breakpoints(): BreakPoint[] {\n return [...this._breakpoints.items];\n }\n\n get activeOverlaps(): BreakPoint[] {\n return this._breakpoints.overlappings\n .reverse()\n .filter(bp => this._matchMedia.isActive(bp.mediaQuery));\n }\n\n get active(): BreakPoint | null {\n const items = this.breakpoints.reverse();\n const first = items.find(bp => bp.alias !== '' && this._matchMedia.isActive(bp.mediaQuery));\n return first || null;\n }\n\n /**\n * For the specified mediaQuery alias, is the mediaQuery range active?\n */\n isActive(alias: string): boolean {\n const bp = this._breakpoints.findByAlias(alias) || this._breakpoints.findByQuery(alias);\n return this._matchMedia.isActive(bp ? bp.mediaQuery : alias);\n }\n\n /**\n * External observers can watch for all (or a specific) mql changes.\n * If specific breakpoint is observed, only return *activated* events\n * otherwise return all events for BOTH activated + deactivated changes.\n */\n observe(alias: string = ''): Observable {\n const bp = this._breakpoints.findByAlias(alias) || this._breakpoints.findByQuery(alias);\n const hasAlias = (change: MediaChange) => (bp ? change.mqAlias !== '' : true);\n // Note: the raw MediaChange events [from MatchMedia] do not contain important alias information\n\n const media$ = this._matchMedia.observe(bp ? bp.mediaQuery : alias);\n return media$.pipe(\n map(change => mergeAlias(change, bp)),\n filter(hasAlias)\n );\n }\n\n /**\n * Immediate calls to matchMedia() to establish listeners\n * and prepare for immediate subscription notifications\n */\n private _registerBreakpoints() {\n const queries = this._breakpoints.sortedItems.map(bp => bp.mediaQuery);\n this._matchMedia.registerQuery(queries);\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} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {BreakPointRegistry} from '../breakpoints/break-point-registry';\nimport {MediaChange} from '../media-change';\nimport {MatchMedia} from '../match-media/match-media';\nimport {mergeAlias} from '../add-alias';\n\n/**\n * Class internalizes a MatchMedia service and exposes an Observable interface.\n\n * This exposes an Observable with a feature to subscribe to mediaQuery\n * changes and a validator method (`isActive()`) to test if a mediaQuery (or alias) is\n * currently active.\n *\n * !! Only mediaChange activations (not de-activations) are announced by the MediaObserver\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 * !! This is not an actual Observable. It is a wrapper of an Observable used to publish additional\n * methods like `isActive(). To access the Observable and use RxJS operators, use\n * `.media$` with syntax like mediaObserver.media$.map(....).\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 onChange = (change: MediaChange) => {\n * this.status = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : '';\n * };\n *\n * // Subscribe directly or access observable to use filter/map operators\n * // e.g. mediaObserver.media$.subscribe(onChange);\n *\n * mediaObserver.media$()\n * .pipe(\n * filter((change: MediaChange) => true) // silly noop filter\n * ).subscribe(onChange);\n * }\n * }\n */\n@Injectable({providedIn: 'root'})\nexport class MediaObserver {\n /**\n * Whether to announce gt- breakpoint activations\n */\n filterOverlaps = true;\n readonly media$: Observable;\n\n constructor(private breakpoints: BreakPointRegistry, private mediaWatcher: MatchMedia) {\n this._registerBreakPoints();\n this.media$ = this._buildObservable();\n }\n\n /**\n * Test if specified query/alias is active.\n */\n isActive(alias: string): boolean {\n return this.mediaWatcher.isActive(this._toMediaQuery(alias));\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 _registerBreakPoints() {\n const queries = this.breakpoints.sortedItems.map(bp => bp.mediaQuery);\n this.mediaWatcher.registerQuery(queries);\n }\n\n /**\n * Prepare internal observable\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() {\n const excludeOverlaps = (change: MediaChange) => {\n const bp = this.breakpoints.findByQuery(change.mediaQuery);\n return !bp ? true : !(this.filterOverlaps && bp.overlapping);\n };\n\n /**\n * Only pass/announce activations (not de-activations)\n * Inject associated (if any) alias information into the MediaChange event\n * Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only\n */\n return this.mediaWatcher.observe()\n .pipe(\n filter(change => change.matches),\n filter(excludeOverlaps),\n map((change: MediaChange) =>\n mergeAlias(change, this._findByQuery(change.mediaQuery))\n )\n );\n }\n\n /**\n * Breakpoint locator by alias\n */\n private _findByAlias(alias: string) {\n return this.breakpoints.findByAlias(alias);\n }\n\n /**\n * Breakpoint locator by mediaQuery\n */\n private _findByQuery(query: string) {\n return this.breakpoints.findByQuery(query);\n }\n\n /**\n * Find associated breakpoint (if any)\n */\n private _toMediaQuery(query: string) {\n const bp = this._findByAlias(query) || this._findByQuery(query);\n return bp ? bp.mediaQuery : query;\n }\n}\n"],"names":["type","StylesheetMap","decorators","Optional","Boolean","Inject","args","SERVER_TOKEN","Object","PLATFORM_ID","undefined","LAYOUT_CONFIG","StyleUtils","StyleBuilder","this","shouldCache","prototype","sideEffect","_input","_styles","_parent","MediaMarshaller","matchMedia","breakpoints","activatedBreakpoints","elementMap","Map","elementKeyMap","WeakMap","watcherMap","builderMap","clearBuilderMap","subject","Subject","observe","subscribe","activate","bind","registerBreakpoints","defineProperty","alias","mc","bp","findByQuery","mediaQuery","matches","indexOf","push","sort","prioritySort","updateStyles","splice","init","element","key","updateFn","clearFn","extraTriggers","buildElementKeyMap","initBuilderMap","watchExtraTriggers","getValue","bpMap","get","values","getFallback","value","hasValue","setValue","val","set","updateElement","trackValue","asObservable","pipe","filter","v","_this","forEach","el","valueMap","keyMap","Set","k","delete","fallbackMap","clearElement","builders","builder","next","releaseElement","s","unsubscribe","_","add","triggers","length","watchers","newSubscription","merge","apply","currentValue","query","i","activatedBp","has","queries","sortedItems","map","registerQuery","Injectable","providedIn","MatchMedia","BreakPointRegistry","__extends","d","b","__","constructor","extendStatics","create","removeStyles","_document","platformId","isPlatformBrowser","classRegex_1","Array","from","querySelectorAll","CLASS_NAME","classList","contains","parentNode","removeChild","className","replace","extendObject","dest","sources","_i","arguments","TypeError","_a","sources_1","source","hasOwnProperty","firstUpperCase","part","first","charAt","remainder","slice","toUpperCase","camelCase","name","ALIAS_DELIMITERS","split","join","validateSuffixes","list","suffix","overlapping","mergeByAlias","defaults","custom","dict","keys","a","priorityA","priority","buildQueryCss","mediaQueries","it","ALL_STYLES","styleEl_1","createElement","setAttribute","styleSheet","cssText","appendChild","createTextNode","mq","e","console","error","constructMql","isBrowser","addListener","media","removeListener","mergeAlias","mqAlias","buildLayoutCSS","validateValue","buildCSS","toLowerCase","direction","wrap","inline","LAYOUT_VALUES","find","x","INLINE","validateWrapValue","display","box-sizing","flex-direction","flex-wrap","applyCssPrefixes","target","isNaN","validateBasis","basis","grow","shrink","parts","j","_validateCalcValue","substring","trim","substr","calc","input","oldMap","setPrototypeOf","__proto__","p","__assign","assign","t","n","call","BROWSER_PROVIDER","provide","APP_BOOTSTRAP_LISTENER","useFactory","deps","DOCUMENT","multi","BREAKPOINT","InjectionToken","factory","RESPONSIVE_ALIASES","DEFAULT_BREAKPOINTS","TABLET_LANDSCAPE","TABLET_PORTRAIT","WEB_PORTRAIT","WEB_LANDSCAPE","ScreenTypes","HANDSET","HANDSET_PORTRAIT","TABLET","WEB","HANDSET_LANDSCAPE","ORIENTATION_BREAKPOINTS","DEFAULT_CONFIG","addFlexToParent","addOrientationBps","disableDefaultBps","disableVendorPrefixes","serverLoaded","useColumnBasisZero","BREAKPOINTS","inject","layoutConfig","bpFlattenArray","concat","isArray","_registry","overlaps","nonOverlaps","findByAlias","MediaChange","property","clone","_zone","_platformId","_source","BehaviorSubject","_observable$","isActive","mql","change","onMQLEvent","run","window","addEventListener","_buildMQL","NgZone","ObservableMedia","MediaService","mediaWatcher","filterOverlaps","_registerBreakPoints","observable$","_buildObservable","_toMediaQuery","observerOrNext","complete","excludeOverlaps","_findByQuery","_findByAlias","ObservableMediaProvider","useClass","NgModule","providers","CoreModule","stylesheet","addStyleToElement","style","clearStyles","clear","getStyleForElement","styleName","styles","KeyOptions","baseKey","defaultValue","inputKeys","ResponsiveActivation","_options","_mediaMonitor","_onMediaChanges","_activatedInputKey","_registryMap","_buildRegistryMap","_subscribers","_configureChangeObservers","reverse","activatedInputKey","hasKeyValue","_lookupKeyValue","destroy","link","subscriptions","_keyInUse","buildChanges","_onMonitorEvents","_calculateActivatedValue","current","currentKey","newKey","_validateInputKey","activatedInput","inputKey","isMissingKey","activeOverlaps","some","BaseDirective","_elementRef","_styler","_styleBuilder","_inputMap","_hasInitialized","_styleCache","_mqActivation","previousVal","SimpleChange","ngOnChanges","hasResponsiveAPI","ngOnInit","Error","ngOnDestroy","nativeElement","addStyles","parent","useCache","genStyles","buildStyles","_applyStyleToElement","_queryInput","_getDefaultVal","fallbackVal","_getDisplayStyle","lookupStyle","_getAttributeValue","attribute","lookupAttributeValue","_getFlexFlowDirection","addIfMissing","getFlowDirection","elements","applyStyleToElements","applyStyleToElement","_applyStyleToElements","_cacheInput","prop","_listenForMediaQueryChanges","onMediaQueryChange","keyOptions","obj","children","buffer","BaseDirectiveAdapter","_super","_baseKey","tslib_1.__extends","mqa","queryInput","cacheInput","cacheRaw","_cacheInputRaw","_cacheInputArray","_cacheInputObject","_cacheInputString","listenForMediaQueryChanges","classes","BaseDirective2","elementRef","styleBuilder","styler","marshal","DIRECTIVE_KEY","inputs","mru","destroySubject","styleCache","parentElement","activatedBreakpoint","changes","updateWithValue","tslib_1.__assign","triggerUpdate","getFlexFlowDirection","MockMatchMedia","_breakpoints","autoRegisterQueries","useOverlaps","_actives","clearAll","_validateQuery","_deactivateAll","_registerMediaQuery","_activateWithOverlaps","hasActivated","queryOrAlias","_activateByAlias","_activateByQuery","aliases","alreadyAdded","reduce","found","deactivate","MockMediaQueryList","_mediaQuery","_isActive","_listeners","onchange","callback","listener","___","removeEventListener","dispatchEvent","MockMatchMediaProvider","ServerMediaQueryList","ServerMatchMedia","activateBreakpoint","lookupBreakpoint","deactivateBreakpoint","MediaMonitor","_matchMedia","_registerBreakpoints","items","overlappings","hasAlias","MediaObserver","media$","_serverStylesheet","_serverModuleLoaded","_applyMultiValueStyleToElement","hasInlineValue","lookupInlineStyle","isPlatformServer","getAttribute","getPropertyValue","_getServerStyle","inlineOnly","getComputedStyle","values_1","setProperty","_setServerStyle","styleValue","styleMap","_readStyleAttribute","_writeStyleAttribute","styleAttribute","styleList","colonIndex","name_1","styleAttrValue"],"mappings":";;;;;;;8eGuBA,SAAgBkH,GAAUC,EAAGC,GAEzB,QAASC,KAAOvG,KAAKwG,YAAcH,EADnCI,EAAcJ,EAAGC,GAEjBD,EAAEnG,UAAkB,OAANoG,EAAa5G,OAAOgH,OAAOJ,IAAMC,EAAGrG,UAAYoG,EAAEpG,UAAW,GAAIqG,ICXnF,QAAgBI,GAAaC,EAAqBC,GAChD,MAAO,YACL,GAAIC,EAAAA,kBAAkBD,GAAa,CACjC,GAMME,GAAa,sBANFC,OAAMC,KAAKL,EAAUM,iBAAiB,WAAWC,EAAxE,MAOenD,QAAQ,SAAAC,GACfA,EAAGmD,UAAUC,SAAYF,EAAjC,QAAqDlD,EAAGqD,WAC9CrD,EAAGqD,WAAWC,YAAYtD,GAAMA,EAAGuD,UAAUC,QAAQV,EAAY,QCb3E,QAAgBW,GAAaC,GAA7B,IAAwC,GAAxCC,MAAAC,EAAA,EAAwCA,EAAxCC,UAAA5C,OAAwC2C,IAAAD,EAAxCC,EAAA,GAAAC,UAAAD,EACE,IAAY,MAARF,EACF,KAAMI,WAAU,6CAGlB,KAAmB,GAArBC,GAAA,EAAqBC,EAArBL,EAAqBI,EAArBC,EAAA/C,OAAqB8C,IAAS,CAAvB,GAAIE,GAAXD,EAAAD,EACI,IAAc,MAAVE,EACF,IAAK,GAAI1F,KAAO0F,GACVA,EAAOC,eAAe3F,KACxBmF,EAAKnF,GAAO0F,EAAO1F,IAM3B,MAAOmF,GCjBT,QAASS,GAAeC,GACtB,GAAIC,GAAQD,EAAKnD,OAAS,EAAImD,EAAKE,OAAO,GAAK,GAC3CC,EAAaH,EAAKnD,OAAS,EAAKmD,EAAKI,MAAM,GAAK,EACpD,OAAOH,GAAMI,cAAgBF,EAO/B,QAASG,GAAUC,GACjB,MAAOA,GACFnB,QAAQoB,EAAkB,KAC1BC,MAAM,KACNhD,IAAIsC,GACJW,KAAK,IAOZ,QAAgBC,GAAiBC,GAO/B,MANAA,GAAKjF,QAAQ,SAACpC,GACPA,EAAGsH,SACNtH,EAAGsH,OAASP,EAAU/G,EAAGF,OACzBE,EAAGuH,cAAgBvH,EAAGuH,eAGnBF,EAQT,QAAgBG,GAAaC,EAAwBC,OAArD,KAAAA,IAAqDA,KACnD,IAAMC,KAaN,OAZAF,GAASrF,QAAQ,SAAApC,GACf2H,EAAK3H,EAAGF,OAASE,IAGnB0H,EAAOtF,QAAQ,SAACpC,GACV2H,EAAK3H,EAAGF,OACVgG,EAAa6B,EAAK3H,EAAGF,OAAQE,GAE7B2H,EAAK3H,EAAGF,OAASE,IAIdoH,EAAiBtJ,OAAO8J,KAAKD,GAAMzD,IAAI,SAAAzB,GAAK,MAAAkF,GAAKlF,MAI1D,QAAgBlC,GAAasH,EAAenD,GAC1C,GAAMoD,GAAYD,EAAEE,UAAY,CAEhC,QADkBrD,EAAEqD,UAAY,GACbD,ECuDrB,QAASE,GAAcC,EAAwBjD,GAC7C,GAAMqC,GAAOY,EAAahG,OAAO,SAAAiG,GAAM,OAACC,EAAWD,IACnD,IAAIb,EAAK/D,OAAS,EAAG,CACnB,GAAMM,GAAQyD,EAAKF,KAAK,KAExB,KACE,GAAMiB,GAAUpD,EAAUqD,cAAc,QAGxC,IADAD,EAAQE,aAAa,OAAQ,aACxB,EAAiBC,WAAY,CAChC,GAAMC,GAAU,2IAKf5E,EALT,wBAOQwE,GAAQK,YAAYzD,EAAU0D,eAAeF,IAG/CxD,EAAc,KAAEyD,YAAYL,GAG5Bf,EAAKjF,QAAQ,SAAAuG,GAAM,MAAAR,GAAWQ,GAAMP,IAEpC,MAAOQ,GACPC,QAAQC,MAAMF,KAKpB,QAASG,GAAanF,EAAeoF,GAGnC,MAFkBA,MAAe,OAAcpK,WAAW,OAAOqK,YAE9C,OAAcrK,WAAWgF,IAC1CzD,QAAmB,QAAVyD,GAA6B,KAAVA,EAC5BsF,MAAOtF,EACPqF,YAAa,aAEbE,eAAgB,cCrJpB,QAAgBC,GAAWrD,EAAmBO,GAC5C,MAAOR,GAAaC,EAAMO,GACpB+C,QAAS/C,EAAOxG,MAChBwH,OAAQhB,EAAOgB,YCLvB,QAAgBgC,GAAe9H,GACxB,GAAP4E,GAAAmD,EAAA/H,EACE,OAAOgI,GADTpD,EAAA,GAAAA,EAAA,GAAAA,EAAA,IAQA,QAAgBmD,GAAc/H,GAC5BA,EAAQA,EAAQA,EAAMiI,cAAgB,EACjC,IAAPrD,GAAA5E,EAAA0F,MAAA,KAAOwC,EAAPtD,EAAA,GAAkBuD,EAAlBvD,EAAA,GAAwBwD,EAAxBxD,EAAA,EAYE,OATKyD,GAAcC,KAAK,SAAAC,GAAK,MAAAA,KAAML,MACjCA,EAAYG,EAAc,IAGxBF,IAASK,IACXL,EAAQC,IAAWI,EAAUJ,EAAS,GACtCA,EAASI,IAGHN,EAAWO,EAAkBN,KAASC,GAehD,QAAgBK,GAAkBzI,GAChC,GAAMA,EACJ,OAAQA,EAAMiI,eACZ,IAAK,UACL,IAAK,eACL,IAAK,eACHjI,EAAQ,cACR,MAEF,KAAK,KACL,IAAK,OACL,IAAK,SACHA,EAAQ,QACR,MAGF,SACEA,EAAQ,OAId,MAAOA,GAYT,QAASgI,GAASE,EAAmBC,EAA4BC,GAC/D,WADF,KAAAD,IAAqCA,EAArC,UAAA,KAAAC,IAAiEA,GAAjE,IAEIM,QAAWN,EAAS,cAAgB,OACpCO,aAAc,aACdC,iBAAkBV,EAClBW,YAAeV,GAAc,MCtEjC,QAAgBW,GAAiBC,GAC/B,IAAK,GAAI3J,KAAO2J,GAAQ,CACtB,GAAI/I,GAAQ+I,EAAO3J,IAAQ,EAE3B,QAAQA,GACN,IAAK,UAED2J,EAAgB,QADJ,SAAV/I,GAEA,eACA,QAEiB,gBAAVA,GAEP,sBACA,eAGkBA,CAEtB,MAEF,KAAK,cACL,IAAK,aACL,IAAK,gBACL,IAAK,OACL,IAAK,aACL,IAAK,YACL,IAAK,YACL,IAAK,cACL,IAAK,YACL,IAAK,kBACH+I,EAAO,WAAa3J,GAAOY,CAC3B,MAEF,KAAK,iBACHA,EAAQA,GAAS,MACjB+I,EAAO,0BAA4B/I,EACnC+I,EAAO,kBAAoB/I,CAC3B,MAEF,KAAK,QACH+I,EAAc,MAAIA,EAAO,WAAa3J,GAAO4J,OAAOhJ,GAAS,IAAMA,GAIzE,MAAO+I,GCnDT,QAAgBE,GAAcC,EAAeC,EAAYC,OAAzD,KAAAD,IAA6CA,EAA7C,SAAA,KAAAC,IAAyDA,EAAzD,IACE,IAAIC,IAASF,EAAMC,EAAQF,GAEvBI,EAAIJ,EAAMtK,QAAQ,OACtB,IAAI0K,EAAI,EAAG,CACTD,EAAM,GAAKE,EAAmBL,EAAMM,UAAUF,GAAGG,OACjD,IAAI9K,GAAUuK,EAAMQ,OAAO,EAAGJ,GAAGG,OAAO/D,MAAM,IACxB,IAAlB/G,EAAQmD,SACVuH,EAAM,GAAK1K,EAAQ,GACnB0K,EAAM,GAAK1K,EAAQ,QAEhB,IAAS,GAAL2K,EACTD,EAAM,GAAKE,EAAmBL,EAAMO,YAC/B,CACL,GAAI9K,GAAUuK,EAAMxD,MAAM,IAC1B2D,GAA4B,IAAnB1K,EAAQmD,OAAgBnD,GAC3BwK,EAAMC,EAAQF,GAItB,MAAOG,GAcT,QAASE,GAAmBI,GAC1B,MAAOA,GAAKtF,QAAQ,QAAS,IAAIA,QAAQ,cAAe,QTyP1D,QAAS5E,GAAeiD,EACAvD,EACAC,EACAwK,GACtB,OAAcpN,KAAVoN,EAAqB,CACvB,GAAIC,GAASnH,EAAI7C,IAAIV,EAChB0K,KACHA,EAAS,GAAIrM,KACbkF,EAAItC,IAAIjB,EAAS0K,IAEnBA,EAAOzJ,IAAIhB,EAAKwK,ICnSpB,GAAIvG,GAAgB,SAASJ,EAAGC,GAI5B,OAHAG,EAAgB/G,OAAOwN,iBAChBC,uBAA2BnG,QAAS,SAAUX,EAAGC,GAAKD,EAAE8G,UAAY7G,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI8G,KAAK9G,GAAOA,EAAE6B,eAAeiF,KAAI/G,EAAE+G,GAAK9G,EAAE8G,MACpD/G,EAAGC,IASjB+G,EAAW,WAQlB,MAPAA,GAAW3N,OAAO4N,QAAU,SAAkBC,GAC1C,IAAK,GAAI1I,GAAGY,EAAI,EAAG+H,EAAI1F,UAAU5C,OAAQO,EAAI+H,EAAG/H,IAAK,CACjDZ,EAAIiD,UAAUrC,EACd,KAAK,GAAI2H,KAAKvI,GAAOnF,OAAOQ,UAAUiI,eAAesF,KAAK5I,EAAGuI,KAAIG,EAAEH,GAAKvI,EAAEuI,IAE9E,MAAOG,IAEJF,EAAS/H,MAAMtF,KAAM8H,YCDnB4F,GACXC,QAAyCC,EAAsB,uBAC/DC,WAAYlH,EACZmH,MAAOC,EAAAA,SAAUpO,EAAAA,aACjBqO,OAAO,GAGI7G,EAAa,eQjCb8G,EAAa,GAAIC,GAAAA,eAC5B,gEACEjI,WAAY,OACZkI,QAAS,WAAM,MAAA,SCJNC,GACX,KAAM,QAAS,KAAM,QAAS,KAAM,QAAS,KAAM,QAAS,MAGjDC,IAET3M,MAAO,KACPI,WAAY,0CACZ6H,SAAU,MAGVjI,MAAO,QACPyH,aAAa,EACbrH,WAAY,qBACZ6H,SAAU,IAGVjI,MAAO,QACPyH,aAAa,EACbrH,WAAY,qBACZ6H,SAAU,KAGVjI,MAAO,KACPI,WAAY,4CACZ6H,SAAU,MAGVjI,MAAO,QACPyH,aAAa,EACbrH,WAAY,qBACZ6H,SAAU,IAGVjI,MAAO,QACPyH,aAAa,EACbrH,WAAY,qBACZ6H,SAAU,IAGVjI,MAAO,KACPI,WAAY,6CACZ6H,SAAU,MAGVjI,MAAO,QACPyH,aAAa,EACbrH,WAAY,sBACZ6H,SAAU,IAGVjI,MAAO,QACPyH,aAAa,EACbrH,WAAY,sBACZ6H,SAAU,IAGVjI,MAAO,KACPI,WAAY,8CACZ6H,SAAU,MAGVjI,MAAO,QACPyH,aAAa,EACbrH,WAAY,sBACZ6H,SAAU,KAGVjI,MAAO,QACPyH,aAAa,EACbrH,WAAY,sBACZ6H,SAAU,IAGVjI,MAAO,KACPI,WAAY,8CACZ6H,SAAU,MCvER2E,EAAoB,0EACpBC,EAAoB,wEAEpBC,EAAoB,iDACpBC,EAAoB,mDAEbC,GACXC,QAAyBC,kGACzBC,OAAyBN,EAA3B,MAAgDD,EAC9CQ,IAAyBN,EAA3B,KAA4CC,EAA5C,IAEEG,iBAdwB,iDAexBL,gBAAyBA,EAA3B,IACEC,aAAsB,GAAGA,EAEzBO,kBAAyBA,mDACzBT,iBAAsB,GAAGA,EACzBG,cAAsB,GAAGA,GAMdO,IACVtN,MAAS,UAAsBI,WAAc4M,EAAYC,UACzDjN,MAAS,oBAAsBI,WAAc4M,EAAYK,oBACzDrN,MAAS,mBAAsBI,WAAc4M,EAAYE,mBAEzDlN,MAAS,SAAsBI,WAAc4M,EAAYG,SACzDnN,MAAS,mBAAsBI,WAAc4M,EAAYG,SACzDnN,MAAS,kBAAsBI,WAAc4M,EAAYH,kBAEzD7M,MAAS,MAAsBI,WAAc4M,EAAYI,IAAK3F,aAAc,IAC5EzH,MAAS,gBAAsBI,WAAc4M,EAAYD,cAAetF,aAAc,IACtFzH,MAAS,eAAsBI,WAAc4M,EAAYF,aAAcrF,aAAc,IRrClFN,EAAmB,YSQZoG,GACXC,iBAAiB,EACjBC,mBAAmB,EACnBC,mBAAmB,EACnBC,uBAAuB,EACvBC,cAAc,EACdC,oBAAoB,GAGT1P,EAAgB,GAAIqO,GAAAA,eAC/B,qDACEjI,WAAY,OACZkI,QAAS,WAAM,MAAAc,MCXNO,EACX,GAAItB,GAAAA,eAA6B,4CAC/BjI,WAAY,OACZkI,QAAS,WACP,GAAM1N,GAAmBgP,EAAAA,OAAOxB,GAC1ByB,EAAeD,EAAAA,OAAO5P,GACtB8P,KAAkCC,OAAOtK,UAAW7E,OACvDqF,IAAI,SAAChC,GAAiC,MAAAkD,OAAM6I,QAAQ/L,GAAKA,GAAKA,KAIjE,OAAOsF,IAHWsG,EAAaN,qBAAyBf,GACrDuB,OAAOF,EAAaP,kBAAoBH,MAEbW,mBCVlC,QAAFxJ,GAA2C2J,GAAA9P,KAA3C8P,UAA2CA,EArB3C,MA2BEpQ,QAAF+B,eAAM0E,EAANjG,UAAA,aAAE,WACE,MAAWF,MAAK8P,UAApBrH,yCAUE/I,OAAF+B,eAAM0E,EAANjG,UAAA,mBAAE,WACE,GAAI6P,GAAW/P,KAAK8P,UAAUjM,OAAO,SAAAiG,GAAM,OAAmB,IAAnBA,EAAGX,cAC1C6G,EAAchQ,KAAK8P,UAAUjM,OAAO,SAAAiG,GAAM,OAAmB,IAAnBA,EAAGX,aAEjD,OAAW4G,GAAfH,OAA4BI,oCAM1B7J,EAAFjG,UAAA+P,YAAE,SAAYvO,GACV,MAAO1B,MAAK8P,UAAUpE,KAAK,SAAA9J,GAAM,MAAAA,GAAGF,OAASA,KAAU,MAGzDyE,EAAFjG,UAAA2B,YAAE,SAAY2D,GACV,MAAOxF,MAAK8P,UAAUpE,KAAK,SAAA9J,GAAM,MAAAA,GAAGE,YAAc0D,KAAU,MAO9D9F,OAAF+B,eAAM0E,EAANjG,UAAA,oBAAE,WACE,MAAOF,MAAK8P,UAAUjM,OAAO,SAAAiG,GAAM,MAAkB,IAAlBA,EAAGX,+CAMxCzJ,OAAF+B,eAAM0E,EAANjG,UAAA,eAAE,WACE,MAAOF,MAAK8P,UAAUhK,IAAI,SAAAgE,GAAM,MAAAA,GAAGpI,yCAQrChC,OAAF+B,eAAM0E,EAANjG,UAAA,gBAAE,WACE,MAAOF,MAAK8P,UAAUhK,IAAI,SAAAgE,GAAM,MAAEA,GAAGZ,OAASY,EAAGZ,OAAS,qDA3D9DhK,KAAC8G,EAAAA,WAADxG,OAAayG,WAAY,+CAGzB/G,KAAA8H,MAAA5H,aAAAF,KAAeK,EAAAA,OAAfC,MAAsBgQ,wHArBtBrJ,KCYA+J,EAAA,WAUE,QAAFA,GAAqBnO,EACAD,EACAmJ,EACA/B,OAHrB,KAAAnH,IAAAA,GAAA,+DAAqB/B,KAArB+B,QAAqBA,EACA/B,KAArB8B,WAAqBA,EACA9B,KAArBiL,QAAqBA,EACAjL,KAArBkJ,OAAqBA,EAZnBlJ,KAAFmQ,SAAqB,GAbrB,MA6BED,GAAFhQ,UAAAkQ,MAAE,WACE,MAAO,IAAIF,GAAYlQ,KAAK+B,QAAS/B,KAAK8B,WAAY9B,KAAKiL,QAASjL,KAAKkJ,SA9B7EgH,kBX2BE,QAAFhK,GAAwBmK,EACqBC,EACH1J,GAFlB5G,KAAxBqQ,MAAwBA,EACqBrQ,KAA7CsQ,YAA6CA,EACHtQ,KAA1C4G,UAA0CA,EANxC5G,KAAF8P,UAAwB,GAAIlP,KAC1BZ,KAAFuQ,QAAsB,GAAIC,GAAAA,gBAA6B,GAAIN,IAAY,IACrElQ,KAAFyQ,aAA2BzQ,KAAKuQ,QAAQ5M,eAzBxC,MAmCEuC,GAAFhG,UAAAwQ,SAAE,SAAS5O,GACP,GAAM6O,GAAM3Q,KAAK8P,UAAU7M,IAAInB,EAC/B,SAAS6O,GAAMA,EAAI5O,SAWrBmE,EAAFhG,UAAAkB,QAAE,SAAQU,GAKN,MAJIA,IACF9B,KAAK+F,cAAcjE,GAGd9B,KAAKyQ,aAAa7M,KACvBC,EAAAA,OAAO,SAAA+M,GAAU,OAAC9O,GAAc8O,EAAO9O,aAAeA,MAQ1DoE,EAAFhG,UAAA6F,cAAE,SAAcjE,GAAd,GAAFiC,GAAA/D,KACUiJ,EAAOjC,MAAM6I,QAAQ/N,GAAckF,MAAMC,KAAK,GAAI7C,KAAItC,KAAgBA,EAExEmH,GAAK/D,OAAS,GAChB0E,EAAcX,EAAMjJ,KAAK4G,WAG3BqC,EAAKjF,QAAQ,SAAAwB,GACX,GAAMqL,GAAa,SAACrG,GAClBzG,EAAKsM,MAAMS,IAAI,WAAM,MAAA/M,GAAKwM,QAAQ5L,KAAK,GAAIuL,GAAY1F,EAAEzI,QAASyD,OAGhEmL,EAAM5M,EAAK+L,UAAU7M,IAAIuC,EAExBmL,KACW,UAAVnL,GAMFuL,OAAOC,iBAAiB,cAAe,WACrCH,GACE/O,WAAY0D,EACZzD,SAAS,MAMf4O,EAAM5M,EAAKkN,UAAUzL,GACrBmL,EAAI9F,YAAYgG,GAChB9M,EAAK+L,UAAUtM,IAAIgC,EAAOmL,IAGxBA,EAAI5O,SACN8O,EAAU,MASN3K,EAAZhG,UAAA+Q,UAAE,SAAoBzL,GAClB,MAAOmF,GAAanF,EAAOsB,EAAAA,kBAAkB9G,KAAKsQ,8BAvFtDpR,KAAC8G,EAAAA,WAADxG,OAAayG,WAAY,+CAdzB/G,KAA4BgS,EAAAA,SAqB5BhS,KAA0DQ,OAA1DN,aAAAF,KAAeK,EAAAA,OAAfC,MAAsBG,EAAAA,iBACtBT,SAAAU,GAAAR,aAAAF,KAAeK,EAAAA,OAAfC,MAAsBuO,EAAAA,mLA7BtB7H,KAoHM6D,KY9FNoH,EAAA,yBAtBA,MAAAA,mBAqFE,QAAFC,GAAsB3Q,EACA4Q,GADArR,KAAtBS,YAAsBA,EACAT,KAAtBqR,aAAsBA,EAHpBrR,KAAFsR,gBAAmB,EAIftR,KAAKuR,uBACLvR,KAAKwR,YAAcxR,KAAKyR,mBAxF5B,MA8FEL,GAAFlR,UAAAwQ,SAAE,SAAShP,GACP,MAAO1B,MAAKqR,aAAaX,SAAS1Q,KAAK0R,cAAchQ,KAMvD0P,EAAFlR,UAAAmB,UAAE,SAAUsQ,EACAjH,EACAkH,GACR,MAAID,IAC4B,gBAAnBA,GACF3R,KAAKwR,YAAYnQ,UAAUsQ,EAAehN,KAAMgN,EAAejH,MACpEiH,EAAeC,UAId5R,KAAKwR,YAAYnQ,UAAUsQ,EAAgBjH,EAAOkH,IAO3DR,EAAFlR,UAAAyD,aAAE,WACE,MAAO3D,MAAKwR,aAYNJ,EAAVlR,UAAAqR,gCACI,GAAM3L,GAAU5F,KAAKS,YAAYoF,YAAYC,IAAI,SAAAlE,GAAM,MAAAA,GAAGE,YAC1D9B,MAAKqR,aAAatL,cAAcH,IAU1BwL,EAAVlR,UAAAuR,uCACUI,EAAkB,SAACjB,GACvB,GAAMhP,GAAKmC,EAAKtD,YAAYoB,YAAY+O,EAAO9O,WAC/C,QAAQF,KAAcmC,EAAKuN,gBAAkB1P,EAAGuH,aAQlD,OAAOnJ,MAAKqR,aAAajQ,UAAUwC,KACjCC,EAAAA,OAAO,SAAA+M,GAAU,MAAAA,GAAO7O,UACxB8B,EAAAA,OAAOgO,GACP/L,EAAAA,IAAI,SAAC8K,GACH,MAAA5F,GAAW4F,EAAQ7M,EAAK+N,aAAalB,EAAO9O,iBAO1CsP,EAAVlR,UAAA6R,aAAA,SAAuBrQ,GACnB,MAAO1B,MAAKS,YAAYwP,YAAYvO,IAM9B0P,EAAVlR,UAAA4R,aAAA,SAAuBtM,GACnB,MAAOxF,MAAKS,YAAYoB,YAAY2D,IAM9B4L,EAAVlR,UAAAwR,cAAA,SAAwBlM,GACpB,GAAM5D,GAAwB5B,KAAK+R,aAAavM,IAAUxF,KAAK8R,aAAatM,EAC5E,OAAO5D,GAAKA,EAAGE,WAAa0D,kBAvGhCtG,KAAC8G,EAAAA,WAADxG,OAAayG,WAAY,+CAnEzB/G,KAAQiH,IAERjH,KAAQgH,iIAbRkL,KA+LaY,GACXrE,QAASwD,EACTc,SAAUb,8BCjMZ,sBAkBAlS,KAACgT,EAAAA,SAAD1S,OACE2S,WAAYzE,EAAkBsE,OAnBhCI,+BCkBEpS,KAAFqS,WAAwB,GAAIzR,KAlB5B,MAuBEzB,GAAFe,UAAAoS,kBAAE,SAAkB/P,EAAsBgQ,EAAenP,GACrD,GAAMiP,GAAarS,KAAKqS,WAAWpP,IAAIV,EACnC8P,GACFA,EAAW7O,IAAI+O,EAAOnP,GAEtBpD,KAAKqS,WAAW7O,IAAIjB,EAAS,GAAI3B,OAAM2R,EAAOnP,OAOlDjE,EAAFe,UAAAsS,YAAE,WACExS,KAAKqS,WAAWI,SAMlBtT,EAAFe,UAAAwS,mBAAE,SAAmBzO,EAAiB0O,GAClC,GAAMC,GAAS5S,KAAKqS,WAAWpP,IAAIgB,GAC/Bb,EAAQ,EACZ,IAAIwP,EAAQ,CACV,GAAML,GAAQK,EAAO3P,IAAI0P,EACJ,iBAAVJ,IAAuC,gBAAVA,KACtCnP,EAAQmP,EAAQ,IAGpB,MAAOnP,mBApCXlE,KAAC8G,EAAAA,WAADxG,OAAayG,WAAY,8GAfzB9G,KCeaM,EAAe,GAAIyO,GAAAA,eAC9B,0BACEjI,WAAY,OACZkI,QAAS,WAAM,OAAA,KbXNvC,EAAS,SACTH,GAAiB,MAAO,SAAU,cAAe,kBcoB9DoH,EAAA,WACE,QAAFA,GAAqBC,EACAC,EACAC,GAFAhT,KAArB8S,QAAqBA,EACA9S,KAArB+S,aAAqBA,EACA/S,KAArBgT,UAAqBA,EA/BrB,MAAAH,MAiDAI,GAAA,WAQE,QAAFA,GAAsBC,EACAC,EACAC,GAFApT,KAAtBkT,SAAsBA,EACAlT,KAAtBmT,cAAsBA,EACAnT,KAAtBoT,gBAAsBA,EATtBpT,KAAAqT,mBAAuC,GACvCrT,KAAAsT,aAAwCtT,KAAKuT,oBAC7CvT,KAAAwT,aAAyCxT,KAAKyT,4BApD9C,MAoEE/T,QAAF+B,eAAMwR,EAAN/S,UAAA,2BAAE,WACE,MAAWF,MAAKsT,aAApB7K,QAAkCiL,2CAWhChU,OAAF+B,eAAMwR,EAAN/S,UAAA,yBAAE,WACE,MAAOF,MAAKqT,oBAAsBrT,KAAKkT,SAASJ,yCAMlDpT,OAAF+B,eAAMwR,EAAN/S,UAAA,sBAAE,WACE,GAAMsC,GAAMxC,KAAK2T,iBACjB,OAAO3T,MAAK4T,YAAYpR,GAAOxC,KAAK6T,gBAAgBrR,GAAOxC,KAAKkT,SAASH,8CAM3EE,EAAF/S,UAAA0T,YAAE,SAAYpR,GACV,WAAwC5C,KAAjCI,KAAKkT,SAASF,UAAUxQ,IAMjCyQ,EAAF/S,UAAA4T,QAAE,WACE9T,KAAKwT,aAAaxP,QAAQ,SAAA+P,GAAQ,MAAAA,GAAKjP,gBACvC9E,KAAKwT,iBAOCP,EAAV/S,UAAAuT,gDACUO,IAuBN,OArBAhU,MAAKsT,aAAatP,QAAQ,SAAApC,GACxB,GAAImC,EAAKkQ,UAAUrS,EAAGY,KAAM,CAG1B,GAAM0R,GAAe,SAACtD,GAGpB,MAFAA,GAASA,EAAOR,QAChBQ,EAAOT,SAAWpM,EAAKmP,SAASJ,QACzBlC,EAGToD,GAAc/R,KACZ8B,EAAKoP,cACA/R,QAAQQ,EAAGF,OACXkC,KAAKkC,EAAAA,IAAIoO,IACT7S,UAAU,SAAAuP,GACT7M,EAAKoQ,iBAAiBvD,SAM3BoD,GAODf,EAAV/S,UAAAqT,uCACI,OAAOvT,MAAKmT,cAAc1S,YACvBqF,IAAI,SAAAlE,GAAX,MAA8B8F,MAAiB9F,GACvCkR,QAAS/O,EAAKmP,SAASJ,QACvBtQ,IAAKuB,EAAKmP,SAASJ,QAAUlR,EAAGsH,WAEjCrF,OAAO,SAAAjC,GAAM,MAAAmC,GAAKkQ,UAAUrS,EAAGY,QAO1ByQ,EAAZ/S,UAAAiU,iBAAE,SAA2BvD,GACrBA,EAAOT,WAAanQ,KAAKkT,SAASJ,UACpClC,EAAOxN,MAAQpD,KAAKoU,yBAAyBxD,GAC7C5Q,KAAKoT,gBAAgBxC,KAQjBqC,EAAV/S,UAAA+T,UAAA,SAAoBzR,GAChB,WAAqC5C,KAA9BI,KAAK6T,gBAAgBrR,IAWtByQ,EAAV/S,UAAAkU,yBAAA,SAAmCC,GAC/B,GAAMC,GAAatU,KAAKkT,SAASJ,QAAUuB,EAAQnL,OAC/CqL,EAASvU,KAAKqT,kBAKlB,OAHAkB,GAASF,EAAQtS,QAAUuS,EAAeC,IAAWD,EAAc,GAAKC,EAExEvU,KAAKqT,mBAAqBrT,KAAKwU,kBAAkBD,GAC1CvU,KAAKyU,gBASNxB,EAAV/S,UAAAsU,kBAAA,SAA4BE,cAClBC,EAAe,SAACnS,GAAgB,OAACuB,EAAKkQ,UAAUzR,GAYtD,OAVImS,GAAaD,IACf1U,KAAKmT,cAAcyB,eAAeC,KAAK,SAAAjT,GACrC,GAAMY,GAAMuB,EAAKmP,SAASJ,QAAUlR,EAAGsH,MACvC,QAAKyL,EAAanS,KAChBkS,EAAWlS,GACJ,KAKNkS,GAMDzB,EAAV/S,UAAA2T,gBAAA,SAA0BrR,GACtB,MAAOxC,MAAKkT,SAASF,UAAUxQ,IAtNnCyQ,KC8BA6B,GAAA,WA8BE,QAAFA,GAAkC3B,EACA4B,EACAC,EACAC,GAHAjV,KAAlCmT,cAAkCA,EACAnT,KAAlC+U,YAAkCA,EACA/U,KAAlCgV,QAAkCA,EACAhV,KAAlCiV,cAAkCA,EAwLhCjV,KAAFkV,aAQElV,KAAFmV,iBAA8B,EAG5BnV,KAAFoV,YAAwD,GAAIxU,KAlQ5D,MAoCElB,QAAF+B,eAAMqT,EAAN5U,UAAA,sBAAE,WACE,MAAOF,MAAKqV,cAAgBrV,KAAKqV,cAAcZ,mBAAiB7U,QAUlE,SAAmBwD,SACIkS,EAAjB9S,EAAM,SAENxC,MAAKqV,gBACP7S,EAAMxC,KAAKqV,cAAc1B,kBACzB2B,EAActV,KAAKkV,UAAU1S,GAC7BxC,KAAKkV,UAAU1S,GAAOY,EAExB,IAAMwN,GAAS,GAAI2E,GAAAA,aAAaD,EAAalS,GAAO,EAEpDpD,MAAKwV,aAAYxN,KAACA,EAACxF,GAAMoO,EAA7B5I,qCAaE8M,EAAF5U,UAAAuV,iBAAE,SAAiB3C,GAGf,MAFkBpT,QAAO8J,KAAKxJ,KAAKkV,WAAWhQ,QAC5BlF,KAAKkV,UAAUpC,GACE,EAAI,GAAM,GAW/CgC,EAAF5U,UAAAwV,SAAE,WACE1V,KAAKmV,iBAAkB,GAGzBL,EAAF5U,UAAAsV,YAAE,SAAY5E,GACV,KAAM,IAAI+E,OAAM,gEAAgE/E,IAGlFkE,EAAF5U,UAAA0V,YAAE,WACM5V,KAAKqV,eACPrV,KAAKqV,cAAcvB,gBAEd9T,MAAKmT,eAQdzT,OAAF+B,eAAgBqT,EAAhB5U,UAAA,qBAAE,WACE,MAAOF,MAAK+U,YAAYc,cAAcvO,4CAGxC5H,OAAF+B,eAAgBqT,EAAhB5U,UAAA,qBAAE,WACE,MAAOF,MAAK+U,YAAYc,+CAIhBf,EAAZ5U,UAAA4V,UAAE,SAAoB9I,EAAe+I,GACjC,GAAMrR,GAAU1E,KAAkB,cAC5BgW,EAAWtR,EAAQzE,YAErBgW,EAAyCjW,KAAKoV,YAAYnS,IAAI+J,EAE7DiJ,IAAcD,IACjBC,EAAYvR,EAAQwR,YAAYlJ,EAAO+I,GACnCC,GACFhW,KAAKoV,YAAY5R,IAAIwJ,EAAOiJ,IAIhCjW,KAAKmW,qBAAqBF,GAC1BvR,EAAQvE,WAAW6M,EAAOiJ,EAAWF,IAI7BjB,EAAZ5U,UAAAkW,YAAE,SAAsB5T,GACpB,MAAOxC,MAAKkV,UAAU1S,IAOdsS,EAAZ5U,UAAAmW,eAAE,SAAyB7T,EAAa8T,GACpC,GAAM/S,GAAMvD,KAAKoW,YAAY5T,EAE7B,YAD+B5C,KAAR2D,GAA6B,OAARA,GACX,KAARA,EAAcA,EAAM+S,GAQrCxB,EAAZ5U,UAAAqW,iBAAE,SAA2BrO,OAA7B,KAAAA,IAA6BA,EAAsBlI,KAAK6V,cAEpD,OAAO7V,MAAKgV,QAAQwB,YAAYtO,EADlB,YAKN4M,EAAZ5U,UAAAuW,mBAAE,SAA6BC,EACAxO,GAC3B,WADJ,KAAAA,IAA+BA,EAAsBlI,KAAK6V,eAC/C7V,KAAKgV,QAAQ2B,qBAAqBzO,EAAQwO,IASzC5B,EAAZ5U,UAAA0W,sBAAE,SAAgCzK,EAAqB0K,GACnD,OADJ,KAAAA,IAAuDA,GAAvD,GACQ1K,EAAQ,CACL,GAAXnE,GAAAhI,KAAAgV,QAAA8B,iBAAA3K,GAAW/I,EAAX4E,EAAA,EAEM,KAFNA,EAAA,IAE6B6O,EAAc,CACnC,GAAMtE,GAAQrH,EAAe9H,GACvB2T,GAAY5K,EAClBnM,MAAKgV,QAAQgC,qBAAqBzE,EAAOwE,GAG3C,MAAO3T,GAAMyJ,OAGf,MAAO,OAICiI,EAAZ5U,UAAAiW,qBAAE,SAA+B5D,EACAnP,EACAb,OAAjC,KAAAA,IAAiCA,EAAuBvC,KAAK6V,eACzD7V,KAAKgV,QAAQiC,oBAAoB1U,EAASgQ,EAAOnP,IAIzC0R,EAAZ5U,UAAAgX,sBAAE,SAAgC3E,EAAwBwE,GACtD/W,KAAKgV,QAAQgC,qBAAqBzE,EAAOwE,IAOjCjC,EAAZ5U,UAAAiX,YAAE,SAAsB3U,EAAc0F,GAClC,GAAsB,gBAAXA,GACT,IAAK,GAAIkP,KAAQlP,GACflI,KAAKkV,UAAUkC,GAAQlP,EAAOkP,OAG1B5U,KACJxC,KAAKkV,UAAU1S,GAAO0F,IAUlB4M,EAAZ5U,UAAAmX,4BAAE,SAAsC7U,EACAuQ,EACAuE,GACpC,IAAKtX,KAAKqV,cAAe,CACvB,GAAIkC,GAAa,GAAI1E,GAAWrQ,EAAKuQ,EAAc/S,KAAKkV,UACxDlV,MAAKqV,cAAgB,GAAIpC,IAAqBsE,EAAYvX,KAAKmT,cAC7D,SAACvC,GAAW,MAAA0G,GAAmB1G,KAEnC,MAAO5Q,MAAKqV,eAId3V,OAAF+B,eAAgBqT,EAAhB5U,UAAA,qBAAE,WAKE,IAAK,GAJCsX,GAAMxX,KAAK6V,cAAc4B,SACzBC,KAGGjS,EAAI+R,EAAItS,OAAQO,KACvBiS,EAAOjS,GAAK+R,EAAI/R,EAElB,OAAOiS,oCAGThY,OAAF+B,eAAgBqT,EAAhB5U,UAAA,sBAAE,WACE,MAAOF,MAAKmV,iDAhPhBL,KCsBA6C,GAAA,SAAAC,GA4BE,QAAFD,GAAwBE,EACA1E,EACA4B,EACAC,GAHtB,GAAFjR,GAII6T,EAJJnK,KAAAzN,KAIUmT,EAAe4B,EAAaC,IAJtChV,WAAwB+D,GAAxB8T,SAAwBA,EACA9T,EAAxBoP,cAAwBA,EACApP,EAAxBgR,YAAwBA,EACAhR,EAAxBiR,QAAwBA,IArDxB,MAsB0C8C,GAA1CH,EAAAC,GAMElY,OAAF+B,eAAMkW,EAANzX,UAAA,iBAAE,WACE,GAAI6X,GAAM/X,KAAKqV,cACX7S,EAAMuV,EAAMA,EAAIpE,kBAAoB3T,KAAK6X,QAE7C,OAAgB,UAARrV,EAAmB,QAAUA,mCAIvC9C,OAAF+B,eAAMkW,EAANzX,UAAA,gBAAE,WACE,MAAOF,MAAKkV,2CAMdxV,OAAF+B,eAAMkW,EAANzX,UAAA,oBAAE,WACE,MAAOF,MAAkB,+CAiB3B2X,EAAFzX,UAAAuV,iBAAE,WACC,MAAOmC,GAAV1X,UAAgBuV,iBAAhBhI,KAAAzN,KAAiCA,KAAK6X,WAMpCF,EAAFzX,UAAA8X,WAAE,SAAWxV,GACT,MAAOA,GAAMxC,KAAKoW,YAAY5T,OAAO5C,IAMvC+X,EAAFzX,UAAA+X,WAAE,SAAWzV,EAAc0F,EAAcgQ,GACrC,OADJ,KAAAA,IAAyCA,GAAzC,GACQA,EACFlY,KAAKmY,eAAe3V,EAAK0F,OACpB,IAAIlB,MAAM6I,QAAQ3H,GACvBlI,KAAKoY,iBAAiB5V,EAAK0F,OACtB,IAAsB,gBAAXA,GAChBlI,KAAKqY,kBAAkB7V,EAAK0F,OACvB,CAAA,GAAsB,gBAAXA,GAGhB,KAAM,IAAIyN,OACR,wBAAwBnT,EADhC,mDAFMxC,MAAKsY,kBAAkB9V,EAAK0F,KAWhCyP,EAAFzX,UAAAqY,2BAAE,SAA2B/V,EACAuQ,EACAuE,GACzB,MAAOtX,MAAKqX,4BAA4B7U,EAAKuQ,EAAcuE,IAWnDK,EAAZzX,UAAAiY,eAAE,SAAyB3V,EAAc0F,GACjC1F,IACFxC,KAAKkV,UAAU1S,GAAO0F,IAOhByP,EAAZzX,UAAAkY,iBAAE,SAA2B5V,EAAU0F,OAAvC,KAAA1F,IAA6BA,EAA7B,IACIxC,KAAKkV,UAAU1S,GAAO0F,EAASA,EAAOa,KAAK,KAAO,IAM1C4O,EAAZzX,UAAAmY,kBAAE,SAA4B7V,EAAU0F,OAAxC,KAAA1F,IAA8BA,EAA9B,GACI,IAAIgW,KACJ,IAAItQ,EACF,IAAK,GAAIkP,KAAQlP,GACTA,EAAOkP,IACXoB,EAAQvW,KAAKmV,EAInBpX,MAAKkV,UAAU1S,GAAOgW,EAAQzP,KAAK,MAM3B4O,EAAZzX,UAAAoY,kBAAE,SAA4B9V,EAAU0F,OAAxC,KAAA1F,IAA8BA,EAA9B,IACIxC,KAAKkV,UAAU1S,GAAO0F,GA5I1ByP,GAsB0C7C,ICP1C2D,GAAA,WA8BE,QAAFA,GAAkCC,EACAC,EACAC,EACAC,GAHA7Y,KAAlC0Y,WAAkCA,EACA1Y,KAAlC2Y,aAAkCA,EACA3Y,KAAlC4Y,OAAkCA,EACA5Y,KAAlC6Y,QAAkCA,EA/BhC7Y,KAAF8Y,cAA4B,GAC1B9Y,KAAF+Y,UAEE/Y,KAAFgZ,OACEhZ,KAAFiZ,eAA4C,GAAI9X,GAAAA,QAsB9CnB,KAAFkZ,WAAuD,GAAItY,KA3C3D,MAwBElB,QAAF+B,eAAgBgX,EAAhBvY,UAAA,qBAAE,WACE,MAAOF,MAAK0Y,WAAW7C,cAAcsD,+CAIvCzZ,OAAF+B,eAAgBgX,EAAhBvY,UAAA,qBAAE,WACE,MAAOF,MAAK0Y,WAAW7C,+CAIzBnW,OAAF+B,eAAMgX,EAANvY,UAAA,sBAAE,WACE,MAAOF,MAAK6Y,QAAQ9V,SAAS/C,KAAK6V,cAAe7V,KAAK8Y,oBAExD,SAAmB1V,GACjBpD,KAAK6Y,QAAQvV,SAAStD,KAAK6V,cAAe7V,KAAK8Y,cAAe1V,EAC5DpD,KAAK6Y,QAAQO,sDAajBX,EAAFvY,UAAAsV,YAAE,SAAY6D,GAAZ,GAAFtV,GAAA/D,IACIN,QAAO8J,KAAK6P,GAASrV,QAAQ,SAAAxB,GAC3B,IAAkC,IAA9BuB,EAAKgV,OAAO/W,QAAQQ,GAAa,CACnC,GAAMZ,GAAKY,EAAIsG,MAAM,KAAKL,MAAM,GAAGM,KAAK,KAClCxF,EAAM8V,EAAQ7W,GAAK+C,YACzBxB,GAAKT,SAASC,EAAK3B,OAKzB6W,EAAFvY,UAAA0V,YAAE,WACE5V,KAAKiZ,eAAetU,OACpB3E,KAAKiZ,eAAerH,WACpB5R,KAAK6Y,QAAQjU,eAAe5E,KAAK6V,gBAIzB4C,EAAZvY,UAAAoC,KAAE,SAAeK,OAAjB,KAAAA,IAAiBA,MACb3C,KAAK6Y,QAAQvW,KACXtC,KAAK0Y,WAAW7C,cAChB7V,KAAK8Y,cACL9Y,KAAKsZ,gBAAgB/X,KAAKvB,MAC1BA,KAAKwS,YAAYjR,KAAKvB,MACtB2C,IAKM8V,EAAZvY,UAAA4V,UAAE,SAAoB9I,EAAe+I,GACjC,GAAMrR,GAAU1E,KAAK2Y,aACf3C,EAAWtR,EAAQzE,YAErBgW,EAAyCjW,KAAKkZ,WAAWjW,IAAI+J,EAE5DiJ,IAAcD,IACjBC,EAAYvR,EAAQwR,YAAYlJ,EAAO+I,GACnCC,GACFhW,KAAKkZ,WAAW1V,IAAIwJ,EAAOiJ,IAI/BjW,KAAKgZ,IAATO,KAAmBtD,GACfjW,KAAKiX,oBAAoBhB,GACzBvR,EAAQvE,WAAW6M,EAAOiJ,EAAWF,IAI7B0C,EAAZvY,UAAAsS,YAAE,WAAA,GAAFzO,GAAA/D,IACIN,QAAO8J,KAAKxJ,KAAKgZ,KAAKhV,QAAQ,SAAAK,GAC5BN,EAAKiV,IAAI3U,GAAK,KAEhBrE,KAAKiX,oBAAoBjX,KAAKgZ,KAC9BhZ,KAAKgZ,QAIGP,EAAZvY,UAAAsZ,cAAE,WACE,GAAMjW,GAAMvD,KAAK6Y,QAAQ9V,SAAS/C,KAAK6V,cAAe7V,KAAK8Y,cAC3D9Y,MAAK6Y,QAAQpV,cAAczD,KAAK6V,cAAe7V,KAAK8Y,cAAevV,IAS3DkV,EAAZvY,UAAAuZ,qBAAE,SAA+BtN,EAAqB0K,GAClD,OADJ,KAAAA,IAAsDA,GAAtD,GACQ1K,EAAQ,CACH,GAAbnE,GAAAhI,KAAA4Y,OAAA9B,iBAAA3K,GAAa/I,EAAb4E,EAAA,EAEM,KAFNA,EAAA,IAE6B6O,EAAc,CACnC,GAAMtE,GAAQrH,EAAe9H,GACvB2T,GAAY5K,EAClBnM,MAAK4Y,OAAO5B,qBAAqBzE,EAAOwE,GAG1C,MAAO3T,GAAMyJ,OAGf,MAAO,OAIC4L,EAAZvY,UAAA+W,oBAAE,SAA8B1E,EACAnP,EACAb,OAAhC,KAAAA,IAAgCA,EAAuBvC,KAAK6V,eACxD7V,KAAK4Y,OAAO3B,oBAAoB1U,EAASgQ,EAAOnP,IAGxCqV,EAAZvY,UAAAoD,SAAE,SAAmBC,EAAU3B,GAC3B5B,KAAK6Y,QAAQvV,SAAStD,KAAK6V,cAAe7V,KAAK8Y,cAAevV,EAAK3B,IAG3D6W,EAAZvY,UAAAoZ,gBAAE,SAA0BtM,GACxBhN,KAAK8V,UAAU9I,IAnJnByL,oBCgCE,QAAFiB,GAAcrJ,EACqBC,EACH1J,EACV+S,GAHpB,GAAF5V,GAII6T,EAJJnK,KAAAzN,KAIUqQ,EAAOC,EAAa1J,IAJ9B5G,WAGsB+D,GAAtB4V,aAAsBA,EAbpB5V,EAAF6V,qBAAwB,EAMtB7V,EAAF8V,aAAgB,EAEd9V,EAAF+L,UAAyD,GAAIlP,KA4I7DmD,EAAA+V,cA1KA,MAmBoChC,GAApC4B,EAAA9B,GAqBE8B,EAAFxZ,UAAA6Z,SAAE,WACE/Z,KAAK8P,UAAU9L,QAAQ,SAAC2M,GACtBA,EAAImD,YAEN9T,KAAK8P,UAAU2C,QACfzS,KAAK6Z,aAAc,GAIrBH,EAAFxZ,UAAAoB,SAAE,SAASQ,EAAoB+X,GAW3B,WAXJ,KAAAA,IAA+BA,GAA/B,GACIA,EAAcA,GAAe7Z,KAAK6Z,YAClC/X,EAAa9B,KAAKga,eAAelY,IAE7B+X,GAAgB7Z,KAAK0Q,SAAS5O,KAChC9B,KAAKia,iBAELja,KAAKka,oBAAoBpY,GACzB9B,KAAKma,sBAAsBrY,EAAY+X,IAGlC7Z,KAAKoa,cAIdV,EAAFxZ,UAAA8Z,eAAE,SAAeK,GACb,GAAMzY,GAAK5B,KAAK2Z,aAAa1J,YAAYoK,EACzC,OAAQzY,IAAMA,EAAGE,YAAeuY,GAO1BX,EAAVxZ,UAAAia,sBAAA,SAAgCrY,EAAoB+X,GAChD,GAAIA,EAAa,CACf,GAAMjY,GAAK5B,KAAK2Z,aAAa9X,YAAYC,GACnCJ,EAAQE,EAAKA,EAAGF,MAAQ,SAG9B,QAAQA,GACN,IAAK,KACH1B,KAAKsa,iBAAiB,QACtB,MACF,KAAK,KACHta,KAAKsa,iBAAiB,eACtB,MACF,KAAK,KACHta,KAAKsa,iBAAiB,sBACtB,MACF,KAAK,KACHta,KAAKsa,iBAAiB,8BAK1B,OAAQ5Y,GACN,IAAK,KACH1B,KAAKsa,iBAAiB,6BACtB,MACF,KAAK,KACHta,KAAKsa,iBAAiB,sBACtB,MACF,KAAK,KACHta,KAAKsa,iBAAiB,eACtB,MACF,KAAK,KACHta,KAAKsa,iBAAiB,UAK5B,MAAOta,MAAKua,iBAAiBzY,IAMvB4X,EAAVxZ,UAAAoa,iBAAA,SAA2BE,cACjBlZ,EAAW,SAACI,GAChB,GAAME,GAAKmC,EAAK4V,aAAa1J,YAAYvO,EACzCqC,GAAKwW,iBAAiB3Y,EAAKA,EAAGE,WAAaJ,GAE7C8Y,GAAQ1R,MAAM,KAAK9E,QAAQ,SAAAtC,GAAS,MAAAJ,GAASI,EAAMmL,WAM7C6M,EAAVxZ,UAAAqa,iBAAA,SAA2BzY,GACvB,GAAM6O,GAAM3Q,KAAK8P,UAAU7M,IAAInB,GACzB2Y,EAAeza,KAAK8Z,SACvBY,OAAO,SAACC,EAAO7Q,GAAO,MAAC6Q,MAAUhK,GAAO7G,EAAGgB,QAAU6F,EAAI7F,QAAkB,EAK9E,OAHI6F,KAAQ8J,GACVza,KAAK8Z,SAAS7X,KAAK0O,EAAIrP,YAElBtB,KAAKoa,cAINV,EAAVxZ,UAAA+Z,0BACI,GAAIja,KAAK8Z,SAAS5U,OAAQ,CAExB,IAAiB,GAAvB2C,GAAA,EAAuBG,EAAAhI,KAAK8Z,SAALjS,EAAvBG,EAAA9C,OAAuB2C,IAAe,CAAtCG,EAAAH,GACW+S,aAEL5a,KAAK8Z,YAEP,MAAO9Z,OAID0Z,EAAVxZ,UAAAga,oBAAA,SAA8BpY,IACrB9B,KAAK8P,UAAUnK,IAAI7D,IAAe9B,KAAK4Z,qBAC1C5Z,KAAK+F,cAAcjE,IAQb4X,EAAZxZ,UAAA+Q,UAAE,SAAoBzL,GAClB,MAAO,IAAIqV,IAAmBrV,IAGhC9F,OAAF+B,eAAgBiY,EAAhBxZ,UAAA,oBAAE,WACE,MAAOF,MAAK8Z,SAAS5U,OAAS,kDArJlChG,KAAC8G,EAAAA,iDAXD9G,KAA4BgS,EAAAA,SA0B5BhS,KAAgDQ,OAAhDN,aAAAF,KAAeK,EAAAA,OAAfC,MAAsBG,EAAAA,iBACtBT,SAAAU,GAAAR,aAAAF,KAAeK,EAAAA,OAAfC,MAAsBuO,EAAAA,cAvBtB7O,KAAQiH,KAXRuT,GAmBoCxT,GA+JpC2U,GAAA,WAYE,QAAFA,GAAsBC,GAAA9a,KAAtB8a,YAAsBA,EAXtB9a,KAAA+a,WAAsB,EACtB/a,KAAAgb,cAoFEhb,KAAFib,SAAqC,KAxQrC,MAsLEvb,QAAF+B,eAAMoZ,EAAN3a,UAAA,eAAE,WACE,MAAOF,MAAK+a,2CAGdrb,OAAF+B,eAAMoZ,EAAN3a,UAAA,aAAE,WACE,MAAOF,MAAK8a,6CASdD,EAAF3a,UAAA4T,QAAE,WACE9T,KAAK4a,aACL5a,KAAKgb,eAIPH,EAAF3a,UAAAoB,SAAE,WAAA,GAAFyC,GAAA/D,IAQI,OAPKA,MAAK+a,YACR/a,KAAK+a,WAAY,EACjB/a,KAAKgb,WAAWhX,QAAQ,SAACkX,GACf,EACLzN,KAAK,KAAM1J,MAGX/D,MAIT6a,EAAF3a,UAAA0a,WAAE,WAAA,GAAF7W,GAAA/D,IAQI,OAPIA,MAAK+a,YACP/a,KAAK+a,WAAY,EACjB/a,KAAKgb,WAAWhX,QAAQ,SAACkX,GACf,EACLzN,KAAK,KAAM1J,MAGX/D,MAIT6a,EAAF3a,UAAA2K,YAAE,SAAYsQ,GAIV,IAH2C,IAAvCnb,KAAKgb,WAAWhZ,QAAQmZ,IAC1Bnb,KAAKgb,WAAW/Y,KAAKkZ,GAEnBnb,KAAK+a,UAAW,CACV,EACLtN,KAAK,KAAMzN,QAKlB6a,EAAF3a,UAAA6K,eAAE,SAAehG,KAQf8V,EAAF3a,UAAA8Q,iBAAE,SAAiBjM,EACAwB,EACA6U,KAQjBP,EAAF3a,UAAAmb,oBAAE,SAAoBtW,EACAwB,EACA6U,KAGpBP,EAAF3a,UAAAob,cAAE,SAAcvW,GACZ,OAAO,GArQX8V,KA8QaU,IACX5N,QAASzH,EACT+L,SAAUyH,IC9PZ8B,GAAA,WAYE,QAAFA,GAAsBV,GAAA9a,KAAtB8a,YAAsBA,EAXtB9a,KAAA+a,WAAsB,EACtB/a,KAAAgb,cAoFEhb,KAAFib,SAAqC,KAxGrC,MAsBEvb,QAAF+B,eAAM+Z,EAANtb,UAAA,eAAE,WACE,MAAOF,MAAK+a,2CAGdrb,OAAF+B,eAAM+Z,EAANtb,UAAA,aAAE,WACE,MAAOF,MAAK8a,6CASdU,EAAFtb,UAAA4T,QAAE,WACE9T,KAAK4a,aACL5a,KAAKgb,eAIPQ,EAAFtb,UAAAoB,SAAE,WAAA,GAAFyC,GAAA/D,IAQI,OAPKA,MAAK+a,YACR/a,KAAK+a,WAAY,EACjB/a,KAAKgb,WAAWhX,QAAQ,SAACkX,GACf,EACLzN,KAAK,KAAM1J,MAGX/D,MAITwb,EAAFtb,UAAA0a,WAAE,WAAA,GAAF7W,GAAA/D,IAQI,OAPIA,MAAK+a,YACP/a,KAAK+a,WAAY,EACjB/a,KAAKgb,WAAWhX,QAAQ,SAACkX,GACf,EACLzN,KAAK,KAAM1J,MAGX/D,MAITwb,EAAFtb,UAAA2K,YAAE,SAAYsQ,GAIV,IAH2C,IAAvCnb,KAAKgb,WAAWhZ,QAAQmZ,IAC1Bnb,KAAKgb,WAAW/Y,KAAKkZ,GAEnBnb,KAAK+a,UAAW,CACV,EACLtN,KAAK,KAAMzN,QAKlBwb,EAAFtb,UAAA6K,eAAE,SAAehG,KAQfyW,EAAFtb,UAAA8Q,iBAAE,SAAiBjM,EACAwB,EACA6U,KAQjBI,EAAFtb,UAAAmb,oBAAE,SAAoBtW,EACAwB,EACA6U,KAGpBI,EAAFtb,UAAAob,cAAE,SAAcvW,GACZ,OAAO,GArGXyW,oBAqHE,QAAFC,GAAwBpL,EACqBC,EACH1J,GAFxC,GAAF7C,GAGI6T,EAHJnK,KAAAzN,KAGUqQ,EAAOC,EAAa1J,IAH9B5G,WAAwB+D,GAAxBsM,MAAwBA,EACqBtM,EAA7CuM,YAA6CA,EACHvM,EAA1C6C,UAA0CA,EAJxC7C,EAAF+L,UAA2D,GAAIlP,OAnH/D,MAkHsCkX,GAAtC2D,EAAA7D,GAUE6D,EAAFvb,UAAAwb,mBAAE,SAAmB9Z,GACjB,GAAM+Z,GAAmB3b,KAAK8P,UAAU7M,IAAIrB,EAAGE,WAC3C6Z,IACFA,EAAiBra,YAKrBma,EAAFvb,UAAA0b,qBAAE,SAAqBha,GACnB,GAAM+Z,GAAmB3b,KAAK8P,UAAU7M,IAAIrB,EAAGE,WAC3C6Z,IACFA,EAAiBf,cAQXa,EAAZvb,UAAA+Q,UAAE,SAAoBzL,GAClB,MAAO,IAAIgW,IAAqBhW,mBA/BpCtG,KAAC8G,EAAAA,iDAzGD9G,KAA4BgS,EAAAA,SA8G5BhS,KAA0DQ,OAA1DN,aAAAF,KAAeK,EAAAA,OAAfC,MAAsBG,EAAAA,iBACtBT,SAAAU,GAAAR,aAAAF,KAAeK,EAAAA,OAAfC,MAAsBuO,EAAAA,eAvHtB0N,GAkHsCvV,iBC/EpC,QAAF2V,GAAsBlC,EAA0CmC,GAA1C9b,KAAtB2Z,aAAsBA,EAA0C3Z,KAAhE8b,YAAgEA,EAC5D9b,KAAK+b,uBApCT,MA0CErc,QAAF+B,eAAMoa,EAAN3b,UAAA,mBAAE,WACE,MAAWF,MAAK2Z,aAAaqC,MAAjCvT,yCAGE/I,OAAF+B,eAAMoa,EAAN3b,UAAA,sBAAE,WAAA,GAAF6D,GAAA/D,IACI,OAAOA,MAAK2Z,aAAasC,aACtBvI,UACA7P,OAAO,SAAAjC,GAAM,MAAAmC,GAAK+X,YAAYpL,SAAS9O,EAAGE,+CAG/CpC,OAAF+B,eAAMoa,EAAN3b,UAAA,cAAE,WAAA,GAAF6D,GAAA/D,IAGI,OAFcA,MAAKS,YAAYiT,UACXhI,KAAK,SAAA9J,GAAM,MAAa,KAAbA,EAAGF,OAAgBqC,EAAK+X,YAAYpL,SAAS9O,EAAGE,eAC/D,sCAMlB+Z,EAAF3b,UAAAwQ,SAAE,SAAShP,GACP,GAAME,GAAK5B,KAAK2Z,aAAa1J,YAAYvO,IAAU1B,KAAK2Z,aAAa9X,YAAYH,EACjF,OAAO1B,MAAK8b,YAAYpL,SAAS9O,EAAKA,EAAGE,WAAaJ,IAQxDma,EAAF3b,UAAAkB,QAAE,SAAQM,OAAV,KAAAA,IAAUA,EAAV,GACI,IAAME,GAAK5B,KAAK2Z,aAAa1J,YAAYvO,IAAU1B,KAAK2Z,aAAa9X,YAAYH,GAC3Ewa,EAAW,SAACtL,GAAwB,OAAChP,GAAwB,KAAnBgP,EAAO3F,QAIvD,OADejL,MAAK8b,YAAY1a,QAAQQ,EAAKA,EAAGE,WAAaJ,GAC/CkC,KACZkC,EAAAA,IAAI,SAAA8K,GAAU,MAAA5F,GAAW4F,EAAQhP,KACjCiC,EAAAA,OAAOqY,KAQHL,EAAV3b,UAAA6b,gCACI,GAAMnW,GAAU5F,KAAK2Z,aAAa9T,YAAYC,IAAI,SAAAlE,GAAM,MAAAA,GAAGE,YAC3D9B,MAAK8b,YAAY/V,cAAcH,mBAxDnC1G,KAAC8G,EAAAA,WAADxG,OAAayG,WAAY,+CArBzB/G,KAAQiH,IACRjH,KAAQgH,iIAbR2V,mBCkEE,QAAFM,GAAsB1b,EAAyC4Q,GAAzCrR,KAAtBS,YAAsBA,EAAyCT,KAA/DqR,aAA+DA,EAH7DrR,KAAFsR,gBAAmB,EAIftR,KAAKuR,uBACLvR,KAAKoc,OAASpc,KAAKyR,mBApEvB,MA0EE0K,GAAFjc,UAAAwQ,SAAE,SAAShP,GACP,MAAO1B,MAAKqR,aAAaX,SAAS1Q,KAAK0R,cAAchQ,KAY/Cya,EAAVjc,UAAAqR,gCACI,GAAM3L,GAAU5F,KAAKS,YAAYoF,YAAYC,IAAI,SAAAlE,GAAM,MAAAA,GAAGE,YAC1D9B,MAAKqR,aAAatL,cAAcH,IAU1BuW,EAAVjc,UAAAuR,uCACUI,EAAkB,SAACjB,GACvB,GAAMhP,GAAKmC,EAAKtD,YAAYoB,YAAY+O,EAAO9O,WAC/C,QAAQF,KAAcmC,EAAKuN,gBAAkB1P,EAAGuH,aAQlD,OAAOnJ,MAAKqR,aAAajQ,UACtBwC,KACCC,EAAAA,OAAO,SAAA+M,GAAU,MAAAA,GAAO7O,UACxB8B,EAAAA,OAAOgO,GACP/L,EAAAA,IAAI,SAAC8K,GACH,MAAA5F,GAAW4F,EAAQ7M,EAAK+N,aAAalB,EAAO9O,iBAQ5Cqa,EAAVjc,UAAA6R,aAAA,SAAuBrQ,GACnB,MAAO1B,MAAKS,YAAYwP,YAAYvO,IAM9Bya,EAAVjc,UAAA4R,aAAA,SAAuBtM,GACnB,MAAOxF,MAAKS,YAAYoB,YAAY2D,IAM9B2W,EAAVjc,UAAAwR,cAAA,SAAwBlM,GACpB,GAAM5D,GAAK5B,KAAK+R,aAAavM,IAAUxF,KAAK8R,aAAatM,EACzD,OAAO5D,GAAKA,EAAGE,WAAa0D,kBAjFhCtG,KAAC8G,EAAAA,WAADxG,OAAayG,WAAY,+CA/CzB/G,KAAQiH,IAERjH,KAAQgH,iIAbRiW,K9BOArc,GAAA,WAWE,QAAFA,GAAkCuc,EACsBC,EACbhM,EACEZ,GAHX1P,KAAlCqc,kBAAkCA,EACsBrc,KAAxDsc,oBAAwDA,EACbtc,KAA3CsQ,YAA2CA,EACEtQ,KAA7C0P,aAA6CA,EArB7C,MA0BE5P,GAAFI,UAAA+W,oBAAE,SAAoB1U,EACAgQ,EACAnP,OAAtB,KAAAA,IAAsBA,EAAtB,KACI,IAAIwP,KACiB,iBAAVL,KACTK,EAAOL,GAASnP,EAChBmP,EAAQK,GAEVA,EAAS5S,KAAK0P,aAAaL,sBAAwBkD,EAAQrG,EAAiBqG,GAC5EvS,KAAKuc,+BAA+B3J,EAAQrQ,IAM9CzC,EAAFI,UAAA8W,qBAAE,SAAqBzE,EAAwBwE,GAA7C,GAAFhT,GAAA/D,SAAA,KAAA+W,IAA+CA,KAC3C,IAAMnE,GAAS5S,KAAK0P,aAAaL,sBAAwBkD,EAAQrG,EAAiBqG,EAClFwE,GAAS/S,QAAQ,SAAAC,GACfF,EAAKwY,+BAA+B3J,EAAQ3O,MAShDnE,EAAFI,UAAA4W,iBAAE,SAAiB3K,GACf,GACI/I,GAAQpD,KAAKwW,YAAYrK,EADf,kBAERqQ,EAAiBxc,KAAKyc,kBAAkBtQ,EAFhC,mBAGbuQ,EAAAA,iBAAiB1c,KAAKsQ,cAAgBtQ,KAAKsc,oBAAuBlZ,EAAQ,EAE3E,QAAQA,GAAS,MAAOoZ,IAM1B1c,EAAFI,UAAAyW,qBAAE,SAAqBpU,EAAsBmU,GACzC,MAAOnU,GAAQoa,aAAajG,IAAc,IAM5C5W,EAAFI,UAAAuc,kBAAE,SAAkBla,EAAsBoQ,GACtC,MAAO7L,GAAAA,kBAAkB9G,KAAKsQ,aAC5B/N,EAAQgQ,MAAMqK,iBAAiBjK,GAAa3S,KAAK6c,gBAAgBta,EAASoQ,IAO9E7S,EAAFI,UAAAsW,YAAE,SAAYjU,EAAsBoQ,EAAmBmK,OAAvD,KAAAA,IAAuDA,GAAvD,EACI,IAAI1Z,GAAQ,EACZ,IAAIb,EAAS,EACUa,EAAQpD,KAAKyc,kBAAkBla,EAASoQ,MAEvD7L,EAAAA,kBAAkB9G,KAAKsQ,aACpBwM,IACH1Z,EAAQ2Z,iBAAiBxa,GAASqa,iBAAiBjK,IAGjD3S,KAAKsc,sBACPlZ,EAAQpD,KAAKqc,kBAAkB3J,mBAAmBnQ,EAASoQ,KAQnE,MAAOvP,GAAMyJ,QAQP/M,EAAVI,UAAAqc,+BAAA,SAAyC3J,EACArQ,aACrC7C,QAAO8J,KAAKoJ,GAAQ1Q,OAAO8B,QAAQ,SAAAxB,GACjC,GAAMyB,GAAK2O,EAAOpQ,GACZU,EAAqC8D,MAAM6I,QAAQ5L,GAAMA,GAAMA,EACrEf,GAAOhB,MACP,KAAkB,GAAxB2F,GAAA,EAAwBmV,EAAxB9Z,EAAwB2E,EAAxBmV,EAAA9X,OAAwB2C,IAAQ,CAArB,GAAIzE,GAAf4Z,EAAAnV,EACQzE,GAAQA,EAAQA,EAAQ,GAAK,GACzB0D,EAAAA,kBAAkB/C,EAAKuM,eAAiBvM,EAAKuY,oBAC/CxV,EAAAA,kBAAkB/C,EAAKuM,aACrB/N,EAAQgQ,MAAM0K,YAAYza,EAAKY,GAASW,EAAKmZ,gBAAgB3a,EAASC,EAAKY,GAE7EW,EAAKsY,kBAAkB/J,kBAAkB/P,EAASC,EAAKY,OAMvDtD,EAAVI,UAAAgd,gBAAA,SAA0B3a,EAAcoQ,EAAmBwK,GACvDxK,EAAYA,EAAUlL,QAAQ,kBAAmB,SAAS4D,aAC1D,IAAM+R,GAAWpd,KAAKqd,oBAAoB9a,EAC1C6a,GAASzK,GAAawK,GAAc,GACpCnd,KAAKsd,qBAAqB/a,EAAS6a,IAG7Btd,EAAVI,UAAA2c,gBAAA,SAA0Bta,EAAcoQ,GAEpC,MADiB3S,MAAKqd,oBAAoB9a,GAC1BoQ,IAAc,IAGxB7S,EAAVI,UAAAmd,oBAAA,SAA8B9a,GAC1B,GAAM6a,MACAG,EAAiBhb,EAAQoa,aAAa,QAC5C,IAAIY,EAEF,IAAK,GADCC,GAAYD,EAAezU,MAAM,OAC9BrD,EAAI,EAAGA,EAAI+X,EAAUtY,OAAQO,IAAK,CACzC,GAAM8M,GAAQiL,EAAU/X,GAAGoH,MAC3B,IAAI0F,EAAMrN,OAAS,EAAG,CACpB,GAAMuY,GAAalL,EAAMvQ,QAAQ,IACjC,KAAoB,IAAhByb,EACF,KAAM,IAAI9H,OAAM,sBAAsBpD,EAExC,IAAMmL,GAAOnL,EAAMzF,OAAO,EAAG2Q,GAAY5Q,MACzCuQ,GAASM,GAAQnL,EAAMzF,OAAO2Q,EAAa,GAAG5Q,QAIpD,MAAOuQ,IAGDtd,EAAVI,UAAAod,qBAAA,SAA+B/a,EAAc6a,GACzC,GAAIO,GAAiB,EACrB,KAAK,GAAMnb,KAAO4a,GAAU,CACTA,EAAS5a,KAExBmb,GAAkBnb,EAAM,IAAM4a,EAAS5a,GAAO,KAGlDD,EAAQ2H,aAAa,QAASyT,mBAvJlCze,KAAC8G,EAAAA,WAADxG,OAAayG,WAAY;0DAJzB/G,KAAQC,EAARC,aAAAF,KAOeG,EAAAA,aACfH,KAAAI,QAAAF,aAAAF,KAAeG,EAAAA,WAAfH,KAA2BK,EAAAA,OAA3BC,MAAkCC,OAClCP,KAAwDQ,OAAxDN,aAAAF,KAAeK,EAAAA,OAAfC,MAAsBG,EAAAA,iBACtBT,SAAAU,GAAAR,aAAAF,KAAeK,EAAAA,OAAfC,MAAsBK,4KArBtBC,KCUAC,GAAA,wBAGEC,KAAFC,aAAgB,EAbhB,MAuBEF,GAAFG,UAAAC,WAAE,SAAWC,EAAgBC,EAA0BC,KAvBvDP,mBCqDE,QAAFQ,GAAwBC,EACAC,GADAT,KAAxBQ,WAAwBA,EACAR,KAAxBS,YAAwBA,EAdxBT,KAAAU,wBACAV,KAAAW,WAAmC,GAAIC,KACvCZ,KAAAa,cAAyC,GAAIC,SAE7Cd,KAAAe,WAAmC,GAAID,SACvCd,KAAAgB,WAAmC,GAAIF,SACvCd,KAAAiB,gBAAwC,GAAIH,SAC5Cd,KAAAkB,QAA6C,GAAIC,GAAAA,QAQ7CnB,KAAKQ,WACFY,UACAC,UAAUrB,KAAKsB,SAASC,KAAKvB,OAChCA,KAAKwB,sBA1DT,MAiDE9B,QAAF+B,eAAMlB,EAANL,UAAA,2BAAE,WACE,MAAOF,MAAKU,qBAAqB,GAAKV,KAAKU,qBAAqB,GAAGgB,MAAQ,oCAe7EnB,EAAFL,UAAAoB,SAAE,SAASK,GACP,GAAMC,GAAwB5B,KAAK6B,YAAYF,EAAGG,WAC9CF,KACED,EAAGI,UAAsD,IAA3C/B,KAAKU,qBAAqBsB,QAAQJ,IAClD5B,KAAKU,qBAAqBuB,KAAKL,GAC/B5B,KAAKU,qBAAqBwB,KAAKC,GAC/BnC,KAAKoC,gBACKT,EAAGI,UAAsD,IAA3C/B,KAAKU,qBAAqBsB,QAAQJ,KAE1D5B,KAAKU,qBAAqB2B,OAAOrC,KAAKU,qBAAqBsB,QAAQJ,GAAK,GACxE5B,KAAKoC,kBAaX7B,EAAFL,UAAAoC,KAAE,SAAKC,EACAC,EACAC,EACAC,EACAC,OAAP,KAAAA,IAAOA,MACH3C,KAAK4C,mBAAmBL,EAASC,GACjCK,EAAe7C,KAAKgB,WAAYuB,EAASC,EAAKC,GAC9CI,EAAe7C,KAAKiB,gBAAiBsB,EAASC,EAAKE,GACnD1C,KAAK8C,mBAAmBP,EAASC,EAAKG,IASxCpC,EAAFL,UAAA6C,SAAE,SAASR,EAAsBC,EAAaZ,GAC1C,GAAMoB,GAAQhD,KAAKW,WAAWsC,IAAIV,EAClC,IAAIS,EAAO,CACT,GAAME,OAAgBtD,KAAPgC,EAAmBoB,EAAMC,IAAIrB,GAAM5B,KAAKmD,YAAYH,EAAOR,EAC1E,IAAIU,EAAQ,CACV,GAAME,GAAQF,EAAOD,IAAIT,EACzB,YAAiB5C,KAAVwD,EAAsBA,EAAQ,IAGzC,MAAO,IAQT7C,EAAFL,UAAAmD,SAAE,SAASd,EAAsBC,GAC7B,GAAMQ,GAAQhD,KAAKW,WAAWsC,IAAIV,EAClC,IAAIS,EAAO,CACT,GAAME,GAASlD,KAAKmD,YAAYH,EAAOR,EACvC,IAAIU,EACF,WAA2BtD,KAApBsD,EAAOD,IAAIT,KAAsB,EAG5C,OAAO,GAUTjC,EAAFL,UAAAoD,SAAE,SAASf,EAAsBC,EAAae,EAAU3B,GACpD,GAAIoB,GAAmChD,KAAKW,WAAWsC,IAAIV,EAC3D,IAAKS,EAGE,CACL,GAAME,IAAUF,EAAMC,IAAIrB,IAAO,GAAIhB,MAAO4C,IAAIhB,EAAKe,EACrDP,GAAMQ,IAAI5B,EAAIsB,GACdlD,KAAKW,WAAW6C,IAAIjB,EAASS,OAL7BA,IAAQ,GAAIpC,MAAM4C,IAAI5B,GAAI,GAAIhB,MAAM4C,IAAIhB,EAAKe,IAC7CvD,KAAKW,WAAW6C,IAAIjB,EAASS,EAM/BhD,MAAKyD,cAAclB,EAASC,EAAKxC,KAAK+C,SAASR,EAASC,KAI1DjC,EAAFL,UAAAwD,WAAE,SAAWnB,EAAsBC,GAC/B,MAAOxC,MAAKkB,QAAQyC,eACjBC,KAAKC,EAAAA,OAAO,SAAAC,GAAK,MAAAA,GAAEvB,UAAYA,GAAWuB,EAAEtB,MAAQA,MAIzDjC,EAAFL,UAAAkC,aAAE,WAAA,GAAF2B,GAAA/D,IACIA,MAAKW,WAAWqD,QAAQ,SAAChB,EAAOiB,GAC9B,GAAMC,GAAWH,EAAKZ,YAAYH,GAC5BmB,EAAS,GAAIC,KAAIL,EAAKlD,cAAcoC,IAAIgB,GAC1CC,IACFA,EAASF,QAAQ,SAACF,EAAGO,GACnBN,EAAKN,cAAcQ,EAAII,EAAGP,GAC1BK,EAAOG,OAAOD,KAGlBF,EAAOH,QAAQ,SAAAK,GACb,GAAME,GAAcR,EAAKZ,YAAYH,EAAOqB,EAC5C,IAAIE,EAAa,CACf,GAAMnB,GAAQmB,EAAYtB,IAAIoB,EAC9BN,GAAKN,cAAcQ,EAAII,EAAGjB,OAE1BW,GAAKS,aAAaP,EAAII,QAW9B9D,EAAFL,UAAAsE,aAAE,SAAajC,EAAsBC,GACjC,GAAMiC,GAAWzE,KAAKiB,gBAAgBgC,IAAIV,EAC1C,IAAIkC,EAAU,CACZ,GAAMC,GAA+BD,EAASxB,IAAIT,EAC9CkC,KACFA,IACA1E,KAAKkB,QAAQyD,MAAMpC,QAA3BA,EAAoCC,IAApCA,EAAyCY,MAAO,QAW9C7C,EAAFL,UAAAuD,cAAE,SAAclB,EAAsBC,EAAaY,GAC/C,GAAMqB,GAAWzE,KAAKgB,WAAWiC,IAAIV,EACrC,IAAIkC,EAAU,CACZ,GAAMC,GAA+BD,EAASxB,IAAIT,EAC9CkC,KACFA,EAAQtB,GACRpD,KAAKkB,QAAQyD,MAAMpC,QAA3BA,EAAoCC,IAApCA,EAAyCY,MAAzCA,OASE7C,EAAFL,UAAA0E,eAAE,SAAerC,GACb,GAAMxB,GAAaf,KAAKe,WAAWkC,IAAIV,EACnCxB,KACFA,EAAWiD,QAAQ,SAAAa,GAAK,MAAAA,GAAEC,gBAC1B9E,KAAKe,WAAWuD,OAAO/B,GAEzB,IAAM5B,GAAaX,KAAKW,WAAWsC,IAAIV,EACnC5B,KACFA,EAAWqD,QAAQ,SAACe,EAAGF,GAAM,MAAAlE,GAAW2D,OAAOO,KAC/C7E,KAAKW,WAAW2D,OAAO/B,KAKnBhC,EAAVL,UAAA0C,mBAAA,SAA6BL,EAAsBC,GAC/C,GAAI2B,GAASnE,KAAKa,cAAcoC,IAAIV,EAC/B4B,KACHA,EAAS,GAAIC,KACbpE,KAAKa,cAAc2C,IAAIjB,EAAS4B,IAElCA,EAAOa,IAAIxC,IASLjC,EAAVL,UAAA4C,mBAAA,SAA6BP,EACAC,EACAyC,aACzB,IAAIA,GAAYA,EAASC,OAAQ,CAC/B,GAAIC,GAAWnF,KAAKe,WAAWkC,IAAIV,EAC9B4C,KACHA,EAAW,GAAIvE,KACfZ,KAAKe,WAAWyC,IAAIjB,EAAS4C,GAG/B,KADqBA,EAASlC,IAAIT,GACf,CACjB,GAAM4C,GAAkBC,EAAAA,MAAhCC,UAAA,GAAyCL,GAAU5D,UAAU,WACnD,GAAMkE,GAAexB,EAAKhB,SAASR,EAASC,EAC5CuB,GAAKN,cAAclB,EAASC,EAAK+C,IAEnCJ,GAAS3B,IAAIhB,EAAK4C,MAMhB7E,EAAVL,UAAA2B,YAAA,SAAsB2D,GAClB,MAAOxF,MAAKS,YAAYoB,YAAY2D,IAQ9BjF,EAAVL,UAAAiD,YAAA,SAAsBH,EAAsBR,GACxC,IAAK,GAAIiD,GAAI,EAAGA,EAAIzF,KAAKU,qBAAqBwE,OAAQO,IAAK,CACzD,GAAMC,GAAc1F,KAAKU,qBAAqB+E,GACxCvB,EAAWlB,EAAMC,IAAIyC,EAAYhE,MACvC,IAAIwC,QACUtE,KAAR4C,GAAqB0B,EAASyB,IAAInD,IACpC,MAAO0B,GAIb,MAAOlB,GAAMC,IAAI,KAGX1C,EAAVL,UAAAsB,+BACI,GAAMoE,GAAU5F,KAAKS,YAAYoF,YAAYC,IAAI,SAAAlE,GAAM,MAAAA,GAAGE,YAC1D9B,MAAKQ,WAAWuF,cAAcH,mBA/PlC1G,KAAC8G,EAAAA,WAADxG,OAAayG,WAAY,+CAxBzB/G,KAAQgH,IADRhH,KAAQiH,iIAbR5F"} \ No newline at end of file +{"version":3,"file":"flex-layout-core.umd.min.js","sources":["../../src/lib/core/media-marshaller/media-marshaller.ts","../../node_modules/tslib/tslib.es6.js","../../src/lib/core/browser-provider.ts","../../src/lib/core/add-alias.ts","../../src/lib/utils/layout-validator.ts","../../src/lib/utils/object-extend.ts","../../src/lib/core/breakpoints/breakpoint-tools.ts","../../src/lib/core/utils/sort.ts","../../src/lib/core/match-media/match-media.ts","../../src/lib/core/media-marshaller/print-hook.ts","../../src/lib/core/utils/array.ts","../../src/lib/core/media-observer/media-observer.ts","../../src/lib/utils/auto-prefixer.ts","../../src/lib/core/basis-validator/basis-validator.ts","../../src/lib/core/module.ts","../../src/lib/core/media-change.ts","../../src/lib/core/stylesheet-map/stylesheet-map.ts","../../src/lib/core/tokens/library-config.ts","../../src/lib/core/tokens/server-token.ts","../../src/lib/core/tokens/breakpoint-token.ts","../../src/lib/core/base/base2.ts","../../src/lib/core/breakpoints/data/break-points.ts","../../src/lib/core/breakpoints/data/orientation-break-points.ts","../../src/lib/core/breakpoints/break-points-token.ts","../../src/lib/core/breakpoints/break-point-registry.ts","../../src/lib/core/match-media/mock/mock-match-media.ts","../../src/lib/core/media-trigger/media-trigger.ts","../../src/lib/core/style-utils/style-utils.ts","../../src/lib/core/style-builder/style-builder.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.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;\ntype BreakpointMap = Map;\ntype ElementMap = Map;\ntype ElementKeyMap = WeakMap>;\ntype SubscriptionMap = Map;\ntype WatcherMap = WeakMap;\ntype BuilderMap = WeakMap>;\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 = 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[] = []): 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 {\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[]) {\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)) {\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","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\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 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) : new P(function (resolve) { resolve(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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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 __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\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)) result[k] = mod[k];\r\n result.default = 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","/**\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: void)[]>>APP_BOOTSTRAP_LISTENER,\n useFactory: removeStyles,\n deps: [DOCUMENT, PLATFORM_ID],\n multi: true\n};\n\nexport const CLASS_NAME = 'flex-layout-';\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 */\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='' 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 : 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 */\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 */\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\ninterface WithPriority {\n priority?: number;\n}\n\n/** HOF to sort the breakpoints by descending priority */\nexport function sortDescendingPriority(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(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 */\nimport {Inject, Injectable, NgZone, 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 {\n /** Initialize source with 'all' so all non-responsive APIs trigger style updates */\n readonly source = new BehaviorSubject(new MediaChange(true));\n registry = new Map();\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 : false;\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;\n observe(mediaQueries: string[]): Observable;\n observe(mediaQueries: string[], filterOthers: boolean): Observable;\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 {\n if (mqList && mqList.length) {\n const matchMedia$: Observable = this._observable$.pipe(\n filter((change: MediaChange) => {\n return !filterOthers ? true : (mqList.indexOf(change.mediaQuery) > -1);\n })\n );\n const registration$: Observable = new Observable((observer: Observer) => { // tslint:disable-line:max-line-length\n const matches: Array = 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.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 /**\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).matchMedia('all').addListener;\n\n return canListen ? (window).matchMedia(query) : {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => {\n },\n removeListener: () => {\n }\n } as unknown 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 {Inject, Injectable, PLATFORM_ID} 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 { isPlatformBrowser } 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 {\n constructor(\n protected breakpoints: BreakPointRegistry,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n @Inject(PLATFORM_ID) protected _platformId: Object) {\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 // 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 the platform is\n // not a browser(fallsback to mql print media queries).\n private registerBeforeAfterPrintHooks(target: HookTarget) {\n if (!isPlatformBrowser(this._platformId) || this.registeredBeforeAfterPrintHooks) {\n return;\n }\n\n this.registeredBeforeAfterPrintHooks = true;\n\n // Could we have teardown logic to remove if there are no print listeners being used?\n (window).addEventListener('beforeprint', () => {\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 (window).addEventListener('afterprint', () => {\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\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 /** 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 */\n\n/** Wraps the provided value in an array, unless the provided value is an array. */\nexport function coerceArray(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 {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})
` ;\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 v8.0.0-beta.26\n */\n readonly media$: Observable;\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 {\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 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 {\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;\n private readonly destroyed$ = new Subject();\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 : query;\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 * 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 */\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 {NgModule} from '@angular/core';\n\nimport {BROWSER_PROVIDER} from './browser-provider';\n\n/**\n * *****************************************************************\n * Define module for the MediaQuery API\n * *****************************************************************\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 */\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 {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>();\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 */\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(\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 {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(\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';\nimport {BreakPoint} from '../breakpoints/break-point';\n\nexport const BREAKPOINT = new InjectionToken(\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 {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 = new Subject();\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 = 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[] = []): 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 /** 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 this.addStyles(input);\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';\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.9px)',\n priority: 1000,\n },\n {\n alias: 'sm',\n mediaQuery: 'screen and (min-width: 600px) and (max-width: 959.9px)',\n priority: 900,\n },\n {\n alias: 'md',\n mediaQuery: 'screen and (min-width: 960px) and (max-width: 1279.9px)',\n priority: 800,\n },\n {\n alias: 'lg',\n mediaQuery: 'screen and (min-width: 1280px) and (max-width: 1919.9px)',\n priority: 700,\n },\n {\n alias: 'xl',\n mediaQuery: 'screen and (min-width: 1920px) and (max-width: 4999.9px)',\n priority: 600,\n },\n {\n alias: 'lt-sm',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 599.9px)',\n priority: 950,\n },\n {\n alias: 'lt-md',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 959.9px)',\n priority: 850,\n },\n {\n alias: 'lt-lg',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 1279.9px)',\n priority: 750,\n },\n {\n alias: 'lt-xl',\n overlapping: true,\n priority: 650,\n mediaQuery: 'screen and (max-width: 1919.9px)',\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 */\n\nimport {BreakPoint} from '../break-point';\n\n/* tslint:disable */\nconst HANDSET_PORTRAIT = '(orientation: portrait) and (max-width: 599.9px)';\nconst HANDSET_LANDSCAPE = '(orientation: landscape) and (max-width: 959.9px)';\n\nconst TABLET_PORTRAIT = '(orientation: portrait) and (min-width: 600px) and (max-width: 839.9px)';\nconst TABLET_LANDSCAPE = '(orientation: landscape) and (min-width: 960px) and (max-width: 1279.9px)';\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},\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 */\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('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 {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();\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, 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- 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- 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 // 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.split(',').forEach(alias => activate(alias.trim()));\n }\n\n /**\n *\n */\n private _activateByQuery(mediaQuery: string) {\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(null, this);\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(null, this);\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(null, this);\n }\n }\n\n /** Don't need to remove listeners in the testing environment */\n removeListener(_: MediaQueryListListener | null) {\n }\n\n addEventListener(\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(\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, 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\n this.deactivateAll();\n this.restoreRegistryMatches();\n this.setActivations(list);\n\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();\n queries.forEach(query => {\n registry.set(query, {matches: 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() {\n return this.matchMedia.activations;\n }\n\n private hasCachedRegistryMatches = false;\n private originalActivations: MediaChange[] = [];\n private originalRegistry: Map = new Map();\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 {Inject, Injectable, Optional, 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(@Optional() private _serverStylesheet: StylesheetMap,\n @Optional() @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 /**\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 */\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"],"names":["currentValue","_this","getValue","element","key","updateElement","watchers","set","newSubscription","MediaMarshaller","prototype","findByQuery","query","this","breakpoints","getActivatedValues","bpMap","i","activatedBreakpoints","length","activatedBp","valueMap","get","alias","undefined","has","lastHope","observeActivations","target","queries","items","map","bp","mediaQuery","matchMedia","observe","hook","withPrintQuery","pipe","tap","interceptEvents","filter","blockPropagation","subscribe","onMediaChange","bind","type","Injectable","args","providedIn","MatchMedia","BreakPointRegistry","PrintHook","__extends","d","b","__","constructor","extendStatics","Object","create","removeStyles","_document","platformId","isPlatformBrowser","classRegex_1","Array","from","querySelectorAll","CLASS_NAME","forEach","el","classList","contains","parentNode","removeChild","className","replace","mergeAlias","dest","source","clone","MediaChange","mqAlias","suffix","priority","buildLayoutCSS","value","_a","validateValue","buildCSS","toLowerCase","split","direction","wrap","inline","LAYOUT_VALUES","find","x","INLINE","validateWrapValue","display","box-sizing","flex-direction","flex-wrap","extendObject","sources","_i","arguments","TypeError","sources_1","hasOwnProperty","firstUpperCase","part","first","charAt","remainder","slice","toUpperCase","camelCase","name","ALIAS_DELIMITERS","join","validateSuffixes","list","overlapping","mergeByAlias","defaults","custom","dict","keys","k","sortDescendingPriority","a","priorityA","sortAscendingPriority","buildQueryCss","mediaQueries","it","ALL_STYLES","styleEl_1","createElement","setAttribute","styleSheet","cssText","appendChild","createTextNode","mq","e","console","error","constructMql","isBrowser","addListener","matches","media","removeListener","isPrintBreakPoint","startsWith","PRINT","coerceArray","isArray","toMediaQuery","locator","findByAlias","splitQueries","reduce","a1","a2","concat","trim","applyCssPrefixes","isNaN","validateBasis","basis","grow","shrink","parts","j","indexOf","_validateCalcValue","substring","substr","calc","initBuilderMap","input","oldMap","Map","setPrototypeOf","__proto__","p","__assign","assign","t","s","n","call","apply","BROWSER_PROVIDER","provide","APP_BOOTSTRAP_LISTENER","useFactory","deps","DOCUMENT","PLATFORM_ID","multi","CoreModule","NgModule","providers","property","StylesheetMap","stylesheet","addStyleToElement","style","clearStyles","clear","getStyleForElement","styleName","styles","DEFAULT_CONFIG","addFlexToParent","addOrientationBps","disableDefaultBps","disableVendorPrefixes","serverLoaded","useColumnBasisZero","printWithBreakpoints","mediaTriggerAutoRestore","ssrObserveBreakpoints","LAYOUT_CONFIG","InjectionToken","factory","SERVER_TOKEN","BREAKPOINT","BaseDirective2","elementRef","styleBuilder","styler","marshal","DIRECTIVE_KEY","inputs","mru","destroySubject","Subject","styleCache","defineProperty","nativeElement","parentElement","setValue","activatedAlias","ngOnChanges","changes","val","ngOnDestroy","next","complete","releaseElement","init","extraTriggers","updateWithValue","addStyles","parent","builder","useCache","shouldCache","genStyles","buildStyles","tslib_1.__assign","applyStyleToElement","sideEffect","triggerUpdate","getFlexFlowDirection","addIfMissing","getFlowDirection","elements","applyStyleToElements","DEFAULT_BREAKPOINTS","TABLET_PORTRAIT","TABLET_LANDSCAPE","WEB_PORTRAIT","WEB_LANDSCAPE","ScreenTypes","HANDSET","HANDSET_PORTRAIT","TABLET","WEB","HANDSET_LANDSCAPE","ORIENTATION_BREAKPOINTS","BREAKPOINTS","inject","layoutConfig","bpFlattenArray","v","findByMap","sort","findWithPredicate","searchFn","response","decorators","Inject","_zone","_platformId","BehaviorSubject","registry","_observable$","asObservable","results","mql","push","isActive","mqList","filterOthers","matchMedia$","change","registration$","Observable","observer","registerQuery","lastChange","pop","merge","onMQLEvent","run","buildMQL","NgZone","MockMatchMedia","_super","_breakpoints","autoRegisterQueries","useOverlaps","tslib_1.__extends","clearAll","destroy","activate","_validateQuery","_deactivateAll","_registerMediaQuery","_activateWithOverlaps","hasActivated","queryOrAlias","_activateByAlias","_activateByQuery","aliases","deactivate","MockMediaQueryList","activations","_mediaQuery","_isActive","_listeners","onchange","callback","listener","_","addEventListener","___","removeEventListener","dispatchEvent","MockMatchMediaProvider","useClass","BREAKPOINT_PRINT","registeredBeforeAfterPrintHooks","isPrintingBeforeAfterEvent","isPrinting","queue","PrintQueue","deactivations","isPrintEvent","printAlias","getEventBreakpoints","printBreakPoints","updateEvent","event","registerBeforeAfterPrintHooks","startPrinting","updateStyles","stopPrinting","collectActivations","bpList","addPrintBreakpoints","printBreakpoints","addBreakpoint","MediaObserver","filterOverlaps","destroyed$","_media$","watchActivations","media$","some","buildObservable","hasChanges","isValidQuery","excludeOverlaps","debounceTime","asapScheduler","switchMap","of","findAllActivations","takeUntil","mergeMQAlias","replaceWithPrintAlias","MediaTrigger","hasCachedRegistryMatches","originalActivations","originalRegistry","saveActivations","deactivateAll","setActivations","prepareAutoRestore","restore","extractQuery","restoreRegistryMatches","resizeSubscription","unsubscribe","resize$","fromEvent","window","take","currentActivations","forceRegistryMatches","simulateMediaChanges","toMediaChange","cacheRegistryMatches","emitChangeEvent","StyleUtils","_serverStylesheet","_serverModuleLoaded","_applyMultiValueStyleToElement","lookupStyle","hasInlineValue","lookupInlineStyle","isPlatformServer","lookupAttributeValue","attribute","getAttribute","getPropertyValue","_getServerStyle","inlineOnly","getComputedStyle","values","values_1","setProperty","_setServerStyle","styleValue","styleMap","_readStyleAttribute","_writeStyleAttribute","styleAttribute","styleList","colonIndex","Error","name_1","styleAttrValue","Optional","Boolean","StyleBuilder","_input","_styles","_parent","elementMap","elementKeyMap","WeakMap","watcherMap","updateMap","clearMap","subject","mc","splice","updateFn","clearFn","buildElementKeyMap","watchExtraTriggers","hasValue","trackValue","keyMap","Set","delete","clearElement","builders","add","triggers"],"mappings":"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"} \ No newline at end of file diff --git a/bundles/flex-layout-extended.umd.js b/bundles/flex-layout-extended.umd.js index 0bb161aee..561aacbb4 100644 --- a/bundles/flex-layout-extended.umd.js +++ b/bundles/flex-layout-extended.umd.js @@ -8,7 +8,7 @@ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/flex-layout/core'), require('@angular/cdk/coercion'), require('rxjs/operators'), require('@angular/platform-browser')) : typeof define === 'function' && define.amd ? define('@angular/flex-layout/extended', ['exports', '@angular/core', '@angular/common', '@angular/flex-layout/core', '@angular/cdk/coercion', 'rxjs/operators', '@angular/platform-browser'], factory) : - (factory((global.ng = global.ng || {}, global.ng['flex-layout'] = global.ng['flex-layout'] || {}, global.ng['flex-layout'].extended = {}),global.ng.core,global.ng.common,global.ng.flexLayout.core,global.ng.cdk.coercion,global.rxjs.operators,global.ng.platformBrowser)); + (factory((global.ng = global.ng || {}, global.ng.flexLayout = global.ng.flexLayout || {}, global.ng.flexLayout.extended = {}),global.ng.core,global.ng.common,global.ng.flexLayout.core,global.ng.cdk.coercion,global.rxjs.operators,global.ng.platformBrowser)); }(this, (function (exports,core,common,core$1,coercion,operators,platformBrowser) { 'use strict'; /*! ***************************************************************************** @@ -53,7 +53,7 @@ var __assign = function() { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var ImgSrcStyleBuilder = /** @class */ (function (_super) { __extends(ImgSrcStyleBuilder, _super); @@ -74,7 +74,7 @@ var ImgSrcStyleBuilder = /** @class */ (function (_super) { ImgSrcStyleBuilder.decorators = [ { type: core.Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ ImgSrcStyleBuilder.ngInjectableDef = core.defineInjectable({ factory: function ImgSrcStyleBuilder_Factory() { return new ImgSrcStyleBuilder(); }, token: ImgSrcStyleBuilder, providedIn: "root" }); + /** @nocollapse */ ImgSrcStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function ImgSrcStyleBuilder_Factory() { return new ImgSrcStyleBuilder(); }, token: ImgSrcStyleBuilder, providedIn: "root" }); return ImgSrcStyleBuilder; }(core$1.StyleBuilder)); var ImgSrcDirective = /** @class */ (function (_super) { @@ -91,7 +91,7 @@ var ImgSrcDirective = /** @class */ (function (_super) { _this.defaultSrc = ''; _this.styleCache = imgSrcCache; _this.init(); - _this.setValue('', _this.nativeElement.getAttribute('src') || ''); + _this.setValue(_this.nativeElement.getAttribute('src') || '', ''); if (common.isPlatformServer(_this.platformId) && _this.serverModuleLoaded) { _this.nativeElement.setAttribute('src', ''); } @@ -104,7 +104,7 @@ var ImgSrcDirective = /** @class */ (function (_super) { */ function (val) { this.defaultSrc = val; - this.setValue('', this.defaultSrc); + this.setValue(this.defaultSrc, ''); }, enumerable: true, configurable: true @@ -124,6 +124,8 @@ var ImgSrcDirective = /** @class */ (function (_super) { * * Do nothing to standard `` usages, only when responsive * keys are present do we actually call `setAttribute()` + * @protected + * @param {?=} value * @return {?} */ ImgSrcDirective.prototype.updateWithValue = /** @@ -133,16 +135,18 @@ var ImgSrcDirective = /** @class */ (function (_super) { * * Do nothing to standard `` usages, only when responsive * keys are present do we actually call `setAttribute()` + * @protected + * @param {?=} value * @return {?} */ - function () { + function (value) { /** @type {?} */ - var url = this.activatedValue || this.defaultSrc; + var url = value || this.defaultSrc; if (common.isPlatformServer(this.platformId) && this.serverModuleLoaded) { this.addStyles(url); } else { - this.nativeElement.setAttribute('src', String(url)); + this.nativeElement.setAttribute('src', url); } }; /** @nocollapse */ @@ -193,26 +197,25 @@ var DefaultImgSrcDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var ClassDirective = /** @class */ (function (_super) { __extends(ClassDirective, _super); - function ClassDirective(elementRef, styler, marshal, iterableDiffers, keyValueDiffers, renderer, ngClassInstance) { - var _this = _super.call(this, elementRef, /** @type {?} */ ((null)), styler, marshal) || this; + function ClassDirective(elementRef, styler, marshal, delegate, ngClassInstance) { + var _this = _super.call(this, elementRef, (/** @type {?} */ (null)), styler, marshal) || this; _this.elementRef = elementRef; _this.styler = styler; _this.marshal = marshal; - _this.iterableDiffers = iterableDiffers; - _this.keyValueDiffers = keyValueDiffers; - _this.renderer = renderer; + _this.delegate = delegate; _this.ngClassInstance = ngClassInstance; _this.DIRECTIVE_KEY = 'ngClass'; if (!_this.ngClassInstance) { // Create an instance NgClass Directive instance only if `ngClass=""` has NOT been defined on // the same host element; since the responsive variations may be defined... - _this.ngClassInstance = new common.NgClass(_this.iterableDiffers, _this.keyValueDiffers, _this.elementRef, _this.renderer); + _this.ngClassInstance = new common.NgClass(_this.delegate); } _this.init(); + _this.setValue('', ''); return _this; } Object.defineProperty(ClassDirective.prototype, "klass", { @@ -234,10 +237,12 @@ var ClassDirective = /** @class */ (function (_super) { configurable: true }); /** + * @protected * @param {?} value * @return {?} */ ClassDirective.prototype.updateWithValue = /** + * @protected * @param {?} value * @return {?} */ @@ -251,11 +256,18 @@ var ClassDirective = /** @class */ (function (_super) { /** * For ChangeDetectionStrategy.onPush and ngOnChanges() updates */ + // ****************************************************************** + // Lifecycle Hooks + // ****************************************************************** /** * For ChangeDetectionStrategy.onPush and ngOnChanges() updates * @return {?} */ - ClassDirective.prototype.ngDoCheck = /** + ClassDirective.prototype.ngDoCheck = + // ****************************************************************** + // Lifecycle Hooks + // ****************************************************************** + /** * For ChangeDetectionStrategy.onPush and ngOnChanges() updates * @return {?} */ @@ -267,9 +279,7 @@ var ClassDirective = /** @class */ (function (_super) { { type: core.ElementRef }, { type: core$1.StyleUtils }, { type: core$1.MediaMarshaller }, - { type: core.IterableDiffers }, - { type: core.KeyValueDiffers }, - { type: core.Renderer2 }, + { type: common.ɵNgClassImpl }, { type: common.NgClass, decorators: [{ type: core.Optional }, { type: core.Self }] } ]; }; ClassDirective.propDecorators = { @@ -285,6 +295,12 @@ var inputs$1 = [ ]; /** @type {?} */ var selector$1 = "\n [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl],\n [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl],\n [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]\n"; +// tslint:disable-next-line:variable-name +/** @type {?} */ +var LayoutNgClassImplProvider = { + provide: common.ɵNgClassImpl, + useClass: common.ɵNgClassR2Impl +}; /** * Directive to add responsive support for ngClass. * This maintains the core functionality of 'ngClass' and adds responsive API @@ -298,29 +314,15 @@ var DefaultClassDirective = /** @class */ (function (_super) { return _this; } DefaultClassDirective.decorators = [ - { type: core.Directive, args: [{ selector: selector$1, inputs: inputs$1 },] }, + { type: core.Directive, args: [{ selector: selector$1, inputs: inputs$1, providers: [LayoutNgClassImplProvider] },] }, ]; return DefaultClassDirective; }(ClassDirective)); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * For fxHide selectors, we invert the 'value' - * and assign to the equivalent fxShow selector cache - * - When 'hide' === '' === true, do NOT show the element - * - When 'hide' === false or 0... we WILL show the element - * @deprecated - * \@deletion-target v7.0.0-beta.21 - * @param {?} hide - * @return {?} + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -function negativeOf(hide) { - return (hide === '') ? false : - ((hide === 'false') || (hide === 0)) ? true : !hide; -} var ShowHideStyleBuilder = /** @class */ (function (_super) { __extends(ShowHideStyleBuilder, _super); function ShowHideStyleBuilder() { @@ -344,7 +346,7 @@ var ShowHideStyleBuilder = /** @class */ (function (_super) { ShowHideStyleBuilder.decorators = [ { type: core.Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ ShowHideStyleBuilder.ngInjectableDef = core.defineInjectable({ factory: function ShowHideStyleBuilder_Factory() { return new ShowHideStyleBuilder(); }, token: ShowHideStyleBuilder, providedIn: "root" }); + /** @nocollapse */ ShowHideStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function ShowHideStyleBuilder_Factory() { return new ShowHideStyleBuilder(); }, token: ShowHideStyleBuilder, providedIn: "root" }); return ShowHideStyleBuilder; }(core$1.StyleBuilder)); var ShowHideDirective = /** @class */ (function (_super) { @@ -370,33 +372,38 @@ var ShowHideDirective = /** @class */ (function (_super) { // ********************************************* // Lifecycle Methods // ********************************************* + // ********************************************* + // Lifecycle Methods + // ********************************************* /** * @return {?} */ - ShowHideDirective.prototype.ngAfterViewInit = /** + ShowHideDirective.prototype.ngAfterViewInit = + // ********************************************* + // Lifecycle Methods + // ********************************************* + /** * @return {?} */ function () { - this.hasLayout = this.marshal.hasValue(this.nativeElement, 'layout'); - this.marshal.trackValue(this.nativeElement, 'layout') - .pipe(operators.takeUntil(this.destroySubject)) - .subscribe(this.updateWithValue.bind(this)); + this.trackExtraTriggers(); /** @type {?} */ var children = Array.from(this.nativeElement.children); for (var i = 0; i < children.length; i++) { - if (this.marshal.hasValue(/** @type {?} */ (children[i]), 'flex')) { + if (this.marshal.hasValue((/** @type {?} */ (children[i])), 'flex')) { this.hasFlexChild = true; break; } } if (DISPLAY_MAP.has(this.nativeElement)) { - this.display = /** @type {?} */ ((DISPLAY_MAP.get(this.nativeElement))); + this.display = (/** @type {?} */ (DISPLAY_MAP.get(this.nativeElement))); } else { this.display = this.getDisplayStyle(); DISPLAY_MAP.set(this.nativeElement, this.display); } this.init(); + // set the default to show unless explicitly overridden /** @type {?} */ var defaultValue = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY, ''); if (defaultValue === undefined || defaultValue === '') { @@ -427,7 +434,11 @@ var ShowHideDirective = /** @class */ (function (_super) { */ function (changes) { var _this = this; - Object.keys(changes).forEach(function (key) { + Object.keys(changes).forEach((/** + * @param {?} key + * @return {?} + */ + function (key) { if (_this.inputs.indexOf(key) !== -1) { /** @type {?} */ var inputKey = key.split('.'); @@ -444,11 +455,45 @@ var ShowHideDirective = /** @class */ (function (_super) { } _this.setValue(shouldShow, bp); } - }); + })); }; // ********************************************* // Protected methods // ********************************************* + /** + * Watch for these extra triggers to update fxShow, fxHide stylings + */ + // ********************************************* + // Protected methods + // ********************************************* + /** + * Watch for these extra triggers to update fxShow, fxHide stylings + * @protected + * @return {?} + */ + ShowHideDirective.prototype.trackExtraTriggers = + // ********************************************* + // Protected methods + // ********************************************* + /** + * Watch for these extra triggers to update fxShow, fxHide stylings + * @protected + * @return {?} + */ + function () { + var _this = this; + this.hasLayout = this.marshal.hasValue(this.nativeElement, 'layout'); + ['layout', 'layout-align'].forEach((/** + * @param {?} key + * @return {?} + */ + function (key) { + _this.marshal + .trackValue(_this.nativeElement, key) + .pipe(operators.takeUntil(_this.destroySubject)) + .subscribe(_this.triggerUpdate.bind(_this)); + })); + }; /** * Override accessor to the current HTMLElement's `display` style * Note: Show/Hide will not change the display to 'flex' but will set it to 'block' @@ -458,12 +503,14 @@ var ShowHideDirective = /** @class */ (function (_super) { * Override accessor to the current HTMLElement's `display` style * Note: Show/Hide will not change the display to 'flex' but will set it to 'block' * unless it was already explicitly specified inline or in a CSS stylesheet. + * @protected * @return {?} */ ShowHideDirective.prototype.getDisplayStyle = /** * Override accessor to the current HTMLElement's `display` style * Note: Show/Hide will not change the display to 'flex' but will set it to 'block' * unless it was already explicitly specified inline or in a CSS stylesheet. + * @protected * @return {?} */ function () { @@ -473,11 +520,13 @@ var ShowHideDirective = /** @class */ (function (_super) { /** Validate the visibility value and then update the host's inline display style */ /** * Validate the visibility value and then update the host's inline display style + * @protected * @param {?=} value * @return {?} */ ShowHideDirective.prototype.updateWithValue = /** * Validate the visibility value and then update the host's inline display style + * @protected * @param {?=} value * @return {?} */ @@ -490,6 +539,7 @@ var ShowHideDirective = /** @class */ (function (_super) { if (common.isPlatformServer(this.platformId) && this.serverModuleLoaded) { this.nativeElement.style.setProperty('display', ''); } + this.marshal.triggerUpdate((/** @type {?} */ (this.parentElement)), 'layout-gap'); }; /** @nocollapse */ ShowHideDirective.ctorParameters = function () { return [ @@ -507,17 +557,17 @@ var ShowHideDirective = /** @class */ (function (_super) { var DISPLAY_MAP = new WeakMap(); /** @type {?} */ var inputs$2 = [ - 'fxShow', + 'fxShow', 'fxShow.print', 'fxShow.xs', 'fxShow.sm', 'fxShow.md', 'fxShow.lg', 'fxShow.xl', 'fxShow.lt-sm', 'fxShow.lt-md', 'fxShow.lt-lg', 'fxShow.lt-xl', 'fxShow.gt-xs', 'fxShow.gt-sm', 'fxShow.gt-md', 'fxShow.gt-lg', - 'fxHide', + 'fxHide', 'fxHide.print', 'fxHide.xs', 'fxHide.sm', 'fxHide.md', 'fxHide.lg', 'fxHide.xl', 'fxHide.lt-sm', 'fxHide.lt-md', 'fxHide.lt-lg', 'fxHide.lt-xl', 'fxHide.gt-xs', 'fxHide.gt-sm', 'fxHide.gt-md', 'fxHide.gt-lg' ]; /** @type {?} */ -var selector$2 = "\n [fxShow],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n"; +var selector$2 = "\n [fxShow], [fxShow.print],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide], [fxHide.print],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n"; /** * 'show' Layout API directive */ @@ -536,8 +586,9 @@ var DefaultShowHideDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ + /** * NgStyle allowed inputs */ @@ -580,8 +631,16 @@ function buildRawList(source, delimiter) { return String(source) .trim() .split(delimiter) - .map(function (val) { return val.trim(); }) - .filter(function (val) { return val !== ''; }); + .map((/** + * @param {?} val + * @return {?} + */ + function (val) { return val.trim(); })) + .filter((/** + * @param {?} val + * @return {?} + */ + function (val) { return val !== ''; })); } /** * Convert array of key:value strings to a iterable map object @@ -591,17 +650,25 @@ function buildRawList(source, delimiter) { */ function buildMapFromList(styles, sanitize) { /** @type {?} */ - var sanitizeValue = function (it) { + var sanitizeValue = (/** + * @param {?} it + * @return {?} + */ + function (it) { if (sanitize) { it.value = sanitize(it.value); } return it; - }; + }); return styles .map(stringToKeyValue) - .filter(function (entry) { return !!entry; }) + .filter((/** + * @param {?} entry + * @return {?} + */ + function (entry) { return !!entry; })) .map(sanitizeValue) - .reduce(keyValuesToMap, /** @type {?} */ ({})); + .reduce(keyValuesToMap, (/** @type {?} */ ({}))); } /** * Convert Set or raw Object to an iterable NgStyleMap @@ -613,12 +680,20 @@ function buildMapFromSet(source, sanitize) { /** @type {?} */ var list = []; if (getType(source) === 'set') { - (/** @type {?} */ (source)).forEach(function (entry) { return list.push(entry); }); + ((/** @type {?} */ (source))).forEach((/** + * @param {?} entry + * @return {?} + */ + function (entry) { return list.push(entry); })); } else { - Object.keys(source).forEach(function (key) { + Object.keys(source).forEach((/** + * @param {?} key + * @return {?} + */ + function (key) { list.push(key + ":" + ((/** @type {?} */ (source)))[key]); - }); + })); } return buildMapFromList(list, sanitize); } @@ -646,37 +721,41 @@ function keyValuesToMap(map, entry) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var StyleDirective = /** @class */ (function (_super) { __extends(StyleDirective, _super); - function StyleDirective(elementRef, styler, marshal, keyValueDiffers, renderer, sanitizer, ngStyleInstance) { - var _this = _super.call(this, elementRef, /** @type {?} */ ((null)), styler, marshal) || this; + function StyleDirective(elementRef, styler, marshal, delegate, sanitizer, ngStyleInstance, serverLoaded, platformId) { + var _this = _super.call(this, elementRef, (/** @type {?} */ (null)), styler, marshal) || this; _this.elementRef = elementRef; _this.styler = styler; _this.marshal = marshal; - _this.keyValueDiffers = keyValueDiffers; - _this.renderer = renderer; + _this.delegate = delegate; _this.sanitizer = sanitizer; _this.ngStyleInstance = ngStyleInstance; _this.DIRECTIVE_KEY = 'ngStyle'; - _this.fallbackStyles = {}; if (!_this.ngStyleInstance) { // Create an instance NgClass Directive instance only if `ngClass=""` has NOT been // defined on the same host element; since the responsive variations may be defined... - _this.ngStyleInstance = new common.NgStyle(_this.keyValueDiffers, _this.elementRef, _this.renderer); + _this.ngStyleInstance = new common.NgStyle(_this.delegate); } _this.init(); /** @type {?} */ var styles = _this.nativeElement.getAttribute('style') || ''; _this.fallbackStyles = _this.buildStyleMap(styles); + _this.isServer = serverLoaded && common.isPlatformServer(platformId); return _this; } + /** Add generated styles */ /** + * Add generated styles + * @protected * @param {?} value * @return {?} */ StyleDirective.prototype.updateWithValue = /** + * Add generated styles + * @protected * @param {?} value * @return {?} */ @@ -684,6 +763,24 @@ var StyleDirective = /** @class */ (function (_super) { /** @type {?} */ var styles = this.buildStyleMap(value); this.ngStyleInstance.ngStyle = __assign({}, this.fallbackStyles, styles); + if (this.isServer) { + this.applyStyleToElement(styles); + } + this.ngStyleInstance.ngDoCheck(); + }; + /** Remove generated styles */ + /** + * Remove generated styles + * @protected + * @return {?} + */ + StyleDirective.prototype.clearStyles = /** + * Remove generated styles + * @protected + * @return {?} + */ + function () { + this.ngStyleInstance.ngStyle = this.fallbackStyles; this.ngStyleInstance.ngDoCheck(); }; /** @@ -697,6 +794,7 @@ var StyleDirective = /** @class */ (function (_super) { * NOTE: Raw string key-value pairs MUST be delimited by `;` * Comma-delimiters are not supported due to complexities of * possible style values such as `rgba(x,x,x,x)` and others + * @protected * @param {?} styles * @return {?} */ @@ -705,19 +803,25 @@ var StyleDirective = /** @class */ (function (_super) { * NOTE: Raw string key-value pairs MUST be delimited by `;` * Comma-delimiters are not supported due to complexities of * possible style values such as `rgba(x,x,x,x)` and others + * @protected * @param {?} styles * @return {?} */ function (styles) { var _this = this; + // Always safe-guard (aka sanitize) style property values /** @type {?} */ - var sanitizer = function (val) { + var sanitizer = (/** + * @param {?} val + * @return {?} + */ + function (val) { return _this.sanitizer.sanitize(core.SecurityContext.STYLE, val) || ''; - }; + }); if (styles) { switch (getType(styles)) { case 'string': return buildMapFromList$1(buildRawList(styles), sanitizer); - case 'array': return buildMapFromList$1(/** @type {?} */ (styles), sanitizer); + case 'array': return buildMapFromList$1((/** @type {?} */ (styles)), sanitizer); case 'set': return buildMapFromSet(styles, sanitizer); default: return buildMapFromSet(styles, sanitizer); } @@ -728,11 +832,18 @@ var StyleDirective = /** @class */ (function (_super) { // Lifecycle Hooks // ****************************************************************** /** For ChangeDetectionStrategy.onPush and ngOnChanges() updates */ + // ****************************************************************** + // Lifecycle Hooks + // ****************************************************************** /** * For ChangeDetectionStrategy.onPush and ngOnChanges() updates * @return {?} */ - StyleDirective.prototype.ngDoCheck = /** + StyleDirective.prototype.ngDoCheck = + // ****************************************************************** + // Lifecycle Hooks + // ****************************************************************** + /** * For ChangeDetectionStrategy.onPush and ngOnChanges() updates * @return {?} */ @@ -744,10 +855,11 @@ var StyleDirective = /** @class */ (function (_super) { { type: core.ElementRef }, { type: core$1.StyleUtils }, { type: core$1.MediaMarshaller }, - { type: core.KeyValueDiffers }, - { type: core.Renderer2 }, + { type: common.ɵNgStyleImpl }, { type: platformBrowser.DomSanitizer }, - { type: common.NgStyle, decorators: [{ type: core.Optional }, { type: core.Self }] } + { type: common.NgStyle, decorators: [{ type: core.Optional }, { type: core.Self }] }, + { type: Boolean, decorators: [{ type: core.Optional }, { type: core.Inject, args: [core$1.SERVER_TOKEN,] }] }, + { type: Object, decorators: [{ type: core.Inject, args: [core.PLATFORM_ID,] }] } ]; }; return StyleDirective; }(core$1.BaseDirective2)); @@ -760,6 +872,12 @@ var inputs$3 = [ ]; /** @type {?} */ var selector$3 = "\n [ngStyle],\n [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl],\n [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl],\n [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]\n"; +// tslint:disable-next-line:variable-name +/** @type {?} */ +var LayoutNgStyleImplProvider = { + provide: common.ɵNgStyleImpl, + useClass: common.ɵNgStyleR2Impl +}; /** * Directive to add responsive support for ngStyle. * @@ -772,7 +890,7 @@ var DefaultStyleDirective = /** @class */ (function (_super) { return _this; } DefaultStyleDirective.decorators = [ - { type: core.Directive, args: [{ selector: selector$3, inputs: inputs$3 },] }, + { type: core.Directive, args: [{ selector: selector$3, inputs: inputs$3, providers: [LayoutNgStyleImplProvider] },] }, ]; return DefaultStyleDirective; }(StyleDirective)); @@ -784,22 +902,30 @@ var DefaultStyleDirective = /** @class */ (function (_super) { */ function buildMapFromList$1(styles, sanitize) { /** @type {?} */ - var sanitizeValue = function (it) { + var sanitizeValue = (/** + * @param {?} it + * @return {?} + */ + function (it) { if (sanitize) { it.value = sanitize(it.value); } return it; - }; + }); return styles .map(stringToKeyValue) - .filter(function (entry) { return !!entry; }) + .filter((/** + * @param {?} entry + * @return {?} + */ + function (entry) { return !!entry; })) .map(sanitizeValue) - .reduce(keyValuesToMap, /** @type {?} */ ({})); + .reduce(keyValuesToMap, (/** @type {?} */ ({}))); } /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var ALL_DIRECTIVES = [ @@ -828,15 +954,16 @@ var ExtendedModule = /** @class */ (function () { exports.ExtendedModule = ExtendedModule; exports.ClassDirective = ClassDirective; +exports.LayoutNgClassImplProvider = LayoutNgClassImplProvider; exports.DefaultClassDirective = DefaultClassDirective; exports.ImgSrcStyleBuilder = ImgSrcStyleBuilder; exports.ImgSrcDirective = ImgSrcDirective; exports.DefaultImgSrcDirective = DefaultImgSrcDirective; -exports.negativeOf = negativeOf; exports.ShowHideStyleBuilder = ShowHideStyleBuilder; exports.ShowHideDirective = ShowHideDirective; exports.DefaultShowHideDirective = DefaultShowHideDirective; exports.StyleDirective = StyleDirective; +exports.LayoutNgStyleImplProvider = LayoutNgStyleImplProvider; exports.DefaultStyleDirective = DefaultStyleDirective; Object.defineProperty(exports, '__esModule', { value: true }); diff --git a/bundles/flex-layout-extended.umd.js.map b/bundles/flex-layout-extended.umd.js.map index fe460c41d..97ed4f4e7 100644 --- a/bundles/flex-layout-extended.umd.js.map +++ b/bundles/flex-layout-extended.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"flex-layout-extended.umd.js","sources":["../../src/lib/extended/module.ts","../../src/lib/extended/style/style.ts","../../src/lib/extended/style/style-transforms.ts","../../src/lib/extended/show-hide/show-hide.ts","../../src/lib/extended/class/class.ts","../../src/lib/extended/img-src/img-src.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 {NgModule} from '@angular/core';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultImgSrcDirective} from './img-src/img-src';\nimport {DefaultClassDirective} from './class/class';\nimport {DefaultShowHideDirective} from './show-hide/show-hide';\nimport {DefaultStyleDirective} from './style/style';\n\n\nconst ALL_DIRECTIVES = [\n DefaultShowHideDirective,\n DefaultClassDirective,\n DefaultStyleDirective,\n DefaultImgSrcDirective\n];\n\n/**\n * *****************************************************************\n * Define module for the Extended API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class ExtendedModule {\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 {\n Directive,\n DoCheck,\n ElementRef,\n KeyValueDiffers,\n Optional,\n Renderer2,\n SecurityContext,\n Self,\n} from '@angular/core';\nimport {NgStyle} from '@angular/common';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {BaseDirective2, StyleUtils, MediaMarshaller} from '@angular/flex-layout/core';\n\nimport {\n NgStyleRawList,\n NgStyleType,\n NgStyleSanitizer,\n buildRawList,\n getType,\n buildMapFromSet,\n NgStyleMap,\n NgStyleKeyValue,\n stringToKeyValue,\n keyValuesToMap,\n} from './style-transforms';\n\nexport class StyleDirective extends BaseDirective2 implements DoCheck {\n\n protected DIRECTIVE_KEY = 'ngStyle';\n protected fallbackStyles: NgStyleMap = {};\n\n constructor(protected elementRef: ElementRef,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n protected keyValueDiffers: KeyValueDiffers,\n protected renderer: Renderer2,\n protected sanitizer: DomSanitizer,\n @Optional() @Self() private readonly ngStyleInstance: NgStyle) {\n super(elementRef, null!, styler, marshal);\n if (!this.ngStyleInstance) {\n // Create an instance NgClass Directive instance only if `ngClass=\"\"` has NOT been\n // defined on the same host element; since the responsive variations may be defined...\n this.ngStyleInstance = new NgStyle(this.keyValueDiffers, this.elementRef, this.renderer);\n }\n this.init();\n const styles = this.nativeElement.getAttribute('style') || '';\n this.fallbackStyles = this.buildStyleMap(styles);\n }\n\n protected updateWithValue(value: any) {\n const styles = this.buildStyleMap(value);\n this.ngStyleInstance.ngStyle = {...this.fallbackStyles, ...styles};\n this.ngStyleInstance.ngDoCheck();\n }\n\n /**\n * Convert raw strings to ngStyleMap; which is required by ngStyle\n * NOTE: Raw string key-value pairs MUST be delimited by `;`\n * Comma-delimiters are not supported due to complexities of\n * possible style values such as `rgba(x,x,x,x)` and others\n */\n protected buildStyleMap(styles: NgStyleType): NgStyleMap {\n // Always safe-guard (aka sanitize) style property values\n const sanitizer: NgStyleSanitizer = (val: any) =>\n this.sanitizer.sanitize(SecurityContext.STYLE, val) || '';\n if (styles) {\n switch (getType(styles)) {\n case 'string': return buildMapFromList(buildRawList(styles),\n sanitizer);\n case 'array' : return buildMapFromList(styles as NgStyleRawList, sanitizer);\n case 'set' : return buildMapFromSet(styles, sanitizer);\n default : return buildMapFromSet(styles, sanitizer);\n }\n }\n\n return {};\n }\n\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n\n /** For ChangeDetectionStrategy.onPush and ngOnChanges() updates */\n ngDoCheck() {\n this.ngStyleInstance.ngDoCheck();\n }\n}\n\nconst inputs = [\n 'ngStyle',\n 'ngStyle.xs', 'ngStyle.sm', 'ngStyle.md', 'ngStyle.lg', 'ngStyle.xl',\n 'ngStyle.lt-sm', 'ngStyle.lt-md', 'ngStyle.lt-lg', 'ngStyle.lt-xl',\n 'ngStyle.gt-xs', 'ngStyle.gt-sm', 'ngStyle.gt-md', 'ngStyle.gt-lg'\n];\n\nconst selector = `\n [ngStyle],\n [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl],\n [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl],\n [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]\n`;\n\n/**\n * Directive to add responsive support for ngStyle.\n *\n */\n@Directive({selector, inputs})\nexport class DefaultStyleDirective extends StyleDirective implements DoCheck {\n protected inputs = inputs;\n}\n\n/** Build a styles map from a list of styles, while sanitizing bad values first */\nfunction buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap {\n const sanitizeValue = (it: NgStyleKeyValue) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n };\n\n return styles\n .map(stringToKeyValue)\n .filter(entry => !!entry)\n .map(sanitizeValue)\n .reduce(keyValuesToMap, {} as NgStyleMap);\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\nexport type NgStyleRawList = string[];\nexport type NgStyleMap = {[klass: string]: string};\n// NgStyle selectors accept NgStyleType values\nexport type NgStyleType = string | Set | NgStyleRawList | NgStyleMap;\n\n/**\n * Callback function for SecurityContext.STYLE sanitization\n */\nexport type NgStyleSanitizer = (val: any) => string;\n\n/** NgStyle allowed inputs */\nexport class NgStyleKeyValue {\n constructor(public key: string, public value: string, noQuotes = true) {\n this.key = noQuotes ? key.replace(/['\"]/g, '').trim() : key.trim();\n\n this.value = noQuotes ? value.replace(/['\"]/g, '').trim() : value.trim();\n this.value = this.value.replace(/;/, '');\n }\n}\n\nexport function getType(target: any): string {\n let what = typeof target;\n if (what === 'object') {\n return (target.constructor === Array) ? 'array' :\n (target.constructor === Set) ? 'set' : 'object';\n }\n return what;\n}\n\n/**\n * Split string of key:value pairs into Array of k-v pairs\n * e.g. 'key:value; key:value; key:value;' -> ['key:value',...]\n */\nexport function buildRawList(source: any, delimiter = ';'): NgStyleRawList {\n return String(source)\n .trim()\n .split(delimiter)\n .map((val: string) => val.trim())\n .filter(val => val !== '');\n}\n\n/** Convert array of key:value strings to a iterable map object */\nexport function buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap {\n const sanitizeValue = (it: NgStyleKeyValue) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n };\n\n return styles\n .map(stringToKeyValue)\n .filter(entry => !!entry)\n .map(sanitizeValue)\n .reduce(keyValuesToMap, {} as NgStyleMap);\n}\n\n/** Convert Set or raw Object to an iterable NgStyleMap */\nexport function buildMapFromSet(source: NgStyleType, sanitize?: NgStyleSanitizer): NgStyleMap {\n let list: string[] = [];\n if (getType(source) === 'set') {\n (source as Set).forEach(entry => list.push(entry));\n } else {\n Object.keys(source).forEach((key: string) => {\n list.push(`${key}:${(source as NgStyleMap)[key]}`);\n });\n }\n return buildMapFromList(list, sanitize);\n}\n\n\n/** Convert 'key:value' -> [key, value] */\nexport function stringToKeyValue(it: string): NgStyleKeyValue {\n const [key, ...vals] = it.split(':');\n return new NgStyleKeyValue(key, vals.join(':'));\n}\n\n/** Convert [ [key,value] ] -> { key : value } */\nexport function keyValuesToMap(map: NgStyleMap, entry: NgStyleKeyValue): NgStyleMap {\n if (!!entry.key) {\n map[entry.key] = entry.value;\n }\n return map;\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 {\n Directive,\n ElementRef,\n OnChanges,\n SimpleChanges,\n Optional,\n Inject,\n PLATFORM_ID,\n Injectable,\n AfterViewInit,\n} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n BaseDirective2,\n LAYOUT_CONFIG,\n LayoutConfigOptions,\n MediaMarshaller,\n SERVER_TOKEN,\n StyleUtils,\n StyleBuilder,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {takeUntil} from 'rxjs/operators';\n\n/**\n * For fxHide selectors, we invert the 'value'\n * and assign to the equivalent fxShow selector cache\n * - When 'hide' === '' === true, do NOT show the element\n * - When 'hide' === false or 0... we WILL show the element\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport function negativeOf(hide: any) {\n return (hide === '') ? false :\n ((hide === 'false') || (hide === 0)) ? true : !hide;\n}\n\nexport interface ShowHideParent {\n display: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class ShowHideStyleBuilder extends StyleBuilder {\n buildStyles(show: string, parent: ShowHideParent) {\n const shouldShow = show === 'true';\n return {'display': shouldShow ? parent.display : 'none'};\n }\n}\n\nexport class ShowHideDirective extends BaseDirective2 implements AfterViewInit, OnChanges {\n protected DIRECTIVE_KEY = 'show-hide';\n\n /** Original dom Elements CSS display style */\n protected display: string = '';\n protected hasLayout = false;\n protected hasFlexChild = false;\n\n constructor(protected elementRef: ElementRef,\n protected styleBuilder: ShowHideStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n @Inject(PLATFORM_ID) protected platformId: Object,\n @Optional() @Inject(SERVER_TOKEN) protected serverModuleLoaded: boolean) {\n super(elementRef, styleBuilder, styler, marshal);\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n ngAfterViewInit() {\n this.hasLayout = this.marshal.hasValue(this.nativeElement, 'layout');\n this.marshal.trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.updateWithValue.bind(this));\n\n const children = Array.from(this.nativeElement.children);\n for (let i = 0; i < children.length; i++) {\n if (this.marshal.hasValue(children[i] as HTMLElement, 'flex')) {\n this.hasFlexChild = true;\n break;\n }\n }\n\n if (DISPLAY_MAP.has(this.nativeElement)) {\n this.display = DISPLAY_MAP.get(this.nativeElement)!;\n } else {\n this.display = this.getDisplayStyle();\n DISPLAY_MAP.set(this.nativeElement, this.display);\n }\n\n this.init();\n // set the default to show unless explicitly overridden\n const defaultValue = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY, '');\n if (defaultValue === undefined || defaultValue === '') {\n this.setValue(true, '');\n } else {\n this.triggerUpdate();\n }\n }\n\n /**\n * On changes to any @Input properties...\n * Default to use the non-responsive Input value ('fxShow')\n * Then conditionally override with the mq-activated Input's current value\n */\n ngOnChanges(changes: SimpleChanges) {\n Object.keys(changes).forEach(key => {\n if (this.inputs.indexOf(key) !== -1) {\n const inputKey = key.split('.');\n const bp = inputKey.slice(1).join('.');\n const inputValue = changes[key].currentValue;\n let shouldShow = inputValue !== '' ?\n inputValue !== 0 ? coerceBooleanProperty(inputValue) : false\n : true;\n if (inputKey[0] === 'fxHide') {\n shouldShow = !shouldShow;\n }\n this.setValue(shouldShow, bp);\n }\n });\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Override accessor to the current HTMLElement's `display` style\n * Note: Show/Hide will not change the display to 'flex' but will set it to 'block'\n * unless it was already explicitly specified inline or in a CSS stylesheet.\n */\n protected getDisplayStyle(): string {\n return (this.hasLayout || (this.hasFlexChild && this.layoutConfig.addFlexToParent)) ?\n 'flex' : this.styler.lookupStyle(this.nativeElement, 'display', true);\n }\n\n /** Validate the visibility value and then update the host's inline display style */\n protected updateWithValue(value: boolean|string = true) {\n if (value === '') {\n return;\n }\n this.addStyles(value ? 'true' : 'false', {display: this.display});\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.nativeElement.style.setProperty('display', '');\n }\n }\n}\n\nconst DISPLAY_MAP: WeakMap = new WeakMap();\n\nconst inputs = [\n 'fxShow',\n 'fxShow.xs', 'fxShow.sm', 'fxShow.md', 'fxShow.lg', 'fxShow.xl',\n 'fxShow.lt-sm', 'fxShow.lt-md', 'fxShow.lt-lg', 'fxShow.lt-xl',\n 'fxShow.gt-xs', 'fxShow.gt-sm', 'fxShow.gt-md', 'fxShow.gt-lg',\n 'fxHide',\n 'fxHide.xs', 'fxHide.sm', 'fxHide.md', 'fxHide.lg', 'fxHide.xl',\n 'fxHide.lt-sm', 'fxHide.lt-md', 'fxHide.lt-lg', 'fxHide.lt-xl',\n 'fxHide.gt-xs', 'fxHide.gt-sm', 'fxHide.gt-md', 'fxHide.gt-lg'\n];\n\nconst selector = `\n [fxShow],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n`;\n\n/**\n * 'show' Layout API directive\n */\n@Directive({selector, inputs})\nexport class DefaultShowHideDirective extends ShowHideDirective {\n protected inputs = inputs;\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 {\n Directive,\n DoCheck,\n ElementRef,\n Input,\n IterableDiffers,\n KeyValueDiffers,\n Optional,\n Renderer2,\n Self,\n} from '@angular/core';\nimport {NgClass} from '@angular/common';\nimport {BaseDirective2, StyleUtils, MediaMarshaller} from '@angular/flex-layout/core';\n\nexport class ClassDirective extends BaseDirective2 implements DoCheck {\n\n protected DIRECTIVE_KEY = 'ngClass';\n\n /**\n * Capture class assignments so we cache the default classes\n * which are merged with activated styles and used as fallbacks.\n */\n @Input('class')\n set klass(val: string) {\n this.ngClassInstance.klass = val;\n this.setValue(val, '');\n }\n\n constructor(protected elementRef: ElementRef,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n protected iterableDiffers: IterableDiffers,\n protected keyValueDiffers: KeyValueDiffers,\n protected renderer: Renderer2,\n @Optional() @Self() protected readonly ngClassInstance: NgClass) {\n super(elementRef, null!, styler, marshal);\n if (!this.ngClassInstance) {\n // Create an instance NgClass Directive instance only if `ngClass=\"\"` has NOT been defined on\n // the same host element; since the responsive variations may be defined...\n this.ngClassInstance = new NgClass(\n this.iterableDiffers, this.keyValueDiffers, this.elementRef, this.renderer\n );\n }\n this.init();\n }\n\n protected updateWithValue(value: any) {\n this.ngClassInstance.ngClass = value;\n this.ngClassInstance.ngDoCheck();\n }\n\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n\n /**\n * For ChangeDetectionStrategy.onPush and ngOnChanges() updates\n */\n ngDoCheck() {\n this.ngClassInstance.ngDoCheck();\n }\n}\n\nconst inputs = [\n 'ngClass', 'ngClass.xs', 'ngClass.sm', 'ngClass.md', 'ngClass.lg', 'ngClass.xl',\n 'ngClass.lt-sm', 'ngClass.lt-md', 'ngClass.lt-lg', 'ngClass.lt-xl',\n 'ngClass.gt-xs', 'ngClass.gt-sm', 'ngClass.gt-md', 'ngClass.gt-lg'\n];\n\nconst selector = `\n [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl],\n [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl],\n [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]\n`;\n\n/**\n * Directive to add responsive support for ngClass.\n * This maintains the core functionality of 'ngClass' and adds responsive API\n * Note: this class is a no-op when rendered on the server\n */\n@Directive({selector, inputs})\nexport class DefaultClassDirective extends ClassDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Inject, PLATFORM_ID, Injectable, Input} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n MediaMarshaller,\n BaseDirective2,\n SERVER_TOKEN,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class ImgSrcStyleBuilder extends StyleBuilder {\n buildStyles(url: string) {\n return {'content': url ? `url(${url})` : ''};\n }\n}\n\nexport class ImgSrcDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'img-src';\n protected defaultSrc = '';\n\n @Input('src')\n set src(val: string) {\n this.defaultSrc = val;\n this.setValue('', this.defaultSrc);\n }\n\n constructor(protected elementRef: ElementRef,\n protected styleBuilder: ImgSrcStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n @Inject(PLATFORM_ID) protected platformId: Object,\n @Inject(SERVER_TOKEN) protected serverModuleLoaded: boolean) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n this.setValue('', this.nativeElement.getAttribute('src') || '');\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.nativeElement.setAttribute('src', '');\n }\n }\n\n /**\n * Use the [responsively] activated input value to update\n * the host img src attribute or assign a default `img.src=''`\n * if the src has not been defined.\n *\n * Do nothing to standard `` usages, only when responsive\n * keys are present do we actually call `setAttribute()`\n */\n protected updateWithValue() {\n let url = this.activatedValue || this.defaultSrc;\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.addStyles(url);\n } else {\n this.nativeElement.setAttribute('src', String(url));\n }\n }\n\n protected styleCache = imgSrcCache;\n}\n\nconst imgSrcCache: Map = new Map();\n\nconst inputs = [\n 'src.xs', 'src.sm', 'src.md', 'src.lg', 'src.xl',\n 'src.lt-sm', 'src.lt-md', 'src.lt-lg', 'src.lt-xl',\n 'src.gt-xs', 'src.gt-sm', 'src.gt-md', 'src.gt-lg'\n];\n\nconst selector = `\n img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl],\n img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl],\n img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]\n`;\n\n/**\n * This directive provides a responsive API for the HTML 'src' attribute\n * and will update the img.src property upon each responsive activation.\n *\n * e.g.\n * \n *\n * @see https://css-tricks.com/responsive-images-youre-just-changing-resolutions-use-src/\n */\n@Directive({selector, inputs})\nexport class DefaultImgSrcDirective extends ImgSrcDirective {\n protected inputs = inputs;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\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 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) : new P(function (resolve) { resolve(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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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 __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\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)) result[k] = mod[k];\r\n result.default = 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"],"names":["CoreModule","NgModule","buildMapFromList","Directive","selector","inputs","tslib_1.__extends","BaseDirective2","NgStyle","Optional","Self","DomSanitizer","Renderer2","KeyValueDiffers","MediaMarshaller","StyleUtils","ElementRef","SecurityContext","tslib_1.__assign","Inject","SERVER_TOKEN","PLATFORM_ID","LAYOUT_CONFIG","isPlatformServer","coerceBooleanProperty","takeUntil","StyleBuilder","Injectable","Input","NgClass","IterableDiffers"],"mappings":";;;;;;;;;;;;;AMAA;;;;;;;;;;;;;;;;AAgBA,IAAI,aAAa,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE;IAC/B,aAAa,GAAG,MAAM,CAAC,cAAc;SAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;QAC5E,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC9B,CAAC;;AAEF,AAAO,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;IAC5B,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpB,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;IACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;CACxF;;AAED,AAAO,IAAI,QAAQ,GAAG,WAAW;IAC7B,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE;QAC7C,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACjD,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACjB,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAChF;QACD,OAAO,CAAC,CAAC;MACZ;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;CAC1C;;;;;;;IDnBuCM,SAAxC,CAAA,kBAAA,EAAA,MAAA,CAAA,CAAoD;;;;;;;;IAClD,kBAAF,CAAA,SAAA,CAAA,WAAa;;;;IAAX,UAAY,GAAW,EAAzB;QACI,OAAO,EAAC,SAAS,EAAE,GAAG,GAAG,MAA7B,GAAoC,GAAG,GAAvC,GAA0C,GAAG,EAAE,EAAC,CAAC;KAC9C,CAAH;;QAJA,EAAA,IAAA,EAACqB,eAAU,EAAX,IAAA,EAAA,CAAY,EAAC,UAAU,EAAE,MAAM,EAAC,EAAhC,EAAA;;;IAlBA,OAAA,kBAAA,CAAA;CAmBA,CAAwCD,mBAAY,CAApD,CAAA,CAAA;AAAA,AAAA,IAAA,eAAA,kBAAA,UAAA,MAAA,EAAA;IAMqCpB,SAArC,CAAA,eAAA,EAAA,MAAA,CAAA,CAAmD;IAUjD,SAAF,eAAA,CAAwB,UAAsB,EACtB,YAAgC,EAChC,MAAkB,EAClB,OAAwB,EACH,UAAkB,EACjB,kBAA2B,EALzE;QAAE,IAAF,KAAA,GAMI,MANJ,CAAA,IAAA,CAAA,IAAA,EAMU,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,IANpD,IAAA,CAYG;QAZqB,KAAxB,CAAA,UAAkC,GAAV,UAAU,CAAY;QACtB,KAAxB,CAAA,YAAoC,GAAZ,YAAY,CAAoB;QAChC,KAAxB,CAAA,MAA8B,GAAN,MAAM,CAAY;QAClB,KAAxB,CAAA,OAA+B,GAAP,OAAO,CAAiB;QACH,KAA7C,CAAA,UAAuD,GAAV,UAAU,CAAQ;QACjB,KAA9C,CAAA,kBAAgE,GAAlB,kBAAkB,CAAS;QAdvE,KAAF,CAAA,aAAA,GAA4B,SAAS,CAAC;QACpC,KAAF,CAAA,UAAA,GAAyB,EAAE,CAAC;QAuC1B,KAAF,CAAA,UAAA,GAAyB,WAAW,CAAC;QAxBjC,KAAI,CAAC,IAAI,EAAE,CAAC;QACZ,KAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAI,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAChE,IAAIiB,uBAAgB,CAAC,KAAI,CAAC,UAAU,CAAC,IAAI,KAAI,CAAC,kBAAkB,EAAE;YAChE,KAAI,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;SAC5C;;KACF;IAlBD,MAAF,CAAA,cAAA,CACM,eADN,CAAA,SAAA,EAAA,KACS,EADT;;;;;QAAE,UACQ,GAAW,EADrB;YAEI,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SACpC;;;KAAH,CAAA,CAAG;;;;;;;;;;;;;;;;;;IAwBS,eAAZ,CAAA,SAAA,CAAA,eAA2B;;;;;;;;;IAAzB,YAAF;;QACI,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC;QACjD,IAAIA,uBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAChE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SACrB;aAAM;YACL,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;SACrD;KACF,CAAH;;;QAzDA,EAAA,IAAA,EAAmBP,eAAU,EAA7B;QA6BA,EAAA,IAAA,EAAsC,kBAAkB,EAAxD;QArBA,EAAA,IAAA,EAAED,iBAAU,EAAZ;QALA,EAAA,IAAA,EAAED,sBAAe,EAAjB;QA6BA,EAAA,IAAA,EAAyD,MAAM,EAA/D,UAAA,EAAA,CAAA,EAAA,IAAA,EAAeK,WAAM,EAArB,IAAA,EAAA,CAAsBE,gBAAW,EAAjC,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAeF,WAAM,EAArB,IAAA,EAAA,CAAsBC,mBAAY,EAAlC,EAAA,CAAA,EAAA;;;QAXA,GAAA,EAAA,CAAA,EAAA,IAAA,EAAGQ,UAAK,EAAR,IAAA,EAAA,CAAS,KAAK,EAAd,EAAA,CAAA;;IA7BA,OAAA,eAAA,CAAA;CAyBA,CAAqCrB,qBAAc,CAAnD,CAAA,CAAA;;AA4CA,IAAM,WAAW,GAAiC,IAAI,GAAG,EAAE,CAAC;;AAE5D,IAAM,MAAM,GAAG;IACb,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;IAChD,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW;IAClD,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW;CACnD,CAAC;;AAEF,IAAM,QAAQ,GAAG,wNAIhB,CAAC;;;;;;;;;;;IAY0CD,SAA5C,CAAA,sBAAA,EAAA,MAAA,CAAA,CAA2D;;;QACzD,KAAF,CAAA,MAAA,GAAqB,MAAM,CAAC;;;;QAF5B,EAAA,IAAA,EAACH,cAAS,EAAV,IAAA,EAAA,CAAW,EAAC,QAAQ,EAApB,QAAoB,EAAE,MAAM,EAA5B,MAA4B,EAAC,EAA7B,EAAA;;IA5FA,OAAA,sBAAA,CAAA;CA6FA,CAA4C,eAAe,CAA3D,CAAA,CAAA;;;;;;;IDxEoCG,SAApC,CAAA,cAAA,EAAA,MAAA,CAAA,CAAkD;IAchD,SAAF,cAAA,CAAwB,UAAsB,EACtB,MAAkB,EAClB,OAAwB,EACxB,eAAgC,EAChC,eAAgC,EAChC,QAAmB,EACU,eAAwB,EAN7E;QAAE,IAAF,KAAA,GAOI,MAPJ,CAAA,IAAA,CAAA,IAAA,EAOU,UAAU,qBAAE,IAAI,IAAG,MAAM,EAAE,OAAO,CAAC,IAP7C,IAAA,CAgBG;QAhBqB,KAAxB,CAAA,UAAkC,GAAV,UAAU,CAAY;QACtB,KAAxB,CAAA,MAA8B,GAAN,MAAM,CAAY;QAClB,KAAxB,CAAA,OAA+B,GAAP,OAAO,CAAiB;QACxB,KAAxB,CAAA,eAAuC,GAAf,eAAe,CAAiB;QAChC,KAAxB,CAAA,eAAuC,GAAf,eAAe,CAAiB;QAChC,KAAxB,CAAA,QAAgC,GAAR,QAAQ,CAAW;QACU,KAArD,CAAA,eAAoE,GAAf,eAAe,CAAS;QAlB3E,KAAF,CAAA,aAAA,GAA4B,SAAS,CAAC;QAoBlC,IAAI,CAAC,KAAI,CAAC,eAAe,EAAE;;;YAGzB,KAAI,CAAC,eAAe,GAAG,IAAIuB,cAAO,CAChC,KAAI,CAAC,eAAe,EAAE,KAAI,CAAC,eAAe,EAAE,KAAI,CAAC,UAAU,EAAE,KAAI,CAAC,QAAQ,CAC3E,CAAC;SACH;QACD,KAAI,CAAC,IAAI,EAAE,CAAC;;KACb;IAtBD,MAAF,CAAA,cAAA,CACM,cADN,CAAA,SAAA,EAAA,OACW,EADX;;;;;;;;;;;QAAE,UACU,GAAW,EADvB;YAEI,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,GAAG,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;SACxB;;;KAAH,CAAA,CAAG;;;;;IAoBS,cAAZ,CAAA,SAAA,CAAA,eAA2B;;;;IAAzB,UAA0B,KAAU,EAAtC;QACI,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;KAClC,CAAH;;;;;;;;;;;IASE,cAAF,CAAA,SAAA,CAAA,SAAW;;;;IAAT,YAAF;QACI,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;KAClC,CAAH;;;QAzDA,EAAA,IAAA,EAAEb,eAAU,EAAZ;QASA,EAAA,IAAA,EAAwBD,iBAAU,EAAlC;QAAA,EAAA,IAAA,EAAoCD,sBAAe,EAAnD;QAPA,EAAA,IAAA,EAAEgB,oBAAe,EAAjB;QACA,EAAA,IAAA,EAAEjB,oBAAe,EAAjB;QAEA,EAAA,IAAA,EAAED,cAAS,EAAX;QAGA,EAAA,IAAA,EAAQiB,cAAO,EAAf,UAAA,EAAA,CAAA,EAAA,IAAA,EAuBepB,aAAQ,EAvBvB,EAAA,EAAA,IAAA,EAuB2BC,SAAI,EAvB/B,CAAA,EAAA;;;QAWA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAGkB,UAAK,EAAR,IAAA,EAAA,CAAS,OAAO,EAAhB,EAAA,CAAA;;IA7BA,OAAA,cAAA,CAAA;CAqBA,CAAoCrB,qBAAc,CAAlD,CAAA,CAAA;;AAiDA,IAAMF,QAAM,GAAG;IACb,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY;IAC/E,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe;IAClE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe;CACnE,CAAC;;AAEF,IAAMD,UAAQ,GAAG,qOAIhB,CAAC;;;;;;;IAQyCE,SAA3C,CAAA,qBAAA,EAAA,MAAA,CAAA,CAAyD;;;QACvD,KAAF,CAAA,MAAA,GAAqBD,QAAM,CAAC;;;;QAF5B,EAAA,IAAA,EAACF,cAAS,EAAV,IAAA,EAAA,CAAW,EAAC,QAAQ,EAApBC,UAAoB,EAAE,MAAM,EAA5BC,QAA4B,EAAC,EAA7B,EAAA;;IAvFA,OAAA,qBAAA,CAAA;CAwFA,CAA2C,cAAc,CAAzD,CAAA,CAAA;;;;;;;;;;;;;;;;ADjDA,SAAgB,UAAU,CAAC,IAAS,EAApC;IACE,OAAO,CAAC,IAAI,KAAK,EAAE,IAAI,KAAK;QACrB,CAAC,CAAC,IAAI,KAAK,OAAO,MAAM,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;CAC5D;;IAOyCC,SAA1C,CAAA,oBAAA,EAAA,MAAA,CAAA,CAAsD;;;;;;;;;IACpD,oBAAF,CAAA,SAAA,CAAA,WAAa;;;;;IAAX,UAAY,IAAY,EAAE,MAAsB,EAAlD;;QACI,IAAM,UAAU,GAAG,IAAI,KAAK,MAAM,CAAC;QACnC,OAAO,EAAC,SAAS,EAAE,UAAU,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,EAAC,CAAC;KAC1D,CAAH;;QALA,EAAA,IAAA,EAACqB,eAAU,EAAX,IAAA,EAAA,CAAY,EAAC,UAAU,EAAE,MAAM,EAAC,EAAhC,EAAA;;;IAhDA,OAAA,oBAAA,CAAA;CAiDA,CAA0CD,mBAAY,CAAtD,CAAA,CAAA;AAAA,AAAA,IAAA,iBAAA,kBAAA,UAAA,MAAA,EAAA;IAOuCpB,SAAvC,CAAA,iBAAA,EAAA,MAAA,CAAA,CAAqD;IAQnD,SAAF,iBAAA,CAAwB,UAAsB,EACtB,YAAkC,EAClC,MAAkB,EAClB,OAAwB,EACD,YAAiC,EACnC,UAAkB,EACL,kBAA2B,EANrF;QAAE,IAAF,KAAA,GAOI,MAPJ,CAAA,IAAA,CAAA,IAAA,EAOU,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,IAPpD,IAAA,CAQG;QARqB,KAAxB,CAAA,UAAkC,GAAV,UAAU,CAAY;QACtB,KAAxB,CAAA,YAAoC,GAAZ,YAAY,CAAsB;QAClC,KAAxB,CAAA,MAA8B,GAAN,MAAM,CAAY;QAClB,KAAxB,CAAA,OAA+B,GAAP,OAAO,CAAiB;QACD,KAA/C,CAAA,YAA2D,GAAZ,YAAY,CAAqB;QACnC,KAA7C,CAAA,UAAuD,GAAV,UAAU,CAAQ;QACL,KAA1D,CAAA,kBAA4E,GAAlB,kBAAkB,CAAS;QAbnF,KAAF,CAAA,aAAA,GAA4B,WAAW,CAAC;;;;QAGtC,KAAF,CAAA,OAAA,GAA8B,EAAE,CAAC;QAC/B,KAAF,CAAA,SAAA,GAAwB,KAAK,CAAC;QAC5B,KAAF,CAAA,YAAA,GAA2B,KAAK,CAAC;;KAU9B;;;;;;;IAMD,iBAAF,CAAA,SAAA,CAAA,eAAiB;;;IAAf,YAAF;QACI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACrE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC;aAClD,IAAI,CAACmB,mBAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aACpC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;;QAE9C,IAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,mBAAC,QAAQ,CAAC,CAAC,CAAgB,GAAE,MAAM,CAAC,EAAE;gBAC7D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,MAAM;aACP;SACF;QAED,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YACvC,IAAI,CAAC,OAAO,sBAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAC,CAAC;SACrD;aAAM;YACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACtC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACnD;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;;QAEZ,IAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACvF,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,EAAE,EAAE;YACrD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;KACF,CAAH;;;;;;;;;;;;;IAOE,iBAAF,CAAA,SAAA,CAAA,WAAa;;;;;;;IAAX,UAAY,OAAsB,EAApC;QAAE,IAAF,KAAA,GAAA,IAAA,CAeG;QAdC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG,EAApC;YACM,IAAI,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;;gBACnC,IAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;gBAChC,IAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;gBACvC,IAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;;gBAC7C,IAAI,UAAU,GAAG,UAAU,KAAK,EAAE;oBAChC,UAAU,KAAK,CAAC,GAAGD,8BAAqB,CAAC,UAAU,CAAC,GAAG,KAAK;sBAC1D,IAAI,CAAC;gBACT,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;oBAC5B,UAAU,GAAG,CAAC,UAAU,CAAC;iBAC1B;gBACD,KAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;aAC/B;SACF,CAAC,CAAC;KACJ,CAAH;;;;;;;;;;;;;;;IAWY,iBAAZ,CAAA,SAAA,CAAA,eAA2B;;;;;;IAAzB,YAAF;QACI,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC;YAChF,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;KACzE,CAAH;;;;;;;IAGY,iBAAZ,CAAA,SAAA,CAAA,eAA2B;;;;;IAAzB,UAA0B,KAA4B,EAAxD;QAA4B,IAA5B,KAAA,KAAA,KAAA,CAAA,EAA4B,EAAA,KAA5B,GAAA,IAAwD,CAAxD,EAAA;QACI,IAAI,KAAK,KAAK,EAAE,EAAE;YAChB,OAAO;SACR;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM,GAAG,OAAO,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC,CAAC;QAClE,IAAID,uBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAChE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;SACrD;KACF,CAAH;;;QAjJA,EAAA,IAAA,EAAEP,eAAU,EAAZ;QAwDA,EAAA,IAAA,EAAsC,oBAAoB,EAA1D;QAxCA,EAAA,IAAA,EAAED,iBAAU,EAAZ;QAFA,EAAA,IAAA,EAAED,sBAAe,EAAjB;QA6CA,EAAA,IAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAeK,WAAM,EAArB,IAAA,EAAA,CAAsBG,oBAAa,EAAnC,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAAyD,MAAM,EAA/D,UAAA,EAAA,CAAA,EAAA,IAAA,EAAeH,WAAM,EAArB,IAAA,EAAA,CAAsBE,gBAAW,EAAjC,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAeZ,aAAQ,EAAvB,EAAA,EAAA,IAAA,EAA2BU,WAAM,EAAjC,IAAA,EAAA,CAAkCC,mBAAY,EAA9C,EAAA,CAAA,EAAA;;IAtEA,OAAA,iBAAA,CAAA;CAwDA,CAAuCb,qBAAc,CAArD,CAAA,CAAA;;AAqGA,IAAM,WAAW,GAAiC,IAAI,OAAO,EAAE,CAAC;;AAEhE,IAAMF,QAAM,GAAG;IACb,QAAQ;IACR,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW;IAC/D,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9D,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9D,QAAQ;IACR,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW;IAC/D,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9D,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;CAC/D,CAAC;;AAEF,IAAMD,UAAQ,GAAG,ibAShB,CAAC;;;;;IAM4CE,SAA9C,CAAA,wBAAA,EAAA,MAAA,CAAA,CAA+D;;;QAC7D,KAAF,CAAA,MAAA,GAAqBD,QAAM,CAAC;;;;QAF5B,EAAA,IAAA,EAACF,cAAS,EAAV,IAAA,EAAA,CAAW,EAAC,QAAQ,EAApBC,UAAoB,EAAE,MAAM,EAA5BC,QAA4B,EAAC,EAA7B,EAAA;;IAxLA,OAAA,wBAAA,CAAA;CAyLA,CAA8C,iBAAiB,CAA/D,CAAA,CAAA;;;;;;;;;ADtKA;;;AAAA,eAAA,kBAAA,YAAA;IACE,SAAF,eAAA,CAAqB,GAAW,EAAS,KAAa,EAAE,QAAe,EAAvE;QAAwD,IAAxD,QAAA,KAAA,KAAA,CAAA,EAAwD,EAAA,QAAxD,GAAA,IAAuE,CAAvE,EAAA;QAAqB,IAArB,CAAA,GAAwB,GAAH,GAAG,CAAQ;QAAS,IAAzC,CAAA,KAA8C,GAAL,KAAK,CAAQ;QAClD,IAAI,CAAC,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAEnE,IAAI,CAAC,KAAK,GAAG,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACzE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;KAC1C;IAzBH,OAAA,eAAA,CAAA;CA0BA,EAAA,CAAC,CAAA;;;;;AAED,SAAgB,OAAO,CAAC,MAAW,EAAnC;;IACE,IAAI,IAAI,GAAG,OAAO,MAAM,CAAC;IACzB,IAAI,IAAI,KAAK,QAAQ,EAAE;QACrB,OAAO,CAAC,MAAM,CAAC,WAAW,KAAK,KAAK,IAAI,OAAO;YAC3C,CAAC,MAAM,CAAC,WAAW,KAAK,GAAG,IAAI,KAAK,GAAG,QAAQ,CAAC;KACrD;IACD,OAAO,IAAI,CAAC;CACb;;;;;;;;AAMD,SAAgB,YAAY,CAAC,MAAW,EAAE,SAAe,EAAzD;IAA0C,IAA1C,SAAA,KAAA,KAAA,CAAA,EAA0C,EAAA,SAA1C,GAAA,GAAyD,CAAzD,EAAA;IACE,OAAO,MAAM,CAAC,MAAM,CAAC;SAChB,IAAI,EAAE;SACN,KAAK,CAAC,SAAS,CAAC;SAChB,GAAG,CAAC,UAAC,GAAW,EAAvB,EAA4B,OAAA,GAAG,CAAC,IAAI,EAAE,CAAtC,EAAsC,CAAC;SAChC,MAAM,CAAC,UAAA,GAAG,EAAjB,EAAqB,OAAA,GAAG,KAAK,EAAE,CAA/B,EAA+B,CAAC,CAAC;CAChC;;;;;;;AAGD,SAAgB,gBAAgB,CAAC,MAAsB,EAAE,QAA2B,EAApF;;IACE,IAAM,aAAa,GAAG,UAAC,EAAmB,EAA5C;QACI,IAAI,QAAQ,EAAE;YACZ,EAAE,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;SAC/B;QACD,OAAO,EAAE,CAAC;KACX,CAAC;IAEF,OAAO,MAAM;SACR,GAAG,CAAC,gBAAgB,CAAC;SACrB,MAAM,CAAC,UAAA,KAAK,EAAnB,EAAuB,OAAA,CAAC,CAAC,KAAK,CAA9B,EAA8B,CAAC;SACxB,GAAG,CAAC,aAAa,CAAC;SAClB,MAAM,CAAC,cAAc,oBAAE,EAAgB,EAAC,CAAC;CAC/C;;;;;;;AAGD,SAAgB,eAAe,CAAC,MAAmB,EAAE,QAA2B,EAAhF;;IACE,IAAI,IAAI,GAAa,EAAE,CAAC;IACxB,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE;QAC7B,mBAAC,MAAqB,GAAE,OAAO,CAAC,UAAA,KAAK,EAAzC,EAA6C,OAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAA7D,EAA6D,CAAC,CAAC;KAC5D;SAAM;QACL,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAC,GAAW,EAA5C;YACM,IAAI,CAAC,IAAI,CAAI,GAAG,GAAtB,GAAA,GAA0B,oBAAC,MAAoB,IAAE,GAAG,CAAG,CAAC,CAAC;SACpD,CAAC,CAAC;KACJ;IACD,OAAO,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;CACzC;;;;;;AAID,SAAgB,gBAAgB,CAAC,EAAU,EAA3C;IACS,IAAT,EAAA,GAAA,EAAA,CAAA,KAAA,CAAA,GAAA,CAAA,EAAS,GAAT,GAAA,EAAA,CAAA,CAAA,CAAY,EAAE,IAAd,GAAA,EAAA,CAAA,KAAA,CAAA,CAAA,CAAqB,CAAkB;IACrC,OAAO,IAAI,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;CACjD;;;;;;;AAGD,SAAgB,cAAc,CAAC,GAAe,EAAE,KAAsB,EAAtE;IACE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;QACf,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;KAC9B;IACD,OAAO,GAAG,CAAC;CACZ;;;;;;;IDzDmCC,SAApC,CAAA,cAAA,EAAA,MAAA,CAAA,CAAkD;IAKhD,SAAF,cAAA,CAAwB,UAAsB,EACtB,MAAkB,EAClB,OAAwB,EACxB,eAAgC,EAChC,QAAmB,EACnB,SAAuB,EACI,eAAwB,EAN3E;QAAE,IAAF,KAAA,GAOI,MAPJ,CAAA,IAAA,CAAA,IAAA,EAOU,UAAU,qBAAE,IAAI,IAAG,MAAM,EAAE,OAAO,CAAC,IAP7C,IAAA,CAgBG;QAhBqB,KAAxB,CAAA,UAAkC,GAAV,UAAU,CAAY;QACtB,KAAxB,CAAA,MAA8B,GAAN,MAAM,CAAY;QAClB,KAAxB,CAAA,OAA+B,GAAP,OAAO,CAAiB;QACxB,KAAxB,CAAA,eAAuC,GAAf,eAAe,CAAiB;QAChC,KAAxB,CAAA,QAAgC,GAAR,QAAQ,CAAW;QACnB,KAAxB,CAAA,SAAiC,GAAT,SAAS,CAAc;QACI,KAAnD,CAAA,eAAkE,GAAf,eAAe,CAAS;QATzE,KAAF,CAAA,aAAA,GAA4B,SAAS,CAAC;QACpC,KAAF,CAAA,cAAA,GAAyC,EAAE,CAAC;QAUxC,IAAI,CAAC,KAAI,CAAC,eAAe,EAAE;;;YAGzB,KAAI,CAAC,eAAe,GAAG,IAAIE,cAAO,CAAC,KAAI,CAAC,eAAe,EAAE,KAAI,CAAC,UAAU,EAAE,KAAI,CAAC,QAAQ,CAAC,CAAC;SAC1F;QACD,KAAI,CAAC,IAAI,EAAE,CAAC;;QACZ,IAAM,MAAM,GAAG,KAAI,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC9D,KAAI,CAAC,cAAc,GAAG,KAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;;KAClD;;;;;IAES,cAAZ,CAAA,SAAA,CAAA,eAA2B;;;;IAAzB,UAA0B,KAAU,EAAtC;;QACI,IAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,OAAO,GAAhCU,QAAA,CAAA,EAAA,EAAuC,IAAI,CAAC,cAAc,EAAK,MAAM,CAAC,CAAC;QACnE,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;KAClC,CAAH;;;;;;;;;;;;;;;IAQY,cAAZ,CAAA,SAAA,CAAA,aAAyB;;;;;;;;IAAvB,UAAwB,MAAmB,EAA7C;QAAE,IAAF,KAAA,GAAA,IAAA,CAeG;;QAbC,IAAM,SAAS,GAAqB,UAAC,GAAQ,EAAjD;YACM,OAAA,KAAI,CAAC,SAAS,CAAC,QAAQ,CAACD,oBAAe,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,CAA/D;SAA+D,CAAC;QAC5D,IAAI,MAAM,EAAE;YACV,QAAQ,OAAO,CAAC,MAAM,CAAC;gBACrB,KAAK,QAAQ,EAAG,OAAOf,kBAAgB,CAAC,YAAY,CAAC,MAAM,CAAC,EAC1D,SAAS,CAAC,CAAC;gBACb,KAAK,OAAQ,EAAG,OAAOA,kBAAgB,mBAAC,MAAwB,GAAE,SAAS,CAAC,CAAC;gBAC7E,KAAK,KAAQ,EAAG,OAAO,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAC1D,SAAgB,OAAO,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;aAC3D;SACF;QAED,OAAO,EAAE,CAAC;KACX,CAAH;;;;;;;;;IAOE,cAAF,CAAA,SAAA,CAAA,SAAW;;;;IAAT,YAAF;QACI,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;KAClC,CAAH;;;QAnFA,EAAA,IAAA,EAAEc,eAAU,EAAZ;QASA,EAAA,IAAA,EAAwBD,iBAAU,EAAlC;QAAA,EAAA,IAAA,EAAoCD,sBAAe,EAAnD;QARA,EAAA,IAAA,EAAED,oBAAe,EAAjB;QAEA,EAAA,IAAA,EAAED,cAAS,EAAX;QAKA,EAAA,IAAA,EAAQD,4BAAY,EAApB;QADA,EAAA,IAAA,EAAQH,cAAO,EAAf,UAAA,EAAA,CAAA,EAAA,IAAA,EA4BeC,aAAQ,EA5BvB,EAAA,EAAA,IAAA,EA4B2BC,SAAI,EA5B/B,CAAA,EAAA;;IAjBA,OAAA,cAAA,CAAA;CAkCA,CAAoCH,qBAAc,CAAlD,CAAA,CAAA;;AA8DA,IAAMF,QAAM,GAAG;IACb,SAAS;IACT,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY;IACpE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe;IAClE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe;CACnE,CAAC;;AAEF,IAAMD,UAAQ,GAAG,wOAKhB,CAAC;;;;;;IAOyCE,SAA3C,CAAA,qBAAA,EAAA,MAAA,CAAA,CAAyD;;;QACvD,KAAF,CAAA,MAAA,GAAqBD,QAAM,CAAC;;;;QAF5B,EAAA,IAAA,EAACF,cAAS,EAAV,IAAA,EAAA,CAAW,EAAC,QAAQ,EAApBC,UAAoB,EAAE,MAAM,EAA5BC,QAA4B,EAAC,EAA7B,EAAA;;IAlHA,OAAA,qBAAA,CAAA;CAmHA,CAA2C,cAAc,CAAzD,CAAA,CAAA;;;;;;;AAKA,SAASH,kBAAgB,CAAC,MAAsB,EAAE,QAA2B,EAA7E;;IACE,IAAM,aAAa,GAAG,UAAC,EAAmB,EAA5C;QACI,IAAI,QAAQ,EAAE;YACZ,EAAE,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;SAC/B;QACD,OAAO,EAAE,CAAC;KACX,CAAC;IAEF,OAAO,MAAM;SACV,GAAG,CAAC,gBAAgB,CAAC;SACrB,MAAM,CAAC,UAAA,KAAK,EAAjB,EAAqB,OAAA,CAAC,CAAC,KAAK,CAA5B,EAA4B,CAAC;SACxB,GAAG,CAAC,aAAa,CAAC;SAClB,MAAM,CAAC,cAAc,oBAAE,EAAgB,EAAC,CAAC;CAC7C;;;;;;;ADrHD,IAAM,cAAc,GAAG;IACrB,wBAAwB;IACxB,qBAAqB;IACrB,qBAAqB;IACrB,sBAAsB;CACvB,CAAC;;;;;;;;;;QAQF,EAAA,IAAA,EAACD,aAAQ,EAAT,IAAA,EAAA,CAAU;oBACR,OAAO,EAAE,CAACD,iBAAU,CAAC;oBACrB,YAAY,EAAM,cAAc,CAAlC,KAAA,EAAmC;oBACjC,OAAO,EAAM,cAAc,CAA7B,KAAA,EAA8B;iBAC7B,EAAD,EAAA;;IAjCA,OAAA,cAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"flex-layout-extended.umd.js","sources":["../../src/lib/extended/module.ts","../../src/lib/extended/style/style.ts","../../src/lib/extended/style/style-transforms.ts","../../src/lib/extended/show-hide/show-hide.ts","../../src/lib/extended/class/class.ts","../../src/lib/extended/img-src/img-src.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 {NgModule} from '@angular/core';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultImgSrcDirective} from './img-src/img-src';\nimport {DefaultClassDirective} from './class/class';\nimport {DefaultShowHideDirective} from './show-hide/show-hide';\nimport {DefaultStyleDirective} from './style/style';\n\n\nconst ALL_DIRECTIVES = [\n DefaultShowHideDirective,\n DefaultClassDirective,\n DefaultStyleDirective,\n DefaultImgSrcDirective\n];\n\n/**\n * *****************************************************************\n * Define module for the Extended API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class ExtendedModule {\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 {\n Directive,\n DoCheck,\n ElementRef,\n Inject,\n Optional,\n PLATFORM_ID,\n SecurityContext,\n Self,\n} from '@angular/core';\nimport {isPlatformServer, NgStyle, ɵNgStyleImpl, ɵNgStyleR2Impl} from '@angular/common';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n SERVER_TOKEN,\n} from '@angular/flex-layout/core';\n\nimport {\n NgStyleRawList,\n NgStyleType,\n NgStyleSanitizer,\n buildRawList,\n getType,\n buildMapFromSet,\n NgStyleMap,\n NgStyleKeyValue,\n stringToKeyValue,\n keyValuesToMap,\n} from './style-transforms';\n\nexport class StyleDirective extends BaseDirective2 implements DoCheck {\n\n protected DIRECTIVE_KEY = 'ngStyle';\n protected fallbackStyles: NgStyleMap;\n protected isServer: boolean;\n\n constructor(protected elementRef: ElementRef,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n protected delegate: ɵNgStyleImpl,\n protected sanitizer: DomSanitizer,\n @Optional() @Self() private readonly ngStyleInstance: NgStyle,\n @Optional() @Inject(SERVER_TOKEN) serverLoaded: boolean,\n @Inject(PLATFORM_ID) platformId: Object) {\n super(elementRef, null!, styler, marshal);\n if (!this.ngStyleInstance) {\n // Create an instance NgClass Directive instance only if `ngClass=\"\"` has NOT been\n // defined on the same host element; since the responsive variations may be defined...\n this.ngStyleInstance = new NgStyle(this.delegate);\n }\n this.init();\n const styles = this.nativeElement.getAttribute('style') || '';\n this.fallbackStyles = this.buildStyleMap(styles);\n this.isServer = serverLoaded && isPlatformServer(platformId);\n }\n\n /** Add generated styles */\n protected updateWithValue(value: any) {\n const styles = this.buildStyleMap(value);\n this.ngStyleInstance.ngStyle = {...this.fallbackStyles, ...styles};\n if (this.isServer) {\n this.applyStyleToElement(styles);\n }\n this.ngStyleInstance.ngDoCheck();\n }\n\n /** Remove generated styles */\n protected clearStyles() {\n this.ngStyleInstance.ngStyle = this.fallbackStyles;\n this.ngStyleInstance.ngDoCheck();\n }\n\n /**\n * Convert raw strings to ngStyleMap; which is required by ngStyle\n * NOTE: Raw string key-value pairs MUST be delimited by `;`\n * Comma-delimiters are not supported due to complexities of\n * possible style values such as `rgba(x,x,x,x)` and others\n */\n protected buildStyleMap(styles: NgStyleType): NgStyleMap {\n // Always safe-guard (aka sanitize) style property values\n const sanitizer: NgStyleSanitizer = (val: any) =>\n this.sanitizer.sanitize(SecurityContext.STYLE, val) || '';\n if (styles) {\n switch (getType(styles)) {\n case 'string': return buildMapFromList(buildRawList(styles),\n sanitizer);\n case 'array' : return buildMapFromList(styles as NgStyleRawList, sanitizer);\n case 'set' : return buildMapFromSet(styles, sanitizer);\n default : return buildMapFromSet(styles, sanitizer);\n }\n }\n\n return {};\n }\n\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n\n /** For ChangeDetectionStrategy.onPush and ngOnChanges() updates */\n ngDoCheck() {\n this.ngStyleInstance.ngDoCheck();\n }\n}\n\nconst inputs = [\n 'ngStyle',\n 'ngStyle.xs', 'ngStyle.sm', 'ngStyle.md', 'ngStyle.lg', 'ngStyle.xl',\n 'ngStyle.lt-sm', 'ngStyle.lt-md', 'ngStyle.lt-lg', 'ngStyle.lt-xl',\n 'ngStyle.gt-xs', 'ngStyle.gt-sm', 'ngStyle.gt-md', 'ngStyle.gt-lg'\n];\n\nconst selector = `\n [ngStyle],\n [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl],\n [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl],\n [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]\n`;\n\n// tslint:disable-next-line:variable-name\nexport const LayoutNgStyleImplProvider = {\n provide: ɵNgStyleImpl,\n useClass: ɵNgStyleR2Impl\n};\n\n/**\n * Directive to add responsive support for ngStyle.\n *\n */\n@Directive({selector, inputs, providers: [LayoutNgStyleImplProvider]})\nexport class DefaultStyleDirective extends StyleDirective implements DoCheck {\n protected inputs = inputs;\n}\n\n/** Build a styles map from a list of styles, while sanitizing bad values first */\nfunction buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap {\n const sanitizeValue = (it: NgStyleKeyValue) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n };\n\n return styles\n .map(stringToKeyValue)\n .filter(entry => !!entry)\n .map(sanitizeValue)\n .reduce(keyValuesToMap, {} as NgStyleMap);\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\nexport type NgStyleRawList = string[];\nexport type NgStyleMap = {[klass: string]: string};\n// NgStyle selectors accept NgStyleType values\nexport type NgStyleType = string | Set | NgStyleRawList | NgStyleMap;\n\n/**\n * Callback function for SecurityContext.STYLE sanitization\n */\nexport type NgStyleSanitizer = (val: any) => string;\n\n/** NgStyle allowed inputs */\nexport class NgStyleKeyValue {\n constructor(public key: string, public value: string, noQuotes = true) {\n this.key = noQuotes ? key.replace(/['\"]/g, '').trim() : key.trim();\n\n this.value = noQuotes ? value.replace(/['\"]/g, '').trim() : value.trim();\n this.value = this.value.replace(/;/, '');\n }\n}\n\nexport function getType(target: any): string {\n let what = typeof target;\n if (what === 'object') {\n return (target.constructor === Array) ? 'array' :\n (target.constructor === Set) ? 'set' : 'object';\n }\n return what;\n}\n\n/**\n * Split string of key:value pairs into Array of k-v pairs\n * e.g. 'key:value; key:value; key:value;' -> ['key:value',...]\n */\nexport function buildRawList(source: any, delimiter = ';'): NgStyleRawList {\n return String(source)\n .trim()\n .split(delimiter)\n .map((val: string) => val.trim())\n .filter(val => val !== '');\n}\n\n/** Convert array of key:value strings to a iterable map object */\nexport function buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap {\n const sanitizeValue = (it: NgStyleKeyValue) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n };\n\n return styles\n .map(stringToKeyValue)\n .filter(entry => !!entry)\n .map(sanitizeValue)\n .reduce(keyValuesToMap, {} as NgStyleMap);\n}\n\n/** Convert Set or raw Object to an iterable NgStyleMap */\nexport function buildMapFromSet(source: NgStyleType, sanitize?: NgStyleSanitizer): NgStyleMap {\n let list: string[] = [];\n if (getType(source) === 'set') {\n (source as Set).forEach(entry => list.push(entry));\n } else {\n Object.keys(source).forEach((key: string) => {\n list.push(`${key}:${(source as NgStyleMap)[key]}`);\n });\n }\n return buildMapFromList(list, sanitize);\n}\n\n\n/** Convert 'key:value' -> [key, value] */\nexport function stringToKeyValue(it: string): NgStyleKeyValue {\n const [key, ...vals] = it.split(':');\n return new NgStyleKeyValue(key, vals.join(':'));\n}\n\n/** Convert [ [key,value] ] -> { key : value } */\nexport function keyValuesToMap(map: NgStyleMap, entry: NgStyleKeyValue): NgStyleMap {\n if (!!entry.key) {\n map[entry.key] = entry.value;\n }\n return map;\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 {\n Directive,\n ElementRef,\n OnChanges,\n SimpleChanges,\n Optional,\n Inject,\n PLATFORM_ID,\n Injectable,\n AfterViewInit,\n} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n BaseDirective2,\n LAYOUT_CONFIG,\n LayoutConfigOptions,\n MediaMarshaller,\n SERVER_TOKEN,\n StyleUtils,\n StyleBuilder,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {takeUntil} from 'rxjs/operators';\n\nexport interface ShowHideParent {\n display: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class ShowHideStyleBuilder extends StyleBuilder {\n buildStyles(show: string, parent: ShowHideParent) {\n const shouldShow = show === 'true';\n return {'display': shouldShow ? parent.display : 'none'};\n }\n}\n\nexport class ShowHideDirective extends BaseDirective2 implements AfterViewInit, OnChanges {\n protected DIRECTIVE_KEY = 'show-hide';\n\n /** Original dom Elements CSS display style */\n protected display: string = '';\n protected hasLayout = false;\n protected hasFlexChild = false;\n\n constructor(protected elementRef: ElementRef,\n protected styleBuilder: ShowHideStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n @Inject(PLATFORM_ID) protected platformId: Object,\n @Optional() @Inject(SERVER_TOKEN) protected serverModuleLoaded: boolean) {\n super(elementRef, styleBuilder, styler, marshal);\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n ngAfterViewInit() {\n this.trackExtraTriggers();\n\n const children = Array.from(this.nativeElement.children);\n for (let i = 0; i < children.length; i++) {\n if (this.marshal.hasValue(children[i] as HTMLElement, 'flex')) {\n this.hasFlexChild = true;\n break;\n }\n }\n\n if (DISPLAY_MAP.has(this.nativeElement)) {\n this.display = DISPLAY_MAP.get(this.nativeElement)!;\n } else {\n this.display = this.getDisplayStyle();\n DISPLAY_MAP.set(this.nativeElement, this.display);\n }\n\n this.init();\n // set the default to show unless explicitly overridden\n const defaultValue = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY, '');\n if (defaultValue === undefined || defaultValue === '') {\n this.setValue(true, '');\n } else {\n this.triggerUpdate();\n }\n }\n\n /**\n * On changes to any @Input properties...\n * Default to use the non-responsive Input value ('fxShow')\n * Then conditionally override with the mq-activated Input's current value\n */\n ngOnChanges(changes: SimpleChanges) {\n Object.keys(changes).forEach(key => {\n if (this.inputs.indexOf(key) !== -1) {\n const inputKey = key.split('.');\n const bp = inputKey.slice(1).join('.');\n const inputValue = changes[key].currentValue;\n let shouldShow = inputValue !== '' ?\n inputValue !== 0 ? coerceBooleanProperty(inputValue) : false\n : true;\n if (inputKey[0] === 'fxHide') {\n shouldShow = !shouldShow;\n }\n this.setValue(shouldShow, bp);\n }\n });\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Watch for these extra triggers to update fxShow, fxHide stylings\n */\n protected trackExtraTriggers() {\n this.hasLayout = this.marshal.hasValue(this.nativeElement, 'layout');\n\n ['layout', 'layout-align'].forEach(key => {\n this.marshal\n .trackValue(this.nativeElement, key)\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerUpdate.bind(this));\n });\n }\n\n /**\n * Override accessor to the current HTMLElement's `display` style\n * Note: Show/Hide will not change the display to 'flex' but will set it to 'block'\n * unless it was already explicitly specified inline or in a CSS stylesheet.\n */\n protected getDisplayStyle(): string {\n return (this.hasLayout || (this.hasFlexChild && this.layoutConfig.addFlexToParent)) ?\n 'flex' : this.styler.lookupStyle(this.nativeElement, 'display', true);\n }\n\n /** Validate the visibility value and then update the host's inline display style */\n protected updateWithValue(value: boolean | string = true) {\n if (value === '') {\n return;\n }\n this.addStyles(value ? 'true' : 'false', {display: this.display});\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.nativeElement.style.setProperty('display', '');\n }\n this.marshal.triggerUpdate(this.parentElement!, 'layout-gap');\n }\n}\n\nconst DISPLAY_MAP: WeakMap = new WeakMap();\n\nconst inputs = [\n 'fxShow', 'fxShow.print',\n 'fxShow.xs', 'fxShow.sm', 'fxShow.md', 'fxShow.lg', 'fxShow.xl',\n 'fxShow.lt-sm', 'fxShow.lt-md', 'fxShow.lt-lg', 'fxShow.lt-xl',\n 'fxShow.gt-xs', 'fxShow.gt-sm', 'fxShow.gt-md', 'fxShow.gt-lg',\n 'fxHide', 'fxHide.print',\n 'fxHide.xs', 'fxHide.sm', 'fxHide.md', 'fxHide.lg', 'fxHide.xl',\n 'fxHide.lt-sm', 'fxHide.lt-md', 'fxHide.lt-lg', 'fxHide.lt-xl',\n 'fxHide.gt-xs', 'fxHide.gt-sm', 'fxHide.gt-md', 'fxHide.gt-lg'\n];\n\nconst selector = `\n [fxShow], [fxShow.print],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide], [fxHide.print],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n`;\n\n/**\n * 'show' Layout API directive\n */\n@Directive({selector, inputs})\nexport class DefaultShowHideDirective extends ShowHideDirective {\n protected inputs = inputs;\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 {Directive, DoCheck, ElementRef, Input, Optional, Self} from '@angular/core';\nimport {NgClass, ɵNgClassImpl, ɵNgClassR2Impl} from '@angular/common';\nimport {BaseDirective2, StyleUtils, MediaMarshaller} from '@angular/flex-layout/core';\n\nexport class ClassDirective extends BaseDirective2 implements DoCheck {\n\n protected DIRECTIVE_KEY = 'ngClass';\n\n /**\n * Capture class assignments so we cache the default classes\n * which are merged with activated styles and used as fallbacks.\n */\n @Input('class')\n set klass(val: string) {\n this.ngClassInstance.klass = val;\n this.setValue(val, '');\n }\n\n constructor(protected elementRef: ElementRef,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n protected delegate: ɵNgClassImpl,\n @Optional() @Self() protected readonly ngClassInstance: NgClass) {\n super(elementRef, null!, styler, marshal);\n if (!this.ngClassInstance) {\n // Create an instance NgClass Directive instance only if `ngClass=\"\"` has NOT been defined on\n // the same host element; since the responsive variations may be defined...\n this.ngClassInstance = new NgClass(this.delegate);\n }\n this.init();\n this.setValue('', '');\n }\n\n protected updateWithValue(value: any) {\n this.ngClassInstance.ngClass = value;\n this.ngClassInstance.ngDoCheck();\n }\n\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n\n /**\n * For ChangeDetectionStrategy.onPush and ngOnChanges() updates\n */\n ngDoCheck() {\n this.ngClassInstance.ngDoCheck();\n }\n}\n\nconst inputs = [\n 'ngClass', 'ngClass.xs', 'ngClass.sm', 'ngClass.md', 'ngClass.lg', 'ngClass.xl',\n 'ngClass.lt-sm', 'ngClass.lt-md', 'ngClass.lt-lg', 'ngClass.lt-xl',\n 'ngClass.gt-xs', 'ngClass.gt-sm', 'ngClass.gt-md', 'ngClass.gt-lg'\n];\n\nconst selector = `\n [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl],\n [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl],\n [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]\n`;\n\n// tslint:disable-next-line:variable-name\nexport const LayoutNgClassImplProvider = {\n provide: ɵNgClassImpl,\n useClass: ɵNgClassR2Impl\n};\n\n/**\n * Directive to add responsive support for ngClass.\n * This maintains the core functionality of 'ngClass' and adds responsive API\n * Note: this class is a no-op when rendered on the server\n */\n@Directive({selector, inputs, providers: [LayoutNgClassImplProvider]})\nexport class DefaultClassDirective extends ClassDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Inject, PLATFORM_ID, Injectable, Input} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n MediaMarshaller,\n BaseDirective2,\n SERVER_TOKEN,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class ImgSrcStyleBuilder extends StyleBuilder {\n buildStyles(url: string) {\n return {'content': url ? `url(${url})` : ''};\n }\n}\n\nexport class ImgSrcDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'img-src';\n protected defaultSrc = '';\n\n @Input('src')\n set src(val: string) {\n this.defaultSrc = val;\n this.setValue(this.defaultSrc, '');\n }\n\n constructor(protected elementRef: ElementRef,\n protected styleBuilder: ImgSrcStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n @Inject(PLATFORM_ID) protected platformId: Object,\n @Inject(SERVER_TOKEN) protected serverModuleLoaded: boolean) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n this.setValue(this.nativeElement.getAttribute('src') || '', '');\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.nativeElement.setAttribute('src', '');\n }\n }\n\n /**\n * Use the [responsively] activated input value to update\n * the host img src attribute or assign a default `img.src=''`\n * if the src has not been defined.\n *\n * Do nothing to standard `` usages, only when responsive\n * keys are present do we actually call `setAttribute()`\n */\n protected updateWithValue(value?: string) {\n const url = value || this.defaultSrc;\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.addStyles(url);\n } else {\n this.nativeElement.setAttribute('src', url);\n }\n }\n\n protected styleCache = imgSrcCache;\n}\n\nconst imgSrcCache: Map = new Map();\n\nconst inputs = [\n 'src.xs', 'src.sm', 'src.md', 'src.lg', 'src.xl',\n 'src.lt-sm', 'src.lt-md', 'src.lt-lg', 'src.lt-xl',\n 'src.gt-xs', 'src.gt-sm', 'src.gt-md', 'src.gt-lg'\n];\n\nconst selector = `\n img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl],\n img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl],\n img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]\n`;\n\n/**\n * This directive provides a responsive API for the HTML 'src' attribute\n * and will update the img.src property upon each responsive activation.\n *\n * e.g.\n * \n *\n * @see https://css-tricks.com/responsive-images-youre-just-changing-resolutions-use-src/\n */\n@Directive({selector, inputs})\nexport class DefaultImgSrcDirective extends ImgSrcDirective {\n protected inputs = inputs;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\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 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) : new P(function (resolve) { resolve(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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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 __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\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)) result[k] = mod[k];\r\n result.default = 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"],"names":["CoreModule","NgModule","buildMapFromList","Directive","selector","inputs","tslib_1.__extends","ɵNgStyleR2Impl","ɵNgStyleImpl","BaseDirective2","Inject","PLATFORM_ID","Optional","SERVER_TOKEN","NgStyle","Self","DomSanitizer","MediaMarshaller","StyleUtils","ElementRef","SecurityContext","tslib_1.__assign","isPlatformServer","LAYOUT_CONFIG","takeUntil","coerceBooleanProperty","StyleBuilder","Injectable","ɵNgClassR2Impl","ɵNgClassImpl","Input","NgClass"],"mappings":"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"} \ No newline at end of file diff --git a/bundles/flex-layout-extended.umd.min.js b/bundles/flex-layout-extended.umd.min.js index 590fadcd9..014071301 100644 --- a/bundles/flex-layout-extended.umd.min.js +++ b/bundles/flex-layout-extended.umd.min.js @@ -5,5 +5,5 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/common"),require("@angular/flex-layout/core"),require("@angular/cdk/coercion"),require("rxjs/operators"),require("@angular/platform-browser")):"function"==typeof define&&define.amd?define("@angular/flex-layout/extended",["exports","@angular/core","@angular/common","@angular/flex-layout/core","@angular/cdk/coercion","rxjs/operators","@angular/platform-browser"],e):e((t.ng=t.ng||{},t.ng["flex-layout"]=t.ng["flex-layout"]||{},t.ng["flex-layout"].extended={}),t.ng.core,t.ng.common,t.ng.flexLayout.core,t.ng.cdk.coercion,t.rxjs.operators,t.ng.platformBrowser)}(this,function(t,e,n,r,l,s,i){"use strict";function a(t,e){function n(){this.constructor=t}h(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}function o(t){return""!==t&&("false"===t||0===t||!t)}function u(t){var e=typeof t;return"object"===e?t.constructor===Array?"array":t.constructor===Set?"set":"object":e}function c(t,e){return void 0===e&&(e=";"),String(t).trim().split(e).map(function(t){return t.trim()}).filter(function(t){return""!==t})}function f(t,e){var n=function(t){return e&&(t.value=e(t.value)),t};return t.map(y).filter(function(t){return!!t}).map(n).reduce(d,{})}function g(t,e){var n=[];return"set"===u(t)?t.forEach(function(t){return n.push(t)}):Object.keys(t).forEach(function(e){n.push(e+":"+t[e])}),f(n,e)}function y(t){var e=t.split(":"),n=e[0],r=e.slice(1);return new O(n,r.join(":"))}function d(t,e){return e.key&&(t[e.key]=e.value),t}function p(t,e){var n=function(t){return e&&(t.value=e(t.value)),t};return t.map(y).filter(function(t){return!!t}).map(n).reduce(d,{})}var h=function(t,e){return(h=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},m=function(){return m=Object.assign||function(t){for(var e,n=1,r=arguments.length;n= 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 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) : new P(function (resolve) { resolve(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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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 __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\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)) result[k] = mod[k];\r\n result.default = 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","/**\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 {\n Directive,\n ElementRef,\n OnChanges,\n SimpleChanges,\n Optional,\n Inject,\n PLATFORM_ID,\n Injectable,\n AfterViewInit,\n} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n BaseDirective2,\n LAYOUT_CONFIG,\n LayoutConfigOptions,\n MediaMarshaller,\n SERVER_TOKEN,\n StyleUtils,\n StyleBuilder,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {takeUntil} from 'rxjs/operators';\n\n/**\n * For fxHide selectors, we invert the 'value'\n * and assign to the equivalent fxShow selector cache\n * - When 'hide' === '' === true, do NOT show the element\n * - When 'hide' === false or 0... we WILL show the element\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport function negativeOf(hide: any) {\n return (hide === '') ? false :\n ((hide === 'false') || (hide === 0)) ? true : !hide;\n}\n\nexport interface ShowHideParent {\n display: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class ShowHideStyleBuilder extends StyleBuilder {\n buildStyles(show: string, parent: ShowHideParent) {\n const shouldShow = show === 'true';\n return {'display': shouldShow ? parent.display : 'none'};\n }\n}\n\nexport class ShowHideDirective extends BaseDirective2 implements AfterViewInit, OnChanges {\n protected DIRECTIVE_KEY = 'show-hide';\n\n /** Original dom Elements CSS display style */\n protected display: string = '';\n protected hasLayout = false;\n protected hasFlexChild = false;\n\n constructor(protected elementRef: ElementRef,\n protected styleBuilder: ShowHideStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n @Inject(PLATFORM_ID) protected platformId: Object,\n @Optional() @Inject(SERVER_TOKEN) protected serverModuleLoaded: boolean) {\n super(elementRef, styleBuilder, styler, marshal);\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n ngAfterViewInit() {\n this.hasLayout = this.marshal.hasValue(this.nativeElement, 'layout');\n this.marshal.trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.updateWithValue.bind(this));\n\n const children = Array.from(this.nativeElement.children);\n for (let i = 0; i < children.length; i++) {\n if (this.marshal.hasValue(children[i] as HTMLElement, 'flex')) {\n this.hasFlexChild = true;\n break;\n }\n }\n\n if (DISPLAY_MAP.has(this.nativeElement)) {\n this.display = DISPLAY_MAP.get(this.nativeElement)!;\n } else {\n this.display = this.getDisplayStyle();\n DISPLAY_MAP.set(this.nativeElement, this.display);\n }\n\n this.init();\n // set the default to show unless explicitly overridden\n const defaultValue = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY, '');\n if (defaultValue === undefined || defaultValue === '') {\n this.setValue(true, '');\n } else {\n this.triggerUpdate();\n }\n }\n\n /**\n * On changes to any @Input properties...\n * Default to use the non-responsive Input value ('fxShow')\n * Then conditionally override with the mq-activated Input's current value\n */\n ngOnChanges(changes: SimpleChanges) {\n Object.keys(changes).forEach(key => {\n if (this.inputs.indexOf(key) !== -1) {\n const inputKey = key.split('.');\n const bp = inputKey.slice(1).join('.');\n const inputValue = changes[key].currentValue;\n let shouldShow = inputValue !== '' ?\n inputValue !== 0 ? coerceBooleanProperty(inputValue) : false\n : true;\n if (inputKey[0] === 'fxHide') {\n shouldShow = !shouldShow;\n }\n this.setValue(shouldShow, bp);\n }\n });\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Override accessor to the current HTMLElement's `display` style\n * Note: Show/Hide will not change the display to 'flex' but will set it to 'block'\n * unless it was already explicitly specified inline or in a CSS stylesheet.\n */\n protected getDisplayStyle(): string {\n return (this.hasLayout || (this.hasFlexChild && this.layoutConfig.addFlexToParent)) ?\n 'flex' : this.styler.lookupStyle(this.nativeElement, 'display', true);\n }\n\n /** Validate the visibility value and then update the host's inline display style */\n protected updateWithValue(value: boolean|string = true) {\n if (value === '') {\n return;\n }\n this.addStyles(value ? 'true' : 'false', {display: this.display});\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.nativeElement.style.setProperty('display', '');\n }\n }\n}\n\nconst DISPLAY_MAP: WeakMap = new WeakMap();\n\nconst inputs = [\n 'fxShow',\n 'fxShow.xs', 'fxShow.sm', 'fxShow.md', 'fxShow.lg', 'fxShow.xl',\n 'fxShow.lt-sm', 'fxShow.lt-md', 'fxShow.lt-lg', 'fxShow.lt-xl',\n 'fxShow.gt-xs', 'fxShow.gt-sm', 'fxShow.gt-md', 'fxShow.gt-lg',\n 'fxHide',\n 'fxHide.xs', 'fxHide.sm', 'fxHide.md', 'fxHide.lg', 'fxHide.xl',\n 'fxHide.lt-sm', 'fxHide.lt-md', 'fxHide.lt-lg', 'fxHide.lt-xl',\n 'fxHide.gt-xs', 'fxHide.gt-sm', 'fxHide.gt-md', 'fxHide.gt-lg'\n];\n\nconst selector = `\n [fxShow],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n`;\n\n/**\n * 'show' Layout API directive\n */\n@Directive({selector, inputs})\nexport class DefaultShowHideDirective extends ShowHideDirective {\n protected inputs = inputs;\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\nexport type NgStyleRawList = string[];\nexport type NgStyleMap = {[klass: string]: string};\n// NgStyle selectors accept NgStyleType values\nexport type NgStyleType = string | Set | NgStyleRawList | NgStyleMap;\n\n/**\n * Callback function for SecurityContext.STYLE sanitization\n */\nexport type NgStyleSanitizer = (val: any) => string;\n\n/** NgStyle allowed inputs */\nexport class NgStyleKeyValue {\n constructor(public key: string, public value: string, noQuotes = true) {\n this.key = noQuotes ? key.replace(/['\"]/g, '').trim() : key.trim();\n\n this.value = noQuotes ? value.replace(/['\"]/g, '').trim() : value.trim();\n this.value = this.value.replace(/;/, '');\n }\n}\n\nexport function getType(target: any): string {\n let what = typeof target;\n if (what === 'object') {\n return (target.constructor === Array) ? 'array' :\n (target.constructor === Set) ? 'set' : 'object';\n }\n return what;\n}\n\n/**\n * Split string of key:value pairs into Array of k-v pairs\n * e.g. 'key:value; key:value; key:value;' -> ['key:value',...]\n */\nexport function buildRawList(source: any, delimiter = ';'): NgStyleRawList {\n return String(source)\n .trim()\n .split(delimiter)\n .map((val: string) => val.trim())\n .filter(val => val !== '');\n}\n\n/** Convert array of key:value strings to a iterable map object */\nexport function buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap {\n const sanitizeValue = (it: NgStyleKeyValue) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n };\n\n return styles\n .map(stringToKeyValue)\n .filter(entry => !!entry)\n .map(sanitizeValue)\n .reduce(keyValuesToMap, {} as NgStyleMap);\n}\n\n/** Convert Set or raw Object to an iterable NgStyleMap */\nexport function buildMapFromSet(source: NgStyleType, sanitize?: NgStyleSanitizer): NgStyleMap {\n let list: string[] = [];\n if (getType(source) === 'set') {\n (source as Set).forEach(entry => list.push(entry));\n } else {\n Object.keys(source).forEach((key: string) => {\n list.push(`${key}:${(source as NgStyleMap)[key]}`);\n });\n }\n return buildMapFromList(list, sanitize);\n}\n\n\n/** Convert 'key:value' -> [key, value] */\nexport function stringToKeyValue(it: string): NgStyleKeyValue {\n const [key, ...vals] = it.split(':');\n return new NgStyleKeyValue(key, vals.join(':'));\n}\n\n/** Convert [ [key,value] ] -> { key : value } */\nexport function keyValuesToMap(map: NgStyleMap, entry: NgStyleKeyValue): NgStyleMap {\n if (!!entry.key) {\n map[entry.key] = entry.value;\n }\n return map;\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 {\n Directive,\n DoCheck,\n ElementRef,\n KeyValueDiffers,\n Optional,\n Renderer2,\n SecurityContext,\n Self,\n} from '@angular/core';\nimport {NgStyle} from '@angular/common';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {BaseDirective2, StyleUtils, MediaMarshaller} from '@angular/flex-layout/core';\n\nimport {\n NgStyleRawList,\n NgStyleType,\n NgStyleSanitizer,\n buildRawList,\n getType,\n buildMapFromSet,\n NgStyleMap,\n NgStyleKeyValue,\n stringToKeyValue,\n keyValuesToMap,\n} from './style-transforms';\n\nexport class StyleDirective extends BaseDirective2 implements DoCheck {\n\n protected DIRECTIVE_KEY = 'ngStyle';\n protected fallbackStyles: NgStyleMap = {};\n\n constructor(protected elementRef: ElementRef,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n protected keyValueDiffers: KeyValueDiffers,\n protected renderer: Renderer2,\n protected sanitizer: DomSanitizer,\n @Optional() @Self() private readonly ngStyleInstance: NgStyle) {\n super(elementRef, null!, styler, marshal);\n if (!this.ngStyleInstance) {\n // Create an instance NgClass Directive instance only if `ngClass=\"\"` has NOT been\n // defined on the same host element; since the responsive variations may be defined...\n this.ngStyleInstance = new NgStyle(this.keyValueDiffers, this.elementRef, this.renderer);\n }\n this.init();\n const styles = this.nativeElement.getAttribute('style') || '';\n this.fallbackStyles = this.buildStyleMap(styles);\n }\n\n protected updateWithValue(value: any) {\n const styles = this.buildStyleMap(value);\n this.ngStyleInstance.ngStyle = {...this.fallbackStyles, ...styles};\n this.ngStyleInstance.ngDoCheck();\n }\n\n /**\n * Convert raw strings to ngStyleMap; which is required by ngStyle\n * NOTE: Raw string key-value pairs MUST be delimited by `;`\n * Comma-delimiters are not supported due to complexities of\n * possible style values such as `rgba(x,x,x,x)` and others\n */\n protected buildStyleMap(styles: NgStyleType): NgStyleMap {\n // Always safe-guard (aka sanitize) style property values\n const sanitizer: NgStyleSanitizer = (val: any) =>\n this.sanitizer.sanitize(SecurityContext.STYLE, val) || '';\n if (styles) {\n switch (getType(styles)) {\n case 'string': return buildMapFromList(buildRawList(styles),\n sanitizer);\n case 'array' : return buildMapFromList(styles as NgStyleRawList, sanitizer);\n case 'set' : return buildMapFromSet(styles, sanitizer);\n default : return buildMapFromSet(styles, sanitizer);\n }\n }\n\n return {};\n }\n\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n\n /** For ChangeDetectionStrategy.onPush and ngOnChanges() updates */\n ngDoCheck() {\n this.ngStyleInstance.ngDoCheck();\n }\n}\n\nconst inputs = [\n 'ngStyle',\n 'ngStyle.xs', 'ngStyle.sm', 'ngStyle.md', 'ngStyle.lg', 'ngStyle.xl',\n 'ngStyle.lt-sm', 'ngStyle.lt-md', 'ngStyle.lt-lg', 'ngStyle.lt-xl',\n 'ngStyle.gt-xs', 'ngStyle.gt-sm', 'ngStyle.gt-md', 'ngStyle.gt-lg'\n];\n\nconst selector = `\n [ngStyle],\n [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl],\n [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl],\n [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]\n`;\n\n/**\n * Directive to add responsive support for ngStyle.\n *\n */\n@Directive({selector, inputs})\nexport class DefaultStyleDirective extends StyleDirective implements DoCheck {\n protected inputs = inputs;\n}\n\n/** Build a styles map from a list of styles, while sanitizing bad values first */\nfunction buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap {\n const sanitizeValue = (it: NgStyleKeyValue) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n };\n\n return styles\n .map(stringToKeyValue)\n .filter(entry => !!entry)\n .map(sanitizeValue)\n .reduce(keyValuesToMap, {} as NgStyleMap);\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 {Directive, ElementRef, Inject, PLATFORM_ID, Injectable, Input} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n MediaMarshaller,\n BaseDirective2,\n SERVER_TOKEN,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class ImgSrcStyleBuilder extends StyleBuilder {\n buildStyles(url: string) {\n return {'content': url ? `url(${url})` : ''};\n }\n}\n\nexport class ImgSrcDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'img-src';\n protected defaultSrc = '';\n\n @Input('src')\n set src(val: string) {\n this.defaultSrc = val;\n this.setValue('', this.defaultSrc);\n }\n\n constructor(protected elementRef: ElementRef,\n protected styleBuilder: ImgSrcStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n @Inject(PLATFORM_ID) protected platformId: Object,\n @Inject(SERVER_TOKEN) protected serverModuleLoaded: boolean) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n this.setValue('', this.nativeElement.getAttribute('src') || '');\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.nativeElement.setAttribute('src', '');\n }\n }\n\n /**\n * Use the [responsively] activated input value to update\n * the host img src attribute or assign a default `img.src=''`\n * if the src has not been defined.\n *\n * Do nothing to standard `` usages, only when responsive\n * keys are present do we actually call `setAttribute()`\n */\n protected updateWithValue() {\n let url = this.activatedValue || this.defaultSrc;\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.addStyles(url);\n } else {\n this.nativeElement.setAttribute('src', String(url));\n }\n }\n\n protected styleCache = imgSrcCache;\n}\n\nconst imgSrcCache: Map = new Map();\n\nconst inputs = [\n 'src.xs', 'src.sm', 'src.md', 'src.lg', 'src.xl',\n 'src.lt-sm', 'src.lt-md', 'src.lt-lg', 'src.lt-xl',\n 'src.gt-xs', 'src.gt-sm', 'src.gt-md', 'src.gt-lg'\n];\n\nconst selector = `\n img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl],\n img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl],\n img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]\n`;\n\n/**\n * This directive provides a responsive API for the HTML 'src' attribute\n * and will update the img.src property upon each responsive activation.\n *\n * e.g.\n * \n *\n * @see https://css-tricks.com/responsive-images-youre-just-changing-resolutions-use-src/\n */\n@Directive({selector, inputs})\nexport class DefaultImgSrcDirective extends ImgSrcDirective {\n protected inputs = inputs;\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 {\n Directive,\n DoCheck,\n ElementRef,\n Input,\n IterableDiffers,\n KeyValueDiffers,\n Optional,\n Renderer2,\n Self,\n} from '@angular/core';\nimport {NgClass} from '@angular/common';\nimport {BaseDirective2, StyleUtils, MediaMarshaller} from '@angular/flex-layout/core';\n\nexport class ClassDirective extends BaseDirective2 implements DoCheck {\n\n protected DIRECTIVE_KEY = 'ngClass';\n\n /**\n * Capture class assignments so we cache the default classes\n * which are merged with activated styles and used as fallbacks.\n */\n @Input('class')\n set klass(val: string) {\n this.ngClassInstance.klass = val;\n this.setValue(val, '');\n }\n\n constructor(protected elementRef: ElementRef,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n protected iterableDiffers: IterableDiffers,\n protected keyValueDiffers: KeyValueDiffers,\n protected renderer: Renderer2,\n @Optional() @Self() protected readonly ngClassInstance: NgClass) {\n super(elementRef, null!, styler, marshal);\n if (!this.ngClassInstance) {\n // Create an instance NgClass Directive instance only if `ngClass=\"\"` has NOT been defined on\n // the same host element; since the responsive variations may be defined...\n this.ngClassInstance = new NgClass(\n this.iterableDiffers, this.keyValueDiffers, this.elementRef, this.renderer\n );\n }\n this.init();\n }\n\n protected updateWithValue(value: any) {\n this.ngClassInstance.ngClass = value;\n this.ngClassInstance.ngDoCheck();\n }\n\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n\n /**\n * For ChangeDetectionStrategy.onPush and ngOnChanges() updates\n */\n ngDoCheck() {\n this.ngClassInstance.ngDoCheck();\n }\n}\n\nconst inputs = [\n 'ngClass', 'ngClass.xs', 'ngClass.sm', 'ngClass.md', 'ngClass.lg', 'ngClass.xl',\n 'ngClass.lt-sm', 'ngClass.lt-md', 'ngClass.lt-lg', 'ngClass.lt-xl',\n 'ngClass.gt-xs', 'ngClass.gt-sm', 'ngClass.gt-md', 'ngClass.gt-lg'\n];\n\nconst selector = `\n [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl],\n [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl],\n [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]\n`;\n\n/**\n * Directive to add responsive support for ngClass.\n * This maintains the core functionality of 'ngClass' and adds responsive API\n * Note: this class is a no-op when rendered on the server\n */\n@Directive({selector, inputs})\nexport class DefaultClassDirective extends ClassDirective {\n protected inputs = inputs;\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';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultImgSrcDirective} from './img-src/img-src';\nimport {DefaultClassDirective} from './class/class';\nimport {DefaultShowHideDirective} from './show-hide/show-hide';\nimport {DefaultStyleDirective} from './style/style';\n\n\nconst ALL_DIRECTIVES = [\n DefaultShowHideDirective,\n DefaultClassDirective,\n DefaultStyleDirective,\n DefaultImgSrcDirective\n];\n\n/**\n * *****************************************************************\n * Define module for the Extended API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class ExtendedModule {\n}\n"],"names":["__extends","d","b","__","this","constructor","extendStatics","prototype","Object","create","negativeOf","hide","getType","target","what","Array","Set","buildRawList","source","delimiter","String","trim","split","map","val","filter","buildMapFromList","styles","sanitize","sanitizeValue","it","value","stringToKeyValue","entry","reduce","keyValuesToMap","buildMapFromSet","list","forEach","push","keys","key","_a","vals","slice","NgStyleKeyValue","join","setPrototypeOf","__proto__","p","hasOwnProperty","__assign","assign","t","s","i","n","arguments","length","call","apply","tslib_1.__extends","ImgSrcStyleBuilder","_super","buildStyles","url","content","type","Injectable","args","providedIn","StyleBuilder","ImgSrcDirective","elementRef","styleBuilder","styler","marshal","platformId","serverModuleLoaded","_this","DIRECTIVE_KEY","defaultSrc","styleCache","imgSrcCache","init","setValue","nativeElement","getAttribute","isPlatformServer","setAttribute","defineProperty","updateWithValue","activatedValue","addStyles","ElementRef","StyleUtils","MediaMarshaller","decorators","Inject","PLATFORM_ID","Boolean","SERVER_TOKEN","src","Input","BaseDirective2","Map","inputs","DefaultImgSrcDirective","Directive","selector","ClassDirective","iterableDiffers","keyValueDiffers","renderer","ngClassInstance","NgClass","klass","ngClass","ngDoCheck","IterableDiffers","KeyValueDiffers","Renderer2","Optional","Self","DefaultClassDirective","ShowHideStyleBuilder","show","parent","display","ShowHideDirective","layoutConfig","hasLayout","hasFlexChild","ngAfterViewInit","hasValue","trackValue","pipe","takeUntil","destroySubject","subscribe","bind","children","from","DISPLAY_MAP","has","get","getDisplayStyle","set","defaultValue","getValue","undefined","triggerUpdate","ngOnChanges","changes","indexOf","inputKey","bp","inputValue","currentValue","shouldShow","coerceBooleanProperty","addFlexToParent","lookupStyle","style","setProperty","LAYOUT_CONFIG","WeakMap","DefaultShowHideDirective","noQuotes","replace","StyleDirective","sanitizer","ngStyleInstance","fallbackStyles","NgStyle","buildStyleMap","ngStyle","tslib_1.__assign","SecurityContext","STYLE","DomSanitizer","DefaultStyleDirective","ALL_DIRECTIVES","NgModule","imports","CoreModule","declarations","exports","ExtendedModule"],"mappings":";;;;;;;mtBAuBA,SAAgBA,GAAUC,EAAGC,GAEzB,QAASC,KAAOC,KAAKC,YAAcJ,EADnCK,EAAcL,EAAGC,GAEjBD,EAAEM,UAAkB,OAANL,EAAaM,OAAOC,OAAOP,IAAMC,EAAGI,UAAYL,EAAEK,UAAW,GAAIJ,ICanF,QAAgBO,GAAWC,GACzB,MAAiB,KAATA,IACU,UAATA,GAA+B,IAATA,IAAuBA,GCbxD,QAAgBC,GAAQC,GACtB,GAAIC,SAAcD,EAClB,OAAa,WAATC,EACMD,EAAOR,cAAgBU,MAAS,QACnCF,EAAOR,cAAgBW,IAAO,MAAQ,SAEtCF,EAOT,QAAgBG,GAAaC,EAAaC,GACxC,WADF,KAAAA,IAA0CA,EAA1C,KACSC,OAAOF,GACTG,OACAC,MAAMH,GACNI,IAAI,SAACC,GAAgB,MAAAA,GAAIH,SACzBI,OAAO,SAAAD,GAAO,MAAQ,KAARA,IAIrB,QAAgBE,GAAiBC,EAAwBC,GACvD,GAAMC,GAAgB,SAACC,GAIrB,MAHIF,KACFE,EAAGC,MAAQH,EAASE,EAAGC,QAElBD,EAGT,OAAOH,GACFJ,IAAIS,GACJP,OAAO,SAAAQ,GAAS,QAAEA,IAClBV,IAAIM,GACJK,OAAOC,MAId,QAAgBC,GAAgBlB,EAAqBU,GACnD,GAAIS,KAQJ,OAPwB,QAApBzB,EAAQM,GACV,EAAwBoB,QAAQ,SAAAL,GAAS,MAAAI,GAAKE,KAAKN,KAEnDzB,OAAOgC,KAAKtB,GAAQoB,QAAQ,SAACG,GAC3BJ,EAAKE,KAAQE,EAAnB,IAA0B,EAAuBA,MAGxCf,EAAiBW,EAAMT,GAKhC,QAAgBI,GAAiBF,GACxB,GAATY,GAAAZ,EAAAR,MAAA,KAASmB,EAATC,EAAA,GAAcC,EAAdD,EAAAE,MAAA,EACE,OAAO,IAAIC,GAAgBJ,EAAKE,EAAKG,KAAK,MAI5C,QAAgBX,GAAeZ,EAAiBU,GAI9C,MAHMA,GAAMQ,MACVlB,EAAIU,EAAMQ,KAAOR,EAAMF,OAElBR,EC8BT,QAASG,GAAiBC,EAAwBC,GAChD,GAAMC,GAAgB,SAACC,GAIrB,MAHIF,KACFE,EAAGC,MAAQH,EAASE,EAAGC,QAElBD,EAGT,OAAOH,GACJJ,IAAIS,GACJP,OAAO,SAAAQ,GAAS,QAAEA,IAClBV,IAAIM,GACJK,OAAOC,MHpHZ,GAAI7B,GAAgB,SAASL,EAAGC,GAI5B,OAHAI,EAAgBE,OAAOuC,iBAChBC,uBAA2BjC,QAAS,SAAUd,EAAGC,GAAKD,EAAE+C,UAAY9C,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI+C,KAAK/C,GAAOA,EAAEgD,eAAeD,KAAIhD,EAAEgD,GAAK/C,EAAE+C,MACpDhD,EAAGC,IASjBiD,EAAW,WAQlB,MAPAA,GAAW3C,OAAO4C,QAAU,SAAkBC,GAC1C,IAAK,GAAIC,GAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAAK,CACjDD,EAAIG,UAAUF,EACd,KAAK,GAAIN,KAAKK,GAAO9C,OAAOD,UAAU2C,eAAeS,KAAKL,EAAGL,KAAII,EAAEJ,GAAKK,EAAEL,IAE9E,MAAOI,IAEJF,EAASS,MAAMxD,KAAMqD,sFIrChC,MAmBwCI,GAAxCC,EAAAC,GACED,EAAFvD,UAAAyD,YAAE,SAAYC,GACV,OAAQC,QAAWD,EAAM,OAAOA,EAApC,IAA6C,oBAH7CE,KAACC,EAAAA,WAADC,OAAaC,WAAY,8GAlBzBR,GAmBwCS,EAAAA,cAAxCC,EAAA,SAAAT,GAgBE,QAAFS,GAAwBC,EACAC,EACAC,EACAC,EACqBC,EACCC,GAL5C,GAAFC,GAMIhB,EANJJ,KAAAvD,KAMUqE,EAAYC,EAAcC,EAAQC,IAN5CxE,WAAwB2E,GAAxBN,WAAwBA,EACAM,EAAxBL,aAAwBA,EACAK,EAAxBJ,OAAwBA,EACAI,EAAxBH,QAAwBA,EACqBG,EAA7CF,WAA6CA,EACCE,EAA9CD,mBAA8CA,EAd5CC,EAAFC,cAA4B,UAC1BD,EAAFE,WAAyB,GAuCvBF,EAAFG,WAAyBC,EAxBrBJ,EAAKK,OACLL,EAAKM,SAAS,GAAIN,EAAKO,cAAcC,aAAa,QAAU,IACxDC,EAAAA,iBAAiBT,EAAKF,aAAeE,EAAKD,oBAC5CC,EAAKO,cAAcG,aAAa,MAAO,MA7C7C,MAyBqC5B,GAArCW,EAAAT,GAIEvD,OAAFkF,eACMlB,EADNjE,UAAA,WAAE,SACQiB,GACNpB,KAAK6E,WAAazD,EAClBpB,KAAKiF,SAAS,GAAIjF,KAAK6E,6CAyBfT,EAAZjE,UAAAoF,gBAAE,WACE,GAAI1B,GAAM7D,KAAKwF,gBAAkBxF,KAAK6E,UAClCO,GAAAA,iBAAiBpF,KAAKyE,aAAezE,KAAK0E,mBAC5C1E,KAAKyF,UAAU5B,GAEf7D,KAAKkF,cAAcG,aAAa,MAAOrE,OAAO6C,yCAvDpDE,KAAmB2B,EAAAA,aA6BnB3B,KAAsCL,IArBtCK,KAAE4B,EAAAA,aALF5B,KAAE6B,EAAAA,kBA6BF7B,KAAyD3D,OAAzDyF,aAAA9B,KAAe+B,EAAAA,OAAf7B,MAAsB8B,EAAAA,iBACtBhC,KAAAiC,QAAAH,aAAA9B,KAAe+B,EAAAA,OAAf7B,MAAsBgC,EAAAA,qCAXtBC,MAAAnC,KAAGoC,EAAAA,MAAHlC,MAAS,UA7BTG,GAyBqCgC,EAAAA,gBA4C/BrB,EAA4C,GAAIsB,KAEhDC,GACJ,SAAU,SAAU,SAAU,SAAU,SACxC,YAAa,YAAa,YAAa,YACvC,YAAa,YAAa,YAAa,4FAoBvC3B,GAAF2B,OAAqBA,IA9FrB,MA6F4C7C,GAA5C8C,EAAA5C,kBADAI,KAACyC,EAAAA,UAADvC,OAAYwC,SAfK,yNAeKH,OAAtBA,MA5FAC,GA6F4CnC,iBC1D1C,QAAFsC,GAAwBrC,EACAE,EACAC,EACAmC,EACAC,EACAC,EAC6BC,GANnD,GAAFnC,GAOIhB,EAPJJ,KAAAvD,KAOUqE,EAAU,KAASE,EAAQC,IAPrCxE,WAAwB2E,GAAxBN,WAAwBA,EACAM,EAAxBJ,OAAwBA,EACAI,EAAxBH,QAAwBA,EACAG,EAAxBgC,gBAAwBA,EACAhC,EAAxBiC,gBAAwBA,EACAjC,EAAxBkC,SAAwBA,EAC6BlC,EAArDmC,gBAAqDA,EAlBnDnC,EAAFC,cAA4B,UAoBnBD,EAAKmC,kBAGRnC,EAAKmC,gBAAkB,GAAIC,GAAAA,QACzBpC,EAAKgC,gBAAiBhC,EAAKiC,gBAAiBjC,EAAKN,WAAYM,EAAKkC,WAGtElC,EAAKK,SAlDT,MAqBoCvB,GAApCiD,EAAA/C,GAQEvD,OAAFkF,eACMoB,EADNvG,UAAA,aAAE,SACUiB,GACRpB,KAAK8G,gBAAgBE,MAAQ5F,EAC7BpB,KAAKiF,SAAS7D,EAAK,qCAqBXsF,EAAZvG,UAAAoF,gBAAE,SAA0B5D,GACxB3B,KAAK8G,gBAAgBG,QAAUtF,EAC/B3B,KAAK8G,gBAAgBI,aAUvBR,EAAFvG,UAAA+G,UAAE,WACElH,KAAK8G,gBAAgBI,iDAxDzBnD,KAAE2B,EAAAA,aASF3B,KAAwB4B,EAAAA,aAAxB5B,KAAoC6B,EAAAA,kBAPpC7B,KAAEoD,EAAAA,kBACFpD,KAAEqD,EAAAA,kBAEFrD,KAAEsD,EAAAA,YAGFtD,KAAQgD,EAAAA,QAARlB,aAAA9B,KAuBeuD,EAAAA,WAvBfvD,KAuB2BwD,EAAAA,4BAZ3BP,QAAAjD,KAAGoC,EAAAA,MAAHlC,MAAS,YA7BTyC,GAqBoCN,EAAAA,gBAiD9BE,GACJ,UAAW,aAAc,aAAc,aAAc,aAAc,aACnE,gBAAiB,gBAAiB,gBAAiB,gBACnD,gBAAiB,gBAAiB,gBAAiB,gGAgBnD3B,GAAF2B,OAAqBA,IAzFrB,MAwF2C7C,GAA3C+D,EAAA7D,kBADAI,KAACyC,EAAAA,UAADvC,OAAYwC,SAXK,sOAWKH,OAAtBA,MAvFAkB,GAwF2Cd,6EJxF3C,MAiD0CjD,GAA1CgE,EAAA9D,GACE8D,EAAFtH,UAAAyD,YAAE,SAAY8D,EAAcC,GAExB,OAAQC,QADoB,SAATF,EACaC,EAAOC,QAAU,wBAJrD7D,KAACC,EAAAA,WAADC,OAAaC,WAAY,8GAhDzBuD,GAiD0CtD,EAAAA,cAA1C0D,EAAA,SAAAlE,GAeE,QAAFkE,GAAwBxD,EACAC,EACAC,EACAC,EACuBsD,EACFrD,EACaC,GANxD,GAAFC,GAOIhB,EAPJJ,KAAAvD,KAOUqE,EAAYC,EAAcC,EAAQC,IAP5CxE,WAAwB2E,GAAxBN,WAAwBA,EACAM,EAAxBL,aAAwBA,EACAK,EAAxBJ,OAAwBA,EACAI,EAAxBH,QAAwBA,EACuBG,EAA/CmD,aAA+CA,EACFnD,EAA7CF,WAA6CA,EACaE,EAA1DD,mBAA0DA,EAbxDC,EAAFC,cAA4B,YAG1BD,EAAFiD,QAA8B,GAC5BjD,EAAFoD,WAAwB,EACtBpD,EAAFqD,cAA2B,IA9D3B,MAwDuCvE,GAAvCoE,EAAAlE,GAsBEkE,EAAF1H,UAAA8H,gBAAE,WACEjI,KAAK+H,UAAY/H,KAAKwE,QAAQ0D,SAASlI,KAAKkF,cAAe,UAC3DlF,KAAKwE,QAAQ2D,WAAWnI,KAAKkF,cAAe,UACzCkD,KAAKC,EAAAA,UAAUrI,KAAKsI,iBACpBC,UAAUvI,KAAKuF,gBAAgBiD,KAAKxI,MAGvC,KAAK,GADCyI,GAAW9H,MAAM+H,KAAK1I,KAAKkF,cAAcuD,UACtCtF,EAAI,EAAGA,EAAIsF,EAASnF,OAAQH,IACnC,GAAInD,KAAKwE,QAAQ0D,SAASO,EAAStF,GAAmB,QAAS,CAC7DnD,KAAKgI,cAAe,CACpB,OAIAW,EAAYC,IAAI5I,KAAKkF,eACvBlF,KAAK4H,QAAUe,EAAYE,IAAI7I,KAAKkF,gBAEpClF,KAAK4H,QAAU5H,KAAK8I,kBACpBH,EAAYI,IAAI/I,KAAKkF,cAAelF,KAAK4H,UAG3C5H,KAAKgF,MAEL,IAAMgE,GAAehJ,KAAKwE,QAAQyE,SAASjJ,KAAKkF,cAAelF,KAAK4E,cAAe,QAC9DsE,KAAjBF,GAA+C,KAAjBA,EAChChJ,KAAKiF,UAAS,EAAM,IAEpBjF,KAAKmJ,iBASTtB,EAAF1H,UAAAiJ,YAAE,SAAYC,GAAZ,GAAF1E,GAAA3E,IACII,QAAOgC,KAAKiH,GAASnH,QAAQ,SAAAG,GAC3B,IAAkC,IAA9BsC,EAAK2B,OAAOgD,QAAQjH,GAAa,CACnC,GAAMkH,GAAWlH,EAAInB,MAAM,KACrBsI,EAAKD,EAAS/G,MAAM,GAAGE,KAAK,KAC5B+G,EAAaJ,EAAQhH,GAAKqH,aAC5BC,EAA4B,KAAfF,GACA,IAAfA,GAAmBG,EAAAA,sBAAsBH,EAEvB,YAAhBF,EAAS,KACXI,GAAcA,GAEhBhF,EAAKM,SAAS0E,EAAYH,OActB3B,EAAZ1H,UAAA2I,gBAAE,WACE,MAAQ9I,MAAK+H,WAAc/H,KAAKgI,cAAgBhI,KAAK8H,aAAa+B,gBAChE,OAAS7J,KAAKuE,OAAOuF,YAAY9J,KAAKkF,cAAe,WAAW,IAI1D2C,EAAZ1H,UAAAoF,gBAAE,SAA0B5D,OAA5B,KAAAA,IAA4BA,GAA5B,GACkB,KAAVA,IAGJ3B,KAAKyF,UAAU9D,EAAQ,OAAS,SAAUiG,QAAS5H,KAAK4H,UACpDxC,EAAAA,iBAAiBpF,KAAKyE,aAAezE,KAAK0E,oBAC5C1E,KAAKkF,cAAc6E,MAAMC,YAAY,UAAW,0CA/ItDjG,KAAE2B,EAAAA,aAwDF3B,KAAsC0D,IAxCtC1D,KAAE4B,EAAAA,aAFF5B,KAAE6B,EAAAA,kBA6CF7B,SAAAmF,GAAArD,aAAA9B,KAAe+B,EAAAA,OAAf7B,MAAsBgG,EAAAA,mBACtBlG,KAAyD3D,OAAzDyF,aAAA9B,KAAe+B,EAAAA,OAAf7B,MAAsB8B,EAAAA,iBACtBhC,KAAAiC,QAAAH,aAAA9B,KAAeuD,EAAAA,WAAfvD,KAA2B+B,EAAAA,OAA3B7B,MAAkCgC,EAAAA,mBAtElC4B,GAwDuCzB,EAAAA,gBAqGjCuC,EAA4C,GAAIuB,SAEhD5D,GACJ,SACA,YAAa,YAAa,YAAa,YAAa,YACpD,eAAgB,eAAgB,eAAgB,eAChD,eAAgB,eAAgB,eAAgB,eAChD,SACA,YAAa,YAAa,YAAa,YAAa,YACpD,eAAgB,eAAgB,eAAgB,eAChD,eAAgB,eAAgB,eAAgB,+FAmBhD3B,GAAF2B,OAAqBA,IA1LrB,MAyL8C7C,GAA9C0G,EAAAxG,kBADAI,KAACyC,EAAAA,UAADvC,OAAYwC,SAdK,kbAcKH,OAAtBA,MAxLA6D,GAyL8CtC,GCtK9CpF,EAAA,WACE,QAAFA,GAAqBJ,EAAoBV,EAAeyI,OAAxD,KAAAA,IAAwDA,GAAxD,GAAqBpK,KAArBqC,IAAqBA,EAAoBrC,KAAzC2B,MAAyCA,EACrC3B,KAAKqC,IAAM+H,EAAW/H,EAAIgI,QAAQ,QAAS,IAAIpJ,OAASoB,EAAIpB,OAE5DjB,KAAK2B,MAAQyI,EAAWzI,EAAM0I,QAAQ,QAAS,IAAIpJ,OAASU,EAAMV,OAClEjB,KAAK2B,MAAQ3B,KAAK2B,MAAM0I,QAAQ,IAAK,IAxBzC,MAAA5H,oBCuCE,QAAF6H,GAAwBjG,EACAE,EACAC,EACAoC,EACAC,EACA0D,EAC2BC,GANjD,GAAF7F,GAOIhB,EAPJJ,KAAAvD,KAOUqE,EAAU,KAASE,EAAQC,IAPrCxE,IAAwB2E,GAAxBN,WAAwBA,EACAM,EAAxBJ,OAAwBA,EACAI,EAAxBH,QAAwBA,EACAG,EAAxBiC,gBAAwBA,EACAjC,EAAxBkC,SAAwBA,EACAlC,EAAxB4F,UAAwBA,EAC2B5F,EAAnD6F,gBAAmDA,EATjD7F,EAAFC,cAA4B,UAC1BD,EAAF8F,kBAUS9F,EAAK6F,kBAGR7F,EAAK6F,gBAAkB,GAAIE,GAAAA,QAAQ/F,EAAKiC,gBAAiBjC,EAAKN,WAAYM,EAAKkC,WAEjFlC,EAAKK,MACL,IAAMzD,GAASoD,EAAKO,cAAcC,aAAa,UAAY,SAC3DR,GAAK8F,eAAiB9F,EAAKgG,cAAcpJ,KAtD7C,MAkCoCkC,GAApC6G,EAAA3G,GAuBY2G,EAAZnK,UAAAoF,gBAAE,SAA0B5D,GACxB,GAAMJ,GAASvB,KAAK2K,cAAchJ,EAClC3B,MAAKwK,gBAAgBI,QAAzBC,KAAuC7K,KAAKyK,eAAmBlJ,GAC3DvB,KAAKwK,gBAAgBtD,aASboD,EAAZnK,UAAAwK,cAAE,SAAwBpJ,GAAxB,GAAFoD,GAAA3E,KAEUuK,EAA8B,SAACnJ,GACnC,MAAAuD,GAAK4F,UAAU/I,SAASsJ,EAAAA,gBAAgBC,MAAO3J,IAAQ,GACzD,IAAIG,EACF,OAAQf,EAAQe,IACd,IAAK,SAAW,MAAOD,GAAiBT,EAAaU,GACnDgJ,EACF,KAAK,QAAW,MAAOjJ,GAAgB,EAA2BiJ,EAClE,KAAK,MACL,QAAgB,MAAOvI,GAAgBT,EAAQgJ,GAInD,UAQFD,EAAFnK,UAAA+G,UAAE,WACElH,KAAKwK,gBAAgBtD,iDAlFzBnD,KAAE2B,EAAAA,aASF3B,KAAwB4B,EAAAA,aAAxB5B,KAAoC6B,EAAAA,kBARpC7B,KAAEqD,EAAAA,kBAEFrD,KAAEsD,EAAAA,YAKFtD,KAAQiH,EAAAA,eADRjH,KAAQ2G,EAAAA,QAAR7E,aAAA9B,KA4BeuD,EAAAA,WA5BfvD,KA4B2BwD,EAAAA,UA7C3B+C,GAkCoClE,EAAAA,gBA8D9BE,GACJ,UACA,aAAc,aAAc,aAAc,aAAc,aACxD,gBAAiB,gBAAiB,gBAAiB,gBACnD,gBAAiB,gBAAiB,gBAAiB,gGAgBnD3B,GAAF2B,OAAqBA,IApHrB,MAmH2C7C,GAA3CwH,EAAAtH,kBADAI,KAACyC,EAAAA,UAADvC,OAAYwC,SAXK,yOAWKH,OAAtBA,MAlHA2E,GAmH2CX,GGnGrCY,GACJf,EACA3C,EACAyD,EACA1E,8BApBF,sBA6BAxC,KAACoH,EAAAA,SAADlH,OACEmH,SAAUC,EAAAA,YACVC,aAAkBJ,EAApB1I,QACE+I,QAAaL,EAAf1I,YAhCAgJ"} \ No newline at end of file +{"version":3,"file":"flex-layout-extended.umd.min.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/lib/extended/style/style-transforms.ts","../../src/lib/extended/style/style.ts","../../src/lib/extended/img-src/img-src.ts","../../src/lib/extended/class/class.ts","../../src/lib/extended/show-hide/show-hide.ts","../../src/lib/extended/module.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\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 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) : new P(function (resolve) { resolve(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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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 __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\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)) result[k] = mod[k];\r\n result.default = 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","/**\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\nexport type NgStyleRawList = string[];\nexport type NgStyleMap = {[klass: string]: string};\n// NgStyle selectors accept NgStyleType values\nexport type NgStyleType = string | Set | NgStyleRawList | NgStyleMap;\n\n/**\n * Callback function for SecurityContext.STYLE sanitization\n */\nexport type NgStyleSanitizer = (val: any) => string;\n\n/** NgStyle allowed inputs */\nexport class NgStyleKeyValue {\n constructor(public key: string, public value: string, noQuotes = true) {\n this.key = noQuotes ? key.replace(/['\"]/g, '').trim() : key.trim();\n\n this.value = noQuotes ? value.replace(/['\"]/g, '').trim() : value.trim();\n this.value = this.value.replace(/;/, '');\n }\n}\n\nexport function getType(target: any): string {\n let what = typeof target;\n if (what === 'object') {\n return (target.constructor === Array) ? 'array' :\n (target.constructor === Set) ? 'set' : 'object';\n }\n return what;\n}\n\n/**\n * Split string of key:value pairs into Array of k-v pairs\n * e.g. 'key:value; key:value; key:value;' -> ['key:value',...]\n */\nexport function buildRawList(source: any, delimiter = ';'): NgStyleRawList {\n return String(source)\n .trim()\n .split(delimiter)\n .map((val: string) => val.trim())\n .filter(val => val !== '');\n}\n\n/** Convert array of key:value strings to a iterable map object */\nexport function buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap {\n const sanitizeValue = (it: NgStyleKeyValue) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n };\n\n return styles\n .map(stringToKeyValue)\n .filter(entry => !!entry)\n .map(sanitizeValue)\n .reduce(keyValuesToMap, {} as NgStyleMap);\n}\n\n/** Convert Set or raw Object to an iterable NgStyleMap */\nexport function buildMapFromSet(source: NgStyleType, sanitize?: NgStyleSanitizer): NgStyleMap {\n let list: string[] = [];\n if (getType(source) === 'set') {\n (source as Set).forEach(entry => list.push(entry));\n } else {\n Object.keys(source).forEach((key: string) => {\n list.push(`${key}:${(source as NgStyleMap)[key]}`);\n });\n }\n return buildMapFromList(list, sanitize);\n}\n\n\n/** Convert 'key:value' -> [key, value] */\nexport function stringToKeyValue(it: string): NgStyleKeyValue {\n const [key, ...vals] = it.split(':');\n return new NgStyleKeyValue(key, vals.join(':'));\n}\n\n/** Convert [ [key,value] ] -> { key : value } */\nexport function keyValuesToMap(map: NgStyleMap, entry: NgStyleKeyValue): NgStyleMap {\n if (!!entry.key) {\n map[entry.key] = entry.value;\n }\n return map;\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 {\n Directive,\n DoCheck,\n ElementRef,\n Inject,\n Optional,\n PLATFORM_ID,\n SecurityContext,\n Self,\n} from '@angular/core';\nimport {isPlatformServer, NgStyle, ɵNgStyleImpl, ɵNgStyleR2Impl} from '@angular/common';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n SERVER_TOKEN,\n} from '@angular/flex-layout/core';\n\nimport {\n NgStyleRawList,\n NgStyleType,\n NgStyleSanitizer,\n buildRawList,\n getType,\n buildMapFromSet,\n NgStyleMap,\n NgStyleKeyValue,\n stringToKeyValue,\n keyValuesToMap,\n} from './style-transforms';\n\nexport class StyleDirective extends BaseDirective2 implements DoCheck {\n\n protected DIRECTIVE_KEY = 'ngStyle';\n protected fallbackStyles: NgStyleMap;\n protected isServer: boolean;\n\n constructor(protected elementRef: ElementRef,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n protected delegate: ɵNgStyleImpl,\n protected sanitizer: DomSanitizer,\n @Optional() @Self() private readonly ngStyleInstance: NgStyle,\n @Optional() @Inject(SERVER_TOKEN) serverLoaded: boolean,\n @Inject(PLATFORM_ID) platformId: Object) {\n super(elementRef, null!, styler, marshal);\n if (!this.ngStyleInstance) {\n // Create an instance NgClass Directive instance only if `ngClass=\"\"` has NOT been\n // defined on the same host element; since the responsive variations may be defined...\n this.ngStyleInstance = new NgStyle(this.delegate);\n }\n this.init();\n const styles = this.nativeElement.getAttribute('style') || '';\n this.fallbackStyles = this.buildStyleMap(styles);\n this.isServer = serverLoaded && isPlatformServer(platformId);\n }\n\n /** Add generated styles */\n protected updateWithValue(value: any) {\n const styles = this.buildStyleMap(value);\n this.ngStyleInstance.ngStyle = {...this.fallbackStyles, ...styles};\n if (this.isServer) {\n this.applyStyleToElement(styles);\n }\n this.ngStyleInstance.ngDoCheck();\n }\n\n /** Remove generated styles */\n protected clearStyles() {\n this.ngStyleInstance.ngStyle = this.fallbackStyles;\n this.ngStyleInstance.ngDoCheck();\n }\n\n /**\n * Convert raw strings to ngStyleMap; which is required by ngStyle\n * NOTE: Raw string key-value pairs MUST be delimited by `;`\n * Comma-delimiters are not supported due to complexities of\n * possible style values such as `rgba(x,x,x,x)` and others\n */\n protected buildStyleMap(styles: NgStyleType): NgStyleMap {\n // Always safe-guard (aka sanitize) style property values\n const sanitizer: NgStyleSanitizer = (val: any) =>\n this.sanitizer.sanitize(SecurityContext.STYLE, val) || '';\n if (styles) {\n switch (getType(styles)) {\n case 'string': return buildMapFromList(buildRawList(styles),\n sanitizer);\n case 'array' : return buildMapFromList(styles as NgStyleRawList, sanitizer);\n case 'set' : return buildMapFromSet(styles, sanitizer);\n default : return buildMapFromSet(styles, sanitizer);\n }\n }\n\n return {};\n }\n\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n\n /** For ChangeDetectionStrategy.onPush and ngOnChanges() updates */\n ngDoCheck() {\n this.ngStyleInstance.ngDoCheck();\n }\n}\n\nconst inputs = [\n 'ngStyle',\n 'ngStyle.xs', 'ngStyle.sm', 'ngStyle.md', 'ngStyle.lg', 'ngStyle.xl',\n 'ngStyle.lt-sm', 'ngStyle.lt-md', 'ngStyle.lt-lg', 'ngStyle.lt-xl',\n 'ngStyle.gt-xs', 'ngStyle.gt-sm', 'ngStyle.gt-md', 'ngStyle.gt-lg'\n];\n\nconst selector = `\n [ngStyle],\n [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl],\n [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl],\n [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]\n`;\n\n// tslint:disable-next-line:variable-name\nexport const LayoutNgStyleImplProvider = {\n provide: ɵNgStyleImpl,\n useClass: ɵNgStyleR2Impl\n};\n\n/**\n * Directive to add responsive support for ngStyle.\n *\n */\n@Directive({selector, inputs, providers: [LayoutNgStyleImplProvider]})\nexport class DefaultStyleDirective extends StyleDirective implements DoCheck {\n protected inputs = inputs;\n}\n\n/** Build a styles map from a list of styles, while sanitizing bad values first */\nfunction buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap {\n const sanitizeValue = (it: NgStyleKeyValue) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n };\n\n return styles\n .map(stringToKeyValue)\n .filter(entry => !!entry)\n .map(sanitizeValue)\n .reduce(keyValuesToMap, {} as NgStyleMap);\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 {Directive, ElementRef, Inject, PLATFORM_ID, Injectable, Input} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n MediaMarshaller,\n BaseDirective2,\n SERVER_TOKEN,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class ImgSrcStyleBuilder extends StyleBuilder {\n buildStyles(url: string) {\n return {'content': url ? `url(${url})` : ''};\n }\n}\n\nexport class ImgSrcDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'img-src';\n protected defaultSrc = '';\n\n @Input('src')\n set src(val: string) {\n this.defaultSrc = val;\n this.setValue(this.defaultSrc, '');\n }\n\n constructor(protected elementRef: ElementRef,\n protected styleBuilder: ImgSrcStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n @Inject(PLATFORM_ID) protected platformId: Object,\n @Inject(SERVER_TOKEN) protected serverModuleLoaded: boolean) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n this.setValue(this.nativeElement.getAttribute('src') || '', '');\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.nativeElement.setAttribute('src', '');\n }\n }\n\n /**\n * Use the [responsively] activated input value to update\n * the host img src attribute or assign a default `img.src=''`\n * if the src has not been defined.\n *\n * Do nothing to standard `` usages, only when responsive\n * keys are present do we actually call `setAttribute()`\n */\n protected updateWithValue(value?: string) {\n const url = value || this.defaultSrc;\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.addStyles(url);\n } else {\n this.nativeElement.setAttribute('src', url);\n }\n }\n\n protected styleCache = imgSrcCache;\n}\n\nconst imgSrcCache: Map = new Map();\n\nconst inputs = [\n 'src.xs', 'src.sm', 'src.md', 'src.lg', 'src.xl',\n 'src.lt-sm', 'src.lt-md', 'src.lt-lg', 'src.lt-xl',\n 'src.gt-xs', 'src.gt-sm', 'src.gt-md', 'src.gt-lg'\n];\n\nconst selector = `\n img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl],\n img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl],\n img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]\n`;\n\n/**\n * This directive provides a responsive API for the HTML 'src' attribute\n * and will update the img.src property upon each responsive activation.\n *\n * e.g.\n * \n *\n * @see https://css-tricks.com/responsive-images-youre-just-changing-resolutions-use-src/\n */\n@Directive({selector, inputs})\nexport class DefaultImgSrcDirective extends ImgSrcDirective {\n protected inputs = inputs;\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 {Directive, DoCheck, ElementRef, Input, Optional, Self} from '@angular/core';\nimport {NgClass, ɵNgClassImpl, ɵNgClassR2Impl} from '@angular/common';\nimport {BaseDirective2, StyleUtils, MediaMarshaller} from '@angular/flex-layout/core';\n\nexport class ClassDirective extends BaseDirective2 implements DoCheck {\n\n protected DIRECTIVE_KEY = 'ngClass';\n\n /**\n * Capture class assignments so we cache the default classes\n * which are merged with activated styles and used as fallbacks.\n */\n @Input('class')\n set klass(val: string) {\n this.ngClassInstance.klass = val;\n this.setValue(val, '');\n }\n\n constructor(protected elementRef: ElementRef,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n protected delegate: ɵNgClassImpl,\n @Optional() @Self() protected readonly ngClassInstance: NgClass) {\n super(elementRef, null!, styler, marshal);\n if (!this.ngClassInstance) {\n // Create an instance NgClass Directive instance only if `ngClass=\"\"` has NOT been defined on\n // the same host element; since the responsive variations may be defined...\n this.ngClassInstance = new NgClass(this.delegate);\n }\n this.init();\n this.setValue('', '');\n }\n\n protected updateWithValue(value: any) {\n this.ngClassInstance.ngClass = value;\n this.ngClassInstance.ngDoCheck();\n }\n\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n\n /**\n * For ChangeDetectionStrategy.onPush and ngOnChanges() updates\n */\n ngDoCheck() {\n this.ngClassInstance.ngDoCheck();\n }\n}\n\nconst inputs = [\n 'ngClass', 'ngClass.xs', 'ngClass.sm', 'ngClass.md', 'ngClass.lg', 'ngClass.xl',\n 'ngClass.lt-sm', 'ngClass.lt-md', 'ngClass.lt-lg', 'ngClass.lt-xl',\n 'ngClass.gt-xs', 'ngClass.gt-sm', 'ngClass.gt-md', 'ngClass.gt-lg'\n];\n\nconst selector = `\n [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl],\n [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl],\n [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]\n`;\n\n// tslint:disable-next-line:variable-name\nexport const LayoutNgClassImplProvider = {\n provide: ɵNgClassImpl,\n useClass: ɵNgClassR2Impl\n};\n\n/**\n * Directive to add responsive support for ngClass.\n * This maintains the core functionality of 'ngClass' and adds responsive API\n * Note: this class is a no-op when rendered on the server\n */\n@Directive({selector, inputs, providers: [LayoutNgClassImplProvider]})\nexport class DefaultClassDirective extends ClassDirective {\n protected inputs = inputs;\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 {\n Directive,\n ElementRef,\n OnChanges,\n SimpleChanges,\n Optional,\n Inject,\n PLATFORM_ID,\n Injectable,\n AfterViewInit,\n} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n BaseDirective2,\n LAYOUT_CONFIG,\n LayoutConfigOptions,\n MediaMarshaller,\n SERVER_TOKEN,\n StyleUtils,\n StyleBuilder,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {takeUntil} from 'rxjs/operators';\n\nexport interface ShowHideParent {\n display: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class ShowHideStyleBuilder extends StyleBuilder {\n buildStyles(show: string, parent: ShowHideParent) {\n const shouldShow = show === 'true';\n return {'display': shouldShow ? parent.display : 'none'};\n }\n}\n\nexport class ShowHideDirective extends BaseDirective2 implements AfterViewInit, OnChanges {\n protected DIRECTIVE_KEY = 'show-hide';\n\n /** Original dom Elements CSS display style */\n protected display: string = '';\n protected hasLayout = false;\n protected hasFlexChild = false;\n\n constructor(protected elementRef: ElementRef,\n protected styleBuilder: ShowHideStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n @Inject(PLATFORM_ID) protected platformId: Object,\n @Optional() @Inject(SERVER_TOKEN) protected serverModuleLoaded: boolean) {\n super(elementRef, styleBuilder, styler, marshal);\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n ngAfterViewInit() {\n this.trackExtraTriggers();\n\n const children = Array.from(this.nativeElement.children);\n for (let i = 0; i < children.length; i++) {\n if (this.marshal.hasValue(children[i] as HTMLElement, 'flex')) {\n this.hasFlexChild = true;\n break;\n }\n }\n\n if (DISPLAY_MAP.has(this.nativeElement)) {\n this.display = DISPLAY_MAP.get(this.nativeElement)!;\n } else {\n this.display = this.getDisplayStyle();\n DISPLAY_MAP.set(this.nativeElement, this.display);\n }\n\n this.init();\n // set the default to show unless explicitly overridden\n const defaultValue = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY, '');\n if (defaultValue === undefined || defaultValue === '') {\n this.setValue(true, '');\n } else {\n this.triggerUpdate();\n }\n }\n\n /**\n * On changes to any @Input properties...\n * Default to use the non-responsive Input value ('fxShow')\n * Then conditionally override with the mq-activated Input's current value\n */\n ngOnChanges(changes: SimpleChanges) {\n Object.keys(changes).forEach(key => {\n if (this.inputs.indexOf(key) !== -1) {\n const inputKey = key.split('.');\n const bp = inputKey.slice(1).join('.');\n const inputValue = changes[key].currentValue;\n let shouldShow = inputValue !== '' ?\n inputValue !== 0 ? coerceBooleanProperty(inputValue) : false\n : true;\n if (inputKey[0] === 'fxHide') {\n shouldShow = !shouldShow;\n }\n this.setValue(shouldShow, bp);\n }\n });\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Watch for these extra triggers to update fxShow, fxHide stylings\n */\n protected trackExtraTriggers() {\n this.hasLayout = this.marshal.hasValue(this.nativeElement, 'layout');\n\n ['layout', 'layout-align'].forEach(key => {\n this.marshal\n .trackValue(this.nativeElement, key)\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerUpdate.bind(this));\n });\n }\n\n /**\n * Override accessor to the current HTMLElement's `display` style\n * Note: Show/Hide will not change the display to 'flex' but will set it to 'block'\n * unless it was already explicitly specified inline or in a CSS stylesheet.\n */\n protected getDisplayStyle(): string {\n return (this.hasLayout || (this.hasFlexChild && this.layoutConfig.addFlexToParent)) ?\n 'flex' : this.styler.lookupStyle(this.nativeElement, 'display', true);\n }\n\n /** Validate the visibility value and then update the host's inline display style */\n protected updateWithValue(value: boolean | string = true) {\n if (value === '') {\n return;\n }\n this.addStyles(value ? 'true' : 'false', {display: this.display});\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.nativeElement.style.setProperty('display', '');\n }\n this.marshal.triggerUpdate(this.parentElement!, 'layout-gap');\n }\n}\n\nconst DISPLAY_MAP: WeakMap = new WeakMap();\n\nconst inputs = [\n 'fxShow', 'fxShow.print',\n 'fxShow.xs', 'fxShow.sm', 'fxShow.md', 'fxShow.lg', 'fxShow.xl',\n 'fxShow.lt-sm', 'fxShow.lt-md', 'fxShow.lt-lg', 'fxShow.lt-xl',\n 'fxShow.gt-xs', 'fxShow.gt-sm', 'fxShow.gt-md', 'fxShow.gt-lg',\n 'fxHide', 'fxHide.print',\n 'fxHide.xs', 'fxHide.sm', 'fxHide.md', 'fxHide.lg', 'fxHide.xl',\n 'fxHide.lt-sm', 'fxHide.lt-md', 'fxHide.lt-lg', 'fxHide.lt-xl',\n 'fxHide.gt-xs', 'fxHide.gt-sm', 'fxHide.gt-md', 'fxHide.gt-lg'\n];\n\nconst selector = `\n [fxShow], [fxShow.print],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide], [fxHide.print],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n`;\n\n/**\n * 'show' Layout API directive\n */\n@Directive({selector, inputs})\nexport class DefaultShowHideDirective extends ShowHideDirective {\n protected inputs = inputs;\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';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultImgSrcDirective} from './img-src/img-src';\nimport {DefaultClassDirective} from './class/class';\nimport {DefaultShowHideDirective} from './show-hide/show-hide';\nimport {DefaultStyleDirective} from './style/style';\n\n\nconst ALL_DIRECTIVES = [\n DefaultShowHideDirective,\n DefaultClassDirective,\n DefaultStyleDirective,\n DefaultImgSrcDirective\n];\n\n/**\n * *****************************************************************\n * Define module for the Extended API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class ExtendedModule {\n}\n"],"names":["__extends","d","b","__","this","constructor","extendStatics","prototype","Object","create","getType","target","what","Array","Set","buildRawList","source","delimiter","String","trim","split","map","val","filter","buildMapFromList","styles","sanitize","sanitizeValue","it","value","stringToKeyValue","entry","reduce","keyValuesToMap","buildMapFromSet","list","forEach","push","keys","key","_a","vals","slice","NgStyleKeyValue","join","setPrototypeOf","__proto__","p","hasOwnProperty","__assign","assign","t","s","i","n","arguments","length","call","apply","ImgSrcStyleBuilder","_super","tslib_1.__extends","buildStyles","url","content","type","Injectable","args","providedIn","StyleBuilder","ImgSrcDirective","elementRef","styleBuilder","styler","marshal","platformId","serverModuleLoaded","_this","DIRECTIVE_KEY","defaultSrc","styleCache","imgSrcCache","init","setValue","nativeElement","getAttribute","isPlatformServer","setAttribute","defineProperty","updateWithValue","addStyles","ElementRef","StyleUtils","MediaMarshaller","decorators","Inject","PLATFORM_ID","Boolean","SERVER_TOKEN","src","Input","BaseDirective2","Map","inputs","DefaultImgSrcDirective","Directive","selector","ClassDirective","delegate","ngClassInstance","NgClass","klass","ngClass","ngDoCheck","ɵNgClassImpl","Optional","Self","LayoutNgClassImplProvider","provide","useClass","ɵNgClassR2Impl","DefaultClassDirective","providers","ShowHideStyleBuilder","show","parent","display","ShowHideDirective","layoutConfig","hasLayout","hasFlexChild","ngAfterViewInit","trackExtraTriggers","children","from","hasValue","DISPLAY_MAP","has","get","getDisplayStyle","set","defaultValue","getValue","undefined","triggerUpdate","ngOnChanges","changes","indexOf","inputKey","bp","inputValue","currentValue","shouldShow","coerceBooleanProperty","trackValue","pipe","takeUntil","destroySubject","subscribe","bind","addFlexToParent","lookupStyle","style","setProperty","LAYOUT_CONFIG","WeakMap","DefaultShowHideDirective","noQuotes","replace","StyleDirective","sanitizer","ngStyleInstance","serverLoaded","NgStyle","fallbackStyles","buildStyleMap","isServer","ngStyle","tslib_1.__assign","applyStyleToElement","clearStyles","SecurityContext","STYLE","ɵNgStyleImpl","DomSanitizer","LayoutNgStyleImplProvider","ɵNgStyleR2Impl","DefaultStyleDirective","ALL_DIRECTIVES","ExtendedModule","NgModule","imports","CoreModule","declarations","exports"],"mappings":"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"} \ No newline at end of file diff --git a/bundles/flex-layout-flex.umd.js b/bundles/flex-layout-flex.umd.js index 38d46c653..79df8224b 100644 --- a/bundles/flex-layout-flex.umd.js +++ b/bundles/flex-layout-flex.umd.js @@ -8,7 +8,7 @@ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/flex-layout/core'), require('@angular/cdk/bidi'), require('rxjs'), require('rxjs/operators')) : typeof define === 'function' && define.amd ? define('@angular/flex-layout/flex', ['exports', '@angular/core', '@angular/flex-layout/core', '@angular/cdk/bidi', 'rxjs', 'rxjs/operators'], factory) : - (factory((global.ng = global.ng || {}, global.ng['flex-layout'] = global.ng['flex-layout'] || {}, global.ng['flex-layout'].flex = {}),global.ng.core,global.ng.flexLayout.core,global.ng.cdk.bidi,global.rxjs,global.rxjs.operators)); + (factory((global.ng = global.ng || {}, global.ng.flexLayout = global.ng.flexLayout || {}, global.ng.flexLayout.flex = {}),global.ng.core,global.ng.flexLayout.core,global.ng.cdk.bidi,global.rxjs,global.rxjs.operators)); }(this, (function (exports,core,core$1,bidi,rxjs,operators) { 'use strict'; /*! ***************************************************************************** @@ -53,15 +53,16 @@ var __assign = function() { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -/** * +/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license - @type {?} */ + * @type {?} + */ var INLINE = 'inline'; /** @type {?} */ var LAYOUT_VALUES = ['row', 'column', 'row-reverse', 'column-reverse']; @@ -84,7 +85,11 @@ function validateValue(value) { value = value ? value.toLowerCase() : ''; var _a = value.split(' '), direction = _a[0], wrap = _a[1], inline = _a[2]; // First value must be the `flex-direction` - if (!LAYOUT_VALUES.find(function (x) { return x === direction; })) { + if (!LAYOUT_VALUES.find((/** + * @param {?} x + * @return {?} + */ + function (x) { return x === direction; }))) { direction = LAYOUT_VALUES[0]; } if (wrap === INLINE) { @@ -155,7 +160,7 @@ function buildCSS(direction, wrap, inline) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var LayoutStyleBuilder = /** @class */ (function (_super) { __extends(LayoutStyleBuilder, _super); @@ -176,7 +181,7 @@ var LayoutStyleBuilder = /** @class */ (function (_super) { LayoutStyleBuilder.decorators = [ { type: core.Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ LayoutStyleBuilder.ngInjectableDef = core.defineInjectable({ factory: function LayoutStyleBuilder_Factory() { return new LayoutStyleBuilder(); }, token: LayoutStyleBuilder, providedIn: "root" }); + /** @nocollapse */ LayoutStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function LayoutStyleBuilder_Factory() { return new LayoutStyleBuilder(); }, token: LayoutStyleBuilder, providedIn: "root" }); return LayoutStyleBuilder; }(core$1.StyleBuilder)); /** @type {?} */ @@ -197,10 +202,7 @@ var selector = "\n [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],\n */ var LayoutDirective = /** @class */ (function (_super) { __extends(LayoutDirective, _super); - function LayoutDirective(elRef, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + function LayoutDirective(elRef, styleUtils, styleBuilder, marshal) { var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; _this.elRef = elRef; _this.styleUtils = styleUtils; @@ -237,7 +239,7 @@ var layoutCache = new Map(); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var CLEAR_MARGIN_CSS = { @@ -290,18 +292,21 @@ var LayoutGapStyleBuilder = /** @class */ (function (_super) { var items = parent.items; if (gapValue.endsWith(GRID_SPECIFIER)) { gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER)); + // For each `element` children, set the padding /** @type {?} */ var paddingStyles = buildGridPadding(gapValue, parent.directionality); this._styler.applyStyleToElements(paddingStyles, parent.items); } else { /** @type {?} */ - var lastItem = items.pop(); + var lastItem = (/** @type {?} */ (items.pop())); + // For each `element` children EXCEPT the last, + // set the margin right/bottom styles... /** @type {?} */ var gapCss = buildGapCSS(gapValue, parent); this._styler.applyStyleToElements(gapCss, items); // Clear all gaps for all visible elements - this._styler.applyStyleToElements(CLEAR_MARGIN_CSS, [/** @type {?} */ ((lastItem))]); + this._styler.applyStyleToElements(CLEAR_MARGIN_CSS, [lastItem]); } }; LayoutGapStyleBuilder.decorators = [ @@ -311,7 +316,7 @@ var LayoutGapStyleBuilder = /** @class */ (function (_super) { LayoutGapStyleBuilder.ctorParameters = function () { return [ { type: core$1.StyleUtils } ]; }; - /** @nocollapse */ LayoutGapStyleBuilder.ngInjectableDef = core.defineInjectable({ factory: function LayoutGapStyleBuilder_Factory() { return new LayoutGapStyleBuilder(core.inject(core$1.StyleUtils)); }, token: LayoutGapStyleBuilder, providedIn: "root" }); + /** @nocollapse */ LayoutGapStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function LayoutGapStyleBuilder_Factory() { return new LayoutGapStyleBuilder(core.ɵɵinject(core$1.StyleUtils)); }, token: LayoutGapStyleBuilder, providedIn: "root" }); return LayoutGapStyleBuilder; }(core$1.StyleBuilder)); /** @type {?} */ @@ -329,10 +334,7 @@ var selector$1 = "\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayo */ var LayoutGapDirective = /** @class */ (function (_super) { __extends(LayoutGapDirective, _super); - function LayoutGapDirective(elRef, zone, directionality, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + function LayoutGapDirective(elRef, zone, directionality, styleUtils, styleBuilder, marshal) { var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; _this.elRef = elRef; _this.zone = zone; @@ -341,6 +343,7 @@ var LayoutGapDirective = /** @class */ (function (_super) { _this.styleBuilder = styleBuilder; _this.marshal = marshal; _this.layout = 'row'; // default flex-direction + // default flex-direction _this.DIRECTIVE_KEY = 'layout-gap'; _this.observerSubject = new rxjs.Subject(); /** @type {?} */ @@ -356,6 +359,7 @@ var LayoutGapDirective = /** @class */ (function (_super) { /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */ get: /** * Special accessor to query for all child 'element' nodes regardless of type, class, etc + * @protected * @return {?} */ function () { @@ -375,10 +379,17 @@ var LayoutGapDirective = /** @class */ (function (_super) { // ********************************************* // Lifecycle Methods // ********************************************* + // ********************************************* + // Lifecycle Methods + // ********************************************* /** * @return {?} */ - LayoutGapDirective.prototype.ngAfterContentInit = /** + LayoutGapDirective.prototype.ngAfterContentInit = + // ********************************************* + // Lifecycle Methods + // ********************************************* + /** * @return {?} */ function () { @@ -403,13 +414,22 @@ var LayoutGapDirective = /** @class */ (function (_super) { /** * Cache the parent container 'flex-direction' and update the 'margin' styles */ + // ********************************************* + // Protected methods + // ********************************************* /** * Cache the parent container 'flex-direction' and update the 'margin' styles + * @protected * @param {?} matcher * @return {?} */ - LayoutGapDirective.prototype.onLayoutChange = /** + LayoutGapDirective.prototype.onLayoutChange = + // ********************************************* + // Protected methods + // ********************************************* + /** * Cache the parent container 'flex-direction' and update the 'margin' styles + * @protected * @param {?} matcher * @return {?} */ @@ -417,10 +437,15 @@ var LayoutGapDirective = /** @class */ (function (_super) { var _this = this; /** @type {?} */ var layout = matcher.value; + // Make sure to filter out 'wrap' option /** @type {?} */ var direction = layout.split(' '); this.layout = direction[0]; - if (!LAYOUT_VALUES.find(function (x) { return x === _this.layout; })) { + if (!LAYOUT_VALUES.find((/** + * @param {?} x + * @return {?} + */ + function (x) { return x === _this.layout; }))) { this.layout = 'row'; } this.triggerUpdate(); @@ -430,23 +455,32 @@ var LayoutGapDirective = /** @class */ (function (_super) { */ /** * + * @protected * @param {?} value * @return {?} */ LayoutGapDirective.prototype.updateWithValue = /** * + * @protected * @param {?} value * @return {?} */ function (value) { var _this = this; - if (!value) { - value = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY); - } + // Gather all non-hidden Element nodes /** @type {?} */ var items = this.childrenNodes - .filter(function (el) { return el.nodeType === 1 && _this.willDisplay(el); }) - .sort(function (a, b) { + .filter((/** + * @param {?} el + * @return {?} + */ + function (el) { return el.nodeType === 1 && _this.willDisplay(el); })) + .sort((/** + * @param {?} a + * @param {?} b + * @return {?} + */ + function (a, b) { /** @type {?} */ var orderA = +_this.styler.lookupStyle(a, 'order'); /** @type {?} */ @@ -457,7 +491,7 @@ var LayoutGapDirective = /** @class */ (function (_super) { else { return orderA > orderB ? 1 : -1; } - }); + })); if (items.length > 0) { /** @type {?} */ var directionality = this.directionality.value; @@ -478,14 +512,41 @@ var LayoutGapDirective = /** @class */ (function (_super) { this.addStyles(value, { directionality: directionality, items: items, layout: layout }); } }; + /** We need to override clearStyles because in most cases mru isn't populated */ + /** + * We need to override clearStyles because in most cases mru isn't populated + * @protected + * @return {?} + */ + LayoutGapDirective.prototype.clearStyles = /** + * We need to override clearStyles because in most cases mru isn't populated + * @protected + * @return {?} + */ + function () { + var _a; + /** @type {?} */ + var gridMode = Object.keys(this.mru).length > 0; + /** @type {?} */ + var childrenStyle = gridMode ? 'padding' : + getMarginType(this.directionality.value, this.layout); + // If there are styles on the parent remove them + if (gridMode) { + _super.prototype.clearStyles.call(this); + } + // Then remove the children styles too + this.styleUtils.applyStyleToElements((_a = {}, _a[childrenStyle] = '', _a), this.childrenNodes); + }; /** Determine if an element will show or hide based on current activation */ /** * Determine if an element will show or hide based on current activation + * @protected * @param {?} source * @return {?} */ LayoutGapDirective.prototype.willDisplay = /** * Determine if an element will show or hide based on current activation + * @protected * @param {?} source * @return {?} */ @@ -493,32 +554,45 @@ var LayoutGapDirective = /** @class */ (function (_super) { /** @type {?} */ var value = this.marshal.getValue(source, 'show-hide'); return value === true || - (value === '' && this.styleUtils.lookupStyle(source, 'display') !== 'none'); + (value === undefined && this.styleUtils.lookupStyle(source, 'display') !== 'none'); }; /** + * @protected * @return {?} */ LayoutGapDirective.prototype.buildChildObservable = /** + * @protected * @return {?} */ function () { var _this = this; - this.zone.runOutsideAngular(function () { + this.zone.runOutsideAngular((/** + * @return {?} + */ + function () { if (typeof MutationObserver !== 'undefined') { - _this.observer = new MutationObserver(function (mutations) { + _this.observer = new MutationObserver((/** + * @param {?} mutations + * @return {?} + */ + function (mutations) { /** @type {?} */ - var validatedChanges = function (it) { + var validatedChanges = (/** + * @param {?} it + * @return {?} + */ + function (it) { return (it.addedNodes && it.addedNodes.length > 0) || (it.removedNodes && it.removedNodes.length > 0); - }; + }); // update gap styles only for child 'added' or 'removed' events if (mutations.some(validatedChanges)) { _this.observerSubject.next(); } - }); + })); _this.observer.observe(_this.nativeElement, { childList: true }); } - }); + })); }; /** @nocollapse */ LayoutGapDirective.ctorParameters = function () { return [ @@ -598,40 +672,43 @@ function buildGridMargin(value, directionality) { return { 'margin': marginTop + " " + marginRight + " " + marginBottom + " " + marginLeft }; } /** - * @param {?} gapValue - * @param {?} parent + * @param {?} directionality + * @param {?} layout * @return {?} */ -function buildGapCSS(gapValue, parent) { - /** @type {?} */ - var key; - /** @type {?} */ - var margins = __assign({}, CLEAR_MARGIN_CSS); - switch (parent.layout) { +function getMarginType(directionality, layout) { + switch (layout) { case 'column': - key = 'margin-bottom'; - break; + return 'margin-bottom'; case 'column-reverse': - key = 'margin-top'; - break; + return 'margin-top'; case 'row': - key = parent.directionality === 'rtl' ? 'margin-left' : 'margin-right'; - break; + return directionality === 'rtl' ? 'margin-left' : 'margin-right'; case 'row-reverse': - key = parent.directionality === 'rtl' ? 'margin-right' : 'margin-left'; - break; + return directionality === 'rtl' ? 'margin-right' : 'margin-left'; default: - key = parent.directionality === 'rtl' ? 'margin-left' : 'margin-right'; - break; + return directionality === 'rtl' ? 'margin-left' : 'margin-right'; } +} +/** + * @param {?} gapValue + * @param {?} parent + * @return {?} + */ +function buildGapCSS(gapValue, parent) { + /** @type {?} */ + var key = getMarginType(parent.directionality, parent.layout); + /** @type {?} */ + var margins = __assign({}, CLEAR_MARGIN_CSS); margins[key] = gapValue; return margins; } /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ + /** * Extends an object with the *enumerable* and *own* properties of one or more source objects, * similar to Object.assign. @@ -663,7 +740,7 @@ function extendObject(dest) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var FlexStyleBuilder = /** @class */ (function (_super) { __extends(FlexStyleBuilder, _super); @@ -686,6 +763,7 @@ var FlexStyleBuilder = /** @class */ (function (_super) { var _a = input.split(' '), grow = _a[0], shrink = _a[1], basisParts = _a.slice(2); /** @type {?} */ var basis = basisParts.join(' '); + // The flex-direction of this element's flex container. Defaults to 'row'. /** @type {?} */ var direction = (parent.direction.indexOf('column') > -1) ? 'column' : 'row'; /** @type {?} */ @@ -706,10 +784,24 @@ var FlexStyleBuilder = /** @class */ (function (_super) { var isValue = (hasCalc || hasUnits); grow = (grow == '0') ? 0 : grow; shrink = (shrink == '0') ? 0 : shrink; + // make box inflexible when shrink and grow are both zero + // should not set a min when the grow is zero + // should not set a max when the shrink is zero /** @type {?} */ var isFixed = !grow && !shrink; /** @type {?} */ var css = {}; + // flex-basis allows you to specify the initial/starting main-axis size of the element, + // before anything else is computed. It can either be a percentage or an absolute value. + // It is, however, not the breaking point for flex-grow/shrink properties + // + // flex-grow can be seen as this: + // 0: Do not stretch. Either size to element's content width, or obey 'flex-basis'. + // 1: (Default value). Stretch; will be the same size to all other flex items on + // the same row since they have a default value of 1. + // ≥2 (integer n): Stretch. Will be n times the size of other elements + // with 'flex-grow: 1' on the same row. + // Use `null` to clear existing styles. /** @type {?} */ var clearStyles = { 'max-width': null, @@ -744,7 +836,7 @@ var FlexStyleBuilder = /** @class */ (function (_super) { break; default: // Defaults to percentage sizing unless `px` is explicitly set - if (!isValue && !isPercent && !isNaN(/** @type {?} */ (basis))) { + if (!isValue && !isPercent && !isNaN((/** @type {?} */ (basis)))) { basis = basis + '%'; } // Fix for issue 280 @@ -811,7 +903,7 @@ var FlexStyleBuilder = /** @class */ (function (_super) { (hasCalc ? css[min] : grow + " " + shrink + " " + css[min]); } } - return /** @type {?} */ (extendObject(css, { 'box-sizing': 'border-box' })); + return (/** @type {?} */ (extendObject(css, { 'box-sizing': 'border-box' }))); }; FlexStyleBuilder.decorators = [ { type: core.Injectable, args: [{ providedIn: 'root' },] }, @@ -820,7 +912,7 @@ var FlexStyleBuilder = /** @class */ (function (_super) { FlexStyleBuilder.ctorParameters = function () { return [ { type: undefined, decorators: [{ type: core.Inject, args: [core$1.LAYOUT_CONFIG,] }] } ]; }; - /** @nocollapse */ FlexStyleBuilder.ngInjectableDef = core.defineInjectable({ factory: function FlexStyleBuilder_Factory() { return new FlexStyleBuilder(core.inject(core$1.LAYOUT_CONFIG)); }, token: FlexStyleBuilder, providedIn: "root" }); + /** @nocollapse */ FlexStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function FlexStyleBuilder_Factory() { return new FlexStyleBuilder(core.ɵɵinject(core$1.LAYOUT_CONFIG)); }, token: FlexStyleBuilder, providedIn: "root" }); return FlexStyleBuilder; }(core$1.StyleBuilder)); /** @type {?} */ @@ -857,6 +949,9 @@ var FlexDirective = /** @class */ (function (_super) { _this.marshal.trackValue(_this.parentElement, 'layout') .pipe(operators.takeUntil(_this.destroySubject)) .subscribe(_this.onLayoutChange.bind(_this)); + _this.marshal.trackValue(_this.nativeElement, 'layout-align') + .pipe(operators.takeUntil(_this.destroySubject)) + .subscribe(_this.triggerReflow.bind(_this)); } return _this; } @@ -899,12 +994,14 @@ var FlexDirective = /** @class */ (function (_super) { /** * Caches the parent container's 'flex-direction' and updates the element's style. * Used as a handler for layout change events from the parent flex container. + * @protected * @param {?} matcher * @return {?} */ FlexDirective.prototype.onLayoutChange = /** * Caches the parent container's 'flex-direction' and updates the element's style. * Used as a handler for layout change events from the parent flex container. + * @protected * @param {?} matcher * @return {?} */ @@ -920,11 +1017,13 @@ var FlexDirective = /** @class */ (function (_super) { /** Input to this is exclusively the basis input value */ /** * Input to this is exclusively the basis input value + * @protected * @param {?} value * @return {?} */ FlexDirective.prototype.updateWithValue = /** * Input to this is exclusively the basis input value + * @protected * @param {?} value * @return {?} */ @@ -932,7 +1031,7 @@ var FlexDirective = /** @class */ (function (_super) { /** @type {?} */ var addFlexToParent = this.layoutConfig.addFlexToParent !== false; if (!this.direction) { - this.direction = this.getFlexFlowDirection(/** @type {?} */ ((this.parentElement)), addFlexToParent); + this.direction = this.getFlexFlowDirection((/** @type {?} */ (this.parentElement)), addFlexToParent); } /** @type {?} */ var direction = this.direction; @@ -961,16 +1060,22 @@ var FlexDirective = /** @class */ (function (_super) { /** Trigger a style reflow, usually based on a shrink/grow input event */ /** * Trigger a style reflow, usually based on a shrink/grow input event + * @protected * @return {?} */ FlexDirective.prototype.triggerReflow = /** * Trigger a style reflow, usually based on a shrink/grow input event + * @protected * @return {?} */ function () { /** @type {?} */ - var parts = core$1.validateBasis(this.activatedValue, this.flexGrow, this.flexShrink); - this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, parts.join(' ')); + var activatedValue = this.activatedValue; + if (activatedValue !== undefined) { + /** @type {?} */ + var parts = core$1.validateBasis(activatedValue, this.flexGrow, this.flexShrink); + this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, parts.join(' ')); + } }; /** @nocollapse */ FlexDirective.ctorParameters = function () { return [ @@ -1009,7 +1114,7 @@ var flexColumnWrapCache = new Map(); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var FlexOrderStyleBuilder = /** @class */ (function (_super) { __extends(FlexOrderStyleBuilder, _super); @@ -1030,7 +1135,7 @@ var FlexOrderStyleBuilder = /** @class */ (function (_super) { FlexOrderStyleBuilder.decorators = [ { type: core.Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ FlexOrderStyleBuilder.ngInjectableDef = core.defineInjectable({ factory: function FlexOrderStyleBuilder_Factory() { return new FlexOrderStyleBuilder(); }, token: FlexOrderStyleBuilder, providedIn: "root" }); + /** @nocollapse */ FlexOrderStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function FlexOrderStyleBuilder_Factory() { return new FlexOrderStyleBuilder(); }, token: FlexOrderStyleBuilder, providedIn: "root" }); return FlexOrderStyleBuilder; }(core$1.StyleBuilder)); /** @type {?} */ @@ -1049,10 +1154,7 @@ var selector$3 = "\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlex */ var FlexOrderDirective = /** @class */ (function (_super) { __extends(FlexOrderDirective, _super); - function FlexOrderDirective(elRef, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + function FlexOrderDirective(elRef, styleUtils, styleBuilder, marshal) { var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; _this.elRef = elRef; _this.styleUtils = styleUtils; @@ -1089,7 +1191,7 @@ var DefaultFlexOrderDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var FlexOffsetStyleBuilder = /** @class */ (function (_super) { __extends(FlexOffsetStyleBuilder, _super); @@ -1127,7 +1229,7 @@ var FlexOffsetStyleBuilder = /** @class */ (function (_super) { FlexOffsetStyleBuilder.decorators = [ { type: core.Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ FlexOffsetStyleBuilder.ngInjectableDef = core.defineInjectable({ factory: function FlexOffsetStyleBuilder_Factory() { return new FlexOffsetStyleBuilder(); }, token: FlexOffsetStyleBuilder, providedIn: "root" }); + /** @nocollapse */ FlexOffsetStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function FlexOffsetStyleBuilder_Factory() { return new FlexOffsetStyleBuilder(); }, token: FlexOffsetStyleBuilder, providedIn: "root" }); return FlexOffsetStyleBuilder; }(core$1.StyleBuilder)); /** @type {?} */ @@ -1145,10 +1247,7 @@ var selector$4 = "\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxF */ var FlexOffsetDirective = /** @class */ (function (_super) { __extends(FlexOffsetDirective, _super); - function FlexOffsetDirective(elRef, directionality, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal, styler) { + function FlexOffsetDirective(elRef, directionality, styleBuilder, marshal, styler) { var _this = _super.call(this, elRef, styleBuilder, styler, marshal) || this; _this.elRef = elRef; _this.directionality = directionality; @@ -1174,24 +1273,34 @@ var FlexOffsetDirective = /** @class */ (function (_super) { * NOTE: this will assign `margin-left` if the parent flex-direction == 'row', * otherwise `margin-top` is used for the offset. */ + // ********************************************* + // Protected methods + // ********************************************* /** * Using the current fxFlexOffset value, update the inline CSS * NOTE: this will assign `margin-left` if the parent flex-direction == 'row', * otherwise `margin-top` is used for the offset. + * @protected * @param {?=} value * @return {?} */ - FlexOffsetDirective.prototype.updateWithValue = /** + FlexOffsetDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** * Using the current fxFlexOffset value, update the inline CSS * NOTE: this will assign `margin-left` if the parent flex-direction == 'row', * otherwise `margin-top` is used for the offset. + * @protected * @param {?=} value * @return {?} */ function (value) { if (value === void 0) { value = ''; } + // The flex-direction of this element's flex container. Defaults to 'row'. /** @type {?} */ - var layout = this.getFlexFlowDirection(/** @type {?} */ ((this.parentElement)), true); + var layout = this.getFlexFlowDirection((/** @type {?} */ (this.parentElement)), true); /** @type {?} */ var isRtl = this.directionality.value === 'rtl'; if (layout === 'row' && isRtl) { @@ -1241,7 +1350,7 @@ var flexOffsetCacheColumnLtr = new Map(); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var FlexAlignStyleBuilder = /** @class */ (function (_super) { __extends(FlexAlignStyleBuilder, _super); @@ -1277,7 +1386,7 @@ var FlexAlignStyleBuilder = /** @class */ (function (_super) { FlexAlignStyleBuilder.decorators = [ { type: core.Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ FlexAlignStyleBuilder.ngInjectableDef = core.defineInjectable({ factory: function FlexAlignStyleBuilder_Factory() { return new FlexAlignStyleBuilder(); }, token: FlexAlignStyleBuilder, providedIn: "root" }); + /** @nocollapse */ FlexAlignStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function FlexAlignStyleBuilder_Factory() { return new FlexAlignStyleBuilder(); }, token: FlexAlignStyleBuilder, providedIn: "root" }); return FlexAlignStyleBuilder; }(core$1.StyleBuilder)); /** @type {?} */ @@ -1296,10 +1405,7 @@ var selector$5 = "\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlex */ var FlexAlignDirective = /** @class */ (function (_super) { __extends(FlexAlignDirective, _super); - function FlexAlignDirective(elRef, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + function FlexAlignDirective(elRef, styleUtils, styleBuilder, marshal) { var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; _this.elRef = elRef; _this.styleUtils = styleUtils; @@ -1336,7 +1442,7 @@ var DefaultFlexAlignDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var FLEX_FILL_CSS = { @@ -1365,7 +1471,7 @@ var FlexFillStyleBuilder = /** @class */ (function (_super) { FlexFillStyleBuilder.decorators = [ { type: core.Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ FlexFillStyleBuilder.ngInjectableDef = core.defineInjectable({ factory: function FlexFillStyleBuilder_Factory() { return new FlexFillStyleBuilder(); }, token: FlexFillStyleBuilder, providedIn: "root" }); + /** @nocollapse */ FlexFillStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function FlexFillStyleBuilder_Factory() { return new FlexFillStyleBuilder(); }, token: FlexFillStyleBuilder, providedIn: "root" }); return FlexFillStyleBuilder; }(core$1.StyleBuilder)); /** @@ -1403,7 +1509,7 @@ var flexFillCache = new Map(); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var LayoutAlignStyleBuilder = /** @class */ (function (_super) { __extends(LayoutAlignStyleBuilder, _super); @@ -1475,24 +1581,23 @@ var LayoutAlignStyleBuilder = /** @class */ (function (_super) { break; case 'stretch': default: // 'stretch' - // 'stretch' css['align-items'] = css['align-content'] = 'stretch'; // default cross axis break; } - return /** @type {?} */ (extendObject(css, { - 'display': 'flex', + return (/** @type {?} */ (extendObject(css, { + 'display': parent.inline ? 'inline-flex' : 'flex', 'flex-direction': parent.layout, 'box-sizing': 'border-box', 'max-width': crossAxis === 'stretch' ? !isFlowHorizontal(parent.layout) ? '100%' : null : null, 'max-height': crossAxis === 'stretch' ? isFlowHorizontal(parent.layout) ? '100%' : null : null, - })); + }))); }; LayoutAlignStyleBuilder.decorators = [ { type: core.Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ LayoutAlignStyleBuilder.ngInjectableDef = core.defineInjectable({ factory: function LayoutAlignStyleBuilder_Factory() { return new LayoutAlignStyleBuilder(); }, token: LayoutAlignStyleBuilder, providedIn: "root" }); + /** @nocollapse */ LayoutAlignStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function LayoutAlignStyleBuilder_Factory() { return new LayoutAlignStyleBuilder(); }, token: LayoutAlignStyleBuilder, providedIn: "root" }); return LayoutAlignStyleBuilder; }(core$1.StyleBuilder)); /** @type {?} */ @@ -1515,17 +1620,16 @@ var selector$6 = "\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [ */ var LayoutAlignDirective = /** @class */ (function (_super) { __extends(LayoutAlignDirective, _super); - function LayoutAlignDirective(elRef, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + function LayoutAlignDirective(elRef, styleUtils, styleBuilder, marshal) { var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; _this.elRef = elRef; _this.styleUtils = styleUtils; _this.styleBuilder = styleBuilder; _this.marshal = marshal; _this.DIRECTIVE_KEY = 'layout-align'; - _this.layout = 'row'; + _this.layout = 'row'; // default flex-direction + // default flex-direction + _this.inline = false; // default inline value _this.init(); _this.marshal.trackValue(_this.nativeElement, 'layout') .pipe(operators.takeUntil(_this.destroySubject)) @@ -1538,52 +1642,82 @@ var LayoutAlignDirective = /** @class */ (function (_super) { /** * */ + // ********************************************* + // Protected methods + // ********************************************* /** * + * @protected * @param {?} value * @return {?} */ - LayoutAlignDirective.prototype.updateWithValue = /** + LayoutAlignDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** * + * @protected * @param {?} value * @return {?} */ function (value) { /** @type {?} */ var layout = this.layout || 'row'; - if (layout === 'row') { + /** @type {?} */ + var inline = this.inline; + if (layout === 'row' && inline) { + this.styleCache = layoutAlignHorizontalInlineCache; + } + else if (layout === 'row' && !inline) { this.styleCache = layoutAlignHorizontalCache; } - else if (layout === 'row-reverse') { + else if (layout === 'row-reverse' && inline) { + this.styleCache = layoutAlignHorizontalRevInlineCache; + } + else if (layout === 'row-reverse' && !inline) { this.styleCache = layoutAlignHorizontalRevCache; } - else if (layout === 'column') { + else if (layout === 'column' && inline) { + this.styleCache = layoutAlignVerticalInlineCache; + } + else if (layout === 'column' && !inline) { this.styleCache = layoutAlignVerticalCache; } - else if (layout === 'column-reverse') { + else if (layout === 'column-reverse' && inline) { + this.styleCache = layoutAlignVerticalRevInlineCache; + } + else if (layout === 'column-reverse' && !inline) { this.styleCache = layoutAlignVerticalRevCache; } - this.addStyles(value, { layout: layout }); + this.addStyles(value, { layout: layout, inline: inline }); }; /** * Cache the parent container 'flex-direction' and update the 'flex' styles */ /** * Cache the parent container 'flex-direction' and update the 'flex' styles + * @protected * @param {?} matcher * @return {?} */ LayoutAlignDirective.prototype.onLayoutChange = /** * Cache the parent container 'flex-direction' and update the 'flex' styles + * @protected * @param {?} matcher * @return {?} */ function (matcher) { var _this = this; /** @type {?} */ - var layout = matcher.value; - this.layout = layout.split(' ')[0]; - if (!LAYOUT_VALUES.find(function (x) { return x === _this.layout; })) { + var layoutKeys = matcher.value.split(' '); + this.layout = layoutKeys[0]; + this.inline = matcher.value.includes('inline'); + if (!LAYOUT_VALUES.find((/** + * @param {?} x + * @return {?} + */ + function (x) { return x === _this.layout; }))) { this.layout = 'row'; } this.triggerUpdate(); @@ -1617,10 +1751,18 @@ var layoutAlignVerticalCache = new Map(); var layoutAlignHorizontalRevCache = new Map(); /** @type {?} */ var layoutAlignVerticalRevCache = new Map(); +/** @type {?} */ +var layoutAlignHorizontalInlineCache = new Map(); +/** @type {?} */ +var layoutAlignVerticalInlineCache = new Map(); +/** @type {?} */ +var layoutAlignHorizontalRevInlineCache = new Map(); +/** @type {?} */ +var layoutAlignVerticalRevInlineCache = new Map(); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var ALL_DIRECTIVES = [ diff --git a/bundles/flex-layout-flex.umd.js.map b/bundles/flex-layout-flex.umd.js.map index 329793f79..2b9879825 100644 --- a/bundles/flex-layout-flex.umd.js.map +++ b/bundles/flex-layout-flex.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"flex-layout-flex.umd.js","sources":["../../src/lib/flex/module.ts","../../src/lib/flex/layout-align/layout-align.ts","../../src/lib/flex/flex-fill/flex-fill.ts","../../src/lib/flex/flex-align/flex-align.ts","../../src/lib/flex/flex-offset/flex-offset.ts","../../src/lib/flex/flex-order/flex-order.ts","../../src/lib/flex/flex/flex.ts","../../src/lib/utils/object-extend.ts","../../src/lib/flex/layout-gap/layout-gap.ts","../../src/lib/flex/layout/layout.ts","../../src/lib/utils/layout-validator.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 {NgModule} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultLayoutDirective} from './layout/layout';\nimport {DefaultLayoutGapDirective} from './layout-gap/layout-gap';\nimport {DefaultFlexDirective} from './flex/flex';\nimport {DefaultFlexOrderDirective} from './flex-order/flex-order';\nimport {DefaultFlexOffsetDirective} from './flex-offset/flex-offset';\nimport {DefaultFlexAlignDirective} from './flex-align/flex-align';\nimport {FlexFillDirective} from './flex-fill/flex-fill';\nimport {DefaultLayoutAlignDirective} from './layout-align/layout-align';\n\n\nconst ALL_DIRECTIVES = [\n DefaultLayoutDirective,\n DefaultLayoutGapDirective,\n DefaultLayoutAlignDirective,\n DefaultFlexOrderDirective,\n DefaultFlexOffsetDirective,\n FlexFillDirective,\n DefaultFlexAlignDirective,\n DefaultFlexDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the Flex API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule, BidiModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class FlexModule {\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {extendObject} from '../../utils/object-extend';\nimport {LAYOUT_VALUES, isFlowHorizontal} from '../../utils/layout-validator';\n\nexport interface LayoutAlignParent {\n layout: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class LayoutAlignStyleBuilder extends StyleBuilder {\n buildStyles(align: string, parent: LayoutAlignParent) {\n const css: StyleDefinition = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['justify-content'] = 'center';\n break;\n case 'space-around':\n css['justify-content'] = 'space-around';\n break;\n case 'space-between':\n css['justify-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['justify-content'] = 'space-evenly';\n break;\n case 'end':\n case 'flex-end':\n css['justify-content'] = 'flex-end';\n break;\n case 'start':\n case 'flex-start':\n default :\n css['justify-content'] = 'flex-start'; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'flex-start':\n css['align-items'] = css['align-content'] = 'flex-start';\n break;\n case 'center':\n css['align-items'] = css['align-content'] = 'center';\n break;\n case 'end':\n case 'flex-end':\n css['align-items'] = css['align-content'] = 'flex-end';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n css['align-items'] = 'stretch';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n css['align-items'] = 'stretch';\n break;\n case 'baseline':\n css['align-content'] = 'stretch';\n css['align-items'] = 'baseline';\n break;\n case 'stretch':\n default : // 'stretch'\n css['align-items'] = css['align-content'] = 'stretch'; // default cross axis\n break;\n }\n\n return extendObject(css, {\n 'display' : 'flex',\n 'flex-direction' : parent.layout,\n 'box-sizing' : 'border-box',\n 'max-width': crossAxis === 'stretch' ?\n !isFlowHorizontal(parent.layout) ? '100%' : null : null,\n 'max-height': crossAxis === 'stretch' ?\n isFlowHorizontal(parent.layout) ? '100%' : null : null,\n }) as StyleDefinition;\n }\n}\n\nconst inputs = [\n 'fxLayoutAlign', 'fxLayoutAlign.xs', 'fxLayoutAlign.sm', 'fxLayoutAlign.md',\n 'fxLayoutAlign.lg', 'fxLayoutAlign.xl', 'fxLayoutAlign.lt-sm', 'fxLayoutAlign.lt-md',\n 'fxLayoutAlign.lt-lg', 'fxLayoutAlign.lt-xl', 'fxLayoutAlign.gt-xs', 'fxLayoutAlign.gt-sm',\n 'fxLayoutAlign.gt-md', 'fxLayoutAlign.gt-lg'\n];\nconst selector = `\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n`;\n\n/**\n * 'layout-align' flexbox styling directive\n * Defines positioning of child elements along main and cross axis in a layout container\n * Optional values: {main-axis} values or {main-axis cross-axis} value pairs\n *\n * @see https://css-tricks.com/almanac/properties/j/justify-content/\n * @see https://css-tricks.com/almanac/properties/a/align-items/\n * @see https://css-tricks.com/almanac/properties/a/align-content/\n */\nexport class LayoutAlignDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'layout-align';\n protected layout = 'row'; // default flex-direction\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutAlignStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n this.marshal.trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n *\n */\n protected updateWithValue(value: string) {\n const layout = this.layout || 'row';\n if (layout === 'row') {\n this.styleCache = layoutAlignHorizontalCache;\n } else if (layout === 'row-reverse') {\n this.styleCache = layoutAlignHorizontalRevCache;\n } else if (layout === 'column') {\n this.styleCache = layoutAlignVerticalCache;\n } else if (layout === 'column-reverse') {\n this.styleCache = layoutAlignVerticalRevCache;\n }\n this.addStyles(value, {layout});\n }\n\n /**\n * Cache the parent container 'flex-direction' and update the 'flex' styles\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n this.layout = layout.split(' ')[0];\n if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutAlignDirective extends LayoutAlignDirective {\n protected inputs = inputs;\n}\n\nconst layoutAlignHorizontalCache: Map = new Map();\nconst layoutAlignVerticalCache: Map = new Map();\nconst layoutAlignHorizontalRevCache: Map = new Map();\nconst layoutAlignVerticalRevCache: Map = new Map();\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 {Directive, ElementRef, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\nconst FLEX_FILL_CSS = {\n 'margin': 0,\n 'width': '100%',\n 'height': '100%',\n 'min-width': '100%',\n 'min-height': '100%'\n};\n\n@Injectable({providedIn: 'root'})\nexport class FlexFillStyleBuilder extends StyleBuilder {\n buildStyles(_input: string) {\n return FLEX_FILL_CSS;\n }\n}\n\n/**\n * 'fxFill' flexbox styling directive\n * Maximizes width and height of element in a layout container\n *\n * NOTE: fxFill is NOT responsive API!!\n */\n@Directive({selector: `[fxFill], [fxFlexFill]`})\nexport class FlexFillDirective extends BaseDirective2 {\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n protected styleBuilder: FlexFillStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.addStyles('');\n }\n\n protected styleCache = flexFillCache;\n}\n\nconst flexFillCache: Map = new Map();\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class FlexAlignStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n input = input || 'stretch';\n const styles: StyleDefinition = {};\n\n // Cross-axis\n switch (input) {\n case 'start':\n styles['align-self'] = 'flex-start';\n break;\n case 'end':\n styles['align-self'] = 'flex-end';\n break;\n default:\n styles['align-self'] = input;\n break;\n }\n\n return styles;\n }\n}\n\nconst inputs = [\n 'fxFlexAlign', 'fxFlexAlign.xs', 'fxFlexAlign.sm', 'fxFlexAlign.md',\n 'fxFlexAlign.lg', 'fxFlexAlign.xl', 'fxFlexAlign.lt-sm', 'fxFlexAlign.lt-md',\n 'fxFlexAlign.lt-lg', 'fxFlexAlign.lt-xl', 'fxFlexAlign.gt-xs', 'fxFlexAlign.gt-sm',\n 'fxFlexAlign.gt-md', 'fxFlexAlign.gt-lg'\n];\nconst selector = `\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n`;\n\n/**\n * 'flex-align' flexbox styling directive\n * Allows element-specific overrides for cross-axis alignments in a layout container\n * @see https://css-tricks.com/almanac/properties/a/align-self/\n */\nexport class FlexAlignDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'flex-align';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexAlignStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = flexAlignCache;\n}\n\nconst flexAlignCache: Map = new Map();\n\n@Directive({selector, inputs})\nexport class DefaultFlexAlignDirective extends FlexAlignDirective {\n protected inputs = inputs;\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 {\n Directive,\n ElementRef,\n OnChanges,\n Optional,\n Injectable,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {isFlowHorizontal} from '../../utils/layout-validator';\n\nexport interface FlexOffsetParent {\n layout: string;\n isRtl: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FlexOffsetStyleBuilder extends StyleBuilder {\n buildStyles(offset: string, parent: FlexOffsetParent) {\n if (offset === '') {\n offset = '0';\n }\n const isPercent = String(offset).indexOf('%') > -1;\n const isPx = String(offset).indexOf('px') > -1;\n if (!isPx && !isPercent && !isNaN(+offset)) {\n offset = offset + '%';\n }\n const horizontalLayoutKey = parent.isRtl ? 'margin-right' : 'margin-left';\n const styles: StyleDefinition = isFlowHorizontal(parent.layout) ?\n {[horizontalLayoutKey]: `${offset}`} : {'margin-top': `${offset}`};\n\n return styles;\n }\n}\n\nconst inputs = [\n 'fxFlexOffset', 'fxFlexOffset.xs', 'fxFlexOffset.sm', 'fxFlexOffset.md',\n 'fxFlexOffset.lg', 'fxFlexOffset.xl', 'fxFlexOffset.lt-sm', 'fxFlexOffset.lt-md',\n 'fxFlexOffset.lt-lg', 'fxFlexOffset.lt-xl', 'fxFlexOffset.gt-xs', 'fxFlexOffset.gt-sm',\n 'fxFlexOffset.gt-md', 'fxFlexOffset.gt-lg'\n];\nconst selector = `\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n`;\n\n/**\n * 'flex-offset' flexbox styling directive\n * Configures the 'margin-left' of the element in a layout container\n */\nexport class FlexOffsetDirective extends BaseDirective2 implements OnChanges {\n protected DIRECTIVE_KEY = 'flex-offset';\n\n constructor(protected elRef: ElementRef,\n protected directionality: Directionality,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexOffsetStyleBuilder,\n protected marshal: MediaMarshaller,\n protected styler: StyleUtils) {\n super(elRef, styleBuilder, styler, marshal);\n this.init([this.directionality.change]);\n // Parent DOM `layout-gap` with affect the nested child with `flex-offset`\n if (this.parentElement) {\n this.marshal\n .trackValue(this.parentElement, 'layout-gap')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerUpdate.bind(this));\n }\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Using the current fxFlexOffset value, update the inline CSS\n * NOTE: this will assign `margin-left` if the parent flex-direction == 'row',\n * otherwise `margin-top` is used for the offset.\n */\n protected updateWithValue(value: string|number = ''): void {\n // The flex-direction of this element's flex container. Defaults to 'row'.\n const layout = this.getFlexFlowDirection(this.parentElement!, true);\n const isRtl = this.directionality.value === 'rtl';\n if (layout === 'row' && isRtl) {\n this.styleCache = flexOffsetCacheRowRtl;\n } else if (layout === 'row' && !isRtl) {\n this.styleCache = flexOffsetCacheRowLtr;\n } else if (layout === 'column' && isRtl) {\n this.styleCache = flexOffsetCacheColumnRtl;\n } else if (layout === 'column' && !isRtl) {\n this.styleCache = flexOffsetCacheColumnLtr;\n }\n this.addStyles(value + '', {layout, isRtl});\n }\n}\n\n@Directive({selector, inputs})\nexport class DefaultFlexOffsetDirective extends FlexOffsetDirective {\n protected inputs = inputs;\n}\n\nconst flexOffsetCacheRowRtl: Map = new Map();\nconst flexOffsetCacheColumnRtl: Map = new Map();\nconst flexOffsetCacheRowLtr: Map = new Map();\nconst flexOffsetCacheColumnLtr: Map = new Map();\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 {Directive, ElementRef, OnChanges, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class FlexOrderStyleBuilder extends StyleBuilder {\n buildStyles(value: string) {\n return {order: (value && parseInt(value, 10)) || ''};\n }\n}\n\nconst inputs = [\n 'fxFlexOrder', 'fxFlexOrder.xs', 'fxFlexOrder.sm', 'fxFlexOrder.md',\n 'fxFlexOrder.lg', 'fxFlexOrder.xl', 'fxFlexOrder.lt-sm', 'fxFlexOrder.lt-md',\n 'fxFlexOrder.lt-lg', 'fxFlexOrder.lt-xl', 'fxFlexOrder.gt-xs', 'fxFlexOrder.gt-sm',\n 'fxFlexOrder.gt-md', 'fxFlexOrder.gt-lg'\n];\nconst selector = `\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n`;\n\n/**\n * 'flex-order' flexbox styling directive\n * Configures the positional ordering of the element in a sorted layout container\n * @see https://css-tricks.com/almanac/properties/o/order/\n */\nexport class FlexOrderDirective extends BaseDirective2 implements OnChanges {\n\n protected DIRECTIVE_KEY = 'flex-order';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexOrderStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = flexOrderCache;\n}\n\nconst flexOrderCache: Map = new Map();\n\n@Directive({selector, inputs})\nexport class DefaultFlexOrderDirective extends FlexOrderDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Inject, Injectable, Input} from '@angular/core';\nimport {\n BaseDirective2,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n StyleUtils,\n validateBasis,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {extendObject} from '../../utils/object-extend';\nimport {isFlowHorizontal} from '../../utils/layout-validator';\n\ninterface FlexBuilderParent {\n direction: string;\n hasWrap: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FlexStyleBuilder extends StyleBuilder {\n constructor(@Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions) {\n super();\n }\n buildStyles(input: string, parent: FlexBuilderParent) {\n let [grow, shrink, ...basisParts]: (string|number)[] = input.split(' ');\n let basis = basisParts.join(' ');\n\n // The flex-direction of this element's flex container. Defaults to 'row'.\n const direction = (parent.direction.indexOf('column') > -1) ? 'column' : 'row';\n\n const max = isFlowHorizontal(direction) ? 'max-width' : 'max-height';\n const min = isFlowHorizontal(direction) ? 'min-width' : 'min-height';\n\n const hasCalc = String(basis).indexOf('calc') > -1;\n const usingCalc = hasCalc || (basis === 'auto');\n const isPercent = String(basis).indexOf('%') > -1 && !hasCalc;\n const hasUnits = String(basis).indexOf('px') > -1 || String(basis).indexOf('rem') > -1 ||\n String(basis).indexOf('em') > -1 || String(basis).indexOf('vw') > -1 ||\n String(basis).indexOf('vh') > -1;\n\n let isValue = (hasCalc || hasUnits);\n\n grow = (grow == '0') ? 0 : grow;\n shrink = (shrink == '0') ? 0 : shrink;\n\n // make box inflexible when shrink and grow are both zero\n // should not set a min when the grow is zero\n // should not set a max when the shrink is zero\n const isFixed = !grow && !shrink;\n\n let css: {[key: string]: string | number | null} = {};\n\n // flex-basis allows you to specify the initial/starting main-axis size of the element,\n // before anything else is computed. It can either be a percentage or an absolute value.\n // It is, however, not the breaking point for flex-grow/shrink properties\n //\n // flex-grow can be seen as this:\n // 0: Do not stretch. Either size to element's content width, or obey 'flex-basis'.\n // 1: (Default value). Stretch; will be the same size to all other flex items on\n // the same row since they have a default value of 1.\n // ≥2 (integer n): Stretch. Will be n times the size of other elements\n // with 'flex-grow: 1' on the same row.\n\n // Use `null` to clear existing styles.\n const clearStyles = {\n 'max-width': null,\n 'max-height': null,\n 'min-width': null,\n 'min-height': null\n };\n switch (basis || '') {\n case '':\n const useColumnBasisZero = this.layoutConfig.useColumnBasisZero !== false;\n basis = direction === 'row' ? '0%' : (useColumnBasisZero ? '0.000000001px' : 'auto');\n break;\n case 'initial': // default\n case 'nogrow':\n grow = 0;\n basis = 'auto';\n break;\n case 'grow':\n basis = '100%';\n break;\n case 'noshrink':\n shrink = 0;\n basis = 'auto';\n break;\n case 'auto':\n break;\n case 'none':\n grow = 0;\n shrink = 0;\n basis = 'auto';\n break;\n default:\n // Defaults to percentage sizing unless `px` is explicitly set\n if (!isValue && !isPercent && !isNaN(basis as any)) {\n basis = basis + '%';\n }\n\n // Fix for issue 280\n if (basis === '0%') {\n isValue = true;\n }\n\n if (basis === '0px') {\n basis = '0%';\n }\n\n // fix issue #5345\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': isValue ? basis : '100%'\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${isValue ? basis : '100%'}`\n });\n }\n\n break;\n }\n\n if (!(css['flex'] || css['flex-grow'])) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n }\n\n // Fix for issues 277, 534, and 728\n if (basis !== '0%' && basis !== '0px' && basis !== '0.000000001px' && basis !== 'auto') {\n css[min] = isFixed || (isValue && grow) ? basis : null;\n css[max] = isFixed || (!usingCalc && shrink) ? basis : null;\n }\n\n // Fix for issue 528\n if (!css[min] && !css[max]) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n } else {\n // Fix for issue 660\n if (parent.hasWrap) {\n css[hasCalc ? 'flex-basis' : 'flex'] = css[max] ?\n (hasCalc ? css[max] : `${grow} ${shrink} ${css[max]}`) :\n (hasCalc ? css[min] : `${grow} ${shrink} ${css[min]}`);\n }\n }\n\n return extendObject(css, {'box-sizing': 'border-box'}) as StyleDefinition;\n }\n}\n\nconst inputs = [\n 'fxFlex', 'fxFlex.xs', 'fxFlex.sm', 'fxFlex.md',\n 'fxFlex.lg', 'fxFlex.xl', 'fxFlex.lt-sm', 'fxFlex.lt-md',\n 'fxFlex.lt-lg', 'fxFlex.lt-xl', 'fxFlex.gt-xs', 'fxFlex.gt-sm',\n 'fxFlex.gt-md', 'fxFlex.gt-lg'\n];\nconst selector = `\n [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n [fxFlex.gt-md], [fxFlex.gt-lg]\n`;\n\n/**\n * Directive to control the size of a flex item using flex-basis, flex-grow, and flex-shrink.\n * Corresponds to the css `flex` shorthand property.\n *\n * @see https://css-tricks.com/snippets/css/a-guide-to-flexbox/\n */\nexport class FlexDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'flex';\n protected direction = '';\n protected wrap = false;\n\n\n @Input('fxShrink')\n get shrink(): string { return this.flexShrink; }\n set shrink(value: string) {\n this.flexShrink = value || '1';\n this.triggerReflow();\n }\n\n @Input('fxGrow')\n get grow(): string { return this.flexGrow; }\n set grow(value: string) {\n this.flexGrow = value || '1';\n this.triggerReflow();\n }\n\n protected flexGrow = '1';\n protected flexShrink = '1';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n protected styleBuilder: FlexStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n if (this.parentElement) {\n this.marshal.trackValue(this.parentElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n }\n\n /**\n * Caches the parent container's 'flex-direction' and updates the element's style.\n * Used as a handler for layout change events from the parent flex container.\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n const layoutParts = layout.split(' ');\n this.direction = layoutParts[0];\n this.wrap = layoutParts[1] !== undefined && layoutParts[1] === 'wrap';\n this.triggerUpdate();\n }\n\n /** Input to this is exclusively the basis input value */\n protected updateWithValue(value: string) {\n const addFlexToParent = this.layoutConfig.addFlexToParent !== false;\n if (!this.direction) {\n this.direction = this.getFlexFlowDirection(this.parentElement!, addFlexToParent);\n }\n const direction = this.direction;\n const isHorizontal = direction.startsWith('row');\n const hasWrap = this.wrap;\n if (isHorizontal && hasWrap) {\n this.styleCache = flexRowWrapCache;\n } else if (isHorizontal && !hasWrap) {\n this.styleCache = flexRowCache;\n } else if (!isHorizontal && hasWrap) {\n this.styleCache = flexColumnWrapCache;\n } else if (!isHorizontal && !hasWrap) {\n this.styleCache = flexColumnCache;\n }\n const basis = String(value).replace(';', '');\n const parts = validateBasis(basis, this.flexGrow, this.flexShrink);\n this.addStyles(parts.join(' '), {direction, hasWrap});\n }\n\n /** Trigger a style reflow, usually based on a shrink/grow input event */\n protected triggerReflow() {\n const parts = validateBasis(this.activatedValue, this.flexGrow, this.flexShrink);\n this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, parts.join(' '));\n }\n}\n\n@Directive({inputs, selector})\nexport class DefaultFlexDirective extends FlexDirective {\n protected inputs = inputs;\n}\n\nconst flexRowCache: Map = new Map();\nconst flexColumnCache: Map = new Map();\nconst flexRowWrapCache: Map = new Map();\nconst flexColumnWrapCache: Map = new Map();\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 */\nimport {\n Directive,\n ElementRef,\n Optional,\n OnDestroy,\n NgZone,\n Injectable,\n AfterContentInit,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {LAYOUT_VALUES} from '../../utils/layout-validator';\n\nexport interface LayoutGapParent {\n directionality: string;\n items: HTMLElement[];\n layout: string;\n}\n\nconst CLEAR_MARGIN_CSS = {\n 'margin-left': null,\n 'margin-right': null,\n 'margin-top': null,\n 'margin-bottom': null\n};\n\n@Injectable({providedIn: 'root'})\nexport class LayoutGapStyleBuilder extends StyleBuilder {\n constructor(private _styler: StyleUtils) {\n super();\n }\n\n buildStyles(gapValue: string, parent: LayoutGapParent) {\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n\n // Add the margin to the host element\n return buildGridMargin(gapValue, parent.directionality);\n } else {\n return {};\n }\n }\n\n sideEffect(gapValue: string, _styles: StyleDefinition, parent: LayoutGapParent) {\n const items = parent.items;\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n // For each `element` children, set the padding\n const paddingStyles = buildGridPadding(gapValue, parent.directionality);\n this._styler.applyStyleToElements(paddingStyles, parent.items);\n } else {\n const lastItem = items.pop();\n\n // For each `element` children EXCEPT the last,\n // set the margin right/bottom styles...\n const gapCss = buildGapCSS(gapValue, parent);\n this._styler.applyStyleToElements(gapCss, items);\n\n // Clear all gaps for all visible elements\n this._styler.applyStyleToElements(CLEAR_MARGIN_CSS, [lastItem!]);\n }\n }\n}\n\nconst inputs = [\n 'fxLayoutGap', 'fxLayoutGap.xs', 'fxLayoutGap.sm', 'fxLayoutGap.md',\n 'fxLayoutGap.lg', 'fxLayoutGap.xl', 'fxLayoutGap.lt-sm', 'fxLayoutGap.lt-md',\n 'fxLayoutGap.lt-lg', 'fxLayoutGap.lt-xl', 'fxLayoutGap.gt-xs', 'fxLayoutGap.gt-sm',\n 'fxLayoutGap.gt-md', 'fxLayoutGap.gt-lg'\n];\nconst selector = `\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n`;\n\n/**\n * 'layout-padding' styling directive\n * Defines padding of child elements in a layout container\n */\nexport class LayoutGapDirective extends BaseDirective2 implements AfterContentInit, OnDestroy {\n protected layout = 'row'; // default flex-direction\n protected DIRECTIVE_KEY = 'layout-gap';\n protected observerSubject = new Subject();\n\n /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */\n protected get childrenNodes(): HTMLElement[] {\n const obj = this.nativeElement.children;\n const buffer: any[] = [];\n\n // iterate backwards ensuring that length is an UInt32\n for (let i = obj.length; i--;) {\n buffer[i] = obj[i];\n }\n return buffer;\n }\n\n constructor(protected elRef: ElementRef,\n protected zone: NgZone,\n protected directionality: Directionality,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutGapStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n const extraTriggers = [this.directionality.change, this.observerSubject.asObservable()];\n this.init(extraTriggers);\n this.marshal\n .trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n ngAfterContentInit() {\n this.buildChildObservable();\n this.triggerUpdate();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Cache the parent container 'flex-direction' and update the 'margin' styles\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n // Make sure to filter out 'wrap' option\n const direction = layout.split(' ');\n this.layout = direction[0];\n if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n\n /**\n *\n */\n protected updateWithValue(value: string) {\n if (!value) {\n value = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY);\n }\n // Gather all non-hidden Element nodes\n const items = this.childrenNodes\n .filter(el => el.nodeType === 1 && this.willDisplay(el))\n .sort((a, b) => {\n const orderA = +this.styler.lookupStyle(a, 'order');\n const orderB = +this.styler.lookupStyle(b, 'order');\n if (isNaN(orderA) || isNaN(orderB) || orderA === orderB) {\n return 0;\n } else {\n return orderA > orderB ? 1 : -1;\n }\n });\n\n if (items.length > 0) {\n const directionality = this.directionality.value;\n const layout = this.layout;\n if (layout === 'row' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheRowRtl;\n } else if (layout === 'row' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheRowLtr;\n } else if (layout === 'column' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheColumnRtl;\n } else if (layout === 'column' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheColumnLtr;\n }\n this.addStyles(value, {directionality, items, layout});\n }\n }\n\n /** Determine if an element will show or hide based on current activation */\n protected willDisplay(source: HTMLElement): boolean {\n const value = this.marshal.getValue(source, 'show-hide');\n return value === true ||\n (value === '' && this.styleUtils.lookupStyle(source, 'display') !== 'none');\n }\n\n protected buildChildObservable(): void {\n this.zone.runOutsideAngular(() => {\n if (typeof MutationObserver !== 'undefined') {\n this.observer = new MutationObserver((mutations: MutationRecord[]) => {\n const validatedChanges = (it: MutationRecord): boolean => {\n return (it.addedNodes && it.addedNodes.length > 0) ||\n (it.removedNodes && it.removedNodes.length > 0);\n };\n\n // update gap styles only for child 'added' or 'removed' events\n if (mutations.some(validatedChanges)) {\n this.observerSubject.next();\n }\n });\n this.observer.observe(this.nativeElement, {childList: true});\n }\n });\n }\n\n protected observer?: MutationObserver;\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutGapDirective extends LayoutGapDirective {\n protected inputs = inputs;\n}\n\nconst layoutGapCacheRowRtl: Map = new Map();\nconst layoutGapCacheColumnRtl: Map = new Map();\nconst layoutGapCacheRowLtr: Map = new Map();\nconst layoutGapCacheColumnLtr: Map = new Map();\n\nconst GRID_SPECIFIER = ' grid';\n\nfunction buildGridPadding(value: string, directionality: string): StyleDefinition {\n let paddingTop = '0px', paddingRight = '0px', paddingBottom = value, paddingLeft = '0px';\n\n if (directionality === 'rtl') {\n paddingLeft = value;\n } else {\n paddingRight = value;\n }\n\n return {'padding': `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`};\n}\n\nfunction buildGridMargin(value: string, directionality: string): StyleDefinition {\n let marginTop = '0px', marginRight = '0px', marginBottom = '-' + value, marginLeft = '0px';\n\n if (directionality === 'rtl') {\n marginLeft = '-' + value;\n } else {\n marginRight = '-' + value;\n }\n\n return {'margin': `${marginTop} ${marginRight} ${marginBottom} ${marginLeft}`};\n}\n\nfunction buildGapCSS(gapValue: string,\n parent: {directionality: string, layout: string}): StyleDefinition {\n let key, margins: {[key: string]: string | null} = {...CLEAR_MARGIN_CSS};\n\n switch (parent.layout) {\n case 'column':\n key = 'margin-bottom';\n break;\n case 'column-reverse':\n key = 'margin-top';\n break;\n case 'row':\n key = parent.directionality === 'rtl' ? 'margin-left' : 'margin-right';\n break;\n case 'row-reverse':\n key = parent.directionality === 'rtl' ? 'margin-right' : 'margin-left';\n break;\n default :\n key = parent.directionality === 'rtl' ? 'margin-left' : 'margin-right';\n break;\n }\n margins[key] = gapValue;\n\n return margins;\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 {Directive, ElementRef, OnChanges, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\nimport {buildLayoutCSS} from '../../utils/layout-validator';\n\n@Injectable({providedIn: 'root'})\nexport class LayoutStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return buildLayoutCSS(input);\n }\n}\n\nconst inputs = [\n 'fxLayout', 'fxLayout.xs', 'fxLayout.sm', 'fxLayout.md',\n 'fxLayout.lg', 'fxLayout.xl', 'fxLayout.lt-sm', 'fxLayout.lt-md',\n 'fxLayout.lt-lg', 'fxLayout.lt-xl', 'fxLayout.gt-xs', 'fxLayout.gt-sm',\n 'fxLayout.gt-md', 'fxLayout.gt-lg'\n];\nconst selector = `\n [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],\n [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md],\n [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm],\n [fxLayout.gt-md], [fxLayout.gt-lg]\n`;\n\n/**\n * 'layout' flexbox styling directive\n * Defines the positioning flow direction for the child elements: row or column\n * Optional values: column or row (default)\n * @see https://css-tricks.com/almanac/properties/f/flex-direction/\n *\n */\nexport class LayoutDirective extends BaseDirective2 implements OnChanges {\n\n protected DIRECTIVE_KEY = 'layout';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = layoutCache;\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutDirective extends LayoutDirective {\n protected inputs = inputs;\n}\n\nconst layoutCache: Map = new Map();\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='' 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 : 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","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\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 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) : new P(function (resolve) { resolve(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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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 __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\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)) result[k] = mod[k];\r\n result.default = 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"],"names":["CoreModule","BidiModule","NgModule","Directive","selector","inputs","tslib_1.__extends","BaseDirective2","MediaMarshaller","Optional","StyleUtils","ElementRef","takeUntil","StyleBuilder","Injectable","Directionality","Input","Inject","LAYOUT_CONFIG","validateBasis","tslib_1.__assign","NgZone","Subject"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"flex-layout-flex.umd.js","sources":["../../src/lib/flex/module.ts","../../src/lib/flex/layout-align/layout-align.ts","../../src/lib/flex/flex-fill/flex-fill.ts","../../src/lib/flex/flex-align/flex-align.ts","../../src/lib/flex/flex-offset/flex-offset.ts","../../src/lib/flex/flex-order/flex-order.ts","../../src/lib/flex/flex/flex.ts","../../src/lib/utils/object-extend.ts","../../src/lib/flex/layout-gap/layout-gap.ts","../../src/lib/flex/layout/layout.ts","../../src/lib/utils/layout-validator.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 {NgModule} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultLayoutDirective} from './layout/layout';\nimport {DefaultLayoutGapDirective} from './layout-gap/layout-gap';\nimport {DefaultFlexDirective} from './flex/flex';\nimport {DefaultFlexOrderDirective} from './flex-order/flex-order';\nimport {DefaultFlexOffsetDirective} from './flex-offset/flex-offset';\nimport {DefaultFlexAlignDirective} from './flex-align/flex-align';\nimport {FlexFillDirective} from './flex-fill/flex-fill';\nimport {DefaultLayoutAlignDirective} from './layout-align/layout-align';\n\n\nconst ALL_DIRECTIVES = [\n DefaultLayoutDirective,\n DefaultLayoutGapDirective,\n DefaultLayoutAlignDirective,\n DefaultFlexOrderDirective,\n DefaultFlexOffsetDirective,\n FlexFillDirective,\n DefaultFlexAlignDirective,\n DefaultFlexDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the Flex API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule, BidiModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class FlexModule {\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {extendObject} from '../../utils/object-extend';\nimport {LAYOUT_VALUES, isFlowHorizontal} from '../../utils/layout-validator';\n\nexport interface LayoutAlignParent {\n layout: string;\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class LayoutAlignStyleBuilder extends StyleBuilder {\n buildStyles(align: string, parent: LayoutAlignParent) {\n const css: StyleDefinition = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['justify-content'] = 'center';\n break;\n case 'space-around':\n css['justify-content'] = 'space-around';\n break;\n case 'space-between':\n css['justify-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['justify-content'] = 'space-evenly';\n break;\n case 'end':\n case 'flex-end':\n css['justify-content'] = 'flex-end';\n break;\n case 'start':\n case 'flex-start':\n default :\n css['justify-content'] = 'flex-start'; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'flex-start':\n css['align-items'] = css['align-content'] = 'flex-start';\n break;\n case 'center':\n css['align-items'] = css['align-content'] = 'center';\n break;\n case 'end':\n case 'flex-end':\n css['align-items'] = css['align-content'] = 'flex-end';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n css['align-items'] = 'stretch';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n css['align-items'] = 'stretch';\n break;\n case 'baseline':\n css['align-content'] = 'stretch';\n css['align-items'] = 'baseline';\n break;\n case 'stretch':\n default : // 'stretch'\n css['align-items'] = css['align-content'] = 'stretch'; // default cross axis\n break;\n }\n\n return extendObject(css, {\n 'display' : parent.inline ? 'inline-flex' : 'flex',\n 'flex-direction' : parent.layout,\n 'box-sizing' : 'border-box',\n 'max-width': crossAxis === 'stretch' ?\n !isFlowHorizontal(parent.layout) ? '100%' : null : null,\n 'max-height': crossAxis === 'stretch' ?\n isFlowHorizontal(parent.layout) ? '100%' : null : null,\n }) as StyleDefinition;\n }\n}\n\nconst inputs = [\n 'fxLayoutAlign', 'fxLayoutAlign.xs', 'fxLayoutAlign.sm', 'fxLayoutAlign.md',\n 'fxLayoutAlign.lg', 'fxLayoutAlign.xl', 'fxLayoutAlign.lt-sm', 'fxLayoutAlign.lt-md',\n 'fxLayoutAlign.lt-lg', 'fxLayoutAlign.lt-xl', 'fxLayoutAlign.gt-xs', 'fxLayoutAlign.gt-sm',\n 'fxLayoutAlign.gt-md', 'fxLayoutAlign.gt-lg'\n];\nconst selector = `\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n`;\n\n/**\n * 'layout-align' flexbox styling directive\n * Defines positioning of child elements along main and cross axis in a layout container\n * Optional values: {main-axis} values or {main-axis cross-axis} value pairs\n *\n * @see https://css-tricks.com/almanac/properties/j/justify-content/\n * @see https://css-tricks.com/almanac/properties/a/align-items/\n * @see https://css-tricks.com/almanac/properties/a/align-content/\n */\nexport class LayoutAlignDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'layout-align';\n protected layout = 'row'; // default flex-direction\n protected inline = false; // default inline value\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutAlignStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n this.marshal.trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n *\n */\n protected updateWithValue(value: string) {\n const layout = this.layout || 'row';\n const inline = this.inline;\n if (layout === 'row' && inline) {\n this.styleCache = layoutAlignHorizontalInlineCache;\n } else if (layout === 'row' && !inline) {\n this.styleCache = layoutAlignHorizontalCache;\n } else if (layout === 'row-reverse' && inline) {\n this.styleCache = layoutAlignHorizontalRevInlineCache;\n } else if (layout === 'row-reverse' && !inline) {\n this.styleCache = layoutAlignHorizontalRevCache;\n } else if (layout === 'column' && inline) {\n this.styleCache = layoutAlignVerticalInlineCache;\n } else if (layout === 'column' && !inline) {\n this.styleCache = layoutAlignVerticalCache;\n } else if (layout === 'column-reverse' && inline) {\n this.styleCache = layoutAlignVerticalRevInlineCache;\n } else if (layout === 'column-reverse' && !inline) {\n this.styleCache = layoutAlignVerticalRevCache;\n }\n this.addStyles(value, {layout, inline});\n }\n\n /**\n * Cache the parent container 'flex-direction' and update the 'flex' styles\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layoutKeys: string[] = matcher.value.split(' ');\n this.layout = layoutKeys[0];\n this.inline = matcher.value.includes('inline');\n if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutAlignDirective extends LayoutAlignDirective {\n protected inputs = inputs;\n}\n\nconst layoutAlignHorizontalCache: Map = new Map();\nconst layoutAlignVerticalCache: Map = new Map();\nconst layoutAlignHorizontalRevCache: Map = new Map();\nconst layoutAlignVerticalRevCache: Map = new Map();\nconst layoutAlignHorizontalInlineCache: Map = new Map();\nconst layoutAlignVerticalInlineCache: Map = new Map();\nconst layoutAlignHorizontalRevInlineCache: Map = new Map();\nconst layoutAlignVerticalRevInlineCache: Map = new Map();\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 {Directive, ElementRef, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\nconst FLEX_FILL_CSS = {\n 'margin': 0,\n 'width': '100%',\n 'height': '100%',\n 'min-width': '100%',\n 'min-height': '100%'\n};\n\n@Injectable({providedIn: 'root'})\nexport class FlexFillStyleBuilder extends StyleBuilder {\n buildStyles(_input: string) {\n return FLEX_FILL_CSS;\n }\n}\n\n/**\n * 'fxFill' flexbox styling directive\n * Maximizes width and height of element in a layout container\n *\n * NOTE: fxFill is NOT responsive API!!\n */\n@Directive({selector: `[fxFill], [fxFlexFill]`})\nexport class FlexFillDirective extends BaseDirective2 {\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n protected styleBuilder: FlexFillStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.addStyles('');\n }\n\n protected styleCache = flexFillCache;\n}\n\nconst flexFillCache: Map = new Map();\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class FlexAlignStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n input = input || 'stretch';\n const styles: StyleDefinition = {};\n\n // Cross-axis\n switch (input) {\n case 'start':\n styles['align-self'] = 'flex-start';\n break;\n case 'end':\n styles['align-self'] = 'flex-end';\n break;\n default:\n styles['align-self'] = input;\n break;\n }\n\n return styles;\n }\n}\n\nconst inputs = [\n 'fxFlexAlign', 'fxFlexAlign.xs', 'fxFlexAlign.sm', 'fxFlexAlign.md',\n 'fxFlexAlign.lg', 'fxFlexAlign.xl', 'fxFlexAlign.lt-sm', 'fxFlexAlign.lt-md',\n 'fxFlexAlign.lt-lg', 'fxFlexAlign.lt-xl', 'fxFlexAlign.gt-xs', 'fxFlexAlign.gt-sm',\n 'fxFlexAlign.gt-md', 'fxFlexAlign.gt-lg'\n];\nconst selector = `\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n`;\n\n/**\n * 'flex-align' flexbox styling directive\n * Allows element-specific overrides for cross-axis alignments in a layout container\n * @see https://css-tricks.com/almanac/properties/a/align-self/\n */\nexport class FlexAlignDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'flex-align';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexAlignStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = flexAlignCache;\n}\n\nconst flexAlignCache: Map = new Map();\n\n@Directive({selector, inputs})\nexport class DefaultFlexAlignDirective extends FlexAlignDirective {\n protected inputs = inputs;\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 {\n Directive,\n ElementRef,\n OnChanges,\n Optional,\n Injectable,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {isFlowHorizontal} from '../../utils/layout-validator';\n\nexport interface FlexOffsetParent {\n layout: string;\n isRtl: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FlexOffsetStyleBuilder extends StyleBuilder {\n buildStyles(offset: string, parent: FlexOffsetParent) {\n if (offset === '') {\n offset = '0';\n }\n const isPercent = String(offset).indexOf('%') > -1;\n const isPx = String(offset).indexOf('px') > -1;\n if (!isPx && !isPercent && !isNaN(+offset)) {\n offset = offset + '%';\n }\n const horizontalLayoutKey = parent.isRtl ? 'margin-right' : 'margin-left';\n const styles: StyleDefinition = isFlowHorizontal(parent.layout) ?\n {[horizontalLayoutKey]: `${offset}`} : {'margin-top': `${offset}`};\n\n return styles;\n }\n}\n\nconst inputs = [\n 'fxFlexOffset', 'fxFlexOffset.xs', 'fxFlexOffset.sm', 'fxFlexOffset.md',\n 'fxFlexOffset.lg', 'fxFlexOffset.xl', 'fxFlexOffset.lt-sm', 'fxFlexOffset.lt-md',\n 'fxFlexOffset.lt-lg', 'fxFlexOffset.lt-xl', 'fxFlexOffset.gt-xs', 'fxFlexOffset.gt-sm',\n 'fxFlexOffset.gt-md', 'fxFlexOffset.gt-lg'\n];\nconst selector = `\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n`;\n\n/**\n * 'flex-offset' flexbox styling directive\n * Configures the 'margin-left' of the element in a layout container\n */\nexport class FlexOffsetDirective extends BaseDirective2 implements OnChanges {\n protected DIRECTIVE_KEY = 'flex-offset';\n\n constructor(protected elRef: ElementRef,\n protected directionality: Directionality,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexOffsetStyleBuilder,\n protected marshal: MediaMarshaller,\n protected styler: StyleUtils) {\n super(elRef, styleBuilder, styler, marshal);\n this.init([this.directionality.change]);\n // Parent DOM `layout-gap` with affect the nested child with `flex-offset`\n if (this.parentElement) {\n this.marshal\n .trackValue(this.parentElement, 'layout-gap')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerUpdate.bind(this));\n }\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Using the current fxFlexOffset value, update the inline CSS\n * NOTE: this will assign `margin-left` if the parent flex-direction == 'row',\n * otherwise `margin-top` is used for the offset.\n */\n protected updateWithValue(value: string|number = ''): void {\n // The flex-direction of this element's flex container. Defaults to 'row'.\n const layout = this.getFlexFlowDirection(this.parentElement!, true);\n const isRtl = this.directionality.value === 'rtl';\n if (layout === 'row' && isRtl) {\n this.styleCache = flexOffsetCacheRowRtl;\n } else if (layout === 'row' && !isRtl) {\n this.styleCache = flexOffsetCacheRowLtr;\n } else if (layout === 'column' && isRtl) {\n this.styleCache = flexOffsetCacheColumnRtl;\n } else if (layout === 'column' && !isRtl) {\n this.styleCache = flexOffsetCacheColumnLtr;\n }\n this.addStyles(value + '', {layout, isRtl});\n }\n}\n\n@Directive({selector, inputs})\nexport class DefaultFlexOffsetDirective extends FlexOffsetDirective {\n protected inputs = inputs;\n}\n\nconst flexOffsetCacheRowRtl: Map = new Map();\nconst flexOffsetCacheColumnRtl: Map = new Map();\nconst flexOffsetCacheRowLtr: Map = new Map();\nconst flexOffsetCacheColumnLtr: Map = new Map();\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 {Directive, ElementRef, OnChanges, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class FlexOrderStyleBuilder extends StyleBuilder {\n buildStyles(value: string) {\n return {order: (value && parseInt(value, 10)) || ''};\n }\n}\n\nconst inputs = [\n 'fxFlexOrder', 'fxFlexOrder.xs', 'fxFlexOrder.sm', 'fxFlexOrder.md',\n 'fxFlexOrder.lg', 'fxFlexOrder.xl', 'fxFlexOrder.lt-sm', 'fxFlexOrder.lt-md',\n 'fxFlexOrder.lt-lg', 'fxFlexOrder.lt-xl', 'fxFlexOrder.gt-xs', 'fxFlexOrder.gt-sm',\n 'fxFlexOrder.gt-md', 'fxFlexOrder.gt-lg'\n];\nconst selector = `\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n`;\n\n/**\n * 'flex-order' flexbox styling directive\n * Configures the positional ordering of the element in a sorted layout container\n * @see https://css-tricks.com/almanac/properties/o/order/\n */\nexport class FlexOrderDirective extends BaseDirective2 implements OnChanges {\n\n protected DIRECTIVE_KEY = 'flex-order';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexOrderStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = flexOrderCache;\n}\n\nconst flexOrderCache: Map = new Map();\n\n@Directive({selector, inputs})\nexport class DefaultFlexOrderDirective extends FlexOrderDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Inject, Injectable, Input} from '@angular/core';\nimport {\n BaseDirective2,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n StyleUtils,\n validateBasis,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {extendObject} from '../../utils/object-extend';\nimport {isFlowHorizontal} from '../../utils/layout-validator';\n\ninterface FlexBuilderParent {\n direction: string;\n hasWrap: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FlexStyleBuilder extends StyleBuilder {\n constructor(@Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions) {\n super();\n }\n buildStyles(input: string, parent: FlexBuilderParent) {\n let [grow, shrink, ...basisParts]: (string|number)[] = input.split(' ');\n let basis = basisParts.join(' ');\n\n // The flex-direction of this element's flex container. Defaults to 'row'.\n const direction = (parent.direction.indexOf('column') > -1) ? 'column' : 'row';\n\n const max = isFlowHorizontal(direction) ? 'max-width' : 'max-height';\n const min = isFlowHorizontal(direction) ? 'min-width' : 'min-height';\n\n const hasCalc = String(basis).indexOf('calc') > -1;\n const usingCalc = hasCalc || (basis === 'auto');\n const isPercent = String(basis).indexOf('%') > -1 && !hasCalc;\n const hasUnits = String(basis).indexOf('px') > -1 || String(basis).indexOf('rem') > -1 ||\n String(basis).indexOf('em') > -1 || String(basis).indexOf('vw') > -1 ||\n String(basis).indexOf('vh') > -1;\n\n let isValue = (hasCalc || hasUnits);\n\n grow = (grow == '0') ? 0 : grow;\n shrink = (shrink == '0') ? 0 : shrink;\n\n // make box inflexible when shrink and grow are both zero\n // should not set a min when the grow is zero\n // should not set a max when the shrink is zero\n const isFixed = !grow && !shrink;\n\n let css: {[key: string]: string | number | null} = {};\n\n // flex-basis allows you to specify the initial/starting main-axis size of the element,\n // before anything else is computed. It can either be a percentage or an absolute value.\n // It is, however, not the breaking point for flex-grow/shrink properties\n //\n // flex-grow can be seen as this:\n // 0: Do not stretch. Either size to element's content width, or obey 'flex-basis'.\n // 1: (Default value). Stretch; will be the same size to all other flex items on\n // the same row since they have a default value of 1.\n // ≥2 (integer n): Stretch. Will be n times the size of other elements\n // with 'flex-grow: 1' on the same row.\n\n // Use `null` to clear existing styles.\n const clearStyles = {\n 'max-width': null,\n 'max-height': null,\n 'min-width': null,\n 'min-height': null\n };\n switch (basis || '') {\n case '':\n const useColumnBasisZero = this.layoutConfig.useColumnBasisZero !== false;\n basis = direction === 'row' ? '0%' : (useColumnBasisZero ? '0.000000001px' : 'auto');\n break;\n case 'initial': // default\n case 'nogrow':\n grow = 0;\n basis = 'auto';\n break;\n case 'grow':\n basis = '100%';\n break;\n case 'noshrink':\n shrink = 0;\n basis = 'auto';\n break;\n case 'auto':\n break;\n case 'none':\n grow = 0;\n shrink = 0;\n basis = 'auto';\n break;\n default:\n // Defaults to percentage sizing unless `px` is explicitly set\n if (!isValue && !isPercent && !isNaN(basis as any)) {\n basis = basis + '%';\n }\n\n // Fix for issue 280\n if (basis === '0%') {\n isValue = true;\n }\n\n if (basis === '0px') {\n basis = '0%';\n }\n\n // fix issue #5345\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': isValue ? basis : '100%'\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${isValue ? basis : '100%'}`\n });\n }\n\n break;\n }\n\n if (!(css['flex'] || css['flex-grow'])) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n }\n\n // Fix for issues 277, 534, and 728\n if (basis !== '0%' && basis !== '0px' && basis !== '0.000000001px' && basis !== 'auto') {\n css[min] = isFixed || (isValue && grow) ? basis : null;\n css[max] = isFixed || (!usingCalc && shrink) ? basis : null;\n }\n\n // Fix for issue 528\n if (!css[min] && !css[max]) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n } else {\n // Fix for issue 660\n if (parent.hasWrap) {\n css[hasCalc ? 'flex-basis' : 'flex'] = css[max] ?\n (hasCalc ? css[max] : `${grow} ${shrink} ${css[max]}`) :\n (hasCalc ? css[min] : `${grow} ${shrink} ${css[min]}`);\n }\n }\n\n return extendObject(css, {'box-sizing': 'border-box'}) as StyleDefinition;\n }\n}\n\nconst inputs = [\n 'fxFlex', 'fxFlex.xs', 'fxFlex.sm', 'fxFlex.md',\n 'fxFlex.lg', 'fxFlex.xl', 'fxFlex.lt-sm', 'fxFlex.lt-md',\n 'fxFlex.lt-lg', 'fxFlex.lt-xl', 'fxFlex.gt-xs', 'fxFlex.gt-sm',\n 'fxFlex.gt-md', 'fxFlex.gt-lg'\n];\nconst selector = `\n [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n [fxFlex.gt-md], [fxFlex.gt-lg]\n`;\n\n/**\n * Directive to control the size of a flex item using flex-basis, flex-grow, and flex-shrink.\n * Corresponds to the css `flex` shorthand property.\n *\n * @see https://css-tricks.com/snippets/css/a-guide-to-flexbox/\n */\nexport class FlexDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'flex';\n protected direction = '';\n protected wrap = false;\n\n\n @Input('fxShrink')\n get shrink(): string { return this.flexShrink; }\n set shrink(value: string) {\n this.flexShrink = value || '1';\n this.triggerReflow();\n }\n\n @Input('fxGrow')\n get grow(): string { return this.flexGrow; }\n set grow(value: string) {\n this.flexGrow = value || '1';\n this.triggerReflow();\n }\n\n protected flexGrow = '1';\n protected flexShrink = '1';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n protected styleBuilder: FlexStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n if (this.parentElement) {\n this.marshal.trackValue(this.parentElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n this.marshal.trackValue(this.nativeElement, 'layout-align')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerReflow.bind(this));\n }\n }\n\n /**\n * Caches the parent container's 'flex-direction' and updates the element's style.\n * Used as a handler for layout change events from the parent flex container.\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n const layoutParts = layout.split(' ');\n this.direction = layoutParts[0];\n this.wrap = layoutParts[1] !== undefined && layoutParts[1] === 'wrap';\n this.triggerUpdate();\n }\n\n /** Input to this is exclusively the basis input value */\n protected updateWithValue(value: string) {\n const addFlexToParent = this.layoutConfig.addFlexToParent !== false;\n if (!this.direction) {\n this.direction = this.getFlexFlowDirection(this.parentElement!, addFlexToParent);\n }\n const direction = this.direction;\n const isHorizontal = direction.startsWith('row');\n const hasWrap = this.wrap;\n if (isHorizontal && hasWrap) {\n this.styleCache = flexRowWrapCache;\n } else if (isHorizontal && !hasWrap) {\n this.styleCache = flexRowCache;\n } else if (!isHorizontal && hasWrap) {\n this.styleCache = flexColumnWrapCache;\n } else if (!isHorizontal && !hasWrap) {\n this.styleCache = flexColumnCache;\n }\n const basis = String(value).replace(';', '');\n const parts = validateBasis(basis, this.flexGrow, this.flexShrink);\n this.addStyles(parts.join(' '), {direction, hasWrap});\n }\n\n /** Trigger a style reflow, usually based on a shrink/grow input event */\n protected triggerReflow() {\n const activatedValue = this.activatedValue;\n if (activatedValue !== undefined) {\n const parts = validateBasis(activatedValue, this.flexGrow, this.flexShrink);\n this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, parts.join(' '));\n }\n }\n}\n\n@Directive({inputs, selector})\nexport class DefaultFlexDirective extends FlexDirective {\n protected inputs = inputs;\n}\n\nconst flexRowCache: Map = new Map();\nconst flexColumnCache: Map = new Map();\nconst flexRowWrapCache: Map = new Map();\nconst flexColumnWrapCache: Map = new Map();\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 */\nimport {\n Directive,\n ElementRef,\n Optional,\n OnDestroy,\n NgZone,\n Injectable,\n AfterContentInit,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {LAYOUT_VALUES} from '../../utils/layout-validator';\n\nexport interface LayoutGapParent {\n directionality: string;\n items: HTMLElement[];\n layout: string;\n}\n\nconst CLEAR_MARGIN_CSS = {\n 'margin-left': null,\n 'margin-right': null,\n 'margin-top': null,\n 'margin-bottom': null\n};\n\n@Injectable({providedIn: 'root'})\nexport class LayoutGapStyleBuilder extends StyleBuilder {\n constructor(private _styler: StyleUtils) {\n super();\n }\n\n buildStyles(gapValue: string, parent: LayoutGapParent) {\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n\n // Add the margin to the host element\n return buildGridMargin(gapValue, parent.directionality);\n } else {\n return {};\n }\n }\n\n sideEffect(gapValue: string, _styles: StyleDefinition, parent: LayoutGapParent) {\n const items = parent.items;\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n // For each `element` children, set the padding\n const paddingStyles = buildGridPadding(gapValue, parent.directionality);\n this._styler.applyStyleToElements(paddingStyles, parent.items);\n } else {\n const lastItem = items.pop()!;\n\n // For each `element` children EXCEPT the last,\n // set the margin right/bottom styles...\n const gapCss = buildGapCSS(gapValue, parent);\n this._styler.applyStyleToElements(gapCss, items);\n\n // Clear all gaps for all visible elements\n this._styler.applyStyleToElements(CLEAR_MARGIN_CSS, [lastItem]);\n }\n }\n}\n\nconst inputs = [\n 'fxLayoutGap', 'fxLayoutGap.xs', 'fxLayoutGap.sm', 'fxLayoutGap.md',\n 'fxLayoutGap.lg', 'fxLayoutGap.xl', 'fxLayoutGap.lt-sm', 'fxLayoutGap.lt-md',\n 'fxLayoutGap.lt-lg', 'fxLayoutGap.lt-xl', 'fxLayoutGap.gt-xs', 'fxLayoutGap.gt-sm',\n 'fxLayoutGap.gt-md', 'fxLayoutGap.gt-lg'\n];\nconst selector = `\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n`;\n\n/**\n * 'layout-padding' styling directive\n * Defines padding of child elements in a layout container\n */\nexport class LayoutGapDirective extends BaseDirective2 implements AfterContentInit, OnDestroy {\n protected layout = 'row'; // default flex-direction\n protected DIRECTIVE_KEY = 'layout-gap';\n protected observerSubject = new Subject();\n\n /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */\n protected get childrenNodes(): HTMLElement[] {\n const obj = this.nativeElement.children;\n const buffer: any[] = [];\n\n // iterate backwards ensuring that length is an UInt32\n for (let i = obj.length; i--;) {\n buffer[i] = obj[i];\n }\n return buffer;\n }\n\n constructor(protected elRef: ElementRef,\n protected zone: NgZone,\n protected directionality: Directionality,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutGapStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n const extraTriggers = [this.directionality.change, this.observerSubject.asObservable()];\n this.init(extraTriggers);\n this.marshal\n .trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n ngAfterContentInit() {\n this.buildChildObservable();\n this.triggerUpdate();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Cache the parent container 'flex-direction' and update the 'margin' styles\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n // Make sure to filter out 'wrap' option\n const direction = layout.split(' ');\n this.layout = direction[0];\n if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n\n /**\n *\n */\n protected updateWithValue(value: string) {\n // Gather all non-hidden Element nodes\n const items = this.childrenNodes\n .filter(el => el.nodeType === 1 && this.willDisplay(el))\n .sort((a, b) => {\n const orderA = +this.styler.lookupStyle(a, 'order');\n const orderB = +this.styler.lookupStyle(b, 'order');\n if (isNaN(orderA) || isNaN(orderB) || orderA === orderB) {\n return 0;\n } else {\n return orderA > orderB ? 1 : -1;\n }\n });\n\n if (items.length > 0) {\n const directionality = this.directionality.value;\n const layout = this.layout;\n if (layout === 'row' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheRowRtl;\n } else if (layout === 'row' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheRowLtr;\n } else if (layout === 'column' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheColumnRtl;\n } else if (layout === 'column' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheColumnLtr;\n }\n this.addStyles(value, {directionality, items, layout});\n }\n }\n\n /** We need to override clearStyles because in most cases mru isn't populated */\n protected clearStyles() {\n const gridMode = Object.keys(this.mru).length > 0;\n const childrenStyle = gridMode ? 'padding' :\n getMarginType(this.directionality.value, this.layout);\n\n // If there are styles on the parent remove them\n if (gridMode) {\n super.clearStyles();\n }\n\n // Then remove the children styles too\n this.styleUtils.applyStyleToElements({[childrenStyle]: ''}, this.childrenNodes);\n }\n\n /** Determine if an element will show or hide based on current activation */\n protected willDisplay(source: HTMLElement): boolean {\n const value = this.marshal.getValue(source, 'show-hide');\n return value === true ||\n (value === undefined && this.styleUtils.lookupStyle(source, 'display') !== 'none');\n }\n\n protected buildChildObservable(): void {\n this.zone.runOutsideAngular(() => {\n if (typeof MutationObserver !== 'undefined') {\n this.observer = new MutationObserver((mutations: MutationRecord[]) => {\n const validatedChanges = (it: MutationRecord): boolean => {\n return (it.addedNodes && it.addedNodes.length > 0) ||\n (it.removedNodes && it.removedNodes.length > 0);\n };\n\n // update gap styles only for child 'added' or 'removed' events\n if (mutations.some(validatedChanges)) {\n this.observerSubject.next();\n }\n });\n this.observer.observe(this.nativeElement, {childList: true});\n }\n });\n }\n\n protected observer?: MutationObserver;\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutGapDirective extends LayoutGapDirective {\n protected inputs = inputs;\n}\n\nconst layoutGapCacheRowRtl: Map = new Map();\nconst layoutGapCacheColumnRtl: Map = new Map();\nconst layoutGapCacheRowLtr: Map = new Map();\nconst layoutGapCacheColumnLtr: Map = new Map();\n\nconst GRID_SPECIFIER = ' grid';\n\nfunction buildGridPadding(value: string, directionality: string): StyleDefinition {\n let paddingTop = '0px', paddingRight = '0px', paddingBottom = value, paddingLeft = '0px';\n\n if (directionality === 'rtl') {\n paddingLeft = value;\n } else {\n paddingRight = value;\n }\n\n return {'padding': `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`};\n}\n\nfunction buildGridMargin(value: string, directionality: string): StyleDefinition {\n let marginTop = '0px', marginRight = '0px', marginBottom = '-' + value, marginLeft = '0px';\n\n if (directionality === 'rtl') {\n marginLeft = '-' + value;\n } else {\n marginRight = '-' + value;\n }\n\n return {'margin': `${marginTop} ${marginRight} ${marginBottom} ${marginLeft}`};\n}\n\nfunction getMarginType(directionality: string, layout: string) {\n switch (layout) {\n case 'column':\n return 'margin-bottom';\n case 'column-reverse':\n return 'margin-top';\n case 'row':\n return directionality === 'rtl' ? 'margin-left' : 'margin-right';\n case 'row-reverse':\n return directionality === 'rtl' ? 'margin-right' : 'margin-left';\n default :\n return directionality === 'rtl' ? 'margin-left' : 'margin-right';\n }\n}\n\nfunction buildGapCSS(gapValue: string,\n parent: {directionality: string, layout: string}): StyleDefinition {\n const key = getMarginType(parent.directionality, parent.layout);\n const margins: {[key: string]: string | null} = {...CLEAR_MARGIN_CSS};\n margins[key] = gapValue;\n return margins;\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 {Directive, ElementRef, OnChanges, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\nimport {buildLayoutCSS} from '../../utils/layout-validator';\n\n@Injectable({providedIn: 'root'})\nexport class LayoutStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return buildLayoutCSS(input);\n }\n}\n\nconst inputs = [\n 'fxLayout', 'fxLayout.xs', 'fxLayout.sm', 'fxLayout.md',\n 'fxLayout.lg', 'fxLayout.xl', 'fxLayout.lt-sm', 'fxLayout.lt-md',\n 'fxLayout.lt-lg', 'fxLayout.lt-xl', 'fxLayout.gt-xs', 'fxLayout.gt-sm',\n 'fxLayout.gt-md', 'fxLayout.gt-lg'\n];\nconst selector = `\n [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],\n [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md],\n [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm],\n [fxLayout.gt-md], [fxLayout.gt-lg]\n`;\n\n/**\n * 'layout' flexbox styling directive\n * Defines the positioning flow direction for the child elements: row or column\n * Optional values: column or row (default)\n * @see https://css-tricks.com/almanac/properties/f/flex-direction/\n *\n */\nexport class LayoutDirective extends BaseDirective2 implements OnChanges {\n\n protected DIRECTIVE_KEY = 'layout';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = layoutCache;\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutDirective extends LayoutDirective {\n protected inputs = inputs;\n}\n\nconst layoutCache: Map = new Map();\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='' 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 : 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","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\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 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) : new P(function (resolve) { resolve(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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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 __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\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)) result[k] = mod[k];\r\n result.default = 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"],"names":["CoreModule","BidiModule","NgModule","Directive","selector","inputs","tslib_1.__extends","BaseDirective2","MediaMarshaller","Optional","StyleUtils","ElementRef","takeUntil","StyleBuilder","Injectable","Directionality","Input","Inject","LAYOUT_CONFIG","validateBasis","tslib_1.__assign","NgZone","Subject"],"mappings":"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"} \ No newline at end of file diff --git a/bundles/flex-layout-flex.umd.min.js b/bundles/flex-layout-flex.umd.min.js index d8f92eda1..d7e945fa5 100644 --- a/bundles/flex-layout-flex.umd.min.js +++ b/bundles/flex-layout-flex.umd.min.js @@ -5,5 +5,5 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/flex-layout/core"),require("@angular/cdk/bidi"),require("rxjs"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@angular/flex-layout/flex",["exports","@angular/core","@angular/flex-layout/core","@angular/cdk/bidi","rxjs","rxjs/operators"],t):t((e.ng=e.ng||{},e.ng["flex-layout"]=e.ng["flex-layout"]||{},e.ng["flex-layout"].flex={}),e.ng.core,e.ng.flexLayout.core,e.ng.cdk.bidi,e.rxjs,e.rxjs.operators)}(this,function(e,t,r,l,n,i){"use strict";function a(e,t){function r(){this.constructor=e}g(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function o(e){var t=s(e);return x(t[0],t[1],t[2])}function s(e){e=e?e.toLowerCase():"";var t=e.split(" "),r=t[0],l=t[1],n=t[2];return v.find(function(e){return e===r})||(r=v[0]),l===m&&(l=n!==m?n:"",n=m),[r,u(l),!!n]}function f(e){return s(e)[0].indexOf("row")>-1}function u(e){if(e)switch(e.toLowerCase()){case"reverse":case"wrap-reverse":case"reverse-wrap":e="wrap-reverse";break;case"no":case"none":case"nowrap":e="nowrap";break;default:e="wrap"}return e}function x(e,t,r){return void 0===t&&(t=null),void 0===r&&(r=!1),{display:r?"inline-flex":"flex","box-sizing":"border-box","flex-direction":e,"flex-wrap":t||null}}function c(e,t){var r="0px",l=e,n="0px";return"rtl"===t?n=e:r=e,{padding:"0px "+r+" "+l+" "+n}}function y(e,t){var r="0px",l="-"+e,n="0px";return"rtl"===t?n="-"+e:r="-"+e,{margin:"0px "+r+" "+l+" "+n}}function p(e,t){var r,l=h({},S);switch(t.layout){case"column":r="margin-bottom";break;case"column-reverse":r="margin-top";break;case"row":r="rtl"===t.directionality?"margin-left":"margin-right";break;case"row-reverse":r="rtl"===t.directionality?"margin-right":"margin-left";break;default:r="rtl"===t.directionality?"margin-left":"margin-right"}return l[r]=e,l}function d(e){for(var t=[],r=1;rn?1:-1});if(r.length>0){var l=this.directionality.value,n=this.layout;"row"===n&&"rtl"===l?this.styleCache=k:"row"===n&&"rtl"!==l?this.styleCache=C:"column"===n&&"rtl"===l?this.styleCache=E:"column"===n&&"rtl"!==l&&(this.styleCache=M),this.addStyles(e,{directionality:l,items:r,layout:n})}},o.prototype.willDisplay=function(e){var t=this.marshal.getValue(e,"show-hide");return!0===t||""===t&&"none"!==this.styleUtils.lookupStyle(e,"display")},o.prototype.buildChildObservable=function(){var e=this;this.zone.runOutsideAngular(function(){"undefined"!=typeof MutationObserver&&(e.observer=new MutationObserver(function(t){var r=function(e){return e.addedNodes&&e.addedNodes.length>0||e.removedNodes&&e.removedNodes.length>0};t.some(r)&&e.observerSubject.next()}),e.observer.observe(e.nativeElement,{childList:!0}))})},o.ctorParameters=function(){return[{type:t.ElementRef},{type:t.NgZone},{type:l.Directionality},{type:r.StyleUtils},{type:A,decorators:[{type:t.Optional}]},{type:r.MediaMarshaller}]},o}(r.BaseDirective2),j=function(e){function r(){var t=null!==e&&e.apply(this,arguments)||this;return t.inputs=I,t}return a(r,e),r.decorators=[{type:t.Directive,args:[{selector:"\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n",inputs:I}]}],r}(D),k=new Map,E=new Map,C=new Map,M=new Map,G=" grid",B=function(e){function l(t){var r=e.call(this)||this;return r.layoutConfig=t,r}return a(l,e),l.prototype.buildStyles=function(e,t){var r=e.split(" "),l=r[0],n=r[1],i=r.slice(2),a=i.join(" "),o=t.direction.indexOf("column")>-1?"column":"row",s=f(o)?"max-width":"max-height",u=f(o)?"min-width":"min-height",x=String(a).indexOf("calc")>-1,c=x||"auto"===a,y=String(a).indexOf("%")>-1&&!x,p=String(a).indexOf("px")>-1||String(a).indexOf("rem")>-1||String(a).indexOf("em")>-1||String(a).indexOf("vw")>-1||String(a).indexOf("vh")>-1,g=x||p;l="0"==l?0:l,n="0"==n?0:n;var h=!l&&!n,m={},v={"max-width":null,"max-height":null,"min-width":null,"min-height":null};switch(a||""){case"":var F=!1!==this.layoutConfig.useColumnBasisZero;a="row"===o?"0%":F?"0.000000001px":"auto";break;case"initial":case"nogrow":l=0,a="auto";break;case"grow":a="100%";break;case"noshrink":n=0,a="auto";break;case"auto":break;case"none":l=0,n=0,a="auto";break;default:g||y||isNaN(a)||(a+="%"),"0%"===a&&(g=!0),"0px"===a&&(a="0%"),m=x?d(v,{"flex-grow":l,"flex-shrink":n,"flex-basis":g?a:"100%"}):d(v,{flex:l+" "+n+" "+(g?a:"100%")})}return m.flex||m["flex-grow"]||(m=x?d(v,{"flex-grow":l,"flex-shrink":n,"flex-basis":a}):d(v,{flex:l+" "+n+" "+a})),"0%"!==a&&"0px"!==a&&"0.000000001px"!==a&&"auto"!==a&&(m[u]=h||g&&l?a:null,m[s]=h||!c&&n?a:null),m[u]||m[s]?t.hasWrap&&(m[x?"flex-basis":"flex"]=m[s]?x?m[s]:l+" "+n+" "+m[s]:x?m[u]:l+" "+n+" "+m[u]):m=x?d(v,{"flex-grow":l,"flex-shrink":n,"flex-basis":a}):d(v,{flex:l+" "+n+" "+a}),d(m,{"box-sizing":"border-box"})},l.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],l.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[r.LAYOUT_CONFIG]}]}]},l.ngInjectableDef=t.defineInjectable({factory:function(){return new l(t.inject(r.LAYOUT_CONFIG))},token:l,providedIn:"root"}),l}(r.StyleBuilder),R=["fxFlex","fxFlex.xs","fxFlex.sm","fxFlex.md","fxFlex.lg","fxFlex.xl","fxFlex.lt-sm","fxFlex.lt-md","fxFlex.lt-lg","fxFlex.lt-xl","fxFlex.gt-xs","fxFlex.gt-sm","fxFlex.gt-md","fxFlex.gt-lg"],U=function(e){function l(t,r,l,n,a){var o=e.call(this,t,n,r,a)||this;return o.elRef=t,o.styleUtils=r,o.layoutConfig=l,o.styleBuilder=n,o.marshal=a,o.DIRECTIVE_KEY="flex",o.direction="",o.wrap=!1,o.flexGrow="1",o.flexShrink="1",o.init(),o.parentElement&&o.marshal.trackValue(o.parentElement,"layout").pipe(i.takeUntil(o.destroySubject)).subscribe(o.onLayoutChange.bind(o)),o}return a(l,e),Object.defineProperty(l.prototype,"shrink",{get:function(){return this.flexShrink},set:function(e){this.flexShrink=e||"1",this.triggerReflow()},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"grow",{get:function(){return this.flexGrow},set:function(e){this.flexGrow=e||"1",this.triggerReflow()},enumerable:!0,configurable:!0}),l.prototype.onLayoutChange=function(e){var t=e.value,r=t.split(" ");this.direction=r[0],this.wrap=void 0!==r[1]&&"wrap"===r[1],this.triggerUpdate()},l.prototype.updateWithValue=function(e){var t=!1!==this.layoutConfig.addFlexToParent;this.direction||(this.direction=this.getFlexFlowDirection(this.parentElement,t));var l=this.direction,n=l.startsWith("row"),i=this.wrap;n&&i?this.styleCache=P:n&&!i?this.styleCache=V:!n&&i?this.styleCache=T:n||i||(this.styleCache=N);var a=String(e).replace(";",""),o=r.validateBasis(a,this.flexGrow,this.flexShrink);this.addStyles(o.join(" "),{direction:l,hasWrap:i})},l.prototype.triggerReflow=function(){var e=r.validateBasis(this.activatedValue,this.flexGrow,this.flexShrink);this.marshal.updateElement(this.nativeElement,this.DIRECTIVE_KEY,e.join(" "))},l.ctorParameters=function(){return[{type:t.ElementRef},{type:r.StyleUtils},{type:void 0,decorators:[{type:t.Inject,args:[r.LAYOUT_CONFIG]}]},{type:B},{type:r.MediaMarshaller}]},l.propDecorators={shrink:[{type:t.Input,args:["fxShrink"]}],grow:[{type:t.Input,args:["fxGrow"]}]},l}(r.BaseDirective2),_=function(e){function r(){var t=null!==e&&e.apply(this,arguments)||this;return t.inputs=R,t}return a(r,e),r.decorators=[{type:t.Directive,args:[{inputs:R,selector:"\n [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n [fxFlex.gt-md], [fxFlex.gt-lg]\n"}]}],r}(U),V=new Map,N=new Map,P=new Map,T=new Map,Y=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return a(r,e),r.prototype.buildStyles=function(e){return{order:e&&parseInt(e,10)||""}},r.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],r.ngInjectableDef=t.defineInjectable({factory:function(){return new r},token:r,providedIn:"root"}),r}(r.StyleBuilder),K=["fxFlexOrder","fxFlexOrder.xs","fxFlexOrder.sm","fxFlexOrder.md","fxFlexOrder.lg","fxFlexOrder.xl","fxFlexOrder.lt-sm","fxFlexOrder.lt-md","fxFlexOrder.lt-lg","fxFlexOrder.lt-xl","fxFlexOrder.gt-xs","fxFlexOrder.gt-sm","fxFlexOrder.gt-md","fxFlexOrder.gt-lg"],W=function(e){function l(t,r,l,n){var i=e.call(this,t,l,r,n)||this;return i.elRef=t,i.styleUtils=r,i.styleBuilder=l,i.marshal=n,i.DIRECTIVE_KEY="flex-order",i.styleCache=q,i.init(),i}return a(l,e),l.ctorParameters=function(){return[{type:t.ElementRef},{type:r.StyleUtils},{type:Y,decorators:[{type:t.Optional}]},{type:r.MediaMarshaller}]},l}(r.BaseDirective2),q=new Map,z=function(e){function r(){var t=null!==e&&e.apply(this,arguments)||this;return t.inputs=K,t}return a(r,e),r.decorators=[{type:t.Directive,args:[{selector:"\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n",inputs:K}]}],r}(W),Z=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return a(r,e),r.prototype.buildStyles=function(e,t){var r;""===e&&(e="0");var l=String(e).indexOf("%")>-1;String(e).indexOf("px")>-1||l||isNaN(+e)||(e+="%");var n=t.isRtl?"margin-right":"margin-left";return f(t.layout)?(r={},r[n]=""+e,r):{"margin-top":""+e}},r.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],r.ngInjectableDef=t.defineInjectable({factory:function(){return new r},token:r,providedIn:"root"}),r}(r.StyleBuilder),H=["fxFlexOffset","fxFlexOffset.xs","fxFlexOffset.sm","fxFlexOffset.md","fxFlexOffset.lg","fxFlexOffset.xl","fxFlexOffset.lt-sm","fxFlexOffset.lt-md","fxFlexOffset.lt-lg","fxFlexOffset.lt-xl","fxFlexOffset.gt-xs","fxFlexOffset.gt-sm","fxFlexOffset.gt-md","fxFlexOffset.gt-lg"],J=function(e){function n(t,r,l,n,a){var o=e.call(this,t,l,a,n)||this;return o.elRef=t,o.directionality=r,o.styleBuilder=l,o.marshal=n,o.styler=a,o.DIRECTIVE_KEY="flex-offset",o.init([o.directionality.change]),o.parentElement&&o.marshal.trackValue(o.parentElement,"layout-gap").pipe(i.takeUntil(o.destroySubject)).subscribe(o.triggerUpdate.bind(o)),o}return a(n,e),n.prototype.updateWithValue=function(e){void 0===e&&(e="");var t=this.getFlexFlowDirection(this.parentElement,!0),r="rtl"===this.directionality.value;"row"===t&&r?this.styleCache=X:"row"!==t||r?"column"===t&&r?this.styleCache=$:"column"!==t||r||(this.styleCache=te):this.styleCache=ee,this.addStyles(e+"",{layout:t,isRtl:r})},n.ctorParameters=function(){return[{type:t.ElementRef},{type:l.Directionality},{type:Z,decorators:[{type:t.Optional}]},{type:r.MediaMarshaller},{type:r.StyleUtils}]},n}(r.BaseDirective2),Q=function(e){function r(){var t=null!==e&&e.apply(this,arguments)||this;return t.inputs=H,t}return a(r,e),r.decorators=[{type:t.Directive,args:[{selector:"\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n",inputs:H}]}],r}(J),X=new Map,$=new Map,ee=new Map,te=new Map,re=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return a(r,e),r.prototype.buildStyles=function(e){e=e||"stretch";var t={};switch(e){case"start":t["align-self"]="flex-start";break;case"end":t["align-self"]="flex-end";break;default:t["align-self"]=e}return t},r.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],r.ngInjectableDef=t.defineInjectable({factory:function(){return new r},token:r,providedIn:"root"}),r}(r.StyleBuilder),le=["fxFlexAlign","fxFlexAlign.xs","fxFlexAlign.sm","fxFlexAlign.md","fxFlexAlign.lg","fxFlexAlign.xl","fxFlexAlign.lt-sm","fxFlexAlign.lt-md","fxFlexAlign.lt-lg","fxFlexAlign.lt-xl","fxFlexAlign.gt-xs","fxFlexAlign.gt-sm","fxFlexAlign.gt-md","fxFlexAlign.gt-lg"],ne=function(e){function l(t,r,l,n){var i=e.call(this,t,l,r,n)||this;return i.elRef=t,i.styleUtils=r,i.styleBuilder=l,i.marshal=n,i.DIRECTIVE_KEY="flex-align",i.styleCache=ie,i.init(),i}return a(l,e),l.ctorParameters=function(){return[{type:t.ElementRef},{type:r.StyleUtils},{type:re,decorators:[{type:t.Optional}]},{type:r.MediaMarshaller}]},l}(r.BaseDirective2),ie=new Map,ae=function(e){function r(){var t=null!==e&&e.apply(this,arguments)||this;return t.inputs=le,t}return a(r,e),r.decorators=[{type:t.Directive,args:[{selector:"\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n",inputs:le}]}],r}(ne),oe={margin:0,width:"100%",height:"100%","min-width":"100%","min-height":"100%"},se=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return a(r,e),r.prototype.buildStyles=function(e){return oe},r.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],r.ngInjectableDef=t.defineInjectable({factory:function(){return new r},token:r,providedIn:"root"}),r}(r.StyleBuilder),fe=function(e){function l(t,r,l,n){var i=e.call(this,t,l,r,n)||this;return i.elRef=t,i.styleUtils=r,i.styleBuilder=l,i.marshal=n,i.styleCache=ue,i.addStyles(""),i}return a(l,e),l.decorators=[{type:t.Directive,args:[{selector:"[fxFill], [fxFlexFill]"}]}],l.ctorParameters=function(){return[{type:t.ElementRef},{type:r.StyleUtils},{type:se},{type:r.MediaMarshaller}]},l}(r.BaseDirective2),ue=new Map,xe=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return a(r,e),r.prototype.buildStyles=function(e,t){var r={},l=e.split(" "),n=l[0],i=l[1];switch(n){case"center":r["justify-content"]="center";break;case"space-around":r["justify-content"]="space-around";break;case"space-between":r["justify-content"]="space-between";break;case"space-evenly":r["justify-content"]="space-evenly";break;case"end":case"flex-end":r["justify-content"]="flex-end";break;case"start":case"flex-start":default:r["justify-content"]="flex-start"}switch(i){case"start":case"flex-start":r["align-items"]=r["align-content"]="flex-start";break;case"center":r["align-items"]=r["align-content"]="center";break;case"end":case"flex-end":r["align-items"]=r["align-content"]="flex-end";break;case"space-between":r["align-content"]="space-between",r["align-items"]="stretch";break;case"space-around":r["align-content"]="space-around",r["align-items"]="stretch";break;case"baseline":r["align-content"]="stretch",r["align-items"]="baseline";break;case"stretch":default:r["align-items"]=r["align-content"]="stretch"}return d(r,{display:"flex","flex-direction":t.layout,"box-sizing":"border-box","max-width":"stretch"===i?f(t.layout)?null:"100%":null,"max-height":"stretch"===i&&f(t.layout)?"100%":null})},r.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],r.ngInjectableDef=t.defineInjectable({factory:function(){return new r},token:r,providedIn:"root"}),r}(r.StyleBuilder),ce=["fxLayoutAlign","fxLayoutAlign.xs","fxLayoutAlign.sm","fxLayoutAlign.md","fxLayoutAlign.lg","fxLayoutAlign.xl","fxLayoutAlign.lt-sm","fxLayoutAlign.lt-md","fxLayoutAlign.lt-lg","fxLayoutAlign.lt-xl","fxLayoutAlign.gt-xs","fxLayoutAlign.gt-sm","fxLayoutAlign.gt-md","fxLayoutAlign.gt-lg"],ye=function(e){function l(t,r,l,n){var a=e.call(this,t,l,r,n)||this;return a.elRef=t,a.styleUtils=r,a.styleBuilder=l,a.marshal=n,a.DIRECTIVE_KEY="layout-align",a.layout="row",a.init(),a.marshal.trackValue(a.nativeElement,"layout").pipe(i.takeUntil(a.destroySubject)).subscribe(a.onLayoutChange.bind(a)),a}return a(l,e),l.prototype.updateWithValue=function(e){var t=this.layout||"row";"row"===t?this.styleCache=de:"row-reverse"===t?this.styleCache=he:"column"===t?this.styleCache=ge:"column-reverse"===t&&(this.styleCache=me),this.addStyles(e,{layout:t})},l.prototype.onLayoutChange=function(e){var t=this,r=e.value;this.layout=r.split(" ")[0],v.find(function(e){return e===t.layout})||(this.layout="row"),this.triggerUpdate()},l.ctorParameters=function(){return[{type:t.ElementRef},{type:r.StyleUtils},{type:xe,decorators:[{type:t.Optional}]},{type:r.MediaMarshaller}]},l}(r.BaseDirective2),pe=function(e){function r(){var t=null!==e&&e.apply(this,arguments)||this;return t.inputs=ce,t}return a(r,e),r.decorators=[{type:t.Directive,args:[{selector:"\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n",inputs:ce}]}],r}(ye),de=new Map,ge=new Map,he=new Map,me=new Map,ve=[O,j,pe,z,Q,fe,ae,_],Fe=function(){function e(){}return e.decorators=[{type:t.NgModule,args:[{imports:[r.CoreModule,l.BidiModule],declarations:ve.slice(),exports:ve.slice()}]}],e}();e.FlexModule=Fe,e.FlexStyleBuilder=B,e.FlexDirective=U,e.DefaultFlexDirective=_,e.FlexAlignStyleBuilder=re,e.FlexAlignDirective=ne,e.DefaultFlexAlignDirective=ae,e.FlexFillStyleBuilder=se,e.FlexFillDirective=fe,e.FlexOffsetStyleBuilder=Z,e.FlexOffsetDirective=J,e.DefaultFlexOffsetDirective=Q,e.FlexOrderStyleBuilder=Y,e.FlexOrderDirective=W,e.DefaultFlexOrderDirective=z,e.LayoutStyleBuilder=F,e.LayoutDirective=w,e.DefaultLayoutDirective=O,e.LayoutAlignStyleBuilder=xe,e.LayoutAlignDirective=ye,e.DefaultLayoutAlignDirective=pe,e.LayoutGapStyleBuilder=A,e.LayoutGapDirective=D,e.DefaultLayoutGapDirective=j,Object.defineProperty(e,"__esModule",{value:!0})}); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/flex-layout/core"),require("@angular/cdk/bidi"),require("rxjs"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@angular/flex-layout/flex",["exports","@angular/core","@angular/flex-layout/core","@angular/cdk/bidi","rxjs","rxjs/operators"],t):t((e.ng=e.ng||{},e.ng.flexLayout=e.ng.flexLayout||{},e.ng.flexLayout.flex={}),e.ng.core,e.ng.flexLayout.core,e.ng.cdk.bidi,e.rxjs,e.rxjs.operators)}(this,function(e,t,r,l,n,i){"use strict";function a(e,t){function r(){this.constructor=e}h(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function o(e){var t=s(e);return x(t[0],t[1],t[2])}function s(e){e=e?e.toLowerCase():"";var t=e.split(" "),r=t[0],l=t[1],n=t[2];return F.find(function(e){return e===r})||(r=F[0]),l===v&&(l=n!==v?n:"",n=v),[r,u(l),!!n]}function f(e){return s(e)[0].indexOf("row")>-1}function u(e){if(e)switch(e.toLowerCase()){case"reverse":case"wrap-reverse":case"reverse-wrap":e="wrap-reverse";break;case"no":case"none":case"nowrap":e="nowrap";break;default:e="wrap"}return e}function x(e,t,r){return void 0===t&&(t=null),void 0===r&&(r=!1),{display:r?"inline-flex":"flex","box-sizing":"border-box","flex-direction":e,"flex-wrap":t||null}}function c(e,t){var r="0px",l=e,n="0px";return"rtl"===t?n=e:r=e,{padding:"0px "+r+" "+l+" "+n}}function y(e,t){var r="0px",l="-"+e,n="0px";return"rtl"===t?n="-"+e:r="-"+e,{margin:"0px "+r+" "+l+" "+n}}function p(e,t){switch(t){case"column":return"margin-bottom";case"column-reverse":return"margin-top";case"row":return"rtl"===e?"margin-left":"margin-right";case"row-reverse":return"rtl"===e?"margin-right":"margin-left";default:return"rtl"===e?"margin-left":"margin-right"}}function d(e,t){var r=p(t.directionality,t.layout),l=m({},A);return l[r]=e,l}function g(e){for(var t=[],r=1;rn?1:-1});if(r.length>0){var l=this.directionality.value,n=this.layout;"row"===n&&"rtl"===l?this.styleCache=C:"row"===n&&"rtl"!==l?this.styleCache=M:"column"===n&&"rtl"===l?this.styleCache=E:"column"===n&&"rtl"!==l&&(this.styleCache=G),this.addStyles(e,{directionality:l,items:r,layout:n})}},o.prototype.clearStyles=function(){var t,r=Object.keys(this.mru).length>0,l=r?"padding":p(this.directionality.value,this.layout);r&&e.prototype.clearStyles.call(this),this.styleUtils.applyStyleToElements((t={},t[l]="",t),this.childrenNodes)},o.prototype.willDisplay=function(e){var t=this.marshal.getValue(e,"show-hide");return!0===t||void 0===t&&"none"!==this.styleUtils.lookupStyle(e,"display")},o.prototype.buildChildObservable=function(){var e=this;this.zone.runOutsideAngular(function(){"undefined"!=typeof MutationObserver&&(e.observer=new MutationObserver(function(t){var r=function(e){return e.addedNodes&&e.addedNodes.length>0||e.removedNodes&&e.removedNodes.length>0};t.some(r)&&e.observerSubject.next()}),e.observer.observe(e.nativeElement,{childList:!0}))})},o.ctorParameters=function(){return[{type:t.ElementRef},{type:t.NgZone},{type:l.Directionality},{type:r.StyleUtils},{type:I,decorators:[{type:t.Optional}]},{type:r.MediaMarshaller}]},o}(r.BaseDirective2),k=function(e){function r(){var t=null!==e&&e.apply(this,arguments)||this;return t.inputs=j,t}return a(r,e),r.decorators=[{type:t.Directive,args:[{selector:"\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n",inputs:j}]}],r}(D),C=new Map,E=new Map,M=new Map,G=new Map,B=" grid",U=function(e){function l(t){var r=e.call(this)||this;return r.layoutConfig=t,r}return a(l,e),l.prototype.buildStyles=function(e,t){var r=e.split(" "),l=r[0],n=r[1],i=r.slice(2),a=i.join(" "),o=t.direction.indexOf("column")>-1?"column":"row",s=f(o)?"max-width":"max-height",u=f(o)?"min-width":"min-height",x=String(a).indexOf("calc")>-1,c=x||"auto"===a,y=String(a).indexOf("%")>-1&&!x,p=String(a).indexOf("px")>-1||String(a).indexOf("rem")>-1||String(a).indexOf("em")>-1||String(a).indexOf("vw")>-1||String(a).indexOf("vh")>-1,d=x||p;l="0"==l?0:l,n="0"==n?0:n;var h=!l&&!n,m={},v={"max-width":null,"max-height":null,"min-width":null,"min-height":null};switch(a||""){case"":var F=!1!==this.layoutConfig.useColumnBasisZero;a="row"===o?"0%":F?"0.000000001px":"auto";break;case"initial":case"nogrow":l=0,a="auto";break;case"grow":a="100%";break;case"noshrink":n=0,a="auto";break;case"auto":break;case"none":l=0,n=0,a="auto";break;default:d||y||isNaN(a)||(a+="%"),"0%"===a&&(d=!0),"0px"===a&&(a="0%"),m=x?g(v,{"flex-grow":l,"flex-shrink":n,"flex-basis":d?a:"100%"}):g(v,{flex:l+" "+n+" "+(d?a:"100%")})}return m.flex||m["flex-grow"]||(m=x?g(v,{"flex-grow":l,"flex-shrink":n,"flex-basis":a}):g(v,{flex:l+" "+n+" "+a})),"0%"!==a&&"0px"!==a&&"0.000000001px"!==a&&"auto"!==a&&(m[u]=h||d&&l?a:null,m[s]=h||!c&&n?a:null),m[u]||m[s]?t.hasWrap&&(m[x?"flex-basis":"flex"]=m[s]?x?m[s]:l+" "+n+" "+m[s]:x?m[u]:l+" "+n+" "+m[u]):m=x?g(v,{"flex-grow":l,"flex-shrink":n,"flex-basis":a}):g(v,{flex:l+" "+n+" "+a}),g(m,{"box-sizing":"border-box"})},l.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],l.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[r.LAYOUT_CONFIG]}]}]},l.ngInjectableDef=t.ɵɵdefineInjectable({factory:function(){return new l(t.ɵɵinject(r.LAYOUT_CONFIG))},token:l,providedIn:"root"}),l}(r.StyleBuilder),R=["fxFlex","fxFlex.xs","fxFlex.sm","fxFlex.md","fxFlex.lg","fxFlex.xl","fxFlex.lt-sm","fxFlex.lt-md","fxFlex.lt-lg","fxFlex.lt-xl","fxFlex.gt-xs","fxFlex.gt-sm","fxFlex.gt-md","fxFlex.gt-lg"],_=function(e){function l(t,r,l,n,a){var o=e.call(this,t,n,r,a)||this;return o.elRef=t,o.styleUtils=r,o.layoutConfig=l,o.styleBuilder=n,o.marshal=a,o.DIRECTIVE_KEY="flex",o.direction="",o.wrap=!1,o.flexGrow="1",o.flexShrink="1",o.init(),o.parentElement&&(o.marshal.trackValue(o.parentElement,"layout").pipe(i.takeUntil(o.destroySubject)).subscribe(o.onLayoutChange.bind(o)),o.marshal.trackValue(o.nativeElement,"layout-align").pipe(i.takeUntil(o.destroySubject)).subscribe(o.triggerReflow.bind(o))),o}return a(l,e),Object.defineProperty(l.prototype,"shrink",{get:function(){return this.flexShrink},set:function(e){this.flexShrink=e||"1",this.triggerReflow()},enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,"grow",{get:function(){return this.flexGrow},set:function(e){this.flexGrow=e||"1",this.triggerReflow()},enumerable:!0,configurable:!0}),l.prototype.onLayoutChange=function(e){var t=e.value,r=t.split(" ");this.direction=r[0],this.wrap=void 0!==r[1]&&"wrap"===r[1],this.triggerUpdate()},l.prototype.updateWithValue=function(e){var t=!1!==this.layoutConfig.addFlexToParent;this.direction||(this.direction=this.getFlexFlowDirection(this.parentElement,t));var l=this.direction,n=l.startsWith("row"),i=this.wrap;n&&i?this.styleCache=T:n&&!i?this.styleCache=P:!n&&i?this.styleCache=Y:n||i||(this.styleCache=V);var a=String(e).replace(";",""),o=r.validateBasis(a,this.flexGrow,this.flexShrink);this.addStyles(o.join(" "),{direction:l,hasWrap:i})},l.prototype.triggerReflow=function(){var e=this.activatedValue;if(void 0!==e){var t=r.validateBasis(e,this.flexGrow,this.flexShrink);this.marshal.updateElement(this.nativeElement,this.DIRECTIVE_KEY,t.join(" "))}},l.ctorParameters=function(){return[{type:t.ElementRef},{type:r.StyleUtils},{type:void 0,decorators:[{type:t.Inject,args:[r.LAYOUT_CONFIG]}]},{type:U},{type:r.MediaMarshaller}]},l.propDecorators={shrink:[{type:t.Input,args:["fxShrink"]}],grow:[{type:t.Input,args:["fxGrow"]}]},l}(r.BaseDirective2),N=function(e){function r(){var t=null!==e&&e.apply(this,arguments)||this;return t.inputs=R,t}return a(r,e),r.decorators=[{type:t.Directive,args:[{inputs:R,selector:"\n [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n [fxFlex.gt-md], [fxFlex.gt-lg]\n"}]}],r}(_),P=new Map,V=new Map,T=new Map,Y=new Map,W=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return a(r,e),r.prototype.buildStyles=function(e){return{order:e&&parseInt(e,10)||""}},r.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],r.ngInjectableDef=t.ɵɵdefineInjectable({factory:function(){return new r},token:r,providedIn:"root"}),r}(r.StyleBuilder),K=["fxFlexOrder","fxFlexOrder.xs","fxFlexOrder.sm","fxFlexOrder.md","fxFlexOrder.lg","fxFlexOrder.xl","fxFlexOrder.lt-sm","fxFlexOrder.lt-md","fxFlexOrder.lt-lg","fxFlexOrder.lt-xl","fxFlexOrder.gt-xs","fxFlexOrder.gt-sm","fxFlexOrder.gt-md","fxFlexOrder.gt-lg"],q=function(e){function l(t,r,l,n){var i=e.call(this,t,l,r,n)||this;return i.elRef=t,i.styleUtils=r,i.styleBuilder=l,i.marshal=n,i.DIRECTIVE_KEY="flex-order",i.styleCache=z,i.init(),i}return a(l,e),l.ctorParameters=function(){return[{type:t.ElementRef},{type:r.StyleUtils},{type:W,decorators:[{type:t.Optional}]},{type:r.MediaMarshaller}]},l}(r.BaseDirective2),z=new Map,Z=function(e){function r(){var t=null!==e&&e.apply(this,arguments)||this;return t.inputs=K,t}return a(r,e),r.decorators=[{type:t.Directive,args:[{selector:"\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n",inputs:K}]}],r}(q),H=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return a(r,e),r.prototype.buildStyles=function(e,t){var r;""===e&&(e="0");var l=String(e).indexOf("%")>-1;String(e).indexOf("px")>-1||l||isNaN(+e)||(e+="%");var n=t.isRtl?"margin-right":"margin-left";return f(t.layout)?(r={},r[n]=""+e,r):{"margin-top":""+e}},r.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],r.ngInjectableDef=t.ɵɵdefineInjectable({factory:function(){return new r},token:r,providedIn:"root"}),r}(r.StyleBuilder),J=["fxFlexOffset","fxFlexOffset.xs","fxFlexOffset.sm","fxFlexOffset.md","fxFlexOffset.lg","fxFlexOffset.xl","fxFlexOffset.lt-sm","fxFlexOffset.lt-md","fxFlexOffset.lt-lg","fxFlexOffset.lt-xl","fxFlexOffset.gt-xs","fxFlexOffset.gt-sm","fxFlexOffset.gt-md","fxFlexOffset.gt-lg"],Q=function(e){function n(t,r,l,n,a){var o=e.call(this,t,l,a,n)||this;return o.elRef=t,o.directionality=r,o.styleBuilder=l,o.marshal=n,o.styler=a,o.DIRECTIVE_KEY="flex-offset",o.init([o.directionality.change]),o.parentElement&&o.marshal.trackValue(o.parentElement,"layout-gap").pipe(i.takeUntil(o.destroySubject)).subscribe(o.triggerUpdate.bind(o)),o}return a(n,e),n.prototype.updateWithValue=function(e){void 0===e&&(e="");var t=this.getFlexFlowDirection(this.parentElement,!0),r="rtl"===this.directionality.value;"row"===t&&r?this.styleCache=$:"row"!==t||r?"column"===t&&r?this.styleCache=ee:"column"!==t||r||(this.styleCache=re):this.styleCache=te,this.addStyles(e+"",{layout:t,isRtl:r})},n.ctorParameters=function(){return[{type:t.ElementRef},{type:l.Directionality},{type:H,decorators:[{type:t.Optional}]},{type:r.MediaMarshaller},{type:r.StyleUtils}]},n}(r.BaseDirective2),X=function(e){function r(){var t=null!==e&&e.apply(this,arguments)||this;return t.inputs=J,t}return a(r,e),r.decorators=[{type:t.Directive,args:[{selector:"\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n",inputs:J}]}],r}(Q),$=new Map,ee=new Map,te=new Map,re=new Map,le=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return a(r,e),r.prototype.buildStyles=function(e){e=e||"stretch";var t={};switch(e){case"start":t["align-self"]="flex-start";break;case"end":t["align-self"]="flex-end";break;default:t["align-self"]=e}return t},r.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],r.ngInjectableDef=t.ɵɵdefineInjectable({factory:function(){return new r},token:r,providedIn:"root"}),r}(r.StyleBuilder),ne=["fxFlexAlign","fxFlexAlign.xs","fxFlexAlign.sm","fxFlexAlign.md","fxFlexAlign.lg","fxFlexAlign.xl","fxFlexAlign.lt-sm","fxFlexAlign.lt-md","fxFlexAlign.lt-lg","fxFlexAlign.lt-xl","fxFlexAlign.gt-xs","fxFlexAlign.gt-sm","fxFlexAlign.gt-md","fxFlexAlign.gt-lg"],ie=function(e){function l(t,r,l,n){var i=e.call(this,t,l,r,n)||this;return i.elRef=t,i.styleUtils=r,i.styleBuilder=l,i.marshal=n,i.DIRECTIVE_KEY="flex-align",i.styleCache=ae,i.init(),i}return a(l,e),l.ctorParameters=function(){return[{type:t.ElementRef},{type:r.StyleUtils},{type:le,decorators:[{type:t.Optional}]},{type:r.MediaMarshaller}]},l}(r.BaseDirective2),ae=new Map,oe=function(e){function r(){var t=null!==e&&e.apply(this,arguments)||this;return t.inputs=ne,t}return a(r,e),r.decorators=[{type:t.Directive,args:[{selector:"\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n",inputs:ne}]}],r}(ie),se={margin:0,width:"100%",height:"100%","min-width":"100%","min-height":"100%"},fe=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return a(r,e),r.prototype.buildStyles=function(e){return se},r.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],r.ngInjectableDef=t.ɵɵdefineInjectable({factory:function(){return new r},token:r,providedIn:"root"}),r}(r.StyleBuilder),ue=function(e){function l(t,r,l,n){var i=e.call(this,t,l,r,n)||this;return i.elRef=t,i.styleUtils=r,i.styleBuilder=l,i.marshal=n,i.styleCache=xe,i.addStyles(""),i}return a(l,e),l.decorators=[{type:t.Directive,args:[{selector:"[fxFill], [fxFlexFill]"}]}],l.ctorParameters=function(){return[{type:t.ElementRef},{type:r.StyleUtils},{type:fe},{type:r.MediaMarshaller}]},l}(r.BaseDirective2),xe=new Map,ce=function(e){function r(){return null!==e&&e.apply(this,arguments)||this}return a(r,e),r.prototype.buildStyles=function(e,t){var r={},l=e.split(" "),n=l[0],i=l[1];switch(n){case"center":r["justify-content"]="center";break;case"space-around":r["justify-content"]="space-around";break;case"space-between":r["justify-content"]="space-between";break;case"space-evenly":r["justify-content"]="space-evenly";break;case"end":case"flex-end":r["justify-content"]="flex-end";break;case"start":case"flex-start":default:r["justify-content"]="flex-start"}switch(i){case"start":case"flex-start":r["align-items"]=r["align-content"]="flex-start";break;case"center":r["align-items"]=r["align-content"]="center";break;case"end":case"flex-end":r["align-items"]=r["align-content"]="flex-end";break;case"space-between":r["align-content"]="space-between",r["align-items"]="stretch";break;case"space-around":r["align-content"]="space-around",r["align-items"]="stretch";break;case"baseline":r["align-content"]="stretch",r["align-items"]="baseline";break;case"stretch":default:r["align-items"]=r["align-content"]="stretch"}return g(r,{display:t.inline?"inline-flex":"flex","flex-direction":t.layout,"box-sizing":"border-box","max-width":"stretch"===i?f(t.layout)?null:"100%":null,"max-height":"stretch"===i&&f(t.layout)?"100%":null})},r.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],r.ngInjectableDef=t.ɵɵdefineInjectable({factory:function(){return new r},token:r,providedIn:"root"}),r}(r.StyleBuilder),ye=["fxLayoutAlign","fxLayoutAlign.xs","fxLayoutAlign.sm","fxLayoutAlign.md","fxLayoutAlign.lg","fxLayoutAlign.xl","fxLayoutAlign.lt-sm","fxLayoutAlign.lt-md","fxLayoutAlign.lt-lg","fxLayoutAlign.lt-xl","fxLayoutAlign.gt-xs","fxLayoutAlign.gt-sm","fxLayoutAlign.gt-md","fxLayoutAlign.gt-lg"],pe=function(e){function l(t,r,l,n){var a=e.call(this,t,l,r,n)||this;return a.elRef=t,a.styleUtils=r,a.styleBuilder=l,a.marshal=n,a.DIRECTIVE_KEY="layout-align",a.layout="row",a.inline=!1,a.init(),a.marshal.trackValue(a.nativeElement,"layout").pipe(i.takeUntil(a.destroySubject)).subscribe(a.onLayoutChange.bind(a)),a}return a(l,e),l.prototype.updateWithValue=function(e){var t=this.layout||"row",r=this.inline;"row"===t&&r?this.styleCache=Fe:"row"!==t||r?"row-reverse"===t&&r?this.styleCache=we:"row-reverse"!==t||r?"column"===t&&r?this.styleCache=be:"column"!==t||r?"column-reverse"===t&&r?this.styleCache=Le:"column-reverse"!==t||r||(this.styleCache=ve):this.styleCache=he:this.styleCache=me:this.styleCache=ge,this.addStyles(e,{layout:t,inline:r})},l.prototype.onLayoutChange=function(e){var t=this,r=e.value.split(" ");this.layout=r[0],this.inline=e.value.includes("inline"),F.find(function(e){return e===t.layout})||(this.layout="row"),this.triggerUpdate()},l.ctorParameters=function(){return[{type:t.ElementRef},{type:r.StyleUtils},{type:ce,decorators:[{type:t.Optional}]},{type:r.MediaMarshaller}]},l}(r.BaseDirective2),de=function(e){function r(){var t=null!==e&&e.apply(this,arguments)||this;return t.inputs=ye,t}return a(r,e),r.decorators=[{type:t.Directive,args:[{selector:"\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n",inputs:ye}]}],r}(pe),ge=new Map,he=new Map,me=new Map,ve=new Map,Fe=new Map,be=new Map,we=new Map,Le=new Map,Oe=[O,k,de,Z,X,ue,oe,N],Se=function(){function e(){}return e.decorators=[{type:t.NgModule,args:[{imports:[r.CoreModule,l.BidiModule],declarations:Oe.slice(),exports:Oe.slice()}]}],e}();e.FlexModule=Se,e.FlexStyleBuilder=U,e.FlexDirective=_,e.DefaultFlexDirective=N,e.FlexAlignStyleBuilder=le,e.FlexAlignDirective=ie,e.DefaultFlexAlignDirective=oe,e.FlexFillStyleBuilder=fe,e.FlexFillDirective=ue,e.FlexOffsetStyleBuilder=H,e.FlexOffsetDirective=Q,e.DefaultFlexOffsetDirective=X,e.FlexOrderStyleBuilder=W,e.FlexOrderDirective=q,e.DefaultFlexOrderDirective=Z,e.LayoutStyleBuilder=b,e.LayoutDirective=L,e.DefaultLayoutDirective=O,e.LayoutAlignStyleBuilder=ce,e.LayoutAlignDirective=pe,e.DefaultLayoutAlignDirective=de,e.LayoutGapStyleBuilder=I,e.LayoutGapDirective=D,e.DefaultLayoutGapDirective=k,Object.defineProperty(e,"__esModule",{value:!0})}); //# sourceMappingURL=flex-layout-flex.umd.min.js.map diff --git a/bundles/flex-layout-flex.umd.min.js.map b/bundles/flex-layout-flex.umd.min.js.map index 3c2dbfb5c..567a1569d 100644 --- a/bundles/flex-layout-flex.umd.min.js.map +++ b/bundles/flex-layout-flex.umd.min.js.map @@ -1 +1 @@ -{"version":3,"file":"flex-layout-flex.umd.min.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/lib/utils/layout-validator.ts","../../src/lib/flex/layout-gap/layout-gap.ts","../../src/lib/utils/object-extend.ts","../../src/lib/flex/layout/layout.ts","../../src/lib/flex/flex/flex.ts","../../src/lib/flex/flex-order/flex-order.ts","../../src/lib/flex/flex-offset/flex-offset.ts","../../src/lib/flex/flex-align/flex-align.ts","../../src/lib/flex/flex-fill/flex-fill.ts","../../src/lib/flex/layout-align/layout-align.ts","../../src/lib/flex/module.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\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 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) : new P(function (resolve) { resolve(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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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 __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\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)) result[k] = mod[k];\r\n result.default = 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","/**\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='' 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 : 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 {\n Directive,\n ElementRef,\n Optional,\n OnDestroy,\n NgZone,\n Injectable,\n AfterContentInit,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {LAYOUT_VALUES} from '../../utils/layout-validator';\n\nexport interface LayoutGapParent {\n directionality: string;\n items: HTMLElement[];\n layout: string;\n}\n\nconst CLEAR_MARGIN_CSS = {\n 'margin-left': null,\n 'margin-right': null,\n 'margin-top': null,\n 'margin-bottom': null\n};\n\n@Injectable({providedIn: 'root'})\nexport class LayoutGapStyleBuilder extends StyleBuilder {\n constructor(private _styler: StyleUtils) {\n super();\n }\n\n buildStyles(gapValue: string, parent: LayoutGapParent) {\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n\n // Add the margin to the host element\n return buildGridMargin(gapValue, parent.directionality);\n } else {\n return {};\n }\n }\n\n sideEffect(gapValue: string, _styles: StyleDefinition, parent: LayoutGapParent) {\n const items = parent.items;\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n // For each `element` children, set the padding\n const paddingStyles = buildGridPadding(gapValue, parent.directionality);\n this._styler.applyStyleToElements(paddingStyles, parent.items);\n } else {\n const lastItem = items.pop();\n\n // For each `element` children EXCEPT the last,\n // set the margin right/bottom styles...\n const gapCss = buildGapCSS(gapValue, parent);\n this._styler.applyStyleToElements(gapCss, items);\n\n // Clear all gaps for all visible elements\n this._styler.applyStyleToElements(CLEAR_MARGIN_CSS, [lastItem!]);\n }\n }\n}\n\nconst inputs = [\n 'fxLayoutGap', 'fxLayoutGap.xs', 'fxLayoutGap.sm', 'fxLayoutGap.md',\n 'fxLayoutGap.lg', 'fxLayoutGap.xl', 'fxLayoutGap.lt-sm', 'fxLayoutGap.lt-md',\n 'fxLayoutGap.lt-lg', 'fxLayoutGap.lt-xl', 'fxLayoutGap.gt-xs', 'fxLayoutGap.gt-sm',\n 'fxLayoutGap.gt-md', 'fxLayoutGap.gt-lg'\n];\nconst selector = `\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n`;\n\n/**\n * 'layout-padding' styling directive\n * Defines padding of child elements in a layout container\n */\nexport class LayoutGapDirective extends BaseDirective2 implements AfterContentInit, OnDestroy {\n protected layout = 'row'; // default flex-direction\n protected DIRECTIVE_KEY = 'layout-gap';\n protected observerSubject = new Subject();\n\n /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */\n protected get childrenNodes(): HTMLElement[] {\n const obj = this.nativeElement.children;\n const buffer: any[] = [];\n\n // iterate backwards ensuring that length is an UInt32\n for (let i = obj.length; i--;) {\n buffer[i] = obj[i];\n }\n return buffer;\n }\n\n constructor(protected elRef: ElementRef,\n protected zone: NgZone,\n protected directionality: Directionality,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutGapStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n const extraTriggers = [this.directionality.change, this.observerSubject.asObservable()];\n this.init(extraTriggers);\n this.marshal\n .trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n ngAfterContentInit() {\n this.buildChildObservable();\n this.triggerUpdate();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Cache the parent container 'flex-direction' and update the 'margin' styles\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n // Make sure to filter out 'wrap' option\n const direction = layout.split(' ');\n this.layout = direction[0];\n if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n\n /**\n *\n */\n protected updateWithValue(value: string) {\n if (!value) {\n value = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY);\n }\n // Gather all non-hidden Element nodes\n const items = this.childrenNodes\n .filter(el => el.nodeType === 1 && this.willDisplay(el))\n .sort((a, b) => {\n const orderA = +this.styler.lookupStyle(a, 'order');\n const orderB = +this.styler.lookupStyle(b, 'order');\n if (isNaN(orderA) || isNaN(orderB) || orderA === orderB) {\n return 0;\n } else {\n return orderA > orderB ? 1 : -1;\n }\n });\n\n if (items.length > 0) {\n const directionality = this.directionality.value;\n const layout = this.layout;\n if (layout === 'row' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheRowRtl;\n } else if (layout === 'row' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheRowLtr;\n } else if (layout === 'column' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheColumnRtl;\n } else if (layout === 'column' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheColumnLtr;\n }\n this.addStyles(value, {directionality, items, layout});\n }\n }\n\n /** Determine if an element will show or hide based on current activation */\n protected willDisplay(source: HTMLElement): boolean {\n const value = this.marshal.getValue(source, 'show-hide');\n return value === true ||\n (value === '' && this.styleUtils.lookupStyle(source, 'display') !== 'none');\n }\n\n protected buildChildObservable(): void {\n this.zone.runOutsideAngular(() => {\n if (typeof MutationObserver !== 'undefined') {\n this.observer = new MutationObserver((mutations: MutationRecord[]) => {\n const validatedChanges = (it: MutationRecord): boolean => {\n return (it.addedNodes && it.addedNodes.length > 0) ||\n (it.removedNodes && it.removedNodes.length > 0);\n };\n\n // update gap styles only for child 'added' or 'removed' events\n if (mutations.some(validatedChanges)) {\n this.observerSubject.next();\n }\n });\n this.observer.observe(this.nativeElement, {childList: true});\n }\n });\n }\n\n protected observer?: MutationObserver;\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutGapDirective extends LayoutGapDirective {\n protected inputs = inputs;\n}\n\nconst layoutGapCacheRowRtl: Map = new Map();\nconst layoutGapCacheColumnRtl: Map = new Map();\nconst layoutGapCacheRowLtr: Map = new Map();\nconst layoutGapCacheColumnLtr: Map = new Map();\n\nconst GRID_SPECIFIER = ' grid';\n\nfunction buildGridPadding(value: string, directionality: string): StyleDefinition {\n let paddingTop = '0px', paddingRight = '0px', paddingBottom = value, paddingLeft = '0px';\n\n if (directionality === 'rtl') {\n paddingLeft = value;\n } else {\n paddingRight = value;\n }\n\n return {'padding': `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`};\n}\n\nfunction buildGridMargin(value: string, directionality: string): StyleDefinition {\n let marginTop = '0px', marginRight = '0px', marginBottom = '-' + value, marginLeft = '0px';\n\n if (directionality === 'rtl') {\n marginLeft = '-' + value;\n } else {\n marginRight = '-' + value;\n }\n\n return {'margin': `${marginTop} ${marginRight} ${marginBottom} ${marginLeft}`};\n}\n\nfunction buildGapCSS(gapValue: string,\n parent: {directionality: string, layout: string}): StyleDefinition {\n let key, margins: {[key: string]: string | null} = {...CLEAR_MARGIN_CSS};\n\n switch (parent.layout) {\n case 'column':\n key = 'margin-bottom';\n break;\n case 'column-reverse':\n key = 'margin-top';\n break;\n case 'row':\n key = parent.directionality === 'rtl' ? 'margin-left' : 'margin-right';\n break;\n case 'row-reverse':\n key = parent.directionality === 'rtl' ? 'margin-right' : 'margin-left';\n break;\n default :\n key = parent.directionality === 'rtl' ? 'margin-left' : 'margin-right';\n break;\n }\n margins[key] = gapValue;\n\n return margins;\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 */\nimport {Directive, ElementRef, OnChanges, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\nimport {buildLayoutCSS} from '../../utils/layout-validator';\n\n@Injectable({providedIn: 'root'})\nexport class LayoutStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return buildLayoutCSS(input);\n }\n}\n\nconst inputs = [\n 'fxLayout', 'fxLayout.xs', 'fxLayout.sm', 'fxLayout.md',\n 'fxLayout.lg', 'fxLayout.xl', 'fxLayout.lt-sm', 'fxLayout.lt-md',\n 'fxLayout.lt-lg', 'fxLayout.lt-xl', 'fxLayout.gt-xs', 'fxLayout.gt-sm',\n 'fxLayout.gt-md', 'fxLayout.gt-lg'\n];\nconst selector = `\n [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],\n [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md],\n [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm],\n [fxLayout.gt-md], [fxLayout.gt-lg]\n`;\n\n/**\n * 'layout' flexbox styling directive\n * Defines the positioning flow direction for the child elements: row or column\n * Optional values: column or row (default)\n * @see https://css-tricks.com/almanac/properties/f/flex-direction/\n *\n */\nexport class LayoutDirective extends BaseDirective2 implements OnChanges {\n\n protected DIRECTIVE_KEY = 'layout';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = layoutCache;\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutDirective extends LayoutDirective {\n protected inputs = inputs;\n}\n\nconst layoutCache: Map = new Map();\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 {Directive, ElementRef, Inject, Injectable, Input} from '@angular/core';\nimport {\n BaseDirective2,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n StyleUtils,\n validateBasis,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {extendObject} from '../../utils/object-extend';\nimport {isFlowHorizontal} from '../../utils/layout-validator';\n\ninterface FlexBuilderParent {\n direction: string;\n hasWrap: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FlexStyleBuilder extends StyleBuilder {\n constructor(@Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions) {\n super();\n }\n buildStyles(input: string, parent: FlexBuilderParent) {\n let [grow, shrink, ...basisParts]: (string|number)[] = input.split(' ');\n let basis = basisParts.join(' ');\n\n // The flex-direction of this element's flex container. Defaults to 'row'.\n const direction = (parent.direction.indexOf('column') > -1) ? 'column' : 'row';\n\n const max = isFlowHorizontal(direction) ? 'max-width' : 'max-height';\n const min = isFlowHorizontal(direction) ? 'min-width' : 'min-height';\n\n const hasCalc = String(basis).indexOf('calc') > -1;\n const usingCalc = hasCalc || (basis === 'auto');\n const isPercent = String(basis).indexOf('%') > -1 && !hasCalc;\n const hasUnits = String(basis).indexOf('px') > -1 || String(basis).indexOf('rem') > -1 ||\n String(basis).indexOf('em') > -1 || String(basis).indexOf('vw') > -1 ||\n String(basis).indexOf('vh') > -1;\n\n let isValue = (hasCalc || hasUnits);\n\n grow = (grow == '0') ? 0 : grow;\n shrink = (shrink == '0') ? 0 : shrink;\n\n // make box inflexible when shrink and grow are both zero\n // should not set a min when the grow is zero\n // should not set a max when the shrink is zero\n const isFixed = !grow && !shrink;\n\n let css: {[key: string]: string | number | null} = {};\n\n // flex-basis allows you to specify the initial/starting main-axis size of the element,\n // before anything else is computed. It can either be a percentage or an absolute value.\n // It is, however, not the breaking point for flex-grow/shrink properties\n //\n // flex-grow can be seen as this:\n // 0: Do not stretch. Either size to element's content width, or obey 'flex-basis'.\n // 1: (Default value). Stretch; will be the same size to all other flex items on\n // the same row since they have a default value of 1.\n // ≥2 (integer n): Stretch. Will be n times the size of other elements\n // with 'flex-grow: 1' on the same row.\n\n // Use `null` to clear existing styles.\n const clearStyles = {\n 'max-width': null,\n 'max-height': null,\n 'min-width': null,\n 'min-height': null\n };\n switch (basis || '') {\n case '':\n const useColumnBasisZero = this.layoutConfig.useColumnBasisZero !== false;\n basis = direction === 'row' ? '0%' : (useColumnBasisZero ? '0.000000001px' : 'auto');\n break;\n case 'initial': // default\n case 'nogrow':\n grow = 0;\n basis = 'auto';\n break;\n case 'grow':\n basis = '100%';\n break;\n case 'noshrink':\n shrink = 0;\n basis = 'auto';\n break;\n case 'auto':\n break;\n case 'none':\n grow = 0;\n shrink = 0;\n basis = 'auto';\n break;\n default:\n // Defaults to percentage sizing unless `px` is explicitly set\n if (!isValue && !isPercent && !isNaN(basis as any)) {\n basis = basis + '%';\n }\n\n // Fix for issue 280\n if (basis === '0%') {\n isValue = true;\n }\n\n if (basis === '0px') {\n basis = '0%';\n }\n\n // fix issue #5345\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': isValue ? basis : '100%'\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${isValue ? basis : '100%'}`\n });\n }\n\n break;\n }\n\n if (!(css['flex'] || css['flex-grow'])) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n }\n\n // Fix for issues 277, 534, and 728\n if (basis !== '0%' && basis !== '0px' && basis !== '0.000000001px' && basis !== 'auto') {\n css[min] = isFixed || (isValue && grow) ? basis : null;\n css[max] = isFixed || (!usingCalc && shrink) ? basis : null;\n }\n\n // Fix for issue 528\n if (!css[min] && !css[max]) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n } else {\n // Fix for issue 660\n if (parent.hasWrap) {\n css[hasCalc ? 'flex-basis' : 'flex'] = css[max] ?\n (hasCalc ? css[max] : `${grow} ${shrink} ${css[max]}`) :\n (hasCalc ? css[min] : `${grow} ${shrink} ${css[min]}`);\n }\n }\n\n return extendObject(css, {'box-sizing': 'border-box'}) as StyleDefinition;\n }\n}\n\nconst inputs = [\n 'fxFlex', 'fxFlex.xs', 'fxFlex.sm', 'fxFlex.md',\n 'fxFlex.lg', 'fxFlex.xl', 'fxFlex.lt-sm', 'fxFlex.lt-md',\n 'fxFlex.lt-lg', 'fxFlex.lt-xl', 'fxFlex.gt-xs', 'fxFlex.gt-sm',\n 'fxFlex.gt-md', 'fxFlex.gt-lg'\n];\nconst selector = `\n [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n [fxFlex.gt-md], [fxFlex.gt-lg]\n`;\n\n/**\n * Directive to control the size of a flex item using flex-basis, flex-grow, and flex-shrink.\n * Corresponds to the css `flex` shorthand property.\n *\n * @see https://css-tricks.com/snippets/css/a-guide-to-flexbox/\n */\nexport class FlexDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'flex';\n protected direction = '';\n protected wrap = false;\n\n\n @Input('fxShrink')\n get shrink(): string { return this.flexShrink; }\n set shrink(value: string) {\n this.flexShrink = value || '1';\n this.triggerReflow();\n }\n\n @Input('fxGrow')\n get grow(): string { return this.flexGrow; }\n set grow(value: string) {\n this.flexGrow = value || '1';\n this.triggerReflow();\n }\n\n protected flexGrow = '1';\n protected flexShrink = '1';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n protected styleBuilder: FlexStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n if (this.parentElement) {\n this.marshal.trackValue(this.parentElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n }\n\n /**\n * Caches the parent container's 'flex-direction' and updates the element's style.\n * Used as a handler for layout change events from the parent flex container.\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n const layoutParts = layout.split(' ');\n this.direction = layoutParts[0];\n this.wrap = layoutParts[1] !== undefined && layoutParts[1] === 'wrap';\n this.triggerUpdate();\n }\n\n /** Input to this is exclusively the basis input value */\n protected updateWithValue(value: string) {\n const addFlexToParent = this.layoutConfig.addFlexToParent !== false;\n if (!this.direction) {\n this.direction = this.getFlexFlowDirection(this.parentElement!, addFlexToParent);\n }\n const direction = this.direction;\n const isHorizontal = direction.startsWith('row');\n const hasWrap = this.wrap;\n if (isHorizontal && hasWrap) {\n this.styleCache = flexRowWrapCache;\n } else if (isHorizontal && !hasWrap) {\n this.styleCache = flexRowCache;\n } else if (!isHorizontal && hasWrap) {\n this.styleCache = flexColumnWrapCache;\n } else if (!isHorizontal && !hasWrap) {\n this.styleCache = flexColumnCache;\n }\n const basis = String(value).replace(';', '');\n const parts = validateBasis(basis, this.flexGrow, this.flexShrink);\n this.addStyles(parts.join(' '), {direction, hasWrap});\n }\n\n /** Trigger a style reflow, usually based on a shrink/grow input event */\n protected triggerReflow() {\n const parts = validateBasis(this.activatedValue, this.flexGrow, this.flexShrink);\n this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, parts.join(' '));\n }\n}\n\n@Directive({inputs, selector})\nexport class DefaultFlexDirective extends FlexDirective {\n protected inputs = inputs;\n}\n\nconst flexRowCache: Map = new Map();\nconst flexColumnCache: Map = new Map();\nconst flexRowWrapCache: Map = new Map();\nconst flexColumnWrapCache: Map = new Map();\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 {Directive, ElementRef, OnChanges, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class FlexOrderStyleBuilder extends StyleBuilder {\n buildStyles(value: string) {\n return {order: (value && parseInt(value, 10)) || ''};\n }\n}\n\nconst inputs = [\n 'fxFlexOrder', 'fxFlexOrder.xs', 'fxFlexOrder.sm', 'fxFlexOrder.md',\n 'fxFlexOrder.lg', 'fxFlexOrder.xl', 'fxFlexOrder.lt-sm', 'fxFlexOrder.lt-md',\n 'fxFlexOrder.lt-lg', 'fxFlexOrder.lt-xl', 'fxFlexOrder.gt-xs', 'fxFlexOrder.gt-sm',\n 'fxFlexOrder.gt-md', 'fxFlexOrder.gt-lg'\n];\nconst selector = `\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n`;\n\n/**\n * 'flex-order' flexbox styling directive\n * Configures the positional ordering of the element in a sorted layout container\n * @see https://css-tricks.com/almanac/properties/o/order/\n */\nexport class FlexOrderDirective extends BaseDirective2 implements OnChanges {\n\n protected DIRECTIVE_KEY = 'flex-order';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexOrderStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = flexOrderCache;\n}\n\nconst flexOrderCache: Map = new Map();\n\n@Directive({selector, inputs})\nexport class DefaultFlexOrderDirective extends FlexOrderDirective {\n protected inputs = inputs;\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 {\n Directive,\n ElementRef,\n OnChanges,\n Optional,\n Injectable,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {isFlowHorizontal} from '../../utils/layout-validator';\n\nexport interface FlexOffsetParent {\n layout: string;\n isRtl: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FlexOffsetStyleBuilder extends StyleBuilder {\n buildStyles(offset: string, parent: FlexOffsetParent) {\n if (offset === '') {\n offset = '0';\n }\n const isPercent = String(offset).indexOf('%') > -1;\n const isPx = String(offset).indexOf('px') > -1;\n if (!isPx && !isPercent && !isNaN(+offset)) {\n offset = offset + '%';\n }\n const horizontalLayoutKey = parent.isRtl ? 'margin-right' : 'margin-left';\n const styles: StyleDefinition = isFlowHorizontal(parent.layout) ?\n {[horizontalLayoutKey]: `${offset}`} : {'margin-top': `${offset}`};\n\n return styles;\n }\n}\n\nconst inputs = [\n 'fxFlexOffset', 'fxFlexOffset.xs', 'fxFlexOffset.sm', 'fxFlexOffset.md',\n 'fxFlexOffset.lg', 'fxFlexOffset.xl', 'fxFlexOffset.lt-sm', 'fxFlexOffset.lt-md',\n 'fxFlexOffset.lt-lg', 'fxFlexOffset.lt-xl', 'fxFlexOffset.gt-xs', 'fxFlexOffset.gt-sm',\n 'fxFlexOffset.gt-md', 'fxFlexOffset.gt-lg'\n];\nconst selector = `\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n`;\n\n/**\n * 'flex-offset' flexbox styling directive\n * Configures the 'margin-left' of the element in a layout container\n */\nexport class FlexOffsetDirective extends BaseDirective2 implements OnChanges {\n protected DIRECTIVE_KEY = 'flex-offset';\n\n constructor(protected elRef: ElementRef,\n protected directionality: Directionality,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexOffsetStyleBuilder,\n protected marshal: MediaMarshaller,\n protected styler: StyleUtils) {\n super(elRef, styleBuilder, styler, marshal);\n this.init([this.directionality.change]);\n // Parent DOM `layout-gap` with affect the nested child with `flex-offset`\n if (this.parentElement) {\n this.marshal\n .trackValue(this.parentElement, 'layout-gap')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerUpdate.bind(this));\n }\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Using the current fxFlexOffset value, update the inline CSS\n * NOTE: this will assign `margin-left` if the parent flex-direction == 'row',\n * otherwise `margin-top` is used for the offset.\n */\n protected updateWithValue(value: string|number = ''): void {\n // The flex-direction of this element's flex container. Defaults to 'row'.\n const layout = this.getFlexFlowDirection(this.parentElement!, true);\n const isRtl = this.directionality.value === 'rtl';\n if (layout === 'row' && isRtl) {\n this.styleCache = flexOffsetCacheRowRtl;\n } else if (layout === 'row' && !isRtl) {\n this.styleCache = flexOffsetCacheRowLtr;\n } else if (layout === 'column' && isRtl) {\n this.styleCache = flexOffsetCacheColumnRtl;\n } else if (layout === 'column' && !isRtl) {\n this.styleCache = flexOffsetCacheColumnLtr;\n }\n this.addStyles(value + '', {layout, isRtl});\n }\n}\n\n@Directive({selector, inputs})\nexport class DefaultFlexOffsetDirective extends FlexOffsetDirective {\n protected inputs = inputs;\n}\n\nconst flexOffsetCacheRowRtl: Map = new Map();\nconst flexOffsetCacheColumnRtl: Map = new Map();\nconst flexOffsetCacheRowLtr: Map = new Map();\nconst flexOffsetCacheColumnLtr: Map = new Map();\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class FlexAlignStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n input = input || 'stretch';\n const styles: StyleDefinition = {};\n\n // Cross-axis\n switch (input) {\n case 'start':\n styles['align-self'] = 'flex-start';\n break;\n case 'end':\n styles['align-self'] = 'flex-end';\n break;\n default:\n styles['align-self'] = input;\n break;\n }\n\n return styles;\n }\n}\n\nconst inputs = [\n 'fxFlexAlign', 'fxFlexAlign.xs', 'fxFlexAlign.sm', 'fxFlexAlign.md',\n 'fxFlexAlign.lg', 'fxFlexAlign.xl', 'fxFlexAlign.lt-sm', 'fxFlexAlign.lt-md',\n 'fxFlexAlign.lt-lg', 'fxFlexAlign.lt-xl', 'fxFlexAlign.gt-xs', 'fxFlexAlign.gt-sm',\n 'fxFlexAlign.gt-md', 'fxFlexAlign.gt-lg'\n];\nconst selector = `\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n`;\n\n/**\n * 'flex-align' flexbox styling directive\n * Allows element-specific overrides for cross-axis alignments in a layout container\n * @see https://css-tricks.com/almanac/properties/a/align-self/\n */\nexport class FlexAlignDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'flex-align';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexAlignStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = flexAlignCache;\n}\n\nconst flexAlignCache: Map = new Map();\n\n@Directive({selector, inputs})\nexport class DefaultFlexAlignDirective extends FlexAlignDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\nconst FLEX_FILL_CSS = {\n 'margin': 0,\n 'width': '100%',\n 'height': '100%',\n 'min-width': '100%',\n 'min-height': '100%'\n};\n\n@Injectable({providedIn: 'root'})\nexport class FlexFillStyleBuilder extends StyleBuilder {\n buildStyles(_input: string) {\n return FLEX_FILL_CSS;\n }\n}\n\n/**\n * 'fxFill' flexbox styling directive\n * Maximizes width and height of element in a layout container\n *\n * NOTE: fxFill is NOT responsive API!!\n */\n@Directive({selector: `[fxFill], [fxFlexFill]`})\nexport class FlexFillDirective extends BaseDirective2 {\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n protected styleBuilder: FlexFillStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.addStyles('');\n }\n\n protected styleCache = flexFillCache;\n}\n\nconst flexFillCache: Map = new Map();\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {extendObject} from '../../utils/object-extend';\nimport {LAYOUT_VALUES, isFlowHorizontal} from '../../utils/layout-validator';\n\nexport interface LayoutAlignParent {\n layout: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class LayoutAlignStyleBuilder extends StyleBuilder {\n buildStyles(align: string, parent: LayoutAlignParent) {\n const css: StyleDefinition = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['justify-content'] = 'center';\n break;\n case 'space-around':\n css['justify-content'] = 'space-around';\n break;\n case 'space-between':\n css['justify-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['justify-content'] = 'space-evenly';\n break;\n case 'end':\n case 'flex-end':\n css['justify-content'] = 'flex-end';\n break;\n case 'start':\n case 'flex-start':\n default :\n css['justify-content'] = 'flex-start'; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'flex-start':\n css['align-items'] = css['align-content'] = 'flex-start';\n break;\n case 'center':\n css['align-items'] = css['align-content'] = 'center';\n break;\n case 'end':\n case 'flex-end':\n css['align-items'] = css['align-content'] = 'flex-end';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n css['align-items'] = 'stretch';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n css['align-items'] = 'stretch';\n break;\n case 'baseline':\n css['align-content'] = 'stretch';\n css['align-items'] = 'baseline';\n break;\n case 'stretch':\n default : // 'stretch'\n css['align-items'] = css['align-content'] = 'stretch'; // default cross axis\n break;\n }\n\n return extendObject(css, {\n 'display' : 'flex',\n 'flex-direction' : parent.layout,\n 'box-sizing' : 'border-box',\n 'max-width': crossAxis === 'stretch' ?\n !isFlowHorizontal(parent.layout) ? '100%' : null : null,\n 'max-height': crossAxis === 'stretch' ?\n isFlowHorizontal(parent.layout) ? '100%' : null : null,\n }) as StyleDefinition;\n }\n}\n\nconst inputs = [\n 'fxLayoutAlign', 'fxLayoutAlign.xs', 'fxLayoutAlign.sm', 'fxLayoutAlign.md',\n 'fxLayoutAlign.lg', 'fxLayoutAlign.xl', 'fxLayoutAlign.lt-sm', 'fxLayoutAlign.lt-md',\n 'fxLayoutAlign.lt-lg', 'fxLayoutAlign.lt-xl', 'fxLayoutAlign.gt-xs', 'fxLayoutAlign.gt-sm',\n 'fxLayoutAlign.gt-md', 'fxLayoutAlign.gt-lg'\n];\nconst selector = `\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n`;\n\n/**\n * 'layout-align' flexbox styling directive\n * Defines positioning of child elements along main and cross axis in a layout container\n * Optional values: {main-axis} values or {main-axis cross-axis} value pairs\n *\n * @see https://css-tricks.com/almanac/properties/j/justify-content/\n * @see https://css-tricks.com/almanac/properties/a/align-items/\n * @see https://css-tricks.com/almanac/properties/a/align-content/\n */\nexport class LayoutAlignDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'layout-align';\n protected layout = 'row'; // default flex-direction\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutAlignStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n this.marshal.trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n *\n */\n protected updateWithValue(value: string) {\n const layout = this.layout || 'row';\n if (layout === 'row') {\n this.styleCache = layoutAlignHorizontalCache;\n } else if (layout === 'row-reverse') {\n this.styleCache = layoutAlignHorizontalRevCache;\n } else if (layout === 'column') {\n this.styleCache = layoutAlignVerticalCache;\n } else if (layout === 'column-reverse') {\n this.styleCache = layoutAlignVerticalRevCache;\n }\n this.addStyles(value, {layout});\n }\n\n /**\n * Cache the parent container 'flex-direction' and update the 'flex' styles\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n this.layout = layout.split(' ')[0];\n if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutAlignDirective extends LayoutAlignDirective {\n protected inputs = inputs;\n}\n\nconst layoutAlignHorizontalCache: Map = new Map();\nconst layoutAlignVerticalCache: Map = new Map();\nconst layoutAlignHorizontalRevCache: Map = new Map();\nconst layoutAlignVerticalRevCache: Map = new Map();\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';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultLayoutDirective} from './layout/layout';\nimport {DefaultLayoutGapDirective} from './layout-gap/layout-gap';\nimport {DefaultFlexDirective} from './flex/flex';\nimport {DefaultFlexOrderDirective} from './flex-order/flex-order';\nimport {DefaultFlexOffsetDirective} from './flex-offset/flex-offset';\nimport {DefaultFlexAlignDirective} from './flex-align/flex-align';\nimport {FlexFillDirective} from './flex-fill/flex-fill';\nimport {DefaultLayoutAlignDirective} from './layout-align/layout-align';\n\n\nconst ALL_DIRECTIVES = [\n DefaultLayoutDirective,\n DefaultLayoutGapDirective,\n DefaultLayoutAlignDirective,\n DefaultFlexOrderDirective,\n DefaultFlexOffsetDirective,\n FlexFillDirective,\n DefaultFlexAlignDirective,\n DefaultFlexDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the Flex API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule, BidiModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class FlexModule {\n}\n"],"names":["__extends","d","b","__","this","constructor","extendStatics","prototype","Object","create","buildLayoutCSS","value","_a","validateValue","buildCSS","toLowerCase","split","direction","wrap","inline","LAYOUT_VALUES","find","x","INLINE","validateWrapValue","isFlowHorizontal","indexOf","display","box-sizing","flex-direction","flex-wrap","buildGridPadding","directionality","paddingRight","paddingBottom","paddingLeft","padding","paddingTop","buildGridMargin","marginRight","marginBottom","marginLeft","margin","marginTop","buildGapCSS","gapValue","parent","key","margins","tslib_1.__assign","CLEAR_MARGIN_CSS","layout","extendObject","dest","sources","_i","arguments","length","TypeError","sources_1","source","hasOwnProperty","setPrototypeOf","__proto__","Array","p","__assign","assign","t","s","i","n","call","apply","tslib_1.__extends","LayoutStyleBuilder","_super","buildStyles","input","type","Injectable","args","providedIn","StyleBuilder","inputs","LayoutDirective","elRef","styleUtils","styleBuilder","marshal","_this","DIRECTIVE_KEY","styleCache","layoutCache","init","ElementRef","StyleUtils","decorators","Optional","MediaMarshaller","BaseDirective2","DefaultLayoutDirective","Directive","selector","Map","margin-left","margin-right","margin-top","margin-bottom","LayoutGapStyleBuilder","_styler","endsWith","GRID_SPECIFIER","slice","sideEffect","_styles","items","paddingStyles","applyStyleToElements","lastItem","pop","gapCss","LayoutGapDirective","zone","observerSubject","Subject","extraTriggers","change","asObservable","trackValue","nativeElement","pipe","takeUntil","destroySubject","subscribe","onLayoutChange","bind","defineProperty","obj","children","buffer","ngAfterContentInit","buildChildObservable","triggerUpdate","ngOnDestroy","observer","disconnect","matcher","updateWithValue","getValue","childrenNodes","filter","el","nodeType","willDisplay","sort","a","orderA","styler","lookupStyle","orderB","isNaN","layoutGapCacheRowRtl","layoutGapCacheRowLtr","layoutGapCacheColumnRtl","layoutGapCacheColumnLtr","addStyles","runOutsideAngular","MutationObserver","mutations","validatedChanges","it","addedNodes","removedNodes","some","next","observe","childList","NgZone","Directionality","DefaultLayoutGapDirective","FlexStyleBuilder","layoutConfig","grow","shrink","basisParts","basis","join","max","min","hasCalc","String","usingCalc","isPercent","hasUnits","isValue","isFixed","css","clearStyles","max-width","max-height","min-width","min-height","useColumnBasisZero","flex-grow","flex-shrink","flex-basis","flex","hasWrap","undefined","Inject","LAYOUT_CONFIG","FlexDirective","flexGrow","flexShrink","parentElement","triggerReflow","layoutParts","addFlexToParent","getFlexFlowDirection","isHorizontal","startsWith","flexRowWrapCache","flexRowCache","flexColumnWrapCache","flexColumnCache","replace","parts","validateBasis","activatedValue","updateElement","Input","DefaultFlexDirective","FlexOrderStyleBuilder","order","parseInt","FlexOrderDirective","flexOrderCache","DefaultFlexOrderDirective","FlexOffsetStyleBuilder","offset","horizontalLayoutKey","isRtl","FlexOffsetDirective","flexOffsetCacheRowRtl","flexOffsetCacheColumnRtl","flexOffsetCacheColumnLtr","flexOffsetCacheRowLtr","DefaultFlexOffsetDirective","FlexAlignStyleBuilder","styles","FlexAlignDirective","flexAlignCache","DefaultFlexAlignDirective","FLEX_FILL_CSS","width","height","FlexFillStyleBuilder","_input","FlexFillDirective","flexFillCache","LayoutAlignStyleBuilder","align","mainAxis","crossAxis","LayoutAlignDirective","layoutAlignHorizontalCache","layoutAlignHorizontalRevCache","layoutAlignVerticalCache","layoutAlignVerticalRevCache","DefaultLayoutAlignDirective","ALL_DIRECTIVES","NgModule","imports","CoreModule","BidiModule","declarations","exports","FlexModule"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"flex-layout-flex.umd.min.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/lib/utils/layout-validator.ts","../../src/lib/flex/layout-gap/layout-gap.ts","../../src/lib/utils/object-extend.ts","../../src/lib/flex/layout/layout.ts","../../src/lib/flex/flex/flex.ts","../../src/lib/flex/flex-order/flex-order.ts","../../src/lib/flex/flex-offset/flex-offset.ts","../../src/lib/flex/flex-align/flex-align.ts","../../src/lib/flex/flex-fill/flex-fill.ts","../../src/lib/flex/layout-align/layout-align.ts","../../src/lib/flex/module.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\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 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) : new P(function (resolve) { resolve(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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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 __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\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)) result[k] = mod[k];\r\n result.default = 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","/**\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='' 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 : 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 {\n Directive,\n ElementRef,\n Optional,\n OnDestroy,\n NgZone,\n Injectable,\n AfterContentInit,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {LAYOUT_VALUES} from '../../utils/layout-validator';\n\nexport interface LayoutGapParent {\n directionality: string;\n items: HTMLElement[];\n layout: string;\n}\n\nconst CLEAR_MARGIN_CSS = {\n 'margin-left': null,\n 'margin-right': null,\n 'margin-top': null,\n 'margin-bottom': null\n};\n\n@Injectable({providedIn: 'root'})\nexport class LayoutGapStyleBuilder extends StyleBuilder {\n constructor(private _styler: StyleUtils) {\n super();\n }\n\n buildStyles(gapValue: string, parent: LayoutGapParent) {\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n\n // Add the margin to the host element\n return buildGridMargin(gapValue, parent.directionality);\n } else {\n return {};\n }\n }\n\n sideEffect(gapValue: string, _styles: StyleDefinition, parent: LayoutGapParent) {\n const items = parent.items;\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n // For each `element` children, set the padding\n const paddingStyles = buildGridPadding(gapValue, parent.directionality);\n this._styler.applyStyleToElements(paddingStyles, parent.items);\n } else {\n const lastItem = items.pop()!;\n\n // For each `element` children EXCEPT the last,\n // set the margin right/bottom styles...\n const gapCss = buildGapCSS(gapValue, parent);\n this._styler.applyStyleToElements(gapCss, items);\n\n // Clear all gaps for all visible elements\n this._styler.applyStyleToElements(CLEAR_MARGIN_CSS, [lastItem]);\n }\n }\n}\n\nconst inputs = [\n 'fxLayoutGap', 'fxLayoutGap.xs', 'fxLayoutGap.sm', 'fxLayoutGap.md',\n 'fxLayoutGap.lg', 'fxLayoutGap.xl', 'fxLayoutGap.lt-sm', 'fxLayoutGap.lt-md',\n 'fxLayoutGap.lt-lg', 'fxLayoutGap.lt-xl', 'fxLayoutGap.gt-xs', 'fxLayoutGap.gt-sm',\n 'fxLayoutGap.gt-md', 'fxLayoutGap.gt-lg'\n];\nconst selector = `\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n`;\n\n/**\n * 'layout-padding' styling directive\n * Defines padding of child elements in a layout container\n */\nexport class LayoutGapDirective extends BaseDirective2 implements AfterContentInit, OnDestroy {\n protected layout = 'row'; // default flex-direction\n protected DIRECTIVE_KEY = 'layout-gap';\n protected observerSubject = new Subject();\n\n /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */\n protected get childrenNodes(): HTMLElement[] {\n const obj = this.nativeElement.children;\n const buffer: any[] = [];\n\n // iterate backwards ensuring that length is an UInt32\n for (let i = obj.length; i--;) {\n buffer[i] = obj[i];\n }\n return buffer;\n }\n\n constructor(protected elRef: ElementRef,\n protected zone: NgZone,\n protected directionality: Directionality,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutGapStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n const extraTriggers = [this.directionality.change, this.observerSubject.asObservable()];\n this.init(extraTriggers);\n this.marshal\n .trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n ngAfterContentInit() {\n this.buildChildObservable();\n this.triggerUpdate();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Cache the parent container 'flex-direction' and update the 'margin' styles\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n // Make sure to filter out 'wrap' option\n const direction = layout.split(' ');\n this.layout = direction[0];\n if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n\n /**\n *\n */\n protected updateWithValue(value: string) {\n // Gather all non-hidden Element nodes\n const items = this.childrenNodes\n .filter(el => el.nodeType === 1 && this.willDisplay(el))\n .sort((a, b) => {\n const orderA = +this.styler.lookupStyle(a, 'order');\n const orderB = +this.styler.lookupStyle(b, 'order');\n if (isNaN(orderA) || isNaN(orderB) || orderA === orderB) {\n return 0;\n } else {\n return orderA > orderB ? 1 : -1;\n }\n });\n\n if (items.length > 0) {\n const directionality = this.directionality.value;\n const layout = this.layout;\n if (layout === 'row' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheRowRtl;\n } else if (layout === 'row' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheRowLtr;\n } else if (layout === 'column' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheColumnRtl;\n } else if (layout === 'column' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheColumnLtr;\n }\n this.addStyles(value, {directionality, items, layout});\n }\n }\n\n /** We need to override clearStyles because in most cases mru isn't populated */\n protected clearStyles() {\n const gridMode = Object.keys(this.mru).length > 0;\n const childrenStyle = gridMode ? 'padding' :\n getMarginType(this.directionality.value, this.layout);\n\n // If there are styles on the parent remove them\n if (gridMode) {\n super.clearStyles();\n }\n\n // Then remove the children styles too\n this.styleUtils.applyStyleToElements({[childrenStyle]: ''}, this.childrenNodes);\n }\n\n /** Determine if an element will show or hide based on current activation */\n protected willDisplay(source: HTMLElement): boolean {\n const value = this.marshal.getValue(source, 'show-hide');\n return value === true ||\n (value === undefined && this.styleUtils.lookupStyle(source, 'display') !== 'none');\n }\n\n protected buildChildObservable(): void {\n this.zone.runOutsideAngular(() => {\n if (typeof MutationObserver !== 'undefined') {\n this.observer = new MutationObserver((mutations: MutationRecord[]) => {\n const validatedChanges = (it: MutationRecord): boolean => {\n return (it.addedNodes && it.addedNodes.length > 0) ||\n (it.removedNodes && it.removedNodes.length > 0);\n };\n\n // update gap styles only for child 'added' or 'removed' events\n if (mutations.some(validatedChanges)) {\n this.observerSubject.next();\n }\n });\n this.observer.observe(this.nativeElement, {childList: true});\n }\n });\n }\n\n protected observer?: MutationObserver;\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutGapDirective extends LayoutGapDirective {\n protected inputs = inputs;\n}\n\nconst layoutGapCacheRowRtl: Map = new Map();\nconst layoutGapCacheColumnRtl: Map = new Map();\nconst layoutGapCacheRowLtr: Map = new Map();\nconst layoutGapCacheColumnLtr: Map = new Map();\n\nconst GRID_SPECIFIER = ' grid';\n\nfunction buildGridPadding(value: string, directionality: string): StyleDefinition {\n let paddingTop = '0px', paddingRight = '0px', paddingBottom = value, paddingLeft = '0px';\n\n if (directionality === 'rtl') {\n paddingLeft = value;\n } else {\n paddingRight = value;\n }\n\n return {'padding': `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`};\n}\n\nfunction buildGridMargin(value: string, directionality: string): StyleDefinition {\n let marginTop = '0px', marginRight = '0px', marginBottom = '-' + value, marginLeft = '0px';\n\n if (directionality === 'rtl') {\n marginLeft = '-' + value;\n } else {\n marginRight = '-' + value;\n }\n\n return {'margin': `${marginTop} ${marginRight} ${marginBottom} ${marginLeft}`};\n}\n\nfunction getMarginType(directionality: string, layout: string) {\n switch (layout) {\n case 'column':\n return 'margin-bottom';\n case 'column-reverse':\n return 'margin-top';\n case 'row':\n return directionality === 'rtl' ? 'margin-left' : 'margin-right';\n case 'row-reverse':\n return directionality === 'rtl' ? 'margin-right' : 'margin-left';\n default :\n return directionality === 'rtl' ? 'margin-left' : 'margin-right';\n }\n}\n\nfunction buildGapCSS(gapValue: string,\n parent: {directionality: string, layout: string}): StyleDefinition {\n const key = getMarginType(parent.directionality, parent.layout);\n const margins: {[key: string]: string | null} = {...CLEAR_MARGIN_CSS};\n margins[key] = gapValue;\n return margins;\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 */\nimport {Directive, ElementRef, OnChanges, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\nimport {buildLayoutCSS} from '../../utils/layout-validator';\n\n@Injectable({providedIn: 'root'})\nexport class LayoutStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return buildLayoutCSS(input);\n }\n}\n\nconst inputs = [\n 'fxLayout', 'fxLayout.xs', 'fxLayout.sm', 'fxLayout.md',\n 'fxLayout.lg', 'fxLayout.xl', 'fxLayout.lt-sm', 'fxLayout.lt-md',\n 'fxLayout.lt-lg', 'fxLayout.lt-xl', 'fxLayout.gt-xs', 'fxLayout.gt-sm',\n 'fxLayout.gt-md', 'fxLayout.gt-lg'\n];\nconst selector = `\n [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],\n [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md],\n [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm],\n [fxLayout.gt-md], [fxLayout.gt-lg]\n`;\n\n/**\n * 'layout' flexbox styling directive\n * Defines the positioning flow direction for the child elements: row or column\n * Optional values: column or row (default)\n * @see https://css-tricks.com/almanac/properties/f/flex-direction/\n *\n */\nexport class LayoutDirective extends BaseDirective2 implements OnChanges {\n\n protected DIRECTIVE_KEY = 'layout';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = layoutCache;\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutDirective extends LayoutDirective {\n protected inputs = inputs;\n}\n\nconst layoutCache: Map = new Map();\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 {Directive, ElementRef, Inject, Injectable, Input} from '@angular/core';\nimport {\n BaseDirective2,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n StyleUtils,\n validateBasis,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {extendObject} from '../../utils/object-extend';\nimport {isFlowHorizontal} from '../../utils/layout-validator';\n\ninterface FlexBuilderParent {\n direction: string;\n hasWrap: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FlexStyleBuilder extends StyleBuilder {\n constructor(@Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions) {\n super();\n }\n buildStyles(input: string, parent: FlexBuilderParent) {\n let [grow, shrink, ...basisParts]: (string|number)[] = input.split(' ');\n let basis = basisParts.join(' ');\n\n // The flex-direction of this element's flex container. Defaults to 'row'.\n const direction = (parent.direction.indexOf('column') > -1) ? 'column' : 'row';\n\n const max = isFlowHorizontal(direction) ? 'max-width' : 'max-height';\n const min = isFlowHorizontal(direction) ? 'min-width' : 'min-height';\n\n const hasCalc = String(basis).indexOf('calc') > -1;\n const usingCalc = hasCalc || (basis === 'auto');\n const isPercent = String(basis).indexOf('%') > -1 && !hasCalc;\n const hasUnits = String(basis).indexOf('px') > -1 || String(basis).indexOf('rem') > -1 ||\n String(basis).indexOf('em') > -1 || String(basis).indexOf('vw') > -1 ||\n String(basis).indexOf('vh') > -1;\n\n let isValue = (hasCalc || hasUnits);\n\n grow = (grow == '0') ? 0 : grow;\n shrink = (shrink == '0') ? 0 : shrink;\n\n // make box inflexible when shrink and grow are both zero\n // should not set a min when the grow is zero\n // should not set a max when the shrink is zero\n const isFixed = !grow && !shrink;\n\n let css: {[key: string]: string | number | null} = {};\n\n // flex-basis allows you to specify the initial/starting main-axis size of the element,\n // before anything else is computed. It can either be a percentage or an absolute value.\n // It is, however, not the breaking point for flex-grow/shrink properties\n //\n // flex-grow can be seen as this:\n // 0: Do not stretch. Either size to element's content width, or obey 'flex-basis'.\n // 1: (Default value). Stretch; will be the same size to all other flex items on\n // the same row since they have a default value of 1.\n // ≥2 (integer n): Stretch. Will be n times the size of other elements\n // with 'flex-grow: 1' on the same row.\n\n // Use `null` to clear existing styles.\n const clearStyles = {\n 'max-width': null,\n 'max-height': null,\n 'min-width': null,\n 'min-height': null\n };\n switch (basis || '') {\n case '':\n const useColumnBasisZero = this.layoutConfig.useColumnBasisZero !== false;\n basis = direction === 'row' ? '0%' : (useColumnBasisZero ? '0.000000001px' : 'auto');\n break;\n case 'initial': // default\n case 'nogrow':\n grow = 0;\n basis = 'auto';\n break;\n case 'grow':\n basis = '100%';\n break;\n case 'noshrink':\n shrink = 0;\n basis = 'auto';\n break;\n case 'auto':\n break;\n case 'none':\n grow = 0;\n shrink = 0;\n basis = 'auto';\n break;\n default:\n // Defaults to percentage sizing unless `px` is explicitly set\n if (!isValue && !isPercent && !isNaN(basis as any)) {\n basis = basis + '%';\n }\n\n // Fix for issue 280\n if (basis === '0%') {\n isValue = true;\n }\n\n if (basis === '0px') {\n basis = '0%';\n }\n\n // fix issue #5345\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': isValue ? basis : '100%'\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${isValue ? basis : '100%'}`\n });\n }\n\n break;\n }\n\n if (!(css['flex'] || css['flex-grow'])) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n }\n\n // Fix for issues 277, 534, and 728\n if (basis !== '0%' && basis !== '0px' && basis !== '0.000000001px' && basis !== 'auto') {\n css[min] = isFixed || (isValue && grow) ? basis : null;\n css[max] = isFixed || (!usingCalc && shrink) ? basis : null;\n }\n\n // Fix for issue 528\n if (!css[min] && !css[max]) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n } else {\n // Fix for issue 660\n if (parent.hasWrap) {\n css[hasCalc ? 'flex-basis' : 'flex'] = css[max] ?\n (hasCalc ? css[max] : `${grow} ${shrink} ${css[max]}`) :\n (hasCalc ? css[min] : `${grow} ${shrink} ${css[min]}`);\n }\n }\n\n return extendObject(css, {'box-sizing': 'border-box'}) as StyleDefinition;\n }\n}\n\nconst inputs = [\n 'fxFlex', 'fxFlex.xs', 'fxFlex.sm', 'fxFlex.md',\n 'fxFlex.lg', 'fxFlex.xl', 'fxFlex.lt-sm', 'fxFlex.lt-md',\n 'fxFlex.lt-lg', 'fxFlex.lt-xl', 'fxFlex.gt-xs', 'fxFlex.gt-sm',\n 'fxFlex.gt-md', 'fxFlex.gt-lg'\n];\nconst selector = `\n [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n [fxFlex.gt-md], [fxFlex.gt-lg]\n`;\n\n/**\n * Directive to control the size of a flex item using flex-basis, flex-grow, and flex-shrink.\n * Corresponds to the css `flex` shorthand property.\n *\n * @see https://css-tricks.com/snippets/css/a-guide-to-flexbox/\n */\nexport class FlexDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'flex';\n protected direction = '';\n protected wrap = false;\n\n\n @Input('fxShrink')\n get shrink(): string { return this.flexShrink; }\n set shrink(value: string) {\n this.flexShrink = value || '1';\n this.triggerReflow();\n }\n\n @Input('fxGrow')\n get grow(): string { return this.flexGrow; }\n set grow(value: string) {\n this.flexGrow = value || '1';\n this.triggerReflow();\n }\n\n protected flexGrow = '1';\n protected flexShrink = '1';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n protected styleBuilder: FlexStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n if (this.parentElement) {\n this.marshal.trackValue(this.parentElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n this.marshal.trackValue(this.nativeElement, 'layout-align')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerReflow.bind(this));\n }\n }\n\n /**\n * Caches the parent container's 'flex-direction' and updates the element's style.\n * Used as a handler for layout change events from the parent flex container.\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n const layoutParts = layout.split(' ');\n this.direction = layoutParts[0];\n this.wrap = layoutParts[1] !== undefined && layoutParts[1] === 'wrap';\n this.triggerUpdate();\n }\n\n /** Input to this is exclusively the basis input value */\n protected updateWithValue(value: string) {\n const addFlexToParent = this.layoutConfig.addFlexToParent !== false;\n if (!this.direction) {\n this.direction = this.getFlexFlowDirection(this.parentElement!, addFlexToParent);\n }\n const direction = this.direction;\n const isHorizontal = direction.startsWith('row');\n const hasWrap = this.wrap;\n if (isHorizontal && hasWrap) {\n this.styleCache = flexRowWrapCache;\n } else if (isHorizontal && !hasWrap) {\n this.styleCache = flexRowCache;\n } else if (!isHorizontal && hasWrap) {\n this.styleCache = flexColumnWrapCache;\n } else if (!isHorizontal && !hasWrap) {\n this.styleCache = flexColumnCache;\n }\n const basis = String(value).replace(';', '');\n const parts = validateBasis(basis, this.flexGrow, this.flexShrink);\n this.addStyles(parts.join(' '), {direction, hasWrap});\n }\n\n /** Trigger a style reflow, usually based on a shrink/grow input event */\n protected triggerReflow() {\n const activatedValue = this.activatedValue;\n if (activatedValue !== undefined) {\n const parts = validateBasis(activatedValue, this.flexGrow, this.flexShrink);\n this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, parts.join(' '));\n }\n }\n}\n\n@Directive({inputs, selector})\nexport class DefaultFlexDirective extends FlexDirective {\n protected inputs = inputs;\n}\n\nconst flexRowCache: Map = new Map();\nconst flexColumnCache: Map = new Map();\nconst flexRowWrapCache: Map = new Map();\nconst flexColumnWrapCache: Map = new Map();\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 {Directive, ElementRef, OnChanges, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class FlexOrderStyleBuilder extends StyleBuilder {\n buildStyles(value: string) {\n return {order: (value && parseInt(value, 10)) || ''};\n }\n}\n\nconst inputs = [\n 'fxFlexOrder', 'fxFlexOrder.xs', 'fxFlexOrder.sm', 'fxFlexOrder.md',\n 'fxFlexOrder.lg', 'fxFlexOrder.xl', 'fxFlexOrder.lt-sm', 'fxFlexOrder.lt-md',\n 'fxFlexOrder.lt-lg', 'fxFlexOrder.lt-xl', 'fxFlexOrder.gt-xs', 'fxFlexOrder.gt-sm',\n 'fxFlexOrder.gt-md', 'fxFlexOrder.gt-lg'\n];\nconst selector = `\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n`;\n\n/**\n * 'flex-order' flexbox styling directive\n * Configures the positional ordering of the element in a sorted layout container\n * @see https://css-tricks.com/almanac/properties/o/order/\n */\nexport class FlexOrderDirective extends BaseDirective2 implements OnChanges {\n\n protected DIRECTIVE_KEY = 'flex-order';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexOrderStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = flexOrderCache;\n}\n\nconst flexOrderCache: Map = new Map();\n\n@Directive({selector, inputs})\nexport class DefaultFlexOrderDirective extends FlexOrderDirective {\n protected inputs = inputs;\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 {\n Directive,\n ElementRef,\n OnChanges,\n Optional,\n Injectable,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {isFlowHorizontal} from '../../utils/layout-validator';\n\nexport interface FlexOffsetParent {\n layout: string;\n isRtl: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FlexOffsetStyleBuilder extends StyleBuilder {\n buildStyles(offset: string, parent: FlexOffsetParent) {\n if (offset === '') {\n offset = '0';\n }\n const isPercent = String(offset).indexOf('%') > -1;\n const isPx = String(offset).indexOf('px') > -1;\n if (!isPx && !isPercent && !isNaN(+offset)) {\n offset = offset + '%';\n }\n const horizontalLayoutKey = parent.isRtl ? 'margin-right' : 'margin-left';\n const styles: StyleDefinition = isFlowHorizontal(parent.layout) ?\n {[horizontalLayoutKey]: `${offset}`} : {'margin-top': `${offset}`};\n\n return styles;\n }\n}\n\nconst inputs = [\n 'fxFlexOffset', 'fxFlexOffset.xs', 'fxFlexOffset.sm', 'fxFlexOffset.md',\n 'fxFlexOffset.lg', 'fxFlexOffset.xl', 'fxFlexOffset.lt-sm', 'fxFlexOffset.lt-md',\n 'fxFlexOffset.lt-lg', 'fxFlexOffset.lt-xl', 'fxFlexOffset.gt-xs', 'fxFlexOffset.gt-sm',\n 'fxFlexOffset.gt-md', 'fxFlexOffset.gt-lg'\n];\nconst selector = `\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n`;\n\n/**\n * 'flex-offset' flexbox styling directive\n * Configures the 'margin-left' of the element in a layout container\n */\nexport class FlexOffsetDirective extends BaseDirective2 implements OnChanges {\n protected DIRECTIVE_KEY = 'flex-offset';\n\n constructor(protected elRef: ElementRef,\n protected directionality: Directionality,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexOffsetStyleBuilder,\n protected marshal: MediaMarshaller,\n protected styler: StyleUtils) {\n super(elRef, styleBuilder, styler, marshal);\n this.init([this.directionality.change]);\n // Parent DOM `layout-gap` with affect the nested child with `flex-offset`\n if (this.parentElement) {\n this.marshal\n .trackValue(this.parentElement, 'layout-gap')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerUpdate.bind(this));\n }\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Using the current fxFlexOffset value, update the inline CSS\n * NOTE: this will assign `margin-left` if the parent flex-direction == 'row',\n * otherwise `margin-top` is used for the offset.\n */\n protected updateWithValue(value: string|number = ''): void {\n // The flex-direction of this element's flex container. Defaults to 'row'.\n const layout = this.getFlexFlowDirection(this.parentElement!, true);\n const isRtl = this.directionality.value === 'rtl';\n if (layout === 'row' && isRtl) {\n this.styleCache = flexOffsetCacheRowRtl;\n } else if (layout === 'row' && !isRtl) {\n this.styleCache = flexOffsetCacheRowLtr;\n } else if (layout === 'column' && isRtl) {\n this.styleCache = flexOffsetCacheColumnRtl;\n } else if (layout === 'column' && !isRtl) {\n this.styleCache = flexOffsetCacheColumnLtr;\n }\n this.addStyles(value + '', {layout, isRtl});\n }\n}\n\n@Directive({selector, inputs})\nexport class DefaultFlexOffsetDirective extends FlexOffsetDirective {\n protected inputs = inputs;\n}\n\nconst flexOffsetCacheRowRtl: Map = new Map();\nconst flexOffsetCacheColumnRtl: Map = new Map();\nconst flexOffsetCacheRowLtr: Map = new Map();\nconst flexOffsetCacheColumnLtr: Map = new Map();\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class FlexAlignStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n input = input || 'stretch';\n const styles: StyleDefinition = {};\n\n // Cross-axis\n switch (input) {\n case 'start':\n styles['align-self'] = 'flex-start';\n break;\n case 'end':\n styles['align-self'] = 'flex-end';\n break;\n default:\n styles['align-self'] = input;\n break;\n }\n\n return styles;\n }\n}\n\nconst inputs = [\n 'fxFlexAlign', 'fxFlexAlign.xs', 'fxFlexAlign.sm', 'fxFlexAlign.md',\n 'fxFlexAlign.lg', 'fxFlexAlign.xl', 'fxFlexAlign.lt-sm', 'fxFlexAlign.lt-md',\n 'fxFlexAlign.lt-lg', 'fxFlexAlign.lt-xl', 'fxFlexAlign.gt-xs', 'fxFlexAlign.gt-sm',\n 'fxFlexAlign.gt-md', 'fxFlexAlign.gt-lg'\n];\nconst selector = `\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n`;\n\n/**\n * 'flex-align' flexbox styling directive\n * Allows element-specific overrides for cross-axis alignments in a layout container\n * @see https://css-tricks.com/almanac/properties/a/align-self/\n */\nexport class FlexAlignDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'flex-align';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexAlignStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = flexAlignCache;\n}\n\nconst flexAlignCache: Map = new Map();\n\n@Directive({selector, inputs})\nexport class DefaultFlexAlignDirective extends FlexAlignDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\nconst FLEX_FILL_CSS = {\n 'margin': 0,\n 'width': '100%',\n 'height': '100%',\n 'min-width': '100%',\n 'min-height': '100%'\n};\n\n@Injectable({providedIn: 'root'})\nexport class FlexFillStyleBuilder extends StyleBuilder {\n buildStyles(_input: string) {\n return FLEX_FILL_CSS;\n }\n}\n\n/**\n * 'fxFill' flexbox styling directive\n * Maximizes width and height of element in a layout container\n *\n * NOTE: fxFill is NOT responsive API!!\n */\n@Directive({selector: `[fxFill], [fxFlexFill]`})\nexport class FlexFillDirective extends BaseDirective2 {\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n protected styleBuilder: FlexFillStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.addStyles('');\n }\n\n protected styleCache = flexFillCache;\n}\n\nconst flexFillCache: Map = new Map();\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {extendObject} from '../../utils/object-extend';\nimport {LAYOUT_VALUES, isFlowHorizontal} from '../../utils/layout-validator';\n\nexport interface LayoutAlignParent {\n layout: string;\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class LayoutAlignStyleBuilder extends StyleBuilder {\n buildStyles(align: string, parent: LayoutAlignParent) {\n const css: StyleDefinition = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['justify-content'] = 'center';\n break;\n case 'space-around':\n css['justify-content'] = 'space-around';\n break;\n case 'space-between':\n css['justify-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['justify-content'] = 'space-evenly';\n break;\n case 'end':\n case 'flex-end':\n css['justify-content'] = 'flex-end';\n break;\n case 'start':\n case 'flex-start':\n default :\n css['justify-content'] = 'flex-start'; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'flex-start':\n css['align-items'] = css['align-content'] = 'flex-start';\n break;\n case 'center':\n css['align-items'] = css['align-content'] = 'center';\n break;\n case 'end':\n case 'flex-end':\n css['align-items'] = css['align-content'] = 'flex-end';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n css['align-items'] = 'stretch';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n css['align-items'] = 'stretch';\n break;\n case 'baseline':\n css['align-content'] = 'stretch';\n css['align-items'] = 'baseline';\n break;\n case 'stretch':\n default : // 'stretch'\n css['align-items'] = css['align-content'] = 'stretch'; // default cross axis\n break;\n }\n\n return extendObject(css, {\n 'display' : parent.inline ? 'inline-flex' : 'flex',\n 'flex-direction' : parent.layout,\n 'box-sizing' : 'border-box',\n 'max-width': crossAxis === 'stretch' ?\n !isFlowHorizontal(parent.layout) ? '100%' : null : null,\n 'max-height': crossAxis === 'stretch' ?\n isFlowHorizontal(parent.layout) ? '100%' : null : null,\n }) as StyleDefinition;\n }\n}\n\nconst inputs = [\n 'fxLayoutAlign', 'fxLayoutAlign.xs', 'fxLayoutAlign.sm', 'fxLayoutAlign.md',\n 'fxLayoutAlign.lg', 'fxLayoutAlign.xl', 'fxLayoutAlign.lt-sm', 'fxLayoutAlign.lt-md',\n 'fxLayoutAlign.lt-lg', 'fxLayoutAlign.lt-xl', 'fxLayoutAlign.gt-xs', 'fxLayoutAlign.gt-sm',\n 'fxLayoutAlign.gt-md', 'fxLayoutAlign.gt-lg'\n];\nconst selector = `\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n`;\n\n/**\n * 'layout-align' flexbox styling directive\n * Defines positioning of child elements along main and cross axis in a layout container\n * Optional values: {main-axis} values or {main-axis cross-axis} value pairs\n *\n * @see https://css-tricks.com/almanac/properties/j/justify-content/\n * @see https://css-tricks.com/almanac/properties/a/align-items/\n * @see https://css-tricks.com/almanac/properties/a/align-content/\n */\nexport class LayoutAlignDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'layout-align';\n protected layout = 'row'; // default flex-direction\n protected inline = false; // default inline value\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutAlignStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n this.marshal.trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n *\n */\n protected updateWithValue(value: string) {\n const layout = this.layout || 'row';\n const inline = this.inline;\n if (layout === 'row' && inline) {\n this.styleCache = layoutAlignHorizontalInlineCache;\n } else if (layout === 'row' && !inline) {\n this.styleCache = layoutAlignHorizontalCache;\n } else if (layout === 'row-reverse' && inline) {\n this.styleCache = layoutAlignHorizontalRevInlineCache;\n } else if (layout === 'row-reverse' && !inline) {\n this.styleCache = layoutAlignHorizontalRevCache;\n } else if (layout === 'column' && inline) {\n this.styleCache = layoutAlignVerticalInlineCache;\n } else if (layout === 'column' && !inline) {\n this.styleCache = layoutAlignVerticalCache;\n } else if (layout === 'column-reverse' && inline) {\n this.styleCache = layoutAlignVerticalRevInlineCache;\n } else if (layout === 'column-reverse' && !inline) {\n this.styleCache = layoutAlignVerticalRevCache;\n }\n this.addStyles(value, {layout, inline});\n }\n\n /**\n * Cache the parent container 'flex-direction' and update the 'flex' styles\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layoutKeys: string[] = matcher.value.split(' ');\n this.layout = layoutKeys[0];\n this.inline = matcher.value.includes('inline');\n if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutAlignDirective extends LayoutAlignDirective {\n protected inputs = inputs;\n}\n\nconst layoutAlignHorizontalCache: Map = new Map();\nconst layoutAlignVerticalCache: Map = new Map();\nconst layoutAlignHorizontalRevCache: Map = new Map();\nconst layoutAlignVerticalRevCache: Map = new Map();\nconst layoutAlignHorizontalInlineCache: Map = new Map();\nconst layoutAlignVerticalInlineCache: Map = new Map();\nconst layoutAlignHorizontalRevInlineCache: Map = new Map();\nconst layoutAlignVerticalRevInlineCache: Map = new Map();\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';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultLayoutDirective} from './layout/layout';\nimport {DefaultLayoutGapDirective} from './layout-gap/layout-gap';\nimport {DefaultFlexDirective} from './flex/flex';\nimport {DefaultFlexOrderDirective} from './flex-order/flex-order';\nimport {DefaultFlexOffsetDirective} from './flex-offset/flex-offset';\nimport {DefaultFlexAlignDirective} from './flex-align/flex-align';\nimport {FlexFillDirective} from './flex-fill/flex-fill';\nimport {DefaultLayoutAlignDirective} from './layout-align/layout-align';\n\n\nconst ALL_DIRECTIVES = [\n DefaultLayoutDirective,\n DefaultLayoutGapDirective,\n DefaultLayoutAlignDirective,\n DefaultFlexOrderDirective,\n DefaultFlexOffsetDirective,\n FlexFillDirective,\n DefaultFlexAlignDirective,\n DefaultFlexDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the Flex API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule, BidiModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class FlexModule {\n}\n"],"names":["__extends","d","b","__","this","constructor","extendStatics","prototype","Object","create","buildLayoutCSS","value","_a","validateValue","buildCSS","toLowerCase","split","direction","wrap","inline","LAYOUT_VALUES","find","x","INLINE","validateWrapValue","isFlowHorizontal","indexOf","display","box-sizing","flex-direction","flex-wrap","buildGridPadding","directionality","paddingRight","paddingBottom","paddingLeft","padding","paddingTop","buildGridMargin","marginRight","marginBottom","marginLeft","margin","marginTop","getMarginType","layout","buildGapCSS","gapValue","parent","key","margins","tslib_1.__assign","CLEAR_MARGIN_CSS","extendObject","dest","sources","_i","arguments","length","TypeError","sources_1","source","hasOwnProperty","setPrototypeOf","__proto__","Array","p","__assign","assign","t","s","i","n","call","apply","LayoutStyleBuilder","_super","tslib_1.__extends","buildStyles","input","type","Injectable","args","providedIn","StyleBuilder","inputs","LayoutDirective","elRef","styleUtils","styleBuilder","marshal","_this","DIRECTIVE_KEY","styleCache","layoutCache","init","ElementRef","StyleUtils","decorators","Optional","MediaMarshaller","BaseDirective2","DefaultLayoutDirective","Directive","selector","Map","margin-left","margin-right","margin-top","margin-bottom","LayoutGapStyleBuilder","_styler","endsWith","GRID_SPECIFIER","slice","sideEffect","_styles","items","paddingStyles","applyStyleToElements","lastItem","pop","gapCss","LayoutGapDirective","zone","observerSubject","Subject","extraTriggers","change","asObservable","trackValue","nativeElement","pipe","takeUntil","destroySubject","subscribe","onLayoutChange","bind","defineProperty","obj","children","buffer","ngAfterContentInit","buildChildObservable","triggerUpdate","ngOnDestroy","observer","disconnect","matcher","updateWithValue","childrenNodes","filter","el","nodeType","willDisplay","sort","a","orderA","styler","lookupStyle","orderB","isNaN","layoutGapCacheRowRtl","layoutGapCacheRowLtr","layoutGapCacheColumnRtl","layoutGapCacheColumnLtr","addStyles","clearStyles","gridMode","keys","mru","childrenStyle","getValue","undefined","runOutsideAngular","MutationObserver","mutations","validatedChanges","it","addedNodes","removedNodes","some","next","observe","childList","NgZone","Directionality","DefaultLayoutGapDirective","FlexStyleBuilder","layoutConfig","grow","shrink","basisParts","basis","join","max","min","hasCalc","String","usingCalc","isPercent","hasUnits","isValue","isFixed","css","max-width","max-height","min-width","min-height","useColumnBasisZero","flex-grow","flex-shrink","flex-basis","flex","hasWrap","Inject","LAYOUT_CONFIG","FlexDirective","flexGrow","flexShrink","parentElement","triggerReflow","layoutParts","addFlexToParent","getFlexFlowDirection","isHorizontal","startsWith","flexRowWrapCache","flexRowCache","flexColumnWrapCache","flexColumnCache","replace","parts","validateBasis","activatedValue","updateElement","Input","DefaultFlexDirective","FlexOrderStyleBuilder","order","parseInt","FlexOrderDirective","flexOrderCache","DefaultFlexOrderDirective","FlexOffsetStyleBuilder","offset","horizontalLayoutKey","isRtl","FlexOffsetDirective","flexOffsetCacheRowRtl","flexOffsetCacheColumnRtl","flexOffsetCacheColumnLtr","flexOffsetCacheRowLtr","DefaultFlexOffsetDirective","FlexAlignStyleBuilder","styles","FlexAlignDirective","flexAlignCache","DefaultFlexAlignDirective","FLEX_FILL_CSS","width","height","FlexFillStyleBuilder","_input","FlexFillDirective","flexFillCache","LayoutAlignStyleBuilder","align","mainAxis","crossAxis","LayoutAlignDirective","layoutAlignHorizontalInlineCache","layoutAlignHorizontalRevInlineCache","layoutAlignVerticalInlineCache","layoutAlignVerticalRevInlineCache","layoutAlignVerticalRevCache","layoutAlignVerticalCache","layoutAlignHorizontalRevCache","layoutAlignHorizontalCache","layoutKeys","includes","DefaultLayoutAlignDirective","ALL_DIRECTIVES","FlexModule","NgModule","imports","CoreModule","BidiModule","declarations","exports"],"mappings":"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"} \ No newline at end of file diff --git a/bundles/flex-layout-grid.umd.js b/bundles/flex-layout-grid.umd.js index 3c9359db7..f60a9f0f1 100644 --- a/bundles/flex-layout-grid.umd.js +++ b/bundles/flex-layout-grid.umd.js @@ -8,7 +8,7 @@ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/flex-layout/core'), require('@angular/cdk/coercion')) : typeof define === 'function' && define.amd ? define('@angular/flex-layout/grid', ['exports', '@angular/core', '@angular/flex-layout/core', '@angular/cdk/coercion'], factory) : - (factory((global.ng = global.ng || {}, global.ng['flex-layout'] = global.ng['flex-layout'] || {}, global.ng['flex-layout'].grid = {}),global.ng.core,global.ng.flexLayout.core,global.ng.cdk.coercion)); + (factory((global.ng = global.ng || {}, global.ng.flexLayout = global.ng.flexLayout || {}, global.ng.flexLayout.grid = {}),global.ng.core,global.ng.flexLayout.core,global.ng.cdk.coercion)); }(this, (function (exports,core,core$1,coercion) { 'use strict'; /*! ***************************************************************************** @@ -42,7 +42,7 @@ function __extends(d, b) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var ROW_DEFAULT = 'stretch'; @@ -67,15 +67,12 @@ var GridAlignStyleBuilder = /** @class */ (function (_super) { GridAlignStyleBuilder.decorators = [ { type: core.Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ GridAlignStyleBuilder.ngInjectableDef = core.defineInjectable({ factory: function GridAlignStyleBuilder_Factory() { return new GridAlignStyleBuilder(); }, token: GridAlignStyleBuilder, providedIn: "root" }); + /** @nocollapse */ GridAlignStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function GridAlignStyleBuilder_Factory() { return new GridAlignStyleBuilder(); }, token: GridAlignStyleBuilder, providedIn: "root" }); return GridAlignStyleBuilder; }(core$1.StyleBuilder)); var GridAlignDirective = /** @class */ (function (_super) { __extends(GridAlignDirective, _super); - function GridAlignDirective(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + function GridAlignDirective(elementRef, styleBuilder, styler, marshal) { var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; _this.elementRef = elementRef; _this.styleBuilder = styleBuilder; @@ -176,7 +173,7 @@ function buildCss(align) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DEFAULT_MAIN = 'start'; @@ -203,15 +200,12 @@ var GridAlignColumnsStyleBuilder = /** @class */ (function (_super) { GridAlignColumnsStyleBuilder.decorators = [ { type: core.Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ GridAlignColumnsStyleBuilder.ngInjectableDef = core.defineInjectable({ factory: function GridAlignColumnsStyleBuilder_Factory() { return new GridAlignColumnsStyleBuilder(); }, token: GridAlignColumnsStyleBuilder, providedIn: "root" }); + /** @nocollapse */ GridAlignColumnsStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function GridAlignColumnsStyleBuilder_Factory() { return new GridAlignColumnsStyleBuilder(); }, token: GridAlignColumnsStyleBuilder, providedIn: "root" }); return GridAlignColumnsStyleBuilder; }(core$1.StyleBuilder)); var GridAlignColumnsDirective = /** @class */ (function (_super) { __extends(GridAlignColumnsDirective, _super); - function GridAlignColumnsDirective(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + function GridAlignColumnsDirective(elementRef, styleBuilder, styler, marshal) { var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; _this.elementRef = elementRef; _this.styleBuilder = styleBuilder; @@ -238,11 +232,20 @@ var GridAlignColumnsDirective = /** @class */ (function (_super) { // ********************************************* // Protected methods // ********************************************* + // ********************************************* + // Protected methods + // ********************************************* /** + * @protected * @param {?} value * @return {?} */ - GridAlignColumnsDirective.prototype.updateWithValue = /** + GridAlignColumnsDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected * @param {?} value * @return {?} */ @@ -346,7 +349,6 @@ function buildCss$1(align, inline) { css['align-items'] = 'stretch'; break; default: // 'stretch' - // 'stretch' css['align-items'] = DEFAULT_CROSS; // default cross axis break; } @@ -356,7 +358,7 @@ function buildCss$1(align, inline) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DEFAULT_MAIN$1 = 'start'; @@ -383,15 +385,12 @@ var GridAlignRowsStyleBuilder = /** @class */ (function (_super) { GridAlignRowsStyleBuilder.decorators = [ { type: core.Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ GridAlignRowsStyleBuilder.ngInjectableDef = core.defineInjectable({ factory: function GridAlignRowsStyleBuilder_Factory() { return new GridAlignRowsStyleBuilder(); }, token: GridAlignRowsStyleBuilder, providedIn: "root" }); + /** @nocollapse */ GridAlignRowsStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function GridAlignRowsStyleBuilder_Factory() { return new GridAlignRowsStyleBuilder(); }, token: GridAlignRowsStyleBuilder, providedIn: "root" }); return GridAlignRowsStyleBuilder; }(core$1.StyleBuilder)); var GridAlignRowsDirective = /** @class */ (function (_super) { __extends(GridAlignRowsDirective, _super); - function GridAlignRowsDirective(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + function GridAlignRowsDirective(elementRef, styleBuilder, styler, marshal) { var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; _this.elementRef = elementRef; _this.styleBuilder = styleBuilder; @@ -418,11 +417,20 @@ var GridAlignRowsDirective = /** @class */ (function (_super) { // ********************************************* // Protected methods // ********************************************* + // ********************************************* + // Protected methods + // ********************************************* /** + * @protected * @param {?} value * @return {?} */ - GridAlignRowsDirective.prototype.updateWithValue = /** + GridAlignRowsDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected * @param {?} value * @return {?} */ @@ -508,7 +516,6 @@ function buildCss$2(align, inline) { css['justify-items'] = crossAxis; break; default: // 'stretch' - // 'stretch' css['justify-items'] = DEFAULT_CROSS$1; // default cross axis break; } @@ -518,7 +525,7 @@ function buildCss$2(align, inline) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DEFAULT_VALUE = 'auto'; @@ -541,15 +548,12 @@ var GridAreaStyleBuilder = /** @class */ (function (_super) { GridAreaStyleBuilder.decorators = [ { type: core.Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ GridAreaStyleBuilder.ngInjectableDef = core.defineInjectable({ factory: function GridAreaStyleBuilder_Factory() { return new GridAreaStyleBuilder(); }, token: GridAreaStyleBuilder, providedIn: "root" }); + /** @nocollapse */ GridAreaStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function GridAreaStyleBuilder_Factory() { return new GridAreaStyleBuilder(); }, token: GridAreaStyleBuilder, providedIn: "root" }); return GridAreaStyleBuilder; }(core$1.StyleBuilder)); var GridAreaDirective = /** @class */ (function (_super) { __extends(GridAreaDirective, _super); - function GridAreaDirective(elRef, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + function GridAreaDirective(elRef, styleUtils, styleBuilder, marshal) { var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; _this.elRef = elRef; _this.styleUtils = styleUtils; @@ -600,7 +604,7 @@ var DefaultGridAreaDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DEFAULT_VALUE$1 = 'none'; @@ -623,7 +627,11 @@ var GridAreasStyleBuiler = /** @class */ (function (_super) { */ function (input, parent) { /** @type {?} */ - var areas = (input || DEFAULT_VALUE$1).split(DELIMETER).map(function (v) { return "\"" + v.trim() + "\""; }); + var areas = (input || DEFAULT_VALUE$1).split(DELIMETER).map((/** + * @param {?} v + * @return {?} + */ + function (v) { return "\"" + v.trim() + "\""; })); return { 'display': parent.inline ? 'inline-grid' : 'grid', 'grid-template-areas': areas.join(' ') @@ -632,15 +640,12 @@ var GridAreasStyleBuiler = /** @class */ (function (_super) { GridAreasStyleBuiler.decorators = [ { type: core.Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ GridAreasStyleBuiler.ngInjectableDef = core.defineInjectable({ factory: function GridAreasStyleBuiler_Factory() { return new GridAreasStyleBuiler(); }, token: GridAreasStyleBuiler, providedIn: "root" }); + /** @nocollapse */ GridAreasStyleBuiler.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function GridAreasStyleBuiler_Factory() { return new GridAreasStyleBuiler(); }, token: GridAreasStyleBuiler, providedIn: "root" }); return GridAreasStyleBuiler; }(core$1.StyleBuilder)); var GridAreasDirective = /** @class */ (function (_super) { __extends(GridAreasDirective, _super); - function GridAreasDirective(elRef, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + function GridAreasDirective(elRef, styleUtils, styleBuilder, marshal) { var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; _this.elRef = elRef; _this.styleUtils = styleUtils; @@ -667,11 +672,20 @@ var GridAreasDirective = /** @class */ (function (_super) { // ********************************************* // Protected methods // ********************************************* + // ********************************************* + // Protected methods + // ********************************************* /** + * @protected * @param {?} value * @return {?} */ - GridAreasDirective.prototype.updateWithValue = /** + GridAreasDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected * @param {?} value * @return {?} */ @@ -724,7 +738,7 @@ var DefaultGridAreasDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DEFAULT_VALUE$2 = 'initial'; @@ -757,15 +771,12 @@ var GridAutoStyleBuilder = /** @class */ (function (_super) { GridAutoStyleBuilder.decorators = [ { type: core.Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ GridAutoStyleBuilder.ngInjectableDef = core.defineInjectable({ factory: function GridAutoStyleBuilder_Factory() { return new GridAutoStyleBuilder(); }, token: GridAutoStyleBuilder, providedIn: "root" }); + /** @nocollapse */ GridAutoStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function GridAutoStyleBuilder_Factory() { return new GridAutoStyleBuilder(); }, token: GridAutoStyleBuilder, providedIn: "root" }); return GridAutoStyleBuilder; }(core$1.StyleBuilder)); var GridAutoDirective = /** @class */ (function (_super) { __extends(GridAutoDirective, _super); - function GridAutoDirective(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + function GridAutoDirective(elementRef, styleBuilder, styler, marshal) { var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; _this.elementRef = elementRef; _this.styleBuilder = styleBuilder; @@ -792,11 +803,20 @@ var GridAutoDirective = /** @class */ (function (_super) { // ********************************************* // Protected methods // ********************************************* + // ********************************************* + // Protected methods + // ********************************************* /** + * @protected * @param {?} value * @return {?} */ - GridAutoDirective.prototype.updateWithValue = /** + GridAutoDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected * @param {?} value * @return {?} */ @@ -849,7 +869,7 @@ var DefaultGridAutoDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DEFAULT_VALUE$3 = 'auto'; @@ -872,15 +892,12 @@ var GridColumnStyleBuilder = /** @class */ (function (_super) { GridColumnStyleBuilder.decorators = [ { type: core.Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ GridColumnStyleBuilder.ngInjectableDef = core.defineInjectable({ factory: function GridColumnStyleBuilder_Factory() { return new GridColumnStyleBuilder(); }, token: GridColumnStyleBuilder, providedIn: "root" }); + /** @nocollapse */ GridColumnStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function GridColumnStyleBuilder_Factory() { return new GridColumnStyleBuilder(); }, token: GridColumnStyleBuilder, providedIn: "root" }); return GridColumnStyleBuilder; }(core$1.StyleBuilder)); var GridColumnDirective = /** @class */ (function (_super) { __extends(GridColumnDirective, _super); - function GridColumnDirective(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + function GridColumnDirective(elementRef, styleBuilder, styler, marshal) { var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; _this.elementRef = elementRef; _this.styleBuilder = styleBuilder; @@ -931,7 +948,7 @@ var DefaultGridColumnDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DEFAULT_VALUE$4 = 'none'; @@ -974,15 +991,12 @@ var GridColumnsStyleBuilder = /** @class */ (function (_super) { GridColumnsStyleBuilder.decorators = [ { type: core.Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ GridColumnsStyleBuilder.ngInjectableDef = core.defineInjectable({ factory: function GridColumnsStyleBuilder_Factory() { return new GridColumnsStyleBuilder(); }, token: GridColumnsStyleBuilder, providedIn: "root" }); + /** @nocollapse */ GridColumnsStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function GridColumnsStyleBuilder_Factory() { return new GridColumnsStyleBuilder(); }, token: GridColumnsStyleBuilder, providedIn: "root" }); return GridColumnsStyleBuilder; }(core$1.StyleBuilder)); var GridColumnsDirective = /** @class */ (function (_super) { __extends(GridColumnsDirective, _super); - function GridColumnsDirective(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + function GridColumnsDirective(elementRef, styleBuilder, styler, marshal) { var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; _this.elementRef = elementRef; _this.styleBuilder = styleBuilder; @@ -1009,11 +1023,20 @@ var GridColumnsDirective = /** @class */ (function (_super) { // ********************************************* // Protected methods // ********************************************* + // ********************************************* + // Protected methods + // ********************************************* /** + * @protected * @param {?} value * @return {?} */ - GridColumnsDirective.prototype.updateWithValue = /** + GridColumnsDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected * @param {?} value * @return {?} */ @@ -1067,7 +1090,7 @@ var DefaultGridColumnsDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DEFAULT_VALUE$5 = '0'; @@ -1095,15 +1118,12 @@ var GridGapStyleBuilder = /** @class */ (function (_super) { GridGapStyleBuilder.decorators = [ { type: core.Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ GridGapStyleBuilder.ngInjectableDef = core.defineInjectable({ factory: function GridGapStyleBuilder_Factory() { return new GridGapStyleBuilder(); }, token: GridGapStyleBuilder, providedIn: "root" }); + /** @nocollapse */ GridGapStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function GridGapStyleBuilder_Factory() { return new GridGapStyleBuilder(); }, token: GridGapStyleBuilder, providedIn: "root" }); return GridGapStyleBuilder; }(core$1.StyleBuilder)); var GridGapDirective = /** @class */ (function (_super) { __extends(GridGapDirective, _super); - function GridGapDirective(elRef, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + function GridGapDirective(elRef, styleUtils, styleBuilder, marshal) { var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; _this.elRef = elRef; _this.styleUtils = styleUtils; @@ -1130,11 +1150,20 @@ var GridGapDirective = /** @class */ (function (_super) { // ********************************************* // Protected methods // ********************************************* + // ********************************************* + // Protected methods + // ********************************************* /** + * @protected * @param {?} value * @return {?} */ - GridGapDirective.prototype.updateWithValue = /** + GridGapDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected * @param {?} value * @return {?} */ @@ -1188,7 +1217,7 @@ var DefaultGridGapDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DEFAULT_VALUE$6 = 'auto'; @@ -1211,15 +1240,12 @@ var GridRowStyleBuilder = /** @class */ (function (_super) { GridRowStyleBuilder.decorators = [ { type: core.Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ GridRowStyleBuilder.ngInjectableDef = core.defineInjectable({ factory: function GridRowStyleBuilder_Factory() { return new GridRowStyleBuilder(); }, token: GridRowStyleBuilder, providedIn: "root" }); + /** @nocollapse */ GridRowStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function GridRowStyleBuilder_Factory() { return new GridRowStyleBuilder(); }, token: GridRowStyleBuilder, providedIn: "root" }); return GridRowStyleBuilder; }(core$1.StyleBuilder)); var GridRowDirective = /** @class */ (function (_super) { __extends(GridRowDirective, _super); - function GridRowDirective(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + function GridRowDirective(elementRef, styleBuilder, styler, marshal) { var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; _this.elementRef = elementRef; _this.styleBuilder = styleBuilder; @@ -1270,7 +1296,7 @@ var DefaultGridRowDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DEFAULT_VALUE$7 = 'none'; @@ -1313,15 +1339,12 @@ var GridRowsStyleBuilder = /** @class */ (function (_super) { GridRowsStyleBuilder.decorators = [ { type: core.Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ GridRowsStyleBuilder.ngInjectableDef = core.defineInjectable({ factory: function GridRowsStyleBuilder_Factory() { return new GridRowsStyleBuilder(); }, token: GridRowsStyleBuilder, providedIn: "root" }); + /** @nocollapse */ GridRowsStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function GridRowsStyleBuilder_Factory() { return new GridRowsStyleBuilder(); }, token: GridRowsStyleBuilder, providedIn: "root" }); return GridRowsStyleBuilder; }(core$1.StyleBuilder)); var GridRowsDirective = /** @class */ (function (_super) { __extends(GridRowsDirective, _super); - function GridRowsDirective(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + function GridRowsDirective(elementRef, styleBuilder, styler, marshal) { var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; _this.elementRef = elementRef; _this.styleBuilder = styleBuilder; @@ -1348,11 +1371,20 @@ var GridRowsDirective = /** @class */ (function (_super) { // ********************************************* // Protected methods // ********************************************* + // ********************************************* + // Protected methods + // ********************************************* /** + * @protected * @param {?} value * @return {?} */ - GridRowsDirective.prototype.updateWithValue = /** + GridRowsDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected * @param {?} value * @return {?} */ @@ -1406,7 +1438,7 @@ var DefaultGridRowsDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var ALL_DIRECTIVES = [ @@ -1441,39 +1473,39 @@ var GridModule = /** @class */ (function () { }()); exports.GridModule = GridModule; -exports.ɵf = DefaultGridAlignColumnsDirective; -exports.ɵe = GridAlignColumnsDirective; -exports.ɵd = GridAlignColumnsStyleBuilder; -exports.ɵi = DefaultGridAlignRowsDirective; -exports.ɵh = GridAlignRowsDirective; -exports.ɵg = GridAlignRowsStyleBuilder; -exports.ɵl = DefaultGridAreaDirective; -exports.ɵk = GridAreaDirective; -exports.ɵj = GridAreaStyleBuilder; -exports.ɵo = DefaultGridAreasDirective; -exports.ɵn = GridAreasDirective; -exports.ɵm = GridAreasStyleBuiler; -exports.ɵr = DefaultGridAutoDirective; -exports.ɵq = GridAutoDirective; -exports.ɵp = GridAutoStyleBuilder; -exports.ɵu = DefaultGridColumnDirective; -exports.ɵt = GridColumnDirective; -exports.ɵs = GridColumnStyleBuilder; -exports.ɵx = DefaultGridColumnsDirective; -exports.ɵw = GridColumnsDirective; -exports.ɵv = GridColumnsStyleBuilder; -exports.ɵba = DefaultGridGapDirective; -exports.ɵz = GridGapDirective; -exports.ɵy = GridGapStyleBuilder; -exports.ɵc = DefaultGridAlignDirective; -exports.ɵb = GridAlignDirective; -exports.ɵa = GridAlignStyleBuilder; -exports.ɵbd = DefaultGridRowDirective; -exports.ɵbc = GridRowDirective; -exports.ɵbb = GridRowStyleBuilder; -exports.ɵbg = DefaultGridRowsDirective; -exports.ɵbf = GridRowsDirective; -exports.ɵbe = GridRowsStyleBuilder; +exports.ɵf2 = DefaultGridAlignColumnsDirective; +exports.ɵe2 = GridAlignColumnsDirective; +exports.ɵd2 = GridAlignColumnsStyleBuilder; +exports.ɵi2 = DefaultGridAlignRowsDirective; +exports.ɵh2 = GridAlignRowsDirective; +exports.ɵg2 = GridAlignRowsStyleBuilder; +exports.ɵl2 = DefaultGridAreaDirective; +exports.ɵk2 = GridAreaDirective; +exports.ɵj2 = GridAreaStyleBuilder; +exports.ɵo2 = DefaultGridAreasDirective; +exports.ɵn2 = GridAreasDirective; +exports.ɵm2 = GridAreasStyleBuiler; +exports.ɵr2 = DefaultGridAutoDirective; +exports.ɵq2 = GridAutoDirective; +exports.ɵp2 = GridAutoStyleBuilder; +exports.ɵu2 = DefaultGridColumnDirective; +exports.ɵt2 = GridColumnDirective; +exports.ɵs2 = GridColumnStyleBuilder; +exports.ɵx2 = DefaultGridColumnsDirective; +exports.ɵw2 = GridColumnsDirective; +exports.ɵv2 = GridColumnsStyleBuilder; +exports.ɵba2 = DefaultGridGapDirective; +exports.ɵz2 = GridGapDirective; +exports.ɵy2 = GridGapStyleBuilder; +exports.ɵc2 = DefaultGridAlignDirective; +exports.ɵb2 = GridAlignDirective; +exports.ɵa2 = GridAlignStyleBuilder; +exports.ɵbd2 = DefaultGridRowDirective; +exports.ɵbc2 = GridRowDirective; +exports.ɵbb2 = GridRowStyleBuilder; +exports.ɵbg2 = DefaultGridRowsDirective; +exports.ɵbf2 = GridRowsDirective; +exports.ɵbe2 = GridRowsStyleBuilder; Object.defineProperty(exports, '__esModule', { value: true }); diff --git a/bundles/flex-layout-grid.umd.js.map b/bundles/flex-layout-grid.umd.js.map index d71604e45..594f73315 100644 --- a/bundles/flex-layout-grid.umd.js.map +++ b/bundles/flex-layout-grid.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"flex-layout-grid.umd.js","sources":["../../src/lib/grid/module.ts","../../src/lib/grid/rows/rows.ts","../../src/lib/grid/row/row.ts","../../src/lib/grid/gap/gap.ts","../../src/lib/grid/columns/columns.ts","../../src/lib/grid/column/column.ts","../../src/lib/grid/auto/auto.ts","../../src/lib/grid/areas/areas.ts","../../src/lib/grid/area/area.ts","../../src/lib/grid/align-rows/align-rows.ts","../../src/lib/grid/align-columns/align-columns.ts","../../src/lib/grid/grid-align/grid-align.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 {NgModule} from '@angular/core';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultGridAlignDirective} from './grid-align/grid-align';\nimport {DefaultGridAlignColumnsDirective} from './align-columns/align-columns';\nimport {DefaultGridAlignRowsDirective} from './align-rows/align-rows';\nimport {DefaultGridAreaDirective} from './area/area';\nimport {DefaultGridAreasDirective} from './areas/areas';\nimport {DefaultGridAutoDirective} from './auto/auto';\nimport {DefaultGridColumnDirective} from './column/column';\nimport {DefaultGridColumnsDirective} from './columns/columns';\nimport {DefaultGridGapDirective} from './gap/gap';\nimport {DefaultGridRowDirective} from './row/row';\nimport {DefaultGridRowsDirective} from './rows/rows';\n\n\nconst ALL_DIRECTIVES = [\n DefaultGridAlignDirective,\n DefaultGridAlignColumnsDirective,\n DefaultGridAlignRowsDirective,\n DefaultGridAreaDirective,\n DefaultGridAreasDirective,\n DefaultGridAutoDirective,\n DefaultGridColumnDirective,\n DefaultGridColumnsDirective,\n DefaultGridGapDirective,\n DefaultGridRowDirective,\n DefaultGridRowsDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the CSS Grid API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class GridModule {\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 {Directive, ElementRef, Input, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst AUTO_SPECIFIER = '!';\n\nexport interface GridRowsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridRowsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridRowsParent) {\n input = input || DEFAULT_VALUE;\n let auto = false;\n if (input.endsWith(AUTO_SPECIFIER)) {\n input = input.substring(0, input.indexOf(AUTO_SPECIFIER));\n auto = true;\n }\n\n const css = {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-rows': '',\n 'grid-template-rows': '',\n };\n const key = (auto ? 'grid-auto-rows' : 'grid-template-rows');\n css[key] = input;\n\n return css;\n }\n}\n\nexport class GridRowsDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-rows';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridRowsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? rowsInlineCache : rowsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst rowsCache: Map = new Map();\nconst rowsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdRows',\n 'gdRows.xs', 'gdRows.sm', 'gdRows.md', 'gdRows.lg', 'gdRows.xl',\n 'gdRows.lt-sm', 'gdRows.lt-md', 'gdRows.lt-lg', 'gdRows.lt-xl',\n 'gdRows.gt-xs', 'gdRows.gt-sm', 'gdRows.gt-md', 'gdRows.gt-lg'\n];\n\nconst selector = `\n [gdRows],\n [gdRows.xs], [gdRows.sm], [gdRows.md], [gdRows.lg], [gdRows.xl],\n [gdRows.lt-sm], [gdRows.lt-md], [gdRows.lt-lg], [gdRows.lt-xl],\n [gdRows.gt-xs], [gdRows.gt-sm], [gdRows.gt-md], [gdRows.gt-lg]\n`;\n\n/**\n * 'grid-template-rows' CSS Grid styling directive\n * Configures the sizing for the rows in the grid\n * Syntax: [auto]\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13\n */\n@Directive({selector, inputs})\nexport class DefaultGridRowsDirective extends GridRowsDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridRowStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-row': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridRowDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-row';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridRowStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = rowCache;\n}\n\nconst rowCache: Map = new Map();\n\nconst inputs = [\n 'gdRow',\n 'gdRow.xs', 'gdRow.sm', 'gdRow.md', 'gdRow.lg', 'gdRow.xl',\n 'gdRow.lt-sm', 'gdRow.lt-md', 'gdRow.lt-lg', 'gdRow.lt-xl',\n 'gdRow.gt-xs', 'gdRow.gt-sm', 'gdRow.gt-md', 'gdRow.gt-lg'\n];\n\nconst selector = `\n [gdRow],\n [gdRow.xs], [gdRow.sm], [gdRow.md], [gdRow.lg], [gdRow.xl],\n [gdRow.lt-sm], [gdRow.lt-md], [gdRow.lt-lg], [gdRow.lt-xl],\n [gdRow.gt-xs], [gdRow.gt-sm], [gdRow.gt-md], [gdRow.gt-lg]\n`;\n\n/**\n * 'grid-row' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26\n */\n@Directive({selector, inputs})\nexport class DefaultGridRowDirective extends GridRowDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = '0';\n\nexport interface GridGapParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridGapStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridGapParent) {\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-gap': input || DEFAULT_VALUE\n };\n }\n}\n\nexport class GridGapDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-gap';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridGapStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? gapInlineCache : gapCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst gapCache: Map = new Map();\nconst gapInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdGap',\n 'gdGap.xs', 'gdGap.sm', 'gdGap.md', 'gdGap.lg', 'gdGap.xl',\n 'gdGap.lt-sm', 'gdGap.lt-md', 'gdGap.lt-lg', 'gdGap.lt-xl',\n 'gdGap.gt-xs', 'gdGap.gt-sm', 'gdGap.gt-md', 'gdGap.gt-lg'\n];\n\nconst selector = `\n [gdGap],\n [gdGap.xs], [gdGap.sm], [gdGap.md], [gdGap.lg], [gdGap.xl],\n [gdGap.lt-sm], [gdGap.lt-md], [gdGap.lt-lg], [gdGap.lt-xl],\n [gdGap.gt-xs], [gdGap.gt-sm], [gdGap.gt-md], [gdGap.gt-lg]\n`;\n\n/**\n * 'grid-gap' CSS Grid styling directive\n * Configures the gap between items in the grid\n * Syntax: []\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-17\n */\n@Directive({selector, inputs})\nexport class DefaultGridGapDirective extends GridGapDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst AUTO_SPECIFIER = '!';\n\nexport interface GridColumnsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridColumnsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridColumnsParent) {\n input = input || DEFAULT_VALUE;\n let auto = false;\n if (input.endsWith(AUTO_SPECIFIER)) {\n input = input.substring(0, input.indexOf(AUTO_SPECIFIER));\n auto = true;\n }\n\n const css = {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-columns': '',\n 'grid-template-columns': '',\n };\n const key = (auto ? 'grid-auto-columns' : 'grid-template-columns');\n css[key] = input;\n\n return css;\n }\n}\n\nexport class GridColumnsDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-columns';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridColumnsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? columnsInlineCache : columnsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst columnsCache: Map = new Map();\nconst columnsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdColumns',\n 'gdColumns.xs', 'gdColumns.sm', 'gdColumns.md', 'gdColumns.lg', 'gdColumns.xl',\n 'gdColumns.lt-sm', 'gdColumns.lt-md', 'gdColumns.lt-lg', 'gdColumns.lt-xl',\n 'gdColumns.gt-xs', 'gdColumns.gt-sm', 'gdColumns.gt-md', 'gdColumns.gt-lg'\n];\n\nconst selector = `\n [gdColumns],\n [gdColumns.xs], [gdColumns.sm], [gdColumns.md], [gdColumns.lg], [gdColumns.xl],\n [gdColumns.lt-sm], [gdColumns.lt-md], [gdColumns.lt-lg], [gdColumns.lt-xl],\n [gdColumns.gt-xs], [gdColumns.gt-sm], [gdColumns.gt-md], [gdColumns.gt-lg]\n`;\n\n/**\n * 'grid-template-columns' CSS Grid styling directive\n * Configures the sizing for the columns in the grid\n * Syntax: [auto]\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13\n */\n@Directive({selector, inputs})\nexport class DefaultGridColumnsDirective extends GridColumnsDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridColumnStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-column': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridColumnDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-column';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridColumnStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = columnCache;\n}\n\nconst columnCache: Map = new Map();\n\nconst inputs = [\n 'gdColumn',\n 'gdColumn.xs', 'gdColumn.sm', 'gdColumn.md', 'gdColumn.lg', 'gdColumn.xl',\n 'gdColumn.lt-sm', 'gdColumn.lt-md', 'gdColumn.lt-lg', 'gdColumn.lt-xl',\n 'gdColumn.gt-xs', 'gdColumn.gt-sm', 'gdColumn.gt-md', 'gdColumn.gt-lg'\n];\n\nconst selector = `\n [gdColumn],\n [gdColumn.xs], [gdColumn.sm], [gdColumn.md], [gdColumn.lg], [gdColumn.xl],\n [gdColumn.lt-sm], [gdColumn.lt-md], [gdColumn.lt-lg], [gdColumn.lt-xl],\n [gdColumn.gt-xs], [gdColumn.gt-sm], [gdColumn.gt-md], [gdColumn.gt-lg]\n`;\n\n/**\n * 'grid-column' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26\n */\n@Directive({selector, inputs})\nexport class DefaultGridColumnDirective extends GridColumnDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n MediaMarshaller,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'initial';\n\nexport interface GridAutoParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAutoStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAutoParent) {\n let [direction, dense] = (input || DEFAULT_VALUE).split(' ');\n if (direction !== 'column' && direction !== 'row' && direction !== 'dense') {\n direction = 'row';\n }\n\n dense = (dense === 'dense' && direction !== 'dense') ? ' dense' : '';\n\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-flow': direction + dense\n };\n }\n}\n\nexport class GridAutoDirective extends BaseDirective2 {\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n protected DIRECTIVE_KEY = 'grid-auto';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAutoStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? autoInlineCache : autoCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst autoCache: Map = new Map();\nconst autoInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAuto',\n 'gdAuto.xs', 'gdAuto.sm', 'gdAuto.md', 'gdAuto.lg', 'gdAuto.xl',\n 'gdAuto.lt-sm', 'gdAuto.lt-md', 'gdAuto.lt-lg', 'gdAuto.lt-xl',\n 'gdAuto.gt-xs', 'gdAuto.gt-sm', 'gdAuto.gt-md', 'gdAuto.gt-lg'\n];\nconst selector = `\n [gdAuto],\n [gdAuto.xs], [gdAuto.sm], [gdAuto.md], [gdAuto.lg], [gdAuto.xl],\n [gdAuto.lt-sm], [gdAuto.lt-md], [gdAuto.lt-lg], [gdAuto.lt-xl],\n [gdAuto.gt-xs], [gdAuto.gt-sm], [gdAuto.gt-md], [gdAuto.gt-lg]\n`;\n\n/**\n * 'grid-auto-flow' CSS Grid styling directive\n * Configures the auto placement algorithm for the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-23\n */\n@Directive({selector, inputs})\nexport class DefaultGridAutoDirective extends GridAutoDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n MediaMarshaller,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst DELIMETER = '|';\n\nexport interface GridAreasParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAreasStyleBuiler extends StyleBuilder {\n buildStyles(input: string, parent: GridAreasParent) {\n const areas = (input || DEFAULT_VALUE).split(DELIMETER).map(v => `\"${v.trim()}\"`);\n\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-template-areas': areas.join(' ')\n };\n }\n}\n\nexport class GridAreasDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-areas';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAreasStyleBuiler,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? areasInlineCache : areasCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst areasCache: Map = new Map();\nconst areasInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAreas',\n 'gdAreas.xs', 'gdAreas.sm', 'gdAreas.md', 'gdAreas.lg', 'gdAreas.xl',\n 'gdAreas.lt-sm', 'gdAreas.lt-md', 'gdAreas.lt-lg', 'gdAreas.lt-xl',\n 'gdAreas.gt-xs', 'gdAreas.gt-sm', 'gdAreas.gt-md', 'gdAreas.gt-lg'\n];\n\nconst selector = `\n [gdAreas],\n [gdAreas.xs], [gdAreas.sm], [gdAreas.md], [gdAreas.lg], [gdAreas.xl],\n [gdAreas.lt-sm], [gdAreas.lt-md], [gdAreas.lt-lg], [gdAreas.lt-xl],\n [gdAreas.gt-xs], [gdAreas.gt-sm], [gdAreas.gt-md], [gdAreas.gt-lg]\n`;\n\n/**\n * 'grid-template-areas' CSS Grid styling directive\n * Configures the names of elements within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-14\n */\n@Directive({selector, inputs})\nexport class DefaultGridAreasDirective extends GridAreasDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridAreaStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-area': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridAreaDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-area';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAreaStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = gridAreaCache;\n}\n\nconst gridAreaCache: Map = new Map();\n\nconst inputs = [\n 'gdArea',\n 'gdArea.xs', 'gdArea.sm', 'gdArea.md', 'gdArea.lg', 'gdArea.xl',\n 'gdArea.lt-sm', 'gdArea.lt-md', 'gdArea.lt-lg', 'gdArea.lt-xl',\n 'gdArea.gt-xs', 'gdArea.gt-sm', 'gdArea.gt-md', 'gdArea.gt-lg'\n];\nconst selector = `\n [gdArea],\n [gdArea.xs], [gdArea.sm], [gdArea.md], [gdArea.lg], [gdArea.xl],\n [gdArea.lt-sm], [gdArea.lt-md], [gdArea.lt-lg], [gdArea.lt-xl],\n [gdArea.gt-xs], [gdArea.gt-sm], [gdArea.gt-md], [gdArea.gt-lg]\n`;\n\n/**\n * 'grid-area' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-27\n */\n@Directive({selector, inputs})\nexport class DefaultGridAreaDirective extends GridAreaDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_MAIN = 'start';\nconst DEFAULT_CROSS = 'stretch';\n\nexport interface GridAlignRowsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignRowsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAlignRowsParent) {\n return buildCss(input || `${DEFAULT_MAIN} ${DEFAULT_CROSS}`, parent.inline);\n }\n}\n\nexport class GridAlignRowsDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align-rows';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignRowsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? alignRowsInlineCache : alignRowsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst alignRowsCache: Map = new Map();\nconst alignRowsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAlignRows',\n 'gdAlignRows.xs', 'gdAlignRows.sm', 'gdAlignRows.md',\n 'gdAlignRows.lg', 'gdAlignRows.xl', 'gdAlignRows.lt-sm',\n 'gdAlignRows.lt-md', 'gdAlignRows.lt-lg', 'gdAlignRows.lt-xl',\n 'gdAlignRows.gt-xs', 'gdAlignRows.gt-sm', 'gdAlignRows.gt-md',\n 'gdAlignRows.gt-lg'\n];\nconst selector = `\n [gdAlignRows],\n [gdAlignRows.xs], [gdAlignRows.sm], [gdAlignRows.md],\n [gdAlignRows.lg], [gdAlignRows.xl], [gdAlignRows.lt-sm],\n [gdAlignRows.lt-md], [gdAlignRows.lt-lg], [gdAlignRows.lt-xl],\n [gdAlignRows.gt-xs], [gdAlignRows.gt-sm], [gdAlignRows.gt-md],\n [gdAlignRows.gt-lg]\n`;\n\n/**\n * 'row alignment' CSS Grid styling directive\n * Configures the alignment in the row direction\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-18\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-20\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignRowsDirective extends GridAlignRowsDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string, inline: boolean): StyleDefinition {\n const css: {[key: string]: string} = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n case 'space-around':\n case 'space-between':\n case 'space-evenly':\n case 'end':\n case 'start':\n case 'stretch':\n css['justify-content'] = mainAxis;\n break;\n default:\n css['justify-content'] = DEFAULT_MAIN; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'center':\n case 'end':\n case 'stretch':\n css['justify-items'] = crossAxis;\n break;\n default : // 'stretch'\n css['justify-items'] = DEFAULT_CROSS; // default cross axis\n break;\n }\n\n css['display'] = inline ? 'inline-grid' : 'grid';\n\n return css;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_MAIN = 'start';\nconst DEFAULT_CROSS = 'stretch';\n\nexport interface GridAlignColumnsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignColumnsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAlignColumnsParent) {\n return buildCss(input || `${DEFAULT_MAIN} ${DEFAULT_CROSS}`, parent.inline);\n }\n}\n\nexport class GridAlignColumnsDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align-columns';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignColumnsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? alignColumnsInlineCache : alignColumnsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst alignColumnsCache: Map = new Map();\nconst alignColumnsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAlignColumns',\n 'gdAlignColumns.xs', 'gdAlignColumns.sm', 'gdAlignColumns.md',\n 'gdAlignColumns.lg', 'gdAlignColumns.xl', 'gdAlignColumns.lt-sm',\n 'gdAlignColumns.lt-md', 'gdAlignColumns.lt-lg', 'gdAlignColumns.lt-xl',\n 'gdAlignColumns.gt-xs', 'gdAlignColumns.gt-sm', 'gdAlignColumns.gt-md',\n 'gdAlignColumns.gt-lg'\n];\nconst selector = `\n [gdAlignColumns],\n [gdAlignColumns.xs], [gdAlignColumns.sm], [gdAlignColumns.md],\n [gdAlignColumns.lg], [gdAlignColumns.xl], [gdAlignColumns.lt-sm],\n [gdAlignColumns.lt-md], [gdAlignColumns.lt-lg], [gdAlignColumns.lt-xl],\n [gdAlignColumns.gt-xs], [gdAlignColumns.gt-sm], [gdAlignColumns.gt-md],\n [gdAlignColumns.gt-lg]\n`;\n\n/**\n * 'column alignment' CSS Grid styling directive\n * Configures the alignment in the column direction\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-19\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-21\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignColumnsDirective extends GridAlignColumnsDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string, inline: boolean): StyleDefinition {\n const css: {[key: string]: string} = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['align-content'] = 'center';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['align-content'] = 'space-evenly';\n break;\n case 'end':\n css['align-content'] = 'end';\n break;\n case 'start':\n css['align-content'] = 'start';\n break;\n case 'stretch':\n css['align-content'] = 'stretch';\n break;\n default:\n css['align-content'] = DEFAULT_MAIN; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n css['align-items'] = 'start';\n break;\n case 'center':\n css['align-items'] = 'center';\n break;\n case 'end':\n css['align-items'] = 'end';\n break;\n case 'stretch':\n css['align-items'] = 'stretch';\n break;\n default : // 'stretch'\n css['align-items'] = DEFAULT_CROSS; // default cross axis\n break;\n }\n\n css['display'] = inline ? 'inline-grid' : 'grid';\n\n return css;\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\nconst ROW_DEFAULT = 'stretch';\nconst COL_DEFAULT = 'stretch';\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return buildCss(input || ROW_DEFAULT);\n }\n}\n\nexport class GridAlignDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = alignCache;\n}\n\nconst alignCache: Map = new Map();\n\nconst inputs = [\n 'gdGridAlign',\n 'gdGridAlign.xs', 'gdGridAlign.sm', 'gdGridAlign.md', 'gdGridAlign.lg', 'gdGridAlign.xl',\n 'gdGridAlign.lt-sm', 'gdGridAlign.lt-md', 'gdGridAlign.lt-lg', 'gdGridAlign.lt-xl',\n 'gdGridAlign.gt-xs', 'gdGridAlign.gt-sm', 'gdGridAlign.gt-md', 'gdGridAlign.gt-lg'\n];\n\nconst selector = `\n [gdGridAlign],\n [gdGridAlign.xs], [gdGridAlign.sm], [gdGridAlign.md], [gdGridAlign.lg],[gdGridAlign.xl],\n [gdGridAlign.lt-sm], [gdGridAlign.lt-md], [gdGridAlign.lt-lg], [gdGridAlign.lt-xl],\n [gdGridAlign.gt-xs], [gdGridAlign.gt-sm], [gdGridAlign.gt-md], [gdGridAlign.gt-lg]\n`;\n\n/**\n * 'align' CSS Grid styling directive for grid children\n * Defines positioning of child elements along row and column axis in a grid container\n * Optional values: {row-axis} values or {row-axis column-axis} value pairs\n *\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-justify-self\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-align-self\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignDirective extends GridAlignDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string = '') {\n const css: {[key: string]: string} = {}, [rowAxis, columnAxis] = align.split(' ');\n\n // Row axis\n switch (rowAxis) {\n case 'end':\n css['justify-self'] = 'end';\n break;\n case 'center':\n css['justify-self'] = 'center';\n break;\n case 'stretch':\n css['justify-self'] = 'stretch';\n break;\n case 'start':\n css['justify-self'] = 'start';\n break;\n default:\n css['justify-self'] = ROW_DEFAULT; // default row axis\n break;\n }\n\n // Column axis\n switch (columnAxis) {\n case 'end':\n css['align-self'] = 'end';\n break;\n case 'center':\n css['align-self'] = 'center';\n break;\n case 'stretch':\n css['align-self'] = 'stretch';\n break;\n case 'start':\n css['align-self'] = 'start';\n break;\n default:\n css['align-self'] = COL_DEFAULT; // default column axis\n break;\n }\n\n return css;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\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 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) : new P(function (resolve) { resolve(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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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 __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\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)) result[k] = mod[k];\r\n result.default = 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"],"names":["CoreModule","NgModule","Directive","selector","inputs","tslib_1.__extends","BaseDirective2","Input","MediaMarshaller","StyleUtils","Optional","ElementRef","coerceBooleanProperty","StyleBuilder","Injectable","AUTO_SPECIFIER","DEFAULT_VALUE","DEFAULT_CROSS","DEFAULT_MAIN","buildCss"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"flex-layout-grid.umd.js","sources":["../../src/lib/grid/module.ts","../../src/lib/grid/rows/rows.ts","../../src/lib/grid/row/row.ts","../../src/lib/grid/gap/gap.ts","../../src/lib/grid/columns/columns.ts","../../src/lib/grid/column/column.ts","../../src/lib/grid/auto/auto.ts","../../src/lib/grid/areas/areas.ts","../../src/lib/grid/area/area.ts","../../src/lib/grid/align-rows/align-rows.ts","../../src/lib/grid/align-columns/align-columns.ts","../../src/lib/grid/grid-align/grid-align.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 {NgModule} from '@angular/core';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultGridAlignDirective} from './grid-align/grid-align';\nimport {DefaultGridAlignColumnsDirective} from './align-columns/align-columns';\nimport {DefaultGridAlignRowsDirective} from './align-rows/align-rows';\nimport {DefaultGridAreaDirective} from './area/area';\nimport {DefaultGridAreasDirective} from './areas/areas';\nimport {DefaultGridAutoDirective} from './auto/auto';\nimport {DefaultGridColumnDirective} from './column/column';\nimport {DefaultGridColumnsDirective} from './columns/columns';\nimport {DefaultGridGapDirective} from './gap/gap';\nimport {DefaultGridRowDirective} from './row/row';\nimport {DefaultGridRowsDirective} from './rows/rows';\n\n\nconst ALL_DIRECTIVES = [\n DefaultGridAlignDirective,\n DefaultGridAlignColumnsDirective,\n DefaultGridAlignRowsDirective,\n DefaultGridAreaDirective,\n DefaultGridAreasDirective,\n DefaultGridAutoDirective,\n DefaultGridColumnDirective,\n DefaultGridColumnsDirective,\n DefaultGridGapDirective,\n DefaultGridRowDirective,\n DefaultGridRowsDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the CSS Grid API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class GridModule {\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 {Directive, ElementRef, Input, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst AUTO_SPECIFIER = '!';\n\nexport interface GridRowsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridRowsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridRowsParent) {\n input = input || DEFAULT_VALUE;\n let auto = false;\n if (input.endsWith(AUTO_SPECIFIER)) {\n input = input.substring(0, input.indexOf(AUTO_SPECIFIER));\n auto = true;\n }\n\n const css = {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-rows': '',\n 'grid-template-rows': '',\n };\n const key = (auto ? 'grid-auto-rows' : 'grid-template-rows');\n css[key] = input;\n\n return css;\n }\n}\n\nexport class GridRowsDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-rows';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridRowsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? rowsInlineCache : rowsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst rowsCache: Map = new Map();\nconst rowsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdRows',\n 'gdRows.xs', 'gdRows.sm', 'gdRows.md', 'gdRows.lg', 'gdRows.xl',\n 'gdRows.lt-sm', 'gdRows.lt-md', 'gdRows.lt-lg', 'gdRows.lt-xl',\n 'gdRows.gt-xs', 'gdRows.gt-sm', 'gdRows.gt-md', 'gdRows.gt-lg'\n];\n\nconst selector = `\n [gdRows],\n [gdRows.xs], [gdRows.sm], [gdRows.md], [gdRows.lg], [gdRows.xl],\n [gdRows.lt-sm], [gdRows.lt-md], [gdRows.lt-lg], [gdRows.lt-xl],\n [gdRows.gt-xs], [gdRows.gt-sm], [gdRows.gt-md], [gdRows.gt-lg]\n`;\n\n/**\n * 'grid-template-rows' CSS Grid styling directive\n * Configures the sizing for the rows in the grid\n * Syntax: [auto]\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13\n */\n@Directive({selector, inputs})\nexport class DefaultGridRowsDirective extends GridRowsDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridRowStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-row': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridRowDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-row';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridRowStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = rowCache;\n}\n\nconst rowCache: Map = new Map();\n\nconst inputs = [\n 'gdRow',\n 'gdRow.xs', 'gdRow.sm', 'gdRow.md', 'gdRow.lg', 'gdRow.xl',\n 'gdRow.lt-sm', 'gdRow.lt-md', 'gdRow.lt-lg', 'gdRow.lt-xl',\n 'gdRow.gt-xs', 'gdRow.gt-sm', 'gdRow.gt-md', 'gdRow.gt-lg'\n];\n\nconst selector = `\n [gdRow],\n [gdRow.xs], [gdRow.sm], [gdRow.md], [gdRow.lg], [gdRow.xl],\n [gdRow.lt-sm], [gdRow.lt-md], [gdRow.lt-lg], [gdRow.lt-xl],\n [gdRow.gt-xs], [gdRow.gt-sm], [gdRow.gt-md], [gdRow.gt-lg]\n`;\n\n/**\n * 'grid-row' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26\n */\n@Directive({selector, inputs})\nexport class DefaultGridRowDirective extends GridRowDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = '0';\n\nexport interface GridGapParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridGapStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridGapParent) {\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-gap': input || DEFAULT_VALUE\n };\n }\n}\n\nexport class GridGapDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-gap';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridGapStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? gapInlineCache : gapCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst gapCache: Map = new Map();\nconst gapInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdGap',\n 'gdGap.xs', 'gdGap.sm', 'gdGap.md', 'gdGap.lg', 'gdGap.xl',\n 'gdGap.lt-sm', 'gdGap.lt-md', 'gdGap.lt-lg', 'gdGap.lt-xl',\n 'gdGap.gt-xs', 'gdGap.gt-sm', 'gdGap.gt-md', 'gdGap.gt-lg'\n];\n\nconst selector = `\n [gdGap],\n [gdGap.xs], [gdGap.sm], [gdGap.md], [gdGap.lg], [gdGap.xl],\n [gdGap.lt-sm], [gdGap.lt-md], [gdGap.lt-lg], [gdGap.lt-xl],\n [gdGap.gt-xs], [gdGap.gt-sm], [gdGap.gt-md], [gdGap.gt-lg]\n`;\n\n/**\n * 'grid-gap' CSS Grid styling directive\n * Configures the gap between items in the grid\n * Syntax: []\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-17\n */\n@Directive({selector, inputs})\nexport class DefaultGridGapDirective extends GridGapDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst AUTO_SPECIFIER = '!';\n\nexport interface GridColumnsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridColumnsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridColumnsParent) {\n input = input || DEFAULT_VALUE;\n let auto = false;\n if (input.endsWith(AUTO_SPECIFIER)) {\n input = input.substring(0, input.indexOf(AUTO_SPECIFIER));\n auto = true;\n }\n\n const css = {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-columns': '',\n 'grid-template-columns': '',\n };\n const key = (auto ? 'grid-auto-columns' : 'grid-template-columns');\n css[key] = input;\n\n return css;\n }\n}\n\nexport class GridColumnsDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-columns';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridColumnsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? columnsInlineCache : columnsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst columnsCache: Map = new Map();\nconst columnsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdColumns',\n 'gdColumns.xs', 'gdColumns.sm', 'gdColumns.md', 'gdColumns.lg', 'gdColumns.xl',\n 'gdColumns.lt-sm', 'gdColumns.lt-md', 'gdColumns.lt-lg', 'gdColumns.lt-xl',\n 'gdColumns.gt-xs', 'gdColumns.gt-sm', 'gdColumns.gt-md', 'gdColumns.gt-lg'\n];\n\nconst selector = `\n [gdColumns],\n [gdColumns.xs], [gdColumns.sm], [gdColumns.md], [gdColumns.lg], [gdColumns.xl],\n [gdColumns.lt-sm], [gdColumns.lt-md], [gdColumns.lt-lg], [gdColumns.lt-xl],\n [gdColumns.gt-xs], [gdColumns.gt-sm], [gdColumns.gt-md], [gdColumns.gt-lg]\n`;\n\n/**\n * 'grid-template-columns' CSS Grid styling directive\n * Configures the sizing for the columns in the grid\n * Syntax: [auto]\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13\n */\n@Directive({selector, inputs})\nexport class DefaultGridColumnsDirective extends GridColumnsDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridColumnStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-column': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridColumnDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-column';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridColumnStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = columnCache;\n}\n\nconst columnCache: Map = new Map();\n\nconst inputs = [\n 'gdColumn',\n 'gdColumn.xs', 'gdColumn.sm', 'gdColumn.md', 'gdColumn.lg', 'gdColumn.xl',\n 'gdColumn.lt-sm', 'gdColumn.lt-md', 'gdColumn.lt-lg', 'gdColumn.lt-xl',\n 'gdColumn.gt-xs', 'gdColumn.gt-sm', 'gdColumn.gt-md', 'gdColumn.gt-lg'\n];\n\nconst selector = `\n [gdColumn],\n [gdColumn.xs], [gdColumn.sm], [gdColumn.md], [gdColumn.lg], [gdColumn.xl],\n [gdColumn.lt-sm], [gdColumn.lt-md], [gdColumn.lt-lg], [gdColumn.lt-xl],\n [gdColumn.gt-xs], [gdColumn.gt-sm], [gdColumn.gt-md], [gdColumn.gt-lg]\n`;\n\n/**\n * 'grid-column' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26\n */\n@Directive({selector, inputs})\nexport class DefaultGridColumnDirective extends GridColumnDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n MediaMarshaller,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'initial';\n\nexport interface GridAutoParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAutoStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAutoParent) {\n let [direction, dense] = (input || DEFAULT_VALUE).split(' ');\n if (direction !== 'column' && direction !== 'row' && direction !== 'dense') {\n direction = 'row';\n }\n\n dense = (dense === 'dense' && direction !== 'dense') ? ' dense' : '';\n\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-flow': direction + dense\n };\n }\n}\n\nexport class GridAutoDirective extends BaseDirective2 {\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n protected DIRECTIVE_KEY = 'grid-auto';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAutoStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? autoInlineCache : autoCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst autoCache: Map = new Map();\nconst autoInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAuto',\n 'gdAuto.xs', 'gdAuto.sm', 'gdAuto.md', 'gdAuto.lg', 'gdAuto.xl',\n 'gdAuto.lt-sm', 'gdAuto.lt-md', 'gdAuto.lt-lg', 'gdAuto.lt-xl',\n 'gdAuto.gt-xs', 'gdAuto.gt-sm', 'gdAuto.gt-md', 'gdAuto.gt-lg'\n];\nconst selector = `\n [gdAuto],\n [gdAuto.xs], [gdAuto.sm], [gdAuto.md], [gdAuto.lg], [gdAuto.xl],\n [gdAuto.lt-sm], [gdAuto.lt-md], [gdAuto.lt-lg], [gdAuto.lt-xl],\n [gdAuto.gt-xs], [gdAuto.gt-sm], [gdAuto.gt-md], [gdAuto.gt-lg]\n`;\n\n/**\n * 'grid-auto-flow' CSS Grid styling directive\n * Configures the auto placement algorithm for the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-23\n */\n@Directive({selector, inputs})\nexport class DefaultGridAutoDirective extends GridAutoDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n MediaMarshaller,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst DELIMETER = '|';\n\nexport interface GridAreasParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAreasStyleBuiler extends StyleBuilder {\n buildStyles(input: string, parent: GridAreasParent) {\n const areas = (input || DEFAULT_VALUE).split(DELIMETER).map(v => `\"${v.trim()}\"`);\n\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-template-areas': areas.join(' ')\n };\n }\n}\n\nexport class GridAreasDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-areas';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAreasStyleBuiler,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? areasInlineCache : areasCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst areasCache: Map = new Map();\nconst areasInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAreas',\n 'gdAreas.xs', 'gdAreas.sm', 'gdAreas.md', 'gdAreas.lg', 'gdAreas.xl',\n 'gdAreas.lt-sm', 'gdAreas.lt-md', 'gdAreas.lt-lg', 'gdAreas.lt-xl',\n 'gdAreas.gt-xs', 'gdAreas.gt-sm', 'gdAreas.gt-md', 'gdAreas.gt-lg'\n];\n\nconst selector = `\n [gdAreas],\n [gdAreas.xs], [gdAreas.sm], [gdAreas.md], [gdAreas.lg], [gdAreas.xl],\n [gdAreas.lt-sm], [gdAreas.lt-md], [gdAreas.lt-lg], [gdAreas.lt-xl],\n [gdAreas.gt-xs], [gdAreas.gt-sm], [gdAreas.gt-md], [gdAreas.gt-lg]\n`;\n\n/**\n * 'grid-template-areas' CSS Grid styling directive\n * Configures the names of elements within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-14\n */\n@Directive({selector, inputs})\nexport class DefaultGridAreasDirective extends GridAreasDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridAreaStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-area': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridAreaDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-area';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAreaStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = gridAreaCache;\n}\n\nconst gridAreaCache: Map = new Map();\n\nconst inputs = [\n 'gdArea',\n 'gdArea.xs', 'gdArea.sm', 'gdArea.md', 'gdArea.lg', 'gdArea.xl',\n 'gdArea.lt-sm', 'gdArea.lt-md', 'gdArea.lt-lg', 'gdArea.lt-xl',\n 'gdArea.gt-xs', 'gdArea.gt-sm', 'gdArea.gt-md', 'gdArea.gt-lg'\n];\nconst selector = `\n [gdArea],\n [gdArea.xs], [gdArea.sm], [gdArea.md], [gdArea.lg], [gdArea.xl],\n [gdArea.lt-sm], [gdArea.lt-md], [gdArea.lt-lg], [gdArea.lt-xl],\n [gdArea.gt-xs], [gdArea.gt-sm], [gdArea.gt-md], [gdArea.gt-lg]\n`;\n\n/**\n * 'grid-area' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-27\n */\n@Directive({selector, inputs})\nexport class DefaultGridAreaDirective extends GridAreaDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_MAIN = 'start';\nconst DEFAULT_CROSS = 'stretch';\n\nexport interface GridAlignRowsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignRowsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAlignRowsParent) {\n return buildCss(input || `${DEFAULT_MAIN} ${DEFAULT_CROSS}`, parent.inline);\n }\n}\n\nexport class GridAlignRowsDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align-rows';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignRowsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? alignRowsInlineCache : alignRowsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst alignRowsCache: Map = new Map();\nconst alignRowsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAlignRows',\n 'gdAlignRows.xs', 'gdAlignRows.sm', 'gdAlignRows.md',\n 'gdAlignRows.lg', 'gdAlignRows.xl', 'gdAlignRows.lt-sm',\n 'gdAlignRows.lt-md', 'gdAlignRows.lt-lg', 'gdAlignRows.lt-xl',\n 'gdAlignRows.gt-xs', 'gdAlignRows.gt-sm', 'gdAlignRows.gt-md',\n 'gdAlignRows.gt-lg'\n];\nconst selector = `\n [gdAlignRows],\n [gdAlignRows.xs], [gdAlignRows.sm], [gdAlignRows.md],\n [gdAlignRows.lg], [gdAlignRows.xl], [gdAlignRows.lt-sm],\n [gdAlignRows.lt-md], [gdAlignRows.lt-lg], [gdAlignRows.lt-xl],\n [gdAlignRows.gt-xs], [gdAlignRows.gt-sm], [gdAlignRows.gt-md],\n [gdAlignRows.gt-lg]\n`;\n\n/**\n * 'row alignment' CSS Grid styling directive\n * Configures the alignment in the row direction\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-18\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-20\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignRowsDirective extends GridAlignRowsDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string, inline: boolean): StyleDefinition {\n const css: {[key: string]: string} = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n case 'space-around':\n case 'space-between':\n case 'space-evenly':\n case 'end':\n case 'start':\n case 'stretch':\n css['justify-content'] = mainAxis;\n break;\n default:\n css['justify-content'] = DEFAULT_MAIN; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'center':\n case 'end':\n case 'stretch':\n css['justify-items'] = crossAxis;\n break;\n default : // 'stretch'\n css['justify-items'] = DEFAULT_CROSS; // default cross axis\n break;\n }\n\n css['display'] = inline ? 'inline-grid' : 'grid';\n\n return css;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_MAIN = 'start';\nconst DEFAULT_CROSS = 'stretch';\n\nexport interface GridAlignColumnsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignColumnsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAlignColumnsParent) {\n return buildCss(input || `${DEFAULT_MAIN} ${DEFAULT_CROSS}`, parent.inline);\n }\n}\n\nexport class GridAlignColumnsDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align-columns';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignColumnsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? alignColumnsInlineCache : alignColumnsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst alignColumnsCache: Map = new Map();\nconst alignColumnsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAlignColumns',\n 'gdAlignColumns.xs', 'gdAlignColumns.sm', 'gdAlignColumns.md',\n 'gdAlignColumns.lg', 'gdAlignColumns.xl', 'gdAlignColumns.lt-sm',\n 'gdAlignColumns.lt-md', 'gdAlignColumns.lt-lg', 'gdAlignColumns.lt-xl',\n 'gdAlignColumns.gt-xs', 'gdAlignColumns.gt-sm', 'gdAlignColumns.gt-md',\n 'gdAlignColumns.gt-lg'\n];\nconst selector = `\n [gdAlignColumns],\n [gdAlignColumns.xs], [gdAlignColumns.sm], [gdAlignColumns.md],\n [gdAlignColumns.lg], [gdAlignColumns.xl], [gdAlignColumns.lt-sm],\n [gdAlignColumns.lt-md], [gdAlignColumns.lt-lg], [gdAlignColumns.lt-xl],\n [gdAlignColumns.gt-xs], [gdAlignColumns.gt-sm], [gdAlignColumns.gt-md],\n [gdAlignColumns.gt-lg]\n`;\n\n/**\n * 'column alignment' CSS Grid styling directive\n * Configures the alignment in the column direction\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-19\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-21\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignColumnsDirective extends GridAlignColumnsDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string, inline: boolean): StyleDefinition {\n const css: {[key: string]: string} = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['align-content'] = 'center';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['align-content'] = 'space-evenly';\n break;\n case 'end':\n css['align-content'] = 'end';\n break;\n case 'start':\n css['align-content'] = 'start';\n break;\n case 'stretch':\n css['align-content'] = 'stretch';\n break;\n default:\n css['align-content'] = DEFAULT_MAIN; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n css['align-items'] = 'start';\n break;\n case 'center':\n css['align-items'] = 'center';\n break;\n case 'end':\n css['align-items'] = 'end';\n break;\n case 'stretch':\n css['align-items'] = 'stretch';\n break;\n default : // 'stretch'\n css['align-items'] = DEFAULT_CROSS; // default cross axis\n break;\n }\n\n css['display'] = inline ? 'inline-grid' : 'grid';\n\n return css;\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\nconst ROW_DEFAULT = 'stretch';\nconst COL_DEFAULT = 'stretch';\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return buildCss(input || ROW_DEFAULT);\n }\n}\n\nexport class GridAlignDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = alignCache;\n}\n\nconst alignCache: Map = new Map();\n\nconst inputs = [\n 'gdGridAlign',\n 'gdGridAlign.xs', 'gdGridAlign.sm', 'gdGridAlign.md', 'gdGridAlign.lg', 'gdGridAlign.xl',\n 'gdGridAlign.lt-sm', 'gdGridAlign.lt-md', 'gdGridAlign.lt-lg', 'gdGridAlign.lt-xl',\n 'gdGridAlign.gt-xs', 'gdGridAlign.gt-sm', 'gdGridAlign.gt-md', 'gdGridAlign.gt-lg'\n];\n\nconst selector = `\n [gdGridAlign],\n [gdGridAlign.xs], [gdGridAlign.sm], [gdGridAlign.md], [gdGridAlign.lg],[gdGridAlign.xl],\n [gdGridAlign.lt-sm], [gdGridAlign.lt-md], [gdGridAlign.lt-lg], [gdGridAlign.lt-xl],\n [gdGridAlign.gt-xs], [gdGridAlign.gt-sm], [gdGridAlign.gt-md], [gdGridAlign.gt-lg]\n`;\n\n/**\n * 'align' CSS Grid styling directive for grid children\n * Defines positioning of child elements along row and column axis in a grid container\n * Optional values: {row-axis} values or {row-axis column-axis} value pairs\n *\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-justify-self\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-align-self\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignDirective extends GridAlignDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string = '') {\n const css: {[key: string]: string} = {}, [rowAxis, columnAxis] = align.split(' ');\n\n // Row axis\n switch (rowAxis) {\n case 'end':\n css['justify-self'] = 'end';\n break;\n case 'center':\n css['justify-self'] = 'center';\n break;\n case 'stretch':\n css['justify-self'] = 'stretch';\n break;\n case 'start':\n css['justify-self'] = 'start';\n break;\n default:\n css['justify-self'] = ROW_DEFAULT; // default row axis\n break;\n }\n\n // Column axis\n switch (columnAxis) {\n case 'end':\n css['align-self'] = 'end';\n break;\n case 'center':\n css['align-self'] = 'center';\n break;\n case 'stretch':\n css['align-self'] = 'stretch';\n break;\n case 'start':\n css['align-self'] = 'start';\n break;\n default:\n css['align-self'] = COL_DEFAULT; // default column axis\n break;\n }\n\n return css;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\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 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) : new P(function (resolve) { resolve(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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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 __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\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)) result[k] = mod[k];\r\n result.default = 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"],"names":["CoreModule","NgModule","Directive","selector","inputs","tslib_1.__extends","BaseDirective2","Input","MediaMarshaller","StyleUtils","Optional","ElementRef","coerceBooleanProperty","StyleBuilder","Injectable","AUTO_SPECIFIER","DEFAULT_VALUE","DEFAULT_CROSS","DEFAULT_MAIN","buildCss"],"mappings":"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"} \ No newline at end of file diff --git a/bundles/flex-layout-grid.umd.min.js b/bundles/flex-layout-grid.umd.min.js index ab8b6e4d3..5e25e47e8 100644 --- a/bundles/flex-layout-grid.umd.min.js +++ b/bundles/flex-layout-grid.umd.min.js @@ -5,5 +5,5 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/flex-layout/core"),require("@angular/cdk/coercion")):"function"==typeof define&&define.amd?define("@angular/flex-layout/grid",["exports","@angular/core","@angular/flex-layout/core","@angular/cdk/coercion"],e):e((t.ng=t.ng||{},t.ng["flex-layout"]=t.ng["flex-layout"]||{},t.ng["flex-layout"].grid={}),t.ng.core,t.ng.flexLayout.core,t.ng.cdk.coercion)}(this,function(t,e,n,l){"use strict";function r(t,e){function n(){this.constructor=t}g(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}function i(t){void 0===t&&(t="");var e={},n=t.split(" "),l=n[0],r=n[1];switch(l){case"end":e["justify-self"]="end";break;case"center":e["justify-self"]="center";break;case"stretch":e["justify-self"]="stretch";break;case"start":e["justify-self"]="start";break;default:e["justify-self"]=d}switch(r){case"end":e["align-self"]="end";break;case"center":e["align-self"]="center";break;case"stretch":e["align-self"]="stretch";break;case"start":e["align-self"]="start";break;default:e["align-self"]=a}return e}function o(t,e){var n={},l=t.split(" "),r=l[0],i=l[1];switch(r){case"center":n["align-content"]="center";break;case"space-around":n["align-content"]="space-around";break;case"space-between":n["align-content"]="space-between";break;case"space-evenly":n["align-content"]="space-evenly";break;case"end":n["align-content"]="end";break;case"start":n["align-content"]="start";break;case"stretch":n["align-content"]="stretch";break;default:n["align-content"]=f}switch(i){case"start":n["align-items"]="start";break;case"center":n["align-items"]="center";break;case"end":n["align-items"]="end";break;case"stretch":n["align-items"]="stretch";break;default:n["align-items"]=h}return n.display=e?"inline-grid":"grid",n}function s(t,e){var n={},l=t.split(" "),r=l[0],i=l[1];switch(r){case"center":case"space-around":case"space-between":case"space-evenly":case"end":case"start":case"stretch":n["justify-content"]=r;break;default:n["justify-content"]=I}switch(i){case"start":case"center":case"end":case"stretch":n["justify-items"]=i;break;default:n["justify-items"]=v}return n.display=e?"inline-grid":"grid",n}var g=function(t,e){return(g=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},d="stretch",a="stretch",u=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.buildStyles=function(t){return i(t||d)},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.defineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(n.StyleBuilder),c=function(t){function l(e,n,l,r){var i=t.call(this,e,n,l,r)||this;return i.elementRef=e,i.styleBuilder=n,i.styler=l,i.marshal=r,i.DIRECTIVE_KEY="grid-align",i.styleCache=p,i.init(),i}return r(l,t),l.ctorParameters=function(){return[{type:e.ElementRef},{type:u,decorators:[{type:e.Optional}]},{type:n.StyleUtils},{type:n.MediaMarshaller}]},l}(n.BaseDirective2),p=new Map,m=["gdGridAlign","gdGridAlign.xs","gdGridAlign.sm","gdGridAlign.md","gdGridAlign.lg","gdGridAlign.xl","gdGridAlign.lt-sm","gdGridAlign.lt-md","gdGridAlign.lt-lg","gdGridAlign.lt-xl","gdGridAlign.gt-xs","gdGridAlign.gt-sm","gdGridAlign.gt-md","gdGridAlign.gt-lg"],y=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=m,e}return r(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdGridAlign],\n [gdGridAlign.xs], [gdGridAlign.sm], [gdGridAlign.md], [gdGridAlign.lg],[gdGridAlign.xl],\n [gdGridAlign.lt-sm], [gdGridAlign.lt-md], [gdGridAlign.lt-lg], [gdGridAlign.lt-xl],\n [gdGridAlign.gt-xs], [gdGridAlign.gt-sm], [gdGridAlign.gt-md], [gdGridAlign.gt-lg]\n",inputs:m}]}],n}(c),f="start",h="stretch",A=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.buildStyles=function(t,e){return o(t||f+" "+h,e.inline)},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.defineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(n.StyleBuilder),w=function(t){function i(e,n,l,r){var i=t.call(this,e,n,l,r)||this;return i.elementRef=e,i.styleBuilder=n,i.styler=l,i.marshal=r,i.DIRECTIVE_KEY="grid-align-columns",i._inline=!1,i.init(),i}return r(i,t),Object.defineProperty(i.prototype,"inline",{get:function(){return this._inline},set:function(t){this._inline=l.coerceBooleanProperty(t)},enumerable:!0,configurable:!0}),i.prototype.updateWithValue=function(t){this.styleCache=this.inline?C:R,this.addStyles(t,{inline:this.inline})},i.ctorParameters=function(){return[{type:e.ElementRef},{type:A,decorators:[{type:e.Optional}]},{type:n.StyleUtils},{type:n.MediaMarshaller}]},i.propDecorators={inline:[{type:e.Input,args:["gdInline"]}]},i}(n.BaseDirective2),R=new Map,C=new Map,b=["gdAlignColumns","gdAlignColumns.xs","gdAlignColumns.sm","gdAlignColumns.md","gdAlignColumns.lg","gdAlignColumns.xl","gdAlignColumns.lt-sm","gdAlignColumns.lt-md","gdAlignColumns.lt-lg","gdAlignColumns.lt-xl","gdAlignColumns.gt-xs","gdAlignColumns.gt-sm","gdAlignColumns.gt-md","gdAlignColumns.gt-lg"],x=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=b,e}return r(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdAlignColumns],\n [gdAlignColumns.xs], [gdAlignColumns.sm], [gdAlignColumns.md],\n [gdAlignColumns.lg], [gdAlignColumns.xl], [gdAlignColumns.lt-sm],\n [gdAlignColumns.lt-md], [gdAlignColumns.lt-lg], [gdAlignColumns.lt-xl],\n [gdAlignColumns.gt-xs], [gdAlignColumns.gt-sm], [gdAlignColumns.gt-md],\n [gdAlignColumns.gt-lg]\n",inputs:b}]}],n}(w),I="start",v="stretch",G=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.buildStyles=function(t,e){return s(t||I+" "+v,e.inline)},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.defineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(n.StyleBuilder),j=function(t){function i(e,n,l,r){var i=t.call(this,e,n,l,r)||this;return i.elementRef=e,i.styleBuilder=n,i.styler=l,i.marshal=r,i.DIRECTIVE_KEY="grid-align-rows",i._inline=!1,i.init(),i}return r(i,t),Object.defineProperty(i.prototype,"inline",{get:function(){return this._inline},set:function(t){this._inline=l.coerceBooleanProperty(t)},enumerable:!0,configurable:!0}),i.prototype.updateWithValue=function(t){this.styleCache=this.inline?E:D,this.addStyles(t,{inline:this.inline})},i.ctorParameters=function(){return[{type:e.ElementRef},{type:G,decorators:[{type:e.Optional}]},{type:n.StyleUtils},{type:n.MediaMarshaller}]},i.propDecorators={inline:[{type:e.Input,args:["gdInline"]}]},i}(n.BaseDirective2),D=new Map,E=new Map,M=["gdAlignRows","gdAlignRows.xs","gdAlignRows.sm","gdAlignRows.md","gdAlignRows.lg","gdAlignRows.xl","gdAlignRows.lt-sm","gdAlignRows.lt-md","gdAlignRows.lt-lg","gdAlignRows.lt-xl","gdAlignRows.gt-xs","gdAlignRows.gt-sm","gdAlignRows.gt-md","gdAlignRows.gt-lg"],_=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=M,e}return r(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdAlignRows],\n [gdAlignRows.xs], [gdAlignRows.sm], [gdAlignRows.md],\n [gdAlignRows.lg], [gdAlignRows.xl], [gdAlignRows.lt-sm],\n [gdAlignRows.lt-md], [gdAlignRows.lt-lg], [gdAlignRows.lt-xl],\n [gdAlignRows.gt-xs], [gdAlignRows.gt-sm], [gdAlignRows.gt-md],\n [gdAlignRows.gt-lg]\n",inputs:M}]}],n}(j),B=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.buildStyles=function(t){return{"grid-area":t||"auto"}},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.defineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(n.StyleBuilder),S=function(t){function l(e,n,l,r){var i=t.call(this,e,l,n,r)||this;return i.elRef=e,i.styleUtils=n,i.styleBuilder=l,i.marshal=r,i.DIRECTIVE_KEY="grid-area",i.styleCache=k,i.init(),i}return r(l,t),l.ctorParameters=function(){return[{type:e.ElementRef},{type:n.StyleUtils},{type:B,decorators:[{type:e.Optional}]},{type:n.MediaMarshaller}]},l}(n.BaseDirective2),k=new Map,P=["gdArea","gdArea.xs","gdArea.sm","gdArea.md","gdArea.lg","gdArea.xl","gdArea.lt-sm","gdArea.lt-md","gdArea.lt-lg","gdArea.lt-xl","gdArea.gt-xs","gdArea.gt-sm","gdArea.gt-md","gdArea.gt-lg"],O=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=P,e}return r(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdArea],\n [gdArea.xs], [gdArea.sm], [gdArea.md], [gdArea.lg], [gdArea.xl],\n [gdArea.lt-sm], [gdArea.lt-md], [gdArea.lt-lg], [gdArea.lt-xl],\n [gdArea.gt-xs], [gdArea.gt-sm], [gdArea.gt-md], [gdArea.gt-lg]\n",inputs:P}]}],n}(S),V=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.buildStyles=function(t,e){var n=(t||"none").split("|").map(function(t){return'"'+t.trim()+'"'});return{display:e.inline?"inline-grid":"grid","grid-template-areas":n.join(" ")}},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.defineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(n.StyleBuilder),U=function(t){function i(e,n,l,r){var i=t.call(this,e,l,n,r)||this;return i.elRef=e,i.styleUtils=n,i.styleBuilder=l,i.marshal=r,i.DIRECTIVE_KEY="grid-areas",i._inline=!1,i.init(),i}return r(i,t),Object.defineProperty(i.prototype,"inline",{get:function(){return this._inline},set:function(t){this._inline=l.coerceBooleanProperty(t)},enumerable:!0,configurable:!0}),i.prototype.updateWithValue=function(t){this.styleCache=this.inline?T:K,this.addStyles(t,{inline:this.inline})},i.ctorParameters=function(){return[{type:e.ElementRef},{type:n.StyleUtils},{type:V,decorators:[{type:e.Optional}]},{type:n.MediaMarshaller}]},i.propDecorators={inline:[{type:e.Input,args:["gdInline"]}]},i}(n.BaseDirective2),K=new Map,T=new Map,Y=["gdAreas","gdAreas.xs","gdAreas.sm","gdAreas.md","gdAreas.lg","gdAreas.xl","gdAreas.lt-sm","gdAreas.lt-md","gdAreas.lt-lg","gdAreas.lt-xl","gdAreas.gt-xs","gdAreas.gt-sm","gdAreas.gt-md","gdAreas.gt-lg"],W=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=Y,e}return r(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdAreas],\n [gdAreas.xs], [gdAreas.sm], [gdAreas.md], [gdAreas.lg], [gdAreas.xl],\n [gdAreas.lt-sm], [gdAreas.lt-md], [gdAreas.lt-lg], [gdAreas.lt-xl],\n [gdAreas.gt-xs], [gdAreas.gt-sm], [gdAreas.gt-md], [gdAreas.gt-lg]\n",inputs:Y}]}],n}(U),q=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.buildStyles=function(t,e){var n=(t||"initial").split(" "),l=n[0],r=n[1];return"column"!==l&&"row"!==l&&"dense"!==l&&(l="row"),r="dense"===r&&"dense"!==l?" dense":"",{display:e.inline?"inline-grid":"grid","grid-auto-flow":l+r}},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.defineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(n.StyleBuilder),z=function(t){function i(e,n,l,r){var i=t.call(this,e,n,l,r)||this;return i.elementRef=e,i.styleBuilder=n,i.styler=l,i.marshal=r,i._inline=!1,i.DIRECTIVE_KEY="grid-auto",i.init(),i}return r(i,t),Object.defineProperty(i.prototype,"inline",{get:function(){return this._inline},set:function(t){this._inline=l.coerceBooleanProperty(t)},enumerable:!0,configurable:!0}),i.prototype.updateWithValue=function(t){this.styleCache=this.inline?N:L,this.addStyles(t,{inline:this.inline})},i.ctorParameters=function(){return[{type:e.ElementRef},{type:q,decorators:[{type:e.Optional}]},{type:n.StyleUtils},{type:n.MediaMarshaller}]},i.propDecorators={inline:[{type:e.Input,args:["gdInline"]}]},i}(n.BaseDirective2),L=new Map,N=new Map,F=["gdAuto","gdAuto.xs","gdAuto.sm","gdAuto.md","gdAuto.lg","gdAuto.xl","gdAuto.lt-sm","gdAuto.lt-md","gdAuto.lt-lg","gdAuto.lt-xl","gdAuto.gt-xs","gdAuto.gt-sm","gdAuto.gt-md","gdAuto.gt-lg"],H=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=F,e}return r(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdAuto],\n [gdAuto.xs], [gdAuto.sm], [gdAuto.md], [gdAuto.lg], [gdAuto.xl],\n [gdAuto.lt-sm], [gdAuto.lt-md], [gdAuto.lt-lg], [gdAuto.lt-xl],\n [gdAuto.gt-xs], [gdAuto.gt-sm], [gdAuto.gt-md], [gdAuto.gt-lg]\n",inputs:F}]}],n}(z),J=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.buildStyles=function(t){return{"grid-column":t||"auto"}},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.defineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(n.StyleBuilder),Q=function(t){function l(e,n,l,r){var i=t.call(this,e,n,l,r)||this;return i.elementRef=e,i.styleBuilder=n,i.styler=l,i.marshal=r,i.DIRECTIVE_KEY="grid-column",i.styleCache=X,i.init(),i}return r(l,t),l.ctorParameters=function(){return[{type:e.ElementRef},{type:J,decorators:[{type:e.Optional}]},{type:n.StyleUtils},{type:n.MediaMarshaller}]},l}(n.BaseDirective2),X=new Map,Z=["gdColumn","gdColumn.xs","gdColumn.sm","gdColumn.md","gdColumn.lg","gdColumn.xl","gdColumn.lt-sm","gdColumn.lt-md","gdColumn.lt-lg","gdColumn.lt-xl","gdColumn.gt-xs","gdColumn.gt-sm","gdColumn.gt-md","gdColumn.gt-lg"],$=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=Z,e}return r(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdColumn],\n [gdColumn.xs], [gdColumn.sm], [gdColumn.md], [gdColumn.lg], [gdColumn.xl],\n [gdColumn.lt-sm], [gdColumn.lt-md], [gdColumn.lt-lg], [gdColumn.lt-xl],\n [gdColumn.gt-xs], [gdColumn.gt-sm], [gdColumn.gt-md], [gdColumn.gt-lg]\n",inputs:Z}]}],n}(Q),tt=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.buildStyles=function(t,e){t=t||"none";var n=!1;t.endsWith("!")&&(t=t.substring(0,t.indexOf("!")),n=!0);var l={display:e.inline?"inline-grid":"grid","grid-auto-columns":"","grid-template-columns":""};return l[n?"grid-auto-columns":"grid-template-columns"]=t,l},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.defineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(n.StyleBuilder),et=function(t){function i(e,n,l,r){var i=t.call(this,e,n,l,r)||this;return i.elementRef=e,i.styleBuilder=n,i.styler=l,i.marshal=r,i.DIRECTIVE_KEY="grid-columns",i._inline=!1,i.init(),i}return r(i,t),Object.defineProperty(i.prototype,"inline",{get:function(){return this._inline},set:function(t){this._inline=l.coerceBooleanProperty(t)},enumerable:!0,configurable:!0}),i.prototype.updateWithValue=function(t){this.styleCache=this.inline?lt:nt,this.addStyles(t,{inline:this.inline})},i.ctorParameters=function(){return[{type:e.ElementRef},{type:tt,decorators:[{type:e.Optional}]},{type:n.StyleUtils},{type:n.MediaMarshaller}]},i.propDecorators={inline:[{type:e.Input,args:["gdInline"]}]},i}(n.BaseDirective2),nt=new Map,lt=new Map,rt=["gdColumns","gdColumns.xs","gdColumns.sm","gdColumns.md","gdColumns.lg","gdColumns.xl","gdColumns.lt-sm","gdColumns.lt-md","gdColumns.lt-lg","gdColumns.lt-xl","gdColumns.gt-xs","gdColumns.gt-sm","gdColumns.gt-md","gdColumns.gt-lg"],it=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=rt,e}return r(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdColumns],\n [gdColumns.xs], [gdColumns.sm], [gdColumns.md], [gdColumns.lg], [gdColumns.xl],\n [gdColumns.lt-sm], [gdColumns.lt-md], [gdColumns.lt-lg], [gdColumns.lt-xl],\n [gdColumns.gt-xs], [gdColumns.gt-sm], [gdColumns.gt-md], [gdColumns.gt-lg]\n",inputs:rt}]}],n}(et),ot=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.buildStyles=function(t,e){return{display:e.inline?"inline-grid":"grid","grid-gap":t||"0"}},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.defineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(n.StyleBuilder),st=function(t){function i(e,n,l,r){var i=t.call(this,e,l,n,r)||this;return i.elRef=e,i.styleUtils=n,i.styleBuilder=l,i.marshal=r,i.DIRECTIVE_KEY="grid-gap",i._inline=!1,i.init(),i}return r(i,t),Object.defineProperty(i.prototype,"inline",{get:function(){return this._inline},set:function(t){this._inline=l.coerceBooleanProperty(t)},enumerable:!0,configurable:!0}),i.prototype.updateWithValue=function(t){this.styleCache=this.inline?dt:gt,this.addStyles(t,{inline:this.inline})},i.ctorParameters=function(){return[{type:e.ElementRef},{type:n.StyleUtils},{type:ot,decorators:[{type:e.Optional}]},{type:n.MediaMarshaller}]},i.propDecorators={inline:[{type:e.Input,args:["gdInline"]}]},i}(n.BaseDirective2),gt=new Map,dt=new Map,at=["gdGap","gdGap.xs","gdGap.sm","gdGap.md","gdGap.lg","gdGap.xl","gdGap.lt-sm","gdGap.lt-md","gdGap.lt-lg","gdGap.lt-xl","gdGap.gt-xs","gdGap.gt-sm","gdGap.gt-md","gdGap.gt-lg"],ut=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=at,e}return r(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdGap],\n [gdGap.xs], [gdGap.sm], [gdGap.md], [gdGap.lg], [gdGap.xl],\n [gdGap.lt-sm], [gdGap.lt-md], [gdGap.lt-lg], [gdGap.lt-xl],\n [gdGap.gt-xs], [gdGap.gt-sm], [gdGap.gt-md], [gdGap.gt-lg]\n",inputs:at}]}],n}(st),ct=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.buildStyles=function(t){return{"grid-row":t||"auto"}},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.defineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(n.StyleBuilder),pt=function(t){function l(e,n,l,r){var i=t.call(this,e,n,l,r)||this;return i.elementRef=e,i.styleBuilder=n,i.styler=l,i.marshal=r,i.DIRECTIVE_KEY="grid-row",i.styleCache=mt,i.init(),i}return r(l,t),l.ctorParameters=function(){return[{type:e.ElementRef},{type:ct,decorators:[{type:e.Optional}]},{type:n.StyleUtils},{type:n.MediaMarshaller}]},l}(n.BaseDirective2),mt=new Map,yt=["gdRow","gdRow.xs","gdRow.sm","gdRow.md","gdRow.lg","gdRow.xl","gdRow.lt-sm","gdRow.lt-md","gdRow.lt-lg","gdRow.lt-xl","gdRow.gt-xs","gdRow.gt-sm","gdRow.gt-md","gdRow.gt-lg"],ft=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=yt,e}return r(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdRow],\n [gdRow.xs], [gdRow.sm], [gdRow.md], [gdRow.lg], [gdRow.xl],\n [gdRow.lt-sm], [gdRow.lt-md], [gdRow.lt-lg], [gdRow.lt-xl],\n [gdRow.gt-xs], [gdRow.gt-sm], [gdRow.gt-md], [gdRow.gt-lg]\n",inputs:yt}]}],n}(pt),ht=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.buildStyles=function(t,e){t=t||"none";var n=!1;t.endsWith("!")&&(t=t.substring(0,t.indexOf("!")),n=!0);var l={display:e.inline?"inline-grid":"grid","grid-auto-rows":"","grid-template-rows":""};return l[n?"grid-auto-rows":"grid-template-rows"]=t,l},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.defineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(n.StyleBuilder),At=function(t){function i(e,n,l,r){var i=t.call(this,e,n,l,r)||this;return i.elementRef=e,i.styleBuilder=n,i.styler=l,i.marshal=r,i.DIRECTIVE_KEY="grid-rows",i._inline=!1,i.init(),i}return r(i,t),Object.defineProperty(i.prototype,"inline",{get:function(){return this._inline},set:function(t){this._inline=l.coerceBooleanProperty(t)},enumerable:!0,configurable:!0}),i.prototype.updateWithValue=function(t){this.styleCache=this.inline?Rt:wt,this.addStyles(t,{inline:this.inline})},i.ctorParameters=function(){return[{type:e.ElementRef},{type:ht,decorators:[{type:e.Optional}]},{type:n.StyleUtils},{type:n.MediaMarshaller}]},i.propDecorators={inline:[{type:e.Input,args:["gdInline"]}]},i}(n.BaseDirective2),wt=new Map,Rt=new Map,Ct=["gdRows","gdRows.xs","gdRows.sm","gdRows.md","gdRows.lg","gdRows.xl","gdRows.lt-sm","gdRows.lt-md","gdRows.lt-lg","gdRows.lt-xl","gdRows.gt-xs","gdRows.gt-sm","gdRows.gt-md","gdRows.gt-lg"],bt=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=Ct,e}return r(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdRows],\n [gdRows.xs], [gdRows.sm], [gdRows.md], [gdRows.lg], [gdRows.xl],\n [gdRows.lt-sm], [gdRows.lt-md], [gdRows.lt-lg], [gdRows.lt-xl],\n [gdRows.gt-xs], [gdRows.gt-sm], [gdRows.gt-md], [gdRows.gt-lg]\n",inputs:Ct}]}],n}(At),xt=[y,x,_,O,W,H,$,it,ut,ft,bt],It=function(){function t(){}return t.decorators=[{type:e.NgModule,args:[{imports:[n.CoreModule],declarations:xt.slice(),exports:xt.slice()}]}],t}();t.GridModule=It,t.ɵf=x,t.ɵe=w,t.ɵd=A,t.ɵi=_,t.ɵh=j,t.ɵg=G,t.ɵl=O,t.ɵk=S,t.ɵj=B,t.ɵo=W,t.ɵn=U,t.ɵm=V,t.ɵr=H,t.ɵq=z,t.ɵp=q,t.ɵu=$,t.ɵt=Q,t.ɵs=J,t.ɵx=it,t.ɵw=et,t.ɵv=tt,t.ɵba=ut,t.ɵz=st,t.ɵy=ot,t.ɵc=y,t.ɵb=c,t.ɵa=u,t.ɵbd=ft,t.ɵbc=pt,t.ɵbb=ct,t.ɵbg=bt,t.ɵbf=At,t.ɵbe=ht,Object.defineProperty(t,"__esModule",{value:!0})}); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/flex-layout/core"),require("@angular/cdk/coercion")):"function"==typeof define&&define.amd?define("@angular/flex-layout/grid",["exports","@angular/core","@angular/flex-layout/core","@angular/cdk/coercion"],e):e((t.ng=t.ng||{},t.ng.flexLayout=t.ng.flexLayout||{},t.ng.flexLayout.grid={}),t.ng.core,t.ng.flexLayout.core,t.ng.cdk.coercion)}(this,function(t,e,n,l){"use strict";function r(t,e){function n(){this.constructor=t}g(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}function i(t){void 0===t&&(t="");var e={},n=t.split(" "),l=n[0],r=n[1];switch(l){case"end":e["justify-self"]="end";break;case"center":e["justify-self"]="center";break;case"stretch":e["justify-self"]="stretch";break;case"start":e["justify-self"]="start";break;default:e["justify-self"]=d}switch(r){case"end":e["align-self"]="end";break;case"center":e["align-self"]="center";break;case"stretch":e["align-self"]="stretch";break;case"start":e["align-self"]="start";break;default:e["align-self"]=a}return e}function o(t,e){var n={},l=t.split(" "),r=l[0],i=l[1];switch(r){case"center":n["align-content"]="center";break;case"space-around":n["align-content"]="space-around";break;case"space-between":n["align-content"]="space-between";break;case"space-evenly":n["align-content"]="space-evenly";break;case"end":n["align-content"]="end";break;case"start":n["align-content"]="start";break;case"stretch":n["align-content"]="stretch";break;default:n["align-content"]=f}switch(i){case"start":n["align-items"]="start";break;case"center":n["align-items"]="center";break;case"end":n["align-items"]="end";break;case"stretch":n["align-items"]="stretch";break;default:n["align-items"]=h}return n.display=e?"inline-grid":"grid",n}function s(t,e){var n={},l=t.split(" "),r=l[0],i=l[1];switch(r){case"center":case"space-around":case"space-between":case"space-evenly":case"end":case"start":case"stretch":n["justify-content"]=r;break;default:n["justify-content"]=I}switch(i){case"start":case"center":case"end":case"stretch":n["justify-items"]=i;break;default:n["justify-items"]=v}return n.display=e?"inline-grid":"grid",n}var g=function(t,e){return(g=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},d="stretch",a="stretch",u=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.buildStyles=function(t){return i(t||d)},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(n.StyleBuilder),c=function(t){function l(e,n,l,r){var i=t.call(this,e,n,l,r)||this;return i.elementRef=e,i.styleBuilder=n,i.styler=l,i.marshal=r,i.DIRECTIVE_KEY="grid-align",i.styleCache=p,i.init(),i}return r(l,t),l.ctorParameters=function(){return[{type:e.ElementRef},{type:u,decorators:[{type:e.Optional}]},{type:n.StyleUtils},{type:n.MediaMarshaller}]},l}(n.BaseDirective2),p=new Map,m=["gdGridAlign","gdGridAlign.xs","gdGridAlign.sm","gdGridAlign.md","gdGridAlign.lg","gdGridAlign.xl","gdGridAlign.lt-sm","gdGridAlign.lt-md","gdGridAlign.lt-lg","gdGridAlign.lt-xl","gdGridAlign.gt-xs","gdGridAlign.gt-sm","gdGridAlign.gt-md","gdGridAlign.gt-lg"],y=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=m,e}return r(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdGridAlign],\n [gdGridAlign.xs], [gdGridAlign.sm], [gdGridAlign.md], [gdGridAlign.lg],[gdGridAlign.xl],\n [gdGridAlign.lt-sm], [gdGridAlign.lt-md], [gdGridAlign.lt-lg], [gdGridAlign.lt-xl],\n [gdGridAlign.gt-xs], [gdGridAlign.gt-sm], [gdGridAlign.gt-md], [gdGridAlign.gt-lg]\n",inputs:m}]}],n}(c),f="start",h="stretch",A=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.buildStyles=function(t,e){return o(t||f+" "+h,e.inline)},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(n.StyleBuilder),w=function(t){function i(e,n,l,r){var i=t.call(this,e,n,l,r)||this;return i.elementRef=e,i.styleBuilder=n,i.styler=l,i.marshal=r,i.DIRECTIVE_KEY="grid-align-columns",i._inline=!1,i.init(),i}return r(i,t),Object.defineProperty(i.prototype,"inline",{get:function(){return this._inline},set:function(t){this._inline=l.coerceBooleanProperty(t)},enumerable:!0,configurable:!0}),i.prototype.updateWithValue=function(t){this.styleCache=this.inline?C:R,this.addStyles(t,{inline:this.inline})},i.ctorParameters=function(){return[{type:e.ElementRef},{type:A,decorators:[{type:e.Optional}]},{type:n.StyleUtils},{type:n.MediaMarshaller}]},i.propDecorators={inline:[{type:e.Input,args:["gdInline"]}]},i}(n.BaseDirective2),R=new Map,C=new Map,b=["gdAlignColumns","gdAlignColumns.xs","gdAlignColumns.sm","gdAlignColumns.md","gdAlignColumns.lg","gdAlignColumns.xl","gdAlignColumns.lt-sm","gdAlignColumns.lt-md","gdAlignColumns.lt-lg","gdAlignColumns.lt-xl","gdAlignColumns.gt-xs","gdAlignColumns.gt-sm","gdAlignColumns.gt-md","gdAlignColumns.gt-lg"],x=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=b,e}return r(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdAlignColumns],\n [gdAlignColumns.xs], [gdAlignColumns.sm], [gdAlignColumns.md],\n [gdAlignColumns.lg], [gdAlignColumns.xl], [gdAlignColumns.lt-sm],\n [gdAlignColumns.lt-md], [gdAlignColumns.lt-lg], [gdAlignColumns.lt-xl],\n [gdAlignColumns.gt-xs], [gdAlignColumns.gt-sm], [gdAlignColumns.gt-md],\n [gdAlignColumns.gt-lg]\n",inputs:b}]}],n}(w),I="start",v="stretch",G=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.buildStyles=function(t,e){return s(t||I+" "+v,e.inline)},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(n.StyleBuilder),j=function(t){function i(e,n,l,r){var i=t.call(this,e,n,l,r)||this;return i.elementRef=e,i.styleBuilder=n,i.styler=l,i.marshal=r,i.DIRECTIVE_KEY="grid-align-rows",i._inline=!1,i.init(),i}return r(i,t),Object.defineProperty(i.prototype,"inline",{get:function(){return this._inline},set:function(t){this._inline=l.coerceBooleanProperty(t)},enumerable:!0,configurable:!0}),i.prototype.updateWithValue=function(t){this.styleCache=this.inline?E:D,this.addStyles(t,{inline:this.inline})},i.ctorParameters=function(){return[{type:e.ElementRef},{type:G,decorators:[{type:e.Optional}]},{type:n.StyleUtils},{type:n.MediaMarshaller}]},i.propDecorators={inline:[{type:e.Input,args:["gdInline"]}]},i}(n.BaseDirective2),D=new Map,E=new Map,M=["gdAlignRows","gdAlignRows.xs","gdAlignRows.sm","gdAlignRows.md","gdAlignRows.lg","gdAlignRows.xl","gdAlignRows.lt-sm","gdAlignRows.lt-md","gdAlignRows.lt-lg","gdAlignRows.lt-xl","gdAlignRows.gt-xs","gdAlignRows.gt-sm","gdAlignRows.gt-md","gdAlignRows.gt-lg"],_=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=M,e}return r(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdAlignRows],\n [gdAlignRows.xs], [gdAlignRows.sm], [gdAlignRows.md],\n [gdAlignRows.lg], [gdAlignRows.xl], [gdAlignRows.lt-sm],\n [gdAlignRows.lt-md], [gdAlignRows.lt-lg], [gdAlignRows.lt-xl],\n [gdAlignRows.gt-xs], [gdAlignRows.gt-sm], [gdAlignRows.gt-md],\n [gdAlignRows.gt-lg]\n",inputs:M}]}],n}(j),B=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.buildStyles=function(t){return{"grid-area":t||"auto"}},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(n.StyleBuilder),S=function(t){function l(e,n,l,r){var i=t.call(this,e,l,n,r)||this;return i.elRef=e,i.styleUtils=n,i.styleBuilder=l,i.marshal=r,i.DIRECTIVE_KEY="grid-area",i.styleCache=k,i.init(),i}return r(l,t),l.ctorParameters=function(){return[{type:e.ElementRef},{type:n.StyleUtils},{type:B,decorators:[{type:e.Optional}]},{type:n.MediaMarshaller}]},l}(n.BaseDirective2),k=new Map,P=["gdArea","gdArea.xs","gdArea.sm","gdArea.md","gdArea.lg","gdArea.xl","gdArea.lt-sm","gdArea.lt-md","gdArea.lt-lg","gdArea.lt-xl","gdArea.gt-xs","gdArea.gt-sm","gdArea.gt-md","gdArea.gt-lg"],O=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=P,e}return r(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdArea],\n [gdArea.xs], [gdArea.sm], [gdArea.md], [gdArea.lg], [gdArea.xl],\n [gdArea.lt-sm], [gdArea.lt-md], [gdArea.lt-lg], [gdArea.lt-xl],\n [gdArea.gt-xs], [gdArea.gt-sm], [gdArea.gt-md], [gdArea.gt-lg]\n",inputs:P}]}],n}(S),V=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.buildStyles=function(t,e){var n=(t||"none").split("|").map(function(t){return'"'+t.trim()+'"'});return{display:e.inline?"inline-grid":"grid","grid-template-areas":n.join(" ")}},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(n.StyleBuilder),U=function(t){function i(e,n,l,r){var i=t.call(this,e,l,n,r)||this;return i.elRef=e,i.styleUtils=n,i.styleBuilder=l,i.marshal=r,i.DIRECTIVE_KEY="grid-areas",i._inline=!1,i.init(),i}return r(i,t),Object.defineProperty(i.prototype,"inline",{get:function(){return this._inline},set:function(t){this._inline=l.coerceBooleanProperty(t)},enumerable:!0,configurable:!0}),i.prototype.updateWithValue=function(t){this.styleCache=this.inline?T:K,this.addStyles(t,{inline:this.inline})},i.ctorParameters=function(){return[{type:e.ElementRef},{type:n.StyleUtils},{type:V,decorators:[{type:e.Optional}]},{type:n.MediaMarshaller}]},i.propDecorators={inline:[{type:e.Input,args:["gdInline"]}]},i}(n.BaseDirective2),K=new Map,T=new Map,Y=["gdAreas","gdAreas.xs","gdAreas.sm","gdAreas.md","gdAreas.lg","gdAreas.xl","gdAreas.lt-sm","gdAreas.lt-md","gdAreas.lt-lg","gdAreas.lt-xl","gdAreas.gt-xs","gdAreas.gt-sm","gdAreas.gt-md","gdAreas.gt-lg"],W=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=Y,e}return r(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdAreas],\n [gdAreas.xs], [gdAreas.sm], [gdAreas.md], [gdAreas.lg], [gdAreas.xl],\n [gdAreas.lt-sm], [gdAreas.lt-md], [gdAreas.lt-lg], [gdAreas.lt-xl],\n [gdAreas.gt-xs], [gdAreas.gt-sm], [gdAreas.gt-md], [gdAreas.gt-lg]\n",inputs:Y}]}],n}(U),q=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.buildStyles=function(t,e){var n=(t||"initial").split(" "),l=n[0],r=n[1];return"column"!==l&&"row"!==l&&"dense"!==l&&(l="row"),r="dense"===r&&"dense"!==l?" dense":"",{display:e.inline?"inline-grid":"grid","grid-auto-flow":l+r}},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(n.StyleBuilder),L=function(t){function i(e,n,l,r){var i=t.call(this,e,n,l,r)||this;return i.elementRef=e,i.styleBuilder=n,i.styler=l,i.marshal=r,i._inline=!1,i.DIRECTIVE_KEY="grid-auto",i.init(),i}return r(i,t),Object.defineProperty(i.prototype,"inline",{get:function(){return this._inline},set:function(t){this._inline=l.coerceBooleanProperty(t)},enumerable:!0,configurable:!0}),i.prototype.updateWithValue=function(t){this.styleCache=this.inline?N:z,this.addStyles(t,{inline:this.inline})},i.ctorParameters=function(){return[{type:e.ElementRef},{type:q,decorators:[{type:e.Optional}]},{type:n.StyleUtils},{type:n.MediaMarshaller}]},i.propDecorators={inline:[{type:e.Input,args:["gdInline"]}]},i}(n.BaseDirective2),z=new Map,N=new Map,F=["gdAuto","gdAuto.xs","gdAuto.sm","gdAuto.md","gdAuto.lg","gdAuto.xl","gdAuto.lt-sm","gdAuto.lt-md","gdAuto.lt-lg","gdAuto.lt-xl","gdAuto.gt-xs","gdAuto.gt-sm","gdAuto.gt-md","gdAuto.gt-lg"],H=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=F,e}return r(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdAuto],\n [gdAuto.xs], [gdAuto.sm], [gdAuto.md], [gdAuto.lg], [gdAuto.xl],\n [gdAuto.lt-sm], [gdAuto.lt-md], [gdAuto.lt-lg], [gdAuto.lt-xl],\n [gdAuto.gt-xs], [gdAuto.gt-sm], [gdAuto.gt-md], [gdAuto.gt-lg]\n",inputs:F}]}],n}(L),J=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.buildStyles=function(t){return{"grid-column":t||"auto"}},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(n.StyleBuilder),Q=function(t){function l(e,n,l,r){var i=t.call(this,e,n,l,r)||this;return i.elementRef=e,i.styleBuilder=n,i.styler=l,i.marshal=r,i.DIRECTIVE_KEY="grid-column",i.styleCache=X,i.init(),i}return r(l,t),l.ctorParameters=function(){return[{type:e.ElementRef},{type:J,decorators:[{type:e.Optional}]},{type:n.StyleUtils},{type:n.MediaMarshaller}]},l}(n.BaseDirective2),X=new Map,Z=["gdColumn","gdColumn.xs","gdColumn.sm","gdColumn.md","gdColumn.lg","gdColumn.xl","gdColumn.lt-sm","gdColumn.lt-md","gdColumn.lt-lg","gdColumn.lt-xl","gdColumn.gt-xs","gdColumn.gt-sm","gdColumn.gt-md","gdColumn.gt-lg"],$=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=Z,e}return r(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdColumn],\n [gdColumn.xs], [gdColumn.sm], [gdColumn.md], [gdColumn.lg], [gdColumn.xl],\n [gdColumn.lt-sm], [gdColumn.lt-md], [gdColumn.lt-lg], [gdColumn.lt-xl],\n [gdColumn.gt-xs], [gdColumn.gt-sm], [gdColumn.gt-md], [gdColumn.gt-lg]\n",inputs:Z}]}],n}(Q),tt=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.buildStyles=function(t,e){t=t||"none";var n=!1;t.endsWith("!")&&(t=t.substring(0,t.indexOf("!")),n=!0);var l={display:e.inline?"inline-grid":"grid","grid-auto-columns":"","grid-template-columns":""};return l[n?"grid-auto-columns":"grid-template-columns"]=t,l},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(n.StyleBuilder),et=function(t){function i(e,n,l,r){var i=t.call(this,e,n,l,r)||this;return i.elementRef=e,i.styleBuilder=n,i.styler=l,i.marshal=r,i.DIRECTIVE_KEY="grid-columns",i._inline=!1,i.init(),i}return r(i,t),Object.defineProperty(i.prototype,"inline",{get:function(){return this._inline},set:function(t){this._inline=l.coerceBooleanProperty(t)},enumerable:!0,configurable:!0}),i.prototype.updateWithValue=function(t){this.styleCache=this.inline?lt:nt,this.addStyles(t,{inline:this.inline})},i.ctorParameters=function(){return[{type:e.ElementRef},{type:tt,decorators:[{type:e.Optional}]},{type:n.StyleUtils},{type:n.MediaMarshaller}]},i.propDecorators={inline:[{type:e.Input,args:["gdInline"]}]},i}(n.BaseDirective2),nt=new Map,lt=new Map,rt=["gdColumns","gdColumns.xs","gdColumns.sm","gdColumns.md","gdColumns.lg","gdColumns.xl","gdColumns.lt-sm","gdColumns.lt-md","gdColumns.lt-lg","gdColumns.lt-xl","gdColumns.gt-xs","gdColumns.gt-sm","gdColumns.gt-md","gdColumns.gt-lg"],it=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=rt,e}return r(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdColumns],\n [gdColumns.xs], [gdColumns.sm], [gdColumns.md], [gdColumns.lg], [gdColumns.xl],\n [gdColumns.lt-sm], [gdColumns.lt-md], [gdColumns.lt-lg], [gdColumns.lt-xl],\n [gdColumns.gt-xs], [gdColumns.gt-sm], [gdColumns.gt-md], [gdColumns.gt-lg]\n",inputs:rt}]}],n}(et),ot=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.buildStyles=function(t,e){return{display:e.inline?"inline-grid":"grid","grid-gap":t||"0"}},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(n.StyleBuilder),st=function(t){function i(e,n,l,r){var i=t.call(this,e,l,n,r)||this;return i.elRef=e,i.styleUtils=n,i.styleBuilder=l,i.marshal=r,i.DIRECTIVE_KEY="grid-gap",i._inline=!1,i.init(),i}return r(i,t),Object.defineProperty(i.prototype,"inline",{get:function(){return this._inline},set:function(t){this._inline=l.coerceBooleanProperty(t)},enumerable:!0,configurable:!0}),i.prototype.updateWithValue=function(t){this.styleCache=this.inline?dt:gt,this.addStyles(t,{inline:this.inline})},i.ctorParameters=function(){return[{type:e.ElementRef},{type:n.StyleUtils},{type:ot,decorators:[{type:e.Optional}]},{type:n.MediaMarshaller}]},i.propDecorators={inline:[{type:e.Input,args:["gdInline"]}]},i}(n.BaseDirective2),gt=new Map,dt=new Map,at=["gdGap","gdGap.xs","gdGap.sm","gdGap.md","gdGap.lg","gdGap.xl","gdGap.lt-sm","gdGap.lt-md","gdGap.lt-lg","gdGap.lt-xl","gdGap.gt-xs","gdGap.gt-sm","gdGap.gt-md","gdGap.gt-lg"],ut=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=at,e}return r(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdGap],\n [gdGap.xs], [gdGap.sm], [gdGap.md], [gdGap.lg], [gdGap.xl],\n [gdGap.lt-sm], [gdGap.lt-md], [gdGap.lt-lg], [gdGap.lt-xl],\n [gdGap.gt-xs], [gdGap.gt-sm], [gdGap.gt-md], [gdGap.gt-lg]\n",inputs:at}]}],n}(st),ct=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.buildStyles=function(t){return{"grid-row":t||"auto"}},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(n.StyleBuilder),pt=function(t){function l(e,n,l,r){var i=t.call(this,e,n,l,r)||this;return i.elementRef=e,i.styleBuilder=n,i.styler=l,i.marshal=r,i.DIRECTIVE_KEY="grid-row",i.styleCache=mt,i.init(),i}return r(l,t),l.ctorParameters=function(){return[{type:e.ElementRef},{type:ct,decorators:[{type:e.Optional}]},{type:n.StyleUtils},{type:n.MediaMarshaller}]},l}(n.BaseDirective2),mt=new Map,yt=["gdRow","gdRow.xs","gdRow.sm","gdRow.md","gdRow.lg","gdRow.xl","gdRow.lt-sm","gdRow.lt-md","gdRow.lt-lg","gdRow.lt-xl","gdRow.gt-xs","gdRow.gt-sm","gdRow.gt-md","gdRow.gt-lg"],ft=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=yt,e}return r(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdRow],\n [gdRow.xs], [gdRow.sm], [gdRow.md], [gdRow.lg], [gdRow.xl],\n [gdRow.lt-sm], [gdRow.lt-md], [gdRow.lt-lg], [gdRow.lt-xl],\n [gdRow.gt-xs], [gdRow.gt-sm], [gdRow.gt-md], [gdRow.gt-lg]\n",inputs:yt}]}],n}(pt),ht=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.buildStyles=function(t,e){t=t||"none";var n=!1;t.endsWith("!")&&(t=t.substring(0,t.indexOf("!")),n=!0);var l={display:e.inline?"inline-grid":"grid","grid-auto-rows":"","grid-template-rows":""};return l[n?"grid-auto-rows":"grid-template-rows"]=t,l},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(n.StyleBuilder),At=function(t){function i(e,n,l,r){var i=t.call(this,e,n,l,r)||this;return i.elementRef=e,i.styleBuilder=n,i.styler=l,i.marshal=r,i.DIRECTIVE_KEY="grid-rows",i._inline=!1,i.init(),i}return r(i,t),Object.defineProperty(i.prototype,"inline",{get:function(){return this._inline},set:function(t){this._inline=l.coerceBooleanProperty(t)},enumerable:!0,configurable:!0}),i.prototype.updateWithValue=function(t){this.styleCache=this.inline?Rt:wt,this.addStyles(t,{inline:this.inline})},i.ctorParameters=function(){return[{type:e.ElementRef},{type:ht,decorators:[{type:e.Optional}]},{type:n.StyleUtils},{type:n.MediaMarshaller}]},i.propDecorators={inline:[{type:e.Input,args:["gdInline"]}]},i}(n.BaseDirective2),wt=new Map,Rt=new Map,Ct=["gdRows","gdRows.xs","gdRows.sm","gdRows.md","gdRows.lg","gdRows.xl","gdRows.lt-sm","gdRows.lt-md","gdRows.lt-lg","gdRows.lt-xl","gdRows.gt-xs","gdRows.gt-sm","gdRows.gt-md","gdRows.gt-lg"],bt=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=Ct,e}return r(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdRows],\n [gdRows.xs], [gdRows.sm], [gdRows.md], [gdRows.lg], [gdRows.xl],\n [gdRows.lt-sm], [gdRows.lt-md], [gdRows.lt-lg], [gdRows.lt-xl],\n [gdRows.gt-xs], [gdRows.gt-sm], [gdRows.gt-md], [gdRows.gt-lg]\n",inputs:Ct}]}],n}(At),xt=[y,x,_,O,W,H,$,it,ut,ft,bt],It=function(){function t(){}return t.decorators=[{type:e.NgModule,args:[{imports:[n.CoreModule],declarations:xt.slice(),exports:xt.slice()}]}],t}();t.GridModule=It,t.ɵf2=x,t.ɵe2=w,t.ɵd2=A,t.ɵi2=_,t.ɵh2=j,t.ɵg2=G,t.ɵl2=O,t.ɵk2=S,t.ɵj2=B,t.ɵo2=W,t.ɵn2=U,t.ɵm2=V,t.ɵr2=H,t.ɵq2=L,t.ɵp2=q,t.ɵu2=$,t.ɵt2=Q,t.ɵs2=J,t.ɵx2=it,t.ɵw2=et,t.ɵv2=tt,t.ɵba2=ut,t.ɵz2=st,t.ɵy2=ot,t.ɵc2=y,t.ɵb2=c,t.ɵa2=u,t.ɵbd2=ft,t.ɵbc2=pt,t.ɵbb2=ct,t.ɵbg2=bt,t.ɵbf2=At,t.ɵbe2=ht,Object.defineProperty(t,"__esModule",{value:!0})}); //# sourceMappingURL=flex-layout-grid.umd.min.js.map diff --git a/bundles/flex-layout-grid.umd.min.js.map b/bundles/flex-layout-grid.umd.min.js.map index 9bdc8be11..058c98c35 100644 --- a/bundles/flex-layout-grid.umd.min.js.map +++ b/bundles/flex-layout-grid.umd.min.js.map @@ -1 +1 @@ -{"version":3,"file":"flex-layout-grid.umd.min.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/lib/grid/grid-align/grid-align.ts","../../src/lib/grid/align-columns/align-columns.ts","../../src/lib/grid/align-rows/align-rows.ts","../../src/lib/grid/area/area.ts","../../src/lib/grid/areas/areas.ts","../../src/lib/grid/auto/auto.ts","../../src/lib/grid/column/column.ts","../../src/lib/grid/columns/columns.ts","../../src/lib/grid/gap/gap.ts","../../src/lib/grid/row/row.ts","../../src/lib/grid/rows/rows.ts","../../src/lib/grid/module.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\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 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) : new P(function (resolve) { resolve(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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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 __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\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)) result[k] = mod[k];\r\n result.default = 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","/**\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\nconst ROW_DEFAULT = 'stretch';\nconst COL_DEFAULT = 'stretch';\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return buildCss(input || ROW_DEFAULT);\n }\n}\n\nexport class GridAlignDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = alignCache;\n}\n\nconst alignCache: Map = new Map();\n\nconst inputs = [\n 'gdGridAlign',\n 'gdGridAlign.xs', 'gdGridAlign.sm', 'gdGridAlign.md', 'gdGridAlign.lg', 'gdGridAlign.xl',\n 'gdGridAlign.lt-sm', 'gdGridAlign.lt-md', 'gdGridAlign.lt-lg', 'gdGridAlign.lt-xl',\n 'gdGridAlign.gt-xs', 'gdGridAlign.gt-sm', 'gdGridAlign.gt-md', 'gdGridAlign.gt-lg'\n];\n\nconst selector = `\n [gdGridAlign],\n [gdGridAlign.xs], [gdGridAlign.sm], [gdGridAlign.md], [gdGridAlign.lg],[gdGridAlign.xl],\n [gdGridAlign.lt-sm], [gdGridAlign.lt-md], [gdGridAlign.lt-lg], [gdGridAlign.lt-xl],\n [gdGridAlign.gt-xs], [gdGridAlign.gt-sm], [gdGridAlign.gt-md], [gdGridAlign.gt-lg]\n`;\n\n/**\n * 'align' CSS Grid styling directive for grid children\n * Defines positioning of child elements along row and column axis in a grid container\n * Optional values: {row-axis} values or {row-axis column-axis} value pairs\n *\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-justify-self\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-align-self\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignDirective extends GridAlignDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string = '') {\n const css: {[key: string]: string} = {}, [rowAxis, columnAxis] = align.split(' ');\n\n // Row axis\n switch (rowAxis) {\n case 'end':\n css['justify-self'] = 'end';\n break;\n case 'center':\n css['justify-self'] = 'center';\n break;\n case 'stretch':\n css['justify-self'] = 'stretch';\n break;\n case 'start':\n css['justify-self'] = 'start';\n break;\n default:\n css['justify-self'] = ROW_DEFAULT; // default row axis\n break;\n }\n\n // Column axis\n switch (columnAxis) {\n case 'end':\n css['align-self'] = 'end';\n break;\n case 'center':\n css['align-self'] = 'center';\n break;\n case 'stretch':\n css['align-self'] = 'stretch';\n break;\n case 'start':\n css['align-self'] = 'start';\n break;\n default:\n css['align-self'] = COL_DEFAULT; // default column axis\n break;\n }\n\n return css;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_MAIN = 'start';\nconst DEFAULT_CROSS = 'stretch';\n\nexport interface GridAlignColumnsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignColumnsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAlignColumnsParent) {\n return buildCss(input || `${DEFAULT_MAIN} ${DEFAULT_CROSS}`, parent.inline);\n }\n}\n\nexport class GridAlignColumnsDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align-columns';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignColumnsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? alignColumnsInlineCache : alignColumnsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst alignColumnsCache: Map = new Map();\nconst alignColumnsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAlignColumns',\n 'gdAlignColumns.xs', 'gdAlignColumns.sm', 'gdAlignColumns.md',\n 'gdAlignColumns.lg', 'gdAlignColumns.xl', 'gdAlignColumns.lt-sm',\n 'gdAlignColumns.lt-md', 'gdAlignColumns.lt-lg', 'gdAlignColumns.lt-xl',\n 'gdAlignColumns.gt-xs', 'gdAlignColumns.gt-sm', 'gdAlignColumns.gt-md',\n 'gdAlignColumns.gt-lg'\n];\nconst selector = `\n [gdAlignColumns],\n [gdAlignColumns.xs], [gdAlignColumns.sm], [gdAlignColumns.md],\n [gdAlignColumns.lg], [gdAlignColumns.xl], [gdAlignColumns.lt-sm],\n [gdAlignColumns.lt-md], [gdAlignColumns.lt-lg], [gdAlignColumns.lt-xl],\n [gdAlignColumns.gt-xs], [gdAlignColumns.gt-sm], [gdAlignColumns.gt-md],\n [gdAlignColumns.gt-lg]\n`;\n\n/**\n * 'column alignment' CSS Grid styling directive\n * Configures the alignment in the column direction\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-19\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-21\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignColumnsDirective extends GridAlignColumnsDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string, inline: boolean): StyleDefinition {\n const css: {[key: string]: string} = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['align-content'] = 'center';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['align-content'] = 'space-evenly';\n break;\n case 'end':\n css['align-content'] = 'end';\n break;\n case 'start':\n css['align-content'] = 'start';\n break;\n case 'stretch':\n css['align-content'] = 'stretch';\n break;\n default:\n css['align-content'] = DEFAULT_MAIN; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n css['align-items'] = 'start';\n break;\n case 'center':\n css['align-items'] = 'center';\n break;\n case 'end':\n css['align-items'] = 'end';\n break;\n case 'stretch':\n css['align-items'] = 'stretch';\n break;\n default : // 'stretch'\n css['align-items'] = DEFAULT_CROSS; // default cross axis\n break;\n }\n\n css['display'] = inline ? 'inline-grid' : 'grid';\n\n return css;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_MAIN = 'start';\nconst DEFAULT_CROSS = 'stretch';\n\nexport interface GridAlignRowsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignRowsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAlignRowsParent) {\n return buildCss(input || `${DEFAULT_MAIN} ${DEFAULT_CROSS}`, parent.inline);\n }\n}\n\nexport class GridAlignRowsDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align-rows';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignRowsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? alignRowsInlineCache : alignRowsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst alignRowsCache: Map = new Map();\nconst alignRowsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAlignRows',\n 'gdAlignRows.xs', 'gdAlignRows.sm', 'gdAlignRows.md',\n 'gdAlignRows.lg', 'gdAlignRows.xl', 'gdAlignRows.lt-sm',\n 'gdAlignRows.lt-md', 'gdAlignRows.lt-lg', 'gdAlignRows.lt-xl',\n 'gdAlignRows.gt-xs', 'gdAlignRows.gt-sm', 'gdAlignRows.gt-md',\n 'gdAlignRows.gt-lg'\n];\nconst selector = `\n [gdAlignRows],\n [gdAlignRows.xs], [gdAlignRows.sm], [gdAlignRows.md],\n [gdAlignRows.lg], [gdAlignRows.xl], [gdAlignRows.lt-sm],\n [gdAlignRows.lt-md], [gdAlignRows.lt-lg], [gdAlignRows.lt-xl],\n [gdAlignRows.gt-xs], [gdAlignRows.gt-sm], [gdAlignRows.gt-md],\n [gdAlignRows.gt-lg]\n`;\n\n/**\n * 'row alignment' CSS Grid styling directive\n * Configures the alignment in the row direction\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-18\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-20\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignRowsDirective extends GridAlignRowsDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string, inline: boolean): StyleDefinition {\n const css: {[key: string]: string} = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n case 'space-around':\n case 'space-between':\n case 'space-evenly':\n case 'end':\n case 'start':\n case 'stretch':\n css['justify-content'] = mainAxis;\n break;\n default:\n css['justify-content'] = DEFAULT_MAIN; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'center':\n case 'end':\n case 'stretch':\n css['justify-items'] = crossAxis;\n break;\n default : // 'stretch'\n css['justify-items'] = DEFAULT_CROSS; // default cross axis\n break;\n }\n\n css['display'] = inline ? 'inline-grid' : 'grid';\n\n return css;\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridAreaStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-area': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridAreaDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-area';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAreaStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = gridAreaCache;\n}\n\nconst gridAreaCache: Map = new Map();\n\nconst inputs = [\n 'gdArea',\n 'gdArea.xs', 'gdArea.sm', 'gdArea.md', 'gdArea.lg', 'gdArea.xl',\n 'gdArea.lt-sm', 'gdArea.lt-md', 'gdArea.lt-lg', 'gdArea.lt-xl',\n 'gdArea.gt-xs', 'gdArea.gt-sm', 'gdArea.gt-md', 'gdArea.gt-lg'\n];\nconst selector = `\n [gdArea],\n [gdArea.xs], [gdArea.sm], [gdArea.md], [gdArea.lg], [gdArea.xl],\n [gdArea.lt-sm], [gdArea.lt-md], [gdArea.lt-lg], [gdArea.lt-xl],\n [gdArea.gt-xs], [gdArea.gt-sm], [gdArea.gt-md], [gdArea.gt-lg]\n`;\n\n/**\n * 'grid-area' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-27\n */\n@Directive({selector, inputs})\nexport class DefaultGridAreaDirective extends GridAreaDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n MediaMarshaller,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst DELIMETER = '|';\n\nexport interface GridAreasParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAreasStyleBuiler extends StyleBuilder {\n buildStyles(input: string, parent: GridAreasParent) {\n const areas = (input || DEFAULT_VALUE).split(DELIMETER).map(v => `\"${v.trim()}\"`);\n\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-template-areas': areas.join(' ')\n };\n }\n}\n\nexport class GridAreasDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-areas';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAreasStyleBuiler,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? areasInlineCache : areasCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst areasCache: Map = new Map();\nconst areasInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAreas',\n 'gdAreas.xs', 'gdAreas.sm', 'gdAreas.md', 'gdAreas.lg', 'gdAreas.xl',\n 'gdAreas.lt-sm', 'gdAreas.lt-md', 'gdAreas.lt-lg', 'gdAreas.lt-xl',\n 'gdAreas.gt-xs', 'gdAreas.gt-sm', 'gdAreas.gt-md', 'gdAreas.gt-lg'\n];\n\nconst selector = `\n [gdAreas],\n [gdAreas.xs], [gdAreas.sm], [gdAreas.md], [gdAreas.lg], [gdAreas.xl],\n [gdAreas.lt-sm], [gdAreas.lt-md], [gdAreas.lt-lg], [gdAreas.lt-xl],\n [gdAreas.gt-xs], [gdAreas.gt-sm], [gdAreas.gt-md], [gdAreas.gt-lg]\n`;\n\n/**\n * 'grid-template-areas' CSS Grid styling directive\n * Configures the names of elements within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-14\n */\n@Directive({selector, inputs})\nexport class DefaultGridAreasDirective extends GridAreasDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n MediaMarshaller,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'initial';\n\nexport interface GridAutoParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAutoStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAutoParent) {\n let [direction, dense] = (input || DEFAULT_VALUE).split(' ');\n if (direction !== 'column' && direction !== 'row' && direction !== 'dense') {\n direction = 'row';\n }\n\n dense = (dense === 'dense' && direction !== 'dense') ? ' dense' : '';\n\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-flow': direction + dense\n };\n }\n}\n\nexport class GridAutoDirective extends BaseDirective2 {\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n protected DIRECTIVE_KEY = 'grid-auto';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAutoStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? autoInlineCache : autoCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst autoCache: Map = new Map();\nconst autoInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAuto',\n 'gdAuto.xs', 'gdAuto.sm', 'gdAuto.md', 'gdAuto.lg', 'gdAuto.xl',\n 'gdAuto.lt-sm', 'gdAuto.lt-md', 'gdAuto.lt-lg', 'gdAuto.lt-xl',\n 'gdAuto.gt-xs', 'gdAuto.gt-sm', 'gdAuto.gt-md', 'gdAuto.gt-lg'\n];\nconst selector = `\n [gdAuto],\n [gdAuto.xs], [gdAuto.sm], [gdAuto.md], [gdAuto.lg], [gdAuto.xl],\n [gdAuto.lt-sm], [gdAuto.lt-md], [gdAuto.lt-lg], [gdAuto.lt-xl],\n [gdAuto.gt-xs], [gdAuto.gt-sm], [gdAuto.gt-md], [gdAuto.gt-lg]\n`;\n\n/**\n * 'grid-auto-flow' CSS Grid styling directive\n * Configures the auto placement algorithm for the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-23\n */\n@Directive({selector, inputs})\nexport class DefaultGridAutoDirective extends GridAutoDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridColumnStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-column': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridColumnDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-column';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridColumnStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = columnCache;\n}\n\nconst columnCache: Map = new Map();\n\nconst inputs = [\n 'gdColumn',\n 'gdColumn.xs', 'gdColumn.sm', 'gdColumn.md', 'gdColumn.lg', 'gdColumn.xl',\n 'gdColumn.lt-sm', 'gdColumn.lt-md', 'gdColumn.lt-lg', 'gdColumn.lt-xl',\n 'gdColumn.gt-xs', 'gdColumn.gt-sm', 'gdColumn.gt-md', 'gdColumn.gt-lg'\n];\n\nconst selector = `\n [gdColumn],\n [gdColumn.xs], [gdColumn.sm], [gdColumn.md], [gdColumn.lg], [gdColumn.xl],\n [gdColumn.lt-sm], [gdColumn.lt-md], [gdColumn.lt-lg], [gdColumn.lt-xl],\n [gdColumn.gt-xs], [gdColumn.gt-sm], [gdColumn.gt-md], [gdColumn.gt-lg]\n`;\n\n/**\n * 'grid-column' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26\n */\n@Directive({selector, inputs})\nexport class DefaultGridColumnDirective extends GridColumnDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst AUTO_SPECIFIER = '!';\n\nexport interface GridColumnsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridColumnsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridColumnsParent) {\n input = input || DEFAULT_VALUE;\n let auto = false;\n if (input.endsWith(AUTO_SPECIFIER)) {\n input = input.substring(0, input.indexOf(AUTO_SPECIFIER));\n auto = true;\n }\n\n const css = {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-columns': '',\n 'grid-template-columns': '',\n };\n const key = (auto ? 'grid-auto-columns' : 'grid-template-columns');\n css[key] = input;\n\n return css;\n }\n}\n\nexport class GridColumnsDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-columns';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridColumnsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? columnsInlineCache : columnsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst columnsCache: Map = new Map();\nconst columnsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdColumns',\n 'gdColumns.xs', 'gdColumns.sm', 'gdColumns.md', 'gdColumns.lg', 'gdColumns.xl',\n 'gdColumns.lt-sm', 'gdColumns.lt-md', 'gdColumns.lt-lg', 'gdColumns.lt-xl',\n 'gdColumns.gt-xs', 'gdColumns.gt-sm', 'gdColumns.gt-md', 'gdColumns.gt-lg'\n];\n\nconst selector = `\n [gdColumns],\n [gdColumns.xs], [gdColumns.sm], [gdColumns.md], [gdColumns.lg], [gdColumns.xl],\n [gdColumns.lt-sm], [gdColumns.lt-md], [gdColumns.lt-lg], [gdColumns.lt-xl],\n [gdColumns.gt-xs], [gdColumns.gt-sm], [gdColumns.gt-md], [gdColumns.gt-lg]\n`;\n\n/**\n * 'grid-template-columns' CSS Grid styling directive\n * Configures the sizing for the columns in the grid\n * Syntax: [auto]\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13\n */\n@Directive({selector, inputs})\nexport class DefaultGridColumnsDirective extends GridColumnsDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = '0';\n\nexport interface GridGapParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridGapStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridGapParent) {\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-gap': input || DEFAULT_VALUE\n };\n }\n}\n\nexport class GridGapDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-gap';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridGapStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? gapInlineCache : gapCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst gapCache: Map = new Map();\nconst gapInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdGap',\n 'gdGap.xs', 'gdGap.sm', 'gdGap.md', 'gdGap.lg', 'gdGap.xl',\n 'gdGap.lt-sm', 'gdGap.lt-md', 'gdGap.lt-lg', 'gdGap.lt-xl',\n 'gdGap.gt-xs', 'gdGap.gt-sm', 'gdGap.gt-md', 'gdGap.gt-lg'\n];\n\nconst selector = `\n [gdGap],\n [gdGap.xs], [gdGap.sm], [gdGap.md], [gdGap.lg], [gdGap.xl],\n [gdGap.lt-sm], [gdGap.lt-md], [gdGap.lt-lg], [gdGap.lt-xl],\n [gdGap.gt-xs], [gdGap.gt-sm], [gdGap.gt-md], [gdGap.gt-lg]\n`;\n\n/**\n * 'grid-gap' CSS Grid styling directive\n * Configures the gap between items in the grid\n * Syntax: []\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-17\n */\n@Directive({selector, inputs})\nexport class DefaultGridGapDirective extends GridGapDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridRowStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-row': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridRowDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-row';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridRowStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = rowCache;\n}\n\nconst rowCache: Map = new Map();\n\nconst inputs = [\n 'gdRow',\n 'gdRow.xs', 'gdRow.sm', 'gdRow.md', 'gdRow.lg', 'gdRow.xl',\n 'gdRow.lt-sm', 'gdRow.lt-md', 'gdRow.lt-lg', 'gdRow.lt-xl',\n 'gdRow.gt-xs', 'gdRow.gt-sm', 'gdRow.gt-md', 'gdRow.gt-lg'\n];\n\nconst selector = `\n [gdRow],\n [gdRow.xs], [gdRow.sm], [gdRow.md], [gdRow.lg], [gdRow.xl],\n [gdRow.lt-sm], [gdRow.lt-md], [gdRow.lt-lg], [gdRow.lt-xl],\n [gdRow.gt-xs], [gdRow.gt-sm], [gdRow.gt-md], [gdRow.gt-lg]\n`;\n\n/**\n * 'grid-row' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26\n */\n@Directive({selector, inputs})\nexport class DefaultGridRowDirective extends GridRowDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst AUTO_SPECIFIER = '!';\n\nexport interface GridRowsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridRowsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridRowsParent) {\n input = input || DEFAULT_VALUE;\n let auto = false;\n if (input.endsWith(AUTO_SPECIFIER)) {\n input = input.substring(0, input.indexOf(AUTO_SPECIFIER));\n auto = true;\n }\n\n const css = {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-rows': '',\n 'grid-template-rows': '',\n };\n const key = (auto ? 'grid-auto-rows' : 'grid-template-rows');\n css[key] = input;\n\n return css;\n }\n}\n\nexport class GridRowsDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-rows';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridRowsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? rowsInlineCache : rowsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst rowsCache: Map = new Map();\nconst rowsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdRows',\n 'gdRows.xs', 'gdRows.sm', 'gdRows.md', 'gdRows.lg', 'gdRows.xl',\n 'gdRows.lt-sm', 'gdRows.lt-md', 'gdRows.lt-lg', 'gdRows.lt-xl',\n 'gdRows.gt-xs', 'gdRows.gt-sm', 'gdRows.gt-md', 'gdRows.gt-lg'\n];\n\nconst selector = `\n [gdRows],\n [gdRows.xs], [gdRows.sm], [gdRows.md], [gdRows.lg], [gdRows.xl],\n [gdRows.lt-sm], [gdRows.lt-md], [gdRows.lt-lg], [gdRows.lt-xl],\n [gdRows.gt-xs], [gdRows.gt-sm], [gdRows.gt-md], [gdRows.gt-lg]\n`;\n\n/**\n * 'grid-template-rows' CSS Grid styling directive\n * Configures the sizing for the rows in the grid\n * Syntax: [auto]\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13\n */\n@Directive({selector, inputs})\nexport class DefaultGridRowsDirective extends GridRowsDirective {\n protected inputs = inputs;\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';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultGridAlignDirective} from './grid-align/grid-align';\nimport {DefaultGridAlignColumnsDirective} from './align-columns/align-columns';\nimport {DefaultGridAlignRowsDirective} from './align-rows/align-rows';\nimport {DefaultGridAreaDirective} from './area/area';\nimport {DefaultGridAreasDirective} from './areas/areas';\nimport {DefaultGridAutoDirective} from './auto/auto';\nimport {DefaultGridColumnDirective} from './column/column';\nimport {DefaultGridColumnsDirective} from './columns/columns';\nimport {DefaultGridGapDirective} from './gap/gap';\nimport {DefaultGridRowDirective} from './row/row';\nimport {DefaultGridRowsDirective} from './rows/rows';\n\n\nconst ALL_DIRECTIVES = [\n DefaultGridAlignDirective,\n DefaultGridAlignColumnsDirective,\n DefaultGridAlignRowsDirective,\n DefaultGridAreaDirective,\n DefaultGridAreasDirective,\n DefaultGridAutoDirective,\n DefaultGridColumnDirective,\n DefaultGridColumnsDirective,\n DefaultGridGapDirective,\n DefaultGridRowDirective,\n DefaultGridRowsDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the CSS Grid API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class GridModule {\n}\n"],"names":["__extends","d","b","__","this","constructor","extendStatics","prototype","Object","create","buildCss","align","css","_a","split","rowAxis","columnAxis","ROW_DEFAULT","COL_DEFAULT","inline","mainAxis","crossAxis","DEFAULT_MAIN","DEFAULT_CROSS","setPrototypeOf","__proto__","Array","p","hasOwnProperty","tslib_1.__extends","GridAlignStyleBuilder","_super","buildStyles","input","type","Injectable","args","providedIn","StyleBuilder","GridAlignDirective","elementRef","styleBuilder","styler","marshal","_this","call","DIRECTIVE_KEY","styleCache","alignCache","init","ElementRef","decorators","Optional","StyleUtils","MediaMarshaller","BaseDirective2","Map","inputs","DefaultGridAlignDirective","Directive","selector","GridAlignColumnsStyleBuilder","parent","GridAlignColumnsDirective","_inline","defineProperty","val","coerceBooleanProperty","updateWithValue","value","alignColumnsInlineCache","alignColumnsCache","addStyles","Input","DefaultGridAlignColumnsDirective","GridAlignRowsStyleBuilder","GridAlignRowsDirective","alignRowsInlineCache","alignRowsCache","DefaultGridAlignRowsDirective","GridAreaStyleBuilder","grid-area","GridAreaDirective","elRef","styleUtils","gridAreaCache","DefaultGridAreaDirective","GridAreasStyleBuiler","areas","map","v","trim","display","grid-template-areas","join","GridAreasDirective","areasInlineCache","areasCache","DefaultGridAreasDirective","GridAutoStyleBuilder","direction","dense","grid-auto-flow","GridAutoDirective","autoInlineCache","autoCache","DefaultGridAutoDirective","GridColumnStyleBuilder","grid-column","GridColumnDirective","columnCache","DefaultGridColumnDirective","GridColumnsStyleBuilder","auto","endsWith","substring","indexOf","grid-auto-columns","grid-template-columns","GridColumnsDirective","columnsInlineCache","columnsCache","DefaultGridColumnsDirective","GridGapStyleBuilder","grid-gap","GridGapDirective","gapInlineCache","gapCache","DefaultGridGapDirective","GridRowStyleBuilder","grid-row","GridRowDirective","rowCache","DefaultGridRowDirective","GridRowsStyleBuilder","grid-auto-rows","grid-template-rows","GridRowsDirective","rowsInlineCache","rowsCache","DefaultGridRowsDirective","ALL_DIRECTIVES","NgModule","imports","CoreModule","declarations","slice","exports","GridModule"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"flex-layout-grid.umd.min.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/lib/grid/grid-align/grid-align.ts","../../src/lib/grid/align-columns/align-columns.ts","../../src/lib/grid/align-rows/align-rows.ts","../../src/lib/grid/area/area.ts","../../src/lib/grid/areas/areas.ts","../../src/lib/grid/auto/auto.ts","../../src/lib/grid/column/column.ts","../../src/lib/grid/columns/columns.ts","../../src/lib/grid/gap/gap.ts","../../src/lib/grid/row/row.ts","../../src/lib/grid/rows/rows.ts","../../src/lib/grid/module.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\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 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) : new P(function (resolve) { resolve(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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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 __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\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)) result[k] = mod[k];\r\n result.default = 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","/**\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\nconst ROW_DEFAULT = 'stretch';\nconst COL_DEFAULT = 'stretch';\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return buildCss(input || ROW_DEFAULT);\n }\n}\n\nexport class GridAlignDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = alignCache;\n}\n\nconst alignCache: Map = new Map();\n\nconst inputs = [\n 'gdGridAlign',\n 'gdGridAlign.xs', 'gdGridAlign.sm', 'gdGridAlign.md', 'gdGridAlign.lg', 'gdGridAlign.xl',\n 'gdGridAlign.lt-sm', 'gdGridAlign.lt-md', 'gdGridAlign.lt-lg', 'gdGridAlign.lt-xl',\n 'gdGridAlign.gt-xs', 'gdGridAlign.gt-sm', 'gdGridAlign.gt-md', 'gdGridAlign.gt-lg'\n];\n\nconst selector = `\n [gdGridAlign],\n [gdGridAlign.xs], [gdGridAlign.sm], [gdGridAlign.md], [gdGridAlign.lg],[gdGridAlign.xl],\n [gdGridAlign.lt-sm], [gdGridAlign.lt-md], [gdGridAlign.lt-lg], [gdGridAlign.lt-xl],\n [gdGridAlign.gt-xs], [gdGridAlign.gt-sm], [gdGridAlign.gt-md], [gdGridAlign.gt-lg]\n`;\n\n/**\n * 'align' CSS Grid styling directive for grid children\n * Defines positioning of child elements along row and column axis in a grid container\n * Optional values: {row-axis} values or {row-axis column-axis} value pairs\n *\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-justify-self\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-align-self\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignDirective extends GridAlignDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string = '') {\n const css: {[key: string]: string} = {}, [rowAxis, columnAxis] = align.split(' ');\n\n // Row axis\n switch (rowAxis) {\n case 'end':\n css['justify-self'] = 'end';\n break;\n case 'center':\n css['justify-self'] = 'center';\n break;\n case 'stretch':\n css['justify-self'] = 'stretch';\n break;\n case 'start':\n css['justify-self'] = 'start';\n break;\n default:\n css['justify-self'] = ROW_DEFAULT; // default row axis\n break;\n }\n\n // Column axis\n switch (columnAxis) {\n case 'end':\n css['align-self'] = 'end';\n break;\n case 'center':\n css['align-self'] = 'center';\n break;\n case 'stretch':\n css['align-self'] = 'stretch';\n break;\n case 'start':\n css['align-self'] = 'start';\n break;\n default:\n css['align-self'] = COL_DEFAULT; // default column axis\n break;\n }\n\n return css;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_MAIN = 'start';\nconst DEFAULT_CROSS = 'stretch';\n\nexport interface GridAlignColumnsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignColumnsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAlignColumnsParent) {\n return buildCss(input || `${DEFAULT_MAIN} ${DEFAULT_CROSS}`, parent.inline);\n }\n}\n\nexport class GridAlignColumnsDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align-columns';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignColumnsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? alignColumnsInlineCache : alignColumnsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst alignColumnsCache: Map = new Map();\nconst alignColumnsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAlignColumns',\n 'gdAlignColumns.xs', 'gdAlignColumns.sm', 'gdAlignColumns.md',\n 'gdAlignColumns.lg', 'gdAlignColumns.xl', 'gdAlignColumns.lt-sm',\n 'gdAlignColumns.lt-md', 'gdAlignColumns.lt-lg', 'gdAlignColumns.lt-xl',\n 'gdAlignColumns.gt-xs', 'gdAlignColumns.gt-sm', 'gdAlignColumns.gt-md',\n 'gdAlignColumns.gt-lg'\n];\nconst selector = `\n [gdAlignColumns],\n [gdAlignColumns.xs], [gdAlignColumns.sm], [gdAlignColumns.md],\n [gdAlignColumns.lg], [gdAlignColumns.xl], [gdAlignColumns.lt-sm],\n [gdAlignColumns.lt-md], [gdAlignColumns.lt-lg], [gdAlignColumns.lt-xl],\n [gdAlignColumns.gt-xs], [gdAlignColumns.gt-sm], [gdAlignColumns.gt-md],\n [gdAlignColumns.gt-lg]\n`;\n\n/**\n * 'column alignment' CSS Grid styling directive\n * Configures the alignment in the column direction\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-19\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-21\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignColumnsDirective extends GridAlignColumnsDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string, inline: boolean): StyleDefinition {\n const css: {[key: string]: string} = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['align-content'] = 'center';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['align-content'] = 'space-evenly';\n break;\n case 'end':\n css['align-content'] = 'end';\n break;\n case 'start':\n css['align-content'] = 'start';\n break;\n case 'stretch':\n css['align-content'] = 'stretch';\n break;\n default:\n css['align-content'] = DEFAULT_MAIN; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n css['align-items'] = 'start';\n break;\n case 'center':\n css['align-items'] = 'center';\n break;\n case 'end':\n css['align-items'] = 'end';\n break;\n case 'stretch':\n css['align-items'] = 'stretch';\n break;\n default : // 'stretch'\n css['align-items'] = DEFAULT_CROSS; // default cross axis\n break;\n }\n\n css['display'] = inline ? 'inline-grid' : 'grid';\n\n return css;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_MAIN = 'start';\nconst DEFAULT_CROSS = 'stretch';\n\nexport interface GridAlignRowsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignRowsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAlignRowsParent) {\n return buildCss(input || `${DEFAULT_MAIN} ${DEFAULT_CROSS}`, parent.inline);\n }\n}\n\nexport class GridAlignRowsDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align-rows';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignRowsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? alignRowsInlineCache : alignRowsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst alignRowsCache: Map = new Map();\nconst alignRowsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAlignRows',\n 'gdAlignRows.xs', 'gdAlignRows.sm', 'gdAlignRows.md',\n 'gdAlignRows.lg', 'gdAlignRows.xl', 'gdAlignRows.lt-sm',\n 'gdAlignRows.lt-md', 'gdAlignRows.lt-lg', 'gdAlignRows.lt-xl',\n 'gdAlignRows.gt-xs', 'gdAlignRows.gt-sm', 'gdAlignRows.gt-md',\n 'gdAlignRows.gt-lg'\n];\nconst selector = `\n [gdAlignRows],\n [gdAlignRows.xs], [gdAlignRows.sm], [gdAlignRows.md],\n [gdAlignRows.lg], [gdAlignRows.xl], [gdAlignRows.lt-sm],\n [gdAlignRows.lt-md], [gdAlignRows.lt-lg], [gdAlignRows.lt-xl],\n [gdAlignRows.gt-xs], [gdAlignRows.gt-sm], [gdAlignRows.gt-md],\n [gdAlignRows.gt-lg]\n`;\n\n/**\n * 'row alignment' CSS Grid styling directive\n * Configures the alignment in the row direction\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-18\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-20\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignRowsDirective extends GridAlignRowsDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string, inline: boolean): StyleDefinition {\n const css: {[key: string]: string} = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n case 'space-around':\n case 'space-between':\n case 'space-evenly':\n case 'end':\n case 'start':\n case 'stretch':\n css['justify-content'] = mainAxis;\n break;\n default:\n css['justify-content'] = DEFAULT_MAIN; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'center':\n case 'end':\n case 'stretch':\n css['justify-items'] = crossAxis;\n break;\n default : // 'stretch'\n css['justify-items'] = DEFAULT_CROSS; // default cross axis\n break;\n }\n\n css['display'] = inline ? 'inline-grid' : 'grid';\n\n return css;\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridAreaStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-area': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridAreaDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-area';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAreaStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = gridAreaCache;\n}\n\nconst gridAreaCache: Map = new Map();\n\nconst inputs = [\n 'gdArea',\n 'gdArea.xs', 'gdArea.sm', 'gdArea.md', 'gdArea.lg', 'gdArea.xl',\n 'gdArea.lt-sm', 'gdArea.lt-md', 'gdArea.lt-lg', 'gdArea.lt-xl',\n 'gdArea.gt-xs', 'gdArea.gt-sm', 'gdArea.gt-md', 'gdArea.gt-lg'\n];\nconst selector = `\n [gdArea],\n [gdArea.xs], [gdArea.sm], [gdArea.md], [gdArea.lg], [gdArea.xl],\n [gdArea.lt-sm], [gdArea.lt-md], [gdArea.lt-lg], [gdArea.lt-xl],\n [gdArea.gt-xs], [gdArea.gt-sm], [gdArea.gt-md], [gdArea.gt-lg]\n`;\n\n/**\n * 'grid-area' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-27\n */\n@Directive({selector, inputs})\nexport class DefaultGridAreaDirective extends GridAreaDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n MediaMarshaller,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst DELIMETER = '|';\n\nexport interface GridAreasParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAreasStyleBuiler extends StyleBuilder {\n buildStyles(input: string, parent: GridAreasParent) {\n const areas = (input || DEFAULT_VALUE).split(DELIMETER).map(v => `\"${v.trim()}\"`);\n\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-template-areas': areas.join(' ')\n };\n }\n}\n\nexport class GridAreasDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-areas';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAreasStyleBuiler,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? areasInlineCache : areasCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst areasCache: Map = new Map();\nconst areasInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAreas',\n 'gdAreas.xs', 'gdAreas.sm', 'gdAreas.md', 'gdAreas.lg', 'gdAreas.xl',\n 'gdAreas.lt-sm', 'gdAreas.lt-md', 'gdAreas.lt-lg', 'gdAreas.lt-xl',\n 'gdAreas.gt-xs', 'gdAreas.gt-sm', 'gdAreas.gt-md', 'gdAreas.gt-lg'\n];\n\nconst selector = `\n [gdAreas],\n [gdAreas.xs], [gdAreas.sm], [gdAreas.md], [gdAreas.lg], [gdAreas.xl],\n [gdAreas.lt-sm], [gdAreas.lt-md], [gdAreas.lt-lg], [gdAreas.lt-xl],\n [gdAreas.gt-xs], [gdAreas.gt-sm], [gdAreas.gt-md], [gdAreas.gt-lg]\n`;\n\n/**\n * 'grid-template-areas' CSS Grid styling directive\n * Configures the names of elements within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-14\n */\n@Directive({selector, inputs})\nexport class DefaultGridAreasDirective extends GridAreasDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n MediaMarshaller,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'initial';\n\nexport interface GridAutoParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAutoStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAutoParent) {\n let [direction, dense] = (input || DEFAULT_VALUE).split(' ');\n if (direction !== 'column' && direction !== 'row' && direction !== 'dense') {\n direction = 'row';\n }\n\n dense = (dense === 'dense' && direction !== 'dense') ? ' dense' : '';\n\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-flow': direction + dense\n };\n }\n}\n\nexport class GridAutoDirective extends BaseDirective2 {\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n protected DIRECTIVE_KEY = 'grid-auto';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAutoStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? autoInlineCache : autoCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst autoCache: Map = new Map();\nconst autoInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAuto',\n 'gdAuto.xs', 'gdAuto.sm', 'gdAuto.md', 'gdAuto.lg', 'gdAuto.xl',\n 'gdAuto.lt-sm', 'gdAuto.lt-md', 'gdAuto.lt-lg', 'gdAuto.lt-xl',\n 'gdAuto.gt-xs', 'gdAuto.gt-sm', 'gdAuto.gt-md', 'gdAuto.gt-lg'\n];\nconst selector = `\n [gdAuto],\n [gdAuto.xs], [gdAuto.sm], [gdAuto.md], [gdAuto.lg], [gdAuto.xl],\n [gdAuto.lt-sm], [gdAuto.lt-md], [gdAuto.lt-lg], [gdAuto.lt-xl],\n [gdAuto.gt-xs], [gdAuto.gt-sm], [gdAuto.gt-md], [gdAuto.gt-lg]\n`;\n\n/**\n * 'grid-auto-flow' CSS Grid styling directive\n * Configures the auto placement algorithm for the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-23\n */\n@Directive({selector, inputs})\nexport class DefaultGridAutoDirective extends GridAutoDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridColumnStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-column': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridColumnDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-column';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridColumnStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = columnCache;\n}\n\nconst columnCache: Map = new Map();\n\nconst inputs = [\n 'gdColumn',\n 'gdColumn.xs', 'gdColumn.sm', 'gdColumn.md', 'gdColumn.lg', 'gdColumn.xl',\n 'gdColumn.lt-sm', 'gdColumn.lt-md', 'gdColumn.lt-lg', 'gdColumn.lt-xl',\n 'gdColumn.gt-xs', 'gdColumn.gt-sm', 'gdColumn.gt-md', 'gdColumn.gt-lg'\n];\n\nconst selector = `\n [gdColumn],\n [gdColumn.xs], [gdColumn.sm], [gdColumn.md], [gdColumn.lg], [gdColumn.xl],\n [gdColumn.lt-sm], [gdColumn.lt-md], [gdColumn.lt-lg], [gdColumn.lt-xl],\n [gdColumn.gt-xs], [gdColumn.gt-sm], [gdColumn.gt-md], [gdColumn.gt-lg]\n`;\n\n/**\n * 'grid-column' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26\n */\n@Directive({selector, inputs})\nexport class DefaultGridColumnDirective extends GridColumnDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst AUTO_SPECIFIER = '!';\n\nexport interface GridColumnsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridColumnsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridColumnsParent) {\n input = input || DEFAULT_VALUE;\n let auto = false;\n if (input.endsWith(AUTO_SPECIFIER)) {\n input = input.substring(0, input.indexOf(AUTO_SPECIFIER));\n auto = true;\n }\n\n const css = {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-columns': '',\n 'grid-template-columns': '',\n };\n const key = (auto ? 'grid-auto-columns' : 'grid-template-columns');\n css[key] = input;\n\n return css;\n }\n}\n\nexport class GridColumnsDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-columns';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridColumnsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? columnsInlineCache : columnsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst columnsCache: Map = new Map();\nconst columnsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdColumns',\n 'gdColumns.xs', 'gdColumns.sm', 'gdColumns.md', 'gdColumns.lg', 'gdColumns.xl',\n 'gdColumns.lt-sm', 'gdColumns.lt-md', 'gdColumns.lt-lg', 'gdColumns.lt-xl',\n 'gdColumns.gt-xs', 'gdColumns.gt-sm', 'gdColumns.gt-md', 'gdColumns.gt-lg'\n];\n\nconst selector = `\n [gdColumns],\n [gdColumns.xs], [gdColumns.sm], [gdColumns.md], [gdColumns.lg], [gdColumns.xl],\n [gdColumns.lt-sm], [gdColumns.lt-md], [gdColumns.lt-lg], [gdColumns.lt-xl],\n [gdColumns.gt-xs], [gdColumns.gt-sm], [gdColumns.gt-md], [gdColumns.gt-lg]\n`;\n\n/**\n * 'grid-template-columns' CSS Grid styling directive\n * Configures the sizing for the columns in the grid\n * Syntax: [auto]\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13\n */\n@Directive({selector, inputs})\nexport class DefaultGridColumnsDirective extends GridColumnsDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = '0';\n\nexport interface GridGapParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridGapStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridGapParent) {\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-gap': input || DEFAULT_VALUE\n };\n }\n}\n\nexport class GridGapDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-gap';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridGapStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? gapInlineCache : gapCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst gapCache: Map = new Map();\nconst gapInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdGap',\n 'gdGap.xs', 'gdGap.sm', 'gdGap.md', 'gdGap.lg', 'gdGap.xl',\n 'gdGap.lt-sm', 'gdGap.lt-md', 'gdGap.lt-lg', 'gdGap.lt-xl',\n 'gdGap.gt-xs', 'gdGap.gt-sm', 'gdGap.gt-md', 'gdGap.gt-lg'\n];\n\nconst selector = `\n [gdGap],\n [gdGap.xs], [gdGap.sm], [gdGap.md], [gdGap.lg], [gdGap.xl],\n [gdGap.lt-sm], [gdGap.lt-md], [gdGap.lt-lg], [gdGap.lt-xl],\n [gdGap.gt-xs], [gdGap.gt-sm], [gdGap.gt-md], [gdGap.gt-lg]\n`;\n\n/**\n * 'grid-gap' CSS Grid styling directive\n * Configures the gap between items in the grid\n * Syntax: []\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-17\n */\n@Directive({selector, inputs})\nexport class DefaultGridGapDirective extends GridGapDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridRowStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-row': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridRowDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-row';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridRowStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = rowCache;\n}\n\nconst rowCache: Map = new Map();\n\nconst inputs = [\n 'gdRow',\n 'gdRow.xs', 'gdRow.sm', 'gdRow.md', 'gdRow.lg', 'gdRow.xl',\n 'gdRow.lt-sm', 'gdRow.lt-md', 'gdRow.lt-lg', 'gdRow.lt-xl',\n 'gdRow.gt-xs', 'gdRow.gt-sm', 'gdRow.gt-md', 'gdRow.gt-lg'\n];\n\nconst selector = `\n [gdRow],\n [gdRow.xs], [gdRow.sm], [gdRow.md], [gdRow.lg], [gdRow.xl],\n [gdRow.lt-sm], [gdRow.lt-md], [gdRow.lt-lg], [gdRow.lt-xl],\n [gdRow.gt-xs], [gdRow.gt-sm], [gdRow.gt-md], [gdRow.gt-lg]\n`;\n\n/**\n * 'grid-row' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26\n */\n@Directive({selector, inputs})\nexport class DefaultGridRowDirective extends GridRowDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst AUTO_SPECIFIER = '!';\n\nexport interface GridRowsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridRowsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridRowsParent) {\n input = input || DEFAULT_VALUE;\n let auto = false;\n if (input.endsWith(AUTO_SPECIFIER)) {\n input = input.substring(0, input.indexOf(AUTO_SPECIFIER));\n auto = true;\n }\n\n const css = {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-rows': '',\n 'grid-template-rows': '',\n };\n const key = (auto ? 'grid-auto-rows' : 'grid-template-rows');\n css[key] = input;\n\n return css;\n }\n}\n\nexport class GridRowsDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-rows';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridRowsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? rowsInlineCache : rowsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst rowsCache: Map = new Map();\nconst rowsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdRows',\n 'gdRows.xs', 'gdRows.sm', 'gdRows.md', 'gdRows.lg', 'gdRows.xl',\n 'gdRows.lt-sm', 'gdRows.lt-md', 'gdRows.lt-lg', 'gdRows.lt-xl',\n 'gdRows.gt-xs', 'gdRows.gt-sm', 'gdRows.gt-md', 'gdRows.gt-lg'\n];\n\nconst selector = `\n [gdRows],\n [gdRows.xs], [gdRows.sm], [gdRows.md], [gdRows.lg], [gdRows.xl],\n [gdRows.lt-sm], [gdRows.lt-md], [gdRows.lt-lg], [gdRows.lt-xl],\n [gdRows.gt-xs], [gdRows.gt-sm], [gdRows.gt-md], [gdRows.gt-lg]\n`;\n\n/**\n * 'grid-template-rows' CSS Grid styling directive\n * Configures the sizing for the rows in the grid\n * Syntax: [auto]\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13\n */\n@Directive({selector, inputs})\nexport class DefaultGridRowsDirective extends GridRowsDirective {\n protected inputs = inputs;\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';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultGridAlignDirective} from './grid-align/grid-align';\nimport {DefaultGridAlignColumnsDirective} from './align-columns/align-columns';\nimport {DefaultGridAlignRowsDirective} from './align-rows/align-rows';\nimport {DefaultGridAreaDirective} from './area/area';\nimport {DefaultGridAreasDirective} from './areas/areas';\nimport {DefaultGridAutoDirective} from './auto/auto';\nimport {DefaultGridColumnDirective} from './column/column';\nimport {DefaultGridColumnsDirective} from './columns/columns';\nimport {DefaultGridGapDirective} from './gap/gap';\nimport {DefaultGridRowDirective} from './row/row';\nimport {DefaultGridRowsDirective} from './rows/rows';\n\n\nconst ALL_DIRECTIVES = [\n DefaultGridAlignDirective,\n DefaultGridAlignColumnsDirective,\n DefaultGridAlignRowsDirective,\n DefaultGridAreaDirective,\n DefaultGridAreasDirective,\n DefaultGridAutoDirective,\n DefaultGridColumnDirective,\n DefaultGridColumnsDirective,\n DefaultGridGapDirective,\n DefaultGridRowDirective,\n DefaultGridRowsDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the CSS Grid API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class GridModule {\n}\n"],"names":["__extends","d","b","__","this","constructor","extendStatics","prototype","Object","create","buildCss","align","css","_a","split","rowAxis","columnAxis","ROW_DEFAULT","COL_DEFAULT","inline","mainAxis","crossAxis","DEFAULT_MAIN","DEFAULT_CROSS","setPrototypeOf","__proto__","Array","p","hasOwnProperty","GridAlignStyleBuilder","_super","tslib_1.__extends","buildStyles","input","type","Injectable","args","providedIn","StyleBuilder","GridAlignDirective","elementRef","styleBuilder","styler","marshal","_this","call","DIRECTIVE_KEY","styleCache","alignCache","init","ElementRef","decorators","Optional","StyleUtils","MediaMarshaller","BaseDirective2","Map","inputs","DefaultGridAlignDirective","apply","arguments","Directive","selector","GridAlignColumnsStyleBuilder","parent","GridAlignColumnsDirective","_inline","defineProperty","val","coerceBooleanProperty","updateWithValue","value","alignColumnsInlineCache","alignColumnsCache","addStyles","Input","DefaultGridAlignColumnsDirective","GridAlignRowsStyleBuilder","GridAlignRowsDirective","alignRowsInlineCache","alignRowsCache","DefaultGridAlignRowsDirective","GridAreaStyleBuilder","grid-area","GridAreaDirective","elRef","styleUtils","gridAreaCache","DefaultGridAreaDirective","GridAreasStyleBuiler","areas","map","v","trim","display","grid-template-areas","join","GridAreasDirective","areasInlineCache","areasCache","DefaultGridAreasDirective","GridAutoStyleBuilder","direction","dense","grid-auto-flow","GridAutoDirective","autoInlineCache","autoCache","DefaultGridAutoDirective","GridColumnStyleBuilder","grid-column","GridColumnDirective","columnCache","DefaultGridColumnDirective","GridColumnsStyleBuilder","auto","endsWith","substring","indexOf","grid-auto-columns","grid-template-columns","GridColumnsDirective","columnsInlineCache","columnsCache","DefaultGridColumnsDirective","GridGapStyleBuilder","grid-gap","GridGapDirective","gapInlineCache","gapCache","DefaultGridGapDirective","GridRowStyleBuilder","grid-row","GridRowDirective","rowCache","DefaultGridRowDirective","GridRowsStyleBuilder","grid-auto-rows","grid-template-rows","GridRowsDirective","rowsInlineCache","rowsCache","DefaultGridRowsDirective","ALL_DIRECTIVES","GridModule","NgModule","imports","CoreModule","declarations","slice","exports"],"mappings":"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"} \ No newline at end of file diff --git a/bundles/flex-layout-server.umd.js b/bundles/flex-layout-server.umd.js index e83492faa..d2a403545 100644 --- a/bundles/flex-layout-server.umd.js +++ b/bundles/flex-layout-server.umd.js @@ -6,87 +6,427 @@ * found in the LICENSE file at https://angular.io/license */ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/platform-server'), require('@angular/flex-layout/core'), require('@angular/core')) : - typeof define === 'function' && define.amd ? define('@angular/flex-layout/server', ['exports', '@angular/common', '@angular/platform-server', '@angular/flex-layout/core', '@angular/core'], factory) : - (factory((global.ng = global.ng || {}, global.ng['flex-layout'] = global.ng['flex-layout'] || {}, global.ng['flex-layout'].server = {}),global.ng.common,global.ng.platformServer,global.ng.flexLayout.core,global.ng.core)); -}(this, (function (exports,common,platformServer,core,core$1) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@angular/flex-layout/core'), require('@angular/platform-server')) : + typeof define === 'function' && define.amd ? define('@angular/flex-layout/server', ['exports', '@angular/common', '@angular/core', '@angular/flex-layout/core', '@angular/platform-server'], factory) : + (factory((global.ng = global.ng || {}, global.ng.flexLayout = global.ng.flexLayout || {}, global.ng.flexLayout.server = {}),global.ng.common,global.ng.core,global.ng.flexLayout.core,global.ng.platformServer)); +}(this, (function (exports,common,core,core$1,platformServer) { 'use strict'; + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ +/* global Reflect, Promise */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Special server-only class to simulate a MediaQueryList and + * - supports manual activation to simulate mediaQuery matching + * - manages listeners + */ +var /** + * Special server-only class to simulate a MediaQueryList and + * - supports manual activation to simulate mediaQuery matching + * - manages listeners + */ +ServerMediaQueryList = /** @class */ (function () { + function ServerMediaQueryList(_mediaQuery) { + this._mediaQuery = _mediaQuery; + this._isActive = false; + this._listeners = []; + this.onchange = null; + } + Object.defineProperty(ServerMediaQueryList.prototype, "matches", { + get: /** + * @return {?} + */ + function () { + return this._isActive; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ServerMediaQueryList.prototype, "media", { + get: /** + * @return {?} + */ + function () { + return this._mediaQuery; + }, + enumerable: true, + configurable: true + }); + /** + * Destroy the current list by deactivating the + * listeners and clearing the internal list + */ + /** + * Destroy the current list by deactivating the + * listeners and clearing the internal list + * @return {?} + */ + ServerMediaQueryList.prototype.destroy = /** + * Destroy the current list by deactivating the + * listeners and clearing the internal list + * @return {?} + */ + function () { + this.deactivate(); + this._listeners = []; + }; + /** Notify all listeners that 'matches === TRUE' */ + /** + * Notify all listeners that 'matches === TRUE' + * @return {?} + */ + ServerMediaQueryList.prototype.activate = /** + * Notify all listeners that 'matches === TRUE' + * @return {?} + */ + function () { + var _this = this; + if (!this._isActive) { + this._isActive = true; + this._listeners.forEach((/** + * @param {?} callback + * @return {?} + */ + function (callback) { + /** @type {?} */ + var cb = (/** @type {?} */ (callback)); + cb.call(null, _this); + })); + } + return this; + }; + /** Notify all listeners that 'matches === false' */ + /** + * Notify all listeners that 'matches === false' + * @return {?} + */ + ServerMediaQueryList.prototype.deactivate = /** + * Notify all listeners that 'matches === false' + * @return {?} + */ + function () { + var _this = this; + if (this._isActive) { + this._isActive = false; + this._listeners.forEach((/** + * @param {?} callback + * @return {?} + */ + function (callback) { + /** @type {?} */ + var cb = (/** @type {?} */ (callback)); + cb.call(null, _this); + })); + } + return this; + }; + /** Add a listener to our internal list to activate later */ + /** + * Add a listener to our internal list to activate later + * @param {?} listener + * @return {?} + */ + ServerMediaQueryList.prototype.addListener = /** + * Add a listener to our internal list to activate later + * @param {?} listener + * @return {?} + */ + function (listener) { + if (this._listeners.indexOf(listener) === -1) { + this._listeners.push(listener); + } + if (this._isActive) { + /** @type {?} */ + var cb = (/** @type {?} */ (listener)); + cb.call(null, this); + } + }; + /** Don't need to remove listeners in the server environment */ + /** + * Don't need to remove listeners in the server environment + * @param {?} _ + * @return {?} + */ + ServerMediaQueryList.prototype.removeListener = /** + * Don't need to remove listeners in the server environment + * @param {?} _ + * @return {?} + */ + function (_) { + }; + /** + * @param {?} _ + * @param {?} __ + * @param {?=} ___ + * @return {?} + */ + ServerMediaQueryList.prototype.addEventListener = /** + * @param {?} _ + * @param {?} __ + * @param {?=} ___ + * @return {?} + */ + function (_, __, ___) { + }; + /** + * @param {?} _ + * @param {?} __ + * @param {?=} ___ + * @return {?} + */ + ServerMediaQueryList.prototype.removeEventListener = /** + * @param {?} _ + * @param {?} __ + * @param {?=} ___ + * @return {?} + */ + function (_, __, ___) { + }; + /** + * @param {?} _ + * @return {?} + */ + ServerMediaQueryList.prototype.dispatchEvent = /** + * @param {?} _ + * @return {?} + */ + function (_) { + return false; + }; + return ServerMediaQueryList; +}()); +/** + * Special server-only implementation of MatchMedia that uses the above + * ServerMediaQueryList as its internal representation + * + * Also contains methods to activate and deactivate breakpoints + */ +var ServerMatchMedia = /** @class */ (function (_super) { + __extends(ServerMatchMedia, _super); + function ServerMatchMedia(_zone, _platformId, _document) { + var _this = _super.call(this, _zone, _platformId, _document) || this; + _this._zone = _zone; + _this._platformId = _platformId; + _this._document = _document; + return _this; + } + /** Activate the specified breakpoint if we're on the server, no-op otherwise */ + /** + * Activate the specified breakpoint if we're on the server, no-op otherwise + * @param {?} bp + * @return {?} + */ + ServerMatchMedia.prototype.activateBreakpoint = /** + * Activate the specified breakpoint if we're on the server, no-op otherwise + * @param {?} bp + * @return {?} + */ + function (bp) { + /** @type {?} */ + var lookupBreakpoint = (/** @type {?} */ (this.registry.get(bp.mediaQuery))); + if (lookupBreakpoint) { + lookupBreakpoint.activate(); + } + }; + /** Deactivate the specified breakpoint if we're on the server, no-op otherwise */ + /** + * Deactivate the specified breakpoint if we're on the server, no-op otherwise + * @param {?} bp + * @return {?} + */ + ServerMatchMedia.prototype.deactivateBreakpoint = /** + * Deactivate the specified breakpoint if we're on the server, no-op otherwise + * @param {?} bp + * @return {?} + */ + function (bp) { + /** @type {?} */ + var lookupBreakpoint = (/** @type {?} */ (this.registry.get(bp.mediaQuery))); + if (lookupBreakpoint) { + lookupBreakpoint.deactivate(); + } + }; + /** + * Call window.matchMedia() to build a MediaQueryList; which + * supports 0..n listeners for activation/deactivation + */ + /** + * Call window.matchMedia() to build a MediaQueryList; which + * supports 0..n listeners for activation/deactivation + * @protected + * @param {?} query + * @return {?} + */ + ServerMatchMedia.prototype.buildMQL = /** + * Call window.matchMedia() to build a MediaQueryList; which + * supports 0..n listeners for activation/deactivation + * @protected + * @param {?} query + * @return {?} + */ + function (query) { + return new ServerMediaQueryList(query); + }; + ServerMatchMedia.decorators = [ + { type: core.Injectable }, + ]; + /** @nocollapse */ + ServerMatchMedia.ctorParameters = function () { return [ + { type: core.NgZone }, + { type: Object, decorators: [{ type: core.Inject, args: [core.PLATFORM_ID,] }] }, + { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] } + ]; }; + return ServerMatchMedia; +}(core$1.ɵMatchMedia)); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * Activate all of the registered breakpoints in sequence, and then * retrieve the associated stylings from the virtual stylesheet * @param {?} serverSheet the virtual stylesheet that stores styles for each * element - * @param {?} matchMedia the service to activate/deactivate breakpoints + * @param {?} mediaController the MatchMedia service to activate/deactivate breakpoints * @param {?} breakpoints the registered breakpoints to activate/deactivate + * @param {?} layoutConfig the library config, and specifically the breakpoints to activate * @return {?} */ -function generateStaticFlexLayoutStyles(serverSheet, matchMedia, breakpoints) { +function generateStaticFlexLayoutStyles(serverSheet, mediaController, breakpoints, layoutConfig) { + // Store the custom classes in the following map, that way only + // one class gets allocated per HTMLElement, and each class can + // be referenced in the static media queries /** @type {?} */ var classMap = new Map(); + // Get the initial stylings for all of the directives, + // and initialize the fallback block of stylings /** @type {?} */ var defaultStyles = new Map(serverSheet.stylesheet); /** @type {?} */ var styleText = generateCss(defaultStyles, 'all', classMap); - breakpoints.sort(core.prioritySort); - breakpoints.reverse(); - breakpoints.forEach(function (bp, i) { + breakpoints.slice().sort(core$1.sortAscendingPriority).forEach((/** + * @param {?} bp + * @param {?} i + * @return {?} + */ + function (bp, i) { serverSheet.clearStyles(); - (/** @type {?} */ (matchMedia)).activateBreakpoint(bp); + mediaController.activateBreakpoint(bp); /** @type {?} */ var stylesheet = new Map(serverSheet.stylesheet); if (stylesheet.size > 0) { styleText += generateCss(stylesheet, bp.mediaQuery, classMap); } - (/** @type {?} */ (matchMedia)).deactivateBreakpoint(breakpoints[i]); - }); + mediaController.deactivateBreakpoint(breakpoints[i]); + })); + /** @type {?} */ + var serverBps = layoutConfig.ssrObserveBreakpoints; + if (serverBps) { + serverBps + .reduce((/** + * @param {?} acc + * @param {?} serverBp + * @return {?} + */ + function (acc, serverBp) { + /** @type {?} */ + var foundBp = breakpoints.find((/** + * @param {?} bp + * @return {?} + */ + function (bp) { return serverBp === bp.alias; })); + if (!foundBp) { + console.warn("FlexLayoutServerModule: unknown breakpoint alias \"" + serverBp + "\""); + } + else { + acc.push(foundBp); + } + return acc; + }), []) + .forEach(mediaController.activateBreakpoint); + } return styleText; } /** * Create a style tag populated with the dynamic stylings from Flex * components and attach it to the head of the DOM * @param {?} serverSheet - * @param {?} matchMedia + * @param {?} mediaController * @param {?} _document * @param {?} breakpoints + * @param {?} layoutConfig * @return {?} */ -function FLEX_SSR_SERIALIZER_FACTORY(serverSheet, matchMedia, _document, breakpoints) { - return function () { +function FLEX_SSR_SERIALIZER_FACTORY(serverSheet, mediaController, _document, breakpoints, layoutConfig) { + return (/** + * @return {?} + */ + function () { + // This is the style tag that gets inserted into the head of the DOM, + // populated with the manual media queries /** @type {?} */ var styleTag = _document.createElement('style'); /** @type {?} */ - var styleText = generateStaticFlexLayoutStyles(serverSheet, matchMedia, breakpoints); - styleTag.classList.add(core.CLASS_NAME + "ssr"); - styleTag.textContent = styleText; /** @type {?} */ - ((_document.head)).appendChild(styleTag); - }; + var styleText = generateStaticFlexLayoutStyles(serverSheet, mediaController, breakpoints, layoutConfig); + styleTag.classList.add(core$1.CLASS_NAME + "ssr"); + styleTag.textContent = styleText; + (/** @type {?} */ (_document.head)).appendChild(styleTag); + }); } -/** * +/** * Provider to set static styles on the server - @type {?} */ + * @type {?} + */ var SERVER_PROVIDERS = [ { - provide: /** @type {?} */ (platformServer.BEFORE_APP_SERIALIZED), + provide: (/** @type {?} */ (platformServer.BEFORE_APP_SERIALIZED)), useFactory: FLEX_SSR_SERIALIZER_FACTORY, deps: [ - core.StylesheetMap, - core.MatchMedia, + core$1.StylesheetMap, + core$1.ɵMatchMedia, common.DOCUMENT, - core.BREAKPOINTS, + core$1.BREAKPOINTS, + core$1.LAYOUT_CONFIG, ], multi: true }, { - provide: core.SERVER_TOKEN, + provide: core$1.SERVER_TOKEN, useValue: true }, { - provide: core.MatchMedia, - useClass: core.ServerMatchMedia + provide: core$1.ɵMatchMedia, + useClass: ServerMatchMedia } ]; /** @type {?} */ @@ -106,17 +446,27 @@ var IS_DEBUG_MODE = false; function generateCss(stylesheet, mediaQuery, classMap) { /** @type {?} */ var css = ''; - stylesheet.forEach(function (styles, el) { + stylesheet.forEach((/** + * @param {?} styles + * @param {?} el + * @return {?} + */ + function (styles, el) { /** @type {?} */ var keyVals = ''; /** @type {?} */ var className = getClassName(el, classMap); - styles.forEach(function (v, k) { + styles.forEach((/** + * @param {?} v + * @param {?} k + * @return {?} + */ + function (v, k) { keyVals += v ? format(k + ":" + v + ";") : ''; - }); + })); // Build list of CSS styles; each with a className css += format("." + className + " {", keyVals, '}'); - }); + })); // Group 1 or more styles (each with className) in a specific mediaQuery return format("@media " + mediaQuery + " {", css, '}'); } @@ -133,9 +483,14 @@ function format() { } /** @type {?} */ var result = ''; - list.forEach(function (css, i) { - result += IS_DEBUG_MODE ? formatSegment(css, i != 0) : css; - }); + list.forEach((/** + * @param {?} css + * @param {?} i + * @return {?} + */ + function (css, i) { + result += IS_DEBUG_MODE ? formatSegment(css, i !== 0) : css; + })); return result; } /** @@ -145,7 +500,7 @@ function format() { */ function formatSegment(css, asPrefix) { if (asPrefix === void 0) { asPrefix = true; } - return asPrefix ? '\n' + css : css + '\n'; + return asPrefix ? "\n" + css : css + "\n"; } /** * Get className associated with CSS styling @@ -159,7 +514,7 @@ function getClassName(element, classMap) { /** @type {?} */ var className = classMap.get(element); if (!className) { - className = "" + core.CLASS_NAME + nextId++; + className = "" + core$1.CLASS_NAME + nextId++; classMap.set(element, className); } element.classList.add(className); @@ -168,13 +523,13 @@ function getClassName(element, classMap) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var FlexLayoutServerModule = /** @class */ (function () { function FlexLayoutServerModule() { } FlexLayoutServerModule.decorators = [ - { type: core$1.NgModule, args: [{ + { type: core.NgModule, args: [{ providers: [SERVER_PROVIDERS] },] }, ]; @@ -185,6 +540,7 @@ exports.FlexLayoutServerModule = FlexLayoutServerModule; exports.generateStaticFlexLayoutStyles = generateStaticFlexLayoutStyles; exports.FLEX_SSR_SERIALIZER_FACTORY = FLEX_SSR_SERIALIZER_FACTORY; exports.SERVER_PROVIDERS = SERVER_PROVIDERS; +exports.ɵa1 = ServerMatchMedia; Object.defineProperty(exports, '__esModule', { value: true }); diff --git a/bundles/flex-layout-server.umd.js.map b/bundles/flex-layout-server.umd.js.map index a18f4789b..0c511fd40 100644 --- a/bundles/flex-layout-server.umd.js.map +++ b/bundles/flex-layout-server.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"flex-layout-server.umd.js","sources":["../../src/lib/server/module.ts","../../src/lib/server/server-provider.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {NgModule} from '@angular/core';\n\nimport {SERVER_PROVIDERS} from './server-provider';\n\n@NgModule({\n providers: [SERVER_PROVIDERS]\n})\nexport class FlexLayoutServerModule {}\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 {DOCUMENT} from '@angular/common';\nimport {BEFORE_APP_SERIALIZED} from '@angular/platform-server';\nimport {\n BREAKPOINTS,\n CLASS_NAME,\n SERVER_TOKEN,\n BreakPoint,\n MatchMedia,\n StylesheetMap,\n ServerMatchMedia,\n prioritySort,\n} from '@angular/flex-layout/core';\n\n\n/**\n * Activate all of the registered breakpoints in sequence, and then\n * retrieve the associated stylings from the virtual stylesheet\n * @param serverSheet the virtual stylesheet that stores styles for each\n * element\n * @param matchMedia the service to activate/deactivate breakpoints\n * @param breakpoints the registered breakpoints to activate/deactivate\n */\nexport function generateStaticFlexLayoutStyles(serverSheet: StylesheetMap,\n matchMedia: MatchMedia,\n breakpoints: BreakPoint[]) {\n // Store the custom classes in the following map, that way only\n // one class gets allocated per HTMLElement, and each class can\n // be referenced in the static media queries\n const classMap = new Map();\n\n // Get the initial stylings for all of the directives, and initialize\n // the fallback block of stylings, then reverse the breakpoints list\n // to traverse in the proper order\n const defaultStyles = new Map(serverSheet.stylesheet);\n let styleText = generateCss(defaultStyles, 'all', classMap);\n\n breakpoints.sort(prioritySort);\n breakpoints.reverse();\n breakpoints.forEach((bp, i) => {\n serverSheet.clearStyles();\n (matchMedia as ServerMatchMedia).activateBreakpoint(bp);\n const stylesheet = new Map(serverSheet.stylesheet);\n if (stylesheet.size > 0) {\n styleText += generateCss(stylesheet, bp.mediaQuery, classMap);\n }\n (matchMedia as ServerMatchMedia).deactivateBreakpoint(breakpoints[i]);\n });\n\n return styleText;\n}\n\n/**\n * Create a style tag populated with the dynamic stylings from Flex\n * components and attach it to the head of the DOM\n */\nexport function FLEX_SSR_SERIALIZER_FACTORY(serverSheet: StylesheetMap,\n matchMedia: MatchMedia,\n _document: Document,\n breakpoints: BreakPoint[]) {\n return () => {\n // This is the style tag that gets inserted into the head of the DOM,\n // populated with the manual media queries\n const styleTag = _document.createElement('style');\n const styleText = generateStaticFlexLayoutStyles(serverSheet, matchMedia, breakpoints);\n styleTag.classList.add(`${CLASS_NAME}ssr`);\n styleTag.textContent = styleText;\n _document.head!.appendChild(styleTag);\n };\n}\n\n/**\n * Provider to set static styles on the server\n */\nexport const SERVER_PROVIDERS = [\n {\n provide: void>>BEFORE_APP_SERIALIZED,\n useFactory: FLEX_SSR_SERIALIZER_FACTORY,\n deps: [\n StylesheetMap,\n MatchMedia,\n DOCUMENT,\n BREAKPOINTS,\n ],\n multi: true\n },\n {\n provide: SERVER_TOKEN,\n useValue: true\n },\n {\n provide: MatchMedia,\n useClass: ServerMatchMedia\n }\n];\n\n\nlet nextId = 0;\nconst IS_DEBUG_MODE = false;\n\nexport type StyleSheet = Map>;\nexport type ClassMap = Map;\n\n/**\n * create @media queries based on a virtual stylesheet\n * * Adds a unique class to each element and stores it\n * in a shared classMap for later reuse\n * @param stylesheet the virtual stylesheet that stores styles for each\n * element\n * @param mediaQuery the given @media CSS selector for the current breakpoint\n * @param classMap the map of HTML elements to class names to avoid duplications\n */\nfunction generateCss(stylesheet: StyleSheet, mediaQuery: string, classMap: ClassMap) {\n let css = '';\n stylesheet.forEach((styles, el) => {\n let keyVals = '', className = getClassName(el, classMap);\n\n styles.forEach((v, k) => {\n keyVals += v ? format(`${k}:${v};`) : '';\n });\n\n // Build list of CSS styles; each with a className\n css += format(`.${className} {`, keyVals, '}');\n });\n\n // Group 1 or more styles (each with className) in a specific mediaQuery\n return format(`@media ${mediaQuery} {`, css, '}');\n}\n\n/**\n * For debugging purposes, prefix css segment with linefeed(s) for easy\n * debugging purposes.\n */\nfunction format(...list: string[]): string {\n let result = '';\n list.forEach((css, i) => {\n result += IS_DEBUG_MODE ? formatSegment(css, i != 0) : css;\n });\n return result;\n}\n\nfunction formatSegment(css: string, asPrefix: boolean = true): string {\n return asPrefix ? '\\n' + css : css + '\\n';\n}\n\n/**\n * Get className associated with CSS styling\n * If not found, generate global className and set\n * association.\n */\nfunction getClassName(element: HTMLElement, classMap: Map) {\n let className = classMap.get(element);\n if (!className) {\n className = `${CLASS_NAME}${nextId++}`;\n classMap.set(element, className);\n }\n element.classList.add(className);\n\n return className;\n}\n"],"names":["NgModule","CLASS_NAME","ServerMatchMedia","MatchMedia","SERVER_TOKEN","BREAKPOINTS","DOCUMENT","StylesheetMap","BEFORE_APP_SERIALIZED","prioritySort"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"flex-layout-server.umd.js","sources":["../../src/lib/server/module.ts","../../src/lib/server/server-provider.ts","../../src/lib/server/server-match-media.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 {NgModule} from '@angular/core';\n\nimport {SERVER_PROVIDERS} from './server-provider';\n\n@NgModule({\n providers: [SERVER_PROVIDERS]\n})\nexport class FlexLayoutServerModule {}\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 {DOCUMENT} from '@angular/common';\nimport {BEFORE_APP_SERIALIZED} from '@angular/platform-server';\nimport {\n BREAKPOINTS,\n CLASS_NAME,\n SERVER_TOKEN,\n BreakPoint,\n ɵMatchMedia as MatchMedia,\n StylesheetMap,\n sortAscendingPriority,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n} from '@angular/flex-layout/core';\n\nimport {ServerMatchMedia} from './server-match-media';\n\n/**\n * Activate all of the registered breakpoints in sequence, and then\n * retrieve the associated stylings from the virtual stylesheet\n * @param serverSheet the virtual stylesheet that stores styles for each\n * element\n * @param mediaController the MatchMedia service to activate/deactivate breakpoints\n * @param breakpoints the registered breakpoints to activate/deactivate\n * @param layoutConfig the library config, and specifically the breakpoints to activate\n */\nexport function generateStaticFlexLayoutStyles(serverSheet: StylesheetMap,\n mediaController: ServerMatchMedia,\n breakpoints: BreakPoint[],\n layoutConfig: LayoutConfigOptions) {\n // Store the custom classes in the following map, that way only\n // one class gets allocated per HTMLElement, and each class can\n // be referenced in the static media queries\n const classMap = new Map();\n\n // Get the initial stylings for all of the directives,\n // and initialize the fallback block of stylings\n const defaultStyles = new Map(serverSheet.stylesheet);\n let styleText = generateCss(defaultStyles, 'all', classMap);\n\n [...breakpoints].sort(sortAscendingPriority).forEach((bp, i) => {\n serverSheet.clearStyles();\n mediaController.activateBreakpoint(bp);\n const stylesheet = new Map(serverSheet.stylesheet);\n if (stylesheet.size > 0) {\n styleText += generateCss(stylesheet, bp.mediaQuery, classMap);\n }\n mediaController.deactivateBreakpoint(breakpoints[i]);\n });\n\n const serverBps = layoutConfig.ssrObserveBreakpoints;\n if (serverBps) {\n serverBps\n .reduce((acc: BreakPoint[], serverBp: string) => {\n const foundBp = breakpoints.find(bp => serverBp === bp.alias);\n if (!foundBp) {\n console.warn(`FlexLayoutServerModule: unknown breakpoint alias \"${serverBp}\"`);\n } else {\n acc.push(foundBp);\n }\n return acc;\n }, [])\n .forEach(mediaController.activateBreakpoint);\n }\n\n return styleText;\n}\n\n/**\n * Create a style tag populated with the dynamic stylings from Flex\n * components and attach it to the head of the DOM\n */\nexport function FLEX_SSR_SERIALIZER_FACTORY(serverSheet: StylesheetMap,\n mediaController: ServerMatchMedia,\n _document: Document,\n breakpoints: BreakPoint[],\n layoutConfig: LayoutConfigOptions) {\n return () => {\n // This is the style tag that gets inserted into the head of the DOM,\n // populated with the manual media queries\n const styleTag = _document.createElement('style');\n const styleText = generateStaticFlexLayoutStyles(serverSheet, mediaController, breakpoints,\n layoutConfig);\n styleTag.classList.add(`${CLASS_NAME}ssr`);\n styleTag.textContent = styleText;\n _document.head!.appendChild(styleTag);\n };\n}\n\n/**\n * Provider to set static styles on the server\n */\nexport const SERVER_PROVIDERS = [\n {\n provide: void>>BEFORE_APP_SERIALIZED,\n useFactory: FLEX_SSR_SERIALIZER_FACTORY,\n deps: [\n StylesheetMap,\n MatchMedia,\n DOCUMENT,\n BREAKPOINTS,\n LAYOUT_CONFIG,\n ],\n multi: true\n },\n {\n provide: SERVER_TOKEN,\n useValue: true\n },\n {\n provide: MatchMedia,\n useClass: ServerMatchMedia\n }\n];\n\n\nlet nextId = 0;\nconst IS_DEBUG_MODE = false;\n\nexport type StyleSheet = Map>;\nexport type ClassMap = Map;\n\n/**\n * create @media queries based on a virtual stylesheet\n * * Adds a unique class to each element and stores it\n * in a shared classMap for later reuse\n * @param stylesheet the virtual stylesheet that stores styles for each\n * element\n * @param mediaQuery the given @media CSS selector for the current breakpoint\n * @param classMap the map of HTML elements to class names to avoid duplications\n */\nfunction generateCss(stylesheet: StyleSheet, mediaQuery: string, classMap: ClassMap) {\n let css = '';\n stylesheet.forEach((styles, el) => {\n let keyVals = '';\n let className = getClassName(el, classMap);\n\n styles.forEach((v, k) => {\n keyVals += v ? format(`${k}:${v};`) : '';\n });\n\n // Build list of CSS styles; each with a className\n css += format(`.${className} {`, keyVals, '}');\n });\n\n // Group 1 or more styles (each with className) in a specific mediaQuery\n return format(`@media ${mediaQuery} {`, css, '}');\n}\n\n/**\n * For debugging purposes, prefix css segment with linefeed(s) for easy\n * debugging purposes.\n */\nfunction format(...list: string[]): string {\n let result = '';\n list.forEach((css, i) => {\n result += IS_DEBUG_MODE ? formatSegment(css, i !== 0) : css;\n });\n return result;\n}\n\nfunction formatSegment(css: string, asPrefix: boolean = true): string {\n return asPrefix ? `\\n${css}` : `${css}\\n`;\n}\n\n/**\n * Get className associated with CSS styling\n * If not found, generate global className and set\n * association.\n */\nfunction getClassName(element: HTMLElement, classMap: Map) {\n let className = classMap.get(element);\n if (!className) {\n className = `${CLASS_NAME}${nextId++}`;\n classMap.set(element, className);\n }\n element.classList.add(className);\n\n return className;\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 {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable, NgZone, PLATFORM_ID} from '@angular/core';\nimport {BreakPoint, ɵMatchMedia as MatchMedia} from '@angular/flex-layout/core';\n\n/**\n * Special server-only class to simulate a MediaQueryList and\n * - supports manual activation to simulate mediaQuery matching\n * - manages listeners\n */\nexport class ServerMediaQueryList 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 * 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(): ServerMediaQueryList {\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(null, this);\n });\n }\n return this;\n }\n\n /** Notify all listeners that 'matches === false' */\n deactivate(): ServerMediaQueryList {\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(null, this);\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(null, this);\n }\n }\n\n /** Don't need to remove listeners in the server environment */\n removeListener(_: MediaQueryListListener | null) {\n }\n\n addEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | AddEventListenerOptions): void;\n addEventListener(_: string,\n __: EventListenerOrEventListenerObject,\n ___?: boolean | AddEventListenerOptions) {\n }\n\n removeEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | EventListenerOptions): void;\n removeEventListener(_: 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 * Special server-only implementation of MatchMedia that uses the above\n * ServerMediaQueryList as its internal representation\n *\n * Also contains methods to activate and deactivate breakpoints\n */\n@Injectable()\nexport class ServerMatchMedia extends MatchMedia {\n constructor(protected _zone: NgZone,\n @Inject(PLATFORM_ID) protected _platformId: Object,\n @Inject(DOCUMENT) protected _document: any) {\n super(_zone, _platformId, _document);\n }\n\n /** Activate the specified breakpoint if we're on the server, no-op otherwise */\n activateBreakpoint(bp: BreakPoint) {\n const lookupBreakpoint = this.registry.get(bp.mediaQuery) as ServerMediaQueryList;\n if (lookupBreakpoint) {\n lookupBreakpoint.activate();\n }\n }\n\n /** Deactivate the specified breakpoint if we're on the server, no-op otherwise */\n deactivateBreakpoint(bp: BreakPoint) {\n const lookupBreakpoint = this.registry.get(bp.mediaQuery) as ServerMediaQueryList;\n if (lookupBreakpoint) {\n lookupBreakpoint.deactivate();\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): ServerMediaQueryList {\n return new ServerMediaQueryList(query);\n }\n}\n\ntype MediaQueryListListener = ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\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 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) : new P(function (resolve) { resolve(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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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 __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\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)) result[k] = mod[k];\r\n result.default = 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"],"names":["NgModule","CLASS_NAME","MatchMedia","SERVER_TOKEN","LAYOUT_CONFIG","BREAKPOINTS","DOCUMENT","StylesheetMap","BEFORE_APP_SERIALIZED","sortAscendingPriority","Inject","PLATFORM_ID","NgZone","Injectable","tslib_1.__extends"],"mappings":"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"} \ No newline at end of file diff --git a/bundles/flex-layout-server.umd.min.js b/bundles/flex-layout-server.umd.min.js index 3074ea05e..ea976e688 100644 --- a/bundles/flex-layout-server.umd.min.js +++ b/bundles/flex-layout-server.umd.min.js @@ -5,5 +5,5 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@angular/common"),require("@angular/platform-server"),require("@angular/flex-layout/core"),require("@angular/core")):"function"==typeof define&&define.amd?define("@angular/flex-layout/server",["exports","@angular/common","@angular/platform-server","@angular/flex-layout/core","@angular/core"],r):r((e.ng=e.ng||{},e.ng["flex-layout"]=e.ng["flex-layout"]||{},e.ng["flex-layout"].server={}),e.ng.common,e.ng.platformServer,e.ng.flexLayout.core,e.ng.core)}(this,function(e,r,t,a,n){"use strict";function o(e,r,t){var n=new Map,o=new Map(e.stylesheet),u=i(o,"all",n);return t.sort(a.prioritySort),t.reverse(),t.forEach(function(a,o){e.clearStyles(),r.activateBreakpoint(a);var l=new Map(e.stylesheet);l.size>0&&(u+=i(l,a.mediaQuery,n)),r.deactivateBreakpoint(t[o])}),u}function u(e,r,t,n){return function(){var u=t.createElement("style"),i=o(e,r,n);u.classList.add(a.CLASS_NAME+"ssr"),u.textContent=i,t.head.appendChild(u)}}function i(e,r,t){var a="";return e.forEach(function(e,r){var n="",o=s(r,t);e.forEach(function(e,r){n+=e?l(r+":"+e+";"):""}),a+=l("."+o+" {",n,"}")}),l("@media "+r+" {",a,"}")}function l(){for(var e=[],r=0;r0&&(u+=c(a,n.mediaQuery,i)),t.deactivateBreakpoint(r[o])});var s=o.ssrObserveBreakpoints;return s&&s.reduce(function(e,t){var n=r.find(function(e){return t===e.alias});return n?e.push(n):console.warn('FlexLayoutServerModule: unknown breakpoint alias "'+t+'"'),e},[]).forEach(t.activateBreakpoint),u}function u(e,t,r,o,i){return function(){var u=r.createElement("style"),c=a(e,t,o,i);u.classList.add(n.CLASS_NAME+"ssr"),u.textContent=c,r.head.appendChild(u)}}function c(e,t,r){var n="";return e.forEach(function(e,t){var o="",i=f(t,r);e.forEach(function(e,t){o+=e?s(t+":"+e+";"):""}),n+=s("."+i+" {",o,"}")}),s("@media "+t+" {",n,"}")}function s(){for(var e=[],t=0;t();\n\n // Get the initial stylings for all of the directives, and initialize\n // the fallback block of stylings, then reverse the breakpoints list\n // to traverse in the proper order\n const defaultStyles = new Map(serverSheet.stylesheet);\n let styleText = generateCss(defaultStyles, 'all', classMap);\n\n breakpoints.sort(prioritySort);\n breakpoints.reverse();\n breakpoints.forEach((bp, i) => {\n serverSheet.clearStyles();\n (matchMedia as ServerMatchMedia).activateBreakpoint(bp);\n const stylesheet = new Map(serverSheet.stylesheet);\n if (stylesheet.size > 0) {\n styleText += generateCss(stylesheet, bp.mediaQuery, classMap);\n }\n (matchMedia as ServerMatchMedia).deactivateBreakpoint(breakpoints[i]);\n });\n\n return styleText;\n}\n\n/**\n * Create a style tag populated with the dynamic stylings from Flex\n * components and attach it to the head of the DOM\n */\nexport function FLEX_SSR_SERIALIZER_FACTORY(serverSheet: StylesheetMap,\n matchMedia: MatchMedia,\n _document: Document,\n breakpoints: BreakPoint[]) {\n return () => {\n // This is the style tag that gets inserted into the head of the DOM,\n // populated with the manual media queries\n const styleTag = _document.createElement('style');\n const styleText = generateStaticFlexLayoutStyles(serverSheet, matchMedia, breakpoints);\n styleTag.classList.add(`${CLASS_NAME}ssr`);\n styleTag.textContent = styleText;\n _document.head!.appendChild(styleTag);\n };\n}\n\n/**\n * Provider to set static styles on the server\n */\nexport const SERVER_PROVIDERS = [\n {\n provide: void>>BEFORE_APP_SERIALIZED,\n useFactory: FLEX_SSR_SERIALIZER_FACTORY,\n deps: [\n StylesheetMap,\n MatchMedia,\n DOCUMENT,\n BREAKPOINTS,\n ],\n multi: true\n },\n {\n provide: SERVER_TOKEN,\n useValue: true\n },\n {\n provide: MatchMedia,\n useClass: ServerMatchMedia\n }\n];\n\n\nlet nextId = 0;\nconst IS_DEBUG_MODE = false;\n\nexport type StyleSheet = Map>;\nexport type ClassMap = Map;\n\n/**\n * create @media queries based on a virtual stylesheet\n * * Adds a unique class to each element and stores it\n * in a shared classMap for later reuse\n * @param stylesheet the virtual stylesheet that stores styles for each\n * element\n * @param mediaQuery the given @media CSS selector for the current breakpoint\n * @param classMap the map of HTML elements to class names to avoid duplications\n */\nfunction generateCss(stylesheet: StyleSheet, mediaQuery: string, classMap: ClassMap) {\n let css = '';\n stylesheet.forEach((styles, el) => {\n let keyVals = '', className = getClassName(el, classMap);\n\n styles.forEach((v, k) => {\n keyVals += v ? format(`${k}:${v};`) : '';\n });\n\n // Build list of CSS styles; each with a className\n css += format(`.${className} {`, keyVals, '}');\n });\n\n // Group 1 or more styles (each with className) in a specific mediaQuery\n return format(`@media ${mediaQuery} {`, css, '}');\n}\n\n/**\n * For debugging purposes, prefix css segment with linefeed(s) for easy\n * debugging purposes.\n */\nfunction format(...list: string[]): string {\n let result = '';\n list.forEach((css, i) => {\n result += IS_DEBUG_MODE ? formatSegment(css, i != 0) : css;\n });\n return result;\n}\n\nfunction formatSegment(css: string, asPrefix: boolean = true): string {\n return asPrefix ? '\\n' + css : css + '\\n';\n}\n\n/**\n * Get className associated with CSS styling\n * If not found, generate global className and set\n * association.\n */\nfunction getClassName(element: HTMLElement, classMap: Map) {\n let className = classMap.get(element);\n if (!className) {\n className = `${CLASS_NAME}${nextId++}`;\n classMap.set(element, className);\n }\n element.classList.add(className);\n\n return className;\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 {SERVER_PROVIDERS} from './server-provider';\n\n@NgModule({\n providers: [SERVER_PROVIDERS]\n})\nexport class FlexLayoutServerModule {}\n"],"names":["generateStaticFlexLayoutStyles","serverSheet","matchMedia","breakpoints","classMap","Map","defaultStyles","stylesheet","styleText","generateCss","sort","prioritySort","reverse","forEach","bp","i","clearStyles","activateBreakpoint","size","mediaQuery","deactivateBreakpoint","FLEX_SSR_SERIALIZER_FACTORY","_document","styleTag","createElement","classList","add","CLASS_NAME","textContent","appendChild","css","styles","el","keyVals","className","getClassName","v","k","format","list","_i","arguments","length","result","IS_DEBUG_MODE","formatSegment","asPrefix","element","get","nextId","set","SERVER_PROVIDERS","provide","BEFORE_APP_SERIALIZED","useFactory","deps","StylesheetMap","MatchMedia","DOCUMENT","BREAKPOINTS","multi","SERVER_TOKEN","useValue","useClass","ServerMatchMedia","FlexLayoutServerModule","type","NgModule","args","providers"],"mappings":";;;;;;;ikBA8BA,SAAgBA,GAA+BC,EACAC,EACAC,GAI7C,GAAMC,GAAW,GAAIC,KAKfC,EAAgB,GAAID,KAAIJ,EAAYM,YACtCC,EAAYC,EAAYH,EAAe,MAAOF,EAclD,OAZAD,GAAYO,KAAKC,EAAAA,cACjBR,EAAYS,UACZT,EAAYU,QAAQ,SAACC,EAAIC,GACvBd,EAAYe,cACZ,EAAiCC,mBAAmBH,EACpD,IAAMP,GAAa,GAAIF,KAAIJ,EAAYM,WACnCA,GAAWW,KAAO,IACpBV,GAAaC,EAAYF,EAAYO,EAAGK,WAAYf,IAEtD,EAAiCgB,qBAAqBjB,EAAYY,MAG7DP,EAOT,QAAgBa,GAA4BpB,EACAC,EACAoB,EACAnB,GAC1C,MAAO,YAGL,GAAMoB,GAAWD,EAAUE,cAAc,SACnChB,EAAYR,EAA+BC,EAAaC,EAAYC,EAC1EoB,GAASE,UAAUC,IAAOC,EAAAA,WAA9B,OACIJ,EAASK,YAAcpB,EACvBc,EAAc,KAAEO,YAAYN,IA6ChC,QAASd,GAAYF,EAAwBY,EAAoBf,GAC/D,GAAI0B,GAAM,EAaV,OAZAvB,GAAWM,QAAQ,SAACkB,EAAQC,GAC1B,GAAIC,GAAU,GAAIC,EAAYC,EAAaH,EAAI5B,EAE/C2B,GAAOlB,QAAQ,SAACuB,EAAGC,GACjBJ,GAAWG,EAAIE,EAAUD,EAA/B,IAAoCD,EAApC,KAA4C,KAIxCN,GAAOQ,EAAO,IAAIJ,EAAtB,KAAqCD,EAAS,OAIrCK,EAAO,UAAUnB,EAA1B,KAA0CW,EAAK,KAO/C,QAASQ,KAAT,IAAgB,GAAhBC,MAAAC,EAAA,EAAgBA,EAAhBC,UAAAC,OAAgBF,IAAAD,EAAhBC,GAAAC,UAAAD,EACE,IAAIG,GAAS,EAIb,OAHAJ,GAAK1B,QAAQ,SAACiB,EAAKf,GACjB4B,GAAUC,EAAgBC,EAAcf,EAAU,GAALf,GAAUe,IAElDa,EAGT,QAASE,GAAcf,EAAagB,GAClC,WADF,KAAAA,IAAoCA,GAApC,GACSA,EAAW,KAAOhB,EAAMA,EAAM,KAQvC,QAASK,GAAaY,EAAsB3C,GAC1C,GAAI8B,GAAY9B,EAAS4C,IAAID,EAO7B,OANKb,KACHA,EAAY,GAAGP,EAAAA,WAAasB,IAC5B7C,EAAS8C,IAAIH,EAASb,IAExBa,EAAQtB,UAAUC,IAAIQ,GAEfA,EApFT,GAAaiB,KAETC,QAAqCC,EAAqB,sBAC1DC,WAAYjC,EACZkC,MACEC,EAAAA,cACAC,EAAAA,WACAC,EAAAA,SACAC,EAAAA,aAEFC,OAAO,IAGPR,QAASS,EAAAA,aACTC,UAAU,IAGVV,QAASK,EAAAA,WACTM,SAAUC,EAAAA,mBAKVf,EAAS,EACPL,GAAgB,EClGtBqB,EAAA,yBAPA,sBAWAC,KAACC,EAAAA,SAADC,OACEC,WAAYlB,OAZdc"} \ No newline at end of file +{"version":3,"file":"flex-layout-server.umd.min.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/lib/server/server-provider.ts","../../src/lib/server/server-match-media.ts","../../src/lib/server/module.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\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 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) : new P(function (resolve) { resolve(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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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 __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\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)) result[k] = mod[k];\r\n result.default = 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","/**\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 {DOCUMENT} from '@angular/common';\nimport {BEFORE_APP_SERIALIZED} from '@angular/platform-server';\nimport {\n BREAKPOINTS,\n CLASS_NAME,\n SERVER_TOKEN,\n BreakPoint,\n ɵMatchMedia as MatchMedia,\n StylesheetMap,\n sortAscendingPriority,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n} from '@angular/flex-layout/core';\n\nimport {ServerMatchMedia} from './server-match-media';\n\n/**\n * Activate all of the registered breakpoints in sequence, and then\n * retrieve the associated stylings from the virtual stylesheet\n * @param serverSheet the virtual stylesheet that stores styles for each\n * element\n * @param mediaController the MatchMedia service to activate/deactivate breakpoints\n * @param breakpoints the registered breakpoints to activate/deactivate\n * @param layoutConfig the library config, and specifically the breakpoints to activate\n */\nexport function generateStaticFlexLayoutStyles(serverSheet: StylesheetMap,\n mediaController: ServerMatchMedia,\n breakpoints: BreakPoint[],\n layoutConfig: LayoutConfigOptions) {\n // Store the custom classes in the following map, that way only\n // one class gets allocated per HTMLElement, and each class can\n // be referenced in the static media queries\n const classMap = new Map();\n\n // Get the initial stylings for all of the directives,\n // and initialize the fallback block of stylings\n const defaultStyles = new Map(serverSheet.stylesheet);\n let styleText = generateCss(defaultStyles, 'all', classMap);\n\n [...breakpoints].sort(sortAscendingPriority).forEach((bp, i) => {\n serverSheet.clearStyles();\n mediaController.activateBreakpoint(bp);\n const stylesheet = new Map(serverSheet.stylesheet);\n if (stylesheet.size > 0) {\n styleText += generateCss(stylesheet, bp.mediaQuery, classMap);\n }\n mediaController.deactivateBreakpoint(breakpoints[i]);\n });\n\n const serverBps = layoutConfig.ssrObserveBreakpoints;\n if (serverBps) {\n serverBps\n .reduce((acc: BreakPoint[], serverBp: string) => {\n const foundBp = breakpoints.find(bp => serverBp === bp.alias);\n if (!foundBp) {\n console.warn(`FlexLayoutServerModule: unknown breakpoint alias \"${serverBp}\"`);\n } else {\n acc.push(foundBp);\n }\n return acc;\n }, [])\n .forEach(mediaController.activateBreakpoint);\n }\n\n return styleText;\n}\n\n/**\n * Create a style tag populated with the dynamic stylings from Flex\n * components and attach it to the head of the DOM\n */\nexport function FLEX_SSR_SERIALIZER_FACTORY(serverSheet: StylesheetMap,\n mediaController: ServerMatchMedia,\n _document: Document,\n breakpoints: BreakPoint[],\n layoutConfig: LayoutConfigOptions) {\n return () => {\n // This is the style tag that gets inserted into the head of the DOM,\n // populated with the manual media queries\n const styleTag = _document.createElement('style');\n const styleText = generateStaticFlexLayoutStyles(serverSheet, mediaController, breakpoints,\n layoutConfig);\n styleTag.classList.add(`${CLASS_NAME}ssr`);\n styleTag.textContent = styleText;\n _document.head!.appendChild(styleTag);\n };\n}\n\n/**\n * Provider to set static styles on the server\n */\nexport const SERVER_PROVIDERS = [\n {\n provide: void>>BEFORE_APP_SERIALIZED,\n useFactory: FLEX_SSR_SERIALIZER_FACTORY,\n deps: [\n StylesheetMap,\n MatchMedia,\n DOCUMENT,\n BREAKPOINTS,\n LAYOUT_CONFIG,\n ],\n multi: true\n },\n {\n provide: SERVER_TOKEN,\n useValue: true\n },\n {\n provide: MatchMedia,\n useClass: ServerMatchMedia\n }\n];\n\n\nlet nextId = 0;\nconst IS_DEBUG_MODE = false;\n\nexport type StyleSheet = Map>;\nexport type ClassMap = Map;\n\n/**\n * create @media queries based on a virtual stylesheet\n * * Adds a unique class to each element and stores it\n * in a shared classMap for later reuse\n * @param stylesheet the virtual stylesheet that stores styles for each\n * element\n * @param mediaQuery the given @media CSS selector for the current breakpoint\n * @param classMap the map of HTML elements to class names to avoid duplications\n */\nfunction generateCss(stylesheet: StyleSheet, mediaQuery: string, classMap: ClassMap) {\n let css = '';\n stylesheet.forEach((styles, el) => {\n let keyVals = '';\n let className = getClassName(el, classMap);\n\n styles.forEach((v, k) => {\n keyVals += v ? format(`${k}:${v};`) : '';\n });\n\n // Build list of CSS styles; each with a className\n css += format(`.${className} {`, keyVals, '}');\n });\n\n // Group 1 or more styles (each with className) in a specific mediaQuery\n return format(`@media ${mediaQuery} {`, css, '}');\n}\n\n/**\n * For debugging purposes, prefix css segment with linefeed(s) for easy\n * debugging purposes.\n */\nfunction format(...list: string[]): string {\n let result = '';\n list.forEach((css, i) => {\n result += IS_DEBUG_MODE ? formatSegment(css, i !== 0) : css;\n });\n return result;\n}\n\nfunction formatSegment(css: string, asPrefix: boolean = true): string {\n return asPrefix ? `\\n${css}` : `${css}\\n`;\n}\n\n/**\n * Get className associated with CSS styling\n * If not found, generate global className and set\n * association.\n */\nfunction getClassName(element: HTMLElement, classMap: Map) {\n let className = classMap.get(element);\n if (!className) {\n className = `${CLASS_NAME}${nextId++}`;\n classMap.set(element, className);\n }\n element.classList.add(className);\n\n return className;\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 {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable, NgZone, PLATFORM_ID} from '@angular/core';\nimport {BreakPoint, ɵMatchMedia as MatchMedia} from '@angular/flex-layout/core';\n\n/**\n * Special server-only class to simulate a MediaQueryList and\n * - supports manual activation to simulate mediaQuery matching\n * - manages listeners\n */\nexport class ServerMediaQueryList 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 * 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(): ServerMediaQueryList {\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(null, this);\n });\n }\n return this;\n }\n\n /** Notify all listeners that 'matches === false' */\n deactivate(): ServerMediaQueryList {\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(null, this);\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(null, this);\n }\n }\n\n /** Don't need to remove listeners in the server environment */\n removeListener(_: MediaQueryListListener | null) {\n }\n\n addEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | AddEventListenerOptions): void;\n addEventListener(_: string,\n __: EventListenerOrEventListenerObject,\n ___?: boolean | AddEventListenerOptions) {\n }\n\n removeEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | EventListenerOptions): void;\n removeEventListener(_: 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 * Special server-only implementation of MatchMedia that uses the above\n * ServerMediaQueryList as its internal representation\n *\n * Also contains methods to activate and deactivate breakpoints\n */\n@Injectable()\nexport class ServerMatchMedia extends MatchMedia {\n constructor(protected _zone: NgZone,\n @Inject(PLATFORM_ID) protected _platformId: Object,\n @Inject(DOCUMENT) protected _document: any) {\n super(_zone, _platformId, _document);\n }\n\n /** Activate the specified breakpoint if we're on the server, no-op otherwise */\n activateBreakpoint(bp: BreakPoint) {\n const lookupBreakpoint = this.registry.get(bp.mediaQuery) as ServerMediaQueryList;\n if (lookupBreakpoint) {\n lookupBreakpoint.activate();\n }\n }\n\n /** Deactivate the specified breakpoint if we're on the server, no-op otherwise */\n deactivateBreakpoint(bp: BreakPoint) {\n const lookupBreakpoint = this.registry.get(bp.mediaQuery) as ServerMediaQueryList;\n if (lookupBreakpoint) {\n lookupBreakpoint.deactivate();\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): ServerMediaQueryList {\n return new ServerMediaQueryList(query);\n }\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 {NgModule} from '@angular/core';\n\nimport {SERVER_PROVIDERS} from './server-provider';\n\n@NgModule({\n providers: [SERVER_PROVIDERS]\n})\nexport class FlexLayoutServerModule {}\n"],"names":["__extends","d","b","__","this","constructor","extendStatics","prototype","Object","create","generateStaticFlexLayoutStyles","serverSheet","mediaController","breakpoints","layoutConfig","classMap","Map","defaultStyles","stylesheet","styleText","generateCss","slice","sort","sortAscendingPriority","forEach","bp","i","clearStyles","activateBreakpoint","size","mediaQuery","deactivateBreakpoint","serverBps","ssrObserveBreakpoints","reduce","acc","serverBp","foundBp","find","alias","push","console","warn","FLEX_SSR_SERIALIZER_FACTORY","_document","styleTag","createElement","classList","add","CLASS_NAME","textContent","appendChild","css","styles","el","keyVals","className","getClassName","v","k","format","list","_i","arguments","length","result","IS_DEBUG_MODE","formatSegment","asPrefix","element","get","nextId","set","setPrototypeOf","__proto__","Array","p","hasOwnProperty","ServerMediaQueryList","_mediaQuery","_isActive","_listeners","onchange","defineProperty","destroy","deactivate","activate","_this","callback","call","addListener","listener","indexOf","removeListener","_","addEventListener","___","removeEventListener","dispatchEvent","ServerMatchMedia","_super","_zone","_platformId","tslib_1.__extends","lookupBreakpoint","registry","buildMQL","query","type","Injectable","NgZone","decorators","Inject","args","PLATFORM_ID","undefined","DOCUMENT","MatchMedia","SERVER_PROVIDERS","provide","BEFORE_APP_SERIALIZED","useFactory","deps","StylesheetMap","BREAKPOINTS","LAYOUT_CONFIG","multi","SERVER_TOKEN","useValue","useClass","FlexLayoutServerModule","NgModule","providers"],"mappings":";;;;;;;qjBAuBA,SAAgBA,GAAUC,EAAGC,GAEzB,QAASC,KAAOC,KAAKC,YAAcJ,EADnCK,EAAcL,EAAGC,GAEjBD,EAAEM,UAAkB,OAANL,EAAaM,OAAOC,OAAOP,IAAMC,EAAGI,UAAYL,EAAEK,UAAW,GAAIJ,ICOnF,QAAgBO,GAA+BC,EACAC,EACAC,EACAC,GAI/C,GAAQC,GAAW,GAAIC,KAIfC,EAAgB,GAAID,KAAIL,EAAYO,YACtCC,EAAYC,EAAYH,EAAe,MAAOF,EAE9CF,GAANQ,QAAmBC,KAAKC,EAAAA,uBAAuBC,QAAO,SAAEC,EAAIC,GACxDf,EAAYgB,cACZf,EAAgBgB,mBAAmBH,EACvC,IAAUP,GAAa,GAAIF,KAAIL,EAAYO,WACnCA,GAAWW,KAAO,IACpBV,GAAaC,EAAYF,EAAYO,EAAGK,WAAYf,IAEtDH,EAAgBmB,qBAAqBlB,EAAYa,KAGrD,IAAQM,GAAYlB,EAAamB,qBAe/B,OAdID,IACFA,EACGE,OAAM,SAAEC,EAAmBC,GAClC,GAAcC,GAAUxB,EAAYyB,KAAI,SAACb,GAAM,MAAAW,KAAaX,EAAGc,OAMvD,OALKF,GAGHF,EAAIK,KAAKH,GAFTI,QAAQC,KAAK,qDAAqDN,EAA5E,KAIeD,OAERX,QAAQZ,EAAgBgB,oBAGtBT,EAOT,QAAgBwB,GAA4BhC,EACAC,EACAgC,EACA/B,EACAC,GAC1C,MAAA,YAGF,GAAU+B,GAAWD,EAAUE,cAAc,SACnC3B,EAAYT,EAA+BC,EAAaC,EAAiBC,EAC7EC,EACF+B,GAASE,UAAUC,IAAOC,EAAAA,WAA9B,OACIJ,EAASK,YAAc/B,EACvByB,EAAc,KAAEO,YAAYN,IA8ChC,QAASzB,GAAYF,EAAwBY,EAAoBf,GACjE,GAAMqC,GAAM,EAcV,OAbAlC,GAAWM,QAAO,SAAE6B,EAAQC,GAC9B,GAAQC,GAAU,GACVC,EAAYC,EAAaH,EAAIvC,EAEjCsC,GAAO7B,QAAO,SAAEkC,EAAGC,GACjBJ,GAAWG,EAAIE,EAAUD,EAA/B,IAAoCD,EAApC,KAA4C,KAIxCN,GAAOQ,EAAO,IAAIJ,EAAtB,KAAqCD,EAAS,OAIrCK,EAAO,UAAU9B,EAA1B,KAA0CsB,EAAK,KAO/C,QAASQ,KAAT,IAAgB,GAAhBC,MAAAC,EAAA,EAAgBA,EAAhBC,UAAAC,OAAgBF,IAAAD,EAAhBC,GAAAC,UAAAD,EACA,IAAMG,GAAS,EAIb,OAHAJ,GAAKrC,QAAO,SAAE4B,EAAK1B,GACjBuC,GAAUC,EAAgBC,EAAcf,EAAW,IAAN1B,GAAW0B,IAEnDa,EAGT,QAASE,GAAcf,EAAagB,GAClC,WADF,KAAAA,IAAoCA,GAApC,GACSA,EAAW,KAAKhB,EAAWA,EAApC,KAQA,QAASK,GAAaY,EAAsBtD,GAC5C,GAAMyC,GAAYzC,EAASuD,IAAID,EAO7B,OANKb,KACHA,EAAY,GAAGP,EAAAA,WAAasB,IAC5BxD,EAASyD,IAAIH,EAASb,IAExBa,EAAQtB,UAAUC,IAAIQ,GAEfA,EDzKT,GAAIlD,GAAgB,SAASL,EAAGC,GAI5B,OAHAI,EAAgBE,OAAOiE,iBAChBC,uBAA2BC,QAAS,SAAU1E,EAAGC,GAAKD,EAAEyE,UAAYxE,IACvE,SAAUD,EAAGC,GAAK,IAAK,GAAI0E,KAAK1E,GAAOA,EAAE2E,eAAeD,KAAI3E,EAAE2E,GAAK1E,EAAE0E,MACpD3E,EAAGC,iBEQ1B,QAAF4E,GAAsBC,GAAA3E,KAAtB2E,YAAsBA,EAXZ3E,KAAV4E,WAAsB,EACZ5E,KAAV6E,cAoFE7E,KAAF8E,SAAqC,KACrC,MAnFE1E,QAAF2E,eAAML,EAANvE,UAAA,eAAE,WACE,MAAOH,MAAK4E,2CAGdxE,OAAF2E,eAAML,EAANvE,UAAA,aAAE,WACE,MAAOH,MAAK2E,6CASdD,EAAFvE,UAAA6E,QAAE,WACEhF,KAAKiF,aACLjF,KAAK6E,eAIPH,EAAFvE,UAAA+E,SAAE,WAAA,GAAFC,GAAAnF,IAQI,OAPKA,MAAK4E,YACR5E,KAAK4E,WAAY,EACjB5E,KAAK6E,WAAWzD,QAAO,SAAEgE,GACf,EACLC,KAAK,KAAMF,MAGXnF,MAIT0E,EAAFvE,UAAA8E,WAAE,WAAA,GAAFE,GAAAnF,IAQI,OAPIA,MAAK4E,YACP5E,KAAK4E,WAAY,EACjB5E,KAAK6E,WAAWzD,QAAO,SAAEgE,GACf,EACLC,KAAK,KAAMF,MAGXnF,MAIT0E,EAAFvE,UAAAmF,YAAE,SAAYC,GAIV,IAH2C,IAAvCvF,KAAK6E,WAAWW,QAAQD,IAC1BvF,KAAK6E,WAAWzC,KAAKmD,GAEnBvF,KAAK4E,UAAW,CACV,EACLS,KAAK,KAAMrF,QAKlB0E,EAAFvE,UAAAsF,eAAE,SAAeC,KAQfhB,EAAFvE,UAAAwF,iBAAE,SAAiBD,EACA3F,EACA6F,KAQjBlB,EAAFvE,UAAA0F,oBAAE,SAAoBH,EACA3F,EACA6F,KAGpBlB,EAAFvE,UAAA2F,cAAE,SAAcJ,GACZ,OAAO,GAIXhB,KAQAqB,EAAA,SAAAC,GAEE,QAAFD,GAAwBE,EACqBC,EACH1D,GAFxC,GAAF2C,GAGIa,EAHJX,KAAArF,KAGUiG,EAAOC,EAAa1D,IAH9BxC,WAAwBmF,GAAxBc,MAAwBA,EACqBd,EAA7Ce,YAA6CA,EACHf,EAA1C3C,UAA0CA,IA2B1C,MA9BsC2D,GAAtCJ,EAAAC,GAQED,EAAF5F,UAAAqB,mBAAE,SAAmBH,GACrB,GAAU+E,GAAmBpG,KAAKqG,SAASnC,IAAI7C,EAAGK,WAC1C0E,IACFA,EAAiBlB,YAKrBa,EAAF5F,UAAAwB,qBAAE,SAAqBN,GACvB,GAAU+E,GAAmBpG,KAAKqG,SAASnC,IAAI7C,EAAGK,WAC1C0E,IACFA,EAAiBnB,cAQXc,EAAZ5F,UAAAmG,SAAE,SAAmBC,GACjB,MAAO,IAAI7B,GAAqB6B,mBA7BpCC,KAACC,EAAAA,iDAvGDD,KAA4BE,EAAAA,SA0G5BF,KAA0DpG,OAA1DuG,aAAAH,KAAeI,EAAAA,OAAfC,MAAsBC,EAAAA,iBACtBN,SAAAO,GAAAJ,aAAAH,KAAeI,EAAAA,OAAfC,MAAsBG,EAAAA,eA2BtBjB,GA9BsCkB,EAAAA,aDbzBC,IAETC,QAAqCC,EAAqB,sBAC1DC,WAAY9E,EACZ+E,MACEC,EAAAA,cACAN,EAAAA,YACAD,EAAAA,SACAQ,EAAAA,YACAC,EAAAA,eAEFC,OAAO,IAGPP,QAASQ,EAAAA,aACTC,UAAU,IAGVT,QAASF,EAAAA,YACTY,SAAU9B,IAKV5B,EAAS,EACPL,GAAgB,EEjHtBgE,EAAA,WAAA,QAAAA,MAGqC,sBAHrCtB,KAACuB,EAAAA,SAADlB,OACEmB,WAAYd,OAEdY"} \ No newline at end of file diff --git a/bundles/flex-layout.umd.js b/bundles/flex-layout.umd.js index 34cec75de..3f56f0dcf 100644 --- a/bundles/flex-layout.umd.js +++ b/bundles/flex-layout.umd.js @@ -6,23 +6,8429 @@ * found in the LICENSE file at https://angular.io/license */ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/flex-layout/core'), require('@angular/flex-layout/extended'), require('@angular/flex-layout/flex'), require('@angular/flex-layout/grid')) : - typeof define === 'function' && define.amd ? define('@angular/flex-layout', ['exports', '@angular/core', '@angular/common', '@angular/flex-layout/core', '@angular/flex-layout/extended', '@angular/flex-layout/flex', '@angular/flex-layout/grid'], factory) : - (factory((global.ng = global.ng || {}, global.ng['flex-layout'] = {}),global.ng.core,global.ng.common,global.ng.flexLayout.core,global.ng.flexLayout.extended,global.ng.flexLayout.flex,global.ng.flexLayout.grid)); -}(this, (function (exports,core,common,core$1,extended,flex,grid) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('rxjs'), require('rxjs/operators'), require('@angular/cdk/coercion'), require('@angular/platform-browser'), require('@angular/cdk/bidi')) : + typeof define === 'function' && define.amd ? define('@angular/flex-layout', ['exports', '@angular/core', '@angular/common', 'rxjs', 'rxjs/operators', '@angular/cdk/coercion', '@angular/platform-browser', '@angular/cdk/bidi'], factory) : + (factory((global.ng = global.ng || {}, global.ng.flexLayout = {}),global.ng.core,global.ng.common,global.rxjs,global.rxjs.operators,global.ng.cdk.coercion,global.ng.platformBrowser,global.ng.cdk.bidi)); +}(this, (function (exports,core,common,rxjs,operators,coercion,platformBrowser,bidi) { 'use strict'; + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ +/* global Reflect, Promise */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Find all of the server-generated stylings, if any, and remove them + * This will be in the form of inline classes and the style block in the + * head of the DOM + * @param {?} _document + * @param {?} platformId + * @return {?} + */ +function removeStyles(_document, platformId) { + return (/** + * @return {?} + */ + function () { + if (common.isPlatformBrowser(platformId)) { + /** @type {?} */ + var elements = Array.from(_document.querySelectorAll("[class*=" + CLASS_NAME + "]")); + // RegExp constructor should only be used if passing a variable to the constructor. + // When using static regular expression it is more performant to use reg exp literal. + // This is also needed to provide Safari 9 compatibility, please see + // https://stackoverflow.com/questions/37919802 for more discussion. + /** @type {?} */ + var classRegex_1 = /\bflex-layout-.+?\b/g; + elements.forEach((/** + * @param {?} el + * @return {?} + */ + function (el) { + el.classList.contains(CLASS_NAME + "ssr") && el.parentNode ? + el.parentNode.removeChild(el) : el.className.replace(classRegex_1, ''); + })); + } + }); +} +/** + * Provider to remove SSR styles on the browser + * @type {?} + */ +var BROWSER_PROVIDER = { + provide: (/** @type {?} */ (core.APP_BOOTSTRAP_LISTENER)), + useFactory: removeStyles, + deps: [common.DOCUMENT, core.PLATFORM_ID], + multi: true +}; +/** @type {?} */ +var CLASS_NAME = 'flex-layout-'; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * ***************************************************************** + * Define module for the MediaQuery API + * ***************************************************************** + */ +var CoreModule = /** @class */ (function () { + function CoreModule() { + } + CoreModule.decorators = [ + { type: core.NgModule, args: [{ + providers: [BROWSER_PROVIDER] + },] }, + ]; + return CoreModule; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Class instances emitted [to observers] for each mql notification + */ +var /** + * Class instances emitted [to observers] for each mql notification + */ +MediaChange = /** @class */ (function () { + /** + * @param matches whether the mediaQuery is currently activated + * @param mediaQuery e.g. (min-width: 600px) and (max-width: 959px) + * @param mqAlias e.g. gt-sm, md, gt-lg + * @param suffix e.g. GtSM, Md, GtLg + * @param priority the priority of activation for the given breakpoint + */ + function MediaChange(matches, mediaQuery, mqAlias, suffix, priority) { + if (matches === void 0) { matches = false; } + if (mediaQuery === void 0) { mediaQuery = 'all'; } + if (mqAlias === void 0) { mqAlias = ''; } + if (suffix === void 0) { suffix = ''; } + if (priority === void 0) { priority = 0; } + this.matches = matches; + this.mediaQuery = mediaQuery; + this.mqAlias = mqAlias; + this.suffix = suffix; + this.priority = priority; + this.property = ''; + } + /** Create an exact copy of the MediaChange */ + /** + * Create an exact copy of the MediaChange + * @return {?} + */ + MediaChange.prototype.clone = /** + * Create an exact copy of the MediaChange + * @return {?} + */ + function () { + return new MediaChange(this.matches, this.mediaQuery, this.mqAlias, this.suffix); + }; + return MediaChange; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Utility to emulate a CSS stylesheet + * + * This utility class stores all of the styles for a given HTML element + * as a readonly `stylesheet` map. + */ +var StylesheetMap = /** @class */ (function () { + function StylesheetMap() { + this.stylesheet = new Map(); + } + /** + * Add an individual style to an HTML element + */ + /** + * Add an individual style to an HTML element + * @param {?} element + * @param {?} style + * @param {?} value + * @return {?} + */ + StylesheetMap.prototype.addStyleToElement = /** + * Add an individual style to an HTML element + * @param {?} element + * @param {?} style + * @param {?} value + * @return {?} + */ + function (element, style, value) { + /** @type {?} */ + var stylesheet = this.stylesheet.get(element); + if (stylesheet) { + stylesheet.set(style, value); + } + else { + this.stylesheet.set(element, new Map([[style, value]])); + } + }; + /** + * Clear the virtual stylesheet + */ + /** + * Clear the virtual stylesheet + * @return {?} + */ + StylesheetMap.prototype.clearStyles = /** + * Clear the virtual stylesheet + * @return {?} + */ + function () { + this.stylesheet.clear(); + }; + /** + * Retrieve a given style for an HTML element + */ + /** + * Retrieve a given style for an HTML element + * @param {?} el + * @param {?} styleName + * @return {?} + */ + StylesheetMap.prototype.getStyleForElement = /** + * Retrieve a given style for an HTML element + * @param {?} el + * @param {?} styleName + * @return {?} + */ + function (el, styleName) { + /** @type {?} */ + var styles = this.stylesheet.get(el); + /** @type {?} */ + var value = ''; + if (styles) { + /** @type {?} */ + var style = styles.get(styleName); + if (typeof style === 'number' || typeof style === 'string') { + value = style + ''; + } + } + return value; + }; + StylesheetMap.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ StylesheetMap.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function StylesheetMap_Factory() { return new StylesheetMap(); }, token: StylesheetMap, providedIn: "root" }); + return StylesheetMap; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var DEFAULT_CONFIG = { + addFlexToParent: true, + addOrientationBps: false, + disableDefaultBps: false, + disableVendorPrefixes: false, + serverLoaded: false, + useColumnBasisZero: true, + printWithBreakpoints: [], + mediaTriggerAutoRestore: true, + ssrObserveBreakpoints: [], +}; +/** @type {?} */ +var LAYOUT_CONFIG = new core.InjectionToken('Flex Layout token, config options for the library', { + providedIn: 'root', + factory: (/** + * @return {?} + */ + function () { return DEFAULT_CONFIG; }) +}); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Token that is provided to tell whether the FlexLayoutServerModule + * has been included in the bundle + * + * NOTE: This can be manually provided to disable styles when using SSR + * @type {?} + */ +var SERVER_TOKEN = new core.InjectionToken('FlexLayoutServerLoaded', { + providedIn: 'root', + factory: (/** + * @return {?} + */ + function () { return false; }) +}); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var BREAKPOINT = new core.InjectionToken('Flex Layout token, collect all breakpoints into one provider', { + providedIn: 'root', + factory: (/** + * @return {?} + */ + function () { return null; }) +}); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * For the specified MediaChange, make sure it contains the breakpoint alias + * and suffix (if available). + * @param {?} dest + * @param {?} source + * @return {?} + */ +function mergeAlias(dest, source) { + dest = dest ? dest.clone() : new MediaChange(); + if (source) { + dest.mqAlias = source.alias; + dest.mediaQuery = source.mediaQuery; + dest.suffix = (/** @type {?} */ (source.suffix)); + dest.priority = (/** @type {?} */ (source.priority)); + } + return dest; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + * @type {?} + */ +var INLINE = 'inline'; +/** @type {?} */ +var LAYOUT_VALUES = ['row', 'column', 'row-reverse', 'column-reverse']; +/** + * Validate the direction|'direction wrap' value and then update the host's inline flexbox styles + * @param {?} value + * @return {?} + */ +function buildLayoutCSS(value) { + var _a = validateValue(value), direction = _a[0], wrap = _a[1], isInline = _a[2]; + return buildCSS(direction, wrap, isInline); +} +/** + * Validate the value to be one of the acceptable value options + * Use default fallback of 'row' + * @param {?} value + * @return {?} + */ +function validateValue(value) { + value = value ? value.toLowerCase() : ''; + var _a = value.split(' '), direction = _a[0], wrap = _a[1], inline = _a[2]; + // First value must be the `flex-direction` + if (!LAYOUT_VALUES.find((/** + * @param {?} x + * @return {?} + */ + function (x) { return x === direction; }))) { + direction = LAYOUT_VALUES[0]; + } + if (wrap === INLINE) { + wrap = (inline !== INLINE) ? inline : ''; + inline = INLINE; + } + return [direction, validateWrapValue(wrap), !!inline]; +} +/** + * Convert layout-wrap='' to expected flex-wrap style + * @param {?} value + * @return {?} + */ +function validateWrapValue(value) { + if (!!value) { + switch (value.toLowerCase()) { + case 'reverse': + case 'wrap-reverse': + case 'reverse-wrap': + value = 'wrap-reverse'; + break; + case 'no': + case 'none': + case 'nowrap': + value = 'nowrap'; + break; + // All other values fallback to 'wrap' + default: + value = 'wrap'; + break; + } + } + return value; +} +/** + * Build the CSS that should be assigned to the element instance + * BUG: + * 1) min-height on a column flex container won’t apply to its flex item children in IE 10-11. + * Use height instead if possible; height : vh; + * + * This way any padding or border specified on the child elements are + * laid out and drawn inside that element's specified width and height. + * @param {?} direction + * @param {?=} wrap + * @param {?=} inline + * @return {?} + */ +function buildCSS(direction, wrap, inline) { + if (wrap === void 0) { wrap = null; } + if (inline === void 0) { inline = false; } + return { + 'display': inline ? 'inline-flex' : 'flex', + 'box-sizing': 'border-box', + 'flex-direction': direction, + 'flex-wrap': !!wrap ? wrap : null + }; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @abstract + */ +var /** + * @abstract + */ +BaseDirective2 = /** @class */ (function () { + function BaseDirective2(elementRef, styleBuilder, styler, marshal) { + this.elementRef = elementRef; + this.styleBuilder = styleBuilder; + this.styler = styler; + this.marshal = marshal; + this.DIRECTIVE_KEY = ''; + this.inputs = []; + /** + * The most recently used styles for the builder + */ + this.mru = {}; + this.destroySubject = new rxjs.Subject(); + /** + * Cache map for style computation + */ + this.styleCache = new Map(); + } + Object.defineProperty(BaseDirective2.prototype, "parentElement", { + /** Access to host element's parent DOM node */ + get: /** + * Access to host element's parent DOM node + * @protected + * @return {?} + */ + function () { + return this.elementRef.nativeElement.parentElement; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(BaseDirective2.prototype, "nativeElement", { + /** Access to the HTMLElement for the directive */ + get: /** + * Access to the HTMLElement for the directive + * @protected + * @return {?} + */ + function () { + return this.elementRef.nativeElement; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(BaseDirective2.prototype, "activatedValue", { + /** Access to the activated value for the directive */ + get: /** + * Access to the activated value for the directive + * @return {?} + */ + function () { + return this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY); + }, + set: /** + * @param {?} value + * @return {?} + */ + function (value) { + this.marshal.setValue(this.nativeElement, this.DIRECTIVE_KEY, value, this.marshal.activatedAlias); + }, + enumerable: true, + configurable: true + }); + /** For @Input changes */ + /** + * For \@Input changes + * @param {?} changes + * @return {?} + */ + BaseDirective2.prototype.ngOnChanges = /** + * For \@Input changes + * @param {?} changes + * @return {?} + */ + function (changes) { + var _this = this; + Object.keys(changes).forEach((/** + * @param {?} key + * @return {?} + */ + function (key) { + if (_this.inputs.indexOf(key) !== -1) { + /** @type {?} */ + var bp = key.split('.').slice(1).join('.'); + /** @type {?} */ + var val = changes[key].currentValue; + _this.setValue(val, bp); + } + })); + }; + /** + * @return {?} + */ + BaseDirective2.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { + this.destroySubject.next(); + this.destroySubject.complete(); + this.marshal.releaseElement(this.nativeElement); + }; + /** Register with central marshaller service */ + /** + * Register with central marshaller service + * @protected + * @param {?=} extraTriggers + * @return {?} + */ + BaseDirective2.prototype.init = /** + * Register with central marshaller service + * @protected + * @param {?=} extraTriggers + * @return {?} + */ + function (extraTriggers) { + if (extraTriggers === void 0) { extraTriggers = []; } + this.marshal.init(this.elementRef.nativeElement, this.DIRECTIVE_KEY, this.updateWithValue.bind(this), this.clearStyles.bind(this), extraTriggers); + }; + /** Add styles to the element using predefined style builder */ + /** + * Add styles to the element using predefined style builder + * @protected + * @param {?} input + * @param {?=} parent + * @return {?} + */ + BaseDirective2.prototype.addStyles = /** + * Add styles to the element using predefined style builder + * @protected + * @param {?} input + * @param {?=} parent + * @return {?} + */ + function (input, parent) { + /** @type {?} */ + var builder = this.styleBuilder; + /** @type {?} */ + var useCache = builder.shouldCache; + /** @type {?} */ + var genStyles = this.styleCache.get(input); + if (!genStyles || !useCache) { + genStyles = builder.buildStyles(input, parent); + if (useCache) { + this.styleCache.set(input, genStyles); + } + } + this.mru = __assign({}, genStyles); + this.applyStyleToElement(genStyles); + builder.sideEffect(input, genStyles, parent); + }; + /** Remove generated styles from an element using predefined style builder */ + /** + * Remove generated styles from an element using predefined style builder + * @protected + * @return {?} + */ + BaseDirective2.prototype.clearStyles = /** + * Remove generated styles from an element using predefined style builder + * @protected + * @return {?} + */ + function () { + var _this = this; + Object.keys(this.mru).forEach((/** + * @param {?} k + * @return {?} + */ + function (k) { + _this.mru[k] = ''; + })); + this.applyStyleToElement(this.mru); + this.mru = {}; + }; + /** Force trigger style updates on DOM element */ + /** + * Force trigger style updates on DOM element + * @protected + * @return {?} + */ + BaseDirective2.prototype.triggerUpdate = /** + * Force trigger style updates on DOM element + * @protected + * @return {?} + */ + function () { + this.marshal.triggerUpdate(this.nativeElement, this.DIRECTIVE_KEY); + }; + /** + * Determine the DOM element's Flexbox flow (flex-direction). + * + * Check inline style first then check computed (stylesheet) style. + * And optionally add the flow value to element's inline style. + */ + /** + * Determine the DOM element's Flexbox flow (flex-direction). + * + * Check inline style first then check computed (stylesheet) style. + * And optionally add the flow value to element's inline style. + * @protected + * @param {?} target + * @param {?=} addIfMissing + * @return {?} + */ + BaseDirective2.prototype.getFlexFlowDirection = /** + * Determine the DOM element's Flexbox flow (flex-direction). + * + * Check inline style first then check computed (stylesheet) style. + * And optionally add the flow value to element's inline style. + * @protected + * @param {?} target + * @param {?=} addIfMissing + * @return {?} + */ + function (target, addIfMissing) { + if (addIfMissing === void 0) { addIfMissing = false; } + if (target) { + var _a = this.styler.getFlowDirection(target), value = _a[0], hasInlineValue = _a[1]; + if (!hasInlineValue && addIfMissing) { + /** @type {?} */ + var style = buildLayoutCSS(value); + /** @type {?} */ + var elements = [target]; + this.styler.applyStyleToElements(style, elements); + } + return value.trim(); + } + return 'row'; + }; + /** Applies styles given via string pair or object map to the directive element */ + /** + * Applies styles given via string pair or object map to the directive element + * @protected + * @param {?} style + * @param {?=} value + * @param {?=} element + * @return {?} + */ + BaseDirective2.prototype.applyStyleToElement = /** + * Applies styles given via string pair or object map to the directive element + * @protected + * @param {?} style + * @param {?=} value + * @param {?=} element + * @return {?} + */ + function (style, value, element) { + if (element === void 0) { element = this.nativeElement; } + this.styler.applyStyleToElement(element, style, value); + }; + /** + * @protected + * @param {?} val + * @param {?} bp + * @return {?} + */ + BaseDirective2.prototype.setValue = /** + * @protected + * @param {?} val + * @param {?} bp + * @return {?} + */ + function (val, bp) { + this.marshal.setValue(this.nativeElement, this.DIRECTIVE_KEY, val, bp); + }; + /** + * @protected + * @param {?} input + * @return {?} + */ + BaseDirective2.prototype.updateWithValue = /** + * @protected + * @param {?} input + * @return {?} + */ + function (input) { + this.addStyles(input); + }; + return BaseDirective2; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * NOTE: Smaller ranges have HIGHER priority since the match is more specific + * @type {?} + */ +var DEFAULT_BREAKPOINTS = [ + { + alias: 'xs', + mediaQuery: 'screen and (min-width: 0px) and (max-width: 599.9px)', + priority: 1000, + }, + { + alias: 'sm', + mediaQuery: 'screen and (min-width: 600px) and (max-width: 959.9px)', + priority: 900, + }, + { + alias: 'md', + mediaQuery: 'screen and (min-width: 960px) and (max-width: 1279.9px)', + priority: 800, + }, + { + alias: 'lg', + mediaQuery: 'screen and (min-width: 1280px) and (max-width: 1919.9px)', + priority: 700, + }, + { + alias: 'xl', + mediaQuery: 'screen and (min-width: 1920px) and (max-width: 4999.9px)', + priority: 600, + }, + { + alias: 'lt-sm', + overlapping: true, + mediaQuery: 'screen and (max-width: 599.9px)', + priority: 950, + }, + { + alias: 'lt-md', + overlapping: true, + mediaQuery: 'screen and (max-width: 959.9px)', + priority: 850, + }, + { + alias: 'lt-lg', + overlapping: true, + mediaQuery: 'screen and (max-width: 1279.9px)', + priority: 750, + }, + { + alias: 'lt-xl', + overlapping: true, + priority: 650, + mediaQuery: 'screen and (max-width: 1919.9px)', + }, + { + alias: 'gt-xs', + overlapping: true, + mediaQuery: 'screen and (min-width: 600px)', + priority: -950, + }, + { + alias: 'gt-sm', + overlapping: true, + mediaQuery: 'screen and (min-width: 960px)', + priority: -850, + }, { + alias: 'gt-md', + overlapping: true, + mediaQuery: 'screen and (min-width: 1280px)', + priority: -750, + }, + { + alias: 'gt-lg', + overlapping: true, + mediaQuery: 'screen and (min-width: 1920px)', + priority: -650, + } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/* tslint:disable */ +/** @type {?} */ +var HANDSET_PORTRAIT = '(orientation: portrait) and (max-width: 599.9px)'; +/** @type {?} */ +var HANDSET_LANDSCAPE = '(orientation: landscape) and (max-width: 959.9px)'; +/** @type {?} */ +var TABLET_PORTRAIT = '(orientation: portrait) and (min-width: 600px) and (max-width: 839.9px)'; +/** @type {?} */ +var TABLET_LANDSCAPE = '(orientation: landscape) and (min-width: 960px) and (max-width: 1279.9px)'; +/** @type {?} */ +var WEB_PORTRAIT = '(orientation: portrait) and (min-width: 840px)'; +/** @type {?} */ +var WEB_LANDSCAPE = '(orientation: landscape) and (min-width: 1280px)'; +/** @type {?} */ +var ScreenTypes = { + 'HANDSET': HANDSET_PORTRAIT + ", " + HANDSET_LANDSCAPE, + 'TABLET': TABLET_PORTRAIT + " , " + TABLET_LANDSCAPE, + 'WEB': WEB_PORTRAIT + ", " + WEB_LANDSCAPE + " ", + 'HANDSET_PORTRAIT': "" + HANDSET_PORTRAIT, + 'TABLET_PORTRAIT': TABLET_PORTRAIT + " ", + 'WEB_PORTRAIT': "" + WEB_PORTRAIT, + 'HANDSET_LANDSCAPE': HANDSET_LANDSCAPE + "]", + 'TABLET_LANDSCAPE': "" + TABLET_LANDSCAPE, + 'WEB_LANDSCAPE': "" + WEB_LANDSCAPE +}; +/** + * Extended Breakpoints for handset/tablets with landscape or portrait orientations + * @type {?} + */ +var ORIENTATION_BREAKPOINTS = [ + { 'alias': 'handset', priority: 2000, 'mediaQuery': ScreenTypes.HANDSET }, + { 'alias': 'handset.landscape', priority: 2000, 'mediaQuery': ScreenTypes.HANDSET_LANDSCAPE }, + { 'alias': 'handset.portrait', priority: 2000, 'mediaQuery': ScreenTypes.HANDSET_PORTRAIT }, + { 'alias': 'tablet', priority: 2100, 'mediaQuery': ScreenTypes.TABLET }, + { 'alias': 'tablet.landscape', priority: 2100, 'mediaQuery': ScreenTypes.TABLET }, + { 'alias': 'tablet.portrait', priority: 2100, 'mediaQuery': ScreenTypes.TABLET_PORTRAIT }, + { 'alias': 'web', priority: 2200, 'mediaQuery': ScreenTypes.WEB, overlapping: true }, + { 'alias': 'web.landscape', priority: 2200, 'mediaQuery': ScreenTypes.WEB_LANDSCAPE, overlapping: true }, + { 'alias': 'web.portrait', priority: 2200, 'mediaQuery': ScreenTypes.WEB_PORTRAIT, overlapping: true } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * Extends an object with the *enumerable* and *own* properties of one or more source objects, + * similar to Object.assign. + * + * @param {?} dest The object which will have properties copied to it. + * @param {...?} sources The source objects from which properties will be copied. + * @return {?} + */ +function extendObject(dest) { + var sources = []; + for (var _i = 1; _i < arguments.length; _i++) { + sources[_i - 1] = arguments[_i]; + } + if (dest == null) { + throw TypeError('Cannot convert undefined or null to object'); + } + for (var _a = 0, sources_1 = sources; _a < sources_1.length; _a++) { + var source = sources_1[_a]; + if (source != null) { + for (var key in source) { + if (source.hasOwnProperty(key)) { + dest[key] = source[key]; + } + } + } + } + return dest; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var ALIAS_DELIMITERS = /(\.|-|_)/g; +/** + * @param {?} part + * @return {?} + */ +function firstUpperCase(part) { + /** @type {?} */ + var first = part.length > 0 ? part.charAt(0) : ''; + /** @type {?} */ + var remainder = (part.length > 1) ? part.slice(1) : ''; + return first.toUpperCase() + remainder; +} +/** + * Converts snake-case to SnakeCase. + * @param {?} name Text to UpperCamelCase + * @return {?} + */ +function camelCase(name) { + return name + .replace(ALIAS_DELIMITERS, '|') + .split('|') + .map(firstUpperCase) + .join(''); +} +/** + * For each breakpoint, ensure that a Suffix is defined; + * fallback to UpperCamelCase the unique Alias value + * @param {?} list + * @return {?} + */ +function validateSuffixes(list) { + list.forEach((/** + * @param {?} bp + * @return {?} + */ + function (bp) { + if (!bp.suffix) { + bp.suffix = camelCase(bp.alias); // create Suffix value based on alias + bp.overlapping = !!bp.overlapping; // ensure default value + } + })); + return list; +} +/** + * Merge a custom breakpoint list with the default list based on unique alias values + * - Items are added if the alias is not in the default list + * - Items are merged with the custom override if the alias exists in the default list + * @param {?} defaults + * @param {?=} custom + * @return {?} + */ +function mergeByAlias(defaults, custom) { + if (custom === void 0) { custom = []; } + /** @type {?} */ + var dict = {}; + defaults.forEach((/** + * @param {?} bp + * @return {?} + */ + function (bp) { + dict[bp.alias] = bp; + })); + // Merge custom breakpoints + custom.forEach((/** + * @param {?} bp + * @return {?} + */ + function (bp) { + if (dict[bp.alias]) { + extendObject(dict[bp.alias], bp); + } + else { + dict[bp.alias] = bp; + } + })); + return validateSuffixes(Object.keys(dict).map((/** + * @param {?} k + * @return {?} + */ + function (k) { return dict[k]; }))); +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Injection token unique to the flex-layout library. + * Use this token when build a custom provider (see below). + * @type {?} + */ +var BREAKPOINTS = new core.InjectionToken('Token (@angular/flex-layout) Breakpoints', { + providedIn: 'root', + factory: (/** + * @return {?} + */ + function () { + /** @type {?} */ + var breakpoints = core.inject(BREAKPOINT); + /** @type {?} */ + var layoutConfig = core.inject(LAYOUT_CONFIG); + /** @type {?} */ + var bpFlattenArray = [].concat.apply([], (breakpoints || []) + .map((/** + * @param {?} v + * @return {?} + */ + function (v) { return Array.isArray(v) ? v : [v]; }))); + /** @type {?} */ + var builtIns = (layoutConfig.disableDefaultBps ? [] : DEFAULT_BREAKPOINTS) + .concat(layoutConfig.addOrientationBps ? ORIENTATION_BREAKPOINTS : []); + return mergeByAlias(builtIns, bpFlattenArray); + }) +}); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * HOF to sort the breakpoints by descending priority + * @template T + * @param {?} a + * @param {?} b + * @return {?} + */ +function sortDescendingPriority(a, b) { + /** @type {?} */ + var priorityA = a ? a.priority || 0 : 0; + /** @type {?} */ + var priorityB = b ? b.priority || 0 : 0; + return priorityB - priorityA; +} +/** + * HOF to sort the breakpoints by ascending priority + * @template T + * @param {?} a + * @param {?} b + * @return {?} + */ +function sortAscendingPriority(a, b) { + /** @type {?} */ + var pA = a.priority || 0; + /** @type {?} */ + var pB = b.priority || 0; + return pA - pB; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Registry of 1..n MediaQuery breakpoint ranges + * This is published as a provider and may be overridden from custom, application-specific ranges + * + */ +var BreakPointRegistry = /** @class */ (function () { + function BreakPointRegistry(list) { + /** + * Memoized BreakPoint Lookups + */ + this.findByMap = new Map(); + this.items = list.slice().sort(sortAscendingPriority); + } + /** + * Search breakpoints by alias (e.g. gt-xs) + */ + /** + * Search breakpoints by alias (e.g. gt-xs) + * @param {?} alias + * @return {?} + */ + BreakPointRegistry.prototype.findByAlias = /** + * Search breakpoints by alias (e.g. gt-xs) + * @param {?} alias + * @return {?} + */ + function (alias) { + return !alias ? null : this.findWithPredicate(alias, (/** + * @param {?} bp + * @return {?} + */ + function (bp) { return bp.alias == alias; })); + }; + /** + * @param {?} query + * @return {?} + */ + BreakPointRegistry.prototype.findByQuery = /** + * @param {?} query + * @return {?} + */ + function (query) { + return this.findWithPredicate(query, (/** + * @param {?} bp + * @return {?} + */ + function (bp) { return bp.mediaQuery == query; })); + }; + Object.defineProperty(BreakPointRegistry.prototype, "overlappings", { + /** + * Get all the breakpoints whose ranges could overlapping `normal` ranges; + * e.g. gt-sm overlaps md, lg, and xl + */ + get: /** + * Get all the breakpoints whose ranges could overlapping `normal` ranges; + * e.g. gt-sm overlaps md, lg, and xl + * @return {?} + */ + function () { + return this.items.filter((/** + * @param {?} it + * @return {?} + */ + function (it) { return it.overlapping == true; })); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(BreakPointRegistry.prototype, "aliases", { + /** + * Get list of all registered (non-empty) breakpoint aliases + */ + get: /** + * Get list of all registered (non-empty) breakpoint aliases + * @return {?} + */ + function () { + return this.items.map((/** + * @param {?} it + * @return {?} + */ + function (it) { return it.alias; })); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(BreakPointRegistry.prototype, "suffixes", { + /** + * Aliases are mapped to properties using suffixes + * e.g. 'gt-sm' for property 'layout' uses suffix 'GtSm' + * for property layoutGtSM. + */ + get: /** + * Aliases are mapped to properties using suffixes + * e.g. 'gt-sm' for property 'layout' uses suffix 'GtSm' + * for property layoutGtSM. + * @return {?} + */ + function () { + return this.items.map((/** + * @param {?} it + * @return {?} + */ + function (it) { return !!it.suffix ? it.suffix : ''; })); + }, + enumerable: true, + configurable: true + }); + /** + * Memoized lookup using custom predicate function + */ + /** + * Memoized lookup using custom predicate function + * @private + * @param {?} key + * @param {?} searchFn + * @return {?} + */ + BreakPointRegistry.prototype.findWithPredicate = /** + * Memoized lookup using custom predicate function + * @private + * @param {?} key + * @param {?} searchFn + * @return {?} + */ + function (key, searchFn) { + /** @type {?} */ + var response = this.findByMap.get(key); + if (!response) { + response = this.items.find(searchFn) || null; + this.findByMap.set(key, response); + } + return response || null; + }; + BreakPointRegistry.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ + BreakPointRegistry.ctorParameters = function () { return [ + { type: Array, decorators: [{ type: core.Inject, args: [BREAKPOINTS,] }] } + ]; }; + /** @nocollapse */ BreakPointRegistry.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function BreakPointRegistry_Factory() { return new BreakPointRegistry(core.ɵɵinject(BREAKPOINTS)); }, token: BreakPointRegistry, providedIn: "root" }); + return BreakPointRegistry; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * MediaMonitor configures listeners to mediaQuery changes and publishes an Observable facade to + * convert mediaQuery change callbacks to subscriber notifications. These notifications will be + * performed within the ng Zone to trigger change detections and component updates. + * + * NOTE: both mediaQuery activations and de-activations are announced in notifications + */ +var MatchMedia = /** @class */ (function () { + function MatchMedia(_zone, _platformId, _document) { + this._zone = _zone; + this._platformId = _platformId; + this._document = _document; + /** + * Initialize source with 'all' so all non-responsive APIs trigger style updates + */ + this.source = new rxjs.BehaviorSubject(new MediaChange(true)); + this.registry = new Map(); + this._observable$ = this.source.asObservable(); + } + Object.defineProperty(MatchMedia.prototype, "activations", { + /** + * Publish list of all current activations + */ + get: /** + * Publish list of all current activations + * @return {?} + */ + function () { + /** @type {?} */ + var results = []; + this.registry.forEach((/** + * @param {?} mql + * @param {?} key + * @return {?} + */ + function (mql, key) { + if (mql.matches) { + results.push(key); + } + })); + return results; + }, + enumerable: true, + configurable: true + }); + /** + * For the specified mediaQuery? + */ + /** + * For the specified mediaQuery? + * @param {?} mediaQuery + * @return {?} + */ + MatchMedia.prototype.isActive = /** + * For the specified mediaQuery? + * @param {?} mediaQuery + * @return {?} + */ + function (mediaQuery) { + /** @type {?} */ + var mql = this.registry.get(mediaQuery); + return !!mql ? mql.matches : false; + }; + /** + * External observers can watch for all (or a specific) mql changes. + * Typically used by the MediaQueryAdaptor; optionally available to components + * who wish to use the MediaMonitor as mediaMonitor$ observable service. + * + * Use deferred registration process to register breakpoints only on subscription + * This logic also enforces logic to register all mediaQueries BEFORE notify + * subscribers of notifications. + */ + /** + * External observers can watch for all (or a specific) mql changes. + * Typically used by the MediaQueryAdaptor; optionally available to components + * who wish to use the MediaMonitor as mediaMonitor$ observable service. + * + * Use deferred registration process to register breakpoints only on subscription + * This logic also enforces logic to register all mediaQueries BEFORE notify + * subscribers of notifications. + * @param {?=} mqList + * @param {?=} filterOthers + * @return {?} + */ + MatchMedia.prototype.observe = /** + * External observers can watch for all (or a specific) mql changes. + * Typically used by the MediaQueryAdaptor; optionally available to components + * who wish to use the MediaMonitor as mediaMonitor$ observable service. + * + * Use deferred registration process to register breakpoints only on subscription + * This logic also enforces logic to register all mediaQueries BEFORE notify + * subscribers of notifications. + * @param {?=} mqList + * @param {?=} filterOthers + * @return {?} + */ + function (mqList, filterOthers) { + var _this = this; + if (filterOthers === void 0) { filterOthers = false; } + if (mqList && mqList.length) { + /** @type {?} */ + var matchMedia$ = this._observable$.pipe(operators.filter((/** + * @param {?} change + * @return {?} + */ + function (change) { + return !filterOthers ? true : (mqList.indexOf(change.mediaQuery) > -1); + }))); + /** @type {?} */ + var registration$ = new rxjs.Observable((/** + * @param {?} observer + * @return {?} + */ + function (observer) { + // tslint:disable-line:max-line-length + /** @type {?} */ + var matches = _this.registerQuery(mqList); + if (matches.length) { + /** @type {?} */ + var lastChange = (/** @type {?} */ (matches.pop())); + matches.forEach((/** + * @param {?} e + * @return {?} + */ + function (e) { + observer.next(e); + })); + _this.source.next(lastChange); // last match is cached + } + observer.complete(); + })); + return rxjs.merge(registration$, matchMedia$); + } + return this._observable$; + }; + /** + * Based on the BreakPointRegistry provider, register internal listeners for each unique + * mediaQuery. Each listener emits specific MediaChange data to observers + */ + /** + * Based on the BreakPointRegistry provider, register internal listeners for each unique + * mediaQuery. Each listener emits specific MediaChange data to observers + * @param {?} mediaQuery + * @return {?} + */ + MatchMedia.prototype.registerQuery = /** + * Based on the BreakPointRegistry provider, register internal listeners for each unique + * mediaQuery. Each listener emits specific MediaChange data to observers + * @param {?} mediaQuery + * @return {?} + */ + function (mediaQuery) { + var _this = this; + /** @type {?} */ + var list = Array.isArray(mediaQuery) ? mediaQuery : [mediaQuery]; + /** @type {?} */ + var matches = []; + buildQueryCss(list, this._document); + list.forEach((/** + * @param {?} query + * @return {?} + */ + function (query) { + /** @type {?} */ + var onMQLEvent = (/** + * @param {?} e + * @return {?} + */ + function (e) { + _this._zone.run((/** + * @return {?} + */ + function () { return _this.source.next(new MediaChange(e.matches, query)); })); + }); + /** @type {?} */ + var mql = _this.registry.get(query); + if (!mql) { + mql = _this.buildMQL(query); + mql.addListener(onMQLEvent); + _this.registry.set(query, mql); + } + if (mql.matches) { + matches.push(new MediaChange(true, query)); + } + })); + return matches; + }; + /** + * Call window.matchMedia() to build a MediaQueryList; which + * supports 0..n listeners for activation/deactivation + */ + /** + * Call window.matchMedia() to build a MediaQueryList; which + * supports 0..n listeners for activation/deactivation + * @protected + * @param {?} query + * @return {?} + */ + MatchMedia.prototype.buildMQL = /** + * Call window.matchMedia() to build a MediaQueryList; which + * supports 0..n listeners for activation/deactivation + * @protected + * @param {?} query + * @return {?} + */ + function (query) { + return constructMql(query, common.isPlatformBrowser(this._platformId)); + }; + MatchMedia.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ + MatchMedia.ctorParameters = function () { return [ + { type: core.NgZone }, + { type: Object, decorators: [{ type: core.Inject, args: [core.PLATFORM_ID,] }] }, + { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] } + ]; }; + /** @nocollapse */ MatchMedia.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function MatchMedia_Factory() { return new MatchMedia(core.ɵɵinject(core.NgZone), core.ɵɵinject(core.PLATFORM_ID), core.ɵɵinject(common.DOCUMENT)); }, token: MatchMedia, providedIn: "root" }); + return MatchMedia; +}()); +/** + * Private global registry for all dynamically-created, injected style tags + * @see prepare(query) + * @type {?} + */ +var ALL_STYLES = {}; +/** + * For Webkit engines that only trigger the MediaQueryList Listener + * when there is at least one CSS selector for the respective media query. + * + * @param {?} mediaQueries + * @param {?} _document + * @return {?} + */ +function buildQueryCss(mediaQueries, _document) { + /** @type {?} */ + var list = mediaQueries.filter((/** + * @param {?} it + * @return {?} + */ + function (it) { return !ALL_STYLES[it]; })); + if (list.length > 0) { + /** @type {?} */ + var query = list.join(', '); + try { + /** @type {?} */ + var styleEl_1 = _document.createElement('style'); + styleEl_1.setAttribute('type', 'text/css'); + if (!((/** @type {?} */ (styleEl_1))).styleSheet) { + /** @type {?} */ + var 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"; + styleEl_1.appendChild(_document.createTextNode(cssText)); + } + (/** @type {?} */ (_document.head)).appendChild(styleEl_1); + // Store in private global registry + list.forEach((/** + * @param {?} mq + * @return {?} + */ + function (mq) { return ALL_STYLES[mq] = styleEl_1; })); + } + catch (e) { + console.error(e); + } + } +} +/** + * @param {?} query + * @param {?} isBrowser + * @return {?} + */ +function constructMql(query, isBrowser) { + /** @type {?} */ + var canListen = isBrowser && !!((/** @type {?} */ (window))).matchMedia('all').addListener; + return canListen ? ((/** @type {?} */ (window))).matchMedia(query) : (/** @type {?} */ ((/** @type {?} */ ({ + matches: query === 'all' || query === '', + media: query, + addListener: (/** + * @return {?} + */ + function () { + }), + removeListener: (/** + * @return {?} + */ + function () { + }) + })))); +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * MockMatchMedia mocks calls to the Window API matchMedia with a build of a simulated + * MockMediaQueryListener. Methods are available to simulate an activation of a mediaQuery + * range and to clearAll mediaQuery listeners. + */ +var MockMatchMedia = /** @class */ (function (_super) { + __extends(MockMatchMedia, _super); + function MockMatchMedia(_zone, _platformId, _document, _breakpoints) { + var _this = _super.call(this, _zone, _platformId, _document) || this; + _this._breakpoints = _breakpoints; + _this.autoRegisterQueries = true; // Used for testing BreakPoint registrations + // Used for testing BreakPoint registrations + _this.useOverlaps = false; // Allow fallback to overlapping mediaQueries + return _this; + } + /** Easy method to clear all listeners for all mediaQueries */ + /** + * Easy method to clear all listeners for all mediaQueries + * @return {?} + */ + MockMatchMedia.prototype.clearAll = /** + * Easy method to clear all listeners for all mediaQueries + * @return {?} + */ + function () { + this.registry.forEach((/** + * @param {?} mql + * @return {?} + */ + function (mql) { + ((/** @type {?} */ (mql))).destroy(); + })); + this.registry.clear(); + this.useOverlaps = false; + }; + /** Feature to support manual, simulated activation of a mediaQuery. */ + /** + * Feature to support manual, simulated activation of a mediaQuery. + * @param {?} mediaQuery + * @param {?=} useOverlaps + * @return {?} + */ + MockMatchMedia.prototype.activate = /** + * Feature to support manual, simulated activation of a mediaQuery. + * @param {?} mediaQuery + * @param {?=} useOverlaps + * @return {?} + */ + function (mediaQuery, useOverlaps) { + if (useOverlaps === void 0) { useOverlaps = false; } + useOverlaps = useOverlaps || this.useOverlaps; + mediaQuery = this._validateQuery(mediaQuery); + if (useOverlaps || !this.isActive(mediaQuery)) { + this._deactivateAll(); + this._registerMediaQuery(mediaQuery); + this._activateWithOverlaps(mediaQuery, useOverlaps); + } + return this.hasActivated; + }; + /** Converts an optional mediaQuery alias to a specific, valid mediaQuery */ + /** + * Converts an optional mediaQuery alias to a specific, valid mediaQuery + * @param {?} queryOrAlias + * @return {?} + */ + MockMatchMedia.prototype._validateQuery = /** + * Converts an optional mediaQuery alias to a specific, valid mediaQuery + * @param {?} queryOrAlias + * @return {?} + */ + function (queryOrAlias) { + /** @type {?} */ + var bp = this._breakpoints.findByAlias(queryOrAlias); + return (bp && bp.mediaQuery) || queryOrAlias; + }; + /** + * Manually onMediaChange any overlapping mediaQueries to simulate + * similar functionality in the window.matchMedia() + */ + /** + * Manually onMediaChange any overlapping mediaQueries to simulate + * similar functionality in the window.matchMedia() + * @private + * @param {?} mediaQuery + * @param {?} useOverlaps + * @return {?} + */ + MockMatchMedia.prototype._activateWithOverlaps = /** + * Manually onMediaChange any overlapping mediaQueries to simulate + * similar functionality in the window.matchMedia() + * @private + * @param {?} mediaQuery + * @param {?} useOverlaps + * @return {?} + */ + function (mediaQuery, useOverlaps) { + if (useOverlaps) { + /** @type {?} */ + var bp = this._breakpoints.findByQuery(mediaQuery); + /** @type {?} */ + var alias = bp ? bp.alias : 'unknown'; + // Simulate activation of overlapping lt- ranges + switch (alias) { + case 'lg': + this._activateByAlias('lt-xl'); + break; + case 'md': + this._activateByAlias('lt-xl, lt-lg'); + break; + case 'sm': + this._activateByAlias('lt-xl, lt-lg, lt-md'); + break; + case 'xs': + this._activateByAlias('lt-xl, lt-lg, lt-md, lt-sm'); + break; + } + // Simulate activation of overlapping gt- mediaQuery ranges + switch (alias) { + case 'xl': + this._activateByAlias('gt-lg, gt-md, gt-sm, gt-xs'); + break; + case 'lg': + this._activateByAlias('gt-md, gt-sm, gt-xs'); + break; + case 'md': + this._activateByAlias('gt-sm, gt-xs'); + break; + case 'sm': + this._activateByAlias('gt-xs'); + break; + } + } + // Activate last since the responsiveActivation is watching *this* mediaQuery + return this._activateByQuery(mediaQuery); + }; + /** + * + */ + /** + * + * @private + * @param {?} aliases + * @return {?} + */ + MockMatchMedia.prototype._activateByAlias = /** + * + * @private + * @param {?} aliases + * @return {?} + */ + function (aliases) { + var _this = this; + /** @type {?} */ + var activate = (/** + * @param {?} alias + * @return {?} + */ + function (alias) { + /** @type {?} */ + var bp = _this._breakpoints.findByAlias(alias); + _this._activateByQuery(bp ? bp.mediaQuery : alias); + }); + aliases.split(',').forEach((/** + * @param {?} alias + * @return {?} + */ + function (alias) { return activate(alias.trim()); })); + }; + /** + * + */ + /** + * + * @private + * @param {?} mediaQuery + * @return {?} + */ + MockMatchMedia.prototype._activateByQuery = /** + * + * @private + * @param {?} mediaQuery + * @return {?} + */ + function (mediaQuery) { + /** @type {?} */ + var mql = (/** @type {?} */ (this.registry.get(mediaQuery))); + if (mql && !this.isActive(mediaQuery)) { + this.registry.set(mediaQuery, mql.activate()); + } + return this.hasActivated; + }; + /** Deactivate all current MQLs and reset the buffer */ + /** + * Deactivate all current MQLs and reset the buffer + * @private + * @template THIS + * @this {THIS} + * @return {THIS} + */ + MockMatchMedia.prototype._deactivateAll = /** + * Deactivate all current MQLs and reset the buffer + * @private + * @template THIS + * @this {THIS} + * @return {THIS} + */ + function () { + (/** @type {?} */ (this)).registry.forEach((/** + * @param {?} it + * @return {?} + */ + function (it) { + ((/** @type {?} */ (it))).deactivate(); + })); + return (/** @type {?} */ (this)); + }; + /** Insure the mediaQuery is registered with MatchMedia */ + /** + * Insure the mediaQuery is registered with MatchMedia + * @private + * @param {?} mediaQuery + * @return {?} + */ + MockMatchMedia.prototype._registerMediaQuery = /** + * Insure the mediaQuery is registered with MatchMedia + * @private + * @param {?} mediaQuery + * @return {?} + */ + function (mediaQuery) { + if (!this.registry.has(mediaQuery) && this.autoRegisterQueries) { + this.registerQuery(mediaQuery); + } + }; + /** + * Call window.matchMedia() to build a MediaQueryList; which + * supports 0..n listeners for activation/deactivation + */ + /** + * Call window.matchMedia() to build a MediaQueryList; which + * supports 0..n listeners for activation/deactivation + * @protected + * @param {?} query + * @return {?} + */ + MockMatchMedia.prototype.buildMQL = /** + * Call window.matchMedia() to build a MediaQueryList; which + * supports 0..n listeners for activation/deactivation + * @protected + * @param {?} query + * @return {?} + */ + function (query) { + return new MockMediaQueryList(query); + }; + Object.defineProperty(MockMatchMedia.prototype, "hasActivated", { + get: /** + * @protected + * @return {?} + */ + function () { + return this.activations.length > 0; + }, + enumerable: true, + configurable: true + }); + MockMatchMedia.decorators = [ + { type: core.Injectable }, + ]; + /** @nocollapse */ + MockMatchMedia.ctorParameters = function () { return [ + { type: core.NgZone }, + { type: Object, decorators: [{ type: core.Inject, args: [core.PLATFORM_ID,] }] }, + { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] }, + { type: BreakPointRegistry } + ]; }; + return MockMatchMedia; +}(MatchMedia)); +/** + * Special internal class to simulate a MediaQueryList and + * - supports manual activation to simulate mediaQuery matching + * - manages listeners + */ +var /** + * Special internal class to simulate a MediaQueryList and + * - supports manual activation to simulate mediaQuery matching + * - manages listeners + */ +MockMediaQueryList = /** @class */ (function () { + function MockMediaQueryList(_mediaQuery) { + this._mediaQuery = _mediaQuery; + this._isActive = false; + this._listeners = []; + this.onchange = null; + } + Object.defineProperty(MockMediaQueryList.prototype, "matches", { + get: /** + * @return {?} + */ + function () { + return this._isActive; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(MockMediaQueryList.prototype, "media", { + get: /** + * @return {?} + */ + function () { + return this._mediaQuery; + }, + enumerable: true, + configurable: true + }); + /** + * Destroy the current list by deactivating the + * listeners and clearing the internal list + */ + /** + * Destroy the current list by deactivating the + * listeners and clearing the internal list + * @return {?} + */ + MockMediaQueryList.prototype.destroy = /** + * Destroy the current list by deactivating the + * listeners and clearing the internal list + * @return {?} + */ + function () { + this.deactivate(); + this._listeners = []; + }; + /** Notify all listeners that 'matches === TRUE' */ + /** + * Notify all listeners that 'matches === TRUE' + * @return {?} + */ + MockMediaQueryList.prototype.activate = /** + * Notify all listeners that 'matches === TRUE' + * @return {?} + */ + function () { + var _this = this; + if (!this._isActive) { + this._isActive = true; + this._listeners.forEach((/** + * @param {?} callback + * @return {?} + */ + function (callback) { + /** @type {?} */ + var cb = (/** @type {?} */ (callback)); + cb.call(null, _this); + })); + } + return this; + }; + /** Notify all listeners that 'matches === false' */ + /** + * Notify all listeners that 'matches === false' + * @return {?} + */ + MockMediaQueryList.prototype.deactivate = /** + * Notify all listeners that 'matches === false' + * @return {?} + */ + function () { + var _this = this; + if (this._isActive) { + this._isActive = false; + this._listeners.forEach((/** + * @param {?} callback + * @return {?} + */ + function (callback) { + /** @type {?} */ + var cb = (/** @type {?} */ (callback)); + cb.call(null, _this); + })); + } + return this; + }; + /** Add a listener to our internal list to activate later */ + /** + * Add a listener to our internal list to activate later + * @param {?} listener + * @return {?} + */ + MockMediaQueryList.prototype.addListener = /** + * Add a listener to our internal list to activate later + * @param {?} listener + * @return {?} + */ + function (listener) { + if (this._listeners.indexOf(listener) === -1) { + this._listeners.push(listener); + } + if (this._isActive) { + /** @type {?} */ + var cb = (/** @type {?} */ (listener)); + cb.call(null, this); + } + }; + /** Don't need to remove listeners in the testing environment */ + /** + * Don't need to remove listeners in the testing environment + * @param {?} _ + * @return {?} + */ + MockMediaQueryList.prototype.removeListener = /** + * Don't need to remove listeners in the testing environment + * @param {?} _ + * @return {?} + */ + function (_) { + }; + /** + * @param {?} _ + * @param {?} __ + * @param {?=} ___ + * @return {?} + */ + MockMediaQueryList.prototype.addEventListener = /** + * @param {?} _ + * @param {?} __ + * @param {?=} ___ + * @return {?} + */ + function (_, __, ___) { + }; + /** + * @param {?} _ + * @param {?} __ + * @param {?=} ___ + * @return {?} + */ + MockMediaQueryList.prototype.removeEventListener = /** + * @param {?} _ + * @param {?} __ + * @param {?=} ___ + * @return {?} + */ + function (_, __, ___) { + }; + /** + * @param {?} _ + * @return {?} + */ + MockMediaQueryList.prototype.dispatchEvent = /** + * @param {?} _ + * @return {?} + */ + function (_) { + return false; + }; + return MockMediaQueryList; +}()); +/** + * Pre-configured provider for MockMatchMedia + * @type {?} + */ +var MockMatchMediaProvider = { + // tslint:disable-line:variable-name + provide: MatchMedia, + useClass: MockMatchMedia +}; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var PRINT = 'print'; +/** @type {?} */ +var BREAKPOINT_PRINT = { + alias: PRINT, + mediaQuery: PRINT, + priority: 1000 +}; +/** + * PrintHook - Use to intercept print MediaQuery activations and force + * layouts to render with the specified print alias/breakpoint + * + * Used in MediaMarshaller and MediaObserver + */ +var PrintHook = /** @class */ (function () { + function PrintHook(breakpoints, layoutConfig, _platformId) { + this.breakpoints = breakpoints; + this.layoutConfig = layoutConfig; + this._platformId = _platformId; + // registeredBeforeAfterPrintHooks tracks if we registered the `beforeprint` + // and `afterprint` event listeners. + this.registeredBeforeAfterPrintHooks = false; + // isPrintingBeforeAfterEvent is used to track if we are printing from within + // a `beforeprint` event handler. This prevents the typicall `stopPrinting` + // form `interceptEvents` so that printing is not stopped while the dialog + // is still open. This is an extension of the `isPrinting` property on + // browsers which support `beforeprint` and `afterprint` events. + this.isPrintingBeforeAfterEvent = false; + /** + * Is this service currently in Print-mode ? + */ + this.isPrinting = false; + this.queue = new PrintQueue(); + this.deactivations = []; + } + /** Add 'print' mediaQuery: to listen for matchMedia activations */ + /** + * Add 'print' mediaQuery: to listen for matchMedia activations + * @param {?} queries + * @return {?} + */ + PrintHook.prototype.withPrintQuery = /** + * Add 'print' mediaQuery: to listen for matchMedia activations + * @param {?} queries + * @return {?} + */ + function (queries) { + return queries.concat([PRINT]); + }; + /** Is the MediaChange event for any 'print' @media */ + /** + * Is the MediaChange event for any 'print' \@media + * @param {?} e + * @return {?} + */ + PrintHook.prototype.isPrintEvent = /** + * Is the MediaChange event for any 'print' \@media + * @param {?} e + * @return {?} + */ + function (e) { + return e.mediaQuery.startsWith(PRINT); + }; + Object.defineProperty(PrintHook.prototype, "printAlias", { + /** What is the desired mqAlias to use while printing? */ + get: /** + * What is the desired mqAlias to use while printing? + * @return {?} + */ + function () { + return this.layoutConfig.printWithBreakpoints || []; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(PrintHook.prototype, "printBreakPoints", { + /** Lookup breakpoints associated with print aliases. */ + get: /** + * Lookup breakpoints associated with print aliases. + * @return {?} + */ + function () { + var _this = this; + return (/** @type {?} */ (this.printAlias + .map((/** + * @param {?} alias + * @return {?} + */ + function (alias) { return _this.breakpoints.findByAlias(alias); })) + .filter((/** + * @param {?} bp + * @return {?} + */ + function (bp) { return bp !== null; })))); + }, + enumerable: true, + configurable: true + }); + /** Lookup breakpoint associated with mediaQuery */ + /** + * Lookup breakpoint associated with mediaQuery + * @param {?} __0 + * @return {?} + */ + PrintHook.prototype.getEventBreakpoints = /** + * Lookup breakpoint associated with mediaQuery + * @param {?} __0 + * @return {?} + */ + function (_a) { + var mediaQuery = _a.mediaQuery; + /** @type {?} */ + var bp = this.breakpoints.findByQuery(mediaQuery); + /** @type {?} */ + var list = bp ? this.printBreakPoints.concat([bp]) : this.printBreakPoints; + return list.sort(sortDescendingPriority); + }; + /** Update event with printAlias mediaQuery information */ + /** + * Update event with printAlias mediaQuery information + * @param {?} event + * @return {?} + */ + PrintHook.prototype.updateEvent = /** + * Update event with printAlias mediaQuery information + * @param {?} event + * @return {?} + */ + function (event) { + /** @type {?} */ + var bp = this.breakpoints.findByQuery(event.mediaQuery); + if (this.isPrintEvent(event)) { + // Reset from 'print' to first (highest priority) print breakpoint + bp = this.getEventBreakpoints(event)[0]; + event.mediaQuery = bp ? bp.mediaQuery : ''; + } + return mergeAlias(event, bp); + }; + // registerBeforeAfterPrintHooks registers a `beforeprint` event hook so we can + // trigger print styles synchronously and apply proper layout styles. + // It is a noop if the hooks have already been registered or the platform is + // not a browser(fallsback to mql print media queries). + // registerBeforeAfterPrintHooks registers a `beforeprint` event hook so we can + // trigger print styles synchronously and apply proper layout styles. + // It is a noop if the hooks have already been registered or the platform is + // not a browser(fallsback to mql print media queries). + /** + * @private + * @param {?} target + * @return {?} + */ + PrintHook.prototype.registerBeforeAfterPrintHooks = + // registerBeforeAfterPrintHooks registers a `beforeprint` event hook so we can + // trigger print styles synchronously and apply proper layout styles. + // It is a noop if the hooks have already been registered or the platform is + // not a browser(fallsback to mql print media queries). + /** + * @private + * @param {?} target + * @return {?} + */ + function (target) { + var _this = this; + if (!common.isPlatformBrowser(this._platformId) || this.registeredBeforeAfterPrintHooks) { + return; + } + this.registeredBeforeAfterPrintHooks = true; + // Could we have teardown logic to remove if there are no print listeners being used? + ((/** @type {?} */ (window))).addEventListener('beforeprint', (/** + * @return {?} + */ + function () { + // If we aren't already printing, start printing and update the styles as + // if there was a regular print `MediaChange`(from matchMedia). + if (!_this.isPrinting) { + _this.isPrintingBeforeAfterEvent = true; + _this.startPrinting(target, _this.getEventBreakpoints(new MediaChange(true, PRINT))); + target.updateStyles(); + } + })); + ((/** @type {?} */ (window))).addEventListener('afterprint', (/** + * @return {?} + */ + function () { + // If we aren't already printing, start printing and update the styles as + // if there was a regular print `MediaChange`(from matchMedia). + _this.isPrintingBeforeAfterEvent = false; + if (_this.isPrinting) { + _this.stopPrinting(target); + target.updateStyles(); + } + })); + }; + /** + * Prepare RxJs filter operator with partial application + * @return pipeable filter predicate + */ + /** + * Prepare RxJs filter operator with partial application + * @param {?} target + * @return {?} pipeable filter predicate + */ + PrintHook.prototype.interceptEvents = /** + * Prepare RxJs filter operator with partial application + * @param {?} target + * @return {?} pipeable filter predicate + */ + function (target) { + var _this = this; + this.registerBeforeAfterPrintHooks(target); + return (/** + * @param {?} event + * @return {?} + */ + function (event) { + if (_this.isPrintEvent(event)) { + if (event.matches && !_this.isPrinting) { + _this.startPrinting(target, _this.getEventBreakpoints(event)); + target.updateStyles(); + } + else if (!event.matches && _this.isPrinting && !_this.isPrintingBeforeAfterEvent) { + _this.stopPrinting(target); + target.updateStyles(); + } + } + else { + _this.collectActivations(event); + } + }); + }; + /** Stop mediaChange event propagation in event streams */ + /** + * Stop mediaChange event propagation in event streams + * @return {?} + */ + PrintHook.prototype.blockPropagation = /** + * Stop mediaChange event propagation in event streams + * @return {?} + */ + function () { + var _this = this; + return (/** + * @param {?} event + * @return {?} + */ + function (event) { + return !(_this.isPrinting || _this.isPrintEvent(event)); + }); + }; + /** + * Save current activateBreakpoints (for later restore) + * and substitute only the printAlias breakpoint + */ + /** + * Save current activateBreakpoints (for later restore) + * and substitute only the printAlias breakpoint + * @protected + * @param {?} target + * @param {?} bpList + * @return {?} + */ + PrintHook.prototype.startPrinting = /** + * Save current activateBreakpoints (for later restore) + * and substitute only the printAlias breakpoint + * @protected + * @param {?} target + * @param {?} bpList + * @return {?} + */ + function (target, bpList) { + this.isPrinting = true; + target.activatedBreakpoints = this.queue.addPrintBreakpoints(bpList); + }; + /** For any print de-activations, reset the entire print queue */ + /** + * For any print de-activations, reset the entire print queue + * @protected + * @param {?} target + * @return {?} + */ + PrintHook.prototype.stopPrinting = /** + * For any print de-activations, reset the entire print queue + * @protected + * @param {?} target + * @return {?} + */ + function (target) { + target.activatedBreakpoints = this.deactivations; + this.deactivations = []; + this.queue.clear(); + this.isPrinting = false; + }; + /** + * To restore pre-Print Activations, we must capture the proper + * list of breakpoint activations BEFORE print starts. OnBeforePrint() + * is supported; so 'print' mediaQuery activations are used as a fallback + * in browsers without `beforeprint` support. + * + * > But activated breakpoints are deactivated BEFORE 'print' activation. + * + * Let's capture all de-activations using the following logic: + * + * When not printing: + * - clear cache when activating non-print breakpoint + * - update cache (and sort) when deactivating + * + * When printing: + * - sort and save when starting print + * - restore as activatedTargets and clear when stop printing + */ + /** + * To restore pre-Print Activations, we must capture the proper + * list of breakpoint activations BEFORE print starts. OnBeforePrint() + * is supported; so 'print' mediaQuery activations are used as a fallback + * in browsers without `beforeprint` support. + * + * > But activated breakpoints are deactivated BEFORE 'print' activation. + * + * Let's capture all de-activations using the following logic: + * + * When not printing: + * - clear cache when activating non-print breakpoint + * - update cache (and sort) when deactivating + * + * When printing: + * - sort and save when starting print + * - restore as activatedTargets and clear when stop printing + * @param {?} event + * @return {?} + */ + PrintHook.prototype.collectActivations = /** + * To restore pre-Print Activations, we must capture the proper + * list of breakpoint activations BEFORE print starts. OnBeforePrint() + * is supported; so 'print' mediaQuery activations are used as a fallback + * in browsers without `beforeprint` support. + * + * > But activated breakpoints are deactivated BEFORE 'print' activation. + * + * Let's capture all de-activations using the following logic: + * + * When not printing: + * - clear cache when activating non-print breakpoint + * - update cache (and sort) when deactivating + * + * When printing: + * - sort and save when starting print + * - restore as activatedTargets and clear when stop printing + * @param {?} event + * @return {?} + */ + function (event) { + if (!this.isPrinting || this.isPrintingBeforeAfterEvent) { + if (!event.matches) { + /** @type {?} */ + var bp = this.breakpoints.findByQuery(event.mediaQuery); + if (bp) { // Deactivating a breakpoint + this.deactivations.push(bp); + this.deactivations.sort(sortDescendingPriority); + } + } + else if (!this.isPrintingBeforeAfterEvent) { + // Only clear deactivations if we aren't printing from a `beforeprint` event. + // Otherwise this will clear before `stopPrinting()` is called to restore + // the pre-Print Activations. + this.deactivations = []; + } + } + }; + PrintHook.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ + PrintHook.ctorParameters = function () { return [ + { type: BreakPointRegistry }, + { type: undefined, decorators: [{ type: core.Inject, args: [LAYOUT_CONFIG,] }] }, + { type: Object, decorators: [{ type: core.Inject, args: [core.PLATFORM_ID,] }] } + ]; }; + /** @nocollapse */ PrintHook.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function PrintHook_Factory() { return new PrintHook(core.ɵɵinject(BreakPointRegistry), core.ɵɵinject(LAYOUT_CONFIG), core.ɵɵinject(core.PLATFORM_ID)); }, token: PrintHook, providedIn: "root" }); + return PrintHook; +}()); +// ************************************************************************ +// Internal Utility class 'PrintQueue' +// ************************************************************************ +/** + * Utility class to manage print breakpoints + activatedBreakpoints + * with correct sorting WHILE printing + */ +var +// ************************************************************************ +// Internal Utility class 'PrintQueue' +// ************************************************************************ +/** + * Utility class to manage print breakpoints + activatedBreakpoints + * with correct sorting WHILE printing + */ +PrintQueue = /** @class */ (function () { + function PrintQueue() { + /** + * Sorted queue with prioritized print breakpoints + */ + this.printBreakpoints = []; + } + /** + * @param {?} bpList + * @return {?} + */ + PrintQueue.prototype.addPrintBreakpoints = /** + * @param {?} bpList + * @return {?} + */ + function (bpList) { + var _this = this; + bpList.push(BREAKPOINT_PRINT); + bpList.sort(sortDescendingPriority); + bpList.forEach((/** + * @param {?} bp + * @return {?} + */ + function (bp) { return _this.addBreakpoint(bp); })); + return this.printBreakpoints; + }; + /** Add Print breakpoint to queue */ + /** + * Add Print breakpoint to queue + * @param {?} bp + * @return {?} + */ + PrintQueue.prototype.addBreakpoint = /** + * Add Print breakpoint to queue + * @param {?} bp + * @return {?} + */ + function (bp) { + if (!!bp) { + /** @type {?} */ + var bpInList = this.printBreakpoints.find((/** + * @param {?} it + * @return {?} + */ + function (it) { return it.mediaQuery === bp.mediaQuery; })); + if (bpInList === undefined) { + // If this is a `printAlias` breakpoint, then append. If a true 'print' breakpoint, + // register as highest priority in the queue + this.printBreakpoints = isPrintBreakPoint(bp) ? [bp].concat(this.printBreakpoints) : this.printBreakpoints.concat([bp]); + } + } + }; + /** Restore original activated breakpoints and clear internal caches */ + /** + * Restore original activated breakpoints and clear internal caches + * @return {?} + */ + PrintQueue.prototype.clear = /** + * Restore original activated breakpoints and clear internal caches + * @return {?} + */ + function () { + this.printBreakpoints = []; + }; + return PrintQueue; +}()); +// ************************************************************************ +// Internal Utility methods +// ************************************************************************ +/** + * Only support intercept queueing if the Breakpoint is a print \@media query + * @param {?} bp + * @return {?} + */ +function isPrintBreakPoint(bp) { + return bp ? bp.mediaQuery.startsWith(PRINT) : false; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * Wraps the provided value in an array, unless the provided value is an array. + * @template T + * @param {?} value + * @return {?} + */ +function coerceArray(value) { + return Array.isArray(value) ? value : [value]; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * MediaObserver enables applications to listen for 1..n mediaQuery activations and to determine + * if a mediaQuery is currently activated. + * + * Since a breakpoint change will first deactivate 1...n mediaQueries and then possibly activate + * 1..n mediaQueries, the MediaObserver will debounce notifications and report ALL *activations* + * in 1 event notification. The reported activations will be sorted in descending priority order. + * + * This class uses the BreakPoint Registry to inject alias information into the raw MediaChange + * notification. For custom mediaQuery notifications, alias information will not be injected and + * those fields will be ''. + * + * Note: Developers should note that only mediaChange activations (not de-activations) + * are announced by the MediaObserver. + * + * \@usage + * + * // RxJS + * import { filter } from 'rxjs/operators'; + * import { MediaObserver } from '\@angular/flex-layout'; + * + * \@Component({ ... }) + * export class AppComponent { + * status: string = ''; + * + * constructor(mediaObserver: MediaObserver) { + * const media$ = mediaObserver.asObservable().pipe( + * filter((changes: MediaChange[]) => true) // silly noop filter + * ); + * + * media$.subscribe((changes: MediaChange[]) => { + * let status = ''; + * changes.forEach( change => { + * status += `'${change.mqAlias}' = (${change.mediaQuery})
` ; + * }); + * this.status = status; + * }); + * + * } + * } + */ +var MediaObserver = /** @class */ (function () { + function MediaObserver(breakpoints, matchMedia, hook) { + this.breakpoints = breakpoints; + this.matchMedia = matchMedia; + this.hook = hook; + /** + * Filter MediaChange notifications for overlapping breakpoints + */ + this.filterOverlaps = false; + this.destroyed$ = new rxjs.Subject(); + this._media$ = this.watchActivations(); + this.media$ = this._media$.pipe(operators.filter((/** + * @param {?} changes + * @return {?} + */ + function (changes) { return changes.length > 0; })), operators.map((/** + * @param {?} changes + * @return {?} + */ + function (changes) { return changes[0]; }))); + } + /** + * Completes the active subject, signalling to all complete for all + * MediaObserver subscribers + */ + /** + * Completes the active subject, signalling to all complete for all + * MediaObserver subscribers + * @return {?} + */ + MediaObserver.prototype.ngOnDestroy = /** + * Completes the active subject, signalling to all complete for all + * MediaObserver subscribers + * @return {?} + */ + function () { + this.destroyed$.next(); + this.destroyed$.complete(); + }; + // ************************************************ + // Public Methods + // ************************************************ + /** + * Observe changes to current activation 'list' + */ + // ************************************************ + // Public Methods + // ************************************************ + /** + * Observe changes to current activation 'list' + * @return {?} + */ + MediaObserver.prototype.asObservable = + // ************************************************ + // Public Methods + // ************************************************ + /** + * Observe changes to current activation 'list' + * @return {?} + */ + function () { + return this._media$; + }; + /** + * Allow programmatic query to determine if one or more media query/alias match + * the current viewport size. + * @param value One or more media queries (or aliases) to check. + * @returns Whether any of the media queries match. + */ + /** + * Allow programmatic query to determine if one or more media query/alias match + * the current viewport size. + * @param {?} value One or more media queries (or aliases) to check. + * @return {?} Whether any of the media queries match. + */ + MediaObserver.prototype.isActive = /** + * Allow programmatic query to determine if one or more media query/alias match + * the current viewport size. + * @param {?} value One or more media queries (or aliases) to check. + * @return {?} Whether any of the media queries match. + */ + function (value) { + var _this = this; + /** @type {?} */ + var aliases = splitQueries(coerceArray(value)); + return aliases.some((/** + * @param {?} alias + * @return {?} + */ + function (alias) { + /** @type {?} */ + var query = toMediaQuery(alias, _this.breakpoints); + return _this.matchMedia.isActive(query); + })); + }; + // ************************************************ + // Internal Methods + // ************************************************ + /** + * Register all the mediaQueries registered in the BreakPointRegistry + * This is needed so subscribers can be auto-notified of all standard, registered + * mediaQuery activations + */ + // ************************************************ + // Internal Methods + // ************************************************ + /** + * Register all the mediaQueries registered in the BreakPointRegistry + * This is needed so subscribers can be auto-notified of all standard, registered + * mediaQuery activations + * @private + * @return {?} + */ + MediaObserver.prototype.watchActivations = + // ************************************************ + // Internal Methods + // ************************************************ + /** + * Register all the mediaQueries registered in the BreakPointRegistry + * This is needed so subscribers can be auto-notified of all standard, registered + * mediaQuery activations + * @private + * @return {?} + */ + function () { + /** @type {?} */ + var queries = this.breakpoints.items.map((/** + * @param {?} bp + * @return {?} + */ + function (bp) { return bp.mediaQuery; })); + return this.buildObservable(queries); + }; + /** + * Only pass/announce activations (not de-activations) + * + * Since multiple-mediaQueries can be activation in a cycle, + * gather all current activations into a single list of changes to observers + * + * Inject associated (if any) alias information into the MediaChange event + * - Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only + * - Exclude print activations that do not have an associated mediaQuery + * + * NOTE: the raw MediaChange events [from MatchMedia] do not + * contain important alias information; as such this info + * must be injected into the MediaChange + */ + /** + * Only pass/announce activations (not de-activations) + * + * Since multiple-mediaQueries can be activation in a cycle, + * gather all current activations into a single list of changes to observers + * + * Inject associated (if any) alias information into the MediaChange event + * - Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only + * - Exclude print activations that do not have an associated mediaQuery + * + * NOTE: the raw MediaChange events [from MatchMedia] do not + * contain important alias information; as such this info + * must be injected into the MediaChange + * @private + * @param {?} mqList + * @return {?} + */ + MediaObserver.prototype.buildObservable = /** + * Only pass/announce activations (not de-activations) + * + * Since multiple-mediaQueries can be activation in a cycle, + * gather all current activations into a single list of changes to observers + * + * Inject associated (if any) alias information into the MediaChange event + * - Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only + * - Exclude print activations that do not have an associated mediaQuery + * + * NOTE: the raw MediaChange events [from MatchMedia] do not + * contain important alias information; as such this info + * must be injected into the MediaChange + * @private + * @param {?} mqList + * @return {?} + */ + function (mqList) { + var _this = this; + /** @type {?} */ + var hasChanges = (/** + * @param {?} changes + * @return {?} + */ + function (changes) { + /** @type {?} */ + var isValidQuery = (/** + * @param {?} change + * @return {?} + */ + function (change) { return (change.mediaQuery.length > 0); }); + return (changes.filter(isValidQuery).length > 0); + }); + /** @type {?} */ + var excludeOverlaps = (/** + * @param {?} changes + * @return {?} + */ + function (changes) { + return !_this.filterOverlaps ? changes : changes.filter((/** + * @param {?} change + * @return {?} + */ + function (change) { + /** @type {?} */ + var bp = _this.breakpoints.findByQuery(change.mediaQuery); + return !bp ? true : !bp.overlapping; + })); + }); + /** + */ + return this.matchMedia + .observe(this.hook.withPrintQuery(mqList)) + .pipe(operators.filter((/** + * @param {?} change + * @return {?} + */ + function (change) { return change.matches; })), operators.debounceTime(0, rxjs.asapScheduler), operators.switchMap((/** + * @param {?} _ + * @return {?} + */ + function (_) { return rxjs.of(_this.findAllActivations()); })), operators.map(excludeOverlaps), operators.filter(hasChanges), operators.takeUntil(this.destroyed$)); + }; + /** + * Find all current activations and prepare single list of activations + * sorted by descending priority. + */ + /** + * Find all current activations and prepare single list of activations + * sorted by descending priority. + * @private + * @return {?} + */ + MediaObserver.prototype.findAllActivations = /** + * Find all current activations and prepare single list of activations + * sorted by descending priority. + * @private + * @return {?} + */ + function () { + var _this = this; + /** @type {?} */ + var mergeMQAlias = (/** + * @param {?} change + * @return {?} + */ + function (change) { + /** @type {?} */ + var bp = _this.breakpoints.findByQuery(change.mediaQuery); + return mergeAlias(change, bp); + }); + /** @type {?} */ + var replaceWithPrintAlias = (/** + * @param {?} change + * @return {?} + */ + function (change) { + return _this.hook.isPrintEvent(change) ? _this.hook.updateEvent(change) : change; + }); + return this.matchMedia + .activations + .map((/** + * @param {?} query + * @return {?} + */ + function (query) { return new MediaChange(true, query); })) + .map(replaceWithPrintAlias) + .map(mergeMQAlias) + .sort(sortDescendingPriority); + }; + MediaObserver.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ + MediaObserver.ctorParameters = function () { return [ + { type: BreakPointRegistry }, + { type: MatchMedia }, + { type: PrintHook } + ]; }; + /** @nocollapse */ MediaObserver.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function MediaObserver_Factory() { return new MediaObserver(core.ɵɵinject(BreakPointRegistry), core.ɵɵinject(MatchMedia), core.ɵɵinject(PrintHook)); }, token: MediaObserver, providedIn: "root" }); + return MediaObserver; +}()); +/** + * Find associated breakpoint (if any) + * @param {?} query + * @param {?} locator + * @return {?} + */ +function toMediaQuery(query, locator) { + /** @type {?} */ + var bp = locator.findByAlias(query) || locator.findByQuery(query); + return bp ? bp.mediaQuery : query; +} +/** + * Split each query string into separate query strings if two queries are provided as comma + * separated. + * @param {?} queries + * @return {?} + */ +function splitQueries(queries) { + return queries.map((/** + * @param {?} query + * @return {?} + */ + function (query) { return query.split(','); })) + .reduce((/** + * @param {?} a1 + * @param {?} a2 + * @return {?} + */ + function (a1, a2) { return a1.concat(a2); })) + .map((/** + * @param {?} query + * @return {?} + */ + function (query) { return query.trim(); })); +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Class + */ +var MediaTrigger = /** @class */ (function () { + function MediaTrigger(breakpoints, matchMedia, layoutConfig, _platformId, _document) { + this.breakpoints = breakpoints; + this.matchMedia = matchMedia; + this.layoutConfig = layoutConfig; + this._platformId = _platformId; + this._document = _document; + this.hasCachedRegistryMatches = false; + this.originalActivations = []; + this.originalRegistry = new Map(); + } + /** + * Manually activate range of breakpoints + * @param list array of mediaQuery or alias strings + */ + /** + * Manually activate range of breakpoints + * @param {?} list array of mediaQuery or alias strings + * @return {?} + */ + MediaTrigger.prototype.activate = /** + * Manually activate range of breakpoints + * @param {?} list array of mediaQuery or alias strings + * @return {?} + */ + function (list) { + list = list.map((/** + * @param {?} it + * @return {?} + */ + function (it) { return it.trim(); })); // trim queries + this.saveActivations(); + this.deactivateAll(); + this.setActivations(list); + this.prepareAutoRestore(); + }; + /** + * Restore original, 'real' breakpoints and emit events + * to trigger stream notification + */ + /** + * Restore original, 'real' breakpoints and emit events + * to trigger stream notification + * @return {?} + */ + MediaTrigger.prototype.restore = /** + * Restore original, 'real' breakpoints and emit events + * to trigger stream notification + * @return {?} + */ + function () { + if (this.hasCachedRegistryMatches) { + /** @type {?} */ + var extractQuery = (/** + * @param {?} change + * @return {?} + */ + function (change) { return change.mediaQuery; }); + /** @type {?} */ + var list = this.originalActivations.map(extractQuery); + try { + this.deactivateAll(); + this.restoreRegistryMatches(); + this.setActivations(list); + } + finally { + this.originalActivations = []; + if (this.resizeSubscription) { + this.resizeSubscription.unsubscribe(); + } + } + } + }; + // ************************************************ + // Internal Methods + // ************************************************ + /** + * Whenever window resizes, immediately auto-restore original + * activations (if we are simulating activations) + */ + // ************************************************ + // Internal Methods + // ************************************************ + /** + * Whenever window resizes, immediately auto-restore original + * activations (if we are simulating activations) + * @private + * @return {?} + */ + MediaTrigger.prototype.prepareAutoRestore = + // ************************************************ + // Internal Methods + // ************************************************ + /** + * Whenever window resizes, immediately auto-restore original + * activations (if we are simulating activations) + * @private + * @return {?} + */ + function () { + /** @type {?} */ + var isBrowser = common.isPlatformBrowser(this._platformId) && this._document; + /** @type {?} */ + var enableAutoRestore = isBrowser && this.layoutConfig.mediaTriggerAutoRestore; + if (enableAutoRestore) { + /** @type {?} */ + var resize$ = rxjs.fromEvent(window, 'resize').pipe(operators.take(1)); + this.resizeSubscription = resize$.subscribe(this.restore.bind(this)); + } + }; + /** + * Notify all matchMedia subscribers of de-activations + * + * Note: we must force 'matches' updates for + * future matchMedia::activation lookups + */ + /** + * Notify all matchMedia subscribers of de-activations + * + * Note: we must force 'matches' updates for + * future matchMedia::activation lookups + * @private + * @return {?} + */ + MediaTrigger.prototype.deactivateAll = /** + * Notify all matchMedia subscribers of de-activations + * + * Note: we must force 'matches' updates for + * future matchMedia::activation lookups + * @private + * @return {?} + */ + function () { + /** @type {?} */ + var list = this.currentActivations; + this.forceRegistryMatches(list, false); + this.simulateMediaChanges(list, false); + }; + /** + * Cache current activations as sorted, prioritized list of MediaChanges + */ + /** + * Cache current activations as sorted, prioritized list of MediaChanges + * @private + * @return {?} + */ + MediaTrigger.prototype.saveActivations = /** + * Cache current activations as sorted, prioritized list of MediaChanges + * @private + * @return {?} + */ + function () { + var _this = this; + if (!this.hasCachedRegistryMatches) { + /** @type {?} */ + var toMediaChange = (/** + * @param {?} query + * @return {?} + */ + function (query) { return new MediaChange(true, query); }); + /** @type {?} */ + var mergeMQAlias = (/** + * @param {?} change + * @return {?} + */ + function (change) { + /** @type {?} */ + var bp = _this.breakpoints.findByQuery(change.mediaQuery); + return mergeAlias(change, bp); + }); + this.originalActivations = this.currentActivations + .map(toMediaChange) + .map(mergeMQAlias) + .sort(sortDescendingPriority); + this.cacheRegistryMatches(); + } + }; + /** + * Force set manual activations for specified mediaQuery list + */ + /** + * Force set manual activations for specified mediaQuery list + * @private + * @param {?} list + * @return {?} + */ + MediaTrigger.prototype.setActivations = /** + * Force set manual activations for specified mediaQuery list + * @private + * @param {?} list + * @return {?} + */ + function (list) { + if (!!this.originalRegistry) { + this.forceRegistryMatches(list, true); + } + this.simulateMediaChanges(list); + }; + /** + * For specified mediaQuery list manually simulate activations or deactivations + */ + /** + * For specified mediaQuery list manually simulate activations or deactivations + * @private + * @param {?} queries + * @param {?=} matches + * @return {?} + */ + MediaTrigger.prototype.simulateMediaChanges = /** + * For specified mediaQuery list manually simulate activations or deactivations + * @private + * @param {?} queries + * @param {?=} matches + * @return {?} + */ + function (queries, matches) { + var _this = this; + if (matches === void 0) { matches = true; } + /** @type {?} */ + var toMediaQuery = (/** + * @param {?} query + * @return {?} + */ + function (query) { + /** @type {?} */ + var locator = _this.breakpoints; + /** @type {?} */ + var bp = locator.findByAlias(query) || locator.findByQuery(query); + return bp ? bp.mediaQuery : query; + }); + /** @type {?} */ + var emitChangeEvent = (/** + * @param {?} query + * @return {?} + */ + function (query) { return _this.emitChangeEvent(matches, query); }); + queries.map(toMediaQuery).forEach(emitChangeEvent); + }; + /** + * Replace current registry with simulated registry... + * Note: this is required since MediaQueryList::matches is 'readOnly' + */ + /** + * Replace current registry with simulated registry... + * Note: this is required since MediaQueryList::matches is 'readOnly' + * @private + * @param {?} queries + * @param {?} matches + * @return {?} + */ + MediaTrigger.prototype.forceRegistryMatches = /** + * Replace current registry with simulated registry... + * Note: this is required since MediaQueryList::matches is 'readOnly' + * @private + * @param {?} queries + * @param {?} matches + * @return {?} + */ + function (queries, matches) { + /** @type {?} */ + var registry = new Map(); + queries.forEach((/** + * @param {?} query + * @return {?} + */ + function (query) { + registry.set(query, (/** @type {?} */ ({ matches: matches }))); + })); + this.matchMedia.registry = registry; + }; + /** + * Save current MatchMedia::registry items. + */ + /** + * Save current MatchMedia::registry items. + * @private + * @return {?} + */ + MediaTrigger.prototype.cacheRegistryMatches = /** + * Save current MatchMedia::registry items. + * @private + * @return {?} + */ + function () { + /** @type {?} */ + var target = this.originalRegistry; + target.clear(); + this.matchMedia.registry.forEach((/** + * @param {?} value + * @param {?} key + * @return {?} + */ + function (value, key) { + target.set(key, value); + })); + this.hasCachedRegistryMatches = true; + }; + /** + * Restore original, 'true' registry + */ + /** + * Restore original, 'true' registry + * @private + * @return {?} + */ + MediaTrigger.prototype.restoreRegistryMatches = /** + * Restore original, 'true' registry + * @private + * @return {?} + */ + function () { + /** @type {?} */ + var target = this.matchMedia.registry; + target.clear(); + this.originalRegistry.forEach((/** + * @param {?} value + * @param {?} key + * @return {?} + */ + function (value, key) { + target.set(key, value); + })); + this.originalRegistry.clear(); + this.hasCachedRegistryMatches = false; + }; + /** + * Manually emit a MediaChange event via the MatchMedia to MediaMarshaller and MediaObserver + */ + /** + * Manually emit a MediaChange event via the MatchMedia to MediaMarshaller and MediaObserver + * @private + * @param {?} matches + * @param {?} query + * @return {?} + */ + MediaTrigger.prototype.emitChangeEvent = /** + * Manually emit a MediaChange event via the MatchMedia to MediaMarshaller and MediaObserver + * @private + * @param {?} matches + * @param {?} query + * @return {?} + */ + function (matches, query) { + this.matchMedia.source.next(new MediaChange(matches, query)); + }; + Object.defineProperty(MediaTrigger.prototype, "currentActivations", { + get: /** + * @private + * @return {?} + */ + function () { + return this.matchMedia.activations; + }, + enumerable: true, + configurable: true + }); + MediaTrigger.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ + MediaTrigger.ctorParameters = function () { return [ + { type: BreakPointRegistry }, + { type: MatchMedia }, + { type: undefined, decorators: [{ type: core.Inject, args: [LAYOUT_CONFIG,] }] }, + { type: Object, decorators: [{ type: core.Inject, args: [core.PLATFORM_ID,] }] }, + { type: undefined, decorators: [{ type: core.Inject, args: [common.DOCUMENT,] }] } + ]; }; + /** @nocollapse */ MediaTrigger.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function MediaTrigger_Factory() { return new MediaTrigger(core.ɵɵinject(BreakPointRegistry), core.ɵɵinject(MatchMedia), core.ɵɵinject(LAYOUT_CONFIG), core.ɵɵinject(core.PLATFORM_ID), core.ɵɵinject(common.DOCUMENT)); }, token: MediaTrigger, providedIn: "root" }); + return MediaTrigger; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * Applies CSS prefixes to appropriate style keys. + * + * Note: `-ms-`, `-moz` and `-webkit-box` are no longer supported. e.g. + * { + * display: -webkit-flex; NEW - Safari 6.1+. iOS 7.1+, BB10 + * display: flex; NEW, Spec - Firefox, Chrome, Opera + * // display: -webkit-box; OLD - iOS 6-, Safari 3.1-6, BB7 + * // display: -ms-flexbox; TWEENER - IE 10 + * // display: -moz-flexbox; OLD - Firefox + * } + * @param {?} target + * @return {?} + */ +function applyCssPrefixes(target) { + for (var key in target) { + /** @type {?} */ + var value = target[key] || ''; + switch (key) { + case 'display': + if (value === 'flex') { + target['display'] = [ + '-webkit-flex', + 'flex' + ]; + } + else if (value === 'inline-flex') { + target['display'] = [ + '-webkit-inline-flex', + 'inline-flex' + ]; + } + else { + target['display'] = value; + } + break; + case 'align-items': + case 'align-self': + case 'align-content': + case 'flex': + case 'flex-basis': + case 'flex-flow': + case 'flex-grow': + case 'flex-shrink': + case 'flex-wrap': + case 'justify-content': + target['-webkit-' + key] = value; + break; + case 'flex-direction': + value = value || 'row'; + target['-webkit-flex-direction'] = value; + target['flex-direction'] = value; + break; + case 'order': + target['order'] = target['-webkit-' + key] = isNaN(+value) ? '0' : value; + break; + } + } + return target; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var StyleUtils = /** @class */ (function () { + function StyleUtils(_serverStylesheet, _serverModuleLoaded, _platformId, layoutConfig) { + this._serverStylesheet = _serverStylesheet; + this._serverModuleLoaded = _serverModuleLoaded; + this._platformId = _platformId; + this.layoutConfig = layoutConfig; + } + /** + * Applies styles given via string pair or object map to the directive element + */ + /** + * Applies styles given via string pair or object map to the directive element + * @param {?} element + * @param {?} style + * @param {?=} value + * @return {?} + */ + StyleUtils.prototype.applyStyleToElement = /** + * Applies styles given via string pair or object map to the directive element + * @param {?} element + * @param {?} style + * @param {?=} value + * @return {?} + */ + function (element, style, value) { + if (value === void 0) { value = null; } + /** @type {?} */ + var styles = {}; + if (typeof style === 'string') { + styles[style] = value; + style = styles; + } + styles = this.layoutConfig.disableVendorPrefixes ? style : applyCssPrefixes(style); + this._applyMultiValueStyleToElement(styles, element); + }; + /** + * Applies styles given via string pair or object map to the directive's element + */ + /** + * Applies styles given via string pair or object map to the directive's element + * @param {?} style + * @param {?=} elements + * @return {?} + */ + StyleUtils.prototype.applyStyleToElements = /** + * Applies styles given via string pair or object map to the directive's element + * @param {?} style + * @param {?=} elements + * @return {?} + */ + function (style, elements) { + var _this = this; + if (elements === void 0) { elements = []; } + /** @type {?} */ + var styles = this.layoutConfig.disableVendorPrefixes ? style : applyCssPrefixes(style); + elements.forEach((/** + * @param {?} el + * @return {?} + */ + function (el) { + _this._applyMultiValueStyleToElement(styles, el); + })); + }; + /** + * Determine the DOM element's Flexbox flow (flex-direction) + * + * Check inline style first then check computed (stylesheet) style + */ + /** + * Determine the DOM element's Flexbox flow (flex-direction) + * + * Check inline style first then check computed (stylesheet) style + * @param {?} target + * @return {?} + */ + StyleUtils.prototype.getFlowDirection = /** + * Determine the DOM element's Flexbox flow (flex-direction) + * + * Check inline style first then check computed (stylesheet) style + * @param {?} target + * @return {?} + */ + function (target) { + /** @type {?} */ + var query = 'flex-direction'; + /** @type {?} */ + var value = this.lookupStyle(target, query); + /** @type {?} */ + var hasInlineValue = this.lookupInlineStyle(target, query) || + (common.isPlatformServer(this._platformId) && this._serverModuleLoaded) ? value : ''; + return [value || 'row', hasInlineValue]; + }; + /** + * Find the DOM element's raw attribute value (if any) + */ + /** + * Find the DOM element's raw attribute value (if any) + * @param {?} element + * @param {?} attribute + * @return {?} + */ + StyleUtils.prototype.lookupAttributeValue = /** + * Find the DOM element's raw attribute value (if any) + * @param {?} element + * @param {?} attribute + * @return {?} + */ + function (element, attribute) { + return element.getAttribute(attribute) || ''; + }; + /** + * Find the DOM element's inline style value (if any) + */ + /** + * Find the DOM element's inline style value (if any) + * @param {?} element + * @param {?} styleName + * @return {?} + */ + StyleUtils.prototype.lookupInlineStyle = /** + * Find the DOM element's inline style value (if any) + * @param {?} element + * @param {?} styleName + * @return {?} + */ + function (element, styleName) { + return common.isPlatformBrowser(this._platformId) ? + element.style.getPropertyValue(styleName) : this._getServerStyle(element, styleName); + }; + /** + * Determine the inline or inherited CSS style + * NOTE: platform-server has no implementation for getComputedStyle + */ + /** + * Determine the inline or inherited CSS style + * NOTE: platform-server has no implementation for getComputedStyle + * @param {?} element + * @param {?} styleName + * @param {?=} inlineOnly + * @return {?} + */ + StyleUtils.prototype.lookupStyle = /** + * Determine the inline or inherited CSS style + * NOTE: platform-server has no implementation for getComputedStyle + * @param {?} element + * @param {?} styleName + * @param {?=} inlineOnly + * @return {?} + */ + function (element, styleName, inlineOnly) { + if (inlineOnly === void 0) { inlineOnly = false; } + /** @type {?} */ + var value = ''; + if (element) { + /** @type {?} */ + var immediateValue = value = this.lookupInlineStyle(element, styleName); + if (!immediateValue) { + if (common.isPlatformBrowser(this._platformId)) { + if (!inlineOnly) { + value = getComputedStyle(element).getPropertyValue(styleName); + } + } + else { + if (this._serverModuleLoaded) { + value = this._serverStylesheet.getStyleForElement(element, styleName); + } + } + } + } + // Note: 'inline' is the default of all elements, unless UA stylesheet overrides; + // in which case getComputedStyle() should determine a valid value. + return value ? value.trim() : ''; + }; + /** + * Applies the styles to the element. The styles object map may contain an array of values + * Each value will be added as element style + * Keys are sorted to add prefixed styles (like -webkit-x) first, before the standard ones + */ + /** + * Applies the styles to the element. The styles object map may contain an array of values + * Each value will be added as element style + * Keys are sorted to add prefixed styles (like -webkit-x) first, before the standard ones + * @private + * @param {?} styles + * @param {?} element + * @return {?} + */ + StyleUtils.prototype._applyMultiValueStyleToElement = /** + * Applies the styles to the element. The styles object map may contain an array of values + * Each value will be added as element style + * Keys are sorted to add prefixed styles (like -webkit-x) first, before the standard ones + * @private + * @param {?} styles + * @param {?} element + * @return {?} + */ + function (styles, element) { + var _this = this; + Object.keys(styles).sort().forEach((/** + * @param {?} key + * @return {?} + */ + function (key) { + /** @type {?} */ + var el = styles[key]; + /** @type {?} */ + var values = Array.isArray(el) ? el : [el]; + values.sort(); + for (var _i = 0, values_1 = values; _i < values_1.length; _i++) { + var value = values_1[_i]; + value = value ? value + '' : ''; + if (common.isPlatformBrowser(_this._platformId) || !_this._serverModuleLoaded) { + common.isPlatformBrowser(_this._platformId) ? + element.style.setProperty(key, value) : _this._setServerStyle(element, key, value); + } + else { + _this._serverStylesheet.addStyleToElement(element, key, value); + } + } + })); + }; + /** + * @private + * @param {?} element + * @param {?} styleName + * @param {?=} styleValue + * @return {?} + */ + StyleUtils.prototype._setServerStyle = /** + * @private + * @param {?} element + * @param {?} styleName + * @param {?=} styleValue + * @return {?} + */ + function (element, styleName, styleValue) { + styleName = styleName.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); + /** @type {?} */ + var styleMap = this._readStyleAttribute(element); + styleMap[styleName] = styleValue || ''; + this._writeStyleAttribute(element, styleMap); + }; + /** + * @private + * @param {?} element + * @param {?} styleName + * @return {?} + */ + StyleUtils.prototype._getServerStyle = /** + * @private + * @param {?} element + * @param {?} styleName + * @return {?} + */ + function (element, styleName) { + /** @type {?} */ + var styleMap = this._readStyleAttribute(element); + return styleMap[styleName] || ''; + }; + /** + * @private + * @param {?} element + * @return {?} + */ + StyleUtils.prototype._readStyleAttribute = /** + * @private + * @param {?} element + * @return {?} + */ + function (element) { + /** @type {?} */ + var styleMap = {}; + /** @type {?} */ + var styleAttribute = element.getAttribute('style'); + if (styleAttribute) { + /** @type {?} */ + var styleList = styleAttribute.split(/;+/g); + for (var i = 0; i < styleList.length; i++) { + /** @type {?} */ + var style = styleList[i].trim(); + if (style.length > 0) { + /** @type {?} */ + var colonIndex = style.indexOf(':'); + if (colonIndex === -1) { + throw new Error("Invalid CSS style: " + style); + } + /** @type {?} */ + var name_1 = style.substr(0, colonIndex).trim(); + styleMap[name_1] = style.substr(colonIndex + 1).trim(); + } + } + } + return styleMap; + }; + /** + * @private + * @param {?} element + * @param {?} styleMap + * @return {?} + */ + StyleUtils.prototype._writeStyleAttribute = /** + * @private + * @param {?} element + * @param {?} styleMap + * @return {?} + */ + function (element, styleMap) { + /** @type {?} */ + var styleAttrValue = ''; + for (var key in styleMap) { + /** @type {?} */ + var newValue = styleMap[key]; + if (newValue) { + styleAttrValue += key + ':' + styleMap[key] + ';'; + } + } + element.setAttribute('style', styleAttrValue); + }; + StyleUtils.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ + StyleUtils.ctorParameters = function () { return [ + { type: StylesheetMap, decorators: [{ type: core.Optional }] }, + { type: Boolean, decorators: [{ type: core.Optional }, { type: core.Inject, args: [SERVER_TOKEN,] }] }, + { type: Object, decorators: [{ type: core.Inject, args: [core.PLATFORM_ID,] }] }, + { type: undefined, decorators: [{ type: core.Inject, args: [LAYOUT_CONFIG,] }] } + ]; }; + /** @nocollapse */ StyleUtils.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function StyleUtils_Factory() { return new StyleUtils(core.ɵɵinject(StylesheetMap, 8), core.ɵɵinject(SERVER_TOKEN, 8), core.ɵɵinject(core.PLATFORM_ID), core.ɵɵinject(LAYOUT_CONFIG)); }, token: StyleUtils, providedIn: "root" }); + return StyleUtils; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * A class that encapsulates CSS style generation for common directives + * @abstract + */ +var /** + * A class that encapsulates CSS style generation for common directives + * @abstract + */ +StyleBuilder = /** @class */ (function () { + function StyleBuilder() { + /** + * Whether to cache the generated output styles + */ + this.shouldCache = true; + } + /** + * Run a side effect computation given the input string and the computed styles + * from the build task and the host configuration object + * NOTE: This should be a no-op unless an algorithm is provided in a subclass + */ + /** + * Run a side effect computation given the input string and the computed styles + * from the build task and the host configuration object + * NOTE: This should be a no-op unless an algorithm is provided in a subclass + * @param {?} _input + * @param {?} _styles + * @param {?=} _parent + * @return {?} + */ + StyleBuilder.prototype.sideEffect = /** + * Run a side effect computation given the input string and the computed styles + * from the build task and the host configuration object + * NOTE: This should be a no-op unless an algorithm is provided in a subclass + * @param {?} _input + * @param {?} _styles + * @param {?=} _parent + * @return {?} + */ + function (_input, _styles, _parent) { + }; + return StyleBuilder; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * The flex API permits 3 or 1 parts of the value: + * - `flex-grow flex-shrink flex-basis`, or + * - `flex-basis` + * @param {?} basis + * @param {?=} grow + * @param {?=} shrink + * @return {?} + */ +function validateBasis(basis, grow, shrink) { + if (grow === void 0) { grow = '1'; } + if (shrink === void 0) { shrink = '1'; } + /** @type {?} */ + var parts = [grow, shrink, basis]; + /** @type {?} */ + var j = basis.indexOf('calc'); + if (j > 0) { + parts[2] = _validateCalcValue(basis.substring(j).trim()); + /** @type {?} */ + var matches = basis.substr(0, j).trim().split(' '); + if (matches.length == 2) { + parts[0] = matches[0]; + parts[1] = matches[1]; + } + } + else if (j == 0) { + parts[2] = _validateCalcValue(basis.trim()); + } + else { + /** @type {?} */ + var matches = basis.split(' '); + parts = (matches.length === 3) ? matches : [ + grow, shrink, basis + ]; + } + return parts; +} +/** + * Calc expressions require whitespace before & after any expression operators + * This is a simple, crude whitespace padding solution. + * - '3 3 calc(15em + 20px)' + * - calc(100% / 7 * 2) + * - 'calc(15em + 20px)' + * - 'calc(15em+20px)' + * - '37px' + * = '43%' + * @param {?} calc + * @return {?} + */ +function _validateCalcValue(calc) { + return calc.replace(/[\s]/g, '').replace(/[\/\*\+\-]/g, ' $& '); +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * MediaMarshaller - register responsive values from directives and + * trigger them based on media query events + */ +var MediaMarshaller = /** @class */ (function () { + function MediaMarshaller(matchMedia, breakpoints, hook) { + this.matchMedia = matchMedia; + this.breakpoints = breakpoints; + this.hook = hook; + this.activatedBreakpoints = []; + this.elementMap = new Map(); + this.elementKeyMap = new WeakMap(); + this.watcherMap = new WeakMap(); // special triggers to update elements + // special triggers to update elements + this.updateMap = new WeakMap(); // callback functions to update styles + // callback functions to update styles + this.clearMap = new WeakMap(); // callback functions to clear styles + // callback functions to clear styles + this.subject = new rxjs.Subject(); + this.observeActivations(); + } + Object.defineProperty(MediaMarshaller.prototype, "activatedAlias", { + get: /** + * @return {?} + */ + function () { + return this.activatedBreakpoints[0] ? this.activatedBreakpoints[0].alias : ''; + }, + enumerable: true, + configurable: true + }); + /** + * Update styles on breakpoint activates or deactivates + * @param mc + */ + /** + * Update styles on breakpoint activates or deactivates + * @param {?} mc + * @return {?} + */ + MediaMarshaller.prototype.onMediaChange = /** + * Update styles on breakpoint activates or deactivates + * @param {?} mc + * @return {?} + */ + function (mc) { + /** @type {?} */ + var bp = this.findByQuery(mc.mediaQuery); + if (bp) { + mc = mergeAlias(mc, bp); + if (mc.matches && this.activatedBreakpoints.indexOf(bp) === -1) { + this.activatedBreakpoints.push(bp); + this.activatedBreakpoints.sort(sortDescendingPriority); + this.updateStyles(); + } + else if (!mc.matches && this.activatedBreakpoints.indexOf(bp) !== -1) { + // Remove the breakpoint when it's deactivated + this.activatedBreakpoints.splice(this.activatedBreakpoints.indexOf(bp), 1); + this.activatedBreakpoints.sort(sortDescendingPriority); + this.updateStyles(); + } + } + }; + /** + * initialize the marshaller with necessary elements for delegation on an element + * @param element + * @param key + * @param updateFn optional callback so that custom bp directives don't have to re-provide this + * @param clearFn optional callback so that custom bp directives don't have to re-provide this + * @param extraTriggers other triggers to force style updates (e.g. layout, directionality, etc) + */ + /** + * initialize the marshaller with necessary elements for delegation on an element + * @param {?} element + * @param {?} key + * @param {?=} updateFn optional callback so that custom bp directives don't have to re-provide this + * @param {?=} clearFn optional callback so that custom bp directives don't have to re-provide this + * @param {?=} extraTriggers other triggers to force style updates (e.g. layout, directionality, etc) + * @return {?} + */ + MediaMarshaller.prototype.init = /** + * initialize the marshaller with necessary elements for delegation on an element + * @param {?} element + * @param {?} key + * @param {?=} updateFn optional callback so that custom bp directives don't have to re-provide this + * @param {?=} clearFn optional callback so that custom bp directives don't have to re-provide this + * @param {?=} extraTriggers other triggers to force style updates (e.g. layout, directionality, etc) + * @return {?} + */ + function (element, key, updateFn, clearFn, extraTriggers) { + if (extraTriggers === void 0) { extraTriggers = []; } + initBuilderMap(this.updateMap, element, key, updateFn); + initBuilderMap(this.clearMap, element, key, clearFn); + this.buildElementKeyMap(element, key); + this.watchExtraTriggers(element, key, extraTriggers); + }; + /** + * get the value for an element and key and optionally a given breakpoint + * @param element + * @param key + * @param bp + */ + /** + * get the value for an element and key and optionally a given breakpoint + * @param {?} element + * @param {?} key + * @param {?=} bp + * @return {?} + */ + MediaMarshaller.prototype.getValue = /** + * get the value for an element and key and optionally a given breakpoint + * @param {?} element + * @param {?} key + * @param {?=} bp + * @return {?} + */ + function (element, key, bp) { + /** @type {?} */ + var bpMap = this.elementMap.get(element); + if (bpMap) { + /** @type {?} */ + var values = bp !== undefined ? bpMap.get(bp) : this.getActivatedValues(bpMap, key); + if (values) { + return values.get(key); + } + } + return undefined; + }; + /** + * whether the element has values for a given key + * @param element + * @param key + */ + /** + * whether the element has values for a given key + * @param {?} element + * @param {?} key + * @return {?} + */ + MediaMarshaller.prototype.hasValue = /** + * whether the element has values for a given key + * @param {?} element + * @param {?} key + * @return {?} + */ + function (element, key) { + /** @type {?} */ + var bpMap = this.elementMap.get(element); + if (bpMap) { + /** @type {?} */ + var values = this.getActivatedValues(bpMap, key); + if (values) { + return values.get(key) !== undefined || false; + } + } + return false; + }; + /** + * Set the value for an input on a directive + * @param element the element in question + * @param key the type of the directive (e.g. flex, layout-gap, etc) + * @param bp the breakpoint suffix (empty string = default) + * @param val the value for the breakpoint + */ + /** + * Set the value for an input on a directive + * @param {?} element the element in question + * @param {?} key the type of the directive (e.g. flex, layout-gap, etc) + * @param {?} val the value for the breakpoint + * @param {?} bp the breakpoint suffix (empty string = default) + * @return {?} + */ + MediaMarshaller.prototype.setValue = /** + * Set the value for an input on a directive + * @param {?} element the element in question + * @param {?} key the type of the directive (e.g. flex, layout-gap, etc) + * @param {?} val the value for the breakpoint + * @param {?} bp the breakpoint suffix (empty string = default) + * @return {?} + */ + function (element, key, val, bp) { + /** @type {?} */ + var bpMap = this.elementMap.get(element); + if (!bpMap) { + bpMap = new Map().set(bp, new Map().set(key, val)); + this.elementMap.set(element, bpMap); + } + else { + /** @type {?} */ + var values = (bpMap.get(bp) || new Map()).set(key, val); + bpMap.set(bp, values); + this.elementMap.set(element, bpMap); + } + /** @type {?} */ + var value = this.getValue(element, key); + if (value !== undefined) { + this.updateElement(element, key, value); + } + }; + /** Track element value changes for a specific key */ + /** + * Track element value changes for a specific key + * @param {?} element + * @param {?} key + * @return {?} + */ + MediaMarshaller.prototype.trackValue = /** + * Track element value changes for a specific key + * @param {?} element + * @param {?} key + * @return {?} + */ + function (element, key) { + return this.subject + .asObservable() + .pipe(operators.filter((/** + * @param {?} v + * @return {?} + */ + function (v) { return v.element === element && v.key === key; }))); + }; + /** update all styles for all elements on the current breakpoint */ + /** + * update all styles for all elements on the current breakpoint + * @return {?} + */ + MediaMarshaller.prototype.updateStyles = /** + * update all styles for all elements on the current breakpoint + * @return {?} + */ + function () { + var _this = this; + this.elementMap.forEach((/** + * @param {?} bpMap + * @param {?} el + * @return {?} + */ + function (bpMap, el) { + /** @type {?} */ + var keyMap = new Set((/** @type {?} */ (_this.elementKeyMap.get(el)))); + /** @type {?} */ + var valueMap = _this.getActivatedValues(bpMap); + if (valueMap) { + valueMap.forEach((/** + * @param {?} v + * @param {?} k + * @return {?} + */ + function (v, k) { + _this.updateElement(el, k, v); + keyMap.delete(k); + })); + } + keyMap.forEach((/** + * @param {?} k + * @return {?} + */ + function (k) { + valueMap = _this.getActivatedValues(bpMap, k); + if (valueMap) { + /** @type {?} */ + var value = valueMap.get(k); + _this.updateElement(el, k, value); + } + else { + _this.clearElement(el, k); + } + })); + })); + }; + /** + * clear the styles for a given element + * @param element + * @param key + */ + /** + * clear the styles for a given element + * @param {?} element + * @param {?} key + * @return {?} + */ + MediaMarshaller.prototype.clearElement = /** + * clear the styles for a given element + * @param {?} element + * @param {?} key + * @return {?} + */ + function (element, key) { + /** @type {?} */ + var builders = this.clearMap.get(element); + if (builders) { + /** @type {?} */ + var clearFn = (/** @type {?} */ (builders.get(key))); + if (!!clearFn) { + clearFn(); + this.subject.next({ element: element, key: key, value: '' }); + } + } + }; + /** + * update a given element with the activated values for a given key + * @param element + * @param key + * @param value + */ + /** + * update a given element with the activated values for a given key + * @param {?} element + * @param {?} key + * @param {?} value + * @return {?} + */ + MediaMarshaller.prototype.updateElement = /** + * update a given element with the activated values for a given key + * @param {?} element + * @param {?} key + * @param {?} value + * @return {?} + */ + function (element, key, value) { + /** @type {?} */ + var builders = this.updateMap.get(element); + if (builders) { + /** @type {?} */ + var updateFn = (/** @type {?} */ (builders.get(key))); + if (!!updateFn) { + updateFn(value); + this.subject.next({ element: element, key: key, value: value }); + } + } + }; + /** + * release all references to a given element + * @param element + */ + /** + * release all references to a given element + * @param {?} element + * @return {?} + */ + MediaMarshaller.prototype.releaseElement = /** + * release all references to a given element + * @param {?} element + * @return {?} + */ + function (element) { + /** @type {?} */ + var watcherMap = this.watcherMap.get(element); + if (watcherMap) { + watcherMap.forEach((/** + * @param {?} s + * @return {?} + */ + function (s) { return s.unsubscribe(); })); + this.watcherMap.delete(element); + } + /** @type {?} */ + var elementMap = this.elementMap.get(element); + if (elementMap) { + elementMap.forEach((/** + * @param {?} _ + * @param {?} s + * @return {?} + */ + function (_, s) { return elementMap.delete(s); })); + this.elementMap.delete(element); + } + }; + /** + * trigger an update for a given element and key (e.g. layout) + * @param element + * @param key + */ + /** + * trigger an update for a given element and key (e.g. layout) + * @param {?} element + * @param {?=} key + * @return {?} + */ + MediaMarshaller.prototype.triggerUpdate = /** + * trigger an update for a given element and key (e.g. layout) + * @param {?} element + * @param {?=} key + * @return {?} + */ + function (element, key) { + var _this = this; + /** @type {?} */ + var bpMap = this.elementMap.get(element); + if (bpMap) { + /** @type {?} */ + var valueMap = this.getActivatedValues(bpMap, key); + if (valueMap) { + if (key) { + this.updateElement(element, key, valueMap.get(key)); + } + else { + valueMap.forEach((/** + * @param {?} v + * @param {?} k + * @return {?} + */ + function (v, k) { return _this.updateElement(element, k, v); })); + } + } + } + }; + /** Cross-reference for HTMLElement with directive key */ + /** + * Cross-reference for HTMLElement with directive key + * @private + * @param {?} element + * @param {?} key + * @return {?} + */ + MediaMarshaller.prototype.buildElementKeyMap = /** + * Cross-reference for HTMLElement with directive key + * @private + * @param {?} element + * @param {?} key + * @return {?} + */ + function (element, key) { + /** @type {?} */ + var keyMap = this.elementKeyMap.get(element); + if (!keyMap) { + keyMap = new Set(); + this.elementKeyMap.set(element, keyMap); + } + keyMap.add(key); + }; + /** + * Other triggers that should force style updates: + * - directionality + * - layout changes + * - mutationobserver updates + */ + /** + * Other triggers that should force style updates: + * - directionality + * - layout changes + * - mutationobserver updates + * @private + * @param {?} element + * @param {?} key + * @param {?} triggers + * @return {?} + */ + MediaMarshaller.prototype.watchExtraTriggers = /** + * Other triggers that should force style updates: + * - directionality + * - layout changes + * - mutationobserver updates + * @private + * @param {?} element + * @param {?} key + * @param {?} triggers + * @return {?} + */ + function (element, key, triggers) { + var _this = this; + if (triggers && triggers.length) { + /** @type {?} */ + var watchers = this.watcherMap.get(element); + if (!watchers) { + watchers = new Map(); + this.watcherMap.set(element, watchers); + } + /** @type {?} */ + var subscription = watchers.get(key); + if (!subscription) { + /** @type {?} */ + var newSubscription = rxjs.merge.apply(void 0, triggers).subscribe((/** + * @return {?} + */ + function () { + /** @type {?} */ + var currentValue = _this.getValue(element, key); + _this.updateElement(element, key, currentValue); + })); + watchers.set(key, newSubscription); + } + } + }; + /** Breakpoint locator by mediaQuery */ + /** + * Breakpoint locator by mediaQuery + * @private + * @param {?} query + * @return {?} + */ + MediaMarshaller.prototype.findByQuery = /** + * Breakpoint locator by mediaQuery + * @private + * @param {?} query + * @return {?} + */ + function (query) { + return this.breakpoints.findByQuery(query); + }; + /** + * get the fallback breakpoint for a given element, starting with the current breakpoint + * @param bpMap + * @param key + */ + /** + * get the fallback breakpoint for a given element, starting with the current breakpoint + * @private + * @param {?} bpMap + * @param {?=} key + * @return {?} + */ + MediaMarshaller.prototype.getActivatedValues = /** + * get the fallback breakpoint for a given element, starting with the current breakpoint + * @private + * @param {?} bpMap + * @param {?=} key + * @return {?} + */ + function (bpMap, key) { + for (var i = 0; i < this.activatedBreakpoints.length; i++) { + /** @type {?} */ + var activatedBp = this.activatedBreakpoints[i]; + /** @type {?} */ + var valueMap = bpMap.get(activatedBp.alias); + if (valueMap) { + if (key === undefined || valueMap.has(key)) { + return valueMap; + } + } + } + /** @type {?} */ + var lastHope = bpMap.get(''); + return (key === undefined || lastHope && lastHope.has(key)) ? lastHope : undefined; + }; + /** + * Watch for mediaQuery breakpoint activations + */ + /** + * Watch for mediaQuery breakpoint activations + * @private + * @return {?} + */ + MediaMarshaller.prototype.observeActivations = /** + * Watch for mediaQuery breakpoint activations + * @private + * @return {?} + */ + function () { + /** @type {?} */ + var target = (/** @type {?} */ ((/** @type {?} */ (this)))); + /** @type {?} */ + var queries = this.breakpoints.items.map((/** + * @param {?} bp + * @return {?} + */ + function (bp) { return bp.mediaQuery; })); + this.matchMedia + .observe(this.hook.withPrintQuery(queries)) + .pipe(operators.tap(this.hook.interceptEvents(target)), operators.filter(this.hook.blockPropagation())) + .subscribe(this.onMediaChange.bind(this)); + }; + MediaMarshaller.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ + MediaMarshaller.ctorParameters = function () { return [ + { type: MatchMedia }, + { type: BreakPointRegistry }, + { type: PrintHook } + ]; }; + /** @nocollapse */ MediaMarshaller.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function MediaMarshaller_Factory() { return new MediaMarshaller(core.ɵɵinject(MatchMedia), core.ɵɵinject(BreakPointRegistry), core.ɵɵinject(PrintHook)); }, token: MediaMarshaller, providedIn: "root" }); + return MediaMarshaller; +}()); +/** + * @param {?} map + * @param {?} element + * @param {?} key + * @param {?=} input + * @return {?} + */ +function initBuilderMap(map$$1, element, key, input) { + if (input !== undefined) { + /** @type {?} */ + var oldMap = map$$1.get(element); + if (!oldMap) { + oldMap = new Map(); + map$$1.set(element, oldMap); + } + oldMap.set(key, input); + } +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var ImgSrcStyleBuilder = /** @class */ (function (_super) { + __extends(ImgSrcStyleBuilder, _super); + function ImgSrcStyleBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @param {?} url + * @return {?} + */ + ImgSrcStyleBuilder.prototype.buildStyles = /** + * @param {?} url + * @return {?} + */ + function (url) { + return { 'content': url ? "url(" + url + ")" : '' }; + }; + ImgSrcStyleBuilder.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ ImgSrcStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function ImgSrcStyleBuilder_Factory() { return new ImgSrcStyleBuilder(); }, token: ImgSrcStyleBuilder, providedIn: "root" }); + return ImgSrcStyleBuilder; +}(StyleBuilder)); +var ImgSrcDirective = /** @class */ (function (_super) { + __extends(ImgSrcDirective, _super); + function ImgSrcDirective(elementRef, styleBuilder, styler, marshal, platformId, serverModuleLoaded) { + var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; + _this.elementRef = elementRef; + _this.styleBuilder = styleBuilder; + _this.styler = styler; + _this.marshal = marshal; + _this.platformId = platformId; + _this.serverModuleLoaded = serverModuleLoaded; + _this.DIRECTIVE_KEY = 'img-src'; + _this.defaultSrc = ''; + _this.styleCache = imgSrcCache; + _this.init(); + _this.setValue(_this.nativeElement.getAttribute('src') || '', ''); + if (common.isPlatformServer(_this.platformId) && _this.serverModuleLoaded) { + _this.nativeElement.setAttribute('src', ''); + } + return _this; + } + Object.defineProperty(ImgSrcDirective.prototype, "src", { + set: /** + * @param {?} val + * @return {?} + */ + function (val) { + this.defaultSrc = val; + this.setValue(this.defaultSrc, ''); + }, + enumerable: true, + configurable: true + }); + /** + * Use the [responsively] activated input value to update + * the host img src attribute or assign a default `img.src=''` + * if the src has not been defined. + * + * Do nothing to standard `` usages, only when responsive + * keys are present do we actually call `setAttribute()` + */ + /** + * Use the [responsively] activated input value to update + * the host img src attribute or assign a default `img.src=''` + * if the src has not been defined. + * + * Do nothing to standard `` usages, only when responsive + * keys are present do we actually call `setAttribute()` + * @protected + * @param {?=} value + * @return {?} + */ + ImgSrcDirective.prototype.updateWithValue = /** + * Use the [responsively] activated input value to update + * the host img src attribute or assign a default `img.src=''` + * if the src has not been defined. + * + * Do nothing to standard `` usages, only when responsive + * keys are present do we actually call `setAttribute()` + * @protected + * @param {?=} value + * @return {?} + */ + function (value) { + /** @type {?} */ + var url = value || this.defaultSrc; + if (common.isPlatformServer(this.platformId) && this.serverModuleLoaded) { + this.addStyles(url); + } + else { + this.nativeElement.setAttribute('src', url); + } + }; + /** @nocollapse */ + ImgSrcDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: ImgSrcStyleBuilder }, + { type: StyleUtils }, + { type: MediaMarshaller }, + { type: Object, decorators: [{ type: core.Inject, args: [core.PLATFORM_ID,] }] }, + { type: Boolean, decorators: [{ type: core.Inject, args: [SERVER_TOKEN,] }] } + ]; }; + ImgSrcDirective.propDecorators = { + src: [{ type: core.Input, args: ['src',] }] + }; + return ImgSrcDirective; +}(BaseDirective2)); +/** @type {?} */ +var imgSrcCache = new Map(); +/** @type {?} */ +var inputs = [ + 'src.xs', 'src.sm', 'src.md', 'src.lg', 'src.xl', + 'src.lt-sm', 'src.lt-md', 'src.lt-lg', 'src.lt-xl', + 'src.gt-xs', 'src.gt-sm', 'src.gt-md', 'src.gt-lg' +]; +/** @type {?} */ +var selector = "\n img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl],\n img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl],\n img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]\n"; +/** + * This directive provides a responsive API for the HTML 'src' attribute + * and will update the img.src property upon each responsive activation. + * + * e.g. + * + * + * @see https://css-tricks.com/responsive-images-youre-just-changing-resolutions-use-src/ + */ +var DefaultImgSrcDirective = /** @class */ (function (_super) { + __extends(DefaultImgSrcDirective, _super); + function DefaultImgSrcDirective() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.inputs = inputs; + return _this; + } + DefaultImgSrcDirective.decorators = [ + { type: core.Directive, args: [{ selector: selector, inputs: inputs },] }, + ]; + return DefaultImgSrcDirective; +}(ImgSrcDirective)); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var ClassDirective = /** @class */ (function (_super) { + __extends(ClassDirective, _super); + function ClassDirective(elementRef, styler, marshal, delegate, ngClassInstance) { + var _this = _super.call(this, elementRef, (/** @type {?} */ (null)), styler, marshal) || this; + _this.elementRef = elementRef; + _this.styler = styler; + _this.marshal = marshal; + _this.delegate = delegate; + _this.ngClassInstance = ngClassInstance; + _this.DIRECTIVE_KEY = 'ngClass'; + if (!_this.ngClassInstance) { + // Create an instance NgClass Directive instance only if `ngClass=""` has NOT been defined on + // the same host element; since the responsive variations may be defined... + _this.ngClassInstance = new common.NgClass(_this.delegate); + } + _this.init(); + _this.setValue('', ''); + return _this; + } + Object.defineProperty(ClassDirective.prototype, "klass", { + /** + * Capture class assignments so we cache the default classes + * which are merged with activated styles and used as fallbacks. + */ + set: /** + * Capture class assignments so we cache the default classes + * which are merged with activated styles and used as fallbacks. + * @param {?} val + * @return {?} + */ + function (val) { + this.ngClassInstance.klass = val; + this.setValue(val, ''); + }, + enumerable: true, + configurable: true + }); + /** + * @protected + * @param {?} value + * @return {?} + */ + ClassDirective.prototype.updateWithValue = /** + * @protected + * @param {?} value + * @return {?} + */ + function (value) { + this.ngClassInstance.ngClass = value; + this.ngClassInstance.ngDoCheck(); + }; + // ****************************************************************** + // Lifecycle Hooks + // ****************************************************************** + /** + * For ChangeDetectionStrategy.onPush and ngOnChanges() updates + */ + // ****************************************************************** + // Lifecycle Hooks + // ****************************************************************** + /** + * For ChangeDetectionStrategy.onPush and ngOnChanges() updates + * @return {?} + */ + ClassDirective.prototype.ngDoCheck = + // ****************************************************************** + // Lifecycle Hooks + // ****************************************************************** + /** + * For ChangeDetectionStrategy.onPush and ngOnChanges() updates + * @return {?} + */ + function () { + this.ngClassInstance.ngDoCheck(); + }; + /** @nocollapse */ + ClassDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: StyleUtils }, + { type: MediaMarshaller }, + { type: common.ɵNgClassImpl }, + { type: common.NgClass, decorators: [{ type: core.Optional }, { type: core.Self }] } + ]; }; + ClassDirective.propDecorators = { + klass: [{ type: core.Input, args: ['class',] }] + }; + return ClassDirective; +}(BaseDirective2)); +/** @type {?} */ +var inputs$1 = [ + 'ngClass', 'ngClass.xs', 'ngClass.sm', 'ngClass.md', 'ngClass.lg', 'ngClass.xl', + 'ngClass.lt-sm', 'ngClass.lt-md', 'ngClass.lt-lg', 'ngClass.lt-xl', + 'ngClass.gt-xs', 'ngClass.gt-sm', 'ngClass.gt-md', 'ngClass.gt-lg' +]; +/** @type {?} */ +var selector$1 = "\n [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl],\n [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl],\n [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]\n"; +// tslint:disable-next-line:variable-name +/** @type {?} */ +var LayoutNgClassImplProvider = { + provide: common.ɵNgClassImpl, + useClass: common.ɵNgClassR2Impl +}; +/** + * Directive to add responsive support for ngClass. + * This maintains the core functionality of 'ngClass' and adds responsive API + * Note: this class is a no-op when rendered on the server + */ +var DefaultClassDirective = /** @class */ (function (_super) { + __extends(DefaultClassDirective, _super); + function DefaultClassDirective() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.inputs = inputs$1; + return _this; + } + DefaultClassDirective.decorators = [ + { type: core.Directive, args: [{ selector: selector$1, inputs: inputs$1, providers: [LayoutNgClassImplProvider] },] }, + ]; + return DefaultClassDirective; +}(ClassDirective)); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var ShowHideStyleBuilder = /** @class */ (function (_super) { + __extends(ShowHideStyleBuilder, _super); + function ShowHideStyleBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @param {?} show + * @param {?} parent + * @return {?} + */ + ShowHideStyleBuilder.prototype.buildStyles = /** + * @param {?} show + * @param {?} parent + * @return {?} + */ + function (show, parent) { + /** @type {?} */ + var shouldShow = show === 'true'; + return { 'display': shouldShow ? parent.display : 'none' }; + }; + ShowHideStyleBuilder.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ ShowHideStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function ShowHideStyleBuilder_Factory() { return new ShowHideStyleBuilder(); }, token: ShowHideStyleBuilder, providedIn: "root" }); + return ShowHideStyleBuilder; +}(StyleBuilder)); +var ShowHideDirective = /** @class */ (function (_super) { + __extends(ShowHideDirective, _super); + function ShowHideDirective(elementRef, styleBuilder, styler, marshal, layoutConfig, platformId, serverModuleLoaded) { + var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; + _this.elementRef = elementRef; + _this.styleBuilder = styleBuilder; + _this.styler = styler; + _this.marshal = marshal; + _this.layoutConfig = layoutConfig; + _this.platformId = platformId; + _this.serverModuleLoaded = serverModuleLoaded; + _this.DIRECTIVE_KEY = 'show-hide'; + /** + * Original dom Elements CSS display style + */ + _this.display = ''; + _this.hasLayout = false; + _this.hasFlexChild = false; + return _this; + } + // ********************************************* + // Lifecycle Methods + // ********************************************* + // ********************************************* + // Lifecycle Methods + // ********************************************* + /** + * @return {?} + */ + ShowHideDirective.prototype.ngAfterViewInit = + // ********************************************* + // Lifecycle Methods + // ********************************************* + /** + * @return {?} + */ + function () { + this.trackExtraTriggers(); + /** @type {?} */ + var children = Array.from(this.nativeElement.children); + for (var i = 0; i < children.length; i++) { + if (this.marshal.hasValue((/** @type {?} */ (children[i])), 'flex')) { + this.hasFlexChild = true; + break; + } + } + if (DISPLAY_MAP.has(this.nativeElement)) { + this.display = (/** @type {?} */ (DISPLAY_MAP.get(this.nativeElement))); + } + else { + this.display = this.getDisplayStyle(); + DISPLAY_MAP.set(this.nativeElement, this.display); + } + this.init(); + // set the default to show unless explicitly overridden + /** @type {?} */ + var defaultValue = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY, ''); + if (defaultValue === undefined || defaultValue === '') { + this.setValue(true, ''); + } + else { + this.triggerUpdate(); + } + }; + /** + * On changes to any @Input properties... + * Default to use the non-responsive Input value ('fxShow') + * Then conditionally override with the mq-activated Input's current value + */ + /** + * On changes to any \@Input properties... + * Default to use the non-responsive Input value ('fxShow') + * Then conditionally override with the mq-activated Input's current value + * @param {?} changes + * @return {?} + */ + ShowHideDirective.prototype.ngOnChanges = /** + * On changes to any \@Input properties... + * Default to use the non-responsive Input value ('fxShow') + * Then conditionally override with the mq-activated Input's current value + * @param {?} changes + * @return {?} + */ + function (changes) { + var _this = this; + Object.keys(changes).forEach((/** + * @param {?} key + * @return {?} + */ + function (key) { + if (_this.inputs.indexOf(key) !== -1) { + /** @type {?} */ + var inputKey = key.split('.'); + /** @type {?} */ + var bp = inputKey.slice(1).join('.'); + /** @type {?} */ + var inputValue = changes[key].currentValue; + /** @type {?} */ + var shouldShow = inputValue !== '' ? + inputValue !== 0 ? coercion.coerceBooleanProperty(inputValue) : false + : true; + if (inputKey[0] === 'fxHide') { + shouldShow = !shouldShow; + } + _this.setValue(shouldShow, bp); + } + })); + }; + // ********************************************* + // Protected methods + // ********************************************* + /** + * Watch for these extra triggers to update fxShow, fxHide stylings + */ + // ********************************************* + // Protected methods + // ********************************************* + /** + * Watch for these extra triggers to update fxShow, fxHide stylings + * @protected + * @return {?} + */ + ShowHideDirective.prototype.trackExtraTriggers = + // ********************************************* + // Protected methods + // ********************************************* + /** + * Watch for these extra triggers to update fxShow, fxHide stylings + * @protected + * @return {?} + */ + function () { + var _this = this; + this.hasLayout = this.marshal.hasValue(this.nativeElement, 'layout'); + ['layout', 'layout-align'].forEach((/** + * @param {?} key + * @return {?} + */ + function (key) { + _this.marshal + .trackValue(_this.nativeElement, key) + .pipe(operators.takeUntil(_this.destroySubject)) + .subscribe(_this.triggerUpdate.bind(_this)); + })); + }; + /** + * Override accessor to the current HTMLElement's `display` style + * Note: Show/Hide will not change the display to 'flex' but will set it to 'block' + * unless it was already explicitly specified inline or in a CSS stylesheet. + */ + /** + * Override accessor to the current HTMLElement's `display` style + * Note: Show/Hide will not change the display to 'flex' but will set it to 'block' + * unless it was already explicitly specified inline or in a CSS stylesheet. + * @protected + * @return {?} + */ + ShowHideDirective.prototype.getDisplayStyle = /** + * Override accessor to the current HTMLElement's `display` style + * Note: Show/Hide will not change the display to 'flex' but will set it to 'block' + * unless it was already explicitly specified inline or in a CSS stylesheet. + * @protected + * @return {?} + */ + function () { + return (this.hasLayout || (this.hasFlexChild && this.layoutConfig.addFlexToParent)) ? + 'flex' : this.styler.lookupStyle(this.nativeElement, 'display', true); + }; + /** Validate the visibility value and then update the host's inline display style */ + /** + * Validate the visibility value and then update the host's inline display style + * @protected + * @param {?=} value + * @return {?} + */ + ShowHideDirective.prototype.updateWithValue = /** + * Validate the visibility value and then update the host's inline display style + * @protected + * @param {?=} value + * @return {?} + */ + function (value) { + if (value === void 0) { value = true; } + if (value === '') { + return; + } + this.addStyles(value ? 'true' : 'false', { display: this.display }); + if (common.isPlatformServer(this.platformId) && this.serverModuleLoaded) { + this.nativeElement.style.setProperty('display', ''); + } + this.marshal.triggerUpdate((/** @type {?} */ (this.parentElement)), 'layout-gap'); + }; + /** @nocollapse */ + ShowHideDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: ShowHideStyleBuilder }, + { type: StyleUtils }, + { type: MediaMarshaller }, + { type: undefined, decorators: [{ type: core.Inject, args: [LAYOUT_CONFIG,] }] }, + { type: Object, decorators: [{ type: core.Inject, args: [core.PLATFORM_ID,] }] }, + { type: Boolean, decorators: [{ type: core.Optional }, { type: core.Inject, args: [SERVER_TOKEN,] }] } + ]; }; + return ShowHideDirective; +}(BaseDirective2)); +/** @type {?} */ +var DISPLAY_MAP = new WeakMap(); +/** @type {?} */ +var inputs$2 = [ + 'fxShow', 'fxShow.print', + 'fxShow.xs', 'fxShow.sm', 'fxShow.md', 'fxShow.lg', 'fxShow.xl', + 'fxShow.lt-sm', 'fxShow.lt-md', 'fxShow.lt-lg', 'fxShow.lt-xl', + 'fxShow.gt-xs', 'fxShow.gt-sm', 'fxShow.gt-md', 'fxShow.gt-lg', + 'fxHide', 'fxHide.print', + 'fxHide.xs', 'fxHide.sm', 'fxHide.md', 'fxHide.lg', 'fxHide.xl', + 'fxHide.lt-sm', 'fxHide.lt-md', 'fxHide.lt-lg', 'fxHide.lt-xl', + 'fxHide.gt-xs', 'fxHide.gt-sm', 'fxHide.gt-md', 'fxHide.gt-lg' +]; +/** @type {?} */ +var selector$2 = "\n [fxShow], [fxShow.print],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide], [fxHide.print],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n"; +/** + * 'show' Layout API directive + */ +var DefaultShowHideDirective = /** @class */ (function (_super) { + __extends(DefaultShowHideDirective, _super); + function DefaultShowHideDirective() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.inputs = inputs$2; + return _this; + } + DefaultShowHideDirective.decorators = [ + { type: core.Directive, args: [{ selector: selector$2, inputs: inputs$2 },] }, + ]; + return DefaultShowHideDirective; +}(ShowHideDirective)); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * NgStyle allowed inputs + */ +var /** + * NgStyle allowed inputs + */ +NgStyleKeyValue = /** @class */ (function () { + function NgStyleKeyValue(key, value, noQuotes) { + if (noQuotes === void 0) { noQuotes = true; } + this.key = key; + this.value = value; + this.key = noQuotes ? key.replace(/['"]/g, '').trim() : key.trim(); + this.value = noQuotes ? value.replace(/['"]/g, '').trim() : value.trim(); + this.value = this.value.replace(/;/, ''); + } + return NgStyleKeyValue; +}()); +/** + * @param {?} target + * @return {?} + */ +function getType(target) { + /** @type {?} */ + var what = typeof target; + if (what === 'object') { + return (target.constructor === Array) ? 'array' : + (target.constructor === Set) ? 'set' : 'object'; + } + return what; +} +/** + * Split string of key:value pairs into Array of k-v pairs + * e.g. 'key:value; key:value; key:value;' -> ['key:value',...] + * @param {?} source + * @param {?=} delimiter + * @return {?} + */ +function buildRawList(source, delimiter) { + if (delimiter === void 0) { delimiter = ';'; } + return String(source) + .trim() + .split(delimiter) + .map((/** + * @param {?} val + * @return {?} + */ + function (val) { return val.trim(); })) + .filter((/** + * @param {?} val + * @return {?} + */ + function (val) { return val !== ''; })); +} +/** + * Convert array of key:value strings to a iterable map object + * @param {?} styles + * @param {?=} sanitize + * @return {?} + */ +function buildMapFromList(styles, sanitize) { + /** @type {?} */ + var sanitizeValue = (/** + * @param {?} it + * @return {?} + */ + function (it) { + if (sanitize) { + it.value = sanitize(it.value); + } + return it; + }); + return styles + .map(stringToKeyValue) + .filter((/** + * @param {?} entry + * @return {?} + */ + function (entry) { return !!entry; })) + .map(sanitizeValue) + .reduce(keyValuesToMap, (/** @type {?} */ ({}))); +} +/** + * Convert Set or raw Object to an iterable NgStyleMap + * @param {?} source + * @param {?=} sanitize + * @return {?} + */ +function buildMapFromSet(source, sanitize) { + /** @type {?} */ + var list = []; + if (getType(source) === 'set') { + ((/** @type {?} */ (source))).forEach((/** + * @param {?} entry + * @return {?} + */ + function (entry) { return list.push(entry); })); + } + else { + Object.keys(source).forEach((/** + * @param {?} key + * @return {?} + */ + function (key) { + list.push(key + ":" + ((/** @type {?} */ (source)))[key]); + })); + } + return buildMapFromList(list, sanitize); +} +/** + * Convert 'key:value' -> [key, value] + * @param {?} it + * @return {?} + */ +function stringToKeyValue(it) { + var _a = it.split(':'), key = _a[0], vals = _a.slice(1); + return new NgStyleKeyValue(key, vals.join(':')); +} +/** + * Convert [ [key,value] ] -> { key : value } + * @param {?} map + * @param {?} entry + * @return {?} + */ +function keyValuesToMap(map, entry) { + if (!!entry.key) { + map[entry.key] = entry.value; + } + return map; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var StyleDirective = /** @class */ (function (_super) { + __extends(StyleDirective, _super); + function StyleDirective(elementRef, styler, marshal, delegate, sanitizer, ngStyleInstance, serverLoaded, platformId) { + var _this = _super.call(this, elementRef, (/** @type {?} */ (null)), styler, marshal) || this; + _this.elementRef = elementRef; + _this.styler = styler; + _this.marshal = marshal; + _this.delegate = delegate; + _this.sanitizer = sanitizer; + _this.ngStyleInstance = ngStyleInstance; + _this.DIRECTIVE_KEY = 'ngStyle'; + if (!_this.ngStyleInstance) { + // Create an instance NgClass Directive instance only if `ngClass=""` has NOT been + // defined on the same host element; since the responsive variations may be defined... + _this.ngStyleInstance = new common.NgStyle(_this.delegate); + } + _this.init(); + /** @type {?} */ + var styles = _this.nativeElement.getAttribute('style') || ''; + _this.fallbackStyles = _this.buildStyleMap(styles); + _this.isServer = serverLoaded && common.isPlatformServer(platformId); + return _this; + } + /** Add generated styles */ + /** + * Add generated styles + * @protected + * @param {?} value + * @return {?} + */ + StyleDirective.prototype.updateWithValue = /** + * Add generated styles + * @protected + * @param {?} value + * @return {?} + */ + function (value) { + /** @type {?} */ + var styles = this.buildStyleMap(value); + this.ngStyleInstance.ngStyle = __assign({}, this.fallbackStyles, styles); + if (this.isServer) { + this.applyStyleToElement(styles); + } + this.ngStyleInstance.ngDoCheck(); + }; + /** Remove generated styles */ + /** + * Remove generated styles + * @protected + * @return {?} + */ + StyleDirective.prototype.clearStyles = /** + * Remove generated styles + * @protected + * @return {?} + */ + function () { + this.ngStyleInstance.ngStyle = this.fallbackStyles; + this.ngStyleInstance.ngDoCheck(); + }; + /** + * Convert raw strings to ngStyleMap; which is required by ngStyle + * NOTE: Raw string key-value pairs MUST be delimited by `;` + * Comma-delimiters are not supported due to complexities of + * possible style values such as `rgba(x,x,x,x)` and others + */ + /** + * Convert raw strings to ngStyleMap; which is required by ngStyle + * NOTE: Raw string key-value pairs MUST be delimited by `;` + * Comma-delimiters are not supported due to complexities of + * possible style values such as `rgba(x,x,x,x)` and others + * @protected + * @param {?} styles + * @return {?} + */ + StyleDirective.prototype.buildStyleMap = /** + * Convert raw strings to ngStyleMap; which is required by ngStyle + * NOTE: Raw string key-value pairs MUST be delimited by `;` + * Comma-delimiters are not supported due to complexities of + * possible style values such as `rgba(x,x,x,x)` and others + * @protected + * @param {?} styles + * @return {?} + */ + function (styles) { + var _this = this; + // Always safe-guard (aka sanitize) style property values + /** @type {?} */ + var sanitizer = (/** + * @param {?} val + * @return {?} + */ + function (val) { + return _this.sanitizer.sanitize(core.SecurityContext.STYLE, val) || ''; + }); + if (styles) { + switch (getType(styles)) { + case 'string': return buildMapFromList$1(buildRawList(styles), sanitizer); + case 'array': return buildMapFromList$1((/** @type {?} */ (styles)), sanitizer); + case 'set': return buildMapFromSet(styles, sanitizer); + default: return buildMapFromSet(styles, sanitizer); + } + } + return {}; + }; + // ****************************************************************** + // Lifecycle Hooks + // ****************************************************************** + /** For ChangeDetectionStrategy.onPush and ngOnChanges() updates */ + // ****************************************************************** + // Lifecycle Hooks + // ****************************************************************** + /** + * For ChangeDetectionStrategy.onPush and ngOnChanges() updates + * @return {?} + */ + StyleDirective.prototype.ngDoCheck = + // ****************************************************************** + // Lifecycle Hooks + // ****************************************************************** + /** + * For ChangeDetectionStrategy.onPush and ngOnChanges() updates + * @return {?} + */ + function () { + this.ngStyleInstance.ngDoCheck(); + }; + /** @nocollapse */ + StyleDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: StyleUtils }, + { type: MediaMarshaller }, + { type: common.ɵNgStyleImpl }, + { type: platformBrowser.DomSanitizer }, + { type: common.NgStyle, decorators: [{ type: core.Optional }, { type: core.Self }] }, + { type: Boolean, decorators: [{ type: core.Optional }, { type: core.Inject, args: [SERVER_TOKEN,] }] }, + { type: Object, decorators: [{ type: core.Inject, args: [core.PLATFORM_ID,] }] } + ]; }; + return StyleDirective; +}(BaseDirective2)); +/** @type {?} */ +var inputs$3 = [ + 'ngStyle', + 'ngStyle.xs', 'ngStyle.sm', 'ngStyle.md', 'ngStyle.lg', 'ngStyle.xl', + 'ngStyle.lt-sm', 'ngStyle.lt-md', 'ngStyle.lt-lg', 'ngStyle.lt-xl', + 'ngStyle.gt-xs', 'ngStyle.gt-sm', 'ngStyle.gt-md', 'ngStyle.gt-lg' +]; +/** @type {?} */ +var selector$3 = "\n [ngStyle],\n [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl],\n [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl],\n [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]\n"; +// tslint:disable-next-line:variable-name +/** @type {?} */ +var LayoutNgStyleImplProvider = { + provide: common.ɵNgStyleImpl, + useClass: common.ɵNgStyleR2Impl +}; +/** + * Directive to add responsive support for ngStyle. + * + */ +var DefaultStyleDirective = /** @class */ (function (_super) { + __extends(DefaultStyleDirective, _super); + function DefaultStyleDirective() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.inputs = inputs$3; + return _this; + } + DefaultStyleDirective.decorators = [ + { type: core.Directive, args: [{ selector: selector$3, inputs: inputs$3, providers: [LayoutNgStyleImplProvider] },] }, + ]; + return DefaultStyleDirective; +}(StyleDirective)); +/** + * Build a styles map from a list of styles, while sanitizing bad values first + * @param {?} styles + * @param {?=} sanitize + * @return {?} + */ +function buildMapFromList$1(styles, sanitize) { + /** @type {?} */ + var sanitizeValue = (/** + * @param {?} it + * @return {?} + */ + function (it) { + if (sanitize) { + it.value = sanitize(it.value); + } + return it; + }); + return styles + .map(stringToKeyValue) + .filter((/** + * @param {?} entry + * @return {?} + */ + function (entry) { return !!entry; })) + .map(sanitizeValue) + .reduce(keyValuesToMap, (/** @type {?} */ ({}))); +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var ALL_DIRECTIVES = [ + DefaultShowHideDirective, + DefaultClassDirective, + DefaultStyleDirective, + DefaultImgSrcDirective +]; +/** + * ***************************************************************** + * Define module for the Extended API + * ***************************************************************** + */ +var ExtendedModule = /** @class */ (function () { + function ExtendedModule() { + } + ExtendedModule.decorators = [ + { type: core.NgModule, args: [{ + imports: [CoreModule], + declarations: ALL_DIRECTIVES.slice(), + exports: ALL_DIRECTIVES.slice() + },] }, + ]; + return ExtendedModule; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + * @type {?} + */ +var INLINE$1 = 'inline'; +/** @type {?} */ +var LAYOUT_VALUES$1 = ['row', 'column', 'row-reverse', 'column-reverse']; +/** + * Validate the direction|'direction wrap' value and then update the host's inline flexbox styles + * @param {?} value + * @return {?} + */ +function buildLayoutCSS$1(value) { + var _a = validateValue$1(value), direction = _a[0], wrap = _a[1], isInline = _a[2]; + return buildCSS$1(direction, wrap, isInline); +} +/** + * Validate the value to be one of the acceptable value options + * Use default fallback of 'row' + * @param {?} value + * @return {?} + */ +function validateValue$1(value) { + value = value ? value.toLowerCase() : ''; + var _a = value.split(' '), direction = _a[0], wrap = _a[1], inline = _a[2]; + // First value must be the `flex-direction` + if (!LAYOUT_VALUES$1.find((/** + * @param {?} x + * @return {?} + */ + function (x) { return x === direction; }))) { + direction = LAYOUT_VALUES$1[0]; + } + if (wrap === INLINE$1) { + wrap = (inline !== INLINE$1) ? inline : ''; + inline = INLINE$1; + } + return [direction, validateWrapValue$1(wrap), !!inline]; +} +/** + * Determine if the validated, flex-direction value specifies + * a horizontal/row flow. + * @param {?} value + * @return {?} + */ +function isFlowHorizontal(value) { + var flow = validateValue$1(value)[0]; + return flow.indexOf('row') > -1; +} +/** + * Convert layout-wrap='' to expected flex-wrap style + * @param {?} value + * @return {?} + */ +function validateWrapValue$1(value) { + if (!!value) { + switch (value.toLowerCase()) { + case 'reverse': + case 'wrap-reverse': + case 'reverse-wrap': + value = 'wrap-reverse'; + break; + case 'no': + case 'none': + case 'nowrap': + value = 'nowrap'; + break; + // All other values fallback to 'wrap' + default: + value = 'wrap'; + break; + } + } + return value; +} +/** + * Build the CSS that should be assigned to the element instance + * BUG: + * 1) min-height on a column flex container won’t apply to its flex item children in IE 10-11. + * Use height instead if possible; height : vh; + * + * This way any padding or border specified on the child elements are + * laid out and drawn inside that element's specified width and height. + * @param {?} direction + * @param {?=} wrap + * @param {?=} inline + * @return {?} + */ +function buildCSS$1(direction, wrap, inline) { + if (wrap === void 0) { wrap = null; } + if (inline === void 0) { inline = false; } + return { + 'display': inline ? 'inline-flex' : 'flex', + 'box-sizing': 'border-box', + 'flex-direction': direction, + 'flex-wrap': !!wrap ? wrap : null + }; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var LayoutStyleBuilder = /** @class */ (function (_super) { + __extends(LayoutStyleBuilder, _super); + function LayoutStyleBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @param {?} input + * @return {?} + */ + LayoutStyleBuilder.prototype.buildStyles = /** + * @param {?} input + * @return {?} + */ + function (input) { + return buildLayoutCSS$1(input); + }; + LayoutStyleBuilder.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ LayoutStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function LayoutStyleBuilder_Factory() { return new LayoutStyleBuilder(); }, token: LayoutStyleBuilder, providedIn: "root" }); + return LayoutStyleBuilder; +}(StyleBuilder)); +/** @type {?} */ +var inputs$4 = [ + 'fxLayout', 'fxLayout.xs', 'fxLayout.sm', 'fxLayout.md', + 'fxLayout.lg', 'fxLayout.xl', 'fxLayout.lt-sm', 'fxLayout.lt-md', + 'fxLayout.lt-lg', 'fxLayout.lt-xl', 'fxLayout.gt-xs', 'fxLayout.gt-sm', + 'fxLayout.gt-md', 'fxLayout.gt-lg' +]; +/** @type {?} */ +var selector$4 = "\n [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],\n [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md],\n [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm],\n [fxLayout.gt-md], [fxLayout.gt-lg]\n"; +/** + * 'layout' flexbox styling directive + * Defines the positioning flow direction for the child elements: row or column + * Optional values: column or row (default) + * @see https://css-tricks.com/almanac/properties/f/flex-direction/ + * + */ +var LayoutDirective = /** @class */ (function (_super) { + __extends(LayoutDirective, _super); + function LayoutDirective(elRef, styleUtils, styleBuilder, marshal) { + var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; + _this.elRef = elRef; + _this.styleUtils = styleUtils; + _this.styleBuilder = styleBuilder; + _this.marshal = marshal; + _this.DIRECTIVE_KEY = 'layout'; + _this.styleCache = layoutCache; + _this.init(); + return _this; + } + /** @nocollapse */ + LayoutDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: StyleUtils }, + { type: LayoutStyleBuilder, decorators: [{ type: core.Optional }] }, + { type: MediaMarshaller } + ]; }; + return LayoutDirective; +}(BaseDirective2)); +var DefaultLayoutDirective = /** @class */ (function (_super) { + __extends(DefaultLayoutDirective, _super); + function DefaultLayoutDirective() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.inputs = inputs$4; + return _this; + } + DefaultLayoutDirective.decorators = [ + { type: core.Directive, args: [{ selector: selector$4, inputs: inputs$4 },] }, + ]; + return DefaultLayoutDirective; +}(LayoutDirective)); +/** @type {?} */ +var layoutCache = new Map(); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var CLEAR_MARGIN_CSS = { + 'margin-left': null, + 'margin-right': null, + 'margin-top': null, + 'margin-bottom': null +}; +var LayoutGapStyleBuilder = /** @class */ (function (_super) { + __extends(LayoutGapStyleBuilder, _super); + function LayoutGapStyleBuilder(_styler) { + var _this = _super.call(this) || this; + _this._styler = _styler; + return _this; + } + /** + * @param {?} gapValue + * @param {?} parent + * @return {?} + */ + LayoutGapStyleBuilder.prototype.buildStyles = /** + * @param {?} gapValue + * @param {?} parent + * @return {?} + */ + function (gapValue, parent) { + if (gapValue.endsWith(GRID_SPECIFIER)) { + gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER)); + // Add the margin to the host element + return buildGridMargin(gapValue, parent.directionality); + } + else { + return {}; + } + }; + /** + * @param {?} gapValue + * @param {?} _styles + * @param {?} parent + * @return {?} + */ + LayoutGapStyleBuilder.prototype.sideEffect = /** + * @param {?} gapValue + * @param {?} _styles + * @param {?} parent + * @return {?} + */ + function (gapValue, _styles, parent) { + /** @type {?} */ + var items = parent.items; + if (gapValue.endsWith(GRID_SPECIFIER)) { + gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER)); + // For each `element` children, set the padding + /** @type {?} */ + var paddingStyles = buildGridPadding(gapValue, parent.directionality); + this._styler.applyStyleToElements(paddingStyles, parent.items); + } + else { + /** @type {?} */ + var lastItem = (/** @type {?} */ (items.pop())); + // For each `element` children EXCEPT the last, + // set the margin right/bottom styles... + /** @type {?} */ + var gapCss = buildGapCSS(gapValue, parent); + this._styler.applyStyleToElements(gapCss, items); + // Clear all gaps for all visible elements + this._styler.applyStyleToElements(CLEAR_MARGIN_CSS, [lastItem]); + } + }; + LayoutGapStyleBuilder.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ + LayoutGapStyleBuilder.ctorParameters = function () { return [ + { type: StyleUtils } + ]; }; + /** @nocollapse */ LayoutGapStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function LayoutGapStyleBuilder_Factory() { return new LayoutGapStyleBuilder(core.ɵɵinject(StyleUtils)); }, token: LayoutGapStyleBuilder, providedIn: "root" }); + return LayoutGapStyleBuilder; +}(StyleBuilder)); +/** @type {?} */ +var inputs$1$1 = [ + 'fxLayoutGap', 'fxLayoutGap.xs', 'fxLayoutGap.sm', 'fxLayoutGap.md', + 'fxLayoutGap.lg', 'fxLayoutGap.xl', 'fxLayoutGap.lt-sm', 'fxLayoutGap.lt-md', + 'fxLayoutGap.lt-lg', 'fxLayoutGap.lt-xl', 'fxLayoutGap.gt-xs', 'fxLayoutGap.gt-sm', + 'fxLayoutGap.gt-md', 'fxLayoutGap.gt-lg' +]; +/** @type {?} */ +var selector$1$1 = "\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n"; +/** + * 'layout-padding' styling directive + * Defines padding of child elements in a layout container + */ +var LayoutGapDirective = /** @class */ (function (_super) { + __extends(LayoutGapDirective, _super); + function LayoutGapDirective(elRef, zone, directionality, styleUtils, styleBuilder, marshal) { + var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; + _this.elRef = elRef; + _this.zone = zone; + _this.directionality = directionality; + _this.styleUtils = styleUtils; + _this.styleBuilder = styleBuilder; + _this.marshal = marshal; + _this.layout = 'row'; // default flex-direction + // default flex-direction + _this.DIRECTIVE_KEY = 'layout-gap'; + _this.observerSubject = new rxjs.Subject(); + /** @type {?} */ + var extraTriggers = [_this.directionality.change, _this.observerSubject.asObservable()]; + _this.init(extraTriggers); + _this.marshal + .trackValue(_this.nativeElement, 'layout') + .pipe(operators.takeUntil(_this.destroySubject)) + .subscribe(_this.onLayoutChange.bind(_this)); + return _this; + } + Object.defineProperty(LayoutGapDirective.prototype, "childrenNodes", { + /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */ + get: /** + * Special accessor to query for all child 'element' nodes regardless of type, class, etc + * @protected + * @return {?} + */ + function () { + /** @type {?} */ + var obj = this.nativeElement.children; + /** @type {?} */ + var buffer = []; + // iterate backwards ensuring that length is an UInt32 + for (var i = obj.length; i--;) { + buffer[i] = obj[i]; + } + return buffer; + }, + enumerable: true, + configurable: true + }); + // ********************************************* + // Lifecycle Methods + // ********************************************* + // ********************************************* + // Lifecycle Methods + // ********************************************* + /** + * @return {?} + */ + LayoutGapDirective.prototype.ngAfterContentInit = + // ********************************************* + // Lifecycle Methods + // ********************************************* + /** + * @return {?} + */ + function () { + this.buildChildObservable(); + this.triggerUpdate(); + }; + /** + * @return {?} + */ + LayoutGapDirective.prototype.ngOnDestroy = /** + * @return {?} + */ + function () { + _super.prototype.ngOnDestroy.call(this); + if (this.observer) { + this.observer.disconnect(); + } + }; + // ********************************************* + // Protected methods + // ********************************************* + /** + * Cache the parent container 'flex-direction' and update the 'margin' styles + */ + // ********************************************* + // Protected methods + // ********************************************* + /** + * Cache the parent container 'flex-direction' and update the 'margin' styles + * @protected + * @param {?} matcher + * @return {?} + */ + LayoutGapDirective.prototype.onLayoutChange = + // ********************************************* + // Protected methods + // ********************************************* + /** + * Cache the parent container 'flex-direction' and update the 'margin' styles + * @protected + * @param {?} matcher + * @return {?} + */ + function (matcher) { + var _this = this; + /** @type {?} */ + var layout = matcher.value; + // Make sure to filter out 'wrap' option + /** @type {?} */ + var direction = layout.split(' '); + this.layout = direction[0]; + if (!LAYOUT_VALUES$1.find((/** + * @param {?} x + * @return {?} + */ + function (x) { return x === _this.layout; }))) { + this.layout = 'row'; + } + this.triggerUpdate(); + }; + /** + * + */ + /** + * + * @protected + * @param {?} value + * @return {?} + */ + LayoutGapDirective.prototype.updateWithValue = /** + * + * @protected + * @param {?} value + * @return {?} + */ + function (value) { + var _this = this; + // Gather all non-hidden Element nodes + /** @type {?} */ + var items = this.childrenNodes + .filter((/** + * @param {?} el + * @return {?} + */ + function (el) { return el.nodeType === 1 && _this.willDisplay(el); })) + .sort((/** + * @param {?} a + * @param {?} b + * @return {?} + */ + function (a, b) { + /** @type {?} */ + var orderA = +_this.styler.lookupStyle(a, 'order'); + /** @type {?} */ + var orderB = +_this.styler.lookupStyle(b, 'order'); + if (isNaN(orderA) || isNaN(orderB) || orderA === orderB) { + return 0; + } + else { + return orderA > orderB ? 1 : -1; + } + })); + if (items.length > 0) { + /** @type {?} */ + var directionality = this.directionality.value; + /** @type {?} */ + var layout = this.layout; + if (layout === 'row' && directionality === 'rtl') { + this.styleCache = layoutGapCacheRowRtl; + } + else if (layout === 'row' && directionality !== 'rtl') { + this.styleCache = layoutGapCacheRowLtr; + } + else if (layout === 'column' && directionality === 'rtl') { + this.styleCache = layoutGapCacheColumnRtl; + } + else if (layout === 'column' && directionality !== 'rtl') { + this.styleCache = layoutGapCacheColumnLtr; + } + this.addStyles(value, { directionality: directionality, items: items, layout: layout }); + } + }; + /** We need to override clearStyles because in most cases mru isn't populated */ + /** + * We need to override clearStyles because in most cases mru isn't populated + * @protected + * @return {?} + */ + LayoutGapDirective.prototype.clearStyles = /** + * We need to override clearStyles because in most cases mru isn't populated + * @protected + * @return {?} + */ + function () { + var _a; + /** @type {?} */ + var gridMode = Object.keys(this.mru).length > 0; + /** @type {?} */ + var childrenStyle = gridMode ? 'padding' : + getMarginType(this.directionality.value, this.layout); + // If there are styles on the parent remove them + if (gridMode) { + _super.prototype.clearStyles.call(this); + } + // Then remove the children styles too + this.styleUtils.applyStyleToElements((_a = {}, _a[childrenStyle] = '', _a), this.childrenNodes); + }; + /** Determine if an element will show or hide based on current activation */ + /** + * Determine if an element will show or hide based on current activation + * @protected + * @param {?} source + * @return {?} + */ + LayoutGapDirective.prototype.willDisplay = /** + * Determine if an element will show or hide based on current activation + * @protected + * @param {?} source + * @return {?} + */ + function (source) { + /** @type {?} */ + var value = this.marshal.getValue(source, 'show-hide'); + return value === true || + (value === undefined && this.styleUtils.lookupStyle(source, 'display') !== 'none'); + }; + /** + * @protected + * @return {?} + */ + LayoutGapDirective.prototype.buildChildObservable = /** + * @protected + * @return {?} + */ + function () { + var _this = this; + this.zone.runOutsideAngular((/** + * @return {?} + */ + function () { + if (typeof MutationObserver !== 'undefined') { + _this.observer = new MutationObserver((/** + * @param {?} mutations + * @return {?} + */ + function (mutations) { + /** @type {?} */ + var validatedChanges = (/** + * @param {?} it + * @return {?} + */ + function (it) { + return (it.addedNodes && it.addedNodes.length > 0) || + (it.removedNodes && it.removedNodes.length > 0); + }); + // update gap styles only for child 'added' or 'removed' events + if (mutations.some(validatedChanges)) { + _this.observerSubject.next(); + } + })); + _this.observer.observe(_this.nativeElement, { childList: true }); + } + })); + }; + /** @nocollapse */ + LayoutGapDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: core.NgZone }, + { type: bidi.Directionality }, + { type: StyleUtils }, + { type: LayoutGapStyleBuilder, decorators: [{ type: core.Optional }] }, + { type: MediaMarshaller } + ]; }; + return LayoutGapDirective; +}(BaseDirective2)); +var DefaultLayoutGapDirective = /** @class */ (function (_super) { + __extends(DefaultLayoutGapDirective, _super); + function DefaultLayoutGapDirective() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.inputs = inputs$1$1; + return _this; + } + DefaultLayoutGapDirective.decorators = [ + { type: core.Directive, args: [{ selector: selector$1$1, inputs: inputs$1$1 },] }, + ]; + return DefaultLayoutGapDirective; +}(LayoutGapDirective)); +/** @type {?} */ +var layoutGapCacheRowRtl = new Map(); +/** @type {?} */ +var layoutGapCacheColumnRtl = new Map(); +/** @type {?} */ +var layoutGapCacheRowLtr = new Map(); +/** @type {?} */ +var layoutGapCacheColumnLtr = new Map(); +/** @type {?} */ +var GRID_SPECIFIER = ' grid'; +/** + * @param {?} value + * @param {?} directionality + * @return {?} + */ +function buildGridPadding(value, directionality) { + /** @type {?} */ + var paddingTop = '0px'; + /** @type {?} */ + var paddingRight = '0px'; + /** @type {?} */ + var paddingBottom = value; + /** @type {?} */ + var paddingLeft = '0px'; + if (directionality === 'rtl') { + paddingLeft = value; + } + else { + paddingRight = value; + } + return { 'padding': paddingTop + " " + paddingRight + " " + paddingBottom + " " + paddingLeft }; +} +/** + * @param {?} value + * @param {?} directionality + * @return {?} + */ +function buildGridMargin(value, directionality) { + /** @type {?} */ + var marginTop = '0px'; + /** @type {?} */ + var marginRight = '0px'; + /** @type {?} */ + var marginBottom = '-' + value; + /** @type {?} */ + var marginLeft = '0px'; + if (directionality === 'rtl') { + marginLeft = '-' + value; + } + else { + marginRight = '-' + value; + } + return { 'margin': marginTop + " " + marginRight + " " + marginBottom + " " + marginLeft }; +} +/** + * @param {?} directionality + * @param {?} layout + * @return {?} + */ +function getMarginType(directionality, layout) { + switch (layout) { + case 'column': + return 'margin-bottom'; + case 'column-reverse': + return 'margin-top'; + case 'row': + return directionality === 'rtl' ? 'margin-left' : 'margin-right'; + case 'row-reverse': + return directionality === 'rtl' ? 'margin-right' : 'margin-left'; + default: + return directionality === 'rtl' ? 'margin-left' : 'margin-right'; + } +} +/** + * @param {?} gapValue + * @param {?} parent + * @return {?} + */ +function buildGapCSS(gapValue, parent) { + /** @type {?} */ + var key = getMarginType(parent.directionality, parent.layout); + /** @type {?} */ + var margins = __assign({}, CLEAR_MARGIN_CSS); + margins[key] = gapValue; + return margins; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * Extends an object with the *enumerable* and *own* properties of one or more source objects, + * similar to Object.assign. + * + * @param {?} dest The object which will have properties copied to it. + * @param {...?} sources The source objects from which properties will be copied. + * @return {?} + */ +function extendObject$1(dest) { + var sources = []; + for (var _i = 1; _i < arguments.length; _i++) { + sources[_i - 1] = arguments[_i]; + } + if (dest == null) { + throw TypeError('Cannot convert undefined or null to object'); + } + for (var _a = 0, sources_1 = sources; _a < sources_1.length; _a++) { + var source = sources_1[_a]; + if (source != null) { + for (var key in source) { + if (source.hasOwnProperty(key)) { + dest[key] = source[key]; + } + } + } + } + return dest; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var FlexStyleBuilder = /** @class */ (function (_super) { + __extends(FlexStyleBuilder, _super); + function FlexStyleBuilder(layoutConfig) { + var _this = _super.call(this) || this; + _this.layoutConfig = layoutConfig; + return _this; + } + /** + * @param {?} input + * @param {?} parent + * @return {?} + */ + FlexStyleBuilder.prototype.buildStyles = /** + * @param {?} input + * @param {?} parent + * @return {?} + */ + function (input, parent) { + var _a = input.split(' '), grow = _a[0], shrink = _a[1], basisParts = _a.slice(2); + /** @type {?} */ + var basis = basisParts.join(' '); + // The flex-direction of this element's flex container. Defaults to 'row'. + /** @type {?} */ + var direction = (parent.direction.indexOf('column') > -1) ? 'column' : 'row'; + /** @type {?} */ + var max = isFlowHorizontal(direction) ? 'max-width' : 'max-height'; + /** @type {?} */ + var min = isFlowHorizontal(direction) ? 'min-width' : 'min-height'; + /** @type {?} */ + var hasCalc = String(basis).indexOf('calc') > -1; + /** @type {?} */ + var usingCalc = hasCalc || (basis === 'auto'); + /** @type {?} */ + var isPercent = String(basis).indexOf('%') > -1 && !hasCalc; + /** @type {?} */ + var hasUnits = String(basis).indexOf('px') > -1 || String(basis).indexOf('rem') > -1 || + String(basis).indexOf('em') > -1 || String(basis).indexOf('vw') > -1 || + String(basis).indexOf('vh') > -1; + /** @type {?} */ + var isValue = (hasCalc || hasUnits); + grow = (grow == '0') ? 0 : grow; + shrink = (shrink == '0') ? 0 : shrink; + // make box inflexible when shrink and grow are both zero + // should not set a min when the grow is zero + // should not set a max when the shrink is zero + /** @type {?} */ + var isFixed = !grow && !shrink; + /** @type {?} */ + var css = {}; + // flex-basis allows you to specify the initial/starting main-axis size of the element, + // before anything else is computed. It can either be a percentage or an absolute value. + // It is, however, not the breaking point for flex-grow/shrink properties + // + // flex-grow can be seen as this: + // 0: Do not stretch. Either size to element's content width, or obey 'flex-basis'. + // 1: (Default value). Stretch; will be the same size to all other flex items on + // the same row since they have a default value of 1. + // ≥2 (integer n): Stretch. Will be n times the size of other elements + // with 'flex-grow: 1' on the same row. + // Use `null` to clear existing styles. + /** @type {?} */ + var clearStyles = { + 'max-width': null, + 'max-height': null, + 'min-width': null, + 'min-height': null + }; + switch (basis || '') { + case '': + /** @type {?} */ + var useColumnBasisZero = this.layoutConfig.useColumnBasisZero !== false; + basis = direction === 'row' ? '0%' : (useColumnBasisZero ? '0.000000001px' : 'auto'); + break; + case 'initial': // default + case 'nogrow': + grow = 0; + basis = 'auto'; + break; + case 'grow': + basis = '100%'; + break; + case 'noshrink': + shrink = 0; + basis = 'auto'; + break; + case 'auto': + break; + case 'none': + grow = 0; + shrink = 0; + basis = 'auto'; + break; + default: + // Defaults to percentage sizing unless `px` is explicitly set + if (!isValue && !isPercent && !isNaN((/** @type {?} */ (basis)))) { + basis = basis + '%'; + } + // Fix for issue 280 + if (basis === '0%') { + isValue = true; + } + if (basis === '0px') { + basis = '0%'; + } + // fix issue #5345 + if (hasCalc) { + css = extendObject$1(clearStyles, { + 'flex-grow': grow, + 'flex-shrink': shrink, + 'flex-basis': isValue ? basis : '100%' + }); + } + else { + css = extendObject$1(clearStyles, { + 'flex': grow + " " + shrink + " " + (isValue ? basis : '100%') + }); + } + break; + } + if (!(css['flex'] || css['flex-grow'])) { + if (hasCalc) { + css = extendObject$1(clearStyles, { + 'flex-grow': grow, + 'flex-shrink': shrink, + 'flex-basis': basis + }); + } + else { + css = extendObject$1(clearStyles, { + 'flex': grow + " " + shrink + " " + basis + }); + } + } + // Fix for issues 277, 534, and 728 + if (basis !== '0%' && basis !== '0px' && basis !== '0.000000001px' && basis !== 'auto') { + css[min] = isFixed || (isValue && grow) ? basis : null; + css[max] = isFixed || (!usingCalc && shrink) ? basis : null; + } + // Fix for issue 528 + if (!css[min] && !css[max]) { + if (hasCalc) { + css = extendObject$1(clearStyles, { + 'flex-grow': grow, + 'flex-shrink': shrink, + 'flex-basis': basis + }); + } + else { + css = extendObject$1(clearStyles, { + 'flex': grow + " " + shrink + " " + basis + }); + } + } + else { + // Fix for issue 660 + if (parent.hasWrap) { + css[hasCalc ? 'flex-basis' : 'flex'] = css[max] ? + (hasCalc ? css[max] : grow + " " + shrink + " " + css[max]) : + (hasCalc ? css[min] : grow + " " + shrink + " " + css[min]); + } + } + return (/** @type {?} */ (extendObject$1(css, { 'box-sizing': 'border-box' }))); + }; + FlexStyleBuilder.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ + FlexStyleBuilder.ctorParameters = function () { return [ + { type: undefined, decorators: [{ type: core.Inject, args: [LAYOUT_CONFIG,] }] } + ]; }; + /** @nocollapse */ FlexStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function FlexStyleBuilder_Factory() { return new FlexStyleBuilder(core.ɵɵinject(LAYOUT_CONFIG)); }, token: FlexStyleBuilder, providedIn: "root" }); + return FlexStyleBuilder; +}(StyleBuilder)); +/** @type {?} */ +var inputs$2$1 = [ + 'fxFlex', 'fxFlex.xs', 'fxFlex.sm', 'fxFlex.md', + 'fxFlex.lg', 'fxFlex.xl', 'fxFlex.lt-sm', 'fxFlex.lt-md', + 'fxFlex.lt-lg', 'fxFlex.lt-xl', 'fxFlex.gt-xs', 'fxFlex.gt-sm', + 'fxFlex.gt-md', 'fxFlex.gt-lg' +]; +/** @type {?} */ +var selector$2$1 = "\n [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n [fxFlex.gt-md], [fxFlex.gt-lg]\n"; +/** + * Directive to control the size of a flex item using flex-basis, flex-grow, and flex-shrink. + * Corresponds to the css `flex` shorthand property. + * + * @see https://css-tricks.com/snippets/css/a-guide-to-flexbox/ + */ +var FlexDirective = /** @class */ (function (_super) { + __extends(FlexDirective, _super); + function FlexDirective(elRef, styleUtils, layoutConfig, styleBuilder, marshal) { + var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; + _this.elRef = elRef; + _this.styleUtils = styleUtils; + _this.layoutConfig = layoutConfig; + _this.styleBuilder = styleBuilder; + _this.marshal = marshal; + _this.DIRECTIVE_KEY = 'flex'; + _this.direction = ''; + _this.wrap = false; + _this.flexGrow = '1'; + _this.flexShrink = '1'; + _this.init(); + if (_this.parentElement) { + _this.marshal.trackValue(_this.parentElement, 'layout') + .pipe(operators.takeUntil(_this.destroySubject)) + .subscribe(_this.onLayoutChange.bind(_this)); + _this.marshal.trackValue(_this.nativeElement, 'layout-align') + .pipe(operators.takeUntil(_this.destroySubject)) + .subscribe(_this.triggerReflow.bind(_this)); + } + return _this; + } + Object.defineProperty(FlexDirective.prototype, "shrink", { + get: /** + * @return {?} + */ + function () { return this.flexShrink; }, + set: /** + * @param {?} value + * @return {?} + */ + function (value) { + this.flexShrink = value || '1'; + this.triggerReflow(); + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(FlexDirective.prototype, "grow", { + get: /** + * @return {?} + */ + function () { return this.flexGrow; }, + set: /** + * @param {?} value + * @return {?} + */ + function (value) { + this.flexGrow = value || '1'; + this.triggerReflow(); + }, + enumerable: true, + configurable: true + }); + /** + * Caches the parent container's 'flex-direction' and updates the element's style. + * Used as a handler for layout change events from the parent flex container. + */ + /** + * Caches the parent container's 'flex-direction' and updates the element's style. + * Used as a handler for layout change events from the parent flex container. + * @protected + * @param {?} matcher + * @return {?} + */ + FlexDirective.prototype.onLayoutChange = /** + * Caches the parent container's 'flex-direction' and updates the element's style. + * Used as a handler for layout change events from the parent flex container. + * @protected + * @param {?} matcher + * @return {?} + */ + function (matcher) { + /** @type {?} */ + var layout = matcher.value; + /** @type {?} */ + var layoutParts = layout.split(' '); + this.direction = layoutParts[0]; + this.wrap = layoutParts[1] !== undefined && layoutParts[1] === 'wrap'; + this.triggerUpdate(); + }; + /** Input to this is exclusively the basis input value */ + /** + * Input to this is exclusively the basis input value + * @protected + * @param {?} value + * @return {?} + */ + FlexDirective.prototype.updateWithValue = /** + * Input to this is exclusively the basis input value + * @protected + * @param {?} value + * @return {?} + */ + function (value) { + /** @type {?} */ + var addFlexToParent = this.layoutConfig.addFlexToParent !== false; + if (!this.direction) { + this.direction = this.getFlexFlowDirection((/** @type {?} */ (this.parentElement)), addFlexToParent); + } + /** @type {?} */ + var direction = this.direction; + /** @type {?} */ + var isHorizontal = direction.startsWith('row'); + /** @type {?} */ + var hasWrap = this.wrap; + if (isHorizontal && hasWrap) { + this.styleCache = flexRowWrapCache; + } + else if (isHorizontal && !hasWrap) { + this.styleCache = flexRowCache; + } + else if (!isHorizontal && hasWrap) { + this.styleCache = flexColumnWrapCache; + } + else if (!isHorizontal && !hasWrap) { + this.styleCache = flexColumnCache; + } + /** @type {?} */ + var basis = String(value).replace(';', ''); + /** @type {?} */ + var parts = validateBasis(basis, this.flexGrow, this.flexShrink); + this.addStyles(parts.join(' '), { direction: direction, hasWrap: hasWrap }); + }; + /** Trigger a style reflow, usually based on a shrink/grow input event */ + /** + * Trigger a style reflow, usually based on a shrink/grow input event + * @protected + * @return {?} + */ + FlexDirective.prototype.triggerReflow = /** + * Trigger a style reflow, usually based on a shrink/grow input event + * @protected + * @return {?} + */ + function () { + /** @type {?} */ + var activatedValue = this.activatedValue; + if (activatedValue !== undefined) { + /** @type {?} */ + var parts = validateBasis(activatedValue, this.flexGrow, this.flexShrink); + this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, parts.join(' ')); + } + }; + /** @nocollapse */ + FlexDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: StyleUtils }, + { type: undefined, decorators: [{ type: core.Inject, args: [LAYOUT_CONFIG,] }] }, + { type: FlexStyleBuilder }, + { type: MediaMarshaller } + ]; }; + FlexDirective.propDecorators = { + shrink: [{ type: core.Input, args: ['fxShrink',] }], + grow: [{ type: core.Input, args: ['fxGrow',] }] + }; + return FlexDirective; +}(BaseDirective2)); +var DefaultFlexDirective = /** @class */ (function (_super) { + __extends(DefaultFlexDirective, _super); + function DefaultFlexDirective() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.inputs = inputs$2$1; + return _this; + } + DefaultFlexDirective.decorators = [ + { type: core.Directive, args: [{ inputs: inputs$2$1, selector: selector$2$1 },] }, + ]; + return DefaultFlexDirective; +}(FlexDirective)); +/** @type {?} */ +var flexRowCache = new Map(); +/** @type {?} */ +var flexColumnCache = new Map(); +/** @type {?} */ +var flexRowWrapCache = new Map(); +/** @type {?} */ +var flexColumnWrapCache = new Map(); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var FlexOrderStyleBuilder = /** @class */ (function (_super) { + __extends(FlexOrderStyleBuilder, _super); + function FlexOrderStyleBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @param {?} value + * @return {?} + */ + FlexOrderStyleBuilder.prototype.buildStyles = /** + * @param {?} value + * @return {?} + */ + function (value) { + return { order: (value && parseInt(value, 10)) || '' }; + }; + FlexOrderStyleBuilder.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ FlexOrderStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function FlexOrderStyleBuilder_Factory() { return new FlexOrderStyleBuilder(); }, token: FlexOrderStyleBuilder, providedIn: "root" }); + return FlexOrderStyleBuilder; +}(StyleBuilder)); +/** @type {?} */ +var inputs$3$1 = [ + 'fxFlexOrder', 'fxFlexOrder.xs', 'fxFlexOrder.sm', 'fxFlexOrder.md', + 'fxFlexOrder.lg', 'fxFlexOrder.xl', 'fxFlexOrder.lt-sm', 'fxFlexOrder.lt-md', + 'fxFlexOrder.lt-lg', 'fxFlexOrder.lt-xl', 'fxFlexOrder.gt-xs', 'fxFlexOrder.gt-sm', + 'fxFlexOrder.gt-md', 'fxFlexOrder.gt-lg' +]; +/** @type {?} */ +var selector$3$1 = "\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n"; +/** + * 'flex-order' flexbox styling directive + * Configures the positional ordering of the element in a sorted layout container + * @see https://css-tricks.com/almanac/properties/o/order/ + */ +var FlexOrderDirective = /** @class */ (function (_super) { + __extends(FlexOrderDirective, _super); + function FlexOrderDirective(elRef, styleUtils, styleBuilder, marshal) { + var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; + _this.elRef = elRef; + _this.styleUtils = styleUtils; + _this.styleBuilder = styleBuilder; + _this.marshal = marshal; + _this.DIRECTIVE_KEY = 'flex-order'; + _this.styleCache = flexOrderCache; + _this.init(); + return _this; + } + /** @nocollapse */ + FlexOrderDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: StyleUtils }, + { type: FlexOrderStyleBuilder, decorators: [{ type: core.Optional }] }, + { type: MediaMarshaller } + ]; }; + return FlexOrderDirective; +}(BaseDirective2)); +/** @type {?} */ +var flexOrderCache = new Map(); +var DefaultFlexOrderDirective = /** @class */ (function (_super) { + __extends(DefaultFlexOrderDirective, _super); + function DefaultFlexOrderDirective() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.inputs = inputs$3$1; + return _this; + } + DefaultFlexOrderDirective.decorators = [ + { type: core.Directive, args: [{ selector: selector$3$1, inputs: inputs$3$1 },] }, + ]; + return DefaultFlexOrderDirective; +}(FlexOrderDirective)); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var FlexOffsetStyleBuilder = /** @class */ (function (_super) { + __extends(FlexOffsetStyleBuilder, _super); + function FlexOffsetStyleBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @param {?} offset + * @param {?} parent + * @return {?} + */ + FlexOffsetStyleBuilder.prototype.buildStyles = /** + * @param {?} offset + * @param {?} parent + * @return {?} + */ + function (offset, parent) { + var _a; + if (offset === '') { + offset = '0'; + } + /** @type {?} */ + var isPercent = String(offset).indexOf('%') > -1; + /** @type {?} */ + var isPx = String(offset).indexOf('px') > -1; + if (!isPx && !isPercent && !isNaN(+offset)) { + offset = offset + '%'; + } + /** @type {?} */ + var horizontalLayoutKey = parent.isRtl ? 'margin-right' : 'margin-left'; + /** @type {?} */ + var styles = isFlowHorizontal(parent.layout) ? (_a = {}, _a[horizontalLayoutKey] = "" + offset, _a) : { 'margin-top': "" + offset }; + return styles; + }; + FlexOffsetStyleBuilder.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ FlexOffsetStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function FlexOffsetStyleBuilder_Factory() { return new FlexOffsetStyleBuilder(); }, token: FlexOffsetStyleBuilder, providedIn: "root" }); + return FlexOffsetStyleBuilder; +}(StyleBuilder)); +/** @type {?} */ +var inputs$4$1 = [ + 'fxFlexOffset', 'fxFlexOffset.xs', 'fxFlexOffset.sm', 'fxFlexOffset.md', + 'fxFlexOffset.lg', 'fxFlexOffset.xl', 'fxFlexOffset.lt-sm', 'fxFlexOffset.lt-md', + 'fxFlexOffset.lt-lg', 'fxFlexOffset.lt-xl', 'fxFlexOffset.gt-xs', 'fxFlexOffset.gt-sm', + 'fxFlexOffset.gt-md', 'fxFlexOffset.gt-lg' +]; +/** @type {?} */ +var selector$4$1 = "\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n"; +/** + * 'flex-offset' flexbox styling directive + * Configures the 'margin-left' of the element in a layout container + */ +var FlexOffsetDirective = /** @class */ (function (_super) { + __extends(FlexOffsetDirective, _super); + function FlexOffsetDirective(elRef, directionality, styleBuilder, marshal, styler) { + var _this = _super.call(this, elRef, styleBuilder, styler, marshal) || this; + _this.elRef = elRef; + _this.directionality = directionality; + _this.styleBuilder = styleBuilder; + _this.marshal = marshal; + _this.styler = styler; + _this.DIRECTIVE_KEY = 'flex-offset'; + _this.init([_this.directionality.change]); + // Parent DOM `layout-gap` with affect the nested child with `flex-offset` + if (_this.parentElement) { + _this.marshal + .trackValue(_this.parentElement, 'layout-gap') + .pipe(operators.takeUntil(_this.destroySubject)) + .subscribe(_this.triggerUpdate.bind(_this)); + } + return _this; + } + // ********************************************* + // Protected methods + // ********************************************* + /** + * Using the current fxFlexOffset value, update the inline CSS + * NOTE: this will assign `margin-left` if the parent flex-direction == 'row', + * otherwise `margin-top` is used for the offset. + */ + // ********************************************* + // Protected methods + // ********************************************* + /** + * Using the current fxFlexOffset value, update the inline CSS + * NOTE: this will assign `margin-left` if the parent flex-direction == 'row', + * otherwise `margin-top` is used for the offset. + * @protected + * @param {?=} value + * @return {?} + */ + FlexOffsetDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * Using the current fxFlexOffset value, update the inline CSS + * NOTE: this will assign `margin-left` if the parent flex-direction == 'row', + * otherwise `margin-top` is used for the offset. + * @protected + * @param {?=} value + * @return {?} + */ + function (value) { + if (value === void 0) { value = ''; } + // The flex-direction of this element's flex container. Defaults to 'row'. + /** @type {?} */ + var layout = this.getFlexFlowDirection((/** @type {?} */ (this.parentElement)), true); + /** @type {?} */ + var isRtl = this.directionality.value === 'rtl'; + if (layout === 'row' && isRtl) { + this.styleCache = flexOffsetCacheRowRtl; + } + else if (layout === 'row' && !isRtl) { + this.styleCache = flexOffsetCacheRowLtr; + } + else if (layout === 'column' && isRtl) { + this.styleCache = flexOffsetCacheColumnRtl; + } + else if (layout === 'column' && !isRtl) { + this.styleCache = flexOffsetCacheColumnLtr; + } + this.addStyles(value + '', { layout: layout, isRtl: isRtl }); + }; + /** @nocollapse */ + FlexOffsetDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: bidi.Directionality }, + { type: FlexOffsetStyleBuilder, decorators: [{ type: core.Optional }] }, + { type: MediaMarshaller }, + { type: StyleUtils } + ]; }; + return FlexOffsetDirective; +}(BaseDirective2)); +var DefaultFlexOffsetDirective = /** @class */ (function (_super) { + __extends(DefaultFlexOffsetDirective, _super); + function DefaultFlexOffsetDirective() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.inputs = inputs$4$1; + return _this; + } + DefaultFlexOffsetDirective.decorators = [ + { type: core.Directive, args: [{ selector: selector$4$1, inputs: inputs$4$1 },] }, + ]; + return DefaultFlexOffsetDirective; +}(FlexOffsetDirective)); +/** @type {?} */ +var flexOffsetCacheRowRtl = new Map(); +/** @type {?} */ +var flexOffsetCacheColumnRtl = new Map(); +/** @type {?} */ +var flexOffsetCacheRowLtr = new Map(); +/** @type {?} */ +var flexOffsetCacheColumnLtr = new Map(); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var FlexAlignStyleBuilder = /** @class */ (function (_super) { + __extends(FlexAlignStyleBuilder, _super); + function FlexAlignStyleBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @param {?} input + * @return {?} + */ + FlexAlignStyleBuilder.prototype.buildStyles = /** + * @param {?} input + * @return {?} + */ + function (input) { + input = input || 'stretch'; + /** @type {?} */ + var styles = {}; + // Cross-axis + switch (input) { + case 'start': + styles['align-self'] = 'flex-start'; + break; + case 'end': + styles['align-self'] = 'flex-end'; + break; + default: + styles['align-self'] = input; + break; + } + return styles; + }; + FlexAlignStyleBuilder.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ FlexAlignStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function FlexAlignStyleBuilder_Factory() { return new FlexAlignStyleBuilder(); }, token: FlexAlignStyleBuilder, providedIn: "root" }); + return FlexAlignStyleBuilder; +}(StyleBuilder)); +/** @type {?} */ +var inputs$5 = [ + 'fxFlexAlign', 'fxFlexAlign.xs', 'fxFlexAlign.sm', 'fxFlexAlign.md', + 'fxFlexAlign.lg', 'fxFlexAlign.xl', 'fxFlexAlign.lt-sm', 'fxFlexAlign.lt-md', + 'fxFlexAlign.lt-lg', 'fxFlexAlign.lt-xl', 'fxFlexAlign.gt-xs', 'fxFlexAlign.gt-sm', + 'fxFlexAlign.gt-md', 'fxFlexAlign.gt-lg' +]; +/** @type {?} */ +var selector$5 = "\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n"; +/** + * 'flex-align' flexbox styling directive + * Allows element-specific overrides for cross-axis alignments in a layout container + * @see https://css-tricks.com/almanac/properties/a/align-self/ + */ +var FlexAlignDirective = /** @class */ (function (_super) { + __extends(FlexAlignDirective, _super); + function FlexAlignDirective(elRef, styleUtils, styleBuilder, marshal) { + var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; + _this.elRef = elRef; + _this.styleUtils = styleUtils; + _this.styleBuilder = styleBuilder; + _this.marshal = marshal; + _this.DIRECTIVE_KEY = 'flex-align'; + _this.styleCache = flexAlignCache; + _this.init(); + return _this; + } + /** @nocollapse */ + FlexAlignDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: StyleUtils }, + { type: FlexAlignStyleBuilder, decorators: [{ type: core.Optional }] }, + { type: MediaMarshaller } + ]; }; + return FlexAlignDirective; +}(BaseDirective2)); +/** @type {?} */ +var flexAlignCache = new Map(); +var DefaultFlexAlignDirective = /** @class */ (function (_super) { + __extends(DefaultFlexAlignDirective, _super); + function DefaultFlexAlignDirective() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.inputs = inputs$5; + return _this; + } + DefaultFlexAlignDirective.decorators = [ + { type: core.Directive, args: [{ selector: selector$5, inputs: inputs$5 },] }, + ]; + return DefaultFlexAlignDirective; +}(FlexAlignDirective)); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var FLEX_FILL_CSS = { + 'margin': 0, + 'width': '100%', + 'height': '100%', + 'min-width': '100%', + 'min-height': '100%' +}; +var FlexFillStyleBuilder = /** @class */ (function (_super) { + __extends(FlexFillStyleBuilder, _super); + function FlexFillStyleBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @param {?} _input + * @return {?} + */ + FlexFillStyleBuilder.prototype.buildStyles = /** + * @param {?} _input + * @return {?} + */ + function (_input) { + return FLEX_FILL_CSS; + }; + FlexFillStyleBuilder.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ FlexFillStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function FlexFillStyleBuilder_Factory() { return new FlexFillStyleBuilder(); }, token: FlexFillStyleBuilder, providedIn: "root" }); + return FlexFillStyleBuilder; +}(StyleBuilder)); +/** + * 'fxFill' flexbox styling directive + * Maximizes width and height of element in a layout container + * + * NOTE: fxFill is NOT responsive API!! + */ +var FlexFillDirective = /** @class */ (function (_super) { + __extends(FlexFillDirective, _super); + function FlexFillDirective(elRef, styleUtils, styleBuilder, marshal) { + var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; + _this.elRef = elRef; + _this.styleUtils = styleUtils; + _this.styleBuilder = styleBuilder; + _this.marshal = marshal; + _this.styleCache = flexFillCache; + _this.addStyles(''); + return _this; + } + FlexFillDirective.decorators = [ + { type: core.Directive, args: [{ selector: "[fxFill], [fxFlexFill]" },] }, + ]; + /** @nocollapse */ + FlexFillDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: StyleUtils }, + { type: FlexFillStyleBuilder }, + { type: MediaMarshaller } + ]; }; + return FlexFillDirective; +}(BaseDirective2)); +/** @type {?} */ +var flexFillCache = new Map(); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +var LayoutAlignStyleBuilder = /** @class */ (function (_super) { + __extends(LayoutAlignStyleBuilder, _super); + function LayoutAlignStyleBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @param {?} align + * @param {?} parent + * @return {?} + */ + LayoutAlignStyleBuilder.prototype.buildStyles = /** + * @param {?} align + * @param {?} parent + * @return {?} + */ + function (align, parent) { + /** @type {?} */ + var css = {}; + var _a = align.split(' '), mainAxis = _a[0], crossAxis = _a[1]; + // Main axis + switch (mainAxis) { + case 'center': + css['justify-content'] = 'center'; + break; + case 'space-around': + css['justify-content'] = 'space-around'; + break; + case 'space-between': + css['justify-content'] = 'space-between'; + break; + case 'space-evenly': + css['justify-content'] = 'space-evenly'; + break; + case 'end': + case 'flex-end': + css['justify-content'] = 'flex-end'; + break; + case 'start': + case 'flex-start': + default: + css['justify-content'] = 'flex-start'; // default main axis + break; + } + // Cross-axis + switch (crossAxis) { + case 'start': + case 'flex-start': + css['align-items'] = css['align-content'] = 'flex-start'; + break; + case 'center': + css['align-items'] = css['align-content'] = 'center'; + break; + case 'end': + case 'flex-end': + css['align-items'] = css['align-content'] = 'flex-end'; + break; + case 'space-between': + css['align-content'] = 'space-between'; + css['align-items'] = 'stretch'; + break; + case 'space-around': + css['align-content'] = 'space-around'; + css['align-items'] = 'stretch'; + break; + case 'baseline': + css['align-content'] = 'stretch'; + css['align-items'] = 'baseline'; + break; + case 'stretch': + default: // 'stretch' + css['align-items'] = css['align-content'] = 'stretch'; // default cross axis + break; + } + return (/** @type {?} */ (extendObject$1(css, { + 'display': parent.inline ? 'inline-flex' : 'flex', + 'flex-direction': parent.layout, + 'box-sizing': 'border-box', + 'max-width': crossAxis === 'stretch' ? + !isFlowHorizontal(parent.layout) ? '100%' : null : null, + 'max-height': crossAxis === 'stretch' ? + isFlowHorizontal(parent.layout) ? '100%' : null : null, + }))); + }; + LayoutAlignStyleBuilder.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ LayoutAlignStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function LayoutAlignStyleBuilder_Factory() { return new LayoutAlignStyleBuilder(); }, token: LayoutAlignStyleBuilder, providedIn: "root" }); + return LayoutAlignStyleBuilder; +}(StyleBuilder)); +/** @type {?} */ +var inputs$6 = [ + 'fxLayoutAlign', 'fxLayoutAlign.xs', 'fxLayoutAlign.sm', 'fxLayoutAlign.md', + 'fxLayoutAlign.lg', 'fxLayoutAlign.xl', 'fxLayoutAlign.lt-sm', 'fxLayoutAlign.lt-md', + 'fxLayoutAlign.lt-lg', 'fxLayoutAlign.lt-xl', 'fxLayoutAlign.gt-xs', 'fxLayoutAlign.gt-sm', + 'fxLayoutAlign.gt-md', 'fxLayoutAlign.gt-lg' +]; +/** @type {?} */ +var selector$6 = "\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n"; +/** + * 'layout-align' flexbox styling directive + * Defines positioning of child elements along main and cross axis in a layout container + * Optional values: {main-axis} values or {main-axis cross-axis} value pairs + * + * @see https://css-tricks.com/almanac/properties/j/justify-content/ + * @see https://css-tricks.com/almanac/properties/a/align-items/ + * @see https://css-tricks.com/almanac/properties/a/align-content/ + */ +var LayoutAlignDirective = /** @class */ (function (_super) { + __extends(LayoutAlignDirective, _super); + function LayoutAlignDirective(elRef, styleUtils, styleBuilder, marshal) { + var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; + _this.elRef = elRef; + _this.styleUtils = styleUtils; + _this.styleBuilder = styleBuilder; + _this.marshal = marshal; + _this.DIRECTIVE_KEY = 'layout-align'; + _this.layout = 'row'; // default flex-direction + // default flex-direction + _this.inline = false; // default inline value + _this.init(); + _this.marshal.trackValue(_this.nativeElement, 'layout') + .pipe(operators.takeUntil(_this.destroySubject)) + .subscribe(_this.onLayoutChange.bind(_this)); + return _this; + } + // ********************************************* + // Protected methods + // ********************************************* + /** + * + */ + // ********************************************* + // Protected methods + // ********************************************* + /** + * + * @protected + * @param {?} value + * @return {?} + */ + LayoutAlignDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * + * @protected + * @param {?} value + * @return {?} + */ + function (value) { + /** @type {?} */ + var layout = this.layout || 'row'; + /** @type {?} */ + var inline = this.inline; + if (layout === 'row' && inline) { + this.styleCache = layoutAlignHorizontalInlineCache; + } + else if (layout === 'row' && !inline) { + this.styleCache = layoutAlignHorizontalCache; + } + else if (layout === 'row-reverse' && inline) { + this.styleCache = layoutAlignHorizontalRevInlineCache; + } + else if (layout === 'row-reverse' && !inline) { + this.styleCache = layoutAlignHorizontalRevCache; + } + else if (layout === 'column' && inline) { + this.styleCache = layoutAlignVerticalInlineCache; + } + else if (layout === 'column' && !inline) { + this.styleCache = layoutAlignVerticalCache; + } + else if (layout === 'column-reverse' && inline) { + this.styleCache = layoutAlignVerticalRevInlineCache; + } + else if (layout === 'column-reverse' && !inline) { + this.styleCache = layoutAlignVerticalRevCache; + } + this.addStyles(value, { layout: layout, inline: inline }); + }; + /** + * Cache the parent container 'flex-direction' and update the 'flex' styles + */ + /** + * Cache the parent container 'flex-direction' and update the 'flex' styles + * @protected + * @param {?} matcher + * @return {?} + */ + LayoutAlignDirective.prototype.onLayoutChange = /** + * Cache the parent container 'flex-direction' and update the 'flex' styles + * @protected + * @param {?} matcher + * @return {?} + */ + function (matcher) { + var _this = this; + /** @type {?} */ + var layoutKeys = matcher.value.split(' '); + this.layout = layoutKeys[0]; + this.inline = matcher.value.includes('inline'); + if (!LAYOUT_VALUES$1.find((/** + * @param {?} x + * @return {?} + */ + function (x) { return x === _this.layout; }))) { + this.layout = 'row'; + } + this.triggerUpdate(); + }; + /** @nocollapse */ + LayoutAlignDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: StyleUtils }, + { type: LayoutAlignStyleBuilder, decorators: [{ type: core.Optional }] }, + { type: MediaMarshaller } + ]; }; + return LayoutAlignDirective; +}(BaseDirective2)); +var DefaultLayoutAlignDirective = /** @class */ (function (_super) { + __extends(DefaultLayoutAlignDirective, _super); + function DefaultLayoutAlignDirective() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.inputs = inputs$6; + return _this; + } + DefaultLayoutAlignDirective.decorators = [ + { type: core.Directive, args: [{ selector: selector$6, inputs: inputs$6 },] }, + ]; + return DefaultLayoutAlignDirective; +}(LayoutAlignDirective)); +/** @type {?} */ +var layoutAlignHorizontalCache = new Map(); +/** @type {?} */ +var layoutAlignVerticalCache = new Map(); +/** @type {?} */ +var layoutAlignHorizontalRevCache = new Map(); +/** @type {?} */ +var layoutAlignVerticalRevCache = new Map(); +/** @type {?} */ +var layoutAlignHorizontalInlineCache = new Map(); +/** @type {?} */ +var layoutAlignVerticalInlineCache = new Map(); +/** @type {?} */ +var layoutAlignHorizontalRevInlineCache = new Map(); +/** @type {?} */ +var layoutAlignVerticalRevInlineCache = new Map(); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var ALL_DIRECTIVES$1 = [ + DefaultLayoutDirective, + DefaultLayoutGapDirective, + DefaultLayoutAlignDirective, + DefaultFlexOrderDirective, + DefaultFlexOffsetDirective, + FlexFillDirective, + DefaultFlexAlignDirective, + DefaultFlexDirective, +]; +/** + * ***************************************************************** + * Define module for the Flex API + * ***************************************************************** + */ +var FlexModule = /** @class */ (function () { + function FlexModule() { + } + FlexModule.decorators = [ + { type: core.NgModule, args: [{ + imports: [CoreModule, bidi.BidiModule], + declarations: ALL_DIRECTIVES$1.slice(), + exports: ALL_DIRECTIVES$1.slice() + },] }, + ]; + return FlexModule; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var ROW_DEFAULT = 'stretch'; +/** @type {?} */ +var COL_DEFAULT = 'stretch'; +var GridAlignStyleBuilder = /** @class */ (function (_super) { + __extends(GridAlignStyleBuilder, _super); + function GridAlignStyleBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @param {?} input + * @return {?} + */ + GridAlignStyleBuilder.prototype.buildStyles = /** + * @param {?} input + * @return {?} + */ + function (input) { + return buildCss(input || ROW_DEFAULT); + }; + GridAlignStyleBuilder.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ GridAlignStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function GridAlignStyleBuilder_Factory() { return new GridAlignStyleBuilder(); }, token: GridAlignStyleBuilder, providedIn: "root" }); + return GridAlignStyleBuilder; +}(StyleBuilder)); +var GridAlignDirective = /** @class */ (function (_super) { + __extends(GridAlignDirective, _super); + function GridAlignDirective(elementRef, styleBuilder, styler, marshal) { + var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; + _this.elementRef = elementRef; + _this.styleBuilder = styleBuilder; + _this.styler = styler; + _this.marshal = marshal; + _this.DIRECTIVE_KEY = 'grid-align'; + _this.styleCache = alignCache; + _this.init(); + return _this; + } + /** @nocollapse */ + GridAlignDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: GridAlignStyleBuilder, decorators: [{ type: core.Optional }] }, + { type: StyleUtils }, + { type: MediaMarshaller } + ]; }; + return GridAlignDirective; +}(BaseDirective2)); +/** @type {?} */ +var alignCache = new Map(); +/** @type {?} */ +var inputs$7 = [ + 'gdGridAlign', + 'gdGridAlign.xs', 'gdGridAlign.sm', 'gdGridAlign.md', 'gdGridAlign.lg', 'gdGridAlign.xl', + 'gdGridAlign.lt-sm', 'gdGridAlign.lt-md', 'gdGridAlign.lt-lg', 'gdGridAlign.lt-xl', + 'gdGridAlign.gt-xs', 'gdGridAlign.gt-sm', 'gdGridAlign.gt-md', 'gdGridAlign.gt-lg' +]; +/** @type {?} */ +var selector$7 = "\n [gdGridAlign],\n [gdGridAlign.xs], [gdGridAlign.sm], [gdGridAlign.md], [gdGridAlign.lg],[gdGridAlign.xl],\n [gdGridAlign.lt-sm], [gdGridAlign.lt-md], [gdGridAlign.lt-lg], [gdGridAlign.lt-xl],\n [gdGridAlign.gt-xs], [gdGridAlign.gt-sm], [gdGridAlign.gt-md], [gdGridAlign.gt-lg]\n"; +/** + * 'align' CSS Grid styling directive for grid children + * Defines positioning of child elements along row and column axis in a grid container + * Optional values: {row-axis} values or {row-axis column-axis} value pairs + * + * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-justify-self + * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-align-self + */ +var DefaultGridAlignDirective = /** @class */ (function (_super) { + __extends(DefaultGridAlignDirective, _super); + function DefaultGridAlignDirective() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.inputs = inputs$7; + return _this; + } + DefaultGridAlignDirective.decorators = [ + { type: core.Directive, args: [{ selector: selector$7, inputs: inputs$7 },] }, + ]; + return DefaultGridAlignDirective; +}(GridAlignDirective)); +/** + * @param {?=} align + * @return {?} + */ +function buildCss(align) { + if (align === void 0) { align = ''; } + /** @type {?} */ + var css = {}; + var _a = align.split(' '), rowAxis = _a[0], columnAxis = _a[1]; + // Row axis + switch (rowAxis) { + case 'end': + css['justify-self'] = 'end'; + break; + case 'center': + css['justify-self'] = 'center'; + break; + case 'stretch': + css['justify-self'] = 'stretch'; + break; + case 'start': + css['justify-self'] = 'start'; + break; + default: + css['justify-self'] = ROW_DEFAULT; // default row axis + break; + } + // Column axis + switch (columnAxis) { + case 'end': + css['align-self'] = 'end'; + break; + case 'center': + css['align-self'] = 'center'; + break; + case 'stretch': + css['align-self'] = 'stretch'; + break; + case 'start': + css['align-self'] = 'start'; + break; + default: + css['align-self'] = COL_DEFAULT; // default column axis + break; + } + return css; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var DEFAULT_MAIN = 'start'; +/** @type {?} */ +var DEFAULT_CROSS = 'stretch'; +var GridAlignColumnsStyleBuilder = /** @class */ (function (_super) { + __extends(GridAlignColumnsStyleBuilder, _super); + function GridAlignColumnsStyleBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @param {?} input + * @param {?} parent + * @return {?} + */ + GridAlignColumnsStyleBuilder.prototype.buildStyles = /** + * @param {?} input + * @param {?} parent + * @return {?} + */ + function (input, parent) { + return buildCss$1(input || DEFAULT_MAIN + " " + DEFAULT_CROSS, parent.inline); + }; + GridAlignColumnsStyleBuilder.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ GridAlignColumnsStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function GridAlignColumnsStyleBuilder_Factory() { return new GridAlignColumnsStyleBuilder(); }, token: GridAlignColumnsStyleBuilder, providedIn: "root" }); + return GridAlignColumnsStyleBuilder; +}(StyleBuilder)); +var GridAlignColumnsDirective = /** @class */ (function (_super) { + __extends(GridAlignColumnsDirective, _super); + function GridAlignColumnsDirective(elementRef, styleBuilder, styler, marshal) { + var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; + _this.elementRef = elementRef; + _this.styleBuilder = styleBuilder; + _this.styler = styler; + _this.marshal = marshal; + _this.DIRECTIVE_KEY = 'grid-align-columns'; + _this._inline = false; + _this.init(); + return _this; + } + Object.defineProperty(GridAlignColumnsDirective.prototype, "inline", { + get: /** + * @return {?} + */ + function () { return this._inline; }, + set: /** + * @param {?} val + * @return {?} + */ + function (val) { this._inline = coercion.coerceBooleanProperty(val); }, + enumerable: true, + configurable: true + }); + // ********************************************* + // Protected methods + // ********************************************* + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected + * @param {?} value + * @return {?} + */ + GridAlignColumnsDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected + * @param {?} value + * @return {?} + */ + function (value) { + this.styleCache = this.inline ? alignColumnsInlineCache : alignColumnsCache; + this.addStyles(value, { inline: this.inline }); + }; + /** @nocollapse */ + GridAlignColumnsDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: GridAlignColumnsStyleBuilder, decorators: [{ type: core.Optional }] }, + { type: StyleUtils }, + { type: MediaMarshaller } + ]; }; + GridAlignColumnsDirective.propDecorators = { + inline: [{ type: core.Input, args: ['gdInline',] }] + }; + return GridAlignColumnsDirective; +}(BaseDirective2)); +/** @type {?} */ +var alignColumnsCache = new Map(); +/** @type {?} */ +var alignColumnsInlineCache = new Map(); +/** @type {?} */ +var inputs$1$2 = [ + 'gdAlignColumns', + 'gdAlignColumns.xs', 'gdAlignColumns.sm', 'gdAlignColumns.md', + 'gdAlignColumns.lg', 'gdAlignColumns.xl', 'gdAlignColumns.lt-sm', + 'gdAlignColumns.lt-md', 'gdAlignColumns.lt-lg', 'gdAlignColumns.lt-xl', + 'gdAlignColumns.gt-xs', 'gdAlignColumns.gt-sm', 'gdAlignColumns.gt-md', + 'gdAlignColumns.gt-lg' +]; +/** @type {?} */ +var selector$1$2 = "\n [gdAlignColumns],\n [gdAlignColumns.xs], [gdAlignColumns.sm], [gdAlignColumns.md],\n [gdAlignColumns.lg], [gdAlignColumns.xl], [gdAlignColumns.lt-sm],\n [gdAlignColumns.lt-md], [gdAlignColumns.lt-lg], [gdAlignColumns.lt-xl],\n [gdAlignColumns.gt-xs], [gdAlignColumns.gt-sm], [gdAlignColumns.gt-md],\n [gdAlignColumns.gt-lg]\n"; +/** + * 'column alignment' CSS Grid styling directive + * Configures the alignment in the column direction + * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-19 + * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-21 + */ +var DefaultGridAlignColumnsDirective = /** @class */ (function (_super) { + __extends(DefaultGridAlignColumnsDirective, _super); + function DefaultGridAlignColumnsDirective() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.inputs = inputs$1$2; + return _this; + } + DefaultGridAlignColumnsDirective.decorators = [ + { type: core.Directive, args: [{ selector: selector$1$2, inputs: inputs$1$2 },] }, + ]; + return DefaultGridAlignColumnsDirective; +}(GridAlignColumnsDirective)); +/** + * @param {?} align + * @param {?} inline + * @return {?} + */ +function buildCss$1(align, inline) { + /** @type {?} */ + var css = {}; + var _a = align.split(' '), mainAxis = _a[0], crossAxis = _a[1]; + // Main axis + switch (mainAxis) { + case 'center': + css['align-content'] = 'center'; + break; + case 'space-around': + css['align-content'] = 'space-around'; + break; + case 'space-between': + css['align-content'] = 'space-between'; + break; + case 'space-evenly': + css['align-content'] = 'space-evenly'; + break; + case 'end': + css['align-content'] = 'end'; + break; + case 'start': + css['align-content'] = 'start'; + break; + case 'stretch': + css['align-content'] = 'stretch'; + break; + default: + css['align-content'] = DEFAULT_MAIN; // default main axis + break; + } + // Cross-axis + switch (crossAxis) { + case 'start': + css['align-items'] = 'start'; + break; + case 'center': + css['align-items'] = 'center'; + break; + case 'end': + css['align-items'] = 'end'; + break; + case 'stretch': + css['align-items'] = 'stretch'; + break; + default: // 'stretch' + css['align-items'] = DEFAULT_CROSS; // default cross axis + break; + } + css['display'] = inline ? 'inline-grid' : 'grid'; + return css; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var DEFAULT_MAIN$1 = 'start'; +/** @type {?} */ +var DEFAULT_CROSS$1 = 'stretch'; +var GridAlignRowsStyleBuilder = /** @class */ (function (_super) { + __extends(GridAlignRowsStyleBuilder, _super); + function GridAlignRowsStyleBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @param {?} input + * @param {?} parent + * @return {?} + */ + GridAlignRowsStyleBuilder.prototype.buildStyles = /** + * @param {?} input + * @param {?} parent + * @return {?} + */ + function (input, parent) { + return buildCss$2(input || DEFAULT_MAIN$1 + " " + DEFAULT_CROSS$1, parent.inline); + }; + GridAlignRowsStyleBuilder.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ GridAlignRowsStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function GridAlignRowsStyleBuilder_Factory() { return new GridAlignRowsStyleBuilder(); }, token: GridAlignRowsStyleBuilder, providedIn: "root" }); + return GridAlignRowsStyleBuilder; +}(StyleBuilder)); +var GridAlignRowsDirective = /** @class */ (function (_super) { + __extends(GridAlignRowsDirective, _super); + function GridAlignRowsDirective(elementRef, styleBuilder, styler, marshal) { + var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; + _this.elementRef = elementRef; + _this.styleBuilder = styleBuilder; + _this.styler = styler; + _this.marshal = marshal; + _this.DIRECTIVE_KEY = 'grid-align-rows'; + _this._inline = false; + _this.init(); + return _this; + } + Object.defineProperty(GridAlignRowsDirective.prototype, "inline", { + get: /** + * @return {?} + */ + function () { return this._inline; }, + set: /** + * @param {?} val + * @return {?} + */ + function (val) { this._inline = coercion.coerceBooleanProperty(val); }, + enumerable: true, + configurable: true + }); + // ********************************************* + // Protected methods + // ********************************************* + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected + * @param {?} value + * @return {?} + */ + GridAlignRowsDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected + * @param {?} value + * @return {?} + */ + function (value) { + this.styleCache = this.inline ? alignRowsInlineCache : alignRowsCache; + this.addStyles(value, { inline: this.inline }); + }; + /** @nocollapse */ + GridAlignRowsDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: GridAlignRowsStyleBuilder, decorators: [{ type: core.Optional }] }, + { type: StyleUtils }, + { type: MediaMarshaller } + ]; }; + GridAlignRowsDirective.propDecorators = { + inline: [{ type: core.Input, args: ['gdInline',] }] + }; + return GridAlignRowsDirective; +}(BaseDirective2)); +/** @type {?} */ +var alignRowsCache = new Map(); +/** @type {?} */ +var alignRowsInlineCache = new Map(); +/** @type {?} */ +var inputs$2$2 = [ + 'gdAlignRows', + 'gdAlignRows.xs', 'gdAlignRows.sm', 'gdAlignRows.md', + 'gdAlignRows.lg', 'gdAlignRows.xl', 'gdAlignRows.lt-sm', + 'gdAlignRows.lt-md', 'gdAlignRows.lt-lg', 'gdAlignRows.lt-xl', + 'gdAlignRows.gt-xs', 'gdAlignRows.gt-sm', 'gdAlignRows.gt-md', + 'gdAlignRows.gt-lg' +]; +/** @type {?} */ +var selector$2$2 = "\n [gdAlignRows],\n [gdAlignRows.xs], [gdAlignRows.sm], [gdAlignRows.md],\n [gdAlignRows.lg], [gdAlignRows.xl], [gdAlignRows.lt-sm],\n [gdAlignRows.lt-md], [gdAlignRows.lt-lg], [gdAlignRows.lt-xl],\n [gdAlignRows.gt-xs], [gdAlignRows.gt-sm], [gdAlignRows.gt-md],\n [gdAlignRows.gt-lg]\n"; +/** + * 'row alignment' CSS Grid styling directive + * Configures the alignment in the row direction + * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-18 + * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-20 + */ +var DefaultGridAlignRowsDirective = /** @class */ (function (_super) { + __extends(DefaultGridAlignRowsDirective, _super); + function DefaultGridAlignRowsDirective() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.inputs = inputs$2$2; + return _this; + } + DefaultGridAlignRowsDirective.decorators = [ + { type: core.Directive, args: [{ selector: selector$2$2, inputs: inputs$2$2 },] }, + ]; + return DefaultGridAlignRowsDirective; +}(GridAlignRowsDirective)); +/** + * @param {?} align + * @param {?} inline + * @return {?} + */ +function buildCss$2(align, inline) { + /** @type {?} */ + var css = {}; + var _a = align.split(' '), mainAxis = _a[0], crossAxis = _a[1]; + // Main axis + switch (mainAxis) { + case 'center': + case 'space-around': + case 'space-between': + case 'space-evenly': + case 'end': + case 'start': + case 'stretch': + css['justify-content'] = mainAxis; + break; + default: + css['justify-content'] = DEFAULT_MAIN$1; // default main axis + break; + } + // Cross-axis + switch (crossAxis) { + case 'start': + case 'center': + case 'end': + case 'stretch': + css['justify-items'] = crossAxis; + break; + default: // 'stretch' + css['justify-items'] = DEFAULT_CROSS$1; // default cross axis + break; + } + css['display'] = inline ? 'inline-grid' : 'grid'; + return css; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var DEFAULT_VALUE = 'auto'; +var GridAreaStyleBuilder = /** @class */ (function (_super) { + __extends(GridAreaStyleBuilder, _super); + function GridAreaStyleBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @param {?} input + * @return {?} + */ + GridAreaStyleBuilder.prototype.buildStyles = /** + * @param {?} input + * @return {?} + */ + function (input) { + return { 'grid-area': input || DEFAULT_VALUE }; + }; + GridAreaStyleBuilder.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ GridAreaStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function GridAreaStyleBuilder_Factory() { return new GridAreaStyleBuilder(); }, token: GridAreaStyleBuilder, providedIn: "root" }); + return GridAreaStyleBuilder; +}(StyleBuilder)); +var GridAreaDirective = /** @class */ (function (_super) { + __extends(GridAreaDirective, _super); + function GridAreaDirective(elRef, styleUtils, styleBuilder, marshal) { + var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; + _this.elRef = elRef; + _this.styleUtils = styleUtils; + _this.styleBuilder = styleBuilder; + _this.marshal = marshal; + _this.DIRECTIVE_KEY = 'grid-area'; + _this.styleCache = gridAreaCache; + _this.init(); + return _this; + } + /** @nocollapse */ + GridAreaDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: StyleUtils }, + { type: GridAreaStyleBuilder, decorators: [{ type: core.Optional }] }, + { type: MediaMarshaller } + ]; }; + return GridAreaDirective; +}(BaseDirective2)); +/** @type {?} */ +var gridAreaCache = new Map(); +/** @type {?} */ +var inputs$3$2 = [ + 'gdArea', + 'gdArea.xs', 'gdArea.sm', 'gdArea.md', 'gdArea.lg', 'gdArea.xl', + 'gdArea.lt-sm', 'gdArea.lt-md', 'gdArea.lt-lg', 'gdArea.lt-xl', + 'gdArea.gt-xs', 'gdArea.gt-sm', 'gdArea.gt-md', 'gdArea.gt-lg' +]; +/** @type {?} */ +var selector$3$2 = "\n [gdArea],\n [gdArea.xs], [gdArea.sm], [gdArea.md], [gdArea.lg], [gdArea.xl],\n [gdArea.lt-sm], [gdArea.lt-md], [gdArea.lt-lg], [gdArea.lt-xl],\n [gdArea.gt-xs], [gdArea.gt-sm], [gdArea.gt-md], [gdArea.gt-lg]\n"; +/** + * 'grid-area' CSS Grid styling directive + * Configures the name or position of an element within the grid + * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-27 + */ +var DefaultGridAreaDirective = /** @class */ (function (_super) { + __extends(DefaultGridAreaDirective, _super); + function DefaultGridAreaDirective() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.inputs = inputs$3$2; + return _this; + } + DefaultGridAreaDirective.decorators = [ + { type: core.Directive, args: [{ selector: selector$3$2, inputs: inputs$3$2 },] }, + ]; + return DefaultGridAreaDirective; +}(GridAreaDirective)); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var DEFAULT_VALUE$1 = 'none'; +/** @type {?} */ +var DELIMETER = '|'; +var GridAreasStyleBuiler = /** @class */ (function (_super) { + __extends(GridAreasStyleBuiler, _super); + function GridAreasStyleBuiler() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @param {?} input + * @param {?} parent + * @return {?} + */ + GridAreasStyleBuiler.prototype.buildStyles = /** + * @param {?} input + * @param {?} parent + * @return {?} + */ + function (input, parent) { + /** @type {?} */ + var areas = (input || DEFAULT_VALUE$1).split(DELIMETER).map((/** + * @param {?} v + * @return {?} + */ + function (v) { return "\"" + v.trim() + "\""; })); + return { + 'display': parent.inline ? 'inline-grid' : 'grid', + 'grid-template-areas': areas.join(' ') + }; + }; + GridAreasStyleBuiler.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ GridAreasStyleBuiler.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function GridAreasStyleBuiler_Factory() { return new GridAreasStyleBuiler(); }, token: GridAreasStyleBuiler, providedIn: "root" }); + return GridAreasStyleBuiler; +}(StyleBuilder)); +var GridAreasDirective = /** @class */ (function (_super) { + __extends(GridAreasDirective, _super); + function GridAreasDirective(elRef, styleUtils, styleBuilder, marshal) { + var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; + _this.elRef = elRef; + _this.styleUtils = styleUtils; + _this.styleBuilder = styleBuilder; + _this.marshal = marshal; + _this.DIRECTIVE_KEY = 'grid-areas'; + _this._inline = false; + _this.init(); + return _this; + } + Object.defineProperty(GridAreasDirective.prototype, "inline", { + get: /** + * @return {?} + */ + function () { return this._inline; }, + set: /** + * @param {?} val + * @return {?} + */ + function (val) { this._inline = coercion.coerceBooleanProperty(val); }, + enumerable: true, + configurable: true + }); + // ********************************************* + // Protected methods + // ********************************************* + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected + * @param {?} value + * @return {?} + */ + GridAreasDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected + * @param {?} value + * @return {?} + */ + function (value) { + this.styleCache = this.inline ? areasInlineCache : areasCache; + this.addStyles(value, { inline: this.inline }); + }; + /** @nocollapse */ + GridAreasDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: StyleUtils }, + { type: GridAreasStyleBuiler, decorators: [{ type: core.Optional }] }, + { type: MediaMarshaller } + ]; }; + GridAreasDirective.propDecorators = { + inline: [{ type: core.Input, args: ['gdInline',] }] + }; + return GridAreasDirective; +}(BaseDirective2)); +/** @type {?} */ +var areasCache = new Map(); +/** @type {?} */ +var areasInlineCache = new Map(); +/** @type {?} */ +var inputs$4$2 = [ + 'gdAreas', + 'gdAreas.xs', 'gdAreas.sm', 'gdAreas.md', 'gdAreas.lg', 'gdAreas.xl', + 'gdAreas.lt-sm', 'gdAreas.lt-md', 'gdAreas.lt-lg', 'gdAreas.lt-xl', + 'gdAreas.gt-xs', 'gdAreas.gt-sm', 'gdAreas.gt-md', 'gdAreas.gt-lg' +]; +/** @type {?} */ +var selector$4$2 = "\n [gdAreas],\n [gdAreas.xs], [gdAreas.sm], [gdAreas.md], [gdAreas.lg], [gdAreas.xl],\n [gdAreas.lt-sm], [gdAreas.lt-md], [gdAreas.lt-lg], [gdAreas.lt-xl],\n [gdAreas.gt-xs], [gdAreas.gt-sm], [gdAreas.gt-md], [gdAreas.gt-lg]\n"; +/** + * 'grid-template-areas' CSS Grid styling directive + * Configures the names of elements within the grid + * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-14 + */ +var DefaultGridAreasDirective = /** @class */ (function (_super) { + __extends(DefaultGridAreasDirective, _super); + function DefaultGridAreasDirective() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.inputs = inputs$4$2; + return _this; + } + DefaultGridAreasDirective.decorators = [ + { type: core.Directive, args: [{ selector: selector$4$2, inputs: inputs$4$2 },] }, + ]; + return DefaultGridAreasDirective; +}(GridAreasDirective)); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var DEFAULT_VALUE$2 = 'initial'; +var GridAutoStyleBuilder = /** @class */ (function (_super) { + __extends(GridAutoStyleBuilder, _super); + function GridAutoStyleBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @param {?} input + * @param {?} parent + * @return {?} + */ + GridAutoStyleBuilder.prototype.buildStyles = /** + * @param {?} input + * @param {?} parent + * @return {?} + */ + function (input, parent) { + var _a = (input || DEFAULT_VALUE$2).split(' '), direction = _a[0], dense = _a[1]; + if (direction !== 'column' && direction !== 'row' && direction !== 'dense') { + direction = 'row'; + } + dense = (dense === 'dense' && direction !== 'dense') ? ' dense' : ''; + return { + 'display': parent.inline ? 'inline-grid' : 'grid', + 'grid-auto-flow': direction + dense + }; + }; + GridAutoStyleBuilder.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ GridAutoStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function GridAutoStyleBuilder_Factory() { return new GridAutoStyleBuilder(); }, token: GridAutoStyleBuilder, providedIn: "root" }); + return GridAutoStyleBuilder; +}(StyleBuilder)); +var GridAutoDirective = /** @class */ (function (_super) { + __extends(GridAutoDirective, _super); + function GridAutoDirective(elementRef, styleBuilder, styler, marshal) { + var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; + _this.elementRef = elementRef; + _this.styleBuilder = styleBuilder; + _this.styler = styler; + _this.marshal = marshal; + _this._inline = false; + _this.DIRECTIVE_KEY = 'grid-auto'; + _this.init(); + return _this; + } + Object.defineProperty(GridAutoDirective.prototype, "inline", { + get: /** + * @return {?} + */ + function () { return this._inline; }, + set: /** + * @param {?} val + * @return {?} + */ + function (val) { this._inline = coercion.coerceBooleanProperty(val); }, + enumerable: true, + configurable: true + }); + // ********************************************* + // Protected methods + // ********************************************* + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected + * @param {?} value + * @return {?} + */ + GridAutoDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected + * @param {?} value + * @return {?} + */ + function (value) { + this.styleCache = this.inline ? autoInlineCache : autoCache; + this.addStyles(value, { inline: this.inline }); + }; + /** @nocollapse */ + GridAutoDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: GridAutoStyleBuilder, decorators: [{ type: core.Optional }] }, + { type: StyleUtils }, + { type: MediaMarshaller } + ]; }; + GridAutoDirective.propDecorators = { + inline: [{ type: core.Input, args: ['gdInline',] }] + }; + return GridAutoDirective; +}(BaseDirective2)); +/** @type {?} */ +var autoCache = new Map(); +/** @type {?} */ +var autoInlineCache = new Map(); +/** @type {?} */ +var inputs$5$1 = [ + 'gdAuto', + 'gdAuto.xs', 'gdAuto.sm', 'gdAuto.md', 'gdAuto.lg', 'gdAuto.xl', + 'gdAuto.lt-sm', 'gdAuto.lt-md', 'gdAuto.lt-lg', 'gdAuto.lt-xl', + 'gdAuto.gt-xs', 'gdAuto.gt-sm', 'gdAuto.gt-md', 'gdAuto.gt-lg' +]; +/** @type {?} */ +var selector$5$1 = "\n [gdAuto],\n [gdAuto.xs], [gdAuto.sm], [gdAuto.md], [gdAuto.lg], [gdAuto.xl],\n [gdAuto.lt-sm], [gdAuto.lt-md], [gdAuto.lt-lg], [gdAuto.lt-xl],\n [gdAuto.gt-xs], [gdAuto.gt-sm], [gdAuto.gt-md], [gdAuto.gt-lg]\n"; +/** + * 'grid-auto-flow' CSS Grid styling directive + * Configures the auto placement algorithm for the grid + * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-23 + */ +var DefaultGridAutoDirective = /** @class */ (function (_super) { + __extends(DefaultGridAutoDirective, _super); + function DefaultGridAutoDirective() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.inputs = inputs$5$1; + return _this; + } + DefaultGridAutoDirective.decorators = [ + { type: core.Directive, args: [{ selector: selector$5$1, inputs: inputs$5$1 },] }, + ]; + return DefaultGridAutoDirective; +}(GridAutoDirective)); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var DEFAULT_VALUE$3 = 'auto'; +var GridColumnStyleBuilder = /** @class */ (function (_super) { + __extends(GridColumnStyleBuilder, _super); + function GridColumnStyleBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @param {?} input + * @return {?} + */ + GridColumnStyleBuilder.prototype.buildStyles = /** + * @param {?} input + * @return {?} + */ + function (input) { + return { 'grid-column': input || DEFAULT_VALUE$3 }; + }; + GridColumnStyleBuilder.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ GridColumnStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function GridColumnStyleBuilder_Factory() { return new GridColumnStyleBuilder(); }, token: GridColumnStyleBuilder, providedIn: "root" }); + return GridColumnStyleBuilder; +}(StyleBuilder)); +var GridColumnDirective = /** @class */ (function (_super) { + __extends(GridColumnDirective, _super); + function GridColumnDirective(elementRef, styleBuilder, styler, marshal) { + var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; + _this.elementRef = elementRef; + _this.styleBuilder = styleBuilder; + _this.styler = styler; + _this.marshal = marshal; + _this.DIRECTIVE_KEY = 'grid-column'; + _this.styleCache = columnCache; + _this.init(); + return _this; + } + /** @nocollapse */ + GridColumnDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: GridColumnStyleBuilder, decorators: [{ type: core.Optional }] }, + { type: StyleUtils }, + { type: MediaMarshaller } + ]; }; + return GridColumnDirective; +}(BaseDirective2)); +/** @type {?} */ +var columnCache = new Map(); +/** @type {?} */ +var inputs$6$1 = [ + 'gdColumn', + 'gdColumn.xs', 'gdColumn.sm', 'gdColumn.md', 'gdColumn.lg', 'gdColumn.xl', + 'gdColumn.lt-sm', 'gdColumn.lt-md', 'gdColumn.lt-lg', 'gdColumn.lt-xl', + 'gdColumn.gt-xs', 'gdColumn.gt-sm', 'gdColumn.gt-md', 'gdColumn.gt-lg' +]; +/** @type {?} */ +var selector$6$1 = "\n [gdColumn],\n [gdColumn.xs], [gdColumn.sm], [gdColumn.md], [gdColumn.lg], [gdColumn.xl],\n [gdColumn.lt-sm], [gdColumn.lt-md], [gdColumn.lt-lg], [gdColumn.lt-xl],\n [gdColumn.gt-xs], [gdColumn.gt-sm], [gdColumn.gt-md], [gdColumn.gt-lg]\n"; +/** + * 'grid-column' CSS Grid styling directive + * Configures the name or position of an element within the grid + * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26 + */ +var DefaultGridColumnDirective = /** @class */ (function (_super) { + __extends(DefaultGridColumnDirective, _super); + function DefaultGridColumnDirective() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.inputs = inputs$6$1; + return _this; + } + DefaultGridColumnDirective.decorators = [ + { type: core.Directive, args: [{ selector: selector$6$1, inputs: inputs$6$1 },] }, + ]; + return DefaultGridColumnDirective; +}(GridColumnDirective)); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var DEFAULT_VALUE$4 = 'none'; +/** @type {?} */ +var AUTO_SPECIFIER = '!'; +var GridColumnsStyleBuilder = /** @class */ (function (_super) { + __extends(GridColumnsStyleBuilder, _super); + function GridColumnsStyleBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @param {?} input + * @param {?} parent + * @return {?} + */ + GridColumnsStyleBuilder.prototype.buildStyles = /** + * @param {?} input + * @param {?} parent + * @return {?} + */ + function (input, parent) { + input = input || DEFAULT_VALUE$4; + /** @type {?} */ + var auto = false; + if (input.endsWith(AUTO_SPECIFIER)) { + input = input.substring(0, input.indexOf(AUTO_SPECIFIER)); + auto = true; + } + /** @type {?} */ + var css = { + 'display': parent.inline ? 'inline-grid' : 'grid', + 'grid-auto-columns': '', + 'grid-template-columns': '', + }; + /** @type {?} */ + var key = (auto ? 'grid-auto-columns' : 'grid-template-columns'); + css[key] = input; + return css; + }; + GridColumnsStyleBuilder.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ GridColumnsStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function GridColumnsStyleBuilder_Factory() { return new GridColumnsStyleBuilder(); }, token: GridColumnsStyleBuilder, providedIn: "root" }); + return GridColumnsStyleBuilder; +}(StyleBuilder)); +var GridColumnsDirective = /** @class */ (function (_super) { + __extends(GridColumnsDirective, _super); + function GridColumnsDirective(elementRef, styleBuilder, styler, marshal) { + var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; + _this.elementRef = elementRef; + _this.styleBuilder = styleBuilder; + _this.styler = styler; + _this.marshal = marshal; + _this.DIRECTIVE_KEY = 'grid-columns'; + _this._inline = false; + _this.init(); + return _this; + } + Object.defineProperty(GridColumnsDirective.prototype, "inline", { + get: /** + * @return {?} + */ + function () { return this._inline; }, + set: /** + * @param {?} val + * @return {?} + */ + function (val) { this._inline = coercion.coerceBooleanProperty(val); }, + enumerable: true, + configurable: true + }); + // ********************************************* + // Protected methods + // ********************************************* + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected + * @param {?} value + * @return {?} + */ + GridColumnsDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected + * @param {?} value + * @return {?} + */ + function (value) { + this.styleCache = this.inline ? columnsInlineCache : columnsCache; + this.addStyles(value, { inline: this.inline }); + }; + /** @nocollapse */ + GridColumnsDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: GridColumnsStyleBuilder, decorators: [{ type: core.Optional }] }, + { type: StyleUtils }, + { type: MediaMarshaller } + ]; }; + GridColumnsDirective.propDecorators = { + inline: [{ type: core.Input, args: ['gdInline',] }] + }; + return GridColumnsDirective; +}(BaseDirective2)); +/** @type {?} */ +var columnsCache = new Map(); +/** @type {?} */ +var columnsInlineCache = new Map(); +/** @type {?} */ +var inputs$7$1 = [ + 'gdColumns', + 'gdColumns.xs', 'gdColumns.sm', 'gdColumns.md', 'gdColumns.lg', 'gdColumns.xl', + 'gdColumns.lt-sm', 'gdColumns.lt-md', 'gdColumns.lt-lg', 'gdColumns.lt-xl', + 'gdColumns.gt-xs', 'gdColumns.gt-sm', 'gdColumns.gt-md', 'gdColumns.gt-lg' +]; +/** @type {?} */ +var selector$7$1 = "\n [gdColumns],\n [gdColumns.xs], [gdColumns.sm], [gdColumns.md], [gdColumns.lg], [gdColumns.xl],\n [gdColumns.lt-sm], [gdColumns.lt-md], [gdColumns.lt-lg], [gdColumns.lt-xl],\n [gdColumns.gt-xs], [gdColumns.gt-sm], [gdColumns.gt-md], [gdColumns.gt-lg]\n"; +/** + * 'grid-template-columns' CSS Grid styling directive + * Configures the sizing for the columns in the grid + * Syntax: [auto] + * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13 + */ +var DefaultGridColumnsDirective = /** @class */ (function (_super) { + __extends(DefaultGridColumnsDirective, _super); + function DefaultGridColumnsDirective() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.inputs = inputs$7$1; + return _this; + } + DefaultGridColumnsDirective.decorators = [ + { type: core.Directive, args: [{ selector: selector$7$1, inputs: inputs$7$1 },] }, + ]; + return DefaultGridColumnsDirective; +}(GridColumnsDirective)); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var DEFAULT_VALUE$5 = '0'; +var GridGapStyleBuilder = /** @class */ (function (_super) { + __extends(GridGapStyleBuilder, _super); + function GridGapStyleBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @param {?} input + * @param {?} parent + * @return {?} + */ + GridGapStyleBuilder.prototype.buildStyles = /** + * @param {?} input + * @param {?} parent + * @return {?} + */ + function (input, parent) { + return { + 'display': parent.inline ? 'inline-grid' : 'grid', + 'grid-gap': input || DEFAULT_VALUE$5 + }; + }; + GridGapStyleBuilder.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ GridGapStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function GridGapStyleBuilder_Factory() { return new GridGapStyleBuilder(); }, token: GridGapStyleBuilder, providedIn: "root" }); + return GridGapStyleBuilder; +}(StyleBuilder)); +var GridGapDirective = /** @class */ (function (_super) { + __extends(GridGapDirective, _super); + function GridGapDirective(elRef, styleUtils, styleBuilder, marshal) { + var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; + _this.elRef = elRef; + _this.styleUtils = styleUtils; + _this.styleBuilder = styleBuilder; + _this.marshal = marshal; + _this.DIRECTIVE_KEY = 'grid-gap'; + _this._inline = false; + _this.init(); + return _this; + } + Object.defineProperty(GridGapDirective.prototype, "inline", { + get: /** + * @return {?} + */ + function () { return this._inline; }, + set: /** + * @param {?} val + * @return {?} + */ + function (val) { this._inline = coercion.coerceBooleanProperty(val); }, + enumerable: true, + configurable: true + }); + // ********************************************* + // Protected methods + // ********************************************* + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected + * @param {?} value + * @return {?} + */ + GridGapDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected + * @param {?} value + * @return {?} + */ + function (value) { + this.styleCache = this.inline ? gapInlineCache : gapCache; + this.addStyles(value, { inline: this.inline }); + }; + /** @nocollapse */ + GridGapDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: StyleUtils }, + { type: GridGapStyleBuilder, decorators: [{ type: core.Optional }] }, + { type: MediaMarshaller } + ]; }; + GridGapDirective.propDecorators = { + inline: [{ type: core.Input, args: ['gdInline',] }] + }; + return GridGapDirective; +}(BaseDirective2)); +/** @type {?} */ +var gapCache = new Map(); +/** @type {?} */ +var gapInlineCache = new Map(); +/** @type {?} */ +var inputs$8 = [ + 'gdGap', + 'gdGap.xs', 'gdGap.sm', 'gdGap.md', 'gdGap.lg', 'gdGap.xl', + 'gdGap.lt-sm', 'gdGap.lt-md', 'gdGap.lt-lg', 'gdGap.lt-xl', + 'gdGap.gt-xs', 'gdGap.gt-sm', 'gdGap.gt-md', 'gdGap.gt-lg' +]; +/** @type {?} */ +var selector$8 = "\n [gdGap],\n [gdGap.xs], [gdGap.sm], [gdGap.md], [gdGap.lg], [gdGap.xl],\n [gdGap.lt-sm], [gdGap.lt-md], [gdGap.lt-lg], [gdGap.lt-xl],\n [gdGap.gt-xs], [gdGap.gt-sm], [gdGap.gt-md], [gdGap.gt-lg]\n"; +/** + * 'grid-gap' CSS Grid styling directive + * Configures the gap between items in the grid + * Syntax: [] + * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-17 + */ +var DefaultGridGapDirective = /** @class */ (function (_super) { + __extends(DefaultGridGapDirective, _super); + function DefaultGridGapDirective() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.inputs = inputs$8; + return _this; + } + DefaultGridGapDirective.decorators = [ + { type: core.Directive, args: [{ selector: selector$8, inputs: inputs$8 },] }, + ]; + return DefaultGridGapDirective; +}(GridGapDirective)); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var DEFAULT_VALUE$6 = 'auto'; +var GridRowStyleBuilder = /** @class */ (function (_super) { + __extends(GridRowStyleBuilder, _super); + function GridRowStyleBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @param {?} input + * @return {?} + */ + GridRowStyleBuilder.prototype.buildStyles = /** + * @param {?} input + * @return {?} + */ + function (input) { + return { 'grid-row': input || DEFAULT_VALUE$6 }; + }; + GridRowStyleBuilder.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ GridRowStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function GridRowStyleBuilder_Factory() { return new GridRowStyleBuilder(); }, token: GridRowStyleBuilder, providedIn: "root" }); + return GridRowStyleBuilder; +}(StyleBuilder)); +var GridRowDirective = /** @class */ (function (_super) { + __extends(GridRowDirective, _super); + function GridRowDirective(elementRef, styleBuilder, styler, marshal) { + var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; + _this.elementRef = elementRef; + _this.styleBuilder = styleBuilder; + _this.styler = styler; + _this.marshal = marshal; + _this.DIRECTIVE_KEY = 'grid-row'; + _this.styleCache = rowCache; + _this.init(); + return _this; + } + /** @nocollapse */ + GridRowDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: GridRowStyleBuilder, decorators: [{ type: core.Optional }] }, + { type: StyleUtils }, + { type: MediaMarshaller } + ]; }; + return GridRowDirective; +}(BaseDirective2)); +/** @type {?} */ +var rowCache = new Map(); +/** @type {?} */ +var inputs$9 = [ + 'gdRow', + 'gdRow.xs', 'gdRow.sm', 'gdRow.md', 'gdRow.lg', 'gdRow.xl', + 'gdRow.lt-sm', 'gdRow.lt-md', 'gdRow.lt-lg', 'gdRow.lt-xl', + 'gdRow.gt-xs', 'gdRow.gt-sm', 'gdRow.gt-md', 'gdRow.gt-lg' +]; +/** @type {?} */ +var selector$9 = "\n [gdRow],\n [gdRow.xs], [gdRow.sm], [gdRow.md], [gdRow.lg], [gdRow.xl],\n [gdRow.lt-sm], [gdRow.lt-md], [gdRow.lt-lg], [gdRow.lt-xl],\n [gdRow.gt-xs], [gdRow.gt-sm], [gdRow.gt-md], [gdRow.gt-lg]\n"; +/** + * 'grid-row' CSS Grid styling directive + * Configures the name or position of an element within the grid + * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26 + */ +var DefaultGridRowDirective = /** @class */ (function (_super) { + __extends(DefaultGridRowDirective, _super); + function DefaultGridRowDirective() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.inputs = inputs$9; + return _this; + } + DefaultGridRowDirective.decorators = [ + { type: core.Directive, args: [{ selector: selector$9, inputs: inputs$9 },] }, + ]; + return DefaultGridRowDirective; +}(GridRowDirective)); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var DEFAULT_VALUE$7 = 'none'; +/** @type {?} */ +var AUTO_SPECIFIER$1 = '!'; +var GridRowsStyleBuilder = /** @class */ (function (_super) { + __extends(GridRowsStyleBuilder, _super); + function GridRowsStyleBuilder() { + return _super !== null && _super.apply(this, arguments) || this; + } + /** + * @param {?} input + * @param {?} parent + * @return {?} + */ + GridRowsStyleBuilder.prototype.buildStyles = /** + * @param {?} input + * @param {?} parent + * @return {?} + */ + function (input, parent) { + input = input || DEFAULT_VALUE$7; + /** @type {?} */ + var auto = false; + if (input.endsWith(AUTO_SPECIFIER$1)) { + input = input.substring(0, input.indexOf(AUTO_SPECIFIER$1)); + auto = true; + } + /** @type {?} */ + var css = { + 'display': parent.inline ? 'inline-grid' : 'grid', + 'grid-auto-rows': '', + 'grid-template-rows': '', + }; + /** @type {?} */ + var key = (auto ? 'grid-auto-rows' : 'grid-template-rows'); + css[key] = input; + return css; + }; + GridRowsStyleBuilder.decorators = [ + { type: core.Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ GridRowsStyleBuilder.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function GridRowsStyleBuilder_Factory() { return new GridRowsStyleBuilder(); }, token: GridRowsStyleBuilder, providedIn: "root" }); + return GridRowsStyleBuilder; +}(StyleBuilder)); +var GridRowsDirective = /** @class */ (function (_super) { + __extends(GridRowsDirective, _super); + function GridRowsDirective(elementRef, styleBuilder, styler, marshal) { + var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; + _this.elementRef = elementRef; + _this.styleBuilder = styleBuilder; + _this.styler = styler; + _this.marshal = marshal; + _this.DIRECTIVE_KEY = 'grid-rows'; + _this._inline = false; + _this.init(); + return _this; + } + Object.defineProperty(GridRowsDirective.prototype, "inline", { + get: /** + * @return {?} + */ + function () { return this._inline; }, + set: /** + * @param {?} val + * @return {?} + */ + function (val) { this._inline = coercion.coerceBooleanProperty(val); }, + enumerable: true, + configurable: true + }); + // ********************************************* + // Protected methods + // ********************************************* + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected + * @param {?} value + * @return {?} + */ + GridRowsDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected + * @param {?} value + * @return {?} + */ + function (value) { + this.styleCache = this.inline ? rowsInlineCache : rowsCache; + this.addStyles(value, { inline: this.inline }); + }; + /** @nocollapse */ + GridRowsDirective.ctorParameters = function () { return [ + { type: core.ElementRef }, + { type: GridRowsStyleBuilder, decorators: [{ type: core.Optional }] }, + { type: StyleUtils }, + { type: MediaMarshaller } + ]; }; + GridRowsDirective.propDecorators = { + inline: [{ type: core.Input, args: ['gdInline',] }] + }; + return GridRowsDirective; +}(BaseDirective2)); +/** @type {?} */ +var rowsCache = new Map(); +/** @type {?} */ +var rowsInlineCache = new Map(); +/** @type {?} */ +var inputs$10 = [ + 'gdRows', + 'gdRows.xs', 'gdRows.sm', 'gdRows.md', 'gdRows.lg', 'gdRows.xl', + 'gdRows.lt-sm', 'gdRows.lt-md', 'gdRows.lt-lg', 'gdRows.lt-xl', + 'gdRows.gt-xs', 'gdRows.gt-sm', 'gdRows.gt-md', 'gdRows.gt-lg' +]; +/** @type {?} */ +var selector$10 = "\n [gdRows],\n [gdRows.xs], [gdRows.sm], [gdRows.md], [gdRows.lg], [gdRows.xl],\n [gdRows.lt-sm], [gdRows.lt-md], [gdRows.lt-lg], [gdRows.lt-xl],\n [gdRows.gt-xs], [gdRows.gt-sm], [gdRows.gt-md], [gdRows.gt-lg]\n"; +/** + * 'grid-template-rows' CSS Grid styling directive + * Configures the sizing for the rows in the grid + * Syntax: [auto] + * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13 + */ +var DefaultGridRowsDirective = /** @class */ (function (_super) { + __extends(DefaultGridRowsDirective, _super); + function DefaultGridRowsDirective() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.inputs = inputs$10; + return _this; + } + DefaultGridRowsDirective.decorators = [ + { type: core.Directive, args: [{ selector: selector$10, inputs: inputs$10 },] }, + ]; + return DefaultGridRowsDirective; +}(GridRowsDirective)); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var ALL_DIRECTIVES$2 = [ + DefaultGridAlignDirective, + DefaultGridAlignColumnsDirective, + DefaultGridAlignRowsDirective, + DefaultGridAreaDirective, + DefaultGridAreasDirective, + DefaultGridAutoDirective, + DefaultGridColumnDirective, + DefaultGridColumnsDirective, + DefaultGridGapDirective, + DefaultGridRowDirective, + DefaultGridRowsDirective, +]; +/** + * ***************************************************************** + * Define module for the CSS Grid API + * ***************************************************************** + */ +var GridModule = /** @class */ (function () { + function GridModule() { + } + GridModule.decorators = [ + { type: core.NgModule, args: [{ + imports: [CoreModule], + declarations: ALL_DIRECTIVES$2.slice(), + exports: ALL_DIRECTIVES$2.slice() + },] }, + ]; + return GridModule; +}()); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -/** * +/** * Current version of Angular Flex-Layout. - @type {?} */ -var VERSION = new core.Version('7.0.0-beta.22'); + * @type {?} + */ +var VERSION = new core.Version('8.0.0-beta.26'); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * FlexLayoutModule -- the main import for all utilities in the Angular Layout library @@ -60,138 +8466,133 @@ var FlexLayoutModule = /** @class */ (function () { ngModule: FlexLayoutModule, providers: configOptions.serverLoaded ? [ - { provide: core$1.LAYOUT_CONFIG, useValue: configOptions }, - { provide: core$1.BREAKPOINT, useValue: breakpoints, multi: true }, - { provide: core$1.SERVER_TOKEN, useValue: true }, + { provide: LAYOUT_CONFIG, useValue: __assign({}, DEFAULT_CONFIG, configOptions) }, + { provide: BREAKPOINT, useValue: breakpoints, multi: true }, + { provide: SERVER_TOKEN, useValue: true }, ] : [ - { provide: core$1.LAYOUT_CONFIG, useValue: configOptions }, - { provide: core$1.BREAKPOINT, useValue: breakpoints, multi: true }, + { provide: LAYOUT_CONFIG, useValue: __assign({}, DEFAULT_CONFIG, configOptions) }, + { provide: BREAKPOINT, useValue: breakpoints, multi: true }, ] }; }; FlexLayoutModule.decorators = [ { type: core.NgModule, args: [{ - imports: [flex.FlexModule, extended.ExtendedModule, grid.GridModule], - exports: [flex.FlexModule, extended.ExtendedModule, grid.GridModule] + imports: [FlexModule, ExtendedModule, GridModule], + exports: [FlexModule, ExtendedModule, GridModule] },] }, ]; /** @nocollapse */ FlexLayoutModule.ctorParameters = function () { return [ - { type: Boolean, decorators: [{ type: core.Optional }, { type: core.Inject, args: [core$1.SERVER_TOKEN,] }] }, + { type: Boolean, decorators: [{ type: core.Optional }, { type: core.Inject, args: [SERVER_TOKEN,] }] }, { type: Object, decorators: [{ type: core.Inject, args: [core.PLATFORM_ID,] }] } ]; }; return FlexLayoutModule; }()); -exports.removeStyles = core$1.removeStyles; -exports.BROWSER_PROVIDER = core$1.BROWSER_PROVIDER; -exports.CLASS_NAME = core$1.CLASS_NAME; -exports.CoreModule = core$1.CoreModule; -exports.MediaChange = core$1.MediaChange; -exports.StylesheetMap = core$1.StylesheetMap; -exports.DEFAULT_CONFIG = core$1.DEFAULT_CONFIG; -exports.LAYOUT_CONFIG = core$1.LAYOUT_CONFIG; -exports.SERVER_TOKEN = core$1.SERVER_TOKEN; -exports.BREAKPOINT = core$1.BREAKPOINT; -exports.BaseDirective = core$1.BaseDirective; -exports.BaseDirectiveAdapter = core$1.BaseDirectiveAdapter; -exports.BaseDirective2 = core$1.BaseDirective2; -exports.prioritySort = core$1.prioritySort; -exports.RESPONSIVE_ALIASES = core$1.RESPONSIVE_ALIASES; -exports.DEFAULT_BREAKPOINTS = core$1.DEFAULT_BREAKPOINTS; -exports.ScreenTypes = core$1.ScreenTypes; -exports.ORIENTATION_BREAKPOINTS = core$1.ORIENTATION_BREAKPOINTS; -exports.BreakPointRegistry = core$1.BreakPointRegistry; -exports.BREAKPOINTS = core$1.BREAKPOINTS; -exports.MatchMedia = core$1.MatchMedia; -exports.MockMatchMedia = core$1.MockMatchMedia; -exports.MockMediaQueryList = core$1.MockMediaQueryList; -exports.MockMatchMediaProvider = core$1.MockMatchMediaProvider; -exports.ServerMediaQueryList = core$1.ServerMediaQueryList; -exports.ServerMatchMedia = core$1.ServerMatchMedia; -exports.MediaMonitor = core$1.MediaMonitor; -exports.ObservableMedia = core$1.ObservableMedia; -exports.MediaService = core$1.MediaService; -exports.ObservableMediaProvider = core$1.ObservableMediaProvider; -exports.MediaObserver = core$1.MediaObserver; -exports.KeyOptions = core$1.KeyOptions; -exports.ResponsiveActivation = core$1.ResponsiveActivation; -exports.StyleUtils = core$1.StyleUtils; -exports.StyleBuilder = core$1.StyleBuilder; -exports.validateBasis = core$1.validateBasis; -exports.MediaMarshaller = core$1.MediaMarshaller; -exports.ExtendedModule = extended.ExtendedModule; -exports.ClassDirective = extended.ClassDirective; -exports.DefaultClassDirective = extended.DefaultClassDirective; -exports.ImgSrcStyleBuilder = extended.ImgSrcStyleBuilder; -exports.ImgSrcDirective = extended.ImgSrcDirective; -exports.DefaultImgSrcDirective = extended.DefaultImgSrcDirective; -exports.negativeOf = extended.negativeOf; -exports.ShowHideStyleBuilder = extended.ShowHideStyleBuilder; -exports.ShowHideDirective = extended.ShowHideDirective; -exports.DefaultShowHideDirective = extended.DefaultShowHideDirective; -exports.StyleDirective = extended.StyleDirective; -exports.DefaultStyleDirective = extended.DefaultStyleDirective; -exports.FlexModule = flex.FlexModule; -exports.FlexStyleBuilder = flex.FlexStyleBuilder; -exports.FlexDirective = flex.FlexDirective; -exports.DefaultFlexDirective = flex.DefaultFlexDirective; -exports.FlexAlignStyleBuilder = flex.FlexAlignStyleBuilder; -exports.FlexAlignDirective = flex.FlexAlignDirective; -exports.DefaultFlexAlignDirective = flex.DefaultFlexAlignDirective; -exports.FlexFillStyleBuilder = flex.FlexFillStyleBuilder; -exports.FlexFillDirective = flex.FlexFillDirective; -exports.FlexOffsetStyleBuilder = flex.FlexOffsetStyleBuilder; -exports.FlexOffsetDirective = flex.FlexOffsetDirective; -exports.DefaultFlexOffsetDirective = flex.DefaultFlexOffsetDirective; -exports.FlexOrderStyleBuilder = flex.FlexOrderStyleBuilder; -exports.FlexOrderDirective = flex.FlexOrderDirective; -exports.DefaultFlexOrderDirective = flex.DefaultFlexOrderDirective; -exports.LayoutStyleBuilder = flex.LayoutStyleBuilder; -exports.LayoutDirective = flex.LayoutDirective; -exports.DefaultLayoutDirective = flex.DefaultLayoutDirective; -exports.LayoutAlignStyleBuilder = flex.LayoutAlignStyleBuilder; -exports.LayoutAlignDirective = flex.LayoutAlignDirective; -exports.DefaultLayoutAlignDirective = flex.DefaultLayoutAlignDirective; -exports.LayoutGapStyleBuilder = flex.LayoutGapStyleBuilder; -exports.LayoutGapDirective = flex.LayoutGapDirective; -exports.DefaultLayoutGapDirective = flex.DefaultLayoutGapDirective; -exports.ɵf = grid.ɵf; -exports.ɵe = grid.ɵe; -exports.ɵd = grid.ɵd; -exports.ɵi = grid.ɵi; -exports.ɵh = grid.ɵh; -exports.ɵg = grid.ɵg; -exports.ɵl = grid.ɵl; -exports.ɵk = grid.ɵk; -exports.ɵj = grid.ɵj; -exports.ɵo = grid.ɵo; -exports.ɵn = grid.ɵn; -exports.ɵm = grid.ɵm; -exports.ɵr = grid.ɵr; -exports.ɵq = grid.ɵq; -exports.ɵp = grid.ɵp; -exports.ɵu = grid.ɵu; -exports.ɵt = grid.ɵt; -exports.ɵs = grid.ɵs; -exports.ɵx = grid.ɵx; -exports.ɵw = grid.ɵw; -exports.ɵv = grid.ɵv; -exports.ɵba = grid.ɵba; -exports.ɵz = grid.ɵz; -exports.ɵy = grid.ɵy; -exports.ɵc = grid.ɵc; -exports.ɵb = grid.ɵb; -exports.ɵa = grid.ɵa; -exports.ɵbd = grid.ɵbd; -exports.ɵbc = grid.ɵbc; -exports.ɵbb = grid.ɵbb; -exports.ɵbg = grid.ɵbg; -exports.ɵbf = grid.ɵbf; -exports.ɵbe = grid.ɵbe; -exports.GridModule = grid.GridModule; exports.VERSION = VERSION; exports.FlexLayoutModule = FlexLayoutModule; +exports.ɵMatchMedia = MatchMedia; +exports.ɵMockMatchMedia = MockMatchMedia; +exports.ɵMockMatchMediaProvider = MockMatchMediaProvider; +exports.CoreModule = CoreModule; +exports.removeStyles = removeStyles; +exports.BROWSER_PROVIDER = BROWSER_PROVIDER; +exports.CLASS_NAME = CLASS_NAME; +exports.MediaChange = MediaChange; +exports.StylesheetMap = StylesheetMap; +exports.DEFAULT_CONFIG = DEFAULT_CONFIG; +exports.LAYOUT_CONFIG = LAYOUT_CONFIG; +exports.SERVER_TOKEN = SERVER_TOKEN; +exports.BREAKPOINT = BREAKPOINT; +exports.mergeAlias = mergeAlias; +exports.BaseDirective2 = BaseDirective2; +exports.DEFAULT_BREAKPOINTS = DEFAULT_BREAKPOINTS; +exports.ScreenTypes = ScreenTypes; +exports.ORIENTATION_BREAKPOINTS = ORIENTATION_BREAKPOINTS; +exports.BreakPointRegistry = BreakPointRegistry; +exports.BREAKPOINTS = BREAKPOINTS; +exports.MediaObserver = MediaObserver; +exports.MediaTrigger = MediaTrigger; +exports.sortDescendingPriority = sortDescendingPriority; +exports.sortAscendingPriority = sortAscendingPriority; +exports.coerceArray = coerceArray; +exports.StyleUtils = StyleUtils; +exports.StyleBuilder = StyleBuilder; +exports.validateBasis = validateBasis; +exports.MediaMarshaller = MediaMarshaller; +exports.BREAKPOINT_PRINT = BREAKPOINT_PRINT; +exports.PrintHook = PrintHook; +exports.ExtendedModule = ExtendedModule; +exports.ClassDirective = ClassDirective; +exports.LayoutNgClassImplProvider = LayoutNgClassImplProvider; +exports.DefaultClassDirective = DefaultClassDirective; +exports.ImgSrcStyleBuilder = ImgSrcStyleBuilder; +exports.ImgSrcDirective = ImgSrcDirective; +exports.DefaultImgSrcDirective = DefaultImgSrcDirective; +exports.ShowHideStyleBuilder = ShowHideStyleBuilder; +exports.ShowHideDirective = ShowHideDirective; +exports.DefaultShowHideDirective = DefaultShowHideDirective; +exports.StyleDirective = StyleDirective; +exports.LayoutNgStyleImplProvider = LayoutNgStyleImplProvider; +exports.DefaultStyleDirective = DefaultStyleDirective; +exports.FlexModule = FlexModule; +exports.FlexStyleBuilder = FlexStyleBuilder; +exports.FlexDirective = FlexDirective; +exports.DefaultFlexDirective = DefaultFlexDirective; +exports.FlexAlignStyleBuilder = FlexAlignStyleBuilder; +exports.FlexAlignDirective = FlexAlignDirective; +exports.DefaultFlexAlignDirective = DefaultFlexAlignDirective; +exports.FlexFillStyleBuilder = FlexFillStyleBuilder; +exports.FlexFillDirective = FlexFillDirective; +exports.FlexOffsetStyleBuilder = FlexOffsetStyleBuilder; +exports.FlexOffsetDirective = FlexOffsetDirective; +exports.DefaultFlexOffsetDirective = DefaultFlexOffsetDirective; +exports.FlexOrderStyleBuilder = FlexOrderStyleBuilder; +exports.FlexOrderDirective = FlexOrderDirective; +exports.DefaultFlexOrderDirective = DefaultFlexOrderDirective; +exports.LayoutStyleBuilder = LayoutStyleBuilder; +exports.LayoutDirective = LayoutDirective; +exports.DefaultLayoutDirective = DefaultLayoutDirective; +exports.LayoutAlignStyleBuilder = LayoutAlignStyleBuilder; +exports.LayoutAlignDirective = LayoutAlignDirective; +exports.DefaultLayoutAlignDirective = DefaultLayoutAlignDirective; +exports.LayoutGapStyleBuilder = LayoutGapStyleBuilder; +exports.LayoutGapDirective = LayoutGapDirective; +exports.DefaultLayoutGapDirective = DefaultLayoutGapDirective; +exports.ɵf2 = DefaultGridAlignColumnsDirective; +exports.ɵe2 = GridAlignColumnsDirective; +exports.ɵd2 = GridAlignColumnsStyleBuilder; +exports.ɵi2 = DefaultGridAlignRowsDirective; +exports.ɵh2 = GridAlignRowsDirective; +exports.ɵg2 = GridAlignRowsStyleBuilder; +exports.ɵl2 = DefaultGridAreaDirective; +exports.ɵk2 = GridAreaDirective; +exports.ɵj2 = GridAreaStyleBuilder; +exports.ɵo2 = DefaultGridAreasDirective; +exports.ɵn2 = GridAreasDirective; +exports.ɵm2 = GridAreasStyleBuiler; +exports.ɵr2 = DefaultGridAutoDirective; +exports.ɵq2 = GridAutoDirective; +exports.ɵp2 = GridAutoStyleBuilder; +exports.ɵu2 = DefaultGridColumnDirective; +exports.ɵt2 = GridColumnDirective; +exports.ɵs2 = GridColumnStyleBuilder; +exports.ɵx2 = DefaultGridColumnsDirective; +exports.ɵw2 = GridColumnsDirective; +exports.ɵv2 = GridColumnsStyleBuilder; +exports.ɵba2 = DefaultGridGapDirective; +exports.ɵz2 = GridGapDirective; +exports.ɵy2 = GridGapStyleBuilder; +exports.ɵc2 = DefaultGridAlignDirective; +exports.ɵb2 = GridAlignDirective; +exports.ɵa2 = GridAlignStyleBuilder; +exports.ɵbd2 = DefaultGridRowDirective; +exports.ɵbc2 = GridRowDirective; +exports.ɵbb2 = GridRowStyleBuilder; +exports.ɵbg2 = DefaultGridRowsDirective; +exports.ɵbf2 = GridRowsDirective; +exports.ɵbe2 = GridRowsStyleBuilder; +exports.GridModule = GridModule; Object.defineProperty(exports, '__esModule', { value: true }); diff --git a/bundles/flex-layout.umd.js.map b/bundles/flex-layout.umd.js.map index 280ea589d..2437c5d6b 100644 --- a/bundles/flex-layout.umd.js.map +++ b/bundles/flex-layout.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"flex-layout.umd.js","sources":["../../src/lib/module.ts","../../src/lib/version.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {\n Inject,\n ModuleWithProviders,\n NgModule,\n Optional,\n PLATFORM_ID,\n} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n SERVER_TOKEN,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n BreakPoint,\n BREAKPOINT,\n} from '@angular/flex-layout/core';\nimport {ExtendedModule} from '@angular/flex-layout/extended';\nimport {FlexModule} from '@angular/flex-layout/flex';\nimport {GridModule} from '@angular/flex-layout/grid';\n\n/**\n * FlexLayoutModule -- the main import for all utilities in the Angular Layout library\n * * Will automatically provide Flex, Grid, and Extended modules for use in the application\n * * Can be configured using the static withConfig method, options viewable on the Wiki's\n * Configuration page\n */\n@NgModule({\n imports: [FlexModule, ExtendedModule, GridModule],\n exports: [FlexModule, ExtendedModule, GridModule]\n})\nexport class FlexLayoutModule {\n\n /**\n * Initialize the FlexLayoutModule with a set of config options,\n * which sets the corresponding tokens accordingly\n */\n static withConfig(configOptions: LayoutConfigOptions,\n breakpoints: BreakPoint|BreakPoint[] = []): ModuleWithProviders {\n return {\n ngModule: FlexLayoutModule,\n providers: configOptions.serverLoaded ?\n [\n {provide: LAYOUT_CONFIG, useValue: configOptions},\n {provide: BREAKPOINT, useValue: breakpoints, multi: true},\n {provide: SERVER_TOKEN, useValue: true},\n ] : [\n {provide: LAYOUT_CONFIG, useValue: configOptions},\n {provide: BREAKPOINT, useValue: breakpoints, multi: true},\n ]\n };\n }\n\n constructor(@Optional() @Inject(SERVER_TOKEN) serverModuleLoaded: boolean,\n @Inject(PLATFORM_ID) platformId: Object) {\n if (isPlatformServer(platformId) && !serverModuleLoaded) {\n console.warn('Warning: Flex Layout loaded on the server without FlexLayoutServerModule');\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\nimport {Version} from '@angular/core';\n\n/** Current version of Angular Flex-Layout. */\nexport const VERSION = new Version('7.0.0-beta.22');\n"],"names":["Inject","PLATFORM_ID","Optional","SERVER_TOKEN","FlexModule","ExtendedModule","GridModule","NgModule","BREAKPOINT","LAYOUT_CONFIG","isPlatformServer","Version"],"mappings":";;;;;;;;;;;;;;;;;;;;ACWA,AAAA,IAAa,OAAO,GAAG,IAAIW,YAAO,CAAC,mBAAmB,CAAC,CAAvD;;;;;;;;;;;;;ID+CE,SAAF,gBAAA,CAAgD,kBAA2B,EACxC,UAAkB,EADrD;QAEI,IAAID,uBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE;YACvD,OAAO,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;SAC1F;KACF;;;;;;;;;;;;IArBM,gBAAT,CAAA,UAAmB;;;;;;;IAAjB,UAAkB,aAAkC,EAClC,WAAyC,EAD7D;QACoB,IAApB,WAAA,KAAA,KAAA,CAAA,EAAoB,EAAA,WAApB,GAAA,EAA6D,CAA7D,EAAA;QACI,OAAO;YACL,QAAQ,EAAE,gBAAgB;YAC1B,SAAS,EAAE,aAAa,CAAC,YAAY;gBACnC;oBACE,EAAC,OAAO,EAAED,oBAAa,EAAE,QAAQ,EAAE,aAAa,EAAC;oBACjD,EAAC,OAAO,EAAED,iBAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAC;oBACzD,EAAC,OAAO,EAAEL,mBAAY,EAAE,QAAQ,EAAE,IAAI,EAAC;iBACxC,GAAG;gBACF,EAAC,OAAO,EAAEM,oBAAa,EAAE,QAAQ,EAAE,aAAa,EAAC;gBACjD,EAAC,OAAO,EAAED,iBAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAC;aAC1D;SACJ,CAAC;KACH,CAAH;;QAxBA,EAAA,IAAA,EAACD,aAAQ,EAAT,IAAA,EAAA,CAAU;oBACR,OAAO,EAAE,CAACH,eAAU,EAAEC,uBAAc,EAAEC,eAAU,CAAC;oBACjD,OAAO,EAAE,CAACF,eAAU,EAAEC,uBAAc,EAAEC,eAAU,CAAC;iBAClD,EAAD,EAAA;;;;QAuBA,EAAA,IAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAeJ,aAAQ,EAAvB,EAAA,EAAA,IAAA,EAA2BF,WAAM,EAAjC,IAAA,EAAA,CAAkCG,mBAAY,EAA9C,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAA+C,MAAM,EAArD,UAAA,EAAA,CAAA,EAAA,IAAA,EAAeH,WAAM,EAArB,IAAA,EAAA,CAAsBC,gBAAW,EAAjC,EAAA,CAAA,EAAA;;IA3DA,OAAA,gBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"flex-layout.umd.js","sources":["../../src/lib/module.ts","../../src/lib/version.ts","../../src/lib/grid/module.ts","../../src/lib/grid/rows/rows.ts","../../src/lib/grid/row/row.ts","../../src/lib/grid/gap/gap.ts","../../src/lib/grid/columns/columns.ts","../../src/lib/grid/column/column.ts","../../src/lib/grid/auto/auto.ts","../../src/lib/grid/areas/areas.ts","../../src/lib/grid/area/area.ts","../../src/lib/grid/align-rows/align-rows.ts","../../src/lib/grid/align-columns/align-columns.ts","../../src/lib/grid/grid-align/grid-align.ts","../../src/lib/flex/module.ts","../../src/lib/flex/layout-align/layout-align.ts","../../src/lib/flex/flex-fill/flex-fill.ts","../../src/lib/flex/flex-align/flex-align.ts","../../src/lib/flex/flex-offset/flex-offset.ts","../../src/lib/flex/flex-order/flex-order.ts","../../src/lib/flex/flex/flex.ts","../../src/lib/utils/object-extend.ts","../../src/lib/flex/layout-gap/layout-gap.ts","../../src/lib/flex/layout/layout.ts","../../src/lib/utils/layout-validator.ts","../../src/lib/extended/module.ts","../../src/lib/extended/style/style.ts","../../src/lib/extended/style/style-transforms.ts","../../src/lib/extended/show-hide/show-hide.ts","../../src/lib/extended/class/class.ts","../../src/lib/extended/img-src/img-src.ts","../../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/core/breakpoints/data/orientation-break-points.ts","../../src/lib/core/breakpoints/data/break-points.ts","../../src/lib/core/base/base2.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 {\n Inject,\n ModuleWithProviders,\n NgModule,\n Optional,\n PLATFORM_ID,\n} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\n\nimport {\n SERVER_TOKEN,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n DEFAULT_CONFIG,\n BreakPoint,\n BREAKPOINT,\n} from '@angular/flex-layout/core';\nimport {ExtendedModule} from '@angular/flex-layout/extended';\nimport {FlexModule} from '@angular/flex-layout/flex';\nimport {GridModule} from '@angular/flex-layout/grid';\n\n/**\n * FlexLayoutModule -- the main import for all utilities in the Angular Layout library\n * * Will automatically provide Flex, Grid, and Extended modules for use in the application\n * * Can be configured using the static withConfig method, options viewable on the Wiki's\n * Configuration page\n */\n@NgModule({\n imports: [FlexModule, ExtendedModule, GridModule],\n exports: [FlexModule, ExtendedModule, GridModule]\n})\nexport class FlexLayoutModule {\n\n /**\n * Initialize the FlexLayoutModule with a set of config options,\n * which sets the corresponding tokens accordingly\n */\n static withConfig(configOptions: LayoutConfigOptions,\n breakpoints: BreakPoint|BreakPoint[] = []): ModuleWithProviders {\n return {\n ngModule: FlexLayoutModule,\n providers: configOptions.serverLoaded ?\n [\n {provide: LAYOUT_CONFIG, useValue: {...DEFAULT_CONFIG, ...configOptions}},\n {provide: BREAKPOINT, useValue: breakpoints, multi: true},\n {provide: SERVER_TOKEN, useValue: true},\n ] : [\n {provide: LAYOUT_CONFIG, useValue: {...DEFAULT_CONFIG, ...configOptions}},\n {provide: BREAKPOINT, useValue: breakpoints, multi: true},\n ]\n };\n }\n\n constructor(@Optional() @Inject(SERVER_TOKEN) serverModuleLoaded: boolean,\n @Inject(PLATFORM_ID) platformId: Object) {\n if (isPlatformServer(platformId) && !serverModuleLoaded) {\n console.warn('Warning: Flex Layout loaded on the server without FlexLayoutServerModule');\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\nimport {Version} from '@angular/core';\n\n/** Current version of Angular Flex-Layout. */\nexport const VERSION = new Version('8.0.0-beta.26');\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';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultGridAlignDirective} from './grid-align/grid-align';\nimport {DefaultGridAlignColumnsDirective} from './align-columns/align-columns';\nimport {DefaultGridAlignRowsDirective} from './align-rows/align-rows';\nimport {DefaultGridAreaDirective} from './area/area';\nimport {DefaultGridAreasDirective} from './areas/areas';\nimport {DefaultGridAutoDirective} from './auto/auto';\nimport {DefaultGridColumnDirective} from './column/column';\nimport {DefaultGridColumnsDirective} from './columns/columns';\nimport {DefaultGridGapDirective} from './gap/gap';\nimport {DefaultGridRowDirective} from './row/row';\nimport {DefaultGridRowsDirective} from './rows/rows';\n\n\nconst ALL_DIRECTIVES = [\n DefaultGridAlignDirective,\n DefaultGridAlignColumnsDirective,\n DefaultGridAlignRowsDirective,\n DefaultGridAreaDirective,\n DefaultGridAreasDirective,\n DefaultGridAutoDirective,\n DefaultGridColumnDirective,\n DefaultGridColumnsDirective,\n DefaultGridGapDirective,\n DefaultGridRowDirective,\n DefaultGridRowsDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the CSS Grid API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class GridModule {\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 {Directive, ElementRef, Input, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst AUTO_SPECIFIER = '!';\n\nexport interface GridRowsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridRowsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridRowsParent) {\n input = input || DEFAULT_VALUE;\n let auto = false;\n if (input.endsWith(AUTO_SPECIFIER)) {\n input = input.substring(0, input.indexOf(AUTO_SPECIFIER));\n auto = true;\n }\n\n const css = {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-rows': '',\n 'grid-template-rows': '',\n };\n const key = (auto ? 'grid-auto-rows' : 'grid-template-rows');\n css[key] = input;\n\n return css;\n }\n}\n\nexport class GridRowsDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-rows';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridRowsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? rowsInlineCache : rowsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst rowsCache: Map = new Map();\nconst rowsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdRows',\n 'gdRows.xs', 'gdRows.sm', 'gdRows.md', 'gdRows.lg', 'gdRows.xl',\n 'gdRows.lt-sm', 'gdRows.lt-md', 'gdRows.lt-lg', 'gdRows.lt-xl',\n 'gdRows.gt-xs', 'gdRows.gt-sm', 'gdRows.gt-md', 'gdRows.gt-lg'\n];\n\nconst selector = `\n [gdRows],\n [gdRows.xs], [gdRows.sm], [gdRows.md], [gdRows.lg], [gdRows.xl],\n [gdRows.lt-sm], [gdRows.lt-md], [gdRows.lt-lg], [gdRows.lt-xl],\n [gdRows.gt-xs], [gdRows.gt-sm], [gdRows.gt-md], [gdRows.gt-lg]\n`;\n\n/**\n * 'grid-template-rows' CSS Grid styling directive\n * Configures the sizing for the rows in the grid\n * Syntax: [auto]\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13\n */\n@Directive({selector, inputs})\nexport class DefaultGridRowsDirective extends GridRowsDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridRowStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-row': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridRowDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-row';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridRowStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = rowCache;\n}\n\nconst rowCache: Map = new Map();\n\nconst inputs = [\n 'gdRow',\n 'gdRow.xs', 'gdRow.sm', 'gdRow.md', 'gdRow.lg', 'gdRow.xl',\n 'gdRow.lt-sm', 'gdRow.lt-md', 'gdRow.lt-lg', 'gdRow.lt-xl',\n 'gdRow.gt-xs', 'gdRow.gt-sm', 'gdRow.gt-md', 'gdRow.gt-lg'\n];\n\nconst selector = `\n [gdRow],\n [gdRow.xs], [gdRow.sm], [gdRow.md], [gdRow.lg], [gdRow.xl],\n [gdRow.lt-sm], [gdRow.lt-md], [gdRow.lt-lg], [gdRow.lt-xl],\n [gdRow.gt-xs], [gdRow.gt-sm], [gdRow.gt-md], [gdRow.gt-lg]\n`;\n\n/**\n * 'grid-row' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26\n */\n@Directive({selector, inputs})\nexport class DefaultGridRowDirective extends GridRowDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = '0';\n\nexport interface GridGapParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridGapStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridGapParent) {\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-gap': input || DEFAULT_VALUE\n };\n }\n}\n\nexport class GridGapDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-gap';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridGapStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? gapInlineCache : gapCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst gapCache: Map = new Map();\nconst gapInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdGap',\n 'gdGap.xs', 'gdGap.sm', 'gdGap.md', 'gdGap.lg', 'gdGap.xl',\n 'gdGap.lt-sm', 'gdGap.lt-md', 'gdGap.lt-lg', 'gdGap.lt-xl',\n 'gdGap.gt-xs', 'gdGap.gt-sm', 'gdGap.gt-md', 'gdGap.gt-lg'\n];\n\nconst selector = `\n [gdGap],\n [gdGap.xs], [gdGap.sm], [gdGap.md], [gdGap.lg], [gdGap.xl],\n [gdGap.lt-sm], [gdGap.lt-md], [gdGap.lt-lg], [gdGap.lt-xl],\n [gdGap.gt-xs], [gdGap.gt-sm], [gdGap.gt-md], [gdGap.gt-lg]\n`;\n\n/**\n * 'grid-gap' CSS Grid styling directive\n * Configures the gap between items in the grid\n * Syntax: []\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-17\n */\n@Directive({selector, inputs})\nexport class DefaultGridGapDirective extends GridGapDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst AUTO_SPECIFIER = '!';\n\nexport interface GridColumnsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridColumnsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridColumnsParent) {\n input = input || DEFAULT_VALUE;\n let auto = false;\n if (input.endsWith(AUTO_SPECIFIER)) {\n input = input.substring(0, input.indexOf(AUTO_SPECIFIER));\n auto = true;\n }\n\n const css = {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-columns': '',\n 'grid-template-columns': '',\n };\n const key = (auto ? 'grid-auto-columns' : 'grid-template-columns');\n css[key] = input;\n\n return css;\n }\n}\n\nexport class GridColumnsDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-columns';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridColumnsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? columnsInlineCache : columnsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst columnsCache: Map = new Map();\nconst columnsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdColumns',\n 'gdColumns.xs', 'gdColumns.sm', 'gdColumns.md', 'gdColumns.lg', 'gdColumns.xl',\n 'gdColumns.lt-sm', 'gdColumns.lt-md', 'gdColumns.lt-lg', 'gdColumns.lt-xl',\n 'gdColumns.gt-xs', 'gdColumns.gt-sm', 'gdColumns.gt-md', 'gdColumns.gt-lg'\n];\n\nconst selector = `\n [gdColumns],\n [gdColumns.xs], [gdColumns.sm], [gdColumns.md], [gdColumns.lg], [gdColumns.xl],\n [gdColumns.lt-sm], [gdColumns.lt-md], [gdColumns.lt-lg], [gdColumns.lt-xl],\n [gdColumns.gt-xs], [gdColumns.gt-sm], [gdColumns.gt-md], [gdColumns.gt-lg]\n`;\n\n/**\n * 'grid-template-columns' CSS Grid styling directive\n * Configures the sizing for the columns in the grid\n * Syntax: [auto]\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13\n */\n@Directive({selector, inputs})\nexport class DefaultGridColumnsDirective extends GridColumnsDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridColumnStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-column': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridColumnDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-column';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridColumnStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = columnCache;\n}\n\nconst columnCache: Map = new Map();\n\nconst inputs = [\n 'gdColumn',\n 'gdColumn.xs', 'gdColumn.sm', 'gdColumn.md', 'gdColumn.lg', 'gdColumn.xl',\n 'gdColumn.lt-sm', 'gdColumn.lt-md', 'gdColumn.lt-lg', 'gdColumn.lt-xl',\n 'gdColumn.gt-xs', 'gdColumn.gt-sm', 'gdColumn.gt-md', 'gdColumn.gt-lg'\n];\n\nconst selector = `\n [gdColumn],\n [gdColumn.xs], [gdColumn.sm], [gdColumn.md], [gdColumn.lg], [gdColumn.xl],\n [gdColumn.lt-sm], [gdColumn.lt-md], [gdColumn.lt-lg], [gdColumn.lt-xl],\n [gdColumn.gt-xs], [gdColumn.gt-sm], [gdColumn.gt-md], [gdColumn.gt-lg]\n`;\n\n/**\n * 'grid-column' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26\n */\n@Directive({selector, inputs})\nexport class DefaultGridColumnDirective extends GridColumnDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n MediaMarshaller,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'initial';\n\nexport interface GridAutoParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAutoStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAutoParent) {\n let [direction, dense] = (input || DEFAULT_VALUE).split(' ');\n if (direction !== 'column' && direction !== 'row' && direction !== 'dense') {\n direction = 'row';\n }\n\n dense = (dense === 'dense' && direction !== 'dense') ? ' dense' : '';\n\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-flow': direction + dense\n };\n }\n}\n\nexport class GridAutoDirective extends BaseDirective2 {\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n protected DIRECTIVE_KEY = 'grid-auto';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAutoStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? autoInlineCache : autoCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst autoCache: Map = new Map();\nconst autoInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAuto',\n 'gdAuto.xs', 'gdAuto.sm', 'gdAuto.md', 'gdAuto.lg', 'gdAuto.xl',\n 'gdAuto.lt-sm', 'gdAuto.lt-md', 'gdAuto.lt-lg', 'gdAuto.lt-xl',\n 'gdAuto.gt-xs', 'gdAuto.gt-sm', 'gdAuto.gt-md', 'gdAuto.gt-lg'\n];\nconst selector = `\n [gdAuto],\n [gdAuto.xs], [gdAuto.sm], [gdAuto.md], [gdAuto.lg], [gdAuto.xl],\n [gdAuto.lt-sm], [gdAuto.lt-md], [gdAuto.lt-lg], [gdAuto.lt-xl],\n [gdAuto.gt-xs], [gdAuto.gt-sm], [gdAuto.gt-md], [gdAuto.gt-lg]\n`;\n\n/**\n * 'grid-auto-flow' CSS Grid styling directive\n * Configures the auto placement algorithm for the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-23\n */\n@Directive({selector, inputs})\nexport class DefaultGridAutoDirective extends GridAutoDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n MediaMarshaller,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst DELIMETER = '|';\n\nexport interface GridAreasParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAreasStyleBuiler extends StyleBuilder {\n buildStyles(input: string, parent: GridAreasParent) {\n const areas = (input || DEFAULT_VALUE).split(DELIMETER).map(v => `\"${v.trim()}\"`);\n\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-template-areas': areas.join(' ')\n };\n }\n}\n\nexport class GridAreasDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-areas';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAreasStyleBuiler,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? areasInlineCache : areasCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst areasCache: Map = new Map();\nconst areasInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAreas',\n 'gdAreas.xs', 'gdAreas.sm', 'gdAreas.md', 'gdAreas.lg', 'gdAreas.xl',\n 'gdAreas.lt-sm', 'gdAreas.lt-md', 'gdAreas.lt-lg', 'gdAreas.lt-xl',\n 'gdAreas.gt-xs', 'gdAreas.gt-sm', 'gdAreas.gt-md', 'gdAreas.gt-lg'\n];\n\nconst selector = `\n [gdAreas],\n [gdAreas.xs], [gdAreas.sm], [gdAreas.md], [gdAreas.lg], [gdAreas.xl],\n [gdAreas.lt-sm], [gdAreas.lt-md], [gdAreas.lt-lg], [gdAreas.lt-xl],\n [gdAreas.gt-xs], [gdAreas.gt-sm], [gdAreas.gt-md], [gdAreas.gt-lg]\n`;\n\n/**\n * 'grid-template-areas' CSS Grid styling directive\n * Configures the names of elements within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-14\n */\n@Directive({selector, inputs})\nexport class DefaultGridAreasDirective extends GridAreasDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridAreaStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-area': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridAreaDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-area';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAreaStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = gridAreaCache;\n}\n\nconst gridAreaCache: Map = new Map();\n\nconst inputs = [\n 'gdArea',\n 'gdArea.xs', 'gdArea.sm', 'gdArea.md', 'gdArea.lg', 'gdArea.xl',\n 'gdArea.lt-sm', 'gdArea.lt-md', 'gdArea.lt-lg', 'gdArea.lt-xl',\n 'gdArea.gt-xs', 'gdArea.gt-sm', 'gdArea.gt-md', 'gdArea.gt-lg'\n];\nconst selector = `\n [gdArea],\n [gdArea.xs], [gdArea.sm], [gdArea.md], [gdArea.lg], [gdArea.xl],\n [gdArea.lt-sm], [gdArea.lt-md], [gdArea.lt-lg], [gdArea.lt-xl],\n [gdArea.gt-xs], [gdArea.gt-sm], [gdArea.gt-md], [gdArea.gt-lg]\n`;\n\n/**\n * 'grid-area' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-27\n */\n@Directive({selector, inputs})\nexport class DefaultGridAreaDirective extends GridAreaDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_MAIN = 'start';\nconst DEFAULT_CROSS = 'stretch';\n\nexport interface GridAlignRowsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignRowsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAlignRowsParent) {\n return buildCss(input || `${DEFAULT_MAIN} ${DEFAULT_CROSS}`, parent.inline);\n }\n}\n\nexport class GridAlignRowsDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align-rows';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignRowsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? alignRowsInlineCache : alignRowsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst alignRowsCache: Map = new Map();\nconst alignRowsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAlignRows',\n 'gdAlignRows.xs', 'gdAlignRows.sm', 'gdAlignRows.md',\n 'gdAlignRows.lg', 'gdAlignRows.xl', 'gdAlignRows.lt-sm',\n 'gdAlignRows.lt-md', 'gdAlignRows.lt-lg', 'gdAlignRows.lt-xl',\n 'gdAlignRows.gt-xs', 'gdAlignRows.gt-sm', 'gdAlignRows.gt-md',\n 'gdAlignRows.gt-lg'\n];\nconst selector = `\n [gdAlignRows],\n [gdAlignRows.xs], [gdAlignRows.sm], [gdAlignRows.md],\n [gdAlignRows.lg], [gdAlignRows.xl], [gdAlignRows.lt-sm],\n [gdAlignRows.lt-md], [gdAlignRows.lt-lg], [gdAlignRows.lt-xl],\n [gdAlignRows.gt-xs], [gdAlignRows.gt-sm], [gdAlignRows.gt-md],\n [gdAlignRows.gt-lg]\n`;\n\n/**\n * 'row alignment' CSS Grid styling directive\n * Configures the alignment in the row direction\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-18\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-20\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignRowsDirective extends GridAlignRowsDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string, inline: boolean): StyleDefinition {\n const css: {[key: string]: string} = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n case 'space-around':\n case 'space-between':\n case 'space-evenly':\n case 'end':\n case 'start':\n case 'stretch':\n css['justify-content'] = mainAxis;\n break;\n default:\n css['justify-content'] = DEFAULT_MAIN; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'center':\n case 'end':\n case 'stretch':\n css['justify-items'] = crossAxis;\n break;\n default : // 'stretch'\n css['justify-items'] = DEFAULT_CROSS; // default cross axis\n break;\n }\n\n css['display'] = inline ? 'inline-grid' : 'grid';\n\n return css;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_MAIN = 'start';\nconst DEFAULT_CROSS = 'stretch';\n\nexport interface GridAlignColumnsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignColumnsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAlignColumnsParent) {\n return buildCss(input || `${DEFAULT_MAIN} ${DEFAULT_CROSS}`, parent.inline);\n }\n}\n\nexport class GridAlignColumnsDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align-columns';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignColumnsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? alignColumnsInlineCache : alignColumnsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst alignColumnsCache: Map = new Map();\nconst alignColumnsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAlignColumns',\n 'gdAlignColumns.xs', 'gdAlignColumns.sm', 'gdAlignColumns.md',\n 'gdAlignColumns.lg', 'gdAlignColumns.xl', 'gdAlignColumns.lt-sm',\n 'gdAlignColumns.lt-md', 'gdAlignColumns.lt-lg', 'gdAlignColumns.lt-xl',\n 'gdAlignColumns.gt-xs', 'gdAlignColumns.gt-sm', 'gdAlignColumns.gt-md',\n 'gdAlignColumns.gt-lg'\n];\nconst selector = `\n [gdAlignColumns],\n [gdAlignColumns.xs], [gdAlignColumns.sm], [gdAlignColumns.md],\n [gdAlignColumns.lg], [gdAlignColumns.xl], [gdAlignColumns.lt-sm],\n [gdAlignColumns.lt-md], [gdAlignColumns.lt-lg], [gdAlignColumns.lt-xl],\n [gdAlignColumns.gt-xs], [gdAlignColumns.gt-sm], [gdAlignColumns.gt-md],\n [gdAlignColumns.gt-lg]\n`;\n\n/**\n * 'column alignment' CSS Grid styling directive\n * Configures the alignment in the column direction\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-19\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-21\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignColumnsDirective extends GridAlignColumnsDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string, inline: boolean): StyleDefinition {\n const css: {[key: string]: string} = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['align-content'] = 'center';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['align-content'] = 'space-evenly';\n break;\n case 'end':\n css['align-content'] = 'end';\n break;\n case 'start':\n css['align-content'] = 'start';\n break;\n case 'stretch':\n css['align-content'] = 'stretch';\n break;\n default:\n css['align-content'] = DEFAULT_MAIN; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n css['align-items'] = 'start';\n break;\n case 'center':\n css['align-items'] = 'center';\n break;\n case 'end':\n css['align-items'] = 'end';\n break;\n case 'stretch':\n css['align-items'] = 'stretch';\n break;\n default : // 'stretch'\n css['align-items'] = DEFAULT_CROSS; // default cross axis\n break;\n }\n\n css['display'] = inline ? 'inline-grid' : 'grid';\n\n return css;\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\nconst ROW_DEFAULT = 'stretch';\nconst COL_DEFAULT = 'stretch';\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return buildCss(input || ROW_DEFAULT);\n }\n}\n\nexport class GridAlignDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = alignCache;\n}\n\nconst alignCache: Map = new Map();\n\nconst inputs = [\n 'gdGridAlign',\n 'gdGridAlign.xs', 'gdGridAlign.sm', 'gdGridAlign.md', 'gdGridAlign.lg', 'gdGridAlign.xl',\n 'gdGridAlign.lt-sm', 'gdGridAlign.lt-md', 'gdGridAlign.lt-lg', 'gdGridAlign.lt-xl',\n 'gdGridAlign.gt-xs', 'gdGridAlign.gt-sm', 'gdGridAlign.gt-md', 'gdGridAlign.gt-lg'\n];\n\nconst selector = `\n [gdGridAlign],\n [gdGridAlign.xs], [gdGridAlign.sm], [gdGridAlign.md], [gdGridAlign.lg],[gdGridAlign.xl],\n [gdGridAlign.lt-sm], [gdGridAlign.lt-md], [gdGridAlign.lt-lg], [gdGridAlign.lt-xl],\n [gdGridAlign.gt-xs], [gdGridAlign.gt-sm], [gdGridAlign.gt-md], [gdGridAlign.gt-lg]\n`;\n\n/**\n * 'align' CSS Grid styling directive for grid children\n * Defines positioning of child elements along row and column axis in a grid container\n * Optional values: {row-axis} values or {row-axis column-axis} value pairs\n *\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-justify-self\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-align-self\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignDirective extends GridAlignDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string = '') {\n const css: {[key: string]: string} = {}, [rowAxis, columnAxis] = align.split(' ');\n\n // Row axis\n switch (rowAxis) {\n case 'end':\n css['justify-self'] = 'end';\n break;\n case 'center':\n css['justify-self'] = 'center';\n break;\n case 'stretch':\n css['justify-self'] = 'stretch';\n break;\n case 'start':\n css['justify-self'] = 'start';\n break;\n default:\n css['justify-self'] = ROW_DEFAULT; // default row axis\n break;\n }\n\n // Column axis\n switch (columnAxis) {\n case 'end':\n css['align-self'] = 'end';\n break;\n case 'center':\n css['align-self'] = 'center';\n break;\n case 'stretch':\n css['align-self'] = 'stretch';\n break;\n case 'start':\n css['align-self'] = 'start';\n break;\n default:\n css['align-self'] = COL_DEFAULT; // default column axis\n break;\n }\n\n return css;\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';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultLayoutDirective} from './layout/layout';\nimport {DefaultLayoutGapDirective} from './layout-gap/layout-gap';\nimport {DefaultFlexDirective} from './flex/flex';\nimport {DefaultFlexOrderDirective} from './flex-order/flex-order';\nimport {DefaultFlexOffsetDirective} from './flex-offset/flex-offset';\nimport {DefaultFlexAlignDirective} from './flex-align/flex-align';\nimport {FlexFillDirective} from './flex-fill/flex-fill';\nimport {DefaultLayoutAlignDirective} from './layout-align/layout-align';\n\n\nconst ALL_DIRECTIVES = [\n DefaultLayoutDirective,\n DefaultLayoutGapDirective,\n DefaultLayoutAlignDirective,\n DefaultFlexOrderDirective,\n DefaultFlexOffsetDirective,\n FlexFillDirective,\n DefaultFlexAlignDirective,\n DefaultFlexDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the Flex API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule, BidiModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class FlexModule {\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {extendObject} from '../../utils/object-extend';\nimport {LAYOUT_VALUES, isFlowHorizontal} from '../../utils/layout-validator';\n\nexport interface LayoutAlignParent {\n layout: string;\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class LayoutAlignStyleBuilder extends StyleBuilder {\n buildStyles(align: string, parent: LayoutAlignParent) {\n const css: StyleDefinition = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['justify-content'] = 'center';\n break;\n case 'space-around':\n css['justify-content'] = 'space-around';\n break;\n case 'space-between':\n css['justify-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['justify-content'] = 'space-evenly';\n break;\n case 'end':\n case 'flex-end':\n css['justify-content'] = 'flex-end';\n break;\n case 'start':\n case 'flex-start':\n default :\n css['justify-content'] = 'flex-start'; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'flex-start':\n css['align-items'] = css['align-content'] = 'flex-start';\n break;\n case 'center':\n css['align-items'] = css['align-content'] = 'center';\n break;\n case 'end':\n case 'flex-end':\n css['align-items'] = css['align-content'] = 'flex-end';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n css['align-items'] = 'stretch';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n css['align-items'] = 'stretch';\n break;\n case 'baseline':\n css['align-content'] = 'stretch';\n css['align-items'] = 'baseline';\n break;\n case 'stretch':\n default : // 'stretch'\n css['align-items'] = css['align-content'] = 'stretch'; // default cross axis\n break;\n }\n\n return extendObject(css, {\n 'display' : parent.inline ? 'inline-flex' : 'flex',\n 'flex-direction' : parent.layout,\n 'box-sizing' : 'border-box',\n 'max-width': crossAxis === 'stretch' ?\n !isFlowHorizontal(parent.layout) ? '100%' : null : null,\n 'max-height': crossAxis === 'stretch' ?\n isFlowHorizontal(parent.layout) ? '100%' : null : null,\n }) as StyleDefinition;\n }\n}\n\nconst inputs = [\n 'fxLayoutAlign', 'fxLayoutAlign.xs', 'fxLayoutAlign.sm', 'fxLayoutAlign.md',\n 'fxLayoutAlign.lg', 'fxLayoutAlign.xl', 'fxLayoutAlign.lt-sm', 'fxLayoutAlign.lt-md',\n 'fxLayoutAlign.lt-lg', 'fxLayoutAlign.lt-xl', 'fxLayoutAlign.gt-xs', 'fxLayoutAlign.gt-sm',\n 'fxLayoutAlign.gt-md', 'fxLayoutAlign.gt-lg'\n];\nconst selector = `\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n`;\n\n/**\n * 'layout-align' flexbox styling directive\n * Defines positioning of child elements along main and cross axis in a layout container\n * Optional values: {main-axis} values or {main-axis cross-axis} value pairs\n *\n * @see https://css-tricks.com/almanac/properties/j/justify-content/\n * @see https://css-tricks.com/almanac/properties/a/align-items/\n * @see https://css-tricks.com/almanac/properties/a/align-content/\n */\nexport class LayoutAlignDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'layout-align';\n protected layout = 'row'; // default flex-direction\n protected inline = false; // default inline value\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutAlignStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n this.marshal.trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n *\n */\n protected updateWithValue(value: string) {\n const layout = this.layout || 'row';\n const inline = this.inline;\n if (layout === 'row' && inline) {\n this.styleCache = layoutAlignHorizontalInlineCache;\n } else if (layout === 'row' && !inline) {\n this.styleCache = layoutAlignHorizontalCache;\n } else if (layout === 'row-reverse' && inline) {\n this.styleCache = layoutAlignHorizontalRevInlineCache;\n } else if (layout === 'row-reverse' && !inline) {\n this.styleCache = layoutAlignHorizontalRevCache;\n } else if (layout === 'column' && inline) {\n this.styleCache = layoutAlignVerticalInlineCache;\n } else if (layout === 'column' && !inline) {\n this.styleCache = layoutAlignVerticalCache;\n } else if (layout === 'column-reverse' && inline) {\n this.styleCache = layoutAlignVerticalRevInlineCache;\n } else if (layout === 'column-reverse' && !inline) {\n this.styleCache = layoutAlignVerticalRevCache;\n }\n this.addStyles(value, {layout, inline});\n }\n\n /**\n * Cache the parent container 'flex-direction' and update the 'flex' styles\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layoutKeys: string[] = matcher.value.split(' ');\n this.layout = layoutKeys[0];\n this.inline = matcher.value.includes('inline');\n if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutAlignDirective extends LayoutAlignDirective {\n protected inputs = inputs;\n}\n\nconst layoutAlignHorizontalCache: Map = new Map();\nconst layoutAlignVerticalCache: Map = new Map();\nconst layoutAlignHorizontalRevCache: Map = new Map();\nconst layoutAlignVerticalRevCache: Map = new Map();\nconst layoutAlignHorizontalInlineCache: Map = new Map();\nconst layoutAlignVerticalInlineCache: Map = new Map();\nconst layoutAlignHorizontalRevInlineCache: Map = new Map();\nconst layoutAlignVerticalRevInlineCache: Map = new Map();\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 {Directive, ElementRef, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\nconst FLEX_FILL_CSS = {\n 'margin': 0,\n 'width': '100%',\n 'height': '100%',\n 'min-width': '100%',\n 'min-height': '100%'\n};\n\n@Injectable({providedIn: 'root'})\nexport class FlexFillStyleBuilder extends StyleBuilder {\n buildStyles(_input: string) {\n return FLEX_FILL_CSS;\n }\n}\n\n/**\n * 'fxFill' flexbox styling directive\n * Maximizes width and height of element in a layout container\n *\n * NOTE: fxFill is NOT responsive API!!\n */\n@Directive({selector: `[fxFill], [fxFlexFill]`})\nexport class FlexFillDirective extends BaseDirective2 {\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n protected styleBuilder: FlexFillStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.addStyles('');\n }\n\n protected styleCache = flexFillCache;\n}\n\nconst flexFillCache: Map = new Map();\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class FlexAlignStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n input = input || 'stretch';\n const styles: StyleDefinition = {};\n\n // Cross-axis\n switch (input) {\n case 'start':\n styles['align-self'] = 'flex-start';\n break;\n case 'end':\n styles['align-self'] = 'flex-end';\n break;\n default:\n styles['align-self'] = input;\n break;\n }\n\n return styles;\n }\n}\n\nconst inputs = [\n 'fxFlexAlign', 'fxFlexAlign.xs', 'fxFlexAlign.sm', 'fxFlexAlign.md',\n 'fxFlexAlign.lg', 'fxFlexAlign.xl', 'fxFlexAlign.lt-sm', 'fxFlexAlign.lt-md',\n 'fxFlexAlign.lt-lg', 'fxFlexAlign.lt-xl', 'fxFlexAlign.gt-xs', 'fxFlexAlign.gt-sm',\n 'fxFlexAlign.gt-md', 'fxFlexAlign.gt-lg'\n];\nconst selector = `\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n`;\n\n/**\n * 'flex-align' flexbox styling directive\n * Allows element-specific overrides for cross-axis alignments in a layout container\n * @see https://css-tricks.com/almanac/properties/a/align-self/\n */\nexport class FlexAlignDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'flex-align';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexAlignStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = flexAlignCache;\n}\n\nconst flexAlignCache: Map = new Map();\n\n@Directive({selector, inputs})\nexport class DefaultFlexAlignDirective extends FlexAlignDirective {\n protected inputs = inputs;\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 {\n Directive,\n ElementRef,\n OnChanges,\n Optional,\n Injectable,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {isFlowHorizontal} from '../../utils/layout-validator';\n\nexport interface FlexOffsetParent {\n layout: string;\n isRtl: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FlexOffsetStyleBuilder extends StyleBuilder {\n buildStyles(offset: string, parent: FlexOffsetParent) {\n if (offset === '') {\n offset = '0';\n }\n const isPercent = String(offset).indexOf('%') > -1;\n const isPx = String(offset).indexOf('px') > -1;\n if (!isPx && !isPercent && !isNaN(+offset)) {\n offset = offset + '%';\n }\n const horizontalLayoutKey = parent.isRtl ? 'margin-right' : 'margin-left';\n const styles: StyleDefinition = isFlowHorizontal(parent.layout) ?\n {[horizontalLayoutKey]: `${offset}`} : {'margin-top': `${offset}`};\n\n return styles;\n }\n}\n\nconst inputs = [\n 'fxFlexOffset', 'fxFlexOffset.xs', 'fxFlexOffset.sm', 'fxFlexOffset.md',\n 'fxFlexOffset.lg', 'fxFlexOffset.xl', 'fxFlexOffset.lt-sm', 'fxFlexOffset.lt-md',\n 'fxFlexOffset.lt-lg', 'fxFlexOffset.lt-xl', 'fxFlexOffset.gt-xs', 'fxFlexOffset.gt-sm',\n 'fxFlexOffset.gt-md', 'fxFlexOffset.gt-lg'\n];\nconst selector = `\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n`;\n\n/**\n * 'flex-offset' flexbox styling directive\n * Configures the 'margin-left' of the element in a layout container\n */\nexport class FlexOffsetDirective extends BaseDirective2 implements OnChanges {\n protected DIRECTIVE_KEY = 'flex-offset';\n\n constructor(protected elRef: ElementRef,\n protected directionality: Directionality,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexOffsetStyleBuilder,\n protected marshal: MediaMarshaller,\n protected styler: StyleUtils) {\n super(elRef, styleBuilder, styler, marshal);\n this.init([this.directionality.change]);\n // Parent DOM `layout-gap` with affect the nested child with `flex-offset`\n if (this.parentElement) {\n this.marshal\n .trackValue(this.parentElement, 'layout-gap')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerUpdate.bind(this));\n }\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Using the current fxFlexOffset value, update the inline CSS\n * NOTE: this will assign `margin-left` if the parent flex-direction == 'row',\n * otherwise `margin-top` is used for the offset.\n */\n protected updateWithValue(value: string|number = ''): void {\n // The flex-direction of this element's flex container. Defaults to 'row'.\n const layout = this.getFlexFlowDirection(this.parentElement!, true);\n const isRtl = this.directionality.value === 'rtl';\n if (layout === 'row' && isRtl) {\n this.styleCache = flexOffsetCacheRowRtl;\n } else if (layout === 'row' && !isRtl) {\n this.styleCache = flexOffsetCacheRowLtr;\n } else if (layout === 'column' && isRtl) {\n this.styleCache = flexOffsetCacheColumnRtl;\n } else if (layout === 'column' && !isRtl) {\n this.styleCache = flexOffsetCacheColumnLtr;\n }\n this.addStyles(value + '', {layout, isRtl});\n }\n}\n\n@Directive({selector, inputs})\nexport class DefaultFlexOffsetDirective extends FlexOffsetDirective {\n protected inputs = inputs;\n}\n\nconst flexOffsetCacheRowRtl: Map = new Map();\nconst flexOffsetCacheColumnRtl: Map = new Map();\nconst flexOffsetCacheRowLtr: Map = new Map();\nconst flexOffsetCacheColumnLtr: Map = new Map();\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 {Directive, ElementRef, OnChanges, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class FlexOrderStyleBuilder extends StyleBuilder {\n buildStyles(value: string) {\n return {order: (value && parseInt(value, 10)) || ''};\n }\n}\n\nconst inputs = [\n 'fxFlexOrder', 'fxFlexOrder.xs', 'fxFlexOrder.sm', 'fxFlexOrder.md',\n 'fxFlexOrder.lg', 'fxFlexOrder.xl', 'fxFlexOrder.lt-sm', 'fxFlexOrder.lt-md',\n 'fxFlexOrder.lt-lg', 'fxFlexOrder.lt-xl', 'fxFlexOrder.gt-xs', 'fxFlexOrder.gt-sm',\n 'fxFlexOrder.gt-md', 'fxFlexOrder.gt-lg'\n];\nconst selector = `\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n`;\n\n/**\n * 'flex-order' flexbox styling directive\n * Configures the positional ordering of the element in a sorted layout container\n * @see https://css-tricks.com/almanac/properties/o/order/\n */\nexport class FlexOrderDirective extends BaseDirective2 implements OnChanges {\n\n protected DIRECTIVE_KEY = 'flex-order';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexOrderStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = flexOrderCache;\n}\n\nconst flexOrderCache: Map = new Map();\n\n@Directive({selector, inputs})\nexport class DefaultFlexOrderDirective extends FlexOrderDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Inject, Injectable, Input} from '@angular/core';\nimport {\n BaseDirective2,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n StyleUtils,\n validateBasis,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {extendObject} from '../../utils/object-extend';\nimport {isFlowHorizontal} from '../../utils/layout-validator';\n\ninterface FlexBuilderParent {\n direction: string;\n hasWrap: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FlexStyleBuilder extends StyleBuilder {\n constructor(@Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions) {\n super();\n }\n buildStyles(input: string, parent: FlexBuilderParent) {\n let [grow, shrink, ...basisParts]: (string|number)[] = input.split(' ');\n let basis = basisParts.join(' ');\n\n // The flex-direction of this element's flex container. Defaults to 'row'.\n const direction = (parent.direction.indexOf('column') > -1) ? 'column' : 'row';\n\n const max = isFlowHorizontal(direction) ? 'max-width' : 'max-height';\n const min = isFlowHorizontal(direction) ? 'min-width' : 'min-height';\n\n const hasCalc = String(basis).indexOf('calc') > -1;\n const usingCalc = hasCalc || (basis === 'auto');\n const isPercent = String(basis).indexOf('%') > -1 && !hasCalc;\n const hasUnits = String(basis).indexOf('px') > -1 || String(basis).indexOf('rem') > -1 ||\n String(basis).indexOf('em') > -1 || String(basis).indexOf('vw') > -1 ||\n String(basis).indexOf('vh') > -1;\n\n let isValue = (hasCalc || hasUnits);\n\n grow = (grow == '0') ? 0 : grow;\n shrink = (shrink == '0') ? 0 : shrink;\n\n // make box inflexible when shrink and grow are both zero\n // should not set a min when the grow is zero\n // should not set a max when the shrink is zero\n const isFixed = !grow && !shrink;\n\n let css: {[key: string]: string | number | null} = {};\n\n // flex-basis allows you to specify the initial/starting main-axis size of the element,\n // before anything else is computed. It can either be a percentage or an absolute value.\n // It is, however, not the breaking point for flex-grow/shrink properties\n //\n // flex-grow can be seen as this:\n // 0: Do not stretch. Either size to element's content width, or obey 'flex-basis'.\n // 1: (Default value). Stretch; will be the same size to all other flex items on\n // the same row since they have a default value of 1.\n // ≥2 (integer n): Stretch. Will be n times the size of other elements\n // with 'flex-grow: 1' on the same row.\n\n // Use `null` to clear existing styles.\n const clearStyles = {\n 'max-width': null,\n 'max-height': null,\n 'min-width': null,\n 'min-height': null\n };\n switch (basis || '') {\n case '':\n const useColumnBasisZero = this.layoutConfig.useColumnBasisZero !== false;\n basis = direction === 'row' ? '0%' : (useColumnBasisZero ? '0.000000001px' : 'auto');\n break;\n case 'initial': // default\n case 'nogrow':\n grow = 0;\n basis = 'auto';\n break;\n case 'grow':\n basis = '100%';\n break;\n case 'noshrink':\n shrink = 0;\n basis = 'auto';\n break;\n case 'auto':\n break;\n case 'none':\n grow = 0;\n shrink = 0;\n basis = 'auto';\n break;\n default:\n // Defaults to percentage sizing unless `px` is explicitly set\n if (!isValue && !isPercent && !isNaN(basis as any)) {\n basis = basis + '%';\n }\n\n // Fix for issue 280\n if (basis === '0%') {\n isValue = true;\n }\n\n if (basis === '0px') {\n basis = '0%';\n }\n\n // fix issue #5345\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': isValue ? basis : '100%'\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${isValue ? basis : '100%'}`\n });\n }\n\n break;\n }\n\n if (!(css['flex'] || css['flex-grow'])) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n }\n\n // Fix for issues 277, 534, and 728\n if (basis !== '0%' && basis !== '0px' && basis !== '0.000000001px' && basis !== 'auto') {\n css[min] = isFixed || (isValue && grow) ? basis : null;\n css[max] = isFixed || (!usingCalc && shrink) ? basis : null;\n }\n\n // Fix for issue 528\n if (!css[min] && !css[max]) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n } else {\n // Fix for issue 660\n if (parent.hasWrap) {\n css[hasCalc ? 'flex-basis' : 'flex'] = css[max] ?\n (hasCalc ? css[max] : `${grow} ${shrink} ${css[max]}`) :\n (hasCalc ? css[min] : `${grow} ${shrink} ${css[min]}`);\n }\n }\n\n return extendObject(css, {'box-sizing': 'border-box'}) as StyleDefinition;\n }\n}\n\nconst inputs = [\n 'fxFlex', 'fxFlex.xs', 'fxFlex.sm', 'fxFlex.md',\n 'fxFlex.lg', 'fxFlex.xl', 'fxFlex.lt-sm', 'fxFlex.lt-md',\n 'fxFlex.lt-lg', 'fxFlex.lt-xl', 'fxFlex.gt-xs', 'fxFlex.gt-sm',\n 'fxFlex.gt-md', 'fxFlex.gt-lg'\n];\nconst selector = `\n [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n [fxFlex.gt-md], [fxFlex.gt-lg]\n`;\n\n/**\n * Directive to control the size of a flex item using flex-basis, flex-grow, and flex-shrink.\n * Corresponds to the css `flex` shorthand property.\n *\n * @see https://css-tricks.com/snippets/css/a-guide-to-flexbox/\n */\nexport class FlexDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'flex';\n protected direction = '';\n protected wrap = false;\n\n\n @Input('fxShrink')\n get shrink(): string { return this.flexShrink; }\n set shrink(value: string) {\n this.flexShrink = value || '1';\n this.triggerReflow();\n }\n\n @Input('fxGrow')\n get grow(): string { return this.flexGrow; }\n set grow(value: string) {\n this.flexGrow = value || '1';\n this.triggerReflow();\n }\n\n protected flexGrow = '1';\n protected flexShrink = '1';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n protected styleBuilder: FlexStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n if (this.parentElement) {\n this.marshal.trackValue(this.parentElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n this.marshal.trackValue(this.nativeElement, 'layout-align')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerReflow.bind(this));\n }\n }\n\n /**\n * Caches the parent container's 'flex-direction' and updates the element's style.\n * Used as a handler for layout change events from the parent flex container.\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n const layoutParts = layout.split(' ');\n this.direction = layoutParts[0];\n this.wrap = layoutParts[1] !== undefined && layoutParts[1] === 'wrap';\n this.triggerUpdate();\n }\n\n /** Input to this is exclusively the basis input value */\n protected updateWithValue(value: string) {\n const addFlexToParent = this.layoutConfig.addFlexToParent !== false;\n if (!this.direction) {\n this.direction = this.getFlexFlowDirection(this.parentElement!, addFlexToParent);\n }\n const direction = this.direction;\n const isHorizontal = direction.startsWith('row');\n const hasWrap = this.wrap;\n if (isHorizontal && hasWrap) {\n this.styleCache = flexRowWrapCache;\n } else if (isHorizontal && !hasWrap) {\n this.styleCache = flexRowCache;\n } else if (!isHorizontal && hasWrap) {\n this.styleCache = flexColumnWrapCache;\n } else if (!isHorizontal && !hasWrap) {\n this.styleCache = flexColumnCache;\n }\n const basis = String(value).replace(';', '');\n const parts = validateBasis(basis, this.flexGrow, this.flexShrink);\n this.addStyles(parts.join(' '), {direction, hasWrap});\n }\n\n /** Trigger a style reflow, usually based on a shrink/grow input event */\n protected triggerReflow() {\n const activatedValue = this.activatedValue;\n if (activatedValue !== undefined) {\n const parts = validateBasis(activatedValue, this.flexGrow, this.flexShrink);\n this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, parts.join(' '));\n }\n }\n}\n\n@Directive({inputs, selector})\nexport class DefaultFlexDirective extends FlexDirective {\n protected inputs = inputs;\n}\n\nconst flexRowCache: Map = new Map();\nconst flexColumnCache: Map = new Map();\nconst flexRowWrapCache: Map = new Map();\nconst flexColumnWrapCache: Map = new Map();\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 */\nimport {\n Directive,\n ElementRef,\n Optional,\n OnDestroy,\n NgZone,\n Injectable,\n AfterContentInit,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {LAYOUT_VALUES} from '../../utils/layout-validator';\n\nexport interface LayoutGapParent {\n directionality: string;\n items: HTMLElement[];\n layout: string;\n}\n\nconst CLEAR_MARGIN_CSS = {\n 'margin-left': null,\n 'margin-right': null,\n 'margin-top': null,\n 'margin-bottom': null\n};\n\n@Injectable({providedIn: 'root'})\nexport class LayoutGapStyleBuilder extends StyleBuilder {\n constructor(private _styler: StyleUtils) {\n super();\n }\n\n buildStyles(gapValue: string, parent: LayoutGapParent) {\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n\n // Add the margin to the host element\n return buildGridMargin(gapValue, parent.directionality);\n } else {\n return {};\n }\n }\n\n sideEffect(gapValue: string, _styles: StyleDefinition, parent: LayoutGapParent) {\n const items = parent.items;\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n // For each `element` children, set the padding\n const paddingStyles = buildGridPadding(gapValue, parent.directionality);\n this._styler.applyStyleToElements(paddingStyles, parent.items);\n } else {\n const lastItem = items.pop()!;\n\n // For each `element` children EXCEPT the last,\n // set the margin right/bottom styles...\n const gapCss = buildGapCSS(gapValue, parent);\n this._styler.applyStyleToElements(gapCss, items);\n\n // Clear all gaps for all visible elements\n this._styler.applyStyleToElements(CLEAR_MARGIN_CSS, [lastItem]);\n }\n }\n}\n\nconst inputs = [\n 'fxLayoutGap', 'fxLayoutGap.xs', 'fxLayoutGap.sm', 'fxLayoutGap.md',\n 'fxLayoutGap.lg', 'fxLayoutGap.xl', 'fxLayoutGap.lt-sm', 'fxLayoutGap.lt-md',\n 'fxLayoutGap.lt-lg', 'fxLayoutGap.lt-xl', 'fxLayoutGap.gt-xs', 'fxLayoutGap.gt-sm',\n 'fxLayoutGap.gt-md', 'fxLayoutGap.gt-lg'\n];\nconst selector = `\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n`;\n\n/**\n * 'layout-padding' styling directive\n * Defines padding of child elements in a layout container\n */\nexport class LayoutGapDirective extends BaseDirective2 implements AfterContentInit, OnDestroy {\n protected layout = 'row'; // default flex-direction\n protected DIRECTIVE_KEY = 'layout-gap';\n protected observerSubject = new Subject();\n\n /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */\n protected get childrenNodes(): HTMLElement[] {\n const obj = this.nativeElement.children;\n const buffer: any[] = [];\n\n // iterate backwards ensuring that length is an UInt32\n for (let i = obj.length; i--;) {\n buffer[i] = obj[i];\n }\n return buffer;\n }\n\n constructor(protected elRef: ElementRef,\n protected zone: NgZone,\n protected directionality: Directionality,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutGapStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n const extraTriggers = [this.directionality.change, this.observerSubject.asObservable()];\n this.init(extraTriggers);\n this.marshal\n .trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n ngAfterContentInit() {\n this.buildChildObservable();\n this.triggerUpdate();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Cache the parent container 'flex-direction' and update the 'margin' styles\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n // Make sure to filter out 'wrap' option\n const direction = layout.split(' ');\n this.layout = direction[0];\n if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n\n /**\n *\n */\n protected updateWithValue(value: string) {\n // Gather all non-hidden Element nodes\n const items = this.childrenNodes\n .filter(el => el.nodeType === 1 && this.willDisplay(el))\n .sort((a, b) => {\n const orderA = +this.styler.lookupStyle(a, 'order');\n const orderB = +this.styler.lookupStyle(b, 'order');\n if (isNaN(orderA) || isNaN(orderB) || orderA === orderB) {\n return 0;\n } else {\n return orderA > orderB ? 1 : -1;\n }\n });\n\n if (items.length > 0) {\n const directionality = this.directionality.value;\n const layout = this.layout;\n if (layout === 'row' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheRowRtl;\n } else if (layout === 'row' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheRowLtr;\n } else if (layout === 'column' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheColumnRtl;\n } else if (layout === 'column' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheColumnLtr;\n }\n this.addStyles(value, {directionality, items, layout});\n }\n }\n\n /** We need to override clearStyles because in most cases mru isn't populated */\n protected clearStyles() {\n const gridMode = Object.keys(this.mru).length > 0;\n const childrenStyle = gridMode ? 'padding' :\n getMarginType(this.directionality.value, this.layout);\n\n // If there are styles on the parent remove them\n if (gridMode) {\n super.clearStyles();\n }\n\n // Then remove the children styles too\n this.styleUtils.applyStyleToElements({[childrenStyle]: ''}, this.childrenNodes);\n }\n\n /** Determine if an element will show or hide based on current activation */\n protected willDisplay(source: HTMLElement): boolean {\n const value = this.marshal.getValue(source, 'show-hide');\n return value === true ||\n (value === undefined && this.styleUtils.lookupStyle(source, 'display') !== 'none');\n }\n\n protected buildChildObservable(): void {\n this.zone.runOutsideAngular(() => {\n if (typeof MutationObserver !== 'undefined') {\n this.observer = new MutationObserver((mutations: MutationRecord[]) => {\n const validatedChanges = (it: MutationRecord): boolean => {\n return (it.addedNodes && it.addedNodes.length > 0) ||\n (it.removedNodes && it.removedNodes.length > 0);\n };\n\n // update gap styles only for child 'added' or 'removed' events\n if (mutations.some(validatedChanges)) {\n this.observerSubject.next();\n }\n });\n this.observer.observe(this.nativeElement, {childList: true});\n }\n });\n }\n\n protected observer?: MutationObserver;\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutGapDirective extends LayoutGapDirective {\n protected inputs = inputs;\n}\n\nconst layoutGapCacheRowRtl: Map = new Map();\nconst layoutGapCacheColumnRtl: Map = new Map();\nconst layoutGapCacheRowLtr: Map = new Map();\nconst layoutGapCacheColumnLtr: Map = new Map();\n\nconst GRID_SPECIFIER = ' grid';\n\nfunction buildGridPadding(value: string, directionality: string): StyleDefinition {\n let paddingTop = '0px', paddingRight = '0px', paddingBottom = value, paddingLeft = '0px';\n\n if (directionality === 'rtl') {\n paddingLeft = value;\n } else {\n paddingRight = value;\n }\n\n return {'padding': `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`};\n}\n\nfunction buildGridMargin(value: string, directionality: string): StyleDefinition {\n let marginTop = '0px', marginRight = '0px', marginBottom = '-' + value, marginLeft = '0px';\n\n if (directionality === 'rtl') {\n marginLeft = '-' + value;\n } else {\n marginRight = '-' + value;\n }\n\n return {'margin': `${marginTop} ${marginRight} ${marginBottom} ${marginLeft}`};\n}\n\nfunction getMarginType(directionality: string, layout: string) {\n switch (layout) {\n case 'column':\n return 'margin-bottom';\n case 'column-reverse':\n return 'margin-top';\n case 'row':\n return directionality === 'rtl' ? 'margin-left' : 'margin-right';\n case 'row-reverse':\n return directionality === 'rtl' ? 'margin-right' : 'margin-left';\n default :\n return directionality === 'rtl' ? 'margin-left' : 'margin-right';\n }\n}\n\nfunction buildGapCSS(gapValue: string,\n parent: {directionality: string, layout: string}): StyleDefinition {\n const key = getMarginType(parent.directionality, parent.layout);\n const margins: {[key: string]: string | null} = {...CLEAR_MARGIN_CSS};\n margins[key] = gapValue;\n return margins;\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 {Directive, ElementRef, OnChanges, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\nimport {buildLayoutCSS} from '../../utils/layout-validator';\n\n@Injectable({providedIn: 'root'})\nexport class LayoutStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return buildLayoutCSS(input);\n }\n}\n\nconst inputs = [\n 'fxLayout', 'fxLayout.xs', 'fxLayout.sm', 'fxLayout.md',\n 'fxLayout.lg', 'fxLayout.xl', 'fxLayout.lt-sm', 'fxLayout.lt-md',\n 'fxLayout.lt-lg', 'fxLayout.lt-xl', 'fxLayout.gt-xs', 'fxLayout.gt-sm',\n 'fxLayout.gt-md', 'fxLayout.gt-lg'\n];\nconst selector = `\n [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],\n [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md],\n [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm],\n [fxLayout.gt-md], [fxLayout.gt-lg]\n`;\n\n/**\n * 'layout' flexbox styling directive\n * Defines the positioning flow direction for the child elements: row or column\n * Optional values: column or row (default)\n * @see https://css-tricks.com/almanac/properties/f/flex-direction/\n *\n */\nexport class LayoutDirective extends BaseDirective2 implements OnChanges {\n\n protected DIRECTIVE_KEY = 'layout';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = layoutCache;\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutDirective extends LayoutDirective {\n protected inputs = inputs;\n}\n\nconst layoutCache: Map = new Map();\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='' 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 : 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 {NgModule} from '@angular/core';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultImgSrcDirective} from './img-src/img-src';\nimport {DefaultClassDirective} from './class/class';\nimport {DefaultShowHideDirective} from './show-hide/show-hide';\nimport {DefaultStyleDirective} from './style/style';\n\n\nconst ALL_DIRECTIVES = [\n DefaultShowHideDirective,\n DefaultClassDirective,\n DefaultStyleDirective,\n DefaultImgSrcDirective\n];\n\n/**\n * *****************************************************************\n * Define module for the Extended API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class ExtendedModule {\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 {\n Directive,\n DoCheck,\n ElementRef,\n Inject,\n Optional,\n PLATFORM_ID,\n SecurityContext,\n Self,\n} from '@angular/core';\nimport {isPlatformServer, NgStyle, ɵNgStyleImpl, ɵNgStyleR2Impl} from '@angular/common';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n SERVER_TOKEN,\n} from '@angular/flex-layout/core';\n\nimport {\n NgStyleRawList,\n NgStyleType,\n NgStyleSanitizer,\n buildRawList,\n getType,\n buildMapFromSet,\n NgStyleMap,\n NgStyleKeyValue,\n stringToKeyValue,\n keyValuesToMap,\n} from './style-transforms';\n\nexport class StyleDirective extends BaseDirective2 implements DoCheck {\n\n protected DIRECTIVE_KEY = 'ngStyle';\n protected fallbackStyles: NgStyleMap;\n protected isServer: boolean;\n\n constructor(protected elementRef: ElementRef,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n protected delegate: ɵNgStyleImpl,\n protected sanitizer: DomSanitizer,\n @Optional() @Self() private readonly ngStyleInstance: NgStyle,\n @Optional() @Inject(SERVER_TOKEN) serverLoaded: boolean,\n @Inject(PLATFORM_ID) platformId: Object) {\n super(elementRef, null!, styler, marshal);\n if (!this.ngStyleInstance) {\n // Create an instance NgClass Directive instance only if `ngClass=\"\"` has NOT been\n // defined on the same host element; since the responsive variations may be defined...\n this.ngStyleInstance = new NgStyle(this.delegate);\n }\n this.init();\n const styles = this.nativeElement.getAttribute('style') || '';\n this.fallbackStyles = this.buildStyleMap(styles);\n this.isServer = serverLoaded && isPlatformServer(platformId);\n }\n\n /** Add generated styles */\n protected updateWithValue(value: any) {\n const styles = this.buildStyleMap(value);\n this.ngStyleInstance.ngStyle = {...this.fallbackStyles, ...styles};\n if (this.isServer) {\n this.applyStyleToElement(styles);\n }\n this.ngStyleInstance.ngDoCheck();\n }\n\n /** Remove generated styles */\n protected clearStyles() {\n this.ngStyleInstance.ngStyle = this.fallbackStyles;\n this.ngStyleInstance.ngDoCheck();\n }\n\n /**\n * Convert raw strings to ngStyleMap; which is required by ngStyle\n * NOTE: Raw string key-value pairs MUST be delimited by `;`\n * Comma-delimiters are not supported due to complexities of\n * possible style values such as `rgba(x,x,x,x)` and others\n */\n protected buildStyleMap(styles: NgStyleType): NgStyleMap {\n // Always safe-guard (aka sanitize) style property values\n const sanitizer: NgStyleSanitizer = (val: any) =>\n this.sanitizer.sanitize(SecurityContext.STYLE, val) || '';\n if (styles) {\n switch (getType(styles)) {\n case 'string': return buildMapFromList(buildRawList(styles),\n sanitizer);\n case 'array' : return buildMapFromList(styles as NgStyleRawList, sanitizer);\n case 'set' : return buildMapFromSet(styles, sanitizer);\n default : return buildMapFromSet(styles, sanitizer);\n }\n }\n\n return {};\n }\n\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n\n /** For ChangeDetectionStrategy.onPush and ngOnChanges() updates */\n ngDoCheck() {\n this.ngStyleInstance.ngDoCheck();\n }\n}\n\nconst inputs = [\n 'ngStyle',\n 'ngStyle.xs', 'ngStyle.sm', 'ngStyle.md', 'ngStyle.lg', 'ngStyle.xl',\n 'ngStyle.lt-sm', 'ngStyle.lt-md', 'ngStyle.lt-lg', 'ngStyle.lt-xl',\n 'ngStyle.gt-xs', 'ngStyle.gt-sm', 'ngStyle.gt-md', 'ngStyle.gt-lg'\n];\n\nconst selector = `\n [ngStyle],\n [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl],\n [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl],\n [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]\n`;\n\n// tslint:disable-next-line:variable-name\nexport const LayoutNgStyleImplProvider = {\n provide: ɵNgStyleImpl,\n useClass: ɵNgStyleR2Impl\n};\n\n/**\n * Directive to add responsive support for ngStyle.\n *\n */\n@Directive({selector, inputs, providers: [LayoutNgStyleImplProvider]})\nexport class DefaultStyleDirective extends StyleDirective implements DoCheck {\n protected inputs = inputs;\n}\n\n/** Build a styles map from a list of styles, while sanitizing bad values first */\nfunction buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap {\n const sanitizeValue = (it: NgStyleKeyValue) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n };\n\n return styles\n .map(stringToKeyValue)\n .filter(entry => !!entry)\n .map(sanitizeValue)\n .reduce(keyValuesToMap, {} as NgStyleMap);\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\nexport type NgStyleRawList = string[];\nexport type NgStyleMap = {[klass: string]: string};\n// NgStyle selectors accept NgStyleType values\nexport type NgStyleType = string | Set | NgStyleRawList | NgStyleMap;\n\n/**\n * Callback function for SecurityContext.STYLE sanitization\n */\nexport type NgStyleSanitizer = (val: any) => string;\n\n/** NgStyle allowed inputs */\nexport class NgStyleKeyValue {\n constructor(public key: string, public value: string, noQuotes = true) {\n this.key = noQuotes ? key.replace(/['\"]/g, '').trim() : key.trim();\n\n this.value = noQuotes ? value.replace(/['\"]/g, '').trim() : value.trim();\n this.value = this.value.replace(/;/, '');\n }\n}\n\nexport function getType(target: any): string {\n let what = typeof target;\n if (what === 'object') {\n return (target.constructor === Array) ? 'array' :\n (target.constructor === Set) ? 'set' : 'object';\n }\n return what;\n}\n\n/**\n * Split string of key:value pairs into Array of k-v pairs\n * e.g. 'key:value; key:value; key:value;' -> ['key:value',...]\n */\nexport function buildRawList(source: any, delimiter = ';'): NgStyleRawList {\n return String(source)\n .trim()\n .split(delimiter)\n .map((val: string) => val.trim())\n .filter(val => val !== '');\n}\n\n/** Convert array of key:value strings to a iterable map object */\nexport function buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap {\n const sanitizeValue = (it: NgStyleKeyValue) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n };\n\n return styles\n .map(stringToKeyValue)\n .filter(entry => !!entry)\n .map(sanitizeValue)\n .reduce(keyValuesToMap, {} as NgStyleMap);\n}\n\n/** Convert Set or raw Object to an iterable NgStyleMap */\nexport function buildMapFromSet(source: NgStyleType, sanitize?: NgStyleSanitizer): NgStyleMap {\n let list: string[] = [];\n if (getType(source) === 'set') {\n (source as Set).forEach(entry => list.push(entry));\n } else {\n Object.keys(source).forEach((key: string) => {\n list.push(`${key}:${(source as NgStyleMap)[key]}`);\n });\n }\n return buildMapFromList(list, sanitize);\n}\n\n\n/** Convert 'key:value' -> [key, value] */\nexport function stringToKeyValue(it: string): NgStyleKeyValue {\n const [key, ...vals] = it.split(':');\n return new NgStyleKeyValue(key, vals.join(':'));\n}\n\n/** Convert [ [key,value] ] -> { key : value } */\nexport function keyValuesToMap(map: NgStyleMap, entry: NgStyleKeyValue): NgStyleMap {\n if (!!entry.key) {\n map[entry.key] = entry.value;\n }\n return map;\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 {\n Directive,\n ElementRef,\n OnChanges,\n SimpleChanges,\n Optional,\n Inject,\n PLATFORM_ID,\n Injectable,\n AfterViewInit,\n} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n BaseDirective2,\n LAYOUT_CONFIG,\n LayoutConfigOptions,\n MediaMarshaller,\n SERVER_TOKEN,\n StyleUtils,\n StyleBuilder,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {takeUntil} from 'rxjs/operators';\n\nexport interface ShowHideParent {\n display: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class ShowHideStyleBuilder extends StyleBuilder {\n buildStyles(show: string, parent: ShowHideParent) {\n const shouldShow = show === 'true';\n return {'display': shouldShow ? parent.display : 'none'};\n }\n}\n\nexport class ShowHideDirective extends BaseDirective2 implements AfterViewInit, OnChanges {\n protected DIRECTIVE_KEY = 'show-hide';\n\n /** Original dom Elements CSS display style */\n protected display: string = '';\n protected hasLayout = false;\n protected hasFlexChild = false;\n\n constructor(protected elementRef: ElementRef,\n protected styleBuilder: ShowHideStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n @Inject(PLATFORM_ID) protected platformId: Object,\n @Optional() @Inject(SERVER_TOKEN) protected serverModuleLoaded: boolean) {\n super(elementRef, styleBuilder, styler, marshal);\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n ngAfterViewInit() {\n this.trackExtraTriggers();\n\n const children = Array.from(this.nativeElement.children);\n for (let i = 0; i < children.length; i++) {\n if (this.marshal.hasValue(children[i] as HTMLElement, 'flex')) {\n this.hasFlexChild = true;\n break;\n }\n }\n\n if (DISPLAY_MAP.has(this.nativeElement)) {\n this.display = DISPLAY_MAP.get(this.nativeElement)!;\n } else {\n this.display = this.getDisplayStyle();\n DISPLAY_MAP.set(this.nativeElement, this.display);\n }\n\n this.init();\n // set the default to show unless explicitly overridden\n const defaultValue = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY, '');\n if (defaultValue === undefined || defaultValue === '') {\n this.setValue(true, '');\n } else {\n this.triggerUpdate();\n }\n }\n\n /**\n * On changes to any @Input properties...\n * Default to use the non-responsive Input value ('fxShow')\n * Then conditionally override with the mq-activated Input's current value\n */\n ngOnChanges(changes: SimpleChanges) {\n Object.keys(changes).forEach(key => {\n if (this.inputs.indexOf(key) !== -1) {\n const inputKey = key.split('.');\n const bp = inputKey.slice(1).join('.');\n const inputValue = changes[key].currentValue;\n let shouldShow = inputValue !== '' ?\n inputValue !== 0 ? coerceBooleanProperty(inputValue) : false\n : true;\n if (inputKey[0] === 'fxHide') {\n shouldShow = !shouldShow;\n }\n this.setValue(shouldShow, bp);\n }\n });\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Watch for these extra triggers to update fxShow, fxHide stylings\n */\n protected trackExtraTriggers() {\n this.hasLayout = this.marshal.hasValue(this.nativeElement, 'layout');\n\n ['layout', 'layout-align'].forEach(key => {\n this.marshal\n .trackValue(this.nativeElement, key)\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerUpdate.bind(this));\n });\n }\n\n /**\n * Override accessor to the current HTMLElement's `display` style\n * Note: Show/Hide will not change the display to 'flex' but will set it to 'block'\n * unless it was already explicitly specified inline or in a CSS stylesheet.\n */\n protected getDisplayStyle(): string {\n return (this.hasLayout || (this.hasFlexChild && this.layoutConfig.addFlexToParent)) ?\n 'flex' : this.styler.lookupStyle(this.nativeElement, 'display', true);\n }\n\n /** Validate the visibility value and then update the host's inline display style */\n protected updateWithValue(value: boolean | string = true) {\n if (value === '') {\n return;\n }\n this.addStyles(value ? 'true' : 'false', {display: this.display});\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.nativeElement.style.setProperty('display', '');\n }\n this.marshal.triggerUpdate(this.parentElement!, 'layout-gap');\n }\n}\n\nconst DISPLAY_MAP: WeakMap = new WeakMap();\n\nconst inputs = [\n 'fxShow', 'fxShow.print',\n 'fxShow.xs', 'fxShow.sm', 'fxShow.md', 'fxShow.lg', 'fxShow.xl',\n 'fxShow.lt-sm', 'fxShow.lt-md', 'fxShow.lt-lg', 'fxShow.lt-xl',\n 'fxShow.gt-xs', 'fxShow.gt-sm', 'fxShow.gt-md', 'fxShow.gt-lg',\n 'fxHide', 'fxHide.print',\n 'fxHide.xs', 'fxHide.sm', 'fxHide.md', 'fxHide.lg', 'fxHide.xl',\n 'fxHide.lt-sm', 'fxHide.lt-md', 'fxHide.lt-lg', 'fxHide.lt-xl',\n 'fxHide.gt-xs', 'fxHide.gt-sm', 'fxHide.gt-md', 'fxHide.gt-lg'\n];\n\nconst selector = `\n [fxShow], [fxShow.print],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide], [fxHide.print],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n`;\n\n/**\n * 'show' Layout API directive\n */\n@Directive({selector, inputs})\nexport class DefaultShowHideDirective extends ShowHideDirective {\n protected inputs = inputs;\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 {Directive, DoCheck, ElementRef, Input, Optional, Self} from '@angular/core';\nimport {NgClass, ɵNgClassImpl, ɵNgClassR2Impl} from '@angular/common';\nimport {BaseDirective2, StyleUtils, MediaMarshaller} from '@angular/flex-layout/core';\n\nexport class ClassDirective extends BaseDirective2 implements DoCheck {\n\n protected DIRECTIVE_KEY = 'ngClass';\n\n /**\n * Capture class assignments so we cache the default classes\n * which are merged with activated styles and used as fallbacks.\n */\n @Input('class')\n set klass(val: string) {\n this.ngClassInstance.klass = val;\n this.setValue(val, '');\n }\n\n constructor(protected elementRef: ElementRef,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n protected delegate: ɵNgClassImpl,\n @Optional() @Self() protected readonly ngClassInstance: NgClass) {\n super(elementRef, null!, styler, marshal);\n if (!this.ngClassInstance) {\n // Create an instance NgClass Directive instance only if `ngClass=\"\"` has NOT been defined on\n // the same host element; since the responsive variations may be defined...\n this.ngClassInstance = new NgClass(this.delegate);\n }\n this.init();\n this.setValue('', '');\n }\n\n protected updateWithValue(value: any) {\n this.ngClassInstance.ngClass = value;\n this.ngClassInstance.ngDoCheck();\n }\n\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n\n /**\n * For ChangeDetectionStrategy.onPush and ngOnChanges() updates\n */\n ngDoCheck() {\n this.ngClassInstance.ngDoCheck();\n }\n}\n\nconst inputs = [\n 'ngClass', 'ngClass.xs', 'ngClass.sm', 'ngClass.md', 'ngClass.lg', 'ngClass.xl',\n 'ngClass.lt-sm', 'ngClass.lt-md', 'ngClass.lt-lg', 'ngClass.lt-xl',\n 'ngClass.gt-xs', 'ngClass.gt-sm', 'ngClass.gt-md', 'ngClass.gt-lg'\n];\n\nconst selector = `\n [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl],\n [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl],\n [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]\n`;\n\n// tslint:disable-next-line:variable-name\nexport const LayoutNgClassImplProvider = {\n provide: ɵNgClassImpl,\n useClass: ɵNgClassR2Impl\n};\n\n/**\n * Directive to add responsive support for ngClass.\n * This maintains the core functionality of 'ngClass' and adds responsive API\n * Note: this class is a no-op when rendered on the server\n */\n@Directive({selector, inputs, providers: [LayoutNgClassImplProvider]})\nexport class DefaultClassDirective extends ClassDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Inject, PLATFORM_ID, Injectable, Input} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n MediaMarshaller,\n BaseDirective2,\n SERVER_TOKEN,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class ImgSrcStyleBuilder extends StyleBuilder {\n buildStyles(url: string) {\n return {'content': url ? `url(${url})` : ''};\n }\n}\n\nexport class ImgSrcDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'img-src';\n protected defaultSrc = '';\n\n @Input('src')\n set src(val: string) {\n this.defaultSrc = val;\n this.setValue(this.defaultSrc, '');\n }\n\n constructor(protected elementRef: ElementRef,\n protected styleBuilder: ImgSrcStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n @Inject(PLATFORM_ID) protected platformId: Object,\n @Inject(SERVER_TOKEN) protected serverModuleLoaded: boolean) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n this.setValue(this.nativeElement.getAttribute('src') || '', '');\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.nativeElement.setAttribute('src', '');\n }\n }\n\n /**\n * Use the [responsively] activated input value to update\n * the host img src attribute or assign a default `img.src=''`\n * if the src has not been defined.\n *\n * Do nothing to standard `` usages, only when responsive\n * keys are present do we actually call `setAttribute()`\n */\n protected updateWithValue(value?: string) {\n const url = value || this.defaultSrc;\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.addStyles(url);\n } else {\n this.nativeElement.setAttribute('src', url);\n }\n }\n\n protected styleCache = imgSrcCache;\n}\n\nconst imgSrcCache: Map = new Map();\n\nconst inputs = [\n 'src.xs', 'src.sm', 'src.md', 'src.lg', 'src.xl',\n 'src.lt-sm', 'src.lt-md', 'src.lt-lg', 'src.lt-xl',\n 'src.gt-xs', 'src.gt-sm', 'src.gt-md', 'src.gt-lg'\n];\n\nconst selector = `\n img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl],\n img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl],\n img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]\n`;\n\n/**\n * This directive provides a responsive API for the HTML 'src' attribute\n * and will update the img.src property upon each responsive activation.\n *\n * e.g.\n * \n *\n * @see https://css-tricks.com/responsive-images-youre-just-changing-resolutions-use-src/\n */\n@Directive({selector, inputs})\nexport class DefaultImgSrcDirective extends ImgSrcDirective {\n protected inputs = inputs;\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\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;\ntype BreakpointMap = Map;\ntype ElementMap = Map;\ntype ElementKeyMap = WeakMap>;\ntype SubscriptionMap = Map;\ntype WatcherMap = WeakMap;\ntype BuilderMap = WeakMap>;\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 = 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[] = []): 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 {\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[]) {\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)) {\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, Optional, 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(@Optional() private _serverStylesheet: StylesheetMap,\n @Optional() @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 /**\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\n this.deactivateAll();\n this.restoreRegistryMatches();\n this.setActivations(list);\n\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();\n queries.forEach(query => {\n registry.set(query, {matches: 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() {\n return this.matchMedia.activations;\n }\n\n private hasCachedRegistryMatches = false;\n private originalActivations: MediaChange[] = [];\n private originalRegistry: Map = new Map();\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})
` ;\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 v8.0.0-beta.26\n */\n readonly media$: Observable;\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 {\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 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 {\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;\n private readonly destroyed$ = new Subject();\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 : query;\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(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, PLATFORM_ID} 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 { isPlatformBrowser } 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 {\n constructor(\n protected breakpoints: BreakPointRegistry,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n @Inject(PLATFORM_ID) protected _platformId: Object) {\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 // 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 the platform is\n // not a browser(fallsback to mql print media queries).\n private registerBeforeAfterPrintHooks(target: HookTarget) {\n if (!isPlatformBrowser(this._platformId) || this.registeredBeforeAfterPrintHooks) {\n return;\n }\n\n this.registeredBeforeAfterPrintHooks = true;\n\n // Could we have teardown logic to remove if there are no print listeners being used?\n (window).addEventListener('beforeprint', () => {\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 (window).addEventListener('afterprint', () => {\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\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 /** 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- 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- 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 // 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.split(',').forEach(alias => activate(alias.trim()));\n }\n\n /**\n *\n */\n private _activateByQuery(mediaQuery: string) {\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(null, this);\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(null, this);\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(null, this);\n }\n }\n\n /** Don't need to remove listeners in the testing environment */\n removeListener(_: MediaQueryListListener | null) {\n }\n\n addEventListener(\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(\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, 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 {\n /** Initialize source with 'all' so all non-responsive APIs trigger style updates */\n readonly source = new BehaviorSubject(new MediaChange(true));\n registry = new Map();\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 : false;\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;\n observe(mediaQueries: string[]): Observable;\n observe(mediaQueries: string[], filterOthers: boolean): Observable;\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 {\n if (mqList && mqList.length) {\n const matchMedia$: Observable = this._observable$.pipe(\n filter((change: MediaChange) => {\n return !filterOthers ? true : (mqList.indexOf(change.mediaQuery) > -1);\n })\n );\n const registration$: Observable = new Observable((observer: Observer) => { // tslint:disable-line:max-line-length\n const matches: Array = 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.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 /**\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).matchMedia('all').addListener;\n\n return canListen ? (window).matchMedia(query) : {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => {\n },\n removeListener: () => {\n }\n } as unknown 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();\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(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(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('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\nimport {BreakPoint} from '../break-point';\n\n/* tslint:disable */\nconst HANDSET_PORTRAIT = '(orientation: portrait) and (max-width: 599.9px)';\nconst HANDSET_LANDSCAPE = '(orientation: landscape) and (max-width: 959.9px)';\n\nconst TABLET_PORTRAIT = '(orientation: portrait) and (min-width: 600px) and (max-width: 839.9px)';\nconst TABLET_LANDSCAPE = '(orientation: landscape) and (min-width: 960px) and (max-width: 1279.9px)';\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},\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.9px)',\n priority: 1000,\n },\n {\n alias: 'sm',\n mediaQuery: 'screen and (min-width: 600px) and (max-width: 959.9px)',\n priority: 900,\n },\n {\n alias: 'md',\n mediaQuery: 'screen and (min-width: 960px) and (max-width: 1279.9px)',\n priority: 800,\n },\n {\n alias: 'lg',\n mediaQuery: 'screen and (min-width: 1280px) and (max-width: 1919.9px)',\n priority: 700,\n },\n {\n alias: 'xl',\n mediaQuery: 'screen and (min-width: 1920px) and (max-width: 4999.9px)',\n priority: 600,\n },\n {\n alias: 'lt-sm',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 599.9px)',\n priority: 950,\n },\n {\n alias: 'lt-md',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 959.9px)',\n priority: 850,\n },\n {\n alias: 'lt-lg',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 1279.9px)',\n priority: 750,\n },\n {\n alias: 'lt-xl',\n overlapping: true,\n priority: 650,\n mediaQuery: 'screen and (max-width: 1919.9px)',\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 = new Subject();\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 = 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[] = []): 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 /** 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 this.addStyles(input);\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(\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(\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(\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>();\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 * Define module for the MediaQuery API\n * *****************************************************************\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: 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. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\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 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) : new P(function (resolve) { resolve(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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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 __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\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)) result[k] = mod[k];\r\n result.default = 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"],"names":["Inject","PLATFORM_ID","Optional","NgModule","tslib_1.__assign","isPlatformServer","Version","ALL_DIRECTIVES","Directive","selector","inputs","tslib_1.__extends","Input","ElementRef","coerceBooleanProperty","Injectable","AUTO_SPECIFIER","DEFAULT_VALUE","DEFAULT_CROSS","DEFAULT_MAIN","buildCss","BidiModule","LAYOUT_VALUES","takeUntil","extendObject","Directionality","NgZone","Subject","buildLayoutCSS","buildCSS","validateWrapValue","validateValue","INLINE","buildMapFromList","ɵNgStyleR2Impl","ɵNgStyleImpl","NgStyle","Self","DomSanitizer","SecurityContext","ɵNgClassR2Impl","ɵNgClassImpl","NgClass","map","tap","filter","merge","isPlatformBrowser","DOCUMENT","fromEvent","take","of","debounceTime","asapScheduler","switchMap","Observable","BehaviorSubject","inject","InjectionToken","APP_BOOTSTRAP_LISTENER"],"mappings":"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"} \ No newline at end of file diff --git a/bundles/flex-layout.umd.min.js b/bundles/flex-layout.umd.min.js index aa5dd0e45..ff12cc94e 100644 --- a/bundles/flex-layout.umd.min.js +++ b/bundles/flex-layout.umd.min.js @@ -5,5 +5,7 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -!function(e,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports,require("@angular/core"),require("@angular/common"),require("@angular/flex-layout/core"),require("@angular/flex-layout/extended"),require("@angular/flex-layout/flex"),require("@angular/flex-layout/grid")):"function"==typeof define&&define.amd?define("@angular/flex-layout",["exports","@angular/core","@angular/common","@angular/flex-layout/core","@angular/flex-layout/extended","@angular/flex-layout/flex","@angular/flex-layout/grid"],i):i((e.ng=e.ng||{},e.ng["flex-layout"]={}),e.ng.core,e.ng.common,e.ng.flexLayout.core,e.ng.flexLayout.extended,e.ng.flexLayout.flex,e.ng.flexLayout.grid)}(this,function(e,i,t,r,l,a,u){"use strict";var o=new i.Version("7.0.0-beta.22"),d=function(){function e(e,i){t.isPlatformServer(i)&&!e&&console.warn("Warning: Flex Layout loaded on the server without FlexLayoutServerModule")}return e.withConfig=function(i,t){return void 0===t&&(t=[]),{ngModule:e,providers:i.serverLoaded?[{provide:r.LAYOUT_CONFIG,useValue:i},{provide:r.BREAKPOINT,useValue:t,multi:!0},{provide:r.SERVER_TOKEN,useValue:!0}]:[{provide:r.LAYOUT_CONFIG,useValue:i},{provide:r.BREAKPOINT,useValue:t,multi:!0}]}},e.decorators=[{type:i.NgModule,args:[{imports:[a.FlexModule,l.ExtendedModule,u.GridModule],exports:[a.FlexModule,l.ExtendedModule,u.GridModule]}]}],e.ctorParameters=function(){return[{type:Boolean,decorators:[{type:i.Optional},{type:i.Inject,args:[r.SERVER_TOKEN]}]},{type:Object,decorators:[{type:i.Inject,args:[i.PLATFORM_ID]}]}]},e}();e.removeStyles=r.removeStyles,e.BROWSER_PROVIDER=r.BROWSER_PROVIDER,e.CLASS_NAME=r.CLASS_NAME,e.CoreModule=r.CoreModule,e.MediaChange=r.MediaChange,e.StylesheetMap=r.StylesheetMap,e.DEFAULT_CONFIG=r.DEFAULT_CONFIG,e.LAYOUT_CONFIG=r.LAYOUT_CONFIG,e.SERVER_TOKEN=r.SERVER_TOKEN,e.BREAKPOINT=r.BREAKPOINT,e.BaseDirective=r.BaseDirective,e.BaseDirectiveAdapter=r.BaseDirectiveAdapter,e.BaseDirective2=r.BaseDirective2,e.prioritySort=r.prioritySort,e.RESPONSIVE_ALIASES=r.RESPONSIVE_ALIASES,e.DEFAULT_BREAKPOINTS=r.DEFAULT_BREAKPOINTS,e.ScreenTypes=r.ScreenTypes,e.ORIENTATION_BREAKPOINTS=r.ORIENTATION_BREAKPOINTS,e.BreakPointRegistry=r.BreakPointRegistry,e.BREAKPOINTS=r.BREAKPOINTS,e.MatchMedia=r.MatchMedia,e.MockMatchMedia=r.MockMatchMedia,e.MockMediaQueryList=r.MockMediaQueryList,e.MockMatchMediaProvider=r.MockMatchMediaProvider,e.ServerMediaQueryList=r.ServerMediaQueryList,e.ServerMatchMedia=r.ServerMatchMedia,e.MediaMonitor=r.MediaMonitor,e.ObservableMedia=r.ObservableMedia,e.MediaService=r.MediaService,e.ObservableMediaProvider=r.ObservableMediaProvider,e.MediaObserver=r.MediaObserver,e.KeyOptions=r.KeyOptions,e.ResponsiveActivation=r.ResponsiveActivation,e.StyleUtils=r.StyleUtils,e.StyleBuilder=r.StyleBuilder,e.validateBasis=r.validateBasis,e.MediaMarshaller=r.MediaMarshaller,e.ExtendedModule=l.ExtendedModule,e.ClassDirective=l.ClassDirective,e.DefaultClassDirective=l.DefaultClassDirective,e.ImgSrcStyleBuilder=l.ImgSrcStyleBuilder,e.ImgSrcDirective=l.ImgSrcDirective,e.DefaultImgSrcDirective=l.DefaultImgSrcDirective,e.negativeOf=l.negativeOf,e.ShowHideStyleBuilder=l.ShowHideStyleBuilder,e.ShowHideDirective=l.ShowHideDirective,e.DefaultShowHideDirective=l.DefaultShowHideDirective,e.StyleDirective=l.StyleDirective,e.DefaultStyleDirective=l.DefaultStyleDirective,e.FlexModule=a.FlexModule,e.FlexStyleBuilder=a.FlexStyleBuilder,e.FlexDirective=a.FlexDirective,e.DefaultFlexDirective=a.DefaultFlexDirective,e.FlexAlignStyleBuilder=a.FlexAlignStyleBuilder,e.FlexAlignDirective=a.FlexAlignDirective,e.DefaultFlexAlignDirective=a.DefaultFlexAlignDirective,e.FlexFillStyleBuilder=a.FlexFillStyleBuilder,e.FlexFillDirective=a.FlexFillDirective,e.FlexOffsetStyleBuilder=a.FlexOffsetStyleBuilder,e.FlexOffsetDirective=a.FlexOffsetDirective,e.DefaultFlexOffsetDirective=a.DefaultFlexOffsetDirective,e.FlexOrderStyleBuilder=a.FlexOrderStyleBuilder,e.FlexOrderDirective=a.FlexOrderDirective,e.DefaultFlexOrderDirective=a.DefaultFlexOrderDirective,e.LayoutStyleBuilder=a.LayoutStyleBuilder,e.LayoutDirective=a.LayoutDirective,e.DefaultLayoutDirective=a.DefaultLayoutDirective,e.LayoutAlignStyleBuilder=a.LayoutAlignStyleBuilder,e.LayoutAlignDirective=a.LayoutAlignDirective,e.DefaultLayoutAlignDirective=a.DefaultLayoutAlignDirective,e.LayoutGapStyleBuilder=a.LayoutGapStyleBuilder,e.LayoutGapDirective=a.LayoutGapDirective,e.DefaultLayoutGapDirective=a.DefaultLayoutGapDirective,e.ɵf=u.ɵf,e.ɵe=u.ɵe,e.ɵd=u.ɵd,e.ɵi=u.ɵi,e.ɵh=u.ɵh,e.ɵg=u.ɵg,e.ɵl=u.ɵl,e.ɵk=u.ɵk,e.ɵj=u.ɵj,e.ɵo=u.ɵo,e.ɵn=u.ɵn,e.ɵm=u.ɵm,e.ɵr=u.ɵr,e.ɵq=u.ɵq,e.ɵp=u.ɵp,e.ɵu=u.ɵu,e.ɵt=u.ɵt,e.ɵs=u.ɵs,e.ɵx=u.ɵx,e.ɵw=u.ɵw,e.ɵv=u.ɵv,e.ɵba=u.ɵba,e.ɵz=u.ɵz,e.ɵy=u.ɵy,e.ɵc=u.ɵc,e.ɵb=u.ɵb,e.ɵa=u.ɵa,e.ɵbd=u.ɵbd,e.ɵbc=u.ɵbc,e.ɵbb=u.ɵbb,e.ɵbg=u.ɵbg,e.ɵbf=u.ɵbf,e.ɵbe=u.ɵbe,e.GridModule=u.GridModule,e.VERSION=o,e.FlexLayoutModule=d,Object.defineProperty(e,"__esModule",{value:!0})}); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/common"),require("rxjs"),require("rxjs/operators"),require("@angular/cdk/coercion"),require("@angular/platform-browser"),require("@angular/cdk/bidi")):"function"==typeof define&&define.amd?define("@angular/flex-layout",["exports","@angular/core","@angular/common","rxjs","rxjs/operators","@angular/cdk/coercion","@angular/platform-browser","@angular/cdk/bidi"],e):e((t.ng=t.ng||{},t.ng.flexLayout={}),t.ng.core,t.ng.common,t.rxjs,t.rxjs.operators,t.ng.cdk.coercion,t.ng.platformBrowser,t.ng.cdk.bidi)}(this,function(t,e,n,r,i,o,a,s){"use strict";function l(t,e){function n(){this.constructor=t}J(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}function u(t,e){return function(){if(n.isPlatformBrowser(e)){var r=/\bflex-layout-.+?\b/g;Array.from(t.querySelectorAll("[class*="+et+"]")).forEach(function(t){t.classList.contains(et+"ssr")&&t.parentNode?t.parentNode.removeChild(t):t.className.replace(r,"")})}}}function c(t,e){return t=t?t.clone():new rt,e&&(t.mqAlias=e.alias,t.mediaQuery=e.mediaQuery,t.suffix=e.suffix,t.priority=e.priority),t}function d(t){var e=p(t);return f(e[0],e[1],e[2])}function p(t){t=t?t.toLowerCase():"";var e=t.split(" "),n=e[0],r=e[1],i=e[2];return ct.find(function(t){return t===n})||(n=ct[0]),r===ut&&(r=i!==ut?i:"",i=ut),[n,g(r),!!i]}function g(t){if(t)switch(t.toLowerCase()){case"reverse":case"wrap-reverse":case"reverse-wrap":t="wrap-reverse";break;case"no":case"none":case"nowrap":t="nowrap";break;default:t="wrap"}return t}function f(t,e,n){return void 0===e&&(e=null),void 0===n&&(n=!1),{display:n?"inline-flex":"flex","box-sizing":"border-box","flex-direction":t,"flex-wrap":e||null}}function y(t){for(var e=[],n=1;n0?t.charAt(0):"",n=t.length>1?t.slice(1):"";return e.toUpperCase()+n}function m(t){return t.replace(vt,"|").split("|").map(h).join("")}function x(t){return t.forEach(function(t){t.suffix||(t.suffix=m(t.alias),t.overlapping=!!t.overlapping)}),t}function v(t,e){void 0===e&&(e=[]);var n={};return t.forEach(function(t){n[t.alias]=t}),e.forEach(function(t){n[t.alias]?y(n[t.alias],t):n[t.alias]=t}),x(Object.keys(n).map(function(t){return n[t]}))}function b(t,e){var n=t?t.priority||0:0;return(e?e.priority||0:0)-n}function w(t,e){return(t.priority||0)-(e.priority||0)}function A(t,e){var n=t.filter(function(t){return!It[t]});if(n.length>0){var r=n.join(", ");try{var i=e.createElement("style");if(i.setAttribute("type","text/css"),!i.styleSheet){var o="\n/*\n @angular/flex-layout - workaround for possible browser quirk with mediaQuery listeners\n see http://bit.ly/2sd4HMP\n*/\n@media "+r+" {.fx-query-test{ }}\n";i.appendChild(e.createTextNode(o))}e.head.appendChild(i),n.forEach(function(t){return It[t]=i})}catch(t){console.error(t)}}}function I(t,e){return e&&!!window.matchMedia("all").addListener?window.matchMedia(t):{matches:"all"===t||""===t,media:t,addListener:function(){},removeListener:function(){}}}function E(t){return!!t&&t.mediaQuery.startsWith(kt)}function S(t){return Array.isArray(t)?t:[t]}function C(t,e){var n=e.findByAlias(t)||e.findByQuery(t);return n?n.mediaQuery:t}function k(t){return t.map(function(t){return t.split(",")}).reduce(function(t,e){return t.concat(e)}).map(function(t){return t.trim()})}function j(t){for(var e in t){var n=t[e]||"";switch(e){case"display":t.display="flex"===n?["-webkit-flex","flex"]:"inline-flex"===n?["-webkit-inline-flex","inline-flex"]:n;break;case"align-items":case"align-self":case"align-content":case"flex":case"flex-basis":case"flex-flow":case"flex-grow":case"flex-shrink":case"flex-wrap":case"justify-content":t["-webkit-"+e]=n;break;case"flex-direction":n=n||"row",t["-webkit-flex-direction"]=n,t["flex-direction"]=n;break;case"order":t.order=t["-webkit-"+e]=isNaN(+n)?"0":n}}return t}function R(t,e,n){void 0===e&&(e="1"),void 0===n&&(n="1");var r=[e,n,t],i=t.indexOf("calc");if(i>0){r[2]=O(t.substring(i).trim());var o=t.substr(0,i).trim().split(" ");2==o.length&&(r[0]=o[0],r[1]=o[1])}else if(0==i)r[2]=O(t.trim());else{var o=t.split(" ");r=3===o.length?o:[e,n,t]}return r}function O(t){return t.replace(/[\s]/g,"").replace(/[\/\*\+\-]/g," $& ")}function M(t,e,n,r){if(void 0!==r){var i=t.get(e);i||(i=new Map,t.set(e,i)),i.set(n,r)}}function D(t){var e=typeof t;return"object"===e?t.constructor===Array?"array":t.constructor===Set?"set":"object":e}function P(t,e){return void 0===e&&(e=";"),String(t).trim().split(e).map(function(t){return t.trim()}).filter(function(t){return""!==t})}function _(t,e){var n=function(t){return e&&(t.value=e(t.value)),t};return t.map(F).filter(function(t){return!!t}).map(n).reduce(B,{})}function L(t,e){var n=[];return"set"===D(t)?t.forEach(function(t){return n.push(t)}):Object.keys(t).forEach(function(e){n.push(e+":"+t[e])}),_(n,e)}function F(t){var e=t.split(":"),n=e[0],r=e.slice(1);return new $t(n,r.join(":"))}function B(t,e){return e.key&&(t[e.key]=e.value),t}function T(t,e){var n=function(t){return e&&(t.value=e(t.value)),t};return t.map(F).filter(function(t){return!!t}).map(n).reduce(B,{})}function V(t){var e=G(t);return H(e[0],e[1],e[2])}function G(t){t=t?t.toLowerCase():"";var e=t.split(" "),n=e[0],r=e[1],i=e[2];return ie.find(function(t){return t===n})||(n=ie[0]),r===re&&(r=i!==re?i:"",i=re),[n,N(r),!!i]}function Q(t){return G(t)[0].indexOf("row")>-1}function N(t){if(t)switch(t.toLowerCase()){case"reverse":case"wrap-reverse":case"reverse-wrap":t="wrap-reverse";break;case"no":case"none":case"nowrap":t="nowrap";break;default:t="wrap"}return t}function H(t,e,n){return void 0===e&&(e=null),void 0===n&&(n=!1),{display:n?"inline-flex":"flex","box-sizing":"border-box","flex-direction":t,"flex-wrap":e||null}}function W(t,e){var n="0px",r=t,i="0px";return"rtl"===e?i=t:n=t,{padding:"0px "+n+" "+r+" "+i}}function K(t,e){var n="0px",r="-"+t,i="0px";return"rtl"===e?i="-"+t:n="-"+t,{margin:"0px "+n+" "+r+" "+i}}function U(t,e){switch(e){case"column":return"margin-bottom";case"column-reverse":return"margin-top";case"row":return"rtl"===t?"margin-left":"margin-right";case"row-reverse":return"rtl"===t?"margin-right":"margin-left";default:return"rtl"===t?"margin-left":"margin-right"}}function Y(t,e){var n=U(e.directionality,e.layout),r=X({},ce);return r[n]=t,r}function z(t){for(var e=[],n=1;n-1})),a=new r.Observable(function(e){var r=n.registerQuery(t);if(r.length){var i=r.pop();r.forEach(function(t){e.next(t)}),n.source.next(i)}e.complete()});return r.merge(a,o)}return this._observable$},t.prototype.registerQuery=function(t){var e=this,n=Array.isArray(t)?t:[t],r=[];return A(n,this._document),n.forEach(function(t){var n=function(n){e._zone.run(function(){return e.source.next(new rt(n.matches,t))})},i=e.registry.get(t);i||(i=e.buildMQL(t),i.addListener(n),e.registry.set(t,i)),i.matches&&r.push(new rt(!0,t))}),r},t.prototype.buildMQL=function(t){return I(t,n.isPlatformBrowser(this._platformId))},t.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[{type:e.NgZone},{type:Object,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]},{type:void 0,decorators:[{type:e.Inject,args:[n.DOCUMENT]}]}]},t.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new t(e.ɵɵinject(e.NgZone),e.ɵɵinject(e.PLATFORM_ID),e.ɵɵinject(n.DOCUMENT))},token:t,providedIn:"root"}),t}(),It={},Et=function(t){function r(e,n,r,i){var o=t.call(this,e,n,r)||this;return o._breakpoints=i,o.autoRegisterQueries=!0,o.useOverlaps=!1,o}return l(r,t),r.prototype.clearAll=function(){this.registry.forEach(function(t){t.destroy()}),this.registry.clear(),this.useOverlaps=!1},r.prototype.activate=function(t,e){return void 0===e&&(e=!1),e=e||this.useOverlaps,t=this._validateQuery(t),!e&&this.isActive(t)||(this._deactivateAll(),this._registerMediaQuery(t),this._activateWithOverlaps(t,e)),this.hasActivated},r.prototype._validateQuery=function(t){var e=this._breakpoints.findByAlias(t);return e&&e.mediaQuery||t},r.prototype._activateWithOverlaps=function(t,e){if(e){var n=this._breakpoints.findByQuery(t),r=n?n.alias:"unknown";switch(r){case"lg":this._activateByAlias("lt-xl");break;case"md":this._activateByAlias("lt-xl, lt-lg");break;case"sm":this._activateByAlias("lt-xl, lt-lg, lt-md");break;case"xs":this._activateByAlias("lt-xl, lt-lg, lt-md, lt-sm")}switch(r){case"xl":this._activateByAlias("gt-lg, gt-md, gt-sm, gt-xs");break;case"lg":this._activateByAlias("gt-md, gt-sm, gt-xs");break;case"md":this._activateByAlias("gt-sm, gt-xs");break;case"sm":this._activateByAlias("gt-xs")}}return this._activateByQuery(t)},r.prototype._activateByAlias=function(t){var e=this,n=function(t){var n=e._breakpoints.findByAlias(t);e._activateByQuery(n?n.mediaQuery:t)};t.split(",").forEach(function(t){return n(t.trim())})},r.prototype._activateByQuery=function(t){var e=this.registry.get(t);return e&&!this.isActive(t)&&this.registry.set(t,e.activate()),this.hasActivated},r.prototype._deactivateAll=function(){return this.registry.forEach(function(t){t.deactivate()}),this},r.prototype._registerMediaQuery=function(t){!this.registry.has(t)&&this.autoRegisterQueries&&this.registerQuery(t)},r.prototype.buildMQL=function(t){return new St(t)},Object.defineProperty(r.prototype,"hasActivated",{get:function(){return this.activations.length>0},enumerable:!0,configurable:!0}),r.decorators=[{type:e.Injectable}],r.ctorParameters=function(){return[{type:e.NgZone},{type:Object,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]},{type:void 0,decorators:[{type:e.Inject,args:[n.DOCUMENT]}]},{type:wt}]},r}(At),St=function(){function t(t){this._mediaQuery=t,this._isActive=!1,this._listeners=[],this.onchange=null}return Object.defineProperty(t.prototype,"matches",{get:function(){return this._isActive},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"media",{get:function(){return this._mediaQuery},enumerable:!0,configurable:!0}),t.prototype.destroy=function(){this.deactivate(),this._listeners=[]},t.prototype.activate=function(){var t=this;return this._isActive||(this._isActive=!0,this._listeners.forEach(function(e){e.call(null,t)})),this},t.prototype.deactivate=function(){var t=this;return this._isActive&&(this._isActive=!1,this._listeners.forEach(function(e){e.call(null,t)})),this},t.prototype.addListener=function(t){if(-1===this._listeners.indexOf(t)&&this._listeners.push(t),this._isActive){t.call(null,this)}},t.prototype.removeListener=function(t){},t.prototype.addEventListener=function(t,e,n){},t.prototype.removeEventListener=function(t,e,n){},t.prototype.dispatchEvent=function(t){return!1},t}(),Ct={provide:At,useClass:Et},kt="print",jt={alias:kt,mediaQuery:kt,priority:1e3},Rt=function(){function t(t,e,n){this.breakpoints=t,this.layoutConfig=e,this._platformId=n,this.registeredBeforeAfterPrintHooks=!1,this.isPrintingBeforeAfterEvent=!1,this.isPrinting=!1,this.queue=new Ot,this.deactivations=[]}return t.prototype.withPrintQuery=function(t){return t.concat([kt])},t.prototype.isPrintEvent=function(t){return t.mediaQuery.startsWith(kt)},Object.defineProperty(t.prototype,"printAlias",{get:function(){return this.layoutConfig.printWithBreakpoints||[]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"printBreakPoints",{get:function(){var t=this;return this.printAlias.map(function(e){return t.breakpoints.findByAlias(e)}).filter(function(t){return null!==t})},enumerable:!0,configurable:!0}),t.prototype.getEventBreakpoints=function(t){var e=t.mediaQuery,n=this.breakpoints.findByQuery(e);return(n?this.printBreakPoints.concat([n]):this.printBreakPoints).sort(b)},t.prototype.updateEvent=function(t){var e=this.breakpoints.findByQuery(t.mediaQuery);return this.isPrintEvent(t)&&(e=this.getEventBreakpoints(t)[0],t.mediaQuery=e?e.mediaQuery:""),c(t,e)},t.prototype.registerBeforeAfterPrintHooks=function(t){var e=this;n.isPlatformBrowser(this._platformId)&&!this.registeredBeforeAfterPrintHooks&&(this.registeredBeforeAfterPrintHooks=!0,window.addEventListener("beforeprint",function(){e.isPrinting||(e.isPrintingBeforeAfterEvent=!0,e.startPrinting(t,e.getEventBreakpoints(new rt(!0,kt))),t.updateStyles())}),window.addEventListener("afterprint",function(){e.isPrintingBeforeAfterEvent=!1,e.isPrinting&&(e.stopPrinting(t),t.updateStyles())}))},t.prototype.interceptEvents=function(t){var e=this;return this.registerBeforeAfterPrintHooks(t),function(n){e.isPrintEvent(n)?n.matches&&!e.isPrinting?(e.startPrinting(t,e.getEventBreakpoints(n)),t.updateStyles()):n.matches||!e.isPrinting||e.isPrintingBeforeAfterEvent||(e.stopPrinting(t),t.updateStyles()):e.collectActivations(n)}},t.prototype.blockPropagation=function(){var t=this;return function(e){return!(t.isPrinting||t.isPrintEvent(e))}},t.prototype.startPrinting=function(t,e){this.isPrinting=!0,t.activatedBreakpoints=this.queue.addPrintBreakpoints(e)},t.prototype.stopPrinting=function(t){t.activatedBreakpoints=this.deactivations,this.deactivations=[],this.queue.clear(),this.isPrinting=!1},t.prototype.collectActivations=function(t){if(!this.isPrinting||this.isPrintingBeforeAfterEvent)if(t.matches)this.isPrintingBeforeAfterEvent||(this.deactivations=[]);else{var e=this.breakpoints.findByQuery(t.mediaQuery);e&&(this.deactivations.push(e),this.deactivations.sort(b))}},t.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[{type:wt},{type:void 0,decorators:[{type:e.Inject,args:[at]}]},{type:Object,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]}]},t.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new t(e.ɵɵinject(wt),e.ɵɵinject(at),e.ɵɵinject(e.PLATFORM_ID))},token:t,providedIn:"root"}),t}(),Ot=function(){function t(){this.printBreakpoints=[]}return t.prototype.addPrintBreakpoints=function(t){var e=this;return t.push(jt),t.sort(b),t.forEach(function(t){return e.addBreakpoint(t)}),this.printBreakpoints},t.prototype.addBreakpoint=function(t){if(t){void 0===this.printBreakpoints.find(function(e){return e.mediaQuery===t.mediaQuery})&&(this.printBreakpoints=E(t)?[t].concat(this.printBreakpoints):this.printBreakpoints.concat([t]))}},t.prototype.clear=function(){this.printBreakpoints=[]},t}(),Mt=function(){function t(t,e,n){this.breakpoints=t,this.matchMedia=e,this.hook=n,this.filterOverlaps=!1,this.destroyed$=new r.Subject,this._media$=this.watchActivations(),this.media$=this._media$.pipe(i.filter(function(t){return t.length>0}),i.map(function(t){return t[0]}))}return t.prototype.ngOnDestroy=function(){this.destroyed$.next(),this.destroyed$.complete()},t.prototype.asObservable=function(){return this._media$},t.prototype.isActive=function(t){var e=this;return k(S(t)).some(function(t){var n=C(t,e.breakpoints);return e.matchMedia.isActive(n)})},t.prototype.watchActivations=function(){var t=this.breakpoints.items.map(function(t){return t.mediaQuery});return this.buildObservable(t)},t.prototype.buildObservable=function(t){var e=this,n=function(t){var e=function(t){return t.mediaQuery.length>0};return t.filter(e).length>0},o=function(t){return e.filterOverlaps?t.filter(function(t){var n=e.breakpoints.findByQuery(t.mediaQuery);return!n||!n.overlapping}):t};return this.matchMedia.observe(this.hook.withPrintQuery(t)).pipe(i.filter(function(t){return t.matches}),i.debounceTime(0,r.asapScheduler),i.switchMap(function(t){return r.of(e.findAllActivations())}),i.map(o),i.filter(n),i.takeUntil(this.destroyed$))},t.prototype.findAllActivations=function(){var t=this,e=function(e){return c(e,t.breakpoints.findByQuery(e.mediaQuery))},n=function(e){return t.hook.isPrintEvent(e)?t.hook.updateEvent(e):e};return this.matchMedia.activations.map(function(t){return new rt(!0,t)}).map(n).map(e).sort(b)},t.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[{type:wt},{type:At},{type:Rt}]},t.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new t(e.ɵɵinject(wt),e.ɵɵinject(At),e.ɵɵinject(Rt))},token:t,providedIn:"root"}),t}(),Dt=function(){function t(t,e,n,r,i){this.breakpoints=t,this.matchMedia=e,this.layoutConfig=n,this._platformId=r,this._document=i,this.hasCachedRegistryMatches=!1,this.originalActivations=[],this.originalRegistry=new Map}return t.prototype.activate=function(t){t=t.map(function(t){return t.trim()}),this.saveActivations(),this.deactivateAll(),this.setActivations(t),this.prepareAutoRestore()},t.prototype.restore=function(){if(this.hasCachedRegistryMatches){var t=function(t){return t.mediaQuery},e=this.originalActivations.map(t);try{this.deactivateAll(),this.restoreRegistryMatches(),this.setActivations(e)}finally{this.originalActivations=[],this.resizeSubscription&&this.resizeSubscription.unsubscribe()}}},t.prototype.prepareAutoRestore=function(){if(n.isPlatformBrowser(this._platformId)&&this._document&&this.layoutConfig.mediaTriggerAutoRestore){var t=r.fromEvent(window,"resize").pipe(i.take(1));this.resizeSubscription=t.subscribe(this.restore.bind(this))}},t.prototype.deactivateAll=function(){var t=this.currentActivations;this.forceRegistryMatches(t,!1),this.simulateMediaChanges(t,!1)},t.prototype.saveActivations=function(){var t=this;if(!this.hasCachedRegistryMatches){var e=function(t){return new rt(!0,t)},n=function(e){return c(e,t.breakpoints.findByQuery(e.mediaQuery))};this.originalActivations=this.currentActivations.map(e).map(n).sort(b),this.cacheRegistryMatches()}},t.prototype.setActivations=function(t){this.originalRegistry&&this.forceRegistryMatches(t,!0),this.simulateMediaChanges(t)},t.prototype.simulateMediaChanges=function(t,e){var n=this;void 0===e&&(e=!0);var r=function(t){var e=n.breakpoints,r=e.findByAlias(t)||e.findByQuery(t);return r?r.mediaQuery:t},i=function(t){return n.emitChangeEvent(e,t)};t.map(r).forEach(i)},t.prototype.forceRegistryMatches=function(t,e){var n=new Map;t.forEach(function(t){n.set(t,{matches:e})}),this.matchMedia.registry=n},t.prototype.cacheRegistryMatches=function(){var t=this.originalRegistry;t.clear(),this.matchMedia.registry.forEach(function(e,n){t.set(n,e)}),this.hasCachedRegistryMatches=!0},t.prototype.restoreRegistryMatches=function(){var t=this.matchMedia.registry;t.clear(),this.originalRegistry.forEach(function(e,n){t.set(n,e)}),this.originalRegistry.clear(),this.hasCachedRegistryMatches=!1},t.prototype.emitChangeEvent=function(t,e){this.matchMedia.source.next(new rt(t,e))},Object.defineProperty(t.prototype,"currentActivations",{get:function(){return this.matchMedia.activations},enumerable:!0,configurable:!0}),t.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[{type:wt},{type:At},{type:void 0,decorators:[{type:e.Inject,args:[at]}]},{type:Object,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]},{type:void 0,decorators:[{type:e.Inject,args:[n.DOCUMENT]}]}]},t.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new t(e.ɵɵinject(wt),e.ɵɵinject(At),e.ɵɵinject(at),e.ɵɵinject(e.PLATFORM_ID),e.ɵɵinject(n.DOCUMENT))},token:t,providedIn:"root"}),t}(),Pt=function(){function t(t,e,n,r){this._serverStylesheet=t,this._serverModuleLoaded=e,this._platformId=n,this.layoutConfig=r}return t.prototype.applyStyleToElement=function(t,e,n){void 0===n&&(n=null);var r={};"string"==typeof e&&(r[e]=n,e=r),r=this.layoutConfig.disableVendorPrefixes?e:j(e),this._applyMultiValueStyleToElement(r,t)},t.prototype.applyStyleToElements=function(t,e){var n=this;void 0===e&&(e=[]);var r=this.layoutConfig.disableVendorPrefixes?t:j(t);e.forEach(function(t){n._applyMultiValueStyleToElement(r,t)})},t.prototype.getFlowDirection=function(t){var e=this.lookupStyle(t,"flex-direction"),r=this.lookupInlineStyle(t,"flex-direction")||n.isPlatformServer(this._platformId)&&this._serverModuleLoaded?e:"";return[e||"row",r]},t.prototype.lookupAttributeValue=function(t,e){return t.getAttribute(e)||""},t.prototype.lookupInlineStyle=function(t,e){return n.isPlatformBrowser(this._platformId)?t.style.getPropertyValue(e):this._getServerStyle(t,e)},t.prototype.lookupStyle=function(t,e,r){void 0===r&&(r=!1);var i="";if(t){(i=this.lookupInlineStyle(t,e))||(n.isPlatformBrowser(this._platformId)?r||(i=getComputedStyle(t).getPropertyValue(e)):this._serverModuleLoaded&&(i=this._serverStylesheet.getStyleForElement(t,e)))}return i?i.trim():""},t.prototype._applyMultiValueStyleToElement=function(t,e){var r=this;Object.keys(t).sort().forEach(function(i){var o=t[i],a=Array.isArray(o)?o:[o];a.sort();for(var s=0,l=a;s0){var a=o.indexOf(":");if(-1===a)throw new Error("Invalid CSS style: "+o);var s=o.substr(0,a).trim();e[s]=o.substr(a+1).trim()}}return e},t.prototype._writeStyleAttribute=function(t,e){var n="";for(var r in e){e[r]&&(n+=r+":"+e[r]+";")}t.setAttribute("style",n)},t.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],t.ctorParameters=function(){return[{type:it,decorators:[{type:e.Optional}]},{type:Boolean,decorators:[{type:e.Optional},{type:e.Inject,args:[st]}]},{type:Object,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]},{type:void 0,decorators:[{type:e.Inject,args:[at]}]}]},t.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new t(e.ɵɵinject(it,8),e.ɵɵinject(st,8),e.ɵɵinject(e.PLATFORM_ID),e.ɵɵinject(at))},token:t,providedIn:"root"}),t}(),_t=function(){function t(){this.shouldCache=!0}return t.prototype.sideEffect=function(t,e,n){},t}(),Lt=function(){function t(t,e,n){this.matchMedia=t,this.breakpoints=e,this.hook=n,this.activatedBreakpoints=[],this.elementMap=new Map,this.elementKeyMap=new WeakMap,this.watcherMap=new WeakMap,this.updateMap=new WeakMap,this.clearMap=new WeakMap,this.subject=new r.Subject,this.observeActivations()}return Object.defineProperty(t.prototype,"activatedAlias",{get:function(){return this.activatedBreakpoints[0]?this.activatedBreakpoints[0].alias:""},enumerable:!0,configurable:!0}),t.prototype.onMediaChange=function(t){var e=this.findByQuery(t.mediaQuery);e&&(t=c(t,e),t.matches&&-1===this.activatedBreakpoints.indexOf(e)?(this.activatedBreakpoints.push(e),this.activatedBreakpoints.sort(b),this.updateStyles()):t.matches||-1===this.activatedBreakpoints.indexOf(e)||(this.activatedBreakpoints.splice(this.activatedBreakpoints.indexOf(e),1),this.activatedBreakpoints.sort(b),this.updateStyles()))},t.prototype.init=function(t,e,n,r,i){void 0===i&&(i=[]),M(this.updateMap,t,e,n),M(this.clearMap,t,e,r),this.buildElementKeyMap(t,e),this.watchExtraTriggers(t,e,i)},t.prototype.getValue=function(t,e,n){var r=this.elementMap.get(t);if(r){var i=void 0!==n?r.get(n):this.getActivatedValues(r,e);if(i)return i.get(e)}},t.prototype.hasValue=function(t,e){var n=this.elementMap.get(t);if(n){var r=this.getActivatedValues(n,e);if(r)return void 0!==r.get(e)||!1}return!1},t.prototype.setValue=function(t,e,n,r){var i=this.elementMap.get(t);if(i){var o=(i.get(r)||new Map).set(e,n);i.set(r,o),this.elementMap.set(t,i)}else i=(new Map).set(r,(new Map).set(e,n)),this.elementMap.set(t,i);var a=this.getValue(t,e);void 0!==a&&this.updateElement(t,e,a)},t.prototype.trackValue=function(t,e){return this.subject.asObservable().pipe(i.filter(function(n){return n.element===t&&n.key===e}))},t.prototype.updateStyles=function(){var t=this;this.elementMap.forEach(function(e,n){var r=new Set(t.elementKeyMap.get(n)),i=t.getActivatedValues(e);i&&i.forEach(function(e,i){t.updateElement(n,i,e),r.delete(i)}),r.forEach(function(r){if(i=t.getActivatedValues(e,r)){var o=i.get(r);t.updateElement(n,r,o)}else t.clearElement(n,r)})})},t.prototype.clearElement=function(t,e){var n=this.clearMap.get(t);if(n){var r=n.get(e);r&&(r(),this.subject.next({element:t,key:e,value:""}))}},t.prototype.updateElement=function(t,e,n){var r=this.updateMap.get(t);if(r){var i=r.get(e);i&&(i(n),this.subject.next({element:t,key:e,value:n}))}},t.prototype.releaseElement=function(t){var e=this.watcherMap.get(t);e&&(e.forEach(function(t){return t.unsubscribe()}),this.watcherMap.delete(t));var n=this.elementMap.get(t);n&&(n.forEach(function(t,e){return n.delete(e)}),this.elementMap.delete(t))},t.prototype.triggerUpdate=function(t,e){var n=this,r=this.elementMap.get(t);if(r){var i=this.getActivatedValues(r,e);i&&(e?this.updateElement(t,e,i.get(e)):i.forEach(function(e,r){return n.updateElement(t,r,e)}))}},t.prototype.buildElementKeyMap=function(t,e){var n=this.elementKeyMap.get(t);n||(n=new Set,this.elementKeyMap.set(t,n)),n.add(e)},t.prototype.watchExtraTriggers=function(t,e,n){var i=this;if(n&&n.length){var o=this.watcherMap.get(t);o||(o=new Map,this.watcherMap.set(t,o));if(!o.get(e)){var a=r.merge.apply(void 0,n).subscribe(function(){var n=i.getValue(t,e);i.updateElement(t,e,n)});o.set(e,a)}}},t.prototype.findByQuery=function(t){return this.breakpoints.findByQuery(t)},t.prototype.getActivatedValues=function(t,e){for(var n=0;ni?1:-1});if(n.length>0){var r=this.directionality.value,i=this.layout;"row"===i&&"rtl"===r?this.styleCache=ye:"row"===i&&"rtl"!==r?this.styleCache=me:"column"===i&&"rtl"===r?this.styleCache=he:"column"===i&&"rtl"!==r&&(this.styleCache=xe),this.addStyles(t,{directionality:r,items:n,layout:i})}},n.prototype.clearStyles=function(){var e,n=Object.keys(this.mru).length>0,r=n?"padding":U(this.directionality.value,this.layout);n&&t.prototype.clearStyles.call(this),this.styleUtils.applyStyleToElements((e={},e[r]="",e),this.childrenNodes)},n.prototype.willDisplay=function(t){var e=this.marshal.getValue(t,"show-hide");return!0===e||void 0===e&&"none"!==this.styleUtils.lookupStyle(t,"display")},n.prototype.buildChildObservable=function(){var t=this;this.zone.runOutsideAngular(function(){"undefined"!=typeof MutationObserver&&(t.observer=new MutationObserver(function(e){var n=function(t){return t.addedNodes&&t.addedNodes.length>0||t.removedNodes&&t.removedNodes.length>0};e.some(n)&&t.observerSubject.next()}),t.observer.observe(t.nativeElement,{childList:!0}))})},n.ctorParameters=function(){return[{type:e.ElementRef},{type:e.NgZone},{type:s.Directionality},{type:Pt},{type:de,decorators:[{type:e.Optional}]},{type:Lt}]},n}(dt),fe=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=pe,e}return l(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n",inputs:pe}]}],n}(ge),ye=new Map,he=new Map,me=new Map,xe=new Map,ve=" grid",be=function(t){function n(e){var n=t.call(this)||this;return n.layoutConfig=e,n}return l(n,t),n.prototype.buildStyles=function(t,e){var n=t.split(" "),r=n[0],i=n[1],o=n.slice(2),a=o.join(" "),s=e.direction.indexOf("column")>-1?"column":"row",l=Q(s)?"max-width":"max-height",u=Q(s)?"min-width":"min-height",c=String(a).indexOf("calc")>-1,d=c||"auto"===a,p=String(a).indexOf("%")>-1&&!c,g=String(a).indexOf("px")>-1||String(a).indexOf("rem")>-1||String(a).indexOf("em")>-1||String(a).indexOf("vw")>-1||String(a).indexOf("vh")>-1,f=c||g;r="0"==r?0:r,i="0"==i?0:i;var y=!r&&!i,h={},m={"max-width":null,"max-height":null,"min-width":null,"min-height":null};switch(a||""){case"":var x=!1!==this.layoutConfig.useColumnBasisZero;a="row"===s?"0%":x?"0.000000001px":"auto";break;case"initial":case"nogrow":r=0,a="auto";break;case"grow":a="100%";break;case"noshrink":i=0,a="auto";break;case"auto":break;case"none":r=0,i=0,a="auto";break;default:f||p||isNaN(a)||(a+="%"),"0%"===a&&(f=!0),"0px"===a&&(a="0%"),h=c?z(m,{"flex-grow":r,"flex-shrink":i,"flex-basis":f?a:"100%"}):z(m,{flex:r+" "+i+" "+(f?a:"100%")})}return h.flex||h["flex-grow"]||(h=c?z(m,{"flex-grow":r,"flex-shrink":i,"flex-basis":a}):z(m,{flex:r+" "+i+" "+a})),"0%"!==a&&"0px"!==a&&"0.000000001px"!==a&&"auto"!==a&&(h[u]=y||f&&r?a:null,h[l]=y||!d&&i?a:null),h[u]||h[l]?e.hasWrap&&(h[c?"flex-basis":"flex"]=h[l]?c?h[l]:r+" "+i+" "+h[l]:c?h[u]:r+" "+i+" "+h[u]):h=c?z(m,{"flex-grow":r,"flex-shrink":i,"flex-basis":a}):z(m,{flex:r+" "+i+" "+a}),z(h,{"box-sizing":"border-box"})},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ctorParameters=function(){return[{type:void 0,decorators:[{type:e.Inject,args:[at]}]}]},n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n(e.ɵɵinject(at))},token:n,providedIn:"root"}),n}(_t),we=["fxFlex","fxFlex.xs","fxFlex.sm","fxFlex.md","fxFlex.lg","fxFlex.xl","fxFlex.lt-sm","fxFlex.lt-md","fxFlex.lt-lg","fxFlex.lt-xl","fxFlex.gt-xs","fxFlex.gt-sm","fxFlex.gt-md","fxFlex.gt-lg"],Ae=function(t){function n(e,n,r,o,a){var s=t.call(this,e,o,n,a)||this;return s.elRef=e,s.styleUtils=n,s.layoutConfig=r,s.styleBuilder=o,s.marshal=a,s.DIRECTIVE_KEY="flex",s.direction="",s.wrap=!1,s.flexGrow="1",s.flexShrink="1",s.init(),s.parentElement&&(s.marshal.trackValue(s.parentElement,"layout").pipe(i.takeUntil(s.destroySubject)).subscribe(s.onLayoutChange.bind(s)),s.marshal.trackValue(s.nativeElement,"layout-align").pipe(i.takeUntil(s.destroySubject)).subscribe(s.triggerReflow.bind(s))),s}return l(n,t),Object.defineProperty(n.prototype,"shrink",{get:function(){return this.flexShrink},set:function(t){this.flexShrink=t||"1",this.triggerReflow()},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"grow",{get:function(){return this.flexGrow},set:function(t){this.flexGrow=t||"1",this.triggerReflow()},enumerable:!0,configurable:!0}),n.prototype.onLayoutChange=function(t){var e=t.value,n=e.split(" ");this.direction=n[0],this.wrap=void 0!==n[1]&&"wrap"===n[1],this.triggerUpdate()},n.prototype.updateWithValue=function(t){var e=!1!==this.layoutConfig.addFlexToParent;this.direction||(this.direction=this.getFlexFlowDirection(this.parentElement,e));var n=this.direction,r=n.startsWith("row"),i=this.wrap;r&&i?this.styleCache=Ce:r&&!i?this.styleCache=Ee:!r&&i?this.styleCache=ke:r||i||(this.styleCache=Se);var o=String(t).replace(";",""),a=R(o,this.flexGrow,this.flexShrink);this.addStyles(a.join(" "),{direction:n,hasWrap:i})},n.prototype.triggerReflow=function(){var t=this.activatedValue;if(void 0!==t){var e=R(t,this.flexGrow,this.flexShrink);this.marshal.updateElement(this.nativeElement,this.DIRECTIVE_KEY,e.join(" "))}},n.ctorParameters=function(){return[{type:e.ElementRef},{type:Pt},{type:void 0,decorators:[{type:e.Inject,args:[at]}]},{type:be},{type:Lt}]},n.propDecorators={shrink:[{type:e.Input,args:["fxShrink"]}],grow:[{type:e.Input,args:["fxGrow"]}]},n}(dt),Ie=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=we,e}return l(n,t),n.decorators=[{type:e.Directive,args:[{inputs:we,selector:"\n [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n [fxFlex.gt-md], [fxFlex.gt-lg]\n"}]}],n}(Ae),Ee=new Map,Se=new Map,Ce=new Map,ke=new Map,je=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return l(n,t),n.prototype.buildStyles=function(t){return{order:t&&parseInt(t,10)||""}},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(_t),Re=["fxFlexOrder","fxFlexOrder.xs","fxFlexOrder.sm","fxFlexOrder.md","fxFlexOrder.lg","fxFlexOrder.xl","fxFlexOrder.lt-sm","fxFlexOrder.lt-md","fxFlexOrder.lt-lg","fxFlexOrder.lt-xl","fxFlexOrder.gt-xs","fxFlexOrder.gt-sm","fxFlexOrder.gt-md","fxFlexOrder.gt-lg"],Oe=function(t){function n(e,n,r,i){var o=t.call(this,e,r,n,i)||this;return o.elRef=e,o.styleUtils=n,o.styleBuilder=r,o.marshal=i,o.DIRECTIVE_KEY="flex-order",o.styleCache=Me,o.init(),o}return l(n,t),n.ctorParameters=function(){return[{type:e.ElementRef},{type:Pt},{type:je,decorators:[{type:e.Optional}]},{type:Lt}]},n}(dt),Me=new Map,De=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=Re,e}return l(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n",inputs:Re}]}],n}(Oe),Pe=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return l(n,t),n.prototype.buildStyles=function(t,e){var n;""===t&&(t="0");var r=String(t).indexOf("%")>-1;String(t).indexOf("px")>-1||r||isNaN(+t)||(t+="%");var i=e.isRtl?"margin-right":"margin-left";return Q(e.layout)?(n={},n[i]=""+t,n):{"margin-top":""+t}},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(_t),_e=["fxFlexOffset","fxFlexOffset.xs","fxFlexOffset.sm","fxFlexOffset.md","fxFlexOffset.lg","fxFlexOffset.xl","fxFlexOffset.lt-sm","fxFlexOffset.lt-md","fxFlexOffset.lt-lg","fxFlexOffset.lt-xl","fxFlexOffset.gt-xs","fxFlexOffset.gt-sm","fxFlexOffset.gt-md","fxFlexOffset.gt-lg"],Le=function(t){function n(e,n,r,o,a){var s=t.call(this,e,r,a,o)||this;return s.elRef=e,s.directionality=n,s.styleBuilder=r,s.marshal=o,s.styler=a,s.DIRECTIVE_KEY="flex-offset",s.init([s.directionality.change]),s.parentElement&&s.marshal.trackValue(s.parentElement,"layout-gap").pipe(i.takeUntil(s.destroySubject)).subscribe(s.triggerUpdate.bind(s)),s}return l(n,t),n.prototype.updateWithValue=function(t){void 0===t&&(t="");var e=this.getFlexFlowDirection(this.parentElement,!0),n="rtl"===this.directionality.value;"row"===e&&n?this.styleCache=Be:"row"!==e||n?"column"===e&&n?this.styleCache=Te:"column"!==e||n||(this.styleCache=Ge):this.styleCache=Ve,this.addStyles(t+"",{layout:e,isRtl:n})},n.ctorParameters=function(){return[{type:e.ElementRef},{type:s.Directionality},{type:Pe,decorators:[{type:e.Optional}]},{type:Lt},{type:Pt}]},n}(dt),Fe=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=_e,e}return l(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n",inputs:_e}]}],n}(Le),Be=new Map,Te=new Map,Ve=new Map,Ge=new Map,Qe=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return l(n,t),n.prototype.buildStyles=function(t){t=t||"stretch";var e={};switch(t){case"start":e["align-self"]="flex-start";break;case"end":e["align-self"]="flex-end";break;default:e["align-self"]=t}return e},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(_t),Ne=["fxFlexAlign","fxFlexAlign.xs","fxFlexAlign.sm","fxFlexAlign.md","fxFlexAlign.lg","fxFlexAlign.xl","fxFlexAlign.lt-sm","fxFlexAlign.lt-md","fxFlexAlign.lt-lg","fxFlexAlign.lt-xl","fxFlexAlign.gt-xs","fxFlexAlign.gt-sm","fxFlexAlign.gt-md","fxFlexAlign.gt-lg"],He=function(t){function n(e,n,r,i){var o=t.call(this,e,r,n,i)||this;return o.elRef=e,o.styleUtils=n,o.styleBuilder=r,o.marshal=i,o.DIRECTIVE_KEY="flex-align",o.styleCache=We,o.init(),o}return l(n,t),n.ctorParameters=function(){return[{type:e.ElementRef},{type:Pt},{type:Qe,decorators:[{type:e.Optional}]},{type:Lt}]},n}(dt),We=new Map,Ke=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=Ne,e}return l(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n",inputs:Ne}]}],n}(He),Ue={margin:0,width:"100%",height:"100%","min-width":"100%","min-height":"100%"},Ye=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return l(n,t),n.prototype.buildStyles=function(t){return Ue},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(_t),ze=function(t){function n(e,n,r,i){var o=t.call(this,e,r,n,i)||this;return o.elRef=e,o.styleUtils=n,o.styleBuilder=r,o.marshal=i,o.styleCache=qe,o.addStyles(""),o}return l(n,t),n.decorators=[{type:e.Directive,args:[{selector:"[fxFill], [fxFlexFill]"}]}],n.ctorParameters=function(){return[{type:e.ElementRef},{type:Pt},{type:Ye},{type:Lt}]},n}(dt),qe=new Map,$e=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return l(n,t),n.prototype.buildStyles=function(t,e){var n={},r=t.split(" "),i=r[0],o=r[1];switch(i){case"center":n["justify-content"]="center";break;case"space-around":n["justify-content"]="space-around";break;case"space-between":n["justify-content"]="space-between";break;case"space-evenly":n["justify-content"]="space-evenly";break;case"end":case"flex-end":n["justify-content"]="flex-end";break;case"start":case"flex-start":default:n["justify-content"]="flex-start"}switch(o){case"start":case"flex-start":n["align-items"]=n["align-content"]="flex-start";break;case"center":n["align-items"]=n["align-content"]="center";break;case"end":case"flex-end":n["align-items"]=n["align-content"]="flex-end";break;case"space-between":n["align-content"]="space-between",n["align-items"]="stretch";break;case"space-around":n["align-content"]="space-around",n["align-items"]="stretch";break;case"baseline":n["align-content"]="stretch",n["align-items"]="baseline";break;case"stretch":default:n["align-items"]=n["align-content"]="stretch"}return z(n,{display:e.inline?"inline-flex":"flex","flex-direction":e.layout,"box-sizing":"border-box","max-width":"stretch"===o?Q(e.layout)?null:"100%":null,"max-height":"stretch"===o&&Q(e.layout)?"100%":null})},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(_t),Ze=["fxLayoutAlign","fxLayoutAlign.xs","fxLayoutAlign.sm","fxLayoutAlign.md","fxLayoutAlign.lg","fxLayoutAlign.xl","fxLayoutAlign.lt-sm","fxLayoutAlign.lt-md","fxLayoutAlign.lt-lg","fxLayoutAlign.lt-xl","fxLayoutAlign.gt-xs","fxLayoutAlign.gt-sm","fxLayoutAlign.gt-md","fxLayoutAlign.gt-lg"],Je=function(t){function n(e,n,r,o){var a=t.call(this,e,r,n,o)||this;return a.elRef=e,a.styleUtils=n,a.styleBuilder=r,a.marshal=o,a.DIRECTIVE_KEY="layout-align",a.layout="row",a.inline=!1,a.init(), +a.marshal.trackValue(a.nativeElement,"layout").pipe(i.takeUntil(a.destroySubject)).subscribe(a.onLayoutChange.bind(a)),a}return l(n,t),n.prototype.updateWithValue=function(t){var e=this.layout||"row",n=this.inline;"row"===e&&n?this.styleCache=on:"row"!==e||n?"row-reverse"===e&&n?this.styleCache=sn:"row-reverse"!==e||n?"column"===e&&n?this.styleCache=an:"column"!==e||n?"column-reverse"===e&&n?this.styleCache=ln:"column-reverse"!==e||n||(this.styleCache=rn):this.styleCache=en:this.styleCache=nn:this.styleCache=tn,this.addStyles(t,{layout:e,inline:n})},n.prototype.onLayoutChange=function(t){var e=this,n=t.value.split(" ");this.layout=n[0],this.inline=t.value.includes("inline"),ie.find(function(t){return t===e.layout})||(this.layout="row"),this.triggerUpdate()},n.ctorParameters=function(){return[{type:e.ElementRef},{type:Pt},{type:$e,decorators:[{type:e.Optional}]},{type:Lt}]},n}(dt),Xe=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=Ze,e}return l(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n",inputs:Ze}]}],n}(Je),tn=new Map,en=new Map,nn=new Map,rn=new Map,on=new Map,an=new Map,sn=new Map,ln=new Map,un=[le,fe,Xe,De,Fe,ze,Ke,Ie],cn=function(){function t(){}return t.decorators=[{type:e.NgModule,args:[{imports:[nt,s.BidiModule],declarations:un.slice(),exports:un.slice()}]}],t}(),dn="stretch",pn="stretch",gn=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return l(n,t),n.prototype.buildStyles=function(t){return q(t||dn)},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(_t),fn=function(t){function n(e,n,r,i){var o=t.call(this,e,n,r,i)||this;return o.elementRef=e,o.styleBuilder=n,o.styler=r,o.marshal=i,o.DIRECTIVE_KEY="grid-align",o.styleCache=yn,o.init(),o}return l(n,t),n.ctorParameters=function(){return[{type:e.ElementRef},{type:gn,decorators:[{type:e.Optional}]},{type:Pt},{type:Lt}]},n}(dt),yn=new Map,hn=["gdGridAlign","gdGridAlign.xs","gdGridAlign.sm","gdGridAlign.md","gdGridAlign.lg","gdGridAlign.xl","gdGridAlign.lt-sm","gdGridAlign.lt-md","gdGridAlign.lt-lg","gdGridAlign.lt-xl","gdGridAlign.gt-xs","gdGridAlign.gt-sm","gdGridAlign.gt-md","gdGridAlign.gt-lg"],mn=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=hn,e}return l(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdGridAlign],\n [gdGridAlign.xs], [gdGridAlign.sm], [gdGridAlign.md], [gdGridAlign.lg],[gdGridAlign.xl],\n [gdGridAlign.lt-sm], [gdGridAlign.lt-md], [gdGridAlign.lt-lg], [gdGridAlign.lt-xl],\n [gdGridAlign.gt-xs], [gdGridAlign.gt-sm], [gdGridAlign.gt-md], [gdGridAlign.gt-lg]\n",inputs:hn}]}],n}(fn),xn="start",vn="stretch",bn=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return l(n,t),n.prototype.buildStyles=function(t,e){return $(t||xn+" "+vn,e.inline)},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(_t),wn=function(t){function n(e,n,r,i){var o=t.call(this,e,n,r,i)||this;return o.elementRef=e,o.styleBuilder=n,o.styler=r,o.marshal=i,o.DIRECTIVE_KEY="grid-align-columns",o._inline=!1,o.init(),o}return l(n,t),Object.defineProperty(n.prototype,"inline",{get:function(){return this._inline},set:function(t){this._inline=o.coerceBooleanProperty(t)},enumerable:!0,configurable:!0}),n.prototype.updateWithValue=function(t){this.styleCache=this.inline?In:An,this.addStyles(t,{inline:this.inline})},n.ctorParameters=function(){return[{type:e.ElementRef},{type:bn,decorators:[{type:e.Optional}]},{type:Pt},{type:Lt}]},n.propDecorators={inline:[{type:e.Input,args:["gdInline"]}]},n}(dt),An=new Map,In=new Map,En=["gdAlignColumns","gdAlignColumns.xs","gdAlignColumns.sm","gdAlignColumns.md","gdAlignColumns.lg","gdAlignColumns.xl","gdAlignColumns.lt-sm","gdAlignColumns.lt-md","gdAlignColumns.lt-lg","gdAlignColumns.lt-xl","gdAlignColumns.gt-xs","gdAlignColumns.gt-sm","gdAlignColumns.gt-md","gdAlignColumns.gt-lg"],Sn=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=En,e}return l(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdAlignColumns],\n [gdAlignColumns.xs], [gdAlignColumns.sm], [gdAlignColumns.md],\n [gdAlignColumns.lg], [gdAlignColumns.xl], [gdAlignColumns.lt-sm],\n [gdAlignColumns.lt-md], [gdAlignColumns.lt-lg], [gdAlignColumns.lt-xl],\n [gdAlignColumns.gt-xs], [gdAlignColumns.gt-sm], [gdAlignColumns.gt-md],\n [gdAlignColumns.gt-lg]\n",inputs:En}]}],n}(wn),Cn="start",kn="stretch",jn=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return l(n,t),n.prototype.buildStyles=function(t,e){return Z(t||Cn+" "+kn,e.inline)},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(_t),Rn=function(t){function n(e,n,r,i){var o=t.call(this,e,n,r,i)||this;return o.elementRef=e,o.styleBuilder=n,o.styler=r,o.marshal=i,o.DIRECTIVE_KEY="grid-align-rows",o._inline=!1,o.init(),o}return l(n,t),Object.defineProperty(n.prototype,"inline",{get:function(){return this._inline},set:function(t){this._inline=o.coerceBooleanProperty(t)},enumerable:!0,configurable:!0}),n.prototype.updateWithValue=function(t){this.styleCache=this.inline?Mn:On,this.addStyles(t,{inline:this.inline})},n.ctorParameters=function(){return[{type:e.ElementRef},{type:jn,decorators:[{type:e.Optional}]},{type:Pt},{type:Lt}]},n.propDecorators={inline:[{type:e.Input,args:["gdInline"]}]},n}(dt),On=new Map,Mn=new Map,Dn=["gdAlignRows","gdAlignRows.xs","gdAlignRows.sm","gdAlignRows.md","gdAlignRows.lg","gdAlignRows.xl","gdAlignRows.lt-sm","gdAlignRows.lt-md","gdAlignRows.lt-lg","gdAlignRows.lt-xl","gdAlignRows.gt-xs","gdAlignRows.gt-sm","gdAlignRows.gt-md","gdAlignRows.gt-lg"],Pn=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=Dn,e}return l(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdAlignRows],\n [gdAlignRows.xs], [gdAlignRows.sm], [gdAlignRows.md],\n [gdAlignRows.lg], [gdAlignRows.xl], [gdAlignRows.lt-sm],\n [gdAlignRows.lt-md], [gdAlignRows.lt-lg], [gdAlignRows.lt-xl],\n [gdAlignRows.gt-xs], [gdAlignRows.gt-sm], [gdAlignRows.gt-md],\n [gdAlignRows.gt-lg]\n",inputs:Dn}]}],n}(Rn),_n=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return l(n,t),n.prototype.buildStyles=function(t){return{"grid-area":t||"auto"}},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(_t),Ln=function(t){function n(e,n,r,i){var o=t.call(this,e,r,n,i)||this;return o.elRef=e,o.styleUtils=n,o.styleBuilder=r,o.marshal=i,o.DIRECTIVE_KEY="grid-area",o.styleCache=Fn,o.init(),o}return l(n,t),n.ctorParameters=function(){return[{type:e.ElementRef},{type:Pt},{type:_n,decorators:[{type:e.Optional}]},{type:Lt}]},n}(dt),Fn=new Map,Bn=["gdArea","gdArea.xs","gdArea.sm","gdArea.md","gdArea.lg","gdArea.xl","gdArea.lt-sm","gdArea.lt-md","gdArea.lt-lg","gdArea.lt-xl","gdArea.gt-xs","gdArea.gt-sm","gdArea.gt-md","gdArea.gt-lg"],Tn=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=Bn,e}return l(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdArea],\n [gdArea.xs], [gdArea.sm], [gdArea.md], [gdArea.lg], [gdArea.xl],\n [gdArea.lt-sm], [gdArea.lt-md], [gdArea.lt-lg], [gdArea.lt-xl],\n [gdArea.gt-xs], [gdArea.gt-sm], [gdArea.gt-md], [gdArea.gt-lg]\n",inputs:Bn}]}],n}(Ln),Vn=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return l(n,t),n.prototype.buildStyles=function(t,e){var n=(t||"none").split("|").map(function(t){return'"'+t.trim()+'"'});return{display:e.inline?"inline-grid":"grid","grid-template-areas":n.join(" ")}},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(_t),Gn=function(t){function n(e,n,r,i){var o=t.call(this,e,r,n,i)||this;return o.elRef=e,o.styleUtils=n,o.styleBuilder=r,o.marshal=i,o.DIRECTIVE_KEY="grid-areas",o._inline=!1,o.init(),o}return l(n,t),Object.defineProperty(n.prototype,"inline",{get:function(){return this._inline},set:function(t){this._inline=o.coerceBooleanProperty(t)},enumerable:!0,configurable:!0}),n.prototype.updateWithValue=function(t){this.styleCache=this.inline?Nn:Qn,this.addStyles(t,{inline:this.inline})},n.ctorParameters=function(){return[{type:e.ElementRef},{type:Pt},{type:Vn,decorators:[{type:e.Optional}]},{type:Lt}]},n.propDecorators={inline:[{type:e.Input,args:["gdInline"]}]},n}(dt),Qn=new Map,Nn=new Map,Hn=["gdAreas","gdAreas.xs","gdAreas.sm","gdAreas.md","gdAreas.lg","gdAreas.xl","gdAreas.lt-sm","gdAreas.lt-md","gdAreas.lt-lg","gdAreas.lt-xl","gdAreas.gt-xs","gdAreas.gt-sm","gdAreas.gt-md","gdAreas.gt-lg"],Wn=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=Hn,e}return l(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdAreas],\n [gdAreas.xs], [gdAreas.sm], [gdAreas.md], [gdAreas.lg], [gdAreas.xl],\n [gdAreas.lt-sm], [gdAreas.lt-md], [gdAreas.lt-lg], [gdAreas.lt-xl],\n [gdAreas.gt-xs], [gdAreas.gt-sm], [gdAreas.gt-md], [gdAreas.gt-lg]\n",inputs:Hn}]}],n}(Gn),Kn=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return l(n,t),n.prototype.buildStyles=function(t,e){var n=(t||"initial").split(" "),r=n[0],i=n[1];return"column"!==r&&"row"!==r&&"dense"!==r&&(r="row"),i="dense"===i&&"dense"!==r?" dense":"",{display:e.inline?"inline-grid":"grid","grid-auto-flow":r+i}},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(_t),Un=function(t){function n(e,n,r,i){var o=t.call(this,e,n,r,i)||this;return o.elementRef=e,o.styleBuilder=n,o.styler=r,o.marshal=i,o._inline=!1,o.DIRECTIVE_KEY="grid-auto",o.init(),o}return l(n,t),Object.defineProperty(n.prototype,"inline",{get:function(){return this._inline},set:function(t){this._inline=o.coerceBooleanProperty(t)},enumerable:!0,configurable:!0}),n.prototype.updateWithValue=function(t){this.styleCache=this.inline?zn:Yn,this.addStyles(t,{inline:this.inline})},n.ctorParameters=function(){return[{type:e.ElementRef},{type:Kn,decorators:[{type:e.Optional}]},{type:Pt},{type:Lt}]},n.propDecorators={inline:[{type:e.Input,args:["gdInline"]}]},n}(dt),Yn=new Map,zn=new Map,qn=["gdAuto","gdAuto.xs","gdAuto.sm","gdAuto.md","gdAuto.lg","gdAuto.xl","gdAuto.lt-sm","gdAuto.lt-md","gdAuto.lt-lg","gdAuto.lt-xl","gdAuto.gt-xs","gdAuto.gt-sm","gdAuto.gt-md","gdAuto.gt-lg"],$n=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=qn,e}return l(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdAuto],\n [gdAuto.xs], [gdAuto.sm], [gdAuto.md], [gdAuto.lg], [gdAuto.xl],\n [gdAuto.lt-sm], [gdAuto.lt-md], [gdAuto.lt-lg], [gdAuto.lt-xl],\n [gdAuto.gt-xs], [gdAuto.gt-sm], [gdAuto.gt-md], [gdAuto.gt-lg]\n",inputs:qn}]}],n}(Un),Zn=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return l(n,t),n.prototype.buildStyles=function(t){return{"grid-column":t||"auto"}},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(_t),Jn=function(t){function n(e,n,r,i){var o=t.call(this,e,n,r,i)||this;return o.elementRef=e,o.styleBuilder=n,o.styler=r,o.marshal=i,o.DIRECTIVE_KEY="grid-column",o.styleCache=Xn,o.init(),o}return l(n,t),n.ctorParameters=function(){return[{type:e.ElementRef},{type:Zn,decorators:[{type:e.Optional}]},{type:Pt},{type:Lt}]},n}(dt),Xn=new Map,tr=["gdColumn","gdColumn.xs","gdColumn.sm","gdColumn.md","gdColumn.lg","gdColumn.xl","gdColumn.lt-sm","gdColumn.lt-md","gdColumn.lt-lg","gdColumn.lt-xl","gdColumn.gt-xs","gdColumn.gt-sm","gdColumn.gt-md","gdColumn.gt-lg"],er=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=tr,e}return l(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdColumn],\n [gdColumn.xs], [gdColumn.sm], [gdColumn.md], [gdColumn.lg], [gdColumn.xl],\n [gdColumn.lt-sm], [gdColumn.lt-md], [gdColumn.lt-lg], [gdColumn.lt-xl],\n [gdColumn.gt-xs], [gdColumn.gt-sm], [gdColumn.gt-md], [gdColumn.gt-lg]\n",inputs:tr}]}],n}(Jn),nr=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return l(n,t),n.prototype.buildStyles=function(t,e){t=t||"none";var n=!1;t.endsWith("!")&&(t=t.substring(0,t.indexOf("!")),n=!0);var r={display:e.inline?"inline-grid":"grid","grid-auto-columns":"","grid-template-columns":""};return r[n?"grid-auto-columns":"grid-template-columns"]=t,r},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(_t),rr=function(t){function n(e,n,r,i){var o=t.call(this,e,n,r,i)||this;return o.elementRef=e,o.styleBuilder=n,o.styler=r,o.marshal=i,o.DIRECTIVE_KEY="grid-columns",o._inline=!1,o.init(),o}return l(n,t),Object.defineProperty(n.prototype,"inline",{get:function(){return this._inline},set:function(t){this._inline=o.coerceBooleanProperty(t)},enumerable:!0,configurable:!0}),n.prototype.updateWithValue=function(t){this.styleCache=this.inline?or:ir,this.addStyles(t,{inline:this.inline})},n.ctorParameters=function(){return[{type:e.ElementRef},{type:nr,decorators:[{type:e.Optional}]},{type:Pt},{type:Lt}]},n.propDecorators={inline:[{type:e.Input,args:["gdInline"]}]},n}(dt),ir=new Map,or=new Map,ar=["gdColumns","gdColumns.xs","gdColumns.sm","gdColumns.md","gdColumns.lg","gdColumns.xl","gdColumns.lt-sm","gdColumns.lt-md","gdColumns.lt-lg","gdColumns.lt-xl","gdColumns.gt-xs","gdColumns.gt-sm","gdColumns.gt-md","gdColumns.gt-lg"],sr=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=ar,e}return l(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdColumns],\n [gdColumns.xs], [gdColumns.sm], [gdColumns.md], [gdColumns.lg], [gdColumns.xl],\n [gdColumns.lt-sm], [gdColumns.lt-md], [gdColumns.lt-lg], [gdColumns.lt-xl],\n [gdColumns.gt-xs], [gdColumns.gt-sm], [gdColumns.gt-md], [gdColumns.gt-lg]\n",inputs:ar}]}],n}(rr),lr=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return l(n,t),n.prototype.buildStyles=function(t,e){return{display:e.inline?"inline-grid":"grid","grid-gap":t||"0"}},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(_t),ur=function(t){function n(e,n,r,i){var o=t.call(this,e,r,n,i)||this;return o.elRef=e,o.styleUtils=n,o.styleBuilder=r,o.marshal=i,o.DIRECTIVE_KEY="grid-gap",o._inline=!1,o.init(),o}return l(n,t),Object.defineProperty(n.prototype,"inline",{get:function(){return this._inline},set:function(t){this._inline=o.coerceBooleanProperty(t)},enumerable:!0,configurable:!0}),n.prototype.updateWithValue=function(t){this.styleCache=this.inline?dr:cr,this.addStyles(t,{inline:this.inline})},n.ctorParameters=function(){return[{type:e.ElementRef},{type:Pt},{type:lr,decorators:[{type:e.Optional}]},{type:Lt}]},n.propDecorators={inline:[{type:e.Input,args:["gdInline"]}]},n}(dt),cr=new Map,dr=new Map,pr=["gdGap","gdGap.xs","gdGap.sm","gdGap.md","gdGap.lg","gdGap.xl","gdGap.lt-sm","gdGap.lt-md","gdGap.lt-lg","gdGap.lt-xl","gdGap.gt-xs","gdGap.gt-sm","gdGap.gt-md","gdGap.gt-lg"],gr=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=pr,e}return l(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdGap],\n [gdGap.xs], [gdGap.sm], [gdGap.md], [gdGap.lg], [gdGap.xl],\n [gdGap.lt-sm], [gdGap.lt-md], [gdGap.lt-lg], [gdGap.lt-xl],\n [gdGap.gt-xs], [gdGap.gt-sm], [gdGap.gt-md], [gdGap.gt-lg]\n",inputs:pr}]}],n}(ur),fr=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return l(n,t),n.prototype.buildStyles=function(t){return{"grid-row":t||"auto"}},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(_t),yr=function(t){function n(e,n,r,i){var o=t.call(this,e,n,r,i)||this;return o.elementRef=e,o.styleBuilder=n,o.styler=r,o.marshal=i,o.DIRECTIVE_KEY="grid-row",o.styleCache=hr,o.init(),o}return l(n,t),n.ctorParameters=function(){return[{type:e.ElementRef},{type:fr,decorators:[{type:e.Optional}]},{type:Pt},{type:Lt}]},n}(dt),hr=new Map,mr=["gdRow","gdRow.xs","gdRow.sm","gdRow.md","gdRow.lg","gdRow.xl","gdRow.lt-sm","gdRow.lt-md","gdRow.lt-lg","gdRow.lt-xl","gdRow.gt-xs","gdRow.gt-sm","gdRow.gt-md","gdRow.gt-lg"],xr=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=mr,e}return l(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdRow],\n [gdRow.xs], [gdRow.sm], [gdRow.md], [gdRow.lg], [gdRow.xl],\n [gdRow.lt-sm], [gdRow.lt-md], [gdRow.lt-lg], [gdRow.lt-xl],\n [gdRow.gt-xs], [gdRow.gt-sm], [gdRow.gt-md], [gdRow.gt-lg]\n",inputs:mr}]}],n}(yr),vr=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return l(n,t),n.prototype.buildStyles=function(t,e){t=t||"none";var n=!1;t.endsWith("!")&&(t=t.substring(0,t.indexOf("!")),n=!0);var r={display:e.inline?"inline-grid":"grid","grid-auto-rows":"","grid-template-rows":""};return r[n?"grid-auto-rows":"grid-template-rows"]=t,r},n.decorators=[{type:e.Injectable,args:[{providedIn:"root"}]}],n.ngInjectableDef=e.ɵɵdefineInjectable({factory:function(){return new n},token:n,providedIn:"root"}),n}(_t),br=function(t){function n(e,n,r,i){var o=t.call(this,e,n,r,i)||this;return o.elementRef=e,o.styleBuilder=n,o.styler=r,o.marshal=i,o.DIRECTIVE_KEY="grid-rows",o._inline=!1,o.init(),o}return l(n,t),Object.defineProperty(n.prototype,"inline",{get:function(){return this._inline},set:function(t){this._inline=o.coerceBooleanProperty(t)},enumerable:!0,configurable:!0}),n.prototype.updateWithValue=function(t){this.styleCache=this.inline?Ar:wr,this.addStyles(t,{inline:this.inline})},n.ctorParameters=function(){return[{type:e.ElementRef},{type:vr,decorators:[{type:e.Optional}]},{type:Pt},{type:Lt}]},n.propDecorators={inline:[{type:e.Input,args:["gdInline"]}]},n}(dt),wr=new Map,Ar=new Map,Ir=["gdRows","gdRows.xs","gdRows.sm","gdRows.md","gdRows.lg","gdRows.xl","gdRows.lt-sm","gdRows.lt-md","gdRows.lt-lg","gdRows.lt-xl","gdRows.gt-xs","gdRows.gt-sm","gdRows.gt-md","gdRows.gt-lg"],Er=function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.inputs=Ir,e}return l(n,t),n.decorators=[{type:e.Directive,args:[{selector:"\n [gdRows],\n [gdRows.xs], [gdRows.sm], [gdRows.md], [gdRows.lg], [gdRows.xl],\n [gdRows.lt-sm], [gdRows.lt-md], [gdRows.lt-lg], [gdRows.lt-xl],\n [gdRows.gt-xs], [gdRows.gt-sm], [gdRows.gt-md], [gdRows.gt-lg]\n",inputs:Ir}]}],n}(br),Sr=[mn,Sn,Pn,Tn,Wn,$n,er,sr,gr,xr,Er],Cr=function(){function t(){}return t.decorators=[{type:e.NgModule,args:[{imports:[nt],declarations:Sr.slice(),exports:Sr.slice()}]}],t}(),kr=new e.Version("8.0.0-beta.26"),jr=function(){function t(t,e){n.isPlatformServer(e)&&!t&&console.warn("Warning: Flex Layout loaded on the server without FlexLayoutServerModule")}return t.withConfig=function(e,n){return void 0===n&&(n=[]),{ngModule:t,providers:e.serverLoaded?[{provide:at,useValue:X({},ot,e)},{provide:lt,useValue:n,multi:!0},{provide:st,useValue:!0}]:[{provide:at,useValue:X({},ot,e)},{provide:lt,useValue:n,multi:!0}]}},t.decorators=[{type:e.NgModule,args:[{imports:[cn,ne,Cr],exports:[cn,ne,Cr]}]}],t.ctorParameters=function(){return[{type:Boolean,decorators:[{type:e.Optional},{type:e.Inject,args:[st]}]},{type:Object,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]}]},t}();t.VERSION=kr,t.FlexLayoutModule=jr,t.ɵMatchMedia=At,t.ɵMockMatchMedia=Et,t.ɵMockMatchMediaProvider=Ct,t.CoreModule=nt,t.removeStyles=u,t.BROWSER_PROVIDER=tt,t.CLASS_NAME=et,t.MediaChange=rt,t.StylesheetMap=it,t.DEFAULT_CONFIG=ot,t.LAYOUT_CONFIG=at,t.SERVER_TOKEN=st,t.BREAKPOINT=lt,t.mergeAlias=c,t.BaseDirective2=dt,t.DEFAULT_BREAKPOINTS=pt,t.ScreenTypes=mt,t.ORIENTATION_BREAKPOINTS=xt,t.BreakPointRegistry=wt,t.BREAKPOINTS=bt,t.MediaObserver=Mt,t.MediaTrigger=Dt,t.sortDescendingPriority=b,t.sortAscendingPriority=w,t.coerceArray=S,t.StyleUtils=Pt,t.StyleBuilder=_t,t.validateBasis=R,t.MediaMarshaller=Lt,t.BREAKPOINT_PRINT=jt,t.PrintHook=Rt,t.ExtendedModule=ne,t.ClassDirective=Qt,t.LayoutNgClassImplProvider=Ht,t.DefaultClassDirective=Wt,t.ImgSrcStyleBuilder=Ft,t.ImgSrcDirective=Bt,t.DefaultImgSrcDirective=Gt,t.ShowHideStyleBuilder=Kt,t.ShowHideDirective=Ut,t.DefaultShowHideDirective=qt,t.StyleDirective=Zt,t.LayoutNgStyleImplProvider=Xt,t.DefaultStyleDirective=te,t.FlexModule=cn,t.FlexStyleBuilder=be,t.FlexDirective=Ae,t.DefaultFlexDirective=Ie,t.FlexAlignStyleBuilder=Qe,t.FlexAlignDirective=He,t.DefaultFlexAlignDirective=Ke,t.FlexFillStyleBuilder=Ye,t.FlexFillDirective=ze,t.FlexOffsetStyleBuilder=Pe,t.FlexOffsetDirective=Le,t.DefaultFlexOffsetDirective=Fe,t.FlexOrderStyleBuilder=je,t.FlexOrderDirective=Oe,t.DefaultFlexOrderDirective=De,t.LayoutStyleBuilder=oe,t.LayoutDirective=se,t.DefaultLayoutDirective=le,t.LayoutAlignStyleBuilder=$e,t.LayoutAlignDirective=Je,t.DefaultLayoutAlignDirective=Xe,t.LayoutGapStyleBuilder=de,t.LayoutGapDirective=ge,t.DefaultLayoutGapDirective=fe,t.ɵf2=Sn,t.ɵe2=wn,t.ɵd2=bn,t.ɵi2=Pn,t.ɵh2=Rn,t.ɵg2=jn,t.ɵl2=Tn,t.ɵk2=Ln,t.ɵj2=_n,t.ɵo2=Wn,t.ɵn2=Gn,t.ɵm2=Vn,t.ɵr2=$n,t.ɵq2=Un,t.ɵp2=Kn,t.ɵu2=er,t.ɵt2=Jn,t.ɵs2=Zn,t.ɵx2=sr,t.ɵw2=rr,t.ɵv2=nr,t.ɵba2=gr,t.ɵz2=ur,t.ɵy2=lr,t.ɵc2=mn,t.ɵb2=fn,t.ɵa2=gn,t.ɵbd2=xr,t.ɵbc2=yr,t.ɵbb2=fr,t.ɵbg2=Er,t.ɵbf2=br,t.ɵbe2=vr,t.GridModule=Cr,Object.defineProperty(t,"__esModule",{value:!0})}); //# sourceMappingURL=flex-layout.umd.min.js.map diff --git a/bundles/flex-layout.umd.min.js.map b/bundles/flex-layout.umd.min.js.map index 0bc9d6119..63b9885e5 100644 --- a/bundles/flex-layout.umd.min.js.map +++ b/bundles/flex-layout.umd.min.js.map @@ -1 +1 @@ -{"version":3,"file":"flex-layout.umd.min.js","sources":["../../src/lib/version.ts","../../src/lib/module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Version} from '@angular/core';\n\n/** Current version of Angular Flex-Layout. */\nexport const VERSION = new Version('7.0.0-beta.22');\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 {\n Inject,\n ModuleWithProviders,\n NgModule,\n Optional,\n PLATFORM_ID,\n} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n SERVER_TOKEN,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n BreakPoint,\n BREAKPOINT,\n} from '@angular/flex-layout/core';\nimport {ExtendedModule} from '@angular/flex-layout/extended';\nimport {FlexModule} from '@angular/flex-layout/flex';\nimport {GridModule} from '@angular/flex-layout/grid';\n\n/**\n * FlexLayoutModule -- the main import for all utilities in the Angular Layout library\n * * Will automatically provide Flex, Grid, and Extended modules for use in the application\n * * Can be configured using the static withConfig method, options viewable on the Wiki's\n * Configuration page\n */\n@NgModule({\n imports: [FlexModule, ExtendedModule, GridModule],\n exports: [FlexModule, ExtendedModule, GridModule]\n})\nexport class FlexLayoutModule {\n\n /**\n * Initialize the FlexLayoutModule with a set of config options,\n * which sets the corresponding tokens accordingly\n */\n static withConfig(configOptions: LayoutConfigOptions,\n breakpoints: BreakPoint|BreakPoint[] = []): ModuleWithProviders {\n return {\n ngModule: FlexLayoutModule,\n providers: configOptions.serverLoaded ?\n [\n {provide: LAYOUT_CONFIG, useValue: configOptions},\n {provide: BREAKPOINT, useValue: breakpoints, multi: true},\n {provide: SERVER_TOKEN, useValue: true},\n ] : [\n {provide: LAYOUT_CONFIG, useValue: configOptions},\n {provide: BREAKPOINT, useValue: breakpoints, multi: true},\n ]\n };\n }\n\n constructor(@Optional() @Inject(SERVER_TOKEN) serverModuleLoaded: boolean,\n @Inject(PLATFORM_ID) platformId: Object) {\n if (isPlatformServer(platformId) && !serverModuleLoaded) {\n console.warn('Warning: Flex Layout loaded on the server without FlexLayoutServerModule');\n }\n }\n}\n"],"names":["VERSION","Version","FlexLayoutModule","serverModuleLoaded","platformId","isPlatformServer","console","warn","withConfig","configOptions","breakpoints","ngModule","providers","serverLoaded","provide","LAYOUT_CONFIG","useValue","BREAKPOINT","multi","SERVER_TOKEN","type","NgModule","args","imports","FlexModule","ExtendedModule","GridModule","exports","Boolean","decorators","Optional","Inject","Object","PLATFORM_ID"],"mappings":";;;;;;;ssBAWA,IAAaA,GAAU,GAAIC,GAAAA,QAAQ,kCC+CjC,QAAFC,GAAgDC,EACbC,GAC3BC,EAAAA,iBAAiBD,KAAgBD,GACnCG,QAAQC,KAAK,4EA7DnB,MA0CSL,GAATM,WAAE,SAAkBC,EACAC,GAChB,WADJ,KAAAA,IAAoBA,OAEdC,SAAUT,EACVU,UAAWH,EAAcI,eAEpBC,QAASC,EAAAA,cAAeC,SAAUP,IAClCK,QAASG,EAAAA,WAAYD,SAAUN,EAAaQ,OAAO,IACnDJ,QAASK,EAAAA,aAAcH,UAAU,MAEjCF,QAASC,EAAAA,cAAeC,SAAUP,IAClCK,QAASG,EAAAA,WAAYD,SAAUN,EAAaQ,OAAO,qBArB9DE,KAACC,EAAAA,SAADC,OACEC,SAAUC,EAAAA,WAAYC,EAAAA,eAAgBC,EAAAA,YACtCC,SAAUH,EAAAA,WAAYC,EAAAA,eAAgBC,EAAAA,oDAwBxCN,KAAAQ,QAAAC,aAAAT,KAAeU,EAAAA,WAAfV,KAA2BW,EAAAA,OAA3BT,MAAkCH,EAAAA,kBAClCC,KAA+CY,OAA/CH,aAAAT,KAAeW,EAAAA,OAAfT,MAAsBW,EAAAA,kBA3DtB/B"} \ No newline at end of file +{"version":3,"file":"flex-layout.umd.min.js","sources":["../../src/lib/flex/layout-align/layout-align.ts","../../src/lib/flex/module.ts","../../src/lib/grid/grid-align/grid-align.ts","../../src/lib/grid/align-columns/align-columns.ts","../../src/lib/grid/align-rows/align-rows.ts","../../src/lib/grid/area/area.ts","../../src/lib/grid/areas/areas.ts","../../src/lib/grid/auto/auto.ts","../../src/lib/grid/column/column.ts","../../src/lib/grid/columns/columns.ts","../../src/lib/grid/gap/gap.ts","../../src/lib/grid/row/row.ts","../../src/lib/grid/rows/rows.ts","../../src/lib/grid/module.ts","../../src/lib/version.ts","../../src/lib/module.ts","../../src/lib/core/style-utils/style-utils.ts","../../src/lib/core/style-builder/style-builder.ts","../../src/lib/core/media-marshaller/media-marshaller.ts","../../src/lib/extended/img-src/img-src.ts","../../src/lib/extended/class/class.ts","../../src/lib/extended/show-hide/show-hide.ts","../../src/lib/extended/style/style-transforms.ts","../../src/lib/extended/style/style.ts","../../src/lib/extended/module.ts","../../src/lib/utils/layout-validator.ts","../../src/lib/flex/layout/layout.ts","../../src/lib/flex/layout-gap/layout-gap.ts","../../src/lib/flex/flex/flex.ts","../../src/lib/flex/flex-order/flex-order.ts","../../src/lib/flex/flex-offset/flex-offset.ts","../../src/lib/flex/flex-align/flex-align.ts","../../src/lib/flex/flex-fill/flex-fill.ts","../../node_modules/tslib/tslib.es6.js","../../src/lib/core/browser-provider.ts","../../src/lib/core/add-alias.ts","../../src/lib/utils/object-extend.ts","../../src/lib/core/breakpoints/breakpoint-tools.ts","../../src/lib/core/utils/sort.ts","../../src/lib/core/match-media/match-media.ts","../../src/lib/core/media-marshaller/print-hook.ts","../../src/lib/core/utils/array.ts","../../src/lib/core/media-observer/media-observer.ts","../../src/lib/utils/auto-prefixer.ts","../../src/lib/core/basis-validator/basis-validator.ts","../../src/lib/core/module.ts","../../src/lib/core/media-change.ts","../../src/lib/core/stylesheet-map/stylesheet-map.ts","../../src/lib/core/tokens/library-config.ts","../../src/lib/core/tokens/server-token.ts","../../src/lib/core/tokens/breakpoint-token.ts","../../src/lib/core/base/base2.ts","../../src/lib/core/breakpoints/data/break-points.ts","../../src/lib/core/breakpoints/data/orientation-break-points.ts","../../src/lib/core/breakpoints/break-points-token.ts","../../src/lib/core/breakpoints/break-point-registry.ts","../../src/lib/core/match-media/mock/mock-match-media.ts","../../src/lib/core/media-trigger/media-trigger.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {extendObject} from '../../utils/object-extend';\nimport {LAYOUT_VALUES, isFlowHorizontal} from '../../utils/layout-validator';\n\nexport interface LayoutAlignParent {\n layout: string;\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class LayoutAlignStyleBuilder extends StyleBuilder {\n buildStyles(align: string, parent: LayoutAlignParent) {\n const css: StyleDefinition = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['justify-content'] = 'center';\n break;\n case 'space-around':\n css['justify-content'] = 'space-around';\n break;\n case 'space-between':\n css['justify-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['justify-content'] = 'space-evenly';\n break;\n case 'end':\n case 'flex-end':\n css['justify-content'] = 'flex-end';\n break;\n case 'start':\n case 'flex-start':\n default :\n css['justify-content'] = 'flex-start'; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'flex-start':\n css['align-items'] = css['align-content'] = 'flex-start';\n break;\n case 'center':\n css['align-items'] = css['align-content'] = 'center';\n break;\n case 'end':\n case 'flex-end':\n css['align-items'] = css['align-content'] = 'flex-end';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n css['align-items'] = 'stretch';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n css['align-items'] = 'stretch';\n break;\n case 'baseline':\n css['align-content'] = 'stretch';\n css['align-items'] = 'baseline';\n break;\n case 'stretch':\n default : // 'stretch'\n css['align-items'] = css['align-content'] = 'stretch'; // default cross axis\n break;\n }\n\n return extendObject(css, {\n 'display' : parent.inline ? 'inline-flex' : 'flex',\n 'flex-direction' : parent.layout,\n 'box-sizing' : 'border-box',\n 'max-width': crossAxis === 'stretch' ?\n !isFlowHorizontal(parent.layout) ? '100%' : null : null,\n 'max-height': crossAxis === 'stretch' ?\n isFlowHorizontal(parent.layout) ? '100%' : null : null,\n }) as StyleDefinition;\n }\n}\n\nconst inputs = [\n 'fxLayoutAlign', 'fxLayoutAlign.xs', 'fxLayoutAlign.sm', 'fxLayoutAlign.md',\n 'fxLayoutAlign.lg', 'fxLayoutAlign.xl', 'fxLayoutAlign.lt-sm', 'fxLayoutAlign.lt-md',\n 'fxLayoutAlign.lt-lg', 'fxLayoutAlign.lt-xl', 'fxLayoutAlign.gt-xs', 'fxLayoutAlign.gt-sm',\n 'fxLayoutAlign.gt-md', 'fxLayoutAlign.gt-lg'\n];\nconst selector = `\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n`;\n\n/**\n * 'layout-align' flexbox styling directive\n * Defines positioning of child elements along main and cross axis in a layout container\n * Optional values: {main-axis} values or {main-axis cross-axis} value pairs\n *\n * @see https://css-tricks.com/almanac/properties/j/justify-content/\n * @see https://css-tricks.com/almanac/properties/a/align-items/\n * @see https://css-tricks.com/almanac/properties/a/align-content/\n */\nexport class LayoutAlignDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'layout-align';\n protected layout = 'row'; // default flex-direction\n protected inline = false; // default inline value\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutAlignStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n this.marshal.trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n *\n */\n protected updateWithValue(value: string) {\n const layout = this.layout || 'row';\n const inline = this.inline;\n if (layout === 'row' && inline) {\n this.styleCache = layoutAlignHorizontalInlineCache;\n } else if (layout === 'row' && !inline) {\n this.styleCache = layoutAlignHorizontalCache;\n } else if (layout === 'row-reverse' && inline) {\n this.styleCache = layoutAlignHorizontalRevInlineCache;\n } else if (layout === 'row-reverse' && !inline) {\n this.styleCache = layoutAlignHorizontalRevCache;\n } else if (layout === 'column' && inline) {\n this.styleCache = layoutAlignVerticalInlineCache;\n } else if (layout === 'column' && !inline) {\n this.styleCache = layoutAlignVerticalCache;\n } else if (layout === 'column-reverse' && inline) {\n this.styleCache = layoutAlignVerticalRevInlineCache;\n } else if (layout === 'column-reverse' && !inline) {\n this.styleCache = layoutAlignVerticalRevCache;\n }\n this.addStyles(value, {layout, inline});\n }\n\n /**\n * Cache the parent container 'flex-direction' and update the 'flex' styles\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layoutKeys: string[] = matcher.value.split(' ');\n this.layout = layoutKeys[0];\n this.inline = matcher.value.includes('inline');\n if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutAlignDirective extends LayoutAlignDirective {\n protected inputs = inputs;\n}\n\nconst layoutAlignHorizontalCache: Map = new Map();\nconst layoutAlignVerticalCache: Map = new Map();\nconst layoutAlignHorizontalRevCache: Map = new Map();\nconst layoutAlignVerticalRevCache: Map = new Map();\nconst layoutAlignHorizontalInlineCache: Map = new Map();\nconst layoutAlignVerticalInlineCache: Map = new Map();\nconst layoutAlignHorizontalRevInlineCache: Map = new Map();\nconst layoutAlignVerticalRevInlineCache: Map = new Map();\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';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultLayoutDirective} from './layout/layout';\nimport {DefaultLayoutGapDirective} from './layout-gap/layout-gap';\nimport {DefaultFlexDirective} from './flex/flex';\nimport {DefaultFlexOrderDirective} from './flex-order/flex-order';\nimport {DefaultFlexOffsetDirective} from './flex-offset/flex-offset';\nimport {DefaultFlexAlignDirective} from './flex-align/flex-align';\nimport {FlexFillDirective} from './flex-fill/flex-fill';\nimport {DefaultLayoutAlignDirective} from './layout-align/layout-align';\n\n\nconst ALL_DIRECTIVES = [\n DefaultLayoutDirective,\n DefaultLayoutGapDirective,\n DefaultLayoutAlignDirective,\n DefaultFlexOrderDirective,\n DefaultFlexOffsetDirective,\n FlexFillDirective,\n DefaultFlexAlignDirective,\n DefaultFlexDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the Flex API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule, BidiModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class FlexModule {\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\nconst ROW_DEFAULT = 'stretch';\nconst COL_DEFAULT = 'stretch';\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return buildCss(input || ROW_DEFAULT);\n }\n}\n\nexport class GridAlignDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = alignCache;\n}\n\nconst alignCache: Map = new Map();\n\nconst inputs = [\n 'gdGridAlign',\n 'gdGridAlign.xs', 'gdGridAlign.sm', 'gdGridAlign.md', 'gdGridAlign.lg', 'gdGridAlign.xl',\n 'gdGridAlign.lt-sm', 'gdGridAlign.lt-md', 'gdGridAlign.lt-lg', 'gdGridAlign.lt-xl',\n 'gdGridAlign.gt-xs', 'gdGridAlign.gt-sm', 'gdGridAlign.gt-md', 'gdGridAlign.gt-lg'\n];\n\nconst selector = `\n [gdGridAlign],\n [gdGridAlign.xs], [gdGridAlign.sm], [gdGridAlign.md], [gdGridAlign.lg],[gdGridAlign.xl],\n [gdGridAlign.lt-sm], [gdGridAlign.lt-md], [gdGridAlign.lt-lg], [gdGridAlign.lt-xl],\n [gdGridAlign.gt-xs], [gdGridAlign.gt-sm], [gdGridAlign.gt-md], [gdGridAlign.gt-lg]\n`;\n\n/**\n * 'align' CSS Grid styling directive for grid children\n * Defines positioning of child elements along row and column axis in a grid container\n * Optional values: {row-axis} values or {row-axis column-axis} value pairs\n *\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-justify-self\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-align-self\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignDirective extends GridAlignDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string = '') {\n const css: {[key: string]: string} = {}, [rowAxis, columnAxis] = align.split(' ');\n\n // Row axis\n switch (rowAxis) {\n case 'end':\n css['justify-self'] = 'end';\n break;\n case 'center':\n css['justify-self'] = 'center';\n break;\n case 'stretch':\n css['justify-self'] = 'stretch';\n break;\n case 'start':\n css['justify-self'] = 'start';\n break;\n default:\n css['justify-self'] = ROW_DEFAULT; // default row axis\n break;\n }\n\n // Column axis\n switch (columnAxis) {\n case 'end':\n css['align-self'] = 'end';\n break;\n case 'center':\n css['align-self'] = 'center';\n break;\n case 'stretch':\n css['align-self'] = 'stretch';\n break;\n case 'start':\n css['align-self'] = 'start';\n break;\n default:\n css['align-self'] = COL_DEFAULT; // default column axis\n break;\n }\n\n return css;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_MAIN = 'start';\nconst DEFAULT_CROSS = 'stretch';\n\nexport interface GridAlignColumnsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignColumnsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAlignColumnsParent) {\n return buildCss(input || `${DEFAULT_MAIN} ${DEFAULT_CROSS}`, parent.inline);\n }\n}\n\nexport class GridAlignColumnsDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align-columns';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignColumnsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? alignColumnsInlineCache : alignColumnsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst alignColumnsCache: Map = new Map();\nconst alignColumnsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAlignColumns',\n 'gdAlignColumns.xs', 'gdAlignColumns.sm', 'gdAlignColumns.md',\n 'gdAlignColumns.lg', 'gdAlignColumns.xl', 'gdAlignColumns.lt-sm',\n 'gdAlignColumns.lt-md', 'gdAlignColumns.lt-lg', 'gdAlignColumns.lt-xl',\n 'gdAlignColumns.gt-xs', 'gdAlignColumns.gt-sm', 'gdAlignColumns.gt-md',\n 'gdAlignColumns.gt-lg'\n];\nconst selector = `\n [gdAlignColumns],\n [gdAlignColumns.xs], [gdAlignColumns.sm], [gdAlignColumns.md],\n [gdAlignColumns.lg], [gdAlignColumns.xl], [gdAlignColumns.lt-sm],\n [gdAlignColumns.lt-md], [gdAlignColumns.lt-lg], [gdAlignColumns.lt-xl],\n [gdAlignColumns.gt-xs], [gdAlignColumns.gt-sm], [gdAlignColumns.gt-md],\n [gdAlignColumns.gt-lg]\n`;\n\n/**\n * 'column alignment' CSS Grid styling directive\n * Configures the alignment in the column direction\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-19\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-21\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignColumnsDirective extends GridAlignColumnsDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string, inline: boolean): StyleDefinition {\n const css: {[key: string]: string} = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['align-content'] = 'center';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['align-content'] = 'space-evenly';\n break;\n case 'end':\n css['align-content'] = 'end';\n break;\n case 'start':\n css['align-content'] = 'start';\n break;\n case 'stretch':\n css['align-content'] = 'stretch';\n break;\n default:\n css['align-content'] = DEFAULT_MAIN; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n css['align-items'] = 'start';\n break;\n case 'center':\n css['align-items'] = 'center';\n break;\n case 'end':\n css['align-items'] = 'end';\n break;\n case 'stretch':\n css['align-items'] = 'stretch';\n break;\n default : // 'stretch'\n css['align-items'] = DEFAULT_CROSS; // default cross axis\n break;\n }\n\n css['display'] = inline ? 'inline-grid' : 'grid';\n\n return css;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_MAIN = 'start';\nconst DEFAULT_CROSS = 'stretch';\n\nexport interface GridAlignRowsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignRowsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAlignRowsParent) {\n return buildCss(input || `${DEFAULT_MAIN} ${DEFAULT_CROSS}`, parent.inline);\n }\n}\n\nexport class GridAlignRowsDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align-rows';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignRowsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? alignRowsInlineCache : alignRowsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst alignRowsCache: Map = new Map();\nconst alignRowsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAlignRows',\n 'gdAlignRows.xs', 'gdAlignRows.sm', 'gdAlignRows.md',\n 'gdAlignRows.lg', 'gdAlignRows.xl', 'gdAlignRows.lt-sm',\n 'gdAlignRows.lt-md', 'gdAlignRows.lt-lg', 'gdAlignRows.lt-xl',\n 'gdAlignRows.gt-xs', 'gdAlignRows.gt-sm', 'gdAlignRows.gt-md',\n 'gdAlignRows.gt-lg'\n];\nconst selector = `\n [gdAlignRows],\n [gdAlignRows.xs], [gdAlignRows.sm], [gdAlignRows.md],\n [gdAlignRows.lg], [gdAlignRows.xl], [gdAlignRows.lt-sm],\n [gdAlignRows.lt-md], [gdAlignRows.lt-lg], [gdAlignRows.lt-xl],\n [gdAlignRows.gt-xs], [gdAlignRows.gt-sm], [gdAlignRows.gt-md],\n [gdAlignRows.gt-lg]\n`;\n\n/**\n * 'row alignment' CSS Grid styling directive\n * Configures the alignment in the row direction\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-18\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-20\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignRowsDirective extends GridAlignRowsDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string, inline: boolean): StyleDefinition {\n const css: {[key: string]: string} = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n case 'space-around':\n case 'space-between':\n case 'space-evenly':\n case 'end':\n case 'start':\n case 'stretch':\n css['justify-content'] = mainAxis;\n break;\n default:\n css['justify-content'] = DEFAULT_MAIN; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'center':\n case 'end':\n case 'stretch':\n css['justify-items'] = crossAxis;\n break;\n default : // 'stretch'\n css['justify-items'] = DEFAULT_CROSS; // default cross axis\n break;\n }\n\n css['display'] = inline ? 'inline-grid' : 'grid';\n\n return css;\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridAreaStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-area': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridAreaDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-area';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAreaStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = gridAreaCache;\n}\n\nconst gridAreaCache: Map = new Map();\n\nconst inputs = [\n 'gdArea',\n 'gdArea.xs', 'gdArea.sm', 'gdArea.md', 'gdArea.lg', 'gdArea.xl',\n 'gdArea.lt-sm', 'gdArea.lt-md', 'gdArea.lt-lg', 'gdArea.lt-xl',\n 'gdArea.gt-xs', 'gdArea.gt-sm', 'gdArea.gt-md', 'gdArea.gt-lg'\n];\nconst selector = `\n [gdArea],\n [gdArea.xs], [gdArea.sm], [gdArea.md], [gdArea.lg], [gdArea.xl],\n [gdArea.lt-sm], [gdArea.lt-md], [gdArea.lt-lg], [gdArea.lt-xl],\n [gdArea.gt-xs], [gdArea.gt-sm], [gdArea.gt-md], [gdArea.gt-lg]\n`;\n\n/**\n * 'grid-area' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-27\n */\n@Directive({selector, inputs})\nexport class DefaultGridAreaDirective extends GridAreaDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n MediaMarshaller,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst DELIMETER = '|';\n\nexport interface GridAreasParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAreasStyleBuiler extends StyleBuilder {\n buildStyles(input: string, parent: GridAreasParent) {\n const areas = (input || DEFAULT_VALUE).split(DELIMETER).map(v => `\"${v.trim()}\"`);\n\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-template-areas': areas.join(' ')\n };\n }\n}\n\nexport class GridAreasDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-areas';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAreasStyleBuiler,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? areasInlineCache : areasCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst areasCache: Map = new Map();\nconst areasInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAreas',\n 'gdAreas.xs', 'gdAreas.sm', 'gdAreas.md', 'gdAreas.lg', 'gdAreas.xl',\n 'gdAreas.lt-sm', 'gdAreas.lt-md', 'gdAreas.lt-lg', 'gdAreas.lt-xl',\n 'gdAreas.gt-xs', 'gdAreas.gt-sm', 'gdAreas.gt-md', 'gdAreas.gt-lg'\n];\n\nconst selector = `\n [gdAreas],\n [gdAreas.xs], [gdAreas.sm], [gdAreas.md], [gdAreas.lg], [gdAreas.xl],\n [gdAreas.lt-sm], [gdAreas.lt-md], [gdAreas.lt-lg], [gdAreas.lt-xl],\n [gdAreas.gt-xs], [gdAreas.gt-sm], [gdAreas.gt-md], [gdAreas.gt-lg]\n`;\n\n/**\n * 'grid-template-areas' CSS Grid styling directive\n * Configures the names of elements within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-14\n */\n@Directive({selector, inputs})\nexport class DefaultGridAreasDirective extends GridAreasDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n MediaMarshaller,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'initial';\n\nexport interface GridAutoParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAutoStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAutoParent) {\n let [direction, dense] = (input || DEFAULT_VALUE).split(' ');\n if (direction !== 'column' && direction !== 'row' && direction !== 'dense') {\n direction = 'row';\n }\n\n dense = (dense === 'dense' && direction !== 'dense') ? ' dense' : '';\n\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-flow': direction + dense\n };\n }\n}\n\nexport class GridAutoDirective extends BaseDirective2 {\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n protected DIRECTIVE_KEY = 'grid-auto';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAutoStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? autoInlineCache : autoCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst autoCache: Map = new Map();\nconst autoInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAuto',\n 'gdAuto.xs', 'gdAuto.sm', 'gdAuto.md', 'gdAuto.lg', 'gdAuto.xl',\n 'gdAuto.lt-sm', 'gdAuto.lt-md', 'gdAuto.lt-lg', 'gdAuto.lt-xl',\n 'gdAuto.gt-xs', 'gdAuto.gt-sm', 'gdAuto.gt-md', 'gdAuto.gt-lg'\n];\nconst selector = `\n [gdAuto],\n [gdAuto.xs], [gdAuto.sm], [gdAuto.md], [gdAuto.lg], [gdAuto.xl],\n [gdAuto.lt-sm], [gdAuto.lt-md], [gdAuto.lt-lg], [gdAuto.lt-xl],\n [gdAuto.gt-xs], [gdAuto.gt-sm], [gdAuto.gt-md], [gdAuto.gt-lg]\n`;\n\n/**\n * 'grid-auto-flow' CSS Grid styling directive\n * Configures the auto placement algorithm for the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-23\n */\n@Directive({selector, inputs})\nexport class DefaultGridAutoDirective extends GridAutoDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridColumnStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-column': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridColumnDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-column';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridColumnStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = columnCache;\n}\n\nconst columnCache: Map = new Map();\n\nconst inputs = [\n 'gdColumn',\n 'gdColumn.xs', 'gdColumn.sm', 'gdColumn.md', 'gdColumn.lg', 'gdColumn.xl',\n 'gdColumn.lt-sm', 'gdColumn.lt-md', 'gdColumn.lt-lg', 'gdColumn.lt-xl',\n 'gdColumn.gt-xs', 'gdColumn.gt-sm', 'gdColumn.gt-md', 'gdColumn.gt-lg'\n];\n\nconst selector = `\n [gdColumn],\n [gdColumn.xs], [gdColumn.sm], [gdColumn.md], [gdColumn.lg], [gdColumn.xl],\n [gdColumn.lt-sm], [gdColumn.lt-md], [gdColumn.lt-lg], [gdColumn.lt-xl],\n [gdColumn.gt-xs], [gdColumn.gt-sm], [gdColumn.gt-md], [gdColumn.gt-lg]\n`;\n\n/**\n * 'grid-column' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26\n */\n@Directive({selector, inputs})\nexport class DefaultGridColumnDirective extends GridColumnDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst AUTO_SPECIFIER = '!';\n\nexport interface GridColumnsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridColumnsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridColumnsParent) {\n input = input || DEFAULT_VALUE;\n let auto = false;\n if (input.endsWith(AUTO_SPECIFIER)) {\n input = input.substring(0, input.indexOf(AUTO_SPECIFIER));\n auto = true;\n }\n\n const css = {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-columns': '',\n 'grid-template-columns': '',\n };\n const key = (auto ? 'grid-auto-columns' : 'grid-template-columns');\n css[key] = input;\n\n return css;\n }\n}\n\nexport class GridColumnsDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-columns';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridColumnsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? columnsInlineCache : columnsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst columnsCache: Map = new Map();\nconst columnsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdColumns',\n 'gdColumns.xs', 'gdColumns.sm', 'gdColumns.md', 'gdColumns.lg', 'gdColumns.xl',\n 'gdColumns.lt-sm', 'gdColumns.lt-md', 'gdColumns.lt-lg', 'gdColumns.lt-xl',\n 'gdColumns.gt-xs', 'gdColumns.gt-sm', 'gdColumns.gt-md', 'gdColumns.gt-lg'\n];\n\nconst selector = `\n [gdColumns],\n [gdColumns.xs], [gdColumns.sm], [gdColumns.md], [gdColumns.lg], [gdColumns.xl],\n [gdColumns.lt-sm], [gdColumns.lt-md], [gdColumns.lt-lg], [gdColumns.lt-xl],\n [gdColumns.gt-xs], [gdColumns.gt-sm], [gdColumns.gt-md], [gdColumns.gt-lg]\n`;\n\n/**\n * 'grid-template-columns' CSS Grid styling directive\n * Configures the sizing for the columns in the grid\n * Syntax: [auto]\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13\n */\n@Directive({selector, inputs})\nexport class DefaultGridColumnsDirective extends GridColumnsDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = '0';\n\nexport interface GridGapParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridGapStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridGapParent) {\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-gap': input || DEFAULT_VALUE\n };\n }\n}\n\nexport class GridGapDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-gap';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridGapStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? gapInlineCache : gapCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst gapCache: Map = new Map();\nconst gapInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdGap',\n 'gdGap.xs', 'gdGap.sm', 'gdGap.md', 'gdGap.lg', 'gdGap.xl',\n 'gdGap.lt-sm', 'gdGap.lt-md', 'gdGap.lt-lg', 'gdGap.lt-xl',\n 'gdGap.gt-xs', 'gdGap.gt-sm', 'gdGap.gt-md', 'gdGap.gt-lg'\n];\n\nconst selector = `\n [gdGap],\n [gdGap.xs], [gdGap.sm], [gdGap.md], [gdGap.lg], [gdGap.xl],\n [gdGap.lt-sm], [gdGap.lt-md], [gdGap.lt-lg], [gdGap.lt-xl],\n [gdGap.gt-xs], [gdGap.gt-sm], [gdGap.gt-md], [gdGap.gt-lg]\n`;\n\n/**\n * 'grid-gap' CSS Grid styling directive\n * Configures the gap between items in the grid\n * Syntax: []\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-17\n */\n@Directive({selector, inputs})\nexport class DefaultGridGapDirective extends GridGapDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridRowStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-row': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridRowDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-row';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridRowStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = rowCache;\n}\n\nconst rowCache: Map = new Map();\n\nconst inputs = [\n 'gdRow',\n 'gdRow.xs', 'gdRow.sm', 'gdRow.md', 'gdRow.lg', 'gdRow.xl',\n 'gdRow.lt-sm', 'gdRow.lt-md', 'gdRow.lt-lg', 'gdRow.lt-xl',\n 'gdRow.gt-xs', 'gdRow.gt-sm', 'gdRow.gt-md', 'gdRow.gt-lg'\n];\n\nconst selector = `\n [gdRow],\n [gdRow.xs], [gdRow.sm], [gdRow.md], [gdRow.lg], [gdRow.xl],\n [gdRow.lt-sm], [gdRow.lt-md], [gdRow.lt-lg], [gdRow.lt-xl],\n [gdRow.gt-xs], [gdRow.gt-sm], [gdRow.gt-md], [gdRow.gt-lg]\n`;\n\n/**\n * 'grid-row' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26\n */\n@Directive({selector, inputs})\nexport class DefaultGridRowDirective extends GridRowDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst AUTO_SPECIFIER = '!';\n\nexport interface GridRowsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridRowsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridRowsParent) {\n input = input || DEFAULT_VALUE;\n let auto = false;\n if (input.endsWith(AUTO_SPECIFIER)) {\n input = input.substring(0, input.indexOf(AUTO_SPECIFIER));\n auto = true;\n }\n\n const css = {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-rows': '',\n 'grid-template-rows': '',\n };\n const key = (auto ? 'grid-auto-rows' : 'grid-template-rows');\n css[key] = input;\n\n return css;\n }\n}\n\nexport class GridRowsDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-rows';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridRowsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? rowsInlineCache : rowsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst rowsCache: Map = new Map();\nconst rowsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdRows',\n 'gdRows.xs', 'gdRows.sm', 'gdRows.md', 'gdRows.lg', 'gdRows.xl',\n 'gdRows.lt-sm', 'gdRows.lt-md', 'gdRows.lt-lg', 'gdRows.lt-xl',\n 'gdRows.gt-xs', 'gdRows.gt-sm', 'gdRows.gt-md', 'gdRows.gt-lg'\n];\n\nconst selector = `\n [gdRows],\n [gdRows.xs], [gdRows.sm], [gdRows.md], [gdRows.lg], [gdRows.xl],\n [gdRows.lt-sm], [gdRows.lt-md], [gdRows.lt-lg], [gdRows.lt-xl],\n [gdRows.gt-xs], [gdRows.gt-sm], [gdRows.gt-md], [gdRows.gt-lg]\n`;\n\n/**\n * 'grid-template-rows' CSS Grid styling directive\n * Configures the sizing for the rows in the grid\n * Syntax: [auto]\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13\n */\n@Directive({selector, inputs})\nexport class DefaultGridRowsDirective extends GridRowsDirective {\n protected inputs = inputs;\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';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultGridAlignDirective} from './grid-align/grid-align';\nimport {DefaultGridAlignColumnsDirective} from './align-columns/align-columns';\nimport {DefaultGridAlignRowsDirective} from './align-rows/align-rows';\nimport {DefaultGridAreaDirective} from './area/area';\nimport {DefaultGridAreasDirective} from './areas/areas';\nimport {DefaultGridAutoDirective} from './auto/auto';\nimport {DefaultGridColumnDirective} from './column/column';\nimport {DefaultGridColumnsDirective} from './columns/columns';\nimport {DefaultGridGapDirective} from './gap/gap';\nimport {DefaultGridRowDirective} from './row/row';\nimport {DefaultGridRowsDirective} from './rows/rows';\n\n\nconst ALL_DIRECTIVES = [\n DefaultGridAlignDirective,\n DefaultGridAlignColumnsDirective,\n DefaultGridAlignRowsDirective,\n DefaultGridAreaDirective,\n DefaultGridAreasDirective,\n DefaultGridAutoDirective,\n DefaultGridColumnDirective,\n DefaultGridColumnsDirective,\n DefaultGridGapDirective,\n DefaultGridRowDirective,\n DefaultGridRowsDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the CSS Grid API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class GridModule {\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 {Version} from '@angular/core';\n\n/** Current version of Angular Flex-Layout. */\nexport const VERSION = new Version('8.0.0-beta.26');\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 {\n Inject,\n ModuleWithProviders,\n NgModule,\n Optional,\n PLATFORM_ID,\n} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\n\nimport {\n SERVER_TOKEN,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n DEFAULT_CONFIG,\n BreakPoint,\n BREAKPOINT,\n} from '@angular/flex-layout/core';\nimport {ExtendedModule} from '@angular/flex-layout/extended';\nimport {FlexModule} from '@angular/flex-layout/flex';\nimport {GridModule} from '@angular/flex-layout/grid';\n\n/**\n * FlexLayoutModule -- the main import for all utilities in the Angular Layout library\n * * Will automatically provide Flex, Grid, and Extended modules for use in the application\n * * Can be configured using the static withConfig method, options viewable on the Wiki's\n * Configuration page\n */\n@NgModule({\n imports: [FlexModule, ExtendedModule, GridModule],\n exports: [FlexModule, ExtendedModule, GridModule]\n})\nexport class FlexLayoutModule {\n\n /**\n * Initialize the FlexLayoutModule with a set of config options,\n * which sets the corresponding tokens accordingly\n */\n static withConfig(configOptions: LayoutConfigOptions,\n breakpoints: BreakPoint|BreakPoint[] = []): ModuleWithProviders {\n return {\n ngModule: FlexLayoutModule,\n providers: configOptions.serverLoaded ?\n [\n {provide: LAYOUT_CONFIG, useValue: {...DEFAULT_CONFIG, ...configOptions}},\n {provide: BREAKPOINT, useValue: breakpoints, multi: true},\n {provide: SERVER_TOKEN, useValue: true},\n ] : [\n {provide: LAYOUT_CONFIG, useValue: {...DEFAULT_CONFIG, ...configOptions}},\n {provide: BREAKPOINT, useValue: breakpoints, multi: true},\n ]\n };\n }\n\n constructor(@Optional() @Inject(SERVER_TOKEN) serverModuleLoaded: boolean,\n @Inject(PLATFORM_ID) platformId: Object) {\n if (isPlatformServer(platformId) && !serverModuleLoaded) {\n console.warn('Warning: Flex Layout loaded on the server without FlexLayoutServerModule');\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 {Inject, Injectable, Optional, 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(@Optional() private _serverStylesheet: StylesheetMap,\n @Optional() @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 /**\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 */\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 {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;\ntype BreakpointMap = Map;\ntype ElementMap = Map;\ntype ElementKeyMap = WeakMap>;\ntype SubscriptionMap = Map;\ntype WatcherMap = WeakMap;\ntype BuilderMap = WeakMap>;\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 = 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[] = []): 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 {\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[]) {\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)) {\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 */\nimport {Directive, ElementRef, Inject, PLATFORM_ID, Injectable, Input} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n MediaMarshaller,\n BaseDirective2,\n SERVER_TOKEN,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class ImgSrcStyleBuilder extends StyleBuilder {\n buildStyles(url: string) {\n return {'content': url ? `url(${url})` : ''};\n }\n}\n\nexport class ImgSrcDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'img-src';\n protected defaultSrc = '';\n\n @Input('src')\n set src(val: string) {\n this.defaultSrc = val;\n this.setValue(this.defaultSrc, '');\n }\n\n constructor(protected elementRef: ElementRef,\n protected styleBuilder: ImgSrcStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n @Inject(PLATFORM_ID) protected platformId: Object,\n @Inject(SERVER_TOKEN) protected serverModuleLoaded: boolean) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n this.setValue(this.nativeElement.getAttribute('src') || '', '');\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.nativeElement.setAttribute('src', '');\n }\n }\n\n /**\n * Use the [responsively] activated input value to update\n * the host img src attribute or assign a default `img.src=''`\n * if the src has not been defined.\n *\n * Do nothing to standard `` usages, only when responsive\n * keys are present do we actually call `setAttribute()`\n */\n protected updateWithValue(value?: string) {\n const url = value || this.defaultSrc;\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.addStyles(url);\n } else {\n this.nativeElement.setAttribute('src', url);\n }\n }\n\n protected styleCache = imgSrcCache;\n}\n\nconst imgSrcCache: Map = new Map();\n\nconst inputs = [\n 'src.xs', 'src.sm', 'src.md', 'src.lg', 'src.xl',\n 'src.lt-sm', 'src.lt-md', 'src.lt-lg', 'src.lt-xl',\n 'src.gt-xs', 'src.gt-sm', 'src.gt-md', 'src.gt-lg'\n];\n\nconst selector = `\n img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl],\n img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl],\n img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]\n`;\n\n/**\n * This directive provides a responsive API for the HTML 'src' attribute\n * and will update the img.src property upon each responsive activation.\n *\n * e.g.\n * \n *\n * @see https://css-tricks.com/responsive-images-youre-just-changing-resolutions-use-src/\n */\n@Directive({selector, inputs})\nexport class DefaultImgSrcDirective extends ImgSrcDirective {\n protected inputs = inputs;\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 {Directive, DoCheck, ElementRef, Input, Optional, Self} from '@angular/core';\nimport {NgClass, ɵNgClassImpl, ɵNgClassR2Impl} from '@angular/common';\nimport {BaseDirective2, StyleUtils, MediaMarshaller} from '@angular/flex-layout/core';\n\nexport class ClassDirective extends BaseDirective2 implements DoCheck {\n\n protected DIRECTIVE_KEY = 'ngClass';\n\n /**\n * Capture class assignments so we cache the default classes\n * which are merged with activated styles and used as fallbacks.\n */\n @Input('class')\n set klass(val: string) {\n this.ngClassInstance.klass = val;\n this.setValue(val, '');\n }\n\n constructor(protected elementRef: ElementRef,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n protected delegate: ɵNgClassImpl,\n @Optional() @Self() protected readonly ngClassInstance: NgClass) {\n super(elementRef, null!, styler, marshal);\n if (!this.ngClassInstance) {\n // Create an instance NgClass Directive instance only if `ngClass=\"\"` has NOT been defined on\n // the same host element; since the responsive variations may be defined...\n this.ngClassInstance = new NgClass(this.delegate);\n }\n this.init();\n this.setValue('', '');\n }\n\n protected updateWithValue(value: any) {\n this.ngClassInstance.ngClass = value;\n this.ngClassInstance.ngDoCheck();\n }\n\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n\n /**\n * For ChangeDetectionStrategy.onPush and ngOnChanges() updates\n */\n ngDoCheck() {\n this.ngClassInstance.ngDoCheck();\n }\n}\n\nconst inputs = [\n 'ngClass', 'ngClass.xs', 'ngClass.sm', 'ngClass.md', 'ngClass.lg', 'ngClass.xl',\n 'ngClass.lt-sm', 'ngClass.lt-md', 'ngClass.lt-lg', 'ngClass.lt-xl',\n 'ngClass.gt-xs', 'ngClass.gt-sm', 'ngClass.gt-md', 'ngClass.gt-lg'\n];\n\nconst selector = `\n [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl],\n [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl],\n [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]\n`;\n\n// tslint:disable-next-line:variable-name\nexport const LayoutNgClassImplProvider = {\n provide: ɵNgClassImpl,\n useClass: ɵNgClassR2Impl\n};\n\n/**\n * Directive to add responsive support for ngClass.\n * This maintains the core functionality of 'ngClass' and adds responsive API\n * Note: this class is a no-op when rendered on the server\n */\n@Directive({selector, inputs, providers: [LayoutNgClassImplProvider]})\nexport class DefaultClassDirective extends ClassDirective {\n protected inputs = inputs;\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 {\n Directive,\n ElementRef,\n OnChanges,\n SimpleChanges,\n Optional,\n Inject,\n PLATFORM_ID,\n Injectable,\n AfterViewInit,\n} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n BaseDirective2,\n LAYOUT_CONFIG,\n LayoutConfigOptions,\n MediaMarshaller,\n SERVER_TOKEN,\n StyleUtils,\n StyleBuilder,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {takeUntil} from 'rxjs/operators';\n\nexport interface ShowHideParent {\n display: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class ShowHideStyleBuilder extends StyleBuilder {\n buildStyles(show: string, parent: ShowHideParent) {\n const shouldShow = show === 'true';\n return {'display': shouldShow ? parent.display : 'none'};\n }\n}\n\nexport class ShowHideDirective extends BaseDirective2 implements AfterViewInit, OnChanges {\n protected DIRECTIVE_KEY = 'show-hide';\n\n /** Original dom Elements CSS display style */\n protected display: string = '';\n protected hasLayout = false;\n protected hasFlexChild = false;\n\n constructor(protected elementRef: ElementRef,\n protected styleBuilder: ShowHideStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n @Inject(PLATFORM_ID) protected platformId: Object,\n @Optional() @Inject(SERVER_TOKEN) protected serverModuleLoaded: boolean) {\n super(elementRef, styleBuilder, styler, marshal);\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n ngAfterViewInit() {\n this.trackExtraTriggers();\n\n const children = Array.from(this.nativeElement.children);\n for (let i = 0; i < children.length; i++) {\n if (this.marshal.hasValue(children[i] as HTMLElement, 'flex')) {\n this.hasFlexChild = true;\n break;\n }\n }\n\n if (DISPLAY_MAP.has(this.nativeElement)) {\n this.display = DISPLAY_MAP.get(this.nativeElement)!;\n } else {\n this.display = this.getDisplayStyle();\n DISPLAY_MAP.set(this.nativeElement, this.display);\n }\n\n this.init();\n // set the default to show unless explicitly overridden\n const defaultValue = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY, '');\n if (defaultValue === undefined || defaultValue === '') {\n this.setValue(true, '');\n } else {\n this.triggerUpdate();\n }\n }\n\n /**\n * On changes to any @Input properties...\n * Default to use the non-responsive Input value ('fxShow')\n * Then conditionally override with the mq-activated Input's current value\n */\n ngOnChanges(changes: SimpleChanges) {\n Object.keys(changes).forEach(key => {\n if (this.inputs.indexOf(key) !== -1) {\n const inputKey = key.split('.');\n const bp = inputKey.slice(1).join('.');\n const inputValue = changes[key].currentValue;\n let shouldShow = inputValue !== '' ?\n inputValue !== 0 ? coerceBooleanProperty(inputValue) : false\n : true;\n if (inputKey[0] === 'fxHide') {\n shouldShow = !shouldShow;\n }\n this.setValue(shouldShow, bp);\n }\n });\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Watch for these extra triggers to update fxShow, fxHide stylings\n */\n protected trackExtraTriggers() {\n this.hasLayout = this.marshal.hasValue(this.nativeElement, 'layout');\n\n ['layout', 'layout-align'].forEach(key => {\n this.marshal\n .trackValue(this.nativeElement, key)\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerUpdate.bind(this));\n });\n }\n\n /**\n * Override accessor to the current HTMLElement's `display` style\n * Note: Show/Hide will not change the display to 'flex' but will set it to 'block'\n * unless it was already explicitly specified inline or in a CSS stylesheet.\n */\n protected getDisplayStyle(): string {\n return (this.hasLayout || (this.hasFlexChild && this.layoutConfig.addFlexToParent)) ?\n 'flex' : this.styler.lookupStyle(this.nativeElement, 'display', true);\n }\n\n /** Validate the visibility value and then update the host's inline display style */\n protected updateWithValue(value: boolean | string = true) {\n if (value === '') {\n return;\n }\n this.addStyles(value ? 'true' : 'false', {display: this.display});\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.nativeElement.style.setProperty('display', '');\n }\n this.marshal.triggerUpdate(this.parentElement!, 'layout-gap');\n }\n}\n\nconst DISPLAY_MAP: WeakMap = new WeakMap();\n\nconst inputs = [\n 'fxShow', 'fxShow.print',\n 'fxShow.xs', 'fxShow.sm', 'fxShow.md', 'fxShow.lg', 'fxShow.xl',\n 'fxShow.lt-sm', 'fxShow.lt-md', 'fxShow.lt-lg', 'fxShow.lt-xl',\n 'fxShow.gt-xs', 'fxShow.gt-sm', 'fxShow.gt-md', 'fxShow.gt-lg',\n 'fxHide', 'fxHide.print',\n 'fxHide.xs', 'fxHide.sm', 'fxHide.md', 'fxHide.lg', 'fxHide.xl',\n 'fxHide.lt-sm', 'fxHide.lt-md', 'fxHide.lt-lg', 'fxHide.lt-xl',\n 'fxHide.gt-xs', 'fxHide.gt-sm', 'fxHide.gt-md', 'fxHide.gt-lg'\n];\n\nconst selector = `\n [fxShow], [fxShow.print],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide], [fxHide.print],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n`;\n\n/**\n * 'show' Layout API directive\n */\n@Directive({selector, inputs})\nexport class DefaultShowHideDirective extends ShowHideDirective {\n protected inputs = inputs;\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\nexport type NgStyleRawList = string[];\nexport type NgStyleMap = {[klass: string]: string};\n// NgStyle selectors accept NgStyleType values\nexport type NgStyleType = string | Set | NgStyleRawList | NgStyleMap;\n\n/**\n * Callback function for SecurityContext.STYLE sanitization\n */\nexport type NgStyleSanitizer = (val: any) => string;\n\n/** NgStyle allowed inputs */\nexport class NgStyleKeyValue {\n constructor(public key: string, public value: string, noQuotes = true) {\n this.key = noQuotes ? key.replace(/['\"]/g, '').trim() : key.trim();\n\n this.value = noQuotes ? value.replace(/['\"]/g, '').trim() : value.trim();\n this.value = this.value.replace(/;/, '');\n }\n}\n\nexport function getType(target: any): string {\n let what = typeof target;\n if (what === 'object') {\n return (target.constructor === Array) ? 'array' :\n (target.constructor === Set) ? 'set' : 'object';\n }\n return what;\n}\n\n/**\n * Split string of key:value pairs into Array of k-v pairs\n * e.g. 'key:value; key:value; key:value;' -> ['key:value',...]\n */\nexport function buildRawList(source: any, delimiter = ';'): NgStyleRawList {\n return String(source)\n .trim()\n .split(delimiter)\n .map((val: string) => val.trim())\n .filter(val => val !== '');\n}\n\n/** Convert array of key:value strings to a iterable map object */\nexport function buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap {\n const sanitizeValue = (it: NgStyleKeyValue) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n };\n\n return styles\n .map(stringToKeyValue)\n .filter(entry => !!entry)\n .map(sanitizeValue)\n .reduce(keyValuesToMap, {} as NgStyleMap);\n}\n\n/** Convert Set or raw Object to an iterable NgStyleMap */\nexport function buildMapFromSet(source: NgStyleType, sanitize?: NgStyleSanitizer): NgStyleMap {\n let list: string[] = [];\n if (getType(source) === 'set') {\n (source as Set).forEach(entry => list.push(entry));\n } else {\n Object.keys(source).forEach((key: string) => {\n list.push(`${key}:${(source as NgStyleMap)[key]}`);\n });\n }\n return buildMapFromList(list, sanitize);\n}\n\n\n/** Convert 'key:value' -> [key, value] */\nexport function stringToKeyValue(it: string): NgStyleKeyValue {\n const [key, ...vals] = it.split(':');\n return new NgStyleKeyValue(key, vals.join(':'));\n}\n\n/** Convert [ [key,value] ] -> { key : value } */\nexport function keyValuesToMap(map: NgStyleMap, entry: NgStyleKeyValue): NgStyleMap {\n if (!!entry.key) {\n map[entry.key] = entry.value;\n }\n return map;\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 {\n Directive,\n DoCheck,\n ElementRef,\n Inject,\n Optional,\n PLATFORM_ID,\n SecurityContext,\n Self,\n} from '@angular/core';\nimport {isPlatformServer, NgStyle, ɵNgStyleImpl, ɵNgStyleR2Impl} from '@angular/common';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n SERVER_TOKEN,\n} from '@angular/flex-layout/core';\n\nimport {\n NgStyleRawList,\n NgStyleType,\n NgStyleSanitizer,\n buildRawList,\n getType,\n buildMapFromSet,\n NgStyleMap,\n NgStyleKeyValue,\n stringToKeyValue,\n keyValuesToMap,\n} from './style-transforms';\n\nexport class StyleDirective extends BaseDirective2 implements DoCheck {\n\n protected DIRECTIVE_KEY = 'ngStyle';\n protected fallbackStyles: NgStyleMap;\n protected isServer: boolean;\n\n constructor(protected elementRef: ElementRef,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n protected delegate: ɵNgStyleImpl,\n protected sanitizer: DomSanitizer,\n @Optional() @Self() private readonly ngStyleInstance: NgStyle,\n @Optional() @Inject(SERVER_TOKEN) serverLoaded: boolean,\n @Inject(PLATFORM_ID) platformId: Object) {\n super(elementRef, null!, styler, marshal);\n if (!this.ngStyleInstance) {\n // Create an instance NgClass Directive instance only if `ngClass=\"\"` has NOT been\n // defined on the same host element; since the responsive variations may be defined...\n this.ngStyleInstance = new NgStyle(this.delegate);\n }\n this.init();\n const styles = this.nativeElement.getAttribute('style') || '';\n this.fallbackStyles = this.buildStyleMap(styles);\n this.isServer = serverLoaded && isPlatformServer(platformId);\n }\n\n /** Add generated styles */\n protected updateWithValue(value: any) {\n const styles = this.buildStyleMap(value);\n this.ngStyleInstance.ngStyle = {...this.fallbackStyles, ...styles};\n if (this.isServer) {\n this.applyStyleToElement(styles);\n }\n this.ngStyleInstance.ngDoCheck();\n }\n\n /** Remove generated styles */\n protected clearStyles() {\n this.ngStyleInstance.ngStyle = this.fallbackStyles;\n this.ngStyleInstance.ngDoCheck();\n }\n\n /**\n * Convert raw strings to ngStyleMap; which is required by ngStyle\n * NOTE: Raw string key-value pairs MUST be delimited by `;`\n * Comma-delimiters are not supported due to complexities of\n * possible style values such as `rgba(x,x,x,x)` and others\n */\n protected buildStyleMap(styles: NgStyleType): NgStyleMap {\n // Always safe-guard (aka sanitize) style property values\n const sanitizer: NgStyleSanitizer = (val: any) =>\n this.sanitizer.sanitize(SecurityContext.STYLE, val) || '';\n if (styles) {\n switch (getType(styles)) {\n case 'string': return buildMapFromList(buildRawList(styles),\n sanitizer);\n case 'array' : return buildMapFromList(styles as NgStyleRawList, sanitizer);\n case 'set' : return buildMapFromSet(styles, sanitizer);\n default : return buildMapFromSet(styles, sanitizer);\n }\n }\n\n return {};\n }\n\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n\n /** For ChangeDetectionStrategy.onPush and ngOnChanges() updates */\n ngDoCheck() {\n this.ngStyleInstance.ngDoCheck();\n }\n}\n\nconst inputs = [\n 'ngStyle',\n 'ngStyle.xs', 'ngStyle.sm', 'ngStyle.md', 'ngStyle.lg', 'ngStyle.xl',\n 'ngStyle.lt-sm', 'ngStyle.lt-md', 'ngStyle.lt-lg', 'ngStyle.lt-xl',\n 'ngStyle.gt-xs', 'ngStyle.gt-sm', 'ngStyle.gt-md', 'ngStyle.gt-lg'\n];\n\nconst selector = `\n [ngStyle],\n [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl],\n [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl],\n [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]\n`;\n\n// tslint:disable-next-line:variable-name\nexport const LayoutNgStyleImplProvider = {\n provide: ɵNgStyleImpl,\n useClass: ɵNgStyleR2Impl\n};\n\n/**\n * Directive to add responsive support for ngStyle.\n *\n */\n@Directive({selector, inputs, providers: [LayoutNgStyleImplProvider]})\nexport class DefaultStyleDirective extends StyleDirective implements DoCheck {\n protected inputs = inputs;\n}\n\n/** Build a styles map from a list of styles, while sanitizing bad values first */\nfunction buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap {\n const sanitizeValue = (it: NgStyleKeyValue) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n };\n\n return styles\n .map(stringToKeyValue)\n .filter(entry => !!entry)\n .map(sanitizeValue)\n .reduce(keyValuesToMap, {} as NgStyleMap);\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';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultImgSrcDirective} from './img-src/img-src';\nimport {DefaultClassDirective} from './class/class';\nimport {DefaultShowHideDirective} from './show-hide/show-hide';\nimport {DefaultStyleDirective} from './style/style';\n\n\nconst ALL_DIRECTIVES = [\n DefaultShowHideDirective,\n DefaultClassDirective,\n DefaultStyleDirective,\n DefaultImgSrcDirective\n];\n\n/**\n * *****************************************************************\n * Define module for the Extended API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class ExtendedModule {\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='' 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 : 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 {Directive, ElementRef, OnChanges, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\nimport {buildLayoutCSS} from '../../utils/layout-validator';\n\n@Injectable({providedIn: 'root'})\nexport class LayoutStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return buildLayoutCSS(input);\n }\n}\n\nconst inputs = [\n 'fxLayout', 'fxLayout.xs', 'fxLayout.sm', 'fxLayout.md',\n 'fxLayout.lg', 'fxLayout.xl', 'fxLayout.lt-sm', 'fxLayout.lt-md',\n 'fxLayout.lt-lg', 'fxLayout.lt-xl', 'fxLayout.gt-xs', 'fxLayout.gt-sm',\n 'fxLayout.gt-md', 'fxLayout.gt-lg'\n];\nconst selector = `\n [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],\n [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md],\n [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm],\n [fxLayout.gt-md], [fxLayout.gt-lg]\n`;\n\n/**\n * 'layout' flexbox styling directive\n * Defines the positioning flow direction for the child elements: row or column\n * Optional values: column or row (default)\n * @see https://css-tricks.com/almanac/properties/f/flex-direction/\n *\n */\nexport class LayoutDirective extends BaseDirective2 implements OnChanges {\n\n protected DIRECTIVE_KEY = 'layout';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = layoutCache;\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutDirective extends LayoutDirective {\n protected inputs = inputs;\n}\n\nconst layoutCache: Map = new Map();\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 {\n Directive,\n ElementRef,\n Optional,\n OnDestroy,\n NgZone,\n Injectable,\n AfterContentInit,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {LAYOUT_VALUES} from '../../utils/layout-validator';\n\nexport interface LayoutGapParent {\n directionality: string;\n items: HTMLElement[];\n layout: string;\n}\n\nconst CLEAR_MARGIN_CSS = {\n 'margin-left': null,\n 'margin-right': null,\n 'margin-top': null,\n 'margin-bottom': null\n};\n\n@Injectable({providedIn: 'root'})\nexport class LayoutGapStyleBuilder extends StyleBuilder {\n constructor(private _styler: StyleUtils) {\n super();\n }\n\n buildStyles(gapValue: string, parent: LayoutGapParent) {\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n\n // Add the margin to the host element\n return buildGridMargin(gapValue, parent.directionality);\n } else {\n return {};\n }\n }\n\n sideEffect(gapValue: string, _styles: StyleDefinition, parent: LayoutGapParent) {\n const items = parent.items;\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n // For each `element` children, set the padding\n const paddingStyles = buildGridPadding(gapValue, parent.directionality);\n this._styler.applyStyleToElements(paddingStyles, parent.items);\n } else {\n const lastItem = items.pop()!;\n\n // For each `element` children EXCEPT the last,\n // set the margin right/bottom styles...\n const gapCss = buildGapCSS(gapValue, parent);\n this._styler.applyStyleToElements(gapCss, items);\n\n // Clear all gaps for all visible elements\n this._styler.applyStyleToElements(CLEAR_MARGIN_CSS, [lastItem]);\n }\n }\n}\n\nconst inputs = [\n 'fxLayoutGap', 'fxLayoutGap.xs', 'fxLayoutGap.sm', 'fxLayoutGap.md',\n 'fxLayoutGap.lg', 'fxLayoutGap.xl', 'fxLayoutGap.lt-sm', 'fxLayoutGap.lt-md',\n 'fxLayoutGap.lt-lg', 'fxLayoutGap.lt-xl', 'fxLayoutGap.gt-xs', 'fxLayoutGap.gt-sm',\n 'fxLayoutGap.gt-md', 'fxLayoutGap.gt-lg'\n];\nconst selector = `\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n`;\n\n/**\n * 'layout-padding' styling directive\n * Defines padding of child elements in a layout container\n */\nexport class LayoutGapDirective extends BaseDirective2 implements AfterContentInit, OnDestroy {\n protected layout = 'row'; // default flex-direction\n protected DIRECTIVE_KEY = 'layout-gap';\n protected observerSubject = new Subject();\n\n /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */\n protected get childrenNodes(): HTMLElement[] {\n const obj = this.nativeElement.children;\n const buffer: any[] = [];\n\n // iterate backwards ensuring that length is an UInt32\n for (let i = obj.length; i--;) {\n buffer[i] = obj[i];\n }\n return buffer;\n }\n\n constructor(protected elRef: ElementRef,\n protected zone: NgZone,\n protected directionality: Directionality,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutGapStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n const extraTriggers = [this.directionality.change, this.observerSubject.asObservable()];\n this.init(extraTriggers);\n this.marshal\n .trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n ngAfterContentInit() {\n this.buildChildObservable();\n this.triggerUpdate();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Cache the parent container 'flex-direction' and update the 'margin' styles\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n // Make sure to filter out 'wrap' option\n const direction = layout.split(' ');\n this.layout = direction[0];\n if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n\n /**\n *\n */\n protected updateWithValue(value: string) {\n // Gather all non-hidden Element nodes\n const items = this.childrenNodes\n .filter(el => el.nodeType === 1 && this.willDisplay(el))\n .sort((a, b) => {\n const orderA = +this.styler.lookupStyle(a, 'order');\n const orderB = +this.styler.lookupStyle(b, 'order');\n if (isNaN(orderA) || isNaN(orderB) || orderA === orderB) {\n return 0;\n } else {\n return orderA > orderB ? 1 : -1;\n }\n });\n\n if (items.length > 0) {\n const directionality = this.directionality.value;\n const layout = this.layout;\n if (layout === 'row' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheRowRtl;\n } else if (layout === 'row' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheRowLtr;\n } else if (layout === 'column' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheColumnRtl;\n } else if (layout === 'column' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheColumnLtr;\n }\n this.addStyles(value, {directionality, items, layout});\n }\n }\n\n /** We need to override clearStyles because in most cases mru isn't populated */\n protected clearStyles() {\n const gridMode = Object.keys(this.mru).length > 0;\n const childrenStyle = gridMode ? 'padding' :\n getMarginType(this.directionality.value, this.layout);\n\n // If there are styles on the parent remove them\n if (gridMode) {\n super.clearStyles();\n }\n\n // Then remove the children styles too\n this.styleUtils.applyStyleToElements({[childrenStyle]: ''}, this.childrenNodes);\n }\n\n /** Determine if an element will show or hide based on current activation */\n protected willDisplay(source: HTMLElement): boolean {\n const value = this.marshal.getValue(source, 'show-hide');\n return value === true ||\n (value === undefined && this.styleUtils.lookupStyle(source, 'display') !== 'none');\n }\n\n protected buildChildObservable(): void {\n this.zone.runOutsideAngular(() => {\n if (typeof MutationObserver !== 'undefined') {\n this.observer = new MutationObserver((mutations: MutationRecord[]) => {\n const validatedChanges = (it: MutationRecord): boolean => {\n return (it.addedNodes && it.addedNodes.length > 0) ||\n (it.removedNodes && it.removedNodes.length > 0);\n };\n\n // update gap styles only for child 'added' or 'removed' events\n if (mutations.some(validatedChanges)) {\n this.observerSubject.next();\n }\n });\n this.observer.observe(this.nativeElement, {childList: true});\n }\n });\n }\n\n protected observer?: MutationObserver;\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutGapDirective extends LayoutGapDirective {\n protected inputs = inputs;\n}\n\nconst layoutGapCacheRowRtl: Map = new Map();\nconst layoutGapCacheColumnRtl: Map = new Map();\nconst layoutGapCacheRowLtr: Map = new Map();\nconst layoutGapCacheColumnLtr: Map = new Map();\n\nconst GRID_SPECIFIER = ' grid';\n\nfunction buildGridPadding(value: string, directionality: string): StyleDefinition {\n let paddingTop = '0px', paddingRight = '0px', paddingBottom = value, paddingLeft = '0px';\n\n if (directionality === 'rtl') {\n paddingLeft = value;\n } else {\n paddingRight = value;\n }\n\n return {'padding': `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`};\n}\n\nfunction buildGridMargin(value: string, directionality: string): StyleDefinition {\n let marginTop = '0px', marginRight = '0px', marginBottom = '-' + value, marginLeft = '0px';\n\n if (directionality === 'rtl') {\n marginLeft = '-' + value;\n } else {\n marginRight = '-' + value;\n }\n\n return {'margin': `${marginTop} ${marginRight} ${marginBottom} ${marginLeft}`};\n}\n\nfunction getMarginType(directionality: string, layout: string) {\n switch (layout) {\n case 'column':\n return 'margin-bottom';\n case 'column-reverse':\n return 'margin-top';\n case 'row':\n return directionality === 'rtl' ? 'margin-left' : 'margin-right';\n case 'row-reverse':\n return directionality === 'rtl' ? 'margin-right' : 'margin-left';\n default :\n return directionality === 'rtl' ? 'margin-left' : 'margin-right';\n }\n}\n\nfunction buildGapCSS(gapValue: string,\n parent: {directionality: string, layout: string}): StyleDefinition {\n const key = getMarginType(parent.directionality, parent.layout);\n const margins: {[key: string]: string | null} = {...CLEAR_MARGIN_CSS};\n margins[key] = gapValue;\n return margins;\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 {Directive, ElementRef, Inject, Injectable, Input} from '@angular/core';\nimport {\n BaseDirective2,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n StyleUtils,\n validateBasis,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {extendObject} from '../../utils/object-extend';\nimport {isFlowHorizontal} from '../../utils/layout-validator';\n\ninterface FlexBuilderParent {\n direction: string;\n hasWrap: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FlexStyleBuilder extends StyleBuilder {\n constructor(@Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions) {\n super();\n }\n buildStyles(input: string, parent: FlexBuilderParent) {\n let [grow, shrink, ...basisParts]: (string|number)[] = input.split(' ');\n let basis = basisParts.join(' ');\n\n // The flex-direction of this element's flex container. Defaults to 'row'.\n const direction = (parent.direction.indexOf('column') > -1) ? 'column' : 'row';\n\n const max = isFlowHorizontal(direction) ? 'max-width' : 'max-height';\n const min = isFlowHorizontal(direction) ? 'min-width' : 'min-height';\n\n const hasCalc = String(basis).indexOf('calc') > -1;\n const usingCalc = hasCalc || (basis === 'auto');\n const isPercent = String(basis).indexOf('%') > -1 && !hasCalc;\n const hasUnits = String(basis).indexOf('px') > -1 || String(basis).indexOf('rem') > -1 ||\n String(basis).indexOf('em') > -1 || String(basis).indexOf('vw') > -1 ||\n String(basis).indexOf('vh') > -1;\n\n let isValue = (hasCalc || hasUnits);\n\n grow = (grow == '0') ? 0 : grow;\n shrink = (shrink == '0') ? 0 : shrink;\n\n // make box inflexible when shrink and grow are both zero\n // should not set a min when the grow is zero\n // should not set a max when the shrink is zero\n const isFixed = !grow && !shrink;\n\n let css: {[key: string]: string | number | null} = {};\n\n // flex-basis allows you to specify the initial/starting main-axis size of the element,\n // before anything else is computed. It can either be a percentage or an absolute value.\n // It is, however, not the breaking point for flex-grow/shrink properties\n //\n // flex-grow can be seen as this:\n // 0: Do not stretch. Either size to element's content width, or obey 'flex-basis'.\n // 1: (Default value). Stretch; will be the same size to all other flex items on\n // the same row since they have a default value of 1.\n // ≥2 (integer n): Stretch. Will be n times the size of other elements\n // with 'flex-grow: 1' on the same row.\n\n // Use `null` to clear existing styles.\n const clearStyles = {\n 'max-width': null,\n 'max-height': null,\n 'min-width': null,\n 'min-height': null\n };\n switch (basis || '') {\n case '':\n const useColumnBasisZero = this.layoutConfig.useColumnBasisZero !== false;\n basis = direction === 'row' ? '0%' : (useColumnBasisZero ? '0.000000001px' : 'auto');\n break;\n case 'initial': // default\n case 'nogrow':\n grow = 0;\n basis = 'auto';\n break;\n case 'grow':\n basis = '100%';\n break;\n case 'noshrink':\n shrink = 0;\n basis = 'auto';\n break;\n case 'auto':\n break;\n case 'none':\n grow = 0;\n shrink = 0;\n basis = 'auto';\n break;\n default:\n // Defaults to percentage sizing unless `px` is explicitly set\n if (!isValue && !isPercent && !isNaN(basis as any)) {\n basis = basis + '%';\n }\n\n // Fix for issue 280\n if (basis === '0%') {\n isValue = true;\n }\n\n if (basis === '0px') {\n basis = '0%';\n }\n\n // fix issue #5345\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': isValue ? basis : '100%'\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${isValue ? basis : '100%'}`\n });\n }\n\n break;\n }\n\n if (!(css['flex'] || css['flex-grow'])) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n }\n\n // Fix for issues 277, 534, and 728\n if (basis !== '0%' && basis !== '0px' && basis !== '0.000000001px' && basis !== 'auto') {\n css[min] = isFixed || (isValue && grow) ? basis : null;\n css[max] = isFixed || (!usingCalc && shrink) ? basis : null;\n }\n\n // Fix for issue 528\n if (!css[min] && !css[max]) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n } else {\n // Fix for issue 660\n if (parent.hasWrap) {\n css[hasCalc ? 'flex-basis' : 'flex'] = css[max] ?\n (hasCalc ? css[max] : `${grow} ${shrink} ${css[max]}`) :\n (hasCalc ? css[min] : `${grow} ${shrink} ${css[min]}`);\n }\n }\n\n return extendObject(css, {'box-sizing': 'border-box'}) as StyleDefinition;\n }\n}\n\nconst inputs = [\n 'fxFlex', 'fxFlex.xs', 'fxFlex.sm', 'fxFlex.md',\n 'fxFlex.lg', 'fxFlex.xl', 'fxFlex.lt-sm', 'fxFlex.lt-md',\n 'fxFlex.lt-lg', 'fxFlex.lt-xl', 'fxFlex.gt-xs', 'fxFlex.gt-sm',\n 'fxFlex.gt-md', 'fxFlex.gt-lg'\n];\nconst selector = `\n [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n [fxFlex.gt-md], [fxFlex.gt-lg]\n`;\n\n/**\n * Directive to control the size of a flex item using flex-basis, flex-grow, and flex-shrink.\n * Corresponds to the css `flex` shorthand property.\n *\n * @see https://css-tricks.com/snippets/css/a-guide-to-flexbox/\n */\nexport class FlexDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'flex';\n protected direction = '';\n protected wrap = false;\n\n\n @Input('fxShrink')\n get shrink(): string { return this.flexShrink; }\n set shrink(value: string) {\n this.flexShrink = value || '1';\n this.triggerReflow();\n }\n\n @Input('fxGrow')\n get grow(): string { return this.flexGrow; }\n set grow(value: string) {\n this.flexGrow = value || '1';\n this.triggerReflow();\n }\n\n protected flexGrow = '1';\n protected flexShrink = '1';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n protected styleBuilder: FlexStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n if (this.parentElement) {\n this.marshal.trackValue(this.parentElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n this.marshal.trackValue(this.nativeElement, 'layout-align')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerReflow.bind(this));\n }\n }\n\n /**\n * Caches the parent container's 'flex-direction' and updates the element's style.\n * Used as a handler for layout change events from the parent flex container.\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n const layoutParts = layout.split(' ');\n this.direction = layoutParts[0];\n this.wrap = layoutParts[1] !== undefined && layoutParts[1] === 'wrap';\n this.triggerUpdate();\n }\n\n /** Input to this is exclusively the basis input value */\n protected updateWithValue(value: string) {\n const addFlexToParent = this.layoutConfig.addFlexToParent !== false;\n if (!this.direction) {\n this.direction = this.getFlexFlowDirection(this.parentElement!, addFlexToParent);\n }\n const direction = this.direction;\n const isHorizontal = direction.startsWith('row');\n const hasWrap = this.wrap;\n if (isHorizontal && hasWrap) {\n this.styleCache = flexRowWrapCache;\n } else if (isHorizontal && !hasWrap) {\n this.styleCache = flexRowCache;\n } else if (!isHorizontal && hasWrap) {\n this.styleCache = flexColumnWrapCache;\n } else if (!isHorizontal && !hasWrap) {\n this.styleCache = flexColumnCache;\n }\n const basis = String(value).replace(';', '');\n const parts = validateBasis(basis, this.flexGrow, this.flexShrink);\n this.addStyles(parts.join(' '), {direction, hasWrap});\n }\n\n /** Trigger a style reflow, usually based on a shrink/grow input event */\n protected triggerReflow() {\n const activatedValue = this.activatedValue;\n if (activatedValue !== undefined) {\n const parts = validateBasis(activatedValue, this.flexGrow, this.flexShrink);\n this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, parts.join(' '));\n }\n }\n}\n\n@Directive({inputs, selector})\nexport class DefaultFlexDirective extends FlexDirective {\n protected inputs = inputs;\n}\n\nconst flexRowCache: Map = new Map();\nconst flexColumnCache: Map = new Map();\nconst flexRowWrapCache: Map = new Map();\nconst flexColumnWrapCache: Map = new Map();\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 {Directive, ElementRef, OnChanges, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class FlexOrderStyleBuilder extends StyleBuilder {\n buildStyles(value: string) {\n return {order: (value && parseInt(value, 10)) || ''};\n }\n}\n\nconst inputs = [\n 'fxFlexOrder', 'fxFlexOrder.xs', 'fxFlexOrder.sm', 'fxFlexOrder.md',\n 'fxFlexOrder.lg', 'fxFlexOrder.xl', 'fxFlexOrder.lt-sm', 'fxFlexOrder.lt-md',\n 'fxFlexOrder.lt-lg', 'fxFlexOrder.lt-xl', 'fxFlexOrder.gt-xs', 'fxFlexOrder.gt-sm',\n 'fxFlexOrder.gt-md', 'fxFlexOrder.gt-lg'\n];\nconst selector = `\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n`;\n\n/**\n * 'flex-order' flexbox styling directive\n * Configures the positional ordering of the element in a sorted layout container\n * @see https://css-tricks.com/almanac/properties/o/order/\n */\nexport class FlexOrderDirective extends BaseDirective2 implements OnChanges {\n\n protected DIRECTIVE_KEY = 'flex-order';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexOrderStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = flexOrderCache;\n}\n\nconst flexOrderCache: Map = new Map();\n\n@Directive({selector, inputs})\nexport class DefaultFlexOrderDirective extends FlexOrderDirective {\n protected inputs = inputs;\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 {\n Directive,\n ElementRef,\n OnChanges,\n Optional,\n Injectable,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {isFlowHorizontal} from '../../utils/layout-validator';\n\nexport interface FlexOffsetParent {\n layout: string;\n isRtl: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FlexOffsetStyleBuilder extends StyleBuilder {\n buildStyles(offset: string, parent: FlexOffsetParent) {\n if (offset === '') {\n offset = '0';\n }\n const isPercent = String(offset).indexOf('%') > -1;\n const isPx = String(offset).indexOf('px') > -1;\n if (!isPx && !isPercent && !isNaN(+offset)) {\n offset = offset + '%';\n }\n const horizontalLayoutKey = parent.isRtl ? 'margin-right' : 'margin-left';\n const styles: StyleDefinition = isFlowHorizontal(parent.layout) ?\n {[horizontalLayoutKey]: `${offset}`} : {'margin-top': `${offset}`};\n\n return styles;\n }\n}\n\nconst inputs = [\n 'fxFlexOffset', 'fxFlexOffset.xs', 'fxFlexOffset.sm', 'fxFlexOffset.md',\n 'fxFlexOffset.lg', 'fxFlexOffset.xl', 'fxFlexOffset.lt-sm', 'fxFlexOffset.lt-md',\n 'fxFlexOffset.lt-lg', 'fxFlexOffset.lt-xl', 'fxFlexOffset.gt-xs', 'fxFlexOffset.gt-sm',\n 'fxFlexOffset.gt-md', 'fxFlexOffset.gt-lg'\n];\nconst selector = `\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n`;\n\n/**\n * 'flex-offset' flexbox styling directive\n * Configures the 'margin-left' of the element in a layout container\n */\nexport class FlexOffsetDirective extends BaseDirective2 implements OnChanges {\n protected DIRECTIVE_KEY = 'flex-offset';\n\n constructor(protected elRef: ElementRef,\n protected directionality: Directionality,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexOffsetStyleBuilder,\n protected marshal: MediaMarshaller,\n protected styler: StyleUtils) {\n super(elRef, styleBuilder, styler, marshal);\n this.init([this.directionality.change]);\n // Parent DOM `layout-gap` with affect the nested child with `flex-offset`\n if (this.parentElement) {\n this.marshal\n .trackValue(this.parentElement, 'layout-gap')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerUpdate.bind(this));\n }\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Using the current fxFlexOffset value, update the inline CSS\n * NOTE: this will assign `margin-left` if the parent flex-direction == 'row',\n * otherwise `margin-top` is used for the offset.\n */\n protected updateWithValue(value: string|number = ''): void {\n // The flex-direction of this element's flex container. Defaults to 'row'.\n const layout = this.getFlexFlowDirection(this.parentElement!, true);\n const isRtl = this.directionality.value === 'rtl';\n if (layout === 'row' && isRtl) {\n this.styleCache = flexOffsetCacheRowRtl;\n } else if (layout === 'row' && !isRtl) {\n this.styleCache = flexOffsetCacheRowLtr;\n } else if (layout === 'column' && isRtl) {\n this.styleCache = flexOffsetCacheColumnRtl;\n } else if (layout === 'column' && !isRtl) {\n this.styleCache = flexOffsetCacheColumnLtr;\n }\n this.addStyles(value + '', {layout, isRtl});\n }\n}\n\n@Directive({selector, inputs})\nexport class DefaultFlexOffsetDirective extends FlexOffsetDirective {\n protected inputs = inputs;\n}\n\nconst flexOffsetCacheRowRtl: Map = new Map();\nconst flexOffsetCacheColumnRtl: Map = new Map();\nconst flexOffsetCacheRowLtr: Map = new Map();\nconst flexOffsetCacheColumnLtr: Map = new Map();\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class FlexAlignStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n input = input || 'stretch';\n const styles: StyleDefinition = {};\n\n // Cross-axis\n switch (input) {\n case 'start':\n styles['align-self'] = 'flex-start';\n break;\n case 'end':\n styles['align-self'] = 'flex-end';\n break;\n default:\n styles['align-self'] = input;\n break;\n }\n\n return styles;\n }\n}\n\nconst inputs = [\n 'fxFlexAlign', 'fxFlexAlign.xs', 'fxFlexAlign.sm', 'fxFlexAlign.md',\n 'fxFlexAlign.lg', 'fxFlexAlign.xl', 'fxFlexAlign.lt-sm', 'fxFlexAlign.lt-md',\n 'fxFlexAlign.lt-lg', 'fxFlexAlign.lt-xl', 'fxFlexAlign.gt-xs', 'fxFlexAlign.gt-sm',\n 'fxFlexAlign.gt-md', 'fxFlexAlign.gt-lg'\n];\nconst selector = `\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n`;\n\n/**\n * 'flex-align' flexbox styling directive\n * Allows element-specific overrides for cross-axis alignments in a layout container\n * @see https://css-tricks.com/almanac/properties/a/align-self/\n */\nexport class FlexAlignDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'flex-align';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexAlignStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = flexAlignCache;\n}\n\nconst flexAlignCache: Map = new Map();\n\n@Directive({selector, inputs})\nexport class DefaultFlexAlignDirective extends FlexAlignDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\nconst FLEX_FILL_CSS = {\n 'margin': 0,\n 'width': '100%',\n 'height': '100%',\n 'min-width': '100%',\n 'min-height': '100%'\n};\n\n@Injectable({providedIn: 'root'})\nexport class FlexFillStyleBuilder extends StyleBuilder {\n buildStyles(_input: string) {\n return FLEX_FILL_CSS;\n }\n}\n\n/**\n * 'fxFill' flexbox styling directive\n * Maximizes width and height of element in a layout container\n *\n * NOTE: fxFill is NOT responsive API!!\n */\n@Directive({selector: `[fxFill], [fxFlexFill]`})\nexport class FlexFillDirective extends BaseDirective2 {\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n protected styleBuilder: FlexFillStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.addStyles('');\n }\n\n protected styleCache = flexFillCache;\n}\n\nconst flexFillCache: Map = new Map();\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\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 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) : new P(function (resolve) { resolve(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 function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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 __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\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)) result[k] = mod[k];\r\n result.default = 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","/**\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: void)[]>>APP_BOOTSTRAP_LISTENER,\n useFactory: removeStyles,\n deps: [DOCUMENT, PLATFORM_ID],\n multi: true\n};\n\nexport const CLASS_NAME = 'flex-layout-';\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 */\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 */\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\ninterface WithPriority {\n priority?: number;\n}\n\n/** HOF to sort the breakpoints by descending priority */\nexport function sortDescendingPriority(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(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 */\nimport {Inject, Injectable, NgZone, 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 {\n /** Initialize source with 'all' so all non-responsive APIs trigger style updates */\n readonly source = new BehaviorSubject(new MediaChange(true));\n registry = new Map();\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 : false;\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;\n observe(mediaQueries: string[]): Observable;\n observe(mediaQueries: string[], filterOthers: boolean): Observable;\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 {\n if (mqList && mqList.length) {\n const matchMedia$: Observable = this._observable$.pipe(\n filter((change: MediaChange) => {\n return !filterOthers ? true : (mqList.indexOf(change.mediaQuery) > -1);\n })\n );\n const registration$: Observable = new Observable((observer: Observer) => { // tslint:disable-line:max-line-length\n const matches: Array = 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.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 /**\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).matchMedia('all').addListener;\n\n return canListen ? (window).matchMedia(query) : {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => {\n },\n removeListener: () => {\n }\n } as unknown 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 {Inject, Injectable, PLATFORM_ID} 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 { isPlatformBrowser } 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 {\n constructor(\n protected breakpoints: BreakPointRegistry,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n @Inject(PLATFORM_ID) protected _platformId: Object) {\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 // 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 the platform is\n // not a browser(fallsback to mql print media queries).\n private registerBeforeAfterPrintHooks(target: HookTarget) {\n if (!isPlatformBrowser(this._platformId) || this.registeredBeforeAfterPrintHooks) {\n return;\n }\n\n this.registeredBeforeAfterPrintHooks = true;\n\n // Could we have teardown logic to remove if there are no print listeners being used?\n (window).addEventListener('beforeprint', () => {\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 (window).addEventListener('afterprint', () => {\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\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 /** 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 */\n\n/** Wraps the provided value in an array, unless the provided value is an array. */\nexport function coerceArray(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 {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})
` ;\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 v8.0.0-beta.26\n */\n readonly media$: Observable;\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 {\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 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 {\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;\n private readonly destroyed$ = new Subject();\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 : query;\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 * 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 */\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 {NgModule} from '@angular/core';\n\nimport {BROWSER_PROVIDER} from './browser-provider';\n\n/**\n * *****************************************************************\n * Define module for the MediaQuery API\n * *****************************************************************\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 */\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 {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>();\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 */\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(\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 {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(\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';\nimport {BreakPoint} from '../breakpoints/break-point';\n\nexport const BREAKPOINT = new InjectionToken(\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 {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 = new Subject();\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 = 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[] = []): 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 /** 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 this.addStyles(input);\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';\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.9px)',\n priority: 1000,\n },\n {\n alias: 'sm',\n mediaQuery: 'screen and (min-width: 600px) and (max-width: 959.9px)',\n priority: 900,\n },\n {\n alias: 'md',\n mediaQuery: 'screen and (min-width: 960px) and (max-width: 1279.9px)',\n priority: 800,\n },\n {\n alias: 'lg',\n mediaQuery: 'screen and (min-width: 1280px) and (max-width: 1919.9px)',\n priority: 700,\n },\n {\n alias: 'xl',\n mediaQuery: 'screen and (min-width: 1920px) and (max-width: 4999.9px)',\n priority: 600,\n },\n {\n alias: 'lt-sm',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 599.9px)',\n priority: 950,\n },\n {\n alias: 'lt-md',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 959.9px)',\n priority: 850,\n },\n {\n alias: 'lt-lg',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 1279.9px)',\n priority: 750,\n },\n {\n alias: 'lt-xl',\n overlapping: true,\n priority: 650,\n mediaQuery: 'screen and (max-width: 1919.9px)',\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 */\n\nimport {BreakPoint} from '../break-point';\n\n/* tslint:disable */\nconst HANDSET_PORTRAIT = '(orientation: portrait) and (max-width: 599.9px)';\nconst HANDSET_LANDSCAPE = '(orientation: landscape) and (max-width: 959.9px)';\n\nconst TABLET_PORTRAIT = '(orientation: portrait) and (min-width: 600px) and (max-width: 839.9px)';\nconst TABLET_LANDSCAPE = '(orientation: landscape) and (min-width: 960px) and (max-width: 1279.9px)';\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},\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 */\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('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 {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();\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, 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- 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- 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 // 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.split(',').forEach(alias => activate(alias.trim()));\n }\n\n /**\n *\n */\n private _activateByQuery(mediaQuery: string) {\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(null, this);\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(null, this);\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(null, this);\n }\n }\n\n /** Don't need to remove listeners in the testing environment */\n removeListener(_: MediaQueryListListener | null) {\n }\n\n addEventListener(\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(\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, 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\n this.deactivateAll();\n this.restoreRegistryMatches();\n this.setActivations(list);\n\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();\n queries.forEach(query => {\n registry.set(query, {matches: 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() {\n return this.matchMedia.activations;\n }\n\n private hasCachedRegistryMatches = false;\n private originalActivations: MediaChange[] = [];\n private originalRegistry: Map = new Map();\n\n private resizeSubscription!: Subscription;\n}\n\n"],"names":["tslib_1.__extends","LayoutAlignDirective","_super","prototype","updateWithValue","value","layout","this","inline","styleCache","layoutAlignHorizontalInlineCache","layoutAlignHorizontalRevInlineCache","layoutAlignVerticalInlineCache","layoutAlignVerticalRevInlineCache","layoutAlignVerticalRevCache","layoutAlignVerticalCache","layoutAlignHorizontalRevCache","layoutAlignHorizontalCache","addStyles","onLayoutChange","matcher","_this","layoutKeys","split","includes","LAYOUT_VALUES","find","x","triggerUpdate","type","ElementRef","StyleUtils","LayoutAlignStyleBuilder","decorators","Optional","MediaMarshaller","BaseDirective2","DefaultLayoutAlignDirective","apply","arguments","inputs","Directive","args","selector","Map","ALL_DIRECTIVES","DefaultLayoutDirective","DefaultLayoutGapDirective","DefaultFlexOrderDirective","DefaultFlexOffsetDirective","FlexFillDirective","DefaultFlexAlignDirective","DefaultFlexDirective","FlexModule","NgModule","imports","CoreModule","BidiModule","declarations","slice","exports","ROW_DEFAULT","COL_DEFAULT","GridAlignStyleBuilder","buildStyles","input","buildCss","Injectable","providedIn","StyleBuilder","GridAlignDirective","elementRef","styleBuilder","styler","marshal","call","DIRECTIVE_KEY","alignCache","init","DefaultGridAlignDirective","DEFAULT_MAIN","DEFAULT_CROSS","GridAlignColumnsStyleBuilder","parent","GridAlignColumnsDirective","_inline","Object","defineProperty","val","coerceBooleanProperty","alignColumnsInlineCache","alignColumnsCache","Input","DefaultGridAlignColumnsDirective","GridAlignRowsStyleBuilder","GridAlignRowsDirective","alignRowsInlineCache","alignRowsCache","DefaultGridAlignRowsDirective","GridAreaStyleBuilder","grid-area","GridAreaDirective","elRef","styleUtils","gridAreaCache","DefaultGridAreaDirective","GridAreasStyleBuiler","areas","map","v","trim","display","grid-template-areas","join","GridAreasDirective","areasInlineCache","areasCache","DefaultGridAreasDirective","GridAutoStyleBuilder","_a","direction","dense","grid-auto-flow","GridAutoDirective","autoInlineCache","autoCache","DefaultGridAutoDirective","GridColumnStyleBuilder","grid-column","GridColumnDirective","columnCache","DefaultGridColumnDirective","GridColumnsStyleBuilder","auto","endsWith","substring","indexOf","css","grid-auto-columns","grid-template-columns","GridColumnsDirective","columnsInlineCache","columnsCache","DefaultGridColumnsDirective","GridGapStyleBuilder","grid-gap","GridGapDirective","gapInlineCache","gapCache","DefaultGridGapDirective","GridRowStyleBuilder","grid-row","GridRowDirective","rowCache","DefaultGridRowDirective","GridRowsStyleBuilder","grid-auto-rows","grid-template-rows","GridRowsDirective","rowsInlineCache","rowsCache","DefaultGridRowsDirective","GridModule","VERSION","Version","FlexLayoutModule","serverModuleLoaded","platformId","isPlatformServer","console","warn","withConfig","configOptions","breakpoints","ngModule","providers","serverLoaded","provide","LAYOUT_CONFIG","useValue","tslib_1.__assign","DEFAULT_CONFIG","BREAKPOINT","multi","SERVER_TOKEN","ExtendedModule","Boolean","Inject","PLATFORM_ID","style","styleList","i","length","colonIndex","Error","name_1","substr","styleMap","_writeStyleAttribute","element","styleAttrValue","key","setAttribute","StylesheetMap","undefined","shouldCache","sideEffect","_input","_styles","_parent","matchMedia","hook","activatedBreakpoints","elementMap","elementKeyMap","WeakMap","watcherMap","updateMap","clearMap","subject","Subject","observeActivations","alias","onMediaChange","mc","bp","findByQuery","mediaQuery","mergeAlias","matches","push","sort","sortDescendingPriority","updateStyles","splice","updateFn","clearFn","extraTriggers","initBuilderMap","buildElementKeyMap","watchExtraTriggers","getValue","bpMap","get","values","getActivatedValues","hasValue","setValue","set","updateElement","trackValue","asObservable","pipe","filter","forEach","el","keyMap","Set","valueMap","k","delete","clearElement","builders","next","releaseElement","s","unsubscribe","_","add","triggers","watchers","newSubscription","merge","subscribe","currentValue","query","activatedBp","has","lastHope","target","queries","items","observe","withPrintQuery","tap","interceptEvents","blockPropagation","bind","MatchMedia","BreakPointRegistry","PrintHook","ImgSrcStyleBuilder","url","content","ImgSrcDirective","defaultSrc","imgSrcCache","nativeElement","getAttribute","src","DefaultImgSrcDirective","ClassDirective","delegate","ngClassInstance","NgClass","klass","ngClass","ngDoCheck","ɵNgClassImpl","Self","LayoutNgClassImplProvider","useClass","ɵNgClassR2Impl","DefaultClassDirective","ShowHideStyleBuilder","show","ShowHideDirective","layoutConfig","hasLayout","hasFlexChild","ngAfterViewInit","trackExtraTriggers","children","Array","from","DISPLAY_MAP","getDisplayStyle","defaultValue","ngOnChanges","changes","keys","inputKey","inputValue","shouldShow","takeUntil","destroySubject","addFlexToParent","lookupStyle","setProperty","DefaultShowHideDirective","NgStyleKeyValue","noQuotes","replace","StyleDirective","sanitizer","ngStyleInstance","NgStyle","styles","fallbackStyles","buildStyleMap","isServer","ngStyle","applyStyleToElement","clearStyles","sanitize","SecurityContext","STYLE","getType","buildMapFromList","buildRawList","buildMapFromSet","ɵNgStyleImpl","DomSanitizer","LayoutNgStyleImplProvider","ɵNgStyleR2Impl","DefaultStyleDirective","INLINE","LayoutStyleBuilder","buildLayoutCSS","LayoutDirective","layoutCache","CLEAR_MARGIN_CSS","margin-left","margin-right","margin-top","margin-bottom","LayoutGapStyleBuilder","_styler","gapValue","GRID_SPECIFIER","buildGridMargin","directionality","paddingStyles","buildGridPadding","applyStyleToElements","lastItem","pop","gapCss","buildGapCSS","LayoutGapDirective","zone","observerSubject","change","obj","buffer","ngAfterContentInit","buildChildObservable","ngOnDestroy","observer","disconnect","childrenNodes","nodeType","willDisplay","a","b","orderA","orderB","isNaN","layoutGapCacheRowRtl","layoutGapCacheRowLtr","layoutGapCacheColumnRtl","layoutGapCacheColumnLtr","gridMode","mru","childrenStyle","getMarginType","source","runOutsideAngular","MutationObserver","mutations","validatedChanges","it","addedNodes","removedNodes","some","childList","NgZone","Directionality","FlexStyleBuilder","grow","shrink","basisParts","basis","max","isFlowHorizontal","min","hasCalc","String","usingCalc","isPercent","hasUnits","isValue","isFixed","max-width","max-height","min-width","min-height","useColumnBasisZero","extendObject","flex-grow","flex-shrink","flex-basis","flex","hasWrap","box-sizing","FlexDirective","wrap","flexGrow","flexShrink","parentElement","triggerReflow","layoutParts","getFlexFlowDirection","isHorizontal","startsWith","flexRowWrapCache","flexRowCache","flexColumnWrapCache","flexColumnCache","parts","validateBasis","activatedValue","FlexOrderStyleBuilder","order","parseInt","FlexOrderDirective","flexOrderCache","FlexOffsetStyleBuilder","offset","horizontalLayoutKey","isRtl","FlexOffsetDirective","flexOffsetCacheRowRtl","flexOffsetCacheColumnRtl","flexOffsetCacheColumnLtr","flexOffsetCacheRowLtr","FlexAlignStyleBuilder","FlexAlignDirective","flexAlignCache","FLEX_FILL_CSS","margin","width","height","FlexFillStyleBuilder","flexFillCache","align","mainAxis","crossAxis","flex-direction","__extends","d","__","constructor","extendStatics","create","removeStyles","_document","isPlatformBrowser","classRegex_1","querySelectorAll","CLASS_NAME","classList","contains","parentNode","removeChild","className","dest","clone","MediaChange","mqAlias","suffix","priority","validateValue","buildCSS","toLowerCase","validateWrapValue","flex-wrap","sources","_i","TypeError","sources_1","hasOwnProperty","firstUpperCase","part","first","charAt","remainder","toUpperCase","camelCase","name","ALIAS_DELIMITERS","validateSuffixes","list","overlapping","mergeByAlias","defaults","custom","dict","priorityA","sortAscendingPriority","buildQueryCss","mediaQueries","ALL_STYLES","styleEl_1","createElement","styleSheet","cssText","appendChild","createTextNode","mq","e","error","constructMql","isBrowser","addListener","media","removeListener","isPrintBreakPoint","PRINT","coerceArray","isArray","toMediaQuery","locator","findByAlias","splitQueries","reduce","a1","a2","concat","applyCssPrefixes","j","_validateCalcValue","calc","oldMap","what","delimiter","sanitizeValue","stringToKeyValue","entry","keyValuesToMap","vals","paddingRight","paddingBottom","paddingLeft","padding","paddingTop","marginRight","marginBottom","marginLeft","marginTop","margins","rowAxis","columnAxis","setPrototypeOf","__proto__","p","__assign","assign","t","n","BROWSER_PROVIDER","APP_BOOTSTRAP_LISTENER","useFactory","deps","DOCUMENT","property","stylesheet","addStyleToElement","clear","getStyleForElement","styleName","addOrientationBps","disableDefaultBps","disableVendorPrefixes","printWithBreakpoints","mediaTriggerAutoRestore","ssrObserveBreakpoints","InjectionToken","factory","activatedAlias","complete","builder","useCache","genStyles","addIfMissing","getFlowDirection","elements","DEFAULT_BREAKPOINTS","TABLET_PORTRAIT","TABLET_LANDSCAPE","WEB_PORTRAIT","WEB_LANDSCAPE","ScreenTypes","HANDSET","HANDSET_PORTRAIT","TABLET","WEB","HANDSET_LANDSCAPE","ORIENTATION_BREAKPOINTS","BREAKPOINTS","inject","bpFlattenArray","findByMap","findWithPredicate","searchFn","response","_zone","_platformId","BehaviorSubject","registry","_observable$","results","mql","isActive","mqList","filterOthers","matchMedia$","registration$","Observable","registerQuery","lastChange","onMQLEvent","run","buildMQL","MockMatchMedia","_breakpoints","autoRegisterQueries","useOverlaps","clearAll","destroy","activate","_validateQuery","_deactivateAll","_registerMediaQuery","_activateWithOverlaps","hasActivated","queryOrAlias","_activateByAlias","_activateByQuery","aliases","deactivate","MockMediaQueryList","activations","_mediaQuery","_isActive","_listeners","onchange","callback","listener","addEventListener","___","removeEventListener","dispatchEvent","MockMatchMediaProvider","BREAKPOINT_PRINT","registeredBeforeAfterPrintHooks","isPrintingBeforeAfterEvent","isPrinting","queue","PrintQueue","deactivations","isPrintEvent","printAlias","getEventBreakpoints","printBreakPoints","updateEvent","event","registerBeforeAfterPrintHooks","startPrinting","stopPrinting","collectActivations","bpList","addPrintBreakpoints","printBreakpoints","addBreakpoint","MediaObserver","filterOverlaps","destroyed$","_media$","watchActivations","media$","buildObservable","hasChanges","isValidQuery","excludeOverlaps","debounceTime","asapScheduler","switchMap","of","findAllActivations","mergeMQAlias","replaceWithPrintAlias","MediaTrigger","hasCachedRegistryMatches","originalActivations","originalRegistry","saveActivations","deactivateAll","setActivations","prepareAutoRestore","restore","extractQuery","restoreRegistryMatches","resizeSubscription","resize$","fromEvent","window","take","currentActivations","forceRegistryMatches","simulateMediaChanges","toMediaChange","cacheRegistryMatches","emitChangeEvent","_serverStylesheet","_serverModuleLoaded","_applyMultiValueStyleToElement","hasInlineValue","lookupInlineStyle","lookupAttributeValue","attribute","getPropertyValue","_getServerStyle","inlineOnly","getComputedStyle","values_1","_setServerStyle","styleValue","_readStyleAttribute","styleAttribute"],"mappings":"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"} \ No newline at end of file diff --git a/core/typings/base/base-adapter.d.ts b/core/typings/base/base-adapter.d.ts deleted file mode 100644 index 67a53799f..000000000 --- a/core/typings/base/base-adapter.d.ts +++ /dev/null @@ -1,79 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -import { ElementRef } from '@angular/core'; -import { BaseDirective } from './base'; -import { ResponsiveActivation } from '../responsive-activation/responsive-activation'; -import { MediaQuerySubscriber } from '../media-change'; -import { MediaMonitor } from '../media-monitor/media-monitor'; -import { StyleUtils } from '../style-utils/style-utils'; -/** - * Adapter to the BaseDirective abstract class so it can be used via composition. - * @see BaseDirective - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export declare class BaseDirectiveAdapter extends BaseDirective { - protected _baseKey: string; - protected _mediaMonitor: MediaMonitor; - protected _elementRef: ElementRef; - protected _styler: StyleUtils; - /** - * Accessor to determine which @Input property is "active" - * e.g. which property value will be used. - */ - readonly activeKey: string; - /** Hash map of all @Input keys/values defined/used */ - readonly inputMap: { - [key: string]: any; - }; - /** - * @see BaseDirective._mqActivation - */ - readonly mqActivation: ResponsiveActivation; - /** - * BaseDirectiveAdapter constructor - */ - constructor(_baseKey: string, // non-responsive @Input property name - _mediaMonitor: MediaMonitor, _elementRef: ElementRef, _styler: StyleUtils); - /** - * Does this directive have 1 or more responsive keys defined - * Note: we exclude the 'baseKey' key (which is NOT considered responsive) - */ - hasResponsiveAPI(): boolean; - /** - * @see BaseDirective._queryInput - */ - queryInput(key: string | null): any; - /** - * Save the property value. - */ - cacheInput(key?: string, source?: any, cacheRaw?: boolean): void; - /** - * @see BaseDirective._listenForMediaQueryChanges - */ - listenForMediaQueryChanges(key: string, defaultValue: any, onMediaQueryChange: MediaQuerySubscriber): ResponsiveActivation; - /** - * No implicit transforms of the source. - * Required when caching values expected later for KeyValueDiffers - */ - protected _cacheInputRaw(key?: string, source?: any): void; - /** - * Save the property value for Array values. - */ - protected _cacheInputArray(key?: string, source?: boolean[]): void; - /** - * Save the property value for key/value pair values. - */ - protected _cacheInputObject(key?: string, source?: { - [key: string]: boolean; - }): void; - /** - * Save the property value for string values. - */ - protected _cacheInputString(key?: string, source?: string): void; -} diff --git a/core/typings/base/base.d.ts b/core/typings/base/base.d.ts deleted file mode 100644 index c645f97da..000000000 --- a/core/typings/base/base.d.ts +++ /dev/null @@ -1,109 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -import { ElementRef, OnDestroy, SimpleChanges, OnChanges } from '@angular/core'; -import { StyleDefinition, StyleUtils } from '../style-utils/style-utils'; -import { ResponsiveActivation } from '../responsive-activation/responsive-activation'; -import { MediaMonitor } from '../media-monitor/media-monitor'; -import { MediaQuerySubscriber } from '../media-change'; -import { StyleBuilder } from '../style-builder/style-builder'; -/** - * Abstract base class for the Layout API styling directives. - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export declare abstract class BaseDirective implements OnDestroy, OnChanges { - protected _mediaMonitor: MediaMonitor; - protected _elementRef: ElementRef; - protected _styler: StyleUtils; - protected _styleBuilder?: StyleBuilder | undefined; - /** - * Imperatively determine the current activated [input] value; - * if called before ngOnInit() this will return `undefined` - */ - /** - * Change the currently activated input value and force-update - * the injected CSS (by-passing change detection). - * - * NOTE: Only the currently activated input value will be modified; - * other input values will NOT be affected. - */ - activatedValue: string | number; - protected constructor(_mediaMonitor: MediaMonitor, _elementRef: ElementRef, _styler: StyleUtils, _styleBuilder?: StyleBuilder | undefined); - /** - * Does this directive have 1 or more responsive keys defined - * Note: we exclude the 'baseKey' key (which is NOT considered responsive) - */ - hasResponsiveAPI(baseKey: string): boolean; - /** - * Use post-component-initialization event to perform extra - * querying such as computed Display style - */ - ngOnInit(): void; - ngOnChanges(change: SimpleChanges): void; - ngOnDestroy(): void; - /** Access to host element's parent DOM node */ - protected readonly parentElement: any; - protected readonly nativeElement: HTMLElement; - /** Add styles to the element using predefined style builder */ - protected addStyles(input: string, parent?: Object): void; - /** Access the current value (if any) of the @Input property */ - protected _queryInput(key: string): any; - /** - * Was the directive's default selector used ? - * If not, use the fallback value! - */ - protected _getDefaultVal(key: string, fallbackVal: any): string | boolean; - /** - * Quick accessor to the current HTMLElement's `display` style - * Note: this allows us to preserve the original style - * and optional restore it when the mediaQueries deactivate - */ - protected _getDisplayStyle(source?: HTMLElement): string; - /** Quick accessor to raw attribute value on the target DOM element */ - protected _getAttributeValue(attribute: string, source?: HTMLElement): string; - /** - * Determine the DOM element's Flexbox flow (flex-direction). - * - * Check inline style first then check computed (stylesheet) style. - * And optionally add the flow value to element's inline style. - */ - protected _getFlexFlowDirection(target: HTMLElement, addIfMissing?: boolean): string; - /** Applies styles given via string pair or object map to the directive element */ - protected _applyStyleToElement(style: StyleDefinition, value?: string | number, element?: HTMLElement): void; - /** Applies styles given via string pair or object map to the directive's element */ - protected _applyStyleToElements(style: StyleDefinition, elements: HTMLElement[]): void; - /** - * Save the property value; which may be a complex object. - * Complex objects support property chains - */ - protected _cacheInput(key?: string, source?: any): void; - /** - * Build a ResponsiveActivation object used to manage subscriptions to mediaChange notifications - * and intelligent lookup of the directive's property value that corresponds to that mediaQuery - * (or closest match). - */ - protected _listenForMediaQueryChanges(key: string, defaultValue: any, onMediaQueryChange: MediaQuerySubscriber): ResponsiveActivation; - /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */ - protected readonly childrenNodes: HTMLElement[]; - protected readonly hasInitialized: boolean; - /** MediaQuery Activation Tracker */ - protected _mqActivation?: ResponsiveActivation; - /** Dictionary of input keys with associated values */ - protected _inputMap: { - [key: string]: any; - }; - /** - * Has the `ngOnInit()` method fired - * - * Used to allow *ngFor tasks to finish and support queries like - * getComputedStyle() during ngOnInit(). - */ - protected _hasInitialized: boolean; - /** Cache map for style computation */ - protected _styleCache: Map; -} diff --git a/core/typings/base/index.d.ts b/core/typings/base/index.d.ts index 8c84f13f8..00ab10425 100644 --- a/core/typings/base/index.d.ts +++ b/core/typings/base/index.d.ts @@ -5,6 +5,4 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -export * from './base'; -export * from './base-adapter'; export * from './base2'; diff --git a/core/typings/breakpoints/break-point-registry.d.ts b/core/typings/breakpoints/break-point-registry.d.ts index f9262df7c..a54f6846c 100644 --- a/core/typings/breakpoints/break-point-registry.d.ts +++ b/core/typings/breakpoints/break-point-registry.d.ts @@ -1,29 +1,18 @@ import { BreakPoint } from './break-point'; +export declare type OptionalBreakPoint = BreakPoint | null; /** * Registry of 1..n MediaQuery breakpoint ranges * This is published as a provider and may be overridden from custom, application-specific ranges * */ export declare class BreakPointRegistry { - private _registry; - constructor(_registry: BreakPoint[]); - /** - * Accessor to raw list - */ readonly items: BreakPoint[]; - /** - * Accessor to sorted list used for registration with matchMedia API - * - * NOTE: During breakpoint registration, we want to register the overlaps FIRST - * so the non-overlaps will trigger the MatchMedia:BehaviorSubject last! - * And the largest, non-overlap, matching breakpoint should be the lastReplay value - */ - readonly sortedItems: BreakPoint[]; + constructor(list: BreakPoint[]); /** * Search breakpoints by alias (e.g. gt-xs) */ - findByAlias(alias: string): BreakPoint | null; - findByQuery(query: string): BreakPoint | null; + findByAlias(alias: string): OptionalBreakPoint; + findByQuery(query: string): OptionalBreakPoint; /** * Get all the breakpoints whose ranges could overlapping `normal` ranges; * e.g. gt-sm overlaps md, lg, and xl @@ -39,4 +28,12 @@ export declare class BreakPointRegistry { * for property layoutGtSM. */ readonly suffixes: string[]; + /** + * Memoized lookup using custom predicate function + */ + private findWithPredicate; + /** + * Memoized BreakPoint Lookups + */ + private readonly findByMap; } diff --git a/core/typings/breakpoints/breakpoint-tools.d.ts b/core/typings/breakpoints/breakpoint-tools.d.ts index 056c10729..f112ac0ba 100644 --- a/core/typings/breakpoints/breakpoint-tools.d.ts +++ b/core/typings/breakpoints/breakpoint-tools.d.ts @@ -17,5 +17,3 @@ export declare function validateSuffixes(list: BreakPoint[]): BreakPoint[]; * - Items are merged with the custom override if the alias exists in the default list */ export declare function mergeByAlias(defaults: BreakPoint[], custom?: BreakPoint[]): BreakPoint[]; -/** HOF to sort the breakpoints by priority */ -export declare function prioritySort(a: BreakPoint, b: BreakPoint): number; diff --git a/core/typings/breakpoints/data/break-points.d.ts b/core/typings/breakpoints/data/break-points.d.ts index 44d405840..89aa647e9 100644 --- a/core/typings/breakpoints/data/break-points.d.ts +++ b/core/typings/breakpoints/data/break-points.d.ts @@ -6,5 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ import { BreakPoint } from '../break-point'; -export declare const RESPONSIVE_ALIASES: string[]; +/** + * NOTE: Smaller ranges have HIGHER priority since the match is more specific + */ export declare const DEFAULT_BREAKPOINTS: BreakPoint[]; diff --git a/core/typings/breakpoints/index.d.ts b/core/typings/breakpoints/index.d.ts index 11f4d2025..7fad0fa56 100644 --- a/core/typings/breakpoints/index.d.ts +++ b/core/typings/breakpoints/index.d.ts @@ -10,4 +10,3 @@ export * from './data/orientation-break-points'; export * from './break-point'; export * from './break-point-registry'; export * from './break-points-token'; -export { prioritySort } from './breakpoint-tools'; diff --git a/core/typings/index.metadata.json b/core/typings/index.metadata.json index be6db8516..2dab88e46 100644 --- a/core/typings/index.metadata.json +++ b/core/typings/index.metadata.json @@ -1 +1 @@ -{"__symbolic":"module","version":4,"metadata":{"removeStyles":{"__symbolic":"function","parameters":["_document","platformId"],"value":{"__symbolic":"error","message":"Lambda not supported","line":16,"character":9,"module":"./browser-provider"}},"BROWSER_PROVIDER":{"provide":{"__symbolic":"reference","module":"@angular/core","name":"APP_BOOTSTRAP_LISTENER","line":37,"character":43},"useFactory":{"__symbolic":"reference","name":"removeStyles"},"deps":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":39,"character":9},{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":39,"character":19}],"multi":true},"CLASS_NAME":"flex-layout-","CoreModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":18,"character":1},"arguments":[{"providers":[{"__symbolic":"reference","name":"BROWSER_PROVIDER"},{"__symbolic":"reference","name":"ObservableMediaProvider"}]}]}],"members":{}},"MediaQuerySubscriber":{"__symbolic":"interface"},"MediaChange":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[null,null,null,null]}],"clone":[{"__symbolic":"method"}]}},"StylesheetMap":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"addStyleToElement":[{"__symbolic":"method"}],"clearStyles":[{"__symbolic":"method"}],"getStyleForElement":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutConfigOptions":{"__symbolic":"interface"},"DEFAULT_CONFIG":{"addFlexToParent":true,"addOrientationBps":false,"disableDefaultBps":false,"disableVendorPrefixes":false,"serverLoaded":false,"useColumnBasisZero":true},"LAYOUT_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":28,"character":33},"arguments":["Flex Layout token, config options for the library",{"__symbolic":"error","message":"Lambda not supported","line":31,"character":13,"module":"./tokens/library-config"}]},"SERVER_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":32},"arguments":["FlexLayoutServerLoaded",{"__symbolic":"error","message":"Lambda not supported","line":18,"character":13,"module":"./tokens/server-token"}]},"BREAKPOINT":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":10,"character":30},"arguments":["Flex Layout token, collect all breakpoints into one provider",{"__symbolic":"error","message":"Lambda not supported","line":13,"character":13,"module":"./tokens/breakpoint-token"}]},"BaseDirective":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"MediaMonitor"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":61,"character":47},{"__symbolic":"reference","name":"StyleUtils"},{"__symbolic":"reference","name":"StyleBuilder"}]}],"hasResponsiveAPI":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"addStyles":[{"__symbolic":"method"}],"_queryInput":[{"__symbolic":"method"}],"_getDefaultVal":[{"__symbolic":"method"}],"_getDisplayStyle":[{"__symbolic":"method"}],"_getAttributeValue":[{"__symbolic":"method"}],"_getFlexFlowDirection":[{"__symbolic":"method"}],"_applyStyleToElement":[{"__symbolic":"method"}],"_applyStyleToElements":[{"__symbolic":"method"}],"_cacheInput":[{"__symbolic":"method"}],"_listenForMediaQueryChanges":[{"__symbolic":"method"}]}},"BaseDirectiveAdapter":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseDirective"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"MediaMonitor"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":52,"character":37},{"__symbolic":"reference","name":"StyleUtils"}]}],"hasResponsiveAPI":[{"__symbolic":"method"}],"queryInput":[{"__symbolic":"method"}],"cacheInput":[{"__symbolic":"method"}],"listenForMediaQueryChanges":[{"__symbolic":"method"}],"_cacheInputRaw":[{"__symbolic":"method"}],"_cacheInputArray":[{"__symbolic":"method"}],"_cacheInputObject":[{"__symbolic":"method"}],"_cacheInputString":[{"__symbolic":"method"}]}},"BaseDirective2":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":46},{"__symbolic":"reference","name":"StyleBuilder"},{"__symbolic":"reference","name":"StyleUtils"},{"__symbolic":"reference","name":"MediaMarshaller"}]}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"addStyles":[{"__symbolic":"method"}],"clearStyles":[{"__symbolic":"method"}],"triggerUpdate":[{"__symbolic":"method"}],"getFlexFlowDirection":[{"__symbolic":"method"}],"applyStyleToElement":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}]}},"RESPONSIVE_ALIASES":["xs","gt-xs","sm","gt-sm","md","gt-md","lg","gt-lg","xl"],"DEFAULT_BREAKPOINTS":[{"alias":"xs","mediaQuery":"(min-width: 0px) and (max-width: 599px)","priority":100},{"alias":"gt-xs","overlapping":true,"mediaQuery":"(min-width: 600px)","priority":7},{"alias":"lt-sm","overlapping":true,"mediaQuery":"(max-width: 599px)","priority":10},{"alias":"sm","mediaQuery":"(min-width: 600px) and (max-width: 959px)","priority":100},{"alias":"gt-sm","overlapping":true,"mediaQuery":"(min-width: 960px)","priority":8},{"alias":"lt-md","overlapping":true,"mediaQuery":"(max-width: 959px)","priority":9},{"alias":"md","mediaQuery":"(min-width: 960px) and (max-width: 1279px)","priority":100},{"alias":"gt-md","overlapping":true,"mediaQuery":"(min-width: 1280px)","priority":9},{"alias":"lt-lg","overlapping":true,"mediaQuery":"(max-width: 1279px)","priority":8},{"alias":"lg","mediaQuery":"(min-width: 1280px) and (max-width: 1919px)","priority":100},{"alias":"gt-lg","overlapping":true,"mediaQuery":"(min-width: 1920px)","priority":10},{"alias":"lt-xl","overlapping":true,"mediaQuery":"(max-width: 1919px)","priority":7},{"alias":"xl","mediaQuery":"(min-width: 1920px) and (max-width: 5000px)","priority":100}],"ScreenTypes":{"HANDSET":"(orientation: portrait) and (max-width: 599px), (orientation: landscape) and (max-width: 959px)","TABLET":"(orientation: portrait) and (min-width: 600px) and (max-width: 839px) , (orientation: landscape) and (min-width: 960px) and (max-width: 1279px)","WEB":"(orientation: portrait) and (min-width: 840px), (orientation: landscape) and (min-width: 1280px) ","HANDSET_PORTRAIT":"(orientation: portrait) and (max-width: 599px)","TABLET_PORTRAIT":"(orientation: portrait) and (min-width: 600px) and (max-width: 839px) ","WEB_PORTRAIT":"(orientation: portrait) and (min-width: 840px)","HANDSET_LANDSCAPE":"(orientation: landscape) and (max-width: 959px)]","TABLET_LANDSCAPE":"(orientation: landscape) and (min-width: 960px) and (max-width: 1279px)","WEB_LANDSCAPE":"(orientation: landscape) and (min-width: 1280px)","$quoted$":["HANDSET","TABLET","WEB","HANDSET_PORTRAIT","TABLET_PORTRAIT","WEB_PORTRAIT","HANDSET_LANDSCAPE","TABLET_LANDSCAPE","WEB_LANDSCAPE"]},"ORIENTATION_BREAKPOINTS":[{"alias":"handset","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"HANDSET"},"$quoted$":["alias","mediaQuery"]},{"alias":"handset.landscape","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"HANDSET_LANDSCAPE"},"$quoted$":["alias","mediaQuery"]},{"alias":"handset.portrait","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"HANDSET_PORTRAIT"},"$quoted$":["alias","mediaQuery"]},{"alias":"tablet","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"TABLET"},"$quoted$":["alias","mediaQuery"]},{"alias":"tablet.landscape","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"TABLET"},"$quoted$":["alias","mediaQuery"]},{"alias":"tablet.portrait","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"TABLET_PORTRAIT"},"$quoted$":["alias","mediaQuery"]},{"alias":"web","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"WEB"},"overlapping":true,"$quoted$":["alias","mediaQuery"]},{"alias":"web.landscape","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"WEB_LANDSCAPE"},"overlapping":true,"$quoted$":["alias","mediaQuery"]},{"alias":"web.portrait","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"WEB_PORTRAIT"},"overlapping":true,"$quoted$":["alias","mediaQuery"]}],"BreakPoint":{"__symbolic":"interface"},"BreakPointRegistry":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":21,"character":15},"arguments":[{"__symbolic":"reference","name":"BREAKPOINTS"}]}]],"parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"BreakPoint"}]}]}],"findByAlias":[{"__symbolic":"method"}],"findByQuery":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"BREAKPOINTS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":21,"character":6},"arguments":["Token (@angular/flex-layout) Breakpoints",{"__symbolic":"error","message":"Lambda not supported","line":23,"character":13,"module":"./breakpoints/break-points-token"}]},"prioritySort":{"__symbolic":"function"},"MatchMedia":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":21,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":28,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":28,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":29,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":29,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":27,"character":31},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"any"}]}],"isActive":[{"__symbolic":"method"}],"observe":[{"__symbolic":"method"}],"registerQuery":[{"__symbolic":"method"}],"_buildMQL":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"MockMatchMedia":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"MatchMedia"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":33,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":33,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":34,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":34,"character":22}]}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":32,"character":21},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"BreakPointRegistry"}]}],"clearAll":[{"__symbolic":"method"}],"activate":[{"__symbolic":"method"}],"_validateQuery":[{"__symbolic":"method"}],"_activateWithOverlaps":[{"__symbolic":"method"}],"_activateByAlias":[{"__symbolic":"method"}],"_activateByQuery":[{"__symbolic":"method"}],"_deactivateAll":[{"__symbolic":"method"}],"_registerMediaQuery":[{"__symbolic":"method"}],"_buildMQL":[{"__symbolic":"method"}]}},"MockMediaQueryList":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"destroy":[{"__symbolic":"method"}],"activate":[{"__symbolic":"method"}],"deactivate":[{"__symbolic":"method"}],"addListener":[{"__symbolic":"method"}],"removeListener":[{"__symbolic":"method"}],"addEventListener":[{"__symbolic":"method"},{"__symbolic":"method"}],"removeEventListener":[{"__symbolic":"method"},{"__symbolic":"method"}],"dispatchEvent":[{"__symbolic":"method"}]}},"MockMatchMediaProvider":{"provide":{"__symbolic":"reference","name":"MatchMedia"},"useClass":{"__symbolic":"reference","name":"MockMatchMedia"}},"ServerMediaQueryList":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"destroy":[{"__symbolic":"method"}],"activate":[{"__symbolic":"method"}],"deactivate":[{"__symbolic":"method"}],"addListener":[{"__symbolic":"method"}],"removeListener":[{"__symbolic":"method"}],"addEventListener":[{"__symbolic":"method"},{"__symbolic":"method"}],"removeEventListener":[{"__symbolic":"method"},{"__symbolic":"method"}],"dispatchEvent":[{"__symbolic":"method"}]}},"ServerMatchMedia":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"MatchMedia"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":113,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":118,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":118,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":119,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":119,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":117,"character":31},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"any"}]}],"activateBreakpoint":[{"__symbolic":"method"}],"deactivateBreakpoint":[{"__symbolic":"method"}],"_buildMQL":[{"__symbolic":"method"}]}},"MediaMonitor":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":33,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"BreakPointRegistry"},{"__symbolic":"reference","name":"MatchMedia"}]}],"isActive":[{"__symbolic":"method"}],"observe":[{"__symbolic":"method"}],"_registerBreakpoints":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ObservableMedia":{"__symbolic":"class","members":{"isActive":[{"__symbolic":"method"}],"asObservable":[{"__symbolic":"method"}],"subscribe":[{"__symbolic":"method"},{"__symbolic":"method"}]}},"MediaService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":78,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"BreakPointRegistry"},{"__symbolic":"reference","name":"MatchMedia"}]}],"isActive":[{"__symbolic":"method"}],"subscribe":[{"__symbolic":"method"}],"asObservable":[{"__symbolic":"method"}],"_registerBreakPoints":[{"__symbolic":"method"}],"_buildObservable":[{"__symbolic":"method"}],"_findByAlias":[{"__symbolic":"method"}],"_findByQuery":[{"__symbolic":"method"}],"_toMediaQuery":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ObservableMediaProvider":{"provide":{"__symbolic":"reference","name":"ObservableMedia"},"useClass":{"__symbolic":"reference","name":"MediaService"}},"MediaObserver":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":58,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"BreakPointRegistry"},{"__symbolic":"reference","name":"MatchMedia"}]}],"isActive":[{"__symbolic":"method"}],"_registerBreakPoints":[{"__symbolic":"method"}],"_buildObservable":[{"__symbolic":"method"}],"_findByAlias":[{"__symbolic":"method"}],"_findByQuery":[{"__symbolic":"method"}],"_toMediaQuery":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"BreakPointX":{"__symbolic":"interface"},"KeyOptions":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Expression form not supported","line":31,"character":32,"module":"./responsive-activation/responsive-activation"}]}]}},"ResponsiveActivation":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"KeyOptions"},{"__symbolic":"reference","name":"MediaMonitor"},{"__symbolic":"reference","name":"MediaQuerySubscriber"}]}],"hasKeyValue":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"_configureChangeObservers":[{"__symbolic":"method"}],"_buildRegistryMap":[{"__symbolic":"method"}],"_onMonitorEvents":[{"__symbolic":"method"}],"_keyInUse":[{"__symbolic":"method"}],"_calculateActivatedValue":[{"__symbolic":"method"}],"_validateInputKey":[{"__symbolic":"method"}],"_lookupKeyValue":[{"__symbolic":"method"}]}},"StyleUtils":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":18,"character":15}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":19,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":19,"character":27},"arguments":[{"__symbolic":"reference","name":"SERVER_TOKEN"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":20,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":20,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":21,"character":15},"arguments":[{"__symbolic":"reference","name":"LAYOUT_CONFIG"}]}]],"parameters":[{"__symbolic":"reference","name":"StylesheetMap"},{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"LayoutConfigOptions"}]}],"applyStyleToElement":[{"__symbolic":"method"}],"applyStyleToElements":[{"__symbolic":"method"}],"getFlowDirection":[{"__symbolic":"method"}],"lookupAttributeValue":[{"__symbolic":"method"}],"lookupInlineStyle":[{"__symbolic":"method"}],"lookupStyle":[{"__symbolic":"method"}],"_applyMultiValueStyleToElement":[{"__symbolic":"method"}],"_setServerStyle":[{"__symbolic":"method"}],"_getServerStyle":[{"__symbolic":"method"}],"_readStyleAttribute":[{"__symbolic":"method"}],"_writeStyleAttribute":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"StyleDefinition":{"__symbolic":"interface"},"StyleBuilder":{"__symbolic":"class","members":{"buildStyles":[{"__symbolic":"method"}],"sideEffect":[{"__symbolic":"method"}]}},"validateBasis":{"__symbolic":"function"},"ElementMatcher":{"__symbolic":"interface"},"MediaMarshaller":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":38,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"MatchMedia"},{"__symbolic":"reference","name":"BreakPointRegistry"}]}],"activate":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"getValue":[{"__symbolic":"method"}],"hasValue":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"trackValue":[{"__symbolic":"method"}],"updateStyles":[{"__symbolic":"method"}],"clearElement":[{"__symbolic":"method"}],"updateElement":[{"__symbolic":"method"}],"releaseElement":[{"__symbolic":"method"}],"buildElementKeyMap":[{"__symbolic":"method"}],"watchExtraTriggers":[{"__symbolic":"method"}],"findByQuery":[{"__symbolic":"method"}],"getFallback":[{"__symbolic":"method"}],"registerBreakpoints":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}}},"origins":{"removeStyles":"./browser-provider","BROWSER_PROVIDER":"./browser-provider","CLASS_NAME":"./browser-provider","CoreModule":"./module","MediaQuerySubscriber":"./media-change","MediaChange":"./media-change","StylesheetMap":"./stylesheet-map/stylesheet-map","LayoutConfigOptions":"./tokens/library-config","DEFAULT_CONFIG":"./tokens/library-config","LAYOUT_CONFIG":"./tokens/library-config","SERVER_TOKEN":"./tokens/server-token","BREAKPOINT":"./tokens/breakpoint-token","BaseDirective":"./base/base","BaseDirectiveAdapter":"./base/base-adapter","BaseDirective2":"./base/base2","RESPONSIVE_ALIASES":"./breakpoints/data/break-points","DEFAULT_BREAKPOINTS":"./breakpoints/data/break-points","ScreenTypes":"./breakpoints/data/orientation-break-points","ORIENTATION_BREAKPOINTS":"./breakpoints/data/orientation-break-points","BreakPoint":"./breakpoints/break-point","BreakPointRegistry":"./breakpoints/break-point-registry","BREAKPOINTS":"./breakpoints/break-points-token","prioritySort":"./breakpoints/breakpoint-tools","MatchMedia":"./match-media/match-media","MockMatchMedia":"./match-media/mock/mock-match-media","MockMediaQueryList":"./match-media/mock/mock-match-media","MockMatchMediaProvider":"./match-media/mock/mock-match-media","ServerMediaQueryList":"./match-media/server-match-media","ServerMatchMedia":"./match-media/server-match-media","MediaMonitor":"./media-monitor/media-monitor","ObservableMedia":"./observable-media/observable-media","MediaService":"./observable-media/observable-media","ObservableMediaProvider":"./observable-media/observable-media","MediaObserver":"./media-observer/media-observer","BreakPointX":"./responsive-activation/responsive-activation","KeyOptions":"./responsive-activation/responsive-activation","ResponsiveActivation":"./responsive-activation/responsive-activation","StyleUtils":"./style-utils/style-utils","StyleDefinition":"./style-utils/style-utils","StyleBuilder":"./style-builder/style-builder","validateBasis":"./basis-validator/basis-validator","ElementMatcher":"./media-marshaller/media-marshaller","MediaMarshaller":"./media-marshaller/media-marshaller"},"importAs":"@angular/flex-layout/core"} \ No newline at end of file +{"__symbolic":"module","version":4,"metadata":{"CoreModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":17,"character":1},"arguments":[{"providers":[{"__symbolic":"reference","name":"BROWSER_PROVIDER"}]}]}],"members":{}},"removeStyles":{"__symbolic":"function","parameters":["_document","platformId"],"value":{"__symbolic":"error","message":"Lambda not supported","line":16,"character":9,"module":"./browser-provider"}},"BROWSER_PROVIDER":{"provide":{"__symbolic":"reference","module":"@angular/core","name":"APP_BOOTSTRAP_LISTENER","line":37,"character":43},"useFactory":{"__symbolic":"reference","name":"removeStyles"},"deps":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":39,"character":9},{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":39,"character":19}],"multi":true},"CLASS_NAME":"flex-layout-","MediaQuerySubscriber":{"__symbolic":"interface"},"MediaChange":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[null,null,null,null,null]}],"clone":[{"__symbolic":"method"}]}},"StylesheetMap":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"addStyleToElement":[{"__symbolic":"method"}],"clearStyles":[{"__symbolic":"method"}],"getStyleForElement":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutConfigOptions":{"__symbolic":"interface"},"DEFAULT_CONFIG":{"addFlexToParent":true,"addOrientationBps":false,"disableDefaultBps":false,"disableVendorPrefixes":false,"serverLoaded":false,"useColumnBasisZero":true,"printWithBreakpoints":[],"mediaTriggerAutoRestore":true,"ssrObserveBreakpoints":[]},"LAYOUT_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":34,"character":33},"arguments":["Flex Layout token, config options for the library",{"__symbolic":"error","message":"Lambda not supported","line":37,"character":15,"module":"./tokens/library-config"}]},"SERVER_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":32},"arguments":["FlexLayoutServerLoaded",{"__symbolic":"error","message":"Lambda not supported","line":18,"character":13,"module":"./tokens/server-token"}]},"BREAKPOINT":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":10,"character":30},"arguments":["Flex Layout token, collect all breakpoints into one provider",{"__symbolic":"error","message":"Lambda not supported","line":13,"character":13,"module":"./tokens/breakpoint-token"}]},"mergeAlias":{"__symbolic":"function"},"BaseDirective2":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":46},{"__symbolic":"reference","name":"StyleBuilder"},{"__symbolic":"reference","name":"StyleUtils"},{"__symbolic":"reference","name":"MediaMarshaller"}]}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"addStyles":[{"__symbolic":"method"}],"clearStyles":[{"__symbolic":"method"}],"triggerUpdate":[{"__symbolic":"method"}],"getFlexFlowDirection":[{"__symbolic":"method"}],"applyStyleToElement":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}]}},"DEFAULT_BREAKPOINTS":[{"alias":"xs","mediaQuery":"screen and (min-width: 0px) and (max-width: 599.9px)","priority":1000},{"alias":"sm","mediaQuery":"screen and (min-width: 600px) and (max-width: 959.9px)","priority":900},{"alias":"md","mediaQuery":"screen and (min-width: 960px) and (max-width: 1279.9px)","priority":800},{"alias":"lg","mediaQuery":"screen and (min-width: 1280px) and (max-width: 1919.9px)","priority":700},{"alias":"xl","mediaQuery":"screen and (min-width: 1920px) and (max-width: 4999.9px)","priority":600},{"alias":"lt-sm","overlapping":true,"mediaQuery":"screen and (max-width: 599.9px)","priority":950},{"alias":"lt-md","overlapping":true,"mediaQuery":"screen and (max-width: 959.9px)","priority":850},{"alias":"lt-lg","overlapping":true,"mediaQuery":"screen and (max-width: 1279.9px)","priority":750},{"alias":"lt-xl","overlapping":true,"priority":650,"mediaQuery":"screen and (max-width: 1919.9px)"},{"alias":"gt-xs","overlapping":true,"mediaQuery":"screen and (min-width: 600px)","priority":-950},{"alias":"gt-sm","overlapping":true,"mediaQuery":"screen and (min-width: 960px)","priority":-850},{"alias":"gt-md","overlapping":true,"mediaQuery":"screen and (min-width: 1280px)","priority":-750},{"alias":"gt-lg","overlapping":true,"mediaQuery":"screen and (min-width: 1920px)","priority":-650}],"ScreenTypes":{"HANDSET":"(orientation: portrait) and (max-width: 599.9px), (orientation: landscape) and (max-width: 959.9px)","TABLET":"(orientation: portrait) and (min-width: 600px) and (max-width: 839.9px) , (orientation: landscape) and (min-width: 960px) and (max-width: 1279.9px)","WEB":"(orientation: portrait) and (min-width: 840px), (orientation: landscape) and (min-width: 1280px) ","HANDSET_PORTRAIT":"(orientation: portrait) and (max-width: 599.9px)","TABLET_PORTRAIT":"(orientation: portrait) and (min-width: 600px) and (max-width: 839.9px) ","WEB_PORTRAIT":"(orientation: portrait) and (min-width: 840px)","HANDSET_LANDSCAPE":"(orientation: landscape) and (max-width: 959.9px)]","TABLET_LANDSCAPE":"(orientation: landscape) and (min-width: 960px) and (max-width: 1279.9px)","WEB_LANDSCAPE":"(orientation: landscape) and (min-width: 1280px)","$quoted$":["HANDSET","TABLET","WEB","HANDSET_PORTRAIT","TABLET_PORTRAIT","WEB_PORTRAIT","HANDSET_LANDSCAPE","TABLET_LANDSCAPE","WEB_LANDSCAPE"]},"ORIENTATION_BREAKPOINTS":[{"alias":"handset","priority":2000,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"HANDSET"},"$quoted$":["alias","mediaQuery"]},{"alias":"handset.landscape","priority":2000,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"HANDSET_LANDSCAPE"},"$quoted$":["alias","mediaQuery"]},{"alias":"handset.portrait","priority":2000,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"HANDSET_PORTRAIT"},"$quoted$":["alias","mediaQuery"]},{"alias":"tablet","priority":2100,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"TABLET"},"$quoted$":["alias","mediaQuery"]},{"alias":"tablet.landscape","priority":2100,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"TABLET"},"$quoted$":["alias","mediaQuery"]},{"alias":"tablet.portrait","priority":2100,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"TABLET_PORTRAIT"},"$quoted$":["alias","mediaQuery"]},{"alias":"web","priority":2200,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"WEB"},"overlapping":true,"$quoted$":["alias","mediaQuery"]},{"alias":"web.landscape","priority":2200,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"WEB_LANDSCAPE"},"overlapping":true,"$quoted$":["alias","mediaQuery"]},{"alias":"web.portrait","priority":2200,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"WEB_PORTRAIT"},"overlapping":true,"$quoted$":["alias","mediaQuery"]}],"BreakPoint":{"__symbolic":"interface"},"OptionalBreakPoint":{"__symbolic":"interface"},"BreakPointRegistry":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":20,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":24,"character":15},"arguments":[{"__symbolic":"reference","name":"BREAKPOINTS"}]}]],"parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"BreakPoint"}]}]}],"findByAlias":[{"__symbolic":"method"}],"findByQuery":[{"__symbolic":"method"}],"findWithPredicate":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"BREAKPOINTS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":21,"character":6},"arguments":["Token (@angular/flex-layout) Breakpoints",{"__symbolic":"error","message":"Lambda not supported","line":23,"character":13,"module":"./breakpoints/break-points-token"}]},"ɵMatchMedia":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":21,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":28,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":28,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":29,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":29,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":27,"character":31},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"any"}]}],"isActive":[{"__symbolic":"method"}],"observe":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"registerQuery":[{"__symbolic":"method"}],"buildMQL":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵMockMatchMedia":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵMatchMedia"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":26,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":26,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":27,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":27,"character":22}]}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":25,"character":21},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"BreakPointRegistry"}]}],"clearAll":[{"__symbolic":"method"}],"activate":[{"__symbolic":"method"}],"_validateQuery":[{"__symbolic":"method"}],"_activateWithOverlaps":[{"__symbolic":"method"}],"_activateByAlias":[{"__symbolic":"method"}],"_activateByQuery":[{"__symbolic":"method"}],"_deactivateAll":[{"__symbolic":"method"}],"_registerMediaQuery":[{"__symbolic":"method"}],"buildMQL":[{"__symbolic":"method"}]}},"ɵMockMatchMediaProvider":{"provide":{"__symbolic":"reference","name":"ɵMatchMedia"},"useClass":{"__symbolic":"reference","name":"ɵMockMatchMedia"}},"MediaObserver":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":62,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"BreakPointRegistry"},{"__symbolic":"reference","name":"ɵMatchMedia"},{"__symbolic":"reference","name":"PrintHook"}]}],"ngOnDestroy":[{"__symbolic":"method"}],"asObservable":[{"__symbolic":"method"}],"isActive":[{"__symbolic":"method"}],"watchActivations":[{"__symbolic":"method"}],"buildObservable":[{"__symbolic":"method"}],"findAllActivations":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"MediaTrigger":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":29,"character":7},"arguments":[{"__symbolic":"reference","name":"LAYOUT_CONFIG"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":30,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":30,"character":14}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":31,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":31,"character":14}]}]],"parameters":[{"__symbolic":"reference","name":"BreakPointRegistry"},{"__symbolic":"reference","name":"ɵMatchMedia"},{"__symbolic":"reference","name":"LayoutConfigOptions"},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"any"}]}],"activate":[{"__symbolic":"method"}],"restore":[{"__symbolic":"method"}],"prepareAutoRestore":[{"__symbolic":"method"}],"deactivateAll":[{"__symbolic":"method"}],"saveActivations":[{"__symbolic":"method"}],"setActivations":[{"__symbolic":"method"}],"simulateMediaChanges":[{"__symbolic":"method"}],"forceRegistryMatches":[{"__symbolic":"method"}],"cacheRegistryMatches":[{"__symbolic":"method"}],"restoreRegistryMatches":[{"__symbolic":"method"}],"emitChangeEvent":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"sortDescendingPriority":{"__symbolic":"function"},"sortAscendingPriority":{"__symbolic":"function"},"coerceArray":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"if","condition":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Array"},"member":"isArray"},"arguments":[{"__symbolic":"reference","name":"value"}]},"thenExpression":{"__symbolic":"reference","name":"value"},"elseExpression":[{"__symbolic":"reference","name":"value"}]}},"StyleUtils":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":18,"character":15}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":19,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":19,"character":27},"arguments":[{"__symbolic":"reference","name":"SERVER_TOKEN"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":20,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":20,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":21,"character":15},"arguments":[{"__symbolic":"reference","name":"LAYOUT_CONFIG"}]}]],"parameters":[{"__symbolic":"reference","name":"StylesheetMap"},{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"LayoutConfigOptions"}]}],"applyStyleToElement":[{"__symbolic":"method"}],"applyStyleToElements":[{"__symbolic":"method"}],"getFlowDirection":[{"__symbolic":"method"}],"lookupAttributeValue":[{"__symbolic":"method"}],"lookupInlineStyle":[{"__symbolic":"method"}],"lookupStyle":[{"__symbolic":"method"}],"_applyMultiValueStyleToElement":[{"__symbolic":"method"}],"_setServerStyle":[{"__symbolic":"method"}],"_getServerStyle":[{"__symbolic":"method"}],"_readStyleAttribute":[{"__symbolic":"method"}],"_writeStyleAttribute":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"StyleDefinition":{"__symbolic":"interface"},"StyleBuilder":{"__symbolic":"class","members":{"buildStyles":[{"__symbolic":"method"}],"sideEffect":[{"__symbolic":"method"}]}},"validateBasis":{"__symbolic":"function"},"ElementMatcher":{"__symbolic":"interface"},"MediaMarshaller":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":43,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵMatchMedia"},{"__symbolic":"reference","name":"BreakPointRegistry"},{"__symbolic":"reference","name":"PrintHook"}]}],"onMediaChange":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"getValue":[{"__symbolic":"method"}],"hasValue":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"trackValue":[{"__symbolic":"method"}],"updateStyles":[{"__symbolic":"method"}],"clearElement":[{"__symbolic":"method"}],"updateElement":[{"__symbolic":"method"}],"releaseElement":[{"__symbolic":"method"}],"triggerUpdate":[{"__symbolic":"method"}],"buildElementKeyMap":[{"__symbolic":"method"}],"watchExtraTriggers":[{"__symbolic":"method"}],"findByQuery":[{"__symbolic":"method"}],"getActivatedValues":[{"__symbolic":"method"}],"observeActivations":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"HookTarget":{"__symbolic":"interface"},"BREAKPOINT_PRINT":{"alias":"print","mediaQuery":"print","priority":1000},"PrintHook":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":38,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":42,"character":7},"arguments":[{"__symbolic":"reference","name":"LAYOUT_CONFIG"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":43,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":43,"character":14}]}]],"parameters":[{"__symbolic":"reference","name":"BreakPointRegistry"},{"__symbolic":"reference","name":"LayoutConfigOptions"},{"__symbolic":"reference","name":"Object"}]}],"withPrintQuery":[{"__symbolic":"method"}],"isPrintEvent":[{"__symbolic":"method"}],"getEventBreakpoints":[{"__symbolic":"method"}],"updateEvent":[{"__symbolic":"method"}],"registerBeforeAfterPrintHooks":[{"__symbolic":"method"}],"interceptEvents":[{"__symbolic":"method"}],"blockPropagation":[{"__symbolic":"method"}],"startPrinting":[{"__symbolic":"method"}],"stopPrinting":[{"__symbolic":"method"}],"collectActivations":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}}},"origins":{"CoreModule":"./module","removeStyles":"./browser-provider","BROWSER_PROVIDER":"./browser-provider","CLASS_NAME":"./browser-provider","MediaQuerySubscriber":"./media-change","MediaChange":"./media-change","StylesheetMap":"./stylesheet-map/stylesheet-map","LayoutConfigOptions":"./tokens/library-config","DEFAULT_CONFIG":"./tokens/library-config","LAYOUT_CONFIG":"./tokens/library-config","SERVER_TOKEN":"./tokens/server-token","BREAKPOINT":"./tokens/breakpoint-token","mergeAlias":"./add-alias","BaseDirective2":"./base/base2","DEFAULT_BREAKPOINTS":"./breakpoints/data/break-points","ScreenTypes":"./breakpoints/data/orientation-break-points","ORIENTATION_BREAKPOINTS":"./breakpoints/data/orientation-break-points","BreakPoint":"./breakpoints/break-point","OptionalBreakPoint":"./breakpoints/break-point-registry","BreakPointRegistry":"./breakpoints/break-point-registry","BREAKPOINTS":"./breakpoints/break-points-token","ɵMatchMedia":"./match-media/match-media","ɵMockMatchMedia":"./match-media/mock/mock-match-media","ɵMockMatchMediaProvider":"./match-media/mock/mock-match-media","MediaObserver":"./media-observer/media-observer","MediaTrigger":"./media-trigger/media-trigger","sortDescendingPriority":"./utils/sort","sortAscendingPriority":"./utils/sort","coerceArray":"./utils/array","StyleUtils":"./style-utils/style-utils","StyleDefinition":"./style-utils/style-utils","StyleBuilder":"./style-builder/style-builder","validateBasis":"./basis-validator/basis-validator","ElementMatcher":"./media-marshaller/media-marshaller","MediaMarshaller":"./media-marshaller/media-marshaller","HookTarget":"./media-marshaller/print-hook","BREAKPOINT_PRINT":"./media-marshaller/print-hook","PrintHook":"./media-marshaller/print-hook"},"importAs":"@angular/flex-layout/core"} \ No newline at end of file diff --git a/core/typings/match-media/index.d.ts b/core/typings/match-media/index.d.ts index bfc848183..aa89b73c0 100644 --- a/core/typings/match-media/index.d.ts +++ b/core/typings/match-media/index.d.ts @@ -7,4 +7,3 @@ */ export * from './match-media'; export * from './mock/mock-match-media'; -export * from './server-match-media'; diff --git a/core/typings/match-media/match-media.d.ts b/core/typings/match-media/match-media.d.ts index f391ba707..a910b11d7 100644 --- a/core/typings/match-media/match-media.d.ts +++ b/core/typings/match-media/match-media.d.ts @@ -19,31 +19,36 @@ export declare class MatchMedia { protected _zone: NgZone; protected _platformId: Object; protected _document: any; - protected _registry: Map; - protected _source: BehaviorSubject; - protected _observable$: Observable; + /** Initialize source with 'all' so all non-responsive APIs trigger style updates */ + readonly source: BehaviorSubject; + registry: Map; constructor(_zone: NgZone, _platformId: Object, _document: any); + /** + * Publish list of all current activations + */ + readonly activations: string[]; /** * For the specified mediaQuery? */ isActive(mediaQuery: string): boolean; /** * External observers can watch for all (or a specific) mql changes. - * Typically used by the MediaQueryAdaptor; optionally available to components - * who wish to use the MediaMonitor as mediaMonitor$ observable service. * - * NOTE: if a mediaQuery is not specified, then ALL mediaQuery activations will - * be announced. + * If a mediaQuery is not specified, then ALL mediaQuery activations will + * be announced. */ - observe(mediaQuery?: string): Observable; + observe(): Observable; + observe(mediaQueries: string[]): Observable; + observe(mediaQueries: string[], filterOthers: boolean): Observable; /** * Based on the BreakPointRegistry provider, register internal listeners for each unique * mediaQuery. Each listener emits specific MediaChange data to observers */ - registerQuery(mediaQuery: string | string[]): void; + registerQuery(mediaQuery: string | string[]): MediaChange[]; /** * Call window.matchMedia() to build a MediaQueryList; which * supports 0..n listeners for activation/deactivation */ - protected _buildMQL(query: string): MediaQueryList; + protected buildMQL(query: string): MediaQueryList; + protected _observable$: Observable; } diff --git a/core/typings/match-media/mock/mock-match-media.d.ts b/core/typings/match-media/mock/mock-match-media.d.ts index e235aba67..e58018a6c 100644 --- a/core/typings/match-media/mock/mock-match-media.d.ts +++ b/core/typings/match-media/mock/mock-match-media.d.ts @@ -15,14 +15,8 @@ import { BreakPointRegistry } from '../../breakpoints/break-point-registry'; */ export declare class MockMatchMedia extends MatchMedia { private _breakpoints; - /** Special flag used to test BreakPoint registrations with MatchMedia */ autoRegisterQueries: boolean; - /** - * Allow fallback to overlapping mediaQueries to determine - * activatedInput(s). - */ useOverlaps: boolean; - protected _registry: Map; constructor(_zone: NgZone, _platformId: Object, _document: any, _breakpoints: BreakPointRegistry); /** Easy method to clear all listeners for all mediaQueries */ clearAll(): void; @@ -31,7 +25,7 @@ export declare class MockMatchMedia extends MatchMedia { /** Converts an optional mediaQuery alias to a specific, valid mediaQuery */ _validateQuery(queryOrAlias: string): string; /** - * Manually activate any overlapping mediaQueries to simulate + * Manually onMediaChange any overlapping mediaQueries to simulate * similar functionality in the window.matchMedia() */ private _activateWithOverlaps; @@ -43,7 +37,7 @@ export declare class MockMatchMedia extends MatchMedia { * */ private _activateByQuery; - /** Deactivate all current Mock MQLs */ + /** Deactivate all current MQLs and reset the buffer */ private _deactivateAll; /** Insure the mediaQuery is registered with MatchMedia */ private _registerMediaQuery; @@ -51,9 +45,8 @@ export declare class MockMatchMedia extends MatchMedia { * Call window.matchMedia() to build a MediaQueryList; which * supports 0..n listeners for activation/deactivation */ - protected _buildMQL(query: string): MediaQueryList; + protected buildMQL(query: string): MediaQueryList; protected readonly hasActivated: boolean; - private _actives; } /** * Special internal class to simulate a MediaQueryList and @@ -79,7 +72,7 @@ export declare class MockMediaQueryList implements MediaQueryList { /** Add a listener to our internal list to activate later */ addListener(listener: MediaQueryListListener): void; /** Don't need to remove listeners in the testing environment */ - removeListener(_: EventListenerOrEventListenerObject | null): void; + removeListener(_: MediaQueryListListener | null): void; addEventListener(_: K, __: (this: MediaQueryList, ev: MediaQueryListEventMap[K]) => any, ___?: boolean | AddEventListenerOptions): void; removeEventListener(_: K, __: (this: MediaQueryList, ev: MediaQueryListEventMap[K]) => any, ___?: boolean | EventListenerOptions): void; dispatchEvent(_: Event): boolean; diff --git a/core/typings/media-change.d.ts b/core/typings/media-change.d.ts index c466494c7..7d1e3049d 100644 --- a/core/typings/media-change.d.ts +++ b/core/typings/media-change.d.ts @@ -14,6 +14,7 @@ export declare class MediaChange { mediaQuery: string; mqAlias: string; suffix: string; + priority: number; property: string; value: any; /** @@ -21,8 +22,9 @@ export declare class MediaChange { * @param mediaQuery e.g. (min-width: 600px) and (max-width: 959px) * @param mqAlias e.g. gt-sm, md, gt-lg * @param suffix e.g. GtSM, Md, GtLg + * @param priority the priority of activation for the given breakpoint */ - constructor(matches?: boolean, mediaQuery?: string, mqAlias?: string, suffix?: string); + constructor(matches?: boolean, mediaQuery?: string, mqAlias?: string, suffix?: string, priority?: number); /** Create an exact copy of the MediaChange */ clone(): MediaChange; } diff --git a/core/typings/media-marshaller/media-marshaller.d.ts b/core/typings/media-marshaller/media-marshaller.d.ts index 915bf755f..5f6bb7457 100644 --- a/core/typings/media-marshaller/media-marshaller.d.ts +++ b/core/typings/media-marshaller/media-marshaller.d.ts @@ -2,6 +2,7 @@ import { Observable } from 'rxjs'; import { BreakPointRegistry } from '../breakpoints/break-point-registry'; import { MatchMedia } from '../match-media/match-media'; import { MediaChange } from '../media-change'; +import { PrintHook } from './print-hook'; declare type ClearCallback = () => void; declare type UpdateCallback = (val: any) => void; export interface ElementMatcher { @@ -16,20 +17,21 @@ export interface ElementMatcher { export declare class MediaMarshaller { protected matchMedia: MatchMedia; protected breakpoints: BreakPointRegistry; + protected hook: PrintHook; private activatedBreakpoints; private elementMap; private elementKeyMap; private watcherMap; - private builderMap; - private clearBuilderMap; + private updateMap; + private clearMap; private subject; - readonly activatedBreakpoint: string; - constructor(matchMedia: MatchMedia, breakpoints: BreakPointRegistry); + readonly activatedAlias: string; + constructor(matchMedia: MatchMedia, breakpoints: BreakPointRegistry, hook: PrintHook); /** - * activate or deactivate a given breakpoint + * Update styles on breakpoint activates or deactivates * @param mc */ - activate(mc: MediaChange): void; + onMediaChange(mc: MediaChange): void; /** * initialize the marshaller with necessary elements for delegation on an element * @param element @@ -82,6 +84,12 @@ export declare class MediaMarshaller { * @param element */ releaseElement(element: HTMLElement): void; + /** + * trigger an update for a given element and key (e.g. layout) + * @param element + * @param key + */ + triggerUpdate(element: HTMLElement, key?: string): void; /** Cross-reference for HTMLElement with directive key */ private buildElementKeyMap; /** @@ -98,7 +106,10 @@ export declare class MediaMarshaller { * @param bpMap * @param key */ - private getFallback; - private registerBreakpoints; + private getActivatedValues; + /** + * Watch for mediaQuery breakpoint activations + */ + private observeActivations; } export {}; diff --git a/core/typings/media-marshaller/print-hook.d.ts b/core/typings/media-marshaller/print-hook.d.ts new file mode 100644 index 000000000..81cced90f --- /dev/null +++ b/core/typings/media-marshaller/print-hook.d.ts @@ -0,0 +1,80 @@ +import { MediaChange } from '../media-change'; +import { BreakPoint } from '../breakpoints/break-point'; +import { LayoutConfigOptions } from '../tokens/library-config'; +import { BreakPointRegistry, OptionalBreakPoint } from '../breakpoints/break-point-registry'; +/** + * Interface to apply PrintHook to call anonymous `target.updateStyles()` + */ +export interface HookTarget { + activatedBreakpoints: BreakPoint[]; + updateStyles(): void; +} +export declare const BREAKPOINT_PRINT: { + alias: string; + mediaQuery: string; + priority: number; +}; +/** + * PrintHook - Use to intercept print MediaQuery activations and force + * layouts to render with the specified print alias/breakpoint + * + * Used in MediaMarshaller and MediaObserver + */ +export declare class PrintHook { + protected breakpoints: BreakPointRegistry; + protected layoutConfig: LayoutConfigOptions; + protected _platformId: Object; + constructor(breakpoints: BreakPointRegistry, layoutConfig: LayoutConfigOptions, _platformId: Object); + /** Add 'print' mediaQuery: to listen for matchMedia activations */ + withPrintQuery(queries: string[]): string[]; + /** Is the MediaChange event for any 'print' @media */ + isPrintEvent(e: MediaChange): Boolean; + /** What is the desired mqAlias to use while printing? */ + readonly printAlias: string[]; + /** Lookup breakpoints associated with print aliases. */ + readonly printBreakPoints: BreakPoint[]; + /** Lookup breakpoint associated with mediaQuery */ + getEventBreakpoints({ mediaQuery }: MediaChange): BreakPoint[]; + /** Update event with printAlias mediaQuery information */ + updateEvent(event: MediaChange): MediaChange; + private registeredBeforeAfterPrintHooks; + private isPrintingBeforeAfterEvent; + private registerBeforeAfterPrintHooks; + /** + * Prepare RxJs filter operator with partial application + * @return pipeable filter predicate + */ + interceptEvents(target: HookTarget): (event: MediaChange) => void; + /** Stop mediaChange event propagation in event streams */ + blockPropagation(): (event: MediaChange) => boolean; + /** + * Save current activateBreakpoints (for later restore) + * and substitute only the printAlias breakpoint + */ + protected startPrinting(target: HookTarget, bpList: OptionalBreakPoint[]): void; + /** For any print de-activations, reset the entire print queue */ + protected stopPrinting(target: HookTarget): void; + /** + * To restore pre-Print Activations, we must capture the proper + * list of breakpoint activations BEFORE print starts. OnBeforePrint() + * is supported; so 'print' mediaQuery activations are used as a fallback + * in browsers without `beforeprint` support. + * + * > But activated breakpoints are deactivated BEFORE 'print' activation. + * + * Let's capture all de-activations using the following logic: + * + * When not printing: + * - clear cache when activating non-print breakpoint + * - update cache (and sort) when deactivating + * + * When printing: + * - sort and save when starting print + * - restore as activatedTargets and clear when stop printing + */ + collectActivations(event: MediaChange): void; + /** Is this service currently in Print-mode ? */ + private isPrinting; + private queue; + private deactivations; +} diff --git a/core/typings/media-monitor/media-monitor.d.ts b/core/typings/media-monitor/media-monitor.d.ts deleted file mode 100644 index 635ca077a..000000000 --- a/core/typings/media-monitor/media-monitor.d.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { Observable } from 'rxjs'; -import { BreakPoint } from '../breakpoints/break-point'; -import { BreakPointRegistry } from '../breakpoints/break-point-registry'; -import { MatchMedia } from '../match-media/match-media'; -import { MediaChange } from '../media-change'; -/** - * MediaMonitor uses the MatchMedia service to observe mediaQuery changes (both activations and - * deactivations). These changes are are published as MediaChange notifications. - * - * Note: all notifications will be performed within the - * ng Zone to trigger change detections and component updates. - * - * It is the MediaMonitor that: - * - auto registers all known breakpoints - * - injects alias information into each raw MediaChange event - * - provides accessor to the currently active BreakPoint - * - publish list of overlapping BreakPoint(s); used by ResponsiveActivation - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export declare class MediaMonitor { - private _breakpoints; - private _matchMedia; - constructor(_breakpoints: BreakPointRegistry, _matchMedia: MatchMedia); - /** - * Read-only accessor to the list of breakpoints configured in the BreakPointRegistry provider - */ - readonly breakpoints: BreakPoint[]; - readonly activeOverlaps: BreakPoint[]; - readonly active: BreakPoint | null; - /** - * For the specified mediaQuery alias, is the mediaQuery range active? - */ - isActive(alias: string): boolean; - /** - * External observers can watch for all (or a specific) mql changes. - * If specific breakpoint is observed, only return *activated* events - * otherwise return all events for BOTH activated + deactivated changes. - */ - observe(alias?: string): Observable; - /** - * Immediate calls to matchMedia() to establish listeners - * and prepare for immediate subscription notifications - */ - private _registerBreakpoints; -} diff --git a/core/typings/media-observer/media-observer.d.ts b/core/typings/media-observer/media-observer.d.ts index f98dacdca..0a03c45cf 100644 --- a/core/typings/media-observer/media-observer.d.ts +++ b/core/typings/media-observer/media-observer.d.ts @@ -1,23 +1,30 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +import { OnDestroy } from '@angular/core'; import { Observable } from 'rxjs'; -import { BreakPointRegistry } from '../breakpoints/break-point-registry'; import { MediaChange } from '../media-change'; import { MatchMedia } from '../match-media/match-media'; +import { PrintHook } from '../media-marshaller/print-hook'; +import { BreakPointRegistry } from '../breakpoints/break-point-registry'; /** - * Class internalizes a MatchMedia service and exposes an Observable interface. - - * This exposes an Observable with a feature to subscribe to mediaQuery - * changes and a validator method (`isActive()`) to test if a mediaQuery (or alias) is - * currently active. + * MediaObserver enables applications to listen for 1..n mediaQuery activations and to determine + * if a mediaQuery is currently activated. * - * !! Only mediaChange activations (not de-activations) are announced by the MediaObserver + * Since a breakpoint change will first deactivate 1...n mediaQueries and then possibly activate + * 1..n mediaQueries, the MediaObserver will debounce notifications and report ALL *activations* + * in 1 event notification. The reported activations will be sorted in descending priority order. * * This class uses the BreakPoint Registry to inject alias information into the raw MediaChange * notification. For custom mediaQuery notifications, alias information will not be injected and * those fields will be ''. * - * !! This is not an actual Observable. It is a wrapper of an Observable used to publish additional - * methods like `isActive(). To access the Observable and use RxJS operators, use - * `.media$` with syntax like mediaObserver.media$.map(....). + * Note: Developers should note that only mediaChange activations (not de-activations) + * are announced by the MediaObserver. * * @usage * @@ -30,57 +37,76 @@ import { MatchMedia } from '../match-media/match-media'; * status: string = ''; * * constructor(mediaObserver: MediaObserver) { - * const onChange = (change: MediaChange) => { - * this.status = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : ''; - * }; + * const media$ = mediaObserver.asObservable().pipe( + * filter((changes: MediaChange[]) => true) // silly noop filter + * ); * - * // Subscribe directly or access observable to use filter/map operators - * // e.g. mediaObserver.media$.subscribe(onChange); + * media$.subscribe((changes: MediaChange[]) => { + * let status = ''; + * changes.forEach( change => { + * status += `'${change.mqAlias}' = (${change.mediaQuery})
` ; + * }); + * this.status = status; + * }); * - * mediaObserver.media$() - * .pipe( - * filter((change: MediaChange) => true) // silly noop filter - * ).subscribe(onChange); * } * } */ -export declare class MediaObserver { - private breakpoints; - private mediaWatcher; +export declare class MediaObserver implements OnDestroy { + protected breakpoints: BreakPointRegistry; + protected matchMedia: MatchMedia; + protected hook: PrintHook; /** - * Whether to announce gt- breakpoint activations + * @deprecated Use `asObservable()` instead. + * @breaking-change 8.0.0-beta.25 + * @deletion-target v8.0.0-beta.26 */ - filterOverlaps: boolean; readonly media$: Observable; - constructor(breakpoints: BreakPointRegistry, mediaWatcher: MatchMedia); + /** Filter MediaChange notifications for overlapping breakpoints */ + filterOverlaps: boolean; + constructor(breakpoints: BreakPointRegistry, matchMedia: MatchMedia, hook: PrintHook); + /** + * Completes the active subject, signalling to all complete for all + * MediaObserver subscribers + */ + ngOnDestroy(): void; /** - * Test if specified query/alias is active. + * Observe changes to current activation 'list' */ - isActive(alias: string): boolean; + asObservable(): Observable; + /** + * Allow programmatic query to determine if one or more media query/alias match + * the current viewport size. + * @param value One or more media queries (or aliases) to check. + * @returns Whether any of the media queries match. + */ + isActive(value: string | string[]): boolean; /** * Register all the mediaQueries registered in the BreakPointRegistry * This is needed so subscribers can be auto-notified of all standard, registered * mediaQuery activations */ - private _registerBreakPoints; + private watchActivations; /** - * Prepare internal observable + * Only pass/announce activations (not de-activations) + * + * Since multiple-mediaQueries can be activation in a cycle, + * gather all current activations into a single list of changes to observers + * + * Inject associated (if any) alias information into the MediaChange event + * - Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only + * - Exclude print activations that do not have an associated mediaQuery * * NOTE: the raw MediaChange events [from MatchMedia] do not * contain important alias information; as such this info * must be injected into the MediaChange */ - private _buildObservable; - /** - * Breakpoint locator by alias - */ - private _findByAlias; - /** - * Breakpoint locator by mediaQuery - */ - private _findByQuery; + private buildObservable; /** - * Find associated breakpoint (if any) + * Find all current activations and prepare single list of activations + * sorted by descending priority. */ - private _toMediaQuery; + private findAllActivations; + private readonly _media$; + private readonly destroyed$; } diff --git a/typings/esm5/core/media-monitor/index.d.ts b/core/typings/media-trigger/index.d.ts similarity index 85% rename from typings/esm5/core/media-monitor/index.d.ts rename to core/typings/media-trigger/index.d.ts index 59c43b640..42af86d6f 100644 --- a/typings/esm5/core/media-monitor/index.d.ts +++ b/core/typings/media-trigger/index.d.ts @@ -5,4 +5,4 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -export * from './media-monitor'; +export * from './media-trigger'; diff --git a/core/typings/media-trigger/media-trigger.d.ts b/core/typings/media-trigger/media-trigger.d.ts new file mode 100644 index 000000000..161ead05a --- /dev/null +++ b/core/typings/media-trigger/media-trigger.d.ts @@ -0,0 +1,70 @@ +import { MatchMedia } from '../match-media/match-media'; +import { BreakPointRegistry } from '../breakpoints/break-point-registry'; +import { LayoutConfigOptions } from '../tokens/library-config'; +/** + * Class + */ +export declare class MediaTrigger { + protected breakpoints: BreakPointRegistry; + protected matchMedia: MatchMedia; + protected layoutConfig: LayoutConfigOptions; + protected _platformId: Object; + protected _document: any; + constructor(breakpoints: BreakPointRegistry, matchMedia: MatchMedia, layoutConfig: LayoutConfigOptions, _platformId: Object, _document: any); + /** + * Manually activate range of breakpoints + * @param list array of mediaQuery or alias strings + */ + activate(list: string[]): void; + /** + * Restore original, 'real' breakpoints and emit events + * to trigger stream notification + */ + restore(): void; + /** + * Whenever window resizes, immediately auto-restore original + * activations (if we are simulating activations) + */ + private prepareAutoRestore; + /** + * Notify all matchMedia subscribers of de-activations + * + * Note: we must force 'matches' updates for + * future matchMedia::activation lookups + */ + private deactivateAll; + /** + * Cache current activations as sorted, prioritized list of MediaChanges + */ + private saveActivations; + /** + * Force set manual activations for specified mediaQuery list + */ + private setActivations; + /** + * For specified mediaQuery list manually simulate activations or deactivations + */ + private simulateMediaChanges; + /** + * Replace current registry with simulated registry... + * Note: this is required since MediaQueryList::matches is 'readOnly' + */ + private forceRegistryMatches; + /** + * Save current MatchMedia::registry items. + */ + private cacheRegistryMatches; + /** + * Restore original, 'true' registry + */ + private restoreRegistryMatches; + /** + * Manually emit a MediaChange event via the MatchMedia to MediaMarshaller and MediaObserver + */ + private emitChangeEvent; + private readonly currentActivations; + private hasCachedRegistryMatches; + private originalActivations; + private originalRegistry; + private resizeSubscription; +} diff --git a/core/typings/observable-media/observable-media.d.ts b/core/typings/observable-media/observable-media.d.ts deleted file mode 100644 index 2eab41422..000000000 --- a/core/typings/observable-media/observable-media.d.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { Observable, PartialObserver, Subscribable, Subscription } from 'rxjs'; -import { BreakPointRegistry } from '../breakpoints/break-point-registry'; -import { MediaChange } from '../media-change'; -import { MatchMedia } from '../match-media/match-media'; -/** - * Base class for MediaService and pseudo-token for - * @deprecated use MediaObserver instead - * @deletion-target v7.0.0-beta.21 - */ -export declare abstract class ObservableMedia implements Subscribable { - abstract isActive(query: string): boolean; - abstract asObservable(): Observable; - abstract subscribe(next?: (value: MediaChange) => void, error?: (error: any) => void, complete?: () => void): Subscription; - abstract subscribe(observer?: PartialObserver): Subscription; -} -/** - * Class internalizes a MatchMedia service and exposes an Subscribable and Observable interface. - - * This an Observable with that exposes a feature to subscribe to mediaQuery - * changes and a validator method (`isActive()`) to test if a mediaQuery (or alias) is - * currently active. - * - * !! Only mediaChange activations (not de-activations) are announced by the ObservableMedia - * - * This class uses the BreakPoint Registry to inject alias information into the raw MediaChange - * notification. For custom mediaQuery notifications, alias information will not be injected and - * those fields will be ''. - * - * !! This is not an actual Observable. It is a wrapper of an Observable used to publish additional - * methods like `isActive(). To access the Observable and use RxJS operators, use - * `.asObservable()` with syntax like media.asObservable().map(....). - * - * @usage - * - * // RxJS - * import {filter} from 'rxjs/operators/filter'; - * import { ObservableMedia } from '@angular/flex-layout'; - * - * @Component({ ... }) - * export class AppComponent { - * status : string = ''; - * - * constructor( media:ObservableMedia ) { - * let onChange = (change:MediaChange) => { - * this.status = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : ''; - * }; - * - * // Subscribe directly or access observable to use filter/map operators - * // e.g. - * // media.subscribe(onChange); - * - * media.asObservable() - * .pipe( - * filter((change:MediaChange) => true) // silly noop filter - * ).subscribe(onChange); - * } - * } - * @deprecated use MediaObserver instead - * @deletion-target v7.0.0-beta.21 - */ -export declare class MediaService implements ObservableMedia { - private breakpoints; - private mediaWatcher; - /** - * Should we announce gt- breakpoint activations ? - */ - filterOverlaps: boolean; - constructor(breakpoints: BreakPointRegistry, mediaWatcher: MatchMedia); - /** - * Test if specified query/alias is active. - */ - isActive(alias: string): boolean; - /** - * Proxy to the Observable subscribe method - */ - subscribe(observerOrNext?: PartialObserver | ((value: MediaChange) => void), error?: (error: any) => void, complete?: () => void): Subscription; - /** - * Access to observable for use with operators like - * .filter(), .map(), etc. - */ - asObservable(): Observable; - /** - * Register all the mediaQueries registered in the BreakPointRegistry - * This is needed so subscribers can be auto-notified of all standard, registered - * mediaQuery activations - */ - private _registerBreakPoints; - /** - * Prepare internal observable - * - * NOTE: the raw MediaChange events [from MatchMedia] do not - * contain important alias information; as such this info - * must be injected into the MediaChange - */ - private _buildObservable; - /** - * Breakpoint locator by alias - */ - private _findByAlias; - /** - * Breakpoint locator by mediaQuery - */ - private _findByQuery; - /** - * Find associated breakpoint (if any) - */ - private _toMediaQuery; - private readonly observable$; -} -/** - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export declare const ObservableMediaProvider: { - provide: typeof ObservableMedia; - useClass: typeof MediaService; -}; diff --git a/core/typings/public-api.d.ts b/core/typings/public-api.d.ts index 8ddacac22..02ed7d038 100644 --- a/core/typings/public-api.d.ts +++ b/core/typings/public-api.d.ts @@ -5,19 +5,20 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -export * from './browser-provider'; export * from './module'; +export * from './browser-provider'; export * from './media-change'; export * from './stylesheet-map/index'; export * from './tokens/index'; +export * from './add-alias'; export * from './base/index'; export * from './breakpoints/index'; -export * from './match-media/index'; -export * from './media-monitor/index'; -export * from './observable-media/index'; +export { MatchMedia as ɵMatchMedia, MockMatchMedia as ɵMockMatchMedia, MockMatchMediaProvider as ɵMockMatchMediaProvider, } from './match-media/index'; export * from './media-observer/index'; -export * from './responsive-activation/responsive-activation'; +export * from './media-trigger/index'; +export * from './utils/index'; export * from './style-utils/style-utils'; export * from './style-builder/style-builder'; export * from './basis-validator/basis-validator'; export * from './media-marshaller/media-marshaller'; +export * from './media-marshaller/print-hook'; diff --git a/core/typings/responsive-activation/responsive-activation.d.ts b/core/typings/responsive-activation/responsive-activation.d.ts deleted file mode 100644 index 68e0b929e..000000000 --- a/core/typings/responsive-activation/responsive-activation.d.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { MediaChange, MediaQuerySubscriber } from '../media-change'; -import { BreakPoint } from '../breakpoints/break-point'; -import { MediaMonitor } from '../media-monitor/media-monitor'; -/** - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export interface BreakPointX extends BreakPoint { - key: string; - baseKey: string; -} -/** - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export declare class KeyOptions { - baseKey: string; - defaultValue: string | number | boolean; - inputKeys: { - [key: string]: any; - }; - constructor(baseKey: string, defaultValue: string | number | boolean, inputKeys: { - [key: string]: any; - }); -} -/** - * ResponsiveActivation acts as a proxy between the MonitorMedia service (which emits mediaQuery - * changes) and the fx API directives. The MQA proxies mediaQuery change events and notifies the - * directive via the specified callback. - * - * - The MQA also determines which directive property should be used to determine the - * current change 'value'... BEFORE the original `onMediaQueryChanges()` method is called. - * - The `ngOnDestroy()` method is also head-hooked to enable auto-unsubscribe from the - * MediaQueryServices. - * - * NOTE: these interceptions enables the logic in the fx API directives to remain terse and clean. - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export declare class ResponsiveActivation { - private _options; - private _mediaMonitor; - private _onMediaChanges; - private _activatedInputKey; - private _registryMap; - private _subscribers; - /** - * Constructor - */ - constructor(_options: KeyOptions, _mediaMonitor: MediaMonitor, _onMediaChanges: MediaQuerySubscriber); - /** - * Get a readonly sorted list of the breakpoints corresponding to the directive properties - * defined in the HTML markup: the sorting is done from largest to smallest. The order is - * important when several media queries are 'registered' and from which, the browser uses the - * first matching media query. - */ - readonly registryFromLargest: BreakPointX[]; - /** - * Determine which directive @Input() property is currently active (for the viewport size): - * The key must be defined (in use) or fallback to the 'closest' overlapping property key - * that is defined; otherwise the default property key will be used. - * e.g. - * if `
` is used but the current activated mediaQuery alias - * key is `.md` then `.gt-sm` should be used instead - */ - readonly activatedInputKey: string; - /** - * Get the currently activated @Input value or the fallback default @Input value - */ - readonly activatedInput: any; - /** - * Fast validator for presence of attribute on the host element - */ - hasKeyValue(key: string): boolean; - /** - * Remove interceptors, restore original functions, and forward the onDestroy() call - */ - destroy(): void; - /** - * For each *defined* API property, register a callback to `_onMonitorEvents( )` - * Cache 1..n subscriptions for internal auto-unsubscribes when the the directive destructs - */ - private _configureChangeObservers; - /** - * Build mediaQuery key-hashmap; only for the directive properties that are actually defined/used - * in the HTML markup - */ - private _buildRegistryMap; - /** - * Synchronizes change notifications with the current mq-activated @Input and calculates the - * mq-activated input value or the default value - */ - protected _onMonitorEvents(change: MediaChange): void; - /** - * Has the key been specified in the HTML markup and thus is intended - * to participate in activation processes. - */ - private _keyInUse; - /** - * Map input key associated with mediaQuery activation to closest defined input key - * then return the values associated with the targeted input property - * - * !! change events may arrive out-of-order (activate before deactivate) - * so make sure the deactivate is used ONLY when the keys match - * (since a different activate may be in use) - */ - private _calculateActivatedValue; - /** - * For the specified input property key, validate it is defined (used in the markup) - * If not see if a overlapping mediaQuery-related input key fallback has been defined - * - * NOTE: scans in the order defined by activeOverLaps (largest viewport ranges -> smallest ranges) - */ - private _validateInputKey; - /** - * Get the value (if any) for the directive instances @Input property (aka key) - */ - private _lookupKeyValue; -} diff --git a/core/typings/tokens/library-config.d.ts b/core/typings/tokens/library-config.d.ts index 6b9ff306b..7cb0bf3f2 100644 --- a/core/typings/tokens/library-config.d.ts +++ b/core/typings/tokens/library-config.d.ts @@ -14,6 +14,9 @@ export interface LayoutConfigOptions { disableVendorPrefixes?: boolean; serverLoaded?: boolean; useColumnBasisZero?: boolean; + printWithBreakpoints?: string[]; + mediaTriggerAutoRestore?: boolean; + ssrObserveBreakpoints?: string[]; } export declare const DEFAULT_CONFIG: LayoutConfigOptions; export declare const LAYOUT_CONFIG: InjectionToken; diff --git a/core/typings/utils/array.d.ts b/core/typings/utils/array.d.ts new file mode 100644 index 000000000..f5376b2cc --- /dev/null +++ b/core/typings/utils/array.d.ts @@ -0,0 +1,9 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** Wraps the provided value in an array, unless the provided value is an array. */ +export declare function coerceArray(value: T | T[]): T[]; diff --git a/core/typings/observable-media/index.d.ts b/core/typings/utils/index.d.ts similarity index 80% rename from core/typings/observable-media/index.d.ts rename to core/typings/utils/index.d.ts index a70750c29..d0b1b476e 100644 --- a/core/typings/observable-media/index.d.ts +++ b/core/typings/utils/index.d.ts @@ -5,4 +5,5 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -export * from './observable-media'; +export * from './sort'; +export * from './array'; diff --git a/core/typings/utils/sort.d.ts b/core/typings/utils/sort.d.ts new file mode 100644 index 000000000..5de0356c8 --- /dev/null +++ b/core/typings/utils/sort.d.ts @@ -0,0 +1,15 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +interface WithPriority { + priority?: number; +} +/** HOF to sort the breakpoints by descending priority */ +export declare function sortDescendingPriority(a: T | null, b: T | null): number; +/** HOF to sort the breakpoints by ascending priority */ +export declare function sortAscendingPriority(a: T, b: T): number; +export {}; diff --git a/esm2015/core.js b/esm2015/core.js index fab580825..1620811e8 100644 --- a/esm2015/core.js +++ b/esm2015/core.js @@ -5,14 +5,14 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -import { APP_BOOTSTRAP_LISTENER, PLATFORM_ID, InjectionToken, inject, Injectable, Inject, NgModule, NgZone, SimpleChange, Optional, defineInjectable } from '@angular/core'; +import { APP_BOOTSTRAP_LISTENER, PLATFORM_ID, NgModule, Injectable, InjectionToken, Inject, inject, NgZone, Optional, ɵɵdefineInjectable, ɵɵinject } from '@angular/core'; import { DOCUMENT, isPlatformBrowser, isPlatformServer } from '@angular/common'; -import { BehaviorSubject, Subject, merge } from 'rxjs'; -import { filter, map } from 'rxjs/operators'; +import { Subject, BehaviorSubject, Observable, merge, asapScheduler, of, fromEvent } from 'rxjs'; +import { filter, debounceTime, map, switchMap, takeUntil, take, tap } from 'rxjs/operators'; /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * Find all of the server-generated stylings, if any, and remove them @@ -23,24 +23,36 @@ import { filter, map } from 'rxjs/operators'; * @return {?} */ function removeStyles(_document, platformId) { - return () => { + return (/** + * @return {?} + */ + () => { if (isPlatformBrowser(platformId)) { /** @type {?} */ const elements = Array.from(_document.querySelectorAll(`[class*=${CLASS_NAME}]`)); + // RegExp constructor should only be used if passing a variable to the constructor. + // When using static regular expression it is more performant to use reg exp literal. + // This is also needed to provide Safari 9 compatibility, please see + // https://stackoverflow.com/questions/37919802 for more discussion. /** @type {?} */ const classRegex = /\bflex-layout-.+?\b/g; - elements.forEach(el => { + elements.forEach((/** + * @param {?} el + * @return {?} + */ + el => { el.classList.contains(`${CLASS_NAME}ssr`) && el.parentNode ? el.parentNode.removeChild(el) : el.className.replace(classRegex, ''); - }); + })); } - }; + }); } -/** * +/** * Provider to remove SSR styles on the browser - @type {?} */ + * @type {?} + */ const BROWSER_PROVIDER = { - provide: /** @type {?} */ (APP_BOOTSTRAP_LISTENER), + provide: (/** @type {?} */ (APP_BOOTSTRAP_LISTENER)), useFactory: removeStyles, deps: [DOCUMENT, PLATFORM_ID], multi: true @@ -50,257 +62,125 @@ const CLASS_NAME = 'flex-layout-'; /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** @type {?} */ -const BREAKPOINT = new InjectionToken('Flex Layout token, collect all breakpoints into one provider', { - providedIn: 'root', - factory: () => null -}); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -/** @type {?} */ -const RESPONSIVE_ALIASES = [ - 'xs', 'gt-xs', 'sm', 'gt-sm', 'md', 'gt-md', 'lg', 'gt-lg', 'xl' -]; -/** @type {?} */ -const DEFAULT_BREAKPOINTS = [ - { - alias: 'xs', - mediaQuery: '(min-width: 0px) and (max-width: 599px)', - priority: 100, - }, - { - alias: 'gt-xs', - overlapping: true, - mediaQuery: '(min-width: 600px)', - priority: 7, - }, - { - alias: 'lt-sm', - overlapping: true, - mediaQuery: '(max-width: 599px)', - priority: 10, - }, - { - alias: 'sm', - mediaQuery: '(min-width: 600px) and (max-width: 959px)', - priority: 100, - }, - { - alias: 'gt-sm', - overlapping: true, - mediaQuery: '(min-width: 960px)', - priority: 8, - }, - { - alias: 'lt-md', - overlapping: true, - mediaQuery: '(max-width: 959px)', - priority: 9, - }, - { - alias: 'md', - mediaQuery: '(min-width: 960px) and (max-width: 1279px)', - priority: 100, - }, - { - alias: 'gt-md', - overlapping: true, - mediaQuery: '(min-width: 1280px)', - priority: 9, - }, - { - alias: 'lt-lg', - overlapping: true, - mediaQuery: '(max-width: 1279px)', - priority: 8, - }, - { - alias: 'lg', - mediaQuery: '(min-width: 1280px) and (max-width: 1919px)', - priority: 100, - }, - { - alias: 'gt-lg', - overlapping: true, - mediaQuery: '(min-width: 1920px)', - priority: 10, - }, - { - alias: 'lt-xl', - overlapping: true, - mediaQuery: '(max-width: 1919px)', - priority: 7, - }, - { - alias: 'xl', - mediaQuery: '(min-width: 1920px) and (max-width: 5000px)', - priority: 100, - } -]; - /** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * ***************************************************************** + * Define module for the MediaQuery API + * ***************************************************************** */ - -/** @type {?} */ -const HANDSET_PORTRAIT = '(orientation: portrait) and (max-width: 599px)'; -/** @type {?} */ -const HANDSET_LANDSCAPE = '(orientation: landscape) and (max-width: 959px)'; -/** @type {?} */ -const TABLET_LANDSCAPE = '(orientation: landscape) and (min-width: 960px) and (max-width: 1279px)'; -/** @type {?} */ -const TABLET_PORTRAIT = '(orientation: portrait) and (min-width: 600px) and (max-width: 839px)'; -/** @type {?} */ -const WEB_PORTRAIT = '(orientation: portrait) and (min-width: 840px)'; -/** @type {?} */ -const WEB_LANDSCAPE = '(orientation: landscape) and (min-width: 1280px)'; -/** @type {?} */ -const ScreenTypes = { - 'HANDSET': `${HANDSET_PORTRAIT}, ${HANDSET_LANDSCAPE}`, - 'TABLET': `${TABLET_PORTRAIT} , ${TABLET_LANDSCAPE}`, - 'WEB': `${WEB_PORTRAIT}, ${WEB_LANDSCAPE} `, - 'HANDSET_PORTRAIT': `${HANDSET_PORTRAIT}`, - 'TABLET_PORTRAIT': `${TABLET_PORTRAIT} `, - 'WEB_PORTRAIT': `${WEB_PORTRAIT}`, - 'HANDSET_LANDSCAPE': `${HANDSET_LANDSCAPE}]`, - 'TABLET_LANDSCAPE': `${TABLET_LANDSCAPE}`, - 'WEB_LANDSCAPE': `${WEB_LANDSCAPE}` -}; -/** * - * Extended Breakpoints for handset/tablets with landscape or portrait orientations - @type {?} */ -const ORIENTATION_BREAKPOINTS = [ - { 'alias': 'handset', 'mediaQuery': ScreenTypes.HANDSET }, - { 'alias': 'handset.landscape', 'mediaQuery': ScreenTypes.HANDSET_LANDSCAPE }, - { 'alias': 'handset.portrait', 'mediaQuery': ScreenTypes.HANDSET_PORTRAIT }, - { 'alias': 'tablet', 'mediaQuery': ScreenTypes.TABLET }, - { 'alias': 'tablet.landscape', 'mediaQuery': ScreenTypes.TABLET }, - { 'alias': 'tablet.portrait', 'mediaQuery': ScreenTypes.TABLET_PORTRAIT }, - { 'alias': 'web', 'mediaQuery': ScreenTypes.WEB, overlapping: true }, - { 'alias': 'web.landscape', 'mediaQuery': ScreenTypes.WEB_LANDSCAPE, overlapping: true }, - { 'alias': 'web.portrait', 'mediaQuery': ScreenTypes.WEB_PORTRAIT, overlapping: true } +class CoreModule { +} +CoreModule.decorators = [ + { type: NgModule, args: [{ + providers: [BROWSER_PROVIDER] + },] }, ]; /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** - * Extends an object with the *enumerable* and *own* properties of one or more source objects, - * similar to Object.assign. - * - * @param {?} dest The object which will have properties copied to it. - * @param {...?} sources The source objects from which properties will be copied. - * @return {?} + * Class instances emitted [to observers] for each mql notification */ -function extendObject(dest, ...sources) { - if (dest == null) { - throw TypeError('Cannot convert undefined or null to object'); +class MediaChange { + /** + * @param {?=} matches whether the mediaQuery is currently activated + * @param {?=} mediaQuery e.g. (min-width: 600px) and (max-width: 959px) + * @param {?=} mqAlias e.g. gt-sm, md, gt-lg + * @param {?=} suffix e.g. GtSM, Md, GtLg + * @param {?=} priority the priority of activation for the given breakpoint + */ + constructor(matches = false, mediaQuery = 'all', mqAlias = '', suffix = '', priority = 0) { + this.matches = matches; + this.mediaQuery = mediaQuery; + this.mqAlias = mqAlias; + this.suffix = suffix; + this.priority = priority; + this.property = ''; } - for (let source of sources) { - if (source != null) { - for (let key in source) { - if (source.hasOwnProperty(key)) { - dest[key] = source[key]; - } - } - } + /** + * Create an exact copy of the MediaChange + * @return {?} + */ + clone() { + return new MediaChange(this.matches, this.mediaQuery, this.mqAlias, this.suffix); } - return dest; } /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** @type {?} */ -const ALIAS_DELIMITERS = /(\.|-|_)/g; -/** - * @param {?} part - * @return {?} - */ -function firstUpperCase(part) { - /** @type {?} */ - let first = part.length > 0 ? part.charAt(0) : ''; - /** @type {?} */ - let remainder = (part.length > 1) ? part.slice(1) : ''; - return first.toUpperCase() + remainder; -} -/** - * Converts snake-case to SnakeCase. - * @param {?} name Text to UpperCamelCase - * @return {?} - */ -function camelCase(name) { - return name - .replace(ALIAS_DELIMITERS, '|') - .split('|') - .map(firstUpperCase) - .join(''); -} -/** - * For each breakpoint, ensure that a Suffix is defined; - * fallback to UpperCamelCase the unique Alias value - * @param {?} list - * @return {?} + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -function validateSuffixes(list) { - list.forEach((bp) => { - if (!bp.suffix) { - bp.suffix = camelCase(bp.alias); // create Suffix value based on alias - bp.overlapping = !!bp.overlapping; // ensure default value - } - }); - return list; -} /** - * Merge a custom breakpoint list with the default list based on unique alias values - * - Items are added if the alias is not in the default list - * - Items are merged with the custom override if the alias exists in the default list - * @param {?} defaults - * @param {?=} custom - * @return {?} + * Utility to emulate a CSS stylesheet + * + * This utility class stores all of the styles for a given HTML element + * as a readonly `stylesheet` map. */ -function mergeByAlias(defaults, custom = []) { - /** @type {?} */ - const dict = {}; - defaults.forEach(bp => { - dict[bp.alias] = bp; - }); - // Merge custom breakpoints - custom.forEach((bp) => { - if (dict[bp.alias]) { - extendObject(dict[bp.alias], bp); +class StylesheetMap { + constructor() { + this.stylesheet = new Map(); + } + /** + * Add an individual style to an HTML element + * @param {?} element + * @param {?} style + * @param {?} value + * @return {?} + */ + addStyleToElement(element, style, value) { + /** @type {?} */ + const stylesheet = this.stylesheet.get(element); + if (stylesheet) { + stylesheet.set(style, value); } else { - dict[bp.alias] = bp; + this.stylesheet.set(element, new Map([[style, value]])); } - }); - return validateSuffixes(Object.keys(dict).map(k => dict[k])); + } + /** + * Clear the virtual stylesheet + * @return {?} + */ + clearStyles() { + this.stylesheet.clear(); + } + /** + * Retrieve a given style for an HTML element + * @param {?} el + * @param {?} styleName + * @return {?} + */ + getStyleForElement(el, styleName) { + /** @type {?} */ + const styles = this.stylesheet.get(el); + /** @type {?} */ + let value = ''; + if (styles) { + /** @type {?} */ + const style = styles.get(styleName); + if (typeof style === 'number' || typeof style === 'string') { + value = style + ''; + } + } + return value; + } } +StylesheetMap.decorators = [ + { type: Injectable, args: [{ providedIn: 'root' },] }, +]; +/** @nocollapse */ StylesheetMap.ngInjectableDef = ɵɵdefineInjectable({ factory: function StylesheetMap_Factory() { return new StylesheetMap(); }, token: StylesheetMap, providedIn: "root" }); + /** - * HOF to sort the breakpoints by priority - * @param {?} a - * @param {?} b - * @return {?} + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -function prioritySort(a, b) { - /** @type {?} */ - const priorityA = a.priority || 0; - /** @type {?} */ - const priorityB = b.priority || 0; - return priorityB - priorityA; -} /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const DEFAULT_CONFIG = { @@ -310,645 +190,90 @@ const DEFAULT_CONFIG = { disableVendorPrefixes: false, serverLoaded: false, useColumnBasisZero: true, + printWithBreakpoints: [], + mediaTriggerAutoRestore: true, + ssrObserveBreakpoints: [], }; /** @type {?} */ const LAYOUT_CONFIG = new InjectionToken('Flex Layout token, config options for the library', { providedIn: 'root', - factory: () => DEFAULT_CONFIG + factory: (/** + * @return {?} + */ + () => DEFAULT_CONFIG) }); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** * - * Injection token unique to the flex-layout library. - * Use this token when build a custom provider (see below). - @type {?} */ -const BREAKPOINTS = new InjectionToken('Token (@angular/flex-layout) Breakpoints', { - providedIn: 'root', - factory: () => { - /** @type {?} */ - const breakpoints = inject(BREAKPOINT); - /** @type {?} */ - const layoutConfig = inject(LAYOUT_CONFIG); - /** @type {?} */ - const bpFlattenArray = [].concat.apply([], (breakpoints || []) - .map((v) => Array.isArray(v) ? v : [v])); - /** @type {?} */ - const builtIns = (layoutConfig.disableDefaultBps ? [] : DEFAULT_BREAKPOINTS) - .concat(layoutConfig.addOrientationBps ? ORIENTATION_BREAKPOINTS : []); - return mergeByAlias(builtIns, bpFlattenArray); - } -}); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * Registry of 1..n MediaQuery breakpoint ranges - * This is published as a provider and may be overridden from custom, application-specific ranges - * - */ -class BreakPointRegistry { - /** - * @param {?} _registry - */ - constructor(_registry) { - this._registry = _registry; - } - /** - * Accessor to raw list - * @return {?} - */ - get items() { - return [...this._registry]; - } - /** - * Accessor to sorted list used for registration with matchMedia API - * - * NOTE: During breakpoint registration, we want to register the overlaps FIRST - * so the non-overlaps will trigger the MatchMedia:BehaviorSubject last! - * And the largest, non-overlap, matching breakpoint should be the lastReplay value - * @return {?} - */ - get sortedItems() { - /** @type {?} */ - let overlaps = this._registry.filter(it => it.overlapping === true); - /** @type {?} */ - let nonOverlaps = this._registry.filter(it => it.overlapping !== true); - return [...overlaps, ...nonOverlaps]; - } - /** - * Search breakpoints by alias (e.g. gt-xs) - * @param {?} alias - * @return {?} - */ - findByAlias(alias) { - return this._registry.find(bp => bp.alias == alias) || null; - } - /** - * @param {?} query - * @return {?} - */ - findByQuery(query) { - return this._registry.find(bp => bp.mediaQuery == query) || null; - } - /** - * Get all the breakpoints whose ranges could overlapping `normal` ranges; - * e.g. gt-sm overlaps md, lg, and xl - * @return {?} - */ - get overlappings() { - return this._registry.filter(it => it.overlapping == true); - } - /** - * Get list of all registered (non-empty) breakpoint aliases - * @return {?} - */ - get aliases() { - return this._registry.map(it => it.alias); - } - /** - * Aliases are mapped to properties using suffixes - * e.g. 'gt-sm' for property 'layout' uses suffix 'GtSm' - * for property layoutGtSM. - * @return {?} - */ - get suffixes() { - return this._registry.map(it => !!it.suffix ? it.suffix : ''); - } -} -BreakPointRegistry.decorators = [ - { type: Injectable, args: [{ providedIn: 'root' },] }, -]; -/** @nocollapse */ -BreakPointRegistry.ctorParameters = () => [ - { type: Array, decorators: [{ type: Inject, args: [BREAKPOINTS,] }] } -]; -/** @nocollapse */ BreakPointRegistry.ngInjectableDef = defineInjectable({ factory: function BreakPointRegistry_Factory() { return new BreakPointRegistry(inject(BREAKPOINTS)); }, token: BreakPointRegistry, providedIn: "root" }); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * Class instances emitted [to observers] for each mql notification - */ -class MediaChange { - /** - * @param {?=} matches whether the mediaQuery is currently activated - * @param {?=} mediaQuery e.g. (min-width: 600px) and (max-width: 959px) - * @param {?=} mqAlias e.g. gt-sm, md, gt-lg - * @param {?=} suffix e.g. GtSM, Md, GtLg - */ - constructor(matches = false, mediaQuery = 'all', mqAlias = '', suffix = '') { - this.matches = matches; - this.mediaQuery = mediaQuery; - this.mqAlias = mqAlias; - this.suffix = suffix; - this.property = ''; - } - /** - * Create an exact copy of the MediaChange - * @return {?} - */ - clone() { - return new MediaChange(this.matches, this.mediaQuery, this.mqAlias, this.suffix); - } -} - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * MediaMonitor configures listeners to mediaQuery changes and publishes an Observable facade to - * convert mediaQuery change callbacks to subscriber notifications. These notifications will be - * performed within the ng Zone to trigger change detections and component updates. - * - * NOTE: both mediaQuery activations and de-activations are announced in notifications - */ -class MatchMedia { - /** - * @param {?} _zone - * @param {?} _platformId - * @param {?} _document - */ - constructor(_zone, _platformId, _document) { - this._zone = _zone; - this._platformId = _platformId; - this._document = _document; - this._registry = new Map(); - this._source = new BehaviorSubject(new MediaChange(true)); - this._observable$ = this._source.asObservable(); - } - /** - * For the specified mediaQuery? - * @param {?} mediaQuery - * @return {?} - */ - isActive(mediaQuery) { - /** @type {?} */ - const mql = this._registry.get(mediaQuery); - return !!mql ? mql.matches : false; - } - /** - * External observers can watch for all (or a specific) mql changes. - * Typically used by the MediaQueryAdaptor; optionally available to components - * who wish to use the MediaMonitor as mediaMonitor$ observable service. - * - * NOTE: if a mediaQuery is not specified, then ALL mediaQuery activations will - * be announced. - * @param {?=} mediaQuery - * @return {?} - */ - observe(mediaQuery) { - if (mediaQuery) { - this.registerQuery(mediaQuery); - } - return this._observable$.pipe(filter(change => (mediaQuery ? (change.mediaQuery === mediaQuery) : true))); - } - /** - * Based on the BreakPointRegistry provider, register internal listeners for each unique - * mediaQuery. Each listener emits specific MediaChange data to observers - * @param {?} mediaQuery - * @return {?} - */ - registerQuery(mediaQuery) { - /** @type {?} */ - const list = Array.isArray(mediaQuery) ? Array.from(new Set(mediaQuery)) : [mediaQuery]; - if (list.length > 0) { - buildQueryCss(list, this._document); - } - list.forEach(query => { - /** @type {?} */ - const onMQLEvent = (e) => { - this._zone.run(() => this._source.next(new MediaChange(e.matches, query))); - }; - /** @type {?} */ - let mql = this._registry.get(query); - if (!mql) { - if (query === 'print') { - // If we are listening for a print media query we need to add a `beforeprint` event listener to trigger the `mql` synchronously. - // Regular matchMedia events are not synchronous and do not have time to update the layout before the print dialog shows and takes a snapshot. - // Workaround for #869 - // This requires explicit use of `fxLayout.print` to racing between size based layouts. We don't know the size of prints - // before hand so you must use a single layout for printing. - window.addEventListener('beforeprint', () => { - onMQLEvent(/** @type {?} */ ({ - mediaQuery: query, - matches: true, - })); - }); - } - mql = this._buildMQL(query); - mql.addListener(onMQLEvent); - this._registry.set(query, mql); - } - if (mql.matches) { - onMQLEvent(/** @type {?} */ ((mql))); - } - }); - } - /** - * Call window.matchMedia() to build a MediaQueryList; which - * supports 0..n listeners for activation/deactivation - * @param {?} query - * @return {?} - */ - _buildMQL(query) { - return constructMql(query, isPlatformBrowser(this._platformId)); - } -} -MatchMedia.decorators = [ - { type: Injectable, args: [{ providedIn: 'root' },] }, -]; -/** @nocollapse */ -MatchMedia.ctorParameters = () => [ - { type: NgZone }, - { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }, - { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] } -]; -/** @nocollapse */ MatchMedia.ngInjectableDef = defineInjectable({ factory: function MatchMedia_Factory() { return new MatchMedia(inject(NgZone), inject(PLATFORM_ID), inject(DOCUMENT)); }, token: MatchMedia, providedIn: "root" }); -/** * - * Private global registry for all dynamically-created, injected style tags - * @see prepare(query) - @type {?} */ -const ALL_STYLES = {}; -/** - * For Webkit engines that only trigger the MediaQueryList Listener - * when there is at least one CSS selector for the respective media query. - * - * @param {?} mediaQueries - * @param {?} _document - * @return {?} - */ -function buildQueryCss(mediaQueries, _document) { - /** @type {?} */ - const list = mediaQueries.filter(it => !ALL_STYLES[it]); - if (list.length > 0) { - /** @type {?} */ - const query = list.join(', '); - try { - /** @type {?} */ - const styleEl = _document.createElement('style'); - styleEl.setAttribute('type', 'text/css'); - if (!(/** @type {?} */ (styleEl)).styleSheet) { - /** @type {?} */ - const cssText = ` -/* - @angular/flex-layout - workaround for possible browser quirk with mediaQuery listeners - see http://bit.ly/2sd4HMP -*/ -@media ${query} {.fx-query-test{ }} -`; - styleEl.appendChild(_document.createTextNode(cssText)); - } /** @type {?} */ - ((_document.head)).appendChild(styleEl); - // Store in private global registry - list.forEach(mq => ALL_STYLES[mq] = styleEl); - } - catch (e) { - console.error(e); - } - } -} -/** - * @param {?} query - * @param {?} isBrowser - * @return {?} - */ -function constructMql(query, isBrowser) { - /** @type {?} */ - const canListen = isBrowser && !!(/** @type {?} */ (window)).matchMedia('all').addListener; - return canListen ? (/** @type {?} */ (window)).matchMedia(query) : /** @type {?} */ (({ - matches: query === 'all' || query === '', - media: query, - addListener: () => { - }, - removeListener: () => { - } - })); -} - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * For the specified MediaChange, make sure it contains the breakpoint alias - * and suffix (if available). - * @param {?} dest - * @param {?} source - * @return {?} - */ -function mergeAlias(dest, source) { - return extendObject(dest, source ? { - mqAlias: source.alias, - suffix: source.suffix - } : {}); -} - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * Base class for MediaService and pseudo-token for - * @deprecated use MediaObserver instead - * \@deletion-target v7.0.0-beta.21 - * @abstract - */ -class ObservableMedia { -} -/** - * Class internalizes a MatchMedia service and exposes an Subscribable and Observable interface. - * This an Observable with that exposes a feature to subscribe to mediaQuery - * changes and a validator method (`isActive()`) to test if a mediaQuery (or alias) is - * currently active. - * - * !! Only mediaChange activations (not de-activations) are announced by the ObservableMedia - * - * This class uses the BreakPoint Registry to inject alias information into the raw MediaChange - * notification. For custom mediaQuery notifications, alias information will not be injected and - * those fields will be ''. - * - * !! This is not an actual Observable. It is a wrapper of an Observable used to publish additional - * methods like `isActive(). To access the Observable and use RxJS operators, use - * `.asObservable()` with syntax like media.asObservable().map(....). - * - * \@usage - * - * // RxJS - * import {filter} from 'rxjs/operators/filter'; - * import { ObservableMedia } from '\@angular/flex-layout'; - * - * \@Component({ ... }) - * export class AppComponent { - * status : string = ''; - * - * constructor( media:ObservableMedia ) { - * let onChange = (change:MediaChange) => { - * this.status = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : ''; - * }; - * - * // Subscribe directly or access observable to use filter/map operators - * // e.g. - * // media.subscribe(onChange); - * - * media.asObservable() - * .pipe( - * filter((change:MediaChange) => true) // silly noop filter - * ).subscribe(onChange); - * } - * } - * @deprecated use MediaObserver instead - * \@deletion-target v7.0.0-beta.21 - */ -class MediaService { - /** - * @param {?} breakpoints - * @param {?} mediaWatcher - */ - constructor(breakpoints, mediaWatcher) { - this.breakpoints = breakpoints; - this.mediaWatcher = mediaWatcher; - /** - * Should we announce gt- breakpoint activations ? - */ - this.filterOverlaps = true; - this._registerBreakPoints(); - this.observable$ = this._buildObservable(); - } - /** - * Test if specified query/alias is active. - * @param {?} alias - * @return {?} - */ - isActive(alias) { - return this.mediaWatcher.isActive(this._toMediaQuery(alias)); - } - /** - * Proxy to the Observable subscribe method - * @param {?=} observerOrNext - * @param {?=} error - * @param {?=} complete - * @return {?} - */ - subscribe(observerOrNext, error, complete) { - if (observerOrNext) { - if (typeof observerOrNext === 'object') { - return this.observable$.subscribe(observerOrNext.next, observerOrNext.error, observerOrNext.complete); - } - } - return this.observable$.subscribe(observerOrNext, error, complete); - } - /** - * Access to observable for use with operators like - * .filter(), .map(), etc. - * @return {?} - */ - asObservable() { - return this.observable$; - } - /** - * Register all the mediaQueries registered in the BreakPointRegistry - * This is needed so subscribers can be auto-notified of all standard, registered - * mediaQuery activations - * @return {?} - */ - _registerBreakPoints() { - /** @type {?} */ - const queries = this.breakpoints.sortedItems.map(bp => bp.mediaQuery); - this.mediaWatcher.registerQuery(queries); - } - /** - * Prepare internal observable - * - * NOTE: the raw MediaChange events [from MatchMedia] do not - * contain important alias information; as such this info - * must be injected into the MediaChange - * @return {?} - */ - _buildObservable() { - /** @type {?} */ - const excludeOverlaps = (change) => { - /** @type {?} */ - const bp = this.breakpoints.findByQuery(change.mediaQuery); - return !bp ? true : !(this.filterOverlaps && bp.overlapping); - }; - /** - * Only pass/announce activations (not de-activations) - * Inject associated (if any) alias information into the MediaChange event - * Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only - */ - return this.mediaWatcher.observe().pipe(filter(change => change.matches), filter(excludeOverlaps), map((change) => mergeAlias(change, this._findByQuery(change.mediaQuery)))); - } - /** - * Breakpoint locator by alias - * @param {?} alias - * @return {?} - */ - _findByAlias(alias) { - return this.breakpoints.findByAlias(alias); - } - /** - * Breakpoint locator by mediaQuery - * @param {?} query - * @return {?} - */ - _findByQuery(query) { - return this.breakpoints.findByQuery(query); - } - /** - * Find associated breakpoint (if any) - * @param {?} query - * @return {?} - */ - _toMediaQuery(query) { - /** @type {?} */ - const bp = this._findByAlias(query) || this._findByQuery(query); - return bp ? bp.mediaQuery : query; - } -} -MediaService.decorators = [ - { type: Injectable, args: [{ providedIn: 'root' },] }, -]; -/** @nocollapse */ -MediaService.ctorParameters = () => [ - { type: BreakPointRegistry }, - { type: MatchMedia } -]; -/** @nocollapse */ MediaService.ngInjectableDef = defineInjectable({ factory: function MediaService_Factory() { return new MediaService(inject(BreakPointRegistry), inject(MatchMedia)); }, token: MediaService, providedIn: "root" }); -/** * - * @deprecated - * \@deletion-target v7.0.0-beta.21 - @type {?} */ -const ObservableMediaProvider = { - // tslint:disable-line:variable-name - provide: ObservableMedia, - useClass: MediaService -}; - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** - * ***************************************************************** - * Define module for the MediaQuery API - * ***************************************************************** + * Token that is provided to tell whether the FlexLayoutServerModule + * has been included in the bundle + * + * NOTE: This can be manually provided to disable styles when using SSR + * @type {?} */ -class CoreModule { -} -CoreModule.decorators = [ - { type: NgModule, args: [{ - providers: [BROWSER_PROVIDER, ObservableMediaProvider] - },] }, -]; +const SERVER_TOKEN = new InjectionToken('FlexLayoutServerLoaded', { + providedIn: 'root', + factory: (/** + * @return {?} + */ + () => false) +}); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * Utility to emulate a CSS stylesheet - * - * This utility class stores all of the styles for a given HTML element - * as a readonly `stylesheet` map. + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -class StylesheetMap { - constructor() { - this.stylesheet = new Map(); - } - /** - * Add an individual style to an HTML element - * @param {?} element - * @param {?} style - * @param {?} value - * @return {?} - */ - addStyleToElement(element, style, value) { - /** @type {?} */ - const stylesheet = this.stylesheet.get(element); - if (stylesheet) { - stylesheet.set(style, value); - } - else { - this.stylesheet.set(element, new Map([[style, value]])); - } - } - /** - * Clear the virtual stylesheet - * @return {?} - */ - clearStyles() { - this.stylesheet.clear(); - } - /** - * Retrieve a given style for an HTML element - * @param {?} el - * @param {?} styleName +/** @type {?} */ +const BREAKPOINT = new InjectionToken('Flex Layout token, collect all breakpoints into one provider', { + providedIn: 'root', + factory: (/** * @return {?} */ - getStyleForElement(el, styleName) { - /** @type {?} */ - const styles = this.stylesheet.get(el); - /** @type {?} */ - let value = ''; - if (styles) { - /** @type {?} */ - const style = styles.get(styleName); - if (typeof style === 'number' || typeof style === 'string') { - value = style + ''; - } - } - return value; - } -} -StylesheetMap.decorators = [ - { type: Injectable, args: [{ providedIn: 'root' },] }, -]; -/** @nocollapse */ StylesheetMap.ngInjectableDef = defineInjectable({ factory: function StylesheetMap_Factory() { return new StylesheetMap(); }, token: StylesheetMap, providedIn: "root" }); + () => null) +}); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -/** * - * Token that is provided to tell whether the FlexLayoutServerModule - * has been included in the bundle - * - * NOTE: This can be manually provided to disable styles when using SSR - @type {?} */ -const SERVER_TOKEN = new InjectionToken('FlexLayoutServerLoaded', { - providedIn: 'root', - factory: () => false -}); - /** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * For the specified MediaChange, make sure it contains the breakpoint alias + * and suffix (if available). + * @param {?} dest + * @param {?} source + * @return {?} */ +function mergeAlias(dest, source) { + dest = dest ? dest.clone() : new MediaChange(); + if (source) { + dest.mqAlias = source.alias; + dest.mediaQuery = source.mediaQuery; + dest.suffix = (/** @type {?} */ (source.suffix)); + dest.priority = (/** @type {?} */ (source.priority)); + } + return dest; +} /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -/** * +/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license - @type {?} */ + * @type {?} + */ const INLINE = 'inline'; /** @type {?} */ const LAYOUT_VALUES = ['row', 'column', 'row-reverse', 'column-reverse']; @@ -971,7 +296,11 @@ function validateValue(value) { value = value ? value.toLowerCase() : ''; let [direction, wrap, inline] = value.split(' '); // First value must be the `flex-direction` - if (!LAYOUT_VALUES.find(x => x === direction)) { + if (!LAYOUT_VALUES.find((/** + * @param {?} x + * @return {?} + */ + x => x === direction))) { direction = LAYOUT_VALUES[0]; } if (wrap === INLINE) { @@ -1030,416 +359,170 @@ function buildCSS(direction, wrap = null, inline = false) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * @deprecated - * \@deletion-target v7.0.0-beta.21 - */ -class KeyOptions { - /** - * @param {?} baseKey - * @param {?} defaultValue - * @param {?} inputKeys - */ - constructor(baseKey, defaultValue, inputKeys) { - this.baseKey = baseKey; - this.defaultValue = defaultValue; - this.inputKeys = inputKeys; - } -} -/** - * ResponsiveActivation acts as a proxy between the MonitorMedia service (which emits mediaQuery - * changes) and the fx API directives. The MQA proxies mediaQuery change events and notifies the - * directive via the specified callback. - * - * - The MQA also determines which directive property should be used to determine the - * current change 'value'... BEFORE the original `onMediaQueryChanges()` method is called. - * - The `ngOnDestroy()` method is also head-hooked to enable auto-unsubscribe from the - * MediaQueryServices. - * - * NOTE: these interceptions enables the logic in the fx API directives to remain terse and clean. - * @deprecated - * \@deletion-target v7.0.0-beta.21 - */ -class ResponsiveActivation { - /** - * Constructor - * @param {?} _options - * @param {?} _mediaMonitor - * @param {?} _onMediaChanges - */ - constructor(_options, _mediaMonitor, _onMediaChanges) { - this._options = _options; - this._mediaMonitor = _mediaMonitor; - this._onMediaChanges = _onMediaChanges; - this._activatedInputKey = ''; - this._registryMap = this._buildRegistryMap(); - this._subscribers = this._configureChangeObservers(); - } - /** - * Get a readonly sorted list of the breakpoints corresponding to the directive properties - * defined in the HTML markup: the sorting is done from largest to smallest. The order is - * important when several media queries are 'registered' and from which, the browser uses the - * first matching media query. - * @return {?} - */ - get registryFromLargest() { - return [...this._registryMap].reverse(); - } - /** - * Determine which directive \@Input() property is currently active (for the viewport size): - * The key must be defined (in use) or fallback to the 'closest' overlapping property key - * that is defined; otherwise the default property key will be used. - * e.g. - * if `
` is used but the current activated mediaQuery alias - * key is `.md` then `.gt-sm` should be used instead - * @return {?} - */ - get activatedInputKey() { - return this._activatedInputKey || this._options.baseKey; - } - /** - * Get the currently activated \@Input value or the fallback default \@Input value - * @return {?} - */ - get activatedInput() { - /** @type {?} */ - const key = this.activatedInputKey; - return this.hasKeyValue(key) ? this._lookupKeyValue(key) : this._options.defaultValue; - } - /** - * Fast validator for presence of attribute on the host element - * @param {?} key - * @return {?} - */ - hasKeyValue(key) { - return this._options.inputKeys[key] !== undefined; - } - /** - * Remove interceptors, restore original functions, and forward the onDestroy() call - * @return {?} - */ - destroy() { - this._subscribers.forEach(link => link.unsubscribe()); - this._subscribers = []; - } - /** - * For each *defined* API property, register a callback to `_onMonitorEvents( )` - * Cache 1..n subscriptions for internal auto-unsubscribes when the the directive destructs - * @return {?} - */ - _configureChangeObservers() { - /** @type {?} */ - const subscriptions = []; - this._registryMap.forEach(bp => { - if (this._keyInUse(bp.key)) { - /** @type {?} */ - const buildChanges = (change) => { - change = change.clone(); - change.property = this._options.baseKey; - return change; - }; - subscriptions.push(this._mediaMonitor - .observe(bp.alias) - .pipe(map(buildChanges)) - .subscribe(change => { - this._onMonitorEvents(change); - })); - } - }); - return subscriptions; - } - /** - * Build mediaQuery key-hashmap; only for the directive properties that are actually defined/used - * in the HTML markup - * @return {?} - */ - _buildRegistryMap() { - return this._mediaMonitor.breakpoints - .map(bp => /** @type {?} */ (extendObject({}, bp, { - baseKey: this._options.baseKey, - // e.g. layout, hide, self-align, flex-wrap - key: this._options.baseKey + bp.suffix // e.g. layoutGtSm, layoutMd, layoutGtLg - }))) - .filter(bp => this._keyInUse(bp.key)); - } - /** - * Synchronizes change notifications with the current mq-activated \@Input and calculates the - * mq-activated input value or the default value - * @param {?} change - * @return {?} - */ - _onMonitorEvents(change) { - if (change.property === this._options.baseKey) { - change.value = this._calculateActivatedValue(change); - this._onMediaChanges(change); - } - } - /** - * Has the key been specified in the HTML markup and thus is intended - * to participate in activation processes. - * @param {?} key - * @return {?} - */ - _keyInUse(key) { - return this._lookupKeyValue(key) !== undefined; - } - /** - * Map input key associated with mediaQuery activation to closest defined input key - * then return the values associated with the targeted input property - * - * !! change events may arrive out-of-order (activate before deactivate) - * so make sure the deactivate is used ONLY when the keys match - * (since a different activate may be in use) - * @param {?} current - * @return {?} - */ - _calculateActivatedValue(current) { - /** @type {?} */ - const currentKey = this._options.baseKey + current.suffix; - /** @type {?} */ - let newKey = this._activatedInputKey; // e.g. newKey == hideGtSm - newKey = current.matches ? currentKey : ((newKey === currentKey) ? '' : newKey); - this._activatedInputKey = this._validateInputKey(newKey); - return this.activatedInput; - } - /** - * For the specified input property key, validate it is defined (used in the markup) - * If not see if a overlapping mediaQuery-related input key fallback has been defined - * - * NOTE: scans in the order defined by activeOverLaps (largest viewport ranges -> smallest ranges) - * @param {?} inputKey - * @return {?} - */ - _validateInputKey(inputKey) { - /** @type {?} */ - const isMissingKey = (key) => !this._keyInUse(key); - if (isMissingKey(inputKey)) { - this._mediaMonitor.activeOverlaps.some(bp => { - /** @type {?} */ - const key = this._options.baseKey + bp.suffix; - if (!isMissingKey(key)) { - inputKey = key; - return true; // exit .some() - } - return false; - }); - } - return inputKey; - } - /** - * Get the value (if any) for the directive instances \@Input property (aka key) - * @param {?} key - * @return {?} - */ - _lookupKeyValue(key) { - return this._options.inputKeys[key]; - } -} - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** - * Abstract base class for the Layout API styling directives. - * @deprecated - * \@deletion-target v7.0.0-beta.21 * @abstract */ -class BaseDirective { +class BaseDirective2 { /** - * @param {?} _mediaMonitor - * @param {?} _elementRef - * @param {?} _styler - * @param {?=} _styleBuilder + * @protected + * @param {?} elementRef + * @param {?} styleBuilder + * @param {?} styler + * @param {?} marshal */ - constructor(_mediaMonitor, _elementRef, _styler, _styleBuilder) { - this._mediaMonitor = _mediaMonitor; - this._elementRef = _elementRef; - this._styler = _styler; - this._styleBuilder = _styleBuilder; - /** - * Dictionary of input keys with associated values - */ - this._inputMap = {}; + constructor(elementRef, styleBuilder, styler, marshal) { + this.elementRef = elementRef; + this.styleBuilder = styleBuilder; + this.styler = styler; + this.marshal = marshal; + this.DIRECTIVE_KEY = ''; + this.inputs = []; /** - * Has the `ngOnInit()` method fired - * - * Used to allow *ngFor tasks to finish and support queries like - * getComputedStyle() during ngOnInit(). + * The most recently used styles for the builder */ - this._hasInitialized = false; + this.mru = {}; + this.destroySubject = new Subject(); /** * Cache map for style computation */ - this._styleCache = new Map(); + this.styleCache = new Map(); } /** - * Imperatively determine the current activated [input] value; - * if called before ngOnInit() this will return `undefined` + * Access to host element's parent DOM node + * @protected * @return {?} */ - get activatedValue() { - return this._mqActivation ? this._mqActivation.activatedInput : undefined; + get parentElement() { + return this.elementRef.nativeElement.parentElement; } /** - * Change the currently activated input value and force-update - * the injected CSS (by-passing change detection). - * - * NOTE: Only the currently activated input value will be modified; - * other input values will NOT be affected. - * @param {?} value + * Access to the HTMLElement for the directive + * @protected * @return {?} */ - set activatedValue(value) { - /** @type {?} */ - let key = 'baseKey'; - /** @type {?} */ - let previousVal; - if (this._mqActivation) { - key = this._mqActivation.activatedInputKey; - previousVal = this._inputMap[key]; - this._inputMap[key] = value; - } - /** @type {?} */ - const change = new SimpleChange(previousVal, value, false); - this.ngOnChanges(/** @type {?} */ ({ [key]: change })); + get nativeElement() { + return this.elementRef.nativeElement; } /** - * Does this directive have 1 or more responsive keys defined - * Note: we exclude the 'baseKey' key (which is NOT considered responsive) - * @param {?} baseKey + * Access to the activated value for the directive * @return {?} */ - hasResponsiveAPI(baseKey) { - /** @type {?} */ - const totalKeys = Object.keys(this._inputMap).length; - /** @type {?} */ - const baseValue = this._inputMap[baseKey]; - return (totalKeys - (!!baseValue ? 1 : 0)) > 0; + get activatedValue() { + return this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY); } /** - * Use post-component-initialization event to perform extra - * querying such as computed Display style + * @param {?} value * @return {?} */ - ngOnInit() { - this._hasInitialized = true; + set activatedValue(value) { + this.marshal.setValue(this.nativeElement, this.DIRECTIVE_KEY, value, this.marshal.activatedAlias); } /** - * @param {?} change + * For \@Input changes + * @param {?} changes * @return {?} */ - ngOnChanges(change) { - throw new Error(`BaseDirective::ngOnChanges should be overridden in subclass: ${change}`); + ngOnChanges(changes) { + Object.keys(changes).forEach((/** + * @param {?} key + * @return {?} + */ + key => { + if (this.inputs.indexOf(key) !== -1) { + /** @type {?} */ + const bp = key.split('.').slice(1).join('.'); + /** @type {?} */ + const val = changes[key].currentValue; + this.setValue(val, bp); + } + })); } /** * @return {?} */ ngOnDestroy() { - if (this._mqActivation) { - this._mqActivation.destroy(); - } - delete this._mediaMonitor; - } - /** - * Access to host element's parent DOM node - * @return {?} - */ - get parentElement() { - return this._elementRef.nativeElement.parentNode; + this.destroySubject.next(); + this.destroySubject.complete(); + this.marshal.releaseElement(this.nativeElement); } /** + * Register with central marshaller service + * @protected + * @param {?=} extraTriggers * @return {?} */ - get nativeElement() { - return this._elementRef.nativeElement; + init(extraTriggers = []) { + this.marshal.init(this.elementRef.nativeElement, this.DIRECTIVE_KEY, this.updateWithValue.bind(this), this.clearStyles.bind(this), extraTriggers); } /** * Add styles to the element using predefined style builder + * @protected * @param {?} input * @param {?=} parent * @return {?} */ addStyles(input, parent) { /** @type {?} */ - const builder = /** @type {?} */ ((this._styleBuilder)); + const builder = this.styleBuilder; /** @type {?} */ const useCache = builder.shouldCache; /** @type {?} */ - let genStyles = this._styleCache.get(input); + let genStyles = this.styleCache.get(input); if (!genStyles || !useCache) { genStyles = builder.buildStyles(input, parent); if (useCache) { - this._styleCache.set(input, genStyles); + this.styleCache.set(input, genStyles); } } - this._applyStyleToElement(genStyles); + this.mru = Object.assign({}, genStyles); + this.applyStyleToElement(genStyles); builder.sideEffect(input, genStyles, parent); } /** - * Access the current value (if any) of the \@Input property - * @param {?} key - * @return {?} - */ - _queryInput(key) { - return this._inputMap[key]; - } - /** - * Was the directive's default selector used ? - * If not, use the fallback value! - * @param {?} key - * @param {?} fallbackVal - * @return {?} - */ - _getDefaultVal(key, fallbackVal) { - /** @type {?} */ - const val = this._queryInput(key); - /** @type {?} */ - const hasDefaultVal = (val !== undefined && val !== null); - return (hasDefaultVal && val !== '') ? val : fallbackVal; - } - /** - * Quick accessor to the current HTMLElement's `display` style - * Note: this allows us to preserve the original style - * and optional restore it when the mediaQueries deactivate - * @param {?=} source + * Remove generated styles from an element using predefined style builder + * @protected * @return {?} */ - _getDisplayStyle(source = this.nativeElement) { - /** @type {?} */ - const query = 'display'; - return this._styler.lookupStyle(source, query); + clearStyles() { + Object.keys(this.mru).forEach((/** + * @param {?} k + * @return {?} + */ + k => { + this.mru[k] = ''; + })); + this.applyStyleToElement(this.mru); + this.mru = {}; } /** - * Quick accessor to raw attribute value on the target DOM element - * @param {?} attribute - * @param {?=} source + * Force trigger style updates on DOM element + * @protected * @return {?} */ - _getAttributeValue(attribute, source = this.nativeElement) { - return this._styler.lookupAttributeValue(source, attribute); + triggerUpdate() { + this.marshal.triggerUpdate(this.nativeElement, this.DIRECTIVE_KEY); } /** * Determine the DOM element's Flexbox flow (flex-direction). * * Check inline style first then check computed (stylesheet) style. * And optionally add the flow value to element's inline style. + * @protected * @param {?} target * @param {?=} addIfMissing * @return {?} */ - _getFlexFlowDirection(target, addIfMissing = false) { + getFlexFlowDirection(target, addIfMissing = false) { if (target) { - let [value, hasInlineValue] = this._styler.getFlowDirection(target); + const [value, hasInlineValue] = this.styler.getFlowDirection(target); if (!hasInlineValue && addIfMissing) { /** @type {?} */ const style = buildLayoutCSS(value); /** @type {?} */ const elements = [target]; - this._styler.applyStyleToElements(style, elements); + this.styler.applyStyleToElements(style, elements); } return value.trim(); } @@ -1447,434 +530,711 @@ class BaseDirective { } /** * Applies styles given via string pair or object map to the directive element + * @protected * @param {?} style * @param {?=} value * @param {?=} element * @return {?} */ - _applyStyleToElement(style, value, element = this.nativeElement) { - this._styler.applyStyleToElement(element, style, value); - } - /** - * Applies styles given via string pair or object map to the directive's element - * @param {?} style - * @param {?} elements - * @return {?} - */ - _applyStyleToElements(style, elements) { - this._styler.applyStyleToElements(style, elements); - } - /** - * Save the property value; which may be a complex object. - * Complex objects support property chains - * @param {?=} key - * @param {?=} source - * @return {?} - */ - _cacheInput(key, source) { - if (typeof source === 'object') { - for (let prop in source) { - this._inputMap[prop] = source[prop]; - } - } - else { - if (!!key) { - this._inputMap[key] = source; - } - } - } - /** - * Build a ResponsiveActivation object used to manage subscriptions to mediaChange notifications - * and intelligent lookup of the directive's property value that corresponds to that mediaQuery - * (or closest match). - * @param {?} key - * @param {?} defaultValue - * @param {?} onMediaQueryChange - * @return {?} - */ - _listenForMediaQueryChanges(key, defaultValue, onMediaQueryChange) { - // tslint:disable-line:max-line-length - if (!this._mqActivation) { - /** @type {?} */ - let keyOptions = new KeyOptions(key, defaultValue, this._inputMap); - this._mqActivation = new ResponsiveActivation(keyOptions, this._mediaMonitor, (change) => onMediaQueryChange(change)); - } - return this._mqActivation; + applyStyleToElement(style, value, element = this.nativeElement) { + this.styler.applyStyleToElement(element, style, value); } /** - * Special accessor to query for all child 'element' nodes regardless of type, class, etc + * @protected + * @param {?} val + * @param {?} bp * @return {?} */ - get childrenNodes() { - /** @type {?} */ - const obj = this.nativeElement.children; - /** @type {?} */ - const buffer = []; - // iterate backwards ensuring that length is an UInt32 - for (let i = obj.length; i--;) { - buffer[i] = obj[i]; - } - return buffer; + setValue(val, bp) { + this.marshal.setValue(this.nativeElement, this.DIRECTIVE_KEY, val, bp); } /** + * @protected + * @param {?} input * @return {?} */ - get hasInitialized() { - return this._hasInitialized; + updateWithValue(input) { + this.addStyles(input); } } /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ + /** - * Adapter to the BaseDirective abstract class so it can be used via composition. - * @see BaseDirective - * @deprecated - * \@deletion-target v7.0.0-beta.21 + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -class BaseDirectiveAdapter extends BaseDirective { - /** - * BaseDirectiveAdapter constructor - * @param {?} _baseKey - * @param {?} _mediaMonitor - * @param {?} _elementRef - * @param {?} _styler - */ - constructor(_baseKey, // non-responsive @Input property name - // non-responsive @Input property name - _mediaMonitor, _elementRef, _styler) { - super(_mediaMonitor, _elementRef, _styler); - this._baseKey = _baseKey; - this._mediaMonitor = _mediaMonitor; - this._elementRef = _elementRef; - this._styler = _styler; - } - /** - * Accessor to determine which \@Input property is "active" - * e.g. which property value will be used. - * @return {?} - */ - get activeKey() { - /** @type {?} */ - let mqa = this._mqActivation; - /** @type {?} */ - let key = mqa ? mqa.activatedInputKey : this._baseKey; - // Note: ClassDirective::SimpleChanges uses 'klazz' instead of 'class' as a key - return (key === 'class') ? 'klazz' : key; - } - /** - * Hash map of all \@Input keys/values defined/used - * @return {?} - */ - get inputMap() { - return this._inputMap; - } - /** - * @see BaseDirective._mqActivation - * @return {?} - */ - get mqActivation() { - return /** @type {?} */ ((this._mqActivation)); +/** + * NOTE: Smaller ranges have HIGHER priority since the match is more specific + * @type {?} + */ +const DEFAULT_BREAKPOINTS = [ + { + alias: 'xs', + mediaQuery: 'screen and (min-width: 0px) and (max-width: 599.9px)', + priority: 1000, + }, + { + alias: 'sm', + mediaQuery: 'screen and (min-width: 600px) and (max-width: 959.9px)', + priority: 900, + }, + { + alias: 'md', + mediaQuery: 'screen and (min-width: 960px) and (max-width: 1279.9px)', + priority: 800, + }, + { + alias: 'lg', + mediaQuery: 'screen and (min-width: 1280px) and (max-width: 1919.9px)', + priority: 700, + }, + { + alias: 'xl', + mediaQuery: 'screen and (min-width: 1920px) and (max-width: 4999.9px)', + priority: 600, + }, + { + alias: 'lt-sm', + overlapping: true, + mediaQuery: 'screen and (max-width: 599.9px)', + priority: 950, + }, + { + alias: 'lt-md', + overlapping: true, + mediaQuery: 'screen and (max-width: 959.9px)', + priority: 850, + }, + { + alias: 'lt-lg', + overlapping: true, + mediaQuery: 'screen and (max-width: 1279.9px)', + priority: 750, + }, + { + alias: 'lt-xl', + overlapping: true, + priority: 650, + mediaQuery: 'screen and (max-width: 1919.9px)', + }, + { + alias: 'gt-xs', + overlapping: true, + mediaQuery: 'screen and (min-width: 600px)', + priority: -950, + }, + { + alias: 'gt-sm', + overlapping: true, + mediaQuery: 'screen and (min-width: 960px)', + priority: -850, + }, { + alias: 'gt-md', + overlapping: true, + mediaQuery: 'screen and (min-width: 1280px)', + priority: -750, + }, + { + alias: 'gt-lg', + overlapping: true, + mediaQuery: 'screen and (min-width: 1920px)', + priority: -650, } - /** - * Does this directive have 1 or more responsive keys defined - * Note: we exclude the 'baseKey' key (which is NOT considered responsive) - * @return {?} - */ - hasResponsiveAPI() { - return super.hasResponsiveAPI(this._baseKey); +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/* tslint:disable */ +/** @type {?} */ +const HANDSET_PORTRAIT = '(orientation: portrait) and (max-width: 599.9px)'; +/** @type {?} */ +const HANDSET_LANDSCAPE = '(orientation: landscape) and (max-width: 959.9px)'; +/** @type {?} */ +const TABLET_PORTRAIT = '(orientation: portrait) and (min-width: 600px) and (max-width: 839.9px)'; +/** @type {?} */ +const TABLET_LANDSCAPE = '(orientation: landscape) and (min-width: 960px) and (max-width: 1279.9px)'; +/** @type {?} */ +const WEB_PORTRAIT = '(orientation: portrait) and (min-width: 840px)'; +/** @type {?} */ +const WEB_LANDSCAPE = '(orientation: landscape) and (min-width: 1280px)'; +/** @type {?} */ +const ScreenTypes = { + 'HANDSET': `${HANDSET_PORTRAIT}, ${HANDSET_LANDSCAPE}`, + 'TABLET': `${TABLET_PORTRAIT} , ${TABLET_LANDSCAPE}`, + 'WEB': `${WEB_PORTRAIT}, ${WEB_LANDSCAPE} `, + 'HANDSET_PORTRAIT': `${HANDSET_PORTRAIT}`, + 'TABLET_PORTRAIT': `${TABLET_PORTRAIT} `, + 'WEB_PORTRAIT': `${WEB_PORTRAIT}`, + 'HANDSET_LANDSCAPE': `${HANDSET_LANDSCAPE}]`, + 'TABLET_LANDSCAPE': `${TABLET_LANDSCAPE}`, + 'WEB_LANDSCAPE': `${WEB_LANDSCAPE}` +}; +/** + * Extended Breakpoints for handset/tablets with landscape or portrait orientations + * @type {?} + */ +const ORIENTATION_BREAKPOINTS = [ + { 'alias': 'handset', priority: 2000, 'mediaQuery': ScreenTypes.HANDSET }, + { 'alias': 'handset.landscape', priority: 2000, 'mediaQuery': ScreenTypes.HANDSET_LANDSCAPE }, + { 'alias': 'handset.portrait', priority: 2000, 'mediaQuery': ScreenTypes.HANDSET_PORTRAIT }, + { 'alias': 'tablet', priority: 2100, 'mediaQuery': ScreenTypes.TABLET }, + { 'alias': 'tablet.landscape', priority: 2100, 'mediaQuery': ScreenTypes.TABLET }, + { 'alias': 'tablet.portrait', priority: 2100, 'mediaQuery': ScreenTypes.TABLET_PORTRAIT }, + { 'alias': 'web', priority: 2200, 'mediaQuery': ScreenTypes.WEB, overlapping: true }, + { 'alias': 'web.landscape', priority: 2200, 'mediaQuery': ScreenTypes.WEB_LANDSCAPE, overlapping: true }, + { 'alias': 'web.portrait', priority: 2200, 'mediaQuery': ScreenTypes.WEB_PORTRAIT, overlapping: true } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * Extends an object with the *enumerable* and *own* properties of one or more source objects, + * similar to Object.assign. + * + * @param {?} dest The object which will have properties copied to it. + * @param {...?} sources The source objects from which properties will be copied. + * @return {?} + */ +function extendObject(dest, ...sources) { + if (dest == null) { + throw TypeError('Cannot convert undefined or null to object'); } - /** - * @see BaseDirective._queryInput - * @param {?} key - * @return {?} - */ - queryInput(key) { - return key ? this._queryInput(key) : undefined; + for (let source of sources) { + if (source != null) { + for (let key in source) { + if (source.hasOwnProperty(key)) { + dest[key] = source[key]; + } + } + } } - /** - * Save the property value. - * @param {?=} key - * @param {?=} source - * @param {?=} cacheRaw + return dest; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +const ALIAS_DELIMITERS = /(\.|-|_)/g; +/** + * @param {?} part + * @return {?} + */ +function firstUpperCase(part) { + /** @type {?} */ + let first = part.length > 0 ? part.charAt(0) : ''; + /** @type {?} */ + let remainder = (part.length > 1) ? part.slice(1) : ''; + return first.toUpperCase() + remainder; +} +/** + * Converts snake-case to SnakeCase. + * @param {?} name Text to UpperCamelCase + * @return {?} + */ +function camelCase(name) { + return name + .replace(ALIAS_DELIMITERS, '|') + .split('|') + .map(firstUpperCase) + .join(''); +} +/** + * For each breakpoint, ensure that a Suffix is defined; + * fallback to UpperCamelCase the unique Alias value + * @param {?} list + * @return {?} + */ +function validateSuffixes(list) { + list.forEach((/** + * @param {?} bp * @return {?} */ - cacheInput(key, source, cacheRaw = false) { - if (cacheRaw) { - this._cacheInputRaw(key, source); - } - else if (Array.isArray(source)) { - this._cacheInputArray(key, source); - } - else if (typeof source === 'object') { - this._cacheInputObject(key, source); - } - else if (typeof source === 'string') { - this._cacheInputString(key, source); - } - else { - throw new Error(`Invalid class value '${key}' provided. Did you want to cache the raw value?`); + (bp) => { + if (!bp.suffix) { + bp.suffix = camelCase(bp.alias); // create Suffix value based on alias + bp.overlapping = !!bp.overlapping; // ensure default value } - } - /** - * @see BaseDirective._listenForMediaQueryChanges - * @param {?} key - * @param {?} defaultValue - * @param {?} onMediaQueryChange + })); + return list; +} +/** + * Merge a custom breakpoint list with the default list based on unique alias values + * - Items are added if the alias is not in the default list + * - Items are merged with the custom override if the alias exists in the default list + * @param {?} defaults + * @param {?=} custom + * @return {?} + */ +function mergeByAlias(defaults, custom = []) { + /** @type {?} */ + const dict = {}; + defaults.forEach((/** + * @param {?} bp * @return {?} */ - listenForMediaQueryChanges(key, defaultValue, onMediaQueryChange) { - return this._listenForMediaQueryChanges(key, defaultValue, onMediaQueryChange); - } - /** - * No implicit transforms of the source. - * Required when caching values expected later for KeyValueDiffers - * @param {?=} key - * @param {?=} source + bp => { + dict[bp.alias] = bp; + })); + // Merge custom breakpoints + custom.forEach((/** + * @param {?} bp * @return {?} */ - _cacheInputRaw(key, source) { - if (key) { - this._inputMap[key] = source; + (bp) => { + if (dict[bp.alias]) { + extendObject(dict[bp.alias], bp); } - } - /** - * Save the property value for Array values. - * @param {?=} key - * @param {?=} source + else { + dict[bp.alias] = bp; + } + })); + return validateSuffixes(Object.keys(dict).map((/** + * @param {?} k * @return {?} */ - _cacheInputArray(key = '', source) { - this._inputMap[key] = source ? source.join(' ') : ''; - } - /** - * Save the property value for key/value pair values. - * @param {?=} key - * @param {?=} source + k => dict[k]))); +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Injection token unique to the flex-layout library. + * Use this token when build a custom provider (see below). + * @type {?} + */ +const BREAKPOINTS = new InjectionToken('Token (@angular/flex-layout) Breakpoints', { + providedIn: 'root', + factory: (/** * @return {?} */ - _cacheInputObject(key = '', source) { + () => { /** @type {?} */ - let classes = []; - if (source) { - for (let prop in source) { - if (!!source[prop]) { - classes.push(prop); - } - } - } - this._inputMap[key] = classes.join(' '); - } - /** - * Save the property value for string values. - * @param {?=} key - * @param {?=} source - * @return {?} - */ - _cacheInputString(key = '', source) { - this._inputMap[key] = source; - } + const breakpoints = inject(BREAKPOINT); + /** @type {?} */ + const layoutConfig = inject(LAYOUT_CONFIG); + /** @type {?} */ + const bpFlattenArray = [].concat.apply([], (breakpoints || []) + .map((/** + * @param {?} v + * @return {?} + */ + (v) => Array.isArray(v) ? v : [v]))); + /** @type {?} */ + const builtIns = (layoutConfig.disableDefaultBps ? [] : DEFAULT_BREAKPOINTS) + .concat(layoutConfig.addOrientationBps ? ORIENTATION_BREAKPOINTS : []); + return mergeByAlias(builtIns, bpFlattenArray); + }) +}); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * HOF to sort the breakpoints by descending priority + * @template T + * @param {?} a + * @param {?} b + * @return {?} + */ +function sortDescendingPriority(a, b) { + /** @type {?} */ + const priorityA = a ? a.priority || 0 : 0; + /** @type {?} */ + const priorityB = b ? b.priority || 0 : 0; + return priorityB - priorityA; +} +/** + * HOF to sort the breakpoints by ascending priority + * @template T + * @param {?} a + * @param {?} b + * @return {?} + */ +function sortAscendingPriority(a, b) { + /** @type {?} */ + const pA = a.priority || 0; + /** @type {?} */ + const pB = b.priority || 0; + return pA - pB; } /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** - * @abstract + * Registry of 1..n MediaQuery breakpoint ranges + * This is published as a provider and may be overridden from custom, application-specific ranges + * */ -class BaseDirective2 { +class BreakPointRegistry { /** - * @param {?} elementRef - * @param {?} styleBuilder - * @param {?} styler - * @param {?} marshal + * @param {?} list */ - constructor(elementRef, styleBuilder, styler, marshal) { - this.elementRef = elementRef; - this.styleBuilder = styleBuilder; - this.styler = styler; - this.marshal = marshal; - this.DIRECTIVE_KEY = ''; - this.inputs = []; - /** - * The most recently used styles for the builder - */ - this.mru = {}; - this.destroySubject = new Subject(); + constructor(list) { /** - * Cache map for style computation + * Memoized BreakPoint Lookups */ - this.styleCache = new Map(); + this.findByMap = new Map(); + this.items = [...list].sort(sortAscendingPriority); } /** - * Access to host element's parent DOM node + * Search breakpoints by alias (e.g. gt-xs) + * @param {?} alias * @return {?} */ - get parentElement() { - return this.elementRef.nativeElement.parentElement; + findByAlias(alias) { + return !alias ? null : this.findWithPredicate(alias, (/** + * @param {?} bp + * @return {?} + */ + (bp) => bp.alias == alias)); } /** - * Access to the HTMLElement for the directive + * @param {?} query * @return {?} */ - get nativeElement() { - return this.elementRef.nativeElement; + findByQuery(query) { + return this.findWithPredicate(query, (/** + * @param {?} bp + * @return {?} + */ + (bp) => bp.mediaQuery == query)); } /** - * Access to the activated value for the directive + * Get all the breakpoints whose ranges could overlapping `normal` ranges; + * e.g. gt-sm overlaps md, lg, and xl * @return {?} */ - get activatedValue() { - return this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY); + get overlappings() { + return this.items.filter((/** + * @param {?} it + * @return {?} + */ + it => it.overlapping == true)); } /** - * @param {?} value + * Get list of all registered (non-empty) breakpoint aliases * @return {?} */ - set activatedValue(value) { - this.marshal.setValue(this.nativeElement, this.DIRECTIVE_KEY, value, this.marshal.activatedBreakpoint); + get aliases() { + return this.items.map((/** + * @param {?} it + * @return {?} + */ + it => it.alias)); } /** - * For \@Input changes - * @param {?} changes + * Aliases are mapped to properties using suffixes + * e.g. 'gt-sm' for property 'layout' uses suffix 'GtSm' + * for property layoutGtSM. * @return {?} */ - ngOnChanges(changes) { - Object.keys(changes).forEach(key => { - if (this.inputs.indexOf(key) !== -1) { - /** @type {?} */ - const bp = key.split('.').slice(1).join('.'); - /** @type {?} */ - const val = changes[key].currentValue; - this.setValue(val, bp); - } - }); + get suffixes() { + return this.items.map((/** + * @param {?} it + * @return {?} + */ + it => !!it.suffix ? it.suffix : '')); } /** + * Memoized lookup using custom predicate function + * @private + * @param {?} key + * @param {?} searchFn * @return {?} */ - ngOnDestroy() { - this.destroySubject.next(); - this.destroySubject.complete(); - this.marshal.releaseElement(this.nativeElement); + findWithPredicate(key, searchFn) { + /** @type {?} */ + let response = this.findByMap.get(key); + if (!response) { + response = this.items.find(searchFn) || null; + this.findByMap.set(key, response); + } + return response || null; } +} +BreakPointRegistry.decorators = [ + { type: Injectable, args: [{ providedIn: 'root' },] }, +]; +/** @nocollapse */ +BreakPointRegistry.ctorParameters = () => [ + { type: Array, decorators: [{ type: Inject, args: [BREAKPOINTS,] }] } +]; +/** @nocollapse */ BreakPointRegistry.ngInjectableDef = ɵɵdefineInjectable({ factory: function BreakPointRegistry_Factory() { return new BreakPointRegistry(ɵɵinject(BREAKPOINTS)); }, token: BreakPointRegistry, providedIn: "root" }); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * MediaMonitor configures listeners to mediaQuery changes and publishes an Observable facade to + * convert mediaQuery change callbacks to subscriber notifications. These notifications will be + * performed within the ng Zone to trigger change detections and component updates. + * + * NOTE: both mediaQuery activations and de-activations are announced in notifications + */ +class MatchMedia { /** - * Register with central marshaller service - * @param {?=} extraTriggers - * @return {?} + * @param {?} _zone + * @param {?} _platformId + * @param {?} _document */ - init(extraTriggers = []) { - this.marshal.init(this.elementRef.nativeElement, this.DIRECTIVE_KEY, this.updateWithValue.bind(this), this.clearStyles.bind(this), extraTriggers); + constructor(_zone, _platformId, _document) { + this._zone = _zone; + this._platformId = _platformId; + this._document = _document; + /** + * Initialize source with 'all' so all non-responsive APIs trigger style updates + */ + this.source = new BehaviorSubject(new MediaChange(true)); + this.registry = new Map(); + this._observable$ = this.source.asObservable(); } /** - * Add styles to the element using predefined style builder - * @param {?} input - * @param {?=} parent + * Publish list of all current activations * @return {?} */ - addStyles(input, parent) { - /** @type {?} */ - const builder = this.styleBuilder; + get activations() { /** @type {?} */ - const useCache = builder.shouldCache; - /** @type {?} */ - let genStyles = this.styleCache.get(input); - if (!genStyles || !useCache) { - genStyles = builder.buildStyles(input, parent); - if (useCache) { - this.styleCache.set(input, genStyles); + const results = []; + this.registry.forEach((/** + * @param {?} mql + * @param {?} key + * @return {?} + */ + (mql, key) => { + if (mql.matches) { + results.push(key); } - } - this.mru = Object.assign({}, genStyles); - this.applyStyleToElement(genStyles); - builder.sideEffect(input, genStyles, parent); - } - /** - * Remove generated styles from an element using predefined style builder - * @return {?} - */ - clearStyles() { - Object.keys(this.mru).forEach(k => { - this.mru[k] = ''; - }); - this.applyStyleToElement(this.mru); - this.mru = {}; + })); + return results; } /** - * Force trigger style updates on DOM element + * For the specified mediaQuery? + * @param {?} mediaQuery * @return {?} */ - triggerUpdate() { + isActive(mediaQuery) { /** @type {?} */ - const val = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY); - this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, val); + const mql = this.registry.get(mediaQuery); + return !!mql ? mql.matches : false; } /** - * Determine the DOM element's Flexbox flow (flex-direction). + * External observers can watch for all (or a specific) mql changes. + * Typically used by the MediaQueryAdaptor; optionally available to components + * who wish to use the MediaMonitor as mediaMonitor$ observable service. * - * Check inline style first then check computed (stylesheet) style. - * And optionally add the flow value to element's inline style. - * @param {?} target - * @param {?=} addIfMissing - * @return {?} - */ - getFlexFlowDirection(target, addIfMissing = false) { - if (target) { - const [value, hasInlineValue] = this.styler.getFlowDirection(target); - if (!hasInlineValue && addIfMissing) { - /** @type {?} */ - const style = buildLayoutCSS(value); - /** @type {?} */ - const elements = [target]; - this.styler.applyStyleToElements(style, elements); - } - return value.trim(); - } - return 'row'; - } - /** - * Applies styles given via string pair or object map to the directive element - * @param {?} style - * @param {?=} value - * @param {?=} element + * Use deferred registration process to register breakpoints only on subscription + * This logic also enforces logic to register all mediaQueries BEFORE notify + * subscribers of notifications. + * @param {?=} mqList + * @param {?=} filterOthers * @return {?} */ - applyStyleToElement(style, value, element = this.nativeElement) { - this.styler.applyStyleToElement(element, style, value); + observe(mqList, filterOthers = false) { + if (mqList && mqList.length) { + /** @type {?} */ + const matchMedia$ = this._observable$.pipe(filter((/** + * @param {?} change + * @return {?} + */ + (change) => { + return !filterOthers ? true : (mqList.indexOf(change.mediaQuery) > -1); + }))); + /** @type {?} */ + const registration$ = new Observable((/** + * @param {?} observer + * @return {?} + */ + (observer) => { + // tslint:disable-line:max-line-length + /** @type {?} */ + const matches = this.registerQuery(mqList); + if (matches.length) { + /** @type {?} */ + const lastChange = (/** @type {?} */ (matches.pop())); + matches.forEach((/** + * @param {?} e + * @return {?} + */ + (e) => { + observer.next(e); + })); + this.source.next(lastChange); // last match is cached + } + observer.complete(); + })); + return merge(registration$, matchMedia$); + } + return this._observable$; } /** - * @param {?} val - * @param {?} bp + * Based on the BreakPointRegistry provider, register internal listeners for each unique + * mediaQuery. Each listener emits specific MediaChange data to observers + * @param {?} mediaQuery * @return {?} */ - setValue(val, bp) { - this.marshal.setValue(this.nativeElement, this.DIRECTIVE_KEY, val, bp); + registerQuery(mediaQuery) { + /** @type {?} */ + const list = Array.isArray(mediaQuery) ? mediaQuery : [mediaQuery]; + /** @type {?} */ + const matches = []; + buildQueryCss(list, this._document); + list.forEach((/** + * @param {?} query + * @return {?} + */ + (query) => { + /** @type {?} */ + const onMQLEvent = (/** + * @param {?} e + * @return {?} + */ + (e) => { + this._zone.run((/** + * @return {?} + */ + () => this.source.next(new MediaChange(e.matches, query)))); + }); + /** @type {?} */ + let mql = this.registry.get(query); + if (!mql) { + mql = this.buildMQL(query); + mql.addListener(onMQLEvent); + this.registry.set(query, mql); + } + if (mql.matches) { + matches.push(new MediaChange(true, query)); + } + })); + return matches; } /** - * @param {?} input + * Call window.matchMedia() to build a MediaQueryList; which + * supports 0..n listeners for activation/deactivation + * @protected + * @param {?} query * @return {?} */ - updateWithValue(input) { - this.addStyles(input); + buildMQL(query) { + return constructMql(query, isPlatformBrowser(this._platformId)); } } - +MatchMedia.decorators = [ + { type: Injectable, args: [{ providedIn: 'root' },] }, +]; +/** @nocollapse */ +MatchMedia.ctorParameters = () => [ + { type: NgZone }, + { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }, + { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] } +]; +/** @nocollapse */ MatchMedia.ngInjectableDef = ɵɵdefineInjectable({ factory: function MatchMedia_Factory() { return new MatchMedia(ɵɵinject(NgZone), ɵɵinject(PLATFORM_ID), ɵɵinject(DOCUMENT)); }, token: MatchMedia, providedIn: "root" }); /** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * Private global registry for all dynamically-created, injected style tags + * @see prepare(query) + * @type {?} */ - +const ALL_STYLES = {}; /** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * For Webkit engines that only trigger the MediaQueryList Listener + * when there is at least one CSS selector for the respective media query. + * + * @param {?} mediaQueries + * @param {?} _document + * @return {?} + */ +function buildQueryCss(mediaQueries, _document) { + /** @type {?} */ + const list = mediaQueries.filter((/** + * @param {?} it + * @return {?} + */ + it => !ALL_STYLES[it])); + if (list.length > 0) { + /** @type {?} */ + const query = list.join(', '); + try { + /** @type {?} */ + const styleEl = _document.createElement('style'); + styleEl.setAttribute('type', 'text/css'); + if (!((/** @type {?} */ (styleEl))).styleSheet) { + /** @type {?} */ + const cssText = ` +/* + @angular/flex-layout - workaround for possible browser quirk with mediaQuery listeners + see http://bit.ly/2sd4HMP +*/ +@media ${query} {.fx-query-test{ }} +`; + styleEl.appendChild(_document.createTextNode(cssText)); + } + (/** @type {?} */ (_document.head)).appendChild(styleEl); + // Store in private global registry + list.forEach((/** + * @param {?} mq + * @return {?} + */ + mq => ALL_STYLES[mq] = styleEl)); + } + catch (e) { + console.error(e); + } + } +} +/** + * @param {?} query + * @param {?} isBrowser + * @return {?} */ +function constructMql(query, isBrowser) { + /** @type {?} */ + const canListen = isBrowser && !!((/** @type {?} */ (window))).matchMedia('all').addListener; + return canListen ? ((/** @type {?} */ (window))).matchMedia(query) : (/** @type {?} */ ((/** @type {?} */ ({ + matches: query === 'all' || query === '', + media: query, + addListener: (/** + * @return {?} + */ + () => { + }), + removeListener: (/** + * @return {?} + */ + () => { + }) + })))); +} /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * MockMatchMedia mocks calls to the Window API matchMedia with a build of a simulated @@ -1882,6 +1242,7 @@ class BaseDirective2 { * range and to clearAll mediaQuery listeners. */ class MockMatchMedia extends MatchMedia { + // Allow fallback to overlapping mediaQueries /** * @param {?} _zone * @param {?} _platformId @@ -1891,27 +1252,23 @@ class MockMatchMedia extends MatchMedia { constructor(_zone, _platformId, _document, _breakpoints) { super(_zone, _platformId, _document); this._breakpoints = _breakpoints; - /** - * Special flag used to test BreakPoint registrations with MatchMedia - */ - this.autoRegisterQueries = true; - /** - * Allow fallback to overlapping mediaQueries to determine - * activatedInput(s). - */ - this.useOverlaps = false; - this._registry = new Map(); - this._actives = []; + this.autoRegisterQueries = true; // Used for testing BreakPoint registrations + // Used for testing BreakPoint registrations + this.useOverlaps = false; // Allow fallback to overlapping mediaQueries } /** * Easy method to clear all listeners for all mediaQueries * @return {?} */ clearAll() { - this._registry.forEach((mql) => { - mql.destroy(); - }); - this._registry.clear(); + this.registry.forEach((/** + * @param {?} mql + * @return {?} + */ + (mql) => { + ((/** @type {?} */ (mql))).destroy(); + })); + this.registry.clear(); this.useOverlaps = false; } /** @@ -1941,8 +1298,9 @@ class MockMatchMedia extends MatchMedia { return (bp && bp.mediaQuery) || queryOrAlias; } /** - * Manually activate any overlapping mediaQueries to simulate + * Manually onMediaChange any overlapping mediaQueries to simulate * similar functionality in the window.matchMedia() + * @private * @param {?} mediaQuery * @param {?} useOverlaps * @return {?} @@ -1968,7 +1326,7 @@ class MockMatchMedia extends MatchMedia { this._activateByAlias('lt-xl, lt-lg, lt-md, lt-sm'); break; } - // Simulate activate of overlapping gt- mediaQuery ranges + // Simulate activation of overlapping gt- mediaQuery ranges switch (alias) { case 'xl': this._activateByAlias('gt-lg, gt-md, gt-sm, gt-xs'); @@ -1989,72 +1347,85 @@ class MockMatchMedia extends MatchMedia { } /** * + * @private * @param {?} aliases * @return {?} */ _activateByAlias(aliases) { /** @type {?} */ - const activate = (alias) => { + const activate = (/** + * @param {?} alias + * @return {?} + */ + (alias) => { /** @type {?} */ const bp = this._breakpoints.findByAlias(alias); this._activateByQuery(bp ? bp.mediaQuery : alias); - }; - aliases.split(',').forEach(alias => activate(alias.trim())); + }); + aliases.split(',').forEach((/** + * @param {?} alias + * @return {?} + */ + alias => activate(alias.trim()))); } /** * + * @private * @param {?} mediaQuery * @return {?} */ _activateByQuery(mediaQuery) { /** @type {?} */ - const mql = this._registry.get(mediaQuery); - /** @type {?} */ - const alreadyAdded = this._actives - .reduce((found, it) => (found || (mql ? (it.media === mql.media) : false)), false); - if (mql && !alreadyAdded) { - this._actives.push(mql.activate()); + const mql = (/** @type {?} */ (this.registry.get(mediaQuery))); + if (mql && !this.isActive(mediaQuery)) { + this.registry.set(mediaQuery, mql.activate()); } return this.hasActivated; } /** - * Deactivate all current Mock MQLs - * @return {?} + * Deactivate all current MQLs and reset the buffer + * @private + * @template THIS + * @this {THIS} + * @return {THIS} */ _deactivateAll() { - if (this._actives.length) { - // Deactivate all current MQLs and reset the buffer - for (const it of this._actives) { - it.deactivate(); - } - this._actives = []; - } - return this; + (/** @type {?} */ (this)).registry.forEach((/** + * @param {?} it + * @return {?} + */ + (it) => { + ((/** @type {?} */ (it))).deactivate(); + })); + return (/** @type {?} */ (this)); } /** * Insure the mediaQuery is registered with MatchMedia + * @private * @param {?} mediaQuery * @return {?} */ _registerMediaQuery(mediaQuery) { - if (!this._registry.has(mediaQuery) && this.autoRegisterQueries) { + if (!this.registry.has(mediaQuery) && this.autoRegisterQueries) { this.registerQuery(mediaQuery); } } /** * Call window.matchMedia() to build a MediaQueryList; which * supports 0..n listeners for activation/deactivation + * @protected * @param {?} query * @return {?} */ - _buildMQL(query) { + buildMQL(query) { return new MockMediaQueryList(query); } /** + * @protected * @return {?} */ get hasActivated() { - return this._actives.length > 0; + return this.activations.length > 0; } } MockMatchMedia.decorators = [ @@ -2110,11 +1481,15 @@ class MockMediaQueryList { activate() { if (!this._isActive) { this._isActive = true; - this._listeners.forEach((callback) => { + this._listeners.forEach((/** + * @param {?} callback + * @return {?} + */ + (callback) => { /** @type {?} */ - const cb = /** @type {?} */ ((callback)); + const cb = (/** @type {?} */ (callback)); cb.call(null, this); - }); + })); } return this; } @@ -2125,11 +1500,15 @@ class MockMediaQueryList { deactivate() { if (this._isActive) { this._isActive = false; - this._listeners.forEach((callback) => { + this._listeners.forEach((/** + * @param {?} callback + * @return {?} + */ + (callback) => { /** @type {?} */ - const cb = /** @type {?} */ ((callback)); + const cb = (/** @type {?} */ (callback)); cb.call(null, this); - }); + })); } return this; } @@ -2144,7 +1523,7 @@ class MockMediaQueryList { } if (this._isActive) { /** @type {?} */ - const cb = /** @type {?} */ ((listener)); + const cb = (/** @type {?} */ (listener)); cb.call(null, this); } } @@ -2179,9 +1558,10 @@ class MockMediaQueryList { return false; } } -/** * +/** * Pre-configured provider for MockMatchMedia - @type {?} */ + * @type {?} + */ const MockMatchMediaProvider = { // tslint:disable-line:variable-name provide: MatchMedia, @@ -2190,447 +1570,913 @@ const MockMatchMediaProvider = { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ + /** - * Special server-only class to simulate a MediaQueryList and - * - supports manual activation to simulate mediaQuery matching - * - manages listeners + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -class ServerMediaQueryList { +/** @type {?} */ +const PRINT = 'print'; +/** @type {?} */ +const BREAKPOINT_PRINT = { + alias: PRINT, + mediaQuery: PRINT, + priority: 1000 +}; +/** + * PrintHook - Use to intercept print MediaQuery activations and force + * layouts to render with the specified print alias/breakpoint + * + * Used in MediaMarshaller and MediaObserver + */ +class PrintHook { /** - * @param {?} _mediaQuery + * @param {?} breakpoints + * @param {?} layoutConfig + * @param {?} _platformId */ - constructor(_mediaQuery) { - this._mediaQuery = _mediaQuery; - this._isActive = false; - this._listeners = []; - this.onchange = null; + constructor(breakpoints, layoutConfig, _platformId) { + this.breakpoints = breakpoints; + this.layoutConfig = layoutConfig; + this._platformId = _platformId; + // registeredBeforeAfterPrintHooks tracks if we registered the `beforeprint` + // and `afterprint` event listeners. + this.registeredBeforeAfterPrintHooks = false; + // isPrintingBeforeAfterEvent is used to track if we are printing from within + // a `beforeprint` event handler. This prevents the typicall `stopPrinting` + // form `interceptEvents` so that printing is not stopped while the dialog + // is still open. This is an extension of the `isPrinting` property on + // browsers which support `beforeprint` and `afterprint` events. + this.isPrintingBeforeAfterEvent = false; + /** + * Is this service currently in Print-mode ? + */ + this.isPrinting = false; + this.queue = new PrintQueue(); + this.deactivations = []; } /** + * Add 'print' mediaQuery: to listen for matchMedia activations + * @param {?} queries * @return {?} */ - get matches() { - return this._isActive; + withPrintQuery(queries) { + return [...queries, PRINT]; } /** + * Is the MediaChange event for any 'print' \@media + * @param {?} e * @return {?} */ - get media() { - return this._mediaQuery; + isPrintEvent(e) { + return e.mediaQuery.startsWith(PRINT); } /** - * Destroy the current list by deactivating the - * listeners and clearing the internal list + * What is the desired mqAlias to use while printing? * @return {?} */ - destroy() { - this.deactivate(); - this._listeners = []; + get printAlias() { + return this.layoutConfig.printWithBreakpoints || []; } /** - * Notify all listeners that 'matches === TRUE' + * Lookup breakpoints associated with print aliases. * @return {?} */ - activate() { - if (!this._isActive) { - this._isActive = true; - this._listeners.forEach((callback) => { - /** @type {?} */ - const cb = /** @type {?} */ ((callback)); - cb.call(null, this); - }); - } - return this; + get printBreakPoints() { + return (/** @type {?} */ (this.printAlias + .map((/** + * @param {?} alias + * @return {?} + */ + alias => this.breakpoints.findByAlias(alias))) + .filter((/** + * @param {?} bp + * @return {?} + */ + bp => bp !== null)))); } /** - * Notify all listeners that 'matches === false' + * Lookup breakpoint associated with mediaQuery + * @param {?} __0 * @return {?} */ - deactivate() { - if (this._isActive) { - this._isActive = false; - this._listeners.forEach((callback) => { - /** @type {?} */ - const cb = /** @type {?} */ ((callback)); - cb.call(null, this); - }); - } - return this; + getEventBreakpoints({ mediaQuery }) { + /** @type {?} */ + const bp = this.breakpoints.findByQuery(mediaQuery); + /** @type {?} */ + const list = bp ? [...this.printBreakPoints, bp] : this.printBreakPoints; + return list.sort(sortDescendingPriority); } /** - * Add a listener to our internal list to activate later - * @param {?} listener + * Update event with printAlias mediaQuery information + * @param {?} event * @return {?} */ - addListener(listener) { - if (this._listeners.indexOf(listener) === -1) { - this._listeners.push(listener); + updateEvent(event) { + /** @type {?} */ + let bp = this.breakpoints.findByQuery(event.mediaQuery); + if (this.isPrintEvent(event)) { + // Reset from 'print' to first (highest priority) print breakpoint + bp = this.getEventBreakpoints(event)[0]; + event.mediaQuery = bp ? bp.mediaQuery : ''; } - if (this._isActive) { - /** @type {?} */ - const cb = /** @type {?} */ ((listener)); - cb.call(null, this); + return mergeAlias(event, bp); + } + // registerBeforeAfterPrintHooks registers a `beforeprint` event hook so we can + // trigger print styles synchronously and apply proper layout styles. + // It is a noop if the hooks have already been registered or the platform is + // not a browser(fallsback to mql print media queries). + /** + * @private + * @param {?} target + * @return {?} + */ + registerBeforeAfterPrintHooks(target) { + if (!isPlatformBrowser(this._platformId) || this.registeredBeforeAfterPrintHooks) { + return; } + this.registeredBeforeAfterPrintHooks = true; + // Could we have teardown logic to remove if there are no print listeners being used? + ((/** @type {?} */ (window))).addEventListener('beforeprint', (/** + * @return {?} + */ + () => { + // If we aren't already printing, start printing and update the styles as + // if there was a regular print `MediaChange`(from matchMedia). + if (!this.isPrinting) { + this.isPrintingBeforeAfterEvent = true; + this.startPrinting(target, this.getEventBreakpoints(new MediaChange(true, PRINT))); + target.updateStyles(); + } + })); + ((/** @type {?} */ (window))).addEventListener('afterprint', (/** + * @return {?} + */ + () => { + // If we aren't already printing, start printing and update the styles as + // if there was a regular print `MediaChange`(from matchMedia). + this.isPrintingBeforeAfterEvent = false; + if (this.isPrinting) { + this.stopPrinting(target); + target.updateStyles(); + } + })); } /** - * Don't need to remove listeners in the server environment - * @param {?} _ + * Prepare RxJs filter operator with partial application + * @param {?} target + * @return {?} pipeable filter predicate + */ + interceptEvents(target) { + this.registerBeforeAfterPrintHooks(target); + return (/** + * @param {?} event + * @return {?} + */ + (event) => { + if (this.isPrintEvent(event)) { + if (event.matches && !this.isPrinting) { + this.startPrinting(target, this.getEventBreakpoints(event)); + target.updateStyles(); + } + else if (!event.matches && this.isPrinting && !this.isPrintingBeforeAfterEvent) { + this.stopPrinting(target); + target.updateStyles(); + } + } + else { + this.collectActivations(event); + } + }); + } + /** + * Stop mediaChange event propagation in event streams * @return {?} */ - removeListener(_) { + blockPropagation() { + return (/** + * @param {?} event + * @return {?} + */ + (event) => { + return !(this.isPrinting || this.isPrintEvent(event)); + }); } /** - * @param {?} _ - * @param {?} __ - * @param {?=} ___ + * Save current activateBreakpoints (for later restore) + * and substitute only the printAlias breakpoint + * @protected + * @param {?} target + * @param {?} bpList * @return {?} */ - addEventListener(_, __, ___) { + startPrinting(target, bpList) { + this.isPrinting = true; + target.activatedBreakpoints = this.queue.addPrintBreakpoints(bpList); } /** - * @param {?} _ - * @param {?} __ - * @param {?=} ___ + * For any print de-activations, reset the entire print queue + * @protected + * @param {?} target * @return {?} */ - removeEventListener(_, __, ___) { + stopPrinting(target) { + target.activatedBreakpoints = this.deactivations; + this.deactivations = []; + this.queue.clear(); + this.isPrinting = false; } /** - * @param {?} _ + * To restore pre-Print Activations, we must capture the proper + * list of breakpoint activations BEFORE print starts. OnBeforePrint() + * is supported; so 'print' mediaQuery activations are used as a fallback + * in browsers without `beforeprint` support. + * + * > But activated breakpoints are deactivated BEFORE 'print' activation. + * + * Let's capture all de-activations using the following logic: + * + * When not printing: + * - clear cache when activating non-print breakpoint + * - update cache (and sort) when deactivating + * + * When printing: + * - sort and save when starting print + * - restore as activatedTargets and clear when stop printing + * @param {?} event * @return {?} */ - dispatchEvent(_) { - return false; + collectActivations(event) { + if (!this.isPrinting || this.isPrintingBeforeAfterEvent) { + if (!event.matches) { + /** @type {?} */ + const bp = this.breakpoints.findByQuery(event.mediaQuery); + if (bp) { // Deactivating a breakpoint + this.deactivations.push(bp); + this.deactivations.sort(sortDescendingPriority); + } + } + else if (!this.isPrintingBeforeAfterEvent) { + // Only clear deactivations if we aren't printing from a `beforeprint` event. + // Otherwise this will clear before `stopPrinting()` is called to restore + // the pre-Print Activations. + this.deactivations = []; + } + } } } +PrintHook.decorators = [ + { type: Injectable, args: [{ providedIn: 'root' },] }, +]; +/** @nocollapse */ +PrintHook.ctorParameters = () => [ + { type: BreakPointRegistry }, + { type: undefined, decorators: [{ type: Inject, args: [LAYOUT_CONFIG,] }] }, + { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] } +]; +/** @nocollapse */ PrintHook.ngInjectableDef = ɵɵdefineInjectable({ factory: function PrintHook_Factory() { return new PrintHook(ɵɵinject(BreakPointRegistry), ɵɵinject(LAYOUT_CONFIG), ɵɵinject(PLATFORM_ID)); }, token: PrintHook, providedIn: "root" }); +// ************************************************************************ +// Internal Utility class 'PrintQueue' +// ************************************************************************ /** - * Special server-only implementation of MatchMedia that uses the above - * ServerMediaQueryList as its internal representation - * - * Also contains methods to activate and deactivate breakpoints + * Utility class to manage print breakpoints + activatedBreakpoints + * with correct sorting WHILE printing */ -class ServerMatchMedia extends MatchMedia { - /** - * @param {?} _zone - * @param {?} _platformId - * @param {?} _document - */ - constructor(_zone, _platformId, _document) { - super(_zone, _platformId, _document); - this._zone = _zone; - this._platformId = _platformId; - this._document = _document; - this._registry = new Map(); +class PrintQueue { + constructor() { + /** + * Sorted queue with prioritized print breakpoints + */ + this.printBreakpoints = []; } /** - * Activate the specified breakpoint if we're on the server, no-op otherwise - * @param {?} bp + * @param {?} bpList * @return {?} */ - activateBreakpoint(bp) { - /** @type {?} */ - const lookupBreakpoint = this._registry.get(bp.mediaQuery); - if (lookupBreakpoint) { - lookupBreakpoint.activate(); - } + addPrintBreakpoints(bpList) { + bpList.push(BREAKPOINT_PRINT); + bpList.sort(sortDescendingPriority); + bpList.forEach((/** + * @param {?} bp + * @return {?} + */ + bp => this.addBreakpoint(bp))); + return this.printBreakpoints; } /** - * Deactivate the specified breakpoint if we're on the server, no-op otherwise + * Add Print breakpoint to queue * @param {?} bp * @return {?} */ - deactivateBreakpoint(bp) { - /** @type {?} */ - const lookupBreakpoint = this._registry.get(bp.mediaQuery); - if (lookupBreakpoint) { - lookupBreakpoint.deactivate(); + addBreakpoint(bp) { + if (!!bp) { + /** @type {?} */ + const bpInList = this.printBreakpoints.find((/** + * @param {?} it + * @return {?} + */ + it => it.mediaQuery === bp.mediaQuery)); + if (bpInList === undefined) { + // If this is a `printAlias` breakpoint, then append. If a true 'print' breakpoint, + // register as highest priority in the queue + this.printBreakpoints = isPrintBreakPoint(bp) ? [bp, ...this.printBreakpoints] + : [...this.printBreakpoints, bp]; + } } } - /** - * Call window.matchMedia() to build a MediaQueryList; which - * supports 0..n listeners for activation/deactivation - * @param {?} query + /** + * Restore original activated breakpoints and clear internal caches * @return {?} */ - _buildMQL(query) { - return new ServerMediaQueryList(query); + clear() { + this.printBreakpoints = []; } } -ServerMatchMedia.decorators = [ - { type: Injectable }, -]; -/** @nocollapse */ -ServerMatchMedia.ctorParameters = () => [ - { type: NgZone }, - { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }, - { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] } -]; +// ************************************************************************ +// Internal Utility methods +// ************************************************************************ +/** + * Only support intercept queueing if the Breakpoint is a print \@media query + * @param {?} bp + * @return {?} + */ +function isPrintBreakPoint(bp) { + return bp ? bp.mediaQuery.startsWith(PRINT) : false; +} /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * Wraps the provided value in an array, unless the provided value is an array. + * @template T + * @param {?} value + * @return {?} */ +function coerceArray(value) { + return Array.isArray(value) ? value : [value]; +} /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** - * MediaMonitor uses the MatchMedia service to observe mediaQuery changes (both activations and - * deactivations). These changes are are published as MediaChange notifications. + * MediaObserver enables applications to listen for 1..n mediaQuery activations and to determine + * if a mediaQuery is currently activated. + * + * Since a breakpoint change will first deactivate 1...n mediaQueries and then possibly activate + * 1..n mediaQueries, the MediaObserver will debounce notifications and report ALL *activations* + * in 1 event notification. The reported activations will be sorted in descending priority order. + * + * This class uses the BreakPoint Registry to inject alias information into the raw MediaChange + * notification. For custom mediaQuery notifications, alias information will not be injected and + * those fields will be ''. + * + * Note: Developers should note that only mediaChange activations (not de-activations) + * are announced by the MediaObserver. + * + * \@usage + * + * // RxJS + * import { filter } from 'rxjs/operators'; + * import { MediaObserver } from '\@angular/flex-layout'; + * + * \@Component({ ... }) + * export class AppComponent { + * status: string = ''; + * + * constructor(mediaObserver: MediaObserver) { + * const media$ = mediaObserver.asObservable().pipe( + * filter((changes: MediaChange[]) => true) // silly noop filter + * ); * - * Note: all notifications will be performed within the - * ng Zone to trigger change detections and component updates. + * media$.subscribe((changes: MediaChange[]) => { + * let status = ''; + * changes.forEach( change => { + * status += `'${change.mqAlias}' = (${change.mediaQuery})
` ; + * }); + * this.status = status; + * }); * - * It is the MediaMonitor that: - * - auto registers all known breakpoints - * - injects alias information into each raw MediaChange event - * - provides accessor to the currently active BreakPoint - * - publish list of overlapping BreakPoint(s); used by ResponsiveActivation - * @deprecated - * \@deletion-target v7.0.0-beta.21 + * } + * } */ -class MediaMonitor { +class MediaObserver { /** - * @param {?} _breakpoints - * @param {?} _matchMedia + * @param {?} breakpoints + * @param {?} matchMedia + * @param {?} hook */ - constructor(_breakpoints, _matchMedia) { - this._breakpoints = _breakpoints; - this._matchMedia = _matchMedia; - this._registerBreakpoints(); + constructor(breakpoints, matchMedia, hook) { + this.breakpoints = breakpoints; + this.matchMedia = matchMedia; + this.hook = hook; + /** + * Filter MediaChange notifications for overlapping breakpoints + */ + this.filterOverlaps = false; + this.destroyed$ = new Subject(); + this._media$ = this.watchActivations(); + this.media$ = this._media$.pipe(filter((/** + * @param {?} changes + * @return {?} + */ + (changes) => changes.length > 0)), map((/** + * @param {?} changes + * @return {?} + */ + (changes) => changes[0]))); } /** - * Read-only accessor to the list of breakpoints configured in the BreakPointRegistry provider + * Completes the active subject, signalling to all complete for all + * MediaObserver subscribers * @return {?} */ - get breakpoints() { - return [...this._breakpoints.items]; + ngOnDestroy() { + this.destroyed$.next(); + this.destroyed$.complete(); } + // ************************************************ + // Public Methods + // ************************************************ /** + * Observe changes to current activation 'list' * @return {?} */ - get activeOverlaps() { - return this._breakpoints.overlappings - .reverse() - .filter(bp => this._matchMedia.isActive(bp.mediaQuery)); + asObservable() { + return this._media$; } /** - * @return {?} + * Allow programmatic query to determine if one or more media query/alias match + * the current viewport size. + * @param {?} value One or more media queries (or aliases) to check. + * @return {?} Whether any of the media queries match. */ - get active() { + isActive(value) { /** @type {?} */ - const items = this.breakpoints.reverse(); - /** @type {?} */ - const first = items.find(bp => bp.alias !== '' && this._matchMedia.isActive(bp.mediaQuery)); - return first || null; + const aliases = splitQueries(coerceArray(value)); + return aliases.some((/** + * @param {?} alias + * @return {?} + */ + alias => { + /** @type {?} */ + const query = toMediaQuery(alias, this.breakpoints); + return this.matchMedia.isActive(query); + })); } + // ************************************************ + // Internal Methods + // ************************************************ /** - * For the specified mediaQuery alias, is the mediaQuery range active? - * @param {?} alias + * Register all the mediaQueries registered in the BreakPointRegistry + * This is needed so subscribers can be auto-notified of all standard, registered + * mediaQuery activations + * @private * @return {?} */ - isActive(alias) { + watchActivations() { /** @type {?} */ - const bp = this._breakpoints.findByAlias(alias) || this._breakpoints.findByQuery(alias); - return this._matchMedia.isActive(bp ? bp.mediaQuery : alias); + const queries = this.breakpoints.items.map((/** + * @param {?} bp + * @return {?} + */ + bp => bp.mediaQuery)); + return this.buildObservable(queries); } /** - * External observers can watch for all (or a specific) mql changes. - * If specific breakpoint is observed, only return *activated* events - * otherwise return all events for BOTH activated + deactivated changes. - * @param {?=} alias + * Only pass/announce activations (not de-activations) + * + * Since multiple-mediaQueries can be activation in a cycle, + * gather all current activations into a single list of changes to observers + * + * Inject associated (if any) alias information into the MediaChange event + * - Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only + * - Exclude print activations that do not have an associated mediaQuery + * + * NOTE: the raw MediaChange events [from MatchMedia] do not + * contain important alias information; as such this info + * must be injected into the MediaChange + * @private + * @param {?} mqList * @return {?} */ - observe(alias = '') { - /** @type {?} */ - const bp = this._breakpoints.findByAlias(alias) || this._breakpoints.findByQuery(alias); + buildObservable(mqList) { /** @type {?} */ - const hasAlias = (change) => (bp ? change.mqAlias !== '' : true); + const hasChanges = (/** + * @param {?} changes + * @return {?} + */ + (changes) => { + /** @type {?} */ + const isValidQuery = (/** + * @param {?} change + * @return {?} + */ + (change) => (change.mediaQuery.length > 0)); + return (changes.filter(isValidQuery).length > 0); + }); /** @type {?} */ - const media$ = this._matchMedia.observe(bp ? bp.mediaQuery : alias); - return media$.pipe(map(change => mergeAlias(change, bp)), filter(hasAlias)); + const excludeOverlaps = (/** + * @param {?} changes + * @return {?} + */ + (changes) => { + return !this.filterOverlaps ? changes : changes.filter((/** + * @param {?} change + * @return {?} + */ + change => { + /** @type {?} */ + const bp = this.breakpoints.findByQuery(change.mediaQuery); + return !bp ? true : !bp.overlapping; + })); + }); + /** + */ + return this.matchMedia + .observe(this.hook.withPrintQuery(mqList)) + .pipe(filter((/** + * @param {?} change + * @return {?} + */ + (change) => change.matches)), debounceTime(0, asapScheduler), switchMap((/** + * @param {?} _ + * @return {?} + */ + _ => of(this.findAllActivations()))), map(excludeOverlaps), filter(hasChanges), takeUntil(this.destroyed$)); } /** - * Immediate calls to matchMedia() to establish listeners - * and prepare for immediate subscription notifications + * Find all current activations and prepare single list of activations + * sorted by descending priority. + * @private * @return {?} */ - _registerBreakpoints() { + findAllActivations() { /** @type {?} */ - const queries = this._breakpoints.sortedItems.map(bp => bp.mediaQuery); - this._matchMedia.registerQuery(queries); + const mergeMQAlias = (/** + * @param {?} change + * @return {?} + */ + (change) => { + /** @type {?} */ + let bp = this.breakpoints.findByQuery(change.mediaQuery); + return mergeAlias(change, bp); + }); + /** @type {?} */ + const replaceWithPrintAlias = (/** + * @param {?} change + * @return {?} + */ + (change) => { + return this.hook.isPrintEvent(change) ? this.hook.updateEvent(change) : change; + }); + return this.matchMedia + .activations + .map((/** + * @param {?} query + * @return {?} + */ + query => new MediaChange(true, query))) + .map(replaceWithPrintAlias) + .map(mergeMQAlias) + .sort(sortDescendingPriority); } } -MediaMonitor.decorators = [ +MediaObserver.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; /** @nocollapse */ -MediaMonitor.ctorParameters = () => [ +MediaObserver.ctorParameters = () => [ { type: BreakPointRegistry }, - { type: MatchMedia } + { type: MatchMedia }, + { type: PrintHook } ]; -/** @nocollapse */ MediaMonitor.ngInjectableDef = defineInjectable({ factory: function MediaMonitor_Factory() { return new MediaMonitor(inject(BreakPointRegistry), inject(MatchMedia)); }, token: MediaMonitor, providedIn: "root" }); - +/** @nocollapse */ MediaObserver.ngInjectableDef = ɵɵdefineInjectable({ factory: function MediaObserver_Factory() { return new MediaObserver(ɵɵinject(BreakPointRegistry), ɵɵinject(MatchMedia), ɵɵinject(PrintHook)); }, token: MediaObserver, providedIn: "root" }); /** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * Find associated breakpoint (if any) + * @param {?} query + * @param {?} locator + * @return {?} + */ +function toMediaQuery(query, locator) { + /** @type {?} */ + const bp = locator.findByAlias(query) || locator.findByQuery(query); + return bp ? bp.mediaQuery : query; +} +/** + * Split each query string into separate query strings if two queries are provided as comma + * separated. + * @param {?} queries + * @return {?} */ +function splitQueries(queries) { + return queries.map((/** + * @param {?} query + * @return {?} + */ + (query) => query.split(','))) + .reduce((/** + * @param {?} a1 + * @param {?} a2 + * @return {?} + */ + (a1, a2) => a1.concat(a2))) + .map((/** + * @param {?} query + * @return {?} + */ + query => query.trim())); +} /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** - * Class internalizes a MatchMedia service and exposes an Observable interface. - * This exposes an Observable with a feature to subscribe to mediaQuery - * changes and a validator method (`isActive()`) to test if a mediaQuery (or alias) is - * currently active. - * - * !! Only mediaChange activations (not de-activations) are announced by the MediaObserver - * - * This class uses the BreakPoint Registry to inject alias information into the raw MediaChange - * notification. For custom mediaQuery notifications, alias information will not be injected and - * those fields will be ''. - * - * !! This is not an actual Observable. It is a wrapper of an Observable used to publish additional - * methods like `isActive(). To access the Observable and use RxJS operators, use - * `.media$` with syntax like mediaObserver.media$.map(....). - * - * \@usage - * - * // RxJS - * import { filter } from 'rxjs/operators'; - * import { MediaObserver } from '\@angular/flex-layout'; - * - * \@Component({ ... }) - * export class AppComponent { - * status: string = ''; - * - * constructor(mediaObserver: MediaObserver) { - * const onChange = (change: MediaChange) => { - * this.status = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : ''; - * }; - * - * // Subscribe directly or access observable to use filter/map operators - * // e.g. mediaObserver.media$.subscribe(onChange); - * - * mediaObserver.media$() - * .pipe( - * filter((change: MediaChange) => true) // silly noop filter - * ).subscribe(onChange); - * } - * } + * Class */ -class MediaObserver { +class MediaTrigger { /** * @param {?} breakpoints - * @param {?} mediaWatcher + * @param {?} matchMedia + * @param {?} layoutConfig + * @param {?} _platformId + * @param {?} _document */ - constructor(breakpoints, mediaWatcher) { + constructor(breakpoints, matchMedia, layoutConfig, _platformId, _document) { this.breakpoints = breakpoints; - this.mediaWatcher = mediaWatcher; - /** - * Whether to announce gt- breakpoint activations + this.matchMedia = matchMedia; + this.layoutConfig = layoutConfig; + this._platformId = _platformId; + this._document = _document; + this.hasCachedRegistryMatches = false; + this.originalActivations = []; + this.originalRegistry = new Map(); + } + /** + * Manually activate range of breakpoints + * @param {?} list array of mediaQuery or alias strings + * @return {?} + */ + activate(list) { + list = list.map((/** + * @param {?} it + * @return {?} */ - this.filterOverlaps = true; - this._registerBreakPoints(); - this.media$ = this._buildObservable(); + it => it.trim())); // trim queries + this.saveActivations(); + this.deactivateAll(); + this.setActivations(list); + this.prepareAutoRestore(); } /** - * Test if specified query/alias is active. - * @param {?} alias + * Restore original, 'real' breakpoints and emit events + * to trigger stream notification * @return {?} */ - isActive(alias) { - return this.mediaWatcher.isActive(this._toMediaQuery(alias)); + restore() { + if (this.hasCachedRegistryMatches) { + /** @type {?} */ + const extractQuery = (/** + * @param {?} change + * @return {?} + */ + (change) => change.mediaQuery); + /** @type {?} */ + const list = this.originalActivations.map(extractQuery); + try { + this.deactivateAll(); + this.restoreRegistryMatches(); + this.setActivations(list); + } + finally { + this.originalActivations = []; + if (this.resizeSubscription) { + this.resizeSubscription.unsubscribe(); + } + } + } } + // ************************************************ + // Internal Methods + // ************************************************ /** - * Register all the mediaQueries registered in the BreakPointRegistry - * This is needed so subscribers can be auto-notified of all standard, registered - * mediaQuery activations + * Whenever window resizes, immediately auto-restore original + * activations (if we are simulating activations) + * @private * @return {?} */ - _registerBreakPoints() { + prepareAutoRestore() { + /** @type {?} */ + const isBrowser = isPlatformBrowser(this._platformId) && this._document; /** @type {?} */ - const queries = this.breakpoints.sortedItems.map(bp => bp.mediaQuery); - this.mediaWatcher.registerQuery(queries); + const enableAutoRestore = isBrowser && this.layoutConfig.mediaTriggerAutoRestore; + if (enableAutoRestore) { + /** @type {?} */ + const resize$ = fromEvent(window, 'resize').pipe(take(1)); + this.resizeSubscription = resize$.subscribe(this.restore.bind(this)); + } } /** - * Prepare internal observable + * Notify all matchMedia subscribers of de-activations * - * NOTE: the raw MediaChange events [from MatchMedia] do not - * contain important alias information; as such this info - * must be injected into the MediaChange + * Note: we must force 'matches' updates for + * future matchMedia::activation lookups + * @private * @return {?} */ - _buildObservable() { + deactivateAll() { /** @type {?} */ - const excludeOverlaps = (change) => { + const list = this.currentActivations; + this.forceRegistryMatches(list, false); + this.simulateMediaChanges(list, false); + } + /** + * Cache current activations as sorted, prioritized list of MediaChanges + * @private + * @return {?} + */ + saveActivations() { + if (!this.hasCachedRegistryMatches) { /** @type {?} */ - const bp = this.breakpoints.findByQuery(change.mediaQuery); - return !bp ? true : !(this.filterOverlaps && bp.overlapping); - }; - /** - * Only pass/announce activations (not de-activations) - * Inject associated (if any) alias information into the MediaChange event - * Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only + const toMediaChange = (/** + * @param {?} query + * @return {?} + */ + (query) => new MediaChange(true, query)); + /** @type {?} */ + const mergeMQAlias = (/** + * @param {?} change + * @return {?} */ - return this.mediaWatcher.observe() - .pipe(filter(change => change.matches), filter(excludeOverlaps), map((change) => mergeAlias(change, this._findByQuery(change.mediaQuery)))); + (change) => { + /** @type {?} */ + const bp = this.breakpoints.findByQuery(change.mediaQuery); + return mergeAlias(change, bp); + }); + this.originalActivations = this.currentActivations + .map(toMediaChange) + .map(mergeMQAlias) + .sort(sortDescendingPriority); + this.cacheRegistryMatches(); + } } /** - * Breakpoint locator by alias - * @param {?} alias + * Force set manual activations for specified mediaQuery list + * @private + * @param {?} list * @return {?} */ - _findByAlias(alias) { - return this.breakpoints.findByAlias(alias); + setActivations(list) { + if (!!this.originalRegistry) { + this.forceRegistryMatches(list, true); + } + this.simulateMediaChanges(list); } /** - * Breakpoint locator by mediaQuery - * @param {?} query + * For specified mediaQuery list manually simulate activations or deactivations + * @private + * @param {?} queries + * @param {?=} matches * @return {?} */ - _findByQuery(query) { - return this.breakpoints.findByQuery(query); + simulateMediaChanges(queries, matches = true) { + /** @type {?} */ + const toMediaQuery = (/** + * @param {?} query + * @return {?} + */ + (query) => { + /** @type {?} */ + const locator = this.breakpoints; + /** @type {?} */ + const bp = locator.findByAlias(query) || locator.findByQuery(query); + return bp ? bp.mediaQuery : query; + }); + /** @type {?} */ + const emitChangeEvent = (/** + * @param {?} query + * @return {?} + */ + (query) => this.emitChangeEvent(matches, query)); + queries.map(toMediaQuery).forEach(emitChangeEvent); } /** - * Find associated breakpoint (if any) - * @param {?} query + * Replace current registry with simulated registry... + * Note: this is required since MediaQueryList::matches is 'readOnly' + * @private + * @param {?} queries + * @param {?} matches + * @return {?} + */ + forceRegistryMatches(queries, matches) { + /** @type {?} */ + const registry = new Map(); + queries.forEach((/** + * @param {?} query + * @return {?} + */ + query => { + registry.set(query, (/** @type {?} */ ({ matches: matches }))); + })); + this.matchMedia.registry = registry; + } + /** + * Save current MatchMedia::registry items. + * @private + * @return {?} + */ + cacheRegistryMatches() { + /** @type {?} */ + const target = this.originalRegistry; + target.clear(); + this.matchMedia.registry.forEach((/** + * @param {?} value + * @param {?} key + * @return {?} + */ + (value, key) => { + target.set(key, value); + })); + this.hasCachedRegistryMatches = true; + } + /** + * Restore original, 'true' registry + * @private * @return {?} */ - _toMediaQuery(query) { + restoreRegistryMatches() { /** @type {?} */ - const bp = this._findByAlias(query) || this._findByQuery(query); - return bp ? bp.mediaQuery : query; + const target = this.matchMedia.registry; + target.clear(); + this.originalRegistry.forEach((/** + * @param {?} value + * @param {?} key + * @return {?} + */ + (value, key) => { + target.set(key, value); + })); + this.originalRegistry.clear(); + this.hasCachedRegistryMatches = false; + } + /** + * Manually emit a MediaChange event via the MatchMedia to MediaMarshaller and MediaObserver + * @private + * @param {?} matches + * @param {?} query + * @return {?} + */ + emitChangeEvent(matches, query) { + this.matchMedia.source.next(new MediaChange(matches, query)); + } + /** + * @private + * @return {?} + */ + get currentActivations() { + return this.matchMedia.activations; } } -MediaObserver.decorators = [ +MediaTrigger.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; /** @nocollapse */ -MediaObserver.ctorParameters = () => [ +MediaTrigger.ctorParameters = () => [ { type: BreakPointRegistry }, - { type: MatchMedia } + { type: MatchMedia }, + { type: undefined, decorators: [{ type: Inject, args: [LAYOUT_CONFIG,] }] }, + { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }, + { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] } ]; -/** @nocollapse */ MediaObserver.ngInjectableDef = defineInjectable({ factory: function MediaObserver_Factory() { return new MediaObserver(inject(BreakPointRegistry), inject(MatchMedia)); }, token: MediaObserver, providedIn: "root" }); +/** @nocollapse */ MediaTrigger.ngInjectableDef = ɵɵdefineInjectable({ factory: function MediaTrigger_Factory() { return new MediaTrigger(ɵɵinject(BreakPointRegistry), ɵɵinject(MatchMedia), ɵɵinject(LAYOUT_CONFIG), ɵɵinject(PLATFORM_ID), ɵɵinject(DOCUMENT)); }, token: MediaTrigger, providedIn: "root" }); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ + /** * Applies CSS prefixes to appropriate style keys. * @@ -2694,7 +2540,7 @@ function applyCssPrefixes(target) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class StyleUtils { /** @@ -2735,9 +2581,13 @@ class StyleUtils { applyStyleToElements(style, elements = []) { /** @type {?} */ const styles = this.layoutConfig.disableVendorPrefixes ? style : applyCssPrefixes(style); - elements.forEach(el => { + elements.forEach((/** + * @param {?} el + * @return {?} + */ + el => { this._applyMultiValueStyleToElement(styles, el); - }); + })); } /** * Determine the DOM element's Flexbox flow (flex-direction) @@ -2804,18 +2654,23 @@ class StyleUtils { } // Note: 'inline' is the default of all elements, unless UA stylesheet overrides; // in which case getComputedStyle() should determine a valid value. - return value.trim(); + return value ? value.trim() : ''; } /** * Applies the styles to the element. The styles object map may contain an array of values * Each value will be added as element style * Keys are sorted to add prefixed styles (like -webkit-x) first, before the standard ones + * @private * @param {?} styles * @param {?} element * @return {?} */ _applyMultiValueStyleToElement(styles, element) { - Object.keys(styles).sort().forEach(key => { + Object.keys(styles).sort().forEach((/** + * @param {?} key + * @return {?} + */ + key => { /** @type {?} */ const el = styles[key]; /** @type {?} */ @@ -2831,9 +2686,10 @@ class StyleUtils { this._serverStylesheet.addStyleToElement(element, key, value); } } - }); + })); } /** + * @private * @param {?} element * @param {?} styleName * @param {?=} styleValue @@ -2847,6 +2703,7 @@ class StyleUtils { this._writeStyleAttribute(element, styleMap); } /** + * @private * @param {?} element * @param {?} styleName * @return {?} @@ -2857,6 +2714,7 @@ class StyleUtils { return styleMap[styleName] || ''; } /** + * @private * @param {?} element * @return {?} */ @@ -2886,6 +2744,7 @@ class StyleUtils { return styleMap; } /** + * @private * @param {?} element * @param {?} styleMap * @return {?} @@ -2913,11 +2772,11 @@ StyleUtils.ctorParameters = () => [ { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }, { type: undefined, decorators: [{ type: Inject, args: [LAYOUT_CONFIG,] }] } ]; -/** @nocollapse */ StyleUtils.ngInjectableDef = defineInjectable({ factory: function StyleUtils_Factory() { return new StyleUtils(inject(StylesheetMap, 8), inject(SERVER_TOKEN, 8), inject(PLATFORM_ID), inject(LAYOUT_CONFIG)); }, token: StyleUtils, providedIn: "root" }); +/** @nocollapse */ StyleUtils.ngInjectableDef = ɵɵdefineInjectable({ factory: function StyleUtils_Factory() { return new StyleUtils(ɵɵinject(StylesheetMap, 8), ɵɵinject(SERVER_TOKEN, 8), ɵɵinject(PLATFORM_ID), ɵɵinject(LAYOUT_CONFIG)); }, token: StyleUtils, providedIn: "root" }); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * A class that encapsulates CSS style generation for common directives @@ -2945,7 +2804,7 @@ class StyleBuilder { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @@ -3001,7 +2860,7 @@ function _validateCalcValue(calc) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * MediaMarshaller - register responsive values from directives and @@ -3011,45 +2870,49 @@ class MediaMarshaller { /** * @param {?} matchMedia * @param {?} breakpoints + * @param {?} hook */ - constructor(matchMedia, breakpoints) { + constructor(matchMedia, breakpoints, hook) { this.matchMedia = matchMedia; this.breakpoints = breakpoints; + this.hook = hook; this.activatedBreakpoints = []; this.elementMap = new Map(); this.elementKeyMap = new WeakMap(); - this.watcherMap = new WeakMap(); - this.builderMap = new WeakMap(); - this.clearBuilderMap = new WeakMap(); + this.watcherMap = new WeakMap(); // special triggers to update elements + // special triggers to update elements + this.updateMap = new WeakMap(); // callback functions to update styles + // callback functions to update styles + this.clearMap = new WeakMap(); // callback functions to clear styles + // callback functions to clear styles this.subject = new Subject(); - this.matchMedia - .observe() - .subscribe(this.activate.bind(this)); - this.registerBreakpoints(); + this.observeActivations(); } /** * @return {?} */ - get activatedBreakpoint() { + get activatedAlias() { return this.activatedBreakpoints[0] ? this.activatedBreakpoints[0].alias : ''; } /** - * activate or deactivate a given breakpoint + * Update styles on breakpoint activates or deactivates * @param {?} mc * @return {?} */ - activate(mc) { + onMediaChange(mc) { /** @type {?} */ const bp = this.findByQuery(mc.mediaQuery); if (bp) { + mc = mergeAlias(mc, bp); if (mc.matches && this.activatedBreakpoints.indexOf(bp) === -1) { this.activatedBreakpoints.push(bp); - this.activatedBreakpoints.sort(prioritySort); + this.activatedBreakpoints.sort(sortDescendingPriority); this.updateStyles(); } else if (!mc.matches && this.activatedBreakpoints.indexOf(bp) !== -1) { // Remove the breakpoint when it's deactivated this.activatedBreakpoints.splice(this.activatedBreakpoints.indexOf(bp), 1); + this.activatedBreakpoints.sort(sortDescendingPriority); this.updateStyles(); } } @@ -3064,9 +2927,9 @@ class MediaMarshaller { * @return {?} */ init(element, key, updateFn, clearFn, extraTriggers = []) { + initBuilderMap(this.updateMap, element, key, updateFn); + initBuilderMap(this.clearMap, element, key, clearFn); this.buildElementKeyMap(element, key); - initBuilderMap(this.builderMap, element, key, updateFn); - initBuilderMap(this.clearBuilderMap, element, key, clearFn); this.watchExtraTriggers(element, key, extraTriggers); } /** @@ -3081,14 +2944,12 @@ class MediaMarshaller { const bpMap = this.elementMap.get(element); if (bpMap) { /** @type {?} */ - const values = bp !== undefined ? bpMap.get(bp) : this.getFallback(bpMap, key); + const values = bp !== undefined ? bpMap.get(bp) : this.getActivatedValues(bpMap, key); if (values) { - /** @type {?} */ - const value = values.get(key); - return value !== undefined ? value : ''; + return values.get(key); } } - return ''; + return undefined; } /** * whether the element has values for a given key @@ -3101,7 +2962,7 @@ class MediaMarshaller { const bpMap = this.elementMap.get(element); if (bpMap) { /** @type {?} */ - const values = this.getFallback(bpMap, key); + const values = this.getActivatedValues(bpMap, key); if (values) { return values.get(key) !== undefined || false; } @@ -3129,7 +2990,11 @@ class MediaMarshaller { bpMap.set(bp, values); this.elementMap.set(element, bpMap); } - this.updateElement(element, key, this.getValue(element, key)); + /** @type {?} */ + const value = this.getValue(element, key); + if (value !== undefined) { + this.updateElement(element, key, value); + } } /** * Track element value changes for a specific key @@ -3138,38 +3003,56 @@ class MediaMarshaller { * @return {?} */ trackValue(element, key) { - return this.subject.asObservable() - .pipe(filter(v => v.element === element && v.key === key)); + return this.subject + .asObservable() + .pipe(filter((/** + * @param {?} v + * @return {?} + */ + v => v.element === element && v.key === key))); } /** * update all styles for all elements on the current breakpoint * @return {?} */ updateStyles() { - this.elementMap.forEach((bpMap, el) => { + this.elementMap.forEach((/** + * @param {?} bpMap + * @param {?} el + * @return {?} + */ + (bpMap, el) => { /** @type {?} */ - const valueMap = this.getFallback(bpMap); + const keyMap = new Set((/** @type {?} */ (this.elementKeyMap.get(el)))); /** @type {?} */ - const keyMap = new Set(/** @type {?} */ ((this.elementKeyMap.get(el)))); + let valueMap = this.getActivatedValues(bpMap); if (valueMap) { - valueMap.forEach((v, k) => { + valueMap.forEach((/** + * @param {?} v + * @param {?} k + * @return {?} + */ + (v, k) => { this.updateElement(el, k, v); keyMap.delete(k); - }); + })); } - keyMap.forEach(k => { - /** @type {?} */ - const fallbackMap = this.getFallback(bpMap, k); - if (fallbackMap) { + keyMap.forEach((/** + * @param {?} k + * @return {?} + */ + k => { + valueMap = this.getActivatedValues(bpMap, k); + if (valueMap) { /** @type {?} */ - const value = fallbackMap.get(k); + const value = valueMap.get(k); this.updateElement(el, k, value); } else { this.clearElement(el, k); } - }); - }); + })); + })); } /** * clear the styles for a given element @@ -3179,12 +3062,12 @@ class MediaMarshaller { */ clearElement(element, key) { /** @type {?} */ - const builders = this.clearBuilderMap.get(element); + const builders = this.clearMap.get(element); if (builders) { /** @type {?} */ - const builder = builders.get(key); - if (builder) { - builder(); + const clearFn = (/** @type {?} */ (builders.get(key))); + if (!!clearFn) { + clearFn(); this.subject.next({ element, key, value: '' }); } } @@ -3198,12 +3081,12 @@ class MediaMarshaller { */ updateElement(element, key, value) { /** @type {?} */ - const builders = this.builderMap.get(element); + const builders = this.updateMap.get(element); if (builders) { /** @type {?} */ - const builder = builders.get(key); - if (builder) { - builder(value); + const updateFn = (/** @type {?} */ (builders.get(key))); + if (!!updateFn) { + updateFn(value); this.subject.next({ element, key, value }); } } @@ -3217,18 +3100,55 @@ class MediaMarshaller { /** @type {?} */ const watcherMap = this.watcherMap.get(element); if (watcherMap) { - watcherMap.forEach(s => s.unsubscribe()); + watcherMap.forEach((/** + * @param {?} s + * @return {?} + */ + s => s.unsubscribe())); this.watcherMap.delete(element); } /** @type {?} */ const elementMap = this.elementMap.get(element); if (elementMap) { - elementMap.forEach((_, s) => elementMap.delete(s)); + elementMap.forEach((/** + * @param {?} _ + * @param {?} s + * @return {?} + */ + (_, s) => elementMap.delete(s))); this.elementMap.delete(element); } } + /** + * trigger an update for a given element and key (e.g. layout) + * @param {?} element + * @param {?=} key + * @return {?} + */ + triggerUpdate(element, key) { + /** @type {?} */ + const bpMap = this.elementMap.get(element); + if (bpMap) { + /** @type {?} */ + const valueMap = this.getActivatedValues(bpMap, key); + if (valueMap) { + if (key) { + this.updateElement(element, key, valueMap.get(key)); + } + else { + valueMap.forEach((/** + * @param {?} v + * @param {?} k + * @return {?} + */ + (v, k) => this.updateElement(element, k, v))); + } + } + } + } /** * Cross-reference for HTMLElement with directive key + * @private * @param {?} element * @param {?} key * @return {?} @@ -3247,6 +3167,7 @@ class MediaMarshaller { * - directionality * - layout changes * - mutationobserver updates + * @private * @param {?} element * @param {?} key * @param {?} triggers @@ -3264,17 +3185,21 @@ class MediaMarshaller { const subscription = watchers.get(key); if (!subscription) { /** @type {?} */ - const newSubscription = merge(...triggers).subscribe(() => { + const newSubscription = merge(...triggers).subscribe((/** + * @return {?} + */ + () => { /** @type {?} */ const currentValue = this.getValue(element, key); this.updateElement(element, key, currentValue); - }); + })); watchers.set(key, newSubscription); } } } /** * Breakpoint locator by mediaQuery + * @private * @param {?} query * @return {?} */ @@ -3283,11 +3208,12 @@ class MediaMarshaller { } /** * get the fallback breakpoint for a given element, starting with the current breakpoint + * @private * @param {?} bpMap * @param {?=} key * @return {?} */ - getFallback(bpMap, key) { + getActivatedValues(bpMap, key) { for (let i = 0; i < this.activatedBreakpoints.length; i++) { /** @type {?} */ const activatedBp = this.activatedBreakpoints[i]; @@ -3299,15 +3225,28 @@ class MediaMarshaller { } } } - return bpMap.get(''); + /** @type {?} */ + const lastHope = bpMap.get(''); + return (key === undefined || lastHope && lastHope.has(key)) ? lastHope : undefined; } /** + * Watch for mediaQuery breakpoint activations + * @private * @return {?} */ - registerBreakpoints() { + observeActivations() { + /** @type {?} */ + const target = (/** @type {?} */ ((/** @type {?} */ (this)))); /** @type {?} */ - const queries = this.breakpoints.sortedItems.map(bp => bp.mediaQuery); - this.matchMedia.registerQuery(queries); + const queries = this.breakpoints.items.map((/** + * @param {?} bp + * @return {?} + */ + bp => bp.mediaQuery)); + this.matchMedia + .observe(this.hook.withPrintQuery(queries)) + .pipe(tap(this.hook.interceptEvents(target)), filter(this.hook.blockPropagation())) + .subscribe(this.onMediaChange.bind(this)); } } MediaMarshaller.decorators = [ @@ -3316,9 +3255,10 @@ MediaMarshaller.decorators = [ /** @nocollapse */ MediaMarshaller.ctorParameters = () => [ { type: MatchMedia }, - { type: BreakPointRegistry } + { type: BreakPointRegistry }, + { type: PrintHook } ]; -/** @nocollapse */ MediaMarshaller.ngInjectableDef = defineInjectable({ factory: function MediaMarshaller_Factory() { return new MediaMarshaller(inject(MatchMedia), inject(BreakPointRegistry)); }, token: MediaMarshaller, providedIn: "root" }); +/** @nocollapse */ MediaMarshaller.ngInjectableDef = ɵɵdefineInjectable({ factory: function MediaMarshaller_Factory() { return new MediaMarshaller(ɵɵinject(MatchMedia), ɵɵinject(BreakPointRegistry), ɵɵinject(PrintHook)); }, token: MediaMarshaller, providedIn: "root" }); /** * @param {?} map * @param {?} element @@ -3340,13 +3280,13 @@ function initBuilderMap(map$$1, element, key, input) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -export { removeStyles, BROWSER_PROVIDER, CLASS_NAME, CoreModule, MediaChange, StylesheetMap, DEFAULT_CONFIG, LAYOUT_CONFIG, SERVER_TOKEN, BREAKPOINT, BaseDirective, BaseDirectiveAdapter, BaseDirective2, prioritySort, RESPONSIVE_ALIASES, DEFAULT_BREAKPOINTS, ScreenTypes, ORIENTATION_BREAKPOINTS, BreakPointRegistry, BREAKPOINTS, MatchMedia, MockMatchMedia, MockMediaQueryList, MockMatchMediaProvider, ServerMediaQueryList, ServerMatchMedia, MediaMonitor, ObservableMedia, MediaService, ObservableMediaProvider, MediaObserver, KeyOptions, ResponsiveActivation, StyleUtils, StyleBuilder, validateBasis, MediaMarshaller }; +export { MatchMedia as ɵMatchMedia, MockMatchMedia as ɵMockMatchMedia, MockMatchMediaProvider as ɵMockMatchMediaProvider, CoreModule, removeStyles, BROWSER_PROVIDER, CLASS_NAME, MediaChange, StylesheetMap, DEFAULT_CONFIG, LAYOUT_CONFIG, SERVER_TOKEN, BREAKPOINT, mergeAlias, BaseDirective2, DEFAULT_BREAKPOINTS, ScreenTypes, ORIENTATION_BREAKPOINTS, BreakPointRegistry, BREAKPOINTS, MediaObserver, MediaTrigger, sortDescendingPriority, sortAscendingPriority, coerceArray, StyleUtils, StyleBuilder, validateBasis, MediaMarshaller, BREAKPOINT_PRINT, PrintHook }; //# sourceMappingURL=core.js.map diff --git a/esm2015/core.js.map b/esm2015/core.js.map index 0aa6d083a..f51871fbf 100644 --- a/esm2015/core.js.map +++ b/esm2015/core.js.map @@ -1 +1 @@ -{"version":3,"file":"core.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-observer/media-observer.ts","../../../src/lib/core/media-monitor/media-monitor.ts","../../../src/lib/core/match-media/server-match-media.ts","../../../src/lib/core/match-media/mock/mock-match-media.ts","../../../src/lib/core/base/base2.ts","../../../src/lib/core/base/base-adapter.ts","../../../src/lib/core/base/base.ts","../../../src/lib/core/responsive-activation/responsive-activation.ts","../../../src/lib/utils/layout-validator.ts","../../../src/lib/core/tokens/server-token.ts","../../../src/lib/core/stylesheet-map/stylesheet-map.ts","../../../src/lib/core/module.ts","../../../src/lib/core/observable-media/observable-media.ts","../../../src/lib/core/add-alias.ts","../../../src/lib/core/match-media/match-media.ts","../../../src/lib/core/media-change.ts","../../../src/lib/core/breakpoints/break-point-registry.ts","../../../src/lib/core/breakpoints/break-points-token.ts","../../../src/lib/core/tokens/library-config.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/tokens/breakpoint-token.ts","../../../src/lib/core/browser-provider.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Injectable} from '@angular/core';\nimport {merge, Observable, Subject, Subscription} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nimport {BreakPoint} from '../breakpoints/break-point';\nimport {prioritySort} from '../breakpoints/breakpoint-tools';\nimport {BreakPointRegistry} from '../breakpoints/break-point-registry';\nimport {MatchMedia} from '../match-media/match-media';\nimport {MediaChange} from '../media-change';\n\ntype Builder = Function;\ntype ClearCallback = () => void;\ntype UpdateCallback = (val: any) => void;\ntype ValueMap = Map;\ntype BreakpointMap = Map;\ntype ElementMap = Map;\ntype ElementKeyMap = WeakMap>;\ntype SubscriptionMap = Map;\ntype WatcherMap = WeakMap;\ntype BuilderMap = WeakMap>;\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 // registry of special triggers to update elements\n private watcherMap: WatcherMap = new WeakMap();\n private builderMap: BuilderMap = new WeakMap();\n private clearBuilderMap: BuilderMap = new WeakMap();\n private subject: Subject = new Subject();\n\n get activatedBreakpoint(): string {\n return this.activatedBreakpoints[0] ? this.activatedBreakpoints[0].alias : '';\n }\n\n constructor(protected matchMedia: MatchMedia,\n protected breakpoints: BreakPointRegistry) {\n this.matchMedia\n .observe()\n .subscribe(this.activate.bind(this));\n this.registerBreakpoints();\n }\n\n /**\n * activate or deactivate a given breakpoint\n * @param mc\n */\n activate(mc: MediaChange) {\n const bp: BreakPoint | null = this.findByQuery(mc.mediaQuery);\n if (bp) {\n if (mc.matches && this.activatedBreakpoints.indexOf(bp) === -1) {\n this.activatedBreakpoints.push(bp);\n this.activatedBreakpoints.sort(prioritySort);\n this.updateStyles();\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.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[] = []): void {\n this.buildElementKeyMap(element, key);\n initBuilderMap(this.builderMap, element, key, updateFn);\n initBuilderMap(this.clearBuilderMap, element, key, clearFn);\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.getFallback(bpMap, key);\n if (values) {\n const value = values.get(key);\n return value !== undefined ? value : '';\n }\n }\n return '';\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.getFallback(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 this.updateElement(element, key, this.getValue(element, key));\n }\n\n /** Track element value changes for a specific key */\n trackValue(element: HTMLElement, key: string): Observable {\n return this.subject.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 valueMap = this.getFallback(bpMap);\n const keyMap = new Set(this.elementKeyMap.get(el)!);\n if (valueMap) {\n valueMap.forEach((v, k) => {\n this.updateElement(el, k, v);\n keyMap.delete(k);\n });\n }\n keyMap.forEach(k => {\n const fallbackMap = this.getFallback(bpMap, k);\n if (fallbackMap) {\n const value = fallbackMap.get(k);\n this.updateElement(el, k, value);\n } else {\n this.clearElement(el, k);\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.clearBuilderMap.get(element);\n if (builders) {\n const builder: Builder | undefined = builders.get(key);\n if (builder) {\n builder();\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.builderMap.get(element);\n if (builders) {\n const builder: Builder | undefined = builders.get(key);\n if (builder) {\n builder(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 /** 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[]) {\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 getFallback(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)) {\n return valueMap;\n }\n }\n }\n return bpMap.get('');\n }\n\n private registerBreakpoints() {\n const queries = this.breakpoints.sortedItems.map(bp => bp.mediaQuery);\n this.matchMedia.registerQuery(queries);\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 * @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, Optional, 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(@Optional() private _serverStylesheet: StylesheetMap,\n @Optional() @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 /**\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.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 {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {BreakPointRegistry} from '../breakpoints/break-point-registry';\nimport {MediaChange} from '../media-change';\nimport {MatchMedia} from '../match-media/match-media';\nimport {mergeAlias} from '../add-alias';\n\n/**\n * Class internalizes a MatchMedia service and exposes an Observable interface.\n\n * This exposes an Observable with a feature to subscribe to mediaQuery\n * changes and a validator method (`isActive()`) to test if a mediaQuery (or alias) is\n * currently active.\n *\n * !! Only mediaChange activations (not de-activations) are announced by the MediaObserver\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 * !! This is not an actual Observable. It is a wrapper of an Observable used to publish additional\n * methods like `isActive(). To access the Observable and use RxJS operators, use\n * `.media$` with syntax like mediaObserver.media$.map(....).\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 onChange = (change: MediaChange) => {\n * this.status = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : '';\n * };\n *\n * // Subscribe directly or access observable to use filter/map operators\n * // e.g. mediaObserver.media$.subscribe(onChange);\n *\n * mediaObserver.media$()\n * .pipe(\n * filter((change: MediaChange) => true) // silly noop filter\n * ).subscribe(onChange);\n * }\n * }\n */\n@Injectable({providedIn: 'root'})\nexport class MediaObserver {\n /**\n * Whether to announce gt- breakpoint activations\n */\n filterOverlaps = true;\n readonly media$: Observable;\n\n constructor(private breakpoints: BreakPointRegistry, private mediaWatcher: MatchMedia) {\n this._registerBreakPoints();\n this.media$ = this._buildObservable();\n }\n\n /**\n * Test if specified query/alias is active.\n */\n isActive(alias: string): boolean {\n return this.mediaWatcher.isActive(this._toMediaQuery(alias));\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 _registerBreakPoints() {\n const queries = this.breakpoints.sortedItems.map(bp => bp.mediaQuery);\n this.mediaWatcher.registerQuery(queries);\n }\n\n /**\n * Prepare internal observable\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() {\n const excludeOverlaps = (change: MediaChange) => {\n const bp = this.breakpoints.findByQuery(change.mediaQuery);\n return !bp ? true : !(this.filterOverlaps && bp.overlapping);\n };\n\n /**\n * Only pass/announce activations (not de-activations)\n * Inject associated (if any) alias information into the MediaChange event\n * Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only\n */\n return this.mediaWatcher.observe()\n .pipe(\n filter(change => change.matches),\n filter(excludeOverlaps),\n map((change: MediaChange) =>\n mergeAlias(change, this._findByQuery(change.mediaQuery))\n )\n );\n }\n\n /**\n * Breakpoint locator by alias\n */\n private _findByAlias(alias: string) {\n return this.breakpoints.findByAlias(alias);\n }\n\n /**\n * Breakpoint locator by mediaQuery\n */\n private _findByQuery(query: string) {\n return this.breakpoints.findByQuery(query);\n }\n\n /**\n * Find associated breakpoint (if any)\n */\n private _toMediaQuery(query: string) {\n const bp = this._findByAlias(query) || this._findByQuery(query);\n return bp ? bp.mediaQuery : query;\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} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {BreakPoint} from '../breakpoints/break-point';\nimport {BreakPointRegistry} from '../breakpoints/break-point-registry';\nimport {MatchMedia} from '../match-media/match-media';\nimport {MediaChange} from '../media-change';\nimport {mergeAlias} from '../add-alias';\n\n\n/**\n * MediaMonitor uses the MatchMedia service to observe mediaQuery changes (both activations and\n * deactivations). These changes are are published as MediaChange notifications.\n *\n * Note: all notifications will be performed within the\n * ng Zone to trigger change detections and component updates.\n *\n * It is the MediaMonitor that:\n * - auto registers all known breakpoints\n * - injects alias information into each raw MediaChange event\n * - provides accessor to the currently active BreakPoint\n * - publish list of overlapping BreakPoint(s); used by ResponsiveActivation\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\n@Injectable({providedIn: 'root'})\nexport class MediaMonitor {\n constructor(private _breakpoints: BreakPointRegistry, private _matchMedia: MatchMedia) {\n this._registerBreakpoints();\n }\n\n /**\n * Read-only accessor to the list of breakpoints configured in the BreakPointRegistry provider\n */\n get breakpoints(): BreakPoint[] {\n return [...this._breakpoints.items];\n }\n\n get activeOverlaps(): BreakPoint[] {\n return this._breakpoints.overlappings\n .reverse()\n .filter(bp => this._matchMedia.isActive(bp.mediaQuery));\n }\n\n get active(): BreakPoint | null {\n const items = this.breakpoints.reverse();\n const first = items.find(bp => bp.alias !== '' && this._matchMedia.isActive(bp.mediaQuery));\n return first || null;\n }\n\n /**\n * For the specified mediaQuery alias, is the mediaQuery range active?\n */\n isActive(alias: string): boolean {\n const bp = this._breakpoints.findByAlias(alias) || this._breakpoints.findByQuery(alias);\n return this._matchMedia.isActive(bp ? bp.mediaQuery : alias);\n }\n\n /**\n * External observers can watch for all (or a specific) mql changes.\n * If specific breakpoint is observed, only return *activated* events\n * otherwise return all events for BOTH activated + deactivated changes.\n */\n observe(alias: string = ''): Observable {\n const bp = this._breakpoints.findByAlias(alias) || this._breakpoints.findByQuery(alias);\n const hasAlias = (change: MediaChange) => (bp ? change.mqAlias !== '' : true);\n // Note: the raw MediaChange events [from MatchMedia] do not contain important alias information\n\n const media$ = this._matchMedia.observe(bp ? bp.mediaQuery : alias);\n return media$.pipe(\n map(change => mergeAlias(change, bp)),\n filter(hasAlias)\n );\n }\n\n /**\n * Immediate calls to matchMedia() to establish listeners\n * and prepare for immediate subscription notifications\n */\n private _registerBreakpoints() {\n const queries = this._breakpoints.sortedItems.map(bp => bp.mediaQuery);\n this._matchMedia.registerQuery(queries);\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 {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable, NgZone, PLATFORM_ID} from '@angular/core';\n\nimport {BreakPoint} from '../breakpoints/break-point';\nimport {MatchMedia} from './match-media';\n\n/**\n * Special server-only class to simulate a MediaQueryList and\n * - supports manual activation to simulate mediaQuery matching\n * - manages listeners\n */\nexport class ServerMediaQueryList 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 * 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(): ServerMediaQueryList {\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(null, this);\n });\n }\n return this;\n }\n\n /** Notify all listeners that 'matches === false' */\n deactivate(): ServerMediaQueryList {\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(null, this);\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(null, this);\n }\n }\n\n /** Don't need to remove listeners in the server environment */\n removeListener(_: EventListenerOrEventListenerObject | null) {\n }\n\n addEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | AddEventListenerOptions): void;\n addEventListener(_: string,\n __: EventListenerOrEventListenerObject,\n ___?: boolean | AddEventListenerOptions) {\n }\n\n removeEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | EventListenerOptions): void;\n removeEventListener(_: 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 * Special server-only implementation of MatchMedia that uses the above\n * ServerMediaQueryList as its internal representation\n *\n * Also contains methods to activate and deactivate breakpoints\n */\n@Injectable()\nexport class ServerMatchMedia extends MatchMedia {\n protected _registry: Map = new Map();\n\n constructor(protected _zone: NgZone,\n @Inject(PLATFORM_ID) protected _platformId: Object,\n @Inject(DOCUMENT) protected _document: any) {\n super(_zone, _platformId, _document);\n }\n\n /** Activate the specified breakpoint if we're on the server, no-op otherwise */\n activateBreakpoint(bp: BreakPoint) {\n const lookupBreakpoint = this._registry.get(bp.mediaQuery);\n if (lookupBreakpoint) {\n lookupBreakpoint.activate();\n }\n }\n\n /** Deactivate the specified breakpoint if we're on the server, no-op otherwise */\n deactivateBreakpoint(bp: BreakPoint) {\n const lookupBreakpoint = this._registry.get(bp.mediaQuery);\n if (lookupBreakpoint) {\n lookupBreakpoint.deactivate();\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): ServerMediaQueryList {\n return new ServerMediaQueryList(query);\n }\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, 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 /** Special flag used to test BreakPoint registrations with MatchMedia */\n autoRegisterQueries = true;\n\n /**\n * Allow fallback to overlapping mediaQueries to determine\n * activatedInput(s).\n */\n useOverlaps = false;\n\n protected _registry: Map = new Map();\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: MockMediaQueryList) => {\n mql.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 activate 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- 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 activate of overlapping gt- 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 // 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.split(',').forEach(alias => activate(alias.trim()));\n }\n\n /**\n *\n */\n private _activateByQuery(mediaQuery: string) {\n const mql = this._registry.get(mediaQuery);\n const alreadyAdded = this._actives\n .reduce((found, it) => (found || (mql ? (it.media === mql.media) : false)), false);\n\n if (mql && !alreadyAdded) {\n this._actives.push(mql.activate());\n }\n return this.hasActivated;\n }\n\n /** Deactivate all current Mock MQLs */\n private _deactivateAll() {\n if (this._actives.length) {\n // Deactivate all current MQLs and reset the buffer\n for (const it of this._actives) {\n it.deactivate();\n }\n this._actives = [];\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._actives.length > 0;\n }\n\n private _actives: MockMediaQueryList[] = [];\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 * 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(null, this);\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(null, this);\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(null, this);\n }\n }\n\n /** Don't need to remove listeners in the testing environment */\n removeListener(_: EventListenerOrEventListenerObject | null) {\n }\n\n addEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | AddEventListenerOptions): void;\n addEventListener(_: string,\n __: EventListenerOrEventListenerObject,\n ___?: boolean | AddEventListenerOptions) {\n }\n\n removeEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | EventListenerOptions): void;\n removeEventListener(_: 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 {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 = new Subject();\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.activatedBreakpoint);\n }\n\n /** Cache map for style computation */\n protected styleCache: Map = 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[] = []): 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 const val = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY);\n this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, val);\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 /** 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 this.addStyles(input);\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} from '@angular/core';\n\nimport {BaseDirective} from './base';\nimport {ResponsiveActivation} from '../responsive-activation/responsive-activation';\nimport {MediaQuerySubscriber} from '../media-change';\nimport {MediaMonitor} from '../media-monitor/media-monitor';\nimport {StyleUtils} from '../style-utils/style-utils';\n\n\n/**\n * Adapter to the BaseDirective abstract class so it can be used via composition.\n * @see BaseDirective\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport class BaseDirectiveAdapter extends BaseDirective {\n\n /**\n * Accessor to determine which @Input property is \"active\"\n * e.g. which property value will be used.\n */\n get activeKey() {\n let mqa = this._mqActivation;\n let key = mqa ? mqa.activatedInputKey : this._baseKey;\n // Note: ClassDirective::SimpleChanges uses 'klazz' instead of 'class' as a key\n return (key === 'class') ? 'klazz' : key;\n }\n\n /** Hash map of all @Input keys/values defined/used */\n get inputMap() {\n return this._inputMap;\n }\n\n /**\n * @see BaseDirective._mqActivation\n */\n get mqActivation(): ResponsiveActivation {\n return this._mqActivation!;\n }\n\n /**\n * BaseDirectiveAdapter constructor\n */\n constructor(protected _baseKey: string, // non-responsive @Input property name\n protected _mediaMonitor: MediaMonitor,\n protected _elementRef: ElementRef,\n protected _styler: StyleUtils) {\n super(_mediaMonitor, _elementRef, _styler);\n }\n\n /**\n * Does this directive have 1 or more responsive keys defined\n * Note: we exclude the 'baseKey' key (which is NOT considered responsive)\n */\n hasResponsiveAPI() {\n return super.hasResponsiveAPI(this._baseKey);\n }\n\n /**\n * @see BaseDirective._queryInput\n */\n queryInput(key: string | null) {\n return key ? this._queryInput(key) : undefined;\n }\n\n /**\n * Save the property value.\n */\n cacheInput(key?: string, source?: any, cacheRaw = false) {\n if (cacheRaw) {\n this._cacheInputRaw(key, source);\n } else if (Array.isArray(source)) {\n this._cacheInputArray(key, source);\n } else if (typeof source === 'object') {\n this._cacheInputObject(key, source);\n } else if (typeof source === 'string') {\n this._cacheInputString(key, source);\n } else {\n throw new Error(\n `Invalid class value '${key}' provided. Did you want to cache the raw value?`\n );\n }\n }\n\n /**\n * @see BaseDirective._listenForMediaQueryChanges\n */\n listenForMediaQueryChanges(key: string,\n defaultValue: any,\n onMediaQueryChange: MediaQuerySubscriber): ResponsiveActivation {\n return this._listenForMediaQueryChanges(key, defaultValue, onMediaQueryChange);\n }\n\n // ************************************************************\n // Protected Methods\n // ************************************************************\n\n /**\n * No implicit transforms of the source.\n * Required when caching values expected later for KeyValueDiffers\n */\n protected _cacheInputRaw(key?: string, source?: any) {\n if (key) {\n this._inputMap[key] = source;\n }\n }\n\n /**\n * Save the property value for Array values.\n */\n protected _cacheInputArray(key = '', source?: boolean[]) {\n this._inputMap[key] = source ? source.join(' ') : '';\n }\n\n /**\n * Save the property value for key/value pair values.\n */\n protected _cacheInputObject(key = '', source?: { [key: string]: boolean }) {\n let classes: string[] = [];\n if (source) {\n for (let prop in source) {\n if (!!source[prop]) {\n classes.push(prop);\n }\n }\n }\n this._inputMap[key] = classes.join(' ');\n }\n\n /**\n * Save the property value for string values.\n */\n protected _cacheInputString(key = '', source?: string) {\n this._inputMap[key] = source;\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 {\n ElementRef,\n OnDestroy,\n SimpleChanges,\n OnChanges,\n SimpleChange,\n} from '@angular/core';\n\nimport {buildLayoutCSS} from '../../utils/layout-validator';\nimport {\n StyleDefinition,\n StyleUtils,\n} from '../style-utils/style-utils';\nimport {ResponsiveActivation, KeyOptions} from '../responsive-activation/responsive-activation';\nimport {MediaMonitor} from '../media-monitor/media-monitor';\nimport {MediaQuerySubscriber} from '../media-change';\nimport {StyleBuilder} from '../style-builder/style-builder';\n\n/**\n * Abstract base class for the Layout API styling directives.\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport abstract class BaseDirective implements OnDestroy, OnChanges {\n\n /**\n * Imperatively determine the current activated [input] value;\n * if called before ngOnInit() this will return `undefined`\n */\n get activatedValue(): string | number {\n return this._mqActivation ? this._mqActivation.activatedInput : undefined;\n }\n\n /**\n * Change the currently activated input value and force-update\n * the injected CSS (by-passing change detection).\n *\n * NOTE: Only the currently activated input value will be modified;\n * other input values will NOT be affected.\n */\n set activatedValue(value: string | number) {\n let key = 'baseKey', previousVal;\n\n if (this._mqActivation) {\n key = this._mqActivation.activatedInputKey;\n previousVal = this._inputMap[key];\n this._inputMap[key] = value;\n }\n const change = new SimpleChange(previousVal, value, false);\n\n this.ngOnChanges({[key]: change} as SimpleChanges);\n }\n\n protected constructor(protected _mediaMonitor: MediaMonitor,\n protected _elementRef: ElementRef,\n protected _styler: StyleUtils,\n protected _styleBuilder?: StyleBuilder) {\n }\n\n /**\n * Does this directive have 1 or more responsive keys defined\n * Note: we exclude the 'baseKey' key (which is NOT considered responsive)\n */\n hasResponsiveAPI(baseKey: string) {\n const totalKeys = Object.keys(this._inputMap).length;\n const baseValue = this._inputMap[baseKey];\n return (totalKeys - (!!baseValue ? 1 : 0)) > 0;\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n /**\n * Use post-component-initialization event to perform extra\n * querying such as computed Display style\n */\n ngOnInit() {\n this._hasInitialized = true;\n }\n\n ngOnChanges(change: SimpleChanges) {\n throw new Error(`BaseDirective::ngOnChanges should be overridden in subclass: ${change}`);\n }\n\n ngOnDestroy() {\n if (this._mqActivation) {\n this._mqActivation.destroy();\n }\n delete this._mediaMonitor;\n }\n\n // *********************************************\n // Protected Methods\n // *********************************************\n\n /** Access to host element's parent DOM node */\n protected get parentElement(): any {\n return this._elementRef.nativeElement.parentNode;\n }\n\n protected get nativeElement(): HTMLElement {\n return this._elementRef.nativeElement;\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._applyStyleToElement(genStyles);\n builder.sideEffect(input, genStyles, parent);\n }\n\n /** Access the current value (if any) of the @Input property */\n protected _queryInput(key: string) {\n return this._inputMap[key];\n }\n\n /**\n * Was the directive's default selector used ?\n * If not, use the fallback value!\n */\n protected _getDefaultVal(key: string, fallbackVal: any): string | boolean {\n const val = this._queryInput(key);\n const hasDefaultVal = (val !== undefined && val !== null);\n return (hasDefaultVal && val !== '') ? val : fallbackVal;\n }\n\n /**\n * Quick accessor to the current HTMLElement's `display` style\n * Note: this allows us to preserve the original style\n * and optional restore it when the mediaQueries deactivate\n */\n protected _getDisplayStyle(source: HTMLElement = this.nativeElement): string {\n const query = 'display';\n return this._styler.lookupStyle(source, query);\n }\n\n /** Quick accessor to raw attribute value on the target DOM element */\n protected _getAttributeValue(attribute: string,\n source: HTMLElement = this.nativeElement): string {\n return this._styler.lookupAttributeValue(source, attribute);\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 let [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 /** 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 /** Applies styles given via string pair or object map to the directive's element */\n protected _applyStyleToElements(style: StyleDefinition, elements: HTMLElement[]) {\n this._styler.applyStyleToElements(style, elements);\n }\n\n /**\n * Save the property value; which may be a complex object.\n * Complex objects support property chains\n */\n protected _cacheInput(key?: string, source?: any) {\n if (typeof source === 'object') {\n for (let prop in source) {\n this._inputMap[prop] = source[prop];\n }\n } else {\n if (!!key) {\n this._inputMap[key] = source;\n }\n }\n }\n\n /**\n * Build a ResponsiveActivation object used to manage subscriptions to mediaChange notifications\n * and intelligent lookup of the directive's property value that corresponds to that mediaQuery\n * (or closest match).\n */\n protected _listenForMediaQueryChanges(key: string,\n defaultValue: any,\n onMediaQueryChange: MediaQuerySubscriber): ResponsiveActivation { // tslint:disable-line:max-line-length\n if (!this._mqActivation) {\n let keyOptions = new KeyOptions(key, defaultValue, this._inputMap);\n this._mqActivation = new ResponsiveActivation(keyOptions, this._mediaMonitor,\n (change) => onMediaQueryChange(change));\n }\n return this._mqActivation;\n }\n\n /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */\n protected get childrenNodes(): HTMLElement[] {\n const obj = this.nativeElement.children;\n const buffer: any[] = [];\n\n // iterate backwards ensuring that length is an UInt32\n for (let i = obj.length; i--; ) {\n buffer[i] = obj[i];\n }\n return buffer;\n }\n\n protected get hasInitialized() {\n return this._hasInitialized;\n }\n\n /** MediaQuery Activation Tracker */\n protected _mqActivation?: ResponsiveActivation;\n\n /** Dictionary of input keys with associated values */\n protected _inputMap: {[key: string]: any} = {};\n\n /**\n * Has the `ngOnInit()` method fired\n *\n * Used to allow *ngFor tasks to finish and support queries like\n * getComputedStyle() during ngOnInit().\n */\n protected _hasInitialized = false;\n\n /** Cache map for style computation */\n protected _styleCache: Map = new Map();\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 {Subscription} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {MediaChange, MediaQuerySubscriber} from '../media-change';\nimport {BreakPoint} from '../breakpoints/break-point';\nimport {MediaMonitor} from '../media-monitor/media-monitor';\nimport {extendObject} from '../../utils/object-extend';\n\n/**\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport interface BreakPointX extends BreakPoint {\n key: string;\n baseKey: string;\n}\n\n/**\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport class KeyOptions {\n constructor(public baseKey: string,\n public defaultValue: string|number|boolean,\n public inputKeys: { [key: string]: any }) {\n }\n}\n\n/**\n * ResponsiveActivation acts as a proxy between the MonitorMedia service (which emits mediaQuery\n * changes) and the fx API directives. The MQA proxies mediaQuery change events and notifies the\n * directive via the specified callback.\n *\n * - The MQA also determines which directive property should be used to determine the\n * current change 'value'... BEFORE the original `onMediaQueryChanges()` method is called.\n * - The `ngOnDestroy()` method is also head-hooked to enable auto-unsubscribe from the\n * MediaQueryServices.\n *\n * NOTE: these interceptions enables the logic in the fx API directives to remain terse and clean.\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport class ResponsiveActivation {\n private _activatedInputKey: string = '';\n private _registryMap: BreakPointX[] = this._buildRegistryMap();\n private _subscribers: Subscription[] = this._configureChangeObservers();\n\n /**\n * Constructor\n */\n constructor(private _options: KeyOptions,\n private _mediaMonitor: MediaMonitor,\n private _onMediaChanges: MediaQuerySubscriber) {\n }\n\n /**\n * Get a readonly sorted list of the breakpoints corresponding to the directive properties\n * defined in the HTML markup: the sorting is done from largest to smallest. The order is\n * important when several media queries are 'registered' and from which, the browser uses the\n * first matching media query.\n */\n get registryFromLargest(): BreakPointX[] {\n return [...this._registryMap].reverse();\n }\n\n /**\n * Determine which directive @Input() property is currently active (for the viewport size):\n * The key must be defined (in use) or fallback to the 'closest' overlapping property key\n * that is defined; otherwise the default property key will be used.\n * e.g.\n * if `
` is used but the current activated mediaQuery alias\n * key is `.md` then `.gt-sm` should be used instead\n */\n get activatedInputKey(): string {\n return this._activatedInputKey || this._options.baseKey;\n }\n\n /**\n * Get the currently activated @Input value or the fallback default @Input value\n */\n get activatedInput(): any {\n const key = this.activatedInputKey;\n return this.hasKeyValue(key) ? this._lookupKeyValue(key) : this._options.defaultValue;\n }\n\n /**\n * Fast validator for presence of attribute on the host element\n */\n hasKeyValue(key: string) {\n return this._options.inputKeys[key] !== undefined;\n }\n\n /**\n * Remove interceptors, restore original functions, and forward the onDestroy() call\n */\n destroy() {\n this._subscribers.forEach(link => link.unsubscribe());\n this._subscribers = [];\n }\n\n /**\n * For each *defined* API property, register a callback to `_onMonitorEvents( )`\n * Cache 1..n subscriptions for internal auto-unsubscribes when the the directive destructs\n */\n private _configureChangeObservers(): Subscription[] {\n const subscriptions: Subscription[] = [];\n\n this._registryMap.forEach(bp => {\n if (this._keyInUse(bp.key)) {\n // Inject directive default property key name: to let onMediaChange() calls\n // know which property is being triggered...\n const buildChanges = (change: MediaChange) => {\n change = change.clone();\n change.property = this._options.baseKey;\n return change;\n };\n\n subscriptions.push(\n this._mediaMonitor\n .observe(bp.alias)\n .pipe(map(buildChanges))\n .subscribe(change => {\n this._onMonitorEvents(change);\n })\n );\n }\n });\n\n return subscriptions;\n }\n\n /**\n * Build mediaQuery key-hashmap; only for the directive properties that are actually defined/used\n * in the HTML markup\n */\n private _buildRegistryMap() {\n return this._mediaMonitor.breakpoints\n .map(bp => extendObject({}, bp, {\n baseKey: this._options.baseKey, // e.g. layout, hide, self-align, flex-wrap\n key: this._options.baseKey + bp.suffix // e.g. layoutGtSm, layoutMd, layoutGtLg\n }))\n .filter(bp => this._keyInUse(bp.key));\n }\n\n /**\n * Synchronizes change notifications with the current mq-activated @Input and calculates the\n * mq-activated input value or the default value\n */\n protected _onMonitorEvents(change: MediaChange) {\n if (change.property === this._options.baseKey) {\n change.value = this._calculateActivatedValue(change);\n this._onMediaChanges(change);\n }\n }\n\n /**\n * Has the key been specified in the HTML markup and thus is intended\n * to participate in activation processes.\n */\n private _keyInUse(key: string): boolean {\n return this._lookupKeyValue(key) !== undefined;\n }\n\n /**\n * Map input key associated with mediaQuery activation to closest defined input key\n * then return the values associated with the targeted input property\n *\n * !! change events may arrive out-of-order (activate before deactivate)\n * so make sure the deactivate is used ONLY when the keys match\n * (since a different activate may be in use)\n */\n private _calculateActivatedValue(current: MediaChange): any {\n const currentKey = this._options.baseKey + current.suffix; // e.g. suffix == 'GtSm',\n let newKey = this._activatedInputKey; // e.g. newKey == hideGtSm\n\n newKey = current.matches ? currentKey : ((newKey === currentKey) ? '' : newKey);\n\n this._activatedInputKey = this._validateInputKey(newKey);\n return this.activatedInput;\n }\n\n /**\n * For the specified input property key, validate it is defined (used in the markup)\n * If not see if a overlapping mediaQuery-related input key fallback has been defined\n *\n * NOTE: scans in the order defined by activeOverLaps (largest viewport ranges -> smallest ranges)\n */\n private _validateInputKey(inputKey: string) {\n const isMissingKey = (key: string) => !this._keyInUse(key);\n\n if (isMissingKey(inputKey)) {\n this._mediaMonitor.activeOverlaps.some(bp => {\n const key = this._options.baseKey + bp.suffix;\n if (!isMissingKey(key)) {\n inputKey = key;\n return true; // exit .some()\n }\n return false;\n });\n }\n return inputKey;\n }\n\n /**\n * Get the value (if any) for the directive instances @Input property (aka key)\n */\n private _lookupKeyValue(key: string) {\n return this._options.inputKeys[key];\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='' 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 : 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 {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(\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 {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>();\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 */\nimport {NgModule} from '@angular/core';\n\nimport {BROWSER_PROVIDER} from './browser-provider';\nimport {ObservableMediaProvider} from './observable-media/observable-media';\n\n/**\n * *****************************************************************\n * Define module for the MediaQuery API\n * *****************************************************************\n */\n\n@NgModule({\n providers: [BROWSER_PROVIDER, ObservableMediaProvider]\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 {Injectable} from '@angular/core';\nimport {Observable, PartialObserver, Subscribable, Subscription} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {BreakPointRegistry} from '../breakpoints/break-point-registry';\nimport {MediaChange} from '../media-change';\nimport {MatchMedia} from '../match-media/match-media';\nimport {mergeAlias} from '../add-alias';\nimport {BreakPoint} from '../breakpoints/break-point';\n\n/**\n * Base class for MediaService and pseudo-token for\n * @deprecated use MediaObserver instead\n * @deletion-target v7.0.0-beta.21\n */\nexport abstract class ObservableMedia implements Subscribable {\n abstract isActive(query: string): boolean;\n\n abstract asObservable(): Observable;\n\n abstract subscribe(next?: (value: MediaChange) => void,\n error?: (error: any) => void,\n complete?: () => void): Subscription;\n abstract subscribe(observer?: PartialObserver): Subscription;\n}\n\n/**\n * Class internalizes a MatchMedia service and exposes an Subscribable and Observable interface.\n\n * This an Observable with that exposes a feature to subscribe to mediaQuery\n * changes and a validator method (`isActive()`) to test if a mediaQuery (or alias) is\n * currently active.\n *\n * !! Only mediaChange activations (not de-activations) are announced by the ObservableMedia\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 * !! This is not an actual Observable. It is a wrapper of an Observable used to publish additional\n * methods like `isActive(). To access the Observable and use RxJS operators, use\n * `.asObservable()` with syntax like media.asObservable().map(....).\n *\n * @usage\n *\n * // RxJS\n * import {filter} from 'rxjs/operators/filter';\n * import { ObservableMedia } from '@angular/flex-layout';\n *\n * @Component({ ... })\n * export class AppComponent {\n * status : string = '';\n *\n * constructor( media:ObservableMedia ) {\n * let onChange = (change:MediaChange) => {\n * this.status = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : '';\n * };\n *\n * // Subscribe directly or access observable to use filter/map operators\n * // e.g.\n * // media.subscribe(onChange);\n *\n * media.asObservable()\n * .pipe(\n * filter((change:MediaChange) => true) // silly noop filter\n * ).subscribe(onChange);\n * }\n * }\n * @deprecated use MediaObserver instead\n * @deletion-target v7.0.0-beta.21\n */\n@Injectable({providedIn: 'root'})\nexport class MediaService implements ObservableMedia {\n /**\n * Should we announce gt- breakpoint activations ?\n */\n filterOverlaps = true;\n\n constructor(private breakpoints: BreakPointRegistry,\n private mediaWatcher: MatchMedia) {\n this._registerBreakPoints();\n this.observable$ = this._buildObservable();\n }\n\n /**\n * Test if specified query/alias is active.\n */\n isActive(alias: string): boolean {\n return this.mediaWatcher.isActive(this._toMediaQuery(alias));\n }\n\n /**\n * Proxy to the Observable subscribe method\n */\n subscribe(observerOrNext?: PartialObserver | ((value: MediaChange) => void),\n error?: (error: any) => void,\n complete?: () => void): Subscription {\n if (observerOrNext) {\n if (typeof observerOrNext === 'object') {\n return this.observable$.subscribe(observerOrNext.next, observerOrNext.error,\n observerOrNext.complete);\n }\n }\n\n return this.observable$.subscribe(observerOrNext, error, complete);\n }\n\n /**\n * Access to observable for use with operators like\n * .filter(), .map(), etc.\n */\n asObservable(): Observable {\n return this.observable$;\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 _registerBreakPoints() {\n const queries = this.breakpoints.sortedItems.map(bp => bp.mediaQuery);\n this.mediaWatcher.registerQuery(queries);\n }\n\n /**\n * Prepare internal observable\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() {\n const excludeOverlaps = (change: MediaChange) => {\n const bp = this.breakpoints.findByQuery(change.mediaQuery);\n return !bp ? true : !(this.filterOverlaps && bp.overlapping);\n };\n\n /**\n * Only pass/announce activations (not de-activations)\n * Inject associated (if any) alias information into the MediaChange event\n * Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only\n */\n return this.mediaWatcher.observe().pipe(\n filter(change => change.matches),\n filter(excludeOverlaps),\n map((change: MediaChange) =>\n mergeAlias(change, this._findByQuery(change.mediaQuery)))\n );\n }\n\n /**\n * Breakpoint locator by alias\n */\n private _findByAlias(alias: string) {\n return this.breakpoints.findByAlias(alias);\n }\n\n /**\n * Breakpoint locator by mediaQuery\n */\n private _findByQuery(query: string) {\n return this.breakpoints.findByQuery(query);\n }\n\n /**\n * Find associated breakpoint (if any)\n */\n private _toMediaQuery(query: string) {\n const bp: BreakPoint | null = this._findByAlias(query) || this._findByQuery(query);\n return bp ? bp.mediaQuery : query;\n }\n\n private readonly observable$: Observable;\n}\n\n/**\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport const ObservableMediaProvider = { // tslint:disable-line:variable-name\n provide: ObservableMedia,\n useClass: MediaService\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';\nimport {extendObject} from '../utils/object-extend';\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 return extendObject(dest, source ? {\n mqAlias: source.alias,\n suffix: source.suffix\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, NgZone, PLATFORM_ID} from '@angular/core';\nimport {DOCUMENT, isPlatformBrowser} from '@angular/common';\nimport {BehaviorSubject, Observable} 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 {\n protected _registry = new Map();\n protected _source = new BehaviorSubject(new MediaChange(true));\n protected _observable$ = this._source.asObservable();\n\n constructor(protected _zone: NgZone,\n @Inject(PLATFORM_ID) protected _platformId: Object,\n @Inject(DOCUMENT) protected _document: any) {\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 : false;\n }\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 * NOTE: if a mediaQuery is not specified, then ALL mediaQuery activations will\n * be announced.\n */\n observe(mediaQuery?: string): Observable {\n if (mediaQuery) {\n this.registerQuery(mediaQuery);\n }\n\n return this._observable$.pipe(\n filter(change => (mediaQuery ? (change.mediaQuery === mediaQuery) : true))\n );\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) ? Array.from(new Set(mediaQuery)) : [mediaQuery];\n\n if (list.length > 0) {\n buildQueryCss(list, this._document);\n }\n\n list.forEach(query => {\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\n if (!mql) {\n if (query === 'print') {\n // If we are listening for a print media query we need to add a `beforeprint` event listener to trigger the `mql` synchronously.\n // Regular matchMedia events are not synchronous and do not have time to update the layout before the print dialog shows and takes a snapshot.\n // Workaround for #869\n // This requires explicit use of `fxLayout.print` to racing between size based layouts. We don't know the size of prints\n // before hand so you must use a single layout for printing.\n window.addEventListener('beforeprint', () => {\n onMQLEvent({\n mediaQuery: query,\n matches: true,\n } as any)\n })\n }\n\n \n mql = this._buildMQL(query);\n mql.addListener(onMQLEvent);\n this._registry.set(query, mql);\n }\n\n if (mql.matches) {\n onMQLEvent(mql as unknown as MediaQueryListEvent);\n }\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\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).matchMedia('all').addListener;\n\n return canListen ? (window).matchMedia(query) : {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => {\n },\n removeListener: () => {\n }\n } as unknown 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 */\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 */\n constructor(public matches = false,\n public mediaQuery = 'all',\n public mqAlias = '',\n public suffix = '') {\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 {Injectable, Inject} from '@angular/core';\n\nimport {BreakPoint} from './break-point';\nimport {BREAKPOINTS} from './break-points-token';\n\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\n constructor(@Inject(BREAKPOINTS) private _registry: BreakPoint[]) {\n }\n\n /**\n * Accessor to raw list\n */\n get items(): BreakPoint[] {\n return [...this._registry];\n }\n\n /**\n * Accessor to sorted list used for registration with matchMedia API\n *\n * NOTE: During breakpoint registration, we want to register the overlaps FIRST\n * so the non-overlaps will trigger the MatchMedia:BehaviorSubject last!\n * And the largest, non-overlap, matching breakpoint should be the lastReplay value\n */\n get sortedItems(): BreakPoint[] {\n let overlaps = this._registry.filter(it => it.overlapping === true);\n let nonOverlaps = this._registry.filter(it => it.overlapping !== true);\n\n return [...overlaps, ...nonOverlaps];\n }\n\n /**\n * Search breakpoints by alias (e.g. gt-xs)\n */\n findByAlias(alias: string): BreakPoint | null {\n return this._registry.find(bp => bp.alias == alias) || null;\n }\n\n findByQuery(query: string): BreakPoint | null {\n return this._registry.find(bp => bp.mediaQuery == query) || null;\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._registry.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._registry.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._registry.map(it => !!it.suffix ? it.suffix : '');\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\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('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 {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}\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};\n\nexport const LAYOUT_CONFIG = new InjectionToken(\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 */\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/** HOF to sort the breakpoints by priority */\nexport function prioritySort(a: BreakPoint, b: BreakPoint): number {\n const priorityA = a.priority || 0;\n const priorityB = b.priority || 0;\n return priorityB - priorityA;\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: 599px)';\nconst HANDSET_LANDSCAPE = '(orientation: landscape) and (max-width: 959px)';\n\nconst TABLET_LANDSCAPE = '(orientation: landscape) and (min-width: 960px) and (max-width: 1279px)';\nconst TABLET_PORTRAIT = '(orientation: portrait) and (min-width: 600px) and (max-width: 839px)';\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', 'mediaQuery': ScreenTypes.HANDSET},\n {'alias': 'handset.landscape', 'mediaQuery': ScreenTypes.HANDSET_LANDSCAPE},\n {'alias': 'handset.portrait', 'mediaQuery': ScreenTypes.HANDSET_PORTRAIT},\n\n {'alias': 'tablet', 'mediaQuery': ScreenTypes.TABLET},\n {'alias': 'tablet.landscape', 'mediaQuery': ScreenTypes.TABLET},\n {'alias': 'tablet.portrait', 'mediaQuery': ScreenTypes.TABLET_PORTRAIT},\n\n {'alias': 'web', 'mediaQuery': ScreenTypes.WEB, overlapping : true },\n {'alias': 'web.landscape', 'mediaQuery': ScreenTypes.WEB_LANDSCAPE, overlapping : true },\n {'alias': 'web.portrait', '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\nexport const RESPONSIVE_ALIASES = [\n 'xs', 'gt-xs', 'sm', 'gt-sm', 'md', 'gt-md', 'lg', 'gt-lg', 'xl'\n];\n\nexport const DEFAULT_BREAKPOINTS: BreakPoint[] = [\n {\n alias: 'xs',\n mediaQuery: '(min-width: 0px) and (max-width: 599px)',\n priority: 100,\n },\n {\n alias: 'gt-xs',\n overlapping: true,\n mediaQuery: '(min-width: 600px)',\n priority: 7,\n },\n {\n alias: 'lt-sm',\n overlapping: true,\n mediaQuery: '(max-width: 599px)',\n priority: 10,\n },\n {\n alias: 'sm',\n mediaQuery: '(min-width: 600px) and (max-width: 959px)',\n priority: 100,\n },\n {\n alias: 'gt-sm',\n overlapping: true,\n mediaQuery: '(min-width: 960px)',\n priority: 8,\n },\n {\n alias: 'lt-md',\n overlapping: true,\n mediaQuery: '(max-width: 959px)',\n priority: 9,\n },\n {\n alias: 'md',\n mediaQuery: '(min-width: 960px) and (max-width: 1279px)',\n priority: 100,\n },\n {\n alias: 'gt-md',\n overlapping: true,\n mediaQuery: '(min-width: 1280px)',\n priority: 9,\n },\n {\n alias: 'lt-lg',\n overlapping: true,\n mediaQuery: '(max-width: 1279px)',\n priority: 8,\n },\n {\n alias: 'lg',\n mediaQuery: '(min-width: 1280px) and (max-width: 1919px)',\n priority: 100,\n },\n {\n alias: 'gt-lg',\n overlapping: true,\n mediaQuery: '(min-width: 1920px)',\n priority: 10,\n },\n {\n alias: 'lt-xl',\n overlapping: true,\n mediaQuery: '(max-width: 1919px)',\n priority: 7,\n },\n {\n alias: 'xl',\n mediaQuery: '(min-width: 1920px) and (max-width: 5000px)',\n priority: 100,\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 {InjectionToken} from '@angular/core';\nimport {BreakPoint} from '../breakpoints/break-point';\n\nexport const BREAKPOINT = new InjectionToken(\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 {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: void)[]>>APP_BOOTSTRAP_LISTENER,\n useFactory: removeStyles,\n deps: [DOCUMENT, PLATFORM_ID],\n multi: true\n};\n\nexport const CLASS_NAME = 'flex-layout-';\n"],"names":["map"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"core.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"],"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;\ntype BreakpointMap = Map;\ntype ElementMap = Map;\ntype ElementKeyMap = WeakMap>;\ntype SubscriptionMap = Map;\ntype WatcherMap = WeakMap;\ntype BuilderMap = WeakMap>;\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 = 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[] = []): 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 {\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[]) {\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)) {\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, Optional, 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(@Optional() private _serverStylesheet: StylesheetMap,\n @Optional() @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 /**\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\n this.deactivateAll();\n this.restoreRegistryMatches();\n this.setActivations(list);\n\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();\n queries.forEach(query => {\n registry.set(query, {matches: 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() {\n return this.matchMedia.activations;\n }\n\n private hasCachedRegistryMatches = false;\n private originalActivations: MediaChange[] = [];\n private originalRegistry: Map = new Map();\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})
` ;\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 v8.0.0-beta.26\n */\n readonly media$: Observable;\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 {\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 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 {\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;\n private readonly destroyed$ = new Subject();\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 : query;\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(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, PLATFORM_ID} 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 { isPlatformBrowser } 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 {\n constructor(\n protected breakpoints: BreakPointRegistry,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n @Inject(PLATFORM_ID) protected _platformId: Object) {\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 // 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 the platform is\n // not a browser(fallsback to mql print media queries).\n private registerBeforeAfterPrintHooks(target: HookTarget) {\n if (!isPlatformBrowser(this._platformId) || this.registeredBeforeAfterPrintHooks) {\n return;\n }\n\n this.registeredBeforeAfterPrintHooks = true;\n\n // Could we have teardown logic to remove if there are no print listeners being used?\n (window).addEventListener('beforeprint', () => {\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 (window).addEventListener('afterprint', () => {\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\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 /** 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- 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- 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 // 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.split(',').forEach(alias => activate(alias.trim()));\n }\n\n /**\n *\n */\n private _activateByQuery(mediaQuery: string) {\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(null, this);\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(null, this);\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(null, this);\n }\n }\n\n /** Don't need to remove listeners in the testing environment */\n removeListener(_: MediaQueryListListener | null) {\n }\n\n addEventListener(\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(\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, 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 {\n /** Initialize source with 'all' so all non-responsive APIs trigger style updates */\n readonly source = new BehaviorSubject(new MediaChange(true));\n registry = new Map();\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 : false;\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;\n observe(mediaQueries: string[]): Observable;\n observe(mediaQueries: string[], filterOthers: boolean): Observable;\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 {\n if (mqList && mqList.length) {\n const matchMedia$: Observable = this._observable$.pipe(\n filter((change: MediaChange) => {\n return !filterOthers ? true : (mqList.indexOf(change.mediaQuery) > -1);\n })\n );\n const registration$: Observable = new Observable((observer: Observer) => { // tslint:disable-line:max-line-length\n const matches: Array = 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.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 /**\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).matchMedia('all').addListener;\n\n return canListen ? (window).matchMedia(query) : {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => {\n },\n removeListener: () => {\n }\n } as unknown 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();\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(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(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('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.9px)';\nconst HANDSET_LANDSCAPE = '(orientation: landscape) and (max-width: 959.9px)';\n\nconst TABLET_PORTRAIT = '(orientation: portrait) and (min-width: 600px) and (max-width: 839.9px)';\nconst TABLET_LANDSCAPE = '(orientation: landscape) and (min-width: 960px) and (max-width: 1279.9px)';\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},\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.9px)',\n priority: 1000,\n },\n {\n alias: 'sm',\n mediaQuery: 'screen and (min-width: 600px) and (max-width: 959.9px)',\n priority: 900,\n },\n {\n alias: 'md',\n mediaQuery: 'screen and (min-width: 960px) and (max-width: 1279.9px)',\n priority: 800,\n },\n {\n alias: 'lg',\n mediaQuery: 'screen and (min-width: 1280px) and (max-width: 1919.9px)',\n priority: 700,\n },\n {\n alias: 'xl',\n mediaQuery: 'screen and (min-width: 1920px) and (max-width: 4999.9px)',\n priority: 600,\n },\n {\n alias: 'lt-sm',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 599.9px)',\n priority: 950,\n },\n {\n alias: 'lt-md',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 959.9px)',\n priority: 850,\n },\n {\n alias: 'lt-lg',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 1279.9px)',\n priority: 750,\n },\n {\n alias: 'lt-xl',\n overlapping: true,\n priority: 650,\n mediaQuery: 'screen and (max-width: 1919.9px)',\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 = new Subject();\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 = 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[] = []): 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 /** 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 this.addStyles(input);\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='' 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 : 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(\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(\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(\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>();\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 * Define module for the MediaQuery API\n * *****************************************************************\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: void)[]>>APP_BOOTSTRAP_LISTENER,\n useFactory: removeStyles,\n deps: [DOCUMENT, PLATFORM_ID],\n multi: true\n};\n\nexport const CLASS_NAME = 'flex-layout-';\n"],"names":["map"],"mappings":"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"} \ No newline at end of file diff --git a/esm2015/extended.js b/esm2015/extended.js index 77a8188f5..ed49d51b5 100644 --- a/esm2015/extended.js +++ b/esm2015/extended.js @@ -5,8 +5,8 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -import { Directive, ElementRef, Inject, PLATFORM_ID, Injectable, Input, NgModule, IterableDiffers, KeyValueDiffers, Optional, Renderer2, Self, SecurityContext, defineInjectable } from '@angular/core'; -import { isPlatformServer, NgClass, NgStyle } from '@angular/common'; +import { Directive, ElementRef, Inject, PLATFORM_ID, Injectable, Input, NgModule, Optional, Self, SecurityContext, ɵɵdefineInjectable } from '@angular/core'; +import { isPlatformServer, NgClass, ɵNgClassImpl, ɵNgClassR2Impl, NgStyle, ɵNgStyleImpl, ɵNgStyleR2Impl } from '@angular/common'; import { MediaMarshaller, BaseDirective2, SERVER_TOKEN, StyleBuilder, StyleUtils, LAYOUT_CONFIG, CoreModule } from '@angular/flex-layout/core'; import { coerceBooleanProperty } from '@angular/cdk/coercion'; import { takeUntil } from 'rxjs/operators'; @@ -14,7 +14,7 @@ import { DomSanitizer } from '@angular/platform-browser'; /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class ImgSrcStyleBuilder extends StyleBuilder { /** @@ -28,7 +28,7 @@ class ImgSrcStyleBuilder extends StyleBuilder { ImgSrcStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; -/** @nocollapse */ ImgSrcStyleBuilder.ngInjectableDef = defineInjectable({ factory: function ImgSrcStyleBuilder_Factory() { return new ImgSrcStyleBuilder(); }, token: ImgSrcStyleBuilder, providedIn: "root" }); +/** @nocollapse */ ImgSrcStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function ImgSrcStyleBuilder_Factory() { return new ImgSrcStyleBuilder(); }, token: ImgSrcStyleBuilder, providedIn: "root" }); class ImgSrcDirective extends BaseDirective2 { /** * @param {?} elementRef @@ -50,7 +50,7 @@ class ImgSrcDirective extends BaseDirective2 { this.defaultSrc = ''; this.styleCache = imgSrcCache; this.init(); - this.setValue('', this.nativeElement.getAttribute('src') || ''); + this.setValue(this.nativeElement.getAttribute('src') || '', ''); if (isPlatformServer(this.platformId) && this.serverModuleLoaded) { this.nativeElement.setAttribute('src', ''); } @@ -61,7 +61,7 @@ class ImgSrcDirective extends BaseDirective2 { */ set src(val) { this.defaultSrc = val; - this.setValue('', this.defaultSrc); + this.setValue(this.defaultSrc, ''); } /** * Use the [responsively] activated input value to update @@ -70,16 +70,18 @@ class ImgSrcDirective extends BaseDirective2 { * * Do nothing to standard `` usages, only when responsive * keys are present do we actually call `setAttribute()` + * @protected + * @param {?=} value * @return {?} */ - updateWithValue() { + updateWithValue(value) { /** @type {?} */ - let url = this.activatedValue || this.defaultSrc; + const url = value || this.defaultSrc; if (isPlatformServer(this.platformId) && this.serverModuleLoaded) { this.addStyles(url); } else { - this.nativeElement.setAttribute('src', String(url)); + this.nativeElement.setAttribute('src', url); } } } @@ -130,34 +132,31 @@ DefaultImgSrcDirective.decorators = [ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class ClassDirective extends BaseDirective2 { /** * @param {?} elementRef * @param {?} styler * @param {?} marshal - * @param {?} iterableDiffers - * @param {?} keyValueDiffers - * @param {?} renderer + * @param {?} delegate * @param {?} ngClassInstance */ - constructor(elementRef, styler, marshal, iterableDiffers, keyValueDiffers, renderer, ngClassInstance) { - super(elementRef, /** @type {?} */ ((null)), styler, marshal); + constructor(elementRef, styler, marshal, delegate, ngClassInstance) { + super(elementRef, (/** @type {?} */ (null)), styler, marshal); this.elementRef = elementRef; this.styler = styler; this.marshal = marshal; - this.iterableDiffers = iterableDiffers; - this.keyValueDiffers = keyValueDiffers; - this.renderer = renderer; + this.delegate = delegate; this.ngClassInstance = ngClassInstance; this.DIRECTIVE_KEY = 'ngClass'; if (!this.ngClassInstance) { // Create an instance NgClass Directive instance only if `ngClass=""` has NOT been defined on // the same host element; since the responsive variations may be defined... - this.ngClassInstance = new NgClass(this.iterableDiffers, this.keyValueDiffers, this.elementRef, this.renderer); + this.ngClassInstance = new NgClass(this.delegate); } this.init(); + this.setValue('', ''); } /** * Capture class assignments so we cache the default classes @@ -170,6 +169,7 @@ class ClassDirective extends BaseDirective2 { this.setValue(val, ''); } /** + * @protected * @param {?} value * @return {?} */ @@ -177,6 +177,9 @@ class ClassDirective extends BaseDirective2 { this.ngClassInstance.ngClass = value; this.ngClassInstance.ngDoCheck(); } + // ****************************************************************** + // Lifecycle Hooks + // ****************************************************************** /** * For ChangeDetectionStrategy.onPush and ngOnChanges() updates * @return {?} @@ -190,9 +193,7 @@ ClassDirective.ctorParameters = () => [ { type: ElementRef }, { type: StyleUtils }, { type: MediaMarshaller }, - { type: IterableDiffers }, - { type: KeyValueDiffers }, - { type: Renderer2 }, + { type: ɵNgClassImpl }, { type: NgClass, decorators: [{ type: Optional }, { type: Self }] } ]; ClassDirective.propDecorators = { @@ -210,6 +211,12 @@ const selector$1 = ` [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg] `; +// tslint:disable-next-line:variable-name +/** @type {?} */ +const LayoutNgClassImplProvider = { + provide: ɵNgClassImpl, + useClass: ɵNgClassR2Impl +}; /** * Directive to add responsive support for ngClass. * This maintains the core functionality of 'ngClass' and adds responsive API @@ -222,27 +229,13 @@ class DefaultClassDirective extends ClassDirective { } } DefaultClassDirective.decorators = [ - { type: Directive, args: [{ selector: selector$1, inputs: inputs$1 },] }, + { type: Directive, args: [{ selector: selector$1, inputs: inputs$1, providers: [LayoutNgClassImplProvider] },] }, ]; /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -/** - * For fxHide selectors, we invert the 'value' - * and assign to the equivalent fxShow selector cache - * - When 'hide' === '' === true, do NOT show the element - * - When 'hide' === false or 0... we WILL show the element - * @deprecated - * \@deletion-target v7.0.0-beta.21 - * @param {?} hide - * @return {?} - */ -function negativeOf(hide) { - return (hide === '') ? false : - ((hide === 'false') || (hide === 0)) ? true : !hide; -} class ShowHideStyleBuilder extends StyleBuilder { /** * @param {?} show @@ -258,7 +251,7 @@ class ShowHideStyleBuilder extends StyleBuilder { ShowHideStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; -/** @nocollapse */ ShowHideStyleBuilder.ngInjectableDef = defineInjectable({ factory: function ShowHideStyleBuilder_Factory() { return new ShowHideStyleBuilder(); }, token: ShowHideStyleBuilder, providedIn: "root" }); +/** @nocollapse */ ShowHideStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function ShowHideStyleBuilder_Factory() { return new ShowHideStyleBuilder(); }, token: ShowHideStyleBuilder, providedIn: "root" }); class ShowHideDirective extends BaseDirective2 { /** * @param {?} elementRef @@ -286,30 +279,31 @@ class ShowHideDirective extends BaseDirective2 { this.hasLayout = false; this.hasFlexChild = false; } + // ********************************************* + // Lifecycle Methods + // ********************************************* /** * @return {?} */ ngAfterViewInit() { - this.hasLayout = this.marshal.hasValue(this.nativeElement, 'layout'); - this.marshal.trackValue(this.nativeElement, 'layout') - .pipe(takeUntil(this.destroySubject)) - .subscribe(this.updateWithValue.bind(this)); + this.trackExtraTriggers(); /** @type {?} */ const children = Array.from(this.nativeElement.children); for (let i = 0; i < children.length; i++) { - if (this.marshal.hasValue(/** @type {?} */ (children[i]), 'flex')) { + if (this.marshal.hasValue((/** @type {?} */ (children[i])), 'flex')) { this.hasFlexChild = true; break; } } if (DISPLAY_MAP.has(this.nativeElement)) { - this.display = /** @type {?} */ ((DISPLAY_MAP.get(this.nativeElement))); + this.display = (/** @type {?} */ (DISPLAY_MAP.get(this.nativeElement))); } else { this.display = this.getDisplayStyle(); DISPLAY_MAP.set(this.nativeElement, this.display); } this.init(); + // set the default to show unless explicitly overridden /** @type {?} */ const defaultValue = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY, ''); if (defaultValue === undefined || defaultValue === '') { @@ -327,7 +321,11 @@ class ShowHideDirective extends BaseDirective2 { * @return {?} */ ngOnChanges(changes) { - Object.keys(changes).forEach(key => { + Object.keys(changes).forEach((/** + * @param {?} key + * @return {?} + */ + key => { if (this.inputs.indexOf(key) !== -1) { /** @type {?} */ const inputKey = key.split('.'); @@ -344,12 +342,34 @@ class ShowHideDirective extends BaseDirective2 { } this.setValue(shouldShow, bp); } - }); + })); + } + // ********************************************* + // Protected methods + // ********************************************* + /** + * Watch for these extra triggers to update fxShow, fxHide stylings + * @protected + * @return {?} + */ + trackExtraTriggers() { + this.hasLayout = this.marshal.hasValue(this.nativeElement, 'layout'); + ['layout', 'layout-align'].forEach((/** + * @param {?} key + * @return {?} + */ + key => { + this.marshal + .trackValue(this.nativeElement, key) + .pipe(takeUntil(this.destroySubject)) + .subscribe(this.triggerUpdate.bind(this)); + })); } /** * Override accessor to the current HTMLElement's `display` style * Note: Show/Hide will not change the display to 'flex' but will set it to 'block' * unless it was already explicitly specified inline or in a CSS stylesheet. + * @protected * @return {?} */ getDisplayStyle() { @@ -358,6 +378,7 @@ class ShowHideDirective extends BaseDirective2 { } /** * Validate the visibility value and then update the host's inline display style + * @protected * @param {?=} value * @return {?} */ @@ -369,6 +390,7 @@ class ShowHideDirective extends BaseDirective2 { if (isPlatformServer(this.platformId) && this.serverModuleLoaded) { this.nativeElement.style.setProperty('display', ''); } + this.marshal.triggerUpdate((/** @type {?} */ (this.parentElement)), 'layout-gap'); } } /** @nocollapse */ @@ -385,22 +407,22 @@ ShowHideDirective.ctorParameters = () => [ const DISPLAY_MAP = new WeakMap(); /** @type {?} */ const inputs$2 = [ - 'fxShow', + 'fxShow', 'fxShow.print', 'fxShow.xs', 'fxShow.sm', 'fxShow.md', 'fxShow.lg', 'fxShow.xl', 'fxShow.lt-sm', 'fxShow.lt-md', 'fxShow.lt-lg', 'fxShow.lt-xl', 'fxShow.gt-xs', 'fxShow.gt-sm', 'fxShow.gt-md', 'fxShow.gt-lg', - 'fxHide', + 'fxHide', 'fxHide.print', 'fxHide.xs', 'fxHide.sm', 'fxHide.md', 'fxHide.lg', 'fxHide.xl', 'fxHide.lt-sm', 'fxHide.lt-md', 'fxHide.lt-lg', 'fxHide.lt-xl', 'fxHide.gt-xs', 'fxHide.gt-sm', 'fxHide.gt-md', 'fxHide.gt-lg' ]; /** @type {?} */ const selector$2 = ` - [fxShow], + [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], - [fxHide], + [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg] @@ -420,8 +442,9 @@ DefaultShowHideDirective.decorators = [ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ + /** * NgStyle allowed inputs */ @@ -463,8 +486,16 @@ function buildRawList(source, delimiter = ';') { return String(source) .trim() .split(delimiter) - .map((val) => val.trim()) - .filter(val => val !== ''); + .map((/** + * @param {?} val + * @return {?} + */ + (val) => val.trim())) + .filter((/** + * @param {?} val + * @return {?} + */ + val => val !== '')); } /** * Convert array of key:value strings to a iterable map object @@ -474,17 +505,25 @@ function buildRawList(source, delimiter = ';') { */ function buildMapFromList(styles, sanitize) { /** @type {?} */ - const sanitizeValue = (it) => { + const sanitizeValue = (/** + * @param {?} it + * @return {?} + */ + (it) => { if (sanitize) { it.value = sanitize(it.value); } return it; - }; + }); return styles .map(stringToKeyValue) - .filter(entry => !!entry) + .filter((/** + * @param {?} entry + * @return {?} + */ + entry => !!entry)) .map(sanitizeValue) - .reduce(keyValuesToMap, /** @type {?} */ ({})); + .reduce(keyValuesToMap, (/** @type {?} */ ({}))); } /** * Convert Set or raw Object to an iterable NgStyleMap @@ -496,12 +535,20 @@ function buildMapFromSet(source, sanitize) { /** @type {?} */ let list = []; if (getType(source) === 'set') { - (/** @type {?} */ (source)).forEach(entry => list.push(entry)); + ((/** @type {?} */ (source))).forEach((/** + * @param {?} entry + * @return {?} + */ + entry => list.push(entry))); } else { - Object.keys(source).forEach((key) => { + Object.keys(source).forEach((/** + * @param {?} key + * @return {?} + */ + (key) => { list.push(`${key}:${((/** @type {?} */ (source)))[key]}`); - }); + })); } return buildMapFromList(list, sanitize); } @@ -529,40 +576,42 @@ function keyValuesToMap(map, entry) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class StyleDirective extends BaseDirective2 { /** * @param {?} elementRef * @param {?} styler * @param {?} marshal - * @param {?} keyValueDiffers - * @param {?} renderer + * @param {?} delegate * @param {?} sanitizer * @param {?} ngStyleInstance + * @param {?} serverLoaded + * @param {?} platformId */ - constructor(elementRef, styler, marshal, keyValueDiffers, renderer, sanitizer, ngStyleInstance) { - super(elementRef, /** @type {?} */ ((null)), styler, marshal); + constructor(elementRef, styler, marshal, delegate, sanitizer, ngStyleInstance, serverLoaded, platformId) { + super(elementRef, (/** @type {?} */ (null)), styler, marshal); this.elementRef = elementRef; this.styler = styler; this.marshal = marshal; - this.keyValueDiffers = keyValueDiffers; - this.renderer = renderer; + this.delegate = delegate; this.sanitizer = sanitizer; this.ngStyleInstance = ngStyleInstance; this.DIRECTIVE_KEY = 'ngStyle'; - this.fallbackStyles = {}; if (!this.ngStyleInstance) { // Create an instance NgClass Directive instance only if `ngClass=""` has NOT been // defined on the same host element; since the responsive variations may be defined... - this.ngStyleInstance = new NgStyle(this.keyValueDiffers, this.elementRef, this.renderer); + this.ngStyleInstance = new NgStyle(this.delegate); } this.init(); /** @type {?} */ const styles = this.nativeElement.getAttribute('style') || ''; this.fallbackStyles = this.buildStyleMap(styles); + this.isServer = serverLoaded && isPlatformServer(platformId); } /** + * Add generated styles + * @protected * @param {?} value * @return {?} */ @@ -570,6 +619,18 @@ class StyleDirective extends BaseDirective2 { /** @type {?} */ const styles = this.buildStyleMap(value); this.ngStyleInstance.ngStyle = Object.assign({}, this.fallbackStyles, styles); + if (this.isServer) { + this.applyStyleToElement(styles); + } + this.ngStyleInstance.ngDoCheck(); + } + /** + * Remove generated styles + * @protected + * @return {?} + */ + clearStyles() { + this.ngStyleInstance.ngStyle = this.fallbackStyles; this.ngStyleInstance.ngDoCheck(); } /** @@ -577,22 +638,31 @@ class StyleDirective extends BaseDirective2 { * NOTE: Raw string key-value pairs MUST be delimited by `;` * Comma-delimiters are not supported due to complexities of * possible style values such as `rgba(x,x,x,x)` and others + * @protected * @param {?} styles * @return {?} */ buildStyleMap(styles) { + // Always safe-guard (aka sanitize) style property values /** @type {?} */ - const sanitizer = (val) => this.sanitizer.sanitize(SecurityContext.STYLE, val) || ''; + const sanitizer = (/** + * @param {?} val + * @return {?} + */ + (val) => this.sanitizer.sanitize(SecurityContext.STYLE, val) || ''); if (styles) { switch (getType(styles)) { case 'string': return buildMapFromList$1(buildRawList(styles), sanitizer); - case 'array': return buildMapFromList$1(/** @type {?} */ (styles), sanitizer); + case 'array': return buildMapFromList$1((/** @type {?} */ (styles)), sanitizer); case 'set': return buildMapFromSet(styles, sanitizer); default: return buildMapFromSet(styles, sanitizer); } } return {}; } + // ****************************************************************** + // Lifecycle Hooks + // ****************************************************************** /** * For ChangeDetectionStrategy.onPush and ngOnChanges() updates * @return {?} @@ -606,10 +676,11 @@ StyleDirective.ctorParameters = () => [ { type: ElementRef }, { type: StyleUtils }, { type: MediaMarshaller }, - { type: KeyValueDiffers }, - { type: Renderer2 }, + { type: ɵNgStyleImpl }, { type: DomSanitizer }, - { type: NgStyle, decorators: [{ type: Optional }, { type: Self }] } + { type: NgStyle, decorators: [{ type: Optional }, { type: Self }] }, + { type: Boolean, decorators: [{ type: Optional }, { type: Inject, args: [SERVER_TOKEN,] }] }, + { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] } ]; /** @type {?} */ const inputs$3 = [ @@ -625,6 +696,12 @@ const selector$3 = ` [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg] `; +// tslint:disable-next-line:variable-name +/** @type {?} */ +const LayoutNgStyleImplProvider = { + provide: ɵNgStyleImpl, + useClass: ɵNgStyleR2Impl +}; /** * Directive to add responsive support for ngStyle. * @@ -636,7 +713,7 @@ class DefaultStyleDirective extends StyleDirective { } } DefaultStyleDirective.decorators = [ - { type: Directive, args: [{ selector: selector$3, inputs: inputs$3 },] }, + { type: Directive, args: [{ selector: selector$3, inputs: inputs$3, providers: [LayoutNgStyleImplProvider] },] }, ]; /** * Build a styles map from a list of styles, while sanitizing bad values first @@ -646,22 +723,30 @@ DefaultStyleDirective.decorators = [ */ function buildMapFromList$1(styles, sanitize) { /** @type {?} */ - const sanitizeValue = (it) => { + const sanitizeValue = (/** + * @param {?} it + * @return {?} + */ + (it) => { if (sanitize) { it.value = sanitize(it.value); } return it; - }; + }); return styles .map(stringToKeyValue) - .filter(entry => !!entry) + .filter((/** + * @param {?} entry + * @return {?} + */ + entry => !!entry)) .map(sanitizeValue) - .reduce(keyValuesToMap, /** @type {?} */ ({})); + .reduce(keyValuesToMap, (/** @type {?} */ ({}))); } /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const ALL_DIRECTIVES = [ @@ -687,13 +772,13 @@ ExtendedModule.decorators = [ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -export { ExtendedModule, ClassDirective, DefaultClassDirective, ImgSrcStyleBuilder, ImgSrcDirective, DefaultImgSrcDirective, negativeOf, ShowHideStyleBuilder, ShowHideDirective, DefaultShowHideDirective, StyleDirective, DefaultStyleDirective }; +export { ExtendedModule, ClassDirective, LayoutNgClassImplProvider, DefaultClassDirective, ImgSrcStyleBuilder, ImgSrcDirective, DefaultImgSrcDirective, ShowHideStyleBuilder, ShowHideDirective, DefaultShowHideDirective, StyleDirective, LayoutNgStyleImplProvider, DefaultStyleDirective }; //# sourceMappingURL=extended.js.map diff --git a/esm2015/extended.js.map b/esm2015/extended.js.map index 0bb0e4cb6..1df0ee3d1 100644 --- a/esm2015/extended.js.map +++ b/esm2015/extended.js.map @@ -1 +1 @@ -{"version":3,"file":"extended.js","sources":["../../../src/lib/extended/module.ts","../../../src/lib/extended/style/style.ts","../../../src/lib/extended/style/style-transforms.ts","../../../src/lib/extended/show-hide/show-hide.ts","../../../src/lib/extended/class/class.ts","../../../src/lib/extended/img-src/img-src.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {NgModule} from '@angular/core';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultImgSrcDirective} from './img-src/img-src';\nimport {DefaultClassDirective} from './class/class';\nimport {DefaultShowHideDirective} from './show-hide/show-hide';\nimport {DefaultStyleDirective} from './style/style';\n\n\nconst ALL_DIRECTIVES = [\n DefaultShowHideDirective,\n DefaultClassDirective,\n DefaultStyleDirective,\n DefaultImgSrcDirective\n];\n\n/**\n * *****************************************************************\n * Define module for the Extended API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class ExtendedModule {\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 {\n Directive,\n DoCheck,\n ElementRef,\n KeyValueDiffers,\n Optional,\n Renderer2,\n SecurityContext,\n Self,\n} from '@angular/core';\nimport {NgStyle} from '@angular/common';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {BaseDirective2, StyleUtils, MediaMarshaller} from '@angular/flex-layout/core';\n\nimport {\n NgStyleRawList,\n NgStyleType,\n NgStyleSanitizer,\n buildRawList,\n getType,\n buildMapFromSet,\n NgStyleMap,\n NgStyleKeyValue,\n stringToKeyValue,\n keyValuesToMap,\n} from './style-transforms';\n\nexport class StyleDirective extends BaseDirective2 implements DoCheck {\n\n protected DIRECTIVE_KEY = 'ngStyle';\n protected fallbackStyles: NgStyleMap = {};\n\n constructor(protected elementRef: ElementRef,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n protected keyValueDiffers: KeyValueDiffers,\n protected renderer: Renderer2,\n protected sanitizer: DomSanitizer,\n @Optional() @Self() private readonly ngStyleInstance: NgStyle) {\n super(elementRef, null!, styler, marshal);\n if (!this.ngStyleInstance) {\n // Create an instance NgClass Directive instance only if `ngClass=\"\"` has NOT been\n // defined on the same host element; since the responsive variations may be defined...\n this.ngStyleInstance = new NgStyle(this.keyValueDiffers, this.elementRef, this.renderer);\n }\n this.init();\n const styles = this.nativeElement.getAttribute('style') || '';\n this.fallbackStyles = this.buildStyleMap(styles);\n }\n\n protected updateWithValue(value: any) {\n const styles = this.buildStyleMap(value);\n this.ngStyleInstance.ngStyle = {...this.fallbackStyles, ...styles};\n this.ngStyleInstance.ngDoCheck();\n }\n\n /**\n * Convert raw strings to ngStyleMap; which is required by ngStyle\n * NOTE: Raw string key-value pairs MUST be delimited by `;`\n * Comma-delimiters are not supported due to complexities of\n * possible style values such as `rgba(x,x,x,x)` and others\n */\n protected buildStyleMap(styles: NgStyleType): NgStyleMap {\n // Always safe-guard (aka sanitize) style property values\n const sanitizer: NgStyleSanitizer = (val: any) =>\n this.sanitizer.sanitize(SecurityContext.STYLE, val) || '';\n if (styles) {\n switch (getType(styles)) {\n case 'string': return buildMapFromList(buildRawList(styles),\n sanitizer);\n case 'array' : return buildMapFromList(styles as NgStyleRawList, sanitizer);\n case 'set' : return buildMapFromSet(styles, sanitizer);\n default : return buildMapFromSet(styles, sanitizer);\n }\n }\n\n return {};\n }\n\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n\n /** For ChangeDetectionStrategy.onPush and ngOnChanges() updates */\n ngDoCheck() {\n this.ngStyleInstance.ngDoCheck();\n }\n}\n\nconst inputs = [\n 'ngStyle',\n 'ngStyle.xs', 'ngStyle.sm', 'ngStyle.md', 'ngStyle.lg', 'ngStyle.xl',\n 'ngStyle.lt-sm', 'ngStyle.lt-md', 'ngStyle.lt-lg', 'ngStyle.lt-xl',\n 'ngStyle.gt-xs', 'ngStyle.gt-sm', 'ngStyle.gt-md', 'ngStyle.gt-lg'\n];\n\nconst selector = `\n [ngStyle],\n [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl],\n [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl],\n [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]\n`;\n\n/**\n * Directive to add responsive support for ngStyle.\n *\n */\n@Directive({selector, inputs})\nexport class DefaultStyleDirective extends StyleDirective implements DoCheck {\n protected inputs = inputs;\n}\n\n/** Build a styles map from a list of styles, while sanitizing bad values first */\nfunction buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap {\n const sanitizeValue = (it: NgStyleKeyValue) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n };\n\n return styles\n .map(stringToKeyValue)\n .filter(entry => !!entry)\n .map(sanitizeValue)\n .reduce(keyValuesToMap, {} as NgStyleMap);\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\nexport type NgStyleRawList = string[];\nexport type NgStyleMap = {[klass: string]: string};\n// NgStyle selectors accept NgStyleType values\nexport type NgStyleType = string | Set | NgStyleRawList | NgStyleMap;\n\n/**\n * Callback function for SecurityContext.STYLE sanitization\n */\nexport type NgStyleSanitizer = (val: any) => string;\n\n/** NgStyle allowed inputs */\nexport class NgStyleKeyValue {\n constructor(public key: string, public value: string, noQuotes = true) {\n this.key = noQuotes ? key.replace(/['\"]/g, '').trim() : key.trim();\n\n this.value = noQuotes ? value.replace(/['\"]/g, '').trim() : value.trim();\n this.value = this.value.replace(/;/, '');\n }\n}\n\nexport function getType(target: any): string {\n let what = typeof target;\n if (what === 'object') {\n return (target.constructor === Array) ? 'array' :\n (target.constructor === Set) ? 'set' : 'object';\n }\n return what;\n}\n\n/**\n * Split string of key:value pairs into Array of k-v pairs\n * e.g. 'key:value; key:value; key:value;' -> ['key:value',...]\n */\nexport function buildRawList(source: any, delimiter = ';'): NgStyleRawList {\n return String(source)\n .trim()\n .split(delimiter)\n .map((val: string) => val.trim())\n .filter(val => val !== '');\n}\n\n/** Convert array of key:value strings to a iterable map object */\nexport function buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap {\n const sanitizeValue = (it: NgStyleKeyValue) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n };\n\n return styles\n .map(stringToKeyValue)\n .filter(entry => !!entry)\n .map(sanitizeValue)\n .reduce(keyValuesToMap, {} as NgStyleMap);\n}\n\n/** Convert Set or raw Object to an iterable NgStyleMap */\nexport function buildMapFromSet(source: NgStyleType, sanitize?: NgStyleSanitizer): NgStyleMap {\n let list: string[] = [];\n if (getType(source) === 'set') {\n (source as Set).forEach(entry => list.push(entry));\n } else {\n Object.keys(source).forEach((key: string) => {\n list.push(`${key}:${(source as NgStyleMap)[key]}`);\n });\n }\n return buildMapFromList(list, sanitize);\n}\n\n\n/** Convert 'key:value' -> [key, value] */\nexport function stringToKeyValue(it: string): NgStyleKeyValue {\n const [key, ...vals] = it.split(':');\n return new NgStyleKeyValue(key, vals.join(':'));\n}\n\n/** Convert [ [key,value] ] -> { key : value } */\nexport function keyValuesToMap(map: NgStyleMap, entry: NgStyleKeyValue): NgStyleMap {\n if (!!entry.key) {\n map[entry.key] = entry.value;\n }\n return map;\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 {\n Directive,\n ElementRef,\n OnChanges,\n SimpleChanges,\n Optional,\n Inject,\n PLATFORM_ID,\n Injectable,\n AfterViewInit,\n} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n BaseDirective2,\n LAYOUT_CONFIG,\n LayoutConfigOptions,\n MediaMarshaller,\n SERVER_TOKEN,\n StyleUtils,\n StyleBuilder,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {takeUntil} from 'rxjs/operators';\n\n/**\n * For fxHide selectors, we invert the 'value'\n * and assign to the equivalent fxShow selector cache\n * - When 'hide' === '' === true, do NOT show the element\n * - When 'hide' === false or 0... we WILL show the element\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport function negativeOf(hide: any) {\n return (hide === '') ? false :\n ((hide === 'false') || (hide === 0)) ? true : !hide;\n}\n\nexport interface ShowHideParent {\n display: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class ShowHideStyleBuilder extends StyleBuilder {\n buildStyles(show: string, parent: ShowHideParent) {\n const shouldShow = show === 'true';\n return {'display': shouldShow ? parent.display : 'none'};\n }\n}\n\nexport class ShowHideDirective extends BaseDirective2 implements AfterViewInit, OnChanges {\n protected DIRECTIVE_KEY = 'show-hide';\n\n /** Original dom Elements CSS display style */\n protected display: string = '';\n protected hasLayout = false;\n protected hasFlexChild = false;\n\n constructor(protected elementRef: ElementRef,\n protected styleBuilder: ShowHideStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n @Inject(PLATFORM_ID) protected platformId: Object,\n @Optional() @Inject(SERVER_TOKEN) protected serverModuleLoaded: boolean) {\n super(elementRef, styleBuilder, styler, marshal);\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n ngAfterViewInit() {\n this.hasLayout = this.marshal.hasValue(this.nativeElement, 'layout');\n this.marshal.trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.updateWithValue.bind(this));\n\n const children = Array.from(this.nativeElement.children);\n for (let i = 0; i < children.length; i++) {\n if (this.marshal.hasValue(children[i] as HTMLElement, 'flex')) {\n this.hasFlexChild = true;\n break;\n }\n }\n\n if (DISPLAY_MAP.has(this.nativeElement)) {\n this.display = DISPLAY_MAP.get(this.nativeElement)!;\n } else {\n this.display = this.getDisplayStyle();\n DISPLAY_MAP.set(this.nativeElement, this.display);\n }\n\n this.init();\n // set the default to show unless explicitly overridden\n const defaultValue = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY, '');\n if (defaultValue === undefined || defaultValue === '') {\n this.setValue(true, '');\n } else {\n this.triggerUpdate();\n }\n }\n\n /**\n * On changes to any @Input properties...\n * Default to use the non-responsive Input value ('fxShow')\n * Then conditionally override with the mq-activated Input's current value\n */\n ngOnChanges(changes: SimpleChanges) {\n Object.keys(changes).forEach(key => {\n if (this.inputs.indexOf(key) !== -1) {\n const inputKey = key.split('.');\n const bp = inputKey.slice(1).join('.');\n const inputValue = changes[key].currentValue;\n let shouldShow = inputValue !== '' ?\n inputValue !== 0 ? coerceBooleanProperty(inputValue) : false\n : true;\n if (inputKey[0] === 'fxHide') {\n shouldShow = !shouldShow;\n }\n this.setValue(shouldShow, bp);\n }\n });\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Override accessor to the current HTMLElement's `display` style\n * Note: Show/Hide will not change the display to 'flex' but will set it to 'block'\n * unless it was already explicitly specified inline or in a CSS stylesheet.\n */\n protected getDisplayStyle(): string {\n return (this.hasLayout || (this.hasFlexChild && this.layoutConfig.addFlexToParent)) ?\n 'flex' : this.styler.lookupStyle(this.nativeElement, 'display', true);\n }\n\n /** Validate the visibility value and then update the host's inline display style */\n protected updateWithValue(value: boolean|string = true) {\n if (value === '') {\n return;\n }\n this.addStyles(value ? 'true' : 'false', {display: this.display});\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.nativeElement.style.setProperty('display', '');\n }\n }\n}\n\nconst DISPLAY_MAP: WeakMap = new WeakMap();\n\nconst inputs = [\n 'fxShow',\n 'fxShow.xs', 'fxShow.sm', 'fxShow.md', 'fxShow.lg', 'fxShow.xl',\n 'fxShow.lt-sm', 'fxShow.lt-md', 'fxShow.lt-lg', 'fxShow.lt-xl',\n 'fxShow.gt-xs', 'fxShow.gt-sm', 'fxShow.gt-md', 'fxShow.gt-lg',\n 'fxHide',\n 'fxHide.xs', 'fxHide.sm', 'fxHide.md', 'fxHide.lg', 'fxHide.xl',\n 'fxHide.lt-sm', 'fxHide.lt-md', 'fxHide.lt-lg', 'fxHide.lt-xl',\n 'fxHide.gt-xs', 'fxHide.gt-sm', 'fxHide.gt-md', 'fxHide.gt-lg'\n];\n\nconst selector = `\n [fxShow],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n`;\n\n/**\n * 'show' Layout API directive\n */\n@Directive({selector, inputs})\nexport class DefaultShowHideDirective extends ShowHideDirective {\n protected inputs = inputs;\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 {\n Directive,\n DoCheck,\n ElementRef,\n Input,\n IterableDiffers,\n KeyValueDiffers,\n Optional,\n Renderer2,\n Self,\n} from '@angular/core';\nimport {NgClass} from '@angular/common';\nimport {BaseDirective2, StyleUtils, MediaMarshaller} from '@angular/flex-layout/core';\n\nexport class ClassDirective extends BaseDirective2 implements DoCheck {\n\n protected DIRECTIVE_KEY = 'ngClass';\n\n /**\n * Capture class assignments so we cache the default classes\n * which are merged with activated styles and used as fallbacks.\n */\n @Input('class')\n set klass(val: string) {\n this.ngClassInstance.klass = val;\n this.setValue(val, '');\n }\n\n constructor(protected elementRef: ElementRef,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n protected iterableDiffers: IterableDiffers,\n protected keyValueDiffers: KeyValueDiffers,\n protected renderer: Renderer2,\n @Optional() @Self() protected readonly ngClassInstance: NgClass) {\n super(elementRef, null!, styler, marshal);\n if (!this.ngClassInstance) {\n // Create an instance NgClass Directive instance only if `ngClass=\"\"` has NOT been defined on\n // the same host element; since the responsive variations may be defined...\n this.ngClassInstance = new NgClass(\n this.iterableDiffers, this.keyValueDiffers, this.elementRef, this.renderer\n );\n }\n this.init();\n }\n\n protected updateWithValue(value: any) {\n this.ngClassInstance.ngClass = value;\n this.ngClassInstance.ngDoCheck();\n }\n\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n\n /**\n * For ChangeDetectionStrategy.onPush and ngOnChanges() updates\n */\n ngDoCheck() {\n this.ngClassInstance.ngDoCheck();\n }\n}\n\nconst inputs = [\n 'ngClass', 'ngClass.xs', 'ngClass.sm', 'ngClass.md', 'ngClass.lg', 'ngClass.xl',\n 'ngClass.lt-sm', 'ngClass.lt-md', 'ngClass.lt-lg', 'ngClass.lt-xl',\n 'ngClass.gt-xs', 'ngClass.gt-sm', 'ngClass.gt-md', 'ngClass.gt-lg'\n];\n\nconst selector = `\n [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl],\n [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl],\n [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]\n`;\n\n/**\n * Directive to add responsive support for ngClass.\n * This maintains the core functionality of 'ngClass' and adds responsive API\n * Note: this class is a no-op when rendered on the server\n */\n@Directive({selector, inputs})\nexport class DefaultClassDirective extends ClassDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Inject, PLATFORM_ID, Injectable, Input} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n MediaMarshaller,\n BaseDirective2,\n SERVER_TOKEN,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class ImgSrcStyleBuilder extends StyleBuilder {\n buildStyles(url: string) {\n return {'content': url ? `url(${url})` : ''};\n }\n}\n\nexport class ImgSrcDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'img-src';\n protected defaultSrc = '';\n\n @Input('src')\n set src(val: string) {\n this.defaultSrc = val;\n this.setValue('', this.defaultSrc);\n }\n\n constructor(protected elementRef: ElementRef,\n protected styleBuilder: ImgSrcStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n @Inject(PLATFORM_ID) protected platformId: Object,\n @Inject(SERVER_TOKEN) protected serverModuleLoaded: boolean) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n this.setValue('', this.nativeElement.getAttribute('src') || '');\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.nativeElement.setAttribute('src', '');\n }\n }\n\n /**\n * Use the [responsively] activated input value to update\n * the host img src attribute or assign a default `img.src=''`\n * if the src has not been defined.\n *\n * Do nothing to standard `` usages, only when responsive\n * keys are present do we actually call `setAttribute()`\n */\n protected updateWithValue() {\n let url = this.activatedValue || this.defaultSrc;\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.addStyles(url);\n } else {\n this.nativeElement.setAttribute('src', String(url));\n }\n }\n\n protected styleCache = imgSrcCache;\n}\n\nconst imgSrcCache: Map = new Map();\n\nconst inputs = [\n 'src.xs', 'src.sm', 'src.md', 'src.lg', 'src.xl',\n 'src.lt-sm', 'src.lt-md', 'src.lt-lg', 'src.lt-xl',\n 'src.gt-xs', 'src.gt-sm', 'src.gt-md', 'src.gt-lg'\n];\n\nconst selector = `\n img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl],\n img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl],\n img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]\n`;\n\n/**\n * This directive provides a responsive API for the HTML 'src' attribute\n * and will update the img.src property upon each responsive activation.\n *\n * e.g.\n * \n *\n * @see https://css-tricks.com/responsive-images-youre-just-changing-resolutions-use-src/\n */\n@Directive({selector, inputs})\nexport class DefaultImgSrcDirective extends ImgSrcDirective {\n protected inputs = inputs;\n}\n"],"names":["buildMapFromList","selector","inputs"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"extended.js","sources":["../../../src/lib/extended/module.ts","../../../src/lib/extended/style/style.ts","../../../src/lib/extended/style/style-transforms.ts","../../../src/lib/extended/show-hide/show-hide.ts","../../../src/lib/extended/class/class.ts","../../../src/lib/extended/img-src/img-src.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {NgModule} from '@angular/core';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultImgSrcDirective} from './img-src/img-src';\nimport {DefaultClassDirective} from './class/class';\nimport {DefaultShowHideDirective} from './show-hide/show-hide';\nimport {DefaultStyleDirective} from './style/style';\n\n\nconst ALL_DIRECTIVES = [\n DefaultShowHideDirective,\n DefaultClassDirective,\n DefaultStyleDirective,\n DefaultImgSrcDirective\n];\n\n/**\n * *****************************************************************\n * Define module for the Extended API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class ExtendedModule {\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 {\n Directive,\n DoCheck,\n ElementRef,\n Inject,\n Optional,\n PLATFORM_ID,\n SecurityContext,\n Self,\n} from '@angular/core';\nimport {isPlatformServer, NgStyle, ɵNgStyleImpl, ɵNgStyleR2Impl} from '@angular/common';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n SERVER_TOKEN,\n} from '@angular/flex-layout/core';\n\nimport {\n NgStyleRawList,\n NgStyleType,\n NgStyleSanitizer,\n buildRawList,\n getType,\n buildMapFromSet,\n NgStyleMap,\n NgStyleKeyValue,\n stringToKeyValue,\n keyValuesToMap,\n} from './style-transforms';\n\nexport class StyleDirective extends BaseDirective2 implements DoCheck {\n\n protected DIRECTIVE_KEY = 'ngStyle';\n protected fallbackStyles: NgStyleMap;\n protected isServer: boolean;\n\n constructor(protected elementRef: ElementRef,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n protected delegate: ɵNgStyleImpl,\n protected sanitizer: DomSanitizer,\n @Optional() @Self() private readonly ngStyleInstance: NgStyle,\n @Optional() @Inject(SERVER_TOKEN) serverLoaded: boolean,\n @Inject(PLATFORM_ID) platformId: Object) {\n super(elementRef, null!, styler, marshal);\n if (!this.ngStyleInstance) {\n // Create an instance NgClass Directive instance only if `ngClass=\"\"` has NOT been\n // defined on the same host element; since the responsive variations may be defined...\n this.ngStyleInstance = new NgStyle(this.delegate);\n }\n this.init();\n const styles = this.nativeElement.getAttribute('style') || '';\n this.fallbackStyles = this.buildStyleMap(styles);\n this.isServer = serverLoaded && isPlatformServer(platformId);\n }\n\n /** Add generated styles */\n protected updateWithValue(value: any) {\n const styles = this.buildStyleMap(value);\n this.ngStyleInstance.ngStyle = {...this.fallbackStyles, ...styles};\n if (this.isServer) {\n this.applyStyleToElement(styles);\n }\n this.ngStyleInstance.ngDoCheck();\n }\n\n /** Remove generated styles */\n protected clearStyles() {\n this.ngStyleInstance.ngStyle = this.fallbackStyles;\n this.ngStyleInstance.ngDoCheck();\n }\n\n /**\n * Convert raw strings to ngStyleMap; which is required by ngStyle\n * NOTE: Raw string key-value pairs MUST be delimited by `;`\n * Comma-delimiters are not supported due to complexities of\n * possible style values such as `rgba(x,x,x,x)` and others\n */\n protected buildStyleMap(styles: NgStyleType): NgStyleMap {\n // Always safe-guard (aka sanitize) style property values\n const sanitizer: NgStyleSanitizer = (val: any) =>\n this.sanitizer.sanitize(SecurityContext.STYLE, val) || '';\n if (styles) {\n switch (getType(styles)) {\n case 'string': return buildMapFromList(buildRawList(styles),\n sanitizer);\n case 'array' : return buildMapFromList(styles as NgStyleRawList, sanitizer);\n case 'set' : return buildMapFromSet(styles, sanitizer);\n default : return buildMapFromSet(styles, sanitizer);\n }\n }\n\n return {};\n }\n\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n\n /** For ChangeDetectionStrategy.onPush and ngOnChanges() updates */\n ngDoCheck() {\n this.ngStyleInstance.ngDoCheck();\n }\n}\n\nconst inputs = [\n 'ngStyle',\n 'ngStyle.xs', 'ngStyle.sm', 'ngStyle.md', 'ngStyle.lg', 'ngStyle.xl',\n 'ngStyle.lt-sm', 'ngStyle.lt-md', 'ngStyle.lt-lg', 'ngStyle.lt-xl',\n 'ngStyle.gt-xs', 'ngStyle.gt-sm', 'ngStyle.gt-md', 'ngStyle.gt-lg'\n];\n\nconst selector = `\n [ngStyle],\n [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl],\n [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl],\n [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]\n`;\n\n// tslint:disable-next-line:variable-name\nexport const LayoutNgStyleImplProvider = {\n provide: ɵNgStyleImpl,\n useClass: ɵNgStyleR2Impl\n};\n\n/**\n * Directive to add responsive support for ngStyle.\n *\n */\n@Directive({selector, inputs, providers: [LayoutNgStyleImplProvider]})\nexport class DefaultStyleDirective extends StyleDirective implements DoCheck {\n protected inputs = inputs;\n}\n\n/** Build a styles map from a list of styles, while sanitizing bad values first */\nfunction buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap {\n const sanitizeValue = (it: NgStyleKeyValue) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n };\n\n return styles\n .map(stringToKeyValue)\n .filter(entry => !!entry)\n .map(sanitizeValue)\n .reduce(keyValuesToMap, {} as NgStyleMap);\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\nexport type NgStyleRawList = string[];\nexport type NgStyleMap = {[klass: string]: string};\n// NgStyle selectors accept NgStyleType values\nexport type NgStyleType = string | Set | NgStyleRawList | NgStyleMap;\n\n/**\n * Callback function for SecurityContext.STYLE sanitization\n */\nexport type NgStyleSanitizer = (val: any) => string;\n\n/** NgStyle allowed inputs */\nexport class NgStyleKeyValue {\n constructor(public key: string, public value: string, noQuotes = true) {\n this.key = noQuotes ? key.replace(/['\"]/g, '').trim() : key.trim();\n\n this.value = noQuotes ? value.replace(/['\"]/g, '').trim() : value.trim();\n this.value = this.value.replace(/;/, '');\n }\n}\n\nexport function getType(target: any): string {\n let what = typeof target;\n if (what === 'object') {\n return (target.constructor === Array) ? 'array' :\n (target.constructor === Set) ? 'set' : 'object';\n }\n return what;\n}\n\n/**\n * Split string of key:value pairs into Array of k-v pairs\n * e.g. 'key:value; key:value; key:value;' -> ['key:value',...]\n */\nexport function buildRawList(source: any, delimiter = ';'): NgStyleRawList {\n return String(source)\n .trim()\n .split(delimiter)\n .map((val: string) => val.trim())\n .filter(val => val !== '');\n}\n\n/** Convert array of key:value strings to a iterable map object */\nexport function buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap {\n const sanitizeValue = (it: NgStyleKeyValue) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n };\n\n return styles\n .map(stringToKeyValue)\n .filter(entry => !!entry)\n .map(sanitizeValue)\n .reduce(keyValuesToMap, {} as NgStyleMap);\n}\n\n/** Convert Set or raw Object to an iterable NgStyleMap */\nexport function buildMapFromSet(source: NgStyleType, sanitize?: NgStyleSanitizer): NgStyleMap {\n let list: string[] = [];\n if (getType(source) === 'set') {\n (source as Set).forEach(entry => list.push(entry));\n } else {\n Object.keys(source).forEach((key: string) => {\n list.push(`${key}:${(source as NgStyleMap)[key]}`);\n });\n }\n return buildMapFromList(list, sanitize);\n}\n\n\n/** Convert 'key:value' -> [key, value] */\nexport function stringToKeyValue(it: string): NgStyleKeyValue {\n const [key, ...vals] = it.split(':');\n return new NgStyleKeyValue(key, vals.join(':'));\n}\n\n/** Convert [ [key,value] ] -> { key : value } */\nexport function keyValuesToMap(map: NgStyleMap, entry: NgStyleKeyValue): NgStyleMap {\n if (!!entry.key) {\n map[entry.key] = entry.value;\n }\n return map;\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 {\n Directive,\n ElementRef,\n OnChanges,\n SimpleChanges,\n Optional,\n Inject,\n PLATFORM_ID,\n Injectable,\n AfterViewInit,\n} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n BaseDirective2,\n LAYOUT_CONFIG,\n LayoutConfigOptions,\n MediaMarshaller,\n SERVER_TOKEN,\n StyleUtils,\n StyleBuilder,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {takeUntil} from 'rxjs/operators';\n\nexport interface ShowHideParent {\n display: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class ShowHideStyleBuilder extends StyleBuilder {\n buildStyles(show: string, parent: ShowHideParent) {\n const shouldShow = show === 'true';\n return {'display': shouldShow ? parent.display : 'none'};\n }\n}\n\nexport class ShowHideDirective extends BaseDirective2 implements AfterViewInit, OnChanges {\n protected DIRECTIVE_KEY = 'show-hide';\n\n /** Original dom Elements CSS display style */\n protected display: string = '';\n protected hasLayout = false;\n protected hasFlexChild = false;\n\n constructor(protected elementRef: ElementRef,\n protected styleBuilder: ShowHideStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n @Inject(PLATFORM_ID) protected platformId: Object,\n @Optional() @Inject(SERVER_TOKEN) protected serverModuleLoaded: boolean) {\n super(elementRef, styleBuilder, styler, marshal);\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n ngAfterViewInit() {\n this.trackExtraTriggers();\n\n const children = Array.from(this.nativeElement.children);\n for (let i = 0; i < children.length; i++) {\n if (this.marshal.hasValue(children[i] as HTMLElement, 'flex')) {\n this.hasFlexChild = true;\n break;\n }\n }\n\n if (DISPLAY_MAP.has(this.nativeElement)) {\n this.display = DISPLAY_MAP.get(this.nativeElement)!;\n } else {\n this.display = this.getDisplayStyle();\n DISPLAY_MAP.set(this.nativeElement, this.display);\n }\n\n this.init();\n // set the default to show unless explicitly overridden\n const defaultValue = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY, '');\n if (defaultValue === undefined || defaultValue === '') {\n this.setValue(true, '');\n } else {\n this.triggerUpdate();\n }\n }\n\n /**\n * On changes to any @Input properties...\n * Default to use the non-responsive Input value ('fxShow')\n * Then conditionally override with the mq-activated Input's current value\n */\n ngOnChanges(changes: SimpleChanges) {\n Object.keys(changes).forEach(key => {\n if (this.inputs.indexOf(key) !== -1) {\n const inputKey = key.split('.');\n const bp = inputKey.slice(1).join('.');\n const inputValue = changes[key].currentValue;\n let shouldShow = inputValue !== '' ?\n inputValue !== 0 ? coerceBooleanProperty(inputValue) : false\n : true;\n if (inputKey[0] === 'fxHide') {\n shouldShow = !shouldShow;\n }\n this.setValue(shouldShow, bp);\n }\n });\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Watch for these extra triggers to update fxShow, fxHide stylings\n */\n protected trackExtraTriggers() {\n this.hasLayout = this.marshal.hasValue(this.nativeElement, 'layout');\n\n ['layout', 'layout-align'].forEach(key => {\n this.marshal\n .trackValue(this.nativeElement, key)\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerUpdate.bind(this));\n });\n }\n\n /**\n * Override accessor to the current HTMLElement's `display` style\n * Note: Show/Hide will not change the display to 'flex' but will set it to 'block'\n * unless it was already explicitly specified inline or in a CSS stylesheet.\n */\n protected getDisplayStyle(): string {\n return (this.hasLayout || (this.hasFlexChild && this.layoutConfig.addFlexToParent)) ?\n 'flex' : this.styler.lookupStyle(this.nativeElement, 'display', true);\n }\n\n /** Validate the visibility value and then update the host's inline display style */\n protected updateWithValue(value: boolean | string = true) {\n if (value === '') {\n return;\n }\n this.addStyles(value ? 'true' : 'false', {display: this.display});\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.nativeElement.style.setProperty('display', '');\n }\n this.marshal.triggerUpdate(this.parentElement!, 'layout-gap');\n }\n}\n\nconst DISPLAY_MAP: WeakMap = new WeakMap();\n\nconst inputs = [\n 'fxShow', 'fxShow.print',\n 'fxShow.xs', 'fxShow.sm', 'fxShow.md', 'fxShow.lg', 'fxShow.xl',\n 'fxShow.lt-sm', 'fxShow.lt-md', 'fxShow.lt-lg', 'fxShow.lt-xl',\n 'fxShow.gt-xs', 'fxShow.gt-sm', 'fxShow.gt-md', 'fxShow.gt-lg',\n 'fxHide', 'fxHide.print',\n 'fxHide.xs', 'fxHide.sm', 'fxHide.md', 'fxHide.lg', 'fxHide.xl',\n 'fxHide.lt-sm', 'fxHide.lt-md', 'fxHide.lt-lg', 'fxHide.lt-xl',\n 'fxHide.gt-xs', 'fxHide.gt-sm', 'fxHide.gt-md', 'fxHide.gt-lg'\n];\n\nconst selector = `\n [fxShow], [fxShow.print],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide], [fxHide.print],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n`;\n\n/**\n * 'show' Layout API directive\n */\n@Directive({selector, inputs})\nexport class DefaultShowHideDirective extends ShowHideDirective {\n protected inputs = inputs;\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 {Directive, DoCheck, ElementRef, Input, Optional, Self} from '@angular/core';\nimport {NgClass, ɵNgClassImpl, ɵNgClassR2Impl} from '@angular/common';\nimport {BaseDirective2, StyleUtils, MediaMarshaller} from '@angular/flex-layout/core';\n\nexport class ClassDirective extends BaseDirective2 implements DoCheck {\n\n protected DIRECTIVE_KEY = 'ngClass';\n\n /**\n * Capture class assignments so we cache the default classes\n * which are merged with activated styles and used as fallbacks.\n */\n @Input('class')\n set klass(val: string) {\n this.ngClassInstance.klass = val;\n this.setValue(val, '');\n }\n\n constructor(protected elementRef: ElementRef,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n protected delegate: ɵNgClassImpl,\n @Optional() @Self() protected readonly ngClassInstance: NgClass) {\n super(elementRef, null!, styler, marshal);\n if (!this.ngClassInstance) {\n // Create an instance NgClass Directive instance only if `ngClass=\"\"` has NOT been defined on\n // the same host element; since the responsive variations may be defined...\n this.ngClassInstance = new NgClass(this.delegate);\n }\n this.init();\n this.setValue('', '');\n }\n\n protected updateWithValue(value: any) {\n this.ngClassInstance.ngClass = value;\n this.ngClassInstance.ngDoCheck();\n }\n\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n\n /**\n * For ChangeDetectionStrategy.onPush and ngOnChanges() updates\n */\n ngDoCheck() {\n this.ngClassInstance.ngDoCheck();\n }\n}\n\nconst inputs = [\n 'ngClass', 'ngClass.xs', 'ngClass.sm', 'ngClass.md', 'ngClass.lg', 'ngClass.xl',\n 'ngClass.lt-sm', 'ngClass.lt-md', 'ngClass.lt-lg', 'ngClass.lt-xl',\n 'ngClass.gt-xs', 'ngClass.gt-sm', 'ngClass.gt-md', 'ngClass.gt-lg'\n];\n\nconst selector = `\n [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl],\n [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl],\n [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]\n`;\n\n// tslint:disable-next-line:variable-name\nexport const LayoutNgClassImplProvider = {\n provide: ɵNgClassImpl,\n useClass: ɵNgClassR2Impl\n};\n\n/**\n * Directive to add responsive support for ngClass.\n * This maintains the core functionality of 'ngClass' and adds responsive API\n * Note: this class is a no-op when rendered on the server\n */\n@Directive({selector, inputs, providers: [LayoutNgClassImplProvider]})\nexport class DefaultClassDirective extends ClassDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Inject, PLATFORM_ID, Injectable, Input} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n MediaMarshaller,\n BaseDirective2,\n SERVER_TOKEN,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class ImgSrcStyleBuilder extends StyleBuilder {\n buildStyles(url: string) {\n return {'content': url ? `url(${url})` : ''};\n }\n}\n\nexport class ImgSrcDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'img-src';\n protected defaultSrc = '';\n\n @Input('src')\n set src(val: string) {\n this.defaultSrc = val;\n this.setValue(this.defaultSrc, '');\n }\n\n constructor(protected elementRef: ElementRef,\n protected styleBuilder: ImgSrcStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n @Inject(PLATFORM_ID) protected platformId: Object,\n @Inject(SERVER_TOKEN) protected serverModuleLoaded: boolean) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n this.setValue(this.nativeElement.getAttribute('src') || '', '');\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.nativeElement.setAttribute('src', '');\n }\n }\n\n /**\n * Use the [responsively] activated input value to update\n * the host img src attribute or assign a default `img.src=''`\n * if the src has not been defined.\n *\n * Do nothing to standard `` usages, only when responsive\n * keys are present do we actually call `setAttribute()`\n */\n protected updateWithValue(value?: string) {\n const url = value || this.defaultSrc;\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.addStyles(url);\n } else {\n this.nativeElement.setAttribute('src', url);\n }\n }\n\n protected styleCache = imgSrcCache;\n}\n\nconst imgSrcCache: Map = new Map();\n\nconst inputs = [\n 'src.xs', 'src.sm', 'src.md', 'src.lg', 'src.xl',\n 'src.lt-sm', 'src.lt-md', 'src.lt-lg', 'src.lt-xl',\n 'src.gt-xs', 'src.gt-sm', 'src.gt-md', 'src.gt-lg'\n];\n\nconst selector = `\n img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl],\n img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl],\n img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]\n`;\n\n/**\n * This directive provides a responsive API for the HTML 'src' attribute\n * and will update the img.src property upon each responsive activation.\n *\n * e.g.\n * \n *\n * @see https://css-tricks.com/responsive-images-youre-just-changing-resolutions-use-src/\n */\n@Directive({selector, inputs})\nexport class DefaultImgSrcDirective extends ImgSrcDirective {\n protected inputs = inputs;\n}\n"],"names":["buildMapFromList","selector","inputs"],"mappings":"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"} \ No newline at end of file diff --git a/esm2015/flex-layout.js b/esm2015/flex-layout.js index 6d6ea4d96..f99a9585a 100644 --- a/esm2015/flex-layout.js +++ b/esm2015/flex-layout.js @@ -7,27 +7,28 @@ */ import { Version, Inject, NgModule, Optional, PLATFORM_ID } from '@angular/core'; import { isPlatformServer } from '@angular/common'; -import { SERVER_TOKEN, LAYOUT_CONFIG, BREAKPOINT } from '@angular/flex-layout/core'; -export { removeStyles, BROWSER_PROVIDER, CLASS_NAME, CoreModule, MediaChange, StylesheetMap, DEFAULT_CONFIG, LAYOUT_CONFIG, SERVER_TOKEN, BREAKPOINT, BaseDirective, BaseDirectiveAdapter, BaseDirective2, prioritySort, RESPONSIVE_ALIASES, DEFAULT_BREAKPOINTS, ScreenTypes, ORIENTATION_BREAKPOINTS, BreakPointRegistry, BREAKPOINTS, MatchMedia, MockMatchMedia, MockMediaQueryList, MockMatchMediaProvider, ServerMediaQueryList, ServerMatchMedia, MediaMonitor, ObservableMedia, MediaService, ObservableMediaProvider, MediaObserver, KeyOptions, ResponsiveActivation, StyleUtils, StyleBuilder, validateBasis, MediaMarshaller } from '@angular/flex-layout/core'; +import { SERVER_TOKEN, LAYOUT_CONFIG, DEFAULT_CONFIG, BREAKPOINT } from '@angular/flex-layout/core'; +export { ɵMatchMedia, ɵMockMatchMedia, ɵMockMatchMediaProvider, CoreModule, removeStyles, BROWSER_PROVIDER, CLASS_NAME, MediaChange, StylesheetMap, DEFAULT_CONFIG, LAYOUT_CONFIG, SERVER_TOKEN, BREAKPOINT, mergeAlias, BaseDirective2, DEFAULT_BREAKPOINTS, ScreenTypes, ORIENTATION_BREAKPOINTS, BreakPointRegistry, BREAKPOINTS, MediaObserver, MediaTrigger, sortDescendingPriority, sortAscendingPriority, coerceArray, StyleUtils, StyleBuilder, validateBasis, MediaMarshaller, BREAKPOINT_PRINT, PrintHook } from '@angular/flex-layout/core'; import { ExtendedModule } from '@angular/flex-layout/extended'; -export { ExtendedModule, ClassDirective, DefaultClassDirective, ImgSrcStyleBuilder, ImgSrcDirective, DefaultImgSrcDirective, negativeOf, ShowHideStyleBuilder, ShowHideDirective, DefaultShowHideDirective, StyleDirective, DefaultStyleDirective } from '@angular/flex-layout/extended'; +export { ExtendedModule, ClassDirective, LayoutNgClassImplProvider, DefaultClassDirective, ImgSrcStyleBuilder, ImgSrcDirective, DefaultImgSrcDirective, ShowHideStyleBuilder, ShowHideDirective, DefaultShowHideDirective, StyleDirective, LayoutNgStyleImplProvider, DefaultStyleDirective } from '@angular/flex-layout/extended'; import { FlexModule } from '@angular/flex-layout/flex'; export { FlexModule, FlexStyleBuilder, FlexDirective, DefaultFlexDirective, FlexAlignStyleBuilder, FlexAlignDirective, DefaultFlexAlignDirective, FlexFillStyleBuilder, FlexFillDirective, FlexOffsetStyleBuilder, FlexOffsetDirective, DefaultFlexOffsetDirective, FlexOrderStyleBuilder, FlexOrderDirective, DefaultFlexOrderDirective, LayoutStyleBuilder, LayoutDirective, DefaultLayoutDirective, LayoutAlignStyleBuilder, LayoutAlignDirective, DefaultLayoutAlignDirective, LayoutGapStyleBuilder, LayoutGapDirective, DefaultLayoutGapDirective } from '@angular/flex-layout/flex'; import { GridModule } from '@angular/flex-layout/grid'; -export { ɵf, ɵe, ɵd, ɵi, ɵh, ɵg, ɵl, ɵk, ɵj, ɵo, ɵn, ɵm, ɵr, ɵq, ɵp, ɵu, ɵt, ɵs, ɵx, ɵw, ɵv, ɵba, ɵz, ɵy, ɵc, ɵb, ɵa, ɵbd, ɵbc, ɵbb, ɵbg, ɵbf, ɵbe, GridModule } from '@angular/flex-layout/grid'; +export { ɵf2, ɵe2, ɵd2, ɵi2, ɵh2, ɵg2, ɵl2, ɵk2, ɵj2, ɵo2, ɵn2, ɵm2, ɵr2, ɵq2, ɵp2, ɵu2, ɵt2, ɵs2, ɵx2, ɵw2, ɵv2, ɵba2, ɵz2, ɵy2, ɵc2, ɵb2, ɵa2, ɵbd2, ɵbc2, ɵbb2, ɵbg2, ɵbf2, ɵbe2, GridModule } from '@angular/flex-layout/grid'; /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -/** * +/** * Current version of Angular Flex-Layout. - @type {?} */ -const VERSION = new Version('7.0.0-beta.22'); + * @type {?} + */ +const VERSION = new Version('8.0.0-beta.26'); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * FlexLayoutModule -- the main import for all utilities in the Angular Layout library @@ -57,11 +58,11 @@ class FlexLayoutModule { ngModule: FlexLayoutModule, providers: configOptions.serverLoaded ? [ - { provide: LAYOUT_CONFIG, useValue: configOptions }, + { provide: LAYOUT_CONFIG, useValue: Object.assign({}, DEFAULT_CONFIG, configOptions) }, { provide: BREAKPOINT, useValue: breakpoints, multi: true }, { provide: SERVER_TOKEN, useValue: true }, ] : [ - { provide: LAYOUT_CONFIG, useValue: configOptions }, + { provide: LAYOUT_CONFIG, useValue: Object.assign({}, DEFAULT_CONFIG, configOptions) }, { provide: BREAKPOINT, useValue: breakpoints, multi: true }, ] }; @@ -81,12 +82,12 @@ FlexLayoutModule.ctorParameters = () => [ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ export { VERSION, FlexLayoutModule }; diff --git a/esm2015/flex-layout.js.map b/esm2015/flex-layout.js.map index aec8c416b..4299b01b8 100644 --- a/esm2015/flex-layout.js.map +++ b/esm2015/flex-layout.js.map @@ -1 +1 @@ -{"version":3,"file":"flex-layout.js","sources":["../../src/lib/module.ts","../../src/lib/version.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {\n Inject,\n ModuleWithProviders,\n NgModule,\n Optional,\n PLATFORM_ID,\n} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n SERVER_TOKEN,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n BreakPoint,\n BREAKPOINT,\n} from '@angular/flex-layout/core';\nimport {ExtendedModule} from '@angular/flex-layout/extended';\nimport {FlexModule} from '@angular/flex-layout/flex';\nimport {GridModule} from '@angular/flex-layout/grid';\n\n/**\n * FlexLayoutModule -- the main import for all utilities in the Angular Layout library\n * * Will automatically provide Flex, Grid, and Extended modules for use in the application\n * * Can be configured using the static withConfig method, options viewable on the Wiki's\n * Configuration page\n */\n@NgModule({\n imports: [FlexModule, ExtendedModule, GridModule],\n exports: [FlexModule, ExtendedModule, GridModule]\n})\nexport class FlexLayoutModule {\n\n /**\n * Initialize the FlexLayoutModule with a set of config options,\n * which sets the corresponding tokens accordingly\n */\n static withConfig(configOptions: LayoutConfigOptions,\n breakpoints: BreakPoint|BreakPoint[] = []): ModuleWithProviders {\n return {\n ngModule: FlexLayoutModule,\n providers: configOptions.serverLoaded ?\n [\n {provide: LAYOUT_CONFIG, useValue: configOptions},\n {provide: BREAKPOINT, useValue: breakpoints, multi: true},\n {provide: SERVER_TOKEN, useValue: true},\n ] : [\n {provide: LAYOUT_CONFIG, useValue: configOptions},\n {provide: BREAKPOINT, useValue: breakpoints, multi: true},\n ]\n };\n }\n\n constructor(@Optional() @Inject(SERVER_TOKEN) serverModuleLoaded: boolean,\n @Inject(PLATFORM_ID) platformId: Object) {\n if (isPlatformServer(platformId) && !serverModuleLoaded) {\n console.warn('Warning: Flex Layout loaded on the server without FlexLayoutServerModule');\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\nimport {Version} from '@angular/core';\n\n/** Current version of Angular Flex-Layout. */\nexport const VERSION = new Version('7.0.0-beta.22');\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;ACWA,AAAA,MAAa,OAAO,GAAG,IAAI,OAAO,CAAC,mBAAmB,CAAC;;;;;;ADJvD;;;;;;AA6BA,AAAA,MAAa,gBAAgB,CAA7B;;;;;IAsBE,WAAF,CAAgD,kBAA2B,EACxC,UAAkB,EADrD;QAEI,IAAI,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE;YACvD,OAAO,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;SAC1F;KACF;;;;;;;;IArBD,OAAO,UAAU,CAAC,aAAkC,EAClC,WADpB,GAC2D,EAAE,EAD7D;QAEI,OAAO;YACL,QAAQ,EAAE,gBAAgB;YAC1B,SAAS,EAAE,aAAa,CAAC,YAAY;gBACnC;oBACE,EAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAC;oBACjD,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAC;oBACzD,EAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAC;iBACxC,GAAG;gBACF,EAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAC;gBACjD,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAC;aAC1D;SACJ,CAAC;KACH;;;IAxBH,EAAA,IAAA,EAAC,QAAQ,EAAT,IAAA,EAAA,CAAU;gBACR,OAAO,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,UAAU,CAAC;gBACjD,OAAO,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,UAAU,CAAC;aAClD,EAAD,EAAA;;;;IAuBA,EAAA,IAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAe,QAAQ,EAAvB,EAAA,EAAA,IAAA,EAA2B,MAAM,EAAjC,IAAA,EAAA,CAAkC,YAAY,EAA9C,EAAA,CAAA,EAAA;IACA,EAAA,IAAA,EAA+C,MAAM,EAArD,UAAA,EAAA,CAAA,EAAA,IAAA,EAAe,MAAM,EAArB,IAAA,EAAA,CAAsB,WAAW,EAAjC,EAAA,CAAA,EAAA;;;;;;;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"flex-layout.js","sources":["../../src/lib/module.ts","../../src/lib/version.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {\n Inject,\n ModuleWithProviders,\n NgModule,\n Optional,\n PLATFORM_ID,\n} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\n\nimport {\n SERVER_TOKEN,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n DEFAULT_CONFIG,\n BreakPoint,\n BREAKPOINT,\n} from '@angular/flex-layout/core';\nimport {ExtendedModule} from '@angular/flex-layout/extended';\nimport {FlexModule} from '@angular/flex-layout/flex';\nimport {GridModule} from '@angular/flex-layout/grid';\n\n/**\n * FlexLayoutModule -- the main import for all utilities in the Angular Layout library\n * * Will automatically provide Flex, Grid, and Extended modules for use in the application\n * * Can be configured using the static withConfig method, options viewable on the Wiki's\n * Configuration page\n */\n@NgModule({\n imports: [FlexModule, ExtendedModule, GridModule],\n exports: [FlexModule, ExtendedModule, GridModule]\n})\nexport class FlexLayoutModule {\n\n /**\n * Initialize the FlexLayoutModule with a set of config options,\n * which sets the corresponding tokens accordingly\n */\n static withConfig(configOptions: LayoutConfigOptions,\n breakpoints: BreakPoint|BreakPoint[] = []): ModuleWithProviders {\n return {\n ngModule: FlexLayoutModule,\n providers: configOptions.serverLoaded ?\n [\n {provide: LAYOUT_CONFIG, useValue: {...DEFAULT_CONFIG, ...configOptions}},\n {provide: BREAKPOINT, useValue: breakpoints, multi: true},\n {provide: SERVER_TOKEN, useValue: true},\n ] : [\n {provide: LAYOUT_CONFIG, useValue: {...DEFAULT_CONFIG, ...configOptions}},\n {provide: BREAKPOINT, useValue: breakpoints, multi: true},\n ]\n };\n }\n\n constructor(@Optional() @Inject(SERVER_TOKEN) serverModuleLoaded: boolean,\n @Inject(PLATFORM_ID) platformId: Object) {\n if (isPlatformServer(platformId) && !serverModuleLoaded) {\n console.warn('Warning: Flex Layout loaded on the server without FlexLayoutServerModule');\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\nimport {Version} from '@angular/core';\n\n/** Current version of Angular Flex-Layout. */\nexport const VERSION = new Version('8.0.0-beta.26');\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;ACWA,AAAA,MAAa,OAAO,GAAG,IAAI,OAAO,CAAC,mBAAmB,CAAC;;;;;;;;;;;;AD2BvD,AAAA,MAAa,gBAAgB,CAA7B;;;;;IAsBE,WAAF,CAAgD,kBAA2B,EACxC,UAAkB,EADrD;QAEI,IAAI,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE;YACvD,OAAO,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;SAC1F;KACF;;;;;;;;IArBD,OAAO,UAAU,CAAC,aAAkC,EAClC,WADpB,GAC2D,EAAE,EAD7D;QAEI,OAAO;YACL,QAAQ,EAAE,gBAAgB;YAC1B,SAAS,EAAE,aAAa,CAAC,YAAY;gBACnC;oBACE,EAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAA3C,MAAA,CAAA,MAAA,CAAA,EAAA,EAAiD,cAAc,EAAK,aAAa,CAAC,EAAC;oBACzE,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAC;oBACzD,EAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAC;iBACxC,GAAG;gBACF,EAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAA3C,MAAA,CAAA,MAAA,CAAA,EAAA,EAAiD,cAAc,EAAK,aAAa,CAAC,EAAC;gBACzE,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAC;aAC1D;SACJ,CAAC;KACH;;;IAxBH,EAAA,IAAA,EAAC,QAAQ,EAAT,IAAA,EAAA,CAAU;gBACR,OAAO,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,UAAU,CAAC;gBACjD,OAAO,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,UAAU,CAAC;aAClD,EAAD,EAAA;;;;IAuBA,EAAA,IAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAe,QAAQ,EAAvB,EAAA,EAAA,IAAA,EAA2B,MAAM,EAAjC,IAAA,EAAA,CAAkC,YAAY,EAA9C,EAAA,CAAA,EAAA;IACA,EAAA,IAAA,EAA+C,MAAM,EAArD,UAAA,EAAA,CAAA,EAAA,IAAA,EAAe,MAAM,EAArB,IAAA,EAAA,CAAsB,WAAW,EAAjC,EAAA,CAAA,EAAA;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/esm2015/flex.js b/esm2015/flex.js index edee4652e..2dfb3d5e5 100644 --- a/esm2015/flex.js +++ b/esm2015/flex.js @@ -5,7 +5,7 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -import { Directive, ElementRef, Injectable, Optional, NgModule, NgZone, Inject, Input, defineInjectable, inject } from '@angular/core'; +import { Directive, ElementRef, Injectable, Optional, NgModule, NgZone, Inject, Input, ɵɵdefineInjectable, ɵɵinject } from '@angular/core'; import { BaseDirective2, StyleBuilder, StyleUtils, MediaMarshaller, CoreModule, LAYOUT_CONFIG, validateBasis } from '@angular/flex-layout/core'; import { Directionality, BidiModule } from '@angular/cdk/bidi'; import { Subject } from 'rxjs'; @@ -13,15 +13,16 @@ import { takeUntil } from 'rxjs/operators'; /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -/** * +/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license - @type {?} */ + * @type {?} + */ const INLINE = 'inline'; /** @type {?} */ const LAYOUT_VALUES = ['row', 'column', 'row-reverse', 'column-reverse']; @@ -44,7 +45,11 @@ function validateValue(value) { value = value ? value.toLowerCase() : ''; let [direction, wrap, inline] = value.split(' '); // First value must be the `flex-direction` - if (!LAYOUT_VALUES.find(x => x === direction)) { + if (!LAYOUT_VALUES.find((/** + * @param {?} x + * @return {?} + */ + x => x === direction))) { direction = LAYOUT_VALUES[0]; } if (wrap === INLINE) { @@ -113,7 +118,7 @@ function buildCSS(direction, wrap = null, inline = false) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class LayoutStyleBuilder extends StyleBuilder { /** @@ -127,7 +132,7 @@ class LayoutStyleBuilder extends StyleBuilder { LayoutStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; -/** @nocollapse */ LayoutStyleBuilder.ngInjectableDef = defineInjectable({ factory: function LayoutStyleBuilder_Factory() { return new LayoutStyleBuilder(); }, token: LayoutStyleBuilder, providedIn: "root" }); +/** @nocollapse */ LayoutStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function LayoutStyleBuilder_Factory() { return new LayoutStyleBuilder(); }, token: LayoutStyleBuilder, providedIn: "root" }); /** @type {?} */ const inputs = [ 'fxLayout', 'fxLayout.xs', 'fxLayout.sm', 'fxLayout.md', @@ -156,10 +161,7 @@ class LayoutDirective extends BaseDirective2 { * @param {?} styleBuilder * @param {?} marshal */ - constructor(elRef, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + constructor(elRef, styleUtils, styleBuilder, marshal) { super(elRef, styleBuilder, styleUtils, marshal); this.elRef = elRef; this.styleUtils = styleUtils; @@ -191,7 +193,7 @@ const layoutCache = new Map(); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const CLEAR_MARGIN_CSS = { @@ -234,18 +236,21 @@ class LayoutGapStyleBuilder extends StyleBuilder { const items = parent.items; if (gapValue.endsWith(GRID_SPECIFIER)) { gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER)); + // For each `element` children, set the padding /** @type {?} */ const paddingStyles = buildGridPadding(gapValue, parent.directionality); this._styler.applyStyleToElements(paddingStyles, parent.items); } else { /** @type {?} */ - const lastItem = items.pop(); + const lastItem = (/** @type {?} */ (items.pop())); + // For each `element` children EXCEPT the last, + // set the margin right/bottom styles... /** @type {?} */ const gapCss = buildGapCSS(gapValue, parent); this._styler.applyStyleToElements(gapCss, items); // Clear all gaps for all visible elements - this._styler.applyStyleToElements(CLEAR_MARGIN_CSS, [/** @type {?} */ ((lastItem))]); + this._styler.applyStyleToElements(CLEAR_MARGIN_CSS, [lastItem]); } } } @@ -256,7 +261,7 @@ LayoutGapStyleBuilder.decorators = [ LayoutGapStyleBuilder.ctorParameters = () => [ { type: StyleUtils } ]; -/** @nocollapse */ LayoutGapStyleBuilder.ngInjectableDef = defineInjectable({ factory: function LayoutGapStyleBuilder_Factory() { return new LayoutGapStyleBuilder(inject(StyleUtils)); }, token: LayoutGapStyleBuilder, providedIn: "root" }); +/** @nocollapse */ LayoutGapStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function LayoutGapStyleBuilder_Factory() { return new LayoutGapStyleBuilder(ɵɵinject(StyleUtils)); }, token: LayoutGapStyleBuilder, providedIn: "root" }); /** @type {?} */ const inputs$1 = [ 'fxLayoutGap', 'fxLayoutGap.xs', 'fxLayoutGap.sm', 'fxLayoutGap.md', @@ -284,10 +289,7 @@ class LayoutGapDirective extends BaseDirective2 { * @param {?} styleBuilder * @param {?} marshal */ - constructor(elRef, zone, directionality, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + constructor(elRef, zone, directionality, styleUtils, styleBuilder, marshal) { super(elRef, styleBuilder, styleUtils, marshal); this.elRef = elRef; this.zone = zone; @@ -296,6 +298,7 @@ class LayoutGapDirective extends BaseDirective2 { this.styleBuilder = styleBuilder; this.marshal = marshal; this.layout = 'row'; // default flex-direction + // default flex-direction this.DIRECTIVE_KEY = 'layout-gap'; this.observerSubject = new Subject(); /** @type {?} */ @@ -308,6 +311,7 @@ class LayoutGapDirective extends BaseDirective2 { } /** * Special accessor to query for all child 'element' nodes regardless of type, class, etc + * @protected * @return {?} */ get childrenNodes() { @@ -321,6 +325,9 @@ class LayoutGapDirective extends BaseDirective2 { } return buffer; } + // ********************************************* + // Lifecycle Methods + // ********************************************* /** * @return {?} */ @@ -337,35 +344,52 @@ class LayoutGapDirective extends BaseDirective2 { this.observer.disconnect(); } } + // ********************************************* + // Protected methods + // ********************************************* /** * Cache the parent container 'flex-direction' and update the 'margin' styles + * @protected * @param {?} matcher * @return {?} */ onLayoutChange(matcher) { /** @type {?} */ const layout = matcher.value; + // Make sure to filter out 'wrap' option /** @type {?} */ const direction = layout.split(' '); this.layout = direction[0]; - if (!LAYOUT_VALUES.find(x => x === this.layout)) { + if (!LAYOUT_VALUES.find((/** + * @param {?} x + * @return {?} + */ + x => x === this.layout))) { this.layout = 'row'; } this.triggerUpdate(); } /** * + * @protected * @param {?} value * @return {?} */ updateWithValue(value) { - if (!value) { - value = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY); - } + // Gather all non-hidden Element nodes /** @type {?} */ const items = this.childrenNodes - .filter(el => el.nodeType === 1 && this.willDisplay(el)) - .sort((a, b) => { + .filter((/** + * @param {?} el + * @return {?} + */ + el => el.nodeType === 1 && this.willDisplay(el))) + .sort((/** + * @param {?} a + * @param {?} b + * @return {?} + */ + (a, b) => { /** @type {?} */ const orderA = +this.styler.lookupStyle(a, 'order'); /** @type {?} */ @@ -376,7 +400,7 @@ class LayoutGapDirective extends BaseDirective2 { else { return orderA > orderB ? 1 : -1; } - }); + })); if (items.length > 0) { /** @type {?} */ const directionality = this.directionality.value; @@ -397,8 +421,27 @@ class LayoutGapDirective extends BaseDirective2 { this.addStyles(value, { directionality, items, layout }); } } + /** + * We need to override clearStyles because in most cases mru isn't populated + * @protected + * @return {?} + */ + clearStyles() { + /** @type {?} */ + const gridMode = Object.keys(this.mru).length > 0; + /** @type {?} */ + const childrenStyle = gridMode ? 'padding' : + getMarginType(this.directionality.value, this.layout); + // If there are styles on the parent remove them + if (gridMode) { + super.clearStyles(); + } + // Then remove the children styles too + this.styleUtils.applyStyleToElements({ [childrenStyle]: '' }, this.childrenNodes); + } /** * Determine if an element will show or hide based on current activation + * @protected * @param {?} source * @return {?} */ @@ -406,28 +449,40 @@ class LayoutGapDirective extends BaseDirective2 { /** @type {?} */ const value = this.marshal.getValue(source, 'show-hide'); return value === true || - (value === '' && this.styleUtils.lookupStyle(source, 'display') !== 'none'); + (value === undefined && this.styleUtils.lookupStyle(source, 'display') !== 'none'); } /** + * @protected * @return {?} */ buildChildObservable() { - this.zone.runOutsideAngular(() => { + this.zone.runOutsideAngular((/** + * @return {?} + */ + () => { if (typeof MutationObserver !== 'undefined') { - this.observer = new MutationObserver((mutations) => { + this.observer = new MutationObserver((/** + * @param {?} mutations + * @return {?} + */ + (mutations) => { /** @type {?} */ - const validatedChanges = (it) => { + const validatedChanges = (/** + * @param {?} it + * @return {?} + */ + (it) => { return (it.addedNodes && it.addedNodes.length > 0) || (it.removedNodes && it.removedNodes.length > 0); - }; + }); // update gap styles only for child 'added' or 'removed' events if (mutations.some(validatedChanges)) { this.observerSubject.next(); } - }); + })); this.observer.observe(this.nativeElement, { childList: true }); } - }); + })); } } /** @nocollapse */ @@ -503,40 +558,43 @@ function buildGridMargin(value, directionality) { return { 'margin': `${marginTop} ${marginRight} ${marginBottom} ${marginLeft}` }; } /** - * @param {?} gapValue - * @param {?} parent + * @param {?} directionality + * @param {?} layout * @return {?} */ -function buildGapCSS(gapValue, parent) { - /** @type {?} */ - let key; - /** @type {?} */ - let margins = Object.assign({}, CLEAR_MARGIN_CSS); - switch (parent.layout) { +function getMarginType(directionality, layout) { + switch (layout) { case 'column': - key = 'margin-bottom'; - break; + return 'margin-bottom'; case 'column-reverse': - key = 'margin-top'; - break; + return 'margin-top'; case 'row': - key = parent.directionality === 'rtl' ? 'margin-left' : 'margin-right'; - break; + return directionality === 'rtl' ? 'margin-left' : 'margin-right'; case 'row-reverse': - key = parent.directionality === 'rtl' ? 'margin-right' : 'margin-left'; - break; + return directionality === 'rtl' ? 'margin-right' : 'margin-left'; default: - key = parent.directionality === 'rtl' ? 'margin-left' : 'margin-right'; - break; + return directionality === 'rtl' ? 'margin-left' : 'margin-right'; } +} +/** + * @param {?} gapValue + * @param {?} parent + * @return {?} + */ +function buildGapCSS(gapValue, parent) { + /** @type {?} */ + const key = getMarginType(parent.directionality, parent.layout); + /** @type {?} */ + const margins = Object.assign({}, CLEAR_MARGIN_CSS); margins[key] = gapValue; return margins; } /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ + /** * Extends an object with the *enumerable* and *own* properties of one or more source objects, * similar to Object.assign. @@ -563,7 +621,7 @@ function extendObject(dest, ...sources) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class FlexStyleBuilder extends StyleBuilder { /** @@ -582,6 +640,7 @@ class FlexStyleBuilder extends StyleBuilder { let [grow, shrink, ...basisParts] = input.split(' '); /** @type {?} */ let basis = basisParts.join(' '); + // The flex-direction of this element's flex container. Defaults to 'row'. /** @type {?} */ const direction = (parent.direction.indexOf('column') > -1) ? 'column' : 'row'; /** @type {?} */ @@ -602,10 +661,24 @@ class FlexStyleBuilder extends StyleBuilder { let isValue = (hasCalc || hasUnits); grow = (grow == '0') ? 0 : grow; shrink = (shrink == '0') ? 0 : shrink; + // make box inflexible when shrink and grow are both zero + // should not set a min when the grow is zero + // should not set a max when the shrink is zero /** @type {?} */ const isFixed = !grow && !shrink; /** @type {?} */ let css = {}; + // flex-basis allows you to specify the initial/starting main-axis size of the element, + // before anything else is computed. It can either be a percentage or an absolute value. + // It is, however, not the breaking point for flex-grow/shrink properties + // + // flex-grow can be seen as this: + // 0: Do not stretch. Either size to element's content width, or obey 'flex-basis'. + // 1: (Default value). Stretch; will be the same size to all other flex items on + // the same row since they have a default value of 1. + // ≥2 (integer n): Stretch. Will be n times the size of other elements + // with 'flex-grow: 1' on the same row. + // Use `null` to clear existing styles. /** @type {?} */ const clearStyles = { 'max-width': null, @@ -640,7 +713,7 @@ class FlexStyleBuilder extends StyleBuilder { break; default: // Defaults to percentage sizing unless `px` is explicitly set - if (!isValue && !isPercent && !isNaN(/** @type {?} */ (basis))) { + if (!isValue && !isPercent && !isNaN((/** @type {?} */ (basis)))) { basis = basis + '%'; } // Fix for issue 280 @@ -707,7 +780,7 @@ class FlexStyleBuilder extends StyleBuilder { (hasCalc ? css[min] : `${grow} ${shrink} ${css[min]}`); } } - return /** @type {?} */ (extendObject(css, { 'box-sizing': 'border-box' })); + return (/** @type {?} */ (extendObject(css, { 'box-sizing': 'border-box' }))); } } FlexStyleBuilder.decorators = [ @@ -717,7 +790,7 @@ FlexStyleBuilder.decorators = [ FlexStyleBuilder.ctorParameters = () => [ { type: undefined, decorators: [{ type: Inject, args: [LAYOUT_CONFIG,] }] } ]; -/** @nocollapse */ FlexStyleBuilder.ngInjectableDef = defineInjectable({ factory: function FlexStyleBuilder_Factory() { return new FlexStyleBuilder(inject(LAYOUT_CONFIG)); }, token: FlexStyleBuilder, providedIn: "root" }); +/** @nocollapse */ FlexStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function FlexStyleBuilder_Factory() { return new FlexStyleBuilder(ɵɵinject(LAYOUT_CONFIG)); }, token: FlexStyleBuilder, providedIn: "root" }); /** @type {?} */ const inputs$2 = [ 'fxFlex', 'fxFlex.xs', 'fxFlex.sm', 'fxFlex.md', @@ -763,6 +836,9 @@ class FlexDirective extends BaseDirective2 { this.marshal.trackValue(this.parentElement, 'layout') .pipe(takeUntil(this.destroySubject)) .subscribe(this.onLayoutChange.bind(this)); + this.marshal.trackValue(this.nativeElement, 'layout-align') + .pipe(takeUntil(this.destroySubject)) + .subscribe(this.triggerReflow.bind(this)); } } /** @@ -792,6 +868,7 @@ class FlexDirective extends BaseDirective2 { /** * Caches the parent container's 'flex-direction' and updates the element's style. * Used as a handler for layout change events from the parent flex container. + * @protected * @param {?} matcher * @return {?} */ @@ -806,6 +883,7 @@ class FlexDirective extends BaseDirective2 { } /** * Input to this is exclusively the basis input value + * @protected * @param {?} value * @return {?} */ @@ -813,7 +891,7 @@ class FlexDirective extends BaseDirective2 { /** @type {?} */ const addFlexToParent = this.layoutConfig.addFlexToParent !== false; if (!this.direction) { - this.direction = this.getFlexFlowDirection(/** @type {?} */ ((this.parentElement)), addFlexToParent); + this.direction = this.getFlexFlowDirection((/** @type {?} */ (this.parentElement)), addFlexToParent); } /** @type {?} */ const direction = this.direction; @@ -841,12 +919,17 @@ class FlexDirective extends BaseDirective2 { } /** * Trigger a style reflow, usually based on a shrink/grow input event + * @protected * @return {?} */ triggerReflow() { /** @type {?} */ - const parts = validateBasis(this.activatedValue, this.flexGrow, this.flexShrink); - this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, parts.join(' ')); + const activatedValue = this.activatedValue; + if (activatedValue !== undefined) { + /** @type {?} */ + const parts = validateBasis(activatedValue, this.flexGrow, this.flexShrink); + this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, parts.join(' ')); + } } } /** @nocollapse */ @@ -881,7 +964,7 @@ const flexColumnWrapCache = new Map(); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class FlexOrderStyleBuilder extends StyleBuilder { /** @@ -895,7 +978,7 @@ class FlexOrderStyleBuilder extends StyleBuilder { FlexOrderStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; -/** @nocollapse */ FlexOrderStyleBuilder.ngInjectableDef = defineInjectable({ factory: function FlexOrderStyleBuilder_Factory() { return new FlexOrderStyleBuilder(); }, token: FlexOrderStyleBuilder, providedIn: "root" }); +/** @nocollapse */ FlexOrderStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function FlexOrderStyleBuilder_Factory() { return new FlexOrderStyleBuilder(); }, token: FlexOrderStyleBuilder, providedIn: "root" }); /** @type {?} */ const inputs$3 = [ 'fxFlexOrder', 'fxFlexOrder.xs', 'fxFlexOrder.sm', 'fxFlexOrder.md', @@ -922,10 +1005,7 @@ class FlexOrderDirective extends BaseDirective2 { * @param {?} styleBuilder * @param {?} marshal */ - constructor(elRef, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + constructor(elRef, styleUtils, styleBuilder, marshal) { super(elRef, styleBuilder, styleUtils, marshal); this.elRef = elRef; this.styleUtils = styleUtils; @@ -957,7 +1037,7 @@ DefaultFlexOrderDirective.decorators = [ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class FlexOffsetStyleBuilder extends StyleBuilder { /** @@ -987,7 +1067,7 @@ class FlexOffsetStyleBuilder extends StyleBuilder { FlexOffsetStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; -/** @nocollapse */ FlexOffsetStyleBuilder.ngInjectableDef = defineInjectable({ factory: function FlexOffsetStyleBuilder_Factory() { return new FlexOffsetStyleBuilder(); }, token: FlexOffsetStyleBuilder, providedIn: "root" }); +/** @nocollapse */ FlexOffsetStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function FlexOffsetStyleBuilder_Factory() { return new FlexOffsetStyleBuilder(); }, token: FlexOffsetStyleBuilder, providedIn: "root" }); /** @type {?} */ const inputs$4 = [ 'fxFlexOffset', 'fxFlexOffset.xs', 'fxFlexOffset.sm', 'fxFlexOffset.md', @@ -1014,10 +1094,7 @@ class FlexOffsetDirective extends BaseDirective2 { * @param {?} marshal * @param {?} styler */ - constructor(elRef, directionality, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal, styler) { + constructor(elRef, directionality, styleBuilder, marshal, styler) { super(elRef, styleBuilder, styler, marshal); this.elRef = elRef; this.directionality = directionality; @@ -1034,16 +1111,21 @@ class FlexOffsetDirective extends BaseDirective2 { .subscribe(this.triggerUpdate.bind(this)); } } + // ********************************************* + // Protected methods + // ********************************************* /** * Using the current fxFlexOffset value, update the inline CSS * NOTE: this will assign `margin-left` if the parent flex-direction == 'row', * otherwise `margin-top` is used for the offset. + * @protected * @param {?=} value * @return {?} */ updateWithValue(value = '') { + // The flex-direction of this element's flex container. Defaults to 'row'. /** @type {?} */ - const layout = this.getFlexFlowDirection(/** @type {?} */ ((this.parentElement)), true); + const layout = this.getFlexFlowDirection((/** @type {?} */ (this.parentElement)), true); /** @type {?} */ const isRtl = this.directionality.value === 'rtl'; if (layout === 'row' && isRtl) { @@ -1089,7 +1171,7 @@ const flexOffsetCacheColumnLtr = new Map(); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class FlexAlignStyleBuilder extends StyleBuilder { /** @@ -1118,7 +1200,7 @@ class FlexAlignStyleBuilder extends StyleBuilder { FlexAlignStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; -/** @nocollapse */ FlexAlignStyleBuilder.ngInjectableDef = defineInjectable({ factory: function FlexAlignStyleBuilder_Factory() { return new FlexAlignStyleBuilder(); }, token: FlexAlignStyleBuilder, providedIn: "root" }); +/** @nocollapse */ FlexAlignStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function FlexAlignStyleBuilder_Factory() { return new FlexAlignStyleBuilder(); }, token: FlexAlignStyleBuilder, providedIn: "root" }); /** @type {?} */ const inputs$5 = [ 'fxFlexAlign', 'fxFlexAlign.xs', 'fxFlexAlign.sm', 'fxFlexAlign.md', @@ -1145,10 +1227,7 @@ class FlexAlignDirective extends BaseDirective2 { * @param {?} styleBuilder * @param {?} marshal */ - constructor(elRef, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + constructor(elRef, styleUtils, styleBuilder, marshal) { super(elRef, styleBuilder, styleUtils, marshal); this.elRef = elRef; this.styleUtils = styleUtils; @@ -1180,7 +1259,7 @@ DefaultFlexAlignDirective.decorators = [ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const FLEX_FILL_CSS = { @@ -1202,7 +1281,7 @@ class FlexFillStyleBuilder extends StyleBuilder { FlexFillStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; -/** @nocollapse */ FlexFillStyleBuilder.ngInjectableDef = defineInjectable({ factory: function FlexFillStyleBuilder_Factory() { return new FlexFillStyleBuilder(); }, token: FlexFillStyleBuilder, providedIn: "root" }); +/** @nocollapse */ FlexFillStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function FlexFillStyleBuilder_Factory() { return new FlexFillStyleBuilder(); }, token: FlexFillStyleBuilder, providedIn: "root" }); /** * 'fxFill' flexbox styling directive * Maximizes width and height of element in a layout container @@ -1241,7 +1320,7 @@ const flexFillCache = new Map(); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class LayoutAlignStyleBuilder extends StyleBuilder { /** @@ -1304,25 +1383,24 @@ class LayoutAlignStyleBuilder extends StyleBuilder { break; case 'stretch': default: // 'stretch' - // 'stretch' css['align-items'] = css['align-content'] = 'stretch'; // default cross axis break; } - return /** @type {?} */ (extendObject(css, { - 'display': 'flex', + return (/** @type {?} */ (extendObject(css, { + 'display': parent.inline ? 'inline-flex' : 'flex', 'flex-direction': parent.layout, 'box-sizing': 'border-box', 'max-width': crossAxis === 'stretch' ? !isFlowHorizontal(parent.layout) ? '100%' : null : null, 'max-height': crossAxis === 'stretch' ? isFlowHorizontal(parent.layout) ? '100%' : null : null, - })); + }))); } } LayoutAlignStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; -/** @nocollapse */ LayoutAlignStyleBuilder.ngInjectableDef = defineInjectable({ factory: function LayoutAlignStyleBuilder_Factory() { return new LayoutAlignStyleBuilder(); }, token: LayoutAlignStyleBuilder, providedIn: "root" }); +/** @nocollapse */ LayoutAlignStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function LayoutAlignStyleBuilder_Factory() { return new LayoutAlignStyleBuilder(); }, token: LayoutAlignStyleBuilder, providedIn: "root" }); /** @type {?} */ const inputs$6 = [ 'fxLayoutAlign', 'fxLayoutAlign.xs', 'fxLayoutAlign.sm', 'fxLayoutAlign.md', @@ -1347,60 +1425,84 @@ const selector$6 = ` * @see https://css-tricks.com/almanac/properties/a/align-content/ */ class LayoutAlignDirective extends BaseDirective2 { + // default inline value /** * @param {?} elRef * @param {?} styleUtils * @param {?} styleBuilder * @param {?} marshal */ - constructor(elRef, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + constructor(elRef, styleUtils, styleBuilder, marshal) { super(elRef, styleBuilder, styleUtils, marshal); this.elRef = elRef; this.styleUtils = styleUtils; this.styleBuilder = styleBuilder; this.marshal = marshal; this.DIRECTIVE_KEY = 'layout-align'; - this.layout = 'row'; + this.layout = 'row'; // default flex-direction + // default flex-direction + this.inline = false; // default inline value this.init(); this.marshal.trackValue(this.nativeElement, 'layout') .pipe(takeUntil(this.destroySubject)) .subscribe(this.onLayoutChange.bind(this)); } + // ********************************************* + // Protected methods + // ********************************************* /** * + * @protected * @param {?} value * @return {?} */ updateWithValue(value) { /** @type {?} */ const layout = this.layout || 'row'; - if (layout === 'row') { + /** @type {?} */ + const inline = this.inline; + if (layout === 'row' && inline) { + this.styleCache = layoutAlignHorizontalInlineCache; + } + else if (layout === 'row' && !inline) { this.styleCache = layoutAlignHorizontalCache; } - else if (layout === 'row-reverse') { + else if (layout === 'row-reverse' && inline) { + this.styleCache = layoutAlignHorizontalRevInlineCache; + } + else if (layout === 'row-reverse' && !inline) { this.styleCache = layoutAlignHorizontalRevCache; } - else if (layout === 'column') { + else if (layout === 'column' && inline) { + this.styleCache = layoutAlignVerticalInlineCache; + } + else if (layout === 'column' && !inline) { this.styleCache = layoutAlignVerticalCache; } - else if (layout === 'column-reverse') { + else if (layout === 'column-reverse' && inline) { + this.styleCache = layoutAlignVerticalRevInlineCache; + } + else if (layout === 'column-reverse' && !inline) { this.styleCache = layoutAlignVerticalRevCache; } - this.addStyles(value, { layout }); + this.addStyles(value, { layout, inline }); } /** * Cache the parent container 'flex-direction' and update the 'flex' styles + * @protected * @param {?} matcher * @return {?} */ onLayoutChange(matcher) { /** @type {?} */ - const layout = matcher.value; - this.layout = layout.split(' ')[0]; - if (!LAYOUT_VALUES.find(x => x === this.layout)) { + const layoutKeys = matcher.value.split(' '); + this.layout = layoutKeys[0]; + this.inline = matcher.value.includes('inline'); + if (!LAYOUT_VALUES.find((/** + * @param {?} x + * @return {?} + */ + x => x === this.layout))) { this.layout = 'row'; } this.triggerUpdate(); @@ -1430,10 +1532,18 @@ const layoutAlignVerticalCache = new Map(); const layoutAlignHorizontalRevCache = new Map(); /** @type {?} */ const layoutAlignVerticalRevCache = new Map(); +/** @type {?} */ +const layoutAlignHorizontalInlineCache = new Map(); +/** @type {?} */ +const layoutAlignVerticalInlineCache = new Map(); +/** @type {?} */ +const layoutAlignHorizontalRevInlineCache = new Map(); +/** @type {?} */ +const layoutAlignVerticalRevInlineCache = new Map(); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const ALL_DIRECTIVES = [ @@ -1463,12 +1573,12 @@ FlexModule.decorators = [ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ export { FlexModule, FlexStyleBuilder, FlexDirective, DefaultFlexDirective, FlexAlignStyleBuilder, FlexAlignDirective, DefaultFlexAlignDirective, FlexFillStyleBuilder, FlexFillDirective, FlexOffsetStyleBuilder, FlexOffsetDirective, DefaultFlexOffsetDirective, FlexOrderStyleBuilder, FlexOrderDirective, DefaultFlexOrderDirective, LayoutStyleBuilder, LayoutDirective, DefaultLayoutDirective, LayoutAlignStyleBuilder, LayoutAlignDirective, DefaultLayoutAlignDirective, LayoutGapStyleBuilder, LayoutGapDirective, DefaultLayoutGapDirective }; diff --git a/esm2015/flex.js.map b/esm2015/flex.js.map index b60190fe2..8e8c05667 100644 --- a/esm2015/flex.js.map +++ b/esm2015/flex.js.map @@ -1 +1 @@ -{"version":3,"file":"flex.js","sources":["../../../src/lib/flex/module.ts","../../../src/lib/flex/layout-align/layout-align.ts","../../../src/lib/flex/flex-fill/flex-fill.ts","../../../src/lib/flex/flex-align/flex-align.ts","../../../src/lib/flex/flex-offset/flex-offset.ts","../../../src/lib/flex/flex-order/flex-order.ts","../../../src/lib/flex/flex/flex.ts","../../../src/lib/utils/object-extend.ts","../../../src/lib/flex/layout-gap/layout-gap.ts","../../../src/lib/flex/layout/layout.ts","../../../src/lib/utils/layout-validator.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {NgModule} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultLayoutDirective} from './layout/layout';\nimport {DefaultLayoutGapDirective} from './layout-gap/layout-gap';\nimport {DefaultFlexDirective} from './flex/flex';\nimport {DefaultFlexOrderDirective} from './flex-order/flex-order';\nimport {DefaultFlexOffsetDirective} from './flex-offset/flex-offset';\nimport {DefaultFlexAlignDirective} from './flex-align/flex-align';\nimport {FlexFillDirective} from './flex-fill/flex-fill';\nimport {DefaultLayoutAlignDirective} from './layout-align/layout-align';\n\n\nconst ALL_DIRECTIVES = [\n DefaultLayoutDirective,\n DefaultLayoutGapDirective,\n DefaultLayoutAlignDirective,\n DefaultFlexOrderDirective,\n DefaultFlexOffsetDirective,\n FlexFillDirective,\n DefaultFlexAlignDirective,\n DefaultFlexDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the Flex API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule, BidiModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class FlexModule {\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {extendObject} from '../../utils/object-extend';\nimport {LAYOUT_VALUES, isFlowHorizontal} from '../../utils/layout-validator';\n\nexport interface LayoutAlignParent {\n layout: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class LayoutAlignStyleBuilder extends StyleBuilder {\n buildStyles(align: string, parent: LayoutAlignParent) {\n const css: StyleDefinition = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['justify-content'] = 'center';\n break;\n case 'space-around':\n css['justify-content'] = 'space-around';\n break;\n case 'space-between':\n css['justify-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['justify-content'] = 'space-evenly';\n break;\n case 'end':\n case 'flex-end':\n css['justify-content'] = 'flex-end';\n break;\n case 'start':\n case 'flex-start':\n default :\n css['justify-content'] = 'flex-start'; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'flex-start':\n css['align-items'] = css['align-content'] = 'flex-start';\n break;\n case 'center':\n css['align-items'] = css['align-content'] = 'center';\n break;\n case 'end':\n case 'flex-end':\n css['align-items'] = css['align-content'] = 'flex-end';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n css['align-items'] = 'stretch';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n css['align-items'] = 'stretch';\n break;\n case 'baseline':\n css['align-content'] = 'stretch';\n css['align-items'] = 'baseline';\n break;\n case 'stretch':\n default : // 'stretch'\n css['align-items'] = css['align-content'] = 'stretch'; // default cross axis\n break;\n }\n\n return extendObject(css, {\n 'display' : 'flex',\n 'flex-direction' : parent.layout,\n 'box-sizing' : 'border-box',\n 'max-width': crossAxis === 'stretch' ?\n !isFlowHorizontal(parent.layout) ? '100%' : null : null,\n 'max-height': crossAxis === 'stretch' ?\n isFlowHorizontal(parent.layout) ? '100%' : null : null,\n }) as StyleDefinition;\n }\n}\n\nconst inputs = [\n 'fxLayoutAlign', 'fxLayoutAlign.xs', 'fxLayoutAlign.sm', 'fxLayoutAlign.md',\n 'fxLayoutAlign.lg', 'fxLayoutAlign.xl', 'fxLayoutAlign.lt-sm', 'fxLayoutAlign.lt-md',\n 'fxLayoutAlign.lt-lg', 'fxLayoutAlign.lt-xl', 'fxLayoutAlign.gt-xs', 'fxLayoutAlign.gt-sm',\n 'fxLayoutAlign.gt-md', 'fxLayoutAlign.gt-lg'\n];\nconst selector = `\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n`;\n\n/**\n * 'layout-align' flexbox styling directive\n * Defines positioning of child elements along main and cross axis in a layout container\n * Optional values: {main-axis} values or {main-axis cross-axis} value pairs\n *\n * @see https://css-tricks.com/almanac/properties/j/justify-content/\n * @see https://css-tricks.com/almanac/properties/a/align-items/\n * @see https://css-tricks.com/almanac/properties/a/align-content/\n */\nexport class LayoutAlignDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'layout-align';\n protected layout = 'row'; // default flex-direction\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutAlignStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n this.marshal.trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n *\n */\n protected updateWithValue(value: string) {\n const layout = this.layout || 'row';\n if (layout === 'row') {\n this.styleCache = layoutAlignHorizontalCache;\n } else if (layout === 'row-reverse') {\n this.styleCache = layoutAlignHorizontalRevCache;\n } else if (layout === 'column') {\n this.styleCache = layoutAlignVerticalCache;\n } else if (layout === 'column-reverse') {\n this.styleCache = layoutAlignVerticalRevCache;\n }\n this.addStyles(value, {layout});\n }\n\n /**\n * Cache the parent container 'flex-direction' and update the 'flex' styles\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n this.layout = layout.split(' ')[0];\n if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutAlignDirective extends LayoutAlignDirective {\n protected inputs = inputs;\n}\n\nconst layoutAlignHorizontalCache: Map = new Map();\nconst layoutAlignVerticalCache: Map = new Map();\nconst layoutAlignHorizontalRevCache: Map = new Map();\nconst layoutAlignVerticalRevCache: Map = new Map();\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 {Directive, ElementRef, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\nconst FLEX_FILL_CSS = {\n 'margin': 0,\n 'width': '100%',\n 'height': '100%',\n 'min-width': '100%',\n 'min-height': '100%'\n};\n\n@Injectable({providedIn: 'root'})\nexport class FlexFillStyleBuilder extends StyleBuilder {\n buildStyles(_input: string) {\n return FLEX_FILL_CSS;\n }\n}\n\n/**\n * 'fxFill' flexbox styling directive\n * Maximizes width and height of element in a layout container\n *\n * NOTE: fxFill is NOT responsive API!!\n */\n@Directive({selector: `[fxFill], [fxFlexFill]`})\nexport class FlexFillDirective extends BaseDirective2 {\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n protected styleBuilder: FlexFillStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.addStyles('');\n }\n\n protected styleCache = flexFillCache;\n}\n\nconst flexFillCache: Map = new Map();\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class FlexAlignStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n input = input || 'stretch';\n const styles: StyleDefinition = {};\n\n // Cross-axis\n switch (input) {\n case 'start':\n styles['align-self'] = 'flex-start';\n break;\n case 'end':\n styles['align-self'] = 'flex-end';\n break;\n default:\n styles['align-self'] = input;\n break;\n }\n\n return styles;\n }\n}\n\nconst inputs = [\n 'fxFlexAlign', 'fxFlexAlign.xs', 'fxFlexAlign.sm', 'fxFlexAlign.md',\n 'fxFlexAlign.lg', 'fxFlexAlign.xl', 'fxFlexAlign.lt-sm', 'fxFlexAlign.lt-md',\n 'fxFlexAlign.lt-lg', 'fxFlexAlign.lt-xl', 'fxFlexAlign.gt-xs', 'fxFlexAlign.gt-sm',\n 'fxFlexAlign.gt-md', 'fxFlexAlign.gt-lg'\n];\nconst selector = `\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n`;\n\n/**\n * 'flex-align' flexbox styling directive\n * Allows element-specific overrides for cross-axis alignments in a layout container\n * @see https://css-tricks.com/almanac/properties/a/align-self/\n */\nexport class FlexAlignDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'flex-align';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexAlignStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = flexAlignCache;\n}\n\nconst flexAlignCache: Map = new Map();\n\n@Directive({selector, inputs})\nexport class DefaultFlexAlignDirective extends FlexAlignDirective {\n protected inputs = inputs;\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 {\n Directive,\n ElementRef,\n OnChanges,\n Optional,\n Injectable,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {isFlowHorizontal} from '../../utils/layout-validator';\n\nexport interface FlexOffsetParent {\n layout: string;\n isRtl: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FlexOffsetStyleBuilder extends StyleBuilder {\n buildStyles(offset: string, parent: FlexOffsetParent) {\n if (offset === '') {\n offset = '0';\n }\n const isPercent = String(offset).indexOf('%') > -1;\n const isPx = String(offset).indexOf('px') > -1;\n if (!isPx && !isPercent && !isNaN(+offset)) {\n offset = offset + '%';\n }\n const horizontalLayoutKey = parent.isRtl ? 'margin-right' : 'margin-left';\n const styles: StyleDefinition = isFlowHorizontal(parent.layout) ?\n {[horizontalLayoutKey]: `${offset}`} : {'margin-top': `${offset}`};\n\n return styles;\n }\n}\n\nconst inputs = [\n 'fxFlexOffset', 'fxFlexOffset.xs', 'fxFlexOffset.sm', 'fxFlexOffset.md',\n 'fxFlexOffset.lg', 'fxFlexOffset.xl', 'fxFlexOffset.lt-sm', 'fxFlexOffset.lt-md',\n 'fxFlexOffset.lt-lg', 'fxFlexOffset.lt-xl', 'fxFlexOffset.gt-xs', 'fxFlexOffset.gt-sm',\n 'fxFlexOffset.gt-md', 'fxFlexOffset.gt-lg'\n];\nconst selector = `\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n`;\n\n/**\n * 'flex-offset' flexbox styling directive\n * Configures the 'margin-left' of the element in a layout container\n */\nexport class FlexOffsetDirective extends BaseDirective2 implements OnChanges {\n protected DIRECTIVE_KEY = 'flex-offset';\n\n constructor(protected elRef: ElementRef,\n protected directionality: Directionality,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexOffsetStyleBuilder,\n protected marshal: MediaMarshaller,\n protected styler: StyleUtils) {\n super(elRef, styleBuilder, styler, marshal);\n this.init([this.directionality.change]);\n // Parent DOM `layout-gap` with affect the nested child with `flex-offset`\n if (this.parentElement) {\n this.marshal\n .trackValue(this.parentElement, 'layout-gap')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerUpdate.bind(this));\n }\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Using the current fxFlexOffset value, update the inline CSS\n * NOTE: this will assign `margin-left` if the parent flex-direction == 'row',\n * otherwise `margin-top` is used for the offset.\n */\n protected updateWithValue(value: string|number = ''): void {\n // The flex-direction of this element's flex container. Defaults to 'row'.\n const layout = this.getFlexFlowDirection(this.parentElement!, true);\n const isRtl = this.directionality.value === 'rtl';\n if (layout === 'row' && isRtl) {\n this.styleCache = flexOffsetCacheRowRtl;\n } else if (layout === 'row' && !isRtl) {\n this.styleCache = flexOffsetCacheRowLtr;\n } else if (layout === 'column' && isRtl) {\n this.styleCache = flexOffsetCacheColumnRtl;\n } else if (layout === 'column' && !isRtl) {\n this.styleCache = flexOffsetCacheColumnLtr;\n }\n this.addStyles(value + '', {layout, isRtl});\n }\n}\n\n@Directive({selector, inputs})\nexport class DefaultFlexOffsetDirective extends FlexOffsetDirective {\n protected inputs = inputs;\n}\n\nconst flexOffsetCacheRowRtl: Map = new Map();\nconst flexOffsetCacheColumnRtl: Map = new Map();\nconst flexOffsetCacheRowLtr: Map = new Map();\nconst flexOffsetCacheColumnLtr: Map = new Map();\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 {Directive, ElementRef, OnChanges, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class FlexOrderStyleBuilder extends StyleBuilder {\n buildStyles(value: string) {\n return {order: (value && parseInt(value, 10)) || ''};\n }\n}\n\nconst inputs = [\n 'fxFlexOrder', 'fxFlexOrder.xs', 'fxFlexOrder.sm', 'fxFlexOrder.md',\n 'fxFlexOrder.lg', 'fxFlexOrder.xl', 'fxFlexOrder.lt-sm', 'fxFlexOrder.lt-md',\n 'fxFlexOrder.lt-lg', 'fxFlexOrder.lt-xl', 'fxFlexOrder.gt-xs', 'fxFlexOrder.gt-sm',\n 'fxFlexOrder.gt-md', 'fxFlexOrder.gt-lg'\n];\nconst selector = `\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n`;\n\n/**\n * 'flex-order' flexbox styling directive\n * Configures the positional ordering of the element in a sorted layout container\n * @see https://css-tricks.com/almanac/properties/o/order/\n */\nexport class FlexOrderDirective extends BaseDirective2 implements OnChanges {\n\n protected DIRECTIVE_KEY = 'flex-order';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexOrderStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = flexOrderCache;\n}\n\nconst flexOrderCache: Map = new Map();\n\n@Directive({selector, inputs})\nexport class DefaultFlexOrderDirective extends FlexOrderDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Inject, Injectable, Input} from '@angular/core';\nimport {\n BaseDirective2,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n StyleUtils,\n validateBasis,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {extendObject} from '../../utils/object-extend';\nimport {isFlowHorizontal} from '../../utils/layout-validator';\n\ninterface FlexBuilderParent {\n direction: string;\n hasWrap: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FlexStyleBuilder extends StyleBuilder {\n constructor(@Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions) {\n super();\n }\n buildStyles(input: string, parent: FlexBuilderParent) {\n let [grow, shrink, ...basisParts]: (string|number)[] = input.split(' ');\n let basis = basisParts.join(' ');\n\n // The flex-direction of this element's flex container. Defaults to 'row'.\n const direction = (parent.direction.indexOf('column') > -1) ? 'column' : 'row';\n\n const max = isFlowHorizontal(direction) ? 'max-width' : 'max-height';\n const min = isFlowHorizontal(direction) ? 'min-width' : 'min-height';\n\n const hasCalc = String(basis).indexOf('calc') > -1;\n const usingCalc = hasCalc || (basis === 'auto');\n const isPercent = String(basis).indexOf('%') > -1 && !hasCalc;\n const hasUnits = String(basis).indexOf('px') > -1 || String(basis).indexOf('rem') > -1 ||\n String(basis).indexOf('em') > -1 || String(basis).indexOf('vw') > -1 ||\n String(basis).indexOf('vh') > -1;\n\n let isValue = (hasCalc || hasUnits);\n\n grow = (grow == '0') ? 0 : grow;\n shrink = (shrink == '0') ? 0 : shrink;\n\n // make box inflexible when shrink and grow are both zero\n // should not set a min when the grow is zero\n // should not set a max when the shrink is zero\n const isFixed = !grow && !shrink;\n\n let css: {[key: string]: string | number | null} = {};\n\n // flex-basis allows you to specify the initial/starting main-axis size of the element,\n // before anything else is computed. It can either be a percentage or an absolute value.\n // It is, however, not the breaking point for flex-grow/shrink properties\n //\n // flex-grow can be seen as this:\n // 0: Do not stretch. Either size to element's content width, or obey 'flex-basis'.\n // 1: (Default value). Stretch; will be the same size to all other flex items on\n // the same row since they have a default value of 1.\n // ≥2 (integer n): Stretch. Will be n times the size of other elements\n // with 'flex-grow: 1' on the same row.\n\n // Use `null` to clear existing styles.\n const clearStyles = {\n 'max-width': null,\n 'max-height': null,\n 'min-width': null,\n 'min-height': null\n };\n switch (basis || '') {\n case '':\n const useColumnBasisZero = this.layoutConfig.useColumnBasisZero !== false;\n basis = direction === 'row' ? '0%' : (useColumnBasisZero ? '0.000000001px' : 'auto');\n break;\n case 'initial': // default\n case 'nogrow':\n grow = 0;\n basis = 'auto';\n break;\n case 'grow':\n basis = '100%';\n break;\n case 'noshrink':\n shrink = 0;\n basis = 'auto';\n break;\n case 'auto':\n break;\n case 'none':\n grow = 0;\n shrink = 0;\n basis = 'auto';\n break;\n default:\n // Defaults to percentage sizing unless `px` is explicitly set\n if (!isValue && !isPercent && !isNaN(basis as any)) {\n basis = basis + '%';\n }\n\n // Fix for issue 280\n if (basis === '0%') {\n isValue = true;\n }\n\n if (basis === '0px') {\n basis = '0%';\n }\n\n // fix issue #5345\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': isValue ? basis : '100%'\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${isValue ? basis : '100%'}`\n });\n }\n\n break;\n }\n\n if (!(css['flex'] || css['flex-grow'])) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n }\n\n // Fix for issues 277, 534, and 728\n if (basis !== '0%' && basis !== '0px' && basis !== '0.000000001px' && basis !== 'auto') {\n css[min] = isFixed || (isValue && grow) ? basis : null;\n css[max] = isFixed || (!usingCalc && shrink) ? basis : null;\n }\n\n // Fix for issue 528\n if (!css[min] && !css[max]) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n } else {\n // Fix for issue 660\n if (parent.hasWrap) {\n css[hasCalc ? 'flex-basis' : 'flex'] = css[max] ?\n (hasCalc ? css[max] : `${grow} ${shrink} ${css[max]}`) :\n (hasCalc ? css[min] : `${grow} ${shrink} ${css[min]}`);\n }\n }\n\n return extendObject(css, {'box-sizing': 'border-box'}) as StyleDefinition;\n }\n}\n\nconst inputs = [\n 'fxFlex', 'fxFlex.xs', 'fxFlex.sm', 'fxFlex.md',\n 'fxFlex.lg', 'fxFlex.xl', 'fxFlex.lt-sm', 'fxFlex.lt-md',\n 'fxFlex.lt-lg', 'fxFlex.lt-xl', 'fxFlex.gt-xs', 'fxFlex.gt-sm',\n 'fxFlex.gt-md', 'fxFlex.gt-lg'\n];\nconst selector = `\n [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n [fxFlex.gt-md], [fxFlex.gt-lg]\n`;\n\n/**\n * Directive to control the size of a flex item using flex-basis, flex-grow, and flex-shrink.\n * Corresponds to the css `flex` shorthand property.\n *\n * @see https://css-tricks.com/snippets/css/a-guide-to-flexbox/\n */\nexport class FlexDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'flex';\n protected direction = '';\n protected wrap = false;\n\n\n @Input('fxShrink')\n get shrink(): string { return this.flexShrink; }\n set shrink(value: string) {\n this.flexShrink = value || '1';\n this.triggerReflow();\n }\n\n @Input('fxGrow')\n get grow(): string { return this.flexGrow; }\n set grow(value: string) {\n this.flexGrow = value || '1';\n this.triggerReflow();\n }\n\n protected flexGrow = '1';\n protected flexShrink = '1';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n protected styleBuilder: FlexStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n if (this.parentElement) {\n this.marshal.trackValue(this.parentElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n }\n\n /**\n * Caches the parent container's 'flex-direction' and updates the element's style.\n * Used as a handler for layout change events from the parent flex container.\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n const layoutParts = layout.split(' ');\n this.direction = layoutParts[0];\n this.wrap = layoutParts[1] !== undefined && layoutParts[1] === 'wrap';\n this.triggerUpdate();\n }\n\n /** Input to this is exclusively the basis input value */\n protected updateWithValue(value: string) {\n const addFlexToParent = this.layoutConfig.addFlexToParent !== false;\n if (!this.direction) {\n this.direction = this.getFlexFlowDirection(this.parentElement!, addFlexToParent);\n }\n const direction = this.direction;\n const isHorizontal = direction.startsWith('row');\n const hasWrap = this.wrap;\n if (isHorizontal && hasWrap) {\n this.styleCache = flexRowWrapCache;\n } else if (isHorizontal && !hasWrap) {\n this.styleCache = flexRowCache;\n } else if (!isHorizontal && hasWrap) {\n this.styleCache = flexColumnWrapCache;\n } else if (!isHorizontal && !hasWrap) {\n this.styleCache = flexColumnCache;\n }\n const basis = String(value).replace(';', '');\n const parts = validateBasis(basis, this.flexGrow, this.flexShrink);\n this.addStyles(parts.join(' '), {direction, hasWrap});\n }\n\n /** Trigger a style reflow, usually based on a shrink/grow input event */\n protected triggerReflow() {\n const parts = validateBasis(this.activatedValue, this.flexGrow, this.flexShrink);\n this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, parts.join(' '));\n }\n}\n\n@Directive({inputs, selector})\nexport class DefaultFlexDirective extends FlexDirective {\n protected inputs = inputs;\n}\n\nconst flexRowCache: Map = new Map();\nconst flexColumnCache: Map = new Map();\nconst flexRowWrapCache: Map = new Map();\nconst flexColumnWrapCache: Map = new Map();\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 */\nimport {\n Directive,\n ElementRef,\n Optional,\n OnDestroy,\n NgZone,\n Injectable,\n AfterContentInit,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {LAYOUT_VALUES} from '../../utils/layout-validator';\n\nexport interface LayoutGapParent {\n directionality: string;\n items: HTMLElement[];\n layout: string;\n}\n\nconst CLEAR_MARGIN_CSS = {\n 'margin-left': null,\n 'margin-right': null,\n 'margin-top': null,\n 'margin-bottom': null\n};\n\n@Injectable({providedIn: 'root'})\nexport class LayoutGapStyleBuilder extends StyleBuilder {\n constructor(private _styler: StyleUtils) {\n super();\n }\n\n buildStyles(gapValue: string, parent: LayoutGapParent) {\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n\n // Add the margin to the host element\n return buildGridMargin(gapValue, parent.directionality);\n } else {\n return {};\n }\n }\n\n sideEffect(gapValue: string, _styles: StyleDefinition, parent: LayoutGapParent) {\n const items = parent.items;\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n // For each `element` children, set the padding\n const paddingStyles = buildGridPadding(gapValue, parent.directionality);\n this._styler.applyStyleToElements(paddingStyles, parent.items);\n } else {\n const lastItem = items.pop();\n\n // For each `element` children EXCEPT the last,\n // set the margin right/bottom styles...\n const gapCss = buildGapCSS(gapValue, parent);\n this._styler.applyStyleToElements(gapCss, items);\n\n // Clear all gaps for all visible elements\n this._styler.applyStyleToElements(CLEAR_MARGIN_CSS, [lastItem!]);\n }\n }\n}\n\nconst inputs = [\n 'fxLayoutGap', 'fxLayoutGap.xs', 'fxLayoutGap.sm', 'fxLayoutGap.md',\n 'fxLayoutGap.lg', 'fxLayoutGap.xl', 'fxLayoutGap.lt-sm', 'fxLayoutGap.lt-md',\n 'fxLayoutGap.lt-lg', 'fxLayoutGap.lt-xl', 'fxLayoutGap.gt-xs', 'fxLayoutGap.gt-sm',\n 'fxLayoutGap.gt-md', 'fxLayoutGap.gt-lg'\n];\nconst selector = `\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n`;\n\n/**\n * 'layout-padding' styling directive\n * Defines padding of child elements in a layout container\n */\nexport class LayoutGapDirective extends BaseDirective2 implements AfterContentInit, OnDestroy {\n protected layout = 'row'; // default flex-direction\n protected DIRECTIVE_KEY = 'layout-gap';\n protected observerSubject = new Subject();\n\n /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */\n protected get childrenNodes(): HTMLElement[] {\n const obj = this.nativeElement.children;\n const buffer: any[] = [];\n\n // iterate backwards ensuring that length is an UInt32\n for (let i = obj.length; i--;) {\n buffer[i] = obj[i];\n }\n return buffer;\n }\n\n constructor(protected elRef: ElementRef,\n protected zone: NgZone,\n protected directionality: Directionality,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutGapStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n const extraTriggers = [this.directionality.change, this.observerSubject.asObservable()];\n this.init(extraTriggers);\n this.marshal\n .trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n ngAfterContentInit() {\n this.buildChildObservable();\n this.triggerUpdate();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Cache the parent container 'flex-direction' and update the 'margin' styles\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n // Make sure to filter out 'wrap' option\n const direction = layout.split(' ');\n this.layout = direction[0];\n if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n\n /**\n *\n */\n protected updateWithValue(value: string) {\n if (!value) {\n value = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY);\n }\n // Gather all non-hidden Element nodes\n const items = this.childrenNodes\n .filter(el => el.nodeType === 1 && this.willDisplay(el))\n .sort((a, b) => {\n const orderA = +this.styler.lookupStyle(a, 'order');\n const orderB = +this.styler.lookupStyle(b, 'order');\n if (isNaN(orderA) || isNaN(orderB) || orderA === orderB) {\n return 0;\n } else {\n return orderA > orderB ? 1 : -1;\n }\n });\n\n if (items.length > 0) {\n const directionality = this.directionality.value;\n const layout = this.layout;\n if (layout === 'row' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheRowRtl;\n } else if (layout === 'row' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheRowLtr;\n } else if (layout === 'column' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheColumnRtl;\n } else if (layout === 'column' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheColumnLtr;\n }\n this.addStyles(value, {directionality, items, layout});\n }\n }\n\n /** Determine if an element will show or hide based on current activation */\n protected willDisplay(source: HTMLElement): boolean {\n const value = this.marshal.getValue(source, 'show-hide');\n return value === true ||\n (value === '' && this.styleUtils.lookupStyle(source, 'display') !== 'none');\n }\n\n protected buildChildObservable(): void {\n this.zone.runOutsideAngular(() => {\n if (typeof MutationObserver !== 'undefined') {\n this.observer = new MutationObserver((mutations: MutationRecord[]) => {\n const validatedChanges = (it: MutationRecord): boolean => {\n return (it.addedNodes && it.addedNodes.length > 0) ||\n (it.removedNodes && it.removedNodes.length > 0);\n };\n\n // update gap styles only for child 'added' or 'removed' events\n if (mutations.some(validatedChanges)) {\n this.observerSubject.next();\n }\n });\n this.observer.observe(this.nativeElement, {childList: true});\n }\n });\n }\n\n protected observer?: MutationObserver;\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutGapDirective extends LayoutGapDirective {\n protected inputs = inputs;\n}\n\nconst layoutGapCacheRowRtl: Map = new Map();\nconst layoutGapCacheColumnRtl: Map = new Map();\nconst layoutGapCacheRowLtr: Map = new Map();\nconst layoutGapCacheColumnLtr: Map = new Map();\n\nconst GRID_SPECIFIER = ' grid';\n\nfunction buildGridPadding(value: string, directionality: string): StyleDefinition {\n let paddingTop = '0px', paddingRight = '0px', paddingBottom = value, paddingLeft = '0px';\n\n if (directionality === 'rtl') {\n paddingLeft = value;\n } else {\n paddingRight = value;\n }\n\n return {'padding': `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`};\n}\n\nfunction buildGridMargin(value: string, directionality: string): StyleDefinition {\n let marginTop = '0px', marginRight = '0px', marginBottom = '-' + value, marginLeft = '0px';\n\n if (directionality === 'rtl') {\n marginLeft = '-' + value;\n } else {\n marginRight = '-' + value;\n }\n\n return {'margin': `${marginTop} ${marginRight} ${marginBottom} ${marginLeft}`};\n}\n\nfunction buildGapCSS(gapValue: string,\n parent: {directionality: string, layout: string}): StyleDefinition {\n let key, margins: {[key: string]: string | null} = {...CLEAR_MARGIN_CSS};\n\n switch (parent.layout) {\n case 'column':\n key = 'margin-bottom';\n break;\n case 'column-reverse':\n key = 'margin-top';\n break;\n case 'row':\n key = parent.directionality === 'rtl' ? 'margin-left' : 'margin-right';\n break;\n case 'row-reverse':\n key = parent.directionality === 'rtl' ? 'margin-right' : 'margin-left';\n break;\n default :\n key = parent.directionality === 'rtl' ? 'margin-left' : 'margin-right';\n break;\n }\n margins[key] = gapValue;\n\n return margins;\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 {Directive, ElementRef, OnChanges, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\nimport {buildLayoutCSS} from '../../utils/layout-validator';\n\n@Injectable({providedIn: 'root'})\nexport class LayoutStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return buildLayoutCSS(input);\n }\n}\n\nconst inputs = [\n 'fxLayout', 'fxLayout.xs', 'fxLayout.sm', 'fxLayout.md',\n 'fxLayout.lg', 'fxLayout.xl', 'fxLayout.lt-sm', 'fxLayout.lt-md',\n 'fxLayout.lt-lg', 'fxLayout.lt-xl', 'fxLayout.gt-xs', 'fxLayout.gt-sm',\n 'fxLayout.gt-md', 'fxLayout.gt-lg'\n];\nconst selector = `\n [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],\n [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md],\n [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm],\n [fxLayout.gt-md], [fxLayout.gt-lg]\n`;\n\n/**\n * 'layout' flexbox styling directive\n * Defines the positioning flow direction for the child elements: row or column\n * Optional values: column or row (default)\n * @see https://css-tricks.com/almanac/properties/f/flex-direction/\n *\n */\nexport class LayoutDirective extends BaseDirective2 implements OnChanges {\n\n protected DIRECTIVE_KEY = 'layout';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = layoutCache;\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutDirective extends LayoutDirective {\n protected inputs = inputs;\n}\n\nconst layoutCache: Map = new Map();\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='' 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 : 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"],"names":["selector","inputs"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"flex.js","sources":["../../../src/lib/flex/module.ts","../../../src/lib/flex/layout-align/layout-align.ts","../../../src/lib/flex/flex-fill/flex-fill.ts","../../../src/lib/flex/flex-align/flex-align.ts","../../../src/lib/flex/flex-offset/flex-offset.ts","../../../src/lib/flex/flex-order/flex-order.ts","../../../src/lib/flex/flex/flex.ts","../../../src/lib/utils/object-extend.ts","../../../src/lib/flex/layout-gap/layout-gap.ts","../../../src/lib/flex/layout/layout.ts","../../../src/lib/utils/layout-validator.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {NgModule} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultLayoutDirective} from './layout/layout';\nimport {DefaultLayoutGapDirective} from './layout-gap/layout-gap';\nimport {DefaultFlexDirective} from './flex/flex';\nimport {DefaultFlexOrderDirective} from './flex-order/flex-order';\nimport {DefaultFlexOffsetDirective} from './flex-offset/flex-offset';\nimport {DefaultFlexAlignDirective} from './flex-align/flex-align';\nimport {FlexFillDirective} from './flex-fill/flex-fill';\nimport {DefaultLayoutAlignDirective} from './layout-align/layout-align';\n\n\nconst ALL_DIRECTIVES = [\n DefaultLayoutDirective,\n DefaultLayoutGapDirective,\n DefaultLayoutAlignDirective,\n DefaultFlexOrderDirective,\n DefaultFlexOffsetDirective,\n FlexFillDirective,\n DefaultFlexAlignDirective,\n DefaultFlexDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the Flex API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule, BidiModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class FlexModule {\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {extendObject} from '../../utils/object-extend';\nimport {LAYOUT_VALUES, isFlowHorizontal} from '../../utils/layout-validator';\n\nexport interface LayoutAlignParent {\n layout: string;\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class LayoutAlignStyleBuilder extends StyleBuilder {\n buildStyles(align: string, parent: LayoutAlignParent) {\n const css: StyleDefinition = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['justify-content'] = 'center';\n break;\n case 'space-around':\n css['justify-content'] = 'space-around';\n break;\n case 'space-between':\n css['justify-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['justify-content'] = 'space-evenly';\n break;\n case 'end':\n case 'flex-end':\n css['justify-content'] = 'flex-end';\n break;\n case 'start':\n case 'flex-start':\n default :\n css['justify-content'] = 'flex-start'; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'flex-start':\n css['align-items'] = css['align-content'] = 'flex-start';\n break;\n case 'center':\n css['align-items'] = css['align-content'] = 'center';\n break;\n case 'end':\n case 'flex-end':\n css['align-items'] = css['align-content'] = 'flex-end';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n css['align-items'] = 'stretch';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n css['align-items'] = 'stretch';\n break;\n case 'baseline':\n css['align-content'] = 'stretch';\n css['align-items'] = 'baseline';\n break;\n case 'stretch':\n default : // 'stretch'\n css['align-items'] = css['align-content'] = 'stretch'; // default cross axis\n break;\n }\n\n return extendObject(css, {\n 'display' : parent.inline ? 'inline-flex' : 'flex',\n 'flex-direction' : parent.layout,\n 'box-sizing' : 'border-box',\n 'max-width': crossAxis === 'stretch' ?\n !isFlowHorizontal(parent.layout) ? '100%' : null : null,\n 'max-height': crossAxis === 'stretch' ?\n isFlowHorizontal(parent.layout) ? '100%' : null : null,\n }) as StyleDefinition;\n }\n}\n\nconst inputs = [\n 'fxLayoutAlign', 'fxLayoutAlign.xs', 'fxLayoutAlign.sm', 'fxLayoutAlign.md',\n 'fxLayoutAlign.lg', 'fxLayoutAlign.xl', 'fxLayoutAlign.lt-sm', 'fxLayoutAlign.lt-md',\n 'fxLayoutAlign.lt-lg', 'fxLayoutAlign.lt-xl', 'fxLayoutAlign.gt-xs', 'fxLayoutAlign.gt-sm',\n 'fxLayoutAlign.gt-md', 'fxLayoutAlign.gt-lg'\n];\nconst selector = `\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n`;\n\n/**\n * 'layout-align' flexbox styling directive\n * Defines positioning of child elements along main and cross axis in a layout container\n * Optional values: {main-axis} values or {main-axis cross-axis} value pairs\n *\n * @see https://css-tricks.com/almanac/properties/j/justify-content/\n * @see https://css-tricks.com/almanac/properties/a/align-items/\n * @see https://css-tricks.com/almanac/properties/a/align-content/\n */\nexport class LayoutAlignDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'layout-align';\n protected layout = 'row'; // default flex-direction\n protected inline = false; // default inline value\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutAlignStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n this.marshal.trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n *\n */\n protected updateWithValue(value: string) {\n const layout = this.layout || 'row';\n const inline = this.inline;\n if (layout === 'row' && inline) {\n this.styleCache = layoutAlignHorizontalInlineCache;\n } else if (layout === 'row' && !inline) {\n this.styleCache = layoutAlignHorizontalCache;\n } else if (layout === 'row-reverse' && inline) {\n this.styleCache = layoutAlignHorizontalRevInlineCache;\n } else if (layout === 'row-reverse' && !inline) {\n this.styleCache = layoutAlignHorizontalRevCache;\n } else if (layout === 'column' && inline) {\n this.styleCache = layoutAlignVerticalInlineCache;\n } else if (layout === 'column' && !inline) {\n this.styleCache = layoutAlignVerticalCache;\n } else if (layout === 'column-reverse' && inline) {\n this.styleCache = layoutAlignVerticalRevInlineCache;\n } else if (layout === 'column-reverse' && !inline) {\n this.styleCache = layoutAlignVerticalRevCache;\n }\n this.addStyles(value, {layout, inline});\n }\n\n /**\n * Cache the parent container 'flex-direction' and update the 'flex' styles\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layoutKeys: string[] = matcher.value.split(' ');\n this.layout = layoutKeys[0];\n this.inline = matcher.value.includes('inline');\n if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutAlignDirective extends LayoutAlignDirective {\n protected inputs = inputs;\n}\n\nconst layoutAlignHorizontalCache: Map = new Map();\nconst layoutAlignVerticalCache: Map = new Map();\nconst layoutAlignHorizontalRevCache: Map = new Map();\nconst layoutAlignVerticalRevCache: Map = new Map();\nconst layoutAlignHorizontalInlineCache: Map = new Map();\nconst layoutAlignVerticalInlineCache: Map = new Map();\nconst layoutAlignHorizontalRevInlineCache: Map = new Map();\nconst layoutAlignVerticalRevInlineCache: Map = new Map();\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 {Directive, ElementRef, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\nconst FLEX_FILL_CSS = {\n 'margin': 0,\n 'width': '100%',\n 'height': '100%',\n 'min-width': '100%',\n 'min-height': '100%'\n};\n\n@Injectable({providedIn: 'root'})\nexport class FlexFillStyleBuilder extends StyleBuilder {\n buildStyles(_input: string) {\n return FLEX_FILL_CSS;\n }\n}\n\n/**\n * 'fxFill' flexbox styling directive\n * Maximizes width and height of element in a layout container\n *\n * NOTE: fxFill is NOT responsive API!!\n */\n@Directive({selector: `[fxFill], [fxFlexFill]`})\nexport class FlexFillDirective extends BaseDirective2 {\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n protected styleBuilder: FlexFillStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.addStyles('');\n }\n\n protected styleCache = flexFillCache;\n}\n\nconst flexFillCache: Map = new Map();\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class FlexAlignStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n input = input || 'stretch';\n const styles: StyleDefinition = {};\n\n // Cross-axis\n switch (input) {\n case 'start':\n styles['align-self'] = 'flex-start';\n break;\n case 'end':\n styles['align-self'] = 'flex-end';\n break;\n default:\n styles['align-self'] = input;\n break;\n }\n\n return styles;\n }\n}\n\nconst inputs = [\n 'fxFlexAlign', 'fxFlexAlign.xs', 'fxFlexAlign.sm', 'fxFlexAlign.md',\n 'fxFlexAlign.lg', 'fxFlexAlign.xl', 'fxFlexAlign.lt-sm', 'fxFlexAlign.lt-md',\n 'fxFlexAlign.lt-lg', 'fxFlexAlign.lt-xl', 'fxFlexAlign.gt-xs', 'fxFlexAlign.gt-sm',\n 'fxFlexAlign.gt-md', 'fxFlexAlign.gt-lg'\n];\nconst selector = `\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n`;\n\n/**\n * 'flex-align' flexbox styling directive\n * Allows element-specific overrides for cross-axis alignments in a layout container\n * @see https://css-tricks.com/almanac/properties/a/align-self/\n */\nexport class FlexAlignDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'flex-align';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexAlignStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = flexAlignCache;\n}\n\nconst flexAlignCache: Map = new Map();\n\n@Directive({selector, inputs})\nexport class DefaultFlexAlignDirective extends FlexAlignDirective {\n protected inputs = inputs;\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 {\n Directive,\n ElementRef,\n OnChanges,\n Optional,\n Injectable,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {isFlowHorizontal} from '../../utils/layout-validator';\n\nexport interface FlexOffsetParent {\n layout: string;\n isRtl: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FlexOffsetStyleBuilder extends StyleBuilder {\n buildStyles(offset: string, parent: FlexOffsetParent) {\n if (offset === '') {\n offset = '0';\n }\n const isPercent = String(offset).indexOf('%') > -1;\n const isPx = String(offset).indexOf('px') > -1;\n if (!isPx && !isPercent && !isNaN(+offset)) {\n offset = offset + '%';\n }\n const horizontalLayoutKey = parent.isRtl ? 'margin-right' : 'margin-left';\n const styles: StyleDefinition = isFlowHorizontal(parent.layout) ?\n {[horizontalLayoutKey]: `${offset}`} : {'margin-top': `${offset}`};\n\n return styles;\n }\n}\n\nconst inputs = [\n 'fxFlexOffset', 'fxFlexOffset.xs', 'fxFlexOffset.sm', 'fxFlexOffset.md',\n 'fxFlexOffset.lg', 'fxFlexOffset.xl', 'fxFlexOffset.lt-sm', 'fxFlexOffset.lt-md',\n 'fxFlexOffset.lt-lg', 'fxFlexOffset.lt-xl', 'fxFlexOffset.gt-xs', 'fxFlexOffset.gt-sm',\n 'fxFlexOffset.gt-md', 'fxFlexOffset.gt-lg'\n];\nconst selector = `\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n`;\n\n/**\n * 'flex-offset' flexbox styling directive\n * Configures the 'margin-left' of the element in a layout container\n */\nexport class FlexOffsetDirective extends BaseDirective2 implements OnChanges {\n protected DIRECTIVE_KEY = 'flex-offset';\n\n constructor(protected elRef: ElementRef,\n protected directionality: Directionality,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexOffsetStyleBuilder,\n protected marshal: MediaMarshaller,\n protected styler: StyleUtils) {\n super(elRef, styleBuilder, styler, marshal);\n this.init([this.directionality.change]);\n // Parent DOM `layout-gap` with affect the nested child with `flex-offset`\n if (this.parentElement) {\n this.marshal\n .trackValue(this.parentElement, 'layout-gap')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerUpdate.bind(this));\n }\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Using the current fxFlexOffset value, update the inline CSS\n * NOTE: this will assign `margin-left` if the parent flex-direction == 'row',\n * otherwise `margin-top` is used for the offset.\n */\n protected updateWithValue(value: string|number = ''): void {\n // The flex-direction of this element's flex container. Defaults to 'row'.\n const layout = this.getFlexFlowDirection(this.parentElement!, true);\n const isRtl = this.directionality.value === 'rtl';\n if (layout === 'row' && isRtl) {\n this.styleCache = flexOffsetCacheRowRtl;\n } else if (layout === 'row' && !isRtl) {\n this.styleCache = flexOffsetCacheRowLtr;\n } else if (layout === 'column' && isRtl) {\n this.styleCache = flexOffsetCacheColumnRtl;\n } else if (layout === 'column' && !isRtl) {\n this.styleCache = flexOffsetCacheColumnLtr;\n }\n this.addStyles(value + '', {layout, isRtl});\n }\n}\n\n@Directive({selector, inputs})\nexport class DefaultFlexOffsetDirective extends FlexOffsetDirective {\n protected inputs = inputs;\n}\n\nconst flexOffsetCacheRowRtl: Map = new Map();\nconst flexOffsetCacheColumnRtl: Map = new Map();\nconst flexOffsetCacheRowLtr: Map = new Map();\nconst flexOffsetCacheColumnLtr: Map = new Map();\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 {Directive, ElementRef, OnChanges, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class FlexOrderStyleBuilder extends StyleBuilder {\n buildStyles(value: string) {\n return {order: (value && parseInt(value, 10)) || ''};\n }\n}\n\nconst inputs = [\n 'fxFlexOrder', 'fxFlexOrder.xs', 'fxFlexOrder.sm', 'fxFlexOrder.md',\n 'fxFlexOrder.lg', 'fxFlexOrder.xl', 'fxFlexOrder.lt-sm', 'fxFlexOrder.lt-md',\n 'fxFlexOrder.lt-lg', 'fxFlexOrder.lt-xl', 'fxFlexOrder.gt-xs', 'fxFlexOrder.gt-sm',\n 'fxFlexOrder.gt-md', 'fxFlexOrder.gt-lg'\n];\nconst selector = `\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n`;\n\n/**\n * 'flex-order' flexbox styling directive\n * Configures the positional ordering of the element in a sorted layout container\n * @see https://css-tricks.com/almanac/properties/o/order/\n */\nexport class FlexOrderDirective extends BaseDirective2 implements OnChanges {\n\n protected DIRECTIVE_KEY = 'flex-order';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexOrderStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = flexOrderCache;\n}\n\nconst flexOrderCache: Map = new Map();\n\n@Directive({selector, inputs})\nexport class DefaultFlexOrderDirective extends FlexOrderDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Inject, Injectable, Input} from '@angular/core';\nimport {\n BaseDirective2,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n StyleUtils,\n validateBasis,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {extendObject} from '../../utils/object-extend';\nimport {isFlowHorizontal} from '../../utils/layout-validator';\n\ninterface FlexBuilderParent {\n direction: string;\n hasWrap: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FlexStyleBuilder extends StyleBuilder {\n constructor(@Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions) {\n super();\n }\n buildStyles(input: string, parent: FlexBuilderParent) {\n let [grow, shrink, ...basisParts]: (string|number)[] = input.split(' ');\n let basis = basisParts.join(' ');\n\n // The flex-direction of this element's flex container. Defaults to 'row'.\n const direction = (parent.direction.indexOf('column') > -1) ? 'column' : 'row';\n\n const max = isFlowHorizontal(direction) ? 'max-width' : 'max-height';\n const min = isFlowHorizontal(direction) ? 'min-width' : 'min-height';\n\n const hasCalc = String(basis).indexOf('calc') > -1;\n const usingCalc = hasCalc || (basis === 'auto');\n const isPercent = String(basis).indexOf('%') > -1 && !hasCalc;\n const hasUnits = String(basis).indexOf('px') > -1 || String(basis).indexOf('rem') > -1 ||\n String(basis).indexOf('em') > -1 || String(basis).indexOf('vw') > -1 ||\n String(basis).indexOf('vh') > -1;\n\n let isValue = (hasCalc || hasUnits);\n\n grow = (grow == '0') ? 0 : grow;\n shrink = (shrink == '0') ? 0 : shrink;\n\n // make box inflexible when shrink and grow are both zero\n // should not set a min when the grow is zero\n // should not set a max when the shrink is zero\n const isFixed = !grow && !shrink;\n\n let css: {[key: string]: string | number | null} = {};\n\n // flex-basis allows you to specify the initial/starting main-axis size of the element,\n // before anything else is computed. It can either be a percentage or an absolute value.\n // It is, however, not the breaking point for flex-grow/shrink properties\n //\n // flex-grow can be seen as this:\n // 0: Do not stretch. Either size to element's content width, or obey 'flex-basis'.\n // 1: (Default value). Stretch; will be the same size to all other flex items on\n // the same row since they have a default value of 1.\n // ≥2 (integer n): Stretch. Will be n times the size of other elements\n // with 'flex-grow: 1' on the same row.\n\n // Use `null` to clear existing styles.\n const clearStyles = {\n 'max-width': null,\n 'max-height': null,\n 'min-width': null,\n 'min-height': null\n };\n switch (basis || '') {\n case '':\n const useColumnBasisZero = this.layoutConfig.useColumnBasisZero !== false;\n basis = direction === 'row' ? '0%' : (useColumnBasisZero ? '0.000000001px' : 'auto');\n break;\n case 'initial': // default\n case 'nogrow':\n grow = 0;\n basis = 'auto';\n break;\n case 'grow':\n basis = '100%';\n break;\n case 'noshrink':\n shrink = 0;\n basis = 'auto';\n break;\n case 'auto':\n break;\n case 'none':\n grow = 0;\n shrink = 0;\n basis = 'auto';\n break;\n default:\n // Defaults to percentage sizing unless `px` is explicitly set\n if (!isValue && !isPercent && !isNaN(basis as any)) {\n basis = basis + '%';\n }\n\n // Fix for issue 280\n if (basis === '0%') {\n isValue = true;\n }\n\n if (basis === '0px') {\n basis = '0%';\n }\n\n // fix issue #5345\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': isValue ? basis : '100%'\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${isValue ? basis : '100%'}`\n });\n }\n\n break;\n }\n\n if (!(css['flex'] || css['flex-grow'])) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n }\n\n // Fix for issues 277, 534, and 728\n if (basis !== '0%' && basis !== '0px' && basis !== '0.000000001px' && basis !== 'auto') {\n css[min] = isFixed || (isValue && grow) ? basis : null;\n css[max] = isFixed || (!usingCalc && shrink) ? basis : null;\n }\n\n // Fix for issue 528\n if (!css[min] && !css[max]) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n } else {\n // Fix for issue 660\n if (parent.hasWrap) {\n css[hasCalc ? 'flex-basis' : 'flex'] = css[max] ?\n (hasCalc ? css[max] : `${grow} ${shrink} ${css[max]}`) :\n (hasCalc ? css[min] : `${grow} ${shrink} ${css[min]}`);\n }\n }\n\n return extendObject(css, {'box-sizing': 'border-box'}) as StyleDefinition;\n }\n}\n\nconst inputs = [\n 'fxFlex', 'fxFlex.xs', 'fxFlex.sm', 'fxFlex.md',\n 'fxFlex.lg', 'fxFlex.xl', 'fxFlex.lt-sm', 'fxFlex.lt-md',\n 'fxFlex.lt-lg', 'fxFlex.lt-xl', 'fxFlex.gt-xs', 'fxFlex.gt-sm',\n 'fxFlex.gt-md', 'fxFlex.gt-lg'\n];\nconst selector = `\n [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n [fxFlex.gt-md], [fxFlex.gt-lg]\n`;\n\n/**\n * Directive to control the size of a flex item using flex-basis, flex-grow, and flex-shrink.\n * Corresponds to the css `flex` shorthand property.\n *\n * @see https://css-tricks.com/snippets/css/a-guide-to-flexbox/\n */\nexport class FlexDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'flex';\n protected direction = '';\n protected wrap = false;\n\n\n @Input('fxShrink')\n get shrink(): string { return this.flexShrink; }\n set shrink(value: string) {\n this.flexShrink = value || '1';\n this.triggerReflow();\n }\n\n @Input('fxGrow')\n get grow(): string { return this.flexGrow; }\n set grow(value: string) {\n this.flexGrow = value || '1';\n this.triggerReflow();\n }\n\n protected flexGrow = '1';\n protected flexShrink = '1';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n protected styleBuilder: FlexStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n if (this.parentElement) {\n this.marshal.trackValue(this.parentElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n this.marshal.trackValue(this.nativeElement, 'layout-align')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerReflow.bind(this));\n }\n }\n\n /**\n * Caches the parent container's 'flex-direction' and updates the element's style.\n * Used as a handler for layout change events from the parent flex container.\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n const layoutParts = layout.split(' ');\n this.direction = layoutParts[0];\n this.wrap = layoutParts[1] !== undefined && layoutParts[1] === 'wrap';\n this.triggerUpdate();\n }\n\n /** Input to this is exclusively the basis input value */\n protected updateWithValue(value: string) {\n const addFlexToParent = this.layoutConfig.addFlexToParent !== false;\n if (!this.direction) {\n this.direction = this.getFlexFlowDirection(this.parentElement!, addFlexToParent);\n }\n const direction = this.direction;\n const isHorizontal = direction.startsWith('row');\n const hasWrap = this.wrap;\n if (isHorizontal && hasWrap) {\n this.styleCache = flexRowWrapCache;\n } else if (isHorizontal && !hasWrap) {\n this.styleCache = flexRowCache;\n } else if (!isHorizontal && hasWrap) {\n this.styleCache = flexColumnWrapCache;\n } else if (!isHorizontal && !hasWrap) {\n this.styleCache = flexColumnCache;\n }\n const basis = String(value).replace(';', '');\n const parts = validateBasis(basis, this.flexGrow, this.flexShrink);\n this.addStyles(parts.join(' '), {direction, hasWrap});\n }\n\n /** Trigger a style reflow, usually based on a shrink/grow input event */\n protected triggerReflow() {\n const activatedValue = this.activatedValue;\n if (activatedValue !== undefined) {\n const parts = validateBasis(activatedValue, this.flexGrow, this.flexShrink);\n this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, parts.join(' '));\n }\n }\n}\n\n@Directive({inputs, selector})\nexport class DefaultFlexDirective extends FlexDirective {\n protected inputs = inputs;\n}\n\nconst flexRowCache: Map = new Map();\nconst flexColumnCache: Map = new Map();\nconst flexRowWrapCache: Map = new Map();\nconst flexColumnWrapCache: Map = new Map();\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 */\nimport {\n Directive,\n ElementRef,\n Optional,\n OnDestroy,\n NgZone,\n Injectable,\n AfterContentInit,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {LAYOUT_VALUES} from '../../utils/layout-validator';\n\nexport interface LayoutGapParent {\n directionality: string;\n items: HTMLElement[];\n layout: string;\n}\n\nconst CLEAR_MARGIN_CSS = {\n 'margin-left': null,\n 'margin-right': null,\n 'margin-top': null,\n 'margin-bottom': null\n};\n\n@Injectable({providedIn: 'root'})\nexport class LayoutGapStyleBuilder extends StyleBuilder {\n constructor(private _styler: StyleUtils) {\n super();\n }\n\n buildStyles(gapValue: string, parent: LayoutGapParent) {\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n\n // Add the margin to the host element\n return buildGridMargin(gapValue, parent.directionality);\n } else {\n return {};\n }\n }\n\n sideEffect(gapValue: string, _styles: StyleDefinition, parent: LayoutGapParent) {\n const items = parent.items;\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n // For each `element` children, set the padding\n const paddingStyles = buildGridPadding(gapValue, parent.directionality);\n this._styler.applyStyleToElements(paddingStyles, parent.items);\n } else {\n const lastItem = items.pop()!;\n\n // For each `element` children EXCEPT the last,\n // set the margin right/bottom styles...\n const gapCss = buildGapCSS(gapValue, parent);\n this._styler.applyStyleToElements(gapCss, items);\n\n // Clear all gaps for all visible elements\n this._styler.applyStyleToElements(CLEAR_MARGIN_CSS, [lastItem]);\n }\n }\n}\n\nconst inputs = [\n 'fxLayoutGap', 'fxLayoutGap.xs', 'fxLayoutGap.sm', 'fxLayoutGap.md',\n 'fxLayoutGap.lg', 'fxLayoutGap.xl', 'fxLayoutGap.lt-sm', 'fxLayoutGap.lt-md',\n 'fxLayoutGap.lt-lg', 'fxLayoutGap.lt-xl', 'fxLayoutGap.gt-xs', 'fxLayoutGap.gt-sm',\n 'fxLayoutGap.gt-md', 'fxLayoutGap.gt-lg'\n];\nconst selector = `\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n`;\n\n/**\n * 'layout-padding' styling directive\n * Defines padding of child elements in a layout container\n */\nexport class LayoutGapDirective extends BaseDirective2 implements AfterContentInit, OnDestroy {\n protected layout = 'row'; // default flex-direction\n protected DIRECTIVE_KEY = 'layout-gap';\n protected observerSubject = new Subject();\n\n /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */\n protected get childrenNodes(): HTMLElement[] {\n const obj = this.nativeElement.children;\n const buffer: any[] = [];\n\n // iterate backwards ensuring that length is an UInt32\n for (let i = obj.length; i--;) {\n buffer[i] = obj[i];\n }\n return buffer;\n }\n\n constructor(protected elRef: ElementRef,\n protected zone: NgZone,\n protected directionality: Directionality,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutGapStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n const extraTriggers = [this.directionality.change, this.observerSubject.asObservable()];\n this.init(extraTriggers);\n this.marshal\n .trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n ngAfterContentInit() {\n this.buildChildObservable();\n this.triggerUpdate();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Cache the parent container 'flex-direction' and update the 'margin' styles\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n // Make sure to filter out 'wrap' option\n const direction = layout.split(' ');\n this.layout = direction[0];\n if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n\n /**\n *\n */\n protected updateWithValue(value: string) {\n // Gather all non-hidden Element nodes\n const items = this.childrenNodes\n .filter(el => el.nodeType === 1 && this.willDisplay(el))\n .sort((a, b) => {\n const orderA = +this.styler.lookupStyle(a, 'order');\n const orderB = +this.styler.lookupStyle(b, 'order');\n if (isNaN(orderA) || isNaN(orderB) || orderA === orderB) {\n return 0;\n } else {\n return orderA > orderB ? 1 : -1;\n }\n });\n\n if (items.length > 0) {\n const directionality = this.directionality.value;\n const layout = this.layout;\n if (layout === 'row' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheRowRtl;\n } else if (layout === 'row' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheRowLtr;\n } else if (layout === 'column' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheColumnRtl;\n } else if (layout === 'column' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheColumnLtr;\n }\n this.addStyles(value, {directionality, items, layout});\n }\n }\n\n /** We need to override clearStyles because in most cases mru isn't populated */\n protected clearStyles() {\n const gridMode = Object.keys(this.mru).length > 0;\n const childrenStyle = gridMode ? 'padding' :\n getMarginType(this.directionality.value, this.layout);\n\n // If there are styles on the parent remove them\n if (gridMode) {\n super.clearStyles();\n }\n\n // Then remove the children styles too\n this.styleUtils.applyStyleToElements({[childrenStyle]: ''}, this.childrenNodes);\n }\n\n /** Determine if an element will show or hide based on current activation */\n protected willDisplay(source: HTMLElement): boolean {\n const value = this.marshal.getValue(source, 'show-hide');\n return value === true ||\n (value === undefined && this.styleUtils.lookupStyle(source, 'display') !== 'none');\n }\n\n protected buildChildObservable(): void {\n this.zone.runOutsideAngular(() => {\n if (typeof MutationObserver !== 'undefined') {\n this.observer = new MutationObserver((mutations: MutationRecord[]) => {\n const validatedChanges = (it: MutationRecord): boolean => {\n return (it.addedNodes && it.addedNodes.length > 0) ||\n (it.removedNodes && it.removedNodes.length > 0);\n };\n\n // update gap styles only for child 'added' or 'removed' events\n if (mutations.some(validatedChanges)) {\n this.observerSubject.next();\n }\n });\n this.observer.observe(this.nativeElement, {childList: true});\n }\n });\n }\n\n protected observer?: MutationObserver;\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutGapDirective extends LayoutGapDirective {\n protected inputs = inputs;\n}\n\nconst layoutGapCacheRowRtl: Map = new Map();\nconst layoutGapCacheColumnRtl: Map = new Map();\nconst layoutGapCacheRowLtr: Map = new Map();\nconst layoutGapCacheColumnLtr: Map = new Map();\n\nconst GRID_SPECIFIER = ' grid';\n\nfunction buildGridPadding(value: string, directionality: string): StyleDefinition {\n let paddingTop = '0px', paddingRight = '0px', paddingBottom = value, paddingLeft = '0px';\n\n if (directionality === 'rtl') {\n paddingLeft = value;\n } else {\n paddingRight = value;\n }\n\n return {'padding': `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`};\n}\n\nfunction buildGridMargin(value: string, directionality: string): StyleDefinition {\n let marginTop = '0px', marginRight = '0px', marginBottom = '-' + value, marginLeft = '0px';\n\n if (directionality === 'rtl') {\n marginLeft = '-' + value;\n } else {\n marginRight = '-' + value;\n }\n\n return {'margin': `${marginTop} ${marginRight} ${marginBottom} ${marginLeft}`};\n}\n\nfunction getMarginType(directionality: string, layout: string) {\n switch (layout) {\n case 'column':\n return 'margin-bottom';\n case 'column-reverse':\n return 'margin-top';\n case 'row':\n return directionality === 'rtl' ? 'margin-left' : 'margin-right';\n case 'row-reverse':\n return directionality === 'rtl' ? 'margin-right' : 'margin-left';\n default :\n return directionality === 'rtl' ? 'margin-left' : 'margin-right';\n }\n}\n\nfunction buildGapCSS(gapValue: string,\n parent: {directionality: string, layout: string}): StyleDefinition {\n const key = getMarginType(parent.directionality, parent.layout);\n const margins: {[key: string]: string | null} = {...CLEAR_MARGIN_CSS};\n margins[key] = gapValue;\n return margins;\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 {Directive, ElementRef, OnChanges, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\nimport {buildLayoutCSS} from '../../utils/layout-validator';\n\n@Injectable({providedIn: 'root'})\nexport class LayoutStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return buildLayoutCSS(input);\n }\n}\n\nconst inputs = [\n 'fxLayout', 'fxLayout.xs', 'fxLayout.sm', 'fxLayout.md',\n 'fxLayout.lg', 'fxLayout.xl', 'fxLayout.lt-sm', 'fxLayout.lt-md',\n 'fxLayout.lt-lg', 'fxLayout.lt-xl', 'fxLayout.gt-xs', 'fxLayout.gt-sm',\n 'fxLayout.gt-md', 'fxLayout.gt-lg'\n];\nconst selector = `\n [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],\n [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md],\n [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm],\n [fxLayout.gt-md], [fxLayout.gt-lg]\n`;\n\n/**\n * 'layout' flexbox styling directive\n * Defines the positioning flow direction for the child elements: row or column\n * Optional values: column or row (default)\n * @see https://css-tricks.com/almanac/properties/f/flex-direction/\n *\n */\nexport class LayoutDirective extends BaseDirective2 implements OnChanges {\n\n protected DIRECTIVE_KEY = 'layout';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = layoutCache;\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutDirective extends LayoutDirective {\n protected inputs = inputs;\n}\n\nconst layoutCache: Map = new Map();\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='' 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 : 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"],"names":["selector","inputs"],"mappings":"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"} \ No newline at end of file diff --git a/esm2015/grid.js b/esm2015/grid.js index 31f04ad89..b9238a040 100644 --- a/esm2015/grid.js +++ b/esm2015/grid.js @@ -5,13 +5,13 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -import { Directive, ElementRef, Injectable, Optional, NgModule, Input, defineInjectable } from '@angular/core'; +import { Directive, ElementRef, Injectable, Optional, NgModule, Input, ɵɵdefineInjectable } from '@angular/core'; import { MediaMarshaller, BaseDirective2, StyleBuilder, StyleUtils, CoreModule } from '@angular/flex-layout/core'; import { coerceBooleanProperty } from '@angular/cdk/coercion'; /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const ROW_DEFAULT = 'stretch'; @@ -29,7 +29,7 @@ class GridAlignStyleBuilder extends StyleBuilder { GridAlignStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; -/** @nocollapse */ GridAlignStyleBuilder.ngInjectableDef = defineInjectable({ factory: function GridAlignStyleBuilder_Factory() { return new GridAlignStyleBuilder(); }, token: GridAlignStyleBuilder, providedIn: "root" }); +/** @nocollapse */ GridAlignStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function GridAlignStyleBuilder_Factory() { return new GridAlignStyleBuilder(); }, token: GridAlignStyleBuilder, providedIn: "root" }); class GridAlignDirective extends BaseDirective2 { /** * @param {?} elementRef @@ -37,10 +37,7 @@ class GridAlignDirective extends BaseDirective2 { * @param {?} styler * @param {?} marshal */ - constructor(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + constructor(elementRef, styleBuilder, styler, marshal) { super(elementRef, styleBuilder, styler, marshal); this.elementRef = elementRef; this.styleBuilder = styleBuilder; @@ -140,7 +137,7 @@ function buildCss(align = '') { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const DEFAULT_MAIN = 'start'; @@ -159,7 +156,7 @@ class GridAlignColumnsStyleBuilder extends StyleBuilder { GridAlignColumnsStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; -/** @nocollapse */ GridAlignColumnsStyleBuilder.ngInjectableDef = defineInjectable({ factory: function GridAlignColumnsStyleBuilder_Factory() { return new GridAlignColumnsStyleBuilder(); }, token: GridAlignColumnsStyleBuilder, providedIn: "root" }); +/** @nocollapse */ GridAlignColumnsStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function GridAlignColumnsStyleBuilder_Factory() { return new GridAlignColumnsStyleBuilder(); }, token: GridAlignColumnsStyleBuilder, providedIn: "root" }); class GridAlignColumnsDirective extends BaseDirective2 { /** * @param {?} elementRef @@ -167,10 +164,7 @@ class GridAlignColumnsDirective extends BaseDirective2 { * @param {?} styler * @param {?} marshal */ - constructor(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + constructor(elementRef, styleBuilder, styler, marshal) { super(elementRef, styleBuilder, styler, marshal); this.elementRef = elementRef; this.styleBuilder = styleBuilder; @@ -189,7 +183,11 @@ class GridAlignColumnsDirective extends BaseDirective2 { * @return {?} */ set inline(val) { this._inline = coerceBooleanProperty(val); } + // ********************************************* + // Protected methods + // ********************************************* /** + * @protected * @param {?} value * @return {?} */ @@ -296,7 +294,6 @@ function buildCss$1(align, inline) { css['align-items'] = 'stretch'; break; default: // 'stretch' - // 'stretch' css['align-items'] = DEFAULT_CROSS; // default cross axis break; } @@ -306,7 +303,7 @@ function buildCss$1(align, inline) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const DEFAULT_MAIN$1 = 'start'; @@ -325,7 +322,7 @@ class GridAlignRowsStyleBuilder extends StyleBuilder { GridAlignRowsStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; -/** @nocollapse */ GridAlignRowsStyleBuilder.ngInjectableDef = defineInjectable({ factory: function GridAlignRowsStyleBuilder_Factory() { return new GridAlignRowsStyleBuilder(); }, token: GridAlignRowsStyleBuilder, providedIn: "root" }); +/** @nocollapse */ GridAlignRowsStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function GridAlignRowsStyleBuilder_Factory() { return new GridAlignRowsStyleBuilder(); }, token: GridAlignRowsStyleBuilder, providedIn: "root" }); class GridAlignRowsDirective extends BaseDirective2 { /** * @param {?} elementRef @@ -333,10 +330,7 @@ class GridAlignRowsDirective extends BaseDirective2 { * @param {?} styler * @param {?} marshal */ - constructor(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + constructor(elementRef, styleBuilder, styler, marshal) { super(elementRef, styleBuilder, styler, marshal); this.elementRef = elementRef; this.styleBuilder = styleBuilder; @@ -355,7 +349,11 @@ class GridAlignRowsDirective extends BaseDirective2 { * @return {?} */ set inline(val) { this._inline = coerceBooleanProperty(val); } + // ********************************************* + // Protected methods + // ********************************************* /** + * @protected * @param {?} value * @return {?} */ @@ -444,7 +442,6 @@ function buildCss$2(align, inline) { css['justify-items'] = crossAxis; break; default: // 'stretch' - // 'stretch' css['justify-items'] = DEFAULT_CROSS$1; // default cross axis break; } @@ -454,7 +451,7 @@ function buildCss$2(align, inline) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const DEFAULT_VALUE = 'auto'; @@ -470,7 +467,7 @@ class GridAreaStyleBuilder extends StyleBuilder { GridAreaStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; -/** @nocollapse */ GridAreaStyleBuilder.ngInjectableDef = defineInjectable({ factory: function GridAreaStyleBuilder_Factory() { return new GridAreaStyleBuilder(); }, token: GridAreaStyleBuilder, providedIn: "root" }); +/** @nocollapse */ GridAreaStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function GridAreaStyleBuilder_Factory() { return new GridAreaStyleBuilder(); }, token: GridAreaStyleBuilder, providedIn: "root" }); class GridAreaDirective extends BaseDirective2 { /** * @param {?} elRef @@ -478,10 +475,7 @@ class GridAreaDirective extends BaseDirective2 { * @param {?} styleBuilder * @param {?} marshal */ - constructor(elRef, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + constructor(elRef, styleUtils, styleBuilder, marshal) { super(elRef, styleBuilder, styleUtils, marshal); this.elRef = elRef; this.styleUtils = styleUtils; @@ -532,7 +526,7 @@ DefaultGridAreaDirective.decorators = [ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const DEFAULT_VALUE$1 = 'none'; @@ -546,7 +540,11 @@ class GridAreasStyleBuiler extends StyleBuilder { */ buildStyles(input, parent) { /** @type {?} */ - const areas = (input || DEFAULT_VALUE$1).split(DELIMETER).map(v => `"${v.trim()}"`); + const areas = (input || DEFAULT_VALUE$1).split(DELIMETER).map((/** + * @param {?} v + * @return {?} + */ + v => `"${v.trim()}"`)); return { 'display': parent.inline ? 'inline-grid' : 'grid', 'grid-template-areas': areas.join(' ') @@ -556,7 +554,7 @@ class GridAreasStyleBuiler extends StyleBuilder { GridAreasStyleBuiler.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; -/** @nocollapse */ GridAreasStyleBuiler.ngInjectableDef = defineInjectable({ factory: function GridAreasStyleBuiler_Factory() { return new GridAreasStyleBuiler(); }, token: GridAreasStyleBuiler, providedIn: "root" }); +/** @nocollapse */ GridAreasStyleBuiler.ngInjectableDef = ɵɵdefineInjectable({ factory: function GridAreasStyleBuiler_Factory() { return new GridAreasStyleBuiler(); }, token: GridAreasStyleBuiler, providedIn: "root" }); class GridAreasDirective extends BaseDirective2 { /** * @param {?} elRef @@ -564,10 +562,7 @@ class GridAreasDirective extends BaseDirective2 { * @param {?} styleBuilder * @param {?} marshal */ - constructor(elRef, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + constructor(elRef, styleUtils, styleBuilder, marshal) { super(elRef, styleBuilder, styleUtils, marshal); this.elRef = elRef; this.styleUtils = styleUtils; @@ -586,7 +581,11 @@ class GridAreasDirective extends BaseDirective2 { * @return {?} */ set inline(val) { this._inline = coerceBooleanProperty(val); } + // ********************************************* + // Protected methods + // ********************************************* /** + * @protected * @param {?} value * @return {?} */ @@ -640,7 +639,7 @@ DefaultGridAreasDirective.decorators = [ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const DEFAULT_VALUE$2 = 'initial'; @@ -665,7 +664,7 @@ class GridAutoStyleBuilder extends StyleBuilder { GridAutoStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; -/** @nocollapse */ GridAutoStyleBuilder.ngInjectableDef = defineInjectable({ factory: function GridAutoStyleBuilder_Factory() { return new GridAutoStyleBuilder(); }, token: GridAutoStyleBuilder, providedIn: "root" }); +/** @nocollapse */ GridAutoStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function GridAutoStyleBuilder_Factory() { return new GridAutoStyleBuilder(); }, token: GridAutoStyleBuilder, providedIn: "root" }); class GridAutoDirective extends BaseDirective2 { /** * @param {?} elementRef @@ -673,10 +672,7 @@ class GridAutoDirective extends BaseDirective2 { * @param {?} styler * @param {?} marshal */ - constructor(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + constructor(elementRef, styleBuilder, styler, marshal) { super(elementRef, styleBuilder, styler, marshal); this.elementRef = elementRef; this.styleBuilder = styleBuilder; @@ -695,7 +691,11 @@ class GridAutoDirective extends BaseDirective2 { * @return {?} */ set inline(val) { this._inline = coerceBooleanProperty(val); } + // ********************************************* + // Protected methods + // ********************************************* /** + * @protected * @param {?} value * @return {?} */ @@ -749,7 +749,7 @@ DefaultGridAutoDirective.decorators = [ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const DEFAULT_VALUE$3 = 'auto'; @@ -765,7 +765,7 @@ class GridColumnStyleBuilder extends StyleBuilder { GridColumnStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; -/** @nocollapse */ GridColumnStyleBuilder.ngInjectableDef = defineInjectable({ factory: function GridColumnStyleBuilder_Factory() { return new GridColumnStyleBuilder(); }, token: GridColumnStyleBuilder, providedIn: "root" }); +/** @nocollapse */ GridColumnStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function GridColumnStyleBuilder_Factory() { return new GridColumnStyleBuilder(); }, token: GridColumnStyleBuilder, providedIn: "root" }); class GridColumnDirective extends BaseDirective2 { /** * @param {?} elementRef @@ -773,10 +773,7 @@ class GridColumnDirective extends BaseDirective2 { * @param {?} styler * @param {?} marshal */ - constructor(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + constructor(elementRef, styleBuilder, styler, marshal) { super(elementRef, styleBuilder, styler, marshal); this.elementRef = elementRef; this.styleBuilder = styleBuilder; @@ -827,7 +824,7 @@ DefaultGridColumnDirective.decorators = [ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const DEFAULT_VALUE$4 = 'none'; @@ -862,7 +859,7 @@ class GridColumnsStyleBuilder extends StyleBuilder { GridColumnsStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; -/** @nocollapse */ GridColumnsStyleBuilder.ngInjectableDef = defineInjectable({ factory: function GridColumnsStyleBuilder_Factory() { return new GridColumnsStyleBuilder(); }, token: GridColumnsStyleBuilder, providedIn: "root" }); +/** @nocollapse */ GridColumnsStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function GridColumnsStyleBuilder_Factory() { return new GridColumnsStyleBuilder(); }, token: GridColumnsStyleBuilder, providedIn: "root" }); class GridColumnsDirective extends BaseDirective2 { /** * @param {?} elementRef @@ -870,10 +867,7 @@ class GridColumnsDirective extends BaseDirective2 { * @param {?} styler * @param {?} marshal */ - constructor(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + constructor(elementRef, styleBuilder, styler, marshal) { super(elementRef, styleBuilder, styler, marshal); this.elementRef = elementRef; this.styleBuilder = styleBuilder; @@ -892,7 +886,11 @@ class GridColumnsDirective extends BaseDirective2 { * @return {?} */ set inline(val) { this._inline = coerceBooleanProperty(val); } + // ********************************************* + // Protected methods + // ********************************************* /** + * @protected * @param {?} value * @return {?} */ @@ -947,7 +945,7 @@ DefaultGridColumnsDirective.decorators = [ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const DEFAULT_VALUE$5 = '0'; @@ -967,7 +965,7 @@ class GridGapStyleBuilder extends StyleBuilder { GridGapStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; -/** @nocollapse */ GridGapStyleBuilder.ngInjectableDef = defineInjectable({ factory: function GridGapStyleBuilder_Factory() { return new GridGapStyleBuilder(); }, token: GridGapStyleBuilder, providedIn: "root" }); +/** @nocollapse */ GridGapStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function GridGapStyleBuilder_Factory() { return new GridGapStyleBuilder(); }, token: GridGapStyleBuilder, providedIn: "root" }); class GridGapDirective extends BaseDirective2 { /** * @param {?} elRef @@ -975,10 +973,7 @@ class GridGapDirective extends BaseDirective2 { * @param {?} styleBuilder * @param {?} marshal */ - constructor(elRef, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + constructor(elRef, styleUtils, styleBuilder, marshal) { super(elRef, styleBuilder, styleUtils, marshal); this.elRef = elRef; this.styleUtils = styleUtils; @@ -997,7 +992,11 @@ class GridGapDirective extends BaseDirective2 { * @return {?} */ set inline(val) { this._inline = coerceBooleanProperty(val); } + // ********************************************* + // Protected methods + // ********************************************* /** + * @protected * @param {?} value * @return {?} */ @@ -1052,7 +1051,7 @@ DefaultGridGapDirective.decorators = [ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const DEFAULT_VALUE$6 = 'auto'; @@ -1068,7 +1067,7 @@ class GridRowStyleBuilder extends StyleBuilder { GridRowStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; -/** @nocollapse */ GridRowStyleBuilder.ngInjectableDef = defineInjectable({ factory: function GridRowStyleBuilder_Factory() { return new GridRowStyleBuilder(); }, token: GridRowStyleBuilder, providedIn: "root" }); +/** @nocollapse */ GridRowStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function GridRowStyleBuilder_Factory() { return new GridRowStyleBuilder(); }, token: GridRowStyleBuilder, providedIn: "root" }); class GridRowDirective extends BaseDirective2 { /** * @param {?} elementRef @@ -1076,10 +1075,7 @@ class GridRowDirective extends BaseDirective2 { * @param {?} styler * @param {?} marshal */ - constructor(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + constructor(elementRef, styleBuilder, styler, marshal) { super(elementRef, styleBuilder, styler, marshal); this.elementRef = elementRef; this.styleBuilder = styleBuilder; @@ -1130,7 +1126,7 @@ DefaultGridRowDirective.decorators = [ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const DEFAULT_VALUE$7 = 'none'; @@ -1165,7 +1161,7 @@ class GridRowsStyleBuilder extends StyleBuilder { GridRowsStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; -/** @nocollapse */ GridRowsStyleBuilder.ngInjectableDef = defineInjectable({ factory: function GridRowsStyleBuilder_Factory() { return new GridRowsStyleBuilder(); }, token: GridRowsStyleBuilder, providedIn: "root" }); +/** @nocollapse */ GridRowsStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function GridRowsStyleBuilder_Factory() { return new GridRowsStyleBuilder(); }, token: GridRowsStyleBuilder, providedIn: "root" }); class GridRowsDirective extends BaseDirective2 { /** * @param {?} elementRef @@ -1173,10 +1169,7 @@ class GridRowsDirective extends BaseDirective2 { * @param {?} styler * @param {?} marshal */ - constructor(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + constructor(elementRef, styleBuilder, styler, marshal) { super(elementRef, styleBuilder, styler, marshal); this.elementRef = elementRef; this.styleBuilder = styleBuilder; @@ -1195,7 +1188,11 @@ class GridRowsDirective extends BaseDirective2 { * @return {?} */ set inline(val) { this._inline = coerceBooleanProperty(val); } + // ********************************************* + // Protected methods + // ********************************************* /** + * @protected * @param {?} value * @return {?} */ @@ -1250,7 +1247,7 @@ DefaultGridRowsDirective.decorators = [ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const ALL_DIRECTIVES = [ @@ -1283,13 +1280,13 @@ GridModule.decorators = [ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -export { GridModule, DefaultGridAlignColumnsDirective as ɵf, GridAlignColumnsDirective as ɵe, GridAlignColumnsStyleBuilder as ɵd, DefaultGridAlignRowsDirective as ɵi, GridAlignRowsDirective as ɵh, GridAlignRowsStyleBuilder as ɵg, DefaultGridAreaDirective as ɵl, GridAreaDirective as ɵk, GridAreaStyleBuilder as ɵj, DefaultGridAreasDirective as ɵo, GridAreasDirective as ɵn, GridAreasStyleBuiler as ɵm, DefaultGridAutoDirective as ɵr, GridAutoDirective as ɵq, GridAutoStyleBuilder as ɵp, DefaultGridColumnDirective as ɵu, GridColumnDirective as ɵt, GridColumnStyleBuilder as ɵs, DefaultGridColumnsDirective as ɵx, GridColumnsDirective as ɵw, GridColumnsStyleBuilder as ɵv, DefaultGridGapDirective as ɵba, GridGapDirective as ɵz, GridGapStyleBuilder as ɵy, DefaultGridAlignDirective as ɵc, GridAlignDirective as ɵb, GridAlignStyleBuilder as ɵa, DefaultGridRowDirective as ɵbd, GridRowDirective as ɵbc, GridRowStyleBuilder as ɵbb, DefaultGridRowsDirective as ɵbg, GridRowsDirective as ɵbf, GridRowsStyleBuilder as ɵbe }; +export { GridModule, DefaultGridAlignColumnsDirective as ɵf2, GridAlignColumnsDirective as ɵe2, GridAlignColumnsStyleBuilder as ɵd2, DefaultGridAlignRowsDirective as ɵi2, GridAlignRowsDirective as ɵh2, GridAlignRowsStyleBuilder as ɵg2, DefaultGridAreaDirective as ɵl2, GridAreaDirective as ɵk2, GridAreaStyleBuilder as ɵj2, DefaultGridAreasDirective as ɵo2, GridAreasDirective as ɵn2, GridAreasStyleBuiler as ɵm2, DefaultGridAutoDirective as ɵr2, GridAutoDirective as ɵq2, GridAutoStyleBuilder as ɵp2, DefaultGridColumnDirective as ɵu2, GridColumnDirective as ɵt2, GridColumnStyleBuilder as ɵs2, DefaultGridColumnsDirective as ɵx2, GridColumnsDirective as ɵw2, GridColumnsStyleBuilder as ɵv2, DefaultGridGapDirective as ɵba2, GridGapDirective as ɵz2, GridGapStyleBuilder as ɵy2, DefaultGridAlignDirective as ɵc2, GridAlignDirective as ɵb2, GridAlignStyleBuilder as ɵa2, DefaultGridRowDirective as ɵbd2, GridRowDirective as ɵbc2, GridRowStyleBuilder as ɵbb2, DefaultGridRowsDirective as ɵbg2, GridRowsDirective as ɵbf2, GridRowsStyleBuilder as ɵbe2 }; //# sourceMappingURL=grid.js.map diff --git a/esm2015/grid.js.map b/esm2015/grid.js.map index b0c362722..03c0bf9ed 100644 --- a/esm2015/grid.js.map +++ b/esm2015/grid.js.map @@ -1 +1 @@ -{"version":3,"file":"grid.js","sources":["../../../src/lib/grid/module.ts","../../../src/lib/grid/rows/rows.ts","../../../src/lib/grid/row/row.ts","../../../src/lib/grid/gap/gap.ts","../../../src/lib/grid/columns/columns.ts","../../../src/lib/grid/column/column.ts","../../../src/lib/grid/auto/auto.ts","../../../src/lib/grid/areas/areas.ts","../../../src/lib/grid/area/area.ts","../../../src/lib/grid/align-rows/align-rows.ts","../../../src/lib/grid/align-columns/align-columns.ts","../../../src/lib/grid/grid-align/grid-align.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {NgModule} from '@angular/core';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultGridAlignDirective} from './grid-align/grid-align';\nimport {DefaultGridAlignColumnsDirective} from './align-columns/align-columns';\nimport {DefaultGridAlignRowsDirective} from './align-rows/align-rows';\nimport {DefaultGridAreaDirective} from './area/area';\nimport {DefaultGridAreasDirective} from './areas/areas';\nimport {DefaultGridAutoDirective} from './auto/auto';\nimport {DefaultGridColumnDirective} from './column/column';\nimport {DefaultGridColumnsDirective} from './columns/columns';\nimport {DefaultGridGapDirective} from './gap/gap';\nimport {DefaultGridRowDirective} from './row/row';\nimport {DefaultGridRowsDirective} from './rows/rows';\n\n\nconst ALL_DIRECTIVES = [\n DefaultGridAlignDirective,\n DefaultGridAlignColumnsDirective,\n DefaultGridAlignRowsDirective,\n DefaultGridAreaDirective,\n DefaultGridAreasDirective,\n DefaultGridAutoDirective,\n DefaultGridColumnDirective,\n DefaultGridColumnsDirective,\n DefaultGridGapDirective,\n DefaultGridRowDirective,\n DefaultGridRowsDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the CSS Grid API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class GridModule {\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 {Directive, ElementRef, Input, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst AUTO_SPECIFIER = '!';\n\nexport interface GridRowsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridRowsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridRowsParent) {\n input = input || DEFAULT_VALUE;\n let auto = false;\n if (input.endsWith(AUTO_SPECIFIER)) {\n input = input.substring(0, input.indexOf(AUTO_SPECIFIER));\n auto = true;\n }\n\n const css = {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-rows': '',\n 'grid-template-rows': '',\n };\n const key = (auto ? 'grid-auto-rows' : 'grid-template-rows');\n css[key] = input;\n\n return css;\n }\n}\n\nexport class GridRowsDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-rows';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridRowsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? rowsInlineCache : rowsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst rowsCache: Map = new Map();\nconst rowsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdRows',\n 'gdRows.xs', 'gdRows.sm', 'gdRows.md', 'gdRows.lg', 'gdRows.xl',\n 'gdRows.lt-sm', 'gdRows.lt-md', 'gdRows.lt-lg', 'gdRows.lt-xl',\n 'gdRows.gt-xs', 'gdRows.gt-sm', 'gdRows.gt-md', 'gdRows.gt-lg'\n];\n\nconst selector = `\n [gdRows],\n [gdRows.xs], [gdRows.sm], [gdRows.md], [gdRows.lg], [gdRows.xl],\n [gdRows.lt-sm], [gdRows.lt-md], [gdRows.lt-lg], [gdRows.lt-xl],\n [gdRows.gt-xs], [gdRows.gt-sm], [gdRows.gt-md], [gdRows.gt-lg]\n`;\n\n/**\n * 'grid-template-rows' CSS Grid styling directive\n * Configures the sizing for the rows in the grid\n * Syntax: [auto]\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13\n */\n@Directive({selector, inputs})\nexport class DefaultGridRowsDirective extends GridRowsDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridRowStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-row': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridRowDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-row';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridRowStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = rowCache;\n}\n\nconst rowCache: Map = new Map();\n\nconst inputs = [\n 'gdRow',\n 'gdRow.xs', 'gdRow.sm', 'gdRow.md', 'gdRow.lg', 'gdRow.xl',\n 'gdRow.lt-sm', 'gdRow.lt-md', 'gdRow.lt-lg', 'gdRow.lt-xl',\n 'gdRow.gt-xs', 'gdRow.gt-sm', 'gdRow.gt-md', 'gdRow.gt-lg'\n];\n\nconst selector = `\n [gdRow],\n [gdRow.xs], [gdRow.sm], [gdRow.md], [gdRow.lg], [gdRow.xl],\n [gdRow.lt-sm], [gdRow.lt-md], [gdRow.lt-lg], [gdRow.lt-xl],\n [gdRow.gt-xs], [gdRow.gt-sm], [gdRow.gt-md], [gdRow.gt-lg]\n`;\n\n/**\n * 'grid-row' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26\n */\n@Directive({selector, inputs})\nexport class DefaultGridRowDirective extends GridRowDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = '0';\n\nexport interface GridGapParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridGapStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridGapParent) {\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-gap': input || DEFAULT_VALUE\n };\n }\n}\n\nexport class GridGapDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-gap';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridGapStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? gapInlineCache : gapCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst gapCache: Map = new Map();\nconst gapInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdGap',\n 'gdGap.xs', 'gdGap.sm', 'gdGap.md', 'gdGap.lg', 'gdGap.xl',\n 'gdGap.lt-sm', 'gdGap.lt-md', 'gdGap.lt-lg', 'gdGap.lt-xl',\n 'gdGap.gt-xs', 'gdGap.gt-sm', 'gdGap.gt-md', 'gdGap.gt-lg'\n];\n\nconst selector = `\n [gdGap],\n [gdGap.xs], [gdGap.sm], [gdGap.md], [gdGap.lg], [gdGap.xl],\n [gdGap.lt-sm], [gdGap.lt-md], [gdGap.lt-lg], [gdGap.lt-xl],\n [gdGap.gt-xs], [gdGap.gt-sm], [gdGap.gt-md], [gdGap.gt-lg]\n`;\n\n/**\n * 'grid-gap' CSS Grid styling directive\n * Configures the gap between items in the grid\n * Syntax: []\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-17\n */\n@Directive({selector, inputs})\nexport class DefaultGridGapDirective extends GridGapDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst AUTO_SPECIFIER = '!';\n\nexport interface GridColumnsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridColumnsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridColumnsParent) {\n input = input || DEFAULT_VALUE;\n let auto = false;\n if (input.endsWith(AUTO_SPECIFIER)) {\n input = input.substring(0, input.indexOf(AUTO_SPECIFIER));\n auto = true;\n }\n\n const css = {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-columns': '',\n 'grid-template-columns': '',\n };\n const key = (auto ? 'grid-auto-columns' : 'grid-template-columns');\n css[key] = input;\n\n return css;\n }\n}\n\nexport class GridColumnsDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-columns';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridColumnsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? columnsInlineCache : columnsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst columnsCache: Map = new Map();\nconst columnsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdColumns',\n 'gdColumns.xs', 'gdColumns.sm', 'gdColumns.md', 'gdColumns.lg', 'gdColumns.xl',\n 'gdColumns.lt-sm', 'gdColumns.lt-md', 'gdColumns.lt-lg', 'gdColumns.lt-xl',\n 'gdColumns.gt-xs', 'gdColumns.gt-sm', 'gdColumns.gt-md', 'gdColumns.gt-lg'\n];\n\nconst selector = `\n [gdColumns],\n [gdColumns.xs], [gdColumns.sm], [gdColumns.md], [gdColumns.lg], [gdColumns.xl],\n [gdColumns.lt-sm], [gdColumns.lt-md], [gdColumns.lt-lg], [gdColumns.lt-xl],\n [gdColumns.gt-xs], [gdColumns.gt-sm], [gdColumns.gt-md], [gdColumns.gt-lg]\n`;\n\n/**\n * 'grid-template-columns' CSS Grid styling directive\n * Configures the sizing for the columns in the grid\n * Syntax: [auto]\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13\n */\n@Directive({selector, inputs})\nexport class DefaultGridColumnsDirective extends GridColumnsDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridColumnStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-column': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridColumnDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-column';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridColumnStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = columnCache;\n}\n\nconst columnCache: Map = new Map();\n\nconst inputs = [\n 'gdColumn',\n 'gdColumn.xs', 'gdColumn.sm', 'gdColumn.md', 'gdColumn.lg', 'gdColumn.xl',\n 'gdColumn.lt-sm', 'gdColumn.lt-md', 'gdColumn.lt-lg', 'gdColumn.lt-xl',\n 'gdColumn.gt-xs', 'gdColumn.gt-sm', 'gdColumn.gt-md', 'gdColumn.gt-lg'\n];\n\nconst selector = `\n [gdColumn],\n [gdColumn.xs], [gdColumn.sm], [gdColumn.md], [gdColumn.lg], [gdColumn.xl],\n [gdColumn.lt-sm], [gdColumn.lt-md], [gdColumn.lt-lg], [gdColumn.lt-xl],\n [gdColumn.gt-xs], [gdColumn.gt-sm], [gdColumn.gt-md], [gdColumn.gt-lg]\n`;\n\n/**\n * 'grid-column' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26\n */\n@Directive({selector, inputs})\nexport class DefaultGridColumnDirective extends GridColumnDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n MediaMarshaller,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'initial';\n\nexport interface GridAutoParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAutoStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAutoParent) {\n let [direction, dense] = (input || DEFAULT_VALUE).split(' ');\n if (direction !== 'column' && direction !== 'row' && direction !== 'dense') {\n direction = 'row';\n }\n\n dense = (dense === 'dense' && direction !== 'dense') ? ' dense' : '';\n\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-flow': direction + dense\n };\n }\n}\n\nexport class GridAutoDirective extends BaseDirective2 {\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n protected DIRECTIVE_KEY = 'grid-auto';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAutoStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? autoInlineCache : autoCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst autoCache: Map = new Map();\nconst autoInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAuto',\n 'gdAuto.xs', 'gdAuto.sm', 'gdAuto.md', 'gdAuto.lg', 'gdAuto.xl',\n 'gdAuto.lt-sm', 'gdAuto.lt-md', 'gdAuto.lt-lg', 'gdAuto.lt-xl',\n 'gdAuto.gt-xs', 'gdAuto.gt-sm', 'gdAuto.gt-md', 'gdAuto.gt-lg'\n];\nconst selector = `\n [gdAuto],\n [gdAuto.xs], [gdAuto.sm], [gdAuto.md], [gdAuto.lg], [gdAuto.xl],\n [gdAuto.lt-sm], [gdAuto.lt-md], [gdAuto.lt-lg], [gdAuto.lt-xl],\n [gdAuto.gt-xs], [gdAuto.gt-sm], [gdAuto.gt-md], [gdAuto.gt-lg]\n`;\n\n/**\n * 'grid-auto-flow' CSS Grid styling directive\n * Configures the auto placement algorithm for the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-23\n */\n@Directive({selector, inputs})\nexport class DefaultGridAutoDirective extends GridAutoDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n MediaMarshaller,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst DELIMETER = '|';\n\nexport interface GridAreasParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAreasStyleBuiler extends StyleBuilder {\n buildStyles(input: string, parent: GridAreasParent) {\n const areas = (input || DEFAULT_VALUE).split(DELIMETER).map(v => `\"${v.trim()}\"`);\n\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-template-areas': areas.join(' ')\n };\n }\n}\n\nexport class GridAreasDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-areas';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAreasStyleBuiler,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? areasInlineCache : areasCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst areasCache: Map = new Map();\nconst areasInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAreas',\n 'gdAreas.xs', 'gdAreas.sm', 'gdAreas.md', 'gdAreas.lg', 'gdAreas.xl',\n 'gdAreas.lt-sm', 'gdAreas.lt-md', 'gdAreas.lt-lg', 'gdAreas.lt-xl',\n 'gdAreas.gt-xs', 'gdAreas.gt-sm', 'gdAreas.gt-md', 'gdAreas.gt-lg'\n];\n\nconst selector = `\n [gdAreas],\n [gdAreas.xs], [gdAreas.sm], [gdAreas.md], [gdAreas.lg], [gdAreas.xl],\n [gdAreas.lt-sm], [gdAreas.lt-md], [gdAreas.lt-lg], [gdAreas.lt-xl],\n [gdAreas.gt-xs], [gdAreas.gt-sm], [gdAreas.gt-md], [gdAreas.gt-lg]\n`;\n\n/**\n * 'grid-template-areas' CSS Grid styling directive\n * Configures the names of elements within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-14\n */\n@Directive({selector, inputs})\nexport class DefaultGridAreasDirective extends GridAreasDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridAreaStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-area': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridAreaDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-area';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAreaStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = gridAreaCache;\n}\n\nconst gridAreaCache: Map = new Map();\n\nconst inputs = [\n 'gdArea',\n 'gdArea.xs', 'gdArea.sm', 'gdArea.md', 'gdArea.lg', 'gdArea.xl',\n 'gdArea.lt-sm', 'gdArea.lt-md', 'gdArea.lt-lg', 'gdArea.lt-xl',\n 'gdArea.gt-xs', 'gdArea.gt-sm', 'gdArea.gt-md', 'gdArea.gt-lg'\n];\nconst selector = `\n [gdArea],\n [gdArea.xs], [gdArea.sm], [gdArea.md], [gdArea.lg], [gdArea.xl],\n [gdArea.lt-sm], [gdArea.lt-md], [gdArea.lt-lg], [gdArea.lt-xl],\n [gdArea.gt-xs], [gdArea.gt-sm], [gdArea.gt-md], [gdArea.gt-lg]\n`;\n\n/**\n * 'grid-area' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-27\n */\n@Directive({selector, inputs})\nexport class DefaultGridAreaDirective extends GridAreaDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_MAIN = 'start';\nconst DEFAULT_CROSS = 'stretch';\n\nexport interface GridAlignRowsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignRowsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAlignRowsParent) {\n return buildCss(input || `${DEFAULT_MAIN} ${DEFAULT_CROSS}`, parent.inline);\n }\n}\n\nexport class GridAlignRowsDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align-rows';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignRowsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? alignRowsInlineCache : alignRowsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst alignRowsCache: Map = new Map();\nconst alignRowsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAlignRows',\n 'gdAlignRows.xs', 'gdAlignRows.sm', 'gdAlignRows.md',\n 'gdAlignRows.lg', 'gdAlignRows.xl', 'gdAlignRows.lt-sm',\n 'gdAlignRows.lt-md', 'gdAlignRows.lt-lg', 'gdAlignRows.lt-xl',\n 'gdAlignRows.gt-xs', 'gdAlignRows.gt-sm', 'gdAlignRows.gt-md',\n 'gdAlignRows.gt-lg'\n];\nconst selector = `\n [gdAlignRows],\n [gdAlignRows.xs], [gdAlignRows.sm], [gdAlignRows.md],\n [gdAlignRows.lg], [gdAlignRows.xl], [gdAlignRows.lt-sm],\n [gdAlignRows.lt-md], [gdAlignRows.lt-lg], [gdAlignRows.lt-xl],\n [gdAlignRows.gt-xs], [gdAlignRows.gt-sm], [gdAlignRows.gt-md],\n [gdAlignRows.gt-lg]\n`;\n\n/**\n * 'row alignment' CSS Grid styling directive\n * Configures the alignment in the row direction\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-18\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-20\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignRowsDirective extends GridAlignRowsDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string, inline: boolean): StyleDefinition {\n const css: {[key: string]: string} = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n case 'space-around':\n case 'space-between':\n case 'space-evenly':\n case 'end':\n case 'start':\n case 'stretch':\n css['justify-content'] = mainAxis;\n break;\n default:\n css['justify-content'] = DEFAULT_MAIN; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'center':\n case 'end':\n case 'stretch':\n css['justify-items'] = crossAxis;\n break;\n default : // 'stretch'\n css['justify-items'] = DEFAULT_CROSS; // default cross axis\n break;\n }\n\n css['display'] = inline ? 'inline-grid' : 'grid';\n\n return css;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_MAIN = 'start';\nconst DEFAULT_CROSS = 'stretch';\n\nexport interface GridAlignColumnsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignColumnsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAlignColumnsParent) {\n return buildCss(input || `${DEFAULT_MAIN} ${DEFAULT_CROSS}`, parent.inline);\n }\n}\n\nexport class GridAlignColumnsDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align-columns';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignColumnsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? alignColumnsInlineCache : alignColumnsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst alignColumnsCache: Map = new Map();\nconst alignColumnsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAlignColumns',\n 'gdAlignColumns.xs', 'gdAlignColumns.sm', 'gdAlignColumns.md',\n 'gdAlignColumns.lg', 'gdAlignColumns.xl', 'gdAlignColumns.lt-sm',\n 'gdAlignColumns.lt-md', 'gdAlignColumns.lt-lg', 'gdAlignColumns.lt-xl',\n 'gdAlignColumns.gt-xs', 'gdAlignColumns.gt-sm', 'gdAlignColumns.gt-md',\n 'gdAlignColumns.gt-lg'\n];\nconst selector = `\n [gdAlignColumns],\n [gdAlignColumns.xs], [gdAlignColumns.sm], [gdAlignColumns.md],\n [gdAlignColumns.lg], [gdAlignColumns.xl], [gdAlignColumns.lt-sm],\n [gdAlignColumns.lt-md], [gdAlignColumns.lt-lg], [gdAlignColumns.lt-xl],\n [gdAlignColumns.gt-xs], [gdAlignColumns.gt-sm], [gdAlignColumns.gt-md],\n [gdAlignColumns.gt-lg]\n`;\n\n/**\n * 'column alignment' CSS Grid styling directive\n * Configures the alignment in the column direction\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-19\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-21\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignColumnsDirective extends GridAlignColumnsDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string, inline: boolean): StyleDefinition {\n const css: {[key: string]: string} = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['align-content'] = 'center';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['align-content'] = 'space-evenly';\n break;\n case 'end':\n css['align-content'] = 'end';\n break;\n case 'start':\n css['align-content'] = 'start';\n break;\n case 'stretch':\n css['align-content'] = 'stretch';\n break;\n default:\n css['align-content'] = DEFAULT_MAIN; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n css['align-items'] = 'start';\n break;\n case 'center':\n css['align-items'] = 'center';\n break;\n case 'end':\n css['align-items'] = 'end';\n break;\n case 'stretch':\n css['align-items'] = 'stretch';\n break;\n default : // 'stretch'\n css['align-items'] = DEFAULT_CROSS; // default cross axis\n break;\n }\n\n css['display'] = inline ? 'inline-grid' : 'grid';\n\n return css;\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\nconst ROW_DEFAULT = 'stretch';\nconst COL_DEFAULT = 'stretch';\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return buildCss(input || ROW_DEFAULT);\n }\n}\n\nexport class GridAlignDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = alignCache;\n}\n\nconst alignCache: Map = new Map();\n\nconst inputs = [\n 'gdGridAlign',\n 'gdGridAlign.xs', 'gdGridAlign.sm', 'gdGridAlign.md', 'gdGridAlign.lg', 'gdGridAlign.xl',\n 'gdGridAlign.lt-sm', 'gdGridAlign.lt-md', 'gdGridAlign.lt-lg', 'gdGridAlign.lt-xl',\n 'gdGridAlign.gt-xs', 'gdGridAlign.gt-sm', 'gdGridAlign.gt-md', 'gdGridAlign.gt-lg'\n];\n\nconst selector = `\n [gdGridAlign],\n [gdGridAlign.xs], [gdGridAlign.sm], [gdGridAlign.md], [gdGridAlign.lg],[gdGridAlign.xl],\n [gdGridAlign.lt-sm], [gdGridAlign.lt-md], [gdGridAlign.lt-lg], [gdGridAlign.lt-xl],\n [gdGridAlign.gt-xs], [gdGridAlign.gt-sm], [gdGridAlign.gt-md], [gdGridAlign.gt-lg]\n`;\n\n/**\n * 'align' CSS Grid styling directive for grid children\n * Defines positioning of child elements along row and column axis in a grid container\n * Optional values: {row-axis} values or {row-axis column-axis} value pairs\n *\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-justify-self\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-align-self\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignDirective extends GridAlignDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string = '') {\n const css: {[key: string]: string} = {}, [rowAxis, columnAxis] = align.split(' ');\n\n // Row axis\n switch (rowAxis) {\n case 'end':\n css['justify-self'] = 'end';\n break;\n case 'center':\n css['justify-self'] = 'center';\n break;\n case 'stretch':\n css['justify-self'] = 'stretch';\n break;\n case 'start':\n css['justify-self'] = 'start';\n break;\n default:\n css['justify-self'] = ROW_DEFAULT; // default row axis\n break;\n }\n\n // Column axis\n switch (columnAxis) {\n case 'end':\n css['align-self'] = 'end';\n break;\n case 'center':\n css['align-self'] = 'center';\n break;\n case 'stretch':\n css['align-self'] = 'stretch';\n break;\n case 'start':\n css['align-self'] = 'start';\n break;\n default:\n css['align-self'] = COL_DEFAULT; // default column axis\n break;\n }\n\n return css;\n}\n"],"names":["selector","inputs","AUTO_SPECIFIER","DEFAULT_VALUE","DEFAULT_CROSS","DEFAULT_MAIN","buildCss"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"grid.js","sources":["../../../src/lib/grid/module.ts","../../../src/lib/grid/rows/rows.ts","../../../src/lib/grid/row/row.ts","../../../src/lib/grid/gap/gap.ts","../../../src/lib/grid/columns/columns.ts","../../../src/lib/grid/column/column.ts","../../../src/lib/grid/auto/auto.ts","../../../src/lib/grid/areas/areas.ts","../../../src/lib/grid/area/area.ts","../../../src/lib/grid/align-rows/align-rows.ts","../../../src/lib/grid/align-columns/align-columns.ts","../../../src/lib/grid/grid-align/grid-align.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {NgModule} from '@angular/core';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultGridAlignDirective} from './grid-align/grid-align';\nimport {DefaultGridAlignColumnsDirective} from './align-columns/align-columns';\nimport {DefaultGridAlignRowsDirective} from './align-rows/align-rows';\nimport {DefaultGridAreaDirective} from './area/area';\nimport {DefaultGridAreasDirective} from './areas/areas';\nimport {DefaultGridAutoDirective} from './auto/auto';\nimport {DefaultGridColumnDirective} from './column/column';\nimport {DefaultGridColumnsDirective} from './columns/columns';\nimport {DefaultGridGapDirective} from './gap/gap';\nimport {DefaultGridRowDirective} from './row/row';\nimport {DefaultGridRowsDirective} from './rows/rows';\n\n\nconst ALL_DIRECTIVES = [\n DefaultGridAlignDirective,\n DefaultGridAlignColumnsDirective,\n DefaultGridAlignRowsDirective,\n DefaultGridAreaDirective,\n DefaultGridAreasDirective,\n DefaultGridAutoDirective,\n DefaultGridColumnDirective,\n DefaultGridColumnsDirective,\n DefaultGridGapDirective,\n DefaultGridRowDirective,\n DefaultGridRowsDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the CSS Grid API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class GridModule {\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 {Directive, ElementRef, Input, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst AUTO_SPECIFIER = '!';\n\nexport interface GridRowsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridRowsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridRowsParent) {\n input = input || DEFAULT_VALUE;\n let auto = false;\n if (input.endsWith(AUTO_SPECIFIER)) {\n input = input.substring(0, input.indexOf(AUTO_SPECIFIER));\n auto = true;\n }\n\n const css = {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-rows': '',\n 'grid-template-rows': '',\n };\n const key = (auto ? 'grid-auto-rows' : 'grid-template-rows');\n css[key] = input;\n\n return css;\n }\n}\n\nexport class GridRowsDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-rows';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridRowsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? rowsInlineCache : rowsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst rowsCache: Map = new Map();\nconst rowsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdRows',\n 'gdRows.xs', 'gdRows.sm', 'gdRows.md', 'gdRows.lg', 'gdRows.xl',\n 'gdRows.lt-sm', 'gdRows.lt-md', 'gdRows.lt-lg', 'gdRows.lt-xl',\n 'gdRows.gt-xs', 'gdRows.gt-sm', 'gdRows.gt-md', 'gdRows.gt-lg'\n];\n\nconst selector = `\n [gdRows],\n [gdRows.xs], [gdRows.sm], [gdRows.md], [gdRows.lg], [gdRows.xl],\n [gdRows.lt-sm], [gdRows.lt-md], [gdRows.lt-lg], [gdRows.lt-xl],\n [gdRows.gt-xs], [gdRows.gt-sm], [gdRows.gt-md], [gdRows.gt-lg]\n`;\n\n/**\n * 'grid-template-rows' CSS Grid styling directive\n * Configures the sizing for the rows in the grid\n * Syntax: [auto]\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13\n */\n@Directive({selector, inputs})\nexport class DefaultGridRowsDirective extends GridRowsDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridRowStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-row': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridRowDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-row';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridRowStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = rowCache;\n}\n\nconst rowCache: Map = new Map();\n\nconst inputs = [\n 'gdRow',\n 'gdRow.xs', 'gdRow.sm', 'gdRow.md', 'gdRow.lg', 'gdRow.xl',\n 'gdRow.lt-sm', 'gdRow.lt-md', 'gdRow.lt-lg', 'gdRow.lt-xl',\n 'gdRow.gt-xs', 'gdRow.gt-sm', 'gdRow.gt-md', 'gdRow.gt-lg'\n];\n\nconst selector = `\n [gdRow],\n [gdRow.xs], [gdRow.sm], [gdRow.md], [gdRow.lg], [gdRow.xl],\n [gdRow.lt-sm], [gdRow.lt-md], [gdRow.lt-lg], [gdRow.lt-xl],\n [gdRow.gt-xs], [gdRow.gt-sm], [gdRow.gt-md], [gdRow.gt-lg]\n`;\n\n/**\n * 'grid-row' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26\n */\n@Directive({selector, inputs})\nexport class DefaultGridRowDirective extends GridRowDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = '0';\n\nexport interface GridGapParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridGapStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridGapParent) {\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-gap': input || DEFAULT_VALUE\n };\n }\n}\n\nexport class GridGapDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-gap';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridGapStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? gapInlineCache : gapCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst gapCache: Map = new Map();\nconst gapInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdGap',\n 'gdGap.xs', 'gdGap.sm', 'gdGap.md', 'gdGap.lg', 'gdGap.xl',\n 'gdGap.lt-sm', 'gdGap.lt-md', 'gdGap.lt-lg', 'gdGap.lt-xl',\n 'gdGap.gt-xs', 'gdGap.gt-sm', 'gdGap.gt-md', 'gdGap.gt-lg'\n];\n\nconst selector = `\n [gdGap],\n [gdGap.xs], [gdGap.sm], [gdGap.md], [gdGap.lg], [gdGap.xl],\n [gdGap.lt-sm], [gdGap.lt-md], [gdGap.lt-lg], [gdGap.lt-xl],\n [gdGap.gt-xs], [gdGap.gt-sm], [gdGap.gt-md], [gdGap.gt-lg]\n`;\n\n/**\n * 'grid-gap' CSS Grid styling directive\n * Configures the gap between items in the grid\n * Syntax: []\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-17\n */\n@Directive({selector, inputs})\nexport class DefaultGridGapDirective extends GridGapDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst AUTO_SPECIFIER = '!';\n\nexport interface GridColumnsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridColumnsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridColumnsParent) {\n input = input || DEFAULT_VALUE;\n let auto = false;\n if (input.endsWith(AUTO_SPECIFIER)) {\n input = input.substring(0, input.indexOf(AUTO_SPECIFIER));\n auto = true;\n }\n\n const css = {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-columns': '',\n 'grid-template-columns': '',\n };\n const key = (auto ? 'grid-auto-columns' : 'grid-template-columns');\n css[key] = input;\n\n return css;\n }\n}\n\nexport class GridColumnsDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-columns';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridColumnsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? columnsInlineCache : columnsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst columnsCache: Map = new Map();\nconst columnsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdColumns',\n 'gdColumns.xs', 'gdColumns.sm', 'gdColumns.md', 'gdColumns.lg', 'gdColumns.xl',\n 'gdColumns.lt-sm', 'gdColumns.lt-md', 'gdColumns.lt-lg', 'gdColumns.lt-xl',\n 'gdColumns.gt-xs', 'gdColumns.gt-sm', 'gdColumns.gt-md', 'gdColumns.gt-lg'\n];\n\nconst selector = `\n [gdColumns],\n [gdColumns.xs], [gdColumns.sm], [gdColumns.md], [gdColumns.lg], [gdColumns.xl],\n [gdColumns.lt-sm], [gdColumns.lt-md], [gdColumns.lt-lg], [gdColumns.lt-xl],\n [gdColumns.gt-xs], [gdColumns.gt-sm], [gdColumns.gt-md], [gdColumns.gt-lg]\n`;\n\n/**\n * 'grid-template-columns' CSS Grid styling directive\n * Configures the sizing for the columns in the grid\n * Syntax: [auto]\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13\n */\n@Directive({selector, inputs})\nexport class DefaultGridColumnsDirective extends GridColumnsDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridColumnStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-column': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridColumnDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-column';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridColumnStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = columnCache;\n}\n\nconst columnCache: Map = new Map();\n\nconst inputs = [\n 'gdColumn',\n 'gdColumn.xs', 'gdColumn.sm', 'gdColumn.md', 'gdColumn.lg', 'gdColumn.xl',\n 'gdColumn.lt-sm', 'gdColumn.lt-md', 'gdColumn.lt-lg', 'gdColumn.lt-xl',\n 'gdColumn.gt-xs', 'gdColumn.gt-sm', 'gdColumn.gt-md', 'gdColumn.gt-lg'\n];\n\nconst selector = `\n [gdColumn],\n [gdColumn.xs], [gdColumn.sm], [gdColumn.md], [gdColumn.lg], [gdColumn.xl],\n [gdColumn.lt-sm], [gdColumn.lt-md], [gdColumn.lt-lg], [gdColumn.lt-xl],\n [gdColumn.gt-xs], [gdColumn.gt-sm], [gdColumn.gt-md], [gdColumn.gt-lg]\n`;\n\n/**\n * 'grid-column' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26\n */\n@Directive({selector, inputs})\nexport class DefaultGridColumnDirective extends GridColumnDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n MediaMarshaller,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'initial';\n\nexport interface GridAutoParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAutoStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAutoParent) {\n let [direction, dense] = (input || DEFAULT_VALUE).split(' ');\n if (direction !== 'column' && direction !== 'row' && direction !== 'dense') {\n direction = 'row';\n }\n\n dense = (dense === 'dense' && direction !== 'dense') ? ' dense' : '';\n\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-flow': direction + dense\n };\n }\n}\n\nexport class GridAutoDirective extends BaseDirective2 {\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n protected DIRECTIVE_KEY = 'grid-auto';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAutoStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? autoInlineCache : autoCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst autoCache: Map = new Map();\nconst autoInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAuto',\n 'gdAuto.xs', 'gdAuto.sm', 'gdAuto.md', 'gdAuto.lg', 'gdAuto.xl',\n 'gdAuto.lt-sm', 'gdAuto.lt-md', 'gdAuto.lt-lg', 'gdAuto.lt-xl',\n 'gdAuto.gt-xs', 'gdAuto.gt-sm', 'gdAuto.gt-md', 'gdAuto.gt-lg'\n];\nconst selector = `\n [gdAuto],\n [gdAuto.xs], [gdAuto.sm], [gdAuto.md], [gdAuto.lg], [gdAuto.xl],\n [gdAuto.lt-sm], [gdAuto.lt-md], [gdAuto.lt-lg], [gdAuto.lt-xl],\n [gdAuto.gt-xs], [gdAuto.gt-sm], [gdAuto.gt-md], [gdAuto.gt-lg]\n`;\n\n/**\n * 'grid-auto-flow' CSS Grid styling directive\n * Configures the auto placement algorithm for the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-23\n */\n@Directive({selector, inputs})\nexport class DefaultGridAutoDirective extends GridAutoDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n MediaMarshaller,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst DELIMETER = '|';\n\nexport interface GridAreasParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAreasStyleBuiler extends StyleBuilder {\n buildStyles(input: string, parent: GridAreasParent) {\n const areas = (input || DEFAULT_VALUE).split(DELIMETER).map(v => `\"${v.trim()}\"`);\n\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-template-areas': areas.join(' ')\n };\n }\n}\n\nexport class GridAreasDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-areas';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAreasStyleBuiler,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? areasInlineCache : areasCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst areasCache: Map = new Map();\nconst areasInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAreas',\n 'gdAreas.xs', 'gdAreas.sm', 'gdAreas.md', 'gdAreas.lg', 'gdAreas.xl',\n 'gdAreas.lt-sm', 'gdAreas.lt-md', 'gdAreas.lt-lg', 'gdAreas.lt-xl',\n 'gdAreas.gt-xs', 'gdAreas.gt-sm', 'gdAreas.gt-md', 'gdAreas.gt-lg'\n];\n\nconst selector = `\n [gdAreas],\n [gdAreas.xs], [gdAreas.sm], [gdAreas.md], [gdAreas.lg], [gdAreas.xl],\n [gdAreas.lt-sm], [gdAreas.lt-md], [gdAreas.lt-lg], [gdAreas.lt-xl],\n [gdAreas.gt-xs], [gdAreas.gt-sm], [gdAreas.gt-md], [gdAreas.gt-lg]\n`;\n\n/**\n * 'grid-template-areas' CSS Grid styling directive\n * Configures the names of elements within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-14\n */\n@Directive({selector, inputs})\nexport class DefaultGridAreasDirective extends GridAreasDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridAreaStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-area': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridAreaDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-area';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAreaStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = gridAreaCache;\n}\n\nconst gridAreaCache: Map = new Map();\n\nconst inputs = [\n 'gdArea',\n 'gdArea.xs', 'gdArea.sm', 'gdArea.md', 'gdArea.lg', 'gdArea.xl',\n 'gdArea.lt-sm', 'gdArea.lt-md', 'gdArea.lt-lg', 'gdArea.lt-xl',\n 'gdArea.gt-xs', 'gdArea.gt-sm', 'gdArea.gt-md', 'gdArea.gt-lg'\n];\nconst selector = `\n [gdArea],\n [gdArea.xs], [gdArea.sm], [gdArea.md], [gdArea.lg], [gdArea.xl],\n [gdArea.lt-sm], [gdArea.lt-md], [gdArea.lt-lg], [gdArea.lt-xl],\n [gdArea.gt-xs], [gdArea.gt-sm], [gdArea.gt-md], [gdArea.gt-lg]\n`;\n\n/**\n * 'grid-area' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-27\n */\n@Directive({selector, inputs})\nexport class DefaultGridAreaDirective extends GridAreaDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_MAIN = 'start';\nconst DEFAULT_CROSS = 'stretch';\n\nexport interface GridAlignRowsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignRowsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAlignRowsParent) {\n return buildCss(input || `${DEFAULT_MAIN} ${DEFAULT_CROSS}`, parent.inline);\n }\n}\n\nexport class GridAlignRowsDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align-rows';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignRowsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? alignRowsInlineCache : alignRowsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst alignRowsCache: Map = new Map();\nconst alignRowsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAlignRows',\n 'gdAlignRows.xs', 'gdAlignRows.sm', 'gdAlignRows.md',\n 'gdAlignRows.lg', 'gdAlignRows.xl', 'gdAlignRows.lt-sm',\n 'gdAlignRows.lt-md', 'gdAlignRows.lt-lg', 'gdAlignRows.lt-xl',\n 'gdAlignRows.gt-xs', 'gdAlignRows.gt-sm', 'gdAlignRows.gt-md',\n 'gdAlignRows.gt-lg'\n];\nconst selector = `\n [gdAlignRows],\n [gdAlignRows.xs], [gdAlignRows.sm], [gdAlignRows.md],\n [gdAlignRows.lg], [gdAlignRows.xl], [gdAlignRows.lt-sm],\n [gdAlignRows.lt-md], [gdAlignRows.lt-lg], [gdAlignRows.lt-xl],\n [gdAlignRows.gt-xs], [gdAlignRows.gt-sm], [gdAlignRows.gt-md],\n [gdAlignRows.gt-lg]\n`;\n\n/**\n * 'row alignment' CSS Grid styling directive\n * Configures the alignment in the row direction\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-18\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-20\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignRowsDirective extends GridAlignRowsDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string, inline: boolean): StyleDefinition {\n const css: {[key: string]: string} = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n case 'space-around':\n case 'space-between':\n case 'space-evenly':\n case 'end':\n case 'start':\n case 'stretch':\n css['justify-content'] = mainAxis;\n break;\n default:\n css['justify-content'] = DEFAULT_MAIN; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'center':\n case 'end':\n case 'stretch':\n css['justify-items'] = crossAxis;\n break;\n default : // 'stretch'\n css['justify-items'] = DEFAULT_CROSS; // default cross axis\n break;\n }\n\n css['display'] = inline ? 'inline-grid' : 'grid';\n\n return css;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_MAIN = 'start';\nconst DEFAULT_CROSS = 'stretch';\n\nexport interface GridAlignColumnsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignColumnsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAlignColumnsParent) {\n return buildCss(input || `${DEFAULT_MAIN} ${DEFAULT_CROSS}`, parent.inline);\n }\n}\n\nexport class GridAlignColumnsDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align-columns';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignColumnsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? alignColumnsInlineCache : alignColumnsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst alignColumnsCache: Map = new Map();\nconst alignColumnsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAlignColumns',\n 'gdAlignColumns.xs', 'gdAlignColumns.sm', 'gdAlignColumns.md',\n 'gdAlignColumns.lg', 'gdAlignColumns.xl', 'gdAlignColumns.lt-sm',\n 'gdAlignColumns.lt-md', 'gdAlignColumns.lt-lg', 'gdAlignColumns.lt-xl',\n 'gdAlignColumns.gt-xs', 'gdAlignColumns.gt-sm', 'gdAlignColumns.gt-md',\n 'gdAlignColumns.gt-lg'\n];\nconst selector = `\n [gdAlignColumns],\n [gdAlignColumns.xs], [gdAlignColumns.sm], [gdAlignColumns.md],\n [gdAlignColumns.lg], [gdAlignColumns.xl], [gdAlignColumns.lt-sm],\n [gdAlignColumns.lt-md], [gdAlignColumns.lt-lg], [gdAlignColumns.lt-xl],\n [gdAlignColumns.gt-xs], [gdAlignColumns.gt-sm], [gdAlignColumns.gt-md],\n [gdAlignColumns.gt-lg]\n`;\n\n/**\n * 'column alignment' CSS Grid styling directive\n * Configures the alignment in the column direction\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-19\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-21\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignColumnsDirective extends GridAlignColumnsDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string, inline: boolean): StyleDefinition {\n const css: {[key: string]: string} = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['align-content'] = 'center';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['align-content'] = 'space-evenly';\n break;\n case 'end':\n css['align-content'] = 'end';\n break;\n case 'start':\n css['align-content'] = 'start';\n break;\n case 'stretch':\n css['align-content'] = 'stretch';\n break;\n default:\n css['align-content'] = DEFAULT_MAIN; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n css['align-items'] = 'start';\n break;\n case 'center':\n css['align-items'] = 'center';\n break;\n case 'end':\n css['align-items'] = 'end';\n break;\n case 'stretch':\n css['align-items'] = 'stretch';\n break;\n default : // 'stretch'\n css['align-items'] = DEFAULT_CROSS; // default cross axis\n break;\n }\n\n css['display'] = inline ? 'inline-grid' : 'grid';\n\n return css;\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\nconst ROW_DEFAULT = 'stretch';\nconst COL_DEFAULT = 'stretch';\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return buildCss(input || ROW_DEFAULT);\n }\n}\n\nexport class GridAlignDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = alignCache;\n}\n\nconst alignCache: Map = new Map();\n\nconst inputs = [\n 'gdGridAlign',\n 'gdGridAlign.xs', 'gdGridAlign.sm', 'gdGridAlign.md', 'gdGridAlign.lg', 'gdGridAlign.xl',\n 'gdGridAlign.lt-sm', 'gdGridAlign.lt-md', 'gdGridAlign.lt-lg', 'gdGridAlign.lt-xl',\n 'gdGridAlign.gt-xs', 'gdGridAlign.gt-sm', 'gdGridAlign.gt-md', 'gdGridAlign.gt-lg'\n];\n\nconst selector = `\n [gdGridAlign],\n [gdGridAlign.xs], [gdGridAlign.sm], [gdGridAlign.md], [gdGridAlign.lg],[gdGridAlign.xl],\n [gdGridAlign.lt-sm], [gdGridAlign.lt-md], [gdGridAlign.lt-lg], [gdGridAlign.lt-xl],\n [gdGridAlign.gt-xs], [gdGridAlign.gt-sm], [gdGridAlign.gt-md], [gdGridAlign.gt-lg]\n`;\n\n/**\n * 'align' CSS Grid styling directive for grid children\n * Defines positioning of child elements along row and column axis in a grid container\n * Optional values: {row-axis} values or {row-axis column-axis} value pairs\n *\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-justify-self\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-align-self\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignDirective extends GridAlignDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string = '') {\n const css: {[key: string]: string} = {}, [rowAxis, columnAxis] = align.split(' ');\n\n // Row axis\n switch (rowAxis) {\n case 'end':\n css['justify-self'] = 'end';\n break;\n case 'center':\n css['justify-self'] = 'center';\n break;\n case 'stretch':\n css['justify-self'] = 'stretch';\n break;\n case 'start':\n css['justify-self'] = 'start';\n break;\n default:\n css['justify-self'] = ROW_DEFAULT; // default row axis\n break;\n }\n\n // Column axis\n switch (columnAxis) {\n case 'end':\n css['align-self'] = 'end';\n break;\n case 'center':\n css['align-self'] = 'center';\n break;\n case 'stretch':\n css['align-self'] = 'stretch';\n break;\n case 'start':\n css['align-self'] = 'start';\n break;\n default:\n css['align-self'] = COL_DEFAULT; // default column axis\n break;\n }\n\n return css;\n}\n"],"names":["selector","inputs","AUTO_SPECIFIER","DEFAULT_VALUE","DEFAULT_CROSS","DEFAULT_MAIN","buildCss"],"mappings":"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"} \ No newline at end of file diff --git a/esm2015/server.js b/esm2015/server.js index 9e2f113b6..b67fd7578 100644 --- a/esm2015/server.js +++ b/esm2015/server.js @@ -6,76 +6,306 @@ * found in the LICENSE file at https://angular.io/license */ import { DOCUMENT } from '@angular/common'; +import { Inject, Injectable, NgZone, PLATFORM_ID, NgModule } from '@angular/core'; +import { ɵMatchMedia, BREAKPOINTS, CLASS_NAME, SERVER_TOKEN, StylesheetMap, sortAscendingPriority, LAYOUT_CONFIG } from '@angular/flex-layout/core'; import { BEFORE_APP_SERIALIZED } from '@angular/platform-server'; -import { BREAKPOINTS, CLASS_NAME, SERVER_TOKEN, MatchMedia, StylesheetMap, ServerMatchMedia, prioritySort } from '@angular/flex-layout/core'; -import { NgModule } from '@angular/core'; /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Special server-only class to simulate a MediaQueryList and + * - supports manual activation to simulate mediaQuery matching + * - manages listeners + */ +class ServerMediaQueryList { + /** + * @param {?} _mediaQuery + */ + constructor(_mediaQuery) { + this._mediaQuery = _mediaQuery; + this._isActive = false; + this._listeners = []; + this.onchange = null; + } + /** + * @return {?} + */ + get matches() { + return this._isActive; + } + /** + * @return {?} + */ + get media() { + return this._mediaQuery; + } + /** + * Destroy the current list by deactivating the + * listeners and clearing the internal list + * @return {?} + */ + destroy() { + this.deactivate(); + this._listeners = []; + } + /** + * Notify all listeners that 'matches === TRUE' + * @return {?} + */ + activate() { + if (!this._isActive) { + this._isActive = true; + this._listeners.forEach((/** + * @param {?} callback + * @return {?} + */ + (callback) => { + /** @type {?} */ + const cb = (/** @type {?} */ (callback)); + cb.call(null, this); + })); + } + return this; + } + /** + * Notify all listeners that 'matches === false' + * @return {?} + */ + deactivate() { + if (this._isActive) { + this._isActive = false; + this._listeners.forEach((/** + * @param {?} callback + * @return {?} + */ + (callback) => { + /** @type {?} */ + const cb = (/** @type {?} */ (callback)); + cb.call(null, this); + })); + } + return this; + } + /** + * Add a listener to our internal list to activate later + * @param {?} listener + * @return {?} + */ + addListener(listener) { + if (this._listeners.indexOf(listener) === -1) { + this._listeners.push(listener); + } + if (this._isActive) { + /** @type {?} */ + const cb = (/** @type {?} */ (listener)); + cb.call(null, this); + } + } + /** + * Don't need to remove listeners in the server environment + * @param {?} _ + * @return {?} + */ + removeListener(_) { + } + /** + * @param {?} _ + * @param {?} __ + * @param {?=} ___ + * @return {?} + */ + addEventListener(_, __, ___) { + } + /** + * @param {?} _ + * @param {?} __ + * @param {?=} ___ + * @return {?} + */ + removeEventListener(_, __, ___) { + } + /** + * @param {?} _ + * @return {?} + */ + dispatchEvent(_) { + return false; + } +} +/** + * Special server-only implementation of MatchMedia that uses the above + * ServerMediaQueryList as its internal representation + * + * Also contains methods to activate and deactivate breakpoints + */ +class ServerMatchMedia extends ɵMatchMedia { + /** + * @param {?} _zone + * @param {?} _platformId + * @param {?} _document + */ + constructor(_zone, _platformId, _document) { + super(_zone, _platformId, _document); + this._zone = _zone; + this._platformId = _platformId; + this._document = _document; + } + /** + * Activate the specified breakpoint if we're on the server, no-op otherwise + * @param {?} bp + * @return {?} + */ + activateBreakpoint(bp) { + /** @type {?} */ + const lookupBreakpoint = (/** @type {?} */ (this.registry.get(bp.mediaQuery))); + if (lookupBreakpoint) { + lookupBreakpoint.activate(); + } + } + /** + * Deactivate the specified breakpoint if we're on the server, no-op otherwise + * @param {?} bp + * @return {?} + */ + deactivateBreakpoint(bp) { + /** @type {?} */ + const lookupBreakpoint = (/** @type {?} */ (this.registry.get(bp.mediaQuery))); + if (lookupBreakpoint) { + lookupBreakpoint.deactivate(); + } + } + /** + * Call window.matchMedia() to build a MediaQueryList; which + * supports 0..n listeners for activation/deactivation + * @protected + * @param {?} query + * @return {?} + */ + buildMQL(query) { + return new ServerMediaQueryList(query); + } +} +ServerMatchMedia.decorators = [ + { type: Injectable }, +]; +/** @nocollapse */ +ServerMatchMedia.ctorParameters = () => [ + { type: NgZone }, + { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }, + { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] } +]; + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * Activate all of the registered breakpoints in sequence, and then * retrieve the associated stylings from the virtual stylesheet * @param {?} serverSheet the virtual stylesheet that stores styles for each * element - * @param {?} matchMedia the service to activate/deactivate breakpoints + * @param {?} mediaController the MatchMedia service to activate/deactivate breakpoints * @param {?} breakpoints the registered breakpoints to activate/deactivate + * @param {?} layoutConfig the library config, and specifically the breakpoints to activate * @return {?} */ -function generateStaticFlexLayoutStyles(serverSheet, matchMedia, breakpoints) { +function generateStaticFlexLayoutStyles(serverSheet, mediaController, breakpoints, layoutConfig) { + // Store the custom classes in the following map, that way only + // one class gets allocated per HTMLElement, and each class can + // be referenced in the static media queries /** @type {?} */ const classMap = new Map(); + // Get the initial stylings for all of the directives, + // and initialize the fallback block of stylings /** @type {?} */ const defaultStyles = new Map(serverSheet.stylesheet); /** @type {?} */ let styleText = generateCss(defaultStyles, 'all', classMap); - breakpoints.sort(prioritySort); - breakpoints.reverse(); - breakpoints.forEach((bp, i) => { + [...breakpoints].sort(sortAscendingPriority).forEach((/** + * @param {?} bp + * @param {?} i + * @return {?} + */ + (bp, i) => { serverSheet.clearStyles(); - (/** @type {?} */ (matchMedia)).activateBreakpoint(bp); + mediaController.activateBreakpoint(bp); /** @type {?} */ const stylesheet = new Map(serverSheet.stylesheet); if (stylesheet.size > 0) { styleText += generateCss(stylesheet, bp.mediaQuery, classMap); } - (/** @type {?} */ (matchMedia)).deactivateBreakpoint(breakpoints[i]); - }); + mediaController.deactivateBreakpoint(breakpoints[i]); + })); + /** @type {?} */ + const serverBps = layoutConfig.ssrObserveBreakpoints; + if (serverBps) { + serverBps + .reduce((/** + * @param {?} acc + * @param {?} serverBp + * @return {?} + */ + (acc, serverBp) => { + /** @type {?} */ + const foundBp = breakpoints.find((/** + * @param {?} bp + * @return {?} + */ + bp => serverBp === bp.alias)); + if (!foundBp) { + console.warn(`FlexLayoutServerModule: unknown breakpoint alias "${serverBp}"`); + } + else { + acc.push(foundBp); + } + return acc; + }), []) + .forEach(mediaController.activateBreakpoint); + } return styleText; } /** * Create a style tag populated with the dynamic stylings from Flex * components and attach it to the head of the DOM * @param {?} serverSheet - * @param {?} matchMedia + * @param {?} mediaController * @param {?} _document * @param {?} breakpoints + * @param {?} layoutConfig * @return {?} */ -function FLEX_SSR_SERIALIZER_FACTORY(serverSheet, matchMedia, _document, breakpoints) { - return () => { +function FLEX_SSR_SERIALIZER_FACTORY(serverSheet, mediaController, _document, breakpoints, layoutConfig) { + return (/** + * @return {?} + */ + () => { + // This is the style tag that gets inserted into the head of the DOM, + // populated with the manual media queries /** @type {?} */ const styleTag = _document.createElement('style'); /** @type {?} */ - const styleText = generateStaticFlexLayoutStyles(serverSheet, matchMedia, breakpoints); + const styleText = generateStaticFlexLayoutStyles(serverSheet, mediaController, breakpoints, layoutConfig); styleTag.classList.add(`${CLASS_NAME}ssr`); - styleTag.textContent = styleText; /** @type {?} */ - ((_document.head)).appendChild(styleTag); - }; + styleTag.textContent = styleText; + (/** @type {?} */ (_document.head)).appendChild(styleTag); + }); } -/** * +/** * Provider to set static styles on the server - @type {?} */ + * @type {?} + */ const SERVER_PROVIDERS = [ { - provide: /** @type {?} */ (BEFORE_APP_SERIALIZED), + provide: (/** @type {?} */ (BEFORE_APP_SERIALIZED)), useFactory: FLEX_SSR_SERIALIZER_FACTORY, deps: [ StylesheetMap, - MatchMedia, + ɵMatchMedia, DOCUMENT, BREAKPOINTS, + LAYOUT_CONFIG, ], multi: true }, @@ -84,7 +314,7 @@ const SERVER_PROVIDERS = [ useValue: true }, { - provide: MatchMedia, + provide: ɵMatchMedia, useClass: ServerMatchMedia } ]; @@ -105,17 +335,27 @@ const IS_DEBUG_MODE = false; function generateCss(stylesheet, mediaQuery, classMap) { /** @type {?} */ let css = ''; - stylesheet.forEach((styles, el) => { + stylesheet.forEach((/** + * @param {?} styles + * @param {?} el + * @return {?} + */ + (styles, el) => { /** @type {?} */ let keyVals = ''; /** @type {?} */ let className = getClassName(el, classMap); - styles.forEach((v, k) => { + styles.forEach((/** + * @param {?} v + * @param {?} k + * @return {?} + */ + (v, k) => { keyVals += v ? format(`${k}:${v};`) : ''; - }); + })); // Build list of CSS styles; each with a className css += format(`.${className} {`, keyVals, '}'); - }); + })); // Group 1 or more styles (each with className) in a specific mediaQuery return format(`@media ${mediaQuery} {`, css, '}'); } @@ -128,9 +368,14 @@ function generateCss(stylesheet, mediaQuery, classMap) { function format(...list) { /** @type {?} */ let result = ''; - list.forEach((css, i) => { - result += IS_DEBUG_MODE ? formatSegment(css, i != 0) : css; - }); + list.forEach((/** + * @param {?} css + * @param {?} i + * @return {?} + */ + (css, i) => { + result += IS_DEBUG_MODE ? formatSegment(css, i !== 0) : css; + })); return result; } /** @@ -139,7 +384,7 @@ function format(...list) { * @return {?} */ function formatSegment(css, asPrefix = true) { - return asPrefix ? '\n' + css : css + '\n'; + return asPrefix ? `\n${css}` : `${css}\n`; } /** * Get className associated with CSS styling @@ -162,7 +407,7 @@ function getClassName(element, classMap) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class FlexLayoutServerModule { } @@ -174,13 +419,13 @@ FlexLayoutServerModule.decorators = [ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -export { FlexLayoutServerModule, generateStaticFlexLayoutStyles, FLEX_SSR_SERIALIZER_FACTORY, SERVER_PROVIDERS }; +export { FlexLayoutServerModule, generateStaticFlexLayoutStyles, FLEX_SSR_SERIALIZER_FACTORY, SERVER_PROVIDERS, ServerMatchMedia as ɵa1 }; //# sourceMappingURL=server.js.map diff --git a/esm2015/server.js.map b/esm2015/server.js.map index 43e21c89b..eeaebb08e 100644 --- a/esm2015/server.js.map +++ b/esm2015/server.js.map @@ -1 +1 @@ -{"version":3,"file":"server.js","sources":["../../../src/lib/server/module.ts","../../../src/lib/server/server-provider.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {NgModule} from '@angular/core';\n\nimport {SERVER_PROVIDERS} from './server-provider';\n\n@NgModule({\n providers: [SERVER_PROVIDERS]\n})\nexport class FlexLayoutServerModule {}\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 {DOCUMENT} from '@angular/common';\nimport {BEFORE_APP_SERIALIZED} from '@angular/platform-server';\nimport {\n BREAKPOINTS,\n CLASS_NAME,\n SERVER_TOKEN,\n BreakPoint,\n MatchMedia,\n StylesheetMap,\n ServerMatchMedia,\n prioritySort,\n} from '@angular/flex-layout/core';\n\n\n/**\n * Activate all of the registered breakpoints in sequence, and then\n * retrieve the associated stylings from the virtual stylesheet\n * @param serverSheet the virtual stylesheet that stores styles for each\n * element\n * @param matchMedia the service to activate/deactivate breakpoints\n * @param breakpoints the registered breakpoints to activate/deactivate\n */\nexport function generateStaticFlexLayoutStyles(serverSheet: StylesheetMap,\n matchMedia: MatchMedia,\n breakpoints: BreakPoint[]) {\n // Store the custom classes in the following map, that way only\n // one class gets allocated per HTMLElement, and each class can\n // be referenced in the static media queries\n const classMap = new Map();\n\n // Get the initial stylings for all of the directives, and initialize\n // the fallback block of stylings, then reverse the breakpoints list\n // to traverse in the proper order\n const defaultStyles = new Map(serverSheet.stylesheet);\n let styleText = generateCss(defaultStyles, 'all', classMap);\n\n breakpoints.sort(prioritySort);\n breakpoints.reverse();\n breakpoints.forEach((bp, i) => {\n serverSheet.clearStyles();\n (matchMedia as ServerMatchMedia).activateBreakpoint(bp);\n const stylesheet = new Map(serverSheet.stylesheet);\n if (stylesheet.size > 0) {\n styleText += generateCss(stylesheet, bp.mediaQuery, classMap);\n }\n (matchMedia as ServerMatchMedia).deactivateBreakpoint(breakpoints[i]);\n });\n\n return styleText;\n}\n\n/**\n * Create a style tag populated with the dynamic stylings from Flex\n * components and attach it to the head of the DOM\n */\nexport function FLEX_SSR_SERIALIZER_FACTORY(serverSheet: StylesheetMap,\n matchMedia: MatchMedia,\n _document: Document,\n breakpoints: BreakPoint[]) {\n return () => {\n // This is the style tag that gets inserted into the head of the DOM,\n // populated with the manual media queries\n const styleTag = _document.createElement('style');\n const styleText = generateStaticFlexLayoutStyles(serverSheet, matchMedia, breakpoints);\n styleTag.classList.add(`${CLASS_NAME}ssr`);\n styleTag.textContent = styleText;\n _document.head!.appendChild(styleTag);\n };\n}\n\n/**\n * Provider to set static styles on the server\n */\nexport const SERVER_PROVIDERS = [\n {\n provide: void>>BEFORE_APP_SERIALIZED,\n useFactory: FLEX_SSR_SERIALIZER_FACTORY,\n deps: [\n StylesheetMap,\n MatchMedia,\n DOCUMENT,\n BREAKPOINTS,\n ],\n multi: true\n },\n {\n provide: SERVER_TOKEN,\n useValue: true\n },\n {\n provide: MatchMedia,\n useClass: ServerMatchMedia\n }\n];\n\n\nlet nextId = 0;\nconst IS_DEBUG_MODE = false;\n\nexport type StyleSheet = Map>;\nexport type ClassMap = Map;\n\n/**\n * create @media queries based on a virtual stylesheet\n * * Adds a unique class to each element and stores it\n * in a shared classMap for later reuse\n * @param stylesheet the virtual stylesheet that stores styles for each\n * element\n * @param mediaQuery the given @media CSS selector for the current breakpoint\n * @param classMap the map of HTML elements to class names to avoid duplications\n */\nfunction generateCss(stylesheet: StyleSheet, mediaQuery: string, classMap: ClassMap) {\n let css = '';\n stylesheet.forEach((styles, el) => {\n let keyVals = '', className = getClassName(el, classMap);\n\n styles.forEach((v, k) => {\n keyVals += v ? format(`${k}:${v};`) : '';\n });\n\n // Build list of CSS styles; each with a className\n css += format(`.${className} {`, keyVals, '}');\n });\n\n // Group 1 or more styles (each with className) in a specific mediaQuery\n return format(`@media ${mediaQuery} {`, css, '}');\n}\n\n/**\n * For debugging purposes, prefix css segment with linefeed(s) for easy\n * debugging purposes.\n */\nfunction format(...list: string[]): string {\n let result = '';\n list.forEach((css, i) => {\n result += IS_DEBUG_MODE ? formatSegment(css, i != 0) : css;\n });\n return result;\n}\n\nfunction formatSegment(css: string, asPrefix: boolean = true): string {\n return asPrefix ? '\\n' + css : css + '\\n';\n}\n\n/**\n * Get className associated with CSS styling\n * If not found, generate global className and set\n * association.\n */\nfunction getClassName(element: HTMLElement, classMap: Map) {\n let className = classMap.get(element);\n if (!className) {\n className = `${CLASS_NAME}${nextId++}`;\n classMap.set(element, className);\n }\n element.classList.add(className);\n\n return className;\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"server.js","sources":["../../../src/lib/server/module.ts","../../../src/lib/server/server-provider.ts","../../../src/lib/server/server-match-media.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {NgModule} from '@angular/core';\n\nimport {SERVER_PROVIDERS} from './server-provider';\n\n@NgModule({\n providers: [SERVER_PROVIDERS]\n})\nexport class FlexLayoutServerModule {}\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 {DOCUMENT} from '@angular/common';\nimport {BEFORE_APP_SERIALIZED} from '@angular/platform-server';\nimport {\n BREAKPOINTS,\n CLASS_NAME,\n SERVER_TOKEN,\n BreakPoint,\n ɵMatchMedia as MatchMedia,\n StylesheetMap,\n sortAscendingPriority,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n} from '@angular/flex-layout/core';\n\nimport {ServerMatchMedia} from './server-match-media';\n\n/**\n * Activate all of the registered breakpoints in sequence, and then\n * retrieve the associated stylings from the virtual stylesheet\n * @param serverSheet the virtual stylesheet that stores styles for each\n * element\n * @param mediaController the MatchMedia service to activate/deactivate breakpoints\n * @param breakpoints the registered breakpoints to activate/deactivate\n * @param layoutConfig the library config, and specifically the breakpoints to activate\n */\nexport function generateStaticFlexLayoutStyles(serverSheet: StylesheetMap,\n mediaController: ServerMatchMedia,\n breakpoints: BreakPoint[],\n layoutConfig: LayoutConfigOptions) {\n // Store the custom classes in the following map, that way only\n // one class gets allocated per HTMLElement, and each class can\n // be referenced in the static media queries\n const classMap = new Map();\n\n // Get the initial stylings for all of the directives,\n // and initialize the fallback block of stylings\n const defaultStyles = new Map(serverSheet.stylesheet);\n let styleText = generateCss(defaultStyles, 'all', classMap);\n\n [...breakpoints].sort(sortAscendingPriority).forEach((bp, i) => {\n serverSheet.clearStyles();\n mediaController.activateBreakpoint(bp);\n const stylesheet = new Map(serverSheet.stylesheet);\n if (stylesheet.size > 0) {\n styleText += generateCss(stylesheet, bp.mediaQuery, classMap);\n }\n mediaController.deactivateBreakpoint(breakpoints[i]);\n });\n\n const serverBps = layoutConfig.ssrObserveBreakpoints;\n if (serverBps) {\n serverBps\n .reduce((acc: BreakPoint[], serverBp: string) => {\n const foundBp = breakpoints.find(bp => serverBp === bp.alias);\n if (!foundBp) {\n console.warn(`FlexLayoutServerModule: unknown breakpoint alias \"${serverBp}\"`);\n } else {\n acc.push(foundBp);\n }\n return acc;\n }, [])\n .forEach(mediaController.activateBreakpoint);\n }\n\n return styleText;\n}\n\n/**\n * Create a style tag populated with the dynamic stylings from Flex\n * components and attach it to the head of the DOM\n */\nexport function FLEX_SSR_SERIALIZER_FACTORY(serverSheet: StylesheetMap,\n mediaController: ServerMatchMedia,\n _document: Document,\n breakpoints: BreakPoint[],\n layoutConfig: LayoutConfigOptions) {\n return () => {\n // This is the style tag that gets inserted into the head of the DOM,\n // populated with the manual media queries\n const styleTag = _document.createElement('style');\n const styleText = generateStaticFlexLayoutStyles(serverSheet, mediaController, breakpoints,\n layoutConfig);\n styleTag.classList.add(`${CLASS_NAME}ssr`);\n styleTag.textContent = styleText;\n _document.head!.appendChild(styleTag);\n };\n}\n\n/**\n * Provider to set static styles on the server\n */\nexport const SERVER_PROVIDERS = [\n {\n provide: void>>BEFORE_APP_SERIALIZED,\n useFactory: FLEX_SSR_SERIALIZER_FACTORY,\n deps: [\n StylesheetMap,\n MatchMedia,\n DOCUMENT,\n BREAKPOINTS,\n LAYOUT_CONFIG,\n ],\n multi: true\n },\n {\n provide: SERVER_TOKEN,\n useValue: true\n },\n {\n provide: MatchMedia,\n useClass: ServerMatchMedia\n }\n];\n\n\nlet nextId = 0;\nconst IS_DEBUG_MODE = false;\n\nexport type StyleSheet = Map>;\nexport type ClassMap = Map;\n\n/**\n * create @media queries based on a virtual stylesheet\n * * Adds a unique class to each element and stores it\n * in a shared classMap for later reuse\n * @param stylesheet the virtual stylesheet that stores styles for each\n * element\n * @param mediaQuery the given @media CSS selector for the current breakpoint\n * @param classMap the map of HTML elements to class names to avoid duplications\n */\nfunction generateCss(stylesheet: StyleSheet, mediaQuery: string, classMap: ClassMap) {\n let css = '';\n stylesheet.forEach((styles, el) => {\n let keyVals = '';\n let className = getClassName(el, classMap);\n\n styles.forEach((v, k) => {\n keyVals += v ? format(`${k}:${v};`) : '';\n });\n\n // Build list of CSS styles; each with a className\n css += format(`.${className} {`, keyVals, '}');\n });\n\n // Group 1 or more styles (each with className) in a specific mediaQuery\n return format(`@media ${mediaQuery} {`, css, '}');\n}\n\n/**\n * For debugging purposes, prefix css segment with linefeed(s) for easy\n * debugging purposes.\n */\nfunction format(...list: string[]): string {\n let result = '';\n list.forEach((css, i) => {\n result += IS_DEBUG_MODE ? formatSegment(css, i !== 0) : css;\n });\n return result;\n}\n\nfunction formatSegment(css: string, asPrefix: boolean = true): string {\n return asPrefix ? `\\n${css}` : `${css}\\n`;\n}\n\n/**\n * Get className associated with CSS styling\n * If not found, generate global className and set\n * association.\n */\nfunction getClassName(element: HTMLElement, classMap: Map) {\n let className = classMap.get(element);\n if (!className) {\n className = `${CLASS_NAME}${nextId++}`;\n classMap.set(element, className);\n }\n element.classList.add(className);\n\n return className;\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 {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable, NgZone, PLATFORM_ID} from '@angular/core';\nimport {BreakPoint, ɵMatchMedia as MatchMedia} from '@angular/flex-layout/core';\n\n/**\n * Special server-only class to simulate a MediaQueryList and\n * - supports manual activation to simulate mediaQuery matching\n * - manages listeners\n */\nexport class ServerMediaQueryList 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 * 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(): ServerMediaQueryList {\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(null, this);\n });\n }\n return this;\n }\n\n /** Notify all listeners that 'matches === false' */\n deactivate(): ServerMediaQueryList {\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(null, this);\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(null, this);\n }\n }\n\n /** Don't need to remove listeners in the server environment */\n removeListener(_: MediaQueryListListener | null) {\n }\n\n addEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | AddEventListenerOptions): void;\n addEventListener(_: string,\n __: EventListenerOrEventListenerObject,\n ___?: boolean | AddEventListenerOptions) {\n }\n\n removeEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | EventListenerOptions): void;\n removeEventListener(_: 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 * Special server-only implementation of MatchMedia that uses the above\n * ServerMediaQueryList as its internal representation\n *\n * Also contains methods to activate and deactivate breakpoints\n */\n@Injectable()\nexport class ServerMatchMedia extends MatchMedia {\n constructor(protected _zone: NgZone,\n @Inject(PLATFORM_ID) protected _platformId: Object,\n @Inject(DOCUMENT) protected _document: any) {\n super(_zone, _platformId, _document);\n }\n\n /** Activate the specified breakpoint if we're on the server, no-op otherwise */\n activateBreakpoint(bp: BreakPoint) {\n const lookupBreakpoint = this.registry.get(bp.mediaQuery) as ServerMediaQueryList;\n if (lookupBreakpoint) {\n lookupBreakpoint.activate();\n }\n }\n\n /** Deactivate the specified breakpoint if we're on the server, no-op otherwise */\n deactivateBreakpoint(bp: BreakPoint) {\n const lookupBreakpoint = this.registry.get(bp.mediaQuery) as ServerMediaQueryList;\n if (lookupBreakpoint) {\n lookupBreakpoint.deactivate();\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): ServerMediaQueryList {\n return new ServerMediaQueryList(query);\n }\n}\n\ntype MediaQueryListListener = ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null;\n"],"names":["MatchMedia"],"mappings":"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"} \ No newline at end of file diff --git a/esm5/core.es5.js b/esm5/core.es5.js index 153b57c41..b8dc2ced4 100644 --- a/esm5/core.es5.js +++ b/esm5/core.es5.js @@ -5,15 +5,15 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -import { APP_BOOTSTRAP_LISTENER, PLATFORM_ID, InjectionToken, inject, Injectable, Inject, NgModule, NgZone, SimpleChange, Optional, defineInjectable } from '@angular/core'; +import { APP_BOOTSTRAP_LISTENER, PLATFORM_ID, NgModule, Injectable, InjectionToken, Inject, inject, NgZone, Optional, ɵɵdefineInjectable, ɵɵinject } from '@angular/core'; import { DOCUMENT, isPlatformBrowser, isPlatformServer } from '@angular/common'; -import { BehaviorSubject, Subject, merge } from 'rxjs'; -import { filter, map } from 'rxjs/operators'; -import { __extends, __assign } from 'tslib'; +import { __assign, __extends } from 'tslib'; +import { Subject, BehaviorSubject, Observable, merge, asapScheduler, of, fromEvent } from 'rxjs'; +import { filter, debounceTime, map, switchMap, takeUntil, take, tap } from 'rxjs/operators'; /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * Find all of the server-generated stylings, if any, and remove them @@ -24,24 +24,36 @@ import { __extends, __assign } from 'tslib'; * @return {?} */ function removeStyles(_document, platformId) { - return function () { + return (/** + * @return {?} + */ + function () { if (isPlatformBrowser(platformId)) { /** @type {?} */ var elements = Array.from(_document.querySelectorAll("[class*=" + CLASS_NAME + "]")); + // RegExp constructor should only be used if passing a variable to the constructor. + // When using static regular expression it is more performant to use reg exp literal. + // This is also needed to provide Safari 9 compatibility, please see + // https://stackoverflow.com/questions/37919802 for more discussion. /** @type {?} */ var classRegex_1 = /\bflex-layout-.+?\b/g; - elements.forEach(function (el) { + elements.forEach((/** + * @param {?} el + * @return {?} + */ + function (el) { el.classList.contains(CLASS_NAME + "ssr") && el.parentNode ? el.parentNode.removeChild(el) : el.className.replace(classRegex_1, ''); - }); + })); } - }; + }); } -/** * +/** * Provider to remove SSR styles on the browser - @type {?} */ + * @type {?} + */ var BROWSER_PROVIDER = { - provide: /** @type {?} */ (APP_BOOTSTRAP_LISTENER), + provide: (/** @type {?} */ (APP_BOOTSTRAP_LISTENER)), useFactory: removeStyles, deps: [DOCUMENT, PLATFORM_ID], multi: true @@ -51,263 +63,169 @@ var CLASS_NAME = 'flex-layout-'; /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -/** @type {?} */ -var BREAKPOINT = new InjectionToken('Flex Layout token, collect all breakpoints into one provider', { - providedIn: 'root', - factory: function () { return null; } -}); - /** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * ***************************************************************** + * Define module for the MediaQuery API + * ***************************************************************** */ -/** @type {?} */ -var RESPONSIVE_ALIASES = [ - 'xs', 'gt-xs', 'sm', 'gt-sm', 'md', 'gt-md', 'lg', 'gt-lg', 'xl' -]; -/** @type {?} */ -var DEFAULT_BREAKPOINTS = [ - { - alias: 'xs', - mediaQuery: '(min-width: 0px) and (max-width: 599px)', - priority: 100, - }, - { - alias: 'gt-xs', - overlapping: true, - mediaQuery: '(min-width: 600px)', - priority: 7, - }, - { - alias: 'lt-sm', - overlapping: true, - mediaQuery: '(max-width: 599px)', - priority: 10, - }, - { - alias: 'sm', - mediaQuery: '(min-width: 600px) and (max-width: 959px)', - priority: 100, - }, - { - alias: 'gt-sm', - overlapping: true, - mediaQuery: '(min-width: 960px)', - priority: 8, - }, - { - alias: 'lt-md', - overlapping: true, - mediaQuery: '(max-width: 959px)', - priority: 9, - }, - { - alias: 'md', - mediaQuery: '(min-width: 960px) and (max-width: 1279px)', - priority: 100, - }, - { - alias: 'gt-md', - overlapping: true, - mediaQuery: '(min-width: 1280px)', - priority: 9, - }, - { - alias: 'lt-lg', - overlapping: true, - mediaQuery: '(max-width: 1279px)', - priority: 8, - }, - { - alias: 'lg', - mediaQuery: '(min-width: 1280px) and (max-width: 1919px)', - priority: 100, - }, - { - alias: 'gt-lg', - overlapping: true, - mediaQuery: '(min-width: 1920px)', - priority: 10, - }, - { - alias: 'lt-xl', - overlapping: true, - mediaQuery: '(max-width: 1919px)', - priority: 7, - }, - { - alias: 'xl', - mediaQuery: '(min-width: 1920px) and (max-width: 5000px)', - priority: 100, +var CoreModule = /** @class */ (function () { + function CoreModule() { } -]; + CoreModule.decorators = [ + { type: NgModule, args: [{ + providers: [BROWSER_PROVIDER] + },] }, + ]; + return CoreModule; +}()); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ - -/** @type {?} */ -var HANDSET_PORTRAIT = '(orientation: portrait) and (max-width: 599px)'; -/** @type {?} */ -var HANDSET_LANDSCAPE = '(orientation: landscape) and (max-width: 959px)'; -/** @type {?} */ -var TABLET_LANDSCAPE = '(orientation: landscape) and (min-width: 960px) and (max-width: 1279px)'; -/** @type {?} */ -var TABLET_PORTRAIT = '(orientation: portrait) and (min-width: 600px) and (max-width: 839px)'; -/** @type {?} */ -var WEB_PORTRAIT = '(orientation: portrait) and (min-width: 840px)'; -/** @type {?} */ -var WEB_LANDSCAPE = '(orientation: landscape) and (min-width: 1280px)'; -/** @type {?} */ -var ScreenTypes = { - 'HANDSET': HANDSET_PORTRAIT + ", " + HANDSET_LANDSCAPE, - 'TABLET': TABLET_PORTRAIT + " , " + TABLET_LANDSCAPE, - 'WEB': WEB_PORTRAIT + ", " + WEB_LANDSCAPE + " ", - 'HANDSET_PORTRAIT': "" + HANDSET_PORTRAIT, - 'TABLET_PORTRAIT': TABLET_PORTRAIT + " ", - 'WEB_PORTRAIT': "" + WEB_PORTRAIT, - 'HANDSET_LANDSCAPE': HANDSET_LANDSCAPE + "]", - 'TABLET_LANDSCAPE': "" + TABLET_LANDSCAPE, - 'WEB_LANDSCAPE': "" + WEB_LANDSCAPE -}; -/** * - * Extended Breakpoints for handset/tablets with landscape or portrait orientations - @type {?} */ -var ORIENTATION_BREAKPOINTS = [ - { 'alias': 'handset', 'mediaQuery': ScreenTypes.HANDSET }, - { 'alias': 'handset.landscape', 'mediaQuery': ScreenTypes.HANDSET_LANDSCAPE }, - { 'alias': 'handset.portrait', 'mediaQuery': ScreenTypes.HANDSET_PORTRAIT }, - { 'alias': 'tablet', 'mediaQuery': ScreenTypes.TABLET }, - { 'alias': 'tablet.landscape', 'mediaQuery': ScreenTypes.TABLET }, - { 'alias': 'tablet.portrait', 'mediaQuery': ScreenTypes.TABLET_PORTRAIT }, - { 'alias': 'web', 'mediaQuery': ScreenTypes.WEB, overlapping: true }, - { 'alias': 'web.landscape', 'mediaQuery': ScreenTypes.WEB_LANDSCAPE, overlapping: true }, - { 'alias': 'web.portrait', 'mediaQuery': ScreenTypes.WEB_PORTRAIT, overlapping: true } -]; +/** + * Class instances emitted [to observers] for each mql notification + */ +var /** + * Class instances emitted [to observers] for each mql notification + */ +MediaChange = /** @class */ (function () { + /** + * @param matches whether the mediaQuery is currently activated + * @param mediaQuery e.g. (min-width: 600px) and (max-width: 959px) + * @param mqAlias e.g. gt-sm, md, gt-lg + * @param suffix e.g. GtSM, Md, GtLg + * @param priority the priority of activation for the given breakpoint + */ + function MediaChange(matches, mediaQuery, mqAlias, suffix, priority) { + if (matches === void 0) { matches = false; } + if (mediaQuery === void 0) { mediaQuery = 'all'; } + if (mqAlias === void 0) { mqAlias = ''; } + if (suffix === void 0) { suffix = ''; } + if (priority === void 0) { priority = 0; } + this.matches = matches; + this.mediaQuery = mediaQuery; + this.mqAlias = mqAlias; + this.suffix = suffix; + this.priority = priority; + this.property = ''; + } + /** Create an exact copy of the MediaChange */ + /** + * Create an exact copy of the MediaChange + * @return {?} + */ + MediaChange.prototype.clone = /** + * Create an exact copy of the MediaChange + * @return {?} + */ + function () { + return new MediaChange(this.matches, this.mediaQuery, this.mqAlias, this.suffix); + }; + return MediaChange; +}()); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** - * Extends an object with the *enumerable* and *own* properties of one or more source objects, - * similar to Object.assign. + * Utility to emulate a CSS stylesheet * - * @param {?} dest The object which will have properties copied to it. - * @param {...?} sources The source objects from which properties will be copied. - * @return {?} + * This utility class stores all of the styles for a given HTML element + * as a readonly `stylesheet` map. */ -function extendObject(dest) { - var sources = []; - for (var _i = 1; _i < arguments.length; _i++) { - sources[_i - 1] = arguments[_i]; - } - if (dest == null) { - throw TypeError('Cannot convert undefined or null to object'); +var StylesheetMap = /** @class */ (function () { + function StylesheetMap() { + this.stylesheet = new Map(); } - for (var _a = 0, sources_1 = sources; _a < sources_1.length; _a++) { - var source = sources_1[_a]; - if (source != null) { - for (var key in source) { - if (source.hasOwnProperty(key)) { - dest[key] = source[key]; - } + /** + * Add an individual style to an HTML element + */ + /** + * Add an individual style to an HTML element + * @param {?} element + * @param {?} style + * @param {?} value + * @return {?} + */ + StylesheetMap.prototype.addStyleToElement = /** + * Add an individual style to an HTML element + * @param {?} element + * @param {?} style + * @param {?} value + * @return {?} + */ + function (element, style, value) { + /** @type {?} */ + var stylesheet = this.stylesheet.get(element); + if (stylesheet) { + stylesheet.set(style, value); + } + else { + this.stylesheet.set(element, new Map([[style, value]])); + } + }; + /** + * Clear the virtual stylesheet + */ + /** + * Clear the virtual stylesheet + * @return {?} + */ + StylesheetMap.prototype.clearStyles = /** + * Clear the virtual stylesheet + * @return {?} + */ + function () { + this.stylesheet.clear(); + }; + /** + * Retrieve a given style for an HTML element + */ + /** + * Retrieve a given style for an HTML element + * @param {?} el + * @param {?} styleName + * @return {?} + */ + StylesheetMap.prototype.getStyleForElement = /** + * Retrieve a given style for an HTML element + * @param {?} el + * @param {?} styleName + * @return {?} + */ + function (el, styleName) { + /** @type {?} */ + var styles = this.stylesheet.get(el); + /** @type {?} */ + var value = ''; + if (styles) { + /** @type {?} */ + var style = styles.get(styleName); + if (typeof style === 'number' || typeof style === 'string') { + value = style + ''; } } - } - return dest; -} + return value; + }; + StylesheetMap.decorators = [ + { type: Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ StylesheetMap.ngInjectableDef = ɵɵdefineInjectable({ factory: function StylesheetMap_Factory() { return new StylesheetMap(); }, token: StylesheetMap, providedIn: "root" }); + return StylesheetMap; +}()); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -/** @type {?} */ -var ALIAS_DELIMITERS = /(\.|-|_)/g; + /** - * @param {?} part - * @return {?} - */ -function firstUpperCase(part) { - /** @type {?} */ - var first = part.length > 0 ? part.charAt(0) : ''; - /** @type {?} */ - var remainder = (part.length > 1) ? part.slice(1) : ''; - return first.toUpperCase() + remainder; -} -/** - * Converts snake-case to SnakeCase. - * @param {?} name Text to UpperCamelCase - * @return {?} - */ -function camelCase(name) { - return name - .replace(ALIAS_DELIMITERS, '|') - .split('|') - .map(firstUpperCase) - .join(''); -} -/** - * For each breakpoint, ensure that a Suffix is defined; - * fallback to UpperCamelCase the unique Alias value - * @param {?} list - * @return {?} - */ -function validateSuffixes(list) { - list.forEach(function (bp) { - if (!bp.suffix) { - bp.suffix = camelCase(bp.alias); // create Suffix value based on alias - bp.overlapping = !!bp.overlapping; // ensure default value - } - }); - return list; -} -/** - * Merge a custom breakpoint list with the default list based on unique alias values - * - Items are added if the alias is not in the default list - * - Items are merged with the custom override if the alias exists in the default list - * @param {?} defaults - * @param {?=} custom - * @return {?} - */ -function mergeByAlias(defaults, custom) { - if (custom === void 0) { custom = []; } - /** @type {?} */ - var dict = {}; - defaults.forEach(function (bp) { - dict[bp.alias] = bp; - }); - // Merge custom breakpoints - custom.forEach(function (bp) { - if (dict[bp.alias]) { - extendObject(dict[bp.alias], bp); - } - else { - dict[bp.alias] = bp; - } - }); - return validateSuffixes(Object.keys(dict).map(function (k) { return dict[k]; })); -} -/** - * HOF to sort the breakpoints by priority - * @param {?} a - * @param {?} b - * @return {?} - */ -function prioritySort(a, b) { - /** @type {?} */ - var priorityA = a.priority || 0; - /** @type {?} */ - var priorityB = b.priority || 0; - return priorityB - priorityA; -} - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DEFAULT_CONFIG = { @@ -317,2236 +235,1242 @@ var DEFAULT_CONFIG = { disableVendorPrefixes: false, serverLoaded: false, useColumnBasisZero: true, + printWithBreakpoints: [], + mediaTriggerAutoRestore: true, + ssrObserveBreakpoints: [], }; /** @type {?} */ var LAYOUT_CONFIG = new InjectionToken('Flex Layout token, config options for the library', { providedIn: 'root', - factory: function () { return DEFAULT_CONFIG; } + factory: (/** + * @return {?} + */ + function () { return DEFAULT_CONFIG; }) }); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -/** * - * Injection token unique to the flex-layout library. - * Use this token when build a custom provider (see below). - @type {?} */ -var BREAKPOINTS = new InjectionToken('Token (@angular/flex-layout) Breakpoints', { +/** + * Token that is provided to tell whether the FlexLayoutServerModule + * has been included in the bundle + * + * NOTE: This can be manually provided to disable styles when using SSR + * @type {?} + */ +var SERVER_TOKEN = new InjectionToken('FlexLayoutServerLoaded', { providedIn: 'root', - factory: function () { - /** @type {?} */ - var breakpoints = inject(BREAKPOINT); - /** @type {?} */ - var layoutConfig = inject(LAYOUT_CONFIG); - /** @type {?} */ - var bpFlattenArray = [].concat.apply([], (breakpoints || []) - .map(function (v) { return Array.isArray(v) ? v : [v]; })); - /** @type {?} */ - var builtIns = (layoutConfig.disableDefaultBps ? [] : DEFAULT_BREAKPOINTS) - .concat(layoutConfig.addOrientationBps ? ORIENTATION_BREAKPOINTS : []); - return mergeByAlias(builtIns, bpFlattenArray); - } + factory: (/** + * @return {?} + */ + function () { return false; }) +}); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** @type {?} */ +var BREAKPOINT = new InjectionToken('Flex Layout token, collect all breakpoints into one provider', { + providedIn: 'root', + factory: (/** + * @return {?} + */ + function () { return null; }) }); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ + /** - * Registry of 1..n MediaQuery breakpoint ranges - * This is published as a provider and may be overridden from custom, application-specific ranges + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * For the specified MediaChange, make sure it contains the breakpoint alias + * and suffix (if available). + * @param {?} dest + * @param {?} source + * @return {?} + */ +function mergeAlias(dest, source) { + dest = dest ? dest.clone() : new MediaChange(); + if (source) { + dest.mqAlias = source.alias; + dest.mediaQuery = source.mediaQuery; + dest.suffix = (/** @type {?} */ (source.suffix)); + dest.priority = (/** @type {?} */ (source.priority)); + } + return dest; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @license + * Copyright Google LLC All Rights Reserved. * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + * @type {?} */ -var BreakPointRegistry = /** @class */ (function () { - function BreakPointRegistry(_registry) { - this._registry = _registry; +var INLINE = 'inline'; +/** @type {?} */ +var LAYOUT_VALUES = ['row', 'column', 'row-reverse', 'column-reverse']; +/** + * Validate the direction|'direction wrap' value and then update the host's inline flexbox styles + * @param {?} value + * @return {?} + */ +function buildLayoutCSS(value) { + var _a = validateValue(value), direction = _a[0], wrap = _a[1], isInline = _a[2]; + return buildCSS(direction, wrap, isInline); +} +/** + * Validate the value to be one of the acceptable value options + * Use default fallback of 'row' + * @param {?} value + * @return {?} + */ +function validateValue(value) { + value = value ? value.toLowerCase() : ''; + var _a = value.split(' '), direction = _a[0], wrap = _a[1], inline = _a[2]; + // First value must be the `flex-direction` + if (!LAYOUT_VALUES.find((/** + * @param {?} x + * @return {?} + */ + function (x) { return x === direction; }))) { + direction = LAYOUT_VALUES[0]; + } + if (wrap === INLINE) { + wrap = (inline !== INLINE) ? inline : ''; + inline = INLINE; + } + return [direction, validateWrapValue(wrap), !!inline]; +} +/** + * Convert layout-wrap='' to expected flex-wrap style + * @param {?} value + * @return {?} + */ +function validateWrapValue(value) { + if (!!value) { + switch (value.toLowerCase()) { + case 'reverse': + case 'wrap-reverse': + case 'reverse-wrap': + value = 'wrap-reverse'; + break; + case 'no': + case 'none': + case 'nowrap': + value = 'nowrap'; + break; + // All other values fallback to 'wrap' + default: + value = 'wrap'; + break; + } } - Object.defineProperty(BreakPointRegistry.prototype, "items", { + return value; +} +/** + * Build the CSS that should be assigned to the element instance + * BUG: + * 1) min-height on a column flex container won’t apply to its flex item children in IE 10-11. + * Use height instead if possible; height : vh; + * + * This way any padding or border specified on the child elements are + * laid out and drawn inside that element's specified width and height. + * @param {?} direction + * @param {?=} wrap + * @param {?=} inline + * @return {?} + */ +function buildCSS(direction, wrap, inline) { + if (wrap === void 0) { wrap = null; } + if (inline === void 0) { inline = false; } + return { + 'display': inline ? 'inline-flex' : 'flex', + 'box-sizing': 'border-box', + 'flex-direction': direction, + 'flex-wrap': !!wrap ? wrap : null + }; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * @abstract + */ +var /** + * @abstract + */ +BaseDirective2 = /** @class */ (function () { + function BaseDirective2(elementRef, styleBuilder, styler, marshal) { + this.elementRef = elementRef; + this.styleBuilder = styleBuilder; + this.styler = styler; + this.marshal = marshal; + this.DIRECTIVE_KEY = ''; + this.inputs = []; + /** + * The most recently used styles for the builder + */ + this.mru = {}; + this.destroySubject = new Subject(); /** - * Accessor to raw list + * Cache map for style computation */ + this.styleCache = new Map(); + } + Object.defineProperty(BaseDirective2.prototype, "parentElement", { + /** Access to host element's parent DOM node */ get: /** - * Accessor to raw list + * Access to host element's parent DOM node + * @protected * @return {?} */ function () { - return this._registry.slice(); + return this.elementRef.nativeElement.parentElement; }, enumerable: true, configurable: true }); - Object.defineProperty(BreakPointRegistry.prototype, "sortedItems", { - /** - * Accessor to sorted list used for registration with matchMedia API - * - * NOTE: During breakpoint registration, we want to register the overlaps FIRST - * so the non-overlaps will trigger the MatchMedia:BehaviorSubject last! - * And the largest, non-overlap, matching breakpoint should be the lastReplay value + Object.defineProperty(BaseDirective2.prototype, "nativeElement", { + /** Access to the HTMLElement for the directive */ + get: /** + * Access to the HTMLElement for the directive + * @protected + * @return {?} */ + function () { + return this.elementRef.nativeElement; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(BaseDirective2.prototype, "activatedValue", { + /** Access to the activated value for the directive */ get: /** - * Accessor to sorted list used for registration with matchMedia API - * - * NOTE: During breakpoint registration, we want to register the overlaps FIRST - * so the non-overlaps will trigger the MatchMedia:BehaviorSubject last! - * And the largest, non-overlap, matching breakpoint should be the lastReplay value + * Access to the activated value for the directive * @return {?} */ function () { - /** @type {?} */ - var overlaps = this._registry.filter(function (it) { return it.overlapping === true; }); - /** @type {?} */ - var nonOverlaps = this._registry.filter(function (it) { return it.overlapping !== true; }); - return overlaps.concat(nonOverlaps); + return this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY); + }, + set: /** + * @param {?} value + * @return {?} + */ + function (value) { + this.marshal.setValue(this.nativeElement, this.DIRECTIVE_KEY, value, this.marshal.activatedAlias); }, enumerable: true, configurable: true }); + /** For @Input changes */ /** - * Search breakpoints by alias (e.g. gt-xs) - */ - /** - * Search breakpoints by alias (e.g. gt-xs) - * @param {?} alias + * For \@Input changes + * @param {?} changes * @return {?} */ - BreakPointRegistry.prototype.findByAlias = /** - * Search breakpoints by alias (e.g. gt-xs) - * @param {?} alias + BaseDirective2.prototype.ngOnChanges = /** + * For \@Input changes + * @param {?} changes * @return {?} */ - function (alias) { - return this._registry.find(function (bp) { return bp.alias == alias; }) || null; + function (changes) { + var _this = this; + Object.keys(changes).forEach((/** + * @param {?} key + * @return {?} + */ + function (key) { + if (_this.inputs.indexOf(key) !== -1) { + /** @type {?} */ + var bp = key.split('.').slice(1).join('.'); + /** @type {?} */ + var val = changes[key].currentValue; + _this.setValue(val, bp); + } + })); }; /** - * @param {?} query * @return {?} */ - BreakPointRegistry.prototype.findByQuery = /** - * @param {?} query + BaseDirective2.prototype.ngOnDestroy = /** * @return {?} */ - function (query) { - return this._registry.find(function (bp) { return bp.mediaQuery == query; }) || null; + function () { + this.destroySubject.next(); + this.destroySubject.complete(); + this.marshal.releaseElement(this.nativeElement); }; - Object.defineProperty(BreakPointRegistry.prototype, "overlappings", { - /** - * Get all the breakpoints whose ranges could overlapping `normal` ranges; - * e.g. gt-sm overlaps md, lg, and xl - */ - get: /** - * Get all the breakpoints whose ranges could overlapping `normal` ranges; - * e.g. gt-sm overlaps md, lg, and xl - * @return {?} - */ - function () { - return this._registry.filter(function (it) { return it.overlapping == true; }); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(BreakPointRegistry.prototype, "aliases", { - /** - * Get list of all registered (non-empty) breakpoint aliases - */ - get: /** - * Get list of all registered (non-empty) breakpoint aliases - * @return {?} - */ - function () { - return this._registry.map(function (it) { return it.alias; }); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(BreakPointRegistry.prototype, "suffixes", { - /** - * Aliases are mapped to properties using suffixes - * e.g. 'gt-sm' for property 'layout' uses suffix 'GtSm' - * for property layoutGtSM. - */ - get: /** - * Aliases are mapped to properties using suffixes - * e.g. 'gt-sm' for property 'layout' uses suffix 'GtSm' - * for property layoutGtSM. - * @return {?} - */ - function () { - return this._registry.map(function (it) { return !!it.suffix ? it.suffix : ''; }); - }, - enumerable: true, - configurable: true - }); - BreakPointRegistry.decorators = [ - { type: Injectable, args: [{ providedIn: 'root' },] }, - ]; - /** @nocollapse */ - BreakPointRegistry.ctorParameters = function () { return [ - { type: Array, decorators: [{ type: Inject, args: [BREAKPOINTS,] }] } - ]; }; - /** @nocollapse */ BreakPointRegistry.ngInjectableDef = defineInjectable({ factory: function BreakPointRegistry_Factory() { return new BreakPointRegistry(inject(BREAKPOINTS)); }, token: BreakPointRegistry, providedIn: "root" }); - return BreakPointRegistry; -}()); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * Class instances emitted [to observers] for each mql notification - */ -var /** - * Class instances emitted [to observers] for each mql notification - */ -MediaChange = /** @class */ (function () { + /** Register with central marshaller service */ /** - * @param matches whether the mediaQuery is currently activated - * @param mediaQuery e.g. (min-width: 600px) and (max-width: 959px) - * @param mqAlias e.g. gt-sm, md, gt-lg - * @param suffix e.g. GtSM, Md, GtLg + * Register with central marshaller service + * @protected + * @param {?=} extraTriggers + * @return {?} */ - function MediaChange(matches, mediaQuery, mqAlias, suffix) { - if (matches === void 0) { matches = false; } - if (mediaQuery === void 0) { mediaQuery = 'all'; } - if (mqAlias === void 0) { mqAlias = ''; } - if (suffix === void 0) { suffix = ''; } - this.matches = matches; - this.mediaQuery = mediaQuery; - this.mqAlias = mqAlias; - this.suffix = suffix; - this.property = ''; - } - /** Create an exact copy of the MediaChange */ + BaseDirective2.prototype.init = /** + * Register with central marshaller service + * @protected + * @param {?=} extraTriggers + * @return {?} + */ + function (extraTriggers) { + if (extraTriggers === void 0) { extraTriggers = []; } + this.marshal.init(this.elementRef.nativeElement, this.DIRECTIVE_KEY, this.updateWithValue.bind(this), this.clearStyles.bind(this), extraTriggers); + }; + /** Add styles to the element using predefined style builder */ /** - * Create an exact copy of the MediaChange + * Add styles to the element using predefined style builder + * @protected + * @param {?} input + * @param {?=} parent * @return {?} */ - MediaChange.prototype.clone = /** - * Create an exact copy of the MediaChange + BaseDirective2.prototype.addStyles = /** + * Add styles to the element using predefined style builder + * @protected + * @param {?} input + * @param {?=} parent * @return {?} */ - function () { - return new MediaChange(this.matches, this.mediaQuery, this.mqAlias, this.suffix); + function (input, parent) { + /** @type {?} */ + var builder = this.styleBuilder; + /** @type {?} */ + var useCache = builder.shouldCache; + /** @type {?} */ + var genStyles = this.styleCache.get(input); + if (!genStyles || !useCache) { + genStyles = builder.buildStyles(input, parent); + if (useCache) { + this.styleCache.set(input, genStyles); + } + } + this.mru = __assign({}, genStyles); + this.applyStyleToElement(genStyles); + builder.sideEffect(input, genStyles, parent); }; - return MediaChange; -}()); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * MediaMonitor configures listeners to mediaQuery changes and publishes an Observable facade to - * convert mediaQuery change callbacks to subscriber notifications. These notifications will be - * performed within the ng Zone to trigger change detections and component updates. - * - * NOTE: both mediaQuery activations and de-activations are announced in notifications - */ -var MatchMedia = /** @class */ (function () { - function MatchMedia(_zone, _platformId, _document) { - this._zone = _zone; - this._platformId = _platformId; - this._document = _document; - this._registry = new Map(); - this._source = new BehaviorSubject(new MediaChange(true)); - this._observable$ = this._source.asObservable(); - } + /** Remove generated styles from an element using predefined style builder */ /** - * For the specified mediaQuery? + * Remove generated styles from an element using predefined style builder + * @protected + * @return {?} + */ + BaseDirective2.prototype.clearStyles = /** + * Remove generated styles from an element using predefined style builder + * @protected + * @return {?} */ + function () { + var _this = this; + Object.keys(this.mru).forEach((/** + * @param {?} k + * @return {?} + */ + function (k) { + _this.mru[k] = ''; + })); + this.applyStyleToElement(this.mru); + this.mru = {}; + }; + /** Force trigger style updates on DOM element */ /** - * For the specified mediaQuery? - * @param {?} mediaQuery + * Force trigger style updates on DOM element + * @protected * @return {?} */ - MatchMedia.prototype.isActive = /** - * For the specified mediaQuery? - * @param {?} mediaQuery + BaseDirective2.prototype.triggerUpdate = /** + * Force trigger style updates on DOM element + * @protected * @return {?} */ - function (mediaQuery) { - /** @type {?} */ - var mql = this._registry.get(mediaQuery); - return !!mql ? mql.matches : false; + function () { + this.marshal.triggerUpdate(this.nativeElement, this.DIRECTIVE_KEY); }; /** - * External observers can watch for all (or a specific) mql changes. - * Typically used by the MediaQueryAdaptor; optionally available to components - * who wish to use the MediaMonitor as mediaMonitor$ observable service. + * Determine the DOM element's Flexbox flow (flex-direction). * - * NOTE: if a mediaQuery is not specified, then ALL mediaQuery activations will - * be announced. + * Check inline style first then check computed (stylesheet) style. + * And optionally add the flow value to element's inline style. */ /** - * External observers can watch for all (or a specific) mql changes. - * Typically used by the MediaQueryAdaptor; optionally available to components - * who wish to use the MediaMonitor as mediaMonitor$ observable service. + * Determine the DOM element's Flexbox flow (flex-direction). * - * NOTE: if a mediaQuery is not specified, then ALL mediaQuery activations will - * be announced. - * @param {?=} mediaQuery + * Check inline style first then check computed (stylesheet) style. + * And optionally add the flow value to element's inline style. + * @protected + * @param {?} target + * @param {?=} addIfMissing * @return {?} */ - MatchMedia.prototype.observe = /** - * External observers can watch for all (or a specific) mql changes. - * Typically used by the MediaQueryAdaptor; optionally available to components - * who wish to use the MediaMonitor as mediaMonitor$ observable service. + BaseDirective2.prototype.getFlexFlowDirection = /** + * Determine the DOM element's Flexbox flow (flex-direction). * - * NOTE: if a mediaQuery is not specified, then ALL mediaQuery activations will - * be announced. - * @param {?=} mediaQuery + * Check inline style first then check computed (stylesheet) style. + * And optionally add the flow value to element's inline style. + * @protected + * @param {?} target + * @param {?=} addIfMissing * @return {?} */ - function (mediaQuery) { - if (mediaQuery) { - this.registerQuery(mediaQuery); + function (target, addIfMissing) { + if (addIfMissing === void 0) { addIfMissing = false; } + if (target) { + var _a = this.styler.getFlowDirection(target), value = _a[0], hasInlineValue = _a[1]; + if (!hasInlineValue && addIfMissing) { + /** @type {?} */ + var style = buildLayoutCSS(value); + /** @type {?} */ + var elements = [target]; + this.styler.applyStyleToElements(style, elements); + } + return value.trim(); } - return this._observable$.pipe(filter(function (change) { return (mediaQuery ? (change.mediaQuery === mediaQuery) : true); })); + return 'row'; }; + /** Applies styles given via string pair or object map to the directive element */ /** - * Based on the BreakPointRegistry provider, register internal listeners for each unique - * mediaQuery. Each listener emits specific MediaChange data to observers - */ - /** - * Based on the BreakPointRegistry provider, register internal listeners for each unique - * mediaQuery. Each listener emits specific MediaChange data to observers - * @param {?} mediaQuery + * Applies styles given via string pair or object map to the directive element + * @protected + * @param {?} style + * @param {?=} value + * @param {?=} element * @return {?} */ - MatchMedia.prototype.registerQuery = /** - * Based on the BreakPointRegistry provider, register internal listeners for each unique - * mediaQuery. Each listener emits specific MediaChange data to observers - * @param {?} mediaQuery + BaseDirective2.prototype.applyStyleToElement = /** + * Applies styles given via string pair or object map to the directive element + * @protected + * @param {?} style + * @param {?=} value + * @param {?=} element * @return {?} */ - function (mediaQuery) { - var _this = this; - /** @type {?} */ - var list = Array.isArray(mediaQuery) ? Array.from(new Set(mediaQuery)) : [mediaQuery]; - if (list.length > 0) { - buildQueryCss(list, this._document); - } - list.forEach(function (query) { - /** @type {?} */ - var onMQLEvent = function (e) { - _this._zone.run(function () { return _this._source.next(new MediaChange(e.matches, query)); }); - }; - /** @type {?} */ - var mql = _this._registry.get(query); - if (!mql) { - if (query === 'print') { - // If we are listening for a print media query we need to add a `beforeprint` event listener to trigger the `mql` synchronously. - // Regular matchMedia events are not synchronous and do not have time to update the layout before the print dialog shows and takes a snapshot. - // Workaround for #869 - // This requires explicit use of `fxLayout.print` to racing between size based layouts. We don't know the size of prints - // before hand so you must use a single layout for printing. - window.addEventListener('beforeprint', function () { - onMQLEvent(/** @type {?} */ ({ - mediaQuery: query, - matches: true, - })); - }); - } - mql = _this._buildMQL(query); - mql.addListener(onMQLEvent); - _this._registry.set(query, mql); - } - if (mql.matches) { - onMQLEvent(/** @type {?} */ ((mql))); - } - }); + function (style, value, element) { + if (element === void 0) { element = this.nativeElement; } + this.styler.applyStyleToElement(element, style, value); }; /** - * Call window.matchMedia() to build a MediaQueryList; which - * supports 0..n listeners for activation/deactivation + * @protected + * @param {?} val + * @param {?} bp + * @return {?} + */ + BaseDirective2.prototype.setValue = /** + * @protected + * @param {?} val + * @param {?} bp + * @return {?} */ + function (val, bp) { + this.marshal.setValue(this.nativeElement, this.DIRECTIVE_KEY, val, bp); + }; /** - * Call window.matchMedia() to build a MediaQueryList; which - * supports 0..n listeners for activation/deactivation - * @param {?} query + * @protected + * @param {?} input * @return {?} */ - MatchMedia.prototype._buildMQL = /** - * Call window.matchMedia() to build a MediaQueryList; which - * supports 0..n listeners for activation/deactivation - * @param {?} query + BaseDirective2.prototype.updateWithValue = /** + * @protected + * @param {?} input * @return {?} */ - function (query) { - return constructMql(query, isPlatformBrowser(this._platformId)); + function (input) { + this.addStyles(input); }; - MatchMedia.decorators = [ - { type: Injectable, args: [{ providedIn: 'root' },] }, - ]; - /** @nocollapse */ - MatchMedia.ctorParameters = function () { return [ - { type: NgZone }, - { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }, - { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] } - ]; }; - /** @nocollapse */ MatchMedia.ngInjectableDef = defineInjectable({ factory: function MatchMedia_Factory() { return new MatchMedia(inject(NgZone), inject(PLATFORM_ID), inject(DOCUMENT)); }, token: MatchMedia, providedIn: "root" }); - return MatchMedia; + return BaseDirective2; }()); -/** * - * Private global registry for all dynamically-created, injected style tags - * @see prepare(query) - @type {?} */ -var ALL_STYLES = {}; + /** - * For Webkit engines that only trigger the MediaQueryList Listener - * when there is at least one CSS selector for the respective media query. - * - * @param {?} mediaQueries - * @param {?} _document - * @return {?} + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -function buildQueryCss(mediaQueries, _document) { - /** @type {?} */ - var list = mediaQueries.filter(function (it) { return !ALL_STYLES[it]; }); - if (list.length > 0) { - /** @type {?} */ - var query = list.join(', '); - try { - /** @type {?} */ - var styleEl_1 = _document.createElement('style'); - styleEl_1.setAttribute('type', 'text/css'); - if (!(/** @type {?} */ (styleEl_1)).styleSheet) { - /** @type {?} */ - var 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"; - styleEl_1.appendChild(_document.createTextNode(cssText)); - } /** @type {?} */ - ((_document.head)).appendChild(styleEl_1); - // Store in private global registry - list.forEach(function (mq) { return ALL_STYLES[mq] = styleEl_1; }); - } - catch (e) { - console.error(e); - } - } -} + /** - * @param {?} query - * @param {?} isBrowser - * @return {?} + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -function constructMql(query, isBrowser) { - /** @type {?} */ - var canListen = isBrowser && !!(/** @type {?} */ (window)).matchMedia('all').addListener; - return canListen ? (/** @type {?} */ (window)).matchMedia(query) : /** @type {?} */ (({ - matches: query === 'all' || query === '', - media: query, - addListener: function () { - }, - removeListener: function () { - } - })); -} +/** + * NOTE: Smaller ranges have HIGHER priority since the match is more specific + * @type {?} + */ +var DEFAULT_BREAKPOINTS = [ + { + alias: 'xs', + mediaQuery: 'screen and (min-width: 0px) and (max-width: 599.9px)', + priority: 1000, + }, + { + alias: 'sm', + mediaQuery: 'screen and (min-width: 600px) and (max-width: 959.9px)', + priority: 900, + }, + { + alias: 'md', + mediaQuery: 'screen and (min-width: 960px) and (max-width: 1279.9px)', + priority: 800, + }, + { + alias: 'lg', + mediaQuery: 'screen and (min-width: 1280px) and (max-width: 1919.9px)', + priority: 700, + }, + { + alias: 'xl', + mediaQuery: 'screen and (min-width: 1920px) and (max-width: 4999.9px)', + priority: 600, + }, + { + alias: 'lt-sm', + overlapping: true, + mediaQuery: 'screen and (max-width: 599.9px)', + priority: 950, + }, + { + alias: 'lt-md', + overlapping: true, + mediaQuery: 'screen and (max-width: 959.9px)', + priority: 850, + }, + { + alias: 'lt-lg', + overlapping: true, + mediaQuery: 'screen and (max-width: 1279.9px)', + priority: 750, + }, + { + alias: 'lt-xl', + overlapping: true, + priority: 650, + mediaQuery: 'screen and (max-width: 1919.9px)', + }, + { + alias: 'gt-xs', + overlapping: true, + mediaQuery: 'screen and (min-width: 600px)', + priority: -950, + }, + { + alias: 'gt-sm', + overlapping: true, + mediaQuery: 'screen and (min-width: 960px)', + priority: -850, + }, { + alias: 'gt-md', + overlapping: true, + mediaQuery: 'screen and (min-width: 1280px)', + priority: -750, + }, + { + alias: 'gt-lg', + overlapping: true, + mediaQuery: 'screen and (min-width: 1920px)', + priority: -650, + } +]; /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ + +/* tslint:disable */ +/** @type {?} */ +var HANDSET_PORTRAIT = '(orientation: portrait) and (max-width: 599.9px)'; +/** @type {?} */ +var HANDSET_LANDSCAPE = '(orientation: landscape) and (max-width: 959.9px)'; +/** @type {?} */ +var TABLET_PORTRAIT = '(orientation: portrait) and (min-width: 600px) and (max-width: 839.9px)'; +/** @type {?} */ +var TABLET_LANDSCAPE = '(orientation: landscape) and (min-width: 960px) and (max-width: 1279.9px)'; +/** @type {?} */ +var WEB_PORTRAIT = '(orientation: portrait) and (min-width: 840px)'; +/** @type {?} */ +var WEB_LANDSCAPE = '(orientation: landscape) and (min-width: 1280px)'; +/** @type {?} */ +var ScreenTypes = { + 'HANDSET': HANDSET_PORTRAIT + ", " + HANDSET_LANDSCAPE, + 'TABLET': TABLET_PORTRAIT + " , " + TABLET_LANDSCAPE, + 'WEB': WEB_PORTRAIT + ", " + WEB_LANDSCAPE + " ", + 'HANDSET_PORTRAIT': "" + HANDSET_PORTRAIT, + 'TABLET_PORTRAIT': TABLET_PORTRAIT + " ", + 'WEB_PORTRAIT': "" + WEB_PORTRAIT, + 'HANDSET_LANDSCAPE': HANDSET_LANDSCAPE + "]", + 'TABLET_LANDSCAPE': "" + TABLET_LANDSCAPE, + 'WEB_LANDSCAPE': "" + WEB_LANDSCAPE +}; /** - * For the specified MediaChange, make sure it contains the breakpoint alias - * and suffix (if available). - * @param {?} dest - * @param {?} source - * @return {?} + * Extended Breakpoints for handset/tablets with landscape or portrait orientations + * @type {?} */ -function mergeAlias(dest, source) { - return extendObject(dest, source ? { - mqAlias: source.alias, - suffix: source.suffix - } : {}); -} +var ORIENTATION_BREAKPOINTS = [ + { 'alias': 'handset', priority: 2000, 'mediaQuery': ScreenTypes.HANDSET }, + { 'alias': 'handset.landscape', priority: 2000, 'mediaQuery': ScreenTypes.HANDSET_LANDSCAPE }, + { 'alias': 'handset.portrait', priority: 2000, 'mediaQuery': ScreenTypes.HANDSET_PORTRAIT }, + { 'alias': 'tablet', priority: 2100, 'mediaQuery': ScreenTypes.TABLET }, + { 'alias': 'tablet.landscape', priority: 2100, 'mediaQuery': ScreenTypes.TABLET }, + { 'alias': 'tablet.portrait', priority: 2100, 'mediaQuery': ScreenTypes.TABLET_PORTRAIT }, + { 'alias': 'web', priority: 2200, 'mediaQuery': ScreenTypes.WEB, overlapping: true }, + { 'alias': 'web.landscape', priority: 2200, 'mediaQuery': ScreenTypes.WEB_LANDSCAPE, overlapping: true }, + { 'alias': 'web.portrait', priority: 2200, 'mediaQuery': ScreenTypes.WEB_PORTRAIT, overlapping: true } +]; /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ + /** - * Base class for MediaService and pseudo-token for - * @deprecated use MediaObserver instead - * \@deletion-target v7.0.0-beta.21 - * @abstract - */ -var /** - * Base class for MediaService and pseudo-token for - * @deprecated use MediaObserver instead - * \@deletion-target v7.0.0-beta.21 - * @abstract + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -ObservableMedia = /** @class */ (function () { - function ObservableMedia() { - } - return ObservableMedia; -}()); + /** - * Class internalizes a MatchMedia service and exposes an Subscribable and Observable interface. - * This an Observable with that exposes a feature to subscribe to mediaQuery - * changes and a validator method (`isActive()`) to test if a mediaQuery (or alias) is - * currently active. - * - * !! Only mediaChange activations (not de-activations) are announced by the ObservableMedia - * - * This class uses the BreakPoint Registry to inject alias information into the raw MediaChange - * notification. For custom mediaQuery notifications, alias information will not be injected and - * those fields will be ''. - * - * !! This is not an actual Observable. It is a wrapper of an Observable used to publish additional - * methods like `isActive(). To access the Observable and use RxJS operators, use - * `.asObservable()` with syntax like media.asObservable().map(....). - * - * \@usage - * - * // RxJS - * import {filter} from 'rxjs/operators/filter'; - * import { ObservableMedia } from '\@angular/flex-layout'; - * - * \@Component({ ... }) - * export class AppComponent { - * status : string = ''; - * - * constructor( media:ObservableMedia ) { - * let onChange = (change:MediaChange) => { - * this.status = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : ''; - * }; - * - * // Subscribe directly or access observable to use filter/map operators - * // e.g. - * // media.subscribe(onChange); + * Extends an object with the *enumerable* and *own* properties of one or more source objects, + * similar to Object.assign. * - * media.asObservable() - * .pipe( - * filter((change:MediaChange) => true) // silly noop filter - * ).subscribe(onChange); - * } - * } - * @deprecated use MediaObserver instead - * \@deletion-target v7.0.0-beta.21 + * @param {?} dest The object which will have properties copied to it. + * @param {...?} sources The source objects from which properties will be copied. + * @return {?} */ -var MediaService = /** @class */ (function () { - function MediaService(breakpoints, mediaWatcher) { - this.breakpoints = breakpoints; - this.mediaWatcher = mediaWatcher; - /** - * Should we announce gt- breakpoint activations ? - */ - this.filterOverlaps = true; - this._registerBreakPoints(); - this.observable$ = this._buildObservable(); +function extendObject(dest) { + var sources = []; + for (var _i = 1; _i < arguments.length; _i++) { + sources[_i - 1] = arguments[_i]; } - /** - * Test if specified query/alias is active. - */ - /** - * Test if specified query/alias is active. - * @param {?} alias - * @return {?} - */ - MediaService.prototype.isActive = /** - * Test if specified query/alias is active. - * @param {?} alias - * @return {?} - */ - function (alias) { - return this.mediaWatcher.isActive(this._toMediaQuery(alias)); - }; - /** - * Proxy to the Observable subscribe method - */ - /** - * Proxy to the Observable subscribe method - * @param {?=} observerOrNext - * @param {?=} error - * @param {?=} complete - * @return {?} - */ - MediaService.prototype.subscribe = /** - * Proxy to the Observable subscribe method - * @param {?=} observerOrNext - * @param {?=} error - * @param {?=} complete - * @return {?} - */ - function (observerOrNext, error, complete) { - if (observerOrNext) { - if (typeof observerOrNext === 'object') { - return this.observable$.subscribe(observerOrNext.next, observerOrNext.error, observerOrNext.complete); + if (dest == null) { + throw TypeError('Cannot convert undefined or null to object'); + } + for (var _a = 0, sources_1 = sources; _a < sources_1.length; _a++) { + var source = sources_1[_a]; + if (source != null) { + for (var key in source) { + if (source.hasOwnProperty(key)) { + dest[key] = source[key]; + } } } - return this.observable$.subscribe(observerOrNext, error, complete); - }; - /** - * Access to observable for use with operators like - * .filter(), .map(), etc. - */ - /** - * Access to observable for use with operators like - * .filter(), .map(), etc. - * @return {?} - */ - MediaService.prototype.asObservable = /** - * Access to observable for use with operators like - * .filter(), .map(), etc. - * @return {?} - */ - function () { - return this.observable$; - }; - /** - * Register all the mediaQueries registered in the BreakPointRegistry - * This is needed so subscribers can be auto-notified of all standard, registered - * mediaQuery activations - * @return {?} - */ - MediaService.prototype._registerBreakPoints = /** - * Register all the mediaQueries registered in the BreakPointRegistry - * This is needed so subscribers can be auto-notified of all standard, registered - * mediaQuery activations - * @return {?} - */ - function () { - /** @type {?} */ - var queries = this.breakpoints.sortedItems.map(function (bp) { return bp.mediaQuery; }); - this.mediaWatcher.registerQuery(queries); - }; - /** - * Prepare internal observable - * - * NOTE: the raw MediaChange events [from MatchMedia] do not - * contain important alias information; as such this info - * must be injected into the MediaChange - * @return {?} - */ - MediaService.prototype._buildObservable = /** - * Prepare internal observable - * - * NOTE: the raw MediaChange events [from MatchMedia] do not - * contain important alias information; as such this info - * must be injected into the MediaChange - * @return {?} - */ - function () { - var _this = this; - /** @type {?} */ - var excludeOverlaps = function (change) { - /** @type {?} */ - var bp = _this.breakpoints.findByQuery(change.mediaQuery); - return !bp ? true : !(_this.filterOverlaps && bp.overlapping); - }; - /** - * Only pass/announce activations (not de-activations) - * Inject associated (if any) alias information into the MediaChange event - * Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only - */ - return this.mediaWatcher.observe().pipe(filter(function (change) { return change.matches; }), filter(excludeOverlaps), map(function (change) { - return mergeAlias(change, _this._findByQuery(change.mediaQuery)); - })); - }; - /** - * Breakpoint locator by alias - * @param {?} alias - * @return {?} - */ - MediaService.prototype._findByAlias = /** - * Breakpoint locator by alias - * @param {?} alias - * @return {?} - */ - function (alias) { - return this.breakpoints.findByAlias(alias); - }; - /** - * Breakpoint locator by mediaQuery - * @param {?} query - * @return {?} - */ - MediaService.prototype._findByQuery = /** - * Breakpoint locator by mediaQuery - * @param {?} query - * @return {?} - */ - function (query) { - return this.breakpoints.findByQuery(query); - }; - /** - * Find associated breakpoint (if any) - * @param {?} query - * @return {?} - */ - MediaService.prototype._toMediaQuery = /** - * Find associated breakpoint (if any) - * @param {?} query - * @return {?} - */ - function (query) { - /** @type {?} */ - var bp = this._findByAlias(query) || this._findByQuery(query); - return bp ? bp.mediaQuery : query; - }; - MediaService.decorators = [ - { type: Injectable, args: [{ providedIn: 'root' },] }, - ]; - /** @nocollapse */ - MediaService.ctorParameters = function () { return [ - { type: BreakPointRegistry }, - { type: MatchMedia } - ]; }; - /** @nocollapse */ MediaService.ngInjectableDef = defineInjectable({ factory: function MediaService_Factory() { return new MediaService(inject(BreakPointRegistry), inject(MatchMedia)); }, token: MediaService, providedIn: "root" }); - return MediaService; -}()); -/** * - * @deprecated - * \@deletion-target v7.0.0-beta.21 - @type {?} */ -var ObservableMediaProvider = { - // tslint:disable-line:variable-name - provide: ObservableMedia, - useClass: MediaService -}; - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * ***************************************************************** - * Define module for the MediaQuery API - * ***************************************************************** - */ -var CoreModule = /** @class */ (function () { - function CoreModule() { - } - CoreModule.decorators = [ - { type: NgModule, args: [{ - providers: [BROWSER_PROVIDER, ObservableMediaProvider] - },] }, - ]; - return CoreModule; -}()); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * Utility to emulate a CSS stylesheet - * - * This utility class stores all of the styles for a given HTML element - * as a readonly `stylesheet` map. - */ -var StylesheetMap = /** @class */ (function () { - function StylesheetMap() { - this.stylesheet = new Map(); } - /** - * Add an individual style to an HTML element - */ - /** - * Add an individual style to an HTML element - * @param {?} element - * @param {?} style - * @param {?} value - * @return {?} - */ - StylesheetMap.prototype.addStyleToElement = /** - * Add an individual style to an HTML element - * @param {?} element - * @param {?} style - * @param {?} value - * @return {?} - */ - function (element, style, value) { - /** @type {?} */ - var stylesheet = this.stylesheet.get(element); - if (stylesheet) { - stylesheet.set(style, value); - } - else { - this.stylesheet.set(element, new Map([[style, value]])); - } - }; - /** - * Clear the virtual stylesheet - */ - /** - * Clear the virtual stylesheet - * @return {?} - */ - StylesheetMap.prototype.clearStyles = /** - * Clear the virtual stylesheet - * @return {?} - */ - function () { - this.stylesheet.clear(); - }; - /** - * Retrieve a given style for an HTML element - */ - /** - * Retrieve a given style for an HTML element - * @param {?} el - * @param {?} styleName - * @return {?} - */ - StylesheetMap.prototype.getStyleForElement = /** - * Retrieve a given style for an HTML element - * @param {?} el - * @param {?} styleName - * @return {?} - */ - function (el, styleName) { - /** @type {?} */ - var styles = this.stylesheet.get(el); - /** @type {?} */ - var value = ''; - if (styles) { - /** @type {?} */ - var style = styles.get(styleName); - if (typeof style === 'number' || typeof style === 'string') { - value = style + ''; - } - } - return value; - }; - StylesheetMap.decorators = [ - { type: Injectable, args: [{ providedIn: 'root' },] }, - ]; - /** @nocollapse */ StylesheetMap.ngInjectableDef = defineInjectable({ factory: function StylesheetMap_Factory() { return new StylesheetMap(); }, token: StylesheetMap, providedIn: "root" }); - return StylesheetMap; -}()); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** * - * Token that is provided to tell whether the FlexLayoutServerModule - * has been included in the bundle - * - * NOTE: This can be manually provided to disable styles when using SSR - @type {?} */ -var SERVER_TOKEN = new InjectionToken('FlexLayoutServerLoaded', { - providedIn: 'root', - factory: function () { return false; } -}); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ + return dest; +} /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -/** * - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - @type {?} */ -var INLINE = 'inline'; /** @type {?} */ -var LAYOUT_VALUES = ['row', 'column', 'row-reverse', 'column-reverse']; +var ALIAS_DELIMITERS = /(\.|-|_)/g; /** - * Validate the direction|'direction wrap' value and then update the host's inline flexbox styles - * @param {?} value + * @param {?} part * @return {?} */ -function buildLayoutCSS(value) { - var _a = validateValue(value), direction = _a[0], wrap = _a[1], isInline = _a[2]; - return buildCSS(direction, wrap, isInline); +function firstUpperCase(part) { + /** @type {?} */ + var first = part.length > 0 ? part.charAt(0) : ''; + /** @type {?} */ + var remainder = (part.length > 1) ? part.slice(1) : ''; + return first.toUpperCase() + remainder; } /** - * Validate the value to be one of the acceptable value options - * Use default fallback of 'row' - * @param {?} value + * Converts snake-case to SnakeCase. + * @param {?} name Text to UpperCamelCase * @return {?} */ -function validateValue(value) { - value = value ? value.toLowerCase() : ''; - var _a = value.split(' '), direction = _a[0], wrap = _a[1], inline = _a[2]; - // First value must be the `flex-direction` - if (!LAYOUT_VALUES.find(function (x) { return x === direction; })) { - direction = LAYOUT_VALUES[0]; - } - if (wrap === INLINE) { - wrap = (inline !== INLINE) ? inline : ''; - inline = INLINE; - } - return [direction, validateWrapValue(wrap), !!inline]; +function camelCase(name) { + return name + .replace(ALIAS_DELIMITERS, '|') + .split('|') + .map(firstUpperCase) + .join(''); } /** - * Convert layout-wrap='' to expected flex-wrap style - * @param {?} value + * For each breakpoint, ensure that a Suffix is defined; + * fallback to UpperCamelCase the unique Alias value + * @param {?} list * @return {?} */ -function validateWrapValue(value) { - if (!!value) { - switch (value.toLowerCase()) { - case 'reverse': - case 'wrap-reverse': - case 'reverse-wrap': - value = 'wrap-reverse'; - break; - case 'no': - case 'none': - case 'nowrap': - value = 'nowrap'; - break; - // All other values fallback to 'wrap' - default: - value = 'wrap'; - break; - } - } - return value; -} -/** - * Build the CSS that should be assigned to the element instance - * BUG: - * 1) min-height on a column flex container won’t apply to its flex item children in IE 10-11. - * Use height instead if possible; height : vh; - * - * This way any padding or border specified on the child elements are - * laid out and drawn inside that element's specified width and height. - * @param {?} direction - * @param {?=} wrap - * @param {?=} inline - * @return {?} - */ -function buildCSS(direction, wrap, inline) { - if (wrap === void 0) { wrap = null; } - if (inline === void 0) { inline = false; } - return { - 'display': inline ? 'inline-flex' : 'flex', - 'box-sizing': 'border-box', - 'flex-direction': direction, - 'flex-wrap': !!wrap ? wrap : null - }; -} - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * @deprecated - * \@deletion-target v7.0.0-beta.21 - */ -var /** - * @deprecated - * \@deletion-target v7.0.0-beta.21 - */ -KeyOptions = /** @class */ (function () { - function KeyOptions(baseKey, defaultValue, inputKeys) { - this.baseKey = baseKey; - this.defaultValue = defaultValue; - this.inputKeys = inputKeys; - } - return KeyOptions; -}()); -/** - * ResponsiveActivation acts as a proxy between the MonitorMedia service (which emits mediaQuery - * changes) and the fx API directives. The MQA proxies mediaQuery change events and notifies the - * directive via the specified callback. - * - * - The MQA also determines which directive property should be used to determine the - * current change 'value'... BEFORE the original `onMediaQueryChanges()` method is called. - * - The `ngOnDestroy()` method is also head-hooked to enable auto-unsubscribe from the - * MediaQueryServices. - * - * NOTE: these interceptions enables the logic in the fx API directives to remain terse and clean. - * @deprecated - * \@deletion-target v7.0.0-beta.21 - */ -var /** - * ResponsiveActivation acts as a proxy between the MonitorMedia service (which emits mediaQuery - * changes) and the fx API directives. The MQA proxies mediaQuery change events and notifies the - * directive via the specified callback. - * - * - The MQA also determines which directive property should be used to determine the - * current change 'value'... BEFORE the original `onMediaQueryChanges()` method is called. - * - The `ngOnDestroy()` method is also head-hooked to enable auto-unsubscribe from the - * MediaQueryServices. - * - * NOTE: these interceptions enables the logic in the fx API directives to remain terse and clean. - * @deprecated - * \@deletion-target v7.0.0-beta.21 - */ -ResponsiveActivation = /** @class */ (function () { - /** - * Constructor - */ - function ResponsiveActivation(_options, _mediaMonitor, _onMediaChanges) { - this._options = _options; - this._mediaMonitor = _mediaMonitor; - this._onMediaChanges = _onMediaChanges; - this._activatedInputKey = ''; - this._registryMap = this._buildRegistryMap(); - this._subscribers = this._configureChangeObservers(); - } - Object.defineProperty(ResponsiveActivation.prototype, "registryFromLargest", { - /** - * Get a readonly sorted list of the breakpoints corresponding to the directive properties - * defined in the HTML markup: the sorting is done from largest to smallest. The order is - * important when several media queries are 'registered' and from which, the browser uses the - * first matching media query. - */ - get: /** - * Get a readonly sorted list of the breakpoints corresponding to the directive properties - * defined in the HTML markup: the sorting is done from largest to smallest. The order is - * important when several media queries are 'registered' and from which, the browser uses the - * first matching media query. - * @return {?} - */ - function () { - return this._registryMap.slice().reverse(); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ResponsiveActivation.prototype, "activatedInputKey", { - /** - * Determine which directive @Input() property is currently active (for the viewport size): - * The key must be defined (in use) or fallback to the 'closest' overlapping property key - * that is defined; otherwise the default property key will be used. - * e.g. - * if `
` is used but the current activated mediaQuery alias - * key is `.md` then `.gt-sm` should be used instead - */ - get: /** - * Determine which directive \@Input() property is currently active (for the viewport size): - * The key must be defined (in use) or fallback to the 'closest' overlapping property key - * that is defined; otherwise the default property key will be used. - * e.g. - * if `
` is used but the current activated mediaQuery alias - * key is `.md` then `.gt-sm` should be used instead - * @return {?} - */ - function () { - return this._activatedInputKey || this._options.baseKey; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(ResponsiveActivation.prototype, "activatedInput", { - /** - * Get the currently activated @Input value or the fallback default @Input value - */ - get: /** - * Get the currently activated \@Input value or the fallback default \@Input value - * @return {?} - */ - function () { - /** @type {?} */ - var key = this.activatedInputKey; - return this.hasKeyValue(key) ? this._lookupKeyValue(key) : this._options.defaultValue; - }, - enumerable: true, - configurable: true - }); - /** - * Fast validator for presence of attribute on the host element - */ - /** - * Fast validator for presence of attribute on the host element - * @param {?} key - * @return {?} - */ - ResponsiveActivation.prototype.hasKeyValue = /** - * Fast validator for presence of attribute on the host element - * @param {?} key - * @return {?} - */ - function (key) { - return this._options.inputKeys[key] !== undefined; - }; - /** - * Remove interceptors, restore original functions, and forward the onDestroy() call - */ - /** - * Remove interceptors, restore original functions, and forward the onDestroy() call - * @return {?} - */ - ResponsiveActivation.prototype.destroy = /** - * Remove interceptors, restore original functions, and forward the onDestroy() call - * @return {?} - */ - function () { - this._subscribers.forEach(function (link) { return link.unsubscribe(); }); - this._subscribers = []; - }; - /** - * For each *defined* API property, register a callback to `_onMonitorEvents( )` - * Cache 1..n subscriptions for internal auto-unsubscribes when the the directive destructs - * @return {?} - */ - ResponsiveActivation.prototype._configureChangeObservers = /** - * For each *defined* API property, register a callback to `_onMonitorEvents( )` - * Cache 1..n subscriptions for internal auto-unsubscribes when the the directive destructs - * @return {?} - */ - function () { - var _this = this; - /** @type {?} */ - var subscriptions = []; - this._registryMap.forEach(function (bp) { - if (_this._keyInUse(bp.key)) { - /** @type {?} */ - var buildChanges = function (change) { - change = change.clone(); - change.property = _this._options.baseKey; - return change; - }; - subscriptions.push(_this._mediaMonitor - .observe(bp.alias) - .pipe(map(buildChanges)) - .subscribe(function (change) { - _this._onMonitorEvents(change); - })); - } - }); - return subscriptions; - }; - /** - * Build mediaQuery key-hashmap; only for the directive properties that are actually defined/used - * in the HTML markup - * @return {?} - */ - ResponsiveActivation.prototype._buildRegistryMap = /** - * Build mediaQuery key-hashmap; only for the directive properties that are actually defined/used - * in the HTML markup - * @return {?} - */ - function () { - var _this = this; - return this._mediaMonitor.breakpoints - .map(function (bp) { return (extendObject({}, bp, { - baseKey: _this._options.baseKey, - // e.g. layout, hide, self-align, flex-wrap - key: _this._options.baseKey + bp.suffix // e.g. layoutGtSm, layoutMd, layoutGtLg - })); }) - .filter(function (bp) { return _this._keyInUse(bp.key); }); - }; - /** - * Synchronizes change notifications with the current mq-activated @Input and calculates the - * mq-activated input value or the default value - */ - /** - * Synchronizes change notifications with the current mq-activated \@Input and calculates the - * mq-activated input value or the default value - * @param {?} change - * @return {?} - */ - ResponsiveActivation.prototype._onMonitorEvents = /** - * Synchronizes change notifications with the current mq-activated \@Input and calculates the - * mq-activated input value or the default value - * @param {?} change - * @return {?} - */ - function (change) { - if (change.property === this._options.baseKey) { - change.value = this._calculateActivatedValue(change); - this._onMediaChanges(change); - } - }; - /** - * Has the key been specified in the HTML markup and thus is intended - * to participate in activation processes. - * @param {?} key - * @return {?} - */ - ResponsiveActivation.prototype._keyInUse = /** - * Has the key been specified in the HTML markup and thus is intended - * to participate in activation processes. - * @param {?} key - * @return {?} - */ - function (key) { - return this._lookupKeyValue(key) !== undefined; - }; - /** - * Map input key associated with mediaQuery activation to closest defined input key - * then return the values associated with the targeted input property - * - * !! change events may arrive out-of-order (activate before deactivate) - * so make sure the deactivate is used ONLY when the keys match - * (since a different activate may be in use) - * @param {?} current - * @return {?} - */ - ResponsiveActivation.prototype._calculateActivatedValue = /** - * Map input key associated with mediaQuery activation to closest defined input key - * then return the values associated with the targeted input property - * - * !! change events may arrive out-of-order (activate before deactivate) - * so make sure the deactivate is used ONLY when the keys match - * (since a different activate may be in use) - * @param {?} current - * @return {?} - */ - function (current) { - /** @type {?} */ - var currentKey = this._options.baseKey + current.suffix; - /** @type {?} */ - var newKey = this._activatedInputKey; // e.g. newKey == hideGtSm - newKey = current.matches ? currentKey : ((newKey === currentKey) ? '' : newKey); - this._activatedInputKey = this._validateInputKey(newKey); - return this.activatedInput; - }; - /** - * For the specified input property key, validate it is defined (used in the markup) - * If not see if a overlapping mediaQuery-related input key fallback has been defined - * - * NOTE: scans in the order defined by activeOverLaps (largest viewport ranges -> smallest ranges) - * @param {?} inputKey - * @return {?} - */ - ResponsiveActivation.prototype._validateInputKey = /** - * For the specified input property key, validate it is defined (used in the markup) - * If not see if a overlapping mediaQuery-related input key fallback has been defined - * - * NOTE: scans in the order defined by activeOverLaps (largest viewport ranges -> smallest ranges) - * @param {?} inputKey - * @return {?} - */ - function (inputKey) { - var _this = this; - /** @type {?} */ - var isMissingKey = function (key) { return !_this._keyInUse(key); }; - if (isMissingKey(inputKey)) { - this._mediaMonitor.activeOverlaps.some(function (bp) { - /** @type {?} */ - var key = _this._options.baseKey + bp.suffix; - if (!isMissingKey(key)) { - inputKey = key; - return true; // exit .some() - } - return false; - }); - } - return inputKey; - }; - /** - * Get the value (if any) for the directive instances \@Input property (aka key) - * @param {?} key - * @return {?} - */ - ResponsiveActivation.prototype._lookupKeyValue = /** - * Get the value (if any) for the directive instances \@Input property (aka key) - * @param {?} key - * @return {?} - */ - function (key) { - return this._options.inputKeys[key]; - }; - return ResponsiveActivation; -}()); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * Abstract base class for the Layout API styling directives. - * @deprecated - * \@deletion-target v7.0.0-beta.21 - * @abstract - */ -var /** - * Abstract base class for the Layout API styling directives. - * @deprecated - * \@deletion-target v7.0.0-beta.21 - * @abstract - */ -BaseDirective = /** @class */ (function () { - function BaseDirective(_mediaMonitor, _elementRef, _styler, _styleBuilder) { - this._mediaMonitor = _mediaMonitor; - this._elementRef = _elementRef; - this._styler = _styler; - this._styleBuilder = _styleBuilder; - /** - * Dictionary of input keys with associated values - */ - this._inputMap = {}; - /** - * Has the `ngOnInit()` method fired - * - * Used to allow *ngFor tasks to finish and support queries like - * getComputedStyle() during ngOnInit(). - */ - this._hasInitialized = false; - /** - * Cache map for style computation - */ - this._styleCache = new Map(); - } - Object.defineProperty(BaseDirective.prototype, "activatedValue", { - /** - * Imperatively determine the current activated [input] value; - * if called before ngOnInit() this will return `undefined` - */ - get: /** - * Imperatively determine the current activated [input] value; - * if called before ngOnInit() this will return `undefined` - * @return {?} - */ - function () { - return this._mqActivation ? this._mqActivation.activatedInput : undefined; - }, - /** - * Change the currently activated input value and force-update - * the injected CSS (by-passing change detection). - * - * NOTE: Only the currently activated input value will be modified; - * other input values will NOT be affected. - */ - set: /** - * Change the currently activated input value and force-update - * the injected CSS (by-passing change detection). - * - * NOTE: Only the currently activated input value will be modified; - * other input values will NOT be affected. - * @param {?} value - * @return {?} - */ - function (value) { - var _a; - /** @type {?} */ - var key = 'baseKey'; - /** @type {?} */ - var previousVal; - if (this._mqActivation) { - key = this._mqActivation.activatedInputKey; - previousVal = this._inputMap[key]; - this._inputMap[key] = value; - } - /** @type {?} */ - var change = new SimpleChange(previousVal, value, false); - this.ngOnChanges(/** @type {?} */ (_a = {}, _a[key] = change, _a)); - }, - enumerable: true, - configurable: true - }); - /** - * Does this directive have 1 or more responsive keys defined - * Note: we exclude the 'baseKey' key (which is NOT considered responsive) - */ - /** - * Does this directive have 1 or more responsive keys defined - * Note: we exclude the 'baseKey' key (which is NOT considered responsive) - * @param {?} baseKey - * @return {?} - */ - BaseDirective.prototype.hasResponsiveAPI = /** - * Does this directive have 1 or more responsive keys defined - * Note: we exclude the 'baseKey' key (which is NOT considered responsive) - * @param {?} baseKey - * @return {?} - */ - function (baseKey) { - /** @type {?} */ - var totalKeys = Object.keys(this._inputMap).length; - /** @type {?} */ - var baseValue = this._inputMap[baseKey]; - return (totalKeys - (!!baseValue ? 1 : 0)) > 0; - }; - // ********************************************* - // Lifecycle Methods - // ********************************************* - /** - * Use post-component-initialization event to perform extra - * querying such as computed Display style - */ - /** - * Use post-component-initialization event to perform extra - * querying such as computed Display style - * @return {?} - */ - BaseDirective.prototype.ngOnInit = /** - * Use post-component-initialization event to perform extra - * querying such as computed Display style - * @return {?} - */ - function () { - this._hasInitialized = true; - }; - /** - * @param {?} change - * @return {?} - */ - BaseDirective.prototype.ngOnChanges = /** - * @param {?} change - * @return {?} - */ - function (change) { - throw new Error("BaseDirective::ngOnChanges should be overridden in subclass: " + change); - }; - /** - * @return {?} - */ - BaseDirective.prototype.ngOnDestroy = /** - * @return {?} - */ - function () { - if (this._mqActivation) { - this._mqActivation.destroy(); - } - delete this._mediaMonitor; - }; - Object.defineProperty(BaseDirective.prototype, "parentElement", { - // ********************************************* - // Protected Methods - // ********************************************* - /** Access to host element's parent DOM node */ - get: /** - * Access to host element's parent DOM node - * @return {?} - */ - function () { - return this._elementRef.nativeElement.parentNode; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(BaseDirective.prototype, "nativeElement", { - get: /** - * @return {?} - */ - function () { - return this._elementRef.nativeElement; - }, - enumerable: true, - configurable: true - }); - /** Add styles to the element using predefined style builder */ - /** - * Add styles to the element using predefined style builder - * @param {?} input - * @param {?=} parent - * @return {?} - */ - BaseDirective.prototype.addStyles = /** - * Add styles to the element using predefined style builder - * @param {?} input - * @param {?=} parent - * @return {?} - */ - function (input, parent) { - /** @type {?} */ - var builder = /** @type {?} */ ((this._styleBuilder)); - /** @type {?} */ - var useCache = builder.shouldCache; - /** @type {?} */ - var genStyles = this._styleCache.get(input); - if (!genStyles || !useCache) { - genStyles = builder.buildStyles(input, parent); - if (useCache) { - this._styleCache.set(input, genStyles); - } - } - this._applyStyleToElement(genStyles); - builder.sideEffect(input, genStyles, parent); - }; - /** Access the current value (if any) of the @Input property */ - /** - * Access the current value (if any) of the \@Input property - * @param {?} key - * @return {?} - */ - BaseDirective.prototype._queryInput = /** - * Access the current value (if any) of the \@Input property - * @param {?} key - * @return {?} - */ - function (key) { - return this._inputMap[key]; - }; - /** - * Was the directive's default selector used ? - * If not, use the fallback value! - */ - /** - * Was the directive's default selector used ? - * If not, use the fallback value! - * @param {?} key - * @param {?} fallbackVal - * @return {?} - */ - BaseDirective.prototype._getDefaultVal = /** - * Was the directive's default selector used ? - * If not, use the fallback value! - * @param {?} key - * @param {?} fallbackVal - * @return {?} - */ - function (key, fallbackVal) { - /** @type {?} */ - var val = this._queryInput(key); - /** @type {?} */ - var hasDefaultVal = (val !== undefined && val !== null); - return (hasDefaultVal && val !== '') ? val : fallbackVal; - }; - /** - * Quick accessor to the current HTMLElement's `display` style - * Note: this allows us to preserve the original style - * and optional restore it when the mediaQueries deactivate - */ - /** - * Quick accessor to the current HTMLElement's `display` style - * Note: this allows us to preserve the original style - * and optional restore it when the mediaQueries deactivate - * @param {?=} source - * @return {?} - */ - BaseDirective.prototype._getDisplayStyle = /** - * Quick accessor to the current HTMLElement's `display` style - * Note: this allows us to preserve the original style - * and optional restore it when the mediaQueries deactivate - * @param {?=} source - * @return {?} - */ - function (source) { - if (source === void 0) { source = this.nativeElement; } - /** @type {?} */ - var query = 'display'; - return this._styler.lookupStyle(source, query); - }; - /** Quick accessor to raw attribute value on the target DOM element */ - /** - * Quick accessor to raw attribute value on the target DOM element - * @param {?} attribute - * @param {?=} source - * @return {?} - */ - BaseDirective.prototype._getAttributeValue = /** - * Quick accessor to raw attribute value on the target DOM element - * @param {?} attribute - * @param {?=} source - * @return {?} - */ - function (attribute, source) { - if (source === void 0) { source = this.nativeElement; } - return this._styler.lookupAttributeValue(source, attribute); - }; - /** - * Determine the DOM element's Flexbox flow (flex-direction). - * - * Check inline style first then check computed (stylesheet) style. - * And optionally add the flow value to element's inline style. - */ - /** - * Determine the DOM element's Flexbox flow (flex-direction). - * - * Check inline style first then check computed (stylesheet) style. - * And optionally add the flow value to element's inline style. - * @param {?} target - * @param {?=} addIfMissing - * @return {?} - */ - BaseDirective.prototype._getFlexFlowDirection = /** - * Determine the DOM element's Flexbox flow (flex-direction). - * - * Check inline style first then check computed (stylesheet) style. - * And optionally add the flow value to element's inline style. - * @param {?} target - * @param {?=} addIfMissing - * @return {?} - */ - function (target, addIfMissing) { - if (addIfMissing === void 0) { addIfMissing = false; } - if (target) { - var _a = this._styler.getFlowDirection(target), value = _a[0], hasInlineValue = _a[1]; - if (!hasInlineValue && addIfMissing) { - /** @type {?} */ - var style = buildLayoutCSS(value); - /** @type {?} */ - var elements = [target]; - this._styler.applyStyleToElements(style, elements); - } - return value.trim(); - } - return 'row'; - }; - /** Applies styles given via string pair or object map to the directive element */ - /** - * Applies styles given via string pair or object map to the directive element - * @param {?} style - * @param {?=} value - * @param {?=} element - * @return {?} - */ - BaseDirective.prototype._applyStyleToElement = /** - * Applies styles given via string pair or object map to the directive element - * @param {?} style - * @param {?=} value - * @param {?=} element - * @return {?} - */ - function (style, value, element) { - if (element === void 0) { element = this.nativeElement; } - this._styler.applyStyleToElement(element, style, value); - }; - /** Applies styles given via string pair or object map to the directive's element */ - /** - * Applies styles given via string pair or object map to the directive's element - * @param {?} style - * @param {?} elements - * @return {?} - */ - BaseDirective.prototype._applyStyleToElements = /** - * Applies styles given via string pair or object map to the directive's element - * @param {?} style - * @param {?} elements - * @return {?} - */ - function (style, elements) { - this._styler.applyStyleToElements(style, elements); - }; - /** - * Save the property value; which may be a complex object. - * Complex objects support property chains - */ - /** - * Save the property value; which may be a complex object. - * Complex objects support property chains - * @param {?=} key - * @param {?=} source - * @return {?} - */ - BaseDirective.prototype._cacheInput = /** - * Save the property value; which may be a complex object. - * Complex objects support property chains - * @param {?=} key - * @param {?=} source - * @return {?} - */ - function (key, source) { - if (typeof source === 'object') { - for (var prop in source) { - this._inputMap[prop] = source[prop]; - } - } - else { - if (!!key) { - this._inputMap[key] = source; - } - } - }; - /** - * Build a ResponsiveActivation object used to manage subscriptions to mediaChange notifications - * and intelligent lookup of the directive's property value that corresponds to that mediaQuery - * (or closest match). - */ - /** - * Build a ResponsiveActivation object used to manage subscriptions to mediaChange notifications - * and intelligent lookup of the directive's property value that corresponds to that mediaQuery - * (or closest match). - * @param {?} key - * @param {?} defaultValue - * @param {?} onMediaQueryChange - * @return {?} - */ - BaseDirective.prototype._listenForMediaQueryChanges = /** - * Build a ResponsiveActivation object used to manage subscriptions to mediaChange notifications - * and intelligent lookup of the directive's property value that corresponds to that mediaQuery - * (or closest match). - * @param {?} key - * @param {?} defaultValue - * @param {?} onMediaQueryChange +function validateSuffixes(list) { + list.forEach((/** + * @param {?} bp * @return {?} */ - function (key, defaultValue, onMediaQueryChange) { - // tslint:disable-line:max-line-length - if (!this._mqActivation) { - /** @type {?} */ - var keyOptions = new KeyOptions(key, defaultValue, this._inputMap); - this._mqActivation = new ResponsiveActivation(keyOptions, this._mediaMonitor, function (change) { return onMediaQueryChange(change); }); + function (bp) { + if (!bp.suffix) { + bp.suffix = camelCase(bp.alias); // create Suffix value based on alias + bp.overlapping = !!bp.overlapping; // ensure default value } - return this._mqActivation; - }; - Object.defineProperty(BaseDirective.prototype, "childrenNodes", { - /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */ - get: /** - * Special accessor to query for all child 'element' nodes regardless of type, class, etc - * @return {?} - */ - function () { - /** @type {?} */ - var obj = this.nativeElement.children; - /** @type {?} */ - var buffer = []; - // iterate backwards ensuring that length is an UInt32 - for (var i = obj.length; i--;) { - buffer[i] = obj[i]; - } - return buffer; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(BaseDirective.prototype, "hasInitialized", { - get: /** - * @return {?} - */ - function () { - return this._hasInitialized; - }, - enumerable: true, - configurable: true - }); - return BaseDirective; -}()); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ + })); + return list; +} /** - * Adapter to the BaseDirective abstract class so it can be used via composition. - * @see BaseDirective - * @deprecated - * \@deletion-target v7.0.0-beta.21 - */ -var /** - * Adapter to the BaseDirective abstract class so it can be used via composition. - * @see BaseDirective - * @deprecated - * \@deletion-target v7.0.0-beta.21 + * Merge a custom breakpoint list with the default list based on unique alias values + * - Items are added if the alias is not in the default list + * - Items are merged with the custom override if the alias exists in the default list + * @param {?} defaults + * @param {?=} custom + * @return {?} */ -BaseDirectiveAdapter = /** @class */ (function (_super) { - __extends(BaseDirectiveAdapter, _super); - /** - * BaseDirectiveAdapter constructor - */ - function BaseDirectiveAdapter(_baseKey, // non-responsive @Input property name - // non-responsive @Input property name - _mediaMonitor, _elementRef, _styler) { - var _this = _super.call(this, _mediaMonitor, _elementRef, _styler) || this; - _this._baseKey = _baseKey; - _this._mediaMonitor = _mediaMonitor; - _this._elementRef = _elementRef; - _this._styler = _styler; - return _this; - } - Object.defineProperty(BaseDirectiveAdapter.prototype, "activeKey", { - /** - * Accessor to determine which @Input property is "active" - * e.g. which property value will be used. - */ - get: /** - * Accessor to determine which \@Input property is "active" - * e.g. which property value will be used. - * @return {?} - */ - function () { - /** @type {?} */ - var mqa = this._mqActivation; - /** @type {?} */ - var key = mqa ? mqa.activatedInputKey : this._baseKey; - // Note: ClassDirective::SimpleChanges uses 'klazz' instead of 'class' as a key - return (key === 'class') ? 'klazz' : key; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(BaseDirectiveAdapter.prototype, "inputMap", { - /** Hash map of all @Input keys/values defined/used */ - get: /** - * Hash map of all \@Input keys/values defined/used - * @return {?} - */ - function () { - return this._inputMap; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(BaseDirectiveAdapter.prototype, "mqActivation", { - /** - * @see BaseDirective._mqActivation - */ - get: /** - * @see BaseDirective._mqActivation - * @return {?} - */ - function () { - return /** @type {?} */ ((this._mqActivation)); - }, - enumerable: true, - configurable: true - }); - /** - * Does this directive have 1 or more responsive keys defined - * Note: we exclude the 'baseKey' key (which is NOT considered responsive) - */ - /** - * Does this directive have 1 or more responsive keys defined - * Note: we exclude the 'baseKey' key (which is NOT considered responsive) - * @return {?} - */ - BaseDirectiveAdapter.prototype.hasResponsiveAPI = /** - * Does this directive have 1 or more responsive keys defined - * Note: we exclude the 'baseKey' key (which is NOT considered responsive) - * @return {?} - */ - function () { - return _super.prototype.hasResponsiveAPI.call(this, this._baseKey); - }; - /** - * @see BaseDirective._queryInput - */ - /** - * @see BaseDirective._queryInput - * @param {?} key - * @return {?} - */ - BaseDirectiveAdapter.prototype.queryInput = /** - * @see BaseDirective._queryInput - * @param {?} key - * @return {?} - */ - function (key) { - return key ? this._queryInput(key) : undefined; - }; - /** - * Save the property value. - */ - /** - * Save the property value. - * @param {?=} key - * @param {?=} source - * @param {?=} cacheRaw - * @return {?} - */ - BaseDirectiveAdapter.prototype.cacheInput = /** - * Save the property value. - * @param {?=} key - * @param {?=} source - * @param {?=} cacheRaw - * @return {?} - */ - function (key, source, cacheRaw) { - if (cacheRaw === void 0) { cacheRaw = false; } - if (cacheRaw) { - this._cacheInputRaw(key, source); - } - else if (Array.isArray(source)) { - this._cacheInputArray(key, source); - } - else if (typeof source === 'object') { - this._cacheInputObject(key, source); - } - else if (typeof source === 'string') { - this._cacheInputString(key, source); - } - else { - throw new Error("Invalid class value '" + key + "' provided. Did you want to cache the raw value?"); - } - }; - /** - * @see BaseDirective._listenForMediaQueryChanges - */ - /** - * @see BaseDirective._listenForMediaQueryChanges - * @param {?} key - * @param {?} defaultValue - * @param {?} onMediaQueryChange - * @return {?} - */ - BaseDirectiveAdapter.prototype.listenForMediaQueryChanges = /** - * @see BaseDirective._listenForMediaQueryChanges - * @param {?} key - * @param {?} defaultValue - * @param {?} onMediaQueryChange - * @return {?} - */ - function (key, defaultValue, onMediaQueryChange) { - return this._listenForMediaQueryChanges(key, defaultValue, onMediaQueryChange); - }; - // ************************************************************ - // Protected Methods - // ************************************************************ - /** - * No implicit transforms of the source. - * Required when caching values expected later for KeyValueDiffers - */ - /** - * No implicit transforms of the source. - * Required when caching values expected later for KeyValueDiffers - * @param {?=} key - * @param {?=} source +function mergeByAlias(defaults, custom) { + if (custom === void 0) { custom = []; } + /** @type {?} */ + var dict = {}; + defaults.forEach((/** + * @param {?} bp * @return {?} */ - BaseDirectiveAdapter.prototype._cacheInputRaw = /** - * No implicit transforms of the source. - * Required when caching values expected later for KeyValueDiffers - * @param {?=} key - * @param {?=} source + function (bp) { + dict[bp.alias] = bp; + })); + // Merge custom breakpoints + custom.forEach((/** + * @param {?} bp * @return {?} */ - function (key, source) { - if (key) { - this._inputMap[key] = source; + function (bp) { + if (dict[bp.alias]) { + extendObject(dict[bp.alias], bp); } - }; - /** - * Save the property value for Array values. - */ - /** - * Save the property value for Array values. - * @param {?=} key - * @param {?=} source + else { + dict[bp.alias] = bp; + } + })); + return validateSuffixes(Object.keys(dict).map((/** + * @param {?} k * @return {?} */ - BaseDirectiveAdapter.prototype._cacheInputArray = /** - * Save the property value for Array values. - * @param {?=} key - * @param {?=} source + function (k) { return dict[k]; }))); +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Injection token unique to the flex-layout library. + * Use this token when build a custom provider (see below). + * @type {?} + */ +var BREAKPOINTS = new InjectionToken('Token (@angular/flex-layout) Breakpoints', { + providedIn: 'root', + factory: (/** * @return {?} */ - function (key, source) { - if (key === void 0) { key = ''; } - this._inputMap[key] = source ? source.join(' ') : ''; - }; + function () { + /** @type {?} */ + var breakpoints = inject(BREAKPOINT); + /** @type {?} */ + var layoutConfig = inject(LAYOUT_CONFIG); + /** @type {?} */ + var bpFlattenArray = [].concat.apply([], (breakpoints || []) + .map((/** + * @param {?} v + * @return {?} + */ + function (v) { return Array.isArray(v) ? v : [v]; }))); + /** @type {?} */ + var builtIns = (layoutConfig.disableDefaultBps ? [] : DEFAULT_BREAKPOINTS) + .concat(layoutConfig.addOrientationBps ? ORIENTATION_BREAKPOINTS : []); + return mergeByAlias(builtIns, bpFlattenArray); + }) +}); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * HOF to sort the breakpoints by descending priority + * @template T + * @param {?} a + * @param {?} b + * @return {?} + */ +function sortDescendingPriority(a, b) { + /** @type {?} */ + var priorityA = a ? a.priority || 0 : 0; + /** @type {?} */ + var priorityB = b ? b.priority || 0 : 0; + return priorityB - priorityA; +} +/** + * HOF to sort the breakpoints by ascending priority + * @template T + * @param {?} a + * @param {?} b + * @return {?} + */ +function sortAscendingPriority(a, b) { + /** @type {?} */ + var pA = a.priority || 0; + /** @type {?} */ + var pB = b.priority || 0; + return pA - pB; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Registry of 1..n MediaQuery breakpoint ranges + * This is published as a provider and may be overridden from custom, application-specific ranges + * + */ +var BreakPointRegistry = /** @class */ (function () { + function BreakPointRegistry(list) { + /** + * Memoized BreakPoint Lookups + */ + this.findByMap = new Map(); + this.items = list.slice().sort(sortAscendingPriority); + } /** - * Save the property value for key/value pair values. + * Search breakpoints by alias (e.g. gt-xs) */ /** - * Save the property value for key/value pair values. - * @param {?=} key - * @param {?=} source + * Search breakpoints by alias (e.g. gt-xs) + * @param {?} alias * @return {?} */ - BaseDirectiveAdapter.prototype._cacheInputObject = /** - * Save the property value for key/value pair values. - * @param {?=} key - * @param {?=} source + BreakPointRegistry.prototype.findByAlias = /** + * Search breakpoints by alias (e.g. gt-xs) + * @param {?} alias * @return {?} */ - function (key, source) { - if (key === void 0) { key = ''; } - /** @type {?} */ - var classes = []; - if (source) { - for (var prop in source) { - if (!!source[prop]) { - classes.push(prop); - } - } - } - this._inputMap[key] = classes.join(' '); + function (alias) { + return !alias ? null : this.findWithPredicate(alias, (/** + * @param {?} bp + * @return {?} + */ + function (bp) { return bp.alias == alias; })); }; /** - * Save the property value for string values. - */ - /** - * Save the property value for string values. - * @param {?=} key - * @param {?=} source + * @param {?} query * @return {?} */ - BaseDirectiveAdapter.prototype._cacheInputString = /** - * Save the property value for string values. - * @param {?=} key - * @param {?=} source + BreakPointRegistry.prototype.findByQuery = /** + * @param {?} query * @return {?} */ - function (key, source) { - if (key === void 0) { key = ''; } - this._inputMap[key] = source; - }; - return BaseDirectiveAdapter; -}(BaseDirective)); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * @abstract - */ -var /** - * @abstract - */ -BaseDirective2 = /** @class */ (function () { - function BaseDirective2(elementRef, styleBuilder, styler, marshal) { - this.elementRef = elementRef; - this.styleBuilder = styleBuilder; - this.styler = styler; - this.marshal = marshal; - this.DIRECTIVE_KEY = ''; - this.inputs = []; - /** - * The most recently used styles for the builder + function (query) { + return this.findWithPredicate(query, (/** + * @param {?} bp + * @return {?} */ - this.mru = {}; - this.destroySubject = new Subject(); + function (bp) { return bp.mediaQuery == query; })); + }; + Object.defineProperty(BreakPointRegistry.prototype, "overlappings", { /** - * Cache map for style computation + * Get all the breakpoints whose ranges could overlapping `normal` ranges; + * e.g. gt-sm overlaps md, lg, and xl */ - this.styleCache = new Map(); - } - Object.defineProperty(BaseDirective2.prototype, "parentElement", { - /** Access to host element's parent DOM node */ get: /** - * Access to host element's parent DOM node + * Get all the breakpoints whose ranges could overlapping `normal` ranges; + * e.g. gt-sm overlaps md, lg, and xl * @return {?} */ function () { - return this.elementRef.nativeElement.parentElement; + return this.items.filter((/** + * @param {?} it + * @return {?} + */ + function (it) { return it.overlapping == true; })); }, enumerable: true, configurable: true }); - Object.defineProperty(BaseDirective2.prototype, "nativeElement", { - /** Access to the HTMLElement for the directive */ + Object.defineProperty(BreakPointRegistry.prototype, "aliases", { + /** + * Get list of all registered (non-empty) breakpoint aliases + */ get: /** - * Access to the HTMLElement for the directive + * Get list of all registered (non-empty) breakpoint aliases * @return {?} */ function () { - return this.elementRef.nativeElement; + return this.items.map((/** + * @param {?} it + * @return {?} + */ + function (it) { return it.alias; })); }, enumerable: true, configurable: true }); - Object.defineProperty(BaseDirective2.prototype, "activatedValue", { - /** Access to the activated value for the directive */ + Object.defineProperty(BreakPointRegistry.prototype, "suffixes", { + /** + * Aliases are mapped to properties using suffixes + * e.g. 'gt-sm' for property 'layout' uses suffix 'GtSm' + * for property layoutGtSM. + */ get: /** - * Access to the activated value for the directive + * Aliases are mapped to properties using suffixes + * e.g. 'gt-sm' for property 'layout' uses suffix 'GtSm' + * for property layoutGtSM. * @return {?} */ function () { - return this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY); - }, - set: /** - * @param {?} value - * @return {?} - */ - function (value) { - this.marshal.setValue(this.nativeElement, this.DIRECTIVE_KEY, value, this.marshal.activatedBreakpoint); + return this.items.map((/** + * @param {?} it + * @return {?} + */ + function (it) { return !!it.suffix ? it.suffix : ''; })); }, enumerable: true, configurable: true }); - /** For @Input changes */ - /** - * For \@Input changes - * @param {?} changes - * @return {?} - */ - BaseDirective2.prototype.ngOnChanges = /** - * For \@Input changes - * @param {?} changes - * @return {?} - */ - function (changes) { - var _this = this; - Object.keys(changes).forEach(function (key) { - if (_this.inputs.indexOf(key) !== -1) { - /** @type {?} */ - var bp = key.split('.').slice(1).join('.'); - /** @type {?} */ - var val = changes[key].currentValue; - _this.setValue(val, bp); - } - }); - }; - /** - * @return {?} - */ - BaseDirective2.prototype.ngOnDestroy = /** - * @return {?} - */ - function () { - this.destroySubject.next(); - this.destroySubject.complete(); - this.marshal.releaseElement(this.nativeElement); - }; - /** Register with central marshaller service */ /** - * Register with central marshaller service - * @param {?=} extraTriggers - * @return {?} - */ - BaseDirective2.prototype.init = /** - * Register with central marshaller service - * @param {?=} extraTriggers - * @return {?} + * Memoized lookup using custom predicate function */ - function (extraTriggers) { - if (extraTriggers === void 0) { extraTriggers = []; } - this.marshal.init(this.elementRef.nativeElement, this.DIRECTIVE_KEY, this.updateWithValue.bind(this), this.clearStyles.bind(this), extraTriggers); - }; - /** Add styles to the element using predefined style builder */ /** - * Add styles to the element using predefined style builder - * @param {?} input - * @param {?=} parent + * Memoized lookup using custom predicate function + * @private + * @param {?} key + * @param {?} searchFn * @return {?} */ - BaseDirective2.prototype.addStyles = /** - * Add styles to the element using predefined style builder - * @param {?} input - * @param {?=} parent + BreakPointRegistry.prototype.findWithPredicate = /** + * Memoized lookup using custom predicate function + * @private + * @param {?} key + * @param {?} searchFn * @return {?} */ - function (input, parent) { + function (key, searchFn) { /** @type {?} */ - var builder = this.styleBuilder; - /** @type {?} */ - var useCache = builder.shouldCache; - /** @type {?} */ - var genStyles = this.styleCache.get(input); - if (!genStyles || !useCache) { - genStyles = builder.buildStyles(input, parent); - if (useCache) { - this.styleCache.set(input, genStyles); - } + var response = this.findByMap.get(key); + if (!response) { + response = this.items.find(searchFn) || null; + this.findByMap.set(key, response); } - this.mru = __assign({}, genStyles); - this.applyStyleToElement(genStyles); - builder.sideEffect(input, genStyles, parent); + return response || null; }; - /** Remove generated styles from an element using predefined style builder */ + BreakPointRegistry.decorators = [ + { type: Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ + BreakPointRegistry.ctorParameters = function () { return [ + { type: Array, decorators: [{ type: Inject, args: [BREAKPOINTS,] }] } + ]; }; + /** @nocollapse */ BreakPointRegistry.ngInjectableDef = ɵɵdefineInjectable({ factory: function BreakPointRegistry_Factory() { return new BreakPointRegistry(ɵɵinject(BREAKPOINTS)); }, token: BreakPointRegistry, providedIn: "root" }); + return BreakPointRegistry; +}()); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * MediaMonitor configures listeners to mediaQuery changes and publishes an Observable facade to + * convert mediaQuery change callbacks to subscriber notifications. These notifications will be + * performed within the ng Zone to trigger change detections and component updates. + * + * NOTE: both mediaQuery activations and de-activations are announced in notifications + */ +var MatchMedia = /** @class */ (function () { + function MatchMedia(_zone, _platformId, _document) { + this._zone = _zone; + this._platformId = _platformId; + this._document = _document; + /** + * Initialize source with 'all' so all non-responsive APIs trigger style updates + */ + this.source = new BehaviorSubject(new MediaChange(true)); + this.registry = new Map(); + this._observable$ = this.source.asObservable(); + } + Object.defineProperty(MatchMedia.prototype, "activations", { + /** + * Publish list of all current activations + */ + get: /** + * Publish list of all current activations + * @return {?} + */ + function () { + /** @type {?} */ + var results = []; + this.registry.forEach((/** + * @param {?} mql + * @param {?} key + * @return {?} + */ + function (mql, key) { + if (mql.matches) { + results.push(key); + } + })); + return results; + }, + enumerable: true, + configurable: true + }); /** - * Remove generated styles from an element using predefined style builder - * @return {?} - */ - BaseDirective2.prototype.clearStyles = /** - * Remove generated styles from an element using predefined style builder - * @return {?} + * For the specified mediaQuery? */ - function () { - var _this = this; - Object.keys(this.mru).forEach(function (k) { - _this.mru[k] = ''; - }); - this.applyStyleToElement(this.mru); - this.mru = {}; - }; - /** Force trigger style updates on DOM element */ /** - * Force trigger style updates on DOM element + * For the specified mediaQuery? + * @param {?} mediaQuery * @return {?} */ - BaseDirective2.prototype.triggerUpdate = /** - * Force trigger style updates on DOM element + MatchMedia.prototype.isActive = /** + * For the specified mediaQuery? + * @param {?} mediaQuery * @return {?} */ - function () { + function (mediaQuery) { /** @type {?} */ - var val = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY); - this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, val); + var mql = this.registry.get(mediaQuery); + return !!mql ? mql.matches : false; }; /** - * Determine the DOM element's Flexbox flow (flex-direction). + * External observers can watch for all (or a specific) mql changes. + * Typically used by the MediaQueryAdaptor; optionally available to components + * who wish to use the MediaMonitor as mediaMonitor$ observable service. * - * Check inline style first then check computed (stylesheet) style. - * And optionally add the flow value to element's inline style. + * Use deferred registration process to register breakpoints only on subscription + * This logic also enforces logic to register all mediaQueries BEFORE notify + * subscribers of notifications. */ /** - * Determine the DOM element's Flexbox flow (flex-direction). + * External observers can watch for all (or a specific) mql changes. + * Typically used by the MediaQueryAdaptor; optionally available to components + * who wish to use the MediaMonitor as mediaMonitor$ observable service. * - * Check inline style first then check computed (stylesheet) style. - * And optionally add the flow value to element's inline style. - * @param {?} target - * @param {?=} addIfMissing + * Use deferred registration process to register breakpoints only on subscription + * This logic also enforces logic to register all mediaQueries BEFORE notify + * subscribers of notifications. + * @param {?=} mqList + * @param {?=} filterOthers * @return {?} */ - BaseDirective2.prototype.getFlexFlowDirection = /** - * Determine the DOM element's Flexbox flow (flex-direction). + MatchMedia.prototype.observe = /** + * External observers can watch for all (or a specific) mql changes. + * Typically used by the MediaQueryAdaptor; optionally available to components + * who wish to use the MediaMonitor as mediaMonitor$ observable service. * - * Check inline style first then check computed (stylesheet) style. - * And optionally add the flow value to element's inline style. - * @param {?} target - * @param {?=} addIfMissing + * Use deferred registration process to register breakpoints only on subscription + * This logic also enforces logic to register all mediaQueries BEFORE notify + * subscribers of notifications. + * @param {?=} mqList + * @param {?=} filterOthers * @return {?} */ - function (target, addIfMissing) { - if (addIfMissing === void 0) { addIfMissing = false; } - if (target) { - var _a = this.styler.getFlowDirection(target), value = _a[0], hasInlineValue = _a[1]; - if (!hasInlineValue && addIfMissing) { - /** @type {?} */ - var style = buildLayoutCSS(value); + function (mqList, filterOthers) { + var _this = this; + if (filterOthers === void 0) { filterOthers = false; } + if (mqList && mqList.length) { + /** @type {?} */ + var matchMedia$ = this._observable$.pipe(filter((/** + * @param {?} change + * @return {?} + */ + function (change) { + return !filterOthers ? true : (mqList.indexOf(change.mediaQuery) > -1); + }))); + /** @type {?} */ + var registration$ = new Observable((/** + * @param {?} observer + * @return {?} + */ + function (observer) { + // tslint:disable-line:max-line-length /** @type {?} */ - var elements = [target]; - this.styler.applyStyleToElements(style, elements); - } - return value.trim(); + var matches = _this.registerQuery(mqList); + if (matches.length) { + /** @type {?} */ + var lastChange = (/** @type {?} */ (matches.pop())); + matches.forEach((/** + * @param {?} e + * @return {?} + */ + function (e) { + observer.next(e); + })); + _this.source.next(lastChange); // last match is cached + } + observer.complete(); + })); + return merge(registration$, matchMedia$); } - return 'row'; + return this._observable$; }; - /** Applies styles given via string pair or object map to the directive element */ /** - * Applies styles given via string pair or object map to the directive element - * @param {?} style - * @param {?=} value - * @param {?=} element - * @return {?} - */ - BaseDirective2.prototype.applyStyleToElement = /** - * Applies styles given via string pair or object map to the directive element - * @param {?} style - * @param {?=} value - * @param {?=} element - * @return {?} + * Based on the BreakPointRegistry provider, register internal listeners for each unique + * mediaQuery. Each listener emits specific MediaChange data to observers */ - function (style, value, element) { - if (element === void 0) { element = this.nativeElement; } - this.styler.applyStyleToElement(element, style, value); - }; /** - * @param {?} val - * @param {?} bp + * Based on the BreakPointRegistry provider, register internal listeners for each unique + * mediaQuery. Each listener emits specific MediaChange data to observers + * @param {?} mediaQuery * @return {?} */ - BaseDirective2.prototype.setValue = /** - * @param {?} val - * @param {?} bp + MatchMedia.prototype.registerQuery = /** + * Based on the BreakPointRegistry provider, register internal listeners for each unique + * mediaQuery. Each listener emits specific MediaChange data to observers + * @param {?} mediaQuery * @return {?} */ - function (val, bp) { - this.marshal.setValue(this.nativeElement, this.DIRECTIVE_KEY, val, bp); + function (mediaQuery) { + var _this = this; + /** @type {?} */ + var list = Array.isArray(mediaQuery) ? mediaQuery : [mediaQuery]; + /** @type {?} */ + var matches = []; + buildQueryCss(list, this._document); + list.forEach((/** + * @param {?} query + * @return {?} + */ + function (query) { + /** @type {?} */ + var onMQLEvent = (/** + * @param {?} e + * @return {?} + */ + function (e) { + _this._zone.run((/** + * @return {?} + */ + function () { return _this.source.next(new MediaChange(e.matches, query)); })); + }); + /** @type {?} */ + var mql = _this.registry.get(query); + if (!mql) { + mql = _this.buildMQL(query); + mql.addListener(onMQLEvent); + _this.registry.set(query, mql); + } + if (mql.matches) { + matches.push(new MediaChange(true, query)); + } + })); + return matches; }; /** - * @param {?} input + * Call window.matchMedia() to build a MediaQueryList; which + * supports 0..n listeners for activation/deactivation + */ + /** + * Call window.matchMedia() to build a MediaQueryList; which + * supports 0..n listeners for activation/deactivation + * @protected + * @param {?} query * @return {?} */ - BaseDirective2.prototype.updateWithValue = /** - * @param {?} input + MatchMedia.prototype.buildMQL = /** + * Call window.matchMedia() to build a MediaQueryList; which + * supports 0..n listeners for activation/deactivation + * @protected + * @param {?} query * @return {?} */ - function (input) { - this.addStyles(input); + function (query) { + return constructMql(query, isPlatformBrowser(this._platformId)); }; - return BaseDirective2; + MatchMedia.decorators = [ + { type: Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ + MatchMedia.ctorParameters = function () { return [ + { type: NgZone }, + { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }, + { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] } + ]; }; + /** @nocollapse */ MatchMedia.ngInjectableDef = ɵɵdefineInjectable({ factory: function MatchMedia_Factory() { return new MatchMedia(ɵɵinject(NgZone), ɵɵinject(PLATFORM_ID), ɵɵinject(DOCUMENT)); }, token: MatchMedia, providedIn: "root" }); + return MatchMedia; }()); - /** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * Private global registry for all dynamically-created, injected style tags + * @see prepare(query) + * @type {?} */ - +var ALL_STYLES = {}; /** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * For Webkit engines that only trigger the MediaQueryList Listener + * when there is at least one CSS selector for the respective media query. + * + * @param {?} mediaQueries + * @param {?} _document + * @return {?} + */ +function buildQueryCss(mediaQueries, _document) { + /** @type {?} */ + var list = mediaQueries.filter((/** + * @param {?} it + * @return {?} + */ + function (it) { return !ALL_STYLES[it]; })); + if (list.length > 0) { + /** @type {?} */ + var query = list.join(', '); + try { + /** @type {?} */ + var styleEl_1 = _document.createElement('style'); + styleEl_1.setAttribute('type', 'text/css'); + if (!((/** @type {?} */ (styleEl_1))).styleSheet) { + /** @type {?} */ + var 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"; + styleEl_1.appendChild(_document.createTextNode(cssText)); + } + (/** @type {?} */ (_document.head)).appendChild(styleEl_1); + // Store in private global registry + list.forEach((/** + * @param {?} mq + * @return {?} + */ + function (mq) { return ALL_STYLES[mq] = styleEl_1; })); + } + catch (e) { + console.error(e); + } + } +} +/** + * @param {?} query + * @param {?} isBrowser + * @return {?} */ +function constructMql(query, isBrowser) { + /** @type {?} */ + var canListen = isBrowser && !!((/** @type {?} */ (window))).matchMedia('all').addListener; + return canListen ? ((/** @type {?} */ (window))).matchMedia(query) : (/** @type {?} */ ((/** @type {?} */ ({ + matches: query === 'all' || query === '', + media: query, + addListener: (/** + * @return {?} + */ + function () { + }), + removeListener: (/** + * @return {?} + */ + function () { + }) + })))); +} /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * MockMatchMedia mocks calls to the Window API matchMedia with a build of a simulated @@ -2558,17 +1482,9 @@ var MockMatchMedia = /** @class */ (function (_super) { function MockMatchMedia(_zone, _platformId, _document, _breakpoints) { var _this = _super.call(this, _zone, _platformId, _document) || this; _this._breakpoints = _breakpoints; - /** - * Special flag used to test BreakPoint registrations with MatchMedia - */ - _this.autoRegisterQueries = true; - /** - * Allow fallback to overlapping mediaQueries to determine - * activatedInput(s). - */ - _this.useOverlaps = false; - _this._registry = new Map(); - _this._actives = []; + _this.autoRegisterQueries = true; // Used for testing BreakPoint registrations + // Used for testing BreakPoint registrations + _this.useOverlaps = false; // Allow fallback to overlapping mediaQueries return _this; } /** Easy method to clear all listeners for all mediaQueries */ @@ -2581,10 +1497,14 @@ var MockMatchMedia = /** @class */ (function (_super) { * @return {?} */ function () { - this._registry.forEach(function (mql) { - mql.destroy(); - }); - this._registry.clear(); + this.registry.forEach((/** + * @param {?} mql + * @return {?} + */ + function (mql) { + ((/** @type {?} */ (mql))).destroy(); + })); + this.registry.clear(); this.useOverlaps = false; }; /** Feature to support manual, simulated activation of a mediaQuery. */ @@ -2628,15 +1548,21 @@ var MockMatchMedia = /** @class */ (function (_super) { return (bp && bp.mediaQuery) || queryOrAlias; }; /** - * Manually activate any overlapping mediaQueries to simulate + * Manually onMediaChange any overlapping mediaQueries to simulate + * similar functionality in the window.matchMedia() + */ + /** + * Manually onMediaChange any overlapping mediaQueries to simulate * similar functionality in the window.matchMedia() + * @private * @param {?} mediaQuery * @param {?} useOverlaps * @return {?} */ MockMatchMedia.prototype._activateWithOverlaps = /** - * Manually activate any overlapping mediaQueries to simulate + * Manually onMediaChange any overlapping mediaQueries to simulate * similar functionality in the window.matchMedia() + * @private * @param {?} mediaQuery * @param {?} useOverlaps * @return {?} @@ -2662,7 +1588,7 @@ var MockMatchMedia = /** @class */ (function (_super) { this._activateByAlias('lt-xl, lt-lg, lt-md, lt-sm'); break; } - // Simulate activate of overlapping gt- mediaQuery ranges + // Simulate activation of overlapping gt- mediaQuery ranges switch (alias) { case 'xl': this._activateByAlias('gt-lg, gt-md, gt-sm, gt-xs'); @@ -2683,76 +1609,100 @@ var MockMatchMedia = /** @class */ (function (_super) { }; /** * + */ + /** + * + * @private * @param {?} aliases * @return {?} */ MockMatchMedia.prototype._activateByAlias = /** * + * @private * @param {?} aliases * @return {?} */ function (aliases) { var _this = this; /** @type {?} */ - var activate = function (alias) { + var activate = (/** + * @param {?} alias + * @return {?} + */ + function (alias) { /** @type {?} */ var bp = _this._breakpoints.findByAlias(alias); _this._activateByQuery(bp ? bp.mediaQuery : alias); - }; - aliases.split(',').forEach(function (alias) { return activate(alias.trim()); }); + }); + aliases.split(',').forEach((/** + * @param {?} alias + * @return {?} + */ + function (alias) { return activate(alias.trim()); })); }; /** * + */ + /** + * + * @private * @param {?} mediaQuery * @return {?} */ MockMatchMedia.prototype._activateByQuery = /** * + * @private * @param {?} mediaQuery * @return {?} */ function (mediaQuery) { /** @type {?} */ - var mql = this._registry.get(mediaQuery); - /** @type {?} */ - var alreadyAdded = this._actives - .reduce(function (found, it) { return (found || (mql ? (it.media === mql.media) : false)); }, false); - if (mql && !alreadyAdded) { - this._actives.push(mql.activate()); + var mql = (/** @type {?} */ (this.registry.get(mediaQuery))); + if (mql && !this.isActive(mediaQuery)) { + this.registry.set(mediaQuery, mql.activate()); } return this.hasActivated; }; + /** Deactivate all current MQLs and reset the buffer */ /** - * Deactivate all current Mock MQLs - * @return {?} + * Deactivate all current MQLs and reset the buffer + * @private + * @template THIS + * @this {THIS} + * @return {THIS} */ MockMatchMedia.prototype._deactivateAll = /** - * Deactivate all current Mock MQLs - * @return {?} + * Deactivate all current MQLs and reset the buffer + * @private + * @template THIS + * @this {THIS} + * @return {THIS} */ function () { - if (this._actives.length) { - // Deactivate all current MQLs and reset the buffer - for (var _i = 0, _a = this._actives; _i < _a.length; _i++) { - var it = _a[_i]; - it.deactivate(); - } - this._actives = []; - } - return this; + (/** @type {?} */ (this)).registry.forEach((/** + * @param {?} it + * @return {?} + */ + function (it) { + ((/** @type {?} */ (it))).deactivate(); + })); + return (/** @type {?} */ (this)); }; + /** Insure the mediaQuery is registered with MatchMedia */ /** * Insure the mediaQuery is registered with MatchMedia + * @private * @param {?} mediaQuery * @return {?} */ MockMatchMedia.prototype._registerMediaQuery = /** * Insure the mediaQuery is registered with MatchMedia + * @private * @param {?} mediaQuery * @return {?} */ function (mediaQuery) { - if (!this._registry.has(mediaQuery) && this.autoRegisterQueries) { + if (!this.registry.has(mediaQuery) && this.autoRegisterQueries) { this.registerQuery(mediaQuery); } }; @@ -2763,12 +1713,14 @@ var MockMatchMedia = /** @class */ (function (_super) { /** * Call window.matchMedia() to build a MediaQueryList; which * supports 0..n listeners for activation/deactivation + * @protected * @param {?} query * @return {?} */ - MockMatchMedia.prototype._buildMQL = /** + MockMatchMedia.prototype.buildMQL = /** * Call window.matchMedia() to build a MediaQueryList; which * supports 0..n listeners for activation/deactivation + * @protected * @param {?} query * @return {?} */ @@ -2777,10 +1729,11 @@ var MockMatchMedia = /** @class */ (function (_super) { }; Object.defineProperty(MockMatchMedia.prototype, "hasActivated", { get: /** + * @protected * @return {?} */ function () { - return this._actives.length > 0; + return this.activations.length > 0; }, enumerable: true, configurable: true @@ -2802,7 +1755,7 @@ var MockMatchMedia = /** @class */ (function (_super) { * - supports manual activation to simulate mediaQuery matching * - manages listeners */ -var /** +var /** * Special internal class to simulate a MediaQueryList and * - supports manual activation to simulate mediaQuery matching * - manages listeners @@ -2865,11 +1818,15 @@ MockMediaQueryList = /** @class */ (function () { var _this = this; if (!this._isActive) { this._isActive = true; - this._listeners.forEach(function (callback) { + this._listeners.forEach((/** + * @param {?} callback + * @return {?} + */ + function (callback) { /** @type {?} */ - var cb = /** @type {?} */ ((callback)); + var cb = (/** @type {?} */ (callback)); cb.call(null, _this); - }); + })); } return this; }; @@ -2886,11 +1843,15 @@ MockMediaQueryList = /** @class */ (function () { var _this = this; if (this._isActive) { this._isActive = false; - this._listeners.forEach(function (callback) { + this._listeners.forEach((/** + * @param {?} callback + * @return {?} + */ + function (callback) { /** @type {?} */ - var cb = /** @type {?} */ ((callback)); + var cb = (/** @type {?} */ (callback)); cb.call(null, _this); - }); + })); } return this; }; @@ -2911,7 +1872,7 @@ MockMediaQueryList = /** @class */ (function () { } if (this._isActive) { /** @type {?} */ - var cb = /** @type {?} */ ((listener)); + var cb = (/** @type {?} */ (listener)); cb.call(null, this); } }; @@ -2969,9 +1930,10 @@ MockMediaQueryList = /** @class */ (function () { }; return MockMediaQueryList; }()); -/** * +/** * Pre-configured provider for MockMatchMedia - @type {?} */ + * @type {?} + */ var MockMatchMediaProvider = { // tslint:disable-line:variable-name provide: MatchMedia, @@ -2980,604 +1942,1266 @@ var MockMatchMediaProvider = { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ + /** - * Special server-only class to simulate a MediaQueryList and - * - supports manual activation to simulate mediaQuery matching - * - manages listeners + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -var /** - * Special server-only class to simulate a MediaQueryList and - * - supports manual activation to simulate mediaQuery matching - * - manages listeners +/** @type {?} */ +var PRINT = 'print'; +/** @type {?} */ +var BREAKPOINT_PRINT = { + alias: PRINT, + mediaQuery: PRINT, + priority: 1000 +}; +/** + * PrintHook - Use to intercept print MediaQuery activations and force + * layouts to render with the specified print alias/breakpoint + * + * Used in MediaMarshaller and MediaObserver */ -ServerMediaQueryList = /** @class */ (function () { - function ServerMediaQueryList(_mediaQuery) { - this._mediaQuery = _mediaQuery; - this._isActive = false; - this._listeners = []; - this.onchange = null; +var PrintHook = /** @class */ (function () { + function PrintHook(breakpoints, layoutConfig, _platformId) { + this.breakpoints = breakpoints; + this.layoutConfig = layoutConfig; + this._platformId = _platformId; + // registeredBeforeAfterPrintHooks tracks if we registered the `beforeprint` + // and `afterprint` event listeners. + this.registeredBeforeAfterPrintHooks = false; + // isPrintingBeforeAfterEvent is used to track if we are printing from within + // a `beforeprint` event handler. This prevents the typicall `stopPrinting` + // form `interceptEvents` so that printing is not stopped while the dialog + // is still open. This is an extension of the `isPrinting` property on + // browsers which support `beforeprint` and `afterprint` events. + this.isPrintingBeforeAfterEvent = false; + /** + * Is this service currently in Print-mode ? + */ + this.isPrinting = false; + this.queue = new PrintQueue(); + this.deactivations = []; } - Object.defineProperty(ServerMediaQueryList.prototype, "matches", { + /** Add 'print' mediaQuery: to listen for matchMedia activations */ + /** + * Add 'print' mediaQuery: to listen for matchMedia activations + * @param {?} queries + * @return {?} + */ + PrintHook.prototype.withPrintQuery = /** + * Add 'print' mediaQuery: to listen for matchMedia activations + * @param {?} queries + * @return {?} + */ + function (queries) { + return queries.concat([PRINT]); + }; + /** Is the MediaChange event for any 'print' @media */ + /** + * Is the MediaChange event for any 'print' \@media + * @param {?} e + * @return {?} + */ + PrintHook.prototype.isPrintEvent = /** + * Is the MediaChange event for any 'print' \@media + * @param {?} e + * @return {?} + */ + function (e) { + return e.mediaQuery.startsWith(PRINT); + }; + Object.defineProperty(PrintHook.prototype, "printAlias", { + /** What is the desired mqAlias to use while printing? */ get: /** + * What is the desired mqAlias to use while printing? * @return {?} */ function () { - return this._isActive; + return this.layoutConfig.printWithBreakpoints || []; }, enumerable: true, configurable: true }); - Object.defineProperty(ServerMediaQueryList.prototype, "media", { + Object.defineProperty(PrintHook.prototype, "printBreakPoints", { + /** Lookup breakpoints associated with print aliases. */ get: /** + * Lookup breakpoints associated with print aliases. * @return {?} */ function () { - return this._mediaQuery; + var _this = this; + return (/** @type {?} */ (this.printAlias + .map((/** + * @param {?} alias + * @return {?} + */ + function (alias) { return _this.breakpoints.findByAlias(alias); })) + .filter((/** + * @param {?} bp + * @return {?} + */ + function (bp) { return bp !== null; })))); }, enumerable: true, configurable: true }); + /** Lookup breakpoint associated with mediaQuery */ + /** + * Lookup breakpoint associated with mediaQuery + * @param {?} __0 + * @return {?} + */ + PrintHook.prototype.getEventBreakpoints = /** + * Lookup breakpoint associated with mediaQuery + * @param {?} __0 + * @return {?} + */ + function (_a) { + var mediaQuery = _a.mediaQuery; + /** @type {?} */ + var bp = this.breakpoints.findByQuery(mediaQuery); + /** @type {?} */ + var list = bp ? this.printBreakPoints.concat([bp]) : this.printBreakPoints; + return list.sort(sortDescendingPriority); + }; + /** Update event with printAlias mediaQuery information */ + /** + * Update event with printAlias mediaQuery information + * @param {?} event + * @return {?} + */ + PrintHook.prototype.updateEvent = /** + * Update event with printAlias mediaQuery information + * @param {?} event + * @return {?} + */ + function (event) { + /** @type {?} */ + var bp = this.breakpoints.findByQuery(event.mediaQuery); + if (this.isPrintEvent(event)) { + // Reset from 'print' to first (highest priority) print breakpoint + bp = this.getEventBreakpoints(event)[0]; + event.mediaQuery = bp ? bp.mediaQuery : ''; + } + return mergeAlias(event, bp); + }; + // registerBeforeAfterPrintHooks registers a `beforeprint` event hook so we can + // trigger print styles synchronously and apply proper layout styles. + // It is a noop if the hooks have already been registered or the platform is + // not a browser(fallsback to mql print media queries). + // registerBeforeAfterPrintHooks registers a `beforeprint` event hook so we can + // trigger print styles synchronously and apply proper layout styles. + // It is a noop if the hooks have already been registered or the platform is + // not a browser(fallsback to mql print media queries). + /** + * @private + * @param {?} target + * @return {?} + */ + PrintHook.prototype.registerBeforeAfterPrintHooks = + // registerBeforeAfterPrintHooks registers a `beforeprint` event hook so we can + // trigger print styles synchronously and apply proper layout styles. + // It is a noop if the hooks have already been registered or the platform is + // not a browser(fallsback to mql print media queries). + /** + * @private + * @param {?} target + * @return {?} + */ + function (target) { + var _this = this; + if (!isPlatformBrowser(this._platformId) || this.registeredBeforeAfterPrintHooks) { + return; + } + this.registeredBeforeAfterPrintHooks = true; + // Could we have teardown logic to remove if there are no print listeners being used? + ((/** @type {?} */ (window))).addEventListener('beforeprint', (/** + * @return {?} + */ + function () { + // If we aren't already printing, start printing and update the styles as + // if there was a regular print `MediaChange`(from matchMedia). + if (!_this.isPrinting) { + _this.isPrintingBeforeAfterEvent = true; + _this.startPrinting(target, _this.getEventBreakpoints(new MediaChange(true, PRINT))); + target.updateStyles(); + } + })); + ((/** @type {?} */ (window))).addEventListener('afterprint', (/** + * @return {?} + */ + function () { + // If we aren't already printing, start printing and update the styles as + // if there was a regular print `MediaChange`(from matchMedia). + _this.isPrintingBeforeAfterEvent = false; + if (_this.isPrinting) { + _this.stopPrinting(target); + target.updateStyles(); + } + })); + }; + /** + * Prepare RxJs filter operator with partial application + * @return pipeable filter predicate + */ + /** + * Prepare RxJs filter operator with partial application + * @param {?} target + * @return {?} pipeable filter predicate + */ + PrintHook.prototype.interceptEvents = /** + * Prepare RxJs filter operator with partial application + * @param {?} target + * @return {?} pipeable filter predicate + */ + function (target) { + var _this = this; + this.registerBeforeAfterPrintHooks(target); + return (/** + * @param {?} event + * @return {?} + */ + function (event) { + if (_this.isPrintEvent(event)) { + if (event.matches && !_this.isPrinting) { + _this.startPrinting(target, _this.getEventBreakpoints(event)); + target.updateStyles(); + } + else if (!event.matches && _this.isPrinting && !_this.isPrintingBeforeAfterEvent) { + _this.stopPrinting(target); + target.updateStyles(); + } + } + else { + _this.collectActivations(event); + } + }); + }; + /** Stop mediaChange event propagation in event streams */ + /** + * Stop mediaChange event propagation in event streams + * @return {?} + */ + PrintHook.prototype.blockPropagation = /** + * Stop mediaChange event propagation in event streams + * @return {?} + */ + function () { + var _this = this; + return (/** + * @param {?} event + * @return {?} + */ + function (event) { + return !(_this.isPrinting || _this.isPrintEvent(event)); + }); + }; + /** + * Save current activateBreakpoints (for later restore) + * and substitute only the printAlias breakpoint + */ + /** + * Save current activateBreakpoints (for later restore) + * and substitute only the printAlias breakpoint + * @protected + * @param {?} target + * @param {?} bpList + * @return {?} + */ + PrintHook.prototype.startPrinting = /** + * Save current activateBreakpoints (for later restore) + * and substitute only the printAlias breakpoint + * @protected + * @param {?} target + * @param {?} bpList + * @return {?} + */ + function (target, bpList) { + this.isPrinting = true; + target.activatedBreakpoints = this.queue.addPrintBreakpoints(bpList); + }; + /** For any print de-activations, reset the entire print queue */ + /** + * For any print de-activations, reset the entire print queue + * @protected + * @param {?} target + * @return {?} + */ + PrintHook.prototype.stopPrinting = /** + * For any print de-activations, reset the entire print queue + * @protected + * @param {?} target + * @return {?} + */ + function (target) { + target.activatedBreakpoints = this.deactivations; + this.deactivations = []; + this.queue.clear(); + this.isPrinting = false; + }; + /** + * To restore pre-Print Activations, we must capture the proper + * list of breakpoint activations BEFORE print starts. OnBeforePrint() + * is supported; so 'print' mediaQuery activations are used as a fallback + * in browsers without `beforeprint` support. + * + * > But activated breakpoints are deactivated BEFORE 'print' activation. + * + * Let's capture all de-activations using the following logic: + * + * When not printing: + * - clear cache when activating non-print breakpoint + * - update cache (and sort) when deactivating + * + * When printing: + * - sort and save when starting print + * - restore as activatedTargets and clear when stop printing + */ + /** + * To restore pre-Print Activations, we must capture the proper + * list of breakpoint activations BEFORE print starts. OnBeforePrint() + * is supported; so 'print' mediaQuery activations are used as a fallback + * in browsers without `beforeprint` support. + * + * > But activated breakpoints are deactivated BEFORE 'print' activation. + * + * Let's capture all de-activations using the following logic: + * + * When not printing: + * - clear cache when activating non-print breakpoint + * - update cache (and sort) when deactivating + * + * When printing: + * - sort and save when starting print + * - restore as activatedTargets and clear when stop printing + * @param {?} event + * @return {?} + */ + PrintHook.prototype.collectActivations = /** + * To restore pre-Print Activations, we must capture the proper + * list of breakpoint activations BEFORE print starts. OnBeforePrint() + * is supported; so 'print' mediaQuery activations are used as a fallback + * in browsers without `beforeprint` support. + * + * > But activated breakpoints are deactivated BEFORE 'print' activation. + * + * Let's capture all de-activations using the following logic: + * + * When not printing: + * - clear cache when activating non-print breakpoint + * - update cache (and sort) when deactivating + * + * When printing: + * - sort and save when starting print + * - restore as activatedTargets and clear when stop printing + * @param {?} event + * @return {?} + */ + function (event) { + if (!this.isPrinting || this.isPrintingBeforeAfterEvent) { + if (!event.matches) { + /** @type {?} */ + var bp = this.breakpoints.findByQuery(event.mediaQuery); + if (bp) { // Deactivating a breakpoint + this.deactivations.push(bp); + this.deactivations.sort(sortDescendingPriority); + } + } + else if (!this.isPrintingBeforeAfterEvent) { + // Only clear deactivations if we aren't printing from a `beforeprint` event. + // Otherwise this will clear before `stopPrinting()` is called to restore + // the pre-Print Activations. + this.deactivations = []; + } + } + }; + PrintHook.decorators = [ + { type: Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ + PrintHook.ctorParameters = function () { return [ + { type: BreakPointRegistry }, + { type: undefined, decorators: [{ type: Inject, args: [LAYOUT_CONFIG,] }] }, + { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] } + ]; }; + /** @nocollapse */ PrintHook.ngInjectableDef = ɵɵdefineInjectable({ factory: function PrintHook_Factory() { return new PrintHook(ɵɵinject(BreakPointRegistry), ɵɵinject(LAYOUT_CONFIG), ɵɵinject(PLATFORM_ID)); }, token: PrintHook, providedIn: "root" }); + return PrintHook; +}()); +// ************************************************************************ +// Internal Utility class 'PrintQueue' +// ************************************************************************ +/** + * Utility class to manage print breakpoints + activatedBreakpoints + * with correct sorting WHILE printing + */ +var +// ************************************************************************ +// Internal Utility class 'PrintQueue' +// ************************************************************************ +/** + * Utility class to manage print breakpoints + activatedBreakpoints + * with correct sorting WHILE printing + */ +PrintQueue = /** @class */ (function () { + function PrintQueue() { + /** + * Sorted queue with prioritized print breakpoints + */ + this.printBreakpoints = []; + } + /** + * @param {?} bpList + * @return {?} + */ + PrintQueue.prototype.addPrintBreakpoints = /** + * @param {?} bpList + * @return {?} + */ + function (bpList) { + var _this = this; + bpList.push(BREAKPOINT_PRINT); + bpList.sort(sortDescendingPriority); + bpList.forEach((/** + * @param {?} bp + * @return {?} + */ + function (bp) { return _this.addBreakpoint(bp); })); + return this.printBreakpoints; + }; + /** Add Print breakpoint to queue */ + /** + * Add Print breakpoint to queue + * @param {?} bp + * @return {?} + */ + PrintQueue.prototype.addBreakpoint = /** + * Add Print breakpoint to queue + * @param {?} bp + * @return {?} + */ + function (bp) { + if (!!bp) { + /** @type {?} */ + var bpInList = this.printBreakpoints.find((/** + * @param {?} it + * @return {?} + */ + function (it) { return it.mediaQuery === bp.mediaQuery; })); + if (bpInList === undefined) { + // If this is a `printAlias` breakpoint, then append. If a true 'print' breakpoint, + // register as highest priority in the queue + this.printBreakpoints = isPrintBreakPoint(bp) ? [bp].concat(this.printBreakpoints) : this.printBreakpoints.concat([bp]); + } + } + }; + /** Restore original activated breakpoints and clear internal caches */ + /** + * Restore original activated breakpoints and clear internal caches + * @return {?} + */ + PrintQueue.prototype.clear = /** + * Restore original activated breakpoints and clear internal caches + * @return {?} + */ + function () { + this.printBreakpoints = []; + }; + return PrintQueue; +}()); +// ************************************************************************ +// Internal Utility methods +// ************************************************************************ +/** + * Only support intercept queueing if the Breakpoint is a print \@media query + * @param {?} bp + * @return {?} + */ +function isPrintBreakPoint(bp) { + return bp ? bp.mediaQuery.startsWith(PRINT) : false; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + +/** + * Wraps the provided value in an array, unless the provided value is an array. + * @template T + * @param {?} value + * @return {?} + */ +function coerceArray(value) { + return Array.isArray(value) ? value : [value]; +} + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * MediaObserver enables applications to listen for 1..n mediaQuery activations and to determine + * if a mediaQuery is currently activated. + * + * Since a breakpoint change will first deactivate 1...n mediaQueries and then possibly activate + * 1..n mediaQueries, the MediaObserver will debounce notifications and report ALL *activations* + * in 1 event notification. The reported activations will be sorted in descending priority order. + * + * This class uses the BreakPoint Registry to inject alias information into the raw MediaChange + * notification. For custom mediaQuery notifications, alias information will not be injected and + * those fields will be ''. + * + * Note: Developers should note that only mediaChange activations (not de-activations) + * are announced by the MediaObserver. + * + * \@usage + * + * // RxJS + * import { filter } from 'rxjs/operators'; + * import { MediaObserver } from '\@angular/flex-layout'; + * + * \@Component({ ... }) + * export class AppComponent { + * status: string = ''; + * + * constructor(mediaObserver: MediaObserver) { + * const media$ = mediaObserver.asObservable().pipe( + * filter((changes: MediaChange[]) => true) // silly noop filter + * ); + * + * media$.subscribe((changes: MediaChange[]) => { + * let status = ''; + * changes.forEach( change => { + * status += `'${change.mqAlias}' = (${change.mediaQuery})
` ; + * }); + * this.status = status; + * }); + * + * } + * } + */ +var MediaObserver = /** @class */ (function () { + function MediaObserver(breakpoints, matchMedia, hook) { + this.breakpoints = breakpoints; + this.matchMedia = matchMedia; + this.hook = hook; + /** + * Filter MediaChange notifications for overlapping breakpoints + */ + this.filterOverlaps = false; + this.destroyed$ = new Subject(); + this._media$ = this.watchActivations(); + this.media$ = this._media$.pipe(filter((/** + * @param {?} changes + * @return {?} + */ + function (changes) { return changes.length > 0; })), map((/** + * @param {?} changes + * @return {?} + */ + function (changes) { return changes[0]; }))); + } /** - * Destroy the current list by deactivating the - * listeners and clearing the internal list + * Completes the active subject, signalling to all complete for all + * MediaObserver subscribers */ /** - * Destroy the current list by deactivating the - * listeners and clearing the internal list + * Completes the active subject, signalling to all complete for all + * MediaObserver subscribers * @return {?} */ - ServerMediaQueryList.prototype.destroy = /** - * Destroy the current list by deactivating the - * listeners and clearing the internal list + MediaObserver.prototype.ngOnDestroy = /** + * Completes the active subject, signalling to all complete for all + * MediaObserver subscribers * @return {?} */ function () { - this.deactivate(); - this._listeners = []; + this.destroyed$.next(); + this.destroyed$.complete(); }; - /** Notify all listeners that 'matches === TRUE' */ + // ************************************************ + // Public Methods + // ************************************************ /** - * Notify all listeners that 'matches === TRUE' - * @return {?} + * Observe changes to current activation 'list' */ - ServerMediaQueryList.prototype.activate = /** - * Notify all listeners that 'matches === TRUE' - * @return {?} - */ - function () { - var _this = this; - if (!this._isActive) { - this._isActive = true; - this._listeners.forEach(function (callback) { - /** @type {?} */ - var cb = /** @type {?} */ ((callback)); - cb.call(null, _this); - }); - } - return this; - }; - /** Notify all listeners that 'matches === false' */ + // ************************************************ + // Public Methods + // ************************************************ /** - * Notify all listeners that 'matches === false' + * Observe changes to current activation 'list' * @return {?} */ - ServerMediaQueryList.prototype.deactivate = /** - * Notify all listeners that 'matches === false' + MediaObserver.prototype.asObservable = + // ************************************************ + // Public Methods + // ************************************************ + /** + * Observe changes to current activation 'list' * @return {?} */ function () { - var _this = this; - if (this._isActive) { - this._isActive = false; - this._listeners.forEach(function (callback) { - /** @type {?} */ - var cb = /** @type {?} */ ((callback)); - cb.call(null, _this); - }); - } - return this; + return this._media$; }; - /** Add a listener to our internal list to activate later */ /** - * Add a listener to our internal list to activate later - * @param {?} listener - * @return {?} - */ - ServerMediaQueryList.prototype.addListener = /** - * Add a listener to our internal list to activate later - * @param {?} listener - * @return {?} + * Allow programmatic query to determine if one or more media query/alias match + * the current viewport size. + * @param value One or more media queries (or aliases) to check. + * @returns Whether any of the media queries match. */ - function (listener) { - if (this._listeners.indexOf(listener) === -1) { - this._listeners.push(listener); - } - if (this._isActive) { - /** @type {?} */ - var cb = /** @type {?} */ ((listener)); - cb.call(null, this); - } - }; - /** Don't need to remove listeners in the server environment */ /** - * Don't need to remove listeners in the server environment - * @param {?} _ - * @return {?} + * Allow programmatic query to determine if one or more media query/alias match + * the current viewport size. + * @param {?} value One or more media queries (or aliases) to check. + * @return {?} Whether any of the media queries match. */ - ServerMediaQueryList.prototype.removeListener = /** - * Don't need to remove listeners in the server environment - * @param {?} _ - * @return {?} + MediaObserver.prototype.isActive = /** + * Allow programmatic query to determine if one or more media query/alias match + * the current viewport size. + * @param {?} value One or more media queries (or aliases) to check. + * @return {?} Whether any of the media queries match. */ - function (_) { + function (value) { + var _this = this; + /** @type {?} */ + var aliases = splitQueries(coerceArray(value)); + return aliases.some((/** + * @param {?} alias + * @return {?} + */ + function (alias) { + /** @type {?} */ + var query = toMediaQuery(alias, _this.breakpoints); + return _this.matchMedia.isActive(query); + })); }; + // ************************************************ + // Internal Methods + // ************************************************ /** - * @param {?} _ - * @param {?} __ - * @param {?=} ___ - * @return {?} - */ - ServerMediaQueryList.prototype.addEventListener = /** - * @param {?} _ - * @param {?} __ - * @param {?=} ___ - * @return {?} + * Register all the mediaQueries registered in the BreakPointRegistry + * This is needed so subscribers can be auto-notified of all standard, registered + * mediaQuery activations */ - function (_, __, ___) { - }; + // ************************************************ + // Internal Methods + // ************************************************ /** - * @param {?} _ - * @param {?} __ - * @param {?=} ___ + * Register all the mediaQueries registered in the BreakPointRegistry + * This is needed so subscribers can be auto-notified of all standard, registered + * mediaQuery activations + * @private * @return {?} */ - ServerMediaQueryList.prototype.removeEventListener = /** - * @param {?} _ - * @param {?} __ - * @param {?=} ___ + MediaObserver.prototype.watchActivations = + // ************************************************ + // Internal Methods + // ************************************************ + /** + * Register all the mediaQueries registered in the BreakPointRegistry + * This is needed so subscribers can be auto-notified of all standard, registered + * mediaQuery activations + * @private * @return {?} */ - function (_, __, ___) { + function () { + /** @type {?} */ + var queries = this.breakpoints.items.map((/** + * @param {?} bp + * @return {?} + */ + function (bp) { return bp.mediaQuery; })); + return this.buildObservable(queries); }; /** - * @param {?} _ - * @return {?} - */ - ServerMediaQueryList.prototype.dispatchEvent = /** - * @param {?} _ - * @return {?} + * Only pass/announce activations (not de-activations) + * + * Since multiple-mediaQueries can be activation in a cycle, + * gather all current activations into a single list of changes to observers + * + * Inject associated (if any) alias information into the MediaChange event + * - Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only + * - Exclude print activations that do not have an associated mediaQuery + * + * NOTE: the raw MediaChange events [from MatchMedia] do not + * contain important alias information; as such this info + * must be injected into the MediaChange */ - function (_) { - return false; - }; - return ServerMediaQueryList; -}()); -/** - * Special server-only implementation of MatchMedia that uses the above - * ServerMediaQueryList as its internal representation - * - * Also contains methods to activate and deactivate breakpoints - */ -var ServerMatchMedia = /** @class */ (function (_super) { - __extends(ServerMatchMedia, _super); - function ServerMatchMedia(_zone, _platformId, _document) { - var _this = _super.call(this, _zone, _platformId, _document) || this; - _this._zone = _zone; - _this._platformId = _platformId; - _this._document = _document; - _this._registry = new Map(); - return _this; - } - /** Activate the specified breakpoint if we're on the server, no-op otherwise */ /** - * Activate the specified breakpoint if we're on the server, no-op otherwise - * @param {?} bp + * Only pass/announce activations (not de-activations) + * + * Since multiple-mediaQueries can be activation in a cycle, + * gather all current activations into a single list of changes to observers + * + * Inject associated (if any) alias information into the MediaChange event + * - Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only + * - Exclude print activations that do not have an associated mediaQuery + * + * NOTE: the raw MediaChange events [from MatchMedia] do not + * contain important alias information; as such this info + * must be injected into the MediaChange + * @private + * @param {?} mqList * @return {?} */ - ServerMatchMedia.prototype.activateBreakpoint = /** - * Activate the specified breakpoint if we're on the server, no-op otherwise - * @param {?} bp + MediaObserver.prototype.buildObservable = /** + * Only pass/announce activations (not de-activations) + * + * Since multiple-mediaQueries can be activation in a cycle, + * gather all current activations into a single list of changes to observers + * + * Inject associated (if any) alias information into the MediaChange event + * - Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only + * - Exclude print activations that do not have an associated mediaQuery + * + * NOTE: the raw MediaChange events [from MatchMedia] do not + * contain important alias information; as such this info + * must be injected into the MediaChange + * @private + * @param {?} mqList * @return {?} */ - function (bp) { + function (mqList) { + var _this = this; /** @type {?} */ - var lookupBreakpoint = this._registry.get(bp.mediaQuery); - if (lookupBreakpoint) { - lookupBreakpoint.activate(); - } + var hasChanges = (/** + * @param {?} changes + * @return {?} + */ + function (changes) { + /** @type {?} */ + var isValidQuery = (/** + * @param {?} change + * @return {?} + */ + function (change) { return (change.mediaQuery.length > 0); }); + return (changes.filter(isValidQuery).length > 0); + }); + /** @type {?} */ + var excludeOverlaps = (/** + * @param {?} changes + * @return {?} + */ + function (changes) { + return !_this.filterOverlaps ? changes : changes.filter((/** + * @param {?} change + * @return {?} + */ + function (change) { + /** @type {?} */ + var bp = _this.breakpoints.findByQuery(change.mediaQuery); + return !bp ? true : !bp.overlapping; + })); + }); + /** + */ + return this.matchMedia + .observe(this.hook.withPrintQuery(mqList)) + .pipe(filter((/** + * @param {?} change + * @return {?} + */ + function (change) { return change.matches; })), debounceTime(0, asapScheduler), switchMap((/** + * @param {?} _ + * @return {?} + */ + function (_) { return of(_this.findAllActivations()); })), map(excludeOverlaps), filter(hasChanges), takeUntil(this.destroyed$)); }; - /** Deactivate the specified breakpoint if we're on the server, no-op otherwise */ /** - * Deactivate the specified breakpoint if we're on the server, no-op otherwise - * @param {?} bp + * Find all current activations and prepare single list of activations + * sorted by descending priority. + */ + /** + * Find all current activations and prepare single list of activations + * sorted by descending priority. + * @private * @return {?} */ - ServerMatchMedia.prototype.deactivateBreakpoint = /** - * Deactivate the specified breakpoint if we're on the server, no-op otherwise - * @param {?} bp + MediaObserver.prototype.findAllActivations = /** + * Find all current activations and prepare single list of activations + * sorted by descending priority. + * @private * @return {?} */ - function (bp) { + function () { + var _this = this; /** @type {?} */ - var lookupBreakpoint = this._registry.get(bp.mediaQuery); - if (lookupBreakpoint) { - lookupBreakpoint.deactivate(); - } + var mergeMQAlias = (/** + * @param {?} change + * @return {?} + */ + function (change) { + /** @type {?} */ + var bp = _this.breakpoints.findByQuery(change.mediaQuery); + return mergeAlias(change, bp); + }); + /** @type {?} */ + var replaceWithPrintAlias = (/** + * @param {?} change + * @return {?} + */ + function (change) { + return _this.hook.isPrintEvent(change) ? _this.hook.updateEvent(change) : change; + }); + return this.matchMedia + .activations + .map((/** + * @param {?} query + * @return {?} + */ + function (query) { return new MediaChange(true, query); })) + .map(replaceWithPrintAlias) + .map(mergeMQAlias) + .sort(sortDescendingPriority); }; - /** - * Call window.matchMedia() to build a MediaQueryList; which - * supports 0..n listeners for activation/deactivation - */ - /** - * Call window.matchMedia() to build a MediaQueryList; which - * supports 0..n listeners for activation/deactivation + MediaObserver.decorators = [ + { type: Injectable, args: [{ providedIn: 'root' },] }, + ]; + /** @nocollapse */ + MediaObserver.ctorParameters = function () { return [ + { type: BreakPointRegistry }, + { type: MatchMedia }, + { type: PrintHook } + ]; }; + /** @nocollapse */ MediaObserver.ngInjectableDef = ɵɵdefineInjectable({ factory: function MediaObserver_Factory() { return new MediaObserver(ɵɵinject(BreakPointRegistry), ɵɵinject(MatchMedia), ɵɵinject(PrintHook)); }, token: MediaObserver, providedIn: "root" }); + return MediaObserver; +}()); +/** + * Find associated breakpoint (if any) + * @param {?} query + * @param {?} locator + * @return {?} + */ +function toMediaQuery(query, locator) { + /** @type {?} */ + var bp = locator.findByAlias(query) || locator.findByQuery(query); + return bp ? bp.mediaQuery : query; +} +/** + * Split each query string into separate query strings if two queries are provided as comma + * separated. + * @param {?} queries + * @return {?} + */ +function splitQueries(queries) { + return queries.map((/** * @param {?} query * @return {?} */ - ServerMatchMedia.prototype._buildMQL = /** - * Call window.matchMedia() to build a MediaQueryList; which - * supports 0..n listeners for activation/deactivation + function (query) { return query.split(','); })) + .reduce((/** + * @param {?} a1 + * @param {?} a2 + * @return {?} + */ + function (a1, a2) { return a1.concat(a2); })) + .map((/** * @param {?} query * @return {?} */ - function (query) { - return new ServerMediaQueryList(query); - }; - ServerMatchMedia.decorators = [ - { type: Injectable }, - ]; - /** @nocollapse */ - ServerMatchMedia.ctorParameters = function () { return [ - { type: NgZone }, - { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }, - { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] } - ]; }; - return ServerMatchMedia; -}(MatchMedia)); + function (query) { return query.trim(); })); +} /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** - * MediaMonitor uses the MatchMedia service to observe mediaQuery changes (both activations and - * deactivations). These changes are are published as MediaChange notifications. - * - * Note: all notifications will be performed within the - * ng Zone to trigger change detections and component updates. - * - * It is the MediaMonitor that: - * - auto registers all known breakpoints - * - injects alias information into each raw MediaChange event - * - provides accessor to the currently active BreakPoint - * - publish list of overlapping BreakPoint(s); used by ResponsiveActivation - * @deprecated - * \@deletion-target v7.0.0-beta.21 + * Class */ -var MediaMonitor = /** @class */ (function () { - function MediaMonitor(_breakpoints, _matchMedia) { - this._breakpoints = _breakpoints; - this._matchMedia = _matchMedia; - this._registerBreakpoints(); +var MediaTrigger = /** @class */ (function () { + function MediaTrigger(breakpoints, matchMedia, layoutConfig, _platformId, _document) { + this.breakpoints = breakpoints; + this.matchMedia = matchMedia; + this.layoutConfig = layoutConfig; + this._platformId = _platformId; + this._document = _document; + this.hasCachedRegistryMatches = false; + this.originalActivations = []; + this.originalRegistry = new Map(); } - Object.defineProperty(MediaMonitor.prototype, "breakpoints", { - /** - * Read-only accessor to the list of breakpoints configured in the BreakPointRegistry provider - */ - get: /** - * Read-only accessor to the list of breakpoints configured in the BreakPointRegistry provider - * @return {?} - */ - function () { - return this._breakpoints.items.slice(); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(MediaMonitor.prototype, "activeOverlaps", { - get: /** - * @return {?} - */ - function () { - var _this = this; - return this._breakpoints.overlappings - .reverse() - .filter(function (bp) { return _this._matchMedia.isActive(bp.mediaQuery); }); - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(MediaMonitor.prototype, "active", { - get: /** - * @return {?} - */ - function () { - var _this = this; - /** @type {?} */ - var items = this.breakpoints.reverse(); - /** @type {?} */ - var first = items.find(function (bp) { return bp.alias !== '' && _this._matchMedia.isActive(bp.mediaQuery); }); - return first || null; - }, - enumerable: true, - configurable: true - }); /** - * For the specified mediaQuery alias, is the mediaQuery range active? + * Manually activate range of breakpoints + * @param list array of mediaQuery or alias strings + */ + /** + * Manually activate range of breakpoints + * @param {?} list array of mediaQuery or alias strings + * @return {?} + */ + MediaTrigger.prototype.activate = /** + * Manually activate range of breakpoints + * @param {?} list array of mediaQuery or alias strings + * @return {?} + */ + function (list) { + list = list.map((/** + * @param {?} it + * @return {?} + */ + function (it) { return it.trim(); })); // trim queries + this.saveActivations(); + this.deactivateAll(); + this.setActivations(list); + this.prepareAutoRestore(); + }; + /** + * Restore original, 'real' breakpoints and emit events + * to trigger stream notification */ /** - * For the specified mediaQuery alias, is the mediaQuery range active? - * @param {?} alias + * Restore original, 'real' breakpoints and emit events + * to trigger stream notification * @return {?} */ - MediaMonitor.prototype.isActive = /** - * For the specified mediaQuery alias, is the mediaQuery range active? - * @param {?} alias + MediaTrigger.prototype.restore = /** + * Restore original, 'real' breakpoints and emit events + * to trigger stream notification * @return {?} */ - function (alias) { - /** @type {?} */ - var bp = this._breakpoints.findByAlias(alias) || this._breakpoints.findByQuery(alias); - return this._matchMedia.isActive(bp ? bp.mediaQuery : alias); + function () { + if (this.hasCachedRegistryMatches) { + /** @type {?} */ + var extractQuery = (/** + * @param {?} change + * @return {?} + */ + function (change) { return change.mediaQuery; }); + /** @type {?} */ + var list = this.originalActivations.map(extractQuery); + try { + this.deactivateAll(); + this.restoreRegistryMatches(); + this.setActivations(list); + } + finally { + this.originalActivations = []; + if (this.resizeSubscription) { + this.resizeSubscription.unsubscribe(); + } + } + } }; + // ************************************************ + // Internal Methods + // ************************************************ /** - * External observers can watch for all (or a specific) mql changes. - * If specific breakpoint is observed, only return *activated* events - * otherwise return all events for BOTH activated + deactivated changes. + * Whenever window resizes, immediately auto-restore original + * activations (if we are simulating activations) */ + // ************************************************ + // Internal Methods + // ************************************************ /** - * External observers can watch for all (or a specific) mql changes. - * If specific breakpoint is observed, only return *activated* events - * otherwise return all events for BOTH activated + deactivated changes. - * @param {?=} alias + * Whenever window resizes, immediately auto-restore original + * activations (if we are simulating activations) + * @private * @return {?} */ - MediaMonitor.prototype.observe = /** - * External observers can watch for all (or a specific) mql changes. - * If specific breakpoint is observed, only return *activated* events - * otherwise return all events for BOTH activated + deactivated changes. - * @param {?=} alias + MediaTrigger.prototype.prepareAutoRestore = + // ************************************************ + // Internal Methods + // ************************************************ + /** + * Whenever window resizes, immediately auto-restore original + * activations (if we are simulating activations) + * @private * @return {?} */ - function (alias) { - if (alias === void 0) { alias = ''; } - /** @type {?} */ - var bp = this._breakpoints.findByAlias(alias) || this._breakpoints.findByQuery(alias); + function () { /** @type {?} */ - var hasAlias = function (change) { return (bp ? change.mqAlias !== '' : true); }; + var isBrowser = isPlatformBrowser(this._platformId) && this._document; /** @type {?} */ - var media$ = this._matchMedia.observe(bp ? bp.mediaQuery : alias); - return media$.pipe(map(function (change) { return mergeAlias(change, bp); }), filter(hasAlias)); + var enableAutoRestore = isBrowser && this.layoutConfig.mediaTriggerAutoRestore; + if (enableAutoRestore) { + /** @type {?} */ + var resize$ = fromEvent(window, 'resize').pipe(take(1)); + this.resizeSubscription = resize$.subscribe(this.restore.bind(this)); + } }; /** - * Immediate calls to matchMedia() to establish listeners - * and prepare for immediate subscription notifications + * Notify all matchMedia subscribers of de-activations + * + * Note: we must force 'matches' updates for + * future matchMedia::activation lookups + */ + /** + * Notify all matchMedia subscribers of de-activations + * + * Note: we must force 'matches' updates for + * future matchMedia::activation lookups + * @private * @return {?} */ - MediaMonitor.prototype._registerBreakpoints = /** - * Immediate calls to matchMedia() to establish listeners - * and prepare for immediate subscription notifications + MediaTrigger.prototype.deactivateAll = /** + * Notify all matchMedia subscribers of de-activations + * + * Note: we must force 'matches' updates for + * future matchMedia::activation lookups + * @private * @return {?} */ function () { /** @type {?} */ - var queries = this._breakpoints.sortedItems.map(function (bp) { return bp.mediaQuery; }); - this._matchMedia.registerQuery(queries); + var list = this.currentActivations; + this.forceRegistryMatches(list, false); + this.simulateMediaChanges(list, false); }; - MediaMonitor.decorators = [ - { type: Injectable, args: [{ providedIn: 'root' },] }, - ]; - /** @nocollapse */ - MediaMonitor.ctorParameters = function () { return [ - { type: BreakPointRegistry }, - { type: MatchMedia } - ]; }; - /** @nocollapse */ MediaMonitor.ngInjectableDef = defineInjectable({ factory: function MediaMonitor_Factory() { return new MediaMonitor(inject(BreakPointRegistry), inject(MatchMedia)); }, token: MediaMonitor, providedIn: "root" }); - return MediaMonitor; -}()); - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ - -/** - * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc - */ -/** - * Class internalizes a MatchMedia service and exposes an Observable interface. - * This exposes an Observable with a feature to subscribe to mediaQuery - * changes and a validator method (`isActive()`) to test if a mediaQuery (or alias) is - * currently active. - * - * !! Only mediaChange activations (not de-activations) are announced by the MediaObserver - * - * This class uses the BreakPoint Registry to inject alias information into the raw MediaChange - * notification. For custom mediaQuery notifications, alias information will not be injected and - * those fields will be ''. - * - * !! This is not an actual Observable. It is a wrapper of an Observable used to publish additional - * methods like `isActive(). To access the Observable and use RxJS operators, use - * `.media$` with syntax like mediaObserver.media$.map(....). - * - * \@usage - * - * // RxJS - * import { filter } from 'rxjs/operators'; - * import { MediaObserver } from '\@angular/flex-layout'; - * - * \@Component({ ... }) - * export class AppComponent { - * status: string = ''; - * - * constructor(mediaObserver: MediaObserver) { - * const onChange = (change: MediaChange) => { - * this.status = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : ''; - * }; - * - * // Subscribe directly or access observable to use filter/map operators - * // e.g. mediaObserver.media$.subscribe(onChange); - * - * mediaObserver.media$() - * .pipe( - * filter((change: MediaChange) => true) // silly noop filter - * ).subscribe(onChange); - * } - * } - */ -var MediaObserver = /** @class */ (function () { - function MediaObserver(breakpoints, mediaWatcher) { - this.breakpoints = breakpoints; - this.mediaWatcher = mediaWatcher; - /** - * Whether to announce gt- breakpoint activations - */ - this.filterOverlaps = true; - this._registerBreakPoints(); - this.media$ = this._buildObservable(); - } /** - * Test if specified query/alias is active. + * Cache current activations as sorted, prioritized list of MediaChanges */ /** - * Test if specified query/alias is active. - * @param {?} alias + * Cache current activations as sorted, prioritized list of MediaChanges + * @private * @return {?} */ - MediaObserver.prototype.isActive = /** - * Test if specified query/alias is active. - * @param {?} alias + MediaTrigger.prototype.saveActivations = /** + * Cache current activations as sorted, prioritized list of MediaChanges + * @private * @return {?} */ - function (alias) { - return this.mediaWatcher.isActive(this._toMediaQuery(alias)); + function () { + var _this = this; + if (!this.hasCachedRegistryMatches) { + /** @type {?} */ + var toMediaChange = (/** + * @param {?} query + * @return {?} + */ + function (query) { return new MediaChange(true, query); }); + /** @type {?} */ + var mergeMQAlias = (/** + * @param {?} change + * @return {?} + */ + function (change) { + /** @type {?} */ + var bp = _this.breakpoints.findByQuery(change.mediaQuery); + return mergeAlias(change, bp); + }); + this.originalActivations = this.currentActivations + .map(toMediaChange) + .map(mergeMQAlias) + .sort(sortDescendingPriority); + this.cacheRegistryMatches(); + } }; /** - * Register all the mediaQueries registered in the BreakPointRegistry - * This is needed so subscribers can be auto-notified of all standard, registered - * mediaQuery activations + * Force set manual activations for specified mediaQuery list + */ + /** + * Force set manual activations for specified mediaQuery list + * @private + * @param {?} list * @return {?} */ - MediaObserver.prototype._registerBreakPoints = /** - * Register all the mediaQueries registered in the BreakPointRegistry - * This is needed so subscribers can be auto-notified of all standard, registered - * mediaQuery activations + MediaTrigger.prototype.setActivations = /** + * Force set manual activations for specified mediaQuery list + * @private + * @param {?} list * @return {?} */ - function () { - /** @type {?} */ - var queries = this.breakpoints.sortedItems.map(function (bp) { return bp.mediaQuery; }); - this.mediaWatcher.registerQuery(queries); + function (list) { + if (!!this.originalRegistry) { + this.forceRegistryMatches(list, true); + } + this.simulateMediaChanges(list); }; /** - * Prepare internal observable - * - * NOTE: the raw MediaChange events [from MatchMedia] do not - * contain important alias information; as such this info - * must be injected into the MediaChange + * For specified mediaQuery list manually simulate activations or deactivations + */ + /** + * For specified mediaQuery list manually simulate activations or deactivations + * @private + * @param {?} queries + * @param {?=} matches * @return {?} */ - MediaObserver.prototype._buildObservable = /** - * Prepare internal observable - * - * NOTE: the raw MediaChange events [from MatchMedia] do not - * contain important alias information; as such this info - * must be injected into the MediaChange + MediaTrigger.prototype.simulateMediaChanges = /** + * For specified mediaQuery list manually simulate activations or deactivations + * @private + * @param {?} queries + * @param {?=} matches * @return {?} */ - function () { + function (queries, matches) { var _this = this; + if (matches === void 0) { matches = true; } /** @type {?} */ - var excludeOverlaps = function (change) { + var toMediaQuery = (/** + * @param {?} query + * @return {?} + */ + function (query) { /** @type {?} */ - var bp = _this.breakpoints.findByQuery(change.mediaQuery); - return !bp ? true : !(_this.filterOverlaps && bp.overlapping); - }; - /** - * Only pass/announce activations (not de-activations) - * Inject associated (if any) alias information into the MediaChange event - * Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only - */ - return this.mediaWatcher.observe() - .pipe(filter(function (change) { return change.matches; }), filter(excludeOverlaps), map(function (change) { - return mergeAlias(change, _this._findByQuery(change.mediaQuery)); + var locator = _this.breakpoints; + /** @type {?} */ + var bp = locator.findByAlias(query) || locator.findByQuery(query); + return bp ? bp.mediaQuery : query; + }); + /** @type {?} */ + var emitChangeEvent = (/** + * @param {?} query + * @return {?} + */ + function (query) { return _this.emitChangeEvent(matches, query); }); + queries.map(toMediaQuery).forEach(emitChangeEvent); + }; + /** + * Replace current registry with simulated registry... + * Note: this is required since MediaQueryList::matches is 'readOnly' + */ + /** + * Replace current registry with simulated registry... + * Note: this is required since MediaQueryList::matches is 'readOnly' + * @private + * @param {?} queries + * @param {?} matches + * @return {?} + */ + MediaTrigger.prototype.forceRegistryMatches = /** + * Replace current registry with simulated registry... + * Note: this is required since MediaQueryList::matches is 'readOnly' + * @private + * @param {?} queries + * @param {?} matches + * @return {?} + */ + function (queries, matches) { + /** @type {?} */ + var registry = new Map(); + queries.forEach((/** + * @param {?} query + * @return {?} + */ + function (query) { + registry.set(query, (/** @type {?} */ ({ matches: matches }))); })); + this.matchMedia.registry = registry; }; /** - * Breakpoint locator by alias - * @param {?} alias + * Save current MatchMedia::registry items. + */ + /** + * Save current MatchMedia::registry items. + * @private * @return {?} */ - MediaObserver.prototype._findByAlias = /** - * Breakpoint locator by alias - * @param {?} alias + MediaTrigger.prototype.cacheRegistryMatches = /** + * Save current MatchMedia::registry items. + * @private * @return {?} */ - function (alias) { - return this.breakpoints.findByAlias(alias); + function () { + /** @type {?} */ + var target = this.originalRegistry; + target.clear(); + this.matchMedia.registry.forEach((/** + * @param {?} value + * @param {?} key + * @return {?} + */ + function (value, key) { + target.set(key, value); + })); + this.hasCachedRegistryMatches = true; }; /** - * Breakpoint locator by mediaQuery - * @param {?} query + * Restore original, 'true' registry + */ + /** + * Restore original, 'true' registry + * @private * @return {?} */ - MediaObserver.prototype._findByQuery = /** - * Breakpoint locator by mediaQuery - * @param {?} query + MediaTrigger.prototype.restoreRegistryMatches = /** + * Restore original, 'true' registry + * @private * @return {?} */ - function (query) { - return this.breakpoints.findByQuery(query); + function () { + /** @type {?} */ + var target = this.matchMedia.registry; + target.clear(); + this.originalRegistry.forEach((/** + * @param {?} value + * @param {?} key + * @return {?} + */ + function (value, key) { + target.set(key, value); + })); + this.originalRegistry.clear(); + this.hasCachedRegistryMatches = false; }; /** - * Find associated breakpoint (if any) + * Manually emit a MediaChange event via the MatchMedia to MediaMarshaller and MediaObserver + */ + /** + * Manually emit a MediaChange event via the MatchMedia to MediaMarshaller and MediaObserver + * @private + * @param {?} matches * @param {?} query * @return {?} */ - MediaObserver.prototype._toMediaQuery = /** - * Find associated breakpoint (if any) + MediaTrigger.prototype.emitChangeEvent = /** + * Manually emit a MediaChange event via the MatchMedia to MediaMarshaller and MediaObserver + * @private + * @param {?} matches * @param {?} query * @return {?} */ - function (query) { - /** @type {?} */ - var bp = this._findByAlias(query) || this._findByQuery(query); - return bp ? bp.mediaQuery : query; + function (matches, query) { + this.matchMedia.source.next(new MediaChange(matches, query)); }; - MediaObserver.decorators = [ + Object.defineProperty(MediaTrigger.prototype, "currentActivations", { + get: /** + * @private + * @return {?} + */ + function () { + return this.matchMedia.activations; + }, + enumerable: true, + configurable: true + }); + MediaTrigger.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; /** @nocollapse */ - MediaObserver.ctorParameters = function () { return [ + MediaTrigger.ctorParameters = function () { return [ { type: BreakPointRegistry }, - { type: MatchMedia } + { type: MatchMedia }, + { type: undefined, decorators: [{ type: Inject, args: [LAYOUT_CONFIG,] }] }, + { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }, + { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] } ]; }; - /** @nocollapse */ MediaObserver.ngInjectableDef = defineInjectable({ factory: function MediaObserver_Factory() { return new MediaObserver(inject(BreakPointRegistry), inject(MatchMedia)); }, token: MediaObserver, providedIn: "root" }); - return MediaObserver; + /** @nocollapse */ MediaTrigger.ngInjectableDef = ɵɵdefineInjectable({ factory: function MediaTrigger_Factory() { return new MediaTrigger(ɵɵinject(BreakPointRegistry), ɵɵinject(MatchMedia), ɵɵinject(LAYOUT_CONFIG), ɵɵinject(PLATFORM_ID), ɵɵinject(DOCUMENT)); }, token: MediaTrigger, providedIn: "root" }); + return MediaTrigger; }()); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ + /** * Applies CSS prefixes to appropriate style keys. * @@ -3641,7 +3265,7 @@ function applyCssPrefixes(target) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var StyleUtils = /** @class */ (function () { function StyleUtils(_serverStylesheet, _serverModuleLoaded, _platformId, layoutConfig) { @@ -3698,9 +3322,13 @@ var StyleUtils = /** @class */ (function () { if (elements === void 0) { elements = []; } /** @type {?} */ var styles = this.layoutConfig.disableVendorPrefixes ? style : applyCssPrefixes(style); - elements.forEach(function (el) { + elements.forEach((/** + * @param {?} el + * @return {?} + */ + function (el) { _this._applyMultiValueStyleToElement(styles, el); - }); + })); }; /** * Determine the DOM element's Flexbox flow (flex-direction) @@ -3810,12 +3438,18 @@ var StyleUtils = /** @class */ (function () { } // Note: 'inline' is the default of all elements, unless UA stylesheet overrides; // in which case getComputedStyle() should determine a valid value. - return value.trim(); + return value ? value.trim() : ''; }; /** * Applies the styles to the element. The styles object map may contain an array of values * Each value will be added as element style * Keys are sorted to add prefixed styles (like -webkit-x) first, before the standard ones + */ + /** + * Applies the styles to the element. The styles object map may contain an array of values + * Each value will be added as element style + * Keys are sorted to add prefixed styles (like -webkit-x) first, before the standard ones + * @private * @param {?} styles * @param {?} element * @return {?} @@ -3824,13 +3458,18 @@ var StyleUtils = /** @class */ (function () { * Applies the styles to the element. The styles object map may contain an array of values * Each value will be added as element style * Keys are sorted to add prefixed styles (like -webkit-x) first, before the standard ones + * @private * @param {?} styles * @param {?} element * @return {?} */ function (styles, element) { var _this = this; - Object.keys(styles).sort().forEach(function (key) { + Object.keys(styles).sort().forEach((/** + * @param {?} key + * @return {?} + */ + function (key) { /** @type {?} */ var el = styles[key]; /** @type {?} */ @@ -3847,15 +3486,17 @@ var StyleUtils = /** @class */ (function () { _this._serverStylesheet.addStyleToElement(element, key, value); } } - }); + })); }; /** + * @private * @param {?} element * @param {?} styleName * @param {?=} styleValue * @return {?} */ StyleUtils.prototype._setServerStyle = /** + * @private * @param {?} element * @param {?} styleName * @param {?=} styleValue @@ -3869,11 +3510,13 @@ var StyleUtils = /** @class */ (function () { this._writeStyleAttribute(element, styleMap); }; /** + * @private * @param {?} element * @param {?} styleName * @return {?} */ StyleUtils.prototype._getServerStyle = /** + * @private * @param {?} element * @param {?} styleName * @return {?} @@ -3884,10 +3527,12 @@ var StyleUtils = /** @class */ (function () { return styleMap[styleName] || ''; }; /** + * @private * @param {?} element * @return {?} */ StyleUtils.prototype._readStyleAttribute = /** + * @private * @param {?} element * @return {?} */ @@ -3917,11 +3562,13 @@ var StyleUtils = /** @class */ (function () { return styleMap; }; /** + * @private * @param {?} element * @param {?} styleMap * @return {?} */ StyleUtils.prototype._writeStyleAttribute = /** + * @private * @param {?} element * @param {?} styleMap * @return {?} @@ -3948,13 +3595,13 @@ var StyleUtils = /** @class */ (function () { { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }, { type: undefined, decorators: [{ type: Inject, args: [LAYOUT_CONFIG,] }] } ]; }; - /** @nocollapse */ StyleUtils.ngInjectableDef = defineInjectable({ factory: function StyleUtils_Factory() { return new StyleUtils(inject(StylesheetMap, 8), inject(SERVER_TOKEN, 8), inject(PLATFORM_ID), inject(LAYOUT_CONFIG)); }, token: StyleUtils, providedIn: "root" }); + /** @nocollapse */ StyleUtils.ngInjectableDef = ɵɵdefineInjectable({ factory: function StyleUtils_Factory() { return new StyleUtils(ɵɵinject(StylesheetMap, 8), ɵɵinject(SERVER_TOKEN, 8), ɵɵinject(PLATFORM_ID), ɵɵinject(LAYOUT_CONFIG)); }, token: StyleUtils, providedIn: "root" }); return StyleUtils; }()); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * A class that encapsulates CSS style generation for common directives @@ -4001,7 +3648,7 @@ StyleBuilder = /** @class */ (function () { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @@ -4059,29 +3706,30 @@ function _validateCalcValue(calc) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * MediaMarshaller - register responsive values from directives and * trigger them based on media query events */ var MediaMarshaller = /** @class */ (function () { - function MediaMarshaller(matchMedia, breakpoints) { + function MediaMarshaller(matchMedia, breakpoints, hook) { this.matchMedia = matchMedia; this.breakpoints = breakpoints; + this.hook = hook; this.activatedBreakpoints = []; this.elementMap = new Map(); this.elementKeyMap = new WeakMap(); - this.watcherMap = new WeakMap(); - this.builderMap = new WeakMap(); - this.clearBuilderMap = new WeakMap(); + this.watcherMap = new WeakMap(); // special triggers to update elements + // special triggers to update elements + this.updateMap = new WeakMap(); // callback functions to update styles + // callback functions to update styles + this.clearMap = new WeakMap(); // callback functions to clear styles + // callback functions to clear styles this.subject = new Subject(); - this.matchMedia - .observe() - .subscribe(this.activate.bind(this)); - this.registerBreakpoints(); + this.observeActivations(); } - Object.defineProperty(MediaMarshaller.prototype, "activatedBreakpoint", { + Object.defineProperty(MediaMarshaller.prototype, "activatedAlias", { get: /** * @return {?} */ @@ -4092,16 +3740,16 @@ var MediaMarshaller = /** @class */ (function () { configurable: true }); /** - * activate or deactivate a given breakpoint + * Update styles on breakpoint activates or deactivates * @param mc */ /** - * activate or deactivate a given breakpoint + * Update styles on breakpoint activates or deactivates * @param {?} mc * @return {?} */ - MediaMarshaller.prototype.activate = /** - * activate or deactivate a given breakpoint + MediaMarshaller.prototype.onMediaChange = /** + * Update styles on breakpoint activates or deactivates * @param {?} mc * @return {?} */ @@ -4109,14 +3757,16 @@ var MediaMarshaller = /** @class */ (function () { /** @type {?} */ var bp = this.findByQuery(mc.mediaQuery); if (bp) { + mc = mergeAlias(mc, bp); if (mc.matches && this.activatedBreakpoints.indexOf(bp) === -1) { this.activatedBreakpoints.push(bp); - this.activatedBreakpoints.sort(prioritySort); + this.activatedBreakpoints.sort(sortDescendingPriority); this.updateStyles(); } else if (!mc.matches && this.activatedBreakpoints.indexOf(bp) !== -1) { // Remove the breakpoint when it's deactivated this.activatedBreakpoints.splice(this.activatedBreakpoints.indexOf(bp), 1); + this.activatedBreakpoints.sort(sortDescendingPriority); this.updateStyles(); } } @@ -4149,9 +3799,9 @@ var MediaMarshaller = /** @class */ (function () { */ function (element, key, updateFn, clearFn, extraTriggers) { if (extraTriggers === void 0) { extraTriggers = []; } + initBuilderMap(this.updateMap, element, key, updateFn); + initBuilderMap(this.clearMap, element, key, clearFn); this.buildElementKeyMap(element, key); - initBuilderMap(this.builderMap, element, key, updateFn); - initBuilderMap(this.clearBuilderMap, element, key, clearFn); this.watchExtraTriggers(element, key, extraTriggers); }; /** @@ -4179,14 +3829,12 @@ var MediaMarshaller = /** @class */ (function () { var bpMap = this.elementMap.get(element); if (bpMap) { /** @type {?} */ - var values = bp !== undefined ? bpMap.get(bp) : this.getFallback(bpMap, key); + var values = bp !== undefined ? bpMap.get(bp) : this.getActivatedValues(bpMap, key); if (values) { - /** @type {?} */ - var value = values.get(key); - return value !== undefined ? value : ''; + return values.get(key); } } - return ''; + return undefined; }; /** * whether the element has values for a given key @@ -4210,7 +3858,7 @@ var MediaMarshaller = /** @class */ (function () { var bpMap = this.elementMap.get(element); if (bpMap) { /** @type {?} */ - var values = this.getFallback(bpMap, key); + var values = this.getActivatedValues(bpMap, key); if (values) { return values.get(key) !== undefined || false; } @@ -4253,7 +3901,11 @@ var MediaMarshaller = /** @class */ (function () { bpMap.set(bp, values); this.elementMap.set(element, bpMap); } - this.updateElement(element, key, this.getValue(element, key)); + /** @type {?} */ + var value = this.getValue(element, key); + if (value !== undefined) { + this.updateElement(element, key, value); + } }; /** Track element value changes for a specific key */ /** @@ -4269,8 +3921,13 @@ var MediaMarshaller = /** @class */ (function () { * @return {?} */ function (element, key) { - return this.subject.asObservable() - .pipe(filter(function (v) { return v.element === element && v.key === key; })); + return this.subject + .asObservable() + .pipe(filter((/** + * @param {?} v + * @return {?} + */ + function (v) { return v.element === element && v.key === key; }))); }; /** update all styles for all elements on the current breakpoint */ /** @@ -4283,30 +3940,43 @@ var MediaMarshaller = /** @class */ (function () { */ function () { var _this = this; - this.elementMap.forEach(function (bpMap, el) { + this.elementMap.forEach((/** + * @param {?} bpMap + * @param {?} el + * @return {?} + */ + function (bpMap, el) { /** @type {?} */ - var valueMap = _this.getFallback(bpMap); + var keyMap = new Set((/** @type {?} */ (_this.elementKeyMap.get(el)))); /** @type {?} */ - var keyMap = new Set(/** @type {?} */ ((_this.elementKeyMap.get(el)))); + var valueMap = _this.getActivatedValues(bpMap); if (valueMap) { - valueMap.forEach(function (v, k) { + valueMap.forEach((/** + * @param {?} v + * @param {?} k + * @return {?} + */ + function (v, k) { _this.updateElement(el, k, v); keyMap.delete(k); - }); + })); } - keyMap.forEach(function (k) { - /** @type {?} */ - var fallbackMap = _this.getFallback(bpMap, k); - if (fallbackMap) { + keyMap.forEach((/** + * @param {?} k + * @return {?} + */ + function (k) { + valueMap = _this.getActivatedValues(bpMap, k); + if (valueMap) { /** @type {?} */ - var value = fallbackMap.get(k); + var value = valueMap.get(k); _this.updateElement(el, k, value); } else { _this.clearElement(el, k); } - }); - }); + })); + })); }; /** * clear the styles for a given element @@ -4327,12 +3997,12 @@ var MediaMarshaller = /** @class */ (function () { */ function (element, key) { /** @type {?} */ - var builders = this.clearBuilderMap.get(element); + var builders = this.clearMap.get(element); if (builders) { /** @type {?} */ - var builder = builders.get(key); - if (builder) { - builder(); + var clearFn = (/** @type {?} */ (builders.get(key))); + if (!!clearFn) { + clearFn(); this.subject.next({ element: element, key: key, value: '' }); } } @@ -4359,12 +4029,12 @@ var MediaMarshaller = /** @class */ (function () { */ function (element, key, value) { /** @type {?} */ - var builders = this.builderMap.get(element); + var builders = this.updateMap.get(element); if (builders) { /** @type {?} */ - var builder = builders.get(key); - if (builder) { - builder(value); + var updateFn = (/** @type {?} */ (builders.get(key))); + if (!!updateFn) { + updateFn(value); this.subject.next({ element: element, key: key, value: value }); } } @@ -4387,24 +4057,75 @@ var MediaMarshaller = /** @class */ (function () { /** @type {?} */ var watcherMap = this.watcherMap.get(element); if (watcherMap) { - watcherMap.forEach(function (s) { return s.unsubscribe(); }); + watcherMap.forEach((/** + * @param {?} s + * @return {?} + */ + function (s) { return s.unsubscribe(); })); this.watcherMap.delete(element); } /** @type {?} */ var elementMap = this.elementMap.get(element); if (elementMap) { - elementMap.forEach(function (_, s) { return elementMap.delete(s); }); + elementMap.forEach((/** + * @param {?} _ + * @param {?} s + * @return {?} + */ + function (_, s) { return elementMap.delete(s); })); this.elementMap.delete(element); } }; + /** + * trigger an update for a given element and key (e.g. layout) + * @param element + * @param key + */ + /** + * trigger an update for a given element and key (e.g. layout) + * @param {?} element + * @param {?=} key + * @return {?} + */ + MediaMarshaller.prototype.triggerUpdate = /** + * trigger an update for a given element and key (e.g. layout) + * @param {?} element + * @param {?=} key + * @return {?} + */ + function (element, key) { + var _this = this; + /** @type {?} */ + var bpMap = this.elementMap.get(element); + if (bpMap) { + /** @type {?} */ + var valueMap = this.getActivatedValues(bpMap, key); + if (valueMap) { + if (key) { + this.updateElement(element, key, valueMap.get(key)); + } + else { + valueMap.forEach((/** + * @param {?} v + * @param {?} k + * @return {?} + */ + function (v, k) { return _this.updateElement(element, k, v); })); + } + } + } + }; + /** Cross-reference for HTMLElement with directive key */ /** * Cross-reference for HTMLElement with directive key + * @private * @param {?} element * @param {?} key * @return {?} */ MediaMarshaller.prototype.buildElementKeyMap = /** * Cross-reference for HTMLElement with directive key + * @private * @param {?} element * @param {?} key * @return {?} @@ -4423,6 +4144,13 @@ var MediaMarshaller = /** @class */ (function () { * - directionality * - layout changes * - mutationobserver updates + */ + /** + * Other triggers that should force style updates: + * - directionality + * - layout changes + * - mutationobserver updates + * @private * @param {?} element * @param {?} key * @param {?} triggers @@ -4433,6 +4161,7 @@ var MediaMarshaller = /** @class */ (function () { * - directionality * - layout changes * - mutationobserver updates + * @private * @param {?} element * @param {?} key * @param {?} triggers @@ -4451,22 +4180,28 @@ var MediaMarshaller = /** @class */ (function () { var subscription = watchers.get(key); if (!subscription) { /** @type {?} */ - var newSubscription = merge.apply(void 0, triggers).subscribe(function () { + var newSubscription = merge.apply(void 0, triggers).subscribe((/** + * @return {?} + */ + function () { /** @type {?} */ var currentValue = _this.getValue(element, key); _this.updateElement(element, key, currentValue); - }); + })); watchers.set(key, newSubscription); } } }; + /** Breakpoint locator by mediaQuery */ /** * Breakpoint locator by mediaQuery + * @private * @param {?} query * @return {?} */ MediaMarshaller.prototype.findByQuery = /** * Breakpoint locator by mediaQuery + * @private * @param {?} query * @return {?} */ @@ -4475,12 +4210,19 @@ var MediaMarshaller = /** @class */ (function () { }; /** * get the fallback breakpoint for a given element, starting with the current breakpoint + * @param bpMap + * @param key + */ + /** + * get the fallback breakpoint for a given element, starting with the current breakpoint + * @private * @param {?} bpMap * @param {?=} key * @return {?} */ - MediaMarshaller.prototype.getFallback = /** + MediaMarshaller.prototype.getActivatedValues = /** * get the fallback breakpoint for a given element, starting with the current breakpoint + * @private * @param {?} bpMap * @param {?=} key * @return {?} @@ -4497,18 +4239,36 @@ var MediaMarshaller = /** @class */ (function () { } } } - return bpMap.get(''); + /** @type {?} */ + var lastHope = bpMap.get(''); + return (key === undefined || lastHope && lastHope.has(key)) ? lastHope : undefined; }; /** + * Watch for mediaQuery breakpoint activations + */ + /** + * Watch for mediaQuery breakpoint activations + * @private * @return {?} */ - MediaMarshaller.prototype.registerBreakpoints = /** + MediaMarshaller.prototype.observeActivations = /** + * Watch for mediaQuery breakpoint activations + * @private * @return {?} */ function () { /** @type {?} */ - var queries = this.breakpoints.sortedItems.map(function (bp) { return bp.mediaQuery; }); - this.matchMedia.registerQuery(queries); + var target = (/** @type {?} */ ((/** @type {?} */ (this)))); + /** @type {?} */ + var queries = this.breakpoints.items.map((/** + * @param {?} bp + * @return {?} + */ + function (bp) { return bp.mediaQuery; })); + this.matchMedia + .observe(this.hook.withPrintQuery(queries)) + .pipe(tap(this.hook.interceptEvents(target)), filter(this.hook.blockPropagation())) + .subscribe(this.onMediaChange.bind(this)); }; MediaMarshaller.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, @@ -4516,9 +4276,10 @@ var MediaMarshaller = /** @class */ (function () { /** @nocollapse */ MediaMarshaller.ctorParameters = function () { return [ { type: MatchMedia }, - { type: BreakPointRegistry } + { type: BreakPointRegistry }, + { type: PrintHook } ]; }; - /** @nocollapse */ MediaMarshaller.ngInjectableDef = defineInjectable({ factory: function MediaMarshaller_Factory() { return new MediaMarshaller(inject(MatchMedia), inject(BreakPointRegistry)); }, token: MediaMarshaller, providedIn: "root" }); + /** @nocollapse */ MediaMarshaller.ngInjectableDef = ɵɵdefineInjectable({ factory: function MediaMarshaller_Factory() { return new MediaMarshaller(ɵɵinject(MatchMedia), ɵɵinject(BreakPointRegistry), ɵɵinject(PrintHook)); }, token: MediaMarshaller, providedIn: "root" }); return MediaMarshaller; }()); /** @@ -4542,13 +4303,13 @@ function initBuilderMap(map$$1, element, key, input) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -export { removeStyles, BROWSER_PROVIDER, CLASS_NAME, CoreModule, MediaChange, StylesheetMap, DEFAULT_CONFIG, LAYOUT_CONFIG, SERVER_TOKEN, BREAKPOINT, BaseDirective, BaseDirectiveAdapter, BaseDirective2, prioritySort, RESPONSIVE_ALIASES, DEFAULT_BREAKPOINTS, ScreenTypes, ORIENTATION_BREAKPOINTS, BreakPointRegistry, BREAKPOINTS, MatchMedia, MockMatchMedia, MockMediaQueryList, MockMatchMediaProvider, ServerMediaQueryList, ServerMatchMedia, MediaMonitor, ObservableMedia, MediaService, ObservableMediaProvider, MediaObserver, KeyOptions, ResponsiveActivation, StyleUtils, StyleBuilder, validateBasis, MediaMarshaller }; +export { MatchMedia as ɵMatchMedia, MockMatchMedia as ɵMockMatchMedia, MockMatchMediaProvider as ɵMockMatchMediaProvider, CoreModule, removeStyles, BROWSER_PROVIDER, CLASS_NAME, MediaChange, StylesheetMap, DEFAULT_CONFIG, LAYOUT_CONFIG, SERVER_TOKEN, BREAKPOINT, mergeAlias, BaseDirective2, DEFAULT_BREAKPOINTS, ScreenTypes, ORIENTATION_BREAKPOINTS, BreakPointRegistry, BREAKPOINTS, MediaObserver, MediaTrigger, sortDescendingPriority, sortAscendingPriority, coerceArray, StyleUtils, StyleBuilder, validateBasis, MediaMarshaller, BREAKPOINT_PRINT, PrintHook }; //# sourceMappingURL=core.es5.js.map diff --git a/esm5/core.es5.js.map b/esm5/core.es5.js.map index 082504b3d..4468ed15b 100644 --- a/esm5/core.es5.js.map +++ b/esm5/core.es5.js.map @@ -1 +1 @@ -{"version":3,"file":"core.es5.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-observer/media-observer.ts","../../../src/lib/core/media-monitor/media-monitor.ts","../../../src/lib/core/match-media/server-match-media.ts","../../../src/lib/core/match-media/mock/mock-match-media.ts","../../../src/lib/core/base/base2.ts","../../../src/lib/core/base/base-adapter.ts","../../../src/lib/core/base/base.ts","../../../src/lib/core/responsive-activation/responsive-activation.ts","../../../src/lib/utils/layout-validator.ts","../../../src/lib/core/tokens/server-token.ts","../../../src/lib/core/stylesheet-map/stylesheet-map.ts","../../../src/lib/core/module.ts","../../../src/lib/core/observable-media/observable-media.ts","../../../src/lib/core/add-alias.ts","../../../src/lib/core/match-media/match-media.ts","../../../src/lib/core/media-change.ts","../../../src/lib/core/breakpoints/break-point-registry.ts","../../../src/lib/core/breakpoints/break-points-token.ts","../../../src/lib/core/tokens/library-config.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/tokens/breakpoint-token.ts","../../../src/lib/core/browser-provider.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Injectable} from '@angular/core';\nimport {merge, Observable, Subject, Subscription} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nimport {BreakPoint} from '../breakpoints/break-point';\nimport {prioritySort} from '../breakpoints/breakpoint-tools';\nimport {BreakPointRegistry} from '../breakpoints/break-point-registry';\nimport {MatchMedia} from '../match-media/match-media';\nimport {MediaChange} from '../media-change';\n\ntype Builder = Function;\ntype ClearCallback = () => void;\ntype UpdateCallback = (val: any) => void;\ntype ValueMap = Map;\ntype BreakpointMap = Map;\ntype ElementMap = Map;\ntype ElementKeyMap = WeakMap>;\ntype SubscriptionMap = Map;\ntype WatcherMap = WeakMap;\ntype BuilderMap = WeakMap>;\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 // registry of special triggers to update elements\n private watcherMap: WatcherMap = new WeakMap();\n private builderMap: BuilderMap = new WeakMap();\n private clearBuilderMap: BuilderMap = new WeakMap();\n private subject: Subject = new Subject();\n\n get activatedBreakpoint(): string {\n return this.activatedBreakpoints[0] ? this.activatedBreakpoints[0].alias : '';\n }\n\n constructor(protected matchMedia: MatchMedia,\n protected breakpoints: BreakPointRegistry) {\n this.matchMedia\n .observe()\n .subscribe(this.activate.bind(this));\n this.registerBreakpoints();\n }\n\n /**\n * activate or deactivate a given breakpoint\n * @param mc\n */\n activate(mc: MediaChange) {\n const bp: BreakPoint | null = this.findByQuery(mc.mediaQuery);\n if (bp) {\n if (mc.matches && this.activatedBreakpoints.indexOf(bp) === -1) {\n this.activatedBreakpoints.push(bp);\n this.activatedBreakpoints.sort(prioritySort);\n this.updateStyles();\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.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[] = []): void {\n this.buildElementKeyMap(element, key);\n initBuilderMap(this.builderMap, element, key, updateFn);\n initBuilderMap(this.clearBuilderMap, element, key, clearFn);\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.getFallback(bpMap, key);\n if (values) {\n const value = values.get(key);\n return value !== undefined ? value : '';\n }\n }\n return '';\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.getFallback(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 this.updateElement(element, key, this.getValue(element, key));\n }\n\n /** Track element value changes for a specific key */\n trackValue(element: HTMLElement, key: string): Observable {\n return this.subject.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 valueMap = this.getFallback(bpMap);\n const keyMap = new Set(this.elementKeyMap.get(el)!);\n if (valueMap) {\n valueMap.forEach((v, k) => {\n this.updateElement(el, k, v);\n keyMap.delete(k);\n });\n }\n keyMap.forEach(k => {\n const fallbackMap = this.getFallback(bpMap, k);\n if (fallbackMap) {\n const value = fallbackMap.get(k);\n this.updateElement(el, k, value);\n } else {\n this.clearElement(el, k);\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.clearBuilderMap.get(element);\n if (builders) {\n const builder: Builder | undefined = builders.get(key);\n if (builder) {\n builder();\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.builderMap.get(element);\n if (builders) {\n const builder: Builder | undefined = builders.get(key);\n if (builder) {\n builder(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 /** 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[]) {\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 getFallback(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)) {\n return valueMap;\n }\n }\n }\n return bpMap.get('');\n }\n\n private registerBreakpoints() {\n const queries = this.breakpoints.sortedItems.map(bp => bp.mediaQuery);\n this.matchMedia.registerQuery(queries);\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 * @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, Optional, 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(@Optional() private _serverStylesheet: StylesheetMap,\n @Optional() @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 /**\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.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 {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {BreakPointRegistry} from '../breakpoints/break-point-registry';\nimport {MediaChange} from '../media-change';\nimport {MatchMedia} from '../match-media/match-media';\nimport {mergeAlias} from '../add-alias';\n\n/**\n * Class internalizes a MatchMedia service and exposes an Observable interface.\n\n * This exposes an Observable with a feature to subscribe to mediaQuery\n * changes and a validator method (`isActive()`) to test if a mediaQuery (or alias) is\n * currently active.\n *\n * !! Only mediaChange activations (not de-activations) are announced by the MediaObserver\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 * !! This is not an actual Observable. It is a wrapper of an Observable used to publish additional\n * methods like `isActive(). To access the Observable and use RxJS operators, use\n * `.media$` with syntax like mediaObserver.media$.map(....).\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 onChange = (change: MediaChange) => {\n * this.status = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : '';\n * };\n *\n * // Subscribe directly or access observable to use filter/map operators\n * // e.g. mediaObserver.media$.subscribe(onChange);\n *\n * mediaObserver.media$()\n * .pipe(\n * filter((change: MediaChange) => true) // silly noop filter\n * ).subscribe(onChange);\n * }\n * }\n */\n@Injectable({providedIn: 'root'})\nexport class MediaObserver {\n /**\n * Whether to announce gt- breakpoint activations\n */\n filterOverlaps = true;\n readonly media$: Observable;\n\n constructor(private breakpoints: BreakPointRegistry, private mediaWatcher: MatchMedia) {\n this._registerBreakPoints();\n this.media$ = this._buildObservable();\n }\n\n /**\n * Test if specified query/alias is active.\n */\n isActive(alias: string): boolean {\n return this.mediaWatcher.isActive(this._toMediaQuery(alias));\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 _registerBreakPoints() {\n const queries = this.breakpoints.sortedItems.map(bp => bp.mediaQuery);\n this.mediaWatcher.registerQuery(queries);\n }\n\n /**\n * Prepare internal observable\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() {\n const excludeOverlaps = (change: MediaChange) => {\n const bp = this.breakpoints.findByQuery(change.mediaQuery);\n return !bp ? true : !(this.filterOverlaps && bp.overlapping);\n };\n\n /**\n * Only pass/announce activations (not de-activations)\n * Inject associated (if any) alias information into the MediaChange event\n * Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only\n */\n return this.mediaWatcher.observe()\n .pipe(\n filter(change => change.matches),\n filter(excludeOverlaps),\n map((change: MediaChange) =>\n mergeAlias(change, this._findByQuery(change.mediaQuery))\n )\n );\n }\n\n /**\n * Breakpoint locator by alias\n */\n private _findByAlias(alias: string) {\n return this.breakpoints.findByAlias(alias);\n }\n\n /**\n * Breakpoint locator by mediaQuery\n */\n private _findByQuery(query: string) {\n return this.breakpoints.findByQuery(query);\n }\n\n /**\n * Find associated breakpoint (if any)\n */\n private _toMediaQuery(query: string) {\n const bp = this._findByAlias(query) || this._findByQuery(query);\n return bp ? bp.mediaQuery : query;\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} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {BreakPoint} from '../breakpoints/break-point';\nimport {BreakPointRegistry} from '../breakpoints/break-point-registry';\nimport {MatchMedia} from '../match-media/match-media';\nimport {MediaChange} from '../media-change';\nimport {mergeAlias} from '../add-alias';\n\n\n/**\n * MediaMonitor uses the MatchMedia service to observe mediaQuery changes (both activations and\n * deactivations). These changes are are published as MediaChange notifications.\n *\n * Note: all notifications will be performed within the\n * ng Zone to trigger change detections and component updates.\n *\n * It is the MediaMonitor that:\n * - auto registers all known breakpoints\n * - injects alias information into each raw MediaChange event\n * - provides accessor to the currently active BreakPoint\n * - publish list of overlapping BreakPoint(s); used by ResponsiveActivation\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\n@Injectable({providedIn: 'root'})\nexport class MediaMonitor {\n constructor(private _breakpoints: BreakPointRegistry, private _matchMedia: MatchMedia) {\n this._registerBreakpoints();\n }\n\n /**\n * Read-only accessor to the list of breakpoints configured in the BreakPointRegistry provider\n */\n get breakpoints(): BreakPoint[] {\n return [...this._breakpoints.items];\n }\n\n get activeOverlaps(): BreakPoint[] {\n return this._breakpoints.overlappings\n .reverse()\n .filter(bp => this._matchMedia.isActive(bp.mediaQuery));\n }\n\n get active(): BreakPoint | null {\n const items = this.breakpoints.reverse();\n const first = items.find(bp => bp.alias !== '' && this._matchMedia.isActive(bp.mediaQuery));\n return first || null;\n }\n\n /**\n * For the specified mediaQuery alias, is the mediaQuery range active?\n */\n isActive(alias: string): boolean {\n const bp = this._breakpoints.findByAlias(alias) || this._breakpoints.findByQuery(alias);\n return this._matchMedia.isActive(bp ? bp.mediaQuery : alias);\n }\n\n /**\n * External observers can watch for all (or a specific) mql changes.\n * If specific breakpoint is observed, only return *activated* events\n * otherwise return all events for BOTH activated + deactivated changes.\n */\n observe(alias: string = ''): Observable {\n const bp = this._breakpoints.findByAlias(alias) || this._breakpoints.findByQuery(alias);\n const hasAlias = (change: MediaChange) => (bp ? change.mqAlias !== '' : true);\n // Note: the raw MediaChange events [from MatchMedia] do not contain important alias information\n\n const media$ = this._matchMedia.observe(bp ? bp.mediaQuery : alias);\n return media$.pipe(\n map(change => mergeAlias(change, bp)),\n filter(hasAlias)\n );\n }\n\n /**\n * Immediate calls to matchMedia() to establish listeners\n * and prepare for immediate subscription notifications\n */\n private _registerBreakpoints() {\n const queries = this._breakpoints.sortedItems.map(bp => bp.mediaQuery);\n this._matchMedia.registerQuery(queries);\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 {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable, NgZone, PLATFORM_ID} from '@angular/core';\n\nimport {BreakPoint} from '../breakpoints/break-point';\nimport {MatchMedia} from './match-media';\n\n/**\n * Special server-only class to simulate a MediaQueryList and\n * - supports manual activation to simulate mediaQuery matching\n * - manages listeners\n */\nexport class ServerMediaQueryList 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 * 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(): ServerMediaQueryList {\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(null, this);\n });\n }\n return this;\n }\n\n /** Notify all listeners that 'matches === false' */\n deactivate(): ServerMediaQueryList {\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(null, this);\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(null, this);\n }\n }\n\n /** Don't need to remove listeners in the server environment */\n removeListener(_: EventListenerOrEventListenerObject | null) {\n }\n\n addEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | AddEventListenerOptions): void;\n addEventListener(_: string,\n __: EventListenerOrEventListenerObject,\n ___?: boolean | AddEventListenerOptions) {\n }\n\n removeEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | EventListenerOptions): void;\n removeEventListener(_: 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 * Special server-only implementation of MatchMedia that uses the above\n * ServerMediaQueryList as its internal representation\n *\n * Also contains methods to activate and deactivate breakpoints\n */\n@Injectable()\nexport class ServerMatchMedia extends MatchMedia {\n protected _registry: Map = new Map();\n\n constructor(protected _zone: NgZone,\n @Inject(PLATFORM_ID) protected _platformId: Object,\n @Inject(DOCUMENT) protected _document: any) {\n super(_zone, _platformId, _document);\n }\n\n /** Activate the specified breakpoint if we're on the server, no-op otherwise */\n activateBreakpoint(bp: BreakPoint) {\n const lookupBreakpoint = this._registry.get(bp.mediaQuery);\n if (lookupBreakpoint) {\n lookupBreakpoint.activate();\n }\n }\n\n /** Deactivate the specified breakpoint if we're on the server, no-op otherwise */\n deactivateBreakpoint(bp: BreakPoint) {\n const lookupBreakpoint = this._registry.get(bp.mediaQuery);\n if (lookupBreakpoint) {\n lookupBreakpoint.deactivate();\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): ServerMediaQueryList {\n return new ServerMediaQueryList(query);\n }\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, 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 /** Special flag used to test BreakPoint registrations with MatchMedia */\n autoRegisterQueries = true;\n\n /**\n * Allow fallback to overlapping mediaQueries to determine\n * activatedInput(s).\n */\n useOverlaps = false;\n\n protected _registry: Map = new Map();\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: MockMediaQueryList) => {\n mql.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 activate 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- 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 activate of overlapping gt- 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 // 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.split(',').forEach(alias => activate(alias.trim()));\n }\n\n /**\n *\n */\n private _activateByQuery(mediaQuery: string) {\n const mql = this._registry.get(mediaQuery);\n const alreadyAdded = this._actives\n .reduce((found, it) => (found || (mql ? (it.media === mql.media) : false)), false);\n\n if (mql && !alreadyAdded) {\n this._actives.push(mql.activate());\n }\n return this.hasActivated;\n }\n\n /** Deactivate all current Mock MQLs */\n private _deactivateAll() {\n if (this._actives.length) {\n // Deactivate all current MQLs and reset the buffer\n for (const it of this._actives) {\n it.deactivate();\n }\n this._actives = [];\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._actives.length > 0;\n }\n\n private _actives: MockMediaQueryList[] = [];\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 * 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(null, this);\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(null, this);\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(null, this);\n }\n }\n\n /** Don't need to remove listeners in the testing environment */\n removeListener(_: EventListenerOrEventListenerObject | null) {\n }\n\n addEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | AddEventListenerOptions): void;\n addEventListener(_: string,\n __: EventListenerOrEventListenerObject,\n ___?: boolean | AddEventListenerOptions) {\n }\n\n removeEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | EventListenerOptions): void;\n removeEventListener(_: 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 {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 = new Subject();\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.activatedBreakpoint);\n }\n\n /** Cache map for style computation */\n protected styleCache: Map = 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[] = []): 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 const val = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY);\n this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, val);\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 /** 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 this.addStyles(input);\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} from '@angular/core';\n\nimport {BaseDirective} from './base';\nimport {ResponsiveActivation} from '../responsive-activation/responsive-activation';\nimport {MediaQuerySubscriber} from '../media-change';\nimport {MediaMonitor} from '../media-monitor/media-monitor';\nimport {StyleUtils} from '../style-utils/style-utils';\n\n\n/**\n * Adapter to the BaseDirective abstract class so it can be used via composition.\n * @see BaseDirective\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport class BaseDirectiveAdapter extends BaseDirective {\n\n /**\n * Accessor to determine which @Input property is \"active\"\n * e.g. which property value will be used.\n */\n get activeKey() {\n let mqa = this._mqActivation;\n let key = mqa ? mqa.activatedInputKey : this._baseKey;\n // Note: ClassDirective::SimpleChanges uses 'klazz' instead of 'class' as a key\n return (key === 'class') ? 'klazz' : key;\n }\n\n /** Hash map of all @Input keys/values defined/used */\n get inputMap() {\n return this._inputMap;\n }\n\n /**\n * @see BaseDirective._mqActivation\n */\n get mqActivation(): ResponsiveActivation {\n return this._mqActivation!;\n }\n\n /**\n * BaseDirectiveAdapter constructor\n */\n constructor(protected _baseKey: string, // non-responsive @Input property name\n protected _mediaMonitor: MediaMonitor,\n protected _elementRef: ElementRef,\n protected _styler: StyleUtils) {\n super(_mediaMonitor, _elementRef, _styler);\n }\n\n /**\n * Does this directive have 1 or more responsive keys defined\n * Note: we exclude the 'baseKey' key (which is NOT considered responsive)\n */\n hasResponsiveAPI() {\n return super.hasResponsiveAPI(this._baseKey);\n }\n\n /**\n * @see BaseDirective._queryInput\n */\n queryInput(key: string | null) {\n return key ? this._queryInput(key) : undefined;\n }\n\n /**\n * Save the property value.\n */\n cacheInput(key?: string, source?: any, cacheRaw = false) {\n if (cacheRaw) {\n this._cacheInputRaw(key, source);\n } else if (Array.isArray(source)) {\n this._cacheInputArray(key, source);\n } else if (typeof source === 'object') {\n this._cacheInputObject(key, source);\n } else if (typeof source === 'string') {\n this._cacheInputString(key, source);\n } else {\n throw new Error(\n `Invalid class value '${key}' provided. Did you want to cache the raw value?`\n );\n }\n }\n\n /**\n * @see BaseDirective._listenForMediaQueryChanges\n */\n listenForMediaQueryChanges(key: string,\n defaultValue: any,\n onMediaQueryChange: MediaQuerySubscriber): ResponsiveActivation {\n return this._listenForMediaQueryChanges(key, defaultValue, onMediaQueryChange);\n }\n\n // ************************************************************\n // Protected Methods\n // ************************************************************\n\n /**\n * No implicit transforms of the source.\n * Required when caching values expected later for KeyValueDiffers\n */\n protected _cacheInputRaw(key?: string, source?: any) {\n if (key) {\n this._inputMap[key] = source;\n }\n }\n\n /**\n * Save the property value for Array values.\n */\n protected _cacheInputArray(key = '', source?: boolean[]) {\n this._inputMap[key] = source ? source.join(' ') : '';\n }\n\n /**\n * Save the property value for key/value pair values.\n */\n protected _cacheInputObject(key = '', source?: { [key: string]: boolean }) {\n let classes: string[] = [];\n if (source) {\n for (let prop in source) {\n if (!!source[prop]) {\n classes.push(prop);\n }\n }\n }\n this._inputMap[key] = classes.join(' ');\n }\n\n /**\n * Save the property value for string values.\n */\n protected _cacheInputString(key = '', source?: string) {\n this._inputMap[key] = source;\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 {\n ElementRef,\n OnDestroy,\n SimpleChanges,\n OnChanges,\n SimpleChange,\n} from '@angular/core';\n\nimport {buildLayoutCSS} from '../../utils/layout-validator';\nimport {\n StyleDefinition,\n StyleUtils,\n} from '../style-utils/style-utils';\nimport {ResponsiveActivation, KeyOptions} from '../responsive-activation/responsive-activation';\nimport {MediaMonitor} from '../media-monitor/media-monitor';\nimport {MediaQuerySubscriber} from '../media-change';\nimport {StyleBuilder} from '../style-builder/style-builder';\n\n/**\n * Abstract base class for the Layout API styling directives.\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport abstract class BaseDirective implements OnDestroy, OnChanges {\n\n /**\n * Imperatively determine the current activated [input] value;\n * if called before ngOnInit() this will return `undefined`\n */\n get activatedValue(): string | number {\n return this._mqActivation ? this._mqActivation.activatedInput : undefined;\n }\n\n /**\n * Change the currently activated input value and force-update\n * the injected CSS (by-passing change detection).\n *\n * NOTE: Only the currently activated input value will be modified;\n * other input values will NOT be affected.\n */\n set activatedValue(value: string | number) {\n let key = 'baseKey', previousVal;\n\n if (this._mqActivation) {\n key = this._mqActivation.activatedInputKey;\n previousVal = this._inputMap[key];\n this._inputMap[key] = value;\n }\n const change = new SimpleChange(previousVal, value, false);\n\n this.ngOnChanges({[key]: change} as SimpleChanges);\n }\n\n protected constructor(protected _mediaMonitor: MediaMonitor,\n protected _elementRef: ElementRef,\n protected _styler: StyleUtils,\n protected _styleBuilder?: StyleBuilder) {\n }\n\n /**\n * Does this directive have 1 or more responsive keys defined\n * Note: we exclude the 'baseKey' key (which is NOT considered responsive)\n */\n hasResponsiveAPI(baseKey: string) {\n const totalKeys = Object.keys(this._inputMap).length;\n const baseValue = this._inputMap[baseKey];\n return (totalKeys - (!!baseValue ? 1 : 0)) > 0;\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n /**\n * Use post-component-initialization event to perform extra\n * querying such as computed Display style\n */\n ngOnInit() {\n this._hasInitialized = true;\n }\n\n ngOnChanges(change: SimpleChanges) {\n throw new Error(`BaseDirective::ngOnChanges should be overridden in subclass: ${change}`);\n }\n\n ngOnDestroy() {\n if (this._mqActivation) {\n this._mqActivation.destroy();\n }\n delete this._mediaMonitor;\n }\n\n // *********************************************\n // Protected Methods\n // *********************************************\n\n /** Access to host element's parent DOM node */\n protected get parentElement(): any {\n return this._elementRef.nativeElement.parentNode;\n }\n\n protected get nativeElement(): HTMLElement {\n return this._elementRef.nativeElement;\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._applyStyleToElement(genStyles);\n builder.sideEffect(input, genStyles, parent);\n }\n\n /** Access the current value (if any) of the @Input property */\n protected _queryInput(key: string) {\n return this._inputMap[key];\n }\n\n /**\n * Was the directive's default selector used ?\n * If not, use the fallback value!\n */\n protected _getDefaultVal(key: string, fallbackVal: any): string | boolean {\n const val = this._queryInput(key);\n const hasDefaultVal = (val !== undefined && val !== null);\n return (hasDefaultVal && val !== '') ? val : fallbackVal;\n }\n\n /**\n * Quick accessor to the current HTMLElement's `display` style\n * Note: this allows us to preserve the original style\n * and optional restore it when the mediaQueries deactivate\n */\n protected _getDisplayStyle(source: HTMLElement = this.nativeElement): string {\n const query = 'display';\n return this._styler.lookupStyle(source, query);\n }\n\n /** Quick accessor to raw attribute value on the target DOM element */\n protected _getAttributeValue(attribute: string,\n source: HTMLElement = this.nativeElement): string {\n return this._styler.lookupAttributeValue(source, attribute);\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 let [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 /** 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 /** Applies styles given via string pair or object map to the directive's element */\n protected _applyStyleToElements(style: StyleDefinition, elements: HTMLElement[]) {\n this._styler.applyStyleToElements(style, elements);\n }\n\n /**\n * Save the property value; which may be a complex object.\n * Complex objects support property chains\n */\n protected _cacheInput(key?: string, source?: any) {\n if (typeof source === 'object') {\n for (let prop in source) {\n this._inputMap[prop] = source[prop];\n }\n } else {\n if (!!key) {\n this._inputMap[key] = source;\n }\n }\n }\n\n /**\n * Build a ResponsiveActivation object used to manage subscriptions to mediaChange notifications\n * and intelligent lookup of the directive's property value that corresponds to that mediaQuery\n * (or closest match).\n */\n protected _listenForMediaQueryChanges(key: string,\n defaultValue: any,\n onMediaQueryChange: MediaQuerySubscriber): ResponsiveActivation { // tslint:disable-line:max-line-length\n if (!this._mqActivation) {\n let keyOptions = new KeyOptions(key, defaultValue, this._inputMap);\n this._mqActivation = new ResponsiveActivation(keyOptions, this._mediaMonitor,\n (change) => onMediaQueryChange(change));\n }\n return this._mqActivation;\n }\n\n /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */\n protected get childrenNodes(): HTMLElement[] {\n const obj = this.nativeElement.children;\n const buffer: any[] = [];\n\n // iterate backwards ensuring that length is an UInt32\n for (let i = obj.length; i--; ) {\n buffer[i] = obj[i];\n }\n return buffer;\n }\n\n protected get hasInitialized() {\n return this._hasInitialized;\n }\n\n /** MediaQuery Activation Tracker */\n protected _mqActivation?: ResponsiveActivation;\n\n /** Dictionary of input keys with associated values */\n protected _inputMap: {[key: string]: any} = {};\n\n /**\n * Has the `ngOnInit()` method fired\n *\n * Used to allow *ngFor tasks to finish and support queries like\n * getComputedStyle() during ngOnInit().\n */\n protected _hasInitialized = false;\n\n /** Cache map for style computation */\n protected _styleCache: Map = new Map();\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 {Subscription} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {MediaChange, MediaQuerySubscriber} from '../media-change';\nimport {BreakPoint} from '../breakpoints/break-point';\nimport {MediaMonitor} from '../media-monitor/media-monitor';\nimport {extendObject} from '../../utils/object-extend';\n\n/**\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport interface BreakPointX extends BreakPoint {\n key: string;\n baseKey: string;\n}\n\n/**\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport class KeyOptions {\n constructor(public baseKey: string,\n public defaultValue: string|number|boolean,\n public inputKeys: { [key: string]: any }) {\n }\n}\n\n/**\n * ResponsiveActivation acts as a proxy between the MonitorMedia service (which emits mediaQuery\n * changes) and the fx API directives. The MQA proxies mediaQuery change events and notifies the\n * directive via the specified callback.\n *\n * - The MQA also determines which directive property should be used to determine the\n * current change 'value'... BEFORE the original `onMediaQueryChanges()` method is called.\n * - The `ngOnDestroy()` method is also head-hooked to enable auto-unsubscribe from the\n * MediaQueryServices.\n *\n * NOTE: these interceptions enables the logic in the fx API directives to remain terse and clean.\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport class ResponsiveActivation {\n private _activatedInputKey: string = '';\n private _registryMap: BreakPointX[] = this._buildRegistryMap();\n private _subscribers: Subscription[] = this._configureChangeObservers();\n\n /**\n * Constructor\n */\n constructor(private _options: KeyOptions,\n private _mediaMonitor: MediaMonitor,\n private _onMediaChanges: MediaQuerySubscriber) {\n }\n\n /**\n * Get a readonly sorted list of the breakpoints corresponding to the directive properties\n * defined in the HTML markup: the sorting is done from largest to smallest. The order is\n * important when several media queries are 'registered' and from which, the browser uses the\n * first matching media query.\n */\n get registryFromLargest(): BreakPointX[] {\n return [...this._registryMap].reverse();\n }\n\n /**\n * Determine which directive @Input() property is currently active (for the viewport size):\n * The key must be defined (in use) or fallback to the 'closest' overlapping property key\n * that is defined; otherwise the default property key will be used.\n * e.g.\n * if `
` is used but the current activated mediaQuery alias\n * key is `.md` then `.gt-sm` should be used instead\n */\n get activatedInputKey(): string {\n return this._activatedInputKey || this._options.baseKey;\n }\n\n /**\n * Get the currently activated @Input value or the fallback default @Input value\n */\n get activatedInput(): any {\n const key = this.activatedInputKey;\n return this.hasKeyValue(key) ? this._lookupKeyValue(key) : this._options.defaultValue;\n }\n\n /**\n * Fast validator for presence of attribute on the host element\n */\n hasKeyValue(key: string) {\n return this._options.inputKeys[key] !== undefined;\n }\n\n /**\n * Remove interceptors, restore original functions, and forward the onDestroy() call\n */\n destroy() {\n this._subscribers.forEach(link => link.unsubscribe());\n this._subscribers = [];\n }\n\n /**\n * For each *defined* API property, register a callback to `_onMonitorEvents( )`\n * Cache 1..n subscriptions for internal auto-unsubscribes when the the directive destructs\n */\n private _configureChangeObservers(): Subscription[] {\n const subscriptions: Subscription[] = [];\n\n this._registryMap.forEach(bp => {\n if (this._keyInUse(bp.key)) {\n // Inject directive default property key name: to let onMediaChange() calls\n // know which property is being triggered...\n const buildChanges = (change: MediaChange) => {\n change = change.clone();\n change.property = this._options.baseKey;\n return change;\n };\n\n subscriptions.push(\n this._mediaMonitor\n .observe(bp.alias)\n .pipe(map(buildChanges))\n .subscribe(change => {\n this._onMonitorEvents(change);\n })\n );\n }\n });\n\n return subscriptions;\n }\n\n /**\n * Build mediaQuery key-hashmap; only for the directive properties that are actually defined/used\n * in the HTML markup\n */\n private _buildRegistryMap() {\n return this._mediaMonitor.breakpoints\n .map(bp => extendObject({}, bp, {\n baseKey: this._options.baseKey, // e.g. layout, hide, self-align, flex-wrap\n key: this._options.baseKey + bp.suffix // e.g. layoutGtSm, layoutMd, layoutGtLg\n }))\n .filter(bp => this._keyInUse(bp.key));\n }\n\n /**\n * Synchronizes change notifications with the current mq-activated @Input and calculates the\n * mq-activated input value or the default value\n */\n protected _onMonitorEvents(change: MediaChange) {\n if (change.property === this._options.baseKey) {\n change.value = this._calculateActivatedValue(change);\n this._onMediaChanges(change);\n }\n }\n\n /**\n * Has the key been specified in the HTML markup and thus is intended\n * to participate in activation processes.\n */\n private _keyInUse(key: string): boolean {\n return this._lookupKeyValue(key) !== undefined;\n }\n\n /**\n * Map input key associated with mediaQuery activation to closest defined input key\n * then return the values associated with the targeted input property\n *\n * !! change events may arrive out-of-order (activate before deactivate)\n * so make sure the deactivate is used ONLY when the keys match\n * (since a different activate may be in use)\n */\n private _calculateActivatedValue(current: MediaChange): any {\n const currentKey = this._options.baseKey + current.suffix; // e.g. suffix == 'GtSm',\n let newKey = this._activatedInputKey; // e.g. newKey == hideGtSm\n\n newKey = current.matches ? currentKey : ((newKey === currentKey) ? '' : newKey);\n\n this._activatedInputKey = this._validateInputKey(newKey);\n return this.activatedInput;\n }\n\n /**\n * For the specified input property key, validate it is defined (used in the markup)\n * If not see if a overlapping mediaQuery-related input key fallback has been defined\n *\n * NOTE: scans in the order defined by activeOverLaps (largest viewport ranges -> smallest ranges)\n */\n private _validateInputKey(inputKey: string) {\n const isMissingKey = (key: string) => !this._keyInUse(key);\n\n if (isMissingKey(inputKey)) {\n this._mediaMonitor.activeOverlaps.some(bp => {\n const key = this._options.baseKey + bp.suffix;\n if (!isMissingKey(key)) {\n inputKey = key;\n return true; // exit .some()\n }\n return false;\n });\n }\n return inputKey;\n }\n\n /**\n * Get the value (if any) for the directive instances @Input property (aka key)\n */\n private _lookupKeyValue(key: string) {\n return this._options.inputKeys[key];\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='' 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 : 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 {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(\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 {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>();\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 */\nimport {NgModule} from '@angular/core';\n\nimport {BROWSER_PROVIDER} from './browser-provider';\nimport {ObservableMediaProvider} from './observable-media/observable-media';\n\n/**\n * *****************************************************************\n * Define module for the MediaQuery API\n * *****************************************************************\n */\n\n@NgModule({\n providers: [BROWSER_PROVIDER, ObservableMediaProvider]\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 {Injectable} from '@angular/core';\nimport {Observable, PartialObserver, Subscribable, Subscription} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {BreakPointRegistry} from '../breakpoints/break-point-registry';\nimport {MediaChange} from '../media-change';\nimport {MatchMedia} from '../match-media/match-media';\nimport {mergeAlias} from '../add-alias';\nimport {BreakPoint} from '../breakpoints/break-point';\n\n/**\n * Base class for MediaService and pseudo-token for\n * @deprecated use MediaObserver instead\n * @deletion-target v7.0.0-beta.21\n */\nexport abstract class ObservableMedia implements Subscribable {\n abstract isActive(query: string): boolean;\n\n abstract asObservable(): Observable;\n\n abstract subscribe(next?: (value: MediaChange) => void,\n error?: (error: any) => void,\n complete?: () => void): Subscription;\n abstract subscribe(observer?: PartialObserver): Subscription;\n}\n\n/**\n * Class internalizes a MatchMedia service and exposes an Subscribable and Observable interface.\n\n * This an Observable with that exposes a feature to subscribe to mediaQuery\n * changes and a validator method (`isActive()`) to test if a mediaQuery (or alias) is\n * currently active.\n *\n * !! Only mediaChange activations (not de-activations) are announced by the ObservableMedia\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 * !! This is not an actual Observable. It is a wrapper of an Observable used to publish additional\n * methods like `isActive(). To access the Observable and use RxJS operators, use\n * `.asObservable()` with syntax like media.asObservable().map(....).\n *\n * @usage\n *\n * // RxJS\n * import {filter} from 'rxjs/operators/filter';\n * import { ObservableMedia } from '@angular/flex-layout';\n *\n * @Component({ ... })\n * export class AppComponent {\n * status : string = '';\n *\n * constructor( media:ObservableMedia ) {\n * let onChange = (change:MediaChange) => {\n * this.status = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : '';\n * };\n *\n * // Subscribe directly or access observable to use filter/map operators\n * // e.g.\n * // media.subscribe(onChange);\n *\n * media.asObservable()\n * .pipe(\n * filter((change:MediaChange) => true) // silly noop filter\n * ).subscribe(onChange);\n * }\n * }\n * @deprecated use MediaObserver instead\n * @deletion-target v7.0.0-beta.21\n */\n@Injectable({providedIn: 'root'})\nexport class MediaService implements ObservableMedia {\n /**\n * Should we announce gt- breakpoint activations ?\n */\n filterOverlaps = true;\n\n constructor(private breakpoints: BreakPointRegistry,\n private mediaWatcher: MatchMedia) {\n this._registerBreakPoints();\n this.observable$ = this._buildObservable();\n }\n\n /**\n * Test if specified query/alias is active.\n */\n isActive(alias: string): boolean {\n return this.mediaWatcher.isActive(this._toMediaQuery(alias));\n }\n\n /**\n * Proxy to the Observable subscribe method\n */\n subscribe(observerOrNext?: PartialObserver | ((value: MediaChange) => void),\n error?: (error: any) => void,\n complete?: () => void): Subscription {\n if (observerOrNext) {\n if (typeof observerOrNext === 'object') {\n return this.observable$.subscribe(observerOrNext.next, observerOrNext.error,\n observerOrNext.complete);\n }\n }\n\n return this.observable$.subscribe(observerOrNext, error, complete);\n }\n\n /**\n * Access to observable for use with operators like\n * .filter(), .map(), etc.\n */\n asObservable(): Observable {\n return this.observable$;\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 _registerBreakPoints() {\n const queries = this.breakpoints.sortedItems.map(bp => bp.mediaQuery);\n this.mediaWatcher.registerQuery(queries);\n }\n\n /**\n * Prepare internal observable\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() {\n const excludeOverlaps = (change: MediaChange) => {\n const bp = this.breakpoints.findByQuery(change.mediaQuery);\n return !bp ? true : !(this.filterOverlaps && bp.overlapping);\n };\n\n /**\n * Only pass/announce activations (not de-activations)\n * Inject associated (if any) alias information into the MediaChange event\n * Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only\n */\n return this.mediaWatcher.observe().pipe(\n filter(change => change.matches),\n filter(excludeOverlaps),\n map((change: MediaChange) =>\n mergeAlias(change, this._findByQuery(change.mediaQuery)))\n );\n }\n\n /**\n * Breakpoint locator by alias\n */\n private _findByAlias(alias: string) {\n return this.breakpoints.findByAlias(alias);\n }\n\n /**\n * Breakpoint locator by mediaQuery\n */\n private _findByQuery(query: string) {\n return this.breakpoints.findByQuery(query);\n }\n\n /**\n * Find associated breakpoint (if any)\n */\n private _toMediaQuery(query: string) {\n const bp: BreakPoint | null = this._findByAlias(query) || this._findByQuery(query);\n return bp ? bp.mediaQuery : query;\n }\n\n private readonly observable$: Observable;\n}\n\n/**\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport const ObservableMediaProvider = { // tslint:disable-line:variable-name\n provide: ObservableMedia,\n useClass: MediaService\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';\nimport {extendObject} from '../utils/object-extend';\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 return extendObject(dest, source ? {\n mqAlias: source.alias,\n suffix: source.suffix\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, NgZone, PLATFORM_ID} from '@angular/core';\nimport {DOCUMENT, isPlatformBrowser} from '@angular/common';\nimport {BehaviorSubject, Observable} 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 {\n protected _registry = new Map();\n protected _source = new BehaviorSubject(new MediaChange(true));\n protected _observable$ = this._source.asObservable();\n\n constructor(protected _zone: NgZone,\n @Inject(PLATFORM_ID) protected _platformId: Object,\n @Inject(DOCUMENT) protected _document: any) {\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 : false;\n }\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 * NOTE: if a mediaQuery is not specified, then ALL mediaQuery activations will\n * be announced.\n */\n observe(mediaQuery?: string): Observable {\n if (mediaQuery) {\n this.registerQuery(mediaQuery);\n }\n\n return this._observable$.pipe(\n filter(change => (mediaQuery ? (change.mediaQuery === mediaQuery) : true))\n );\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) ? Array.from(new Set(mediaQuery)) : [mediaQuery];\n\n if (list.length > 0) {\n buildQueryCss(list, this._document);\n }\n\n list.forEach(query => {\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\n if (!mql) {\n if (query === 'print') {\n // If we are listening for a print media query we need to add a `beforeprint` event listener to trigger the `mql` synchronously.\n // Regular matchMedia events are not synchronous and do not have time to update the layout before the print dialog shows and takes a snapshot.\n // Workaround for #869\n // This requires explicit use of `fxLayout.print` to racing between size based layouts. We don't know the size of prints\n // before hand so you must use a single layout for printing.\n window.addEventListener('beforeprint', () => {\n onMQLEvent({\n mediaQuery: query,\n matches: true,\n } as any)\n })\n }\n\n \n mql = this._buildMQL(query);\n mql.addListener(onMQLEvent);\n this._registry.set(query, mql);\n }\n\n if (mql.matches) {\n onMQLEvent(mql as unknown as MediaQueryListEvent);\n }\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\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).matchMedia('all').addListener;\n\n return canListen ? (window).matchMedia(query) : {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => {\n },\n removeListener: () => {\n }\n } as unknown 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 */\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 */\n constructor(public matches = false,\n public mediaQuery = 'all',\n public mqAlias = '',\n public suffix = '') {\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 {Injectable, Inject} from '@angular/core';\n\nimport {BreakPoint} from './break-point';\nimport {BREAKPOINTS} from './break-points-token';\n\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\n constructor(@Inject(BREAKPOINTS) private _registry: BreakPoint[]) {\n }\n\n /**\n * Accessor to raw list\n */\n get items(): BreakPoint[] {\n return [...this._registry];\n }\n\n /**\n * Accessor to sorted list used for registration with matchMedia API\n *\n * NOTE: During breakpoint registration, we want to register the overlaps FIRST\n * so the non-overlaps will trigger the MatchMedia:BehaviorSubject last!\n * And the largest, non-overlap, matching breakpoint should be the lastReplay value\n */\n get sortedItems(): BreakPoint[] {\n let overlaps = this._registry.filter(it => it.overlapping === true);\n let nonOverlaps = this._registry.filter(it => it.overlapping !== true);\n\n return [...overlaps, ...nonOverlaps];\n }\n\n /**\n * Search breakpoints by alias (e.g. gt-xs)\n */\n findByAlias(alias: string): BreakPoint | null {\n return this._registry.find(bp => bp.alias == alias) || null;\n }\n\n findByQuery(query: string): BreakPoint | null {\n return this._registry.find(bp => bp.mediaQuery == query) || null;\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._registry.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._registry.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._registry.map(it => !!it.suffix ? it.suffix : '');\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\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('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 {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}\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};\n\nexport const LAYOUT_CONFIG = new InjectionToken(\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 */\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/** HOF to sort the breakpoints by priority */\nexport function prioritySort(a: BreakPoint, b: BreakPoint): number {\n const priorityA = a.priority || 0;\n const priorityB = b.priority || 0;\n return priorityB - priorityA;\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: 599px)';\nconst HANDSET_LANDSCAPE = '(orientation: landscape) and (max-width: 959px)';\n\nconst TABLET_LANDSCAPE = '(orientation: landscape) and (min-width: 960px) and (max-width: 1279px)';\nconst TABLET_PORTRAIT = '(orientation: portrait) and (min-width: 600px) and (max-width: 839px)';\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', 'mediaQuery': ScreenTypes.HANDSET},\n {'alias': 'handset.landscape', 'mediaQuery': ScreenTypes.HANDSET_LANDSCAPE},\n {'alias': 'handset.portrait', 'mediaQuery': ScreenTypes.HANDSET_PORTRAIT},\n\n {'alias': 'tablet', 'mediaQuery': ScreenTypes.TABLET},\n {'alias': 'tablet.landscape', 'mediaQuery': ScreenTypes.TABLET},\n {'alias': 'tablet.portrait', 'mediaQuery': ScreenTypes.TABLET_PORTRAIT},\n\n {'alias': 'web', 'mediaQuery': ScreenTypes.WEB, overlapping : true },\n {'alias': 'web.landscape', 'mediaQuery': ScreenTypes.WEB_LANDSCAPE, overlapping : true },\n {'alias': 'web.portrait', '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\nexport const RESPONSIVE_ALIASES = [\n 'xs', 'gt-xs', 'sm', 'gt-sm', 'md', 'gt-md', 'lg', 'gt-lg', 'xl'\n];\n\nexport const DEFAULT_BREAKPOINTS: BreakPoint[] = [\n {\n alias: 'xs',\n mediaQuery: '(min-width: 0px) and (max-width: 599px)',\n priority: 100,\n },\n {\n alias: 'gt-xs',\n overlapping: true,\n mediaQuery: '(min-width: 600px)',\n priority: 7,\n },\n {\n alias: 'lt-sm',\n overlapping: true,\n mediaQuery: '(max-width: 599px)',\n priority: 10,\n },\n {\n alias: 'sm',\n mediaQuery: '(min-width: 600px) and (max-width: 959px)',\n priority: 100,\n },\n {\n alias: 'gt-sm',\n overlapping: true,\n mediaQuery: '(min-width: 960px)',\n priority: 8,\n },\n {\n alias: 'lt-md',\n overlapping: true,\n mediaQuery: '(max-width: 959px)',\n priority: 9,\n },\n {\n alias: 'md',\n mediaQuery: '(min-width: 960px) and (max-width: 1279px)',\n priority: 100,\n },\n {\n alias: 'gt-md',\n overlapping: true,\n mediaQuery: '(min-width: 1280px)',\n priority: 9,\n },\n {\n alias: 'lt-lg',\n overlapping: true,\n mediaQuery: '(max-width: 1279px)',\n priority: 8,\n },\n {\n alias: 'lg',\n mediaQuery: '(min-width: 1280px) and (max-width: 1919px)',\n priority: 100,\n },\n {\n alias: 'gt-lg',\n overlapping: true,\n mediaQuery: '(min-width: 1920px)',\n priority: 10,\n },\n {\n alias: 'lt-xl',\n overlapping: true,\n mediaQuery: '(max-width: 1919px)',\n priority: 7,\n },\n {\n alias: 'xl',\n mediaQuery: '(min-width: 1920px) and (max-width: 5000px)',\n priority: 100,\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 {InjectionToken} from '@angular/core';\nimport {BreakPoint} from '../breakpoints/break-point';\n\nexport const BREAKPOINT = new InjectionToken(\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 {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: void)[]>>APP_BOOTSTRAP_LISTENER,\n useFactory: removeStyles,\n deps: [DOCUMENT, PLATFORM_ID],\n multi: true\n};\n\nexport const CLASS_NAME = 'flex-layout-';\n"],"names":["map","tslib_1.__extends","tslib_1.__assign"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"core.es5.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"],"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;\ntype BreakpointMap = Map;\ntype ElementMap = Map;\ntype ElementKeyMap = WeakMap>;\ntype SubscriptionMap = Map;\ntype WatcherMap = WeakMap;\ntype BuilderMap = WeakMap>;\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 = 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[] = []): 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 {\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[]) {\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)) {\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, Optional, 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(@Optional() private _serverStylesheet: StylesheetMap,\n @Optional() @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 /**\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\n this.deactivateAll();\n this.restoreRegistryMatches();\n this.setActivations(list);\n\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();\n queries.forEach(query => {\n registry.set(query, {matches: 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() {\n return this.matchMedia.activations;\n }\n\n private hasCachedRegistryMatches = false;\n private originalActivations: MediaChange[] = [];\n private originalRegistry: Map = new Map();\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})
` ;\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 v8.0.0-beta.26\n */\n readonly media$: Observable;\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 {\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 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 {\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;\n private readonly destroyed$ = new Subject();\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 : query;\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(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, PLATFORM_ID} 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 { isPlatformBrowser } 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 {\n constructor(\n protected breakpoints: BreakPointRegistry,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n @Inject(PLATFORM_ID) protected _platformId: Object) {\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 // 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 the platform is\n // not a browser(fallsback to mql print media queries).\n private registerBeforeAfterPrintHooks(target: HookTarget) {\n if (!isPlatformBrowser(this._platformId) || this.registeredBeforeAfterPrintHooks) {\n return;\n }\n\n this.registeredBeforeAfterPrintHooks = true;\n\n // Could we have teardown logic to remove if there are no print listeners being used?\n (window).addEventListener('beforeprint', () => {\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 (window).addEventListener('afterprint', () => {\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\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 /** 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- 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- 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 // 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.split(',').forEach(alias => activate(alias.trim()));\n }\n\n /**\n *\n */\n private _activateByQuery(mediaQuery: string) {\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(null, this);\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(null, this);\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(null, this);\n }\n }\n\n /** Don't need to remove listeners in the testing environment */\n removeListener(_: MediaQueryListListener | null) {\n }\n\n addEventListener(\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(\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, 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 {\n /** Initialize source with 'all' so all non-responsive APIs trigger style updates */\n readonly source = new BehaviorSubject(new MediaChange(true));\n registry = new Map();\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 : false;\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;\n observe(mediaQueries: string[]): Observable;\n observe(mediaQueries: string[], filterOthers: boolean): Observable;\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 {\n if (mqList && mqList.length) {\n const matchMedia$: Observable = this._observable$.pipe(\n filter((change: MediaChange) => {\n return !filterOthers ? true : (mqList.indexOf(change.mediaQuery) > -1);\n })\n );\n const registration$: Observable = new Observable((observer: Observer) => { // tslint:disable-line:max-line-length\n const matches: Array = 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.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 /**\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).matchMedia('all').addListener;\n\n return canListen ? (window).matchMedia(query) : {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => {\n },\n removeListener: () => {\n }\n } as unknown 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();\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(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(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('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.9px)';\nconst HANDSET_LANDSCAPE = '(orientation: landscape) and (max-width: 959.9px)';\n\nconst TABLET_PORTRAIT = '(orientation: portrait) and (min-width: 600px) and (max-width: 839.9px)';\nconst TABLET_LANDSCAPE = '(orientation: landscape) and (min-width: 960px) and (max-width: 1279.9px)';\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},\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.9px)',\n priority: 1000,\n },\n {\n alias: 'sm',\n mediaQuery: 'screen and (min-width: 600px) and (max-width: 959.9px)',\n priority: 900,\n },\n {\n alias: 'md',\n mediaQuery: 'screen and (min-width: 960px) and (max-width: 1279.9px)',\n priority: 800,\n },\n {\n alias: 'lg',\n mediaQuery: 'screen and (min-width: 1280px) and (max-width: 1919.9px)',\n priority: 700,\n },\n {\n alias: 'xl',\n mediaQuery: 'screen and (min-width: 1920px) and (max-width: 4999.9px)',\n priority: 600,\n },\n {\n alias: 'lt-sm',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 599.9px)',\n priority: 950,\n },\n {\n alias: 'lt-md',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 959.9px)',\n priority: 850,\n },\n {\n alias: 'lt-lg',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 1279.9px)',\n priority: 750,\n },\n {\n alias: 'lt-xl',\n overlapping: true,\n priority: 650,\n mediaQuery: 'screen and (max-width: 1919.9px)',\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 = new Subject();\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 = 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[] = []): 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 /** 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 this.addStyles(input);\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='' 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 : 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(\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(\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(\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>();\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 * Define module for the MediaQuery API\n * *****************************************************************\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: void)[]>>APP_BOOTSTRAP_LISTENER,\n useFactory: removeStyles,\n deps: [DOCUMENT, PLATFORM_ID],\n multi: true\n};\n\nexport const CLASS_NAME = 'flex-layout-';\n"],"names":["map","tslib_1.__extends","tslib_1.__assign"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;A2BeA,AAAA,SAAgB,YAAY,CAAC,SAAmB,EAAE,UAAkB,EAApE;IACE;;;IAAO,YAAT;QACI,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE;;YACvC,IAAY,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,UAA7D,GAAwE,UAAU,GAAlF,GAAqF,CAAC,CAAC,CAAvF;;;;;;YAMA,IAAY,YAAU,GAAG,sBAAsB,CAA/C;YACM,QAAQ,CAAC,OAAO;;;;YAAC,UAAA,EAAE,EAAzB;gBACQ,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAI,UAAU,GAA3C,KAAgD,CAAC,IAAI,EAAE,CAAC,UAAU;oBACxD,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,YAAU,EAAE,EAAE,CAAC,CAAC;aACxE,EAAC,CAAC;SACJ;KACF,EAAC;CACH;;;;;AAKD,AAAA,IAAa,gBAAgB,GAAG;IAC9B,OAAO,qBAAkC,sBAAsB,EAAA;IAC/D,UAAU,EAAE,YAAY;IACxB,IAAI,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC7B,KAAK,EAAE,IAAI;CACZ,CAAD;;AAEA,AAAA,IAAa,UAAU,GAAG,cAAc;;;;;;;;;;;AD1BxC,AAAA,IAAA,UAAA,kBAAA,YAAA;IAAA,SAAA,UAAA,GAAA;KAIC;;QAJD,EAAA,IAAA,EAAC,QAAQ,EAAT,IAAA,EAAA,CAAU;oBACR,SAAS,EAAE,CAAC,gBAAgB,CAAC;iBAC9B,EAAD,EAAA;;IAEA,OAAA,UAAC,CAAD;CAAC,EAAD,CAAA;;;;;;;;;ADTA,AAAA,IAAA;;;;;;;;;;;IAWE,SAAF,WAAA,CAAqB,OAAe,EACf,UAAkB,EAClB,OAAY,EACZ,MAAW,EACX,QAAY,EAJjC;QAAqB,IAArB,OAAA,KAAA,KAAA,CAAA,EAAqB,EAAA,OAArB,GAAA,KAAoC,CAApC,EAAA;QACqB,IAArB,UAAA,KAAA,KAAA,CAAA,EAAqB,EAAA,UAArB,GAAA,KAAuC,CAAvC,EAAA;QACqB,IAArB,OAAA,KAAA,KAAA,CAAA,EAAqB,EAAA,OAArB,GAAA,EAAiC,CAAjC,EAAA;QACqB,IAArB,MAAA,KAAA,KAAA,CAAA,EAAqB,EAAA,MAArB,GAAA,EAAgC,CAAhC,EAAA;QACqB,IAArB,QAAA,KAAA,KAAA,CAAA,EAAqB,EAAA,QAArB,GAAA,CAAiC,CAAjC,EAAA;QAJqB,IAArB,CAAA,OAA4B,GAAP,OAAO,CAAQ;QACf,IAArB,CAAA,UAA+B,GAAV,UAAU,CAAQ;QAClB,IAArB,CAAA,OAA4B,GAAP,OAAO,CAAK;QACZ,IAArB,CAAA,MAA2B,GAAN,MAAM,CAAK;QACX,IAArB,CAAA,QAA6B,GAAR,QAAQ,CAAI;QAd/B,IAAF,CAAA,QAAU,GAAW,EAAE,CAAC;KAerB;;;;;;IAGD,WAAF,CAAA,SAAA,CAAA,KAAO;;;;IAAL,YAAF;QACI,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KAClF,CAAH;IACA,OAAA,WAAC,CAAD;CAAC,EAAD,CAAA;;;;;;;;;;;;ADnBA,AAAA,IAAA,aAAA,kBAAA,YAAA;IAAA,SAAA,aAAA,GAAA;QAGW,IAAX,CAAA,UAAqB,GAAG,IAAI,GAAG,EAA2C,CAAC;KAmC1E;;;;;;;;;;;IA9BC,aAAF,CAAA,SAAA,CAAA,iBAAmB;;;;;;;IAAjB,UAAkB,OAAoB,EAAE,KAAa,EAAE,KAAoB,EAA7E;;QACA,IAAU,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAnD;QACI,IAAI,UAAU,EAAE;YACd,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACzD;KACF,CAAH;;;;;;;;IAKE,aAAF,CAAA,SAAA,CAAA,WAAa;;;;IAAX,YAAF;QACI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;KACzB,CAAH;;;;;;;;;;IAKE,aAAF,CAAA,SAAA,CAAA,kBAAoB;;;;;;IAAlB,UAAmB,EAAe,EAAE,SAAiB,EAAvD;;QACA,IAAU,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAA1C;;QACA,IAAQ,KAAK,GAAG,EAAE,CAAlB;QACI,IAAI,MAAM,EAAE;;YAChB,IAAY,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAzC;YACM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC1D,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC;aACpB;SACF;QACD,OAAO,KAAK,CAAC;KACd,CAAH;;QArCA,EAAA,IAAA,EAAC,UAAU,EAAX,IAAA,EAAA,CAAY,EAAC,UAAU,EAAE,MAAM,EAAC,EAAhC,EAAA;;;IAfA,OAAA,aAAA,CAAA;CAqDC,EAAD,CAAA;;;;;;;;;;;;AD/BA,AAAA,IAAa,cAAc,GAAwB;IACjD,eAAe,EAAE,IAAI;IACrB,iBAAiB,EAAE,KAAK;IACxB,iBAAiB,EAAE,KAAK;IACxB,qBAAqB,EAAE,KAAK;IAC5B,YAAY,EAAE,KAAK;IACnB,kBAAkB,EAAE,IAAI;IACxB,oBAAoB,EAAE,EAAE;IACxB,uBAAuB,EAAE,IAAI;IAC7B,qBAAqB,EAAE,EAAE;CAC1B,CAAD;;AAEA,AAAA,IAAa,aAAa,GAAG,IAAI,cAAc,CAC3C,mDAAmD,EAAE;IACnD,UAAU,EAAE,MAAM;IAClB,OAAO;;;IAAE,YAAf,EAAqB,OAAA,cAAc,CAAnC,EAAmC,CAAA;CAC9B,CAAC;;;;;;;;;;;;;ADvBN,AAAA,IAAa,YAAY,GAAG,IAAI,cAAc,CAC5C,wBAAwB,EAAE;IACxB,UAAU,EAAE,MAAM;IAClB,OAAO;;;IAAE,YAAb,EAAmB,OAAA,KAAK,CAAxB,EAAwB,CAAA;CACrB,CAAC;;;;;;;ADTJ,AAAA,IAAa,UAAU,GAAG,IAAI,cAAc,CAC1C,8DAA8D,EAAE;IAC9D,UAAU,EAAE,MAAM;IAClB,OAAO;;;IAAE,YAAb,EAAmB,OAAA,IAAI,CAAvB,EAAuB,CAAA;CACpB,CAAC;;;;;;;;;;;;;;;;;;ADAJ,AAAA,SAAgB,UAAU,CAAC,IAAiB,EAAE,MAAyB,EAAvE;IACE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,WAAW,EAAE,CAAC;IAC/C,IAAI,MAAM,EAAE;QACV,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,MAAM,sBAAG,MAAM,CAAC,MAAM,EAAU,CAAC;QACtC,IAAI,CAAC,QAAQ,sBAAG,MAAM,CAAC,QAAQ,EAAU,CAAC;KAC3C;IACD,OAAO,IAAI,CAAC;CACb;;;;;;;;;;;;;;ADhBD,AAAA,IAAa,MAAM,GAAG,QAAQ,CAA9B;;AACA,AAAA,IAAa,aAAa,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAA/E;;;;;;AAKA,AAAA,SAAgB,cAAc,CAAC,KAAa,EAA5C;IACM,IAAA,EAAN,GAAA,aAAA,CAAA,KAAA,CAAwD,EAAjD,SAAP,GAAA,EAAA,CAAA,CAAA,CAAgB,EAAE,IAAlB,GAAA,EAAA,CAAA,CAAA,CAAsB,EAAE,QAAxB,GAAA,EAAA,CAAA,CAAA,CAAwD,CAAxD;IACE,OAAO,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;CAC3C;;;;;;;AAMF,AAAA,SAAgB,aAAa,CAAC,KAAa,EAA3C;IACE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC;IACrC,IAAA,EAAN,GAAA,KAAA,CAAA,KAAA,CAAA,GAAA,CAAkD,EAA3C,SAAP,GAAA,EAAA,CAAA,CAAA,CAAgB,EAAE,IAAlB,GAAA,EAAA,CAAA,CAAA,CAAsB,EAAE,MAAxB,GAAA,EAAA,CAAA,CAAA,CAAkD,CAAlD;;IAGE,IAAI,CAAC,aAAa,CAAC,IAAI;;;;IAAC,UAAA,CAAC,EAA3B,EAA+B,OAAA,CAAC,KAAK,SAAS,CAA9C,EAA8C,EAAC,EAAE;QAC7C,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;KAC9B;IAED,IAAI,IAAI,KAAK,MAAM,EAAE;QACnB,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,GAAG,EAAE,CAAC;QACzC,MAAM,GAAG,MAAM,CAAC;KACjB;IAED,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;CACvD;;;;;;AAcD,AAAA,SAAgB,iBAAiB,CAAC,KAAa,EAA/C;IACE,IAAI,CAAC,CAAC,KAAK,EAAE;QACX,QAAQ,KAAK,CAAC,WAAW,EAAE;YACzB,KAAK,SAAS,CAAC;YACf,KAAK,cAAc,CAAC;YACpB,KAAK,cAAc;gBACjB,KAAK,GAAG,cAAc,CAAC;gBACvB,MAAM;YAER,KAAK,IAAI,CAAC;YACV,KAAK,MAAM,CAAC;YACZ,KAAK,QAAQ;gBACX,KAAK,GAAG,QAAQ,CAAC;gBACjB,MAAM;;YAGR;gBACE,KAAK,GAAG,MAAM,CAAC;gBACf,MAAM;SACT;KACF;IACD,OAAO,KAAK,CAAC;CACd;;;;;;;;;;;;;;AAWD,SAAS,QAAQ,CAAC,SAAiB,EAAE,IAA0B,EAAE,MAAc,EAA/E;IAAqC,IAArC,IAAA,KAAA,KAAA,CAAA,EAAqC,EAAA,IAArC,GAAA,IAA+D,CAA/D,EAAA;IAAiE,IAAjE,MAAA,KAAA,KAAA,CAAA,EAAiE,EAAA,MAAjE,GAAA,KAA+E,CAA/E,EAAA;IACE,OAAO;QACL,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM;QAC1C,YAAY,EAAE,YAAY;QAC1B,gBAAgB,EAAE,SAAS;QAC3B,WAAW,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI;KAClC,CAAC;CACH;;;;;;;;;AD5ED,AAAA,IAAA;;;;IA8BE,SAAF,cAAA,CAAkC,UAAsB,EACtB,YAA0B,EAC1B,MAAkB,EAClB,OAAwB,EAH1D;QAAkC,IAAlC,CAAA,UAA4C,GAAV,UAAU,CAAY;QACtB,IAAlC,CAAA,YAA8C,GAAZ,YAAY,CAAc;QAC1B,IAAlC,CAAA,MAAwC,GAAN,MAAM,CAAY;QAClB,IAAlC,CAAA,OAAyC,GAAP,OAAO,CAAiB;QA/B9C,IAAZ,CAAA,aAAyB,GAAG,EAAE,CAAC;QACnB,IAAZ,CAAA,MAAkB,GAAa,EAAE,CAAC;;;;QAEtB,IAAZ,CAAA,GAAe,GAAoB,EAAE,CAAC;QAC1B,IAAZ,CAAA,cAA0B,GAAkB,IAAI,OAAO,EAAE,CAAC;;;;QAsB9C,IAAZ,CAAA,UAAsB,GAAiC,IAAI,GAAG,EAAE,CAAC;KAM9D;IAzBD,MAAF,CAAA,cAAA,CAAgB,cAAhB,CAAA,SAAA,EAAA,eAA6B,EAA7B;;;;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC;SACpD;;;KAAH,CAAA,CAAG;IAGD,MAAF,CAAA,cAAA,CAAgB,cAAhB,CAAA,SAAA,EAAA,eAA6B,EAA7B;;;;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;SACtC;;;KAAH,CAAA,CAAG;IAGD,MAAF,CAAA,cAAA,CAAM,cAAN,CAAA,SAAA,EAAA,gBAAoB,EAApB;;;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SACtE;;;;;QACD,UAAmB,KAAa,EAAlC;YACI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,EACjE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;SAChC;;;KAJH,CAAA,CAAG;;;;;;;IAgBD,cAAF,CAAA,SAAA,CAAA,WAAa;;;;;IAAX,UAAY,OAAsB,EAApC;QAAE,IAAF,KAAA,GAAA,IAAA,CAQG;QAPC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO;;;;QAAC,UAAA,GAAG,EAApC;YACM,IAAI,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;;gBAC3C,IAAc,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAApD;;gBACA,IAAc,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAA7C;gBACQ,KAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;aACxB;SACF,EAAC,CAAC;KACJ,CAAH;;;;IAEE,cAAF,CAAA,SAAA,CAAA,WAAa;;;IAAX,YAAF;QACI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACjD,CAAH;;;;;;;;IAGY,cAAZ,CAAA,SAAA,CAAA,IAAgB;;;;;;IAAd,UAAe,aAAqC,EAAtD;QAAiB,IAAjB,aAAA,KAAA,KAAA,CAAA,EAAiB,EAAA,aAAjB,GAAA,EAAsD,CAAtD,EAAA;QACI,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAC3B,aAAa,CACd,CAAC;KACH,CAAH;;;;;;;;;IAGY,cAAZ,CAAA,SAAA,CAAA,SAAqB;;;;;;;IAAnB,UAAoB,KAAa,EAAE,MAAe,EAApD;;QACA,IAAU,OAAO,GAAG,IAAI,CAAC,YAAY,CAArC;;QACA,IAAU,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAxC;;QAEA,IAAQ,SAAS,GAAgC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAA3E;QAEI,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE;YAC3B,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/C,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;aACvC;SACF;QAED,IAAI,CAAC,GAAG,GAAZE,QAAA,CAAA,EAAA,EAAmB,SAAS,CAAC,CAAC;QAC1B,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACpC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;KAC9C,CAAH;;;;;;;IAGY,cAAZ,CAAA,SAAA,CAAA,WAAuB;;;;;IAArB,YAAF;QAAE,IAAF,KAAA,GAAA,IAAA,CAMG;QALC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO;;;;QAAC,UAAA,CAAC,EAAnC;YACM,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SAClB,EAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;KACf,CAAH;;;;;;;IAGY,cAAZ,CAAA,SAAA,CAAA,aAAyB;;;;;IAAvB,YAAF;QACI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;KACpE,CAAH;;;;;;;;;;;;;;;;;IAQY,cAAZ,CAAA,SAAA,CAAA,oBAAgC;;;;;;;;;;IAA9B,UAA+B,MAAmB,EAAE,YAAoB,EAA1E;QAAsD,IAAtD,YAAA,KAAA,KAAA,CAAA,EAAsD,EAAA,YAAtD,GAAA,KAA0E,CAA1E,EAAA;QACI,IAAI,MAAM,EAAE;YACJ,IAAA,EAAZ,GAAA,IAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,MAAA,CAA0E,EAA7D,KAAb,GAAA,EAAA,CAAA,CAAA,CAAkB,EAAE,cAApB,GAAA,EAAA,CAAA,CAAA,CAA0E,CAA1E;YAEM,IAAI,CAAC,cAAc,IAAI,YAAY,EAAE;;gBAC3C,IAAc,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAA3C;;gBACA,IAAc,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAjC;gBACQ,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;aACnD;YAED,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;SACrB;QAED,OAAO,KAAK,CAAC;KACd,CAAH;;;;;;;;;;IAGY,cAAZ,CAAA,SAAA,CAAA,mBAA+B;;;;;;;;IAA7B,UAA8B,KAAsB,EACtB,KAAuB,EACvB,OAAyC,EAFzE;QAEgC,IAAhC,OAAA,KAAA,KAAA,CAAA,EAAgC,EAAA,OAAhC,GAAuD,IAAI,CAAC,aAAa,CAAzE,EAAA;QACI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;KACxD,CAAH;;;;;;;IAEY,cAAZ,CAAA,SAAA,CAAA,QAAoB;;;;;;IAAlB,UAAmB,GAAQ,EAAE,EAAU,EAAzC;QACI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;KACxE,CAAH;;;;;;IAEY,cAAZ,CAAA,SAAA,CAAA,eAA2B;;;;;IAAzB,UAA0B,KAAa,EAAzC;QACI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KACvB,CAAH;IACA,OAAA,cAAC,CAAD;CAAC,EAAD,CAAA;;;;;;;;;;;;;;;ADxIA,AAAA,IAAa,mBAAmB,GAAiB;IAC/C;QACE,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,sDAAsD;QAClE,QAAQ,EAAE,IAAI;KACf;IACD;QACE,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,wDAAwD;QACpE,QAAQ,EAAE,GAAG;KACd;IACD;QACE,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,yDAAyD;QACrE,QAAQ,EAAE,GAAG;KACd;IACD;QACE,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,0DAA0D;QACtE,QAAQ,EAAE,GAAG;KACd;IACD;QACE,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,0DAA0D;QACtE,QAAQ,EAAE,GAAG;KACd;IACD;QACE,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,iCAAiC;QAC7C,QAAQ,EAAE,GAAG;KACd;IACD;QACE,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,iCAAiC;QAC7C,QAAQ,EAAE,GAAG;KACd;IACD;QACE,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,kCAAkC;QAC9C,QAAQ,EAAE,GAAG;KACd;IACD;QACE,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,GAAG;QACb,UAAU,EAAE,kCAAkC;KAC/C;IACD;QACE,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,+BAA+B;QAC3C,QAAQ,EAAE,CAAC,GAAG;KACf;IACD;QACE,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,+BAA+B;QAC3C,QAAQ,EAAE,CAAC,GAAG;KACf,EAAE;QACD,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,gCAAgC;QAC5C,QAAQ,EAAE,CAAC,GAAG;KACf;IACD;QACE,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,gCAAgC;QAC5C,QAAQ,EAAE,CAAC,GAAG;KACf;CACF;;;;;;;;;AD1ED,IAAM,gBAAgB,GAAI,kDAAkD,CAA5E;;AACA,IAAM,iBAAiB,GAAG,mDAAmD,CAA7E;;AAEA,IAAM,eAAe,GAAK,yEAAyE,CAAnG;;AACA,IAAM,gBAAgB,GAAI,2EAA2E,CAArG;;AAEA,IAAM,YAAY,GAAQ,gDAAgD,CAA1E;;AACA,IAAM,aAAa,GAAO,kDAAkD,CAA5E;;AAEA,AAAA,IAAa,WAAW,GAAG;IACzB,SAAS,EAAgB,gBAAgB,GAA3C,IAAA,GAAgD,iBAAmB;IACjE,QAAQ,EAAiB,eAAe,GAA1C,KAAA,GAAgD,gBAAkB;IAChE,KAAK,EAAoB,YAAY,GAAvC,IAAA,GAA4C,aAAa,GAAzD,GAA4D;IAE1D,kBAAkB,EAAI,EAAxB,GAA2B,gBAAkB;IAC3C,iBAAiB,EAAQ,eAAe,GAA1C,GAA6C;IAC3C,cAAc,EAAQ,EAAxB,GAA2B,YAAc;IAEvC,mBAAmB,EAAM,iBAAiB,GAA5C,GAA+C;IAC7C,kBAAkB,EAAI,EAAxB,GAA2B,gBAAkB;IAC3C,eAAe,EAAO,EAAxB,GAA2B,aAAe;CACzC,CAAD;;;;;AAKA,AAAA,IAAa,uBAAuB,GAAkB;IACpD,EAAC,OAAO,EAAE,SAAS,EAAa,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,OAAO,EAAC;IAClF,EAAC,OAAO,EAAE,mBAAmB,EAAG,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,iBAAiB,EAAC;IAC5F,EAAC,OAAO,EAAE,kBAAkB,EAAI,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,gBAAgB,EAAC;IAE3F,EAAC,OAAO,EAAE,QAAQ,EAAc,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,MAAM,EAAC;IACjF,EAAC,OAAO,EAAE,kBAAkB,EAAI,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,MAAM,EAAC;IACjF,EAAC,OAAO,EAAE,iBAAiB,EAAK,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,eAAe,EAAC;IAE1F,EAAC,OAAO,EAAE,KAAK,EAAiB,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,GAAG,EAAE,WAAW,EAAG,IAAI,EAAE;IACnG,EAAC,OAAO,EAAE,eAAe,EAAO,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,aAAa,EAAE,WAAW,EAAG,IAAI,EAAE;IAC7G,EAAC,OAAO,EAAE,cAAc,EAAQ,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,YAAY,EAAE,WAAW,EAAG,IAAI,EAAE;CAC7G;;;;;;;;;;;;;;;;;;;;ADnCD,AAAA,SAAgB,YAAY,CAAC,IAAS,EAAtC;IAAwC,IAAxC,OAAA,GAAA,EAAA,CAAyD;IAAzD,KAAwC,IAAxC,EAAA,GAAA,CAAyD,EAAjB,EAAxC,GAAA,SAAA,CAAA,MAAyD,EAAjB,EAAxC,EAAyD,EAAzD;QAAwC,OAAxC,CAAA,EAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,EAAA,CAAA,CAAyD;;IACvD,IAAI,IAAI,IAAI,IAAI,EAAE;QAChB,MAAM,SAAS,CAAC,4CAA4C,CAAC,CAAC;KAC/D;IAED,KAAmB,IAArB,EAAA,GAAA,CAA4B,EAAP,SAArB,GAAA,OAA4B,EAAP,EAArB,GAAA,SAAA,CAAA,MAA4B,EAAP,EAArB,EAA4B,EAAE;QAAvB,IAAI,MAAM,GAAjB,SAAA,CAAA,EAAA,CAAiB,CAAjB;QACI,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;gBACtB,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oBAC9B,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;iBACzB;aACF;SACF;KACF;IAED,OAAO,IAAI,CAAC;CACb;;;;;;ADtBD;AAEA,IAAM,gBAAgB,GAAG,WAAW,CAApC;;;;;AACA,SAAS,cAAc,CAAC,IAAY,EAApC;;IACA,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAnD;;IACA,IAAM,SAAS,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAxD;IACE,OAAO,KAAK,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC;CACxC;;;;;;AAMD,SAAS,SAAS,CAAC,IAAY,EAA/B;IACE,OAAO,IAAI;SACN,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,cAAc,CAAC;SACnB,IAAI,CAAC,EAAE,CAAC,CAAC;CACf;;;;;;;AAMD,AAAA,SAAgB,gBAAgB,CAAC,IAAkB,EAAnD;IACE,IAAI,CAAC,OAAO;;;;IAAC,UAAC,EAAc,EAA9B;QACI,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;YACd,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAChC,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC;SACnC;KACF,EAAC,CAAC;IACH,OAAO,IAAI,CAAC;CACb;;;;;;;;;AAOD,AAAA,SAAgB,YAAY,CAAC,QAAsB,EAAE,MAAyB,EAA9E;IAAqD,IAArD,MAAA,KAAA,KAAA,CAAA,EAAqD,EAAA,MAArD,GAAA,EAA8E,CAA9E,EAAA;;IACA,IAAQ,IAAI,GAAgC,EAAE,CAA9C;IACE,QAAQ,CAAC,OAAO;;;;IAAC,UAAA,EAAE,EAArB;QACI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;KACrB,EAAC,CAAC;;IAEH,MAAM,CAAC,OAAO;;;;IAAC,UAAC,EAAc,EAAhC;QACI,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;YAClB,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;SAClC;aAAM;YACL,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;SACrB;KACF,EAAC,CAAC;IAEH,OAAO,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG;;;;IAAC,UAAA,CAAC,EAAjD,EAAqD,OAAA,IAAI,CAAC,CAAC,CAAC,CAA5D,EAA4D,EAAC,CAAC,CAAC;CAC9D;;;;;;;;;;;AD3CD,AAAA,IAAa,WAAW,GACtB,IAAI,cAAc,CAAe,0CAA0C,EAAE;IAC3E,UAAU,EAAE,MAAM;IAClB,OAAO;;;IAAE,YAAb;;QACA,IAAY,WAAW,GAAQ,MAAM,CAAC,UAAU,CAAC,CAAjD;;QACA,IAAY,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC,CAAhD;;QACA,IAAY,cAAc,GAAiB,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,WAAW,IAAI,EAAE;aACxE,GAAG;;;;QAAC,UAAC,CAA4B,EAA1C,EAA+C,OAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAzE,EAAyE,EAAC,CAAC,CAA3E;;QACA,IAAY,QAAQ,GAAG,CAAC,YAAY,CAAC,iBAAiB,GAAG,EAAE,GAAG,mBAAmB;aACxE,MAAM,CAAC,YAAY,CAAC,iBAAiB,GAAG,uBAAuB,GAAG,EAAE,CAAC,CAA9E;QAEM,OAAO,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;KAC/C,CAAA;CACF,CAAC;;;;;;;;;;;;;ADpBJ,AAAA,SAAgB,sBAAsB,CAAyB,CAAW,EAAE,CAAW,EAAvF;;IACA,IAAQ,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,CAA3C;;IACA,IAAQ,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,CAA3C;IACE,OAAO,SAAS,GAAG,SAAS,CAAC;CAC9B;;;;;;;;AAGD,AAAA,SAAgB,qBAAqB,CAAyB,CAAI,EAAE,CAAI,EAAxE;;IACA,IAAQ,EAAE,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAA5B;;IACA,IAAQ,EAAE,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAA5B;IACE,OAAO,EAAE,GAAG,EAAE,CAAC;CAChB;;;;;;;;;;;ADJD,AAAA,IAAA,kBAAA,kBAAA,YAAA;IAIE,SAAF,kBAAA,CAAmC,IAAkB,EAArD;;;;QAwDmB,IAAnB,CAAA,SAA4B,GAAG,IAAI,GAAG,EAA8B,CAAC;QAvDjE,IAAI,CAAC,KAAK,GAAO,IAAI,CAAzB,KAAA,EAAA,CAA2B,IAAI,CAAC,qBAAqB,CAAC,CAAC;KACpD;;;;;;;;;IAKD,kBAAF,CAAA,SAAA,CAAA,WAAa;;;;;IAAX,UAAY,KAAa,EAA3B;QACI,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK;;;;QAAE,UAAC,EAAE,EAA5D,EAAiE,OAAA,EAAE,CAAC,KAAK,IAAI,KAAK,CAAlF,EAAkF,EAAC,CAAC;KACjF,CAAH;;;;;IAEE,kBAAF,CAAA,SAAA,CAAA,WAAa;;;;IAAX,UAAY,KAAa,EAA3B;QACI,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK;;;;QAAE,UAAC,EAAE,EAA5C,EAAiD,OAAA,EAAE,CAAC,UAAU,IAAI,KAAK,CAAvE,EAAuE,EAAC,CAAC;KACtE,CAAH;IAME,MAAF,CAAA,cAAA,CAAM,kBAAN,CAAA,SAAA,EAAA,cAAkB,EAAlB;;;;;;;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM;;;;YAAC,UAAA,EAAE,EAA/B,EAAmC,OAAA,EAAE,CAAC,WAAW,IAAI,IAAI,CAAzD,EAAyD,EAAC,CAAC;SACxD;;;KAAH,CAAA,CAAG;IAKD,MAAF,CAAA,cAAA,CAAM,kBAAN,CAAA,SAAA,EAAA,SAAa,EAAb;;;;;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG;;;;YAAC,UAAA,EAAE,EAA5B,EAAgC,OAAA,EAAE,CAAC,KAAK,CAAxC,EAAwC,EAAC,CAAC;SACvC;;;KAAH,CAAA,CAAG;IAOD,MAAF,CAAA,cAAA,CAAM,kBAAN,CAAA,SAAA,EAAA,UAAc,EAAd;;;;;;;;;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG;;;;YAAC,UAAA,EAAE,EAA5B,EAAgC,OAAA,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAA5D,EAA4D,EAAC,CAAC;SAC3D;;;KAAH,CAAA,CAAG;;;;;;;;;;;IAKO,kBAAV,CAAA,SAAA,CAAA,iBAA2B;;;;;;;IAAzB,UAA0B,GAAW,EACjC,QAAqC,EAD3C;;QAEA,IAAQ,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAA1C;QACI,IAAI,CAAC,QAAQ,EAAE;YACb,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;SACnC;QACD,OAAO,QAAQ,IAAI,IAAI,CAAC;KAEzB,CAAH;;QAvDA,EAAA,IAAA,EAAC,UAAU,EAAX,IAAA,EAAA,CAAY,EAAC,UAAU,EAAE,MAAM,EAAC,EAAhC,EAAA;;;;QAIA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAe,MAAM,EAArB,IAAA,EAAA,CAAsB,WAAW,EAAjC,EAAA,CAAA,EAAA;;;IAxBA,OAAA,kBAAA,CAAA;CAiFC,EAAD,CAAA;;;;;;;;;;;;;;;;;;AD5DA,AAAA,IAAA,UAAA,kBAAA,YAAA;IAME,SAAF,UAAA,CAAwB,KAAa,EACQ,WAAmB,EACtB,SAAc,EAFxD;QAAwB,IAAxB,CAAA,KAA6B,GAAL,KAAK,CAAQ;QACQ,IAA7C,CAAA,WAAwD,GAAX,WAAW,CAAQ;QACtB,IAA1C,CAAA,SAAmD,GAAT,SAAS,CAAK;;;;QAL7C,IAAX,CAAA,MAAiB,GAAG,IAAI,eAAe,CAAc,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1E,IAAF,CAAA,QAAU,GAAG,IAAI,GAAG,EAA0B,CAAC;QA6GnC,IAAZ,CAAA,YAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KAxGnD;IAKD,MAAF,CAAA,cAAA,CAAM,UAAN,CAAA,SAAA,EAAA,aAAiB,EAAjB;;;;;;;;QAAE,YAAF;;YACA,IAAU,OAAO,GAAa,EAAE,CAAhC;YACI,IAAI,CAAC,QAAQ,CAAC,OAAO;;;;;YAAC,UAAC,GAAmB,EAAE,GAAW,EAA3D;gBACM,IAAI,GAAG,CAAC,OAAO,EAAE;oBACf,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACnB;aACF,EAAC,CAAC;YACH,OAAO,OAAO,CAAC;SAChB;;;KAAH,CAAA,CAAG;;;;;;;;;IAKD,UAAF,CAAA,SAAA,CAAA,QAAU;;;;;IAAR,UAAS,UAAkB,EAA7B;;QACA,IAAU,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAA7C;QACI,OAAO,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;KACpC,CAAH;;;;;;;;;;;;;;;;;;;;;;IAqBE,UAAF,CAAA,SAAA,CAAA,OAAS;;;;;;;;;;;;IAAP,UAAQ,MAAiB,EAAE,YAAoB,EAAjD;QAAE,IAAF,KAAA,GAAA,IAAA,CAsBG;QAtB0B,IAA7B,YAAA,KAAA,KAAA,CAAA,EAA6B,EAAA,YAA7B,GAAA,KAAiD,CAAjD,EAAA;QACI,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;;YACjC,IAAY,WAAW,GAA4B,IAAI,CAAC,YAAY,CAAC,IAAI,CAC/D,MAAM;;;;YAAC,UAAC,MAAmB,EAArC;gBACY,OAAO,CAAC,YAAY,GAAG,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACxE,EAAC,CACL,CADP;;YAEA,IAAY,aAAa,GAA4B,IAAI,UAAU;;;;YAAC,UAAC,QAA+B,EAApG;;;gBACA,IAAc,OAAO,GAAuB,KAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAtE;gBACQ,IAAI,OAAO,CAAC,MAAM,EAAE;;oBAC5B,IAAgB,UAAU,sBAAG,OAAO,CAAC,GAAG,EAAE,EAAC,CAA3C;oBACU,OAAO,CAAC,OAAO;;;;oBAAC,UAAC,CAAc,EAAzC;wBACY,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;qBAClB,EAAC,CAAC;oBACH,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBAC9B;gBACD,QAAQ,CAAC,QAAQ,EAAE,CAAC;aACrB,EAAC,CAAR;YACM,OAAO,KAAK,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;SAC1C;QAED,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B,CAAH;;;;;;;;;;;IAME,UAAF,CAAA,SAAA,CAAA,aAAe;;;;;;IAAb,UAAc,UAA6B,EAA7C;QAAE,IAAF,KAAA,GAAA,IAAA,CAwBG;;QAvBH,IAAU,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC,UAAU,CAAC,CAAtE;;QACA,IAAU,OAAO,GAAkB,EAAE,CAArC;QAEI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEpC,IAAI,CAAC,OAAO;;;;QAAC,UAAC,KAAa,EAA/B;;YACA,IAAY,UAAU;;;;YAAG,UAAC,CAAsB,EAAhD;gBACQ,KAAI,CAAC,KAAK,CAAC,GAAG;;;gBAAC,YAAvB,EAA6B,OAAA,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAhF,EAAgF,EAAC,CAAC;aAC3E,CAAA,CAAP;;YAEA,IAAU,GAAG,GAAG,KAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAxC;YACM,IAAI,CAAC,GAAG,EAAE;gBACR,GAAG,GAAG,KAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC3B,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBAC5B,KAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;aAC/B;YAED,IAAI,GAAG,CAAC,OAAO,EAAE;gBACf,OAAO,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aAC5C;SACF,EAAC,CAAC;QAEH,OAAO,OAAO,CAAC;KAChB,CAAH;;;;;;;;;;;;IAMY,UAAZ,CAAA,SAAA,CAAA,QAAoB;;;;;;;IAAlB,UAAmB,KAAa,EAAlC;QACI,OAAO,YAAY,CAAC,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;KACjE,CAAH;;QA/GA,EAAA,IAAA,EAAC,UAAU,EAAX,IAAA,EAAA,CAAY,EAAC,UAAU,EAAE,MAAM,EAAC,EAAhC,EAAA;;;;QAdA,EAAA,IAAA,EAA4B,MAAM,EAAlC;QAqBA,EAAA,IAAA,EAA0D,MAAM,EAAhE,UAAA,EAAA,CAAA,EAAA,IAAA,EAAe,MAAM,EAArB,IAAA,EAAA,CAAsB,WAAW,EAAjC,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAe,MAAM,EAArB,IAAA,EAAA,CAAsB,QAAQ,EAA9B,EAAA,CAAA,EAAA;;;IA7BA,OAAA,UAAA,CAAA;CAuIC,EAAD,CAAA,CAAC;AAjHD;;;;;AAuHA,IAAM,UAAU,GAA2B,EAAE,CAA7C;;;;;;;;;AASA,SAAS,aAAa,CAAC,YAAsB,EAAE,SAAmB,EAAlE;;IACA,IAAQ,IAAI,GAAG,YAAY,CAAC,MAAM;;;;IAAC,UAAA,EAAE,EAArC,EAAyC,OAAA,CAAC,UAAU,CAAC,EAAE,CAAC,CAAxD,EAAwD,EAAC,CAAzD;IACE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;;QACvB,IAAU,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAjC;QAEI,IAAI;;YACR,IAAY,SAAO,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAtD;YAEM,SAAO,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACzC,IAAI,CAAC,oBAAC,SAAO,IAAS,UAAU,EAAE;;gBACxC,IAAc,OAAO,GAAG,0IAAxB,GAKS,KAAK,GALd,wBAMC,CAND;gBAOQ,SAAO,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;aACxD;YAED,mBAAA,SAAS,CAAC,IAAI,GAAE,WAAW,CAAC,SAAO,CAAC,CAAC;;YAGrC,IAAI,CAAC,OAAO;;;;YAAC,UAAA,EAAE,EAArB,EAAyB,OAAA,UAAU,CAAC,EAAE,CAAC,GAAG,SAAO,CAAjD,EAAiD,EAAC,CAAC;SAE9C;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClB;KACF;CACF;;;;;;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,SAAkB,EAAvD;;IACA,IAAQ,SAAS,GAAG,SAAS,IAAI,CAAC,CAAC,oBAAS,MAAM,IAAE,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,CAAjF;IAEE,OAAO,SAAS,GAAG,oBAAS,MAAM,IAAE,UAAU,CAAC,KAAK,CAAC,yCAAG;QACtD,OAAO,EAAE,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,EAAE;QACxC,KAAK,EAAE,KAAK;QACZ,WAAW;;;QAAE,YAAjB;SACK,CAAA;QACD,cAAc;;;QAAE,YAApB;SACK,CAAA;KACF,IAA6B,CAAC;CAChC;;;;;;;;;;;AD9KD,AAAA,IAAA,cAAA,kBAAA,UAAA,MAAA,EAAA;IACoCD,SAApC,CAAA,cAAA,EAAA,MAAA,CAAA,CAA8C;IAM5C,SAAF,cAAA,CAAc,KAAa,EACQ,WAAmB,EACtB,SAAc,EACxB,YAAgC,EAHtD;QAAE,IAAF,KAAA,GAII,MAJJ,CAAA,IAAA,CAAA,IAAA,EAIU,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,IAJxC,IAAA,CAKG;QAFmB,KAAtB,CAAA,YAAkC,GAAZ,YAAY,CAAoB;QANpD,KAAF,CAAA,mBAAqB,GAAG,IAAI,CAAC;;QAC3B,KAAF,CAAA,WAAa,GAAG,KAAK,CAAC;;KAOnB;;;;;;IAGD,cAAF,CAAA,SAAA,CAAA,QAAU;;;;IAAR,YAAF;QACI,IAAI,CAAC,QAAQ,CAAC,OAAO;;;;QAAC,UAAC,GAAmB,EAA9C;YACM,oBAAC,GAAG,IAAwB,OAAO,EAAE,CAAC;SACvC,EAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC1B,CAAH;;;;;;;;IAGE,cAAF,CAAA,SAAA,CAAA,QAAU;;;;;;IAAR,UAAS,UAAkB,EAAE,WAAmB,EAAlD;QAA+B,IAA/B,WAAA,KAAA,KAAA,CAAA,EAA+B,EAAA,WAA/B,GAAA,KAAkD,CAAlD,EAAA;QACI,WAAW,GAAG,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC;QAC9C,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAE7C,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YAC7C,IAAI,CAAC,cAAc,EAAE,CAAC;YAEtB,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;YACrC,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;SACrD;QAED,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B,CAAH;;;;;;;IAGE,cAAF,CAAA,SAAA,CAAA,cAAgB;;;;;IAAd,UAAe,YAAoB,EAArC;;QACA,IAAU,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,CAA1D;QACI,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,UAAU,KAAK,YAAY,CAAC;KAC9C,CAAH;;;;;;;;;;;;;IAMU,cAAV,CAAA,SAAA,CAAA,qBAA+B;;;;;;;;IAA7B,UAA8B,UAAkB,EAAE,WAAoB,EAAxE;QACI,IAAI,WAAW,EAAE;;YACrB,IAAY,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC,CAA1D;;YACA,IAAY,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,GAAG,SAAS,CAA7C;;YAGM,QAAQ,KAAK;gBACX,KAAK,IAAI;oBACP,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;oBAC/B,MAAM;gBACR,KAAK,IAAI;oBACP,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;oBACtC,MAAM;gBACR,KAAK,IAAI;oBACP,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;oBAC7C,MAAM;gBACR,KAAK,IAAI;oBACP,IAAI,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,CAAC;oBACpD,MAAM;aACT;;YAGD,QAAQ,KAAK;gBACX,KAAK,IAAI;oBACP,IAAI,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,CAAC;oBACpD,MAAM;gBACR,KAAK,IAAI;oBACP,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;oBAC7C,MAAM;gBACR,KAAK,IAAI;oBACP,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;oBACtC,MAAM;gBACR,KAAK,IAAI;oBACP,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;oBAC/B,MAAM;aACT;SACF;;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;KAC1C,CAAH;;;;;;;;;;IAKU,cAAV,CAAA,SAAA,CAAA,gBAA0B;;;;;;IAAxB,UAAyB,OAAe,EAA1C;QAAE,IAAF,KAAA,GAAA,IAAA,CAMG;;QALH,IAAU,QAAQ;;;;QAAG,UAAC,KAAa,EAAnC;;YACA,IAAY,EAAE,GAAG,KAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAArD;YACM,KAAI,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;SACnD,CAAA,CAAL;QACI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO;;;;QAAC,UAAA,KAAK,EAApC,EAAwC,OAAA,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAA9D,EAA8D,EAAC,CAAC;KAC7D,CAAH;;;;;;;;;;IAKU,cAAV,CAAA,SAAA,CAAA,gBAA0B;;;;;;IAAxB,UAAyB,UAAkB,EAA7C;;QACA,IAAU,GAAG,sBAAuB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAsB,CAAvF;QAEI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC/C;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B,CAAH;;;;;;;;;IAGU,cAAV,CAAA,SAAA,CAAA,cAAwB;;;;;;;IAAtB,YAAF;QACI,mBAAA,IAAI,GAAC,QAAQ,CAAC,OAAO;;;;QAAC,UAAC,EAAkB,EAA7C;YACM,oBAAC,EAAE,IAAwB,UAAU,EAAE,CAAC;SACzC,EAAC,CAAC;QACH,0BAAO,IAAI,GAAC;KACb,CAAH;;;;;;;;IAGU,cAAV,CAAA,SAAA,CAAA,mBAA6B;;;;;;IAA3B,UAA4B,UAAkB,EAAhD;QACI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC9D,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;SAChC;KACF,CAAH;;;;;;;;;;;;IAMY,cAAZ,CAAA,SAAA,CAAA,QAAoB;;;;;;;IAAlB,UAAmB,KAAa,EAAlC;QACI,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;KACtC,CAAH;IAEE,MAAF,CAAA,cAAA,CAAgB,cAAhB,CAAA,SAAA,EAAA,cAA4B,EAA5B;;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;SACpC;;;KAAH,CAAA,CAAG;;QAzIH,EAAA,IAAA,EAAC,UAAU,EAAX;;;;QAXA,EAAA,IAAA,EAA4B,MAAM,EAAlC;QAmBA,EAAA,IAAA,EAAgD,MAAM,EAAtD,UAAA,EAAA,CAAA,EAAA,IAAA,EAAe,MAAM,EAArB,IAAA,EAAA,CAAsB,WAAW,EAAjC,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAe,MAAM,EAArB,IAAA,EAAA,CAAsB,QAAQ,EAA9B,EAAA,CAAA,EAAA;QAhBA,EAAA,IAAA,EAAQ,kBAAkB,EAA1B;;IAkJA,OAAA,cAAC,CAAD;CAAC,CA1ImC,UAAU,CA0I9C,CAAA,CAAC;AA1ID;;;;;AAiJA;;;;;;IAYE,SAAF,kBAAA,CAAsB,WAAmB,EAAzC;QAAsB,IAAtB,CAAA,WAAiC,GAAX,WAAW,CAAQ;QAX/B,IAAV,CAAA,SAAmB,GAAG,KAAK,CAAC;QAClB,IAAV,CAAA,UAAoB,GAA6B,EAAE,CAAC;QAyFlD,IAAF,CAAA,QAAU,GAA2B,IAAI,CAAC;KA9EvC;IATD,MAAF,CAAA,cAAA,CAAM,kBAAN,CAAA,SAAA,EAAA,SAAa,EAAb;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;;KAAH,CAAA,CAAG;IAED,MAAF,CAAA,cAAA,CAAM,kBAAN,CAAA,SAAA,EAAA,OAAW,EAAX;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,WAAW,CAAC;SACzB;;;KAAH,CAAA,CAAG;;;;;;;;;;IASD,kBAAF,CAAA,SAAA,CAAA,OAAS;;;;;IAAP,YAAF;QACI,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACtB,CAAH;;;;;;IAGE,kBAAF,CAAA,SAAA,CAAA,QAAU;;;;IAAR,YAAF;QAAE,IAAF,KAAA,GAAA,IAAA,CASG;QARC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,UAAU,CAAC,OAAO;;;;YAAC,UAAC,QAAQ,EAAvC;;gBACA,IAAc,EAAE,sBAA6D,QAAQ,EAAC,CAAtF;gBACQ,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAI,CAAC,CAAC;aACrB,EAAC,CAAC;SACJ;QACD,OAAO,IAAI,CAAC;KACb,CAAH;;;;;;IAGE,kBAAF,CAAA,SAAA,CAAA,UAAY;;;;IAAV,YAAF;QAAE,IAAF,KAAA,GAAA,IAAA,CASG;QARC,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,UAAU,CAAC,OAAO;;;;YAAC,UAAC,QAAQ,EAAvC;;gBACA,IAAc,EAAE,sBAA6D,QAAQ,EAAC,CAAtF;gBACQ,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAI,CAAC,CAAC;aACrB,EAAC,CAAC;SACJ;QACD,OAAO,IAAI,CAAC;KACb,CAAH;;;;;;;IAGE,kBAAF,CAAA,SAAA,CAAA,WAAa;;;;;IAAX,UAAY,QAAgC,EAA9C;QACI,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;YAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAChC;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;;YACxB,IAAY,EAAE,sBAA6D,QAAQ,EAAC,CAApF;YACM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACrB;KACF,CAAH;;;;;;;IAGE,kBAAF,CAAA,SAAA,CAAA,cAAgB;;;;;IAAd,UAAe,CAAgC,EAAjD;KACG,CAAH;;;;;;;IAQE,kBAAF,CAAA,SAAA,CAAA,gBAAkB;;;;;;IAAhB,UACI,CAAS,EACT,EAAsC,EACtC,GAAuC,EAH7C;KAIG,CAAH;;;;;;;IAQE,kBAAF,CAAA,SAAA,CAAA,mBAAqB;;;;;;IAAnB,UACI,CAAS,EACT,EAAsC,EACtC,GAAoC,EAH1C;KAIG,CAAH;;;;;IAEE,kBAAF,CAAA,SAAA,CAAA,aAAe;;;;IAAb,UAAc,CAAQ,EAAxB;QACI,OAAO,KAAK,CAAC;KACd,CAAH;IAGA,OAAA,kBAAC,CAAD;CAAC,EAAD,CAAA,CAAC;;;;;AAKD,AAAA,IAAa,sBAAsB,GAAG;;IACpC,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,cAAc;CACzB;;;;;;;;;;;;AD/OD,IAAM,KAAK,GAAG,OAAO,CAArB;;AACA,AAAA,IAAa,gBAAgB,GAAG;IAC9B,KAAK,EAAE,KAAK;IACZ,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,IAAI;CACf,CAAD;;;;;;;AAQA,AAAA,IAAA,SAAA,kBAAA,YAAA;IAEE,SAAF,SAAA,CACgB,WAA+B,EACR,YAAiC,EACnC,WAAmB,EAHxD;QACgB,IAAhB,CAAA,WAA2B,GAAX,WAAW,CAAoB;QACR,IAAvC,CAAA,YAAmD,GAAZ,YAAY,CAAqB;QACnC,IAArC,CAAA,WAAgD,GAAX,WAAW,CAAQ;;;QA+C9C,IAAV,CAAA,+BAAyC,GAAY,KAAK,CAAC;;;;;;QAOjD,IAAV,CAAA,0BAAoC,GAAY,KAAK,CAAC;;;;QAsH5C,IAAV,CAAA,UAAoB,GAAG,KAAK,CAAC;QACnB,IAAV,CAAA,KAAe,GAAe,IAAI,UAAU,EAAE,CAAC;QACrC,IAAV,CAAA,aAAuB,GAAiB,EAAE,CAAC;KA7KxC;;;;;;;IAGD,SAAF,CAAA,SAAA,CAAA,cAAgB;;;;;IAAd,UAAe,OAAiB,EAAlC;QACI,OAAW,OAAO,CAAtB,MAAA,CAAA,CAAwB,KAAK,CAA7B,CAAA,CAA+B;KAC5B,CAAH;;;;;;;IAGE,SAAF,CAAA,SAAA,CAAA,YAAc;;;;;IAAZ,UAAa,CAAc,EAA7B;QACI,OAAO,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KACvC,CAAH;IAGE,MAAF,CAAA,cAAA,CAAM,SAAN,CAAA,SAAA,EAAA,YAAgB,EAAhB;;;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,YAAY,CAAC,oBAAoB,IAAI,EAAE,CAAC;SACrD;;;KAAH,CAAA,CAAG;IAGD,MAAF,CAAA,cAAA,CAAM,SAAN,CAAA,SAAA,EAAA,kBAAsB,EAAtB;;;;;;QAAE,YAAF;YAAE,IAAF,KAAA,GAAA,IAAA,CAIG;YAHC,0BAAO,IAAI,CAAC,UAAU;iBACjB,GAAG;;;;YAAC,UAAA,KAAK,EAAlB,EAAsB,OAAA,KAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAzD,EAAyD,EAAC;iBACjD,MAAM;;;;YAAC,UAAA,EAAE,EAAlB,EAAsB,OAAA,EAAE,KAAK,IAAI,CAAjC,EAAiC,EAAC,GAAiB;SAChD;;;KAAH,CAAA,CAAG;;;;;;;IAGD,SAAF,CAAA,SAAA,CAAA,mBAAqB;;;;;IAAnB,UAAoB,EAAyB,EAA/C;QAAA,IAAuB,UAAvB,GAAA,EAAA,CAAA,UAAiC,CAAjC;;QACA,IAAU,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAvD;;QACA,IAAU,IAAI,GAAG,EAAE,GAAO,IAAI,CAAC,gBAAgB,CAA/C,MAAA,CAAA,CAAiD,EAAE,CAAnD,CAAA,GAAuD,IAAI,CAAC,gBAAgB,CAA5E;QAEI,OAAO,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;KAC1C,CAAH;;;;;;;IAGE,SAAF,CAAA,SAAA,CAAA,WAAa;;;;;IAAX,UAAY,KAAkB,EAAhC;;QACA,IAAQ,EAAE,GAAuB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAA/E;QACI,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;;YAE5B,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,KAAK,CAAC,UAAU,GAAG,EAAE,GAAG,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC;SAC5C;QACD,OAAO,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;KAC9B,CAAH;;;;;;;;;;;;;;IAkBU,SAAV,CAAA,SAAA,CAAA,6BAAuC;;;;;;;;;;IAArC,UAAsC,MAAkB,EAA1D;QAAE,IAAF,KAAA,GAAA,IAAA,CA2BG;QA1BC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,+BAA+B,EAAE;YAChF,OAAO;SACR;QAED,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC;;QAG5C,oBAAS,MAAM,IAAE,gBAAgB,CAAC,aAAa;;;QAAE,YAArD;;;YAGM,IAAI,CAAC,KAAI,CAAC,UAAU,EAAE;gBACpB,KAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;gBACvC,KAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAI,CAAC,mBAAmB,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBACnF,MAAM,CAAC,YAAY,EAAE,CAAC;aACvB;SACF,EAAC,CAAC;QAEH,oBAAS,MAAM,IAAE,gBAAgB,CAAC,YAAY;;;QAAE,YAApD;;;YAGM,KAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC;YACxC,IAAI,KAAI,CAAC,UAAU,EAAE;gBACnB,KAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC1B,MAAM,CAAC,YAAY,EAAE,CAAC;aACvB;SACF,EAAC,CAAC;KACJ,CAAH;;;;;;;;;;IAME,SAAF,CAAA,SAAA,CAAA,eAAiB;;;;;IAAf,UAAgB,MAAkB,EAApC;QAAE,IAAF,KAAA,GAAA,IAAA,CAiBG;QAhBC,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;QAE3C;;;;QAAO,UAAC,KAAkB,EAA9B;YACM,IAAI,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;gBAC5B,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,KAAI,CAAC,UAAU,EAAE;oBACrC,KAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC5D,MAAM,CAAC,YAAY,EAAE,CAAC;iBAEvB;qBAAM,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAI,CAAC,UAAU,IAAI,CAAC,KAAI,CAAC,0BAA0B,EAAE;oBAChF,KAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBAC1B,MAAM,CAAC,YAAY,EAAE,CAAC;iBACvB;aACF;iBAAM;gBACL,KAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;aAChC;SACF,EAAC;KACH,CAAH;;;;;;IAGE,SAAF,CAAA,SAAA,CAAA,gBAAkB;;;;IAAhB,YAAF;QAAE,IAAF,KAAA,GAAA,IAAA,CAIG;QAHC;;;;QAAO,UAAC,KAAkB,EAA9B;YACM,OAAO,EAAE,KAAI,CAAC,UAAU,IAAI,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;SACvD,EAAC;KACH,CAAH;;;;;;;;;;;;;IAMY,SAAZ,CAAA,SAAA,CAAA,aAAyB;;;;;;;;IAAvB,UAAwB,MAAkB,EAAE,MAA4B,EAA1E;QACI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;KACtE,CAAH;;;;;;;;IAGY,SAAZ,CAAA,SAAA,CAAA,YAAwB;;;;;;IAAtB,UAAuB,MAAkB,EAA3C;QACI,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC;QACjD,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KACzB,CAAH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoBE,SAAF,CAAA,SAAA,CAAA,kBAAoB;;;;;;;;;;;;;;;;;;;;IAAlB,UAAmB,KAAkB,EAAvC;QACI,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,0BAA0B,EAAE;YACvD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;;gBAC1B,IAAc,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAjE;gBACQ,IAAI,EAAE,EAAE;oBACN,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;iBACjD;aACF;iBAAM,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE;;;;gBAI3C,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;aACzB;SACF;KACF,CAAH;;QA9KA,EAAA,IAAA,EAAC,UAAU,EAAX,IAAA,EAAA,CAAY,EAAC,UAAU,EAAE,MAAM,EAAC,EAAhC,EAAA;;;;QAzBA,EAAA,IAAA,EAAQ,kBAAkB,EAA1B;QA6BA,EAAA,IAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAO,MAAM,EAAb,IAAA,EAAA,CAAc,aAAa,EAA3B,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAAkD,MAAM,EAAxD,UAAA,EAAA,CAAA,EAAA,IAAA,EAAO,MAAM,EAAb,IAAA,EAAA,CAAc,WAAW,EAAzB,EAAA,CAAA,EAAA;;;IA3CA,OAAA,SAAA,CAAA;CA2NC,EAAD,CAAA,CAAC;AApLD;;;;;;;AA8LA;;;;;;;;;IAAA,SAAA,UAAA,GAAA;;;;QAEE,IAAF,CAAA,gBAAkB,GAAiB,EAAE,CAAC;KA2BrC;;;;;IAzBC,UAAF,CAAA,SAAA,CAAA,mBAAqB;;;;IAAnB,UAAoB,MAA4B,EAAlD;QAAE,IAAF,KAAA,GAAA,IAAA,CAMG;QALC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpC,MAAM,CAAC,OAAO;;;;QAAC,UAAA,EAAE,EAArB,EAAyB,OAAA,KAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAA/C,EAA+C,EAAC,CAAC;QAE7C,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B,CAAH;;;;;;;IAGE,UAAF,CAAA,SAAA,CAAA,aAAe;;;;;IAAb,UAAc,EAAsB,EAAtC;QACI,IAAI,CAAC,CAAC,EAAE,EAAE;;YACd,IAAY,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI;;;;YAAC,UAAA,EAAE,EAApD,EAAwD,OAAA,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,UAAU,CAAvF,EAAuF,EAAC,CAAxF;YACM,IAAI,QAAQ,KAAK,SAAS,EAAE;;;gBAG1B,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,EAAE,CAAC,GAArD,CAAyD,EAAE,CAA3D,CAAA,MAAA,CAAgE,IAAI,CAAC,gBAAgB,CAArF,GACkB,IAAI,CAAC,gBAAgB,CADvC,MAAA,CAAA,CACyC,EAAE,CAD3C,CAC4C,CAAC;aACtC;SACF;KACF,CAAH;;;;;;IAGE,UAAF,CAAA,SAAA,CAAA,KAAO;;;;IAAL,YAAF;QACI,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;KAC5B,CAAH;IACA,OAAA,UAAC,CAAD;CAAC,EAAD,CAAA,CAAC;;;;;;;;;AAOD,SAAS,iBAAiB,CAAC,EAAsB,EAAjD;IACE,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;CACrD;;;;;;;;;;;;;ADlQD,AAAA,SAAgB,WAAW,CAAI,KAAc,EAA7C;IACE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;CAC/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ADmDD,AAAA,IAAA,aAAA,kBAAA,YAAA;IAaE,SAAF,aAAA,CAAwB,WAA+B,EAC/B,UAAsB,EACtB,IAAe,EAFvC;QAAwB,IAAxB,CAAA,WAAmC,GAAX,WAAW,CAAoB;QAC/B,IAAxB,CAAA,UAAkC,GAAV,UAAU,CAAY;QACtB,IAAxB,CAAA,IAA4B,GAAJ,IAAI,CAAW;;;;QAJrC,IAAF,CAAA,cAAgB,GAAG,KAAK,CAAC;QA0HN,IAAnB,CAAA,UAA6B,GAAG,IAAI,OAAO,EAAQ,CAAC;QArHhD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAC7B,MAAM;;;;QAAC,UAAC,OAAsB,EAApC,EAAyC,OAAA,OAAO,CAAC,MAAM,GAAG,CAAC,CAA3D,EAA2D,EAAC,EACtD,GAAG;;;;QAAC,UAAC,OAAsB,EAAjC,EAAsC,OAAA,OAAO,CAAC,CAAC,CAAC,CAAhD,EAAgD,EAAC,CAC5C,CAAC;KACH;;;;;;;;;;IAMD,aAAF,CAAA,SAAA,CAAA,WAAa;;;;;IAAX,YAAF;QACI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B,CAAH;;;;;;;;;;;;;;IASE,aAAF,CAAA,SAAA,CAAA,YAAc;;;;;;;;IAAZ,YAAF;QACI,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB,CAAH;;;;;;;;;;;;;IAQE,aAAF,CAAA,SAAA,CAAA,QAAU;;;;;;IAAR,UAAS,KAAwB,EAAnC;QAAE,IAAF,KAAA,GAAA,IAAA,CAMG;;QALH,IAAU,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAApD;QACI,OAAO,OAAO,CAAC,IAAI;;;;QAAC,UAAA,KAAK,EAA7B;;YACA,IAAY,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,KAAI,CAAC,WAAW,CAAC,CAAzD;YACM,OAAO,KAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACxC,EAAC,CAAC;KACJ,CAAH;;;;;;;;;;;;;;;;;;;IAWU,aAAV,CAAA,SAAA,CAAA,gBAA0B;;;;;;;;;;;IAAxB,YAAF;;QACA,IAAU,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG;;;;QAAC,UAAA,EAAE,EAAjD,EAAqD,OAAA,EAAE,CAAC,UAAU,CAAlE,EAAkE,EAAC,CAAnE;QACI,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;KACtC,CAAH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgBU,aAAV,CAAA,SAAA,CAAA,eAAyB;;;;;;;;;;;;;;;;;IAAvB,UAAwB,MAAgB,EAA1C;QAAE,IAAF,KAAA,GAAA,IAAA,CAwBG;;QAvBH,IAAU,UAAU;;;;QAAG,UAAC,OAAsB,EAA9C;;YACA,IAAY,YAAY;;;;YAAG,UAAC,MAAmB,EAA/C,EAAoD,QAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAjF,EAAkF,CAAA,CAAlF;YACM,QAAQ,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;SAClD,CAAA,CAAL;;QACA,IAAU,eAAe;;;;QAAG,UAAC,OAAsB,EAAnD;YACM,OAAO,CAAC,KAAI,CAAC,cAAc,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM;;;;YAAC,UAAA,MAAM,EAAnE;;gBACA,IAAc,EAAE,GAAG,KAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAlE;gBACQ,OAAO,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC;aACrC,EAAC,CAAC;SACJ,CAAA,CAAL;;;QAII,OAAO,IAAI,CAAC,UAAU;aACjB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;aACzC,IAAI,CACD,MAAM;;;;QAAC,UAAC,MAAmB,EAAvC,EAA4C,OAAA,MAAM,CAAC,OAAO,CAA1D,EAA0D,EAAC,EAC/C,YAAY,CAAC,CAAC,EAAE,aAAa,CAAC,EAC9B,SAAS;;;;QAAC,UAAA,CAAC,EAAvB,EAA2B,OAAA,EAAE,CAAC,KAAI,CAAC,kBAAkB,EAAE,CAAC,CAAxD,EAAwD,EAAC,EAC7C,GAAG,CAAC,eAAe,CAAC,EACpB,MAAM,CAAC,UAAU,CAAC,EAClB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC7B,CAAC;KACP,CAAH;;;;;;;;;;;IAMU,aAAV,CAAA,SAAA,CAAA,kBAA4B;;;;;;IAA1B,YAAF;QAAE,IAAF,KAAA,GAAA,IAAA,CAeG;;QAdH,IAAU,YAAY;;;;QAAG,UAAC,MAAmB,EAA7C;;YACA,IAAU,EAAE,GAAuB,KAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAlF;YACM,OAAO,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SAC/B,CAAA,CAAL;;QACA,IAAU,qBAAqB;;;;QAAG,UAAC,MAAmB,EAAtD;YACM,OAAO,KAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,KAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;SAChF,CAAA,CAAL;QAEI,OAAO,IAAI,CAAC,UAAU;aACjB,WAAW;aACX,GAAG;;;;QAAC,UAAA,KAAK,EAAlB,EAAsB,OAAA,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAlD,EAAkD,EAAC;aAC1C,GAAG,CAAC,qBAAqB,CAAC;aAC1B,GAAG,CAAC,YAAY,CAAC;aACjB,IAAI,CAAC,sBAAsB,CAAC,CAAC;KACnC,CAAH;;QAlIA,EAAA,IAAA,EAAC,UAAU,EAAX,IAAA,EAAA,CAAY,EAAC,UAAU,EAAE,MAAM,EAAC,EAAhC,EAAA;;;;QA/CA,EAAA,IAAA,EAAQ,kBAAkB,EAA1B;QAFA,EAAA,IAAA,EAAQ,UAAU,EAAlB;QACA,EAAA,IAAA,EAAQ,SAAS,EAAjB;;;IAdA,OAAA,aAAA,CAAA;CAoMC,EAAD,CAAA,CAAC;AArID;;;;;;AA0IA,SAAS,YAAY,CAAC,KAAa,EAAE,OAA2B,EAAhE;;IACA,IAAQ,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAArE;IACE,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,GAAG,KAAK,CAAC;CACnC;;;;;;;AAMD,SAAS,YAAY,CAAC,OAAiB,EAAvC;IACE,OAAO,OAAO,CAAC,GAAG;;;;IAAC,UAAC,KAAa,EAAnC,EAAwC,OAAA,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAxD,EAAwD,EAAC;SACxC,MAAM;;;;;IAAC,UAAC,EAAY,EAAE,EAAY,EAAnD,EAAwD,OAAA,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAArE,EAAqE,EAAC;SACrD,GAAG;;;;IAAC,UAAA,KAAK,EAA1B,EAA8B,OAAA,KAAK,CAAC,IAAI,EAAE,CAA1C,EAA0C,EAAC,CAAC;CAC3C;;;;;;;;;;;;;;AD/LD,AAAA,IAAA,YAAA,kBAAA,YAAA;IAGE,SAAF,YAAA,CACgB,WAA+B,EAC/B,UAAsB,EACC,YAAiC,EACnC,WAAmB,EACtB,SAAc,EALhD;QACgB,IAAhB,CAAA,WAA2B,GAAX,WAAW,CAAoB;QAC/B,IAAhB,CAAA,UAA0B,GAAV,UAAU,CAAY;QACC,IAAvC,CAAA,YAAmD,GAAZ,YAAY,CAAqB;QACnC,IAArC,CAAA,WAAgD,GAAX,WAAW,CAAQ;QACtB,IAAlC,CAAA,SAA2C,GAAT,SAAS,CAAK;QAuKtC,IAAV,CAAA,wBAAkC,GAAG,KAAK,CAAC;QACjC,IAAV,CAAA,mBAA6B,GAAkB,EAAE,CAAC;QACxC,IAAV,CAAA,gBAA0B,GAAgC,IAAI,GAAG,EAA0B,CAAC;KAxKzF;;;;;;;;;;IAMD,YAAF,CAAA,SAAA,CAAA,QAAU;;;;;IAAR,UAAS,IAAc,EAAzB;QACI,IAAI,GAAG,IAAI,CAAC,GAAG;;;;QAAC,UAAA,EAAE,EAAtB,EAA0B,OAAA,EAAE,CAAC,IAAI,EAAE,CAAnC,EAAmC,EAAC,CAAC;QAEjC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAE1B,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B,CAAH;;;;;;;;;;IAME,YAAF,CAAA,SAAA,CAAA,OAAS;;;;;IAAP,YAAF;QACI,IAAI,IAAI,CAAC,wBAAwB,EAAE;;YACvC,IAAY,YAAY;;;;YAAG,UAAC,MAAmB,EAA/C,EAAoD,OAAA,MAAM,CAAC,UAAU,CAArE,EAAqE,CAAA,CAArE;;YACA,IAAY,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,CAA7D;YACM,IAAI;gBAEF,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;aAE3B;oBAAS;gBACR,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;gBAC9B,IAAI,IAAI,CAAC,kBAAkB,EAAE;oBAC3B,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;iBACvC;aACF;SACF;KACF,CAAH;;;;;;;;;;;;;;;;;IAUU,YAAV,CAAA,SAAA,CAAA,kBAA4B;;;;;;;;;;IAA1B,YAAF;;QACA,IAAU,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,SAAS,CAA3E;;QACA,IAAU,iBAAiB,GAAG,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAApF;QAEI,IAAI,iBAAiB,EAAE;;YAC3B,IAAY,OAAO,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAA/D;YACM,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SACtE;KACF,CAAH;;;;;;;;;;;;;;;IAQU,YAAV,CAAA,SAAA,CAAA,aAAuB;;;;;;;;IAArB,YAAF;;QACA,IAAU,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAxC;QAEI,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACxC,CAAH;;;;;;;;;IAKU,YAAV,CAAA,SAAA,CAAA,eAAyB;;;;;IAAvB,YAAF;QAAE,IAAF,KAAA,GAAA,IAAA,CAeG;QAdC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;;YACxC,IAAY,aAAa;;;;YAAG,UAAC,KAAa,EAA1C,EAA+C,OAAA,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAA3E,EAA2E,CAAA,CAA3E;;YACA,IAAY,YAAY;;;;YAAG,UAAC,MAAmB,EAA/C;;gBACA,IAAc,EAAE,GAAuB,KAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAtF;gBACQ,OAAO,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;aAC/B,CAAA,CAAP;YAEM,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,kBAAkB;iBAC7C,GAAG,CAAC,aAAa,CAAC;iBAClB,GAAG,CAAC,YAAY,CAAC;iBACjB,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAElC,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;KACF,CAAH;;;;;;;;;;IAKU,YAAV,CAAA,SAAA,CAAA,cAAwB;;;;;;IAAtB,UAAuB,IAAc,EAAvC;QACI,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC3B,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACvC;QACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;KACjC,CAAH;;;;;;;;;;;IAKU,YAAV,CAAA,SAAA,CAAA,oBAA8B;;;;;;;IAA5B,UAA6B,OAAiB,EAAE,OAAc,EAAhE;QAAE,IAAF,KAAA,GAAA,IAAA,CASG;QAT+C,IAAlD,OAAA,KAAA,KAAA,CAAA,EAAkD,EAAA,OAAlD,GAAA,IAAgE,CAAhE,EAAA;;QACA,IAAU,YAAY;;;;QAAG,UAAC,KAAa,EAAvC;;YACA,IAAY,OAAO,GAAG,KAAI,CAAC,WAAW,CAAtC;;YACA,IAAY,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAzE;YACM,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,GAAG,KAAK,CAAC;SACnC,CAAA,CAAL;;QACA,IAAU,eAAe;;;;QAAG,UAAC,KAAa,EAA1C,EAA+C,OAAA,KAAI,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAnF,EAAmF,CAAA,CAAnF;QAEI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;KACpD,CAAH;;;;;;;;;;;;;IAMU,YAAV,CAAA,SAAA,CAAA,oBAA8B;;;;;;;;IAA5B,UAA6B,OAAiB,EAAE,OAAgB,EAAlE;;QACA,IAAU,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAtD;QACI,OAAO,CAAC,OAAO;;;;QAAC,UAAA,KAAK,EAAzB;YACM,QAAQ,CAAC,GAAG,CAAC,KAAK,qBAAE,EAAC,OAAO,EAAE,OAAO,EAAC,GAAmB,CAAC;SAC3D,EAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;KACrC,CAAH;;;;;;;;;IAKU,YAAV,CAAA,SAAA,CAAA,oBAA8B;;;;;IAA5B,YAAF;;QACA,IAAU,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAxC;QAEI,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO;;;;;QAAC,UAAC,KAAqB,EAAE,GAAW,EAAxE;YACM,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACxB,EAAC,CAAC;QACH,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;KACtC,CAAH;;;;;;;;;IAKU,YAAV,CAAA,SAAA,CAAA,sBAAgC;;;;;IAA9B,YAAF;;QACA,IAAU,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAA3C;QAEI,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,gBAAgB,CAAC,OAAO;;;;;QAAC,UAAC,KAAqB,EAAE,GAAW,EAArE;YACM,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACxB,EAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;KACvC,CAAH;;;;;;;;;;;IAKU,YAAV,CAAA,SAAA,CAAA,eAAyB;;;;;;;IAAvB,UAAwB,OAAgB,EAAE,KAAa,EAAzD;QACI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;KAC9D,CAAH;IAEE,MAAF,CAAA,cAAA,CAAc,YAAd,CAAA,SAAA,EAAA,oBAAgC,EAAhC;;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;SACpC;;;KAAH,CAAA,CAAG;;QA7KH,EAAA,IAAA,EAAC,UAAU,EAAX,IAAA,EAAA,CAAY,EAAC,UAAU,EAAE,MAAM,EAAC,EAAhC,EAAA;;;;QAPA,EAAA,IAAA,EAAQ,kBAAkB,EAA1B;QADA,EAAA,IAAA,EAAQ,UAAU,EAAlB;QAcA,EAAA,IAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAO,MAAM,EAAb,IAAA,EAAA,CAAc,aAAa,EAA3B,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAAkD,MAAM,EAAxD,UAAA,EAAA,CAAA,EAAA,IAAA,EAAO,MAAM,EAAb,IAAA,EAAA,CAAc,WAAW,EAAzB,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAO,MAAM,EAAb,IAAA,EAAA,CAAc,QAAQ,EAAtB,EAAA,CAAA,EAAA;;;IA/BA,OAAA,YAAA,CAAA;CA2MC,EAAD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ADxLA,AAAA,SAAgB,gBAAgB,CAAC,MAAmC,EAApE;IACE,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;;QAC1B,IAAQ,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAjC;QAEI,QAAQ,GAAG;YACT,KAAK,SAAS;gBACZ,IAAI,KAAK,KAAK,MAAM,EAAE;oBACpB,MAAM,CAAC,SAAS,CAAC,GAAG;wBAClB,cAAc;wBACd,MAAM;qBACP,CAAC;iBACH;qBAAM,IAAI,KAAK,KAAK,aAAa,EAAE;oBAClC,MAAM,CAAC,SAAS,CAAC,GAAG;wBAClB,qBAAqB;wBACrB,aAAa;qBACd,CAAC;iBACH;qBAAM;oBACL,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;iBAC3B;gBACD,MAAM;YAER,KAAK,aAAa,CAAC;YACnB,KAAK,YAAY,CAAC;YAClB,KAAK,eAAe,CAAC;YACrB,KAAK,MAAM,CAAC;YACZ,KAAK,YAAY,CAAC;YAClB,KAAK,WAAW,CAAC;YACjB,KAAK,WAAW,CAAC;YACjB,KAAK,aAAa,CAAC;YACnB,KAAK,WAAW,CAAC;YACjB,KAAK,iBAAiB;gBACpB,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;gBACjC,MAAM;YAER,KAAK,gBAAgB;gBACnB,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC;gBACvB,MAAM,CAAC,wBAAwB,CAAC,GAAG,KAAK,CAAC;gBACzC,MAAM,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC;gBACjC,MAAM;YAER,KAAK,OAAO;gBACV,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;gBACzE,MAAM;SACT;KACF;IACD,OAAO,MAAM,CAAC;CACf;;;;;;ADlDD,IAAA,UAAA,kBAAA,YAAA;IAGE,SAAF,UAAA,CAAkC,iBAAgC,EACV,mBAA4B,EACzC,WAAmB,EACjB,YAAiC,EAH9E;QAAkC,IAAlC,CAAA,iBAAmD,GAAjB,iBAAiB,CAAe;QACV,IAAxD,CAAA,mBAA2E,GAAnB,mBAAmB,CAAS;QACzC,IAA3C,CAAA,WAAsD,GAAX,WAAW,CAAQ;QACjB,IAA7C,CAAA,YAAyD,GAAZ,YAAY,CAAqB;KAAI;;;;;;;;;;;IAKhF,UAAF,CAAA,SAAA,CAAA,mBAAqB;;;;;;;IAAnB,UAAoB,OAAoB,EACpB,KAA+B,EAC/B,KAAoC,EAF1D;QAEsB,IAAtB,KAAA,KAAA,KAAA,CAAA,EAAsB,EAAA,KAAtB,GAAA,IAA0D,CAA1D,EAAA;;QACA,IAAQ,MAAM,GAAoB,EAAE,CAApC;QACI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;YACtB,KAAK,GAAG,MAAM,CAAC;SAChB;QACD,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAqB,GAAG,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACnF,IAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtD,CAAH;;;;;;;;;;IAKE,UAAF,CAAA,SAAA,CAAA,oBAAsB;;;;;;IAApB,UAAqB,KAAsB,EAAE,QAA4B,EAA3E;QAAE,IAAF,KAAA,GAAA,IAAA,CAKG;QAL4C,IAA/C,QAAA,KAAA,KAAA,CAAA,EAA+C,EAAA,QAA/C,GAAA,EAA2E,CAA3E,EAAA;;QACA,IAAU,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAqB,GAAG,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAA5F;QACI,QAAQ,CAAC,OAAO;;;;QAAC,UAAA,EAAE,EAAvB;YACM,KAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SACjD,EAAC,CAAC;KACJ,CAAH;;;;;;;;;;;;;IAOE,UAAF,CAAA,SAAA,CAAA,gBAAkB;;;;;;;IAAhB,UAAiB,MAAmB,EAAtC;;QACA,IAAU,KAAK,GAAG,gBAAgB,CAAlC;;QACA,IAAQ,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAA/C;;QACA,IAAU,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC;aAC3D,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,KAAK,GAAG,EAAE,CAAjF;QAEI,OAAO,CAAC,KAAK,IAAI,KAAK,EAAE,cAAc,CAAC,CAAC;KACzC,CAAH;;;;;;;;;;IAKE,UAAF,CAAA,SAAA,CAAA,oBAAsB;;;;;;IAApB,UAAqB,OAAoB,EAAE,SAAiB,EAA9D;QACI,OAAO,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KAC9C,CAAH;;;;;;;;;;IAKE,UAAF,CAAA,SAAA,CAAA,iBAAmB;;;;;;IAAjB,UAAkB,OAAoB,EAAE,SAAiB,EAA3D;QACI,OAAO,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;YACxC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;KACxF,CAAH;;;;;;;;;;;;;IAME,UAAF,CAAA,SAAA,CAAA,WAAa;;;;;;;;IAAX,UAAY,OAAoB,EAAE,SAAiB,EAAE,UAAkB,EAAzE;QAAuD,IAAvD,UAAA,KAAA,KAAA,CAAA,EAAuD,EAAA,UAAvD,GAAA,KAAyE,CAAzE,EAAA;;QACA,IAAQ,KAAK,GAAG,EAAE,CAAlB;QACI,IAAI,OAAO,EAAE;;YACjB,IAAU,cAAc,GAAG,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAA7E;YACM,IAAI,CAAC,cAAc,EAAE;gBACnB,IAAI,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;oBACvC,IAAI,CAAC,UAAU,EAAE;wBACf,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;qBAC/D;iBACF;qBAAM;oBACL,IAAI,IAAI,CAAC,mBAAmB,EAAE;wBAC5B,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;qBACvE;iBACF;aACF;SACF;;;QAID,OAAO,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;KAClC,CAAH;;;;;;;;;;;;;;;IAOU,UAAV,CAAA,SAAA,CAAA,8BAAwC;;;;;;;;;IAAtC,UAAuC,MAAuB,EACvB,OAAoB,EAD7D;QAAE,IAAF,KAAA,GAAA,IAAA,CAgBG;QAdC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO;;;;QAAC,UAAA,GAAG,EAA1C;;YACA,IAAY,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAA5B;;YACA,IAAY,MAAM,GAA+B,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAA9E;YACM,MAAM,CAAC,IAAI,EAAE,CAAC;YACd,KAAkB,IAAxB,EAAA,GAAA,CAA8B,EAAN,QAAxB,GAAA,MAA8B,EAAN,EAAxB,GAAA,QAAA,CAAA,MAA8B,EAAN,EAAxB,EAA8B,EAAE;gBAArB,IAAI,KAAK,GAApB,QAAA,CAAA,EAAA,CAAoB,CAApB;gBACQ,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;gBAChC,IAAI,iBAAiB,CAAC,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAI,CAAC,mBAAmB,EAAE;oBACpE,iBAAiB,CAAC,KAAI,CAAC,WAAW,CAAC;wBACjC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,KAAI,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;iBACrF;qBAAM;oBACL,KAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;iBAC/D;aACF;SACF,EAAC,CAAC;KACJ,CAAH;;;;;;;;IAEU,UAAV,CAAA,SAAA,CAAA,eAAyB;;;;;;;IAAvB,UAAwB,OAAY,EAAE,SAAiB,EAAE,UAAwB,EAAnF;QACI,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;;QAC5E,IAAU,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAtD;QACI,QAAQ,CAAC,SAAS,CAAC,GAAG,UAAU,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KAC9C,CAAH;;;;;;;IAEU,UAAV,CAAA,SAAA,CAAA,eAAyB;;;;;;IAAvB,UAAwB,OAAY,EAAE,SAAiB,EAAzD;;QACA,IAAU,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAtD;QACI,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KAClC,CAAH;;;;;;IAEU,UAAV,CAAA,SAAA,CAAA,mBAA6B;;;;;IAA3B,UAA4B,OAAY,EAA1C;;QACA,IAAU,QAAQ,GAA6B,EAAE,CAAjD;;QACA,IAAU,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAxD;QACI,IAAI,cAAc,EAAE;;YACxB,IAAY,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAnD;YACM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;gBACjD,IAAc,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAzC;gBACQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;;oBAC9B,IAAgB,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAA/C;oBACU,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;wBACrB,MAAM,IAAI,KAAK,CAAC,qBAA5B,GAAkD,KAAO,CAAC,CAAC;qBAChD;;oBACX,IAAgB,MAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAzD;oBACU,QAAQ,CAAC,MAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBACtD;aACF;SACF;QACD,OAAO,QAAQ,CAAC;KACjB,CAAH;;;;;;;IAEU,UAAV,CAAA,SAAA,CAAA,oBAA8B;;;;;;IAA5B,UAA6B,OAAY,EAAE,QAAkC,EAA/E;;QACA,IAAQ,cAAc,GAAG,EAAE,CAA3B;QACI,KAAK,IAAM,GAAG,IAAI,QAAQ,EAAE;;YAChC,IAAY,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAApC;YACM,IAAI,QAAQ,EAAE;gBACZ,cAAc,IAAI,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;aACnD;SACF;QACD,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;KAC/C,CAAH;;QAxJA,EAAA,IAAA,EAAC,UAAU,EAAX,IAAA,EAAA,CAAY,EAAC,UAAU,EAAE,MAAM,EAAC,EAAhC,EAAA;;;;QAJA,EAAA,IAAA,EAAQ,aAAa,EAArB,UAAA,EAAA,CAAA,EAAA,IAAA,EAOe,QAAQ,EAPvB,CAAA,EAAA;QAQA,EAAA,IAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAe,QAAQ,EAAvB,EAAA,EAAA,IAAA,EAA2B,MAAM,EAAjC,IAAA,EAAA,CAAkC,YAAY,EAA9C,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAAwD,MAAM,EAA9D,UAAA,EAAA,CAAA,EAAA,IAAA,EAAe,MAAM,EAArB,IAAA,EAAA,CAAsB,WAAW,EAAjC,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAe,MAAM,EAArB,IAAA,EAAA,CAAsB,aAAa,EAAnC,EAAA,CAAA,EAAA;;;IArBA,OAAA,UAAA,CAAA;CAwKC,EAAD,CAAA;;;;;;;;;;AD9JA,AAAA,IAAA;;;;;IAAA,SAAA,YAAA,GAAA;;;;QAGE,IAAF,CAAA,WAAa,GAAG,IAAI,CAAC;KAYpB;;;;;;;;;;;;;;;IAFC,YAAF,CAAA,SAAA,CAAA,UAAY;;;;;;;;;IAAV,UAAW,MAAc,EAAE,OAAwB,EAAE,OAAgB,EAAvE;KACG,CAAH;IACA,OAAA,YAAC,CAAD;CAAC,EAAD,CAAA;;;;;;;;;;;;;;;;ADZA,AAAA,SAAgB,aAAa,CAAC,KAAa,EAAE,IAAU,EAAE,MAAY,EAArE;IAA6C,IAA7C,IAAA,KAAA,KAAA,CAAA,EAA6C,EAAA,IAA7C,GAAA,GAAuD,CAAvD,EAAA;IAAyD,IAAzD,MAAA,KAAA,KAAA,CAAA,EAAyD,EAAA,MAAzD,GAAA,GAAqE,CAArE,EAAA;;IACA,IAAM,KAAK,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAnC;;IAEA,IAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAA/B;IACE,IAAI,CAAC,GAAG,CAAC,EAAE;QACT,KAAK,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;;QAC7D,IAAQ,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAtD;QACI,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;YACvB,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACtB,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;SACvB;KACF;SAAM,IAAI,CAAC,IAAI,CAAC,EAAE;QACjB,KAAK,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;KAC7C;SAAM;;QACT,IAAQ,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAlC;QACI,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,GAAG;YACrC,IAAI,EAAE,MAAM,EAAE,KAAK;SACpB,CAAC;KACP;IAED,OAAO,KAAK,CAAC;CACd;;;;;;;;;;;;;AAaD,SAAS,kBAAkB,CAAC,IAAY,EAAxC;IACE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;CACjE;;;;;;;;;;ADND,AAAA,IAAA,eAAA,kBAAA,YAAA;IAeE,SAAF,eAAA,CAAwB,UAAsB,EACtB,WAA+B,EAC/B,IAAe,EAFvC;QAAwB,IAAxB,CAAA,UAAkC,GAAV,UAAU,CAAY;QACtB,IAAxB,CAAA,WAAmC,GAAX,WAAW,CAAoB;QAC/B,IAAxB,CAAA,IAA4B,GAAJ,IAAI,CAAW;QAf7B,IAAV,CAAA,oBAA8B,GAAiB,EAAE,CAAC;QACxC,IAAV,CAAA,UAAoB,GAAe,IAAI,GAAG,EAAE,CAAC;QACnC,IAAV,CAAA,aAAuB,GAAkB,IAAI,OAAO,EAAE,CAAC;QAC7C,IAAV,CAAA,UAAoB,GAAe,IAAI,OAAO,EAAE,CAAC;;QACvC,IAAV,CAAA,SAAmB,GAAe,IAAI,OAAO,EAAE,CAAC;;QACtC,IAAV,CAAA,QAAkB,GAAe,IAAI,OAAO,EAAE,CAAC;;QAErC,IAAV,CAAA,OAAiB,GAA4B,IAAI,OAAO,EAAE,CAAC;QASvD,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;IARD,MAAF,CAAA,cAAA,CAAM,eAAN,CAAA,SAAA,EAAA,gBAAoB,EAApB;;;;QAAE,YAAF;YACI,OAAO,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;SAC/E;;;KAAH,CAAA,CAAG;;;;;;;;;;IAYD,eAAF,CAAA,SAAA,CAAA,aAAe;;;;;IAAb,UAAc,EAAe,EAA/B;;QACA,IAAU,EAAE,GAAsB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,CAAjE;QACI,IAAI,EAAE,EAAE;YACN,EAAE,GAAG,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAExB,IAAI,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC9D,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBAEvD,IAAI,CAAC,YAAY,EAAE,CAAC;aAErB;iBAAM,IAAI,CAAC,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;;gBAEtE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3E,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBAEvD,IAAI,CAAC,YAAY,EAAE,CAAC;aACrB;SACF;KACF,CAAH;;;;;;;;;;;;;;;;;;IAUE,eAAF,CAAA,SAAA,CAAA,IAAM;;;;;;;;;IAAJ,UAAK,OAAoB,EACpB,GAAW,EACX,QAAyB,EACzB,OAAuB,EACvB,aAAqC,EAJ5C;QAIO,IAAP,aAAA,KAAA,KAAA,CAAA,EAAO,EAAA,aAAP,GAAA,EAA4C,CAA5C,EAAA;QAEI,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QACvD,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAErD,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;KACtD,CAAH;;;;;;;;;;;;;;IAQE,eAAF,CAAA,SAAA,CAAA,QAAU;;;;;;;IAAR,UAAS,OAAoB,EAAE,GAAW,EAAE,EAAW,EAAzD;;QACA,IAAU,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAA9C;QACI,IAAI,KAAK,EAAE;;YACf,IAAY,MAAM,GAAG,EAAE,KAAK,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAA3F;YACM,IAAI,MAAM,EAAE;gBACV,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aACxB;SACF;QACD,OAAO,SAAS,CAAC;KAClB,CAAH;;;;;;;;;;;;IAOE,eAAF,CAAA,SAAA,CAAA,QAAU;;;;;;IAAR,UAAS,OAAoB,EAAE,GAAW,EAA5C;;QACA,IAAU,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAA9C;QACI,IAAI,KAAK,EAAE;;YACf,IAAY,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAxD;YACM,IAAI,MAAM,EAAE;gBACV,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC;aAC/C;SACF;QACD,OAAO,KAAK,CAAC;KACd,CAAH;;;;;;;;;;;;;;;;IASE,eAAF,CAAA,SAAA,CAAA,QAAU;;;;;;;;IAAR,UAAS,OAAoB,EAAE,GAAW,EAAE,GAAQ,EAAE,EAAU,EAAlE;;QACA,IAAQ,KAAK,GAA8B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAvE;QACI,IAAI,CAAC,KAAK,EAAE;YACV,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SACrC;aAAM;;YACX,IAAY,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAA/D;YACM,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACtB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SACrC;;QACL,IAAU,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAA7C;QACI,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;SACzC;KACF,CAAH;;;;;;;;IAGE,eAAF,CAAA,SAAA,CAAA,UAAY;;;;;;IAAV,UAAW,OAAoB,EAAE,GAAW,EAA9C;QACI,OAAO,IAAI,CAAC,OAAO;aACd,YAAY,EAAE;aACd,IAAI,CAAC,MAAM;;;;QAAC,UAAA,CAAC,EAAtB,EAA0B,OAAA,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAhE,EAAgE,EAAC,CAAC,CAAC;KAChE,CAAH;;;;;;IAGE,eAAF,CAAA,SAAA,CAAA,YAAc;;;;IAAZ,YAAF;QAAE,IAAF,KAAA,GAAA,IAAA,CAuBG;QAtBC,IAAI,CAAC,UAAU,CAAC,OAAO;;;;;QAAC,UAAC,KAAK,EAAE,EAAE,EAAtC;;YACA,IAAY,MAAM,GAAG,IAAI,GAAG,oBAAC,KAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,GAAE,CAAzD;;YACA,IAAU,QAAQ,GAAG,KAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAnD;YAEM,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,OAAO;;;;;gBAAC,UAAC,CAAC,EAAE,CAAC,EAA9B;oBACU,KAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;iBAClB,EAAC,CAAC;aACJ;YAED,MAAM,CAAC,OAAO;;;;YAAC,UAAA,CAAC,EAAtB;gBACQ,QAAQ,GAAG,KAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC7C,IAAI,QAAQ,EAAE;;oBACtB,IAAgB,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAvC;oBACU,KAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;iBAClC;qBAAM;oBACL,KAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;iBAC1B;aACF,EAAC,CAAC;SAEJ,EAAC,CAAC;KACJ,CAAH;;;;;;;;;;;;IAOE,eAAF,CAAA,SAAA,CAAA,YAAc;;;;;;IAAZ,UAAa,OAAoB,EAAE,GAAW,EAAhD;;QACA,IAAU,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAA/C;QACI,IAAI,QAAQ,EAAE;;YAClB,IAAY,OAAO,sBAAkB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAiB,CAAvE;YACM,IAAI,CAAC,CAAC,OAAO,EAAE;gBACb,OAAO,EAAE,CAAC;gBACV,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,OAAO,EAAlC,OAAkC,EAAE,GAAG,EAAvC,GAAuC,EAAE,KAAK,EAAE,EAAE,EAAC,CAAC,CAAC;aAC9C;SACF;KACF,CAAH;;;;;;;;;;;;;;IAQE,eAAF,CAAA,SAAA,CAAA,aAAe;;;;;;;IAAb,UAAc,OAAoB,EAAE,GAAW,EAAE,KAAU,EAA7D;;QACA,IAAU,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAhD;QACI,IAAI,QAAQ,EAAE;;YAClB,IAAY,QAAQ,sBAAmB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAkB,CAA1E;YACM,IAAI,CAAC,CAAC,QAAQ,EAAE;gBACd,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,OAAO,EAAlC,OAAkC,EAAE,GAAG,EAAvC,GAAuC,EAAE,KAAK,EAA9C,KAA8C,EAAC,CAAC,CAAC;aAC1C;SACF;KACF,CAAH;;;;;;;;;;IAME,eAAF,CAAA,SAAA,CAAA,cAAgB;;;;;IAAd,UAAe,OAAoB,EAArC;;QACA,IAAU,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAnD;QACI,IAAI,UAAU,EAAE;YACd,UAAU,CAAC,OAAO;;;;YAAC,UAAA,CAAC,EAA1B,EAA8B,OAAA,CAAC,CAAC,WAAW,EAAE,CAA7C,EAA6C,EAAC,CAAC;YACzC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACjC;;QACL,IAAU,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAnD;QACI,IAAI,UAAU,EAAE;YACd,UAAU,CAAC,OAAO;;;;;YAAC,UAAC,CAAC,EAAE,CAAC,EAA9B,EAAmC,OAAA,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAvD,EAAuD,EAAC,CAAC;YACnD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACjC;KACF,CAAH;;;;;;;;;;;;IAOE,eAAF,CAAA,SAAA,CAAA,aAAe;;;;;;IAAb,UAAc,OAAoB,EAAE,GAAY,EAAlD;QAAE,IAAF,KAAA,GAAA,IAAA,CAYG;;QAXH,IAAU,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAA9C;QACI,IAAI,KAAK,EAAE;;YACf,IAAY,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAA1D;YACM,IAAI,QAAQ,EAAE;gBACZ,IAAI,GAAG,EAAE;oBACP,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;iBACrD;qBAAM;oBACL,QAAQ,CAAC,OAAO;;;;;oBAAC,UAAC,CAAC,EAAE,CAAC,EAAhC,EAAqC,OAAA,KAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAtE,EAAsE,EAAC,CAAC;iBAC/D;aACF;SACF;KACF,CAAH;;;;;;;;;IAGU,eAAV,CAAA,SAAA,CAAA,kBAA4B;;;;;;;IAA1B,UAA2B,OAAoB,EAAE,GAAW,EAA9D;;QACA,IAAQ,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAhD;QACI,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;SACzC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KACjB,CAAH;;;;;;;;;;;;;;;;;;IAQU,eAAV,CAAA,SAAA,CAAA,kBAA4B;;;;;;;;;;;IAA1B,UAA2B,OAAoB,EACpB,GAAW,EACX,QAA2B,EAFxD;QAAE,IAAF,KAAA,GAAA,IAAA,CAkBG;QAfC,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE;;YACrC,IAAU,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAjD;YACM,IAAI,CAAC,QAAQ,EAAE;gBACb,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;gBACrB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;aACxC;;YACP,IAAY,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAA5C;YACM,IAAI,CAAC,YAAY,EAAE;;gBACzB,IAAc,eAAe,GAAG,KAAK,CAArC,KAAA,CAAA,KAAA,CAAA,EAAyC,QAAQ,CAAjD,CAAmD,SAAS;;;gBAAC,YAA7D;;oBACA,IAAgB,YAAY,GAAG,KAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAA1D;oBACU,KAAI,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;iBAChD,EAAC,CAAV;gBACQ,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;aACpC;SACF;KACF,CAAH;;;;;;;;IAGU,eAAV,CAAA,SAAA,CAAA,WAAqB;;;;;;IAAnB,UAAoB,KAAa,EAAnC;QACI,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KAC5C,CAAH;;;;;;;;;;;;;IAOU,eAAV,CAAA,SAAA,CAAA,kBAA4B;;;;;;;IAA1B,UAA2B,KAAoB,EAAE,GAAY,EAA/D;QACI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;YAC/D,IAAY,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAtD;;YACA,IAAY,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAnD;YACM,IAAI,QAAQ,EAAE;gBACZ,IAAI,GAAG,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBAC1C,OAAO,QAAQ,CAAC;iBACjB;aACF;SACF;;QACL,IAAU,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAlC;QACI,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ,GAAG,SAAS,CAAC;KACpF,CAAH;;;;;;;;;IAKU,eAAV,CAAA,SAAA,CAAA,kBAA4B;;;;;IAA1B,YAAF;;QACA,IAAU,MAAM,yCAAG,IAAI,IAAyB,CAAhD;;QACA,IAAU,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG;;;;QAAC,UAAA,EAAE,EAAjD,EAAqD,OAAA,EAAE,CAAC,UAAU,CAAlE,EAAkE,EAAC,CAAnE;QAEI,IAAI,CAAC,UAAU;aACV,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;aAC1C,IAAI,CACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EACtC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CACvC;aACA,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC/C,CAAH;;QA3SA,EAAA,IAAA,EAAC,UAAU,EAAX,IAAA,EAAA,CAAY,EAAC,UAAU,EAAE,MAAM,EAAC,EAAhC,EAAA;;;;QA5BA,EAAA,IAAA,EAAQ,UAAU,EAAlB;QADA,EAAA,IAAA,EAAQ,kBAAkB,EAA1B;QAIA,EAAA,IAAA,EAAQ,SAAS,EAAjB;;;IAlBA,OAAA,eAAA,CAAA;CAwVC,EAAD,CAAA,CAAC;AA5SD;;;;;;;AA8SA,SAAS,cAAc,CAACD,MAAe,EACf,OAAoB,EACpB,GAAW,EACX,KAAsC,EAH9D;IAIE,IAAI,KAAK,KAAK,SAAS,EAAE;;QAC3B,IAAQ,MAAM,GAAGA,MAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAjC;QACI,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACnBA,MAAG,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;SAC1B;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KACxB;CACF;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/esm5/extended.es5.js b/esm5/extended.es5.js index b0edda700..1ffbaf2dc 100644 --- a/esm5/extended.es5.js +++ b/esm5/extended.es5.js @@ -6,8 +6,8 @@ * found in the LICENSE file at https://angular.io/license */ import { __extends, __assign } from 'tslib'; -import { Directive, ElementRef, Inject, PLATFORM_ID, Injectable, Input, NgModule, IterableDiffers, KeyValueDiffers, Optional, Renderer2, Self, SecurityContext, defineInjectable } from '@angular/core'; -import { isPlatformServer, NgClass, NgStyle } from '@angular/common'; +import { Directive, ElementRef, Inject, PLATFORM_ID, Injectable, Input, NgModule, Optional, Self, SecurityContext, ɵɵdefineInjectable } from '@angular/core'; +import { isPlatformServer, NgClass, ɵNgClassImpl, ɵNgClassR2Impl, NgStyle, ɵNgStyleImpl, ɵNgStyleR2Impl } from '@angular/common'; import { MediaMarshaller, BaseDirective2, SERVER_TOKEN, StyleBuilder, StyleUtils, LAYOUT_CONFIG, CoreModule } from '@angular/flex-layout/core'; import { coerceBooleanProperty } from '@angular/cdk/coercion'; import { takeUntil } from 'rxjs/operators'; @@ -15,7 +15,7 @@ import { DomSanitizer } from '@angular/platform-browser'; /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var ImgSrcStyleBuilder = /** @class */ (function (_super) { __extends(ImgSrcStyleBuilder, _super); @@ -36,7 +36,7 @@ var ImgSrcStyleBuilder = /** @class */ (function (_super) { ImgSrcStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ ImgSrcStyleBuilder.ngInjectableDef = defineInjectable({ factory: function ImgSrcStyleBuilder_Factory() { return new ImgSrcStyleBuilder(); }, token: ImgSrcStyleBuilder, providedIn: "root" }); + /** @nocollapse */ ImgSrcStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function ImgSrcStyleBuilder_Factory() { return new ImgSrcStyleBuilder(); }, token: ImgSrcStyleBuilder, providedIn: "root" }); return ImgSrcStyleBuilder; }(StyleBuilder)); var ImgSrcDirective = /** @class */ (function (_super) { @@ -53,7 +53,7 @@ var ImgSrcDirective = /** @class */ (function (_super) { _this.defaultSrc = ''; _this.styleCache = imgSrcCache; _this.init(); - _this.setValue('', _this.nativeElement.getAttribute('src') || ''); + _this.setValue(_this.nativeElement.getAttribute('src') || '', ''); if (isPlatformServer(_this.platformId) && _this.serverModuleLoaded) { _this.nativeElement.setAttribute('src', ''); } @@ -66,7 +66,7 @@ var ImgSrcDirective = /** @class */ (function (_super) { */ function (val) { this.defaultSrc = val; - this.setValue('', this.defaultSrc); + this.setValue(this.defaultSrc, ''); }, enumerable: true, configurable: true @@ -86,6 +86,8 @@ var ImgSrcDirective = /** @class */ (function (_super) { * * Do nothing to standard `` usages, only when responsive * keys are present do we actually call `setAttribute()` + * @protected + * @param {?=} value * @return {?} */ ImgSrcDirective.prototype.updateWithValue = /** @@ -95,16 +97,18 @@ var ImgSrcDirective = /** @class */ (function (_super) { * * Do nothing to standard `` usages, only when responsive * keys are present do we actually call `setAttribute()` + * @protected + * @param {?=} value * @return {?} */ - function () { + function (value) { /** @type {?} */ - var url = this.activatedValue || this.defaultSrc; + var url = value || this.defaultSrc; if (isPlatformServer(this.platformId) && this.serverModuleLoaded) { this.addStyles(url); } else { - this.nativeElement.setAttribute('src', String(url)); + this.nativeElement.setAttribute('src', url); } }; /** @nocollapse */ @@ -155,26 +159,25 @@ var DefaultImgSrcDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var ClassDirective = /** @class */ (function (_super) { __extends(ClassDirective, _super); - function ClassDirective(elementRef, styler, marshal, iterableDiffers, keyValueDiffers, renderer, ngClassInstance) { - var _this = _super.call(this, elementRef, /** @type {?} */ ((null)), styler, marshal) || this; + function ClassDirective(elementRef, styler, marshal, delegate, ngClassInstance) { + var _this = _super.call(this, elementRef, (/** @type {?} */ (null)), styler, marshal) || this; _this.elementRef = elementRef; _this.styler = styler; _this.marshal = marshal; - _this.iterableDiffers = iterableDiffers; - _this.keyValueDiffers = keyValueDiffers; - _this.renderer = renderer; + _this.delegate = delegate; _this.ngClassInstance = ngClassInstance; _this.DIRECTIVE_KEY = 'ngClass'; if (!_this.ngClassInstance) { // Create an instance NgClass Directive instance only if `ngClass=""` has NOT been defined on // the same host element; since the responsive variations may be defined... - _this.ngClassInstance = new NgClass(_this.iterableDiffers, _this.keyValueDiffers, _this.elementRef, _this.renderer); + _this.ngClassInstance = new NgClass(_this.delegate); } _this.init(); + _this.setValue('', ''); return _this; } Object.defineProperty(ClassDirective.prototype, "klass", { @@ -196,10 +199,12 @@ var ClassDirective = /** @class */ (function (_super) { configurable: true }); /** + * @protected * @param {?} value * @return {?} */ ClassDirective.prototype.updateWithValue = /** + * @protected * @param {?} value * @return {?} */ @@ -213,11 +218,18 @@ var ClassDirective = /** @class */ (function (_super) { /** * For ChangeDetectionStrategy.onPush and ngOnChanges() updates */ + // ****************************************************************** + // Lifecycle Hooks + // ****************************************************************** /** * For ChangeDetectionStrategy.onPush and ngOnChanges() updates * @return {?} */ - ClassDirective.prototype.ngDoCheck = /** + ClassDirective.prototype.ngDoCheck = + // ****************************************************************** + // Lifecycle Hooks + // ****************************************************************** + /** * For ChangeDetectionStrategy.onPush and ngOnChanges() updates * @return {?} */ @@ -229,9 +241,7 @@ var ClassDirective = /** @class */ (function (_super) { { type: ElementRef }, { type: StyleUtils }, { type: MediaMarshaller }, - { type: IterableDiffers }, - { type: KeyValueDiffers }, - { type: Renderer2 }, + { type: ɵNgClassImpl }, { type: NgClass, decorators: [{ type: Optional }, { type: Self }] } ]; }; ClassDirective.propDecorators = { @@ -247,6 +257,12 @@ var inputs$1 = [ ]; /** @type {?} */ var selector$1 = "\n [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl],\n [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl],\n [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]\n"; +// tslint:disable-next-line:variable-name +/** @type {?} */ +var LayoutNgClassImplProvider = { + provide: ɵNgClassImpl, + useClass: ɵNgClassR2Impl +}; /** * Directive to add responsive support for ngClass. * This maintains the core functionality of 'ngClass' and adds responsive API @@ -260,29 +276,15 @@ var DefaultClassDirective = /** @class */ (function (_super) { return _this; } DefaultClassDirective.decorators = [ - { type: Directive, args: [{ selector: selector$1, inputs: inputs$1 },] }, + { type: Directive, args: [{ selector: selector$1, inputs: inputs$1, providers: [LayoutNgClassImplProvider] },] }, ]; return DefaultClassDirective; }(ClassDirective)); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -/** - * For fxHide selectors, we invert the 'value' - * and assign to the equivalent fxShow selector cache - * - When 'hide' === '' === true, do NOT show the element - * - When 'hide' === false or 0... we WILL show the element - * @deprecated - * \@deletion-target v7.0.0-beta.21 - * @param {?} hide - * @return {?} - */ -function negativeOf(hide) { - return (hide === '') ? false : - ((hide === 'false') || (hide === 0)) ? true : !hide; -} var ShowHideStyleBuilder = /** @class */ (function (_super) { __extends(ShowHideStyleBuilder, _super); function ShowHideStyleBuilder() { @@ -306,7 +308,7 @@ var ShowHideStyleBuilder = /** @class */ (function (_super) { ShowHideStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ ShowHideStyleBuilder.ngInjectableDef = defineInjectable({ factory: function ShowHideStyleBuilder_Factory() { return new ShowHideStyleBuilder(); }, token: ShowHideStyleBuilder, providedIn: "root" }); + /** @nocollapse */ ShowHideStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function ShowHideStyleBuilder_Factory() { return new ShowHideStyleBuilder(); }, token: ShowHideStyleBuilder, providedIn: "root" }); return ShowHideStyleBuilder; }(StyleBuilder)); var ShowHideDirective = /** @class */ (function (_super) { @@ -332,33 +334,38 @@ var ShowHideDirective = /** @class */ (function (_super) { // ********************************************* // Lifecycle Methods // ********************************************* + // ********************************************* + // Lifecycle Methods + // ********************************************* /** * @return {?} */ - ShowHideDirective.prototype.ngAfterViewInit = /** + ShowHideDirective.prototype.ngAfterViewInit = + // ********************************************* + // Lifecycle Methods + // ********************************************* + /** * @return {?} */ function () { - this.hasLayout = this.marshal.hasValue(this.nativeElement, 'layout'); - this.marshal.trackValue(this.nativeElement, 'layout') - .pipe(takeUntil(this.destroySubject)) - .subscribe(this.updateWithValue.bind(this)); + this.trackExtraTriggers(); /** @type {?} */ var children = Array.from(this.nativeElement.children); for (var i = 0; i < children.length; i++) { - if (this.marshal.hasValue(/** @type {?} */ (children[i]), 'flex')) { + if (this.marshal.hasValue((/** @type {?} */ (children[i])), 'flex')) { this.hasFlexChild = true; break; } } if (DISPLAY_MAP.has(this.nativeElement)) { - this.display = /** @type {?} */ ((DISPLAY_MAP.get(this.nativeElement))); + this.display = (/** @type {?} */ (DISPLAY_MAP.get(this.nativeElement))); } else { this.display = this.getDisplayStyle(); DISPLAY_MAP.set(this.nativeElement, this.display); } this.init(); + // set the default to show unless explicitly overridden /** @type {?} */ var defaultValue = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY, ''); if (defaultValue === undefined || defaultValue === '') { @@ -389,7 +396,11 @@ var ShowHideDirective = /** @class */ (function (_super) { */ function (changes) { var _this = this; - Object.keys(changes).forEach(function (key) { + Object.keys(changes).forEach((/** + * @param {?} key + * @return {?} + */ + function (key) { if (_this.inputs.indexOf(key) !== -1) { /** @type {?} */ var inputKey = key.split('.'); @@ -406,11 +417,45 @@ var ShowHideDirective = /** @class */ (function (_super) { } _this.setValue(shouldShow, bp); } - }); + })); }; // ********************************************* // Protected methods // ********************************************* + /** + * Watch for these extra triggers to update fxShow, fxHide stylings + */ + // ********************************************* + // Protected methods + // ********************************************* + /** + * Watch for these extra triggers to update fxShow, fxHide stylings + * @protected + * @return {?} + */ + ShowHideDirective.prototype.trackExtraTriggers = + // ********************************************* + // Protected methods + // ********************************************* + /** + * Watch for these extra triggers to update fxShow, fxHide stylings + * @protected + * @return {?} + */ + function () { + var _this = this; + this.hasLayout = this.marshal.hasValue(this.nativeElement, 'layout'); + ['layout', 'layout-align'].forEach((/** + * @param {?} key + * @return {?} + */ + function (key) { + _this.marshal + .trackValue(_this.nativeElement, key) + .pipe(takeUntil(_this.destroySubject)) + .subscribe(_this.triggerUpdate.bind(_this)); + })); + }; /** * Override accessor to the current HTMLElement's `display` style * Note: Show/Hide will not change the display to 'flex' but will set it to 'block' @@ -420,12 +465,14 @@ var ShowHideDirective = /** @class */ (function (_super) { * Override accessor to the current HTMLElement's `display` style * Note: Show/Hide will not change the display to 'flex' but will set it to 'block' * unless it was already explicitly specified inline or in a CSS stylesheet. + * @protected * @return {?} */ ShowHideDirective.prototype.getDisplayStyle = /** * Override accessor to the current HTMLElement's `display` style * Note: Show/Hide will not change the display to 'flex' but will set it to 'block' * unless it was already explicitly specified inline or in a CSS stylesheet. + * @protected * @return {?} */ function () { @@ -435,11 +482,13 @@ var ShowHideDirective = /** @class */ (function (_super) { /** Validate the visibility value and then update the host's inline display style */ /** * Validate the visibility value and then update the host's inline display style + * @protected * @param {?=} value * @return {?} */ ShowHideDirective.prototype.updateWithValue = /** * Validate the visibility value and then update the host's inline display style + * @protected * @param {?=} value * @return {?} */ @@ -452,6 +501,7 @@ var ShowHideDirective = /** @class */ (function (_super) { if (isPlatformServer(this.platformId) && this.serverModuleLoaded) { this.nativeElement.style.setProperty('display', ''); } + this.marshal.triggerUpdate((/** @type {?} */ (this.parentElement)), 'layout-gap'); }; /** @nocollapse */ ShowHideDirective.ctorParameters = function () { return [ @@ -469,17 +519,17 @@ var ShowHideDirective = /** @class */ (function (_super) { var DISPLAY_MAP = new WeakMap(); /** @type {?} */ var inputs$2 = [ - 'fxShow', + 'fxShow', 'fxShow.print', 'fxShow.xs', 'fxShow.sm', 'fxShow.md', 'fxShow.lg', 'fxShow.xl', 'fxShow.lt-sm', 'fxShow.lt-md', 'fxShow.lt-lg', 'fxShow.lt-xl', 'fxShow.gt-xs', 'fxShow.gt-sm', 'fxShow.gt-md', 'fxShow.gt-lg', - 'fxHide', + 'fxHide', 'fxHide.print', 'fxHide.xs', 'fxHide.sm', 'fxHide.md', 'fxHide.lg', 'fxHide.xl', 'fxHide.lt-sm', 'fxHide.lt-md', 'fxHide.lt-lg', 'fxHide.lt-xl', 'fxHide.gt-xs', 'fxHide.gt-sm', 'fxHide.gt-md', 'fxHide.gt-lg' ]; /** @type {?} */ -var selector$2 = "\n [fxShow],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n"; +var selector$2 = "\n [fxShow], [fxShow.print],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide], [fxHide.print],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n"; /** * 'show' Layout API directive */ @@ -498,8 +548,9 @@ var DefaultShowHideDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ + /** * NgStyle allowed inputs */ @@ -542,8 +593,16 @@ function buildRawList(source, delimiter) { return String(source) .trim() .split(delimiter) - .map(function (val) { return val.trim(); }) - .filter(function (val) { return val !== ''; }); + .map((/** + * @param {?} val + * @return {?} + */ + function (val) { return val.trim(); })) + .filter((/** + * @param {?} val + * @return {?} + */ + function (val) { return val !== ''; })); } /** * Convert array of key:value strings to a iterable map object @@ -553,17 +612,25 @@ function buildRawList(source, delimiter) { */ function buildMapFromList(styles, sanitize) { /** @type {?} */ - var sanitizeValue = function (it) { + var sanitizeValue = (/** + * @param {?} it + * @return {?} + */ + function (it) { if (sanitize) { it.value = sanitize(it.value); } return it; - }; + }); return styles .map(stringToKeyValue) - .filter(function (entry) { return !!entry; }) + .filter((/** + * @param {?} entry + * @return {?} + */ + function (entry) { return !!entry; })) .map(sanitizeValue) - .reduce(keyValuesToMap, /** @type {?} */ ({})); + .reduce(keyValuesToMap, (/** @type {?} */ ({}))); } /** * Convert Set or raw Object to an iterable NgStyleMap @@ -575,12 +642,20 @@ function buildMapFromSet(source, sanitize) { /** @type {?} */ var list = []; if (getType(source) === 'set') { - (/** @type {?} */ (source)).forEach(function (entry) { return list.push(entry); }); + ((/** @type {?} */ (source))).forEach((/** + * @param {?} entry + * @return {?} + */ + function (entry) { return list.push(entry); })); } else { - Object.keys(source).forEach(function (key) { + Object.keys(source).forEach((/** + * @param {?} key + * @return {?} + */ + function (key) { list.push(key + ":" + ((/** @type {?} */ (source)))[key]); - }); + })); } return buildMapFromList(list, sanitize); } @@ -608,37 +683,41 @@ function keyValuesToMap(map, entry) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var StyleDirective = /** @class */ (function (_super) { __extends(StyleDirective, _super); - function StyleDirective(elementRef, styler, marshal, keyValueDiffers, renderer, sanitizer, ngStyleInstance) { - var _this = _super.call(this, elementRef, /** @type {?} */ ((null)), styler, marshal) || this; + function StyleDirective(elementRef, styler, marshal, delegate, sanitizer, ngStyleInstance, serverLoaded, platformId) { + var _this = _super.call(this, elementRef, (/** @type {?} */ (null)), styler, marshal) || this; _this.elementRef = elementRef; _this.styler = styler; _this.marshal = marshal; - _this.keyValueDiffers = keyValueDiffers; - _this.renderer = renderer; + _this.delegate = delegate; _this.sanitizer = sanitizer; _this.ngStyleInstance = ngStyleInstance; _this.DIRECTIVE_KEY = 'ngStyle'; - _this.fallbackStyles = {}; if (!_this.ngStyleInstance) { // Create an instance NgClass Directive instance only if `ngClass=""` has NOT been // defined on the same host element; since the responsive variations may be defined... - _this.ngStyleInstance = new NgStyle(_this.keyValueDiffers, _this.elementRef, _this.renderer); + _this.ngStyleInstance = new NgStyle(_this.delegate); } _this.init(); /** @type {?} */ var styles = _this.nativeElement.getAttribute('style') || ''; _this.fallbackStyles = _this.buildStyleMap(styles); + _this.isServer = serverLoaded && isPlatformServer(platformId); return _this; } + /** Add generated styles */ /** + * Add generated styles + * @protected * @param {?} value * @return {?} */ StyleDirective.prototype.updateWithValue = /** + * Add generated styles + * @protected * @param {?} value * @return {?} */ @@ -646,6 +725,24 @@ var StyleDirective = /** @class */ (function (_super) { /** @type {?} */ var styles = this.buildStyleMap(value); this.ngStyleInstance.ngStyle = __assign({}, this.fallbackStyles, styles); + if (this.isServer) { + this.applyStyleToElement(styles); + } + this.ngStyleInstance.ngDoCheck(); + }; + /** Remove generated styles */ + /** + * Remove generated styles + * @protected + * @return {?} + */ + StyleDirective.prototype.clearStyles = /** + * Remove generated styles + * @protected + * @return {?} + */ + function () { + this.ngStyleInstance.ngStyle = this.fallbackStyles; this.ngStyleInstance.ngDoCheck(); }; /** @@ -659,6 +756,7 @@ var StyleDirective = /** @class */ (function (_super) { * NOTE: Raw string key-value pairs MUST be delimited by `;` * Comma-delimiters are not supported due to complexities of * possible style values such as `rgba(x,x,x,x)` and others + * @protected * @param {?} styles * @return {?} */ @@ -667,19 +765,25 @@ var StyleDirective = /** @class */ (function (_super) { * NOTE: Raw string key-value pairs MUST be delimited by `;` * Comma-delimiters are not supported due to complexities of * possible style values such as `rgba(x,x,x,x)` and others + * @protected * @param {?} styles * @return {?} */ function (styles) { var _this = this; + // Always safe-guard (aka sanitize) style property values /** @type {?} */ - var sanitizer = function (val) { + var sanitizer = (/** + * @param {?} val + * @return {?} + */ + function (val) { return _this.sanitizer.sanitize(SecurityContext.STYLE, val) || ''; - }; + }); if (styles) { switch (getType(styles)) { case 'string': return buildMapFromList$1(buildRawList(styles), sanitizer); - case 'array': return buildMapFromList$1(/** @type {?} */ (styles), sanitizer); + case 'array': return buildMapFromList$1((/** @type {?} */ (styles)), sanitizer); case 'set': return buildMapFromSet(styles, sanitizer); default: return buildMapFromSet(styles, sanitizer); } @@ -690,11 +794,18 @@ var StyleDirective = /** @class */ (function (_super) { // Lifecycle Hooks // ****************************************************************** /** For ChangeDetectionStrategy.onPush and ngOnChanges() updates */ + // ****************************************************************** + // Lifecycle Hooks + // ****************************************************************** /** * For ChangeDetectionStrategy.onPush and ngOnChanges() updates * @return {?} */ - StyleDirective.prototype.ngDoCheck = /** + StyleDirective.prototype.ngDoCheck = + // ****************************************************************** + // Lifecycle Hooks + // ****************************************************************** + /** * For ChangeDetectionStrategy.onPush and ngOnChanges() updates * @return {?} */ @@ -706,10 +817,11 @@ var StyleDirective = /** @class */ (function (_super) { { type: ElementRef }, { type: StyleUtils }, { type: MediaMarshaller }, - { type: KeyValueDiffers }, - { type: Renderer2 }, + { type: ɵNgStyleImpl }, { type: DomSanitizer }, - { type: NgStyle, decorators: [{ type: Optional }, { type: Self }] } + { type: NgStyle, decorators: [{ type: Optional }, { type: Self }] }, + { type: Boolean, decorators: [{ type: Optional }, { type: Inject, args: [SERVER_TOKEN,] }] }, + { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] } ]; }; return StyleDirective; }(BaseDirective2)); @@ -722,6 +834,12 @@ var inputs$3 = [ ]; /** @type {?} */ var selector$3 = "\n [ngStyle],\n [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl],\n [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl],\n [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]\n"; +// tslint:disable-next-line:variable-name +/** @type {?} */ +var LayoutNgStyleImplProvider = { + provide: ɵNgStyleImpl, + useClass: ɵNgStyleR2Impl +}; /** * Directive to add responsive support for ngStyle. * @@ -734,7 +852,7 @@ var DefaultStyleDirective = /** @class */ (function (_super) { return _this; } DefaultStyleDirective.decorators = [ - { type: Directive, args: [{ selector: selector$3, inputs: inputs$3 },] }, + { type: Directive, args: [{ selector: selector$3, inputs: inputs$3, providers: [LayoutNgStyleImplProvider] },] }, ]; return DefaultStyleDirective; }(StyleDirective)); @@ -746,22 +864,30 @@ var DefaultStyleDirective = /** @class */ (function (_super) { */ function buildMapFromList$1(styles, sanitize) { /** @type {?} */ - var sanitizeValue = function (it) { + var sanitizeValue = (/** + * @param {?} it + * @return {?} + */ + function (it) { if (sanitize) { it.value = sanitize(it.value); } return it; - }; + }); return styles .map(stringToKeyValue) - .filter(function (entry) { return !!entry; }) + .filter((/** + * @param {?} entry + * @return {?} + */ + function (entry) { return !!entry; })) .map(sanitizeValue) - .reduce(keyValuesToMap, /** @type {?} */ ({})); + .reduce(keyValuesToMap, (/** @type {?} */ ({}))); } /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var ALL_DIRECTIVES = [ @@ -790,13 +916,13 @@ var ExtendedModule = /** @class */ (function () { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -export { ExtendedModule, ClassDirective, DefaultClassDirective, ImgSrcStyleBuilder, ImgSrcDirective, DefaultImgSrcDirective, negativeOf, ShowHideStyleBuilder, ShowHideDirective, DefaultShowHideDirective, StyleDirective, DefaultStyleDirective }; +export { ExtendedModule, ClassDirective, LayoutNgClassImplProvider, DefaultClassDirective, ImgSrcStyleBuilder, ImgSrcDirective, DefaultImgSrcDirective, ShowHideStyleBuilder, ShowHideDirective, DefaultShowHideDirective, StyleDirective, LayoutNgStyleImplProvider, DefaultStyleDirective }; //# sourceMappingURL=extended.es5.js.map diff --git a/esm5/extended.es5.js.map b/esm5/extended.es5.js.map index 54be96b3b..88866cc54 100644 --- a/esm5/extended.es5.js.map +++ b/esm5/extended.es5.js.map @@ -1 +1 @@ -{"version":3,"file":"extended.es5.js","sources":["../../../src/lib/extended/module.ts","../../../src/lib/extended/style/style.ts","../../../src/lib/extended/style/style-transforms.ts","../../../src/lib/extended/show-hide/show-hide.ts","../../../src/lib/extended/class/class.ts","../../../src/lib/extended/img-src/img-src.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {NgModule} from '@angular/core';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultImgSrcDirective} from './img-src/img-src';\nimport {DefaultClassDirective} from './class/class';\nimport {DefaultShowHideDirective} from './show-hide/show-hide';\nimport {DefaultStyleDirective} from './style/style';\n\n\nconst ALL_DIRECTIVES = [\n DefaultShowHideDirective,\n DefaultClassDirective,\n DefaultStyleDirective,\n DefaultImgSrcDirective\n];\n\n/**\n * *****************************************************************\n * Define module for the Extended API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class ExtendedModule {\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 {\n Directive,\n DoCheck,\n ElementRef,\n KeyValueDiffers,\n Optional,\n Renderer2,\n SecurityContext,\n Self,\n} from '@angular/core';\nimport {NgStyle} from '@angular/common';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {BaseDirective2, StyleUtils, MediaMarshaller} from '@angular/flex-layout/core';\n\nimport {\n NgStyleRawList,\n NgStyleType,\n NgStyleSanitizer,\n buildRawList,\n getType,\n buildMapFromSet,\n NgStyleMap,\n NgStyleKeyValue,\n stringToKeyValue,\n keyValuesToMap,\n} from './style-transforms';\n\nexport class StyleDirective extends BaseDirective2 implements DoCheck {\n\n protected DIRECTIVE_KEY = 'ngStyle';\n protected fallbackStyles: NgStyleMap = {};\n\n constructor(protected elementRef: ElementRef,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n protected keyValueDiffers: KeyValueDiffers,\n protected renderer: Renderer2,\n protected sanitizer: DomSanitizer,\n @Optional() @Self() private readonly ngStyleInstance: NgStyle) {\n super(elementRef, null!, styler, marshal);\n if (!this.ngStyleInstance) {\n // Create an instance NgClass Directive instance only if `ngClass=\"\"` has NOT been\n // defined on the same host element; since the responsive variations may be defined...\n this.ngStyleInstance = new NgStyle(this.keyValueDiffers, this.elementRef, this.renderer);\n }\n this.init();\n const styles = this.nativeElement.getAttribute('style') || '';\n this.fallbackStyles = this.buildStyleMap(styles);\n }\n\n protected updateWithValue(value: any) {\n const styles = this.buildStyleMap(value);\n this.ngStyleInstance.ngStyle = {...this.fallbackStyles, ...styles};\n this.ngStyleInstance.ngDoCheck();\n }\n\n /**\n * Convert raw strings to ngStyleMap; which is required by ngStyle\n * NOTE: Raw string key-value pairs MUST be delimited by `;`\n * Comma-delimiters are not supported due to complexities of\n * possible style values such as `rgba(x,x,x,x)` and others\n */\n protected buildStyleMap(styles: NgStyleType): NgStyleMap {\n // Always safe-guard (aka sanitize) style property values\n const sanitizer: NgStyleSanitizer = (val: any) =>\n this.sanitizer.sanitize(SecurityContext.STYLE, val) || '';\n if (styles) {\n switch (getType(styles)) {\n case 'string': return buildMapFromList(buildRawList(styles),\n sanitizer);\n case 'array' : return buildMapFromList(styles as NgStyleRawList, sanitizer);\n case 'set' : return buildMapFromSet(styles, sanitizer);\n default : return buildMapFromSet(styles, sanitizer);\n }\n }\n\n return {};\n }\n\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n\n /** For ChangeDetectionStrategy.onPush and ngOnChanges() updates */\n ngDoCheck() {\n this.ngStyleInstance.ngDoCheck();\n }\n}\n\nconst inputs = [\n 'ngStyle',\n 'ngStyle.xs', 'ngStyle.sm', 'ngStyle.md', 'ngStyle.lg', 'ngStyle.xl',\n 'ngStyle.lt-sm', 'ngStyle.lt-md', 'ngStyle.lt-lg', 'ngStyle.lt-xl',\n 'ngStyle.gt-xs', 'ngStyle.gt-sm', 'ngStyle.gt-md', 'ngStyle.gt-lg'\n];\n\nconst selector = `\n [ngStyle],\n [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl],\n [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl],\n [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]\n`;\n\n/**\n * Directive to add responsive support for ngStyle.\n *\n */\n@Directive({selector, inputs})\nexport class DefaultStyleDirective extends StyleDirective implements DoCheck {\n protected inputs = inputs;\n}\n\n/** Build a styles map from a list of styles, while sanitizing bad values first */\nfunction buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap {\n const sanitizeValue = (it: NgStyleKeyValue) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n };\n\n return styles\n .map(stringToKeyValue)\n .filter(entry => !!entry)\n .map(sanitizeValue)\n .reduce(keyValuesToMap, {} as NgStyleMap);\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\nexport type NgStyleRawList = string[];\nexport type NgStyleMap = {[klass: string]: string};\n// NgStyle selectors accept NgStyleType values\nexport type NgStyleType = string | Set | NgStyleRawList | NgStyleMap;\n\n/**\n * Callback function for SecurityContext.STYLE sanitization\n */\nexport type NgStyleSanitizer = (val: any) => string;\n\n/** NgStyle allowed inputs */\nexport class NgStyleKeyValue {\n constructor(public key: string, public value: string, noQuotes = true) {\n this.key = noQuotes ? key.replace(/['\"]/g, '').trim() : key.trim();\n\n this.value = noQuotes ? value.replace(/['\"]/g, '').trim() : value.trim();\n this.value = this.value.replace(/;/, '');\n }\n}\n\nexport function getType(target: any): string {\n let what = typeof target;\n if (what === 'object') {\n return (target.constructor === Array) ? 'array' :\n (target.constructor === Set) ? 'set' : 'object';\n }\n return what;\n}\n\n/**\n * Split string of key:value pairs into Array of k-v pairs\n * e.g. 'key:value; key:value; key:value;' -> ['key:value',...]\n */\nexport function buildRawList(source: any, delimiter = ';'): NgStyleRawList {\n return String(source)\n .trim()\n .split(delimiter)\n .map((val: string) => val.trim())\n .filter(val => val !== '');\n}\n\n/** Convert array of key:value strings to a iterable map object */\nexport function buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap {\n const sanitizeValue = (it: NgStyleKeyValue) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n };\n\n return styles\n .map(stringToKeyValue)\n .filter(entry => !!entry)\n .map(sanitizeValue)\n .reduce(keyValuesToMap, {} as NgStyleMap);\n}\n\n/** Convert Set or raw Object to an iterable NgStyleMap */\nexport function buildMapFromSet(source: NgStyleType, sanitize?: NgStyleSanitizer): NgStyleMap {\n let list: string[] = [];\n if (getType(source) === 'set') {\n (source as Set).forEach(entry => list.push(entry));\n } else {\n Object.keys(source).forEach((key: string) => {\n list.push(`${key}:${(source as NgStyleMap)[key]}`);\n });\n }\n return buildMapFromList(list, sanitize);\n}\n\n\n/** Convert 'key:value' -> [key, value] */\nexport function stringToKeyValue(it: string): NgStyleKeyValue {\n const [key, ...vals] = it.split(':');\n return new NgStyleKeyValue(key, vals.join(':'));\n}\n\n/** Convert [ [key,value] ] -> { key : value } */\nexport function keyValuesToMap(map: NgStyleMap, entry: NgStyleKeyValue): NgStyleMap {\n if (!!entry.key) {\n map[entry.key] = entry.value;\n }\n return map;\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 {\n Directive,\n ElementRef,\n OnChanges,\n SimpleChanges,\n Optional,\n Inject,\n PLATFORM_ID,\n Injectable,\n AfterViewInit,\n} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n BaseDirective2,\n LAYOUT_CONFIG,\n LayoutConfigOptions,\n MediaMarshaller,\n SERVER_TOKEN,\n StyleUtils,\n StyleBuilder,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {takeUntil} from 'rxjs/operators';\n\n/**\n * For fxHide selectors, we invert the 'value'\n * and assign to the equivalent fxShow selector cache\n * - When 'hide' === '' === true, do NOT show the element\n * - When 'hide' === false or 0... we WILL show the element\n * @deprecated\n * @deletion-target v7.0.0-beta.21\n */\nexport function negativeOf(hide: any) {\n return (hide === '') ? false :\n ((hide === 'false') || (hide === 0)) ? true : !hide;\n}\n\nexport interface ShowHideParent {\n display: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class ShowHideStyleBuilder extends StyleBuilder {\n buildStyles(show: string, parent: ShowHideParent) {\n const shouldShow = show === 'true';\n return {'display': shouldShow ? parent.display : 'none'};\n }\n}\n\nexport class ShowHideDirective extends BaseDirective2 implements AfterViewInit, OnChanges {\n protected DIRECTIVE_KEY = 'show-hide';\n\n /** Original dom Elements CSS display style */\n protected display: string = '';\n protected hasLayout = false;\n protected hasFlexChild = false;\n\n constructor(protected elementRef: ElementRef,\n protected styleBuilder: ShowHideStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n @Inject(PLATFORM_ID) protected platformId: Object,\n @Optional() @Inject(SERVER_TOKEN) protected serverModuleLoaded: boolean) {\n super(elementRef, styleBuilder, styler, marshal);\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n ngAfterViewInit() {\n this.hasLayout = this.marshal.hasValue(this.nativeElement, 'layout');\n this.marshal.trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.updateWithValue.bind(this));\n\n const children = Array.from(this.nativeElement.children);\n for (let i = 0; i < children.length; i++) {\n if (this.marshal.hasValue(children[i] as HTMLElement, 'flex')) {\n this.hasFlexChild = true;\n break;\n }\n }\n\n if (DISPLAY_MAP.has(this.nativeElement)) {\n this.display = DISPLAY_MAP.get(this.nativeElement)!;\n } else {\n this.display = this.getDisplayStyle();\n DISPLAY_MAP.set(this.nativeElement, this.display);\n }\n\n this.init();\n // set the default to show unless explicitly overridden\n const defaultValue = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY, '');\n if (defaultValue === undefined || defaultValue === '') {\n this.setValue(true, '');\n } else {\n this.triggerUpdate();\n }\n }\n\n /**\n * On changes to any @Input properties...\n * Default to use the non-responsive Input value ('fxShow')\n * Then conditionally override with the mq-activated Input's current value\n */\n ngOnChanges(changes: SimpleChanges) {\n Object.keys(changes).forEach(key => {\n if (this.inputs.indexOf(key) !== -1) {\n const inputKey = key.split('.');\n const bp = inputKey.slice(1).join('.');\n const inputValue = changes[key].currentValue;\n let shouldShow = inputValue !== '' ?\n inputValue !== 0 ? coerceBooleanProperty(inputValue) : false\n : true;\n if (inputKey[0] === 'fxHide') {\n shouldShow = !shouldShow;\n }\n this.setValue(shouldShow, bp);\n }\n });\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Override accessor to the current HTMLElement's `display` style\n * Note: Show/Hide will not change the display to 'flex' but will set it to 'block'\n * unless it was already explicitly specified inline or in a CSS stylesheet.\n */\n protected getDisplayStyle(): string {\n return (this.hasLayout || (this.hasFlexChild && this.layoutConfig.addFlexToParent)) ?\n 'flex' : this.styler.lookupStyle(this.nativeElement, 'display', true);\n }\n\n /** Validate the visibility value and then update the host's inline display style */\n protected updateWithValue(value: boolean|string = true) {\n if (value === '') {\n return;\n }\n this.addStyles(value ? 'true' : 'false', {display: this.display});\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.nativeElement.style.setProperty('display', '');\n }\n }\n}\n\nconst DISPLAY_MAP: WeakMap = new WeakMap();\n\nconst inputs = [\n 'fxShow',\n 'fxShow.xs', 'fxShow.sm', 'fxShow.md', 'fxShow.lg', 'fxShow.xl',\n 'fxShow.lt-sm', 'fxShow.lt-md', 'fxShow.lt-lg', 'fxShow.lt-xl',\n 'fxShow.gt-xs', 'fxShow.gt-sm', 'fxShow.gt-md', 'fxShow.gt-lg',\n 'fxHide',\n 'fxHide.xs', 'fxHide.sm', 'fxHide.md', 'fxHide.lg', 'fxHide.xl',\n 'fxHide.lt-sm', 'fxHide.lt-md', 'fxHide.lt-lg', 'fxHide.lt-xl',\n 'fxHide.gt-xs', 'fxHide.gt-sm', 'fxHide.gt-md', 'fxHide.gt-lg'\n];\n\nconst selector = `\n [fxShow],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n`;\n\n/**\n * 'show' Layout API directive\n */\n@Directive({selector, inputs})\nexport class DefaultShowHideDirective extends ShowHideDirective {\n protected inputs = inputs;\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 {\n Directive,\n DoCheck,\n ElementRef,\n Input,\n IterableDiffers,\n KeyValueDiffers,\n Optional,\n Renderer2,\n Self,\n} from '@angular/core';\nimport {NgClass} from '@angular/common';\nimport {BaseDirective2, StyleUtils, MediaMarshaller} from '@angular/flex-layout/core';\n\nexport class ClassDirective extends BaseDirective2 implements DoCheck {\n\n protected DIRECTIVE_KEY = 'ngClass';\n\n /**\n * Capture class assignments so we cache the default classes\n * which are merged with activated styles and used as fallbacks.\n */\n @Input('class')\n set klass(val: string) {\n this.ngClassInstance.klass = val;\n this.setValue(val, '');\n }\n\n constructor(protected elementRef: ElementRef,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n protected iterableDiffers: IterableDiffers,\n protected keyValueDiffers: KeyValueDiffers,\n protected renderer: Renderer2,\n @Optional() @Self() protected readonly ngClassInstance: NgClass) {\n super(elementRef, null!, styler, marshal);\n if (!this.ngClassInstance) {\n // Create an instance NgClass Directive instance only if `ngClass=\"\"` has NOT been defined on\n // the same host element; since the responsive variations may be defined...\n this.ngClassInstance = new NgClass(\n this.iterableDiffers, this.keyValueDiffers, this.elementRef, this.renderer\n );\n }\n this.init();\n }\n\n protected updateWithValue(value: any) {\n this.ngClassInstance.ngClass = value;\n this.ngClassInstance.ngDoCheck();\n }\n\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n\n /**\n * For ChangeDetectionStrategy.onPush and ngOnChanges() updates\n */\n ngDoCheck() {\n this.ngClassInstance.ngDoCheck();\n }\n}\n\nconst inputs = [\n 'ngClass', 'ngClass.xs', 'ngClass.sm', 'ngClass.md', 'ngClass.lg', 'ngClass.xl',\n 'ngClass.lt-sm', 'ngClass.lt-md', 'ngClass.lt-lg', 'ngClass.lt-xl',\n 'ngClass.gt-xs', 'ngClass.gt-sm', 'ngClass.gt-md', 'ngClass.gt-lg'\n];\n\nconst selector = `\n [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl],\n [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl],\n [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]\n`;\n\n/**\n * Directive to add responsive support for ngClass.\n * This maintains the core functionality of 'ngClass' and adds responsive API\n * Note: this class is a no-op when rendered on the server\n */\n@Directive({selector, inputs})\nexport class DefaultClassDirective extends ClassDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Inject, PLATFORM_ID, Injectable, Input} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n MediaMarshaller,\n BaseDirective2,\n SERVER_TOKEN,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class ImgSrcStyleBuilder extends StyleBuilder {\n buildStyles(url: string) {\n return {'content': url ? `url(${url})` : ''};\n }\n}\n\nexport class ImgSrcDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'img-src';\n protected defaultSrc = '';\n\n @Input('src')\n set src(val: string) {\n this.defaultSrc = val;\n this.setValue('', this.defaultSrc);\n }\n\n constructor(protected elementRef: ElementRef,\n protected styleBuilder: ImgSrcStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n @Inject(PLATFORM_ID) protected platformId: Object,\n @Inject(SERVER_TOKEN) protected serverModuleLoaded: boolean) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n this.setValue('', this.nativeElement.getAttribute('src') || '');\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.nativeElement.setAttribute('src', '');\n }\n }\n\n /**\n * Use the [responsively] activated input value to update\n * the host img src attribute or assign a default `img.src=''`\n * if the src has not been defined.\n *\n * Do nothing to standard `` usages, only when responsive\n * keys are present do we actually call `setAttribute()`\n */\n protected updateWithValue() {\n let url = this.activatedValue || this.defaultSrc;\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.addStyles(url);\n } else {\n this.nativeElement.setAttribute('src', String(url));\n }\n }\n\n protected styleCache = imgSrcCache;\n}\n\nconst imgSrcCache: Map = new Map();\n\nconst inputs = [\n 'src.xs', 'src.sm', 'src.md', 'src.lg', 'src.xl',\n 'src.lt-sm', 'src.lt-md', 'src.lt-lg', 'src.lt-xl',\n 'src.gt-xs', 'src.gt-sm', 'src.gt-md', 'src.gt-lg'\n];\n\nconst selector = `\n img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl],\n img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl],\n img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]\n`;\n\n/**\n * This directive provides a responsive API for the HTML 'src' attribute\n * and will update the img.src property upon each responsive activation.\n *\n * e.g.\n * \n *\n * @see https://css-tricks.com/responsive-images-youre-just-changing-resolutions-use-src/\n */\n@Directive({selector, inputs})\nexport class DefaultImgSrcDirective extends ImgSrcDirective {\n protected inputs = inputs;\n}\n"],"names":["buildMapFromList","selector","inputs","tslib_1.__extends","tslib_1.__assign"],"mappings":";;;;;;;;;;;;;;;;;;;;IKmBwCG,SAAxC,CAAA,kBAAA,EAAA,MAAA,CAAA,CAAoD;;;;;;;;IAClD,kBAAF,CAAA,SAAA,CAAA,WAAa;;;;IAAX,UAAY,GAAW,EAAzB;QACI,OAAO,EAAC,SAAS,EAAE,GAAG,GAAG,MAA7B,GAAoC,GAAG,GAAvC,GAA0C,GAAG,EAAE,EAAC,CAAC;KAC9C,CAAH;;QAJA,EAAA,IAAA,EAAC,UAAU,EAAX,IAAA,EAAA,CAAY,EAAC,UAAU,EAAE,MAAM,EAAC,EAAhC,EAAA;;;IAlBA,OAAA,kBAAA,CAAA;CAmBA,CAAwC,YAAY,CAApD,CAAA,CAAA;AAAA;IAMqCA,SAArC,CAAA,eAAA,EAAA,MAAA,CAAA,CAAmD;IAUjD,SAAF,eAAA,CAAwB,UAAsB,EACtB,YAAgC,EAChC,MAAkB,EAClB,OAAwB,EACH,UAAkB,EACjB,kBAA2B,EALzE;QAAE,IAAF,KAAA,GAMI,MANJ,CAAA,IAAA,CAAA,IAAA,EAMU,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,IANpD,IAAA,CAYG;QAZqB,KAAxB,CAAA,UAAkC,GAAV,UAAU,CAAY;QACtB,KAAxB,CAAA,YAAoC,GAAZ,YAAY,CAAoB;QAChC,KAAxB,CAAA,MAA8B,GAAN,MAAM,CAAY;QAClB,KAAxB,CAAA,OAA+B,GAAP,OAAO,CAAiB;QACH,KAA7C,CAAA,UAAuD,GAAV,UAAU,CAAQ;QACjB,KAA9C,CAAA,kBAAgE,GAAlB,kBAAkB,CAAS;QAdvE,KAAF,CAAA,aAAA,GAA4B,SAAS,CAAC;QACpC,KAAF,CAAA,UAAA,GAAyB,EAAE,CAAC;QAuC1B,KAAF,CAAA,UAAA,GAAyB,WAAW,CAAC;QAxBjC,KAAI,CAAC,IAAI,EAAE,CAAC;QACZ,KAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAI,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAChE,IAAI,gBAAgB,CAAC,KAAI,CAAC,UAAU,CAAC,IAAI,KAAI,CAAC,kBAAkB,EAAE;YAChE,KAAI,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;SAC5C;;KACF;IAlBD,MAAF,CAAA,cAAA,CACM,eADN,CAAA,SAAA,EAAA,KACS,EADT;;;;;QAAE,UACQ,GAAW,EADrB;YAEI,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SACpC;;;KAAH,CAAA,CAAG;;;;;;;;;;;;;;;;;;IAwBS,eAAZ,CAAA,SAAA,CAAA,eAA2B;;;;;;;;;IAAzB,YAAF;;QACI,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC;QACjD,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAChE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SACrB;aAAM;YACL,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;SACrD;KACF,CAAH;;;QAzDA,EAAA,IAAA,EAAmB,UAAU,EAA7B;QA6BA,EAAA,IAAA,EAAsC,kBAAkB,EAAxD;QArBA,EAAA,IAAA,EAAE,UAAU,EAAZ;QALA,EAAA,IAAA,EAAE,eAAe,EAAjB;QA6BA,EAAA,IAAA,EAAyD,MAAM,EAA/D,UAAA,EAAA,CAAA,EAAA,IAAA,EAAe,MAAM,EAArB,IAAA,EAAA,CAAsB,WAAW,EAAjC,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAe,MAAM,EAArB,IAAA,EAAA,CAAsB,YAAY,EAAlC,EAAA,CAAA,EAAA;;;QAXA,GAAA,EAAA,CAAA,EAAA,IAAA,EAAG,KAAK,EAAR,IAAA,EAAA,CAAS,KAAK,EAAd,EAAA,CAAA;;IA7BA,OAAA,eAAA,CAAA;CAyBA,CAAqC,cAAc,CAAnD,CAAA,CAAA;AAAA;AA4CA,IAAM,WAAW,GAAiC,IAAI,GAAG,EAAE,CAAC;;AAE5D,IAAM,MAAM,GAAG;IACb,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;IAChD,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW;IAClD,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW;CACnD,CAAC;;AAEF,IAAM,QAAQ,GAAG,wNAIhB,CAAC;;;;;;;;;;;IAY0CA,SAA5C,CAAA,sBAAA,EAAA,MAAA,CAAA,CAA2D;;;QACzD,KAAF,CAAA,MAAA,GAAqB,MAAM,CAAC;;;;QAF5B,EAAA,IAAA,EAAC,SAAS,EAAV,IAAA,EAAA,CAAW,EAAC,QAAQ,EAApB,QAAoB,EAAE,MAAM,EAA5B,MAA4B,EAAC,EAA7B,EAAA;;IA5FA,OAAA,sBAAA,CAAA;CA6FA,CAA4C,eAAe,CAA3D,CAAA;;;;;;;IDxEoCA,SAApC,CAAA,cAAA,EAAA,MAAA,CAAA,CAAkD;IAchD,SAAF,cAAA,CAAwB,UAAsB,EACtB,MAAkB,EAClB,OAAwB,EACxB,eAAgC,EAChC,eAAgC,EAChC,QAAmB,EACU,eAAwB,EAN7E;QAAE,IAAF,KAAA,GAOI,MAPJ,CAAA,IAAA,CAAA,IAAA,EAOU,UAAU,qBAAE,IAAI,IAAG,MAAM,EAAE,OAAO,CAAC,IAP7C,IAAA,CAgBG;QAhBqB,KAAxB,CAAA,UAAkC,GAAV,UAAU,CAAY;QACtB,KAAxB,CAAA,MAA8B,GAAN,MAAM,CAAY;QAClB,KAAxB,CAAA,OAA+B,GAAP,OAAO,CAAiB;QACxB,KAAxB,CAAA,eAAuC,GAAf,eAAe,CAAiB;QAChC,KAAxB,CAAA,eAAuC,GAAf,eAAe,CAAiB;QAChC,KAAxB,CAAA,QAAgC,GAAR,QAAQ,CAAW;QACU,KAArD,CAAA,eAAoE,GAAf,eAAe,CAAS;QAlB3E,KAAF,CAAA,aAAA,GAA4B,SAAS,CAAC;QAoBlC,IAAI,CAAC,KAAI,CAAC,eAAe,EAAE;;;YAGzB,KAAI,CAAC,eAAe,GAAG,IAAI,OAAO,CAChC,KAAI,CAAC,eAAe,EAAE,KAAI,CAAC,eAAe,EAAE,KAAI,CAAC,UAAU,EAAE,KAAI,CAAC,QAAQ,CAC3E,CAAC;SACH;QACD,KAAI,CAAC,IAAI,EAAE,CAAC;;KACb;IAtBD,MAAF,CAAA,cAAA,CACM,cADN,CAAA,SAAA,EAAA,OACW,EADX;;;;;;;;;;;QAAE,UACU,GAAW,EADvB;YAEI,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,GAAG,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;SACxB;;;KAAH,CAAA,CAAG;;;;;IAoBS,cAAZ,CAAA,SAAA,CAAA,eAA2B;;;;IAAzB,UAA0B,KAAU,EAAtC;QACI,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;KAClC,CAAH;;;;;;;;;;;IASE,cAAF,CAAA,SAAA,CAAA,SAAW;;;;IAAT,YAAF;QACI,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;KAClC,CAAH;;;QAzDA,EAAA,IAAA,EAAE,UAAU,EAAZ;QASA,EAAA,IAAA,EAAwB,UAAU,EAAlC;QAAA,EAAA,IAAA,EAAoC,eAAe,EAAnD;QAPA,EAAA,IAAA,EAAE,eAAe,EAAjB;QACA,EAAA,IAAA,EAAE,eAAe,EAAjB;QAEA,EAAA,IAAA,EAAE,SAAS,EAAX;QAGA,EAAA,IAAA,EAAQ,OAAO,EAAf,UAAA,EAAA,CAAA,EAAA,IAAA,EAuBe,QAAQ,EAvBvB,EAAA,EAAA,IAAA,EAuB2B,IAAI,EAvB/B,CAAA,EAAA;;;QAWA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAG,KAAK,EAAR,IAAA,EAAA,CAAS,OAAO,EAAhB,EAAA,CAAA;;IA7BA,OAAA,cAAA,CAAA;CAqBA,CAAoC,cAAc,CAAlD,CAAA,CAAA;AAAA;AAiDA,IAAMD,QAAM,GAAG;IACb,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY;IAC/E,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe;IAClE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe;CACnE,CAAC;;AAEF,IAAMD,UAAQ,GAAG,qOAIhB,CAAC;;;;;;;IAQyCE,SAA3C,CAAA,qBAAA,EAAA,MAAA,CAAA,CAAyD;;;QACvD,KAAF,CAAA,MAAA,GAAqBD,QAAM,CAAC;;;;QAF5B,EAAA,IAAA,EAAC,SAAS,EAAV,IAAA,EAAA,CAAW,EAAC,QAAQ,EAApBD,UAAoB,EAAE,MAAM,EAA5BC,QAA4B,EAAC,EAA7B,EAAA;;IAvFA,OAAA,qBAAA,CAAA;CAwFA,CAA2C,cAAc,CAAzD,CAAA;;;;;;;;;;;;;;;;ADjDA,AAAA,SAAgB,UAAU,CAAC,IAAS,EAApC;IACE,OAAO,CAAC,IAAI,KAAK,EAAE,IAAI,KAAK;QACrB,CAAC,CAAC,IAAI,KAAK,OAAO,MAAM,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;CAC5D;;IAOyCC,SAA1C,CAAA,oBAAA,EAAA,MAAA,CAAA,CAAsD;;;;;;;;;IACpD,oBAAF,CAAA,SAAA,CAAA,WAAa;;;;;IAAX,UAAY,IAAY,EAAE,MAAsB,EAAlD;;QACI,IAAM,UAAU,GAAG,IAAI,KAAK,MAAM,CAAC;QACnC,OAAO,EAAC,SAAS,EAAE,UAAU,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,EAAC,CAAC;KAC1D,CAAH;;QALA,EAAA,IAAA,EAAC,UAAU,EAAX,IAAA,EAAA,CAAY,EAAC,UAAU,EAAE,MAAM,EAAC,EAAhC,EAAA;;;IAhDA,OAAA,oBAAA,CAAA;CAiDA,CAA0C,YAAY,CAAtD,CAAA,CAAA;AAAA;IAOuCA,SAAvC,CAAA,iBAAA,EAAA,MAAA,CAAA,CAAqD;IAQnD,SAAF,iBAAA,CAAwB,UAAsB,EACtB,YAAkC,EAClC,MAAkB,EAClB,OAAwB,EACD,YAAiC,EACnC,UAAkB,EACL,kBAA2B,EANrF;QAAE,IAAF,KAAA,GAOI,MAPJ,CAAA,IAAA,CAAA,IAAA,EAOU,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,IAPpD,IAAA,CAQG;QARqB,KAAxB,CAAA,UAAkC,GAAV,UAAU,CAAY;QACtB,KAAxB,CAAA,YAAoC,GAAZ,YAAY,CAAsB;QAClC,KAAxB,CAAA,MAA8B,GAAN,MAAM,CAAY;QAClB,KAAxB,CAAA,OAA+B,GAAP,OAAO,CAAiB;QACD,KAA/C,CAAA,YAA2D,GAAZ,YAAY,CAAqB;QACnC,KAA7C,CAAA,UAAuD,GAAV,UAAU,CAAQ;QACL,KAA1D,CAAA,kBAA4E,GAAlB,kBAAkB,CAAS;QAbnF,KAAF,CAAA,aAAA,GAA4B,WAAW,CAAC;;;;QAGtC,KAAF,CAAA,OAAA,GAA8B,EAAE,CAAC;QAC/B,KAAF,CAAA,SAAA,GAAwB,KAAK,CAAC;QAC5B,KAAF,CAAA,YAAA,GAA2B,KAAK,CAAC;;KAU9B;;;;;;;IAMD,iBAAF,CAAA,SAAA,CAAA,eAAiB;;;IAAf,YAAF;QACI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACrE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC;aAClD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aACpC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;;QAE9C,IAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,mBAAC,QAAQ,CAAC,CAAC,CAAgB,GAAE,MAAM,CAAC,EAAE;gBAC7D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,MAAM;aACP;SACF;QAED,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YACvC,IAAI,CAAC,OAAO,sBAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAC,CAAC;SACrD;aAAM;YACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACtC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACnD;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;;QAEZ,IAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACvF,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,EAAE,EAAE;YACrD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;KACF,CAAH;;;;;;;;;;;;;IAOE,iBAAF,CAAA,SAAA,CAAA,WAAa;;;;;;;IAAX,UAAY,OAAsB,EAApC;QAAE,IAAF,KAAA,GAAA,IAAA,CAeG;QAdC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG,EAApC;YACM,IAAI,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;;gBACnC,IAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;gBAChC,IAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;gBACvC,IAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;;gBAC7C,IAAI,UAAU,GAAG,UAAU,KAAK,EAAE;oBAChC,UAAU,KAAK,CAAC,GAAG,qBAAqB,CAAC,UAAU,CAAC,GAAG,KAAK;sBAC1D,IAAI,CAAC;gBACT,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;oBAC5B,UAAU,GAAG,CAAC,UAAU,CAAC;iBAC1B;gBACD,KAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;aAC/B;SACF,CAAC,CAAC;KACJ,CAAH;;;;;;;;;;;;;;;IAWY,iBAAZ,CAAA,SAAA,CAAA,eAA2B;;;;;;IAAzB,YAAF;QACI,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC;YAChF,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;KACzE,CAAH;;;;;;;IAGY,iBAAZ,CAAA,SAAA,CAAA,eAA2B;;;;;IAAzB,UAA0B,KAA4B,EAAxD;QAA4B,IAA5B,KAAA,KAAA,KAAA,CAAA,EAA4B,EAAA,KAA5B,GAAA,IAAwD,CAAxD,EAAA;QACI,IAAI,KAAK,KAAK,EAAE,EAAE;YAChB,OAAO;SACR;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM,GAAG,OAAO,EAAE,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC,CAAC;QAClE,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAChE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;SACrD;KACF,CAAH;;;QAjJA,EAAA,IAAA,EAAE,UAAU,EAAZ;QAwDA,EAAA,IAAA,EAAsC,oBAAoB,EAA1D;QAxCA,EAAA,IAAA,EAAE,UAAU,EAAZ;QAFA,EAAA,IAAA,EAAE,eAAe,EAAjB;QA6CA,EAAA,IAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAe,MAAM,EAArB,IAAA,EAAA,CAAsB,aAAa,EAAnC,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAAyD,MAAM,EAA/D,UAAA,EAAA,CAAA,EAAA,IAAA,EAAe,MAAM,EAArB,IAAA,EAAA,CAAsB,WAAW,EAAjC,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAe,QAAQ,EAAvB,EAAA,EAAA,IAAA,EAA2B,MAAM,EAAjC,IAAA,EAAA,CAAkC,YAAY,EAA9C,EAAA,CAAA,EAAA;;IAtEA,OAAA,iBAAA,CAAA;CAwDA,CAAuC,cAAc,CAArD,CAAA,CAAA;AAAA;AAqGA,IAAM,WAAW,GAAiC,IAAI,OAAO,EAAE,CAAC;;AAEhE,IAAMD,QAAM,GAAG;IACb,QAAQ;IACR,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW;IAC/D,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9D,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9D,QAAQ;IACR,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW;IAC/D,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IAC9D,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;CAC/D,CAAC;;AAEF,IAAMD,UAAQ,GAAG,ibAShB,CAAC;;;;;IAM4CE,SAA9C,CAAA,wBAAA,EAAA,MAAA,CAAA,CAA+D;;;QAC7D,KAAF,CAAA,MAAA,GAAqBD,QAAM,CAAC;;;;QAF5B,EAAA,IAAA,EAAC,SAAS,EAAV,IAAA,EAAA,CAAW,EAAC,QAAQ,EAApBD,UAAoB,EAAE,MAAM,EAA5BC,QAA4B,EAAC,EAA7B,EAAA;;IAxLA,OAAA,wBAAA,CAAA;CAyLA,CAA8C,iBAAiB,CAA/D,CAAA;;;;;;;;;ADtKA;;;AAAA,eAAA,kBAAA,YAAA;IACE,SAAF,eAAA,CAAqB,GAAW,EAAS,KAAa,EAAE,QAAe,EAAvE;QAAwD,IAAxD,QAAA,KAAA,KAAA,CAAA,EAAwD,EAAA,QAAxD,GAAA,IAAuE,CAAvE,EAAA;QAAqB,IAArB,CAAA,GAAwB,GAAH,GAAG,CAAQ;QAAS,IAAzC,CAAA,KAA8C,GAAL,KAAK,CAAQ;QAClD,IAAI,CAAC,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAEnE,IAAI,CAAC,KAAK,GAAG,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACzE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;KAC1C;IAzBH,OAAA,eAAA,CAAA;CA0BA,EAAA,CAAC,CAAA;;;;;AAED,AAAA,SAAgB,OAAO,CAAC,MAAW,EAAnC;;IACE,IAAI,IAAI,GAAG,OAAO,MAAM,CAAC;IACzB,IAAI,IAAI,KAAK,QAAQ,EAAE;QACrB,OAAO,CAAC,MAAM,CAAC,WAAW,KAAK,KAAK,IAAI,OAAO;YAC3C,CAAC,MAAM,CAAC,WAAW,KAAK,GAAG,IAAI,KAAK,GAAG,QAAQ,CAAC;KACrD;IACD,OAAO,IAAI,CAAC;CACb;;;;;;;;AAMD,AAAA,SAAgB,YAAY,CAAC,MAAW,EAAE,SAAe,EAAzD;IAA0C,IAA1C,SAAA,KAAA,KAAA,CAAA,EAA0C,EAAA,SAA1C,GAAA,GAAyD,CAAzD,EAAA;IACE,OAAO,MAAM,CAAC,MAAM,CAAC;SAChB,IAAI,EAAE;SACN,KAAK,CAAC,SAAS,CAAC;SAChB,GAAG,CAAC,UAAC,GAAW,EAAvB,EAA4B,OAAA,GAAG,CAAC,IAAI,EAAE,CAAtC,EAAsC,CAAC;SAChC,MAAM,CAAC,UAAA,GAAG,EAAjB,EAAqB,OAAA,GAAG,KAAK,EAAE,CAA/B,EAA+B,CAAC,CAAC;CAChC;;;;;;;AAGD,AAAA,SAAgB,gBAAgB,CAAC,MAAsB,EAAE,QAA2B,EAApF;;IACE,IAAM,aAAa,GAAG,UAAC,EAAmB,EAA5C;QACI,IAAI,QAAQ,EAAE;YACZ,EAAE,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;SAC/B;QACD,OAAO,EAAE,CAAC;KACX,CAAC;IAEF,OAAO,MAAM;SACR,GAAG,CAAC,gBAAgB,CAAC;SACrB,MAAM,CAAC,UAAA,KAAK,EAAnB,EAAuB,OAAA,CAAC,CAAC,KAAK,CAA9B,EAA8B,CAAC;SACxB,GAAG,CAAC,aAAa,CAAC;SAClB,MAAM,CAAC,cAAc,oBAAE,EAAgB,EAAC,CAAC;CAC/C;;;;;;;AAGD,AAAA,SAAgB,eAAe,CAAC,MAAmB,EAAE,QAA2B,EAAhF;;IACE,IAAI,IAAI,GAAa,EAAE,CAAC;IACxB,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE;QAC7B,mBAAC,MAAqB,GAAE,OAAO,CAAC,UAAA,KAAK,EAAzC,EAA6C,OAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAA7D,EAA6D,CAAC,CAAC;KAC5D;SAAM;QACL,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAC,GAAW,EAA5C;YACM,IAAI,CAAC,IAAI,CAAI,GAAG,GAAtB,GAAA,GAA0B,oBAAC,MAAoB,IAAE,GAAG,CAAG,CAAC,CAAC;SACpD,CAAC,CAAC;KACJ;IACD,OAAO,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;CACzC;;;;;;AAID,AAAA,SAAgB,gBAAgB,CAAC,EAAU,EAA3C;IACS,IAAT,EAAA,GAAA,EAAA,CAAA,KAAA,CAAA,GAAA,CAAA,EAAS,GAAT,GAAA,EAAA,CAAA,CAAA,CAAY,EAAE,IAAd,GAAA,EAAA,CAAA,KAAA,CAAA,CAAA,CAAqB,CAAkB;IACrC,OAAO,IAAI,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;CACjD;;;;;;;AAGD,AAAA,SAAgB,cAAc,CAAC,GAAe,EAAE,KAAsB,EAAtE;IACE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;QACf,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;KAC9B;IACD,OAAO,GAAG,CAAC;CACZ;;;;;;;IDzDmCC,SAApC,CAAA,cAAA,EAAA,MAAA,CAAA,CAAkD;IAKhD,SAAF,cAAA,CAAwB,UAAsB,EACtB,MAAkB,EAClB,OAAwB,EACxB,eAAgC,EAChC,QAAmB,EACnB,SAAuB,EACI,eAAwB,EAN3E;QAAE,IAAF,KAAA,GAOI,MAPJ,CAAA,IAAA,CAAA,IAAA,EAOU,UAAU,qBAAE,IAAI,IAAG,MAAM,EAAE,OAAO,CAAC,IAP7C,IAAA,CAgBG;QAhBqB,KAAxB,CAAA,UAAkC,GAAV,UAAU,CAAY;QACtB,KAAxB,CAAA,MAA8B,GAAN,MAAM,CAAY;QAClB,KAAxB,CAAA,OAA+B,GAAP,OAAO,CAAiB;QACxB,KAAxB,CAAA,eAAuC,GAAf,eAAe,CAAiB;QAChC,KAAxB,CAAA,QAAgC,GAAR,QAAQ,CAAW;QACnB,KAAxB,CAAA,SAAiC,GAAT,SAAS,CAAc;QACI,KAAnD,CAAA,eAAkE,GAAf,eAAe,CAAS;QATzE,KAAF,CAAA,aAAA,GAA4B,SAAS,CAAC;QACpC,KAAF,CAAA,cAAA,GAAyC,EAAE,CAAC;QAUxC,IAAI,CAAC,KAAI,CAAC,eAAe,EAAE;;;YAGzB,KAAI,CAAC,eAAe,GAAG,IAAI,OAAO,CAAC,KAAI,CAAC,eAAe,EAAE,KAAI,CAAC,UAAU,EAAE,KAAI,CAAC,QAAQ,CAAC,CAAC;SAC1F;QACD,KAAI,CAAC,IAAI,EAAE,CAAC;;QACZ,IAAM,MAAM,GAAG,KAAI,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC9D,KAAI,CAAC,cAAc,GAAG,KAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;;KAClD;;;;;IAES,cAAZ,CAAA,SAAA,CAAA,eAA2B;;;;IAAzB,UAA0B,KAAU,EAAtC;;QACI,IAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,OAAO,GAAhCC,QAAA,CAAA,EAAA,EAAuC,IAAI,CAAC,cAAc,EAAK,MAAM,CAAC,CAAC;QACnE,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;KAClC,CAAH;;;;;;;;;;;;;;;IAQY,cAAZ,CAAA,SAAA,CAAA,aAAyB;;;;;;;;IAAvB,UAAwB,MAAmB,EAA7C;QAAE,IAAF,KAAA,GAAA,IAAA,CAeG;;QAbC,IAAM,SAAS,GAAqB,UAAC,GAAQ,EAAjD;YACM,OAAA,KAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,CAA/D;SAA+D,CAAC;QAC5D,IAAI,MAAM,EAAE;YACV,QAAQ,OAAO,CAAC,MAAM,CAAC;gBACrB,KAAK,QAAQ,EAAG,OAAOJ,kBAAgB,CAAC,YAAY,CAAC,MAAM,CAAC,EAC1D,SAAS,CAAC,CAAC;gBACb,KAAK,OAAQ,EAAG,OAAOA,kBAAgB,mBAAC,MAAwB,GAAE,SAAS,CAAC,CAAC;gBAC7E,KAAK,KAAQ,EAAG,OAAO,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAC1D,SAAgB,OAAO,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;aAC3D;SACF;QAED,OAAO,EAAE,CAAC;KACX,CAAH;;;;;;;;;IAOE,cAAF,CAAA,SAAA,CAAA,SAAW;;;;IAAT,YAAF;QACI,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;KAClC,CAAH;;;QAnFA,EAAA,IAAA,EAAE,UAAU,EAAZ;QASA,EAAA,IAAA,EAAwB,UAAU,EAAlC;QAAA,EAAA,IAAA,EAAoC,eAAe,EAAnD;QARA,EAAA,IAAA,EAAE,eAAe,EAAjB;QAEA,EAAA,IAAA,EAAE,SAAS,EAAX;QAKA,EAAA,IAAA,EAAQ,YAAY,EAApB;QADA,EAAA,IAAA,EAAQ,OAAO,EAAf,UAAA,EAAA,CAAA,EAAA,IAAA,EA4Be,QAAQ,EA5BvB,EAAA,EAAA,IAAA,EA4B2B,IAAI,EA5B/B,CAAA,EAAA;;IAjBA,OAAA,cAAA,CAAA;CAkCA,CAAoC,cAAc,CAAlD,CAAA,CAAA;AAAA;AA8DA,IAAME,QAAM,GAAG;IACb,SAAS;IACT,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY;IACpE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe;IAClE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe;CACnE,CAAC;;AAEF,IAAMD,UAAQ,GAAG,wOAKhB,CAAC;;;;;;IAOyCE,SAA3C,CAAA,qBAAA,EAAA,MAAA,CAAA,CAAyD;;;QACvD,KAAF,CAAA,MAAA,GAAqBD,QAAM,CAAC;;;;QAF5B,EAAA,IAAA,EAAC,SAAS,EAAV,IAAA,EAAA,CAAW,EAAC,QAAQ,EAApBD,UAAoB,EAAE,MAAM,EAA5BC,QAA4B,EAAC,EAA7B,EAAA;;IAlHA,OAAA,qBAAA,CAAA;CAmHA,CAA2C,cAAc,CAAzD,CAAA,CAAA;AAAA;;;;;;AAKA,SAASF,kBAAgB,CAAC,MAAsB,EAAE,QAA2B,EAA7E;;IACE,IAAM,aAAa,GAAG,UAAC,EAAmB,EAA5C;QACI,IAAI,QAAQ,EAAE;YACZ,EAAE,CAAC,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;SAC/B;QACD,OAAO,EAAE,CAAC;KACX,CAAC;IAEF,OAAO,MAAM;SACV,GAAG,CAAC,gBAAgB,CAAC;SACrB,MAAM,CAAC,UAAA,KAAK,EAAjB,EAAqB,OAAA,CAAC,CAAC,KAAK,CAA5B,EAA4B,CAAC;SACxB,GAAG,CAAC,aAAa,CAAC;SAClB,MAAM,CAAC,cAAc,oBAAE,EAAgB,EAAC,CAAC;CAC7C;;;;;;AD9HD;AASA,IAAM,cAAc,GAAG;IACrB,wBAAwB;IACxB,qBAAqB;IACrB,qBAAqB;IACrB,sBAAsB;CACvB,CAAC;;;;;;;;;;QAQF,EAAA,IAAA,EAAC,QAAQ,EAAT,IAAA,EAAA,CAAU;oBACR,OAAO,EAAE,CAAC,UAAU,CAAC;oBACrB,YAAY,EAAM,cAAc,CAAlC,KAAA,EAAmC;oBACjC,OAAO,EAAM,cAAc,CAA7B,KAAA,EAA8B;iBAC7B,EAAD,EAAA;;IAjCA,OAAA,cAAA,CAAA;;;;;;;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"extended.es5.js","sources":["../../../src/lib/extended/module.ts","../../../src/lib/extended/style/style.ts","../../../src/lib/extended/style/style-transforms.ts","../../../src/lib/extended/show-hide/show-hide.ts","../../../src/lib/extended/class/class.ts","../../../src/lib/extended/img-src/img-src.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {NgModule} from '@angular/core';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultImgSrcDirective} from './img-src/img-src';\nimport {DefaultClassDirective} from './class/class';\nimport {DefaultShowHideDirective} from './show-hide/show-hide';\nimport {DefaultStyleDirective} from './style/style';\n\n\nconst ALL_DIRECTIVES = [\n DefaultShowHideDirective,\n DefaultClassDirective,\n DefaultStyleDirective,\n DefaultImgSrcDirective\n];\n\n/**\n * *****************************************************************\n * Define module for the Extended API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class ExtendedModule {\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 {\n Directive,\n DoCheck,\n ElementRef,\n Inject,\n Optional,\n PLATFORM_ID,\n SecurityContext,\n Self,\n} from '@angular/core';\nimport {isPlatformServer, NgStyle, ɵNgStyleImpl, ɵNgStyleR2Impl} from '@angular/common';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n SERVER_TOKEN,\n} from '@angular/flex-layout/core';\n\nimport {\n NgStyleRawList,\n NgStyleType,\n NgStyleSanitizer,\n buildRawList,\n getType,\n buildMapFromSet,\n NgStyleMap,\n NgStyleKeyValue,\n stringToKeyValue,\n keyValuesToMap,\n} from './style-transforms';\n\nexport class StyleDirective extends BaseDirective2 implements DoCheck {\n\n protected DIRECTIVE_KEY = 'ngStyle';\n protected fallbackStyles: NgStyleMap;\n protected isServer: boolean;\n\n constructor(protected elementRef: ElementRef,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n protected delegate: ɵNgStyleImpl,\n protected sanitizer: DomSanitizer,\n @Optional() @Self() private readonly ngStyleInstance: NgStyle,\n @Optional() @Inject(SERVER_TOKEN) serverLoaded: boolean,\n @Inject(PLATFORM_ID) platformId: Object) {\n super(elementRef, null!, styler, marshal);\n if (!this.ngStyleInstance) {\n // Create an instance NgClass Directive instance only if `ngClass=\"\"` has NOT been\n // defined on the same host element; since the responsive variations may be defined...\n this.ngStyleInstance = new NgStyle(this.delegate);\n }\n this.init();\n const styles = this.nativeElement.getAttribute('style') || '';\n this.fallbackStyles = this.buildStyleMap(styles);\n this.isServer = serverLoaded && isPlatformServer(platformId);\n }\n\n /** Add generated styles */\n protected updateWithValue(value: any) {\n const styles = this.buildStyleMap(value);\n this.ngStyleInstance.ngStyle = {...this.fallbackStyles, ...styles};\n if (this.isServer) {\n this.applyStyleToElement(styles);\n }\n this.ngStyleInstance.ngDoCheck();\n }\n\n /** Remove generated styles */\n protected clearStyles() {\n this.ngStyleInstance.ngStyle = this.fallbackStyles;\n this.ngStyleInstance.ngDoCheck();\n }\n\n /**\n * Convert raw strings to ngStyleMap; which is required by ngStyle\n * NOTE: Raw string key-value pairs MUST be delimited by `;`\n * Comma-delimiters are not supported due to complexities of\n * possible style values such as `rgba(x,x,x,x)` and others\n */\n protected buildStyleMap(styles: NgStyleType): NgStyleMap {\n // Always safe-guard (aka sanitize) style property values\n const sanitizer: NgStyleSanitizer = (val: any) =>\n this.sanitizer.sanitize(SecurityContext.STYLE, val) || '';\n if (styles) {\n switch (getType(styles)) {\n case 'string': return buildMapFromList(buildRawList(styles),\n sanitizer);\n case 'array' : return buildMapFromList(styles as NgStyleRawList, sanitizer);\n case 'set' : return buildMapFromSet(styles, sanitizer);\n default : return buildMapFromSet(styles, sanitizer);\n }\n }\n\n return {};\n }\n\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n\n /** For ChangeDetectionStrategy.onPush and ngOnChanges() updates */\n ngDoCheck() {\n this.ngStyleInstance.ngDoCheck();\n }\n}\n\nconst inputs = [\n 'ngStyle',\n 'ngStyle.xs', 'ngStyle.sm', 'ngStyle.md', 'ngStyle.lg', 'ngStyle.xl',\n 'ngStyle.lt-sm', 'ngStyle.lt-md', 'ngStyle.lt-lg', 'ngStyle.lt-xl',\n 'ngStyle.gt-xs', 'ngStyle.gt-sm', 'ngStyle.gt-md', 'ngStyle.gt-lg'\n];\n\nconst selector = `\n [ngStyle],\n [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl],\n [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl],\n [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]\n`;\n\n// tslint:disable-next-line:variable-name\nexport const LayoutNgStyleImplProvider = {\n provide: ɵNgStyleImpl,\n useClass: ɵNgStyleR2Impl\n};\n\n/**\n * Directive to add responsive support for ngStyle.\n *\n */\n@Directive({selector, inputs, providers: [LayoutNgStyleImplProvider]})\nexport class DefaultStyleDirective extends StyleDirective implements DoCheck {\n protected inputs = inputs;\n}\n\n/** Build a styles map from a list of styles, while sanitizing bad values first */\nfunction buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap {\n const sanitizeValue = (it: NgStyleKeyValue) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n };\n\n return styles\n .map(stringToKeyValue)\n .filter(entry => !!entry)\n .map(sanitizeValue)\n .reduce(keyValuesToMap, {} as NgStyleMap);\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\nexport type NgStyleRawList = string[];\nexport type NgStyleMap = {[klass: string]: string};\n// NgStyle selectors accept NgStyleType values\nexport type NgStyleType = string | Set | NgStyleRawList | NgStyleMap;\n\n/**\n * Callback function for SecurityContext.STYLE sanitization\n */\nexport type NgStyleSanitizer = (val: any) => string;\n\n/** NgStyle allowed inputs */\nexport class NgStyleKeyValue {\n constructor(public key: string, public value: string, noQuotes = true) {\n this.key = noQuotes ? key.replace(/['\"]/g, '').trim() : key.trim();\n\n this.value = noQuotes ? value.replace(/['\"]/g, '').trim() : value.trim();\n this.value = this.value.replace(/;/, '');\n }\n}\n\nexport function getType(target: any): string {\n let what = typeof target;\n if (what === 'object') {\n return (target.constructor === Array) ? 'array' :\n (target.constructor === Set) ? 'set' : 'object';\n }\n return what;\n}\n\n/**\n * Split string of key:value pairs into Array of k-v pairs\n * e.g. 'key:value; key:value; key:value;' -> ['key:value',...]\n */\nexport function buildRawList(source: any, delimiter = ';'): NgStyleRawList {\n return String(source)\n .trim()\n .split(delimiter)\n .map((val: string) => val.trim())\n .filter(val => val !== '');\n}\n\n/** Convert array of key:value strings to a iterable map object */\nexport function buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap {\n const sanitizeValue = (it: NgStyleKeyValue) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n };\n\n return styles\n .map(stringToKeyValue)\n .filter(entry => !!entry)\n .map(sanitizeValue)\n .reduce(keyValuesToMap, {} as NgStyleMap);\n}\n\n/** Convert Set or raw Object to an iterable NgStyleMap */\nexport function buildMapFromSet(source: NgStyleType, sanitize?: NgStyleSanitizer): NgStyleMap {\n let list: string[] = [];\n if (getType(source) === 'set') {\n (source as Set).forEach(entry => list.push(entry));\n } else {\n Object.keys(source).forEach((key: string) => {\n list.push(`${key}:${(source as NgStyleMap)[key]}`);\n });\n }\n return buildMapFromList(list, sanitize);\n}\n\n\n/** Convert 'key:value' -> [key, value] */\nexport function stringToKeyValue(it: string): NgStyleKeyValue {\n const [key, ...vals] = it.split(':');\n return new NgStyleKeyValue(key, vals.join(':'));\n}\n\n/** Convert [ [key,value] ] -> { key : value } */\nexport function keyValuesToMap(map: NgStyleMap, entry: NgStyleKeyValue): NgStyleMap {\n if (!!entry.key) {\n map[entry.key] = entry.value;\n }\n return map;\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 {\n Directive,\n ElementRef,\n OnChanges,\n SimpleChanges,\n Optional,\n Inject,\n PLATFORM_ID,\n Injectable,\n AfterViewInit,\n} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n BaseDirective2,\n LAYOUT_CONFIG,\n LayoutConfigOptions,\n MediaMarshaller,\n SERVER_TOKEN,\n StyleUtils,\n StyleBuilder,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {takeUntil} from 'rxjs/operators';\n\nexport interface ShowHideParent {\n display: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class ShowHideStyleBuilder extends StyleBuilder {\n buildStyles(show: string, parent: ShowHideParent) {\n const shouldShow = show === 'true';\n return {'display': shouldShow ? parent.display : 'none'};\n }\n}\n\nexport class ShowHideDirective extends BaseDirective2 implements AfterViewInit, OnChanges {\n protected DIRECTIVE_KEY = 'show-hide';\n\n /** Original dom Elements CSS display style */\n protected display: string = '';\n protected hasLayout = false;\n protected hasFlexChild = false;\n\n constructor(protected elementRef: ElementRef,\n protected styleBuilder: ShowHideStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n @Inject(PLATFORM_ID) protected platformId: Object,\n @Optional() @Inject(SERVER_TOKEN) protected serverModuleLoaded: boolean) {\n super(elementRef, styleBuilder, styler, marshal);\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n ngAfterViewInit() {\n this.trackExtraTriggers();\n\n const children = Array.from(this.nativeElement.children);\n for (let i = 0; i < children.length; i++) {\n if (this.marshal.hasValue(children[i] as HTMLElement, 'flex')) {\n this.hasFlexChild = true;\n break;\n }\n }\n\n if (DISPLAY_MAP.has(this.nativeElement)) {\n this.display = DISPLAY_MAP.get(this.nativeElement)!;\n } else {\n this.display = this.getDisplayStyle();\n DISPLAY_MAP.set(this.nativeElement, this.display);\n }\n\n this.init();\n // set the default to show unless explicitly overridden\n const defaultValue = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY, '');\n if (defaultValue === undefined || defaultValue === '') {\n this.setValue(true, '');\n } else {\n this.triggerUpdate();\n }\n }\n\n /**\n * On changes to any @Input properties...\n * Default to use the non-responsive Input value ('fxShow')\n * Then conditionally override with the mq-activated Input's current value\n */\n ngOnChanges(changes: SimpleChanges) {\n Object.keys(changes).forEach(key => {\n if (this.inputs.indexOf(key) !== -1) {\n const inputKey = key.split('.');\n const bp = inputKey.slice(1).join('.');\n const inputValue = changes[key].currentValue;\n let shouldShow = inputValue !== '' ?\n inputValue !== 0 ? coerceBooleanProperty(inputValue) : false\n : true;\n if (inputKey[0] === 'fxHide') {\n shouldShow = !shouldShow;\n }\n this.setValue(shouldShow, bp);\n }\n });\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Watch for these extra triggers to update fxShow, fxHide stylings\n */\n protected trackExtraTriggers() {\n this.hasLayout = this.marshal.hasValue(this.nativeElement, 'layout');\n\n ['layout', 'layout-align'].forEach(key => {\n this.marshal\n .trackValue(this.nativeElement, key)\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerUpdate.bind(this));\n });\n }\n\n /**\n * Override accessor to the current HTMLElement's `display` style\n * Note: Show/Hide will not change the display to 'flex' but will set it to 'block'\n * unless it was already explicitly specified inline or in a CSS stylesheet.\n */\n protected getDisplayStyle(): string {\n return (this.hasLayout || (this.hasFlexChild && this.layoutConfig.addFlexToParent)) ?\n 'flex' : this.styler.lookupStyle(this.nativeElement, 'display', true);\n }\n\n /** Validate the visibility value and then update the host's inline display style */\n protected updateWithValue(value: boolean | string = true) {\n if (value === '') {\n return;\n }\n this.addStyles(value ? 'true' : 'false', {display: this.display});\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.nativeElement.style.setProperty('display', '');\n }\n this.marshal.triggerUpdate(this.parentElement!, 'layout-gap');\n }\n}\n\nconst DISPLAY_MAP: WeakMap = new WeakMap();\n\nconst inputs = [\n 'fxShow', 'fxShow.print',\n 'fxShow.xs', 'fxShow.sm', 'fxShow.md', 'fxShow.lg', 'fxShow.xl',\n 'fxShow.lt-sm', 'fxShow.lt-md', 'fxShow.lt-lg', 'fxShow.lt-xl',\n 'fxShow.gt-xs', 'fxShow.gt-sm', 'fxShow.gt-md', 'fxShow.gt-lg',\n 'fxHide', 'fxHide.print',\n 'fxHide.xs', 'fxHide.sm', 'fxHide.md', 'fxHide.lg', 'fxHide.xl',\n 'fxHide.lt-sm', 'fxHide.lt-md', 'fxHide.lt-lg', 'fxHide.lt-xl',\n 'fxHide.gt-xs', 'fxHide.gt-sm', 'fxHide.gt-md', 'fxHide.gt-lg'\n];\n\nconst selector = `\n [fxShow], [fxShow.print],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide], [fxHide.print],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n`;\n\n/**\n * 'show' Layout API directive\n */\n@Directive({selector, inputs})\nexport class DefaultShowHideDirective extends ShowHideDirective {\n protected inputs = inputs;\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 {Directive, DoCheck, ElementRef, Input, Optional, Self} from '@angular/core';\nimport {NgClass, ɵNgClassImpl, ɵNgClassR2Impl} from '@angular/common';\nimport {BaseDirective2, StyleUtils, MediaMarshaller} from '@angular/flex-layout/core';\n\nexport class ClassDirective extends BaseDirective2 implements DoCheck {\n\n protected DIRECTIVE_KEY = 'ngClass';\n\n /**\n * Capture class assignments so we cache the default classes\n * which are merged with activated styles and used as fallbacks.\n */\n @Input('class')\n set klass(val: string) {\n this.ngClassInstance.klass = val;\n this.setValue(val, '');\n }\n\n constructor(protected elementRef: ElementRef,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n protected delegate: ɵNgClassImpl,\n @Optional() @Self() protected readonly ngClassInstance: NgClass) {\n super(elementRef, null!, styler, marshal);\n if (!this.ngClassInstance) {\n // Create an instance NgClass Directive instance only if `ngClass=\"\"` has NOT been defined on\n // the same host element; since the responsive variations may be defined...\n this.ngClassInstance = new NgClass(this.delegate);\n }\n this.init();\n this.setValue('', '');\n }\n\n protected updateWithValue(value: any) {\n this.ngClassInstance.ngClass = value;\n this.ngClassInstance.ngDoCheck();\n }\n\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n\n /**\n * For ChangeDetectionStrategy.onPush and ngOnChanges() updates\n */\n ngDoCheck() {\n this.ngClassInstance.ngDoCheck();\n }\n}\n\nconst inputs = [\n 'ngClass', 'ngClass.xs', 'ngClass.sm', 'ngClass.md', 'ngClass.lg', 'ngClass.xl',\n 'ngClass.lt-sm', 'ngClass.lt-md', 'ngClass.lt-lg', 'ngClass.lt-xl',\n 'ngClass.gt-xs', 'ngClass.gt-sm', 'ngClass.gt-md', 'ngClass.gt-lg'\n];\n\nconst selector = `\n [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl],\n [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl],\n [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]\n`;\n\n// tslint:disable-next-line:variable-name\nexport const LayoutNgClassImplProvider = {\n provide: ɵNgClassImpl,\n useClass: ɵNgClassR2Impl\n};\n\n/**\n * Directive to add responsive support for ngClass.\n * This maintains the core functionality of 'ngClass' and adds responsive API\n * Note: this class is a no-op when rendered on the server\n */\n@Directive({selector, inputs, providers: [LayoutNgClassImplProvider]})\nexport class DefaultClassDirective extends ClassDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Inject, PLATFORM_ID, Injectable, Input} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n MediaMarshaller,\n BaseDirective2,\n SERVER_TOKEN,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class ImgSrcStyleBuilder extends StyleBuilder {\n buildStyles(url: string) {\n return {'content': url ? `url(${url})` : ''};\n }\n}\n\nexport class ImgSrcDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'img-src';\n protected defaultSrc = '';\n\n @Input('src')\n set src(val: string) {\n this.defaultSrc = val;\n this.setValue(this.defaultSrc, '');\n }\n\n constructor(protected elementRef: ElementRef,\n protected styleBuilder: ImgSrcStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller,\n @Inject(PLATFORM_ID) protected platformId: Object,\n @Inject(SERVER_TOKEN) protected serverModuleLoaded: boolean) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n this.setValue(this.nativeElement.getAttribute('src') || '', '');\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.nativeElement.setAttribute('src', '');\n }\n }\n\n /**\n * Use the [responsively] activated input value to update\n * the host img src attribute or assign a default `img.src=''`\n * if the src has not been defined.\n *\n * Do nothing to standard `` usages, only when responsive\n * keys are present do we actually call `setAttribute()`\n */\n protected updateWithValue(value?: string) {\n const url = value || this.defaultSrc;\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.addStyles(url);\n } else {\n this.nativeElement.setAttribute('src', url);\n }\n }\n\n protected styleCache = imgSrcCache;\n}\n\nconst imgSrcCache: Map = new Map();\n\nconst inputs = [\n 'src.xs', 'src.sm', 'src.md', 'src.lg', 'src.xl',\n 'src.lt-sm', 'src.lt-md', 'src.lt-lg', 'src.lt-xl',\n 'src.gt-xs', 'src.gt-sm', 'src.gt-md', 'src.gt-lg'\n];\n\nconst selector = `\n img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl],\n img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl],\n img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]\n`;\n\n/**\n * This directive provides a responsive API for the HTML 'src' attribute\n * and will update the img.src property upon each responsive activation.\n *\n * e.g.\n * \n *\n * @see https://css-tricks.com/responsive-images-youre-just-changing-resolutions-use-src/\n */\n@Directive({selector, inputs})\nexport class DefaultImgSrcDirective extends ImgSrcDirective {\n protected inputs = inputs;\n}\n"],"names":["buildMapFromList","selector","inputs","tslib_1.__extends","tslib_1.__assign"],"mappings":"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"} \ No newline at end of file diff --git a/esm5/flex-layout.es5.js b/esm5/flex-layout.es5.js index 837e377bc..61847732b 100644 --- a/esm5/flex-layout.es5.js +++ b/esm5/flex-layout.es5.js @@ -6,28 +6,30 @@ * found in the LICENSE file at https://angular.io/license */ import { Version, Inject, NgModule, Optional, PLATFORM_ID } from '@angular/core'; +import { __assign } from 'tslib'; import { isPlatformServer } from '@angular/common'; -import { SERVER_TOKEN, LAYOUT_CONFIG, BREAKPOINT } from '@angular/flex-layout/core'; -export { removeStyles, BROWSER_PROVIDER, CLASS_NAME, CoreModule, MediaChange, StylesheetMap, DEFAULT_CONFIG, LAYOUT_CONFIG, SERVER_TOKEN, BREAKPOINT, BaseDirective, BaseDirectiveAdapter, BaseDirective2, prioritySort, RESPONSIVE_ALIASES, DEFAULT_BREAKPOINTS, ScreenTypes, ORIENTATION_BREAKPOINTS, BreakPointRegistry, BREAKPOINTS, MatchMedia, MockMatchMedia, MockMediaQueryList, MockMatchMediaProvider, ServerMediaQueryList, ServerMatchMedia, MediaMonitor, ObservableMedia, MediaService, ObservableMediaProvider, MediaObserver, KeyOptions, ResponsiveActivation, StyleUtils, StyleBuilder, validateBasis, MediaMarshaller } from '@angular/flex-layout/core'; +import { SERVER_TOKEN, LAYOUT_CONFIG, DEFAULT_CONFIG, BREAKPOINT } from '@angular/flex-layout/core'; +export { ɵMatchMedia, ɵMockMatchMedia, ɵMockMatchMediaProvider, CoreModule, removeStyles, BROWSER_PROVIDER, CLASS_NAME, MediaChange, StylesheetMap, DEFAULT_CONFIG, LAYOUT_CONFIG, SERVER_TOKEN, BREAKPOINT, mergeAlias, BaseDirective2, DEFAULT_BREAKPOINTS, ScreenTypes, ORIENTATION_BREAKPOINTS, BreakPointRegistry, BREAKPOINTS, MediaObserver, MediaTrigger, sortDescendingPriority, sortAscendingPriority, coerceArray, StyleUtils, StyleBuilder, validateBasis, MediaMarshaller, BREAKPOINT_PRINT, PrintHook } from '@angular/flex-layout/core'; import { ExtendedModule } from '@angular/flex-layout/extended'; -export { ExtendedModule, ClassDirective, DefaultClassDirective, ImgSrcStyleBuilder, ImgSrcDirective, DefaultImgSrcDirective, negativeOf, ShowHideStyleBuilder, ShowHideDirective, DefaultShowHideDirective, StyleDirective, DefaultStyleDirective } from '@angular/flex-layout/extended'; +export { ExtendedModule, ClassDirective, LayoutNgClassImplProvider, DefaultClassDirective, ImgSrcStyleBuilder, ImgSrcDirective, DefaultImgSrcDirective, ShowHideStyleBuilder, ShowHideDirective, DefaultShowHideDirective, StyleDirective, LayoutNgStyleImplProvider, DefaultStyleDirective } from '@angular/flex-layout/extended'; import { FlexModule } from '@angular/flex-layout/flex'; export { FlexModule, FlexStyleBuilder, FlexDirective, DefaultFlexDirective, FlexAlignStyleBuilder, FlexAlignDirective, DefaultFlexAlignDirective, FlexFillStyleBuilder, FlexFillDirective, FlexOffsetStyleBuilder, FlexOffsetDirective, DefaultFlexOffsetDirective, FlexOrderStyleBuilder, FlexOrderDirective, DefaultFlexOrderDirective, LayoutStyleBuilder, LayoutDirective, DefaultLayoutDirective, LayoutAlignStyleBuilder, LayoutAlignDirective, DefaultLayoutAlignDirective, LayoutGapStyleBuilder, LayoutGapDirective, DefaultLayoutGapDirective } from '@angular/flex-layout/flex'; import { GridModule } from '@angular/flex-layout/grid'; -export { ɵf, ɵe, ɵd, ɵi, ɵh, ɵg, ɵl, ɵk, ɵj, ɵo, ɵn, ɵm, ɵr, ɵq, ɵp, ɵu, ɵt, ɵs, ɵx, ɵw, ɵv, ɵba, ɵz, ɵy, ɵc, ɵb, ɵa, ɵbd, ɵbc, ɵbb, ɵbg, ɵbf, ɵbe, GridModule } from '@angular/flex-layout/grid'; +export { ɵf2, ɵe2, ɵd2, ɵi2, ɵh2, ɵg2, ɵl2, ɵk2, ɵj2, ɵo2, ɵn2, ɵm2, ɵr2, ɵq2, ɵp2, ɵu2, ɵt2, ɵs2, ɵx2, ɵw2, ɵv2, ɵba2, ɵz2, ɵy2, ɵc2, ɵb2, ɵa2, ɵbd2, ɵbc2, ɵbb2, ɵbg2, ɵbf2, ɵbe2, GridModule } from '@angular/flex-layout/grid'; /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -/** * +/** * Current version of Angular Flex-Layout. - @type {?} */ -var VERSION = new Version('7.0.0-beta.22'); + * @type {?} + */ +var VERSION = new Version('8.0.0-beta.26'); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * FlexLayoutModule -- the main import for all utilities in the Angular Layout library @@ -65,11 +67,11 @@ var FlexLayoutModule = /** @class */ (function () { ngModule: FlexLayoutModule, providers: configOptions.serverLoaded ? [ - { provide: LAYOUT_CONFIG, useValue: configOptions }, + { provide: LAYOUT_CONFIG, useValue: __assign({}, DEFAULT_CONFIG, configOptions) }, { provide: BREAKPOINT, useValue: breakpoints, multi: true }, { provide: SERVER_TOKEN, useValue: true }, ] : [ - { provide: LAYOUT_CONFIG, useValue: configOptions }, + { provide: LAYOUT_CONFIG, useValue: __assign({}, DEFAULT_CONFIG, configOptions) }, { provide: BREAKPOINT, useValue: breakpoints, multi: true }, ] }; @@ -90,12 +92,12 @@ var FlexLayoutModule = /** @class */ (function () { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ export { VERSION, FlexLayoutModule }; diff --git a/esm5/flex-layout.es5.js.map b/esm5/flex-layout.es5.js.map index 88f769bcd..756645f03 100644 --- a/esm5/flex-layout.es5.js.map +++ b/esm5/flex-layout.es5.js.map @@ -1 +1 @@ -{"version":3,"file":"flex-layout.es5.js","sources":["../../src/lib/module.ts","../../src/lib/version.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {\n Inject,\n ModuleWithProviders,\n NgModule,\n Optional,\n PLATFORM_ID,\n} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n SERVER_TOKEN,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n BreakPoint,\n BREAKPOINT,\n} from '@angular/flex-layout/core';\nimport {ExtendedModule} from '@angular/flex-layout/extended';\nimport {FlexModule} from '@angular/flex-layout/flex';\nimport {GridModule} from '@angular/flex-layout/grid';\n\n/**\n * FlexLayoutModule -- the main import for all utilities in the Angular Layout library\n * * Will automatically provide Flex, Grid, and Extended modules for use in the application\n * * Can be configured using the static withConfig method, options viewable on the Wiki's\n * Configuration page\n */\n@NgModule({\n imports: [FlexModule, ExtendedModule, GridModule],\n exports: [FlexModule, ExtendedModule, GridModule]\n})\nexport class FlexLayoutModule {\n\n /**\n * Initialize the FlexLayoutModule with a set of config options,\n * which sets the corresponding tokens accordingly\n */\n static withConfig(configOptions: LayoutConfigOptions,\n breakpoints: BreakPoint|BreakPoint[] = []): ModuleWithProviders {\n return {\n ngModule: FlexLayoutModule,\n providers: configOptions.serverLoaded ?\n [\n {provide: LAYOUT_CONFIG, useValue: configOptions},\n {provide: BREAKPOINT, useValue: breakpoints, multi: true},\n {provide: SERVER_TOKEN, useValue: true},\n ] : [\n {provide: LAYOUT_CONFIG, useValue: configOptions},\n {provide: BREAKPOINT, useValue: breakpoints, multi: true},\n ]\n };\n }\n\n constructor(@Optional() @Inject(SERVER_TOKEN) serverModuleLoaded: boolean,\n @Inject(PLATFORM_ID) platformId: Object) {\n if (isPlatformServer(platformId) && !serverModuleLoaded) {\n console.warn('Warning: Flex Layout loaded on the server without FlexLayoutServerModule');\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\nimport {Version} from '@angular/core';\n\n/** Current version of Angular Flex-Layout. */\nexport const VERSION = new Version('7.0.0-beta.22');\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;ACWA,AAAA,IAAa,OAAO,GAAG,IAAI,OAAO,CAAC,mBAAmB,CAAC;;;;;;ADJvD;;;;;;;IAmDE,SAAF,gBAAA,CAAgD,kBAA2B,EACxC,UAAkB,EADrD;QAEI,IAAI,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE;YACvD,OAAO,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;SAC1F;KACF;;;;;;;;;;;;IArBM,gBAAT,CAAA,UAAmB;;;;;;;IAAjB,UAAkB,aAAkC,EAClC,WAAyC,EAD7D;QACoB,IAApB,WAAA,KAAA,KAAA,CAAA,EAAoB,EAAA,WAApB,GAAA,EAA6D,CAA7D,EAAA;QACI,OAAO;YACL,QAAQ,EAAE,gBAAgB;YAC1B,SAAS,EAAE,aAAa,CAAC,YAAY;gBACnC;oBACE,EAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAC;oBACjD,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAC;oBACzD,EAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAC;iBACxC,GAAG;gBACF,EAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAC;gBACjD,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAC;aAC1D;SACJ,CAAC;KACH,CAAH;;QAxBA,EAAA,IAAA,EAAC,QAAQ,EAAT,IAAA,EAAA,CAAU;oBACR,OAAO,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,UAAU,CAAC;oBACjD,OAAO,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,UAAU,CAAC;iBAClD,EAAD,EAAA;;;;QAuBA,EAAA,IAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAe,QAAQ,EAAvB,EAAA,EAAA,IAAA,EAA2B,MAAM,EAAjC,IAAA,EAAA,CAAkC,YAAY,EAA9C,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAA+C,MAAM,EAArD,UAAA,EAAA,CAAA,EAAA,IAAA,EAAe,MAAM,EAArB,IAAA,EAAA,CAAsB,WAAW,EAAjC,EAAA,CAAA,EAAA;;IA3DA,OAAA,gBAAA,CAAA;;;;;;;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"flex-layout.es5.js","sources":["../../src/lib/module.ts","../../src/lib/version.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {\n Inject,\n ModuleWithProviders,\n NgModule,\n Optional,\n PLATFORM_ID,\n} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\n\nimport {\n SERVER_TOKEN,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n DEFAULT_CONFIG,\n BreakPoint,\n BREAKPOINT,\n} from '@angular/flex-layout/core';\nimport {ExtendedModule} from '@angular/flex-layout/extended';\nimport {FlexModule} from '@angular/flex-layout/flex';\nimport {GridModule} from '@angular/flex-layout/grid';\n\n/**\n * FlexLayoutModule -- the main import for all utilities in the Angular Layout library\n * * Will automatically provide Flex, Grid, and Extended modules for use in the application\n * * Can be configured using the static withConfig method, options viewable on the Wiki's\n * Configuration page\n */\n@NgModule({\n imports: [FlexModule, ExtendedModule, GridModule],\n exports: [FlexModule, ExtendedModule, GridModule]\n})\nexport class FlexLayoutModule {\n\n /**\n * Initialize the FlexLayoutModule with a set of config options,\n * which sets the corresponding tokens accordingly\n */\n static withConfig(configOptions: LayoutConfigOptions,\n breakpoints: BreakPoint|BreakPoint[] = []): ModuleWithProviders {\n return {\n ngModule: FlexLayoutModule,\n providers: configOptions.serverLoaded ?\n [\n {provide: LAYOUT_CONFIG, useValue: {...DEFAULT_CONFIG, ...configOptions}},\n {provide: BREAKPOINT, useValue: breakpoints, multi: true},\n {provide: SERVER_TOKEN, useValue: true},\n ] : [\n {provide: LAYOUT_CONFIG, useValue: {...DEFAULT_CONFIG, ...configOptions}},\n {provide: BREAKPOINT, useValue: breakpoints, multi: true},\n ]\n };\n }\n\n constructor(@Optional() @Inject(SERVER_TOKEN) serverModuleLoaded: boolean,\n @Inject(PLATFORM_ID) platformId: Object) {\n if (isPlatformServer(platformId) && !serverModuleLoaded) {\n console.warn('Warning: Flex Layout loaded on the server without FlexLayoutServerModule');\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\nimport {Version} from '@angular/core';\n\n/** Current version of Angular Flex-Layout. */\nexport const VERSION = new Version('8.0.0-beta.26');\n"],"names":["tslib_1.__assign"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;ACWA,AAAA,IAAa,OAAO,GAAG,IAAI,OAAO,CAAC,mBAAmB,CAAC;;;;;;;;;;;;ADuBvD,AAAA,IAAA,gBAAA,kBAAA,YAAA;IA0BE,SAAF,gBAAA,CAAgD,kBAA2B,EACxC,UAAkB,EADrD;QAEI,IAAI,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE;YACvD,OAAO,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;SAC1F;KACF;;;;;;;;;;;;IArBM,gBAAT,CAAA,UAAmB;;;;;;;IAAjB,UAAkB,aAAkC,EAClC,WAAyC,EAD7D;QACoB,IAApB,WAAA,KAAA,KAAA,CAAA,EAAoB,EAAA,WAApB,GAAA,EAA6D,CAA7D,EAAA;QACI,OAAO;YACL,QAAQ,EAAE,gBAAgB;YAC1B,SAAS,EAAE,aAAa,CAAC,YAAY;gBACnC;oBACE,EAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAA3CA,QAAA,CAAA,EAAA,EAAiD,cAAc,EAAK,aAAa,CAAC,EAAC;oBACzE,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAC;oBACzD,EAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAC;iBACxC,GAAG;gBACF,EAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAA3CA,QAAA,CAAA,EAAA,EAAiD,cAAc,EAAK,aAAa,CAAC,EAAC;gBACzE,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAC;aAC1D;SACJ,CAAC;KACH,CAAH;;QAxBA,EAAA,IAAA,EAAC,QAAQ,EAAT,IAAA,EAAA,CAAU;oBACR,OAAO,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,UAAU,CAAC;oBACjD,OAAO,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,UAAU,CAAC;iBAClD,EAAD,EAAA;;;;QAuBA,EAAA,IAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAe,QAAQ,EAAvB,EAAA,EAAA,IAAA,EAA2B,MAAM,EAAjC,IAAA,EAAA,CAAkC,YAAY,EAA9C,EAAA,CAAA,EAAA;QACA,EAAA,IAAA,EAA+C,MAAM,EAArD,UAAA,EAAA,CAAA,EAAA,IAAA,EAAe,MAAM,EAArB,IAAA,EAAA,CAAsB,WAAW,EAAjC,EAAA,CAAA,EAAA;;IAKA,OAAA,gBAAC,CAAD;CAAC,EAAD,CAAA;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/esm5/flex.es5.js b/esm5/flex.es5.js index 900cb6d6f..2b6e7ab27 100644 --- a/esm5/flex.es5.js +++ b/esm5/flex.es5.js @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ import { __extends, __assign } from 'tslib'; -import { Directive, ElementRef, Injectable, Optional, NgModule, NgZone, Inject, Input, defineInjectable, inject } from '@angular/core'; +import { Directive, ElementRef, Injectable, Optional, NgModule, NgZone, Inject, Input, ɵɵdefineInjectable, ɵɵinject } from '@angular/core'; import { BaseDirective2, StyleBuilder, StyleUtils, MediaMarshaller, CoreModule, LAYOUT_CONFIG, validateBasis } from '@angular/flex-layout/core'; import { Directionality, BidiModule } from '@angular/cdk/bidi'; import { Subject } from 'rxjs'; @@ -14,15 +14,16 @@ import { takeUntil } from 'rxjs/operators'; /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -/** * +/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license - @type {?} */ + * @type {?} + */ var INLINE = 'inline'; /** @type {?} */ var LAYOUT_VALUES = ['row', 'column', 'row-reverse', 'column-reverse']; @@ -45,7 +46,11 @@ function validateValue(value) { value = value ? value.toLowerCase() : ''; var _a = value.split(' '), direction = _a[0], wrap = _a[1], inline = _a[2]; // First value must be the `flex-direction` - if (!LAYOUT_VALUES.find(function (x) { return x === direction; })) { + if (!LAYOUT_VALUES.find((/** + * @param {?} x + * @return {?} + */ + function (x) { return x === direction; }))) { direction = LAYOUT_VALUES[0]; } if (wrap === INLINE) { @@ -116,7 +121,7 @@ function buildCSS(direction, wrap, inline) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var LayoutStyleBuilder = /** @class */ (function (_super) { __extends(LayoutStyleBuilder, _super); @@ -137,7 +142,7 @@ var LayoutStyleBuilder = /** @class */ (function (_super) { LayoutStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ LayoutStyleBuilder.ngInjectableDef = defineInjectable({ factory: function LayoutStyleBuilder_Factory() { return new LayoutStyleBuilder(); }, token: LayoutStyleBuilder, providedIn: "root" }); + /** @nocollapse */ LayoutStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function LayoutStyleBuilder_Factory() { return new LayoutStyleBuilder(); }, token: LayoutStyleBuilder, providedIn: "root" }); return LayoutStyleBuilder; }(StyleBuilder)); /** @type {?} */ @@ -158,10 +163,7 @@ var selector = "\n [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],\n */ var LayoutDirective = /** @class */ (function (_super) { __extends(LayoutDirective, _super); - function LayoutDirective(elRef, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + function LayoutDirective(elRef, styleUtils, styleBuilder, marshal) { var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; _this.elRef = elRef; _this.styleUtils = styleUtils; @@ -198,7 +200,7 @@ var layoutCache = new Map(); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var CLEAR_MARGIN_CSS = { @@ -251,18 +253,21 @@ var LayoutGapStyleBuilder = /** @class */ (function (_super) { var items = parent.items; if (gapValue.endsWith(GRID_SPECIFIER)) { gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER)); + // For each `element` children, set the padding /** @type {?} */ var paddingStyles = buildGridPadding(gapValue, parent.directionality); this._styler.applyStyleToElements(paddingStyles, parent.items); } else { /** @type {?} */ - var lastItem = items.pop(); + var lastItem = (/** @type {?} */ (items.pop())); + // For each `element` children EXCEPT the last, + // set the margin right/bottom styles... /** @type {?} */ var gapCss = buildGapCSS(gapValue, parent); this._styler.applyStyleToElements(gapCss, items); // Clear all gaps for all visible elements - this._styler.applyStyleToElements(CLEAR_MARGIN_CSS, [/** @type {?} */ ((lastItem))]); + this._styler.applyStyleToElements(CLEAR_MARGIN_CSS, [lastItem]); } }; LayoutGapStyleBuilder.decorators = [ @@ -272,7 +277,7 @@ var LayoutGapStyleBuilder = /** @class */ (function (_super) { LayoutGapStyleBuilder.ctorParameters = function () { return [ { type: StyleUtils } ]; }; - /** @nocollapse */ LayoutGapStyleBuilder.ngInjectableDef = defineInjectable({ factory: function LayoutGapStyleBuilder_Factory() { return new LayoutGapStyleBuilder(inject(StyleUtils)); }, token: LayoutGapStyleBuilder, providedIn: "root" }); + /** @nocollapse */ LayoutGapStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function LayoutGapStyleBuilder_Factory() { return new LayoutGapStyleBuilder(ɵɵinject(StyleUtils)); }, token: LayoutGapStyleBuilder, providedIn: "root" }); return LayoutGapStyleBuilder; }(StyleBuilder)); /** @type {?} */ @@ -290,10 +295,7 @@ var selector$1 = "\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayo */ var LayoutGapDirective = /** @class */ (function (_super) { __extends(LayoutGapDirective, _super); - function LayoutGapDirective(elRef, zone, directionality, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + function LayoutGapDirective(elRef, zone, directionality, styleUtils, styleBuilder, marshal) { var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; _this.elRef = elRef; _this.zone = zone; @@ -302,6 +304,7 @@ var LayoutGapDirective = /** @class */ (function (_super) { _this.styleBuilder = styleBuilder; _this.marshal = marshal; _this.layout = 'row'; // default flex-direction + // default flex-direction _this.DIRECTIVE_KEY = 'layout-gap'; _this.observerSubject = new Subject(); /** @type {?} */ @@ -317,6 +320,7 @@ var LayoutGapDirective = /** @class */ (function (_super) { /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */ get: /** * Special accessor to query for all child 'element' nodes regardless of type, class, etc + * @protected * @return {?} */ function () { @@ -336,10 +340,17 @@ var LayoutGapDirective = /** @class */ (function (_super) { // ********************************************* // Lifecycle Methods // ********************************************* + // ********************************************* + // Lifecycle Methods + // ********************************************* /** * @return {?} */ - LayoutGapDirective.prototype.ngAfterContentInit = /** + LayoutGapDirective.prototype.ngAfterContentInit = + // ********************************************* + // Lifecycle Methods + // ********************************************* + /** * @return {?} */ function () { @@ -364,13 +375,22 @@ var LayoutGapDirective = /** @class */ (function (_super) { /** * Cache the parent container 'flex-direction' and update the 'margin' styles */ + // ********************************************* + // Protected methods + // ********************************************* /** * Cache the parent container 'flex-direction' and update the 'margin' styles + * @protected * @param {?} matcher * @return {?} */ - LayoutGapDirective.prototype.onLayoutChange = /** + LayoutGapDirective.prototype.onLayoutChange = + // ********************************************* + // Protected methods + // ********************************************* + /** * Cache the parent container 'flex-direction' and update the 'margin' styles + * @protected * @param {?} matcher * @return {?} */ @@ -378,10 +398,15 @@ var LayoutGapDirective = /** @class */ (function (_super) { var _this = this; /** @type {?} */ var layout = matcher.value; + // Make sure to filter out 'wrap' option /** @type {?} */ var direction = layout.split(' '); this.layout = direction[0]; - if (!LAYOUT_VALUES.find(function (x) { return x === _this.layout; })) { + if (!LAYOUT_VALUES.find((/** + * @param {?} x + * @return {?} + */ + function (x) { return x === _this.layout; }))) { this.layout = 'row'; } this.triggerUpdate(); @@ -391,23 +416,32 @@ var LayoutGapDirective = /** @class */ (function (_super) { */ /** * + * @protected * @param {?} value * @return {?} */ LayoutGapDirective.prototype.updateWithValue = /** * + * @protected * @param {?} value * @return {?} */ function (value) { var _this = this; - if (!value) { - value = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY); - } + // Gather all non-hidden Element nodes /** @type {?} */ var items = this.childrenNodes - .filter(function (el) { return el.nodeType === 1 && _this.willDisplay(el); }) - .sort(function (a, b) { + .filter((/** + * @param {?} el + * @return {?} + */ + function (el) { return el.nodeType === 1 && _this.willDisplay(el); })) + .sort((/** + * @param {?} a + * @param {?} b + * @return {?} + */ + function (a, b) { /** @type {?} */ var orderA = +_this.styler.lookupStyle(a, 'order'); /** @type {?} */ @@ -418,7 +452,7 @@ var LayoutGapDirective = /** @class */ (function (_super) { else { return orderA > orderB ? 1 : -1; } - }); + })); if (items.length > 0) { /** @type {?} */ var directionality = this.directionality.value; @@ -439,14 +473,41 @@ var LayoutGapDirective = /** @class */ (function (_super) { this.addStyles(value, { directionality: directionality, items: items, layout: layout }); } }; + /** We need to override clearStyles because in most cases mru isn't populated */ + /** + * We need to override clearStyles because in most cases mru isn't populated + * @protected + * @return {?} + */ + LayoutGapDirective.prototype.clearStyles = /** + * We need to override clearStyles because in most cases mru isn't populated + * @protected + * @return {?} + */ + function () { + var _a; + /** @type {?} */ + var gridMode = Object.keys(this.mru).length > 0; + /** @type {?} */ + var childrenStyle = gridMode ? 'padding' : + getMarginType(this.directionality.value, this.layout); + // If there are styles on the parent remove them + if (gridMode) { + _super.prototype.clearStyles.call(this); + } + // Then remove the children styles too + this.styleUtils.applyStyleToElements((_a = {}, _a[childrenStyle] = '', _a), this.childrenNodes); + }; /** Determine if an element will show or hide based on current activation */ /** * Determine if an element will show or hide based on current activation + * @protected * @param {?} source * @return {?} */ LayoutGapDirective.prototype.willDisplay = /** * Determine if an element will show or hide based on current activation + * @protected * @param {?} source * @return {?} */ @@ -454,32 +515,45 @@ var LayoutGapDirective = /** @class */ (function (_super) { /** @type {?} */ var value = this.marshal.getValue(source, 'show-hide'); return value === true || - (value === '' && this.styleUtils.lookupStyle(source, 'display') !== 'none'); + (value === undefined && this.styleUtils.lookupStyle(source, 'display') !== 'none'); }; /** + * @protected * @return {?} */ LayoutGapDirective.prototype.buildChildObservable = /** + * @protected * @return {?} */ function () { var _this = this; - this.zone.runOutsideAngular(function () { + this.zone.runOutsideAngular((/** + * @return {?} + */ + function () { if (typeof MutationObserver !== 'undefined') { - _this.observer = new MutationObserver(function (mutations) { + _this.observer = new MutationObserver((/** + * @param {?} mutations + * @return {?} + */ + function (mutations) { /** @type {?} */ - var validatedChanges = function (it) { + var validatedChanges = (/** + * @param {?} it + * @return {?} + */ + function (it) { return (it.addedNodes && it.addedNodes.length > 0) || (it.removedNodes && it.removedNodes.length > 0); - }; + }); // update gap styles only for child 'added' or 'removed' events if (mutations.some(validatedChanges)) { _this.observerSubject.next(); } - }); + })); _this.observer.observe(_this.nativeElement, { childList: true }); } - }); + })); }; /** @nocollapse */ LayoutGapDirective.ctorParameters = function () { return [ @@ -559,40 +633,43 @@ function buildGridMargin(value, directionality) { return { 'margin': marginTop + " " + marginRight + " " + marginBottom + " " + marginLeft }; } /** - * @param {?} gapValue - * @param {?} parent + * @param {?} directionality + * @param {?} layout * @return {?} */ -function buildGapCSS(gapValue, parent) { - /** @type {?} */ - var key; - /** @type {?} */ - var margins = __assign({}, CLEAR_MARGIN_CSS); - switch (parent.layout) { +function getMarginType(directionality, layout) { + switch (layout) { case 'column': - key = 'margin-bottom'; - break; + return 'margin-bottom'; case 'column-reverse': - key = 'margin-top'; - break; + return 'margin-top'; case 'row': - key = parent.directionality === 'rtl' ? 'margin-left' : 'margin-right'; - break; + return directionality === 'rtl' ? 'margin-left' : 'margin-right'; case 'row-reverse': - key = parent.directionality === 'rtl' ? 'margin-right' : 'margin-left'; - break; + return directionality === 'rtl' ? 'margin-right' : 'margin-left'; default: - key = parent.directionality === 'rtl' ? 'margin-left' : 'margin-right'; - break; + return directionality === 'rtl' ? 'margin-left' : 'margin-right'; } +} +/** + * @param {?} gapValue + * @param {?} parent + * @return {?} + */ +function buildGapCSS(gapValue, parent) { + /** @type {?} */ + var key = getMarginType(parent.directionality, parent.layout); + /** @type {?} */ + var margins = __assign({}, CLEAR_MARGIN_CSS); margins[key] = gapValue; return margins; } /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ + /** * Extends an object with the *enumerable* and *own* properties of one or more source objects, * similar to Object.assign. @@ -624,7 +701,7 @@ function extendObject(dest) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var FlexStyleBuilder = /** @class */ (function (_super) { __extends(FlexStyleBuilder, _super); @@ -647,6 +724,7 @@ var FlexStyleBuilder = /** @class */ (function (_super) { var _a = input.split(' '), grow = _a[0], shrink = _a[1], basisParts = _a.slice(2); /** @type {?} */ var basis = basisParts.join(' '); + // The flex-direction of this element's flex container. Defaults to 'row'. /** @type {?} */ var direction = (parent.direction.indexOf('column') > -1) ? 'column' : 'row'; /** @type {?} */ @@ -667,10 +745,24 @@ var FlexStyleBuilder = /** @class */ (function (_super) { var isValue = (hasCalc || hasUnits); grow = (grow == '0') ? 0 : grow; shrink = (shrink == '0') ? 0 : shrink; + // make box inflexible when shrink and grow are both zero + // should not set a min when the grow is zero + // should not set a max when the shrink is zero /** @type {?} */ var isFixed = !grow && !shrink; /** @type {?} */ var css = {}; + // flex-basis allows you to specify the initial/starting main-axis size of the element, + // before anything else is computed. It can either be a percentage or an absolute value. + // It is, however, not the breaking point for flex-grow/shrink properties + // + // flex-grow can be seen as this: + // 0: Do not stretch. Either size to element's content width, or obey 'flex-basis'. + // 1: (Default value). Stretch; will be the same size to all other flex items on + // the same row since they have a default value of 1. + // ≥2 (integer n): Stretch. Will be n times the size of other elements + // with 'flex-grow: 1' on the same row. + // Use `null` to clear existing styles. /** @type {?} */ var clearStyles = { 'max-width': null, @@ -705,7 +797,7 @@ var FlexStyleBuilder = /** @class */ (function (_super) { break; default: // Defaults to percentage sizing unless `px` is explicitly set - if (!isValue && !isPercent && !isNaN(/** @type {?} */ (basis))) { + if (!isValue && !isPercent && !isNaN((/** @type {?} */ (basis)))) { basis = basis + '%'; } // Fix for issue 280 @@ -772,7 +864,7 @@ var FlexStyleBuilder = /** @class */ (function (_super) { (hasCalc ? css[min] : grow + " " + shrink + " " + css[min]); } } - return /** @type {?} */ (extendObject(css, { 'box-sizing': 'border-box' })); + return (/** @type {?} */ (extendObject(css, { 'box-sizing': 'border-box' }))); }; FlexStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, @@ -781,7 +873,7 @@ var FlexStyleBuilder = /** @class */ (function (_super) { FlexStyleBuilder.ctorParameters = function () { return [ { type: undefined, decorators: [{ type: Inject, args: [LAYOUT_CONFIG,] }] } ]; }; - /** @nocollapse */ FlexStyleBuilder.ngInjectableDef = defineInjectable({ factory: function FlexStyleBuilder_Factory() { return new FlexStyleBuilder(inject(LAYOUT_CONFIG)); }, token: FlexStyleBuilder, providedIn: "root" }); + /** @nocollapse */ FlexStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function FlexStyleBuilder_Factory() { return new FlexStyleBuilder(ɵɵinject(LAYOUT_CONFIG)); }, token: FlexStyleBuilder, providedIn: "root" }); return FlexStyleBuilder; }(StyleBuilder)); /** @type {?} */ @@ -818,6 +910,9 @@ var FlexDirective = /** @class */ (function (_super) { _this.marshal.trackValue(_this.parentElement, 'layout') .pipe(takeUntil(_this.destroySubject)) .subscribe(_this.onLayoutChange.bind(_this)); + _this.marshal.trackValue(_this.nativeElement, 'layout-align') + .pipe(takeUntil(_this.destroySubject)) + .subscribe(_this.triggerReflow.bind(_this)); } return _this; } @@ -860,12 +955,14 @@ var FlexDirective = /** @class */ (function (_super) { /** * Caches the parent container's 'flex-direction' and updates the element's style. * Used as a handler for layout change events from the parent flex container. + * @protected * @param {?} matcher * @return {?} */ FlexDirective.prototype.onLayoutChange = /** * Caches the parent container's 'flex-direction' and updates the element's style. * Used as a handler for layout change events from the parent flex container. + * @protected * @param {?} matcher * @return {?} */ @@ -881,11 +978,13 @@ var FlexDirective = /** @class */ (function (_super) { /** Input to this is exclusively the basis input value */ /** * Input to this is exclusively the basis input value + * @protected * @param {?} value * @return {?} */ FlexDirective.prototype.updateWithValue = /** * Input to this is exclusively the basis input value + * @protected * @param {?} value * @return {?} */ @@ -893,7 +992,7 @@ var FlexDirective = /** @class */ (function (_super) { /** @type {?} */ var addFlexToParent = this.layoutConfig.addFlexToParent !== false; if (!this.direction) { - this.direction = this.getFlexFlowDirection(/** @type {?} */ ((this.parentElement)), addFlexToParent); + this.direction = this.getFlexFlowDirection((/** @type {?} */ (this.parentElement)), addFlexToParent); } /** @type {?} */ var direction = this.direction; @@ -922,16 +1021,22 @@ var FlexDirective = /** @class */ (function (_super) { /** Trigger a style reflow, usually based on a shrink/grow input event */ /** * Trigger a style reflow, usually based on a shrink/grow input event + * @protected * @return {?} */ FlexDirective.prototype.triggerReflow = /** * Trigger a style reflow, usually based on a shrink/grow input event + * @protected * @return {?} */ function () { /** @type {?} */ - var parts = validateBasis(this.activatedValue, this.flexGrow, this.flexShrink); - this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, parts.join(' ')); + var activatedValue = this.activatedValue; + if (activatedValue !== undefined) { + /** @type {?} */ + var parts = validateBasis(activatedValue, this.flexGrow, this.flexShrink); + this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, parts.join(' ')); + } }; /** @nocollapse */ FlexDirective.ctorParameters = function () { return [ @@ -970,7 +1075,7 @@ var flexColumnWrapCache = new Map(); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var FlexOrderStyleBuilder = /** @class */ (function (_super) { __extends(FlexOrderStyleBuilder, _super); @@ -991,7 +1096,7 @@ var FlexOrderStyleBuilder = /** @class */ (function (_super) { FlexOrderStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ FlexOrderStyleBuilder.ngInjectableDef = defineInjectable({ factory: function FlexOrderStyleBuilder_Factory() { return new FlexOrderStyleBuilder(); }, token: FlexOrderStyleBuilder, providedIn: "root" }); + /** @nocollapse */ FlexOrderStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function FlexOrderStyleBuilder_Factory() { return new FlexOrderStyleBuilder(); }, token: FlexOrderStyleBuilder, providedIn: "root" }); return FlexOrderStyleBuilder; }(StyleBuilder)); /** @type {?} */ @@ -1010,10 +1115,7 @@ var selector$3 = "\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlex */ var FlexOrderDirective = /** @class */ (function (_super) { __extends(FlexOrderDirective, _super); - function FlexOrderDirective(elRef, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + function FlexOrderDirective(elRef, styleUtils, styleBuilder, marshal) { var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; _this.elRef = elRef; _this.styleUtils = styleUtils; @@ -1050,7 +1152,7 @@ var DefaultFlexOrderDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var FlexOffsetStyleBuilder = /** @class */ (function (_super) { __extends(FlexOffsetStyleBuilder, _super); @@ -1088,7 +1190,7 @@ var FlexOffsetStyleBuilder = /** @class */ (function (_super) { FlexOffsetStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ FlexOffsetStyleBuilder.ngInjectableDef = defineInjectable({ factory: function FlexOffsetStyleBuilder_Factory() { return new FlexOffsetStyleBuilder(); }, token: FlexOffsetStyleBuilder, providedIn: "root" }); + /** @nocollapse */ FlexOffsetStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function FlexOffsetStyleBuilder_Factory() { return new FlexOffsetStyleBuilder(); }, token: FlexOffsetStyleBuilder, providedIn: "root" }); return FlexOffsetStyleBuilder; }(StyleBuilder)); /** @type {?} */ @@ -1106,10 +1208,7 @@ var selector$4 = "\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxF */ var FlexOffsetDirective = /** @class */ (function (_super) { __extends(FlexOffsetDirective, _super); - function FlexOffsetDirective(elRef, directionality, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal, styler) { + function FlexOffsetDirective(elRef, directionality, styleBuilder, marshal, styler) { var _this = _super.call(this, elRef, styleBuilder, styler, marshal) || this; _this.elRef = elRef; _this.directionality = directionality; @@ -1135,24 +1234,34 @@ var FlexOffsetDirective = /** @class */ (function (_super) { * NOTE: this will assign `margin-left` if the parent flex-direction == 'row', * otherwise `margin-top` is used for the offset. */ + // ********************************************* + // Protected methods + // ********************************************* /** * Using the current fxFlexOffset value, update the inline CSS * NOTE: this will assign `margin-left` if the parent flex-direction == 'row', * otherwise `margin-top` is used for the offset. + * @protected * @param {?=} value * @return {?} */ - FlexOffsetDirective.prototype.updateWithValue = /** + FlexOffsetDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** * Using the current fxFlexOffset value, update the inline CSS * NOTE: this will assign `margin-left` if the parent flex-direction == 'row', * otherwise `margin-top` is used for the offset. + * @protected * @param {?=} value * @return {?} */ function (value) { if (value === void 0) { value = ''; } + // The flex-direction of this element's flex container. Defaults to 'row'. /** @type {?} */ - var layout = this.getFlexFlowDirection(/** @type {?} */ ((this.parentElement)), true); + var layout = this.getFlexFlowDirection((/** @type {?} */ (this.parentElement)), true); /** @type {?} */ var isRtl = this.directionality.value === 'rtl'; if (layout === 'row' && isRtl) { @@ -1202,7 +1311,7 @@ var flexOffsetCacheColumnLtr = new Map(); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var FlexAlignStyleBuilder = /** @class */ (function (_super) { __extends(FlexAlignStyleBuilder, _super); @@ -1238,7 +1347,7 @@ var FlexAlignStyleBuilder = /** @class */ (function (_super) { FlexAlignStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ FlexAlignStyleBuilder.ngInjectableDef = defineInjectable({ factory: function FlexAlignStyleBuilder_Factory() { return new FlexAlignStyleBuilder(); }, token: FlexAlignStyleBuilder, providedIn: "root" }); + /** @nocollapse */ FlexAlignStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function FlexAlignStyleBuilder_Factory() { return new FlexAlignStyleBuilder(); }, token: FlexAlignStyleBuilder, providedIn: "root" }); return FlexAlignStyleBuilder; }(StyleBuilder)); /** @type {?} */ @@ -1257,10 +1366,7 @@ var selector$5 = "\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlex */ var FlexAlignDirective = /** @class */ (function (_super) { __extends(FlexAlignDirective, _super); - function FlexAlignDirective(elRef, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + function FlexAlignDirective(elRef, styleUtils, styleBuilder, marshal) { var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; _this.elRef = elRef; _this.styleUtils = styleUtils; @@ -1297,7 +1403,7 @@ var DefaultFlexAlignDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var FLEX_FILL_CSS = { @@ -1326,7 +1432,7 @@ var FlexFillStyleBuilder = /** @class */ (function (_super) { FlexFillStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ FlexFillStyleBuilder.ngInjectableDef = defineInjectable({ factory: function FlexFillStyleBuilder_Factory() { return new FlexFillStyleBuilder(); }, token: FlexFillStyleBuilder, providedIn: "root" }); + /** @nocollapse */ FlexFillStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function FlexFillStyleBuilder_Factory() { return new FlexFillStyleBuilder(); }, token: FlexFillStyleBuilder, providedIn: "root" }); return FlexFillStyleBuilder; }(StyleBuilder)); /** @@ -1364,7 +1470,7 @@ var flexFillCache = new Map(); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var LayoutAlignStyleBuilder = /** @class */ (function (_super) { __extends(LayoutAlignStyleBuilder, _super); @@ -1436,24 +1542,23 @@ var LayoutAlignStyleBuilder = /** @class */ (function (_super) { break; case 'stretch': default: // 'stretch' - // 'stretch' css['align-items'] = css['align-content'] = 'stretch'; // default cross axis break; } - return /** @type {?} */ (extendObject(css, { - 'display': 'flex', + return (/** @type {?} */ (extendObject(css, { + 'display': parent.inline ? 'inline-flex' : 'flex', 'flex-direction': parent.layout, 'box-sizing': 'border-box', 'max-width': crossAxis === 'stretch' ? !isFlowHorizontal(parent.layout) ? '100%' : null : null, 'max-height': crossAxis === 'stretch' ? isFlowHorizontal(parent.layout) ? '100%' : null : null, - })); + }))); }; LayoutAlignStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ LayoutAlignStyleBuilder.ngInjectableDef = defineInjectable({ factory: function LayoutAlignStyleBuilder_Factory() { return new LayoutAlignStyleBuilder(); }, token: LayoutAlignStyleBuilder, providedIn: "root" }); + /** @nocollapse */ LayoutAlignStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function LayoutAlignStyleBuilder_Factory() { return new LayoutAlignStyleBuilder(); }, token: LayoutAlignStyleBuilder, providedIn: "root" }); return LayoutAlignStyleBuilder; }(StyleBuilder)); /** @type {?} */ @@ -1476,17 +1581,16 @@ var selector$6 = "\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [ */ var LayoutAlignDirective = /** @class */ (function (_super) { __extends(LayoutAlignDirective, _super); - function LayoutAlignDirective(elRef, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + function LayoutAlignDirective(elRef, styleUtils, styleBuilder, marshal) { var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; _this.elRef = elRef; _this.styleUtils = styleUtils; _this.styleBuilder = styleBuilder; _this.marshal = marshal; _this.DIRECTIVE_KEY = 'layout-align'; - _this.layout = 'row'; + _this.layout = 'row'; // default flex-direction + // default flex-direction + _this.inline = false; // default inline value _this.init(); _this.marshal.trackValue(_this.nativeElement, 'layout') .pipe(takeUntil(_this.destroySubject)) @@ -1499,52 +1603,82 @@ var LayoutAlignDirective = /** @class */ (function (_super) { /** * */ + // ********************************************* + // Protected methods + // ********************************************* /** * + * @protected * @param {?} value * @return {?} */ - LayoutAlignDirective.prototype.updateWithValue = /** + LayoutAlignDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** * + * @protected * @param {?} value * @return {?} */ function (value) { /** @type {?} */ var layout = this.layout || 'row'; - if (layout === 'row') { + /** @type {?} */ + var inline = this.inline; + if (layout === 'row' && inline) { + this.styleCache = layoutAlignHorizontalInlineCache; + } + else if (layout === 'row' && !inline) { this.styleCache = layoutAlignHorizontalCache; } - else if (layout === 'row-reverse') { + else if (layout === 'row-reverse' && inline) { + this.styleCache = layoutAlignHorizontalRevInlineCache; + } + else if (layout === 'row-reverse' && !inline) { this.styleCache = layoutAlignHorizontalRevCache; } - else if (layout === 'column') { + else if (layout === 'column' && inline) { + this.styleCache = layoutAlignVerticalInlineCache; + } + else if (layout === 'column' && !inline) { this.styleCache = layoutAlignVerticalCache; } - else if (layout === 'column-reverse') { + else if (layout === 'column-reverse' && inline) { + this.styleCache = layoutAlignVerticalRevInlineCache; + } + else if (layout === 'column-reverse' && !inline) { this.styleCache = layoutAlignVerticalRevCache; } - this.addStyles(value, { layout: layout }); + this.addStyles(value, { layout: layout, inline: inline }); }; /** * Cache the parent container 'flex-direction' and update the 'flex' styles */ /** * Cache the parent container 'flex-direction' and update the 'flex' styles + * @protected * @param {?} matcher * @return {?} */ LayoutAlignDirective.prototype.onLayoutChange = /** * Cache the parent container 'flex-direction' and update the 'flex' styles + * @protected * @param {?} matcher * @return {?} */ function (matcher) { var _this = this; /** @type {?} */ - var layout = matcher.value; - this.layout = layout.split(' ')[0]; - if (!LAYOUT_VALUES.find(function (x) { return x === _this.layout; })) { + var layoutKeys = matcher.value.split(' '); + this.layout = layoutKeys[0]; + this.inline = matcher.value.includes('inline'); + if (!LAYOUT_VALUES.find((/** + * @param {?} x + * @return {?} + */ + function (x) { return x === _this.layout; }))) { this.layout = 'row'; } this.triggerUpdate(); @@ -1578,10 +1712,18 @@ var layoutAlignVerticalCache = new Map(); var layoutAlignHorizontalRevCache = new Map(); /** @type {?} */ var layoutAlignVerticalRevCache = new Map(); +/** @type {?} */ +var layoutAlignHorizontalInlineCache = new Map(); +/** @type {?} */ +var layoutAlignVerticalInlineCache = new Map(); +/** @type {?} */ +var layoutAlignHorizontalRevInlineCache = new Map(); +/** @type {?} */ +var layoutAlignVerticalRevInlineCache = new Map(); /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var ALL_DIRECTIVES = [ @@ -1614,12 +1756,12 @@ var FlexModule = /** @class */ (function () { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ export { FlexModule, FlexStyleBuilder, FlexDirective, DefaultFlexDirective, FlexAlignStyleBuilder, FlexAlignDirective, DefaultFlexAlignDirective, FlexFillStyleBuilder, FlexFillDirective, FlexOffsetStyleBuilder, FlexOffsetDirective, DefaultFlexOffsetDirective, FlexOrderStyleBuilder, FlexOrderDirective, DefaultFlexOrderDirective, LayoutStyleBuilder, LayoutDirective, DefaultLayoutDirective, LayoutAlignStyleBuilder, LayoutAlignDirective, DefaultLayoutAlignDirective, LayoutGapStyleBuilder, LayoutGapDirective, DefaultLayoutGapDirective }; diff --git a/esm5/flex.es5.js.map b/esm5/flex.es5.js.map index 73b92649f..a7c09f2c4 100644 --- a/esm5/flex.es5.js.map +++ b/esm5/flex.es5.js.map @@ -1 +1 @@ -{"version":3,"file":"flex.es5.js","sources":["../../../src/lib/flex/module.ts","../../../src/lib/flex/layout-align/layout-align.ts","../../../src/lib/flex/flex-fill/flex-fill.ts","../../../src/lib/flex/flex-align/flex-align.ts","../../../src/lib/flex/flex-offset/flex-offset.ts","../../../src/lib/flex/flex-order/flex-order.ts","../../../src/lib/flex/flex/flex.ts","../../../src/lib/utils/object-extend.ts","../../../src/lib/flex/layout-gap/layout-gap.ts","../../../src/lib/flex/layout/layout.ts","../../../src/lib/utils/layout-validator.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {NgModule} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultLayoutDirective} from './layout/layout';\nimport {DefaultLayoutGapDirective} from './layout-gap/layout-gap';\nimport {DefaultFlexDirective} from './flex/flex';\nimport {DefaultFlexOrderDirective} from './flex-order/flex-order';\nimport {DefaultFlexOffsetDirective} from './flex-offset/flex-offset';\nimport {DefaultFlexAlignDirective} from './flex-align/flex-align';\nimport {FlexFillDirective} from './flex-fill/flex-fill';\nimport {DefaultLayoutAlignDirective} from './layout-align/layout-align';\n\n\nconst ALL_DIRECTIVES = [\n DefaultLayoutDirective,\n DefaultLayoutGapDirective,\n DefaultLayoutAlignDirective,\n DefaultFlexOrderDirective,\n DefaultFlexOffsetDirective,\n FlexFillDirective,\n DefaultFlexAlignDirective,\n DefaultFlexDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the Flex API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule, BidiModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class FlexModule {\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {extendObject} from '../../utils/object-extend';\nimport {LAYOUT_VALUES, isFlowHorizontal} from '../../utils/layout-validator';\n\nexport interface LayoutAlignParent {\n layout: string;\n}\n\n@Injectable({providedIn: 'root'})\nexport class LayoutAlignStyleBuilder extends StyleBuilder {\n buildStyles(align: string, parent: LayoutAlignParent) {\n const css: StyleDefinition = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['justify-content'] = 'center';\n break;\n case 'space-around':\n css['justify-content'] = 'space-around';\n break;\n case 'space-between':\n css['justify-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['justify-content'] = 'space-evenly';\n break;\n case 'end':\n case 'flex-end':\n css['justify-content'] = 'flex-end';\n break;\n case 'start':\n case 'flex-start':\n default :\n css['justify-content'] = 'flex-start'; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'flex-start':\n css['align-items'] = css['align-content'] = 'flex-start';\n break;\n case 'center':\n css['align-items'] = css['align-content'] = 'center';\n break;\n case 'end':\n case 'flex-end':\n css['align-items'] = css['align-content'] = 'flex-end';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n css['align-items'] = 'stretch';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n css['align-items'] = 'stretch';\n break;\n case 'baseline':\n css['align-content'] = 'stretch';\n css['align-items'] = 'baseline';\n break;\n case 'stretch':\n default : // 'stretch'\n css['align-items'] = css['align-content'] = 'stretch'; // default cross axis\n break;\n }\n\n return extendObject(css, {\n 'display' : 'flex',\n 'flex-direction' : parent.layout,\n 'box-sizing' : 'border-box',\n 'max-width': crossAxis === 'stretch' ?\n !isFlowHorizontal(parent.layout) ? '100%' : null : null,\n 'max-height': crossAxis === 'stretch' ?\n isFlowHorizontal(parent.layout) ? '100%' : null : null,\n }) as StyleDefinition;\n }\n}\n\nconst inputs = [\n 'fxLayoutAlign', 'fxLayoutAlign.xs', 'fxLayoutAlign.sm', 'fxLayoutAlign.md',\n 'fxLayoutAlign.lg', 'fxLayoutAlign.xl', 'fxLayoutAlign.lt-sm', 'fxLayoutAlign.lt-md',\n 'fxLayoutAlign.lt-lg', 'fxLayoutAlign.lt-xl', 'fxLayoutAlign.gt-xs', 'fxLayoutAlign.gt-sm',\n 'fxLayoutAlign.gt-md', 'fxLayoutAlign.gt-lg'\n];\nconst selector = `\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n`;\n\n/**\n * 'layout-align' flexbox styling directive\n * Defines positioning of child elements along main and cross axis in a layout container\n * Optional values: {main-axis} values or {main-axis cross-axis} value pairs\n *\n * @see https://css-tricks.com/almanac/properties/j/justify-content/\n * @see https://css-tricks.com/almanac/properties/a/align-items/\n * @see https://css-tricks.com/almanac/properties/a/align-content/\n */\nexport class LayoutAlignDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'layout-align';\n protected layout = 'row'; // default flex-direction\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutAlignStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n this.marshal.trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n *\n */\n protected updateWithValue(value: string) {\n const layout = this.layout || 'row';\n if (layout === 'row') {\n this.styleCache = layoutAlignHorizontalCache;\n } else if (layout === 'row-reverse') {\n this.styleCache = layoutAlignHorizontalRevCache;\n } else if (layout === 'column') {\n this.styleCache = layoutAlignVerticalCache;\n } else if (layout === 'column-reverse') {\n this.styleCache = layoutAlignVerticalRevCache;\n }\n this.addStyles(value, {layout});\n }\n\n /**\n * Cache the parent container 'flex-direction' and update the 'flex' styles\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n this.layout = layout.split(' ')[0];\n if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutAlignDirective extends LayoutAlignDirective {\n protected inputs = inputs;\n}\n\nconst layoutAlignHorizontalCache: Map = new Map();\nconst layoutAlignVerticalCache: Map = new Map();\nconst layoutAlignHorizontalRevCache: Map = new Map();\nconst layoutAlignVerticalRevCache: Map = new Map();\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 {Directive, ElementRef, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\nconst FLEX_FILL_CSS = {\n 'margin': 0,\n 'width': '100%',\n 'height': '100%',\n 'min-width': '100%',\n 'min-height': '100%'\n};\n\n@Injectable({providedIn: 'root'})\nexport class FlexFillStyleBuilder extends StyleBuilder {\n buildStyles(_input: string) {\n return FLEX_FILL_CSS;\n }\n}\n\n/**\n * 'fxFill' flexbox styling directive\n * Maximizes width and height of element in a layout container\n *\n * NOTE: fxFill is NOT responsive API!!\n */\n@Directive({selector: `[fxFill], [fxFlexFill]`})\nexport class FlexFillDirective extends BaseDirective2 {\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n protected styleBuilder: FlexFillStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.addStyles('');\n }\n\n protected styleCache = flexFillCache;\n}\n\nconst flexFillCache: Map = new Map();\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class FlexAlignStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n input = input || 'stretch';\n const styles: StyleDefinition = {};\n\n // Cross-axis\n switch (input) {\n case 'start':\n styles['align-self'] = 'flex-start';\n break;\n case 'end':\n styles['align-self'] = 'flex-end';\n break;\n default:\n styles['align-self'] = input;\n break;\n }\n\n return styles;\n }\n}\n\nconst inputs = [\n 'fxFlexAlign', 'fxFlexAlign.xs', 'fxFlexAlign.sm', 'fxFlexAlign.md',\n 'fxFlexAlign.lg', 'fxFlexAlign.xl', 'fxFlexAlign.lt-sm', 'fxFlexAlign.lt-md',\n 'fxFlexAlign.lt-lg', 'fxFlexAlign.lt-xl', 'fxFlexAlign.gt-xs', 'fxFlexAlign.gt-sm',\n 'fxFlexAlign.gt-md', 'fxFlexAlign.gt-lg'\n];\nconst selector = `\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n`;\n\n/**\n * 'flex-align' flexbox styling directive\n * Allows element-specific overrides for cross-axis alignments in a layout container\n * @see https://css-tricks.com/almanac/properties/a/align-self/\n */\nexport class FlexAlignDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'flex-align';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexAlignStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = flexAlignCache;\n}\n\nconst flexAlignCache: Map = new Map();\n\n@Directive({selector, inputs})\nexport class DefaultFlexAlignDirective extends FlexAlignDirective {\n protected inputs = inputs;\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 {\n Directive,\n ElementRef,\n OnChanges,\n Optional,\n Injectable,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {isFlowHorizontal} from '../../utils/layout-validator';\n\nexport interface FlexOffsetParent {\n layout: string;\n isRtl: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FlexOffsetStyleBuilder extends StyleBuilder {\n buildStyles(offset: string, parent: FlexOffsetParent) {\n if (offset === '') {\n offset = '0';\n }\n const isPercent = String(offset).indexOf('%') > -1;\n const isPx = String(offset).indexOf('px') > -1;\n if (!isPx && !isPercent && !isNaN(+offset)) {\n offset = offset + '%';\n }\n const horizontalLayoutKey = parent.isRtl ? 'margin-right' : 'margin-left';\n const styles: StyleDefinition = isFlowHorizontal(parent.layout) ?\n {[horizontalLayoutKey]: `${offset}`} : {'margin-top': `${offset}`};\n\n return styles;\n }\n}\n\nconst inputs = [\n 'fxFlexOffset', 'fxFlexOffset.xs', 'fxFlexOffset.sm', 'fxFlexOffset.md',\n 'fxFlexOffset.lg', 'fxFlexOffset.xl', 'fxFlexOffset.lt-sm', 'fxFlexOffset.lt-md',\n 'fxFlexOffset.lt-lg', 'fxFlexOffset.lt-xl', 'fxFlexOffset.gt-xs', 'fxFlexOffset.gt-sm',\n 'fxFlexOffset.gt-md', 'fxFlexOffset.gt-lg'\n];\nconst selector = `\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n`;\n\n/**\n * 'flex-offset' flexbox styling directive\n * Configures the 'margin-left' of the element in a layout container\n */\nexport class FlexOffsetDirective extends BaseDirective2 implements OnChanges {\n protected DIRECTIVE_KEY = 'flex-offset';\n\n constructor(protected elRef: ElementRef,\n protected directionality: Directionality,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexOffsetStyleBuilder,\n protected marshal: MediaMarshaller,\n protected styler: StyleUtils) {\n super(elRef, styleBuilder, styler, marshal);\n this.init([this.directionality.change]);\n // Parent DOM `layout-gap` with affect the nested child with `flex-offset`\n if (this.parentElement) {\n this.marshal\n .trackValue(this.parentElement, 'layout-gap')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerUpdate.bind(this));\n }\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Using the current fxFlexOffset value, update the inline CSS\n * NOTE: this will assign `margin-left` if the parent flex-direction == 'row',\n * otherwise `margin-top` is used for the offset.\n */\n protected updateWithValue(value: string|number = ''): void {\n // The flex-direction of this element's flex container. Defaults to 'row'.\n const layout = this.getFlexFlowDirection(this.parentElement!, true);\n const isRtl = this.directionality.value === 'rtl';\n if (layout === 'row' && isRtl) {\n this.styleCache = flexOffsetCacheRowRtl;\n } else if (layout === 'row' && !isRtl) {\n this.styleCache = flexOffsetCacheRowLtr;\n } else if (layout === 'column' && isRtl) {\n this.styleCache = flexOffsetCacheColumnRtl;\n } else if (layout === 'column' && !isRtl) {\n this.styleCache = flexOffsetCacheColumnLtr;\n }\n this.addStyles(value + '', {layout, isRtl});\n }\n}\n\n@Directive({selector, inputs})\nexport class DefaultFlexOffsetDirective extends FlexOffsetDirective {\n protected inputs = inputs;\n}\n\nconst flexOffsetCacheRowRtl: Map = new Map();\nconst flexOffsetCacheColumnRtl: Map = new Map();\nconst flexOffsetCacheRowLtr: Map = new Map();\nconst flexOffsetCacheColumnLtr: Map = new Map();\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 {Directive, ElementRef, OnChanges, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class FlexOrderStyleBuilder extends StyleBuilder {\n buildStyles(value: string) {\n return {order: (value && parseInt(value, 10)) || ''};\n }\n}\n\nconst inputs = [\n 'fxFlexOrder', 'fxFlexOrder.xs', 'fxFlexOrder.sm', 'fxFlexOrder.md',\n 'fxFlexOrder.lg', 'fxFlexOrder.xl', 'fxFlexOrder.lt-sm', 'fxFlexOrder.lt-md',\n 'fxFlexOrder.lt-lg', 'fxFlexOrder.lt-xl', 'fxFlexOrder.gt-xs', 'fxFlexOrder.gt-sm',\n 'fxFlexOrder.gt-md', 'fxFlexOrder.gt-lg'\n];\nconst selector = `\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n`;\n\n/**\n * 'flex-order' flexbox styling directive\n * Configures the positional ordering of the element in a sorted layout container\n * @see https://css-tricks.com/almanac/properties/o/order/\n */\nexport class FlexOrderDirective extends BaseDirective2 implements OnChanges {\n\n protected DIRECTIVE_KEY = 'flex-order';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexOrderStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = flexOrderCache;\n}\n\nconst flexOrderCache: Map = new Map();\n\n@Directive({selector, inputs})\nexport class DefaultFlexOrderDirective extends FlexOrderDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Inject, Injectable, Input} from '@angular/core';\nimport {\n BaseDirective2,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n StyleUtils,\n validateBasis,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {extendObject} from '../../utils/object-extend';\nimport {isFlowHorizontal} from '../../utils/layout-validator';\n\ninterface FlexBuilderParent {\n direction: string;\n hasWrap: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FlexStyleBuilder extends StyleBuilder {\n constructor(@Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions) {\n super();\n }\n buildStyles(input: string, parent: FlexBuilderParent) {\n let [grow, shrink, ...basisParts]: (string|number)[] = input.split(' ');\n let basis = basisParts.join(' ');\n\n // The flex-direction of this element's flex container. Defaults to 'row'.\n const direction = (parent.direction.indexOf('column') > -1) ? 'column' : 'row';\n\n const max = isFlowHorizontal(direction) ? 'max-width' : 'max-height';\n const min = isFlowHorizontal(direction) ? 'min-width' : 'min-height';\n\n const hasCalc = String(basis).indexOf('calc') > -1;\n const usingCalc = hasCalc || (basis === 'auto');\n const isPercent = String(basis).indexOf('%') > -1 && !hasCalc;\n const hasUnits = String(basis).indexOf('px') > -1 || String(basis).indexOf('rem') > -1 ||\n String(basis).indexOf('em') > -1 || String(basis).indexOf('vw') > -1 ||\n String(basis).indexOf('vh') > -1;\n\n let isValue = (hasCalc || hasUnits);\n\n grow = (grow == '0') ? 0 : grow;\n shrink = (shrink == '0') ? 0 : shrink;\n\n // make box inflexible when shrink and grow are both zero\n // should not set a min when the grow is zero\n // should not set a max when the shrink is zero\n const isFixed = !grow && !shrink;\n\n let css: {[key: string]: string | number | null} = {};\n\n // flex-basis allows you to specify the initial/starting main-axis size of the element,\n // before anything else is computed. It can either be a percentage or an absolute value.\n // It is, however, not the breaking point for flex-grow/shrink properties\n //\n // flex-grow can be seen as this:\n // 0: Do not stretch. Either size to element's content width, or obey 'flex-basis'.\n // 1: (Default value). Stretch; will be the same size to all other flex items on\n // the same row since they have a default value of 1.\n // ≥2 (integer n): Stretch. Will be n times the size of other elements\n // with 'flex-grow: 1' on the same row.\n\n // Use `null` to clear existing styles.\n const clearStyles = {\n 'max-width': null,\n 'max-height': null,\n 'min-width': null,\n 'min-height': null\n };\n switch (basis || '') {\n case '':\n const useColumnBasisZero = this.layoutConfig.useColumnBasisZero !== false;\n basis = direction === 'row' ? '0%' : (useColumnBasisZero ? '0.000000001px' : 'auto');\n break;\n case 'initial': // default\n case 'nogrow':\n grow = 0;\n basis = 'auto';\n break;\n case 'grow':\n basis = '100%';\n break;\n case 'noshrink':\n shrink = 0;\n basis = 'auto';\n break;\n case 'auto':\n break;\n case 'none':\n grow = 0;\n shrink = 0;\n basis = 'auto';\n break;\n default:\n // Defaults to percentage sizing unless `px` is explicitly set\n if (!isValue && !isPercent && !isNaN(basis as any)) {\n basis = basis + '%';\n }\n\n // Fix for issue 280\n if (basis === '0%') {\n isValue = true;\n }\n\n if (basis === '0px') {\n basis = '0%';\n }\n\n // fix issue #5345\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': isValue ? basis : '100%'\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${isValue ? basis : '100%'}`\n });\n }\n\n break;\n }\n\n if (!(css['flex'] || css['flex-grow'])) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n }\n\n // Fix for issues 277, 534, and 728\n if (basis !== '0%' && basis !== '0px' && basis !== '0.000000001px' && basis !== 'auto') {\n css[min] = isFixed || (isValue && grow) ? basis : null;\n css[max] = isFixed || (!usingCalc && shrink) ? basis : null;\n }\n\n // Fix for issue 528\n if (!css[min] && !css[max]) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n } else {\n // Fix for issue 660\n if (parent.hasWrap) {\n css[hasCalc ? 'flex-basis' : 'flex'] = css[max] ?\n (hasCalc ? css[max] : `${grow} ${shrink} ${css[max]}`) :\n (hasCalc ? css[min] : `${grow} ${shrink} ${css[min]}`);\n }\n }\n\n return extendObject(css, {'box-sizing': 'border-box'}) as StyleDefinition;\n }\n}\n\nconst inputs = [\n 'fxFlex', 'fxFlex.xs', 'fxFlex.sm', 'fxFlex.md',\n 'fxFlex.lg', 'fxFlex.xl', 'fxFlex.lt-sm', 'fxFlex.lt-md',\n 'fxFlex.lt-lg', 'fxFlex.lt-xl', 'fxFlex.gt-xs', 'fxFlex.gt-sm',\n 'fxFlex.gt-md', 'fxFlex.gt-lg'\n];\nconst selector = `\n [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n [fxFlex.gt-md], [fxFlex.gt-lg]\n`;\n\n/**\n * Directive to control the size of a flex item using flex-basis, flex-grow, and flex-shrink.\n * Corresponds to the css `flex` shorthand property.\n *\n * @see https://css-tricks.com/snippets/css/a-guide-to-flexbox/\n */\nexport class FlexDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'flex';\n protected direction = '';\n protected wrap = false;\n\n\n @Input('fxShrink')\n get shrink(): string { return this.flexShrink; }\n set shrink(value: string) {\n this.flexShrink = value || '1';\n this.triggerReflow();\n }\n\n @Input('fxGrow')\n get grow(): string { return this.flexGrow; }\n set grow(value: string) {\n this.flexGrow = value || '1';\n this.triggerReflow();\n }\n\n protected flexGrow = '1';\n protected flexShrink = '1';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n protected styleBuilder: FlexStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n if (this.parentElement) {\n this.marshal.trackValue(this.parentElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n }\n\n /**\n * Caches the parent container's 'flex-direction' and updates the element's style.\n * Used as a handler for layout change events from the parent flex container.\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n const layoutParts = layout.split(' ');\n this.direction = layoutParts[0];\n this.wrap = layoutParts[1] !== undefined && layoutParts[1] === 'wrap';\n this.triggerUpdate();\n }\n\n /** Input to this is exclusively the basis input value */\n protected updateWithValue(value: string) {\n const addFlexToParent = this.layoutConfig.addFlexToParent !== false;\n if (!this.direction) {\n this.direction = this.getFlexFlowDirection(this.parentElement!, addFlexToParent);\n }\n const direction = this.direction;\n const isHorizontal = direction.startsWith('row');\n const hasWrap = this.wrap;\n if (isHorizontal && hasWrap) {\n this.styleCache = flexRowWrapCache;\n } else if (isHorizontal && !hasWrap) {\n this.styleCache = flexRowCache;\n } else if (!isHorizontal && hasWrap) {\n this.styleCache = flexColumnWrapCache;\n } else if (!isHorizontal && !hasWrap) {\n this.styleCache = flexColumnCache;\n }\n const basis = String(value).replace(';', '');\n const parts = validateBasis(basis, this.flexGrow, this.flexShrink);\n this.addStyles(parts.join(' '), {direction, hasWrap});\n }\n\n /** Trigger a style reflow, usually based on a shrink/grow input event */\n protected triggerReflow() {\n const parts = validateBasis(this.activatedValue, this.flexGrow, this.flexShrink);\n this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, parts.join(' '));\n }\n}\n\n@Directive({inputs, selector})\nexport class DefaultFlexDirective extends FlexDirective {\n protected inputs = inputs;\n}\n\nconst flexRowCache: Map = new Map();\nconst flexColumnCache: Map = new Map();\nconst flexRowWrapCache: Map = new Map();\nconst flexColumnWrapCache: Map = new Map();\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 */\nimport {\n Directive,\n ElementRef,\n Optional,\n OnDestroy,\n NgZone,\n Injectable,\n AfterContentInit,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {LAYOUT_VALUES} from '../../utils/layout-validator';\n\nexport interface LayoutGapParent {\n directionality: string;\n items: HTMLElement[];\n layout: string;\n}\n\nconst CLEAR_MARGIN_CSS = {\n 'margin-left': null,\n 'margin-right': null,\n 'margin-top': null,\n 'margin-bottom': null\n};\n\n@Injectable({providedIn: 'root'})\nexport class LayoutGapStyleBuilder extends StyleBuilder {\n constructor(private _styler: StyleUtils) {\n super();\n }\n\n buildStyles(gapValue: string, parent: LayoutGapParent) {\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n\n // Add the margin to the host element\n return buildGridMargin(gapValue, parent.directionality);\n } else {\n return {};\n }\n }\n\n sideEffect(gapValue: string, _styles: StyleDefinition, parent: LayoutGapParent) {\n const items = parent.items;\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n // For each `element` children, set the padding\n const paddingStyles = buildGridPadding(gapValue, parent.directionality);\n this._styler.applyStyleToElements(paddingStyles, parent.items);\n } else {\n const lastItem = items.pop();\n\n // For each `element` children EXCEPT the last,\n // set the margin right/bottom styles...\n const gapCss = buildGapCSS(gapValue, parent);\n this._styler.applyStyleToElements(gapCss, items);\n\n // Clear all gaps for all visible elements\n this._styler.applyStyleToElements(CLEAR_MARGIN_CSS, [lastItem!]);\n }\n }\n}\n\nconst inputs = [\n 'fxLayoutGap', 'fxLayoutGap.xs', 'fxLayoutGap.sm', 'fxLayoutGap.md',\n 'fxLayoutGap.lg', 'fxLayoutGap.xl', 'fxLayoutGap.lt-sm', 'fxLayoutGap.lt-md',\n 'fxLayoutGap.lt-lg', 'fxLayoutGap.lt-xl', 'fxLayoutGap.gt-xs', 'fxLayoutGap.gt-sm',\n 'fxLayoutGap.gt-md', 'fxLayoutGap.gt-lg'\n];\nconst selector = `\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n`;\n\n/**\n * 'layout-padding' styling directive\n * Defines padding of child elements in a layout container\n */\nexport class LayoutGapDirective extends BaseDirective2 implements AfterContentInit, OnDestroy {\n protected layout = 'row'; // default flex-direction\n protected DIRECTIVE_KEY = 'layout-gap';\n protected observerSubject = new Subject();\n\n /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */\n protected get childrenNodes(): HTMLElement[] {\n const obj = this.nativeElement.children;\n const buffer: any[] = [];\n\n // iterate backwards ensuring that length is an UInt32\n for (let i = obj.length; i--;) {\n buffer[i] = obj[i];\n }\n return buffer;\n }\n\n constructor(protected elRef: ElementRef,\n protected zone: NgZone,\n protected directionality: Directionality,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutGapStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n const extraTriggers = [this.directionality.change, this.observerSubject.asObservable()];\n this.init(extraTriggers);\n this.marshal\n .trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n ngAfterContentInit() {\n this.buildChildObservable();\n this.triggerUpdate();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Cache the parent container 'flex-direction' and update the 'margin' styles\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n // Make sure to filter out 'wrap' option\n const direction = layout.split(' ');\n this.layout = direction[0];\n if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n\n /**\n *\n */\n protected updateWithValue(value: string) {\n if (!value) {\n value = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY);\n }\n // Gather all non-hidden Element nodes\n const items = this.childrenNodes\n .filter(el => el.nodeType === 1 && this.willDisplay(el))\n .sort((a, b) => {\n const orderA = +this.styler.lookupStyle(a, 'order');\n const orderB = +this.styler.lookupStyle(b, 'order');\n if (isNaN(orderA) || isNaN(orderB) || orderA === orderB) {\n return 0;\n } else {\n return orderA > orderB ? 1 : -1;\n }\n });\n\n if (items.length > 0) {\n const directionality = this.directionality.value;\n const layout = this.layout;\n if (layout === 'row' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheRowRtl;\n } else if (layout === 'row' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheRowLtr;\n } else if (layout === 'column' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheColumnRtl;\n } else if (layout === 'column' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheColumnLtr;\n }\n this.addStyles(value, {directionality, items, layout});\n }\n }\n\n /** Determine if an element will show or hide based on current activation */\n protected willDisplay(source: HTMLElement): boolean {\n const value = this.marshal.getValue(source, 'show-hide');\n return value === true ||\n (value === '' && this.styleUtils.lookupStyle(source, 'display') !== 'none');\n }\n\n protected buildChildObservable(): void {\n this.zone.runOutsideAngular(() => {\n if (typeof MutationObserver !== 'undefined') {\n this.observer = new MutationObserver((mutations: MutationRecord[]) => {\n const validatedChanges = (it: MutationRecord): boolean => {\n return (it.addedNodes && it.addedNodes.length > 0) ||\n (it.removedNodes && it.removedNodes.length > 0);\n };\n\n // update gap styles only for child 'added' or 'removed' events\n if (mutations.some(validatedChanges)) {\n this.observerSubject.next();\n }\n });\n this.observer.observe(this.nativeElement, {childList: true});\n }\n });\n }\n\n protected observer?: MutationObserver;\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutGapDirective extends LayoutGapDirective {\n protected inputs = inputs;\n}\n\nconst layoutGapCacheRowRtl: Map = new Map();\nconst layoutGapCacheColumnRtl: Map = new Map();\nconst layoutGapCacheRowLtr: Map = new Map();\nconst layoutGapCacheColumnLtr: Map = new Map();\n\nconst GRID_SPECIFIER = ' grid';\n\nfunction buildGridPadding(value: string, directionality: string): StyleDefinition {\n let paddingTop = '0px', paddingRight = '0px', paddingBottom = value, paddingLeft = '0px';\n\n if (directionality === 'rtl') {\n paddingLeft = value;\n } else {\n paddingRight = value;\n }\n\n return {'padding': `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`};\n}\n\nfunction buildGridMargin(value: string, directionality: string): StyleDefinition {\n let marginTop = '0px', marginRight = '0px', marginBottom = '-' + value, marginLeft = '0px';\n\n if (directionality === 'rtl') {\n marginLeft = '-' + value;\n } else {\n marginRight = '-' + value;\n }\n\n return {'margin': `${marginTop} ${marginRight} ${marginBottom} ${marginLeft}`};\n}\n\nfunction buildGapCSS(gapValue: string,\n parent: {directionality: string, layout: string}): StyleDefinition {\n let key, margins: {[key: string]: string | null} = {...CLEAR_MARGIN_CSS};\n\n switch (parent.layout) {\n case 'column':\n key = 'margin-bottom';\n break;\n case 'column-reverse':\n key = 'margin-top';\n break;\n case 'row':\n key = parent.directionality === 'rtl' ? 'margin-left' : 'margin-right';\n break;\n case 'row-reverse':\n key = parent.directionality === 'rtl' ? 'margin-right' : 'margin-left';\n break;\n default :\n key = parent.directionality === 'rtl' ? 'margin-left' : 'margin-right';\n break;\n }\n margins[key] = gapValue;\n\n return margins;\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 {Directive, ElementRef, OnChanges, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\nimport {buildLayoutCSS} from '../../utils/layout-validator';\n\n@Injectable({providedIn: 'root'})\nexport class LayoutStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return buildLayoutCSS(input);\n }\n}\n\nconst inputs = [\n 'fxLayout', 'fxLayout.xs', 'fxLayout.sm', 'fxLayout.md',\n 'fxLayout.lg', 'fxLayout.xl', 'fxLayout.lt-sm', 'fxLayout.lt-md',\n 'fxLayout.lt-lg', 'fxLayout.lt-xl', 'fxLayout.gt-xs', 'fxLayout.gt-sm',\n 'fxLayout.gt-md', 'fxLayout.gt-lg'\n];\nconst selector = `\n [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],\n [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md],\n [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm],\n [fxLayout.gt-md], [fxLayout.gt-lg]\n`;\n\n/**\n * 'layout' flexbox styling directive\n * Defines the positioning flow direction for the child elements: row or column\n * Optional values: column or row (default)\n * @see https://css-tricks.com/almanac/properties/f/flex-direction/\n *\n */\nexport class LayoutDirective extends BaseDirective2 implements OnChanges {\n\n protected DIRECTIVE_KEY = 'layout';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = layoutCache;\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutDirective extends LayoutDirective {\n protected inputs = inputs;\n}\n\nconst layoutCache: Map = new Map();\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='' 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 : 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"],"names":["selector","inputs","tslib_1.__extends","tslib_1.__assign"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"flex.es5.js","sources":["../../../src/lib/flex/module.ts","../../../src/lib/flex/layout-align/layout-align.ts","../../../src/lib/flex/flex-fill/flex-fill.ts","../../../src/lib/flex/flex-align/flex-align.ts","../../../src/lib/flex/flex-offset/flex-offset.ts","../../../src/lib/flex/flex-order/flex-order.ts","../../../src/lib/flex/flex/flex.ts","../../../src/lib/utils/object-extend.ts","../../../src/lib/flex/layout-gap/layout-gap.ts","../../../src/lib/flex/layout/layout.ts","../../../src/lib/utils/layout-validator.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {NgModule} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultLayoutDirective} from './layout/layout';\nimport {DefaultLayoutGapDirective} from './layout-gap/layout-gap';\nimport {DefaultFlexDirective} from './flex/flex';\nimport {DefaultFlexOrderDirective} from './flex-order/flex-order';\nimport {DefaultFlexOffsetDirective} from './flex-offset/flex-offset';\nimport {DefaultFlexAlignDirective} from './flex-align/flex-align';\nimport {FlexFillDirective} from './flex-fill/flex-fill';\nimport {DefaultLayoutAlignDirective} from './layout-align/layout-align';\n\n\nconst ALL_DIRECTIVES = [\n DefaultLayoutDirective,\n DefaultLayoutGapDirective,\n DefaultLayoutAlignDirective,\n DefaultFlexOrderDirective,\n DefaultFlexOffsetDirective,\n FlexFillDirective,\n DefaultFlexAlignDirective,\n DefaultFlexDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the Flex API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule, BidiModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class FlexModule {\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {extendObject} from '../../utils/object-extend';\nimport {LAYOUT_VALUES, isFlowHorizontal} from '../../utils/layout-validator';\n\nexport interface LayoutAlignParent {\n layout: string;\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class LayoutAlignStyleBuilder extends StyleBuilder {\n buildStyles(align: string, parent: LayoutAlignParent) {\n const css: StyleDefinition = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['justify-content'] = 'center';\n break;\n case 'space-around':\n css['justify-content'] = 'space-around';\n break;\n case 'space-between':\n css['justify-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['justify-content'] = 'space-evenly';\n break;\n case 'end':\n case 'flex-end':\n css['justify-content'] = 'flex-end';\n break;\n case 'start':\n case 'flex-start':\n default :\n css['justify-content'] = 'flex-start'; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'flex-start':\n css['align-items'] = css['align-content'] = 'flex-start';\n break;\n case 'center':\n css['align-items'] = css['align-content'] = 'center';\n break;\n case 'end':\n case 'flex-end':\n css['align-items'] = css['align-content'] = 'flex-end';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n css['align-items'] = 'stretch';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n css['align-items'] = 'stretch';\n break;\n case 'baseline':\n css['align-content'] = 'stretch';\n css['align-items'] = 'baseline';\n break;\n case 'stretch':\n default : // 'stretch'\n css['align-items'] = css['align-content'] = 'stretch'; // default cross axis\n break;\n }\n\n return extendObject(css, {\n 'display' : parent.inline ? 'inline-flex' : 'flex',\n 'flex-direction' : parent.layout,\n 'box-sizing' : 'border-box',\n 'max-width': crossAxis === 'stretch' ?\n !isFlowHorizontal(parent.layout) ? '100%' : null : null,\n 'max-height': crossAxis === 'stretch' ?\n isFlowHorizontal(parent.layout) ? '100%' : null : null,\n }) as StyleDefinition;\n }\n}\n\nconst inputs = [\n 'fxLayoutAlign', 'fxLayoutAlign.xs', 'fxLayoutAlign.sm', 'fxLayoutAlign.md',\n 'fxLayoutAlign.lg', 'fxLayoutAlign.xl', 'fxLayoutAlign.lt-sm', 'fxLayoutAlign.lt-md',\n 'fxLayoutAlign.lt-lg', 'fxLayoutAlign.lt-xl', 'fxLayoutAlign.gt-xs', 'fxLayoutAlign.gt-sm',\n 'fxLayoutAlign.gt-md', 'fxLayoutAlign.gt-lg'\n];\nconst selector = `\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n`;\n\n/**\n * 'layout-align' flexbox styling directive\n * Defines positioning of child elements along main and cross axis in a layout container\n * Optional values: {main-axis} values or {main-axis cross-axis} value pairs\n *\n * @see https://css-tricks.com/almanac/properties/j/justify-content/\n * @see https://css-tricks.com/almanac/properties/a/align-items/\n * @see https://css-tricks.com/almanac/properties/a/align-content/\n */\nexport class LayoutAlignDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'layout-align';\n protected layout = 'row'; // default flex-direction\n protected inline = false; // default inline value\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutAlignStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n this.marshal.trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n *\n */\n protected updateWithValue(value: string) {\n const layout = this.layout || 'row';\n const inline = this.inline;\n if (layout === 'row' && inline) {\n this.styleCache = layoutAlignHorizontalInlineCache;\n } else if (layout === 'row' && !inline) {\n this.styleCache = layoutAlignHorizontalCache;\n } else if (layout === 'row-reverse' && inline) {\n this.styleCache = layoutAlignHorizontalRevInlineCache;\n } else if (layout === 'row-reverse' && !inline) {\n this.styleCache = layoutAlignHorizontalRevCache;\n } else if (layout === 'column' && inline) {\n this.styleCache = layoutAlignVerticalInlineCache;\n } else if (layout === 'column' && !inline) {\n this.styleCache = layoutAlignVerticalCache;\n } else if (layout === 'column-reverse' && inline) {\n this.styleCache = layoutAlignVerticalRevInlineCache;\n } else if (layout === 'column-reverse' && !inline) {\n this.styleCache = layoutAlignVerticalRevCache;\n }\n this.addStyles(value, {layout, inline});\n }\n\n /**\n * Cache the parent container 'flex-direction' and update the 'flex' styles\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layoutKeys: string[] = matcher.value.split(' ');\n this.layout = layoutKeys[0];\n this.inline = matcher.value.includes('inline');\n if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutAlignDirective extends LayoutAlignDirective {\n protected inputs = inputs;\n}\n\nconst layoutAlignHorizontalCache: Map = new Map();\nconst layoutAlignVerticalCache: Map = new Map();\nconst layoutAlignHorizontalRevCache: Map = new Map();\nconst layoutAlignVerticalRevCache: Map = new Map();\nconst layoutAlignHorizontalInlineCache: Map = new Map();\nconst layoutAlignVerticalInlineCache: Map = new Map();\nconst layoutAlignHorizontalRevInlineCache: Map = new Map();\nconst layoutAlignVerticalRevInlineCache: Map = new Map();\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 {Directive, ElementRef, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\nconst FLEX_FILL_CSS = {\n 'margin': 0,\n 'width': '100%',\n 'height': '100%',\n 'min-width': '100%',\n 'min-height': '100%'\n};\n\n@Injectable({providedIn: 'root'})\nexport class FlexFillStyleBuilder extends StyleBuilder {\n buildStyles(_input: string) {\n return FLEX_FILL_CSS;\n }\n}\n\n/**\n * 'fxFill' flexbox styling directive\n * Maximizes width and height of element in a layout container\n *\n * NOTE: fxFill is NOT responsive API!!\n */\n@Directive({selector: `[fxFill], [fxFlexFill]`})\nexport class FlexFillDirective extends BaseDirective2 {\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n protected styleBuilder: FlexFillStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.addStyles('');\n }\n\n protected styleCache = flexFillCache;\n}\n\nconst flexFillCache: Map = new Map();\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class FlexAlignStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n input = input || 'stretch';\n const styles: StyleDefinition = {};\n\n // Cross-axis\n switch (input) {\n case 'start':\n styles['align-self'] = 'flex-start';\n break;\n case 'end':\n styles['align-self'] = 'flex-end';\n break;\n default:\n styles['align-self'] = input;\n break;\n }\n\n return styles;\n }\n}\n\nconst inputs = [\n 'fxFlexAlign', 'fxFlexAlign.xs', 'fxFlexAlign.sm', 'fxFlexAlign.md',\n 'fxFlexAlign.lg', 'fxFlexAlign.xl', 'fxFlexAlign.lt-sm', 'fxFlexAlign.lt-md',\n 'fxFlexAlign.lt-lg', 'fxFlexAlign.lt-xl', 'fxFlexAlign.gt-xs', 'fxFlexAlign.gt-sm',\n 'fxFlexAlign.gt-md', 'fxFlexAlign.gt-lg'\n];\nconst selector = `\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n`;\n\n/**\n * 'flex-align' flexbox styling directive\n * Allows element-specific overrides for cross-axis alignments in a layout container\n * @see https://css-tricks.com/almanac/properties/a/align-self/\n */\nexport class FlexAlignDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'flex-align';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexAlignStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = flexAlignCache;\n}\n\nconst flexAlignCache: Map = new Map();\n\n@Directive({selector, inputs})\nexport class DefaultFlexAlignDirective extends FlexAlignDirective {\n protected inputs = inputs;\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 {\n Directive,\n ElementRef,\n OnChanges,\n Optional,\n Injectable,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {isFlowHorizontal} from '../../utils/layout-validator';\n\nexport interface FlexOffsetParent {\n layout: string;\n isRtl: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FlexOffsetStyleBuilder extends StyleBuilder {\n buildStyles(offset: string, parent: FlexOffsetParent) {\n if (offset === '') {\n offset = '0';\n }\n const isPercent = String(offset).indexOf('%') > -1;\n const isPx = String(offset).indexOf('px') > -1;\n if (!isPx && !isPercent && !isNaN(+offset)) {\n offset = offset + '%';\n }\n const horizontalLayoutKey = parent.isRtl ? 'margin-right' : 'margin-left';\n const styles: StyleDefinition = isFlowHorizontal(parent.layout) ?\n {[horizontalLayoutKey]: `${offset}`} : {'margin-top': `${offset}`};\n\n return styles;\n }\n}\n\nconst inputs = [\n 'fxFlexOffset', 'fxFlexOffset.xs', 'fxFlexOffset.sm', 'fxFlexOffset.md',\n 'fxFlexOffset.lg', 'fxFlexOffset.xl', 'fxFlexOffset.lt-sm', 'fxFlexOffset.lt-md',\n 'fxFlexOffset.lt-lg', 'fxFlexOffset.lt-xl', 'fxFlexOffset.gt-xs', 'fxFlexOffset.gt-sm',\n 'fxFlexOffset.gt-md', 'fxFlexOffset.gt-lg'\n];\nconst selector = `\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n`;\n\n/**\n * 'flex-offset' flexbox styling directive\n * Configures the 'margin-left' of the element in a layout container\n */\nexport class FlexOffsetDirective extends BaseDirective2 implements OnChanges {\n protected DIRECTIVE_KEY = 'flex-offset';\n\n constructor(protected elRef: ElementRef,\n protected directionality: Directionality,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexOffsetStyleBuilder,\n protected marshal: MediaMarshaller,\n protected styler: StyleUtils) {\n super(elRef, styleBuilder, styler, marshal);\n this.init([this.directionality.change]);\n // Parent DOM `layout-gap` with affect the nested child with `flex-offset`\n if (this.parentElement) {\n this.marshal\n .trackValue(this.parentElement, 'layout-gap')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerUpdate.bind(this));\n }\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Using the current fxFlexOffset value, update the inline CSS\n * NOTE: this will assign `margin-left` if the parent flex-direction == 'row',\n * otherwise `margin-top` is used for the offset.\n */\n protected updateWithValue(value: string|number = ''): void {\n // The flex-direction of this element's flex container. Defaults to 'row'.\n const layout = this.getFlexFlowDirection(this.parentElement!, true);\n const isRtl = this.directionality.value === 'rtl';\n if (layout === 'row' && isRtl) {\n this.styleCache = flexOffsetCacheRowRtl;\n } else if (layout === 'row' && !isRtl) {\n this.styleCache = flexOffsetCacheRowLtr;\n } else if (layout === 'column' && isRtl) {\n this.styleCache = flexOffsetCacheColumnRtl;\n } else if (layout === 'column' && !isRtl) {\n this.styleCache = flexOffsetCacheColumnLtr;\n }\n this.addStyles(value + '', {layout, isRtl});\n }\n}\n\n@Directive({selector, inputs})\nexport class DefaultFlexOffsetDirective extends FlexOffsetDirective {\n protected inputs = inputs;\n}\n\nconst flexOffsetCacheRowRtl: Map = new Map();\nconst flexOffsetCacheColumnRtl: Map = new Map();\nconst flexOffsetCacheRowLtr: Map = new Map();\nconst flexOffsetCacheColumnLtr: Map = new Map();\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 {Directive, ElementRef, OnChanges, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class FlexOrderStyleBuilder extends StyleBuilder {\n buildStyles(value: string) {\n return {order: (value && parseInt(value, 10)) || ''};\n }\n}\n\nconst inputs = [\n 'fxFlexOrder', 'fxFlexOrder.xs', 'fxFlexOrder.sm', 'fxFlexOrder.md',\n 'fxFlexOrder.lg', 'fxFlexOrder.xl', 'fxFlexOrder.lt-sm', 'fxFlexOrder.lt-md',\n 'fxFlexOrder.lt-lg', 'fxFlexOrder.lt-xl', 'fxFlexOrder.gt-xs', 'fxFlexOrder.gt-sm',\n 'fxFlexOrder.gt-md', 'fxFlexOrder.gt-lg'\n];\nconst selector = `\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n`;\n\n/**\n * 'flex-order' flexbox styling directive\n * Configures the positional ordering of the element in a sorted layout container\n * @see https://css-tricks.com/almanac/properties/o/order/\n */\nexport class FlexOrderDirective extends BaseDirective2 implements OnChanges {\n\n protected DIRECTIVE_KEY = 'flex-order';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: FlexOrderStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = flexOrderCache;\n}\n\nconst flexOrderCache: Map = new Map();\n\n@Directive({selector, inputs})\nexport class DefaultFlexOrderDirective extends FlexOrderDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Inject, Injectable, Input} from '@angular/core';\nimport {\n BaseDirective2,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n StyleUtils,\n validateBasis,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {extendObject} from '../../utils/object-extend';\nimport {isFlowHorizontal} from '../../utils/layout-validator';\n\ninterface FlexBuilderParent {\n direction: string;\n hasWrap: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class FlexStyleBuilder extends StyleBuilder {\n constructor(@Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions) {\n super();\n }\n buildStyles(input: string, parent: FlexBuilderParent) {\n let [grow, shrink, ...basisParts]: (string|number)[] = input.split(' ');\n let basis = basisParts.join(' ');\n\n // The flex-direction of this element's flex container. Defaults to 'row'.\n const direction = (parent.direction.indexOf('column') > -1) ? 'column' : 'row';\n\n const max = isFlowHorizontal(direction) ? 'max-width' : 'max-height';\n const min = isFlowHorizontal(direction) ? 'min-width' : 'min-height';\n\n const hasCalc = String(basis).indexOf('calc') > -1;\n const usingCalc = hasCalc || (basis === 'auto');\n const isPercent = String(basis).indexOf('%') > -1 && !hasCalc;\n const hasUnits = String(basis).indexOf('px') > -1 || String(basis).indexOf('rem') > -1 ||\n String(basis).indexOf('em') > -1 || String(basis).indexOf('vw') > -1 ||\n String(basis).indexOf('vh') > -1;\n\n let isValue = (hasCalc || hasUnits);\n\n grow = (grow == '0') ? 0 : grow;\n shrink = (shrink == '0') ? 0 : shrink;\n\n // make box inflexible when shrink and grow are both zero\n // should not set a min when the grow is zero\n // should not set a max when the shrink is zero\n const isFixed = !grow && !shrink;\n\n let css: {[key: string]: string | number | null} = {};\n\n // flex-basis allows you to specify the initial/starting main-axis size of the element,\n // before anything else is computed. It can either be a percentage or an absolute value.\n // It is, however, not the breaking point for flex-grow/shrink properties\n //\n // flex-grow can be seen as this:\n // 0: Do not stretch. Either size to element's content width, or obey 'flex-basis'.\n // 1: (Default value). Stretch; will be the same size to all other flex items on\n // the same row since they have a default value of 1.\n // ≥2 (integer n): Stretch. Will be n times the size of other elements\n // with 'flex-grow: 1' on the same row.\n\n // Use `null` to clear existing styles.\n const clearStyles = {\n 'max-width': null,\n 'max-height': null,\n 'min-width': null,\n 'min-height': null\n };\n switch (basis || '') {\n case '':\n const useColumnBasisZero = this.layoutConfig.useColumnBasisZero !== false;\n basis = direction === 'row' ? '0%' : (useColumnBasisZero ? '0.000000001px' : 'auto');\n break;\n case 'initial': // default\n case 'nogrow':\n grow = 0;\n basis = 'auto';\n break;\n case 'grow':\n basis = '100%';\n break;\n case 'noshrink':\n shrink = 0;\n basis = 'auto';\n break;\n case 'auto':\n break;\n case 'none':\n grow = 0;\n shrink = 0;\n basis = 'auto';\n break;\n default:\n // Defaults to percentage sizing unless `px` is explicitly set\n if (!isValue && !isPercent && !isNaN(basis as any)) {\n basis = basis + '%';\n }\n\n // Fix for issue 280\n if (basis === '0%') {\n isValue = true;\n }\n\n if (basis === '0px') {\n basis = '0%';\n }\n\n // fix issue #5345\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': isValue ? basis : '100%'\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${isValue ? basis : '100%'}`\n });\n }\n\n break;\n }\n\n if (!(css['flex'] || css['flex-grow'])) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n }\n\n // Fix for issues 277, 534, and 728\n if (basis !== '0%' && basis !== '0px' && basis !== '0.000000001px' && basis !== 'auto') {\n css[min] = isFixed || (isValue && grow) ? basis : null;\n css[max] = isFixed || (!usingCalc && shrink) ? basis : null;\n }\n\n // Fix for issue 528\n if (!css[min] && !css[max]) {\n if (hasCalc) {\n css = extendObject(clearStyles, {\n 'flex-grow': grow,\n 'flex-shrink': shrink,\n 'flex-basis': basis\n });\n } else {\n css = extendObject(clearStyles, {\n 'flex': `${grow} ${shrink} ${basis}`\n });\n }\n } else {\n // Fix for issue 660\n if (parent.hasWrap) {\n css[hasCalc ? 'flex-basis' : 'flex'] = css[max] ?\n (hasCalc ? css[max] : `${grow} ${shrink} ${css[max]}`) :\n (hasCalc ? css[min] : `${grow} ${shrink} ${css[min]}`);\n }\n }\n\n return extendObject(css, {'box-sizing': 'border-box'}) as StyleDefinition;\n }\n}\n\nconst inputs = [\n 'fxFlex', 'fxFlex.xs', 'fxFlex.sm', 'fxFlex.md',\n 'fxFlex.lg', 'fxFlex.xl', 'fxFlex.lt-sm', 'fxFlex.lt-md',\n 'fxFlex.lt-lg', 'fxFlex.lt-xl', 'fxFlex.gt-xs', 'fxFlex.gt-sm',\n 'fxFlex.gt-md', 'fxFlex.gt-lg'\n];\nconst selector = `\n [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n [fxFlex.gt-md], [fxFlex.gt-lg]\n`;\n\n/**\n * Directive to control the size of a flex item using flex-basis, flex-grow, and flex-shrink.\n * Corresponds to the css `flex` shorthand property.\n *\n * @see https://css-tricks.com/snippets/css/a-guide-to-flexbox/\n */\nexport class FlexDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'flex';\n protected direction = '';\n protected wrap = false;\n\n\n @Input('fxShrink')\n get shrink(): string { return this.flexShrink; }\n set shrink(value: string) {\n this.flexShrink = value || '1';\n this.triggerReflow();\n }\n\n @Input('fxGrow')\n get grow(): string { return this.flexGrow; }\n set grow(value: string) {\n this.flexGrow = value || '1';\n this.triggerReflow();\n }\n\n protected flexGrow = '1';\n protected flexShrink = '1';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n protected styleBuilder: FlexStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n if (this.parentElement) {\n this.marshal.trackValue(this.parentElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n this.marshal.trackValue(this.nativeElement, 'layout-align')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerReflow.bind(this));\n }\n }\n\n /**\n * Caches the parent container's 'flex-direction' and updates the element's style.\n * Used as a handler for layout change events from the parent flex container.\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n const layoutParts = layout.split(' ');\n this.direction = layoutParts[0];\n this.wrap = layoutParts[1] !== undefined && layoutParts[1] === 'wrap';\n this.triggerUpdate();\n }\n\n /** Input to this is exclusively the basis input value */\n protected updateWithValue(value: string) {\n const addFlexToParent = this.layoutConfig.addFlexToParent !== false;\n if (!this.direction) {\n this.direction = this.getFlexFlowDirection(this.parentElement!, addFlexToParent);\n }\n const direction = this.direction;\n const isHorizontal = direction.startsWith('row');\n const hasWrap = this.wrap;\n if (isHorizontal && hasWrap) {\n this.styleCache = flexRowWrapCache;\n } else if (isHorizontal && !hasWrap) {\n this.styleCache = flexRowCache;\n } else if (!isHorizontal && hasWrap) {\n this.styleCache = flexColumnWrapCache;\n } else if (!isHorizontal && !hasWrap) {\n this.styleCache = flexColumnCache;\n }\n const basis = String(value).replace(';', '');\n const parts = validateBasis(basis, this.flexGrow, this.flexShrink);\n this.addStyles(parts.join(' '), {direction, hasWrap});\n }\n\n /** Trigger a style reflow, usually based on a shrink/grow input event */\n protected triggerReflow() {\n const activatedValue = this.activatedValue;\n if (activatedValue !== undefined) {\n const parts = validateBasis(activatedValue, this.flexGrow, this.flexShrink);\n this.marshal.updateElement(this.nativeElement, this.DIRECTIVE_KEY, parts.join(' '));\n }\n }\n}\n\n@Directive({inputs, selector})\nexport class DefaultFlexDirective extends FlexDirective {\n protected inputs = inputs;\n}\n\nconst flexRowCache: Map = new Map();\nconst flexColumnCache: Map = new Map();\nconst flexRowWrapCache: Map = new Map();\nconst flexColumnWrapCache: Map = new Map();\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 */\nimport {\n Directive,\n ElementRef,\n Optional,\n OnDestroy,\n NgZone,\n Injectable,\n AfterContentInit,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n ElementMatcher,\n} from '@angular/flex-layout/core';\nimport {Subject} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {LAYOUT_VALUES} from '../../utils/layout-validator';\n\nexport interface LayoutGapParent {\n directionality: string;\n items: HTMLElement[];\n layout: string;\n}\n\nconst CLEAR_MARGIN_CSS = {\n 'margin-left': null,\n 'margin-right': null,\n 'margin-top': null,\n 'margin-bottom': null\n};\n\n@Injectable({providedIn: 'root'})\nexport class LayoutGapStyleBuilder extends StyleBuilder {\n constructor(private _styler: StyleUtils) {\n super();\n }\n\n buildStyles(gapValue: string, parent: LayoutGapParent) {\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n\n // Add the margin to the host element\n return buildGridMargin(gapValue, parent.directionality);\n } else {\n return {};\n }\n }\n\n sideEffect(gapValue: string, _styles: StyleDefinition, parent: LayoutGapParent) {\n const items = parent.items;\n if (gapValue.endsWith(GRID_SPECIFIER)) {\n gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n // For each `element` children, set the padding\n const paddingStyles = buildGridPadding(gapValue, parent.directionality);\n this._styler.applyStyleToElements(paddingStyles, parent.items);\n } else {\n const lastItem = items.pop()!;\n\n // For each `element` children EXCEPT the last,\n // set the margin right/bottom styles...\n const gapCss = buildGapCSS(gapValue, parent);\n this._styler.applyStyleToElements(gapCss, items);\n\n // Clear all gaps for all visible elements\n this._styler.applyStyleToElements(CLEAR_MARGIN_CSS, [lastItem]);\n }\n }\n}\n\nconst inputs = [\n 'fxLayoutGap', 'fxLayoutGap.xs', 'fxLayoutGap.sm', 'fxLayoutGap.md',\n 'fxLayoutGap.lg', 'fxLayoutGap.xl', 'fxLayoutGap.lt-sm', 'fxLayoutGap.lt-md',\n 'fxLayoutGap.lt-lg', 'fxLayoutGap.lt-xl', 'fxLayoutGap.gt-xs', 'fxLayoutGap.gt-sm',\n 'fxLayoutGap.gt-md', 'fxLayoutGap.gt-lg'\n];\nconst selector = `\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n`;\n\n/**\n * 'layout-padding' styling directive\n * Defines padding of child elements in a layout container\n */\nexport class LayoutGapDirective extends BaseDirective2 implements AfterContentInit, OnDestroy {\n protected layout = 'row'; // default flex-direction\n protected DIRECTIVE_KEY = 'layout-gap';\n protected observerSubject = new Subject();\n\n /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */\n protected get childrenNodes(): HTMLElement[] {\n const obj = this.nativeElement.children;\n const buffer: any[] = [];\n\n // iterate backwards ensuring that length is an UInt32\n for (let i = obj.length; i--;) {\n buffer[i] = obj[i];\n }\n return buffer;\n }\n\n constructor(protected elRef: ElementRef,\n protected zone: NgZone,\n protected directionality: Directionality,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutGapStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n const extraTriggers = [this.directionality.change, this.observerSubject.asObservable()];\n this.init(extraTriggers);\n this.marshal\n .trackValue(this.nativeElement, 'layout')\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.onLayoutChange.bind(this));\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n ngAfterContentInit() {\n this.buildChildObservable();\n this.triggerUpdate();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Cache the parent container 'flex-direction' and update the 'margin' styles\n */\n protected onLayoutChange(matcher: ElementMatcher) {\n const layout: string = matcher.value;\n // Make sure to filter out 'wrap' option\n const direction = layout.split(' ');\n this.layout = direction[0];\n if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n this.layout = 'row';\n }\n this.triggerUpdate();\n }\n\n /**\n *\n */\n protected updateWithValue(value: string) {\n // Gather all non-hidden Element nodes\n const items = this.childrenNodes\n .filter(el => el.nodeType === 1 && this.willDisplay(el))\n .sort((a, b) => {\n const orderA = +this.styler.lookupStyle(a, 'order');\n const orderB = +this.styler.lookupStyle(b, 'order');\n if (isNaN(orderA) || isNaN(orderB) || orderA === orderB) {\n return 0;\n } else {\n return orderA > orderB ? 1 : -1;\n }\n });\n\n if (items.length > 0) {\n const directionality = this.directionality.value;\n const layout = this.layout;\n if (layout === 'row' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheRowRtl;\n } else if (layout === 'row' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheRowLtr;\n } else if (layout === 'column' && directionality === 'rtl') {\n this.styleCache = layoutGapCacheColumnRtl;\n } else if (layout === 'column' && directionality !== 'rtl') {\n this.styleCache = layoutGapCacheColumnLtr;\n }\n this.addStyles(value, {directionality, items, layout});\n }\n }\n\n /** We need to override clearStyles because in most cases mru isn't populated */\n protected clearStyles() {\n const gridMode = Object.keys(this.mru).length > 0;\n const childrenStyle = gridMode ? 'padding' :\n getMarginType(this.directionality.value, this.layout);\n\n // If there are styles on the parent remove them\n if (gridMode) {\n super.clearStyles();\n }\n\n // Then remove the children styles too\n this.styleUtils.applyStyleToElements({[childrenStyle]: ''}, this.childrenNodes);\n }\n\n /** Determine if an element will show or hide based on current activation */\n protected willDisplay(source: HTMLElement): boolean {\n const value = this.marshal.getValue(source, 'show-hide');\n return value === true ||\n (value === undefined && this.styleUtils.lookupStyle(source, 'display') !== 'none');\n }\n\n protected buildChildObservable(): void {\n this.zone.runOutsideAngular(() => {\n if (typeof MutationObserver !== 'undefined') {\n this.observer = new MutationObserver((mutations: MutationRecord[]) => {\n const validatedChanges = (it: MutationRecord): boolean => {\n return (it.addedNodes && it.addedNodes.length > 0) ||\n (it.removedNodes && it.removedNodes.length > 0);\n };\n\n // update gap styles only for child 'added' or 'removed' events\n if (mutations.some(validatedChanges)) {\n this.observerSubject.next();\n }\n });\n this.observer.observe(this.nativeElement, {childList: true});\n }\n });\n }\n\n protected observer?: MutationObserver;\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutGapDirective extends LayoutGapDirective {\n protected inputs = inputs;\n}\n\nconst layoutGapCacheRowRtl: Map = new Map();\nconst layoutGapCacheColumnRtl: Map = new Map();\nconst layoutGapCacheRowLtr: Map = new Map();\nconst layoutGapCacheColumnLtr: Map = new Map();\n\nconst GRID_SPECIFIER = ' grid';\n\nfunction buildGridPadding(value: string, directionality: string): StyleDefinition {\n let paddingTop = '0px', paddingRight = '0px', paddingBottom = value, paddingLeft = '0px';\n\n if (directionality === 'rtl') {\n paddingLeft = value;\n } else {\n paddingRight = value;\n }\n\n return {'padding': `${paddingTop} ${paddingRight} ${paddingBottom} ${paddingLeft}`};\n}\n\nfunction buildGridMargin(value: string, directionality: string): StyleDefinition {\n let marginTop = '0px', marginRight = '0px', marginBottom = '-' + value, marginLeft = '0px';\n\n if (directionality === 'rtl') {\n marginLeft = '-' + value;\n } else {\n marginRight = '-' + value;\n }\n\n return {'margin': `${marginTop} ${marginRight} ${marginBottom} ${marginLeft}`};\n}\n\nfunction getMarginType(directionality: string, layout: string) {\n switch (layout) {\n case 'column':\n return 'margin-bottom';\n case 'column-reverse':\n return 'margin-top';\n case 'row':\n return directionality === 'rtl' ? 'margin-left' : 'margin-right';\n case 'row-reverse':\n return directionality === 'rtl' ? 'margin-right' : 'margin-left';\n default :\n return directionality === 'rtl' ? 'margin-left' : 'margin-right';\n }\n}\n\nfunction buildGapCSS(gapValue: string,\n parent: {directionality: string, layout: string}): StyleDefinition {\n const key = getMarginType(parent.directionality, parent.layout);\n const margins: {[key: string]: string | null} = {...CLEAR_MARGIN_CSS};\n margins[key] = gapValue;\n return margins;\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 {Directive, ElementRef, OnChanges, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\n\nimport {buildLayoutCSS} from '../../utils/layout-validator';\n\n@Injectable({providedIn: 'root'})\nexport class LayoutStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return buildLayoutCSS(input);\n }\n}\n\nconst inputs = [\n 'fxLayout', 'fxLayout.xs', 'fxLayout.sm', 'fxLayout.md',\n 'fxLayout.lg', 'fxLayout.xl', 'fxLayout.lt-sm', 'fxLayout.lt-md',\n 'fxLayout.lt-lg', 'fxLayout.lt-xl', 'fxLayout.gt-xs', 'fxLayout.gt-sm',\n 'fxLayout.gt-md', 'fxLayout.gt-lg'\n];\nconst selector = `\n [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],\n [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md],\n [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm],\n [fxLayout.gt-md], [fxLayout.gt-lg]\n`;\n\n/**\n * 'layout' flexbox styling directive\n * Defines the positioning flow direction for the child elements: row or column\n * Optional values: column or row (default)\n * @see https://css-tricks.com/almanac/properties/f/flex-direction/\n *\n */\nexport class LayoutDirective extends BaseDirective2 implements OnChanges {\n\n protected DIRECTIVE_KEY = 'layout';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: LayoutStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = layoutCache;\n}\n\n@Directive({selector, inputs})\nexport class DefaultLayoutDirective extends LayoutDirective {\n protected inputs = inputs;\n}\n\nconst layoutCache: Map = new Map();\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='' 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 : 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"],"names":["selector","inputs","tslib_1.__extends","tslib_1.__assign"],"mappings":"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"} \ No newline at end of file diff --git a/esm5/grid.es5.js b/esm5/grid.es5.js index 14f7e895f..42a823da2 100644 --- a/esm5/grid.es5.js +++ b/esm5/grid.es5.js @@ -6,13 +6,13 @@ * found in the LICENSE file at https://angular.io/license */ import { __extends } from 'tslib'; -import { Directive, ElementRef, Injectable, Optional, NgModule, Input, defineInjectable } from '@angular/core'; +import { Directive, ElementRef, Injectable, Optional, NgModule, Input, ɵɵdefineInjectable } from '@angular/core'; import { MediaMarshaller, BaseDirective2, StyleBuilder, StyleUtils, CoreModule } from '@angular/flex-layout/core'; import { coerceBooleanProperty } from '@angular/cdk/coercion'; /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var ROW_DEFAULT = 'stretch'; @@ -37,15 +37,12 @@ var GridAlignStyleBuilder = /** @class */ (function (_super) { GridAlignStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ GridAlignStyleBuilder.ngInjectableDef = defineInjectable({ factory: function GridAlignStyleBuilder_Factory() { return new GridAlignStyleBuilder(); }, token: GridAlignStyleBuilder, providedIn: "root" }); + /** @nocollapse */ GridAlignStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function GridAlignStyleBuilder_Factory() { return new GridAlignStyleBuilder(); }, token: GridAlignStyleBuilder, providedIn: "root" }); return GridAlignStyleBuilder; }(StyleBuilder)); var GridAlignDirective = /** @class */ (function (_super) { __extends(GridAlignDirective, _super); - function GridAlignDirective(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + function GridAlignDirective(elementRef, styleBuilder, styler, marshal) { var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; _this.elementRef = elementRef; _this.styleBuilder = styleBuilder; @@ -146,7 +143,7 @@ function buildCss(align) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DEFAULT_MAIN = 'start'; @@ -173,15 +170,12 @@ var GridAlignColumnsStyleBuilder = /** @class */ (function (_super) { GridAlignColumnsStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ GridAlignColumnsStyleBuilder.ngInjectableDef = defineInjectable({ factory: function GridAlignColumnsStyleBuilder_Factory() { return new GridAlignColumnsStyleBuilder(); }, token: GridAlignColumnsStyleBuilder, providedIn: "root" }); + /** @nocollapse */ GridAlignColumnsStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function GridAlignColumnsStyleBuilder_Factory() { return new GridAlignColumnsStyleBuilder(); }, token: GridAlignColumnsStyleBuilder, providedIn: "root" }); return GridAlignColumnsStyleBuilder; }(StyleBuilder)); var GridAlignColumnsDirective = /** @class */ (function (_super) { __extends(GridAlignColumnsDirective, _super); - function GridAlignColumnsDirective(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + function GridAlignColumnsDirective(elementRef, styleBuilder, styler, marshal) { var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; _this.elementRef = elementRef; _this.styleBuilder = styleBuilder; @@ -208,11 +202,20 @@ var GridAlignColumnsDirective = /** @class */ (function (_super) { // ********************************************* // Protected methods // ********************************************* + // ********************************************* + // Protected methods + // ********************************************* /** + * @protected * @param {?} value * @return {?} */ - GridAlignColumnsDirective.prototype.updateWithValue = /** + GridAlignColumnsDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected * @param {?} value * @return {?} */ @@ -316,7 +319,6 @@ function buildCss$1(align, inline) { css['align-items'] = 'stretch'; break; default: // 'stretch' - // 'stretch' css['align-items'] = DEFAULT_CROSS; // default cross axis break; } @@ -326,7 +328,7 @@ function buildCss$1(align, inline) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DEFAULT_MAIN$1 = 'start'; @@ -353,15 +355,12 @@ var GridAlignRowsStyleBuilder = /** @class */ (function (_super) { GridAlignRowsStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ GridAlignRowsStyleBuilder.ngInjectableDef = defineInjectable({ factory: function GridAlignRowsStyleBuilder_Factory() { return new GridAlignRowsStyleBuilder(); }, token: GridAlignRowsStyleBuilder, providedIn: "root" }); + /** @nocollapse */ GridAlignRowsStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function GridAlignRowsStyleBuilder_Factory() { return new GridAlignRowsStyleBuilder(); }, token: GridAlignRowsStyleBuilder, providedIn: "root" }); return GridAlignRowsStyleBuilder; }(StyleBuilder)); var GridAlignRowsDirective = /** @class */ (function (_super) { __extends(GridAlignRowsDirective, _super); - function GridAlignRowsDirective(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + function GridAlignRowsDirective(elementRef, styleBuilder, styler, marshal) { var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; _this.elementRef = elementRef; _this.styleBuilder = styleBuilder; @@ -388,11 +387,20 @@ var GridAlignRowsDirective = /** @class */ (function (_super) { // ********************************************* // Protected methods // ********************************************* + // ********************************************* + // Protected methods + // ********************************************* /** + * @protected * @param {?} value * @return {?} */ - GridAlignRowsDirective.prototype.updateWithValue = /** + GridAlignRowsDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected * @param {?} value * @return {?} */ @@ -478,7 +486,6 @@ function buildCss$2(align, inline) { css['justify-items'] = crossAxis; break; default: // 'stretch' - // 'stretch' css['justify-items'] = DEFAULT_CROSS$1; // default cross axis break; } @@ -488,7 +495,7 @@ function buildCss$2(align, inline) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DEFAULT_VALUE = 'auto'; @@ -511,15 +518,12 @@ var GridAreaStyleBuilder = /** @class */ (function (_super) { GridAreaStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ GridAreaStyleBuilder.ngInjectableDef = defineInjectable({ factory: function GridAreaStyleBuilder_Factory() { return new GridAreaStyleBuilder(); }, token: GridAreaStyleBuilder, providedIn: "root" }); + /** @nocollapse */ GridAreaStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function GridAreaStyleBuilder_Factory() { return new GridAreaStyleBuilder(); }, token: GridAreaStyleBuilder, providedIn: "root" }); return GridAreaStyleBuilder; }(StyleBuilder)); var GridAreaDirective = /** @class */ (function (_super) { __extends(GridAreaDirective, _super); - function GridAreaDirective(elRef, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + function GridAreaDirective(elRef, styleUtils, styleBuilder, marshal) { var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; _this.elRef = elRef; _this.styleUtils = styleUtils; @@ -570,7 +574,7 @@ var DefaultGridAreaDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DEFAULT_VALUE$1 = 'none'; @@ -593,7 +597,11 @@ var GridAreasStyleBuiler = /** @class */ (function (_super) { */ function (input, parent) { /** @type {?} */ - var areas = (input || DEFAULT_VALUE$1).split(DELIMETER).map(function (v) { return "\"" + v.trim() + "\""; }); + var areas = (input || DEFAULT_VALUE$1).split(DELIMETER).map((/** + * @param {?} v + * @return {?} + */ + function (v) { return "\"" + v.trim() + "\""; })); return { 'display': parent.inline ? 'inline-grid' : 'grid', 'grid-template-areas': areas.join(' ') @@ -602,15 +610,12 @@ var GridAreasStyleBuiler = /** @class */ (function (_super) { GridAreasStyleBuiler.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ GridAreasStyleBuiler.ngInjectableDef = defineInjectable({ factory: function GridAreasStyleBuiler_Factory() { return new GridAreasStyleBuiler(); }, token: GridAreasStyleBuiler, providedIn: "root" }); + /** @nocollapse */ GridAreasStyleBuiler.ngInjectableDef = ɵɵdefineInjectable({ factory: function GridAreasStyleBuiler_Factory() { return new GridAreasStyleBuiler(); }, token: GridAreasStyleBuiler, providedIn: "root" }); return GridAreasStyleBuiler; }(StyleBuilder)); var GridAreasDirective = /** @class */ (function (_super) { __extends(GridAreasDirective, _super); - function GridAreasDirective(elRef, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + function GridAreasDirective(elRef, styleUtils, styleBuilder, marshal) { var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; _this.elRef = elRef; _this.styleUtils = styleUtils; @@ -637,11 +642,20 @@ var GridAreasDirective = /** @class */ (function (_super) { // ********************************************* // Protected methods // ********************************************* + // ********************************************* + // Protected methods + // ********************************************* /** + * @protected * @param {?} value * @return {?} */ - GridAreasDirective.prototype.updateWithValue = /** + GridAreasDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected * @param {?} value * @return {?} */ @@ -694,7 +708,7 @@ var DefaultGridAreasDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DEFAULT_VALUE$2 = 'initial'; @@ -727,15 +741,12 @@ var GridAutoStyleBuilder = /** @class */ (function (_super) { GridAutoStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ GridAutoStyleBuilder.ngInjectableDef = defineInjectable({ factory: function GridAutoStyleBuilder_Factory() { return new GridAutoStyleBuilder(); }, token: GridAutoStyleBuilder, providedIn: "root" }); + /** @nocollapse */ GridAutoStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function GridAutoStyleBuilder_Factory() { return new GridAutoStyleBuilder(); }, token: GridAutoStyleBuilder, providedIn: "root" }); return GridAutoStyleBuilder; }(StyleBuilder)); var GridAutoDirective = /** @class */ (function (_super) { __extends(GridAutoDirective, _super); - function GridAutoDirective(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + function GridAutoDirective(elementRef, styleBuilder, styler, marshal) { var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; _this.elementRef = elementRef; _this.styleBuilder = styleBuilder; @@ -762,11 +773,20 @@ var GridAutoDirective = /** @class */ (function (_super) { // ********************************************* // Protected methods // ********************************************* + // ********************************************* + // Protected methods + // ********************************************* /** + * @protected * @param {?} value * @return {?} */ - GridAutoDirective.prototype.updateWithValue = /** + GridAutoDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected * @param {?} value * @return {?} */ @@ -819,7 +839,7 @@ var DefaultGridAutoDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DEFAULT_VALUE$3 = 'auto'; @@ -842,15 +862,12 @@ var GridColumnStyleBuilder = /** @class */ (function (_super) { GridColumnStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ GridColumnStyleBuilder.ngInjectableDef = defineInjectable({ factory: function GridColumnStyleBuilder_Factory() { return new GridColumnStyleBuilder(); }, token: GridColumnStyleBuilder, providedIn: "root" }); + /** @nocollapse */ GridColumnStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function GridColumnStyleBuilder_Factory() { return new GridColumnStyleBuilder(); }, token: GridColumnStyleBuilder, providedIn: "root" }); return GridColumnStyleBuilder; }(StyleBuilder)); var GridColumnDirective = /** @class */ (function (_super) { __extends(GridColumnDirective, _super); - function GridColumnDirective(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + function GridColumnDirective(elementRef, styleBuilder, styler, marshal) { var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; _this.elementRef = elementRef; _this.styleBuilder = styleBuilder; @@ -901,7 +918,7 @@ var DefaultGridColumnDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DEFAULT_VALUE$4 = 'none'; @@ -944,15 +961,12 @@ var GridColumnsStyleBuilder = /** @class */ (function (_super) { GridColumnsStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ GridColumnsStyleBuilder.ngInjectableDef = defineInjectable({ factory: function GridColumnsStyleBuilder_Factory() { return new GridColumnsStyleBuilder(); }, token: GridColumnsStyleBuilder, providedIn: "root" }); + /** @nocollapse */ GridColumnsStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function GridColumnsStyleBuilder_Factory() { return new GridColumnsStyleBuilder(); }, token: GridColumnsStyleBuilder, providedIn: "root" }); return GridColumnsStyleBuilder; }(StyleBuilder)); var GridColumnsDirective = /** @class */ (function (_super) { __extends(GridColumnsDirective, _super); - function GridColumnsDirective(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + function GridColumnsDirective(elementRef, styleBuilder, styler, marshal) { var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; _this.elementRef = elementRef; _this.styleBuilder = styleBuilder; @@ -979,11 +993,20 @@ var GridColumnsDirective = /** @class */ (function (_super) { // ********************************************* // Protected methods // ********************************************* + // ********************************************* + // Protected methods + // ********************************************* /** + * @protected * @param {?} value * @return {?} */ - GridColumnsDirective.prototype.updateWithValue = /** + GridColumnsDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected * @param {?} value * @return {?} */ @@ -1037,7 +1060,7 @@ var DefaultGridColumnsDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DEFAULT_VALUE$5 = '0'; @@ -1065,15 +1088,12 @@ var GridGapStyleBuilder = /** @class */ (function (_super) { GridGapStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ GridGapStyleBuilder.ngInjectableDef = defineInjectable({ factory: function GridGapStyleBuilder_Factory() { return new GridGapStyleBuilder(); }, token: GridGapStyleBuilder, providedIn: "root" }); + /** @nocollapse */ GridGapStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function GridGapStyleBuilder_Factory() { return new GridGapStyleBuilder(); }, token: GridGapStyleBuilder, providedIn: "root" }); return GridGapStyleBuilder; }(StyleBuilder)); var GridGapDirective = /** @class */ (function (_super) { __extends(GridGapDirective, _super); - function GridGapDirective(elRef, styleUtils, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, marshal) { + function GridGapDirective(elRef, styleUtils, styleBuilder, marshal) { var _this = _super.call(this, elRef, styleBuilder, styleUtils, marshal) || this; _this.elRef = elRef; _this.styleUtils = styleUtils; @@ -1100,11 +1120,20 @@ var GridGapDirective = /** @class */ (function (_super) { // ********************************************* // Protected methods // ********************************************* + // ********************************************* + // Protected methods + // ********************************************* /** + * @protected * @param {?} value * @return {?} */ - GridGapDirective.prototype.updateWithValue = /** + GridGapDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected * @param {?} value * @return {?} */ @@ -1158,7 +1187,7 @@ var DefaultGridGapDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DEFAULT_VALUE$6 = 'auto'; @@ -1181,15 +1210,12 @@ var GridRowStyleBuilder = /** @class */ (function (_super) { GridRowStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ GridRowStyleBuilder.ngInjectableDef = defineInjectable({ factory: function GridRowStyleBuilder_Factory() { return new GridRowStyleBuilder(); }, token: GridRowStyleBuilder, providedIn: "root" }); + /** @nocollapse */ GridRowStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function GridRowStyleBuilder_Factory() { return new GridRowStyleBuilder(); }, token: GridRowStyleBuilder, providedIn: "root" }); return GridRowStyleBuilder; }(StyleBuilder)); var GridRowDirective = /** @class */ (function (_super) { __extends(GridRowDirective, _super); - function GridRowDirective(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + function GridRowDirective(elementRef, styleBuilder, styler, marshal) { var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; _this.elementRef = elementRef; _this.styleBuilder = styleBuilder; @@ -1240,7 +1266,7 @@ var DefaultGridRowDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var DEFAULT_VALUE$7 = 'none'; @@ -1283,15 +1309,12 @@ var GridRowsStyleBuilder = /** @class */ (function (_super) { GridRowsStyleBuilder.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; - /** @nocollapse */ GridRowsStyleBuilder.ngInjectableDef = defineInjectable({ factory: function GridRowsStyleBuilder_Factory() { return new GridRowsStyleBuilder(); }, token: GridRowsStyleBuilder, providedIn: "root" }); + /** @nocollapse */ GridRowsStyleBuilder.ngInjectableDef = ɵɵdefineInjectable({ factory: function GridRowsStyleBuilder_Factory() { return new GridRowsStyleBuilder(); }, token: GridRowsStyleBuilder, providedIn: "root" }); return GridRowsStyleBuilder; }(StyleBuilder)); var GridRowsDirective = /** @class */ (function (_super) { __extends(GridRowsDirective, _super); - function GridRowsDirective(elementRef, - // NOTE: not actually optional, but we need to force DI without a - // constructor call - styleBuilder, styler, marshal) { + function GridRowsDirective(elementRef, styleBuilder, styler, marshal) { var _this = _super.call(this, elementRef, styleBuilder, styler, marshal) || this; _this.elementRef = elementRef; _this.styleBuilder = styleBuilder; @@ -1318,11 +1341,20 @@ var GridRowsDirective = /** @class */ (function (_super) { // ********************************************* // Protected methods // ********************************************* + // ********************************************* + // Protected methods + // ********************************************* /** + * @protected * @param {?} value * @return {?} */ - GridRowsDirective.prototype.updateWithValue = /** + GridRowsDirective.prototype.updateWithValue = + // ********************************************* + // Protected methods + // ********************************************* + /** + * @protected * @param {?} value * @return {?} */ @@ -1376,7 +1408,7 @@ var DefaultGridRowsDirective = /** @class */ (function (_super) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var ALL_DIRECTIVES = [ @@ -1412,13 +1444,13 @@ var GridModule = /** @class */ (function () { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -export { GridModule, DefaultGridAlignColumnsDirective as ɵf, GridAlignColumnsDirective as ɵe, GridAlignColumnsStyleBuilder as ɵd, DefaultGridAlignRowsDirective as ɵi, GridAlignRowsDirective as ɵh, GridAlignRowsStyleBuilder as ɵg, DefaultGridAreaDirective as ɵl, GridAreaDirective as ɵk, GridAreaStyleBuilder as ɵj, DefaultGridAreasDirective as ɵo, GridAreasDirective as ɵn, GridAreasStyleBuiler as ɵm, DefaultGridAutoDirective as ɵr, GridAutoDirective as ɵq, GridAutoStyleBuilder as ɵp, DefaultGridColumnDirective as ɵu, GridColumnDirective as ɵt, GridColumnStyleBuilder as ɵs, DefaultGridColumnsDirective as ɵx, GridColumnsDirective as ɵw, GridColumnsStyleBuilder as ɵv, DefaultGridGapDirective as ɵba, GridGapDirective as ɵz, GridGapStyleBuilder as ɵy, DefaultGridAlignDirective as ɵc, GridAlignDirective as ɵb, GridAlignStyleBuilder as ɵa, DefaultGridRowDirective as ɵbd, GridRowDirective as ɵbc, GridRowStyleBuilder as ɵbb, DefaultGridRowsDirective as ɵbg, GridRowsDirective as ɵbf, GridRowsStyleBuilder as ɵbe }; +export { GridModule, DefaultGridAlignColumnsDirective as ɵf2, GridAlignColumnsDirective as ɵe2, GridAlignColumnsStyleBuilder as ɵd2, DefaultGridAlignRowsDirective as ɵi2, GridAlignRowsDirective as ɵh2, GridAlignRowsStyleBuilder as ɵg2, DefaultGridAreaDirective as ɵl2, GridAreaDirective as ɵk2, GridAreaStyleBuilder as ɵj2, DefaultGridAreasDirective as ɵo2, GridAreasDirective as ɵn2, GridAreasStyleBuiler as ɵm2, DefaultGridAutoDirective as ɵr2, GridAutoDirective as ɵq2, GridAutoStyleBuilder as ɵp2, DefaultGridColumnDirective as ɵu2, GridColumnDirective as ɵt2, GridColumnStyleBuilder as ɵs2, DefaultGridColumnsDirective as ɵx2, GridColumnsDirective as ɵw2, GridColumnsStyleBuilder as ɵv2, DefaultGridGapDirective as ɵba2, GridGapDirective as ɵz2, GridGapStyleBuilder as ɵy2, DefaultGridAlignDirective as ɵc2, GridAlignDirective as ɵb2, GridAlignStyleBuilder as ɵa2, DefaultGridRowDirective as ɵbd2, GridRowDirective as ɵbc2, GridRowStyleBuilder as ɵbb2, DefaultGridRowsDirective as ɵbg2, GridRowsDirective as ɵbf2, GridRowsStyleBuilder as ɵbe2 }; //# sourceMappingURL=grid.es5.js.map diff --git a/esm5/grid.es5.js.map b/esm5/grid.es5.js.map index 3298c334d..a87ebdd8d 100644 --- a/esm5/grid.es5.js.map +++ b/esm5/grid.es5.js.map @@ -1 +1 @@ -{"version":3,"file":"grid.es5.js","sources":["../../../src/lib/grid/module.ts","../../../src/lib/grid/rows/rows.ts","../../../src/lib/grid/row/row.ts","../../../src/lib/grid/gap/gap.ts","../../../src/lib/grid/columns/columns.ts","../../../src/lib/grid/column/column.ts","../../../src/lib/grid/auto/auto.ts","../../../src/lib/grid/areas/areas.ts","../../../src/lib/grid/area/area.ts","../../../src/lib/grid/align-rows/align-rows.ts","../../../src/lib/grid/align-columns/align-columns.ts","../../../src/lib/grid/grid-align/grid-align.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {NgModule} from '@angular/core';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultGridAlignDirective} from './grid-align/grid-align';\nimport {DefaultGridAlignColumnsDirective} from './align-columns/align-columns';\nimport {DefaultGridAlignRowsDirective} from './align-rows/align-rows';\nimport {DefaultGridAreaDirective} from './area/area';\nimport {DefaultGridAreasDirective} from './areas/areas';\nimport {DefaultGridAutoDirective} from './auto/auto';\nimport {DefaultGridColumnDirective} from './column/column';\nimport {DefaultGridColumnsDirective} from './columns/columns';\nimport {DefaultGridGapDirective} from './gap/gap';\nimport {DefaultGridRowDirective} from './row/row';\nimport {DefaultGridRowsDirective} from './rows/rows';\n\n\nconst ALL_DIRECTIVES = [\n DefaultGridAlignDirective,\n DefaultGridAlignColumnsDirective,\n DefaultGridAlignRowsDirective,\n DefaultGridAreaDirective,\n DefaultGridAreasDirective,\n DefaultGridAutoDirective,\n DefaultGridColumnDirective,\n DefaultGridColumnsDirective,\n DefaultGridGapDirective,\n DefaultGridRowDirective,\n DefaultGridRowsDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the CSS Grid API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class GridModule {\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 {Directive, ElementRef, Input, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst AUTO_SPECIFIER = '!';\n\nexport interface GridRowsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridRowsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridRowsParent) {\n input = input || DEFAULT_VALUE;\n let auto = false;\n if (input.endsWith(AUTO_SPECIFIER)) {\n input = input.substring(0, input.indexOf(AUTO_SPECIFIER));\n auto = true;\n }\n\n const css = {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-rows': '',\n 'grid-template-rows': '',\n };\n const key = (auto ? 'grid-auto-rows' : 'grid-template-rows');\n css[key] = input;\n\n return css;\n }\n}\n\nexport class GridRowsDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-rows';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridRowsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? rowsInlineCache : rowsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst rowsCache: Map = new Map();\nconst rowsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdRows',\n 'gdRows.xs', 'gdRows.sm', 'gdRows.md', 'gdRows.lg', 'gdRows.xl',\n 'gdRows.lt-sm', 'gdRows.lt-md', 'gdRows.lt-lg', 'gdRows.lt-xl',\n 'gdRows.gt-xs', 'gdRows.gt-sm', 'gdRows.gt-md', 'gdRows.gt-lg'\n];\n\nconst selector = `\n [gdRows],\n [gdRows.xs], [gdRows.sm], [gdRows.md], [gdRows.lg], [gdRows.xl],\n [gdRows.lt-sm], [gdRows.lt-md], [gdRows.lt-lg], [gdRows.lt-xl],\n [gdRows.gt-xs], [gdRows.gt-sm], [gdRows.gt-md], [gdRows.gt-lg]\n`;\n\n/**\n * 'grid-template-rows' CSS Grid styling directive\n * Configures the sizing for the rows in the grid\n * Syntax: [auto]\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13\n */\n@Directive({selector, inputs})\nexport class DefaultGridRowsDirective extends GridRowsDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridRowStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-row': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridRowDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-row';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridRowStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = rowCache;\n}\n\nconst rowCache: Map = new Map();\n\nconst inputs = [\n 'gdRow',\n 'gdRow.xs', 'gdRow.sm', 'gdRow.md', 'gdRow.lg', 'gdRow.xl',\n 'gdRow.lt-sm', 'gdRow.lt-md', 'gdRow.lt-lg', 'gdRow.lt-xl',\n 'gdRow.gt-xs', 'gdRow.gt-sm', 'gdRow.gt-md', 'gdRow.gt-lg'\n];\n\nconst selector = `\n [gdRow],\n [gdRow.xs], [gdRow.sm], [gdRow.md], [gdRow.lg], [gdRow.xl],\n [gdRow.lt-sm], [gdRow.lt-md], [gdRow.lt-lg], [gdRow.lt-xl],\n [gdRow.gt-xs], [gdRow.gt-sm], [gdRow.gt-md], [gdRow.gt-lg]\n`;\n\n/**\n * 'grid-row' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26\n */\n@Directive({selector, inputs})\nexport class DefaultGridRowDirective extends GridRowDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = '0';\n\nexport interface GridGapParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridGapStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridGapParent) {\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-gap': input || DEFAULT_VALUE\n };\n }\n}\n\nexport class GridGapDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-gap';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridGapStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? gapInlineCache : gapCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst gapCache: Map = new Map();\nconst gapInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdGap',\n 'gdGap.xs', 'gdGap.sm', 'gdGap.md', 'gdGap.lg', 'gdGap.xl',\n 'gdGap.lt-sm', 'gdGap.lt-md', 'gdGap.lt-lg', 'gdGap.lt-xl',\n 'gdGap.gt-xs', 'gdGap.gt-sm', 'gdGap.gt-md', 'gdGap.gt-lg'\n];\n\nconst selector = `\n [gdGap],\n [gdGap.xs], [gdGap.sm], [gdGap.md], [gdGap.lg], [gdGap.xl],\n [gdGap.lt-sm], [gdGap.lt-md], [gdGap.lt-lg], [gdGap.lt-xl],\n [gdGap.gt-xs], [gdGap.gt-sm], [gdGap.gt-md], [gdGap.gt-lg]\n`;\n\n/**\n * 'grid-gap' CSS Grid styling directive\n * Configures the gap between items in the grid\n * Syntax: []\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-17\n */\n@Directive({selector, inputs})\nexport class DefaultGridGapDirective extends GridGapDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst AUTO_SPECIFIER = '!';\n\nexport interface GridColumnsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridColumnsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridColumnsParent) {\n input = input || DEFAULT_VALUE;\n let auto = false;\n if (input.endsWith(AUTO_SPECIFIER)) {\n input = input.substring(0, input.indexOf(AUTO_SPECIFIER));\n auto = true;\n }\n\n const css = {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-columns': '',\n 'grid-template-columns': '',\n };\n const key = (auto ? 'grid-auto-columns' : 'grid-template-columns');\n css[key] = input;\n\n return css;\n }\n}\n\nexport class GridColumnsDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-columns';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridColumnsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? columnsInlineCache : columnsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst columnsCache: Map = new Map();\nconst columnsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdColumns',\n 'gdColumns.xs', 'gdColumns.sm', 'gdColumns.md', 'gdColumns.lg', 'gdColumns.xl',\n 'gdColumns.lt-sm', 'gdColumns.lt-md', 'gdColumns.lt-lg', 'gdColumns.lt-xl',\n 'gdColumns.gt-xs', 'gdColumns.gt-sm', 'gdColumns.gt-md', 'gdColumns.gt-lg'\n];\n\nconst selector = `\n [gdColumns],\n [gdColumns.xs], [gdColumns.sm], [gdColumns.md], [gdColumns.lg], [gdColumns.xl],\n [gdColumns.lt-sm], [gdColumns.lt-md], [gdColumns.lt-lg], [gdColumns.lt-xl],\n [gdColumns.gt-xs], [gdColumns.gt-sm], [gdColumns.gt-md], [gdColumns.gt-lg]\n`;\n\n/**\n * 'grid-template-columns' CSS Grid styling directive\n * Configures the sizing for the columns in the grid\n * Syntax: [auto]\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13\n */\n@Directive({selector, inputs})\nexport class DefaultGridColumnsDirective extends GridColumnsDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridColumnStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-column': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridColumnDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-column';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridColumnStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = columnCache;\n}\n\nconst columnCache: Map = new Map();\n\nconst inputs = [\n 'gdColumn',\n 'gdColumn.xs', 'gdColumn.sm', 'gdColumn.md', 'gdColumn.lg', 'gdColumn.xl',\n 'gdColumn.lt-sm', 'gdColumn.lt-md', 'gdColumn.lt-lg', 'gdColumn.lt-xl',\n 'gdColumn.gt-xs', 'gdColumn.gt-sm', 'gdColumn.gt-md', 'gdColumn.gt-lg'\n];\n\nconst selector = `\n [gdColumn],\n [gdColumn.xs], [gdColumn.sm], [gdColumn.md], [gdColumn.lg], [gdColumn.xl],\n [gdColumn.lt-sm], [gdColumn.lt-md], [gdColumn.lt-lg], [gdColumn.lt-xl],\n [gdColumn.gt-xs], [gdColumn.gt-sm], [gdColumn.gt-md], [gdColumn.gt-lg]\n`;\n\n/**\n * 'grid-column' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26\n */\n@Directive({selector, inputs})\nexport class DefaultGridColumnDirective extends GridColumnDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n MediaMarshaller,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'initial';\n\nexport interface GridAutoParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAutoStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAutoParent) {\n let [direction, dense] = (input || DEFAULT_VALUE).split(' ');\n if (direction !== 'column' && direction !== 'row' && direction !== 'dense') {\n direction = 'row';\n }\n\n dense = (dense === 'dense' && direction !== 'dense') ? ' dense' : '';\n\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-flow': direction + dense\n };\n }\n}\n\nexport class GridAutoDirective extends BaseDirective2 {\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n protected DIRECTIVE_KEY = 'grid-auto';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAutoStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? autoInlineCache : autoCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst autoCache: Map = new Map();\nconst autoInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAuto',\n 'gdAuto.xs', 'gdAuto.sm', 'gdAuto.md', 'gdAuto.lg', 'gdAuto.xl',\n 'gdAuto.lt-sm', 'gdAuto.lt-md', 'gdAuto.lt-lg', 'gdAuto.lt-xl',\n 'gdAuto.gt-xs', 'gdAuto.gt-sm', 'gdAuto.gt-md', 'gdAuto.gt-lg'\n];\nconst selector = `\n [gdAuto],\n [gdAuto.xs], [gdAuto.sm], [gdAuto.md], [gdAuto.lg], [gdAuto.xl],\n [gdAuto.lt-sm], [gdAuto.lt-md], [gdAuto.lt-lg], [gdAuto.lt-xl],\n [gdAuto.gt-xs], [gdAuto.gt-sm], [gdAuto.gt-md], [gdAuto.gt-lg]\n`;\n\n/**\n * 'grid-auto-flow' CSS Grid styling directive\n * Configures the auto placement algorithm for the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-23\n */\n@Directive({selector, inputs})\nexport class DefaultGridAutoDirective extends GridAutoDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n MediaMarshaller,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst DELIMETER = '|';\n\nexport interface GridAreasParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAreasStyleBuiler extends StyleBuilder {\n buildStyles(input: string, parent: GridAreasParent) {\n const areas = (input || DEFAULT_VALUE).split(DELIMETER).map(v => `\"${v.trim()}\"`);\n\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-template-areas': areas.join(' ')\n };\n }\n}\n\nexport class GridAreasDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-areas';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAreasStyleBuiler,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? areasInlineCache : areasCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst areasCache: Map = new Map();\nconst areasInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAreas',\n 'gdAreas.xs', 'gdAreas.sm', 'gdAreas.md', 'gdAreas.lg', 'gdAreas.xl',\n 'gdAreas.lt-sm', 'gdAreas.lt-md', 'gdAreas.lt-lg', 'gdAreas.lt-xl',\n 'gdAreas.gt-xs', 'gdAreas.gt-sm', 'gdAreas.gt-md', 'gdAreas.gt-lg'\n];\n\nconst selector = `\n [gdAreas],\n [gdAreas.xs], [gdAreas.sm], [gdAreas.md], [gdAreas.lg], [gdAreas.xl],\n [gdAreas.lt-sm], [gdAreas.lt-md], [gdAreas.lt-lg], [gdAreas.lt-xl],\n [gdAreas.gt-xs], [gdAreas.gt-sm], [gdAreas.gt-md], [gdAreas.gt-lg]\n`;\n\n/**\n * 'grid-template-areas' CSS Grid styling directive\n * Configures the names of elements within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-14\n */\n@Directive({selector, inputs})\nexport class DefaultGridAreasDirective extends GridAreasDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridAreaStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-area': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridAreaDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-area';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAreaStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = gridAreaCache;\n}\n\nconst gridAreaCache: Map = new Map();\n\nconst inputs = [\n 'gdArea',\n 'gdArea.xs', 'gdArea.sm', 'gdArea.md', 'gdArea.lg', 'gdArea.xl',\n 'gdArea.lt-sm', 'gdArea.lt-md', 'gdArea.lt-lg', 'gdArea.lt-xl',\n 'gdArea.gt-xs', 'gdArea.gt-sm', 'gdArea.gt-md', 'gdArea.gt-lg'\n];\nconst selector = `\n [gdArea],\n [gdArea.xs], [gdArea.sm], [gdArea.md], [gdArea.lg], [gdArea.xl],\n [gdArea.lt-sm], [gdArea.lt-md], [gdArea.lt-lg], [gdArea.lt-xl],\n [gdArea.gt-xs], [gdArea.gt-sm], [gdArea.gt-md], [gdArea.gt-lg]\n`;\n\n/**\n * 'grid-area' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-27\n */\n@Directive({selector, inputs})\nexport class DefaultGridAreaDirective extends GridAreaDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_MAIN = 'start';\nconst DEFAULT_CROSS = 'stretch';\n\nexport interface GridAlignRowsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignRowsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAlignRowsParent) {\n return buildCss(input || `${DEFAULT_MAIN} ${DEFAULT_CROSS}`, parent.inline);\n }\n}\n\nexport class GridAlignRowsDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align-rows';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignRowsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? alignRowsInlineCache : alignRowsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst alignRowsCache: Map = new Map();\nconst alignRowsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAlignRows',\n 'gdAlignRows.xs', 'gdAlignRows.sm', 'gdAlignRows.md',\n 'gdAlignRows.lg', 'gdAlignRows.xl', 'gdAlignRows.lt-sm',\n 'gdAlignRows.lt-md', 'gdAlignRows.lt-lg', 'gdAlignRows.lt-xl',\n 'gdAlignRows.gt-xs', 'gdAlignRows.gt-sm', 'gdAlignRows.gt-md',\n 'gdAlignRows.gt-lg'\n];\nconst selector = `\n [gdAlignRows],\n [gdAlignRows.xs], [gdAlignRows.sm], [gdAlignRows.md],\n [gdAlignRows.lg], [gdAlignRows.xl], [gdAlignRows.lt-sm],\n [gdAlignRows.lt-md], [gdAlignRows.lt-lg], [gdAlignRows.lt-xl],\n [gdAlignRows.gt-xs], [gdAlignRows.gt-sm], [gdAlignRows.gt-md],\n [gdAlignRows.gt-lg]\n`;\n\n/**\n * 'row alignment' CSS Grid styling directive\n * Configures the alignment in the row direction\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-18\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-20\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignRowsDirective extends GridAlignRowsDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string, inline: boolean): StyleDefinition {\n const css: {[key: string]: string} = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n case 'space-around':\n case 'space-between':\n case 'space-evenly':\n case 'end':\n case 'start':\n case 'stretch':\n css['justify-content'] = mainAxis;\n break;\n default:\n css['justify-content'] = DEFAULT_MAIN; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'center':\n case 'end':\n case 'stretch':\n css['justify-items'] = crossAxis;\n break;\n default : // 'stretch'\n css['justify-items'] = DEFAULT_CROSS; // default cross axis\n break;\n }\n\n css['display'] = inline ? 'inline-grid' : 'grid';\n\n return css;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_MAIN = 'start';\nconst DEFAULT_CROSS = 'stretch';\n\nexport interface GridAlignColumnsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignColumnsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAlignColumnsParent) {\n return buildCss(input || `${DEFAULT_MAIN} ${DEFAULT_CROSS}`, parent.inline);\n }\n}\n\nexport class GridAlignColumnsDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align-columns';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignColumnsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? alignColumnsInlineCache : alignColumnsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst alignColumnsCache: Map = new Map();\nconst alignColumnsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAlignColumns',\n 'gdAlignColumns.xs', 'gdAlignColumns.sm', 'gdAlignColumns.md',\n 'gdAlignColumns.lg', 'gdAlignColumns.xl', 'gdAlignColumns.lt-sm',\n 'gdAlignColumns.lt-md', 'gdAlignColumns.lt-lg', 'gdAlignColumns.lt-xl',\n 'gdAlignColumns.gt-xs', 'gdAlignColumns.gt-sm', 'gdAlignColumns.gt-md',\n 'gdAlignColumns.gt-lg'\n];\nconst selector = `\n [gdAlignColumns],\n [gdAlignColumns.xs], [gdAlignColumns.sm], [gdAlignColumns.md],\n [gdAlignColumns.lg], [gdAlignColumns.xl], [gdAlignColumns.lt-sm],\n [gdAlignColumns.lt-md], [gdAlignColumns.lt-lg], [gdAlignColumns.lt-xl],\n [gdAlignColumns.gt-xs], [gdAlignColumns.gt-sm], [gdAlignColumns.gt-md],\n [gdAlignColumns.gt-lg]\n`;\n\n/**\n * 'column alignment' CSS Grid styling directive\n * Configures the alignment in the column direction\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-19\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-21\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignColumnsDirective extends GridAlignColumnsDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string, inline: boolean): StyleDefinition {\n const css: {[key: string]: string} = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['align-content'] = 'center';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['align-content'] = 'space-evenly';\n break;\n case 'end':\n css['align-content'] = 'end';\n break;\n case 'start':\n css['align-content'] = 'start';\n break;\n case 'stretch':\n css['align-content'] = 'stretch';\n break;\n default:\n css['align-content'] = DEFAULT_MAIN; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n css['align-items'] = 'start';\n break;\n case 'center':\n css['align-items'] = 'center';\n break;\n case 'end':\n css['align-items'] = 'end';\n break;\n case 'stretch':\n css['align-items'] = 'stretch';\n break;\n default : // 'stretch'\n css['align-items'] = DEFAULT_CROSS; // default cross axis\n break;\n }\n\n css['display'] = inline ? 'inline-grid' : 'grid';\n\n return css;\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\nconst ROW_DEFAULT = 'stretch';\nconst COL_DEFAULT = 'stretch';\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return buildCss(input || ROW_DEFAULT);\n }\n}\n\nexport class GridAlignDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = alignCache;\n}\n\nconst alignCache: Map = new Map();\n\nconst inputs = [\n 'gdGridAlign',\n 'gdGridAlign.xs', 'gdGridAlign.sm', 'gdGridAlign.md', 'gdGridAlign.lg', 'gdGridAlign.xl',\n 'gdGridAlign.lt-sm', 'gdGridAlign.lt-md', 'gdGridAlign.lt-lg', 'gdGridAlign.lt-xl',\n 'gdGridAlign.gt-xs', 'gdGridAlign.gt-sm', 'gdGridAlign.gt-md', 'gdGridAlign.gt-lg'\n];\n\nconst selector = `\n [gdGridAlign],\n [gdGridAlign.xs], [gdGridAlign.sm], [gdGridAlign.md], [gdGridAlign.lg],[gdGridAlign.xl],\n [gdGridAlign.lt-sm], [gdGridAlign.lt-md], [gdGridAlign.lt-lg], [gdGridAlign.lt-xl],\n [gdGridAlign.gt-xs], [gdGridAlign.gt-sm], [gdGridAlign.gt-md], [gdGridAlign.gt-lg]\n`;\n\n/**\n * 'align' CSS Grid styling directive for grid children\n * Defines positioning of child elements along row and column axis in a grid container\n * Optional values: {row-axis} values or {row-axis column-axis} value pairs\n *\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-justify-self\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-align-self\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignDirective extends GridAlignDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string = '') {\n const css: {[key: string]: string} = {}, [rowAxis, columnAxis] = align.split(' ');\n\n // Row axis\n switch (rowAxis) {\n case 'end':\n css['justify-self'] = 'end';\n break;\n case 'center':\n css['justify-self'] = 'center';\n break;\n case 'stretch':\n css['justify-self'] = 'stretch';\n break;\n case 'start':\n css['justify-self'] = 'start';\n break;\n default:\n css['justify-self'] = ROW_DEFAULT; // default row axis\n break;\n }\n\n // Column axis\n switch (columnAxis) {\n case 'end':\n css['align-self'] = 'end';\n break;\n case 'center':\n css['align-self'] = 'center';\n break;\n case 'stretch':\n css['align-self'] = 'stretch';\n break;\n case 'start':\n css['align-self'] = 'start';\n break;\n default:\n css['align-self'] = COL_DEFAULT; // default column axis\n break;\n }\n\n return css;\n}\n"],"names":["selector","inputs","tslib_1.__extends","AUTO_SPECIFIER","DEFAULT_VALUE","DEFAULT_CROSS","DEFAULT_MAIN","buildCss"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"grid.es5.js","sources":["../../../src/lib/grid/module.ts","../../../src/lib/grid/rows/rows.ts","../../../src/lib/grid/row/row.ts","../../../src/lib/grid/gap/gap.ts","../../../src/lib/grid/columns/columns.ts","../../../src/lib/grid/column/column.ts","../../../src/lib/grid/auto/auto.ts","../../../src/lib/grid/areas/areas.ts","../../../src/lib/grid/area/area.ts","../../../src/lib/grid/align-rows/align-rows.ts","../../../src/lib/grid/align-columns/align-columns.ts","../../../src/lib/grid/grid-align/grid-align.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {NgModule} from '@angular/core';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultGridAlignDirective} from './grid-align/grid-align';\nimport {DefaultGridAlignColumnsDirective} from './align-columns/align-columns';\nimport {DefaultGridAlignRowsDirective} from './align-rows/align-rows';\nimport {DefaultGridAreaDirective} from './area/area';\nimport {DefaultGridAreasDirective} from './areas/areas';\nimport {DefaultGridAutoDirective} from './auto/auto';\nimport {DefaultGridColumnDirective} from './column/column';\nimport {DefaultGridColumnsDirective} from './columns/columns';\nimport {DefaultGridGapDirective} from './gap/gap';\nimport {DefaultGridRowDirective} from './row/row';\nimport {DefaultGridRowsDirective} from './rows/rows';\n\n\nconst ALL_DIRECTIVES = [\n DefaultGridAlignDirective,\n DefaultGridAlignColumnsDirective,\n DefaultGridAlignRowsDirective,\n DefaultGridAreaDirective,\n DefaultGridAreasDirective,\n DefaultGridAutoDirective,\n DefaultGridColumnDirective,\n DefaultGridColumnsDirective,\n DefaultGridGapDirective,\n DefaultGridRowDirective,\n DefaultGridRowsDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the CSS Grid API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class GridModule {\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 {Directive, ElementRef, Input, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst AUTO_SPECIFIER = '!';\n\nexport interface GridRowsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridRowsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridRowsParent) {\n input = input || DEFAULT_VALUE;\n let auto = false;\n if (input.endsWith(AUTO_SPECIFIER)) {\n input = input.substring(0, input.indexOf(AUTO_SPECIFIER));\n auto = true;\n }\n\n const css = {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-rows': '',\n 'grid-template-rows': '',\n };\n const key = (auto ? 'grid-auto-rows' : 'grid-template-rows');\n css[key] = input;\n\n return css;\n }\n}\n\nexport class GridRowsDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-rows';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridRowsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? rowsInlineCache : rowsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst rowsCache: Map = new Map();\nconst rowsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdRows',\n 'gdRows.xs', 'gdRows.sm', 'gdRows.md', 'gdRows.lg', 'gdRows.xl',\n 'gdRows.lt-sm', 'gdRows.lt-md', 'gdRows.lt-lg', 'gdRows.lt-xl',\n 'gdRows.gt-xs', 'gdRows.gt-sm', 'gdRows.gt-md', 'gdRows.gt-lg'\n];\n\nconst selector = `\n [gdRows],\n [gdRows.xs], [gdRows.sm], [gdRows.md], [gdRows.lg], [gdRows.xl],\n [gdRows.lt-sm], [gdRows.lt-md], [gdRows.lt-lg], [gdRows.lt-xl],\n [gdRows.gt-xs], [gdRows.gt-sm], [gdRows.gt-md], [gdRows.gt-lg]\n`;\n\n/**\n * 'grid-template-rows' CSS Grid styling directive\n * Configures the sizing for the rows in the grid\n * Syntax: [auto]\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13\n */\n@Directive({selector, inputs})\nexport class DefaultGridRowsDirective extends GridRowsDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridRowStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-row': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridRowDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-row';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridRowStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = rowCache;\n}\n\nconst rowCache: Map = new Map();\n\nconst inputs = [\n 'gdRow',\n 'gdRow.xs', 'gdRow.sm', 'gdRow.md', 'gdRow.lg', 'gdRow.xl',\n 'gdRow.lt-sm', 'gdRow.lt-md', 'gdRow.lt-lg', 'gdRow.lt-xl',\n 'gdRow.gt-xs', 'gdRow.gt-sm', 'gdRow.gt-md', 'gdRow.gt-lg'\n];\n\nconst selector = `\n [gdRow],\n [gdRow.xs], [gdRow.sm], [gdRow.md], [gdRow.lg], [gdRow.xl],\n [gdRow.lt-sm], [gdRow.lt-md], [gdRow.lt-lg], [gdRow.lt-xl],\n [gdRow.gt-xs], [gdRow.gt-sm], [gdRow.gt-md], [gdRow.gt-lg]\n`;\n\n/**\n * 'grid-row' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26\n */\n@Directive({selector, inputs})\nexport class DefaultGridRowDirective extends GridRowDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = '0';\n\nexport interface GridGapParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridGapStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridGapParent) {\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-gap': input || DEFAULT_VALUE\n };\n }\n}\n\nexport class GridGapDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-gap';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridGapStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? gapInlineCache : gapCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst gapCache: Map = new Map();\nconst gapInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdGap',\n 'gdGap.xs', 'gdGap.sm', 'gdGap.md', 'gdGap.lg', 'gdGap.xl',\n 'gdGap.lt-sm', 'gdGap.lt-md', 'gdGap.lt-lg', 'gdGap.lt-xl',\n 'gdGap.gt-xs', 'gdGap.gt-sm', 'gdGap.gt-md', 'gdGap.gt-lg'\n];\n\nconst selector = `\n [gdGap],\n [gdGap.xs], [gdGap.sm], [gdGap.md], [gdGap.lg], [gdGap.xl],\n [gdGap.lt-sm], [gdGap.lt-md], [gdGap.lt-lg], [gdGap.lt-xl],\n [gdGap.gt-xs], [gdGap.gt-sm], [gdGap.gt-md], [gdGap.gt-lg]\n`;\n\n/**\n * 'grid-gap' CSS Grid styling directive\n * Configures the gap between items in the grid\n * Syntax: []\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-17\n */\n@Directive({selector, inputs})\nexport class DefaultGridGapDirective extends GridGapDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst AUTO_SPECIFIER = '!';\n\nexport interface GridColumnsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridColumnsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridColumnsParent) {\n input = input || DEFAULT_VALUE;\n let auto = false;\n if (input.endsWith(AUTO_SPECIFIER)) {\n input = input.substring(0, input.indexOf(AUTO_SPECIFIER));\n auto = true;\n }\n\n const css = {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-columns': '',\n 'grid-template-columns': '',\n };\n const key = (auto ? 'grid-auto-columns' : 'grid-template-columns');\n css[key] = input;\n\n return css;\n }\n}\n\nexport class GridColumnsDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-columns';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridColumnsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? columnsInlineCache : columnsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst columnsCache: Map = new Map();\nconst columnsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdColumns',\n 'gdColumns.xs', 'gdColumns.sm', 'gdColumns.md', 'gdColumns.lg', 'gdColumns.xl',\n 'gdColumns.lt-sm', 'gdColumns.lt-md', 'gdColumns.lt-lg', 'gdColumns.lt-xl',\n 'gdColumns.gt-xs', 'gdColumns.gt-sm', 'gdColumns.gt-md', 'gdColumns.gt-lg'\n];\n\nconst selector = `\n [gdColumns],\n [gdColumns.xs], [gdColumns.sm], [gdColumns.md], [gdColumns.lg], [gdColumns.xl],\n [gdColumns.lt-sm], [gdColumns.lt-md], [gdColumns.lt-lg], [gdColumns.lt-xl],\n [gdColumns.gt-xs], [gdColumns.gt-sm], [gdColumns.gt-md], [gdColumns.gt-lg]\n`;\n\n/**\n * 'grid-template-columns' CSS Grid styling directive\n * Configures the sizing for the columns in the grid\n * Syntax: [auto]\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-13\n */\n@Directive({selector, inputs})\nexport class DefaultGridColumnsDirective extends GridColumnsDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridColumnStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-column': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridColumnDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'grid-column';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridColumnStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = columnCache;\n}\n\nconst columnCache: Map = new Map();\n\nconst inputs = [\n 'gdColumn',\n 'gdColumn.xs', 'gdColumn.sm', 'gdColumn.md', 'gdColumn.lg', 'gdColumn.xl',\n 'gdColumn.lt-sm', 'gdColumn.lt-md', 'gdColumn.lt-lg', 'gdColumn.lt-xl',\n 'gdColumn.gt-xs', 'gdColumn.gt-sm', 'gdColumn.gt-md', 'gdColumn.gt-lg'\n];\n\nconst selector = `\n [gdColumn],\n [gdColumn.xs], [gdColumn.sm], [gdColumn.md], [gdColumn.lg], [gdColumn.xl],\n [gdColumn.lt-sm], [gdColumn.lt-md], [gdColumn.lt-lg], [gdColumn.lt-xl],\n [gdColumn.gt-xs], [gdColumn.gt-sm], [gdColumn.gt-md], [gdColumn.gt-lg]\n`;\n\n/**\n * 'grid-column' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-26\n */\n@Directive({selector, inputs})\nexport class DefaultGridColumnDirective extends GridColumnDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Input, Optional, Injectable} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n MediaMarshaller,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'initial';\n\nexport interface GridAutoParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAutoStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAutoParent) {\n let [direction, dense] = (input || DEFAULT_VALUE).split(' ');\n if (direction !== 'column' && direction !== 'row' && direction !== 'dense') {\n direction = 'row';\n }\n\n dense = (dense === 'dense' && direction !== 'dense') ? ' dense' : '';\n\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-auto-flow': direction + dense\n };\n }\n}\n\nexport class GridAutoDirective extends BaseDirective2 {\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n protected DIRECTIVE_KEY = 'grid-auto';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAutoStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? autoInlineCache : autoCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst autoCache: Map = new Map();\nconst autoInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAuto',\n 'gdAuto.xs', 'gdAuto.sm', 'gdAuto.md', 'gdAuto.lg', 'gdAuto.xl',\n 'gdAuto.lt-sm', 'gdAuto.lt-md', 'gdAuto.lt-lg', 'gdAuto.lt-xl',\n 'gdAuto.gt-xs', 'gdAuto.gt-sm', 'gdAuto.gt-md', 'gdAuto.gt-lg'\n];\nconst selector = `\n [gdAuto],\n [gdAuto.xs], [gdAuto.sm], [gdAuto.md], [gdAuto.lg], [gdAuto.xl],\n [gdAuto.lt-sm], [gdAuto.lt-md], [gdAuto.lt-lg], [gdAuto.lt-xl],\n [gdAuto.gt-xs], [gdAuto.gt-sm], [gdAuto.gt-md], [gdAuto.gt-lg]\n`;\n\n/**\n * 'grid-auto-flow' CSS Grid styling directive\n * Configures the auto placement algorithm for the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-23\n */\n@Directive({selector, inputs})\nexport class DefaultGridAutoDirective extends GridAutoDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n MediaMarshaller,\n StyleDefinition,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_VALUE = 'none';\nconst DELIMETER = '|';\n\nexport interface GridAreasParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAreasStyleBuiler extends StyleBuilder {\n buildStyles(input: string, parent: GridAreasParent) {\n const areas = (input || DEFAULT_VALUE).split(DELIMETER).map(v => `\"${v.trim()}\"`);\n\n return {\n 'display': parent.inline ? 'inline-grid' : 'grid',\n 'grid-template-areas': areas.join(' ')\n };\n }\n}\n\nexport class GridAreasDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-areas';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAreasStyleBuiler,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? areasInlineCache : areasCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst areasCache: Map = new Map();\nconst areasInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAreas',\n 'gdAreas.xs', 'gdAreas.sm', 'gdAreas.md', 'gdAreas.lg', 'gdAreas.xl',\n 'gdAreas.lt-sm', 'gdAreas.lt-md', 'gdAreas.lt-lg', 'gdAreas.lt-xl',\n 'gdAreas.gt-xs', 'gdAreas.gt-sm', 'gdAreas.gt-md', 'gdAreas.gt-lg'\n];\n\nconst selector = `\n [gdAreas],\n [gdAreas.xs], [gdAreas.sm], [gdAreas.md], [gdAreas.lg], [gdAreas.xl],\n [gdAreas.lt-sm], [gdAreas.lt-md], [gdAreas.lt-lg], [gdAreas.lt-xl],\n [gdAreas.gt-xs], [gdAreas.gt-sm], [gdAreas.gt-md], [gdAreas.gt-lg]\n`;\n\n/**\n * 'grid-template-areas' CSS Grid styling directive\n * Configures the names of elements within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-14\n */\n@Directive({selector, inputs})\nexport class DefaultGridAreasDirective extends GridAreasDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n StyleBuilder,\n StyleDefinition,\n} from '@angular/flex-layout/core';\n\nconst DEFAULT_VALUE = 'auto';\n\n@Injectable({providedIn: 'root'})\nexport class GridAreaStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return {'grid-area': input || DEFAULT_VALUE};\n }\n}\n\nexport class GridAreaDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-area';\n\n constructor(protected elRef: ElementRef,\n protected styleUtils: StyleUtils,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAreaStyleBuilder,\n protected marshal: MediaMarshaller) {\n super(elRef, styleBuilder, styleUtils, marshal);\n this.init();\n }\n\n protected styleCache = gridAreaCache;\n}\n\nconst gridAreaCache: Map = new Map();\n\nconst inputs = [\n 'gdArea',\n 'gdArea.xs', 'gdArea.sm', 'gdArea.md', 'gdArea.lg', 'gdArea.xl',\n 'gdArea.lt-sm', 'gdArea.lt-md', 'gdArea.lt-lg', 'gdArea.lt-xl',\n 'gdArea.gt-xs', 'gdArea.gt-sm', 'gdArea.gt-md', 'gdArea.gt-lg'\n];\nconst selector = `\n [gdArea],\n [gdArea.xs], [gdArea.sm], [gdArea.md], [gdArea.lg], [gdArea.xl],\n [gdArea.lt-sm], [gdArea.lt-md], [gdArea.lt-lg], [gdArea.lt-xl],\n [gdArea.gt-xs], [gdArea.gt-sm], [gdArea.gt-md], [gdArea.gt-lg]\n`;\n\n/**\n * 'grid-area' CSS Grid styling directive\n * Configures the name or position of an element within the grid\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-27\n */\n@Directive({selector, inputs})\nexport class DefaultGridAreaDirective extends GridAreaDirective {\n protected inputs = inputs;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_MAIN = 'start';\nconst DEFAULT_CROSS = 'stretch';\n\nexport interface GridAlignRowsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignRowsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAlignRowsParent) {\n return buildCss(input || `${DEFAULT_MAIN} ${DEFAULT_CROSS}`, parent.inline);\n }\n}\n\nexport class GridAlignRowsDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align-rows';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignRowsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? alignRowsInlineCache : alignRowsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst alignRowsCache: Map = new Map();\nconst alignRowsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAlignRows',\n 'gdAlignRows.xs', 'gdAlignRows.sm', 'gdAlignRows.md',\n 'gdAlignRows.lg', 'gdAlignRows.xl', 'gdAlignRows.lt-sm',\n 'gdAlignRows.lt-md', 'gdAlignRows.lt-lg', 'gdAlignRows.lt-xl',\n 'gdAlignRows.gt-xs', 'gdAlignRows.gt-sm', 'gdAlignRows.gt-md',\n 'gdAlignRows.gt-lg'\n];\nconst selector = `\n [gdAlignRows],\n [gdAlignRows.xs], [gdAlignRows.sm], [gdAlignRows.md],\n [gdAlignRows.lg], [gdAlignRows.xl], [gdAlignRows.lt-sm],\n [gdAlignRows.lt-md], [gdAlignRows.lt-lg], [gdAlignRows.lt-xl],\n [gdAlignRows.gt-xs], [gdAlignRows.gt-sm], [gdAlignRows.gt-md],\n [gdAlignRows.gt-lg]\n`;\n\n/**\n * 'row alignment' CSS Grid styling directive\n * Configures the alignment in the row direction\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-18\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-20\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignRowsDirective extends GridAlignRowsDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string, inline: boolean): StyleDefinition {\n const css: {[key: string]: string} = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n case 'space-around':\n case 'space-between':\n case 'space-evenly':\n case 'end':\n case 'start':\n case 'stretch':\n css['justify-content'] = mainAxis;\n break;\n default:\n css['justify-content'] = DEFAULT_MAIN; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n case 'center':\n case 'end':\n case 'stretch':\n css['justify-items'] = crossAxis;\n break;\n default : // 'stretch'\n css['justify-items'] = DEFAULT_CROSS; // default cross axis\n break;\n }\n\n css['display'] = inline ? 'inline-grid' : 'grid';\n\n return css;\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 {Directive, ElementRef, Injectable, Input, Optional} from '@angular/core';\nimport {\n BaseDirective2,\n StyleUtils,\n StyleBuilder,\n StyleDefinition,\n MediaMarshaller,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst DEFAULT_MAIN = 'start';\nconst DEFAULT_CROSS = 'stretch';\n\nexport interface GridAlignColumnsParent {\n inline: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignColumnsStyleBuilder extends StyleBuilder {\n buildStyles(input: string, parent: GridAlignColumnsParent) {\n return buildCss(input || `${DEFAULT_MAIN} ${DEFAULT_CROSS}`, parent.inline);\n }\n}\n\nexport class GridAlignColumnsDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align-columns';\n\n @Input('gdInline')\n get inline(): boolean { return this._inline; }\n set inline(val: boolean) { this._inline = coerceBooleanProperty(val); }\n protected _inline = false;\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignColumnsStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n protected updateWithValue(value: string) {\n this.styleCache = this.inline ? alignColumnsInlineCache : alignColumnsCache;\n this.addStyles(value, {inline: this.inline});\n }\n}\n\nconst alignColumnsCache: Map = new Map();\nconst alignColumnsInlineCache: Map = new Map();\n\nconst inputs = [\n 'gdAlignColumns',\n 'gdAlignColumns.xs', 'gdAlignColumns.sm', 'gdAlignColumns.md',\n 'gdAlignColumns.lg', 'gdAlignColumns.xl', 'gdAlignColumns.lt-sm',\n 'gdAlignColumns.lt-md', 'gdAlignColumns.lt-lg', 'gdAlignColumns.lt-xl',\n 'gdAlignColumns.gt-xs', 'gdAlignColumns.gt-sm', 'gdAlignColumns.gt-md',\n 'gdAlignColumns.gt-lg'\n];\nconst selector = `\n [gdAlignColumns],\n [gdAlignColumns.xs], [gdAlignColumns.sm], [gdAlignColumns.md],\n [gdAlignColumns.lg], [gdAlignColumns.xl], [gdAlignColumns.lt-sm],\n [gdAlignColumns.lt-md], [gdAlignColumns.lt-lg], [gdAlignColumns.lt-xl],\n [gdAlignColumns.gt-xs], [gdAlignColumns.gt-sm], [gdAlignColumns.gt-md],\n [gdAlignColumns.gt-lg]\n`;\n\n/**\n * 'column alignment' CSS Grid styling directive\n * Configures the alignment in the column direction\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-19\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#article-header-id-21\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignColumnsDirective extends GridAlignColumnsDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string, inline: boolean): StyleDefinition {\n const css: {[key: string]: string} = {}, [mainAxis, crossAxis] = align.split(' ');\n\n // Main axis\n switch (mainAxis) {\n case 'center':\n css['align-content'] = 'center';\n break;\n case 'space-around':\n css['align-content'] = 'space-around';\n break;\n case 'space-between':\n css['align-content'] = 'space-between';\n break;\n case 'space-evenly':\n css['align-content'] = 'space-evenly';\n break;\n case 'end':\n css['align-content'] = 'end';\n break;\n case 'start':\n css['align-content'] = 'start';\n break;\n case 'stretch':\n css['align-content'] = 'stretch';\n break;\n default:\n css['align-content'] = DEFAULT_MAIN; // default main axis\n break;\n }\n\n // Cross-axis\n switch (crossAxis) {\n case 'start':\n css['align-items'] = 'start';\n break;\n case 'center':\n css['align-items'] = 'center';\n break;\n case 'end':\n css['align-items'] = 'end';\n break;\n case 'stretch':\n css['align-items'] = 'stretch';\n break;\n default : // 'stretch'\n css['align-items'] = DEFAULT_CROSS; // default cross axis\n break;\n }\n\n css['display'] = inline ? 'inline-grid' : 'grid';\n\n return css;\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 {Directive, ElementRef, Injectable, Optional} from '@angular/core';\nimport {\n MediaMarshaller,\n BaseDirective2,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\nconst ROW_DEFAULT = 'stretch';\nconst COL_DEFAULT = 'stretch';\n\n@Injectable({providedIn: 'root'})\nexport class GridAlignStyleBuilder extends StyleBuilder {\n buildStyles(input: string) {\n return buildCss(input || ROW_DEFAULT);\n }\n}\n\nexport class GridAlignDirective extends BaseDirective2 {\n\n protected DIRECTIVE_KEY = 'grid-align';\n\n constructor(protected elementRef: ElementRef,\n // NOTE: not actually optional, but we need to force DI without a\n // constructor call\n @Optional() protected styleBuilder: GridAlignStyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n }\n\n protected styleCache = alignCache;\n}\n\nconst alignCache: Map = new Map();\n\nconst inputs = [\n 'gdGridAlign',\n 'gdGridAlign.xs', 'gdGridAlign.sm', 'gdGridAlign.md', 'gdGridAlign.lg', 'gdGridAlign.xl',\n 'gdGridAlign.lt-sm', 'gdGridAlign.lt-md', 'gdGridAlign.lt-lg', 'gdGridAlign.lt-xl',\n 'gdGridAlign.gt-xs', 'gdGridAlign.gt-sm', 'gdGridAlign.gt-md', 'gdGridAlign.gt-lg'\n];\n\nconst selector = `\n [gdGridAlign],\n [gdGridAlign.xs], [gdGridAlign.sm], [gdGridAlign.md], [gdGridAlign.lg],[gdGridAlign.xl],\n [gdGridAlign.lt-sm], [gdGridAlign.lt-md], [gdGridAlign.lt-lg], [gdGridAlign.lt-xl],\n [gdGridAlign.gt-xs], [gdGridAlign.gt-sm], [gdGridAlign.gt-md], [gdGridAlign.gt-lg]\n`;\n\n/**\n * 'align' CSS Grid styling directive for grid children\n * Defines positioning of child elements along row and column axis in a grid container\n * Optional values: {row-axis} values or {row-axis column-axis} value pairs\n *\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-justify-self\n * @see https://css-tricks.com/snippets/css/complete-guide-grid/#prop-align-self\n */\n@Directive({selector, inputs})\nexport class DefaultGridAlignDirective extends GridAlignDirective {\n protected inputs = inputs;\n}\n\nfunction buildCss(align: string = '') {\n const css: {[key: string]: string} = {}, [rowAxis, columnAxis] = align.split(' ');\n\n // Row axis\n switch (rowAxis) {\n case 'end':\n css['justify-self'] = 'end';\n break;\n case 'center':\n css['justify-self'] = 'center';\n break;\n case 'stretch':\n css['justify-self'] = 'stretch';\n break;\n case 'start':\n css['justify-self'] = 'start';\n break;\n default:\n css['justify-self'] = ROW_DEFAULT; // default row axis\n break;\n }\n\n // Column axis\n switch (columnAxis) {\n case 'end':\n css['align-self'] = 'end';\n break;\n case 'center':\n css['align-self'] = 'center';\n break;\n case 'stretch':\n css['align-self'] = 'stretch';\n break;\n case 'start':\n css['align-self'] = 'start';\n break;\n default:\n css['align-self'] = COL_DEFAULT; // default column axis\n break;\n }\n\n return css;\n}\n"],"names":["selector","inputs","tslib_1.__extends","AUTO_SPECIFIER","DEFAULT_VALUE","DEFAULT_CROSS","DEFAULT_MAIN","buildCss"],"mappings":"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"} \ No newline at end of file diff --git a/esm5/server.es5.js b/esm5/server.es5.js index 835b84f90..793e698ea 100644 --- a/esm5/server.es5.js +++ b/esm5/server.es5.js @@ -5,77 +5,389 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ +import { __extends } from 'tslib'; import { DOCUMENT } from '@angular/common'; +import { Inject, Injectable, NgZone, PLATFORM_ID, NgModule } from '@angular/core'; +import { ɵMatchMedia, BREAKPOINTS, CLASS_NAME, SERVER_TOKEN, StylesheetMap, sortAscendingPriority, LAYOUT_CONFIG } from '@angular/flex-layout/core'; import { BEFORE_APP_SERIALIZED } from '@angular/platform-server'; -import { BREAKPOINTS, CLASS_NAME, SERVER_TOKEN, MatchMedia, StylesheetMap, ServerMatchMedia, prioritySort } from '@angular/flex-layout/core'; -import { NgModule } from '@angular/core'; /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc + */ +/** + * Special server-only class to simulate a MediaQueryList and + * - supports manual activation to simulate mediaQuery matching + * - manages listeners + */ +var /** + * Special server-only class to simulate a MediaQueryList and + * - supports manual activation to simulate mediaQuery matching + * - manages listeners + */ +ServerMediaQueryList = /** @class */ (function () { + function ServerMediaQueryList(_mediaQuery) { + this._mediaQuery = _mediaQuery; + this._isActive = false; + this._listeners = []; + this.onchange = null; + } + Object.defineProperty(ServerMediaQueryList.prototype, "matches", { + get: /** + * @return {?} + */ + function () { + return this._isActive; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(ServerMediaQueryList.prototype, "media", { + get: /** + * @return {?} + */ + function () { + return this._mediaQuery; + }, + enumerable: true, + configurable: true + }); + /** + * Destroy the current list by deactivating the + * listeners and clearing the internal list + */ + /** + * Destroy the current list by deactivating the + * listeners and clearing the internal list + * @return {?} + */ + ServerMediaQueryList.prototype.destroy = /** + * Destroy the current list by deactivating the + * listeners and clearing the internal list + * @return {?} + */ + function () { + this.deactivate(); + this._listeners = []; + }; + /** Notify all listeners that 'matches === TRUE' */ + /** + * Notify all listeners that 'matches === TRUE' + * @return {?} + */ + ServerMediaQueryList.prototype.activate = /** + * Notify all listeners that 'matches === TRUE' + * @return {?} + */ + function () { + var _this = this; + if (!this._isActive) { + this._isActive = true; + this._listeners.forEach((/** + * @param {?} callback + * @return {?} + */ + function (callback) { + /** @type {?} */ + var cb = (/** @type {?} */ (callback)); + cb.call(null, _this); + })); + } + return this; + }; + /** Notify all listeners that 'matches === false' */ + /** + * Notify all listeners that 'matches === false' + * @return {?} + */ + ServerMediaQueryList.prototype.deactivate = /** + * Notify all listeners that 'matches === false' + * @return {?} + */ + function () { + var _this = this; + if (this._isActive) { + this._isActive = false; + this._listeners.forEach((/** + * @param {?} callback + * @return {?} + */ + function (callback) { + /** @type {?} */ + var cb = (/** @type {?} */ (callback)); + cb.call(null, _this); + })); + } + return this; + }; + /** Add a listener to our internal list to activate later */ + /** + * Add a listener to our internal list to activate later + * @param {?} listener + * @return {?} + */ + ServerMediaQueryList.prototype.addListener = /** + * Add a listener to our internal list to activate later + * @param {?} listener + * @return {?} + */ + function (listener) { + if (this._listeners.indexOf(listener) === -1) { + this._listeners.push(listener); + } + if (this._isActive) { + /** @type {?} */ + var cb = (/** @type {?} */ (listener)); + cb.call(null, this); + } + }; + /** Don't need to remove listeners in the server environment */ + /** + * Don't need to remove listeners in the server environment + * @param {?} _ + * @return {?} + */ + ServerMediaQueryList.prototype.removeListener = /** + * Don't need to remove listeners in the server environment + * @param {?} _ + * @return {?} + */ + function (_) { + }; + /** + * @param {?} _ + * @param {?} __ + * @param {?=} ___ + * @return {?} + */ + ServerMediaQueryList.prototype.addEventListener = /** + * @param {?} _ + * @param {?} __ + * @param {?=} ___ + * @return {?} + */ + function (_, __, ___) { + }; + /** + * @param {?} _ + * @param {?} __ + * @param {?=} ___ + * @return {?} + */ + ServerMediaQueryList.prototype.removeEventListener = /** + * @param {?} _ + * @param {?} __ + * @param {?=} ___ + * @return {?} + */ + function (_, __, ___) { + }; + /** + * @param {?} _ + * @return {?} + */ + ServerMediaQueryList.prototype.dispatchEvent = /** + * @param {?} _ + * @return {?} + */ + function (_) { + return false; + }; + return ServerMediaQueryList; +}()); +/** + * Special server-only implementation of MatchMedia that uses the above + * ServerMediaQueryList as its internal representation + * + * Also contains methods to activate and deactivate breakpoints + */ +var ServerMatchMedia = /** @class */ (function (_super) { + __extends(ServerMatchMedia, _super); + function ServerMatchMedia(_zone, _platformId, _document) { + var _this = _super.call(this, _zone, _platformId, _document) || this; + _this._zone = _zone; + _this._platformId = _platformId; + _this._document = _document; + return _this; + } + /** Activate the specified breakpoint if we're on the server, no-op otherwise */ + /** + * Activate the specified breakpoint if we're on the server, no-op otherwise + * @param {?} bp + * @return {?} + */ + ServerMatchMedia.prototype.activateBreakpoint = /** + * Activate the specified breakpoint if we're on the server, no-op otherwise + * @param {?} bp + * @return {?} + */ + function (bp) { + /** @type {?} */ + var lookupBreakpoint = (/** @type {?} */ (this.registry.get(bp.mediaQuery))); + if (lookupBreakpoint) { + lookupBreakpoint.activate(); + } + }; + /** Deactivate the specified breakpoint if we're on the server, no-op otherwise */ + /** + * Deactivate the specified breakpoint if we're on the server, no-op otherwise + * @param {?} bp + * @return {?} + */ + ServerMatchMedia.prototype.deactivateBreakpoint = /** + * Deactivate the specified breakpoint if we're on the server, no-op otherwise + * @param {?} bp + * @return {?} + */ + function (bp) { + /** @type {?} */ + var lookupBreakpoint = (/** @type {?} */ (this.registry.get(bp.mediaQuery))); + if (lookupBreakpoint) { + lookupBreakpoint.deactivate(); + } + }; + /** + * Call window.matchMedia() to build a MediaQueryList; which + * supports 0..n listeners for activation/deactivation + */ + /** + * Call window.matchMedia() to build a MediaQueryList; which + * supports 0..n listeners for activation/deactivation + * @protected + * @param {?} query + * @return {?} + */ + ServerMatchMedia.prototype.buildMQL = /** + * Call window.matchMedia() to build a MediaQueryList; which + * supports 0..n listeners for activation/deactivation + * @protected + * @param {?} query + * @return {?} + */ + function (query) { + return new ServerMediaQueryList(query); + }; + ServerMatchMedia.decorators = [ + { type: Injectable }, + ]; + /** @nocollapse */ + ServerMatchMedia.ctorParameters = function () { return [ + { type: NgZone }, + { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }, + { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] } + ]; }; + return ServerMatchMedia; +}(ɵMatchMedia)); + +/** + * @fileoverview added by tsickle + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * Activate all of the registered breakpoints in sequence, and then * retrieve the associated stylings from the virtual stylesheet * @param {?} serverSheet the virtual stylesheet that stores styles for each * element - * @param {?} matchMedia the service to activate/deactivate breakpoints + * @param {?} mediaController the MatchMedia service to activate/deactivate breakpoints * @param {?} breakpoints the registered breakpoints to activate/deactivate + * @param {?} layoutConfig the library config, and specifically the breakpoints to activate * @return {?} */ -function generateStaticFlexLayoutStyles(serverSheet, matchMedia, breakpoints) { +function generateStaticFlexLayoutStyles(serverSheet, mediaController, breakpoints, layoutConfig) { + // Store the custom classes in the following map, that way only + // one class gets allocated per HTMLElement, and each class can + // be referenced in the static media queries /** @type {?} */ var classMap = new Map(); + // Get the initial stylings for all of the directives, + // and initialize the fallback block of stylings /** @type {?} */ var defaultStyles = new Map(serverSheet.stylesheet); /** @type {?} */ var styleText = generateCss(defaultStyles, 'all', classMap); - breakpoints.sort(prioritySort); - breakpoints.reverse(); - breakpoints.forEach(function (bp, i) { + breakpoints.slice().sort(sortAscendingPriority).forEach((/** + * @param {?} bp + * @param {?} i + * @return {?} + */ + function (bp, i) { serverSheet.clearStyles(); - (/** @type {?} */ (matchMedia)).activateBreakpoint(bp); + mediaController.activateBreakpoint(bp); /** @type {?} */ var stylesheet = new Map(serverSheet.stylesheet); if (stylesheet.size > 0) { styleText += generateCss(stylesheet, bp.mediaQuery, classMap); } - (/** @type {?} */ (matchMedia)).deactivateBreakpoint(breakpoints[i]); - }); + mediaController.deactivateBreakpoint(breakpoints[i]); + })); + /** @type {?} */ + var serverBps = layoutConfig.ssrObserveBreakpoints; + if (serverBps) { + serverBps + .reduce((/** + * @param {?} acc + * @param {?} serverBp + * @return {?} + */ + function (acc, serverBp) { + /** @type {?} */ + var foundBp = breakpoints.find((/** + * @param {?} bp + * @return {?} + */ + function (bp) { return serverBp === bp.alias; })); + if (!foundBp) { + console.warn("FlexLayoutServerModule: unknown breakpoint alias \"" + serverBp + "\""); + } + else { + acc.push(foundBp); + } + return acc; + }), []) + .forEach(mediaController.activateBreakpoint); + } return styleText; } /** * Create a style tag populated with the dynamic stylings from Flex * components and attach it to the head of the DOM * @param {?} serverSheet - * @param {?} matchMedia + * @param {?} mediaController * @param {?} _document * @param {?} breakpoints + * @param {?} layoutConfig * @return {?} */ -function FLEX_SSR_SERIALIZER_FACTORY(serverSheet, matchMedia, _document, breakpoints) { - return function () { +function FLEX_SSR_SERIALIZER_FACTORY(serverSheet, mediaController, _document, breakpoints, layoutConfig) { + return (/** + * @return {?} + */ + function () { + // This is the style tag that gets inserted into the head of the DOM, + // populated with the manual media queries /** @type {?} */ var styleTag = _document.createElement('style'); /** @type {?} */ - var styleText = generateStaticFlexLayoutStyles(serverSheet, matchMedia, breakpoints); + var styleText = generateStaticFlexLayoutStyles(serverSheet, mediaController, breakpoints, layoutConfig); styleTag.classList.add(CLASS_NAME + "ssr"); - styleTag.textContent = styleText; /** @type {?} */ - ((_document.head)).appendChild(styleTag); - }; + styleTag.textContent = styleText; + (/** @type {?} */ (_document.head)).appendChild(styleTag); + }); } -/** * +/** * Provider to set static styles on the server - @type {?} */ + * @type {?} + */ var SERVER_PROVIDERS = [ { - provide: /** @type {?} */ (BEFORE_APP_SERIALIZED), + provide: (/** @type {?} */ (BEFORE_APP_SERIALIZED)), useFactory: FLEX_SSR_SERIALIZER_FACTORY, deps: [ StylesheetMap, - MatchMedia, + ɵMatchMedia, DOCUMENT, BREAKPOINTS, + LAYOUT_CONFIG, ], multi: true }, @@ -84,7 +396,7 @@ var SERVER_PROVIDERS = [ useValue: true }, { - provide: MatchMedia, + provide: ɵMatchMedia, useClass: ServerMatchMedia } ]; @@ -105,17 +417,27 @@ var IS_DEBUG_MODE = false; function generateCss(stylesheet, mediaQuery, classMap) { /** @type {?} */ var css = ''; - stylesheet.forEach(function (styles, el) { + stylesheet.forEach((/** + * @param {?} styles + * @param {?} el + * @return {?} + */ + function (styles, el) { /** @type {?} */ var keyVals = ''; /** @type {?} */ var className = getClassName(el, classMap); - styles.forEach(function (v, k) { + styles.forEach((/** + * @param {?} v + * @param {?} k + * @return {?} + */ + function (v, k) { keyVals += v ? format(k + ":" + v + ";") : ''; - }); + })); // Build list of CSS styles; each with a className css += format("." + className + " {", keyVals, '}'); - }); + })); // Group 1 or more styles (each with className) in a specific mediaQuery return format("@media " + mediaQuery + " {", css, '}'); } @@ -132,9 +454,14 @@ function format() { } /** @type {?} */ var result = ''; - list.forEach(function (css, i) { - result += IS_DEBUG_MODE ? formatSegment(css, i != 0) : css; - }); + list.forEach((/** + * @param {?} css + * @param {?} i + * @return {?} + */ + function (css, i) { + result += IS_DEBUG_MODE ? formatSegment(css, i !== 0) : css; + })); return result; } /** @@ -144,7 +471,7 @@ function format() { */ function formatSegment(css, asPrefix) { if (asPrefix === void 0) { asPrefix = true; } - return asPrefix ? '\n' + css : css + '\n'; + return asPrefix ? "\n" + css : css + "\n"; } /** * Get className associated with CSS styling @@ -167,7 +494,7 @@ function getClassName(element, classMap) { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var FlexLayoutServerModule = /** @class */ (function () { function FlexLayoutServerModule() { @@ -182,13 +509,13 @@ var FlexLayoutServerModule = /** @class */ (function () { /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle - * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc + * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ -export { FlexLayoutServerModule, generateStaticFlexLayoutStyles, FLEX_SSR_SERIALIZER_FACTORY, SERVER_PROVIDERS }; +export { FlexLayoutServerModule, generateStaticFlexLayoutStyles, FLEX_SSR_SERIALIZER_FACTORY, SERVER_PROVIDERS, ServerMatchMedia as ɵa1 }; //# sourceMappingURL=server.es5.js.map diff --git a/esm5/server.es5.js.map b/esm5/server.es5.js.map index b3dd66438..a30ec488c 100644 --- a/esm5/server.es5.js.map +++ b/esm5/server.es5.js.map @@ -1 +1 @@ -{"version":3,"file":"server.es5.js","sources":["../../../src/lib/server/module.ts","../../../src/lib/server/server-provider.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {NgModule} from '@angular/core';\n\nimport {SERVER_PROVIDERS} from './server-provider';\n\n@NgModule({\n providers: [SERVER_PROVIDERS]\n})\nexport class FlexLayoutServerModule {}\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 {DOCUMENT} from '@angular/common';\nimport {BEFORE_APP_SERIALIZED} from '@angular/platform-server';\nimport {\n BREAKPOINTS,\n CLASS_NAME,\n SERVER_TOKEN,\n BreakPoint,\n MatchMedia,\n StylesheetMap,\n ServerMatchMedia,\n prioritySort,\n} from '@angular/flex-layout/core';\n\n\n/**\n * Activate all of the registered breakpoints in sequence, and then\n * retrieve the associated stylings from the virtual stylesheet\n * @param serverSheet the virtual stylesheet that stores styles for each\n * element\n * @param matchMedia the service to activate/deactivate breakpoints\n * @param breakpoints the registered breakpoints to activate/deactivate\n */\nexport function generateStaticFlexLayoutStyles(serverSheet: StylesheetMap,\n matchMedia: MatchMedia,\n breakpoints: BreakPoint[]) {\n // Store the custom classes in the following map, that way only\n // one class gets allocated per HTMLElement, and each class can\n // be referenced in the static media queries\n const classMap = new Map();\n\n // Get the initial stylings for all of the directives, and initialize\n // the fallback block of stylings, then reverse the breakpoints list\n // to traverse in the proper order\n const defaultStyles = new Map(serverSheet.stylesheet);\n let styleText = generateCss(defaultStyles, 'all', classMap);\n\n breakpoints.sort(prioritySort);\n breakpoints.reverse();\n breakpoints.forEach((bp, i) => {\n serverSheet.clearStyles();\n (matchMedia as ServerMatchMedia).activateBreakpoint(bp);\n const stylesheet = new Map(serverSheet.stylesheet);\n if (stylesheet.size > 0) {\n styleText += generateCss(stylesheet, bp.mediaQuery, classMap);\n }\n (matchMedia as ServerMatchMedia).deactivateBreakpoint(breakpoints[i]);\n });\n\n return styleText;\n}\n\n/**\n * Create a style tag populated with the dynamic stylings from Flex\n * components and attach it to the head of the DOM\n */\nexport function FLEX_SSR_SERIALIZER_FACTORY(serverSheet: StylesheetMap,\n matchMedia: MatchMedia,\n _document: Document,\n breakpoints: BreakPoint[]) {\n return () => {\n // This is the style tag that gets inserted into the head of the DOM,\n // populated with the manual media queries\n const styleTag = _document.createElement('style');\n const styleText = generateStaticFlexLayoutStyles(serverSheet, matchMedia, breakpoints);\n styleTag.classList.add(`${CLASS_NAME}ssr`);\n styleTag.textContent = styleText;\n _document.head!.appendChild(styleTag);\n };\n}\n\n/**\n * Provider to set static styles on the server\n */\nexport const SERVER_PROVIDERS = [\n {\n provide: void>>BEFORE_APP_SERIALIZED,\n useFactory: FLEX_SSR_SERIALIZER_FACTORY,\n deps: [\n StylesheetMap,\n MatchMedia,\n DOCUMENT,\n BREAKPOINTS,\n ],\n multi: true\n },\n {\n provide: SERVER_TOKEN,\n useValue: true\n },\n {\n provide: MatchMedia,\n useClass: ServerMatchMedia\n }\n];\n\n\nlet nextId = 0;\nconst IS_DEBUG_MODE = false;\n\nexport type StyleSheet = Map>;\nexport type ClassMap = Map;\n\n/**\n * create @media queries based on a virtual stylesheet\n * * Adds a unique class to each element and stores it\n * in a shared classMap for later reuse\n * @param stylesheet the virtual stylesheet that stores styles for each\n * element\n * @param mediaQuery the given @media CSS selector for the current breakpoint\n * @param classMap the map of HTML elements to class names to avoid duplications\n */\nfunction generateCss(stylesheet: StyleSheet, mediaQuery: string, classMap: ClassMap) {\n let css = '';\n stylesheet.forEach((styles, el) => {\n let keyVals = '', className = getClassName(el, classMap);\n\n styles.forEach((v, k) => {\n keyVals += v ? format(`${k}:${v};`) : '';\n });\n\n // Build list of CSS styles; each with a className\n css += format(`.${className} {`, keyVals, '}');\n });\n\n // Group 1 or more styles (each with className) in a specific mediaQuery\n return format(`@media ${mediaQuery} {`, css, '}');\n}\n\n/**\n * For debugging purposes, prefix css segment with linefeed(s) for easy\n * debugging purposes.\n */\nfunction format(...list: string[]): string {\n let result = '';\n list.forEach((css, i) => {\n result += IS_DEBUG_MODE ? formatSegment(css, i != 0) : css;\n });\n return result;\n}\n\nfunction formatSegment(css: string, asPrefix: boolean = true): string {\n return asPrefix ? '\\n' + css : css + '\\n';\n}\n\n/**\n * Get className associated with CSS styling\n * If not found, generate global className and set\n * association.\n */\nfunction getClassName(element: HTMLElement, classMap: Map) {\n let className = classMap.get(element);\n if (!className) {\n className = `${CLASS_NAME}${nextId++}`;\n classMap.set(element, className);\n }\n element.classList.add(className);\n\n return className;\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"server.es5.js","sources":["../../../src/lib/server/module.ts","../../../src/lib/server/server-provider.ts","../../../src/lib/server/server-match-media.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {NgModule} from '@angular/core';\n\nimport {SERVER_PROVIDERS} from './server-provider';\n\n@NgModule({\n providers: [SERVER_PROVIDERS]\n})\nexport class FlexLayoutServerModule {}\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 {DOCUMENT} from '@angular/common';\nimport {BEFORE_APP_SERIALIZED} from '@angular/platform-server';\nimport {\n BREAKPOINTS,\n CLASS_NAME,\n SERVER_TOKEN,\n BreakPoint,\n ɵMatchMedia as MatchMedia,\n StylesheetMap,\n sortAscendingPriority,\n LayoutConfigOptions,\n LAYOUT_CONFIG,\n} from '@angular/flex-layout/core';\n\nimport {ServerMatchMedia} from './server-match-media';\n\n/**\n * Activate all of the registered breakpoints in sequence, and then\n * retrieve the associated stylings from the virtual stylesheet\n * @param serverSheet the virtual stylesheet that stores styles for each\n * element\n * @param mediaController the MatchMedia service to activate/deactivate breakpoints\n * @param breakpoints the registered breakpoints to activate/deactivate\n * @param layoutConfig the library config, and specifically the breakpoints to activate\n */\nexport function generateStaticFlexLayoutStyles(serverSheet: StylesheetMap,\n mediaController: ServerMatchMedia,\n breakpoints: BreakPoint[],\n layoutConfig: LayoutConfigOptions) {\n // Store the custom classes in the following map, that way only\n // one class gets allocated per HTMLElement, and each class can\n // be referenced in the static media queries\n const classMap = new Map();\n\n // Get the initial stylings for all of the directives,\n // and initialize the fallback block of stylings\n const defaultStyles = new Map(serverSheet.stylesheet);\n let styleText = generateCss(defaultStyles, 'all', classMap);\n\n [...breakpoints].sort(sortAscendingPriority).forEach((bp, i) => {\n serverSheet.clearStyles();\n mediaController.activateBreakpoint(bp);\n const stylesheet = new Map(serverSheet.stylesheet);\n if (stylesheet.size > 0) {\n styleText += generateCss(stylesheet, bp.mediaQuery, classMap);\n }\n mediaController.deactivateBreakpoint(breakpoints[i]);\n });\n\n const serverBps = layoutConfig.ssrObserveBreakpoints;\n if (serverBps) {\n serverBps\n .reduce((acc: BreakPoint[], serverBp: string) => {\n const foundBp = breakpoints.find(bp => serverBp === bp.alias);\n if (!foundBp) {\n console.warn(`FlexLayoutServerModule: unknown breakpoint alias \"${serverBp}\"`);\n } else {\n acc.push(foundBp);\n }\n return acc;\n }, [])\n .forEach(mediaController.activateBreakpoint);\n }\n\n return styleText;\n}\n\n/**\n * Create a style tag populated with the dynamic stylings from Flex\n * components and attach it to the head of the DOM\n */\nexport function FLEX_SSR_SERIALIZER_FACTORY(serverSheet: StylesheetMap,\n mediaController: ServerMatchMedia,\n _document: Document,\n breakpoints: BreakPoint[],\n layoutConfig: LayoutConfigOptions) {\n return () => {\n // This is the style tag that gets inserted into the head of the DOM,\n // populated with the manual media queries\n const styleTag = _document.createElement('style');\n const styleText = generateStaticFlexLayoutStyles(serverSheet, mediaController, breakpoints,\n layoutConfig);\n styleTag.classList.add(`${CLASS_NAME}ssr`);\n styleTag.textContent = styleText;\n _document.head!.appendChild(styleTag);\n };\n}\n\n/**\n * Provider to set static styles on the server\n */\nexport const SERVER_PROVIDERS = [\n {\n provide: void>>BEFORE_APP_SERIALIZED,\n useFactory: FLEX_SSR_SERIALIZER_FACTORY,\n deps: [\n StylesheetMap,\n MatchMedia,\n DOCUMENT,\n BREAKPOINTS,\n LAYOUT_CONFIG,\n ],\n multi: true\n },\n {\n provide: SERVER_TOKEN,\n useValue: true\n },\n {\n provide: MatchMedia,\n useClass: ServerMatchMedia\n }\n];\n\n\nlet nextId = 0;\nconst IS_DEBUG_MODE = false;\n\nexport type StyleSheet = Map>;\nexport type ClassMap = Map;\n\n/**\n * create @media queries based on a virtual stylesheet\n * * Adds a unique class to each element and stores it\n * in a shared classMap for later reuse\n * @param stylesheet the virtual stylesheet that stores styles for each\n * element\n * @param mediaQuery the given @media CSS selector for the current breakpoint\n * @param classMap the map of HTML elements to class names to avoid duplications\n */\nfunction generateCss(stylesheet: StyleSheet, mediaQuery: string, classMap: ClassMap) {\n let css = '';\n stylesheet.forEach((styles, el) => {\n let keyVals = '';\n let className = getClassName(el, classMap);\n\n styles.forEach((v, k) => {\n keyVals += v ? format(`${k}:${v};`) : '';\n });\n\n // Build list of CSS styles; each with a className\n css += format(`.${className} {`, keyVals, '}');\n });\n\n // Group 1 or more styles (each with className) in a specific mediaQuery\n return format(`@media ${mediaQuery} {`, css, '}');\n}\n\n/**\n * For debugging purposes, prefix css segment with linefeed(s) for easy\n * debugging purposes.\n */\nfunction format(...list: string[]): string {\n let result = '';\n list.forEach((css, i) => {\n result += IS_DEBUG_MODE ? formatSegment(css, i !== 0) : css;\n });\n return result;\n}\n\nfunction formatSegment(css: string, asPrefix: boolean = true): string {\n return asPrefix ? `\\n${css}` : `${css}\\n`;\n}\n\n/**\n * Get className associated with CSS styling\n * If not found, generate global className and set\n * association.\n */\nfunction getClassName(element: HTMLElement, classMap: Map) {\n let className = classMap.get(element);\n if (!className) {\n className = `${CLASS_NAME}${nextId++}`;\n classMap.set(element, className);\n }\n element.classList.add(className);\n\n return className;\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 {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable, NgZone, PLATFORM_ID} from '@angular/core';\nimport {BreakPoint, ɵMatchMedia as MatchMedia} from '@angular/flex-layout/core';\n\n/**\n * Special server-only class to simulate a MediaQueryList and\n * - supports manual activation to simulate mediaQuery matching\n * - manages listeners\n */\nexport class ServerMediaQueryList 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 * 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(): ServerMediaQueryList {\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(null, this);\n });\n }\n return this;\n }\n\n /** Notify all listeners that 'matches === false' */\n deactivate(): ServerMediaQueryList {\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(null, this);\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(null, this);\n }\n }\n\n /** Don't need to remove listeners in the server environment */\n removeListener(_: MediaQueryListListener | null) {\n }\n\n addEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | AddEventListenerOptions): void;\n addEventListener(_: string,\n __: EventListenerOrEventListenerObject,\n ___?: boolean | AddEventListenerOptions) {\n }\n\n removeEventListener(_: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | EventListenerOptions): void;\n removeEventListener(_: 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 * Special server-only implementation of MatchMedia that uses the above\n * ServerMediaQueryList as its internal representation\n *\n * Also contains methods to activate and deactivate breakpoints\n */\n@Injectable()\nexport class ServerMatchMedia extends MatchMedia {\n constructor(protected _zone: NgZone,\n @Inject(PLATFORM_ID) protected _platformId: Object,\n @Inject(DOCUMENT) protected _document: any) {\n super(_zone, _platformId, _document);\n }\n\n /** Activate the specified breakpoint if we're on the server, no-op otherwise */\n activateBreakpoint(bp: BreakPoint) {\n const lookupBreakpoint = this.registry.get(bp.mediaQuery) as ServerMediaQueryList;\n if (lookupBreakpoint) {\n lookupBreakpoint.activate();\n }\n }\n\n /** Deactivate the specified breakpoint if we're on the server, no-op otherwise */\n deactivateBreakpoint(bp: BreakPoint) {\n const lookupBreakpoint = this.registry.get(bp.mediaQuery) as ServerMediaQueryList;\n if (lookupBreakpoint) {\n lookupBreakpoint.deactivate();\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): ServerMediaQueryList {\n return new ServerMediaQueryList(query);\n }\n}\n\ntype MediaQueryListListener = ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null;\n"],"names":["MatchMedia","tslib_1.__extends"],"mappings":"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"} \ No newline at end of file diff --git a/extended/typings/class/class.d.ts b/extended/typings/class/class.d.ts index 83d8c5c8e..0003e9a31 100644 --- a/extended/typings/class/class.d.ts +++ b/extended/typings/class/class.d.ts @@ -5,16 +5,14 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -import { DoCheck, ElementRef, IterableDiffers, KeyValueDiffers, Renderer2 } from '@angular/core'; -import { NgClass } from '@angular/common'; +import { DoCheck, ElementRef } from '@angular/core'; +import { NgClass, ɵNgClassImpl, ɵNgClassR2Impl } from '@angular/common'; import { BaseDirective2, StyleUtils, MediaMarshaller } from '@angular/flex-layout/core'; export declare class ClassDirective extends BaseDirective2 implements DoCheck { protected elementRef: ElementRef; protected styler: StyleUtils; protected marshal: MediaMarshaller; - protected iterableDiffers: IterableDiffers; - protected keyValueDiffers: KeyValueDiffers; - protected renderer: Renderer2; + protected delegate: ɵNgClassImpl; protected readonly ngClassInstance: NgClass; protected DIRECTIVE_KEY: string; /** @@ -22,13 +20,17 @@ export declare class ClassDirective extends BaseDirective2 implements DoCheck { * which are merged with activated styles and used as fallbacks. */ klass: string; - constructor(elementRef: ElementRef, styler: StyleUtils, marshal: MediaMarshaller, iterableDiffers: IterableDiffers, keyValueDiffers: KeyValueDiffers, renderer: Renderer2, ngClassInstance: NgClass); + constructor(elementRef: ElementRef, styler: StyleUtils, marshal: MediaMarshaller, delegate: ɵNgClassImpl, ngClassInstance: NgClass); protected updateWithValue(value: any): void; /** * For ChangeDetectionStrategy.onPush and ngOnChanges() updates */ ngDoCheck(): void; } +export declare const LayoutNgClassImplProvider: { + provide: typeof ɵNgClassImpl; + useClass: typeof ɵNgClassR2Impl; +}; /** * Directive to add responsive support for ngClass. * This maintains the core functionality of 'ngClass' and adds responsive API diff --git a/extended/typings/img-src/img-src.d.ts b/extended/typings/img-src/img-src.d.ts index bbaea8281..0edf146d9 100644 --- a/extended/typings/img-src/img-src.d.ts +++ b/extended/typings/img-src/img-src.d.ts @@ -31,7 +31,7 @@ export declare class ImgSrcDirective extends BaseDirective2 { * Do nothing to standard `` usages, only when responsive * keys are present do we actually call `setAttribute()` */ - protected updateWithValue(): void; + protected updateWithValue(value?: string): void; protected styleCache: Map; } /** diff --git a/extended/typings/index.metadata.json b/extended/typings/index.metadata.json index 0ecac7225..c93c4332c 100644 --- a/extended/typings/index.metadata.json +++ b/extended/typings/index.metadata.json @@ -1 +1 @@ -{"__symbolic":"module","version":4,"metadata":{"ExtendedModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":29,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"CoreModule","line":30,"character":12}],"declarations":[{"__symbolic":"reference","name":"DefaultShowHideDirective"},{"__symbolic":"reference","name":"DefaultClassDirective"},{"__symbolic":"reference","name":"DefaultStyleDirective"},{"__symbolic":"reference","name":"DefaultImgSrcDirective"}],"exports":[{"__symbolic":"reference","name":"DefaultShowHideDirective"},{"__symbolic":"reference","name":"DefaultClassDirective"},{"__symbolic":"reference","name":"DefaultStyleDirective"},{"__symbolic":"reference","name":"DefaultImgSrcDirective"}]}]}],"members":{}},"ClassDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":21,"character":36},"members":{"klass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3},"arguments":["class"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":41,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":41,"character":27}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":35,"character":36},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":36,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":37,"character":33},{"__symbolic":"reference","module":"@angular/core","name":"IterableDiffers","line":38,"character":41},{"__symbolic":"reference","module":"@angular/core","name":"KeyValueDiffers","line":39,"character":41},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":40,"character":34},{"__symbolic":"reference","module":"@angular/common","name":"NgClass","line":41,"character":70}]}],"updateWithValue":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}]}},"DefaultClassDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ClassDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":87,"character":1},"arguments":[{"selector":"\n [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl],\n [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl],\n [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]\n","inputs":["ngClass","ngClass.xs","ngClass.sm","ngClass.md","ngClass.lg","ngClass.xl","ngClass.lt-sm","ngClass.lt-md","ngClass.lt-lg","ngClass.lt-xl","ngClass.gt-xs","ngClass.gt-sm","ngClass.gt-md","ngClass.gt-lg"]}]}],"members":{}},"ImgSrcStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":40},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ImgSrcDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":37},"members":{"src":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3},"arguments":["src"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":39,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":39,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":40,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":40,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":35,"character":36},{"__symbolic":"reference","name":"ImgSrcStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":37,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":38,"character":33},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"boolean"}]}],"updateWithValue":[{"__symbolic":"method"}]}},"DefaultImgSrcDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ImgSrcDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":92,"character":1},"arguments":[{"selector":"\n img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl],\n img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl],\n img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]\n","inputs":["src.xs","src.sm","src.md","src.lg","src.xl","src.lt-sm","src.lt-md","src.lt-lg","src.lt-xl","src.gt-xs","src.gt-sm","src.gt-md","src.gt-lg"]}]}],"members":{}},"negativeOf":{"__symbolic":"function","parameters":["hide"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"hide"},"right":""},"thenExpression":false,"elseExpression":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"hide"},"right":"false"},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"hide"},"right":0}},"thenExpression":true,"elseExpression":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"reference","name":"hide"}}}}},"ShowHideParent":{"__symbolic":"interface"},"ShowHideStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":49,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":48,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ShowHideDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":56,"character":39},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":68,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":68,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":69,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":69,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":70,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":70,"character":27},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":70,"character":34}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":64,"character":36},{"__symbolic":"reference","name":"ShowHideStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":66,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":67,"character":33},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LayoutConfigOptions","line":68,"character":61},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"boolean"}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"getDisplayStyle":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}]}},"DefaultShowHideDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ShowHideDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":184,"character":1},"arguments":[{"selector":"\n [fxShow],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n","inputs":["fxShow","fxShow.xs","fxShow.sm","fxShow.md","fxShow.lg","fxShow.xl","fxShow.lt-sm","fxShow.lt-md","fxShow.lt-lg","fxShow.lt-xl","fxShow.gt-xs","fxShow.gt-sm","fxShow.gt-md","fxShow.gt-lg","fxHide","fxHide.xs","fxHide.sm","fxHide.md","fxHide.lg","fxHide.xl","fxHide.lt-sm","fxHide.lt-md","fxHide.lt-lg","fxHide.lt-xl","fxHide.gt-xs","fxHide.gt-sm","fxHide.gt-md","fxHide.gt-lg"]}]}],"members":{}},"StyleDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":34,"character":36},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":45,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":45,"character":27}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":39,"character":36},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":40,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":41,"character":33},{"__symbolic":"reference","module":"@angular/core","name":"KeyValueDiffers","line":42,"character":41},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":43,"character":34},{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":44,"character":35},{"__symbolic":"reference","module":"@angular/common","name":"NgStyle","line":45,"character":68}]}],"updateWithValue":[{"__symbolic":"method"}],"buildStyleMap":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}]}},"DefaultStyleDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StyleDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":114,"character":1},"arguments":[{"selector":"\n [ngStyle],\n [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl],\n [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl],\n [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]\n","inputs":["ngStyle","ngStyle.xs","ngStyle.sm","ngStyle.md","ngStyle.lg","ngStyle.xl","ngStyle.lt-sm","ngStyle.lt-md","ngStyle.lt-lg","ngStyle.lt-xl","ngStyle.gt-xs","ngStyle.gt-sm","ngStyle.gt-md","ngStyle.gt-lg"]}]}],"members":{}}},"origins":{"ExtendedModule":"./module","ClassDirective":"./class/class","DefaultClassDirective":"./class/class","ImgSrcStyleBuilder":"./img-src/img-src","ImgSrcDirective":"./img-src/img-src","DefaultImgSrcDirective":"./img-src/img-src","negativeOf":"./show-hide/show-hide","ShowHideParent":"./show-hide/show-hide","ShowHideStyleBuilder":"./show-hide/show-hide","ShowHideDirective":"./show-hide/show-hide","DefaultShowHideDirective":"./show-hide/show-hide","StyleDirective":"./style/style","DefaultStyleDirective":"./style/style"},"importAs":"@angular/flex-layout/extended"} \ No newline at end of file +{"__symbolic":"module","version":4,"metadata":{"ExtendedModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":29,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"CoreModule","line":30,"character":12}],"declarations":[{"__symbolic":"reference","name":"DefaultShowHideDirective"},{"__symbolic":"reference","name":"DefaultClassDirective"},{"__symbolic":"reference","name":"DefaultStyleDirective"},{"__symbolic":"reference","name":"DefaultImgSrcDirective"}],"exports":[{"__symbolic":"reference","name":"DefaultShowHideDirective"},{"__symbolic":"reference","name":"DefaultClassDirective"},{"__symbolic":"reference","name":"DefaultStyleDirective"},{"__symbolic":"reference","name":"DefaultImgSrcDirective"}]}]}],"members":{}},"ClassDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":11,"character":36},"members":{"klass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3},"arguments":["class"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":29,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":29,"character":27}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":25,"character":36},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":26,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":27,"character":33},{"__symbolic":"reference","module":"@angular/common","name":"ɵNgClassImpl","line":28,"character":34},{"__symbolic":"reference","module":"@angular/common","name":"NgClass","line":29,"character":70}]}],"updateWithValue":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}]}},"LayoutNgClassImplProvider":{"provide":{"__symbolic":"reference","module":"@angular/common","name":"ɵNgClassImpl","line":28,"character":34},"useClass":{"__symbolic":"reference","module":"@angular/common","name":"ɵNgClassR2Impl","line":72,"character":12}},"DefaultClassDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ClassDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":80,"character":1},"arguments":[{"selector":"\n [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl],\n [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl],\n [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]\n","inputs":["ngClass","ngClass.xs","ngClass.sm","ngClass.md","ngClass.lg","ngClass.xl","ngClass.lt-sm","ngClass.lt-md","ngClass.lt-lg","ngClass.lt-xl","ngClass.gt-xs","ngClass.gt-sm","ngClass.gt-md","ngClass.gt-lg"],"providers":[{"__symbolic":"reference","name":"LayoutNgClassImplProvider"}]}]}],"members":{}},"ImgSrcStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":40},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ImgSrcDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":37},"members":{"src":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3},"arguments":["src"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":39,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":39,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":40,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":40,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":35,"character":36},{"__symbolic":"reference","name":"ImgSrcStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":37,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":38,"character":33},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"boolean"}]}],"updateWithValue":[{"__symbolic":"method"}]}},"DefaultImgSrcDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ImgSrcDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":92,"character":1},"arguments":[{"selector":"\n img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl],\n img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl],\n img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]\n","inputs":["src.xs","src.sm","src.md","src.lg","src.xl","src.lt-sm","src.lt-md","src.lt-lg","src.lt-xl","src.gt-xs","src.gt-sm","src.gt-md","src.gt-lg"]}]}],"members":{}},"ShowHideParent":{"__symbolic":"interface"},"ShowHideStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":36,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":35,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ShowHideDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":43,"character":39},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":55,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":55,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":56,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":56,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":57,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":57,"character":27},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":57,"character":34}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":51,"character":36},{"__symbolic":"reference","name":"ShowHideStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":53,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":54,"character":33},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LayoutConfigOptions","line":55,"character":61},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"boolean"}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"trackExtraTriggers":[{"__symbolic":"method"}],"getDisplayStyle":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}]}},"DefaultShowHideDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ShowHideDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":183,"character":1},"arguments":[{"selector":"\n [fxShow], [fxShow.print],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide], [fxHide.print],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n","inputs":["fxShow","fxShow.print","fxShow.xs","fxShow.sm","fxShow.md","fxShow.lg","fxShow.xl","fxShow.lt-sm","fxShow.lt-md","fxShow.lt-lg","fxShow.lt-xl","fxShow.gt-xs","fxShow.gt-sm","fxShow.gt-md","fxShow.gt-lg","fxHide","fxHide.print","fxHide.xs","fxHide.sm","fxHide.md","fxHide.lg","fxHide.xl","fxHide.lt-sm","fxHide.lt-md","fxHide.lt-lg","fxHide.lt-xl","fxHide.gt-xs","fxHide.gt-sm","fxHide.gt-md","fxHide.gt-lg"]}]}],"members":{}},"StyleDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":39,"character":36},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":50,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":50,"character":27}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":51,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":51,"character":27},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":51,"character":34}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":52,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":52,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":36},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":46,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":47,"character":33},{"__symbolic":"reference","module":"@angular/common","name":"ɵNgStyleImpl","line":48,"character":34},{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":49,"character":35},{"__symbolic":"reference","module":"@angular/common","name":"NgStyle","line":50,"character":68},{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"Object"}]}],"updateWithValue":[{"__symbolic":"method"}],"clearStyles":[{"__symbolic":"method"}],"buildStyleMap":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}]}},"LayoutNgStyleImplProvider":{"provide":{"__symbolic":"reference","module":"@angular/common","name":"ɵNgStyleImpl","line":48,"character":34},"useClass":{"__symbolic":"reference","module":"@angular/common","name":"ɵNgStyleR2Impl","line":131,"character":12}},"DefaultStyleDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StyleDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":138,"character":1},"arguments":[{"selector":"\n [ngStyle],\n [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl],\n [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl],\n [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]\n","inputs":["ngStyle","ngStyle.xs","ngStyle.sm","ngStyle.md","ngStyle.lg","ngStyle.xl","ngStyle.lt-sm","ngStyle.lt-md","ngStyle.lt-lg","ngStyle.lt-xl","ngStyle.gt-xs","ngStyle.gt-sm","ngStyle.gt-md","ngStyle.gt-lg"],"providers":[{"__symbolic":"reference","name":"LayoutNgStyleImplProvider"}]}]}],"members":{}}},"origins":{"ExtendedModule":"./module","ClassDirective":"./class/class","LayoutNgClassImplProvider":"./class/class","DefaultClassDirective":"./class/class","ImgSrcStyleBuilder":"./img-src/img-src","ImgSrcDirective":"./img-src/img-src","DefaultImgSrcDirective":"./img-src/img-src","ShowHideParent":"./show-hide/show-hide","ShowHideStyleBuilder":"./show-hide/show-hide","ShowHideDirective":"./show-hide/show-hide","DefaultShowHideDirective":"./show-hide/show-hide","StyleDirective":"./style/style","LayoutNgStyleImplProvider":"./style/style","DefaultStyleDirective":"./style/style"},"importAs":"@angular/flex-layout/extended"} \ No newline at end of file diff --git a/extended/typings/show-hide/show-hide.d.ts b/extended/typings/show-hide/show-hide.d.ts index d49eae81a..de9800ff0 100644 --- a/extended/typings/show-hide/show-hide.d.ts +++ b/extended/typings/show-hide/show-hide.d.ts @@ -7,15 +7,6 @@ */ import { ElementRef, OnChanges, SimpleChanges, AfterViewInit } from '@angular/core'; import { BaseDirective2, LayoutConfigOptions, MediaMarshaller, StyleUtils, StyleBuilder } from '@angular/flex-layout/core'; -/** - * For fxHide selectors, we invert the 'value' - * and assign to the equivalent fxShow selector cache - * - When 'hide' === '' === true, do NOT show the element - * - When 'hide' === false or 0... we WILL show the element - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export declare function negativeOf(hide: any): boolean; export interface ShowHideParent { display: string; } @@ -45,6 +36,10 @@ export declare class ShowHideDirective extends BaseDirective2 implements AfterVi * Then conditionally override with the mq-activated Input's current value */ ngOnChanges(changes: SimpleChanges): void; + /** + * Watch for these extra triggers to update fxShow, fxHide stylings + */ + protected trackExtraTriggers(): void; /** * Override accessor to the current HTMLElement's `display` style * Note: Show/Hide will not change the display to 'flex' but will set it to 'block' diff --git a/extended/typings/style/style.d.ts b/extended/typings/style/style.d.ts index 43f928e0a..1c0dee1db 100644 --- a/extended/typings/style/style.d.ts +++ b/extended/typings/style/style.d.ts @@ -5,8 +5,8 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -import { DoCheck, ElementRef, KeyValueDiffers, Renderer2 } from '@angular/core'; -import { NgStyle } from '@angular/common'; +import { DoCheck, ElementRef } from '@angular/core'; +import { NgStyle, ɵNgStyleImpl, ɵNgStyleR2Impl } from '@angular/common'; import { DomSanitizer } from '@angular/platform-browser'; import { BaseDirective2, StyleUtils, MediaMarshaller } from '@angular/flex-layout/core'; import { NgStyleType, NgStyleMap } from './style-transforms'; @@ -14,14 +14,17 @@ export declare class StyleDirective extends BaseDirective2 implements DoCheck { protected elementRef: ElementRef; protected styler: StyleUtils; protected marshal: MediaMarshaller; - protected keyValueDiffers: KeyValueDiffers; - protected renderer: Renderer2; + protected delegate: ɵNgStyleImpl; protected sanitizer: DomSanitizer; private readonly ngStyleInstance; protected DIRECTIVE_KEY: string; protected fallbackStyles: NgStyleMap; - constructor(elementRef: ElementRef, styler: StyleUtils, marshal: MediaMarshaller, keyValueDiffers: KeyValueDiffers, renderer: Renderer2, sanitizer: DomSanitizer, ngStyleInstance: NgStyle); + protected isServer: boolean; + constructor(elementRef: ElementRef, styler: StyleUtils, marshal: MediaMarshaller, delegate: ɵNgStyleImpl, sanitizer: DomSanitizer, ngStyleInstance: NgStyle, serverLoaded: boolean, platformId: Object); + /** Add generated styles */ protected updateWithValue(value: any): void; + /** Remove generated styles */ + protected clearStyles(): void; /** * Convert raw strings to ngStyleMap; which is required by ngStyle * NOTE: Raw string key-value pairs MUST be delimited by `;` @@ -32,6 +35,10 @@ export declare class StyleDirective extends BaseDirective2 implements DoCheck { /** For ChangeDetectionStrategy.onPush and ngOnChanges() updates */ ngDoCheck(): void; } +export declare const LayoutNgStyleImplProvider: { + provide: typeof ɵNgStyleImpl; + useClass: typeof ɵNgStyleR2Impl; +}; /** * Directive to add responsive support for ngStyle. * diff --git a/flex-layout.d.ts b/flex-layout.d.ts index 1faa623eb..47174093a 100644 --- a/flex-layout.d.ts +++ b/flex-layout.d.ts @@ -6,3 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ export * from './typings/index'; +export * from './core'; +export * from './flex'; +export * from './grid'; +export * from './extended'; \ No newline at end of file diff --git a/flex-layout.metadata.json b/flex-layout.metadata.json index 03d805770..f110f2a8d 100644 --- a/flex-layout.metadata.json +++ b/flex-layout.metadata.json @@ -3,6 +3,18 @@ "version": 3, "metadata": {}, "exports": [ + { + "from": "./core" + }, + { + "from": "./flex" + }, + { + "from": "./grid" + }, + { + "from": "./extended" + }, { "from": "./typings/index" } diff --git a/flex/typings/index.metadata.json b/flex/typings/index.metadata.json index e3bad9cb7..86e73c8a2 100644 --- a/flex/typings/index.metadata.json +++ b/flex/typings/index.metadata.json @@ -1 +1 @@ -{"__symbolic":"module","version":4,"metadata":{"FlexModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":38,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"CoreModule","line":39,"character":12},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"BidiModule","line":39,"character":24}],"declarations":[{"__symbolic":"reference","name":"DefaultLayoutDirective"},{"__symbolic":"reference","name":"DefaultLayoutGapDirective"},{"__symbolic":"reference","name":"DefaultLayoutAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexOrderDirective"},{"__symbolic":"reference","name":"DefaultFlexOffsetDirective"},{"__symbolic":"reference","name":"FlexFillDirective"},{"__symbolic":"reference","name":"DefaultFlexAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexDirective"}],"exports":[{"__symbolic":"reference","name":"DefaultLayoutDirective"},{"__symbolic":"reference","name":"DefaultLayoutGapDirective"},{"__symbolic":"reference","name":"DefaultLayoutAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexOrderDirective"},{"__symbolic":"reference","name":"DefaultFlexOffsetDirective"},{"__symbolic":"reference","name":"FlexFillDirective"},{"__symbolic":"reference","name":"DefaultFlexAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexDirective"}]}]}],"members":{}},"FlexStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":30,"character":38},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":29,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":31,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":31,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LayoutConfigOptions","line":31,"character":61}]}],"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":201,"character":35},"members":{"shrink":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":208,"character":3},"arguments":["fxShrink"]}]}],"grow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":215,"character":3},"arguments":["fxGrow"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":227,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":227,"character":22}]}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":225,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":226,"character":36},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LayoutConfigOptions","line":31,"character":61},{"__symbolic":"reference","name":"FlexStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":229,"character":33}]}],"onLayoutChange":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}],"triggerReflow":[{"__symbolic":"method"}]}},"DefaultFlexDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":281,"character":1},"arguments":[{"inputs":["fxFlex","fxFlex.xs","fxFlex.sm","fxFlex.md","fxFlex.lg","fxFlex.xl","fxFlex.lt-sm","fxFlex.lt-md","fxFlex.lt-lg","fxFlex.lt-xl","fxFlex.gt-xs","fxFlex.gt-sm","fxFlex.gt-md","fxFlex.gt-lg"],"selector":"\n [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n [fxFlex.gt-md], [fxFlex.gt-lg]\n"}]}],"members":{}},"FlexAlignStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":17,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":57,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":65,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":61,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":62,"character":36},{"__symbolic":"reference","name":"FlexAlignStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":66,"character":33}]}]}},"DefaultFlexAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexAlignDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":76,"character":1},"arguments":[{"selector":"\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n","inputs":["fxFlexAlign","fxFlexAlign.xs","fxFlexAlign.sm","fxFlexAlign.md","fxFlexAlign.lg","fxFlexAlign.xl","fxFlexAlign.lt-sm","fxFlexAlign.lt-md","fxFlexAlign.lt-lg","fxFlexAlign.lt-xl","fxFlexAlign.gt-xs","fxFlexAlign.gt-sm","fxFlexAlign.gt-md","fxFlexAlign.gt-lg"]}]}],"members":{}},"FlexFillStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexFillDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":38,"character":39},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":37,"character":1},"arguments":[{"selector":"[fxFill], [fxFlexFill]"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":39,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":40,"character":36},{"__symbolic":"reference","name":"FlexFillStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":42,"character":33}]}]}},"FlexOffsetParent":{"__symbolic":"interface"},"FlexOffsetStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":32,"character":44},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":31,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexOffsetDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":67,"character":41},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":74,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":70,"character":31},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"Directionality","line":71,"character":40},{"__symbolic":"reference","name":"FlexOffsetStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":75,"character":33},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":76,"character":32}]}],"updateWithValue":[{"__symbolic":"method"}]}},"DefaultFlexOffsetDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexOffsetDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":114,"character":1},"arguments":[{"selector":"\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n","inputs":["fxFlexOffset","fxFlexOffset.xs","fxFlexOffset.sm","fxFlexOffset.md","fxFlexOffset.lg","fxFlexOffset.xl","fxFlexOffset.lt-sm","fxFlexOffset.lt-md","fxFlexOffset.lt-lg","fxFlexOffset.lt-xl","fxFlexOffset.gt-xs","fxFlexOffset.gt-sm","fxFlexOffset.gt-md","fxFlexOffset.gt-lg"]}]}],"members":{}},"FlexOrderStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":17,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexOrderDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":41,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":49,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":46,"character":36},{"__symbolic":"reference","name":"FlexOrderStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":50,"character":33}]}]}},"DefaultFlexOrderDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexOrderDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":60,"character":1},"arguments":[{"selector":"\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n","inputs":["fxFlexOrder","fxFlexOrder.xs","fxFlexOrder.sm","fxFlexOrder.md","fxFlexOrder.lg","fxFlexOrder.xl","fxFlexOrder.lt-sm","fxFlexOrder.lt-md","fxFlexOrder.lt-lg","fxFlexOrder.lt-xl","fxFlexOrder.gt-xs","fxFlexOrder.gt-sm","fxFlexOrder.gt-md","fxFlexOrder.gt-lg"]}]}],"members":{}},"LayoutStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":40},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":45,"character":37},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":53,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":49,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":50,"character":36},{"__symbolic":"reference","name":"LayoutStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":54,"character":33}]}]}},"DefaultLayoutDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"LayoutDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],\n [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md],\n [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm],\n [fxLayout.gt-md], [fxLayout.gt-lg]\n","inputs":["fxLayout","fxLayout.xs","fxLayout.sm","fxLayout.md","fxLayout.lg","fxLayout.xl","fxLayout.lt-sm","fxLayout.lt-md","fxLayout.lt-lg","fxLayout.lt-xl","fxLayout.gt-xs","fxLayout.gt-sm","fxLayout.gt-md","fxLayout.gt-lg"]}]}],"members":{}},"LayoutAlignParent":{"__symbolic":"interface"},"LayoutAlignStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":26,"character":45},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":25,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":120,"character":42},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":128,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":124,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":125,"character":36},{"__symbolic":"reference","name":"LayoutAlignStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":129,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}],"onLayoutChange":[{"__symbolic":"method"}]}},"DefaultLayoutAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"LayoutAlignDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":171,"character":1},"arguments":[{"selector":"\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n","inputs":["fxLayoutAlign","fxLayoutAlign.xs","fxLayoutAlign.sm","fxLayoutAlign.md","fxLayoutAlign.lg","fxLayoutAlign.xl","fxLayoutAlign.lt-sm","fxLayoutAlign.lt-md","fxLayoutAlign.lt-lg","fxLayoutAlign.lt-xl","fxLayoutAlign.gt-xs","fxLayoutAlign.gt-sm","fxLayoutAlign.gt-md","fxLayoutAlign.gt-lg"]}]}],"members":{}},"LayoutGapParent":{"__symbolic":"interface"},"LayoutGapStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":44,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":43,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":45,"character":31}]}],"buildStyles":[{"__symbolic":"method"}],"sideEffect":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutGapDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":98,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":121,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":115,"character":31},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":116,"character":30},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"Directionality","line":117,"character":40},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":45,"character":31},{"__symbolic":"reference","name":"LayoutGapStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":122,"character":33}]}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"onLayoutChange":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}],"willDisplay":[{"__symbolic":"method"}],"buildChildObservable":[{"__symbolic":"method"}]}},"DefaultLayoutGapDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"LayoutGapDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":231,"character":1},"arguments":[{"selector":"\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n","inputs":["fxLayoutGap","fxLayoutGap.xs","fxLayoutGap.sm","fxLayoutGap.md","fxLayoutGap.lg","fxLayoutGap.xl","fxLayoutGap.lt-sm","fxLayoutGap.lt-md","fxLayoutGap.lt-lg","fxLayoutGap.lt-xl","fxLayoutGap.gt-xs","fxLayoutGap.gt-sm","fxLayoutGap.gt-md","fxLayoutGap.gt-lg"]}]}],"members":{}}},"origins":{"FlexModule":"./module","FlexStyleBuilder":"./flex/flex","FlexDirective":"./flex/flex","DefaultFlexDirective":"./flex/flex","FlexAlignStyleBuilder":"./flex-align/flex-align","FlexAlignDirective":"./flex-align/flex-align","DefaultFlexAlignDirective":"./flex-align/flex-align","FlexFillStyleBuilder":"./flex-fill/flex-fill","FlexFillDirective":"./flex-fill/flex-fill","FlexOffsetParent":"./flex-offset/flex-offset","FlexOffsetStyleBuilder":"./flex-offset/flex-offset","FlexOffsetDirective":"./flex-offset/flex-offset","DefaultFlexOffsetDirective":"./flex-offset/flex-offset","FlexOrderStyleBuilder":"./flex-order/flex-order","FlexOrderDirective":"./flex-order/flex-order","DefaultFlexOrderDirective":"./flex-order/flex-order","LayoutStyleBuilder":"./layout/layout","LayoutDirective":"./layout/layout","DefaultLayoutDirective":"./layout/layout","LayoutAlignParent":"./layout-align/layout-align","LayoutAlignStyleBuilder":"./layout-align/layout-align","LayoutAlignDirective":"./layout-align/layout-align","DefaultLayoutAlignDirective":"./layout-align/layout-align","LayoutGapParent":"./layout-gap/layout-gap","LayoutGapStyleBuilder":"./layout-gap/layout-gap","LayoutGapDirective":"./layout-gap/layout-gap","DefaultLayoutGapDirective":"./layout-gap/layout-gap"},"importAs":"@angular/flex-layout/flex"} \ No newline at end of file +{"__symbolic":"module","version":4,"metadata":{"FlexModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":38,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"CoreModule","line":39,"character":12},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"BidiModule","line":39,"character":24}],"declarations":[{"__symbolic":"reference","name":"DefaultLayoutDirective"},{"__symbolic":"reference","name":"DefaultLayoutGapDirective"},{"__symbolic":"reference","name":"DefaultLayoutAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexOrderDirective"},{"__symbolic":"reference","name":"DefaultFlexOffsetDirective"},{"__symbolic":"reference","name":"FlexFillDirective"},{"__symbolic":"reference","name":"DefaultFlexAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexDirective"}],"exports":[{"__symbolic":"reference","name":"DefaultLayoutDirective"},{"__symbolic":"reference","name":"DefaultLayoutGapDirective"},{"__symbolic":"reference","name":"DefaultLayoutAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexOrderDirective"},{"__symbolic":"reference","name":"DefaultFlexOffsetDirective"},{"__symbolic":"reference","name":"FlexFillDirective"},{"__symbolic":"reference","name":"DefaultFlexAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexDirective"}]}]}],"members":{}},"FlexStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":30,"character":38},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":29,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":31,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":31,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LayoutConfigOptions","line":31,"character":61}]}],"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":201,"character":35},"members":{"shrink":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":208,"character":3},"arguments":["fxShrink"]}]}],"grow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":215,"character":3},"arguments":["fxGrow"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":227,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":227,"character":22}]}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":225,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":226,"character":36},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LayoutConfigOptions","line":31,"character":61},{"__symbolic":"reference","name":"FlexStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":229,"character":33}]}],"onLayoutChange":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}],"triggerReflow":[{"__symbolic":"method"}]}},"DefaultFlexDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":287,"character":1},"arguments":[{"inputs":["fxFlex","fxFlex.xs","fxFlex.sm","fxFlex.md","fxFlex.lg","fxFlex.xl","fxFlex.lt-sm","fxFlex.lt-md","fxFlex.lt-lg","fxFlex.lt-xl","fxFlex.gt-xs","fxFlex.gt-sm","fxFlex.gt-md","fxFlex.gt-lg"],"selector":"\n [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n [fxFlex.gt-md], [fxFlex.gt-lg]\n"}]}],"members":{}},"FlexAlignStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":17,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":57,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":65,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":61,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":62,"character":36},{"__symbolic":"reference","name":"FlexAlignStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":66,"character":33}]}]}},"DefaultFlexAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexAlignDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":76,"character":1},"arguments":[{"selector":"\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n","inputs":["fxFlexAlign","fxFlexAlign.xs","fxFlexAlign.sm","fxFlexAlign.md","fxFlexAlign.lg","fxFlexAlign.xl","fxFlexAlign.lt-sm","fxFlexAlign.lt-md","fxFlexAlign.lt-lg","fxFlexAlign.lt-xl","fxFlexAlign.gt-xs","fxFlexAlign.gt-sm","fxFlexAlign.gt-md","fxFlexAlign.gt-lg"]}]}],"members":{}},"FlexFillStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexFillDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":38,"character":39},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":37,"character":1},"arguments":[{"selector":"[fxFill], [fxFlexFill]"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":39,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":40,"character":36},{"__symbolic":"reference","name":"FlexFillStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":42,"character":33}]}]}},"FlexOffsetParent":{"__symbolic":"interface"},"FlexOffsetStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":32,"character":44},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":31,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexOffsetDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":67,"character":41},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":74,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":70,"character":31},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"Directionality","line":71,"character":40},{"__symbolic":"reference","name":"FlexOffsetStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":75,"character":33},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":76,"character":32}]}],"updateWithValue":[{"__symbolic":"method"}]}},"DefaultFlexOffsetDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexOffsetDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":114,"character":1},"arguments":[{"selector":"\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n","inputs":["fxFlexOffset","fxFlexOffset.xs","fxFlexOffset.sm","fxFlexOffset.md","fxFlexOffset.lg","fxFlexOffset.xl","fxFlexOffset.lt-sm","fxFlexOffset.lt-md","fxFlexOffset.lt-lg","fxFlexOffset.lt-xl","fxFlexOffset.gt-xs","fxFlexOffset.gt-sm","fxFlexOffset.gt-md","fxFlexOffset.gt-lg"]}]}],"members":{}},"FlexOrderStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":17,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexOrderDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":41,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":49,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":46,"character":36},{"__symbolic":"reference","name":"FlexOrderStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":50,"character":33}]}]}},"DefaultFlexOrderDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexOrderDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":60,"character":1},"arguments":[{"selector":"\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n","inputs":["fxFlexOrder","fxFlexOrder.xs","fxFlexOrder.sm","fxFlexOrder.md","fxFlexOrder.lg","fxFlexOrder.xl","fxFlexOrder.lt-sm","fxFlexOrder.lt-md","fxFlexOrder.lt-lg","fxFlexOrder.lt-xl","fxFlexOrder.gt-xs","fxFlexOrder.gt-sm","fxFlexOrder.gt-md","fxFlexOrder.gt-lg"]}]}],"members":{}},"LayoutStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":40},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":45,"character":37},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":53,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":49,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":50,"character":36},{"__symbolic":"reference","name":"LayoutStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":54,"character":33}]}]}},"DefaultLayoutDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"LayoutDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],\n [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md],\n [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm],\n [fxLayout.gt-md], [fxLayout.gt-lg]\n","inputs":["fxLayout","fxLayout.xs","fxLayout.sm","fxLayout.md","fxLayout.lg","fxLayout.xl","fxLayout.lt-sm","fxLayout.lt-md","fxLayout.lt-lg","fxLayout.lt-xl","fxLayout.gt-xs","fxLayout.gt-sm","fxLayout.gt-md","fxLayout.gt-lg"]}]}],"members":{}},"LayoutAlignParent":{"__symbolic":"interface"},"LayoutAlignStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":27,"character":45},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":26,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":121,"character":42},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":130,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":126,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":127,"character":36},{"__symbolic":"reference","name":"LayoutAlignStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":131,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}],"onLayoutChange":[{"__symbolic":"method"}]}},"DefaultLayoutAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"LayoutAlignDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":183,"character":1},"arguments":[{"selector":"\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n","inputs":["fxLayoutAlign","fxLayoutAlign.xs","fxLayoutAlign.sm","fxLayoutAlign.md","fxLayoutAlign.lg","fxLayoutAlign.xl","fxLayoutAlign.lt-sm","fxLayoutAlign.lt-md","fxLayoutAlign.lt-lg","fxLayoutAlign.lt-xl","fxLayoutAlign.gt-xs","fxLayoutAlign.gt-sm","fxLayoutAlign.gt-md","fxLayoutAlign.gt-lg"]}]}],"members":{}},"LayoutGapParent":{"__symbolic":"interface"},"LayoutGapStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":44,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":43,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":45,"character":31}]}],"buildStyles":[{"__symbolic":"method"}],"sideEffect":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutGapDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":98,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":121,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":115,"character":31},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":116,"character":30},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"Directionality","line":117,"character":40},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":45,"character":31},{"__symbolic":"reference","name":"LayoutGapStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":122,"character":33}]}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"onLayoutChange":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}],"clearStyles":[{"__symbolic":"method"}],"willDisplay":[{"__symbolic":"method"}],"buildChildObservable":[{"__symbolic":"method"}]}},"DefaultLayoutGapDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"LayoutGapDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":243,"character":1},"arguments":[{"selector":"\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n","inputs":["fxLayoutGap","fxLayoutGap.xs","fxLayoutGap.sm","fxLayoutGap.md","fxLayoutGap.lg","fxLayoutGap.xl","fxLayoutGap.lt-sm","fxLayoutGap.lt-md","fxLayoutGap.lt-lg","fxLayoutGap.lt-xl","fxLayoutGap.gt-xs","fxLayoutGap.gt-sm","fxLayoutGap.gt-md","fxLayoutGap.gt-lg"]}]}],"members":{}}},"origins":{"FlexModule":"./module","FlexStyleBuilder":"./flex/flex","FlexDirective":"./flex/flex","DefaultFlexDirective":"./flex/flex","FlexAlignStyleBuilder":"./flex-align/flex-align","FlexAlignDirective":"./flex-align/flex-align","DefaultFlexAlignDirective":"./flex-align/flex-align","FlexFillStyleBuilder":"./flex-fill/flex-fill","FlexFillDirective":"./flex-fill/flex-fill","FlexOffsetParent":"./flex-offset/flex-offset","FlexOffsetStyleBuilder":"./flex-offset/flex-offset","FlexOffsetDirective":"./flex-offset/flex-offset","DefaultFlexOffsetDirective":"./flex-offset/flex-offset","FlexOrderStyleBuilder":"./flex-order/flex-order","FlexOrderDirective":"./flex-order/flex-order","DefaultFlexOrderDirective":"./flex-order/flex-order","LayoutStyleBuilder":"./layout/layout","LayoutDirective":"./layout/layout","DefaultLayoutDirective":"./layout/layout","LayoutAlignParent":"./layout-align/layout-align","LayoutAlignStyleBuilder":"./layout-align/layout-align","LayoutAlignDirective":"./layout-align/layout-align","DefaultLayoutAlignDirective":"./layout-align/layout-align","LayoutGapParent":"./layout-gap/layout-gap","LayoutGapStyleBuilder":"./layout-gap/layout-gap","LayoutGapDirective":"./layout-gap/layout-gap","DefaultLayoutGapDirective":"./layout-gap/layout-gap"},"importAs":"@angular/flex-layout/flex"} \ No newline at end of file diff --git a/flex/typings/layout-align/layout-align.d.ts b/flex/typings/layout-align/layout-align.d.ts index aa714d1f2..c32462af3 100644 --- a/flex/typings/layout-align/layout-align.d.ts +++ b/flex/typings/layout-align/layout-align.d.ts @@ -9,6 +9,7 @@ import { ElementRef } from '@angular/core'; import { BaseDirective2, StyleBuilder, StyleDefinition, StyleUtils, MediaMarshaller, ElementMatcher } from '@angular/flex-layout/core'; export interface LayoutAlignParent { layout: string; + inline: boolean; } export declare class LayoutAlignStyleBuilder extends StyleBuilder { buildStyles(align: string, parent: LayoutAlignParent): StyleDefinition; @@ -29,6 +30,7 @@ export declare class LayoutAlignDirective extends BaseDirective2 { protected marshal: MediaMarshaller; protected DIRECTIVE_KEY: string; protected layout: string; + protected inline: boolean; constructor(elRef: ElementRef, styleUtils: StyleUtils, styleBuilder: LayoutAlignStyleBuilder, marshal: MediaMarshaller); /** * diff --git a/flex/typings/layout-gap/layout-gap.d.ts b/flex/typings/layout-gap/layout-gap.d.ts index a6bc93724..284b7cd17 100644 --- a/flex/typings/layout-gap/layout-gap.d.ts +++ b/flex/typings/layout-gap/layout-gap.d.ts @@ -47,6 +47,8 @@ export declare class LayoutGapDirective extends BaseDirective2 implements AfterC * */ protected updateWithValue(value: string): void; + /** We need to override clearStyles because in most cases mru isn't populated */ + protected clearStyles(): void; /** Determine if an element will show or hide based on current activation */ protected willDisplay(source: HTMLElement): boolean; protected buildChildObservable(): void; diff --git a/grid/typings/index.d.ts b/grid/typings/index.d.ts index e6d4ea3b2..e88835976 100644 --- a/grid/typings/index.d.ts +++ b/grid/typings/index.d.ts @@ -2,14 +2,14 @@ * Generated bundle index. Do not edit. */ export * from './public-api'; -export { DefaultGridAlignColumnsDirective as ɵf, GridAlignColumnsDirective as ɵe, GridAlignColumnsStyleBuilder as ɵd } from './align-columns/align-columns'; -export { DefaultGridAlignRowsDirective as ɵi, GridAlignRowsDirective as ɵh, GridAlignRowsStyleBuilder as ɵg } from './align-rows/align-rows'; -export { DefaultGridAreaDirective as ɵl, GridAreaDirective as ɵk, GridAreaStyleBuilder as ɵj } from './area/area'; -export { DefaultGridAreasDirective as ɵo, GridAreasDirective as ɵn, GridAreasStyleBuiler as ɵm } from './areas/areas'; -export { DefaultGridAutoDirective as ɵr, GridAutoDirective as ɵq, GridAutoStyleBuilder as ɵp } from './auto/auto'; -export { DefaultGridColumnDirective as ɵu, GridColumnDirective as ɵt, GridColumnStyleBuilder as ɵs } from './column/column'; -export { DefaultGridColumnsDirective as ɵx, GridColumnsDirective as ɵw, GridColumnsStyleBuilder as ɵv } from './columns/columns'; -export { DefaultGridGapDirective as ɵba, GridGapDirective as ɵz, GridGapStyleBuilder as ɵy } from './gap/gap'; -export { DefaultGridAlignDirective as ɵc, GridAlignDirective as ɵb, GridAlignStyleBuilder as ɵa } from './grid-align/grid-align'; -export { DefaultGridRowDirective as ɵbd, GridRowDirective as ɵbc, GridRowStyleBuilder as ɵbb } from './row/row'; -export { DefaultGridRowsDirective as ɵbg, GridRowsDirective as ɵbf, GridRowsStyleBuilder as ɵbe } from './rows/rows'; +export { DefaultGridAlignColumnsDirective as ɵf2, GridAlignColumnsDirective as ɵe2, GridAlignColumnsStyleBuilder as ɵd2 } from './align-columns/align-columns'; +export { DefaultGridAlignRowsDirective as ɵi2, GridAlignRowsDirective as ɵh2, GridAlignRowsStyleBuilder as ɵg2 } from './align-rows/align-rows'; +export { DefaultGridAreaDirective as ɵl2, GridAreaDirective as ɵk2, GridAreaStyleBuilder as ɵj2 } from './area/area'; +export { DefaultGridAreasDirective as ɵo2, GridAreasDirective as ɵn2, GridAreasStyleBuiler as ɵm2 } from './areas/areas'; +export { DefaultGridAutoDirective as ɵr2, GridAutoDirective as ɵq2, GridAutoStyleBuilder as ɵp2 } from './auto/auto'; +export { DefaultGridColumnDirective as ɵu2, GridColumnDirective as ɵt2, GridColumnStyleBuilder as ɵs2 } from './column/column'; +export { DefaultGridColumnsDirective as ɵx2, GridColumnsDirective as ɵw2, GridColumnsStyleBuilder as ɵv2 } from './columns/columns'; +export { DefaultGridGapDirective as ɵba2, GridGapDirective as ɵz2, GridGapStyleBuilder as ɵy2 } from './gap/gap'; +export { DefaultGridAlignDirective as ɵc2, GridAlignDirective as ɵb2, GridAlignStyleBuilder as ɵa2 } from './grid-align/grid-align'; +export { DefaultGridRowDirective as ɵbd2, GridRowDirective as ɵbc2, GridRowStyleBuilder as ɵbb2 } from './row/row'; +export { DefaultGridRowsDirective as ɵbg2, GridRowsDirective as ɵbf2, GridRowsStyleBuilder as ɵbe2 } from './rows/rows'; diff --git a/grid/typings/index.metadata.json b/grid/typings/index.metadata.json index bf51fdbbd..393dfd156 100644 --- a/grid/typings/index.metadata.json +++ b/grid/typings/index.metadata.json @@ -1 +1 @@ -{"__symbolic":"module","version":4,"metadata":{"GridModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":43,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"CoreModule","line":44,"character":12}],"declarations":[{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵo"},{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"ɵx"},{"__symbolic":"reference","name":"ɵba"},{"__symbolic":"reference","name":"ɵbd"},{"__symbolic":"reference","name":"ɵbg"}],"exports":[{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵo"},{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"ɵx"},{"__symbolic":"reference","name":"ɵba"},{"__symbolic":"reference","name":"ɵbd"},{"__symbolic":"reference","name":"ɵbg"}]}]}],"members":{}},"ɵa":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":20,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":19,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵb":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":26,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":33,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":30,"character":36},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":34,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":35,"character":33}]}]}},"ɵc":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵb"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":67,"character":1},"arguments":[{"selector":"\n [gdGridAlign],\n [gdGridAlign.xs], [gdGridAlign.sm], [gdGridAlign.md], [gdGridAlign.lg],[gdGridAlign.xl],\n [gdGridAlign.lt-sm], [gdGridAlign.lt-md], [gdGridAlign.lt-lg], [gdGridAlign.lt-xl],\n [gdGridAlign.gt-xs], [gdGridAlign.gt-sm], [gdGridAlign.gt-md], [gdGridAlign.gt-lg]\n","inputs":["gdGridAlign","gdGridAlign.xs","gdGridAlign.sm","gdGridAlign.md","gdGridAlign.lg","gdGridAlign.xl","gdGridAlign.lt-sm","gdGridAlign.lt-md","gdGridAlign.lt-lg","gdGridAlign.lt-xl","gdGridAlign.gt-xs","gdGridAlign.gt-sm","gdGridAlign.gt-md","gdGridAlign.gt-lg"]}]}],"members":{}},"ɵd":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":50},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵe":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":31,"character":47},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":43,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":40,"character":36},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":44,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":45,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵf":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵe"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":86,"character":1},"arguments":[{"selector":"\n [gdAlignColumns],\n [gdAlignColumns.xs], [gdAlignColumns.sm], [gdAlignColumns.md],\n [gdAlignColumns.lg], [gdAlignColumns.xl], [gdAlignColumns.lt-sm],\n [gdAlignColumns.lt-md], [gdAlignColumns.lt-lg], [gdAlignColumns.lt-xl],\n [gdAlignColumns.gt-xs], [gdAlignColumns.gt-sm], [gdAlignColumns.gt-md],\n [gdAlignColumns.gt-lg]\n","inputs":["gdAlignColumns","gdAlignColumns.xs","gdAlignColumns.sm","gdAlignColumns.md","gdAlignColumns.lg","gdAlignColumns.xl","gdAlignColumns.lt-sm","gdAlignColumns.lt-md","gdAlignColumns.lt-lg","gdAlignColumns.lt-xl","gdAlignColumns.gt-xs","gdAlignColumns.gt-sm","gdAlignColumns.gt-md","gdAlignColumns.gt-lg"]}]}],"members":{}},"ɵg":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":47},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵh":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":31,"character":44},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":43,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":40,"character":36},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":44,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":45,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵi":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵh"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":86,"character":1},"arguments":[{"selector":"\n [gdAlignRows],\n [gdAlignRows.xs], [gdAlignRows.sm], [gdAlignRows.md],\n [gdAlignRows.lg], [gdAlignRows.xl], [gdAlignRows.lt-sm],\n [gdAlignRows.lt-md], [gdAlignRows.lt-lg], [gdAlignRows.lt-xl],\n [gdAlignRows.gt-xs], [gdAlignRows.gt-sm], [gdAlignRows.gt-md],\n [gdAlignRows.gt-lg]\n","inputs":["gdAlignRows","gdAlignRows.xs","gdAlignRows.sm","gdAlignRows.md","gdAlignRows.lg","gdAlignRows.xl","gdAlignRows.lt-sm","gdAlignRows.lt-md","gdAlignRows.lt-lg","gdAlignRows.lt-xl","gdAlignRows.gt-xs","gdAlignRows.gt-sm","gdAlignRows.gt-md","gdAlignRows.gt-lg"]}]}],"members":{}},"ɵj":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵk":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":39},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":33,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":29,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":30,"character":36},{"__symbolic":"reference","name":"ɵj"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":34,"character":33}]}]}},"ɵl":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵk"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [gdArea],\n [gdArea.xs], [gdArea.sm], [gdArea.md], [gdArea.lg], [gdArea.xl],\n [gdArea.lt-sm], [gdArea.lt-md], [gdArea.lt-lg], [gdArea.lt-xl],\n [gdArea.gt-xs], [gdArea.gt-sm], [gdArea.gt-md], [gdArea.gt-lg]\n","inputs":["gdArea","gdArea.xs","gdArea.sm","gdArea.md","gdArea.lg","gdArea.xl","gdArea.lt-sm","gdArea.lt-md","gdArea.lt-lg","gdArea.lt-xl","gdArea.gt-xs","gdArea.gt-sm","gdArea.gt-md","gdArea.gt-lg"]}]}],"members":{}},"ɵm":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵn":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":36,"character":40},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":49,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":46,"character":36},{"__symbolic":"reference","name":"ɵm"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":50,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵo":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵn"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":87,"character":1},"arguments":[{"selector":"\n [gdAreas],\n [gdAreas.xs], [gdAreas.sm], [gdAreas.md], [gdAreas.lg], [gdAreas.xl],\n [gdAreas.lt-sm], [gdAreas.lt-md], [gdAreas.lt-lg], [gdAreas.lt-xl],\n [gdAreas.gt-xs], [gdAreas.gt-sm], [gdAreas.gt-md], [gdAreas.gt-lg]\n","inputs":["gdAreas","gdAreas.xs","gdAreas.sm","gdAreas.md","gdAreas.lg","gdAreas.xl","gdAreas.lt-sm","gdAreas.lt-md","gdAreas.lt-lg","gdAreas.lt-xl","gdAreas.gt-xs","gdAreas.gt-sm","gdAreas.gt-md","gdAreas.gt-lg"]}]}],"members":{}},"ɵp":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":24,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵq":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":40,"character":39},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":51,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":48,"character":36},{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":52,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":53,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵr":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵq"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":89,"character":1},"arguments":[{"selector":"\n [gdAuto],\n [gdAuto.xs], [gdAuto.sm], [gdAuto.md], [gdAuto.lg], [gdAuto.xl],\n [gdAuto.lt-sm], [gdAuto.lt-md], [gdAuto.lt-lg], [gdAuto.lt-xl],\n [gdAuto.gt-xs], [gdAuto.gt-sm], [gdAuto.gt-md], [gdAuto.gt-lg]\n","inputs":["gdAuto","gdAuto.xs","gdAuto.sm","gdAuto.md","gdAuto.lg","gdAuto.xl","gdAuto.lt-sm","gdAuto.lt-md","gdAuto.lt-lg","gdAuto.lt-xl","gdAuto.gt-xs","gdAuto.gt-sm","gdAuto.gt-md","gdAuto.gt-lg"]}]}],"members":{}},"ɵs":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":44},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵt":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":41},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":31,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":28,"character":36},{"__symbolic":"reference","name":"ɵs"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":32,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":33,"character":33}]}]}},"ɵu":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵt"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [gdColumn],\n [gdColumn.xs], [gdColumn.sm], [gdColumn.md], [gdColumn.lg], [gdColumn.xl],\n [gdColumn.lt-sm], [gdColumn.lt-md], [gdColumn.lt-lg], [gdColumn.lt-xl],\n [gdColumn.gt-xs], [gdColumn.gt-sm], [gdColumn.gt-md], [gdColumn.gt-lg]\n","inputs":["gdColumn","gdColumn.xs","gdColumn.sm","gdColumn.md","gdColumn.lg","gdColumn.xl","gdColumn.lt-sm","gdColumn.lt-md","gdColumn.lt-lg","gdColumn.lt-xl","gdColumn.gt-xs","gdColumn.gt-sm","gdColumn.gt-md","gdColumn.gt-lg"]}]}],"members":{}},"ɵv":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":45},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵw":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":46,"character":42},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":57,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":54,"character":36},{"__symbolic":"reference","name":"ɵv"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":58,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":59,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵx":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵw"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":97,"character":1},"arguments":[{"selector":"\n [gdColumns],\n [gdColumns.xs], [gdColumns.sm], [gdColumns.md], [gdColumns.lg], [gdColumns.xl],\n [gdColumns.lt-sm], [gdColumns.lt-md], [gdColumns.lt-lg], [gdColumns.lt-xl],\n [gdColumns.gt-xs], [gdColumns.gt-sm], [gdColumns.gt-md], [gdColumns.gt-lg]\n","inputs":["gdColumns","gdColumns.xs","gdColumns.sm","gdColumns.md","gdColumns.lg","gdColumns.xl","gdColumns.lt-sm","gdColumns.lt-md","gdColumns.lt-lg","gdColumns.lt-xl","gdColumns.gt-xs","gdColumns.gt-sm","gdColumns.gt-md","gdColumns.gt-lg"]}]}],"members":{}},"ɵy":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":24,"character":41},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵz":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":33,"character":38},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":45,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":41,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":42,"character":36},{"__symbolic":"reference","name":"ɵy"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":46,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵba":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵz"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":84,"character":1},"arguments":[{"selector":"\n [gdGap],\n [gdGap.xs], [gdGap.sm], [gdGap.md], [gdGap.lg], [gdGap.xl],\n [gdGap.lt-sm], [gdGap.lt-md], [gdGap.lt-lg], [gdGap.lt-xl],\n [gdGap.gt-xs], [gdGap.gt-sm], [gdGap.gt-md], [gdGap.gt-lg]\n","inputs":["gdGap","gdGap.xs","gdGap.sm","gdGap.md","gdGap.lg","gdGap.xl","gdGap.lt-sm","gdGap.lt-md","gdGap.lt-lg","gdGap.lt-xl","gdGap.gt-xs","gdGap.gt-sm","gdGap.gt-md","gdGap.gt-lg"]}]}],"members":{}},"ɵbb":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":41},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵbc":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":38},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":31,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":28,"character":36},{"__symbolic":"reference","name":"ɵbb"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":32,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":33,"character":33}]}]}},"ɵbd":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵbc"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [gdRow],\n [gdRow.xs], [gdRow.sm], [gdRow.md], [gdRow.lg], [gdRow.xl],\n [gdRow.lt-sm], [gdRow.lt-md], [gdRow.lt-lg], [gdRow.lt-xl],\n [gdRow.gt-xs], [gdRow.gt-sm], [gdRow.gt-md], [gdRow.gt-lg]\n","inputs":["gdRow","gdRow.xs","gdRow.sm","gdRow.md","gdRow.lg","gdRow.xl","gdRow.lt-sm","gdRow.lt-md","gdRow.lt-lg","gdRow.lt-xl","gdRow.gt-xs","gdRow.gt-sm","gdRow.gt-md","gdRow.gt-lg"]}]}],"members":{}},"ɵbe":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵbf":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":46,"character":39},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":57,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":54,"character":36},{"__symbolic":"reference","name":"ɵbe"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":58,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":59,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵbg":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵbf"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":97,"character":1},"arguments":[{"selector":"\n [gdRows],\n [gdRows.xs], [gdRows.sm], [gdRows.md], [gdRows.lg], [gdRows.xl],\n [gdRows.lt-sm], [gdRows.lt-md], [gdRows.lt-lg], [gdRows.lt-xl],\n [gdRows.gt-xs], [gdRows.gt-sm], [gdRows.gt-md], [gdRows.gt-lg]\n","inputs":["gdRows","gdRows.xs","gdRows.sm","gdRows.md","gdRows.lg","gdRows.xl","gdRows.lt-sm","gdRows.lt-md","gdRows.lt-lg","gdRows.lt-xl","gdRows.gt-xs","gdRows.gt-sm","gdRows.gt-md","gdRows.gt-lg"]}]}],"members":{}}},"origins":{"GridModule":"./module","ɵa":"./grid-align/grid-align","ɵb":"./grid-align/grid-align","ɵc":"./grid-align/grid-align","ɵd":"./align-columns/align-columns","ɵe":"./align-columns/align-columns","ɵf":"./align-columns/align-columns","ɵg":"./align-rows/align-rows","ɵh":"./align-rows/align-rows","ɵi":"./align-rows/align-rows","ɵj":"./area/area","ɵk":"./area/area","ɵl":"./area/area","ɵm":"./areas/areas","ɵn":"./areas/areas","ɵo":"./areas/areas","ɵp":"./auto/auto","ɵq":"./auto/auto","ɵr":"./auto/auto","ɵs":"./column/column","ɵt":"./column/column","ɵu":"./column/column","ɵv":"./columns/columns","ɵw":"./columns/columns","ɵx":"./columns/columns","ɵy":"./gap/gap","ɵz":"./gap/gap","ɵba":"./gap/gap","ɵbb":"./row/row","ɵbc":"./row/row","ɵbd":"./row/row","ɵbe":"./rows/rows","ɵbf":"./rows/rows","ɵbg":"./rows/rows"},"importAs":"@angular/flex-layout/grid"} \ No newline at end of file +{"__symbolic":"module","version":4,"metadata":{"GridModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":43,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"CoreModule","line":44,"character":12}],"declarations":[{"__symbolic":"reference","name":"ɵc2"},{"__symbolic":"reference","name":"ɵf2"},{"__symbolic":"reference","name":"ɵi2"},{"__symbolic":"reference","name":"ɵl2"},{"__symbolic":"reference","name":"ɵo2"},{"__symbolic":"reference","name":"ɵr2"},{"__symbolic":"reference","name":"ɵu2"},{"__symbolic":"reference","name":"ɵx2"},{"__symbolic":"reference","name":"ɵba2"},{"__symbolic":"reference","name":"ɵbd2"},{"__symbolic":"reference","name":"ɵbg2"}],"exports":[{"__symbolic":"reference","name":"ɵc2"},{"__symbolic":"reference","name":"ɵf2"},{"__symbolic":"reference","name":"ɵi2"},{"__symbolic":"reference","name":"ɵl2"},{"__symbolic":"reference","name":"ɵo2"},{"__symbolic":"reference","name":"ɵr2"},{"__symbolic":"reference","name":"ɵu2"},{"__symbolic":"reference","name":"ɵx2"},{"__symbolic":"reference","name":"ɵba2"},{"__symbolic":"reference","name":"ɵbd2"},{"__symbolic":"reference","name":"ɵbg2"}]}]}],"members":{}},"ɵa2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":20,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":19,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵb2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":26,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":33,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":30,"character":36},{"__symbolic":"reference","name":"ɵa2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":34,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":35,"character":33}]}]}},"ɵc2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵb2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":67,"character":1},"arguments":[{"selector":"\n [gdGridAlign],\n [gdGridAlign.xs], [gdGridAlign.sm], [gdGridAlign.md], [gdGridAlign.lg],[gdGridAlign.xl],\n [gdGridAlign.lt-sm], [gdGridAlign.lt-md], [gdGridAlign.lt-lg], [gdGridAlign.lt-xl],\n [gdGridAlign.gt-xs], [gdGridAlign.gt-sm], [gdGridAlign.gt-md], [gdGridAlign.gt-lg]\n","inputs":["gdGridAlign","gdGridAlign.xs","gdGridAlign.sm","gdGridAlign.md","gdGridAlign.lg","gdGridAlign.xl","gdGridAlign.lt-sm","gdGridAlign.lt-md","gdGridAlign.lt-lg","gdGridAlign.lt-xl","gdGridAlign.gt-xs","gdGridAlign.gt-sm","gdGridAlign.gt-md","gdGridAlign.gt-lg"]}]}],"members":{}},"ɵd2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":50},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵe2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":31,"character":47},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":43,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":40,"character":36},{"__symbolic":"reference","name":"ɵd2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":44,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":45,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵf2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵe2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":86,"character":1},"arguments":[{"selector":"\n [gdAlignColumns],\n [gdAlignColumns.xs], [gdAlignColumns.sm], [gdAlignColumns.md],\n [gdAlignColumns.lg], [gdAlignColumns.xl], [gdAlignColumns.lt-sm],\n [gdAlignColumns.lt-md], [gdAlignColumns.lt-lg], [gdAlignColumns.lt-xl],\n [gdAlignColumns.gt-xs], [gdAlignColumns.gt-sm], [gdAlignColumns.gt-md],\n [gdAlignColumns.gt-lg]\n","inputs":["gdAlignColumns","gdAlignColumns.xs","gdAlignColumns.sm","gdAlignColumns.md","gdAlignColumns.lg","gdAlignColumns.xl","gdAlignColumns.lt-sm","gdAlignColumns.lt-md","gdAlignColumns.lt-lg","gdAlignColumns.lt-xl","gdAlignColumns.gt-xs","gdAlignColumns.gt-sm","gdAlignColumns.gt-md","gdAlignColumns.gt-lg"]}]}],"members":{}},"ɵg2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":47},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵh2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":31,"character":44},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":43,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":40,"character":36},{"__symbolic":"reference","name":"ɵg2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":44,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":45,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵi2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵh2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":86,"character":1},"arguments":[{"selector":"\n [gdAlignRows],\n [gdAlignRows.xs], [gdAlignRows.sm], [gdAlignRows.md],\n [gdAlignRows.lg], [gdAlignRows.xl], [gdAlignRows.lt-sm],\n [gdAlignRows.lt-md], [gdAlignRows.lt-lg], [gdAlignRows.lt-xl],\n [gdAlignRows.gt-xs], [gdAlignRows.gt-sm], [gdAlignRows.gt-md],\n [gdAlignRows.gt-lg]\n","inputs":["gdAlignRows","gdAlignRows.xs","gdAlignRows.sm","gdAlignRows.md","gdAlignRows.lg","gdAlignRows.xl","gdAlignRows.lt-sm","gdAlignRows.lt-md","gdAlignRows.lt-lg","gdAlignRows.lt-xl","gdAlignRows.gt-xs","gdAlignRows.gt-sm","gdAlignRows.gt-md","gdAlignRows.gt-lg"]}]}],"members":{}},"ɵj2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵk2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":39},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":33,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":29,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":30,"character":36},{"__symbolic":"reference","name":"ɵj2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":34,"character":33}]}]}},"ɵl2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵk2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [gdArea],\n [gdArea.xs], [gdArea.sm], [gdArea.md], [gdArea.lg], [gdArea.xl],\n [gdArea.lt-sm], [gdArea.lt-md], [gdArea.lt-lg], [gdArea.lt-xl],\n [gdArea.gt-xs], [gdArea.gt-sm], [gdArea.gt-md], [gdArea.gt-lg]\n","inputs":["gdArea","gdArea.xs","gdArea.sm","gdArea.md","gdArea.lg","gdArea.xl","gdArea.lt-sm","gdArea.lt-md","gdArea.lt-lg","gdArea.lt-xl","gdArea.gt-xs","gdArea.gt-sm","gdArea.gt-md","gdArea.gt-lg"]}]}],"members":{}},"ɵm2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵn2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":36,"character":40},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":49,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":46,"character":36},{"__symbolic":"reference","name":"ɵm2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":50,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵo2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵn2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":87,"character":1},"arguments":[{"selector":"\n [gdAreas],\n [gdAreas.xs], [gdAreas.sm], [gdAreas.md], [gdAreas.lg], [gdAreas.xl],\n [gdAreas.lt-sm], [gdAreas.lt-md], [gdAreas.lt-lg], [gdAreas.lt-xl],\n [gdAreas.gt-xs], [gdAreas.gt-sm], [gdAreas.gt-md], [gdAreas.gt-lg]\n","inputs":["gdAreas","gdAreas.xs","gdAreas.sm","gdAreas.md","gdAreas.lg","gdAreas.xl","gdAreas.lt-sm","gdAreas.lt-md","gdAreas.lt-lg","gdAreas.lt-xl","gdAreas.gt-xs","gdAreas.gt-sm","gdAreas.gt-md","gdAreas.gt-lg"]}]}],"members":{}},"ɵp2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":24,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵq2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":40,"character":39},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":51,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":48,"character":36},{"__symbolic":"reference","name":"ɵp2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":52,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":53,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵr2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵq2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":89,"character":1},"arguments":[{"selector":"\n [gdAuto],\n [gdAuto.xs], [gdAuto.sm], [gdAuto.md], [gdAuto.lg], [gdAuto.xl],\n [gdAuto.lt-sm], [gdAuto.lt-md], [gdAuto.lt-lg], [gdAuto.lt-xl],\n [gdAuto.gt-xs], [gdAuto.gt-sm], [gdAuto.gt-md], [gdAuto.gt-lg]\n","inputs":["gdAuto","gdAuto.xs","gdAuto.sm","gdAuto.md","gdAuto.lg","gdAuto.xl","gdAuto.lt-sm","gdAuto.lt-md","gdAuto.lt-lg","gdAuto.lt-xl","gdAuto.gt-xs","gdAuto.gt-sm","gdAuto.gt-md","gdAuto.gt-lg"]}]}],"members":{}},"ɵs2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":44},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵt2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":41},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":31,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":28,"character":36},{"__symbolic":"reference","name":"ɵs2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":32,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":33,"character":33}]}]}},"ɵu2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵt2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [gdColumn],\n [gdColumn.xs], [gdColumn.sm], [gdColumn.md], [gdColumn.lg], [gdColumn.xl],\n [gdColumn.lt-sm], [gdColumn.lt-md], [gdColumn.lt-lg], [gdColumn.lt-xl],\n [gdColumn.gt-xs], [gdColumn.gt-sm], [gdColumn.gt-md], [gdColumn.gt-lg]\n","inputs":["gdColumn","gdColumn.xs","gdColumn.sm","gdColumn.md","gdColumn.lg","gdColumn.xl","gdColumn.lt-sm","gdColumn.lt-md","gdColumn.lt-lg","gdColumn.lt-xl","gdColumn.gt-xs","gdColumn.gt-sm","gdColumn.gt-md","gdColumn.gt-lg"]}]}],"members":{}},"ɵv2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":45},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵw2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":46,"character":42},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":57,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":54,"character":36},{"__symbolic":"reference","name":"ɵv2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":58,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":59,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵx2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵw2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":97,"character":1},"arguments":[{"selector":"\n [gdColumns],\n [gdColumns.xs], [gdColumns.sm], [gdColumns.md], [gdColumns.lg], [gdColumns.xl],\n [gdColumns.lt-sm], [gdColumns.lt-md], [gdColumns.lt-lg], [gdColumns.lt-xl],\n [gdColumns.gt-xs], [gdColumns.gt-sm], [gdColumns.gt-md], [gdColumns.gt-lg]\n","inputs":["gdColumns","gdColumns.xs","gdColumns.sm","gdColumns.md","gdColumns.lg","gdColumns.xl","gdColumns.lt-sm","gdColumns.lt-md","gdColumns.lt-lg","gdColumns.lt-xl","gdColumns.gt-xs","gdColumns.gt-sm","gdColumns.gt-md","gdColumns.gt-lg"]}]}],"members":{}},"ɵy2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":24,"character":41},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵz2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":33,"character":38},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":45,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":41,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":42,"character":36},{"__symbolic":"reference","name":"ɵy2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":46,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵba2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵz2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":84,"character":1},"arguments":[{"selector":"\n [gdGap],\n [gdGap.xs], [gdGap.sm], [gdGap.md], [gdGap.lg], [gdGap.xl],\n [gdGap.lt-sm], [gdGap.lt-md], [gdGap.lt-lg], [gdGap.lt-xl],\n [gdGap.gt-xs], [gdGap.gt-sm], [gdGap.gt-md], [gdGap.gt-lg]\n","inputs":["gdGap","gdGap.xs","gdGap.sm","gdGap.md","gdGap.lg","gdGap.xl","gdGap.lt-sm","gdGap.lt-md","gdGap.lt-lg","gdGap.lt-xl","gdGap.gt-xs","gdGap.gt-sm","gdGap.gt-md","gdGap.gt-lg"]}]}],"members":{}},"ɵbb2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":41},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵbc2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":38},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":31,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":28,"character":36},{"__symbolic":"reference","name":"ɵbb2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":32,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":33,"character":33}]}]}},"ɵbd2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵbc2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [gdRow],\n [gdRow.xs], [gdRow.sm], [gdRow.md], [gdRow.lg], [gdRow.xl],\n [gdRow.lt-sm], [gdRow.lt-md], [gdRow.lt-lg], [gdRow.lt-xl],\n [gdRow.gt-xs], [gdRow.gt-sm], [gdRow.gt-md], [gdRow.gt-lg]\n","inputs":["gdRow","gdRow.xs","gdRow.sm","gdRow.md","gdRow.lg","gdRow.xl","gdRow.lt-sm","gdRow.lt-md","gdRow.lt-lg","gdRow.lt-xl","gdRow.gt-xs","gdRow.gt-sm","gdRow.gt-md","gdRow.gt-lg"]}]}],"members":{}},"ɵbe2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵbf2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":46,"character":39},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":57,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":54,"character":36},{"__symbolic":"reference","name":"ɵbe2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":58,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":59,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵbg2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵbf2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":97,"character":1},"arguments":[{"selector":"\n [gdRows],\n [gdRows.xs], [gdRows.sm], [gdRows.md], [gdRows.lg], [gdRows.xl],\n [gdRows.lt-sm], [gdRows.lt-md], [gdRows.lt-lg], [gdRows.lt-xl],\n [gdRows.gt-xs], [gdRows.gt-sm], [gdRows.gt-md], [gdRows.gt-lg]\n","inputs":["gdRows","gdRows.xs","gdRows.sm","gdRows.md","gdRows.lg","gdRows.xl","gdRows.lt-sm","gdRows.lt-md","gdRows.lt-lg","gdRows.lt-xl","gdRows.gt-xs","gdRows.gt-sm","gdRows.gt-md","gdRows.gt-lg"]}]}],"members":{}}},"origins":{"GridModule":"./module","ɵa2":"./grid-align/grid-align","ɵb2":"./grid-align/grid-align","ɵc2":"./grid-align/grid-align","ɵd2":"./align-columns/align-columns","ɵe2":"./align-columns/align-columns","ɵf2":"./align-columns/align-columns","ɵg2":"./align-rows/align-rows","ɵh2":"./align-rows/align-rows","ɵi2":"./align-rows/align-rows","ɵj2":"./area/area","ɵk2":"./area/area","ɵl2":"./area/area","ɵm2":"./areas/areas","ɵn2":"./areas/areas","ɵo2":"./areas/areas","ɵp2":"./auto/auto","ɵq2":"./auto/auto","ɵr2":"./auto/auto","ɵs2":"./column/column","ɵt2":"./column/column","ɵu2":"./column/column","ɵv2":"./columns/columns","ɵw2":"./columns/columns","ɵx2":"./columns/columns","ɵy2":"./gap/gap","ɵz2":"./gap/gap","ɵba2":"./gap/gap","ɵbb2":"./row/row","ɵbc2":"./row/row","ɵbd2":"./row/row","ɵbe2":"./rows/rows","ɵbf2":"./rows/rows","ɵbg2":"./rows/rows"},"importAs":"@angular/flex-layout/grid"} \ No newline at end of file diff --git a/package.json b/package.json index 4d12278de..5519adccb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular/flex-layout", - "version": "7.0.0-beta.22", + "version": "8.0.0-beta.26", "description": "Angular Flex-Layout", "main": "./bundles/flex-layout.umd.js", "module": "./esm5/flex-layout.es5.js", @@ -23,9 +23,10 @@ }, "homepage": "https://github.com/angular/flex-layout#readme", "peerDependencies": { - "@angular/cdk": "^7.0.0-rc.0", - "@angular/core": ">=7.0.0-rc.0", - "@angular/common": ">=7.0.0-rc.0", + "@angular/cdk": "^8.0.0-rc.0", + "@angular/core": ">=8.0.0-rc.5", + "@angular/common": ">=8.0.0-rc.5", + "@angular/platform-browser": ">=8.0.0-rc.5", "rxjs": "^6.0.0" }, "dependencies": { diff --git a/server/typings/index.d.ts b/server/typings/index.d.ts index e5daacf63..bd0294737 100644 --- a/server/typings/index.d.ts +++ b/server/typings/index.d.ts @@ -2,3 +2,4 @@ * Generated bundle index. Do not edit. */ export * from './public-api'; +export { ServerMatchMedia as ɵa1 } from './server-match-media'; diff --git a/server/typings/index.metadata.json b/server/typings/index.metadata.json index 85adeb02e..5b87e7b15 100644 --- a/server/typings/index.metadata.json +++ b/server/typings/index.metadata.json @@ -1 +1 @@ -{"__symbolic":"module","version":4,"metadata":{"FlexLayoutServerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"providers":[{"__symbolic":"reference","name":"SERVER_PROVIDERS"}]}]}],"members":{}},"generateStaticFlexLayoutStyles":{"__symbolic":"function"},"FLEX_SSR_SERIALIZER_FACTORY":{"__symbolic":"function","parameters":["serverSheet","matchMedia","_document","breakpoints"],"value":{"__symbolic":"error","message":"Lambda not supported","line":67,"character":9,"module":"./server-provider"}},"SERVER_PROVIDERS":[{"provide":{"__symbolic":"reference","module":"@angular/platform-server","name":"BEFORE_APP_SERIALIZED","line":83,"character":41},"useFactory":{"__symbolic":"reference","name":"FLEX_SSR_SERIALIZER_FACTORY"},"deps":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StylesheetMap","line":86,"character":6},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MatchMedia","line":87,"character":6},{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":88,"character":6},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BREAKPOINTS","line":89,"character":6}],"multi":true},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":94,"character":13},"useValue":true},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MatchMedia","line":98,"character":13},"useClass":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"ServerMatchMedia","line":99,"character":14}}],"StyleSheet":{"__symbolic":"interface"},"ClassMap":{"__symbolic":"interface"}},"origins":{"FlexLayoutServerModule":"./module","generateStaticFlexLayoutStyles":"./server-provider","FLEX_SSR_SERIALIZER_FACTORY":"./server-provider","SERVER_PROVIDERS":"./server-provider","StyleSheet":"./server-provider","ClassMap":"./server-provider"},"importAs":"@angular/flex-layout/server"} \ No newline at end of file +{"__symbolic":"module","version":4,"metadata":{"FlexLayoutServerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"providers":[{"__symbolic":"reference","name":"SERVER_PROVIDERS"}]}]}],"members":{}},"generateStaticFlexLayoutStyles":{"__symbolic":"function"},"FLEX_SSR_SERIALIZER_FACTORY":{"__symbolic":"function","parameters":["serverSheet","mediaController","_document","breakpoints","layoutConfig"],"value":{"__symbolic":"error","message":"Lambda not supported","line":84,"character":9,"module":"./server-provider"}},"SERVER_PROVIDERS":[{"provide":{"__symbolic":"reference","module":"@angular/platform-server","name":"BEFORE_APP_SERIALIZED","line":101,"character":41},"useFactory":{"__symbolic":"reference","name":"FLEX_SSR_SERIALIZER_FACTORY"},"deps":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StylesheetMap","line":104,"character":6},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"ɵMatchMedia","line":105,"character":6},{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":106,"character":6},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BREAKPOINTS","line":107,"character":6},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":108,"character":6}],"multi":true},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":113,"character":13},"useValue":true},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"ɵMatchMedia","line":117,"character":13},"useClass":{"__symbolic":"reference","name":"ɵa1"}}],"StyleSheet":{"__symbolic":"interface"},"ClassMap":{"__symbolic":"interface"},"ɵa1":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"ɵMatchMedia","line":112,"character":38},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":111,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":114,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":114,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":115,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":115,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":113,"character":31},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"any"}]}],"activateBreakpoint":[{"__symbolic":"method"}],"deactivateBreakpoint":[{"__symbolic":"method"}],"buildMQL":[{"__symbolic":"method"}]}}},"origins":{"FlexLayoutServerModule":"./module","generateStaticFlexLayoutStyles":"./server-provider","FLEX_SSR_SERIALIZER_FACTORY":"./server-provider","SERVER_PROVIDERS":"./server-provider","StyleSheet":"./server-provider","ClassMap":"./server-provider","ɵa1":"./server-match-media"},"importAs":"@angular/flex-layout/server"} \ No newline at end of file diff --git a/typings/esm5/core/match-media/server-match-media.d.ts b/server/typings/server-match-media.d.ts similarity index 88% rename from typings/esm5/core/match-media/server-match-media.d.ts rename to server/typings/server-match-media.d.ts index 1d5bae3f7..ddd460c4f 100644 --- a/typings/esm5/core/match-media/server-match-media.d.ts +++ b/server/typings/server-match-media.d.ts @@ -1,6 +1,5 @@ import { NgZone } from '@angular/core'; -import { BreakPoint } from '../breakpoints/break-point'; -import { MatchMedia } from './match-media'; +import { BreakPoint, ɵMatchMedia as MatchMedia } from '@angular/flex-layout/core'; /** * Special server-only class to simulate a MediaQueryList and * - supports manual activation to simulate mediaQuery matching @@ -25,7 +24,7 @@ export declare class ServerMediaQueryList implements MediaQueryList { /** Add a listener to our internal list to activate later */ addListener(listener: MediaQueryListListener): void; /** Don't need to remove listeners in the server environment */ - removeListener(_: EventListenerOrEventListenerObject | null): void; + removeListener(_: MediaQueryListListener | null): void; addEventListener(_: K, __: (this: MediaQueryList, ev: MediaQueryListEventMap[K]) => any, ___?: boolean | AddEventListenerOptions): void; removeEventListener(_: K, __: (this: MediaQueryList, ev: MediaQueryListEventMap[K]) => any, ___?: boolean | EventListenerOptions): void; dispatchEvent(_: Event): boolean; @@ -41,7 +40,6 @@ export declare class ServerMatchMedia extends MatchMedia { protected _zone: NgZone; protected _platformId: Object; protected _document: any; - protected _registry: Map; constructor(_zone: NgZone, _platformId: Object, _document: any); /** Activate the specified breakpoint if we're on the server, no-op otherwise */ activateBreakpoint(bp: BreakPoint): void; @@ -51,7 +49,7 @@ export declare class ServerMatchMedia extends MatchMedia { * Call window.matchMedia() to build a MediaQueryList; which * supports 0..n listeners for activation/deactivation */ - protected _buildMQL(query: string): ServerMediaQueryList; + protected buildMQL(query: string): ServerMediaQueryList; } declare type MediaQueryListListener = ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null; export {}; diff --git a/server/typings/server-provider.d.ts b/server/typings/server-provider.d.ts index 003616d09..4e25f7838 100644 --- a/server/typings/server-provider.d.ts +++ b/server/typings/server-provider.d.ts @@ -6,28 +6,30 @@ * found in the LICENSE file at https://angular.io/license */ import { InjectionToken } from '@angular/core'; -import { BreakPoint, MatchMedia, StylesheetMap, ServerMatchMedia } from '@angular/flex-layout/core'; +import { BreakPoint, ɵMatchMedia as MatchMedia, StylesheetMap, LayoutConfigOptions } from '@angular/flex-layout/core'; +import { ServerMatchMedia } from './server-match-media'; /** * Activate all of the registered breakpoints in sequence, and then * retrieve the associated stylings from the virtual stylesheet * @param serverSheet the virtual stylesheet that stores styles for each * element - * @param matchMedia the service to activate/deactivate breakpoints + * @param mediaController the MatchMedia service to activate/deactivate breakpoints * @param breakpoints the registered breakpoints to activate/deactivate + * @param layoutConfig the library config, and specifically the breakpoints to activate */ -export declare function generateStaticFlexLayoutStyles(serverSheet: StylesheetMap, matchMedia: MatchMedia, breakpoints: BreakPoint[]): string; +export declare function generateStaticFlexLayoutStyles(serverSheet: StylesheetMap, mediaController: ServerMatchMedia, breakpoints: BreakPoint[], layoutConfig: LayoutConfigOptions): string; /** * Create a style tag populated with the dynamic stylings from Flex * components and attach it to the head of the DOM */ -export declare function FLEX_SSR_SERIALIZER_FACTORY(serverSheet: StylesheetMap, matchMedia: MatchMedia, _document: Document, breakpoints: BreakPoint[]): () => void; +export declare function FLEX_SSR_SERIALIZER_FACTORY(serverSheet: StylesheetMap, mediaController: ServerMatchMedia, _document: Document, breakpoints: BreakPoint[], layoutConfig: LayoutConfigOptions): () => void; /** * Provider to set static styles on the server */ export declare const SERVER_PROVIDERS: ({ provide: InjectionToken<() => void>; useFactory: typeof FLEX_SSR_SERIALIZER_FACTORY; - deps: (typeof StylesheetMap | typeof MatchMedia | InjectionToken)[]; + deps: (typeof MatchMedia | InjectionToken | typeof StylesheetMap)[]; multi: boolean; useValue?: undefined; useClass?: undefined; diff --git a/typings/core/base/base-adapter.d.ts b/typings/core/base/base-adapter.d.ts deleted file mode 100644 index 67a53799f..000000000 --- a/typings/core/base/base-adapter.d.ts +++ /dev/null @@ -1,79 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -import { ElementRef } from '@angular/core'; -import { BaseDirective } from './base'; -import { ResponsiveActivation } from '../responsive-activation/responsive-activation'; -import { MediaQuerySubscriber } from '../media-change'; -import { MediaMonitor } from '../media-monitor/media-monitor'; -import { StyleUtils } from '../style-utils/style-utils'; -/** - * Adapter to the BaseDirective abstract class so it can be used via composition. - * @see BaseDirective - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export declare class BaseDirectiveAdapter extends BaseDirective { - protected _baseKey: string; - protected _mediaMonitor: MediaMonitor; - protected _elementRef: ElementRef; - protected _styler: StyleUtils; - /** - * Accessor to determine which @Input property is "active" - * e.g. which property value will be used. - */ - readonly activeKey: string; - /** Hash map of all @Input keys/values defined/used */ - readonly inputMap: { - [key: string]: any; - }; - /** - * @see BaseDirective._mqActivation - */ - readonly mqActivation: ResponsiveActivation; - /** - * BaseDirectiveAdapter constructor - */ - constructor(_baseKey: string, // non-responsive @Input property name - _mediaMonitor: MediaMonitor, _elementRef: ElementRef, _styler: StyleUtils); - /** - * Does this directive have 1 or more responsive keys defined - * Note: we exclude the 'baseKey' key (which is NOT considered responsive) - */ - hasResponsiveAPI(): boolean; - /** - * @see BaseDirective._queryInput - */ - queryInput(key: string | null): any; - /** - * Save the property value. - */ - cacheInput(key?: string, source?: any, cacheRaw?: boolean): void; - /** - * @see BaseDirective._listenForMediaQueryChanges - */ - listenForMediaQueryChanges(key: string, defaultValue: any, onMediaQueryChange: MediaQuerySubscriber): ResponsiveActivation; - /** - * No implicit transforms of the source. - * Required when caching values expected later for KeyValueDiffers - */ - protected _cacheInputRaw(key?: string, source?: any): void; - /** - * Save the property value for Array values. - */ - protected _cacheInputArray(key?: string, source?: boolean[]): void; - /** - * Save the property value for key/value pair values. - */ - protected _cacheInputObject(key?: string, source?: { - [key: string]: boolean; - }): void; - /** - * Save the property value for string values. - */ - protected _cacheInputString(key?: string, source?: string): void; -} diff --git a/typings/core/base/base.d.ts b/typings/core/base/base.d.ts deleted file mode 100644 index c645f97da..000000000 --- a/typings/core/base/base.d.ts +++ /dev/null @@ -1,109 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -import { ElementRef, OnDestroy, SimpleChanges, OnChanges } from '@angular/core'; -import { StyleDefinition, StyleUtils } from '../style-utils/style-utils'; -import { ResponsiveActivation } from '../responsive-activation/responsive-activation'; -import { MediaMonitor } from '../media-monitor/media-monitor'; -import { MediaQuerySubscriber } from '../media-change'; -import { StyleBuilder } from '../style-builder/style-builder'; -/** - * Abstract base class for the Layout API styling directives. - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export declare abstract class BaseDirective implements OnDestroy, OnChanges { - protected _mediaMonitor: MediaMonitor; - protected _elementRef: ElementRef; - protected _styler: StyleUtils; - protected _styleBuilder?: StyleBuilder | undefined; - /** - * Imperatively determine the current activated [input] value; - * if called before ngOnInit() this will return `undefined` - */ - /** - * Change the currently activated input value and force-update - * the injected CSS (by-passing change detection). - * - * NOTE: Only the currently activated input value will be modified; - * other input values will NOT be affected. - */ - activatedValue: string | number; - protected constructor(_mediaMonitor: MediaMonitor, _elementRef: ElementRef, _styler: StyleUtils, _styleBuilder?: StyleBuilder | undefined); - /** - * Does this directive have 1 or more responsive keys defined - * Note: we exclude the 'baseKey' key (which is NOT considered responsive) - */ - hasResponsiveAPI(baseKey: string): boolean; - /** - * Use post-component-initialization event to perform extra - * querying such as computed Display style - */ - ngOnInit(): void; - ngOnChanges(change: SimpleChanges): void; - ngOnDestroy(): void; - /** Access to host element's parent DOM node */ - protected readonly parentElement: any; - protected readonly nativeElement: HTMLElement; - /** Add styles to the element using predefined style builder */ - protected addStyles(input: string, parent?: Object): void; - /** Access the current value (if any) of the @Input property */ - protected _queryInput(key: string): any; - /** - * Was the directive's default selector used ? - * If not, use the fallback value! - */ - protected _getDefaultVal(key: string, fallbackVal: any): string | boolean; - /** - * Quick accessor to the current HTMLElement's `display` style - * Note: this allows us to preserve the original style - * and optional restore it when the mediaQueries deactivate - */ - protected _getDisplayStyle(source?: HTMLElement): string; - /** Quick accessor to raw attribute value on the target DOM element */ - protected _getAttributeValue(attribute: string, source?: HTMLElement): string; - /** - * Determine the DOM element's Flexbox flow (flex-direction). - * - * Check inline style first then check computed (stylesheet) style. - * And optionally add the flow value to element's inline style. - */ - protected _getFlexFlowDirection(target: HTMLElement, addIfMissing?: boolean): string; - /** Applies styles given via string pair or object map to the directive element */ - protected _applyStyleToElement(style: StyleDefinition, value?: string | number, element?: HTMLElement): void; - /** Applies styles given via string pair or object map to the directive's element */ - protected _applyStyleToElements(style: StyleDefinition, elements: HTMLElement[]): void; - /** - * Save the property value; which may be a complex object. - * Complex objects support property chains - */ - protected _cacheInput(key?: string, source?: any): void; - /** - * Build a ResponsiveActivation object used to manage subscriptions to mediaChange notifications - * and intelligent lookup of the directive's property value that corresponds to that mediaQuery - * (or closest match). - */ - protected _listenForMediaQueryChanges(key: string, defaultValue: any, onMediaQueryChange: MediaQuerySubscriber): ResponsiveActivation; - /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */ - protected readonly childrenNodes: HTMLElement[]; - protected readonly hasInitialized: boolean; - /** MediaQuery Activation Tracker */ - protected _mqActivation?: ResponsiveActivation; - /** Dictionary of input keys with associated values */ - protected _inputMap: { - [key: string]: any; - }; - /** - * Has the `ngOnInit()` method fired - * - * Used to allow *ngFor tasks to finish and support queries like - * getComputedStyle() during ngOnInit(). - */ - protected _hasInitialized: boolean; - /** Cache map for style computation */ - protected _styleCache: Map; -} diff --git a/typings/core/base/index.d.ts b/typings/core/base/index.d.ts index 8c84f13f8..00ab10425 100644 --- a/typings/core/base/index.d.ts +++ b/typings/core/base/index.d.ts @@ -5,6 +5,4 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -export * from './base'; -export * from './base-adapter'; export * from './base2'; diff --git a/typings/core/breakpoints/break-point-registry.d.ts b/typings/core/breakpoints/break-point-registry.d.ts index f9262df7c..a54f6846c 100644 --- a/typings/core/breakpoints/break-point-registry.d.ts +++ b/typings/core/breakpoints/break-point-registry.d.ts @@ -1,29 +1,18 @@ import { BreakPoint } from './break-point'; +export declare type OptionalBreakPoint = BreakPoint | null; /** * Registry of 1..n MediaQuery breakpoint ranges * This is published as a provider and may be overridden from custom, application-specific ranges * */ export declare class BreakPointRegistry { - private _registry; - constructor(_registry: BreakPoint[]); - /** - * Accessor to raw list - */ readonly items: BreakPoint[]; - /** - * Accessor to sorted list used for registration with matchMedia API - * - * NOTE: During breakpoint registration, we want to register the overlaps FIRST - * so the non-overlaps will trigger the MatchMedia:BehaviorSubject last! - * And the largest, non-overlap, matching breakpoint should be the lastReplay value - */ - readonly sortedItems: BreakPoint[]; + constructor(list: BreakPoint[]); /** * Search breakpoints by alias (e.g. gt-xs) */ - findByAlias(alias: string): BreakPoint | null; - findByQuery(query: string): BreakPoint | null; + findByAlias(alias: string): OptionalBreakPoint; + findByQuery(query: string): OptionalBreakPoint; /** * Get all the breakpoints whose ranges could overlapping `normal` ranges; * e.g. gt-sm overlaps md, lg, and xl @@ -39,4 +28,12 @@ export declare class BreakPointRegistry { * for property layoutGtSM. */ readonly suffixes: string[]; + /** + * Memoized lookup using custom predicate function + */ + private findWithPredicate; + /** + * Memoized BreakPoint Lookups + */ + private readonly findByMap; } diff --git a/typings/core/breakpoints/breakpoint-tools.d.ts b/typings/core/breakpoints/breakpoint-tools.d.ts index 056c10729..f112ac0ba 100644 --- a/typings/core/breakpoints/breakpoint-tools.d.ts +++ b/typings/core/breakpoints/breakpoint-tools.d.ts @@ -17,5 +17,3 @@ export declare function validateSuffixes(list: BreakPoint[]): BreakPoint[]; * - Items are merged with the custom override if the alias exists in the default list */ export declare function mergeByAlias(defaults: BreakPoint[], custom?: BreakPoint[]): BreakPoint[]; -/** HOF to sort the breakpoints by priority */ -export declare function prioritySort(a: BreakPoint, b: BreakPoint): number; diff --git a/typings/core/breakpoints/data/break-points.d.ts b/typings/core/breakpoints/data/break-points.d.ts index 44d405840..89aa647e9 100644 --- a/typings/core/breakpoints/data/break-points.d.ts +++ b/typings/core/breakpoints/data/break-points.d.ts @@ -6,5 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ import { BreakPoint } from '../break-point'; -export declare const RESPONSIVE_ALIASES: string[]; +/** + * NOTE: Smaller ranges have HIGHER priority since the match is more specific + */ export declare const DEFAULT_BREAKPOINTS: BreakPoint[]; diff --git a/typings/core/breakpoints/index.d.ts b/typings/core/breakpoints/index.d.ts index 11f4d2025..7fad0fa56 100644 --- a/typings/core/breakpoints/index.d.ts +++ b/typings/core/breakpoints/index.d.ts @@ -10,4 +10,3 @@ export * from './data/orientation-break-points'; export * from './break-point'; export * from './break-point-registry'; export * from './break-points-token'; -export { prioritySort } from './breakpoint-tools'; diff --git a/typings/core/index.metadata.json b/typings/core/index.metadata.json index be6db8516..2dab88e46 100644 --- a/typings/core/index.metadata.json +++ b/typings/core/index.metadata.json @@ -1 +1 @@ -{"__symbolic":"module","version":4,"metadata":{"removeStyles":{"__symbolic":"function","parameters":["_document","platformId"],"value":{"__symbolic":"error","message":"Lambda not supported","line":16,"character":9,"module":"./browser-provider"}},"BROWSER_PROVIDER":{"provide":{"__symbolic":"reference","module":"@angular/core","name":"APP_BOOTSTRAP_LISTENER","line":37,"character":43},"useFactory":{"__symbolic":"reference","name":"removeStyles"},"deps":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":39,"character":9},{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":39,"character":19}],"multi":true},"CLASS_NAME":"flex-layout-","CoreModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":18,"character":1},"arguments":[{"providers":[{"__symbolic":"reference","name":"BROWSER_PROVIDER"},{"__symbolic":"reference","name":"ObservableMediaProvider"}]}]}],"members":{}},"MediaQuerySubscriber":{"__symbolic":"interface"},"MediaChange":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[null,null,null,null]}],"clone":[{"__symbolic":"method"}]}},"StylesheetMap":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"addStyleToElement":[{"__symbolic":"method"}],"clearStyles":[{"__symbolic":"method"}],"getStyleForElement":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutConfigOptions":{"__symbolic":"interface"},"DEFAULT_CONFIG":{"addFlexToParent":true,"addOrientationBps":false,"disableDefaultBps":false,"disableVendorPrefixes":false,"serverLoaded":false,"useColumnBasisZero":true},"LAYOUT_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":28,"character":33},"arguments":["Flex Layout token, config options for the library",{"__symbolic":"error","message":"Lambda not supported","line":31,"character":13,"module":"./tokens/library-config"}]},"SERVER_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":32},"arguments":["FlexLayoutServerLoaded",{"__symbolic":"error","message":"Lambda not supported","line":18,"character":13,"module":"./tokens/server-token"}]},"BREAKPOINT":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":10,"character":30},"arguments":["Flex Layout token, collect all breakpoints into one provider",{"__symbolic":"error","message":"Lambda not supported","line":13,"character":13,"module":"./tokens/breakpoint-token"}]},"BaseDirective":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"MediaMonitor"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":61,"character":47},{"__symbolic":"reference","name":"StyleUtils"},{"__symbolic":"reference","name":"StyleBuilder"}]}],"hasResponsiveAPI":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"addStyles":[{"__symbolic":"method"}],"_queryInput":[{"__symbolic":"method"}],"_getDefaultVal":[{"__symbolic":"method"}],"_getDisplayStyle":[{"__symbolic":"method"}],"_getAttributeValue":[{"__symbolic":"method"}],"_getFlexFlowDirection":[{"__symbolic":"method"}],"_applyStyleToElement":[{"__symbolic":"method"}],"_applyStyleToElements":[{"__symbolic":"method"}],"_cacheInput":[{"__symbolic":"method"}],"_listenForMediaQueryChanges":[{"__symbolic":"method"}]}},"BaseDirectiveAdapter":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseDirective"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"MediaMonitor"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":52,"character":37},{"__symbolic":"reference","name":"StyleUtils"}]}],"hasResponsiveAPI":[{"__symbolic":"method"}],"queryInput":[{"__symbolic":"method"}],"cacheInput":[{"__symbolic":"method"}],"listenForMediaQueryChanges":[{"__symbolic":"method"}],"_cacheInputRaw":[{"__symbolic":"method"}],"_cacheInputArray":[{"__symbolic":"method"}],"_cacheInputObject":[{"__symbolic":"method"}],"_cacheInputString":[{"__symbolic":"method"}]}},"BaseDirective2":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":46},{"__symbolic":"reference","name":"StyleBuilder"},{"__symbolic":"reference","name":"StyleUtils"},{"__symbolic":"reference","name":"MediaMarshaller"}]}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"addStyles":[{"__symbolic":"method"}],"clearStyles":[{"__symbolic":"method"}],"triggerUpdate":[{"__symbolic":"method"}],"getFlexFlowDirection":[{"__symbolic":"method"}],"applyStyleToElement":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}]}},"RESPONSIVE_ALIASES":["xs","gt-xs","sm","gt-sm","md","gt-md","lg","gt-lg","xl"],"DEFAULT_BREAKPOINTS":[{"alias":"xs","mediaQuery":"(min-width: 0px) and (max-width: 599px)","priority":100},{"alias":"gt-xs","overlapping":true,"mediaQuery":"(min-width: 600px)","priority":7},{"alias":"lt-sm","overlapping":true,"mediaQuery":"(max-width: 599px)","priority":10},{"alias":"sm","mediaQuery":"(min-width: 600px) and (max-width: 959px)","priority":100},{"alias":"gt-sm","overlapping":true,"mediaQuery":"(min-width: 960px)","priority":8},{"alias":"lt-md","overlapping":true,"mediaQuery":"(max-width: 959px)","priority":9},{"alias":"md","mediaQuery":"(min-width: 960px) and (max-width: 1279px)","priority":100},{"alias":"gt-md","overlapping":true,"mediaQuery":"(min-width: 1280px)","priority":9},{"alias":"lt-lg","overlapping":true,"mediaQuery":"(max-width: 1279px)","priority":8},{"alias":"lg","mediaQuery":"(min-width: 1280px) and (max-width: 1919px)","priority":100},{"alias":"gt-lg","overlapping":true,"mediaQuery":"(min-width: 1920px)","priority":10},{"alias":"lt-xl","overlapping":true,"mediaQuery":"(max-width: 1919px)","priority":7},{"alias":"xl","mediaQuery":"(min-width: 1920px) and (max-width: 5000px)","priority":100}],"ScreenTypes":{"HANDSET":"(orientation: portrait) and (max-width: 599px), (orientation: landscape) and (max-width: 959px)","TABLET":"(orientation: portrait) and (min-width: 600px) and (max-width: 839px) , (orientation: landscape) and (min-width: 960px) and (max-width: 1279px)","WEB":"(orientation: portrait) and (min-width: 840px), (orientation: landscape) and (min-width: 1280px) ","HANDSET_PORTRAIT":"(orientation: portrait) and (max-width: 599px)","TABLET_PORTRAIT":"(orientation: portrait) and (min-width: 600px) and (max-width: 839px) ","WEB_PORTRAIT":"(orientation: portrait) and (min-width: 840px)","HANDSET_LANDSCAPE":"(orientation: landscape) and (max-width: 959px)]","TABLET_LANDSCAPE":"(orientation: landscape) and (min-width: 960px) and (max-width: 1279px)","WEB_LANDSCAPE":"(orientation: landscape) and (min-width: 1280px)","$quoted$":["HANDSET","TABLET","WEB","HANDSET_PORTRAIT","TABLET_PORTRAIT","WEB_PORTRAIT","HANDSET_LANDSCAPE","TABLET_LANDSCAPE","WEB_LANDSCAPE"]},"ORIENTATION_BREAKPOINTS":[{"alias":"handset","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"HANDSET"},"$quoted$":["alias","mediaQuery"]},{"alias":"handset.landscape","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"HANDSET_LANDSCAPE"},"$quoted$":["alias","mediaQuery"]},{"alias":"handset.portrait","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"HANDSET_PORTRAIT"},"$quoted$":["alias","mediaQuery"]},{"alias":"tablet","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"TABLET"},"$quoted$":["alias","mediaQuery"]},{"alias":"tablet.landscape","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"TABLET"},"$quoted$":["alias","mediaQuery"]},{"alias":"tablet.portrait","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"TABLET_PORTRAIT"},"$quoted$":["alias","mediaQuery"]},{"alias":"web","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"WEB"},"overlapping":true,"$quoted$":["alias","mediaQuery"]},{"alias":"web.landscape","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"WEB_LANDSCAPE"},"overlapping":true,"$quoted$":["alias","mediaQuery"]},{"alias":"web.portrait","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"WEB_PORTRAIT"},"overlapping":true,"$quoted$":["alias","mediaQuery"]}],"BreakPoint":{"__symbolic":"interface"},"BreakPointRegistry":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":21,"character":15},"arguments":[{"__symbolic":"reference","name":"BREAKPOINTS"}]}]],"parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"BreakPoint"}]}]}],"findByAlias":[{"__symbolic":"method"}],"findByQuery":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"BREAKPOINTS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":21,"character":6},"arguments":["Token (@angular/flex-layout) Breakpoints",{"__symbolic":"error","message":"Lambda not supported","line":23,"character":13,"module":"./breakpoints/break-points-token"}]},"prioritySort":{"__symbolic":"function"},"MatchMedia":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":21,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":28,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":28,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":29,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":29,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":27,"character":31},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"any"}]}],"isActive":[{"__symbolic":"method"}],"observe":[{"__symbolic":"method"}],"registerQuery":[{"__symbolic":"method"}],"_buildMQL":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"MockMatchMedia":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"MatchMedia"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":33,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":33,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":34,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":34,"character":22}]}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":32,"character":21},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"BreakPointRegistry"}]}],"clearAll":[{"__symbolic":"method"}],"activate":[{"__symbolic":"method"}],"_validateQuery":[{"__symbolic":"method"}],"_activateWithOverlaps":[{"__symbolic":"method"}],"_activateByAlias":[{"__symbolic":"method"}],"_activateByQuery":[{"__symbolic":"method"}],"_deactivateAll":[{"__symbolic":"method"}],"_registerMediaQuery":[{"__symbolic":"method"}],"_buildMQL":[{"__symbolic":"method"}]}},"MockMediaQueryList":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"destroy":[{"__symbolic":"method"}],"activate":[{"__symbolic":"method"}],"deactivate":[{"__symbolic":"method"}],"addListener":[{"__symbolic":"method"}],"removeListener":[{"__symbolic":"method"}],"addEventListener":[{"__symbolic":"method"},{"__symbolic":"method"}],"removeEventListener":[{"__symbolic":"method"},{"__symbolic":"method"}],"dispatchEvent":[{"__symbolic":"method"}]}},"MockMatchMediaProvider":{"provide":{"__symbolic":"reference","name":"MatchMedia"},"useClass":{"__symbolic":"reference","name":"MockMatchMedia"}},"ServerMediaQueryList":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"destroy":[{"__symbolic":"method"}],"activate":[{"__symbolic":"method"}],"deactivate":[{"__symbolic":"method"}],"addListener":[{"__symbolic":"method"}],"removeListener":[{"__symbolic":"method"}],"addEventListener":[{"__symbolic":"method"},{"__symbolic":"method"}],"removeEventListener":[{"__symbolic":"method"},{"__symbolic":"method"}],"dispatchEvent":[{"__symbolic":"method"}]}},"ServerMatchMedia":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"MatchMedia"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":113,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":118,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":118,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":119,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":119,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":117,"character":31},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"any"}]}],"activateBreakpoint":[{"__symbolic":"method"}],"deactivateBreakpoint":[{"__symbolic":"method"}],"_buildMQL":[{"__symbolic":"method"}]}},"MediaMonitor":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":33,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"BreakPointRegistry"},{"__symbolic":"reference","name":"MatchMedia"}]}],"isActive":[{"__symbolic":"method"}],"observe":[{"__symbolic":"method"}],"_registerBreakpoints":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ObservableMedia":{"__symbolic":"class","members":{"isActive":[{"__symbolic":"method"}],"asObservable":[{"__symbolic":"method"}],"subscribe":[{"__symbolic":"method"},{"__symbolic":"method"}]}},"MediaService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":78,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"BreakPointRegistry"},{"__symbolic":"reference","name":"MatchMedia"}]}],"isActive":[{"__symbolic":"method"}],"subscribe":[{"__symbolic":"method"}],"asObservable":[{"__symbolic":"method"}],"_registerBreakPoints":[{"__symbolic":"method"}],"_buildObservable":[{"__symbolic":"method"}],"_findByAlias":[{"__symbolic":"method"}],"_findByQuery":[{"__symbolic":"method"}],"_toMediaQuery":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ObservableMediaProvider":{"provide":{"__symbolic":"reference","name":"ObservableMedia"},"useClass":{"__symbolic":"reference","name":"MediaService"}},"MediaObserver":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":58,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"BreakPointRegistry"},{"__symbolic":"reference","name":"MatchMedia"}]}],"isActive":[{"__symbolic":"method"}],"_registerBreakPoints":[{"__symbolic":"method"}],"_buildObservable":[{"__symbolic":"method"}],"_findByAlias":[{"__symbolic":"method"}],"_findByQuery":[{"__symbolic":"method"}],"_toMediaQuery":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"BreakPointX":{"__symbolic":"interface"},"KeyOptions":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Expression form not supported","line":31,"character":32,"module":"./responsive-activation/responsive-activation"}]}]}},"ResponsiveActivation":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"KeyOptions"},{"__symbolic":"reference","name":"MediaMonitor"},{"__symbolic":"reference","name":"MediaQuerySubscriber"}]}],"hasKeyValue":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"_configureChangeObservers":[{"__symbolic":"method"}],"_buildRegistryMap":[{"__symbolic":"method"}],"_onMonitorEvents":[{"__symbolic":"method"}],"_keyInUse":[{"__symbolic":"method"}],"_calculateActivatedValue":[{"__symbolic":"method"}],"_validateInputKey":[{"__symbolic":"method"}],"_lookupKeyValue":[{"__symbolic":"method"}]}},"StyleUtils":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":18,"character":15}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":19,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":19,"character":27},"arguments":[{"__symbolic":"reference","name":"SERVER_TOKEN"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":20,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":20,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":21,"character":15},"arguments":[{"__symbolic":"reference","name":"LAYOUT_CONFIG"}]}]],"parameters":[{"__symbolic":"reference","name":"StylesheetMap"},{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"LayoutConfigOptions"}]}],"applyStyleToElement":[{"__symbolic":"method"}],"applyStyleToElements":[{"__symbolic":"method"}],"getFlowDirection":[{"__symbolic":"method"}],"lookupAttributeValue":[{"__symbolic":"method"}],"lookupInlineStyle":[{"__symbolic":"method"}],"lookupStyle":[{"__symbolic":"method"}],"_applyMultiValueStyleToElement":[{"__symbolic":"method"}],"_setServerStyle":[{"__symbolic":"method"}],"_getServerStyle":[{"__symbolic":"method"}],"_readStyleAttribute":[{"__symbolic":"method"}],"_writeStyleAttribute":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"StyleDefinition":{"__symbolic":"interface"},"StyleBuilder":{"__symbolic":"class","members":{"buildStyles":[{"__symbolic":"method"}],"sideEffect":[{"__symbolic":"method"}]}},"validateBasis":{"__symbolic":"function"},"ElementMatcher":{"__symbolic":"interface"},"MediaMarshaller":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":38,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"MatchMedia"},{"__symbolic":"reference","name":"BreakPointRegistry"}]}],"activate":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"getValue":[{"__symbolic":"method"}],"hasValue":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"trackValue":[{"__symbolic":"method"}],"updateStyles":[{"__symbolic":"method"}],"clearElement":[{"__symbolic":"method"}],"updateElement":[{"__symbolic":"method"}],"releaseElement":[{"__symbolic":"method"}],"buildElementKeyMap":[{"__symbolic":"method"}],"watchExtraTriggers":[{"__symbolic":"method"}],"findByQuery":[{"__symbolic":"method"}],"getFallback":[{"__symbolic":"method"}],"registerBreakpoints":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}}},"origins":{"removeStyles":"./browser-provider","BROWSER_PROVIDER":"./browser-provider","CLASS_NAME":"./browser-provider","CoreModule":"./module","MediaQuerySubscriber":"./media-change","MediaChange":"./media-change","StylesheetMap":"./stylesheet-map/stylesheet-map","LayoutConfigOptions":"./tokens/library-config","DEFAULT_CONFIG":"./tokens/library-config","LAYOUT_CONFIG":"./tokens/library-config","SERVER_TOKEN":"./tokens/server-token","BREAKPOINT":"./tokens/breakpoint-token","BaseDirective":"./base/base","BaseDirectiveAdapter":"./base/base-adapter","BaseDirective2":"./base/base2","RESPONSIVE_ALIASES":"./breakpoints/data/break-points","DEFAULT_BREAKPOINTS":"./breakpoints/data/break-points","ScreenTypes":"./breakpoints/data/orientation-break-points","ORIENTATION_BREAKPOINTS":"./breakpoints/data/orientation-break-points","BreakPoint":"./breakpoints/break-point","BreakPointRegistry":"./breakpoints/break-point-registry","BREAKPOINTS":"./breakpoints/break-points-token","prioritySort":"./breakpoints/breakpoint-tools","MatchMedia":"./match-media/match-media","MockMatchMedia":"./match-media/mock/mock-match-media","MockMediaQueryList":"./match-media/mock/mock-match-media","MockMatchMediaProvider":"./match-media/mock/mock-match-media","ServerMediaQueryList":"./match-media/server-match-media","ServerMatchMedia":"./match-media/server-match-media","MediaMonitor":"./media-monitor/media-monitor","ObservableMedia":"./observable-media/observable-media","MediaService":"./observable-media/observable-media","ObservableMediaProvider":"./observable-media/observable-media","MediaObserver":"./media-observer/media-observer","BreakPointX":"./responsive-activation/responsive-activation","KeyOptions":"./responsive-activation/responsive-activation","ResponsiveActivation":"./responsive-activation/responsive-activation","StyleUtils":"./style-utils/style-utils","StyleDefinition":"./style-utils/style-utils","StyleBuilder":"./style-builder/style-builder","validateBasis":"./basis-validator/basis-validator","ElementMatcher":"./media-marshaller/media-marshaller","MediaMarshaller":"./media-marshaller/media-marshaller"},"importAs":"@angular/flex-layout/core"} \ No newline at end of file +{"__symbolic":"module","version":4,"metadata":{"CoreModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":17,"character":1},"arguments":[{"providers":[{"__symbolic":"reference","name":"BROWSER_PROVIDER"}]}]}],"members":{}},"removeStyles":{"__symbolic":"function","parameters":["_document","platformId"],"value":{"__symbolic":"error","message":"Lambda not supported","line":16,"character":9,"module":"./browser-provider"}},"BROWSER_PROVIDER":{"provide":{"__symbolic":"reference","module":"@angular/core","name":"APP_BOOTSTRAP_LISTENER","line":37,"character":43},"useFactory":{"__symbolic":"reference","name":"removeStyles"},"deps":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":39,"character":9},{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":39,"character":19}],"multi":true},"CLASS_NAME":"flex-layout-","MediaQuerySubscriber":{"__symbolic":"interface"},"MediaChange":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[null,null,null,null,null]}],"clone":[{"__symbolic":"method"}]}},"StylesheetMap":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"addStyleToElement":[{"__symbolic":"method"}],"clearStyles":[{"__symbolic":"method"}],"getStyleForElement":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutConfigOptions":{"__symbolic":"interface"},"DEFAULT_CONFIG":{"addFlexToParent":true,"addOrientationBps":false,"disableDefaultBps":false,"disableVendorPrefixes":false,"serverLoaded":false,"useColumnBasisZero":true,"printWithBreakpoints":[],"mediaTriggerAutoRestore":true,"ssrObserveBreakpoints":[]},"LAYOUT_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":34,"character":33},"arguments":["Flex Layout token, config options for the library",{"__symbolic":"error","message":"Lambda not supported","line":37,"character":15,"module":"./tokens/library-config"}]},"SERVER_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":32},"arguments":["FlexLayoutServerLoaded",{"__symbolic":"error","message":"Lambda not supported","line":18,"character":13,"module":"./tokens/server-token"}]},"BREAKPOINT":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":10,"character":30},"arguments":["Flex Layout token, collect all breakpoints into one provider",{"__symbolic":"error","message":"Lambda not supported","line":13,"character":13,"module":"./tokens/breakpoint-token"}]},"mergeAlias":{"__symbolic":"function"},"BaseDirective2":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":46},{"__symbolic":"reference","name":"StyleBuilder"},{"__symbolic":"reference","name":"StyleUtils"},{"__symbolic":"reference","name":"MediaMarshaller"}]}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"addStyles":[{"__symbolic":"method"}],"clearStyles":[{"__symbolic":"method"}],"triggerUpdate":[{"__symbolic":"method"}],"getFlexFlowDirection":[{"__symbolic":"method"}],"applyStyleToElement":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}]}},"DEFAULT_BREAKPOINTS":[{"alias":"xs","mediaQuery":"screen and (min-width: 0px) and (max-width: 599.9px)","priority":1000},{"alias":"sm","mediaQuery":"screen and (min-width: 600px) and (max-width: 959.9px)","priority":900},{"alias":"md","mediaQuery":"screen and (min-width: 960px) and (max-width: 1279.9px)","priority":800},{"alias":"lg","mediaQuery":"screen and (min-width: 1280px) and (max-width: 1919.9px)","priority":700},{"alias":"xl","mediaQuery":"screen and (min-width: 1920px) and (max-width: 4999.9px)","priority":600},{"alias":"lt-sm","overlapping":true,"mediaQuery":"screen and (max-width: 599.9px)","priority":950},{"alias":"lt-md","overlapping":true,"mediaQuery":"screen and (max-width: 959.9px)","priority":850},{"alias":"lt-lg","overlapping":true,"mediaQuery":"screen and (max-width: 1279.9px)","priority":750},{"alias":"lt-xl","overlapping":true,"priority":650,"mediaQuery":"screen and (max-width: 1919.9px)"},{"alias":"gt-xs","overlapping":true,"mediaQuery":"screen and (min-width: 600px)","priority":-950},{"alias":"gt-sm","overlapping":true,"mediaQuery":"screen and (min-width: 960px)","priority":-850},{"alias":"gt-md","overlapping":true,"mediaQuery":"screen and (min-width: 1280px)","priority":-750},{"alias":"gt-lg","overlapping":true,"mediaQuery":"screen and (min-width: 1920px)","priority":-650}],"ScreenTypes":{"HANDSET":"(orientation: portrait) and (max-width: 599.9px), (orientation: landscape) and (max-width: 959.9px)","TABLET":"(orientation: portrait) and (min-width: 600px) and (max-width: 839.9px) , (orientation: landscape) and (min-width: 960px) and (max-width: 1279.9px)","WEB":"(orientation: portrait) and (min-width: 840px), (orientation: landscape) and (min-width: 1280px) ","HANDSET_PORTRAIT":"(orientation: portrait) and (max-width: 599.9px)","TABLET_PORTRAIT":"(orientation: portrait) and (min-width: 600px) and (max-width: 839.9px) ","WEB_PORTRAIT":"(orientation: portrait) and (min-width: 840px)","HANDSET_LANDSCAPE":"(orientation: landscape) and (max-width: 959.9px)]","TABLET_LANDSCAPE":"(orientation: landscape) and (min-width: 960px) and (max-width: 1279.9px)","WEB_LANDSCAPE":"(orientation: landscape) and (min-width: 1280px)","$quoted$":["HANDSET","TABLET","WEB","HANDSET_PORTRAIT","TABLET_PORTRAIT","WEB_PORTRAIT","HANDSET_LANDSCAPE","TABLET_LANDSCAPE","WEB_LANDSCAPE"]},"ORIENTATION_BREAKPOINTS":[{"alias":"handset","priority":2000,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"HANDSET"},"$quoted$":["alias","mediaQuery"]},{"alias":"handset.landscape","priority":2000,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"HANDSET_LANDSCAPE"},"$quoted$":["alias","mediaQuery"]},{"alias":"handset.portrait","priority":2000,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"HANDSET_PORTRAIT"},"$quoted$":["alias","mediaQuery"]},{"alias":"tablet","priority":2100,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"TABLET"},"$quoted$":["alias","mediaQuery"]},{"alias":"tablet.landscape","priority":2100,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"TABLET"},"$quoted$":["alias","mediaQuery"]},{"alias":"tablet.portrait","priority":2100,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"TABLET_PORTRAIT"},"$quoted$":["alias","mediaQuery"]},{"alias":"web","priority":2200,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"WEB"},"overlapping":true,"$quoted$":["alias","mediaQuery"]},{"alias":"web.landscape","priority":2200,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"WEB_LANDSCAPE"},"overlapping":true,"$quoted$":["alias","mediaQuery"]},{"alias":"web.portrait","priority":2200,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"WEB_PORTRAIT"},"overlapping":true,"$quoted$":["alias","mediaQuery"]}],"BreakPoint":{"__symbolic":"interface"},"OptionalBreakPoint":{"__symbolic":"interface"},"BreakPointRegistry":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":20,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":24,"character":15},"arguments":[{"__symbolic":"reference","name":"BREAKPOINTS"}]}]],"parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"BreakPoint"}]}]}],"findByAlias":[{"__symbolic":"method"}],"findByQuery":[{"__symbolic":"method"}],"findWithPredicate":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"BREAKPOINTS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":21,"character":6},"arguments":["Token (@angular/flex-layout) Breakpoints",{"__symbolic":"error","message":"Lambda not supported","line":23,"character":13,"module":"./breakpoints/break-points-token"}]},"ɵMatchMedia":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":21,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":28,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":28,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":29,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":29,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":27,"character":31},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"any"}]}],"isActive":[{"__symbolic":"method"}],"observe":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"registerQuery":[{"__symbolic":"method"}],"buildMQL":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵMockMatchMedia":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵMatchMedia"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":26,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":26,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":27,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":27,"character":22}]}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":25,"character":21},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"BreakPointRegistry"}]}],"clearAll":[{"__symbolic":"method"}],"activate":[{"__symbolic":"method"}],"_validateQuery":[{"__symbolic":"method"}],"_activateWithOverlaps":[{"__symbolic":"method"}],"_activateByAlias":[{"__symbolic":"method"}],"_activateByQuery":[{"__symbolic":"method"}],"_deactivateAll":[{"__symbolic":"method"}],"_registerMediaQuery":[{"__symbolic":"method"}],"buildMQL":[{"__symbolic":"method"}]}},"ɵMockMatchMediaProvider":{"provide":{"__symbolic":"reference","name":"ɵMatchMedia"},"useClass":{"__symbolic":"reference","name":"ɵMockMatchMedia"}},"MediaObserver":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":62,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"BreakPointRegistry"},{"__symbolic":"reference","name":"ɵMatchMedia"},{"__symbolic":"reference","name":"PrintHook"}]}],"ngOnDestroy":[{"__symbolic":"method"}],"asObservable":[{"__symbolic":"method"}],"isActive":[{"__symbolic":"method"}],"watchActivations":[{"__symbolic":"method"}],"buildObservable":[{"__symbolic":"method"}],"findAllActivations":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"MediaTrigger":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":29,"character":7},"arguments":[{"__symbolic":"reference","name":"LAYOUT_CONFIG"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":30,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":30,"character":14}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":31,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":31,"character":14}]}]],"parameters":[{"__symbolic":"reference","name":"BreakPointRegistry"},{"__symbolic":"reference","name":"ɵMatchMedia"},{"__symbolic":"reference","name":"LayoutConfigOptions"},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"any"}]}],"activate":[{"__symbolic":"method"}],"restore":[{"__symbolic":"method"}],"prepareAutoRestore":[{"__symbolic":"method"}],"deactivateAll":[{"__symbolic":"method"}],"saveActivations":[{"__symbolic":"method"}],"setActivations":[{"__symbolic":"method"}],"simulateMediaChanges":[{"__symbolic":"method"}],"forceRegistryMatches":[{"__symbolic":"method"}],"cacheRegistryMatches":[{"__symbolic":"method"}],"restoreRegistryMatches":[{"__symbolic":"method"}],"emitChangeEvent":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"sortDescendingPriority":{"__symbolic":"function"},"sortAscendingPriority":{"__symbolic":"function"},"coerceArray":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"if","condition":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Array"},"member":"isArray"},"arguments":[{"__symbolic":"reference","name":"value"}]},"thenExpression":{"__symbolic":"reference","name":"value"},"elseExpression":[{"__symbolic":"reference","name":"value"}]}},"StyleUtils":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":18,"character":15}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":19,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":19,"character":27},"arguments":[{"__symbolic":"reference","name":"SERVER_TOKEN"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":20,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":20,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":21,"character":15},"arguments":[{"__symbolic":"reference","name":"LAYOUT_CONFIG"}]}]],"parameters":[{"__symbolic":"reference","name":"StylesheetMap"},{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"LayoutConfigOptions"}]}],"applyStyleToElement":[{"__symbolic":"method"}],"applyStyleToElements":[{"__symbolic":"method"}],"getFlowDirection":[{"__symbolic":"method"}],"lookupAttributeValue":[{"__symbolic":"method"}],"lookupInlineStyle":[{"__symbolic":"method"}],"lookupStyle":[{"__symbolic":"method"}],"_applyMultiValueStyleToElement":[{"__symbolic":"method"}],"_setServerStyle":[{"__symbolic":"method"}],"_getServerStyle":[{"__symbolic":"method"}],"_readStyleAttribute":[{"__symbolic":"method"}],"_writeStyleAttribute":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"StyleDefinition":{"__symbolic":"interface"},"StyleBuilder":{"__symbolic":"class","members":{"buildStyles":[{"__symbolic":"method"}],"sideEffect":[{"__symbolic":"method"}]}},"validateBasis":{"__symbolic":"function"},"ElementMatcher":{"__symbolic":"interface"},"MediaMarshaller":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":43,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵMatchMedia"},{"__symbolic":"reference","name":"BreakPointRegistry"},{"__symbolic":"reference","name":"PrintHook"}]}],"onMediaChange":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"getValue":[{"__symbolic":"method"}],"hasValue":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"trackValue":[{"__symbolic":"method"}],"updateStyles":[{"__symbolic":"method"}],"clearElement":[{"__symbolic":"method"}],"updateElement":[{"__symbolic":"method"}],"releaseElement":[{"__symbolic":"method"}],"triggerUpdate":[{"__symbolic":"method"}],"buildElementKeyMap":[{"__symbolic":"method"}],"watchExtraTriggers":[{"__symbolic":"method"}],"findByQuery":[{"__symbolic":"method"}],"getActivatedValues":[{"__symbolic":"method"}],"observeActivations":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"HookTarget":{"__symbolic":"interface"},"BREAKPOINT_PRINT":{"alias":"print","mediaQuery":"print","priority":1000},"PrintHook":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":38,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":42,"character":7},"arguments":[{"__symbolic":"reference","name":"LAYOUT_CONFIG"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":43,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":43,"character":14}]}]],"parameters":[{"__symbolic":"reference","name":"BreakPointRegistry"},{"__symbolic":"reference","name":"LayoutConfigOptions"},{"__symbolic":"reference","name":"Object"}]}],"withPrintQuery":[{"__symbolic":"method"}],"isPrintEvent":[{"__symbolic":"method"}],"getEventBreakpoints":[{"__symbolic":"method"}],"updateEvent":[{"__symbolic":"method"}],"registerBeforeAfterPrintHooks":[{"__symbolic":"method"}],"interceptEvents":[{"__symbolic":"method"}],"blockPropagation":[{"__symbolic":"method"}],"startPrinting":[{"__symbolic":"method"}],"stopPrinting":[{"__symbolic":"method"}],"collectActivations":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}}},"origins":{"CoreModule":"./module","removeStyles":"./browser-provider","BROWSER_PROVIDER":"./browser-provider","CLASS_NAME":"./browser-provider","MediaQuerySubscriber":"./media-change","MediaChange":"./media-change","StylesheetMap":"./stylesheet-map/stylesheet-map","LayoutConfigOptions":"./tokens/library-config","DEFAULT_CONFIG":"./tokens/library-config","LAYOUT_CONFIG":"./tokens/library-config","SERVER_TOKEN":"./tokens/server-token","BREAKPOINT":"./tokens/breakpoint-token","mergeAlias":"./add-alias","BaseDirective2":"./base/base2","DEFAULT_BREAKPOINTS":"./breakpoints/data/break-points","ScreenTypes":"./breakpoints/data/orientation-break-points","ORIENTATION_BREAKPOINTS":"./breakpoints/data/orientation-break-points","BreakPoint":"./breakpoints/break-point","OptionalBreakPoint":"./breakpoints/break-point-registry","BreakPointRegistry":"./breakpoints/break-point-registry","BREAKPOINTS":"./breakpoints/break-points-token","ɵMatchMedia":"./match-media/match-media","ɵMockMatchMedia":"./match-media/mock/mock-match-media","ɵMockMatchMediaProvider":"./match-media/mock/mock-match-media","MediaObserver":"./media-observer/media-observer","MediaTrigger":"./media-trigger/media-trigger","sortDescendingPriority":"./utils/sort","sortAscendingPriority":"./utils/sort","coerceArray":"./utils/array","StyleUtils":"./style-utils/style-utils","StyleDefinition":"./style-utils/style-utils","StyleBuilder":"./style-builder/style-builder","validateBasis":"./basis-validator/basis-validator","ElementMatcher":"./media-marshaller/media-marshaller","MediaMarshaller":"./media-marshaller/media-marshaller","HookTarget":"./media-marshaller/print-hook","BREAKPOINT_PRINT":"./media-marshaller/print-hook","PrintHook":"./media-marshaller/print-hook"},"importAs":"@angular/flex-layout/core"} \ No newline at end of file diff --git a/typings/core/match-media/index.d.ts b/typings/core/match-media/index.d.ts index bfc848183..aa89b73c0 100644 --- a/typings/core/match-media/index.d.ts +++ b/typings/core/match-media/index.d.ts @@ -7,4 +7,3 @@ */ export * from './match-media'; export * from './mock/mock-match-media'; -export * from './server-match-media'; diff --git a/typings/core/match-media/match-media.d.ts b/typings/core/match-media/match-media.d.ts index f391ba707..a910b11d7 100644 --- a/typings/core/match-media/match-media.d.ts +++ b/typings/core/match-media/match-media.d.ts @@ -19,31 +19,36 @@ export declare class MatchMedia { protected _zone: NgZone; protected _platformId: Object; protected _document: any; - protected _registry: Map; - protected _source: BehaviorSubject; - protected _observable$: Observable; + /** Initialize source with 'all' so all non-responsive APIs trigger style updates */ + readonly source: BehaviorSubject; + registry: Map; constructor(_zone: NgZone, _platformId: Object, _document: any); + /** + * Publish list of all current activations + */ + readonly activations: string[]; /** * For the specified mediaQuery? */ isActive(mediaQuery: string): boolean; /** * External observers can watch for all (or a specific) mql changes. - * Typically used by the MediaQueryAdaptor; optionally available to components - * who wish to use the MediaMonitor as mediaMonitor$ observable service. * - * NOTE: if a mediaQuery is not specified, then ALL mediaQuery activations will - * be announced. + * If a mediaQuery is not specified, then ALL mediaQuery activations will + * be announced. */ - observe(mediaQuery?: string): Observable; + observe(): Observable; + observe(mediaQueries: string[]): Observable; + observe(mediaQueries: string[], filterOthers: boolean): Observable; /** * Based on the BreakPointRegistry provider, register internal listeners for each unique * mediaQuery. Each listener emits specific MediaChange data to observers */ - registerQuery(mediaQuery: string | string[]): void; + registerQuery(mediaQuery: string | string[]): MediaChange[]; /** * Call window.matchMedia() to build a MediaQueryList; which * supports 0..n listeners for activation/deactivation */ - protected _buildMQL(query: string): MediaQueryList; + protected buildMQL(query: string): MediaQueryList; + protected _observable$: Observable; } diff --git a/typings/core/match-media/mock/mock-match-media.d.ts b/typings/core/match-media/mock/mock-match-media.d.ts index e235aba67..e58018a6c 100644 --- a/typings/core/match-media/mock/mock-match-media.d.ts +++ b/typings/core/match-media/mock/mock-match-media.d.ts @@ -15,14 +15,8 @@ import { BreakPointRegistry } from '../../breakpoints/break-point-registry'; */ export declare class MockMatchMedia extends MatchMedia { private _breakpoints; - /** Special flag used to test BreakPoint registrations with MatchMedia */ autoRegisterQueries: boolean; - /** - * Allow fallback to overlapping mediaQueries to determine - * activatedInput(s). - */ useOverlaps: boolean; - protected _registry: Map; constructor(_zone: NgZone, _platformId: Object, _document: any, _breakpoints: BreakPointRegistry); /** Easy method to clear all listeners for all mediaQueries */ clearAll(): void; @@ -31,7 +25,7 @@ export declare class MockMatchMedia extends MatchMedia { /** Converts an optional mediaQuery alias to a specific, valid mediaQuery */ _validateQuery(queryOrAlias: string): string; /** - * Manually activate any overlapping mediaQueries to simulate + * Manually onMediaChange any overlapping mediaQueries to simulate * similar functionality in the window.matchMedia() */ private _activateWithOverlaps; @@ -43,7 +37,7 @@ export declare class MockMatchMedia extends MatchMedia { * */ private _activateByQuery; - /** Deactivate all current Mock MQLs */ + /** Deactivate all current MQLs and reset the buffer */ private _deactivateAll; /** Insure the mediaQuery is registered with MatchMedia */ private _registerMediaQuery; @@ -51,9 +45,8 @@ export declare class MockMatchMedia extends MatchMedia { * Call window.matchMedia() to build a MediaQueryList; which * supports 0..n listeners for activation/deactivation */ - protected _buildMQL(query: string): MediaQueryList; + protected buildMQL(query: string): MediaQueryList; protected readonly hasActivated: boolean; - private _actives; } /** * Special internal class to simulate a MediaQueryList and @@ -79,7 +72,7 @@ export declare class MockMediaQueryList implements MediaQueryList { /** Add a listener to our internal list to activate later */ addListener(listener: MediaQueryListListener): void; /** Don't need to remove listeners in the testing environment */ - removeListener(_: EventListenerOrEventListenerObject | null): void; + removeListener(_: MediaQueryListListener | null): void; addEventListener(_: K, __: (this: MediaQueryList, ev: MediaQueryListEventMap[K]) => any, ___?: boolean | AddEventListenerOptions): void; removeEventListener(_: K, __: (this: MediaQueryList, ev: MediaQueryListEventMap[K]) => any, ___?: boolean | EventListenerOptions): void; dispatchEvent(_: Event): boolean; diff --git a/typings/core/media-change.d.ts b/typings/core/media-change.d.ts index c466494c7..7d1e3049d 100644 --- a/typings/core/media-change.d.ts +++ b/typings/core/media-change.d.ts @@ -14,6 +14,7 @@ export declare class MediaChange { mediaQuery: string; mqAlias: string; suffix: string; + priority: number; property: string; value: any; /** @@ -21,8 +22,9 @@ export declare class MediaChange { * @param mediaQuery e.g. (min-width: 600px) and (max-width: 959px) * @param mqAlias e.g. gt-sm, md, gt-lg * @param suffix e.g. GtSM, Md, GtLg + * @param priority the priority of activation for the given breakpoint */ - constructor(matches?: boolean, mediaQuery?: string, mqAlias?: string, suffix?: string); + constructor(matches?: boolean, mediaQuery?: string, mqAlias?: string, suffix?: string, priority?: number); /** Create an exact copy of the MediaChange */ clone(): MediaChange; } diff --git a/typings/core/media-marshaller/media-marshaller.d.ts b/typings/core/media-marshaller/media-marshaller.d.ts index 915bf755f..5f6bb7457 100644 --- a/typings/core/media-marshaller/media-marshaller.d.ts +++ b/typings/core/media-marshaller/media-marshaller.d.ts @@ -2,6 +2,7 @@ import { Observable } from 'rxjs'; import { BreakPointRegistry } from '../breakpoints/break-point-registry'; import { MatchMedia } from '../match-media/match-media'; import { MediaChange } from '../media-change'; +import { PrintHook } from './print-hook'; declare type ClearCallback = () => void; declare type UpdateCallback = (val: any) => void; export interface ElementMatcher { @@ -16,20 +17,21 @@ export interface ElementMatcher { export declare class MediaMarshaller { protected matchMedia: MatchMedia; protected breakpoints: BreakPointRegistry; + protected hook: PrintHook; private activatedBreakpoints; private elementMap; private elementKeyMap; private watcherMap; - private builderMap; - private clearBuilderMap; + private updateMap; + private clearMap; private subject; - readonly activatedBreakpoint: string; - constructor(matchMedia: MatchMedia, breakpoints: BreakPointRegistry); + readonly activatedAlias: string; + constructor(matchMedia: MatchMedia, breakpoints: BreakPointRegistry, hook: PrintHook); /** - * activate or deactivate a given breakpoint + * Update styles on breakpoint activates or deactivates * @param mc */ - activate(mc: MediaChange): void; + onMediaChange(mc: MediaChange): void; /** * initialize the marshaller with necessary elements for delegation on an element * @param element @@ -82,6 +84,12 @@ export declare class MediaMarshaller { * @param element */ releaseElement(element: HTMLElement): void; + /** + * trigger an update for a given element and key (e.g. layout) + * @param element + * @param key + */ + triggerUpdate(element: HTMLElement, key?: string): void; /** Cross-reference for HTMLElement with directive key */ private buildElementKeyMap; /** @@ -98,7 +106,10 @@ export declare class MediaMarshaller { * @param bpMap * @param key */ - private getFallback; - private registerBreakpoints; + private getActivatedValues; + /** + * Watch for mediaQuery breakpoint activations + */ + private observeActivations; } export {}; diff --git a/typings/core/media-marshaller/print-hook.d.ts b/typings/core/media-marshaller/print-hook.d.ts new file mode 100644 index 000000000..81cced90f --- /dev/null +++ b/typings/core/media-marshaller/print-hook.d.ts @@ -0,0 +1,80 @@ +import { MediaChange } from '../media-change'; +import { BreakPoint } from '../breakpoints/break-point'; +import { LayoutConfigOptions } from '../tokens/library-config'; +import { BreakPointRegistry, OptionalBreakPoint } from '../breakpoints/break-point-registry'; +/** + * Interface to apply PrintHook to call anonymous `target.updateStyles()` + */ +export interface HookTarget { + activatedBreakpoints: BreakPoint[]; + updateStyles(): void; +} +export declare const BREAKPOINT_PRINT: { + alias: string; + mediaQuery: string; + priority: number; +}; +/** + * PrintHook - Use to intercept print MediaQuery activations and force + * layouts to render with the specified print alias/breakpoint + * + * Used in MediaMarshaller and MediaObserver + */ +export declare class PrintHook { + protected breakpoints: BreakPointRegistry; + protected layoutConfig: LayoutConfigOptions; + protected _platformId: Object; + constructor(breakpoints: BreakPointRegistry, layoutConfig: LayoutConfigOptions, _platformId: Object); + /** Add 'print' mediaQuery: to listen for matchMedia activations */ + withPrintQuery(queries: string[]): string[]; + /** Is the MediaChange event for any 'print' @media */ + isPrintEvent(e: MediaChange): Boolean; + /** What is the desired mqAlias to use while printing? */ + readonly printAlias: string[]; + /** Lookup breakpoints associated with print aliases. */ + readonly printBreakPoints: BreakPoint[]; + /** Lookup breakpoint associated with mediaQuery */ + getEventBreakpoints({ mediaQuery }: MediaChange): BreakPoint[]; + /** Update event with printAlias mediaQuery information */ + updateEvent(event: MediaChange): MediaChange; + private registeredBeforeAfterPrintHooks; + private isPrintingBeforeAfterEvent; + private registerBeforeAfterPrintHooks; + /** + * Prepare RxJs filter operator with partial application + * @return pipeable filter predicate + */ + interceptEvents(target: HookTarget): (event: MediaChange) => void; + /** Stop mediaChange event propagation in event streams */ + blockPropagation(): (event: MediaChange) => boolean; + /** + * Save current activateBreakpoints (for later restore) + * and substitute only the printAlias breakpoint + */ + protected startPrinting(target: HookTarget, bpList: OptionalBreakPoint[]): void; + /** For any print de-activations, reset the entire print queue */ + protected stopPrinting(target: HookTarget): void; + /** + * To restore pre-Print Activations, we must capture the proper + * list of breakpoint activations BEFORE print starts. OnBeforePrint() + * is supported; so 'print' mediaQuery activations are used as a fallback + * in browsers without `beforeprint` support. + * + * > But activated breakpoints are deactivated BEFORE 'print' activation. + * + * Let's capture all de-activations using the following logic: + * + * When not printing: + * - clear cache when activating non-print breakpoint + * - update cache (and sort) when deactivating + * + * When printing: + * - sort and save when starting print + * - restore as activatedTargets and clear when stop printing + */ + collectActivations(event: MediaChange): void; + /** Is this service currently in Print-mode ? */ + private isPrinting; + private queue; + private deactivations; +} diff --git a/typings/core/media-monitor/media-monitor.d.ts b/typings/core/media-monitor/media-monitor.d.ts deleted file mode 100644 index 635ca077a..000000000 --- a/typings/core/media-monitor/media-monitor.d.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { Observable } from 'rxjs'; -import { BreakPoint } from '../breakpoints/break-point'; -import { BreakPointRegistry } from '../breakpoints/break-point-registry'; -import { MatchMedia } from '../match-media/match-media'; -import { MediaChange } from '../media-change'; -/** - * MediaMonitor uses the MatchMedia service to observe mediaQuery changes (both activations and - * deactivations). These changes are are published as MediaChange notifications. - * - * Note: all notifications will be performed within the - * ng Zone to trigger change detections and component updates. - * - * It is the MediaMonitor that: - * - auto registers all known breakpoints - * - injects alias information into each raw MediaChange event - * - provides accessor to the currently active BreakPoint - * - publish list of overlapping BreakPoint(s); used by ResponsiveActivation - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export declare class MediaMonitor { - private _breakpoints; - private _matchMedia; - constructor(_breakpoints: BreakPointRegistry, _matchMedia: MatchMedia); - /** - * Read-only accessor to the list of breakpoints configured in the BreakPointRegistry provider - */ - readonly breakpoints: BreakPoint[]; - readonly activeOverlaps: BreakPoint[]; - readonly active: BreakPoint | null; - /** - * For the specified mediaQuery alias, is the mediaQuery range active? - */ - isActive(alias: string): boolean; - /** - * External observers can watch for all (or a specific) mql changes. - * If specific breakpoint is observed, only return *activated* events - * otherwise return all events for BOTH activated + deactivated changes. - */ - observe(alias?: string): Observable; - /** - * Immediate calls to matchMedia() to establish listeners - * and prepare for immediate subscription notifications - */ - private _registerBreakpoints; -} diff --git a/typings/core/media-observer/media-observer.d.ts b/typings/core/media-observer/media-observer.d.ts index f98dacdca..0a03c45cf 100644 --- a/typings/core/media-observer/media-observer.d.ts +++ b/typings/core/media-observer/media-observer.d.ts @@ -1,23 +1,30 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +import { OnDestroy } from '@angular/core'; import { Observable } from 'rxjs'; -import { BreakPointRegistry } from '../breakpoints/break-point-registry'; import { MediaChange } from '../media-change'; import { MatchMedia } from '../match-media/match-media'; +import { PrintHook } from '../media-marshaller/print-hook'; +import { BreakPointRegistry } from '../breakpoints/break-point-registry'; /** - * Class internalizes a MatchMedia service and exposes an Observable interface. - - * This exposes an Observable with a feature to subscribe to mediaQuery - * changes and a validator method (`isActive()`) to test if a mediaQuery (or alias) is - * currently active. + * MediaObserver enables applications to listen for 1..n mediaQuery activations and to determine + * if a mediaQuery is currently activated. * - * !! Only mediaChange activations (not de-activations) are announced by the MediaObserver + * Since a breakpoint change will first deactivate 1...n mediaQueries and then possibly activate + * 1..n mediaQueries, the MediaObserver will debounce notifications and report ALL *activations* + * in 1 event notification. The reported activations will be sorted in descending priority order. * * This class uses the BreakPoint Registry to inject alias information into the raw MediaChange * notification. For custom mediaQuery notifications, alias information will not be injected and * those fields will be ''. * - * !! This is not an actual Observable. It is a wrapper of an Observable used to publish additional - * methods like `isActive(). To access the Observable and use RxJS operators, use - * `.media$` with syntax like mediaObserver.media$.map(....). + * Note: Developers should note that only mediaChange activations (not de-activations) + * are announced by the MediaObserver. * * @usage * @@ -30,57 +37,76 @@ import { MatchMedia } from '../match-media/match-media'; * status: string = ''; * * constructor(mediaObserver: MediaObserver) { - * const onChange = (change: MediaChange) => { - * this.status = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : ''; - * }; + * const media$ = mediaObserver.asObservable().pipe( + * filter((changes: MediaChange[]) => true) // silly noop filter + * ); * - * // Subscribe directly or access observable to use filter/map operators - * // e.g. mediaObserver.media$.subscribe(onChange); + * media$.subscribe((changes: MediaChange[]) => { + * let status = ''; + * changes.forEach( change => { + * status += `'${change.mqAlias}' = (${change.mediaQuery})
` ; + * }); + * this.status = status; + * }); * - * mediaObserver.media$() - * .pipe( - * filter((change: MediaChange) => true) // silly noop filter - * ).subscribe(onChange); * } * } */ -export declare class MediaObserver { - private breakpoints; - private mediaWatcher; +export declare class MediaObserver implements OnDestroy { + protected breakpoints: BreakPointRegistry; + protected matchMedia: MatchMedia; + protected hook: PrintHook; /** - * Whether to announce gt- breakpoint activations + * @deprecated Use `asObservable()` instead. + * @breaking-change 8.0.0-beta.25 + * @deletion-target v8.0.0-beta.26 */ - filterOverlaps: boolean; readonly media$: Observable; - constructor(breakpoints: BreakPointRegistry, mediaWatcher: MatchMedia); + /** Filter MediaChange notifications for overlapping breakpoints */ + filterOverlaps: boolean; + constructor(breakpoints: BreakPointRegistry, matchMedia: MatchMedia, hook: PrintHook); + /** + * Completes the active subject, signalling to all complete for all + * MediaObserver subscribers + */ + ngOnDestroy(): void; /** - * Test if specified query/alias is active. + * Observe changes to current activation 'list' */ - isActive(alias: string): boolean; + asObservable(): Observable; + /** + * Allow programmatic query to determine if one or more media query/alias match + * the current viewport size. + * @param value One or more media queries (or aliases) to check. + * @returns Whether any of the media queries match. + */ + isActive(value: string | string[]): boolean; /** * Register all the mediaQueries registered in the BreakPointRegistry * This is needed so subscribers can be auto-notified of all standard, registered * mediaQuery activations */ - private _registerBreakPoints; + private watchActivations; /** - * Prepare internal observable + * Only pass/announce activations (not de-activations) + * + * Since multiple-mediaQueries can be activation in a cycle, + * gather all current activations into a single list of changes to observers + * + * Inject associated (if any) alias information into the MediaChange event + * - Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only + * - Exclude print activations that do not have an associated mediaQuery * * NOTE: the raw MediaChange events [from MatchMedia] do not * contain important alias information; as such this info * must be injected into the MediaChange */ - private _buildObservable; - /** - * Breakpoint locator by alias - */ - private _findByAlias; - /** - * Breakpoint locator by mediaQuery - */ - private _findByQuery; + private buildObservable; /** - * Find associated breakpoint (if any) + * Find all current activations and prepare single list of activations + * sorted by descending priority. */ - private _toMediaQuery; + private findAllActivations; + private readonly _media$; + private readonly destroyed$; } diff --git a/typings/core/media-monitor/index.d.ts b/typings/core/media-trigger/index.d.ts similarity index 85% rename from typings/core/media-monitor/index.d.ts rename to typings/core/media-trigger/index.d.ts index 59c43b640..42af86d6f 100644 --- a/typings/core/media-monitor/index.d.ts +++ b/typings/core/media-trigger/index.d.ts @@ -5,4 +5,4 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -export * from './media-monitor'; +export * from './media-trigger'; diff --git a/typings/core/media-trigger/media-trigger.d.ts b/typings/core/media-trigger/media-trigger.d.ts new file mode 100644 index 000000000..161ead05a --- /dev/null +++ b/typings/core/media-trigger/media-trigger.d.ts @@ -0,0 +1,70 @@ +import { MatchMedia } from '../match-media/match-media'; +import { BreakPointRegistry } from '../breakpoints/break-point-registry'; +import { LayoutConfigOptions } from '../tokens/library-config'; +/** + * Class + */ +export declare class MediaTrigger { + protected breakpoints: BreakPointRegistry; + protected matchMedia: MatchMedia; + protected layoutConfig: LayoutConfigOptions; + protected _platformId: Object; + protected _document: any; + constructor(breakpoints: BreakPointRegistry, matchMedia: MatchMedia, layoutConfig: LayoutConfigOptions, _platformId: Object, _document: any); + /** + * Manually activate range of breakpoints + * @param list array of mediaQuery or alias strings + */ + activate(list: string[]): void; + /** + * Restore original, 'real' breakpoints and emit events + * to trigger stream notification + */ + restore(): void; + /** + * Whenever window resizes, immediately auto-restore original + * activations (if we are simulating activations) + */ + private prepareAutoRestore; + /** + * Notify all matchMedia subscribers of de-activations + * + * Note: we must force 'matches' updates for + * future matchMedia::activation lookups + */ + private deactivateAll; + /** + * Cache current activations as sorted, prioritized list of MediaChanges + */ + private saveActivations; + /** + * Force set manual activations for specified mediaQuery list + */ + private setActivations; + /** + * For specified mediaQuery list manually simulate activations or deactivations + */ + private simulateMediaChanges; + /** + * Replace current registry with simulated registry... + * Note: this is required since MediaQueryList::matches is 'readOnly' + */ + private forceRegistryMatches; + /** + * Save current MatchMedia::registry items. + */ + private cacheRegistryMatches; + /** + * Restore original, 'true' registry + */ + private restoreRegistryMatches; + /** + * Manually emit a MediaChange event via the MatchMedia to MediaMarshaller and MediaObserver + */ + private emitChangeEvent; + private readonly currentActivations; + private hasCachedRegistryMatches; + private originalActivations; + private originalRegistry; + private resizeSubscription; +} diff --git a/typings/core/observable-media/observable-media.d.ts b/typings/core/observable-media/observable-media.d.ts deleted file mode 100644 index 2eab41422..000000000 --- a/typings/core/observable-media/observable-media.d.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { Observable, PartialObserver, Subscribable, Subscription } from 'rxjs'; -import { BreakPointRegistry } from '../breakpoints/break-point-registry'; -import { MediaChange } from '../media-change'; -import { MatchMedia } from '../match-media/match-media'; -/** - * Base class for MediaService and pseudo-token for - * @deprecated use MediaObserver instead - * @deletion-target v7.0.0-beta.21 - */ -export declare abstract class ObservableMedia implements Subscribable { - abstract isActive(query: string): boolean; - abstract asObservable(): Observable; - abstract subscribe(next?: (value: MediaChange) => void, error?: (error: any) => void, complete?: () => void): Subscription; - abstract subscribe(observer?: PartialObserver): Subscription; -} -/** - * Class internalizes a MatchMedia service and exposes an Subscribable and Observable interface. - - * This an Observable with that exposes a feature to subscribe to mediaQuery - * changes and a validator method (`isActive()`) to test if a mediaQuery (or alias) is - * currently active. - * - * !! Only mediaChange activations (not de-activations) are announced by the ObservableMedia - * - * This class uses the BreakPoint Registry to inject alias information into the raw MediaChange - * notification. For custom mediaQuery notifications, alias information will not be injected and - * those fields will be ''. - * - * !! This is not an actual Observable. It is a wrapper of an Observable used to publish additional - * methods like `isActive(). To access the Observable and use RxJS operators, use - * `.asObservable()` with syntax like media.asObservable().map(....). - * - * @usage - * - * // RxJS - * import {filter} from 'rxjs/operators/filter'; - * import { ObservableMedia } from '@angular/flex-layout'; - * - * @Component({ ... }) - * export class AppComponent { - * status : string = ''; - * - * constructor( media:ObservableMedia ) { - * let onChange = (change:MediaChange) => { - * this.status = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : ''; - * }; - * - * // Subscribe directly or access observable to use filter/map operators - * // e.g. - * // media.subscribe(onChange); - * - * media.asObservable() - * .pipe( - * filter((change:MediaChange) => true) // silly noop filter - * ).subscribe(onChange); - * } - * } - * @deprecated use MediaObserver instead - * @deletion-target v7.0.0-beta.21 - */ -export declare class MediaService implements ObservableMedia { - private breakpoints; - private mediaWatcher; - /** - * Should we announce gt- breakpoint activations ? - */ - filterOverlaps: boolean; - constructor(breakpoints: BreakPointRegistry, mediaWatcher: MatchMedia); - /** - * Test if specified query/alias is active. - */ - isActive(alias: string): boolean; - /** - * Proxy to the Observable subscribe method - */ - subscribe(observerOrNext?: PartialObserver | ((value: MediaChange) => void), error?: (error: any) => void, complete?: () => void): Subscription; - /** - * Access to observable for use with operators like - * .filter(), .map(), etc. - */ - asObservable(): Observable; - /** - * Register all the mediaQueries registered in the BreakPointRegistry - * This is needed so subscribers can be auto-notified of all standard, registered - * mediaQuery activations - */ - private _registerBreakPoints; - /** - * Prepare internal observable - * - * NOTE: the raw MediaChange events [from MatchMedia] do not - * contain important alias information; as such this info - * must be injected into the MediaChange - */ - private _buildObservable; - /** - * Breakpoint locator by alias - */ - private _findByAlias; - /** - * Breakpoint locator by mediaQuery - */ - private _findByQuery; - /** - * Find associated breakpoint (if any) - */ - private _toMediaQuery; - private readonly observable$; -} -/** - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export declare const ObservableMediaProvider: { - provide: typeof ObservableMedia; - useClass: typeof MediaService; -}; diff --git a/typings/core/public-api.d.ts b/typings/core/public-api.d.ts index 8ddacac22..02ed7d038 100644 --- a/typings/core/public-api.d.ts +++ b/typings/core/public-api.d.ts @@ -5,19 +5,20 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -export * from './browser-provider'; export * from './module'; +export * from './browser-provider'; export * from './media-change'; export * from './stylesheet-map/index'; export * from './tokens/index'; +export * from './add-alias'; export * from './base/index'; export * from './breakpoints/index'; -export * from './match-media/index'; -export * from './media-monitor/index'; -export * from './observable-media/index'; +export { MatchMedia as ɵMatchMedia, MockMatchMedia as ɵMockMatchMedia, MockMatchMediaProvider as ɵMockMatchMediaProvider, } from './match-media/index'; export * from './media-observer/index'; -export * from './responsive-activation/responsive-activation'; +export * from './media-trigger/index'; +export * from './utils/index'; export * from './style-utils/style-utils'; export * from './style-builder/style-builder'; export * from './basis-validator/basis-validator'; export * from './media-marshaller/media-marshaller'; +export * from './media-marshaller/print-hook'; diff --git a/typings/core/responsive-activation/responsive-activation.d.ts b/typings/core/responsive-activation/responsive-activation.d.ts deleted file mode 100644 index 68e0b929e..000000000 --- a/typings/core/responsive-activation/responsive-activation.d.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { MediaChange, MediaQuerySubscriber } from '../media-change'; -import { BreakPoint } from '../breakpoints/break-point'; -import { MediaMonitor } from '../media-monitor/media-monitor'; -/** - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export interface BreakPointX extends BreakPoint { - key: string; - baseKey: string; -} -/** - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export declare class KeyOptions { - baseKey: string; - defaultValue: string | number | boolean; - inputKeys: { - [key: string]: any; - }; - constructor(baseKey: string, defaultValue: string | number | boolean, inputKeys: { - [key: string]: any; - }); -} -/** - * ResponsiveActivation acts as a proxy between the MonitorMedia service (which emits mediaQuery - * changes) and the fx API directives. The MQA proxies mediaQuery change events and notifies the - * directive via the specified callback. - * - * - The MQA also determines which directive property should be used to determine the - * current change 'value'... BEFORE the original `onMediaQueryChanges()` method is called. - * - The `ngOnDestroy()` method is also head-hooked to enable auto-unsubscribe from the - * MediaQueryServices. - * - * NOTE: these interceptions enables the logic in the fx API directives to remain terse and clean. - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export declare class ResponsiveActivation { - private _options; - private _mediaMonitor; - private _onMediaChanges; - private _activatedInputKey; - private _registryMap; - private _subscribers; - /** - * Constructor - */ - constructor(_options: KeyOptions, _mediaMonitor: MediaMonitor, _onMediaChanges: MediaQuerySubscriber); - /** - * Get a readonly sorted list of the breakpoints corresponding to the directive properties - * defined in the HTML markup: the sorting is done from largest to smallest. The order is - * important when several media queries are 'registered' and from which, the browser uses the - * first matching media query. - */ - readonly registryFromLargest: BreakPointX[]; - /** - * Determine which directive @Input() property is currently active (for the viewport size): - * The key must be defined (in use) or fallback to the 'closest' overlapping property key - * that is defined; otherwise the default property key will be used. - * e.g. - * if `
` is used but the current activated mediaQuery alias - * key is `.md` then `.gt-sm` should be used instead - */ - readonly activatedInputKey: string; - /** - * Get the currently activated @Input value or the fallback default @Input value - */ - readonly activatedInput: any; - /** - * Fast validator for presence of attribute on the host element - */ - hasKeyValue(key: string): boolean; - /** - * Remove interceptors, restore original functions, and forward the onDestroy() call - */ - destroy(): void; - /** - * For each *defined* API property, register a callback to `_onMonitorEvents( )` - * Cache 1..n subscriptions for internal auto-unsubscribes when the the directive destructs - */ - private _configureChangeObservers; - /** - * Build mediaQuery key-hashmap; only for the directive properties that are actually defined/used - * in the HTML markup - */ - private _buildRegistryMap; - /** - * Synchronizes change notifications with the current mq-activated @Input and calculates the - * mq-activated input value or the default value - */ - protected _onMonitorEvents(change: MediaChange): void; - /** - * Has the key been specified in the HTML markup and thus is intended - * to participate in activation processes. - */ - private _keyInUse; - /** - * Map input key associated with mediaQuery activation to closest defined input key - * then return the values associated with the targeted input property - * - * !! change events may arrive out-of-order (activate before deactivate) - * so make sure the deactivate is used ONLY when the keys match - * (since a different activate may be in use) - */ - private _calculateActivatedValue; - /** - * For the specified input property key, validate it is defined (used in the markup) - * If not see if a overlapping mediaQuery-related input key fallback has been defined - * - * NOTE: scans in the order defined by activeOverLaps (largest viewport ranges -> smallest ranges) - */ - private _validateInputKey; - /** - * Get the value (if any) for the directive instances @Input property (aka key) - */ - private _lookupKeyValue; -} diff --git a/typings/core/tokens/library-config.d.ts b/typings/core/tokens/library-config.d.ts index 6b9ff306b..7cb0bf3f2 100644 --- a/typings/core/tokens/library-config.d.ts +++ b/typings/core/tokens/library-config.d.ts @@ -14,6 +14,9 @@ export interface LayoutConfigOptions { disableVendorPrefixes?: boolean; serverLoaded?: boolean; useColumnBasisZero?: boolean; + printWithBreakpoints?: string[]; + mediaTriggerAutoRestore?: boolean; + ssrObserveBreakpoints?: string[]; } export declare const DEFAULT_CONFIG: LayoutConfigOptions; export declare const LAYOUT_CONFIG: InjectionToken; diff --git a/typings/core/utils/array.d.ts b/typings/core/utils/array.d.ts new file mode 100644 index 000000000..f5376b2cc --- /dev/null +++ b/typings/core/utils/array.d.ts @@ -0,0 +1,9 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** Wraps the provided value in an array, unless the provided value is an array. */ +export declare function coerceArray(value: T | T[]): T[]; diff --git a/typings/core/observable-media/index.d.ts b/typings/core/utils/index.d.ts similarity index 80% rename from typings/core/observable-media/index.d.ts rename to typings/core/utils/index.d.ts index a70750c29..d0b1b476e 100644 --- a/typings/core/observable-media/index.d.ts +++ b/typings/core/utils/index.d.ts @@ -5,4 +5,5 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -export * from './observable-media'; +export * from './sort'; +export * from './array'; diff --git a/typings/core/utils/sort.d.ts b/typings/core/utils/sort.d.ts new file mode 100644 index 000000000..5de0356c8 --- /dev/null +++ b/typings/core/utils/sort.d.ts @@ -0,0 +1,15 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +interface WithPriority { + priority?: number; +} +/** HOF to sort the breakpoints by descending priority */ +export declare function sortDescendingPriority(a: T | null, b: T | null): number; +/** HOF to sort the breakpoints by ascending priority */ +export declare function sortAscendingPriority(a: T, b: T): number; +export {}; diff --git a/typings/esm5/core/base/base-adapter.d.ts b/typings/esm5/core/base/base-adapter.d.ts deleted file mode 100644 index 67a53799f..000000000 --- a/typings/esm5/core/base/base-adapter.d.ts +++ /dev/null @@ -1,79 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -import { ElementRef } from '@angular/core'; -import { BaseDirective } from './base'; -import { ResponsiveActivation } from '../responsive-activation/responsive-activation'; -import { MediaQuerySubscriber } from '../media-change'; -import { MediaMonitor } from '../media-monitor/media-monitor'; -import { StyleUtils } from '../style-utils/style-utils'; -/** - * Adapter to the BaseDirective abstract class so it can be used via composition. - * @see BaseDirective - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export declare class BaseDirectiveAdapter extends BaseDirective { - protected _baseKey: string; - protected _mediaMonitor: MediaMonitor; - protected _elementRef: ElementRef; - protected _styler: StyleUtils; - /** - * Accessor to determine which @Input property is "active" - * e.g. which property value will be used. - */ - readonly activeKey: string; - /** Hash map of all @Input keys/values defined/used */ - readonly inputMap: { - [key: string]: any; - }; - /** - * @see BaseDirective._mqActivation - */ - readonly mqActivation: ResponsiveActivation; - /** - * BaseDirectiveAdapter constructor - */ - constructor(_baseKey: string, // non-responsive @Input property name - _mediaMonitor: MediaMonitor, _elementRef: ElementRef, _styler: StyleUtils); - /** - * Does this directive have 1 or more responsive keys defined - * Note: we exclude the 'baseKey' key (which is NOT considered responsive) - */ - hasResponsiveAPI(): boolean; - /** - * @see BaseDirective._queryInput - */ - queryInput(key: string | null): any; - /** - * Save the property value. - */ - cacheInput(key?: string, source?: any, cacheRaw?: boolean): void; - /** - * @see BaseDirective._listenForMediaQueryChanges - */ - listenForMediaQueryChanges(key: string, defaultValue: any, onMediaQueryChange: MediaQuerySubscriber): ResponsiveActivation; - /** - * No implicit transforms of the source. - * Required when caching values expected later for KeyValueDiffers - */ - protected _cacheInputRaw(key?: string, source?: any): void; - /** - * Save the property value for Array values. - */ - protected _cacheInputArray(key?: string, source?: boolean[]): void; - /** - * Save the property value for key/value pair values. - */ - protected _cacheInputObject(key?: string, source?: { - [key: string]: boolean; - }): void; - /** - * Save the property value for string values. - */ - protected _cacheInputString(key?: string, source?: string): void; -} diff --git a/typings/esm5/core/base/base.d.ts b/typings/esm5/core/base/base.d.ts deleted file mode 100644 index c645f97da..000000000 --- a/typings/esm5/core/base/base.d.ts +++ /dev/null @@ -1,109 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -import { ElementRef, OnDestroy, SimpleChanges, OnChanges } from '@angular/core'; -import { StyleDefinition, StyleUtils } from '../style-utils/style-utils'; -import { ResponsiveActivation } from '../responsive-activation/responsive-activation'; -import { MediaMonitor } from '../media-monitor/media-monitor'; -import { MediaQuerySubscriber } from '../media-change'; -import { StyleBuilder } from '../style-builder/style-builder'; -/** - * Abstract base class for the Layout API styling directives. - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export declare abstract class BaseDirective implements OnDestroy, OnChanges { - protected _mediaMonitor: MediaMonitor; - protected _elementRef: ElementRef; - protected _styler: StyleUtils; - protected _styleBuilder?: StyleBuilder | undefined; - /** - * Imperatively determine the current activated [input] value; - * if called before ngOnInit() this will return `undefined` - */ - /** - * Change the currently activated input value and force-update - * the injected CSS (by-passing change detection). - * - * NOTE: Only the currently activated input value will be modified; - * other input values will NOT be affected. - */ - activatedValue: string | number; - protected constructor(_mediaMonitor: MediaMonitor, _elementRef: ElementRef, _styler: StyleUtils, _styleBuilder?: StyleBuilder | undefined); - /** - * Does this directive have 1 or more responsive keys defined - * Note: we exclude the 'baseKey' key (which is NOT considered responsive) - */ - hasResponsiveAPI(baseKey: string): boolean; - /** - * Use post-component-initialization event to perform extra - * querying such as computed Display style - */ - ngOnInit(): void; - ngOnChanges(change: SimpleChanges): void; - ngOnDestroy(): void; - /** Access to host element's parent DOM node */ - protected readonly parentElement: any; - protected readonly nativeElement: HTMLElement; - /** Add styles to the element using predefined style builder */ - protected addStyles(input: string, parent?: Object): void; - /** Access the current value (if any) of the @Input property */ - protected _queryInput(key: string): any; - /** - * Was the directive's default selector used ? - * If not, use the fallback value! - */ - protected _getDefaultVal(key: string, fallbackVal: any): string | boolean; - /** - * Quick accessor to the current HTMLElement's `display` style - * Note: this allows us to preserve the original style - * and optional restore it when the mediaQueries deactivate - */ - protected _getDisplayStyle(source?: HTMLElement): string; - /** Quick accessor to raw attribute value on the target DOM element */ - protected _getAttributeValue(attribute: string, source?: HTMLElement): string; - /** - * Determine the DOM element's Flexbox flow (flex-direction). - * - * Check inline style first then check computed (stylesheet) style. - * And optionally add the flow value to element's inline style. - */ - protected _getFlexFlowDirection(target: HTMLElement, addIfMissing?: boolean): string; - /** Applies styles given via string pair or object map to the directive element */ - protected _applyStyleToElement(style: StyleDefinition, value?: string | number, element?: HTMLElement): void; - /** Applies styles given via string pair or object map to the directive's element */ - protected _applyStyleToElements(style: StyleDefinition, elements: HTMLElement[]): void; - /** - * Save the property value; which may be a complex object. - * Complex objects support property chains - */ - protected _cacheInput(key?: string, source?: any): void; - /** - * Build a ResponsiveActivation object used to manage subscriptions to mediaChange notifications - * and intelligent lookup of the directive's property value that corresponds to that mediaQuery - * (or closest match). - */ - protected _listenForMediaQueryChanges(key: string, defaultValue: any, onMediaQueryChange: MediaQuerySubscriber): ResponsiveActivation; - /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */ - protected readonly childrenNodes: HTMLElement[]; - protected readonly hasInitialized: boolean; - /** MediaQuery Activation Tracker */ - protected _mqActivation?: ResponsiveActivation; - /** Dictionary of input keys with associated values */ - protected _inputMap: { - [key: string]: any; - }; - /** - * Has the `ngOnInit()` method fired - * - * Used to allow *ngFor tasks to finish and support queries like - * getComputedStyle() during ngOnInit(). - */ - protected _hasInitialized: boolean; - /** Cache map for style computation */ - protected _styleCache: Map; -} diff --git a/typings/esm5/core/base/index.d.ts b/typings/esm5/core/base/index.d.ts index 8c84f13f8..00ab10425 100644 --- a/typings/esm5/core/base/index.d.ts +++ b/typings/esm5/core/base/index.d.ts @@ -5,6 +5,4 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -export * from './base'; -export * from './base-adapter'; export * from './base2'; diff --git a/typings/esm5/core/breakpoints/break-point-registry.d.ts b/typings/esm5/core/breakpoints/break-point-registry.d.ts index f9262df7c..a54f6846c 100644 --- a/typings/esm5/core/breakpoints/break-point-registry.d.ts +++ b/typings/esm5/core/breakpoints/break-point-registry.d.ts @@ -1,29 +1,18 @@ import { BreakPoint } from './break-point'; +export declare type OptionalBreakPoint = BreakPoint | null; /** * Registry of 1..n MediaQuery breakpoint ranges * This is published as a provider and may be overridden from custom, application-specific ranges * */ export declare class BreakPointRegistry { - private _registry; - constructor(_registry: BreakPoint[]); - /** - * Accessor to raw list - */ readonly items: BreakPoint[]; - /** - * Accessor to sorted list used for registration with matchMedia API - * - * NOTE: During breakpoint registration, we want to register the overlaps FIRST - * so the non-overlaps will trigger the MatchMedia:BehaviorSubject last! - * And the largest, non-overlap, matching breakpoint should be the lastReplay value - */ - readonly sortedItems: BreakPoint[]; + constructor(list: BreakPoint[]); /** * Search breakpoints by alias (e.g. gt-xs) */ - findByAlias(alias: string): BreakPoint | null; - findByQuery(query: string): BreakPoint | null; + findByAlias(alias: string): OptionalBreakPoint; + findByQuery(query: string): OptionalBreakPoint; /** * Get all the breakpoints whose ranges could overlapping `normal` ranges; * e.g. gt-sm overlaps md, lg, and xl @@ -39,4 +28,12 @@ export declare class BreakPointRegistry { * for property layoutGtSM. */ readonly suffixes: string[]; + /** + * Memoized lookup using custom predicate function + */ + private findWithPredicate; + /** + * Memoized BreakPoint Lookups + */ + private readonly findByMap; } diff --git a/typings/esm5/core/breakpoints/breakpoint-tools.d.ts b/typings/esm5/core/breakpoints/breakpoint-tools.d.ts index 056c10729..f112ac0ba 100644 --- a/typings/esm5/core/breakpoints/breakpoint-tools.d.ts +++ b/typings/esm5/core/breakpoints/breakpoint-tools.d.ts @@ -17,5 +17,3 @@ export declare function validateSuffixes(list: BreakPoint[]): BreakPoint[]; * - Items are merged with the custom override if the alias exists in the default list */ export declare function mergeByAlias(defaults: BreakPoint[], custom?: BreakPoint[]): BreakPoint[]; -/** HOF to sort the breakpoints by priority */ -export declare function prioritySort(a: BreakPoint, b: BreakPoint): number; diff --git a/typings/esm5/core/breakpoints/data/break-points.d.ts b/typings/esm5/core/breakpoints/data/break-points.d.ts index 44d405840..89aa647e9 100644 --- a/typings/esm5/core/breakpoints/data/break-points.d.ts +++ b/typings/esm5/core/breakpoints/data/break-points.d.ts @@ -6,5 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ import { BreakPoint } from '../break-point'; -export declare const RESPONSIVE_ALIASES: string[]; +/** + * NOTE: Smaller ranges have HIGHER priority since the match is more specific + */ export declare const DEFAULT_BREAKPOINTS: BreakPoint[]; diff --git a/typings/esm5/core/breakpoints/index.d.ts b/typings/esm5/core/breakpoints/index.d.ts index 11f4d2025..7fad0fa56 100644 --- a/typings/esm5/core/breakpoints/index.d.ts +++ b/typings/esm5/core/breakpoints/index.d.ts @@ -10,4 +10,3 @@ export * from './data/orientation-break-points'; export * from './break-point'; export * from './break-point-registry'; export * from './break-points-token'; -export { prioritySort } from './breakpoint-tools'; diff --git a/typings/esm5/core/index.metadata.json b/typings/esm5/core/index.metadata.json index be6db8516..2dab88e46 100644 --- a/typings/esm5/core/index.metadata.json +++ b/typings/esm5/core/index.metadata.json @@ -1 +1 @@ -{"__symbolic":"module","version":4,"metadata":{"removeStyles":{"__symbolic":"function","parameters":["_document","platformId"],"value":{"__symbolic":"error","message":"Lambda not supported","line":16,"character":9,"module":"./browser-provider"}},"BROWSER_PROVIDER":{"provide":{"__symbolic":"reference","module":"@angular/core","name":"APP_BOOTSTRAP_LISTENER","line":37,"character":43},"useFactory":{"__symbolic":"reference","name":"removeStyles"},"deps":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":39,"character":9},{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":39,"character":19}],"multi":true},"CLASS_NAME":"flex-layout-","CoreModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":18,"character":1},"arguments":[{"providers":[{"__symbolic":"reference","name":"BROWSER_PROVIDER"},{"__symbolic":"reference","name":"ObservableMediaProvider"}]}]}],"members":{}},"MediaQuerySubscriber":{"__symbolic":"interface"},"MediaChange":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[null,null,null,null]}],"clone":[{"__symbolic":"method"}]}},"StylesheetMap":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"addStyleToElement":[{"__symbolic":"method"}],"clearStyles":[{"__symbolic":"method"}],"getStyleForElement":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutConfigOptions":{"__symbolic":"interface"},"DEFAULT_CONFIG":{"addFlexToParent":true,"addOrientationBps":false,"disableDefaultBps":false,"disableVendorPrefixes":false,"serverLoaded":false,"useColumnBasisZero":true},"LAYOUT_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":28,"character":33},"arguments":["Flex Layout token, config options for the library",{"__symbolic":"error","message":"Lambda not supported","line":31,"character":13,"module":"./tokens/library-config"}]},"SERVER_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":32},"arguments":["FlexLayoutServerLoaded",{"__symbolic":"error","message":"Lambda not supported","line":18,"character":13,"module":"./tokens/server-token"}]},"BREAKPOINT":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":10,"character":30},"arguments":["Flex Layout token, collect all breakpoints into one provider",{"__symbolic":"error","message":"Lambda not supported","line":13,"character":13,"module":"./tokens/breakpoint-token"}]},"BaseDirective":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"MediaMonitor"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":61,"character":47},{"__symbolic":"reference","name":"StyleUtils"},{"__symbolic":"reference","name":"StyleBuilder"}]}],"hasResponsiveAPI":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"addStyles":[{"__symbolic":"method"}],"_queryInput":[{"__symbolic":"method"}],"_getDefaultVal":[{"__symbolic":"method"}],"_getDisplayStyle":[{"__symbolic":"method"}],"_getAttributeValue":[{"__symbolic":"method"}],"_getFlexFlowDirection":[{"__symbolic":"method"}],"_applyStyleToElement":[{"__symbolic":"method"}],"_applyStyleToElements":[{"__symbolic":"method"}],"_cacheInput":[{"__symbolic":"method"}],"_listenForMediaQueryChanges":[{"__symbolic":"method"}]}},"BaseDirectiveAdapter":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"BaseDirective"},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"MediaMonitor"},{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":52,"character":37},{"__symbolic":"reference","name":"StyleUtils"}]}],"hasResponsiveAPI":[{"__symbolic":"method"}],"queryInput":[{"__symbolic":"method"}],"cacheInput":[{"__symbolic":"method"}],"listenForMediaQueryChanges":[{"__symbolic":"method"}],"_cacheInputRaw":[{"__symbolic":"method"}],"_cacheInputArray":[{"__symbolic":"method"}],"_cacheInputObject":[{"__symbolic":"method"}],"_cacheInputString":[{"__symbolic":"method"}]}},"BaseDirective2":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":46},{"__symbolic":"reference","name":"StyleBuilder"},{"__symbolic":"reference","name":"StyleUtils"},{"__symbolic":"reference","name":"MediaMarshaller"}]}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"addStyles":[{"__symbolic":"method"}],"clearStyles":[{"__symbolic":"method"}],"triggerUpdate":[{"__symbolic":"method"}],"getFlexFlowDirection":[{"__symbolic":"method"}],"applyStyleToElement":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}]}},"RESPONSIVE_ALIASES":["xs","gt-xs","sm","gt-sm","md","gt-md","lg","gt-lg","xl"],"DEFAULT_BREAKPOINTS":[{"alias":"xs","mediaQuery":"(min-width: 0px) and (max-width: 599px)","priority":100},{"alias":"gt-xs","overlapping":true,"mediaQuery":"(min-width: 600px)","priority":7},{"alias":"lt-sm","overlapping":true,"mediaQuery":"(max-width: 599px)","priority":10},{"alias":"sm","mediaQuery":"(min-width: 600px) and (max-width: 959px)","priority":100},{"alias":"gt-sm","overlapping":true,"mediaQuery":"(min-width: 960px)","priority":8},{"alias":"lt-md","overlapping":true,"mediaQuery":"(max-width: 959px)","priority":9},{"alias":"md","mediaQuery":"(min-width: 960px) and (max-width: 1279px)","priority":100},{"alias":"gt-md","overlapping":true,"mediaQuery":"(min-width: 1280px)","priority":9},{"alias":"lt-lg","overlapping":true,"mediaQuery":"(max-width: 1279px)","priority":8},{"alias":"lg","mediaQuery":"(min-width: 1280px) and (max-width: 1919px)","priority":100},{"alias":"gt-lg","overlapping":true,"mediaQuery":"(min-width: 1920px)","priority":10},{"alias":"lt-xl","overlapping":true,"mediaQuery":"(max-width: 1919px)","priority":7},{"alias":"xl","mediaQuery":"(min-width: 1920px) and (max-width: 5000px)","priority":100}],"ScreenTypes":{"HANDSET":"(orientation: portrait) and (max-width: 599px), (orientation: landscape) and (max-width: 959px)","TABLET":"(orientation: portrait) and (min-width: 600px) and (max-width: 839px) , (orientation: landscape) and (min-width: 960px) and (max-width: 1279px)","WEB":"(orientation: portrait) and (min-width: 840px), (orientation: landscape) and (min-width: 1280px) ","HANDSET_PORTRAIT":"(orientation: portrait) and (max-width: 599px)","TABLET_PORTRAIT":"(orientation: portrait) and (min-width: 600px) and (max-width: 839px) ","WEB_PORTRAIT":"(orientation: portrait) and (min-width: 840px)","HANDSET_LANDSCAPE":"(orientation: landscape) and (max-width: 959px)]","TABLET_LANDSCAPE":"(orientation: landscape) and (min-width: 960px) and (max-width: 1279px)","WEB_LANDSCAPE":"(orientation: landscape) and (min-width: 1280px)","$quoted$":["HANDSET","TABLET","WEB","HANDSET_PORTRAIT","TABLET_PORTRAIT","WEB_PORTRAIT","HANDSET_LANDSCAPE","TABLET_LANDSCAPE","WEB_LANDSCAPE"]},"ORIENTATION_BREAKPOINTS":[{"alias":"handset","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"HANDSET"},"$quoted$":["alias","mediaQuery"]},{"alias":"handset.landscape","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"HANDSET_LANDSCAPE"},"$quoted$":["alias","mediaQuery"]},{"alias":"handset.portrait","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"HANDSET_PORTRAIT"},"$quoted$":["alias","mediaQuery"]},{"alias":"tablet","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"TABLET"},"$quoted$":["alias","mediaQuery"]},{"alias":"tablet.landscape","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"TABLET"},"$quoted$":["alias","mediaQuery"]},{"alias":"tablet.portrait","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"TABLET_PORTRAIT"},"$quoted$":["alias","mediaQuery"]},{"alias":"web","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"WEB"},"overlapping":true,"$quoted$":["alias","mediaQuery"]},{"alias":"web.landscape","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"WEB_LANDSCAPE"},"overlapping":true,"$quoted$":["alias","mediaQuery"]},{"alias":"web.portrait","mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"WEB_PORTRAIT"},"overlapping":true,"$quoted$":["alias","mediaQuery"]}],"BreakPoint":{"__symbolic":"interface"},"BreakPointRegistry":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":21,"character":15},"arguments":[{"__symbolic":"reference","name":"BREAKPOINTS"}]}]],"parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"BreakPoint"}]}]}],"findByAlias":[{"__symbolic":"method"}],"findByQuery":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"BREAKPOINTS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":21,"character":6},"arguments":["Token (@angular/flex-layout) Breakpoints",{"__symbolic":"error","message":"Lambda not supported","line":23,"character":13,"module":"./breakpoints/break-points-token"}]},"prioritySort":{"__symbolic":"function"},"MatchMedia":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":21,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":28,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":28,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":29,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":29,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":27,"character":31},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"any"}]}],"isActive":[{"__symbolic":"method"}],"observe":[{"__symbolic":"method"}],"registerQuery":[{"__symbolic":"method"}],"_buildMQL":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"MockMatchMedia":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"MatchMedia"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":33,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":33,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":34,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":34,"character":22}]}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":32,"character":21},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"BreakPointRegistry"}]}],"clearAll":[{"__symbolic":"method"}],"activate":[{"__symbolic":"method"}],"_validateQuery":[{"__symbolic":"method"}],"_activateWithOverlaps":[{"__symbolic":"method"}],"_activateByAlias":[{"__symbolic":"method"}],"_activateByQuery":[{"__symbolic":"method"}],"_deactivateAll":[{"__symbolic":"method"}],"_registerMediaQuery":[{"__symbolic":"method"}],"_buildMQL":[{"__symbolic":"method"}]}},"MockMediaQueryList":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"destroy":[{"__symbolic":"method"}],"activate":[{"__symbolic":"method"}],"deactivate":[{"__symbolic":"method"}],"addListener":[{"__symbolic":"method"}],"removeListener":[{"__symbolic":"method"}],"addEventListener":[{"__symbolic":"method"},{"__symbolic":"method"}],"removeEventListener":[{"__symbolic":"method"},{"__symbolic":"method"}],"dispatchEvent":[{"__symbolic":"method"}]}},"MockMatchMediaProvider":{"provide":{"__symbolic":"reference","name":"MatchMedia"},"useClass":{"__symbolic":"reference","name":"MockMatchMedia"}},"ServerMediaQueryList":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"destroy":[{"__symbolic":"method"}],"activate":[{"__symbolic":"method"}],"deactivate":[{"__symbolic":"method"}],"addListener":[{"__symbolic":"method"}],"removeListener":[{"__symbolic":"method"}],"addEventListener":[{"__symbolic":"method"},{"__symbolic":"method"}],"removeEventListener":[{"__symbolic":"method"},{"__symbolic":"method"}],"dispatchEvent":[{"__symbolic":"method"}]}},"ServerMatchMedia":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"MatchMedia"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":113,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":118,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":118,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":119,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":119,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":117,"character":31},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"any"}]}],"activateBreakpoint":[{"__symbolic":"method"}],"deactivateBreakpoint":[{"__symbolic":"method"}],"_buildMQL":[{"__symbolic":"method"}]}},"MediaMonitor":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":33,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"BreakPointRegistry"},{"__symbolic":"reference","name":"MatchMedia"}]}],"isActive":[{"__symbolic":"method"}],"observe":[{"__symbolic":"method"}],"_registerBreakpoints":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ObservableMedia":{"__symbolic":"class","members":{"isActive":[{"__symbolic":"method"}],"asObservable":[{"__symbolic":"method"}],"subscribe":[{"__symbolic":"method"},{"__symbolic":"method"}]}},"MediaService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":78,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"BreakPointRegistry"},{"__symbolic":"reference","name":"MatchMedia"}]}],"isActive":[{"__symbolic":"method"}],"subscribe":[{"__symbolic":"method"}],"asObservable":[{"__symbolic":"method"}],"_registerBreakPoints":[{"__symbolic":"method"}],"_buildObservable":[{"__symbolic":"method"}],"_findByAlias":[{"__symbolic":"method"}],"_findByQuery":[{"__symbolic":"method"}],"_toMediaQuery":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ObservableMediaProvider":{"provide":{"__symbolic":"reference","name":"ObservableMedia"},"useClass":{"__symbolic":"reference","name":"MediaService"}},"MediaObserver":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":58,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"BreakPointRegistry"},{"__symbolic":"reference","name":"MatchMedia"}]}],"isActive":[{"__symbolic":"method"}],"_registerBreakPoints":[{"__symbolic":"method"}],"_buildObservable":[{"__symbolic":"method"}],"_findByAlias":[{"__symbolic":"method"}],"_findByQuery":[{"__symbolic":"method"}],"_toMediaQuery":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"BreakPointX":{"__symbolic":"interface"},"KeyOptions":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Expression form not supported","line":31,"character":32,"module":"./responsive-activation/responsive-activation"}]}]}},"ResponsiveActivation":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"KeyOptions"},{"__symbolic":"reference","name":"MediaMonitor"},{"__symbolic":"reference","name":"MediaQuerySubscriber"}]}],"hasKeyValue":[{"__symbolic":"method"}],"destroy":[{"__symbolic":"method"}],"_configureChangeObservers":[{"__symbolic":"method"}],"_buildRegistryMap":[{"__symbolic":"method"}],"_onMonitorEvents":[{"__symbolic":"method"}],"_keyInUse":[{"__symbolic":"method"}],"_calculateActivatedValue":[{"__symbolic":"method"}],"_validateInputKey":[{"__symbolic":"method"}],"_lookupKeyValue":[{"__symbolic":"method"}]}},"StyleUtils":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":18,"character":15}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":19,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":19,"character":27},"arguments":[{"__symbolic":"reference","name":"SERVER_TOKEN"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":20,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":20,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":21,"character":15},"arguments":[{"__symbolic":"reference","name":"LAYOUT_CONFIG"}]}]],"parameters":[{"__symbolic":"reference","name":"StylesheetMap"},{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"LayoutConfigOptions"}]}],"applyStyleToElement":[{"__symbolic":"method"}],"applyStyleToElements":[{"__symbolic":"method"}],"getFlowDirection":[{"__symbolic":"method"}],"lookupAttributeValue":[{"__symbolic":"method"}],"lookupInlineStyle":[{"__symbolic":"method"}],"lookupStyle":[{"__symbolic":"method"}],"_applyMultiValueStyleToElement":[{"__symbolic":"method"}],"_setServerStyle":[{"__symbolic":"method"}],"_getServerStyle":[{"__symbolic":"method"}],"_readStyleAttribute":[{"__symbolic":"method"}],"_writeStyleAttribute":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"StyleDefinition":{"__symbolic":"interface"},"StyleBuilder":{"__symbolic":"class","members":{"buildStyles":[{"__symbolic":"method"}],"sideEffect":[{"__symbolic":"method"}]}},"validateBasis":{"__symbolic":"function"},"ElementMatcher":{"__symbolic":"interface"},"MediaMarshaller":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":38,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"MatchMedia"},{"__symbolic":"reference","name":"BreakPointRegistry"}]}],"activate":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"getValue":[{"__symbolic":"method"}],"hasValue":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"trackValue":[{"__symbolic":"method"}],"updateStyles":[{"__symbolic":"method"}],"clearElement":[{"__symbolic":"method"}],"updateElement":[{"__symbolic":"method"}],"releaseElement":[{"__symbolic":"method"}],"buildElementKeyMap":[{"__symbolic":"method"}],"watchExtraTriggers":[{"__symbolic":"method"}],"findByQuery":[{"__symbolic":"method"}],"getFallback":[{"__symbolic":"method"}],"registerBreakpoints":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}}},"origins":{"removeStyles":"./browser-provider","BROWSER_PROVIDER":"./browser-provider","CLASS_NAME":"./browser-provider","CoreModule":"./module","MediaQuerySubscriber":"./media-change","MediaChange":"./media-change","StylesheetMap":"./stylesheet-map/stylesheet-map","LayoutConfigOptions":"./tokens/library-config","DEFAULT_CONFIG":"./tokens/library-config","LAYOUT_CONFIG":"./tokens/library-config","SERVER_TOKEN":"./tokens/server-token","BREAKPOINT":"./tokens/breakpoint-token","BaseDirective":"./base/base","BaseDirectiveAdapter":"./base/base-adapter","BaseDirective2":"./base/base2","RESPONSIVE_ALIASES":"./breakpoints/data/break-points","DEFAULT_BREAKPOINTS":"./breakpoints/data/break-points","ScreenTypes":"./breakpoints/data/orientation-break-points","ORIENTATION_BREAKPOINTS":"./breakpoints/data/orientation-break-points","BreakPoint":"./breakpoints/break-point","BreakPointRegistry":"./breakpoints/break-point-registry","BREAKPOINTS":"./breakpoints/break-points-token","prioritySort":"./breakpoints/breakpoint-tools","MatchMedia":"./match-media/match-media","MockMatchMedia":"./match-media/mock/mock-match-media","MockMediaQueryList":"./match-media/mock/mock-match-media","MockMatchMediaProvider":"./match-media/mock/mock-match-media","ServerMediaQueryList":"./match-media/server-match-media","ServerMatchMedia":"./match-media/server-match-media","MediaMonitor":"./media-monitor/media-monitor","ObservableMedia":"./observable-media/observable-media","MediaService":"./observable-media/observable-media","ObservableMediaProvider":"./observable-media/observable-media","MediaObserver":"./media-observer/media-observer","BreakPointX":"./responsive-activation/responsive-activation","KeyOptions":"./responsive-activation/responsive-activation","ResponsiveActivation":"./responsive-activation/responsive-activation","StyleUtils":"./style-utils/style-utils","StyleDefinition":"./style-utils/style-utils","StyleBuilder":"./style-builder/style-builder","validateBasis":"./basis-validator/basis-validator","ElementMatcher":"./media-marshaller/media-marshaller","MediaMarshaller":"./media-marshaller/media-marshaller"},"importAs":"@angular/flex-layout/core"} \ No newline at end of file +{"__symbolic":"module","version":4,"metadata":{"CoreModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":17,"character":1},"arguments":[{"providers":[{"__symbolic":"reference","name":"BROWSER_PROVIDER"}]}]}],"members":{}},"removeStyles":{"__symbolic":"function","parameters":["_document","platformId"],"value":{"__symbolic":"error","message":"Lambda not supported","line":16,"character":9,"module":"./browser-provider"}},"BROWSER_PROVIDER":{"provide":{"__symbolic":"reference","module":"@angular/core","name":"APP_BOOTSTRAP_LISTENER","line":37,"character":43},"useFactory":{"__symbolic":"reference","name":"removeStyles"},"deps":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":39,"character":9},{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":39,"character":19}],"multi":true},"CLASS_NAME":"flex-layout-","MediaQuerySubscriber":{"__symbolic":"interface"},"MediaChange":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[null,null,null,null,null]}],"clone":[{"__symbolic":"method"}]}},"StylesheetMap":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"addStyleToElement":[{"__symbolic":"method"}],"clearStyles":[{"__symbolic":"method"}],"getStyleForElement":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutConfigOptions":{"__symbolic":"interface"},"DEFAULT_CONFIG":{"addFlexToParent":true,"addOrientationBps":false,"disableDefaultBps":false,"disableVendorPrefixes":false,"serverLoaded":false,"useColumnBasisZero":true,"printWithBreakpoints":[],"mediaTriggerAutoRestore":true,"ssrObserveBreakpoints":[]},"LAYOUT_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":34,"character":33},"arguments":["Flex Layout token, config options for the library",{"__symbolic":"error","message":"Lambda not supported","line":37,"character":15,"module":"./tokens/library-config"}]},"SERVER_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":32},"arguments":["FlexLayoutServerLoaded",{"__symbolic":"error","message":"Lambda not supported","line":18,"character":13,"module":"./tokens/server-token"}]},"BREAKPOINT":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":10,"character":30},"arguments":["Flex Layout token, collect all breakpoints into one provider",{"__symbolic":"error","message":"Lambda not supported","line":13,"character":13,"module":"./tokens/breakpoint-token"}]},"mergeAlias":{"__symbolic":"function"},"BaseDirective2":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":46},{"__symbolic":"reference","name":"StyleBuilder"},{"__symbolic":"reference","name":"StyleUtils"},{"__symbolic":"reference","name":"MediaMarshaller"}]}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"addStyles":[{"__symbolic":"method"}],"clearStyles":[{"__symbolic":"method"}],"triggerUpdate":[{"__symbolic":"method"}],"getFlexFlowDirection":[{"__symbolic":"method"}],"applyStyleToElement":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}]}},"DEFAULT_BREAKPOINTS":[{"alias":"xs","mediaQuery":"screen and (min-width: 0px) and (max-width: 599.9px)","priority":1000},{"alias":"sm","mediaQuery":"screen and (min-width: 600px) and (max-width: 959.9px)","priority":900},{"alias":"md","mediaQuery":"screen and (min-width: 960px) and (max-width: 1279.9px)","priority":800},{"alias":"lg","mediaQuery":"screen and (min-width: 1280px) and (max-width: 1919.9px)","priority":700},{"alias":"xl","mediaQuery":"screen and (min-width: 1920px) and (max-width: 4999.9px)","priority":600},{"alias":"lt-sm","overlapping":true,"mediaQuery":"screen and (max-width: 599.9px)","priority":950},{"alias":"lt-md","overlapping":true,"mediaQuery":"screen and (max-width: 959.9px)","priority":850},{"alias":"lt-lg","overlapping":true,"mediaQuery":"screen and (max-width: 1279.9px)","priority":750},{"alias":"lt-xl","overlapping":true,"priority":650,"mediaQuery":"screen and (max-width: 1919.9px)"},{"alias":"gt-xs","overlapping":true,"mediaQuery":"screen and (min-width: 600px)","priority":-950},{"alias":"gt-sm","overlapping":true,"mediaQuery":"screen and (min-width: 960px)","priority":-850},{"alias":"gt-md","overlapping":true,"mediaQuery":"screen and (min-width: 1280px)","priority":-750},{"alias":"gt-lg","overlapping":true,"mediaQuery":"screen and (min-width: 1920px)","priority":-650}],"ScreenTypes":{"HANDSET":"(orientation: portrait) and (max-width: 599.9px), (orientation: landscape) and (max-width: 959.9px)","TABLET":"(orientation: portrait) and (min-width: 600px) and (max-width: 839.9px) , (orientation: landscape) and (min-width: 960px) and (max-width: 1279.9px)","WEB":"(orientation: portrait) and (min-width: 840px), (orientation: landscape) and (min-width: 1280px) ","HANDSET_PORTRAIT":"(orientation: portrait) and (max-width: 599.9px)","TABLET_PORTRAIT":"(orientation: portrait) and (min-width: 600px) and (max-width: 839.9px) ","WEB_PORTRAIT":"(orientation: portrait) and (min-width: 840px)","HANDSET_LANDSCAPE":"(orientation: landscape) and (max-width: 959.9px)]","TABLET_LANDSCAPE":"(orientation: landscape) and (min-width: 960px) and (max-width: 1279.9px)","WEB_LANDSCAPE":"(orientation: landscape) and (min-width: 1280px)","$quoted$":["HANDSET","TABLET","WEB","HANDSET_PORTRAIT","TABLET_PORTRAIT","WEB_PORTRAIT","HANDSET_LANDSCAPE","TABLET_LANDSCAPE","WEB_LANDSCAPE"]},"ORIENTATION_BREAKPOINTS":[{"alias":"handset","priority":2000,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"HANDSET"},"$quoted$":["alias","mediaQuery"]},{"alias":"handset.landscape","priority":2000,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"HANDSET_LANDSCAPE"},"$quoted$":["alias","mediaQuery"]},{"alias":"handset.portrait","priority":2000,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"HANDSET_PORTRAIT"},"$quoted$":["alias","mediaQuery"]},{"alias":"tablet","priority":2100,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"TABLET"},"$quoted$":["alias","mediaQuery"]},{"alias":"tablet.landscape","priority":2100,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"TABLET"},"$quoted$":["alias","mediaQuery"]},{"alias":"tablet.portrait","priority":2100,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"TABLET_PORTRAIT"},"$quoted$":["alias","mediaQuery"]},{"alias":"web","priority":2200,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"WEB"},"overlapping":true,"$quoted$":["alias","mediaQuery"]},{"alias":"web.landscape","priority":2200,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"WEB_LANDSCAPE"},"overlapping":true,"$quoted$":["alias","mediaQuery"]},{"alias":"web.portrait","priority":2200,"mediaQuery":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ScreenTypes"},"member":"WEB_PORTRAIT"},"overlapping":true,"$quoted$":["alias","mediaQuery"]}],"BreakPoint":{"__symbolic":"interface"},"OptionalBreakPoint":{"__symbolic":"interface"},"BreakPointRegistry":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":20,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":24,"character":15},"arguments":[{"__symbolic":"reference","name":"BREAKPOINTS"}]}]],"parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"BreakPoint"}]}]}],"findByAlias":[{"__symbolic":"method"}],"findByQuery":[{"__symbolic":"method"}],"findWithPredicate":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"BREAKPOINTS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":21,"character":6},"arguments":["Token (@angular/flex-layout) Breakpoints",{"__symbolic":"error","message":"Lambda not supported","line":23,"character":13,"module":"./breakpoints/break-points-token"}]},"ɵMatchMedia":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":21,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":28,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":28,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":29,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":29,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":27,"character":31},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"any"}]}],"isActive":[{"__symbolic":"method"}],"observe":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"registerQuery":[{"__symbolic":"method"}],"buildMQL":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵMockMatchMedia":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵMatchMedia"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":26,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":26,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":27,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":27,"character":22}]}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":25,"character":21},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"BreakPointRegistry"}]}],"clearAll":[{"__symbolic":"method"}],"activate":[{"__symbolic":"method"}],"_validateQuery":[{"__symbolic":"method"}],"_activateWithOverlaps":[{"__symbolic":"method"}],"_activateByAlias":[{"__symbolic":"method"}],"_activateByQuery":[{"__symbolic":"method"}],"_deactivateAll":[{"__symbolic":"method"}],"_registerMediaQuery":[{"__symbolic":"method"}],"buildMQL":[{"__symbolic":"method"}]}},"ɵMockMatchMediaProvider":{"provide":{"__symbolic":"reference","name":"ɵMatchMedia"},"useClass":{"__symbolic":"reference","name":"ɵMockMatchMedia"}},"MediaObserver":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":62,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"BreakPointRegistry"},{"__symbolic":"reference","name":"ɵMatchMedia"},{"__symbolic":"reference","name":"PrintHook"}]}],"ngOnDestroy":[{"__symbolic":"method"}],"asObservable":[{"__symbolic":"method"}],"isActive":[{"__symbolic":"method"}],"watchActivations":[{"__symbolic":"method"}],"buildObservable":[{"__symbolic":"method"}],"findAllActivations":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"MediaTrigger":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":29,"character":7},"arguments":[{"__symbolic":"reference","name":"LAYOUT_CONFIG"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":30,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":30,"character":14}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":31,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":31,"character":14}]}]],"parameters":[{"__symbolic":"reference","name":"BreakPointRegistry"},{"__symbolic":"reference","name":"ɵMatchMedia"},{"__symbolic":"reference","name":"LayoutConfigOptions"},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"any"}]}],"activate":[{"__symbolic":"method"}],"restore":[{"__symbolic":"method"}],"prepareAutoRestore":[{"__symbolic":"method"}],"deactivateAll":[{"__symbolic":"method"}],"saveActivations":[{"__symbolic":"method"}],"setActivations":[{"__symbolic":"method"}],"simulateMediaChanges":[{"__symbolic":"method"}],"forceRegistryMatches":[{"__symbolic":"method"}],"cacheRegistryMatches":[{"__symbolic":"method"}],"restoreRegistryMatches":[{"__symbolic":"method"}],"emitChangeEvent":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"sortDescendingPriority":{"__symbolic":"function"},"sortAscendingPriority":{"__symbolic":"function"},"coerceArray":{"__symbolic":"function","parameters":["value"],"value":{"__symbolic":"if","condition":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Array"},"member":"isArray"},"arguments":[{"__symbolic":"reference","name":"value"}]},"thenExpression":{"__symbolic":"reference","name":"value"},"elseExpression":[{"__symbolic":"reference","name":"value"}]}},"StyleUtils":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":18,"character":15}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":19,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":19,"character":27},"arguments":[{"__symbolic":"reference","name":"SERVER_TOKEN"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":20,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":20,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":21,"character":15},"arguments":[{"__symbolic":"reference","name":"LAYOUT_CONFIG"}]}]],"parameters":[{"__symbolic":"reference","name":"StylesheetMap"},{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"LayoutConfigOptions"}]}],"applyStyleToElement":[{"__symbolic":"method"}],"applyStyleToElements":[{"__symbolic":"method"}],"getFlowDirection":[{"__symbolic":"method"}],"lookupAttributeValue":[{"__symbolic":"method"}],"lookupInlineStyle":[{"__symbolic":"method"}],"lookupStyle":[{"__symbolic":"method"}],"_applyMultiValueStyleToElement":[{"__symbolic":"method"}],"_setServerStyle":[{"__symbolic":"method"}],"_getServerStyle":[{"__symbolic":"method"}],"_readStyleAttribute":[{"__symbolic":"method"}],"_writeStyleAttribute":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"StyleDefinition":{"__symbolic":"interface"},"StyleBuilder":{"__symbolic":"class","members":{"buildStyles":[{"__symbolic":"method"}],"sideEffect":[{"__symbolic":"method"}]}},"validateBasis":{"__symbolic":"function"},"ElementMatcher":{"__symbolic":"interface"},"MediaMarshaller":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":43,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵMatchMedia"},{"__symbolic":"reference","name":"BreakPointRegistry"},{"__symbolic":"reference","name":"PrintHook"}]}],"onMediaChange":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"getValue":[{"__symbolic":"method"}],"hasValue":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"}],"trackValue":[{"__symbolic":"method"}],"updateStyles":[{"__symbolic":"method"}],"clearElement":[{"__symbolic":"method"}],"updateElement":[{"__symbolic":"method"}],"releaseElement":[{"__symbolic":"method"}],"triggerUpdate":[{"__symbolic":"method"}],"buildElementKeyMap":[{"__symbolic":"method"}],"watchExtraTriggers":[{"__symbolic":"method"}],"findByQuery":[{"__symbolic":"method"}],"getActivatedValues":[{"__symbolic":"method"}],"observeActivations":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"HookTarget":{"__symbolic":"interface"},"BREAKPOINT_PRINT":{"alias":"print","mediaQuery":"print","priority":1000},"PrintHook":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":38,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":42,"character":7},"arguments":[{"__symbolic":"reference","name":"LAYOUT_CONFIG"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":43,"character":7},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":43,"character":14}]}]],"parameters":[{"__symbolic":"reference","name":"BreakPointRegistry"},{"__symbolic":"reference","name":"LayoutConfigOptions"},{"__symbolic":"reference","name":"Object"}]}],"withPrintQuery":[{"__symbolic":"method"}],"isPrintEvent":[{"__symbolic":"method"}],"getEventBreakpoints":[{"__symbolic":"method"}],"updateEvent":[{"__symbolic":"method"}],"registerBeforeAfterPrintHooks":[{"__symbolic":"method"}],"interceptEvents":[{"__symbolic":"method"}],"blockPropagation":[{"__symbolic":"method"}],"startPrinting":[{"__symbolic":"method"}],"stopPrinting":[{"__symbolic":"method"}],"collectActivations":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}}},"origins":{"CoreModule":"./module","removeStyles":"./browser-provider","BROWSER_PROVIDER":"./browser-provider","CLASS_NAME":"./browser-provider","MediaQuerySubscriber":"./media-change","MediaChange":"./media-change","StylesheetMap":"./stylesheet-map/stylesheet-map","LayoutConfigOptions":"./tokens/library-config","DEFAULT_CONFIG":"./tokens/library-config","LAYOUT_CONFIG":"./tokens/library-config","SERVER_TOKEN":"./tokens/server-token","BREAKPOINT":"./tokens/breakpoint-token","mergeAlias":"./add-alias","BaseDirective2":"./base/base2","DEFAULT_BREAKPOINTS":"./breakpoints/data/break-points","ScreenTypes":"./breakpoints/data/orientation-break-points","ORIENTATION_BREAKPOINTS":"./breakpoints/data/orientation-break-points","BreakPoint":"./breakpoints/break-point","OptionalBreakPoint":"./breakpoints/break-point-registry","BreakPointRegistry":"./breakpoints/break-point-registry","BREAKPOINTS":"./breakpoints/break-points-token","ɵMatchMedia":"./match-media/match-media","ɵMockMatchMedia":"./match-media/mock/mock-match-media","ɵMockMatchMediaProvider":"./match-media/mock/mock-match-media","MediaObserver":"./media-observer/media-observer","MediaTrigger":"./media-trigger/media-trigger","sortDescendingPriority":"./utils/sort","sortAscendingPriority":"./utils/sort","coerceArray":"./utils/array","StyleUtils":"./style-utils/style-utils","StyleDefinition":"./style-utils/style-utils","StyleBuilder":"./style-builder/style-builder","validateBasis":"./basis-validator/basis-validator","ElementMatcher":"./media-marshaller/media-marshaller","MediaMarshaller":"./media-marshaller/media-marshaller","HookTarget":"./media-marshaller/print-hook","BREAKPOINT_PRINT":"./media-marshaller/print-hook","PrintHook":"./media-marshaller/print-hook"},"importAs":"@angular/flex-layout/core"} \ No newline at end of file diff --git a/typings/esm5/core/match-media/index.d.ts b/typings/esm5/core/match-media/index.d.ts index bfc848183..aa89b73c0 100644 --- a/typings/esm5/core/match-media/index.d.ts +++ b/typings/esm5/core/match-media/index.d.ts @@ -7,4 +7,3 @@ */ export * from './match-media'; export * from './mock/mock-match-media'; -export * from './server-match-media'; diff --git a/typings/esm5/core/match-media/match-media.d.ts b/typings/esm5/core/match-media/match-media.d.ts index f391ba707..a910b11d7 100644 --- a/typings/esm5/core/match-media/match-media.d.ts +++ b/typings/esm5/core/match-media/match-media.d.ts @@ -19,31 +19,36 @@ export declare class MatchMedia { protected _zone: NgZone; protected _platformId: Object; protected _document: any; - protected _registry: Map; - protected _source: BehaviorSubject; - protected _observable$: Observable; + /** Initialize source with 'all' so all non-responsive APIs trigger style updates */ + readonly source: BehaviorSubject; + registry: Map; constructor(_zone: NgZone, _platformId: Object, _document: any); + /** + * Publish list of all current activations + */ + readonly activations: string[]; /** * For the specified mediaQuery? */ isActive(mediaQuery: string): boolean; /** * External observers can watch for all (or a specific) mql changes. - * Typically used by the MediaQueryAdaptor; optionally available to components - * who wish to use the MediaMonitor as mediaMonitor$ observable service. * - * NOTE: if a mediaQuery is not specified, then ALL mediaQuery activations will - * be announced. + * If a mediaQuery is not specified, then ALL mediaQuery activations will + * be announced. */ - observe(mediaQuery?: string): Observable; + observe(): Observable; + observe(mediaQueries: string[]): Observable; + observe(mediaQueries: string[], filterOthers: boolean): Observable; /** * Based on the BreakPointRegistry provider, register internal listeners for each unique * mediaQuery. Each listener emits specific MediaChange data to observers */ - registerQuery(mediaQuery: string | string[]): void; + registerQuery(mediaQuery: string | string[]): MediaChange[]; /** * Call window.matchMedia() to build a MediaQueryList; which * supports 0..n listeners for activation/deactivation */ - protected _buildMQL(query: string): MediaQueryList; + protected buildMQL(query: string): MediaQueryList; + protected _observable$: Observable; } diff --git a/typings/esm5/core/match-media/mock/mock-match-media.d.ts b/typings/esm5/core/match-media/mock/mock-match-media.d.ts index e235aba67..e58018a6c 100644 --- a/typings/esm5/core/match-media/mock/mock-match-media.d.ts +++ b/typings/esm5/core/match-media/mock/mock-match-media.d.ts @@ -15,14 +15,8 @@ import { BreakPointRegistry } from '../../breakpoints/break-point-registry'; */ export declare class MockMatchMedia extends MatchMedia { private _breakpoints; - /** Special flag used to test BreakPoint registrations with MatchMedia */ autoRegisterQueries: boolean; - /** - * Allow fallback to overlapping mediaQueries to determine - * activatedInput(s). - */ useOverlaps: boolean; - protected _registry: Map; constructor(_zone: NgZone, _platformId: Object, _document: any, _breakpoints: BreakPointRegistry); /** Easy method to clear all listeners for all mediaQueries */ clearAll(): void; @@ -31,7 +25,7 @@ export declare class MockMatchMedia extends MatchMedia { /** Converts an optional mediaQuery alias to a specific, valid mediaQuery */ _validateQuery(queryOrAlias: string): string; /** - * Manually activate any overlapping mediaQueries to simulate + * Manually onMediaChange any overlapping mediaQueries to simulate * similar functionality in the window.matchMedia() */ private _activateWithOverlaps; @@ -43,7 +37,7 @@ export declare class MockMatchMedia extends MatchMedia { * */ private _activateByQuery; - /** Deactivate all current Mock MQLs */ + /** Deactivate all current MQLs and reset the buffer */ private _deactivateAll; /** Insure the mediaQuery is registered with MatchMedia */ private _registerMediaQuery; @@ -51,9 +45,8 @@ export declare class MockMatchMedia extends MatchMedia { * Call window.matchMedia() to build a MediaQueryList; which * supports 0..n listeners for activation/deactivation */ - protected _buildMQL(query: string): MediaQueryList; + protected buildMQL(query: string): MediaQueryList; protected readonly hasActivated: boolean; - private _actives; } /** * Special internal class to simulate a MediaQueryList and @@ -79,7 +72,7 @@ export declare class MockMediaQueryList implements MediaQueryList { /** Add a listener to our internal list to activate later */ addListener(listener: MediaQueryListListener): void; /** Don't need to remove listeners in the testing environment */ - removeListener(_: EventListenerOrEventListenerObject | null): void; + removeListener(_: MediaQueryListListener | null): void; addEventListener(_: K, __: (this: MediaQueryList, ev: MediaQueryListEventMap[K]) => any, ___?: boolean | AddEventListenerOptions): void; removeEventListener(_: K, __: (this: MediaQueryList, ev: MediaQueryListEventMap[K]) => any, ___?: boolean | EventListenerOptions): void; dispatchEvent(_: Event): boolean; diff --git a/typings/esm5/core/media-change.d.ts b/typings/esm5/core/media-change.d.ts index c466494c7..7d1e3049d 100644 --- a/typings/esm5/core/media-change.d.ts +++ b/typings/esm5/core/media-change.d.ts @@ -14,6 +14,7 @@ export declare class MediaChange { mediaQuery: string; mqAlias: string; suffix: string; + priority: number; property: string; value: any; /** @@ -21,8 +22,9 @@ export declare class MediaChange { * @param mediaQuery e.g. (min-width: 600px) and (max-width: 959px) * @param mqAlias e.g. gt-sm, md, gt-lg * @param suffix e.g. GtSM, Md, GtLg + * @param priority the priority of activation for the given breakpoint */ - constructor(matches?: boolean, mediaQuery?: string, mqAlias?: string, suffix?: string); + constructor(matches?: boolean, mediaQuery?: string, mqAlias?: string, suffix?: string, priority?: number); /** Create an exact copy of the MediaChange */ clone(): MediaChange; } diff --git a/typings/esm5/core/media-marshaller/media-marshaller.d.ts b/typings/esm5/core/media-marshaller/media-marshaller.d.ts index 915bf755f..5f6bb7457 100644 --- a/typings/esm5/core/media-marshaller/media-marshaller.d.ts +++ b/typings/esm5/core/media-marshaller/media-marshaller.d.ts @@ -2,6 +2,7 @@ import { Observable } from 'rxjs'; import { BreakPointRegistry } from '../breakpoints/break-point-registry'; import { MatchMedia } from '../match-media/match-media'; import { MediaChange } from '../media-change'; +import { PrintHook } from './print-hook'; declare type ClearCallback = () => void; declare type UpdateCallback = (val: any) => void; export interface ElementMatcher { @@ -16,20 +17,21 @@ export interface ElementMatcher { export declare class MediaMarshaller { protected matchMedia: MatchMedia; protected breakpoints: BreakPointRegistry; + protected hook: PrintHook; private activatedBreakpoints; private elementMap; private elementKeyMap; private watcherMap; - private builderMap; - private clearBuilderMap; + private updateMap; + private clearMap; private subject; - readonly activatedBreakpoint: string; - constructor(matchMedia: MatchMedia, breakpoints: BreakPointRegistry); + readonly activatedAlias: string; + constructor(matchMedia: MatchMedia, breakpoints: BreakPointRegistry, hook: PrintHook); /** - * activate or deactivate a given breakpoint + * Update styles on breakpoint activates or deactivates * @param mc */ - activate(mc: MediaChange): void; + onMediaChange(mc: MediaChange): void; /** * initialize the marshaller with necessary elements for delegation on an element * @param element @@ -82,6 +84,12 @@ export declare class MediaMarshaller { * @param element */ releaseElement(element: HTMLElement): void; + /** + * trigger an update for a given element and key (e.g. layout) + * @param element + * @param key + */ + triggerUpdate(element: HTMLElement, key?: string): void; /** Cross-reference for HTMLElement with directive key */ private buildElementKeyMap; /** @@ -98,7 +106,10 @@ export declare class MediaMarshaller { * @param bpMap * @param key */ - private getFallback; - private registerBreakpoints; + private getActivatedValues; + /** + * Watch for mediaQuery breakpoint activations + */ + private observeActivations; } export {}; diff --git a/typings/esm5/core/media-marshaller/print-hook.d.ts b/typings/esm5/core/media-marshaller/print-hook.d.ts new file mode 100644 index 000000000..81cced90f --- /dev/null +++ b/typings/esm5/core/media-marshaller/print-hook.d.ts @@ -0,0 +1,80 @@ +import { MediaChange } from '../media-change'; +import { BreakPoint } from '../breakpoints/break-point'; +import { LayoutConfigOptions } from '../tokens/library-config'; +import { BreakPointRegistry, OptionalBreakPoint } from '../breakpoints/break-point-registry'; +/** + * Interface to apply PrintHook to call anonymous `target.updateStyles()` + */ +export interface HookTarget { + activatedBreakpoints: BreakPoint[]; + updateStyles(): void; +} +export declare const BREAKPOINT_PRINT: { + alias: string; + mediaQuery: string; + priority: number; +}; +/** + * PrintHook - Use to intercept print MediaQuery activations and force + * layouts to render with the specified print alias/breakpoint + * + * Used in MediaMarshaller and MediaObserver + */ +export declare class PrintHook { + protected breakpoints: BreakPointRegistry; + protected layoutConfig: LayoutConfigOptions; + protected _platformId: Object; + constructor(breakpoints: BreakPointRegistry, layoutConfig: LayoutConfigOptions, _platformId: Object); + /** Add 'print' mediaQuery: to listen for matchMedia activations */ + withPrintQuery(queries: string[]): string[]; + /** Is the MediaChange event for any 'print' @media */ + isPrintEvent(e: MediaChange): Boolean; + /** What is the desired mqAlias to use while printing? */ + readonly printAlias: string[]; + /** Lookup breakpoints associated with print aliases. */ + readonly printBreakPoints: BreakPoint[]; + /** Lookup breakpoint associated with mediaQuery */ + getEventBreakpoints({ mediaQuery }: MediaChange): BreakPoint[]; + /** Update event with printAlias mediaQuery information */ + updateEvent(event: MediaChange): MediaChange; + private registeredBeforeAfterPrintHooks; + private isPrintingBeforeAfterEvent; + private registerBeforeAfterPrintHooks; + /** + * Prepare RxJs filter operator with partial application + * @return pipeable filter predicate + */ + interceptEvents(target: HookTarget): (event: MediaChange) => void; + /** Stop mediaChange event propagation in event streams */ + blockPropagation(): (event: MediaChange) => boolean; + /** + * Save current activateBreakpoints (for later restore) + * and substitute only the printAlias breakpoint + */ + protected startPrinting(target: HookTarget, bpList: OptionalBreakPoint[]): void; + /** For any print de-activations, reset the entire print queue */ + protected stopPrinting(target: HookTarget): void; + /** + * To restore pre-Print Activations, we must capture the proper + * list of breakpoint activations BEFORE print starts. OnBeforePrint() + * is supported; so 'print' mediaQuery activations are used as a fallback + * in browsers without `beforeprint` support. + * + * > But activated breakpoints are deactivated BEFORE 'print' activation. + * + * Let's capture all de-activations using the following logic: + * + * When not printing: + * - clear cache when activating non-print breakpoint + * - update cache (and sort) when deactivating + * + * When printing: + * - sort and save when starting print + * - restore as activatedTargets and clear when stop printing + */ + collectActivations(event: MediaChange): void; + /** Is this service currently in Print-mode ? */ + private isPrinting; + private queue; + private deactivations; +} diff --git a/typings/esm5/core/media-monitor/media-monitor.d.ts b/typings/esm5/core/media-monitor/media-monitor.d.ts deleted file mode 100644 index 635ca077a..000000000 --- a/typings/esm5/core/media-monitor/media-monitor.d.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { Observable } from 'rxjs'; -import { BreakPoint } from '../breakpoints/break-point'; -import { BreakPointRegistry } from '../breakpoints/break-point-registry'; -import { MatchMedia } from '../match-media/match-media'; -import { MediaChange } from '../media-change'; -/** - * MediaMonitor uses the MatchMedia service to observe mediaQuery changes (both activations and - * deactivations). These changes are are published as MediaChange notifications. - * - * Note: all notifications will be performed within the - * ng Zone to trigger change detections and component updates. - * - * It is the MediaMonitor that: - * - auto registers all known breakpoints - * - injects alias information into each raw MediaChange event - * - provides accessor to the currently active BreakPoint - * - publish list of overlapping BreakPoint(s); used by ResponsiveActivation - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export declare class MediaMonitor { - private _breakpoints; - private _matchMedia; - constructor(_breakpoints: BreakPointRegistry, _matchMedia: MatchMedia); - /** - * Read-only accessor to the list of breakpoints configured in the BreakPointRegistry provider - */ - readonly breakpoints: BreakPoint[]; - readonly activeOverlaps: BreakPoint[]; - readonly active: BreakPoint | null; - /** - * For the specified mediaQuery alias, is the mediaQuery range active? - */ - isActive(alias: string): boolean; - /** - * External observers can watch for all (or a specific) mql changes. - * If specific breakpoint is observed, only return *activated* events - * otherwise return all events for BOTH activated + deactivated changes. - */ - observe(alias?: string): Observable; - /** - * Immediate calls to matchMedia() to establish listeners - * and prepare for immediate subscription notifications - */ - private _registerBreakpoints; -} diff --git a/typings/esm5/core/media-observer/media-observer.d.ts b/typings/esm5/core/media-observer/media-observer.d.ts index f98dacdca..0a03c45cf 100644 --- a/typings/esm5/core/media-observer/media-observer.d.ts +++ b/typings/esm5/core/media-observer/media-observer.d.ts @@ -1,23 +1,30 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +import { OnDestroy } from '@angular/core'; import { Observable } from 'rxjs'; -import { BreakPointRegistry } from '../breakpoints/break-point-registry'; import { MediaChange } from '../media-change'; import { MatchMedia } from '../match-media/match-media'; +import { PrintHook } from '../media-marshaller/print-hook'; +import { BreakPointRegistry } from '../breakpoints/break-point-registry'; /** - * Class internalizes a MatchMedia service and exposes an Observable interface. - - * This exposes an Observable with a feature to subscribe to mediaQuery - * changes and a validator method (`isActive()`) to test if a mediaQuery (or alias) is - * currently active. + * MediaObserver enables applications to listen for 1..n mediaQuery activations and to determine + * if a mediaQuery is currently activated. * - * !! Only mediaChange activations (not de-activations) are announced by the MediaObserver + * Since a breakpoint change will first deactivate 1...n mediaQueries and then possibly activate + * 1..n mediaQueries, the MediaObserver will debounce notifications and report ALL *activations* + * in 1 event notification. The reported activations will be sorted in descending priority order. * * This class uses the BreakPoint Registry to inject alias information into the raw MediaChange * notification. For custom mediaQuery notifications, alias information will not be injected and * those fields will be ''. * - * !! This is not an actual Observable. It is a wrapper of an Observable used to publish additional - * methods like `isActive(). To access the Observable and use RxJS operators, use - * `.media$` with syntax like mediaObserver.media$.map(....). + * Note: Developers should note that only mediaChange activations (not de-activations) + * are announced by the MediaObserver. * * @usage * @@ -30,57 +37,76 @@ import { MatchMedia } from '../match-media/match-media'; * status: string = ''; * * constructor(mediaObserver: MediaObserver) { - * const onChange = (change: MediaChange) => { - * this.status = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : ''; - * }; + * const media$ = mediaObserver.asObservable().pipe( + * filter((changes: MediaChange[]) => true) // silly noop filter + * ); * - * // Subscribe directly or access observable to use filter/map operators - * // e.g. mediaObserver.media$.subscribe(onChange); + * media$.subscribe((changes: MediaChange[]) => { + * let status = ''; + * changes.forEach( change => { + * status += `'${change.mqAlias}' = (${change.mediaQuery})
` ; + * }); + * this.status = status; + * }); * - * mediaObserver.media$() - * .pipe( - * filter((change: MediaChange) => true) // silly noop filter - * ).subscribe(onChange); * } * } */ -export declare class MediaObserver { - private breakpoints; - private mediaWatcher; +export declare class MediaObserver implements OnDestroy { + protected breakpoints: BreakPointRegistry; + protected matchMedia: MatchMedia; + protected hook: PrintHook; /** - * Whether to announce gt- breakpoint activations + * @deprecated Use `asObservable()` instead. + * @breaking-change 8.0.0-beta.25 + * @deletion-target v8.0.0-beta.26 */ - filterOverlaps: boolean; readonly media$: Observable; - constructor(breakpoints: BreakPointRegistry, mediaWatcher: MatchMedia); + /** Filter MediaChange notifications for overlapping breakpoints */ + filterOverlaps: boolean; + constructor(breakpoints: BreakPointRegistry, matchMedia: MatchMedia, hook: PrintHook); + /** + * Completes the active subject, signalling to all complete for all + * MediaObserver subscribers + */ + ngOnDestroy(): void; /** - * Test if specified query/alias is active. + * Observe changes to current activation 'list' */ - isActive(alias: string): boolean; + asObservable(): Observable; + /** + * Allow programmatic query to determine if one or more media query/alias match + * the current viewport size. + * @param value One or more media queries (or aliases) to check. + * @returns Whether any of the media queries match. + */ + isActive(value: string | string[]): boolean; /** * Register all the mediaQueries registered in the BreakPointRegistry * This is needed so subscribers can be auto-notified of all standard, registered * mediaQuery activations */ - private _registerBreakPoints; + private watchActivations; /** - * Prepare internal observable + * Only pass/announce activations (not de-activations) + * + * Since multiple-mediaQueries can be activation in a cycle, + * gather all current activations into a single list of changes to observers + * + * Inject associated (if any) alias information into the MediaChange event + * - Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only + * - Exclude print activations that do not have an associated mediaQuery * * NOTE: the raw MediaChange events [from MatchMedia] do not * contain important alias information; as such this info * must be injected into the MediaChange */ - private _buildObservable; - /** - * Breakpoint locator by alias - */ - private _findByAlias; - /** - * Breakpoint locator by mediaQuery - */ - private _findByQuery; + private buildObservable; /** - * Find associated breakpoint (if any) + * Find all current activations and prepare single list of activations + * sorted by descending priority. */ - private _toMediaQuery; + private findAllActivations; + private readonly _media$; + private readonly destroyed$; } diff --git a/core/typings/media-monitor/index.d.ts b/typings/esm5/core/media-trigger/index.d.ts similarity index 85% rename from core/typings/media-monitor/index.d.ts rename to typings/esm5/core/media-trigger/index.d.ts index 59c43b640..42af86d6f 100644 --- a/core/typings/media-monitor/index.d.ts +++ b/typings/esm5/core/media-trigger/index.d.ts @@ -5,4 +5,4 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -export * from './media-monitor'; +export * from './media-trigger'; diff --git a/typings/esm5/core/media-trigger/media-trigger.d.ts b/typings/esm5/core/media-trigger/media-trigger.d.ts new file mode 100644 index 000000000..161ead05a --- /dev/null +++ b/typings/esm5/core/media-trigger/media-trigger.d.ts @@ -0,0 +1,70 @@ +import { MatchMedia } from '../match-media/match-media'; +import { BreakPointRegistry } from '../breakpoints/break-point-registry'; +import { LayoutConfigOptions } from '../tokens/library-config'; +/** + * Class + */ +export declare class MediaTrigger { + protected breakpoints: BreakPointRegistry; + protected matchMedia: MatchMedia; + protected layoutConfig: LayoutConfigOptions; + protected _platformId: Object; + protected _document: any; + constructor(breakpoints: BreakPointRegistry, matchMedia: MatchMedia, layoutConfig: LayoutConfigOptions, _platformId: Object, _document: any); + /** + * Manually activate range of breakpoints + * @param list array of mediaQuery or alias strings + */ + activate(list: string[]): void; + /** + * Restore original, 'real' breakpoints and emit events + * to trigger stream notification + */ + restore(): void; + /** + * Whenever window resizes, immediately auto-restore original + * activations (if we are simulating activations) + */ + private prepareAutoRestore; + /** + * Notify all matchMedia subscribers of de-activations + * + * Note: we must force 'matches' updates for + * future matchMedia::activation lookups + */ + private deactivateAll; + /** + * Cache current activations as sorted, prioritized list of MediaChanges + */ + private saveActivations; + /** + * Force set manual activations for specified mediaQuery list + */ + private setActivations; + /** + * For specified mediaQuery list manually simulate activations or deactivations + */ + private simulateMediaChanges; + /** + * Replace current registry with simulated registry... + * Note: this is required since MediaQueryList::matches is 'readOnly' + */ + private forceRegistryMatches; + /** + * Save current MatchMedia::registry items. + */ + private cacheRegistryMatches; + /** + * Restore original, 'true' registry + */ + private restoreRegistryMatches; + /** + * Manually emit a MediaChange event via the MatchMedia to MediaMarshaller and MediaObserver + */ + private emitChangeEvent; + private readonly currentActivations; + private hasCachedRegistryMatches; + private originalActivations; + private originalRegistry; + private resizeSubscription; +} diff --git a/typings/esm5/core/observable-media/index.d.ts b/typings/esm5/core/observable-media/index.d.ts deleted file mode 100644 index a70750c29..000000000 --- a/typings/esm5/core/observable-media/index.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ -export * from './observable-media'; diff --git a/typings/esm5/core/observable-media/observable-media.d.ts b/typings/esm5/core/observable-media/observable-media.d.ts deleted file mode 100644 index 2eab41422..000000000 --- a/typings/esm5/core/observable-media/observable-media.d.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { Observable, PartialObserver, Subscribable, Subscription } from 'rxjs'; -import { BreakPointRegistry } from '../breakpoints/break-point-registry'; -import { MediaChange } from '../media-change'; -import { MatchMedia } from '../match-media/match-media'; -/** - * Base class for MediaService and pseudo-token for - * @deprecated use MediaObserver instead - * @deletion-target v7.0.0-beta.21 - */ -export declare abstract class ObservableMedia implements Subscribable { - abstract isActive(query: string): boolean; - abstract asObservable(): Observable; - abstract subscribe(next?: (value: MediaChange) => void, error?: (error: any) => void, complete?: () => void): Subscription; - abstract subscribe(observer?: PartialObserver): Subscription; -} -/** - * Class internalizes a MatchMedia service and exposes an Subscribable and Observable interface. - - * This an Observable with that exposes a feature to subscribe to mediaQuery - * changes and a validator method (`isActive()`) to test if a mediaQuery (or alias) is - * currently active. - * - * !! Only mediaChange activations (not de-activations) are announced by the ObservableMedia - * - * This class uses the BreakPoint Registry to inject alias information into the raw MediaChange - * notification. For custom mediaQuery notifications, alias information will not be injected and - * those fields will be ''. - * - * !! This is not an actual Observable. It is a wrapper of an Observable used to publish additional - * methods like `isActive(). To access the Observable and use RxJS operators, use - * `.asObservable()` with syntax like media.asObservable().map(....). - * - * @usage - * - * // RxJS - * import {filter} from 'rxjs/operators/filter'; - * import { ObservableMedia } from '@angular/flex-layout'; - * - * @Component({ ... }) - * export class AppComponent { - * status : string = ''; - * - * constructor( media:ObservableMedia ) { - * let onChange = (change:MediaChange) => { - * this.status = change ? `'${change.mqAlias}' = (${change.mediaQuery})` : ''; - * }; - * - * // Subscribe directly or access observable to use filter/map operators - * // e.g. - * // media.subscribe(onChange); - * - * media.asObservable() - * .pipe( - * filter((change:MediaChange) => true) // silly noop filter - * ).subscribe(onChange); - * } - * } - * @deprecated use MediaObserver instead - * @deletion-target v7.0.0-beta.21 - */ -export declare class MediaService implements ObservableMedia { - private breakpoints; - private mediaWatcher; - /** - * Should we announce gt- breakpoint activations ? - */ - filterOverlaps: boolean; - constructor(breakpoints: BreakPointRegistry, mediaWatcher: MatchMedia); - /** - * Test if specified query/alias is active. - */ - isActive(alias: string): boolean; - /** - * Proxy to the Observable subscribe method - */ - subscribe(observerOrNext?: PartialObserver | ((value: MediaChange) => void), error?: (error: any) => void, complete?: () => void): Subscription; - /** - * Access to observable for use with operators like - * .filter(), .map(), etc. - */ - asObservable(): Observable; - /** - * Register all the mediaQueries registered in the BreakPointRegistry - * This is needed so subscribers can be auto-notified of all standard, registered - * mediaQuery activations - */ - private _registerBreakPoints; - /** - * Prepare internal observable - * - * NOTE: the raw MediaChange events [from MatchMedia] do not - * contain important alias information; as such this info - * must be injected into the MediaChange - */ - private _buildObservable; - /** - * Breakpoint locator by alias - */ - private _findByAlias; - /** - * Breakpoint locator by mediaQuery - */ - private _findByQuery; - /** - * Find associated breakpoint (if any) - */ - private _toMediaQuery; - private readonly observable$; -} -/** - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export declare const ObservableMediaProvider: { - provide: typeof ObservableMedia; - useClass: typeof MediaService; -}; diff --git a/typings/esm5/core/public-api.d.ts b/typings/esm5/core/public-api.d.ts index 8ddacac22..02ed7d038 100644 --- a/typings/esm5/core/public-api.d.ts +++ b/typings/esm5/core/public-api.d.ts @@ -5,19 +5,20 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -export * from './browser-provider'; export * from './module'; +export * from './browser-provider'; export * from './media-change'; export * from './stylesheet-map/index'; export * from './tokens/index'; +export * from './add-alias'; export * from './base/index'; export * from './breakpoints/index'; -export * from './match-media/index'; -export * from './media-monitor/index'; -export * from './observable-media/index'; +export { MatchMedia as ɵMatchMedia, MockMatchMedia as ɵMockMatchMedia, MockMatchMediaProvider as ɵMockMatchMediaProvider, } from './match-media/index'; export * from './media-observer/index'; -export * from './responsive-activation/responsive-activation'; +export * from './media-trigger/index'; +export * from './utils/index'; export * from './style-utils/style-utils'; export * from './style-builder/style-builder'; export * from './basis-validator/basis-validator'; export * from './media-marshaller/media-marshaller'; +export * from './media-marshaller/print-hook'; diff --git a/typings/esm5/core/responsive-activation/responsive-activation.d.ts b/typings/esm5/core/responsive-activation/responsive-activation.d.ts deleted file mode 100644 index 68e0b929e..000000000 --- a/typings/esm5/core/responsive-activation/responsive-activation.d.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { MediaChange, MediaQuerySubscriber } from '../media-change'; -import { BreakPoint } from '../breakpoints/break-point'; -import { MediaMonitor } from '../media-monitor/media-monitor'; -/** - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export interface BreakPointX extends BreakPoint { - key: string; - baseKey: string; -} -/** - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export declare class KeyOptions { - baseKey: string; - defaultValue: string | number | boolean; - inputKeys: { - [key: string]: any; - }; - constructor(baseKey: string, defaultValue: string | number | boolean, inputKeys: { - [key: string]: any; - }); -} -/** - * ResponsiveActivation acts as a proxy between the MonitorMedia service (which emits mediaQuery - * changes) and the fx API directives. The MQA proxies mediaQuery change events and notifies the - * directive via the specified callback. - * - * - The MQA also determines which directive property should be used to determine the - * current change 'value'... BEFORE the original `onMediaQueryChanges()` method is called. - * - The `ngOnDestroy()` method is also head-hooked to enable auto-unsubscribe from the - * MediaQueryServices. - * - * NOTE: these interceptions enables the logic in the fx API directives to remain terse and clean. - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export declare class ResponsiveActivation { - private _options; - private _mediaMonitor; - private _onMediaChanges; - private _activatedInputKey; - private _registryMap; - private _subscribers; - /** - * Constructor - */ - constructor(_options: KeyOptions, _mediaMonitor: MediaMonitor, _onMediaChanges: MediaQuerySubscriber); - /** - * Get a readonly sorted list of the breakpoints corresponding to the directive properties - * defined in the HTML markup: the sorting is done from largest to smallest. The order is - * important when several media queries are 'registered' and from which, the browser uses the - * first matching media query. - */ - readonly registryFromLargest: BreakPointX[]; - /** - * Determine which directive @Input() property is currently active (for the viewport size): - * The key must be defined (in use) or fallback to the 'closest' overlapping property key - * that is defined; otherwise the default property key will be used. - * e.g. - * if `
` is used but the current activated mediaQuery alias - * key is `.md` then `.gt-sm` should be used instead - */ - readonly activatedInputKey: string; - /** - * Get the currently activated @Input value or the fallback default @Input value - */ - readonly activatedInput: any; - /** - * Fast validator for presence of attribute on the host element - */ - hasKeyValue(key: string): boolean; - /** - * Remove interceptors, restore original functions, and forward the onDestroy() call - */ - destroy(): void; - /** - * For each *defined* API property, register a callback to `_onMonitorEvents( )` - * Cache 1..n subscriptions for internal auto-unsubscribes when the the directive destructs - */ - private _configureChangeObservers; - /** - * Build mediaQuery key-hashmap; only for the directive properties that are actually defined/used - * in the HTML markup - */ - private _buildRegistryMap; - /** - * Synchronizes change notifications with the current mq-activated @Input and calculates the - * mq-activated input value or the default value - */ - protected _onMonitorEvents(change: MediaChange): void; - /** - * Has the key been specified in the HTML markup and thus is intended - * to participate in activation processes. - */ - private _keyInUse; - /** - * Map input key associated with mediaQuery activation to closest defined input key - * then return the values associated with the targeted input property - * - * !! change events may arrive out-of-order (activate before deactivate) - * so make sure the deactivate is used ONLY when the keys match - * (since a different activate may be in use) - */ - private _calculateActivatedValue; - /** - * For the specified input property key, validate it is defined (used in the markup) - * If not see if a overlapping mediaQuery-related input key fallback has been defined - * - * NOTE: scans in the order defined by activeOverLaps (largest viewport ranges -> smallest ranges) - */ - private _validateInputKey; - /** - * Get the value (if any) for the directive instances @Input property (aka key) - */ - private _lookupKeyValue; -} diff --git a/typings/esm5/core/tokens/library-config.d.ts b/typings/esm5/core/tokens/library-config.d.ts index 6b9ff306b..7cb0bf3f2 100644 --- a/typings/esm5/core/tokens/library-config.d.ts +++ b/typings/esm5/core/tokens/library-config.d.ts @@ -14,6 +14,9 @@ export interface LayoutConfigOptions { disableVendorPrefixes?: boolean; serverLoaded?: boolean; useColumnBasisZero?: boolean; + printWithBreakpoints?: string[]; + mediaTriggerAutoRestore?: boolean; + ssrObserveBreakpoints?: string[]; } export declare const DEFAULT_CONFIG: LayoutConfigOptions; export declare const LAYOUT_CONFIG: InjectionToken; diff --git a/typings/esm5/core/utils/array.d.ts b/typings/esm5/core/utils/array.d.ts new file mode 100644 index 000000000..f5376b2cc --- /dev/null +++ b/typings/esm5/core/utils/array.d.ts @@ -0,0 +1,9 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +/** Wraps the provided value in an array, unless the provided value is an array. */ +export declare function coerceArray(value: T | T[]): T[]; diff --git a/typings/esm5/core/utils/index.d.ts b/typings/esm5/core/utils/index.d.ts new file mode 100644 index 000000000..d0b1b476e --- /dev/null +++ b/typings/esm5/core/utils/index.d.ts @@ -0,0 +1,9 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +export * from './sort'; +export * from './array'; diff --git a/typings/esm5/core/utils/sort.d.ts b/typings/esm5/core/utils/sort.d.ts new file mode 100644 index 000000000..5de0356c8 --- /dev/null +++ b/typings/esm5/core/utils/sort.d.ts @@ -0,0 +1,15 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ +interface WithPriority { + priority?: number; +} +/** HOF to sort the breakpoints by descending priority */ +export declare function sortDescendingPriority(a: T | null, b: T | null): number; +/** HOF to sort the breakpoints by ascending priority */ +export declare function sortAscendingPriority(a: T, b: T): number; +export {}; diff --git a/typings/esm5/extended/class/class.d.ts b/typings/esm5/extended/class/class.d.ts index 83d8c5c8e..0003e9a31 100644 --- a/typings/esm5/extended/class/class.d.ts +++ b/typings/esm5/extended/class/class.d.ts @@ -5,16 +5,14 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -import { DoCheck, ElementRef, IterableDiffers, KeyValueDiffers, Renderer2 } from '@angular/core'; -import { NgClass } from '@angular/common'; +import { DoCheck, ElementRef } from '@angular/core'; +import { NgClass, ɵNgClassImpl, ɵNgClassR2Impl } from '@angular/common'; import { BaseDirective2, StyleUtils, MediaMarshaller } from '@angular/flex-layout/core'; export declare class ClassDirective extends BaseDirective2 implements DoCheck { protected elementRef: ElementRef; protected styler: StyleUtils; protected marshal: MediaMarshaller; - protected iterableDiffers: IterableDiffers; - protected keyValueDiffers: KeyValueDiffers; - protected renderer: Renderer2; + protected delegate: ɵNgClassImpl; protected readonly ngClassInstance: NgClass; protected DIRECTIVE_KEY: string; /** @@ -22,13 +20,17 @@ export declare class ClassDirective extends BaseDirective2 implements DoCheck { * which are merged with activated styles and used as fallbacks. */ klass: string; - constructor(elementRef: ElementRef, styler: StyleUtils, marshal: MediaMarshaller, iterableDiffers: IterableDiffers, keyValueDiffers: KeyValueDiffers, renderer: Renderer2, ngClassInstance: NgClass); + constructor(elementRef: ElementRef, styler: StyleUtils, marshal: MediaMarshaller, delegate: ɵNgClassImpl, ngClassInstance: NgClass); protected updateWithValue(value: any): void; /** * For ChangeDetectionStrategy.onPush and ngOnChanges() updates */ ngDoCheck(): void; } +export declare const LayoutNgClassImplProvider: { + provide: typeof ɵNgClassImpl; + useClass: typeof ɵNgClassR2Impl; +}; /** * Directive to add responsive support for ngClass. * This maintains the core functionality of 'ngClass' and adds responsive API diff --git a/typings/esm5/extended/img-src/img-src.d.ts b/typings/esm5/extended/img-src/img-src.d.ts index bbaea8281..0edf146d9 100644 --- a/typings/esm5/extended/img-src/img-src.d.ts +++ b/typings/esm5/extended/img-src/img-src.d.ts @@ -31,7 +31,7 @@ export declare class ImgSrcDirective extends BaseDirective2 { * Do nothing to standard `` usages, only when responsive * keys are present do we actually call `setAttribute()` */ - protected updateWithValue(): void; + protected updateWithValue(value?: string): void; protected styleCache: Map; } /** diff --git a/typings/esm5/extended/index.metadata.json b/typings/esm5/extended/index.metadata.json index 0ecac7225..c93c4332c 100644 --- a/typings/esm5/extended/index.metadata.json +++ b/typings/esm5/extended/index.metadata.json @@ -1 +1 @@ -{"__symbolic":"module","version":4,"metadata":{"ExtendedModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":29,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"CoreModule","line":30,"character":12}],"declarations":[{"__symbolic":"reference","name":"DefaultShowHideDirective"},{"__symbolic":"reference","name":"DefaultClassDirective"},{"__symbolic":"reference","name":"DefaultStyleDirective"},{"__symbolic":"reference","name":"DefaultImgSrcDirective"}],"exports":[{"__symbolic":"reference","name":"DefaultShowHideDirective"},{"__symbolic":"reference","name":"DefaultClassDirective"},{"__symbolic":"reference","name":"DefaultStyleDirective"},{"__symbolic":"reference","name":"DefaultImgSrcDirective"}]}]}],"members":{}},"ClassDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":21,"character":36},"members":{"klass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3},"arguments":["class"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":41,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":41,"character":27}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":35,"character":36},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":36,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":37,"character":33},{"__symbolic":"reference","module":"@angular/core","name":"IterableDiffers","line":38,"character":41},{"__symbolic":"reference","module":"@angular/core","name":"KeyValueDiffers","line":39,"character":41},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":40,"character":34},{"__symbolic":"reference","module":"@angular/common","name":"NgClass","line":41,"character":70}]}],"updateWithValue":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}]}},"DefaultClassDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ClassDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":87,"character":1},"arguments":[{"selector":"\n [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl],\n [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl],\n [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]\n","inputs":["ngClass","ngClass.xs","ngClass.sm","ngClass.md","ngClass.lg","ngClass.xl","ngClass.lt-sm","ngClass.lt-md","ngClass.lt-lg","ngClass.lt-xl","ngClass.gt-xs","ngClass.gt-sm","ngClass.gt-md","ngClass.gt-lg"]}]}],"members":{}},"ImgSrcStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":40},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ImgSrcDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":37},"members":{"src":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3},"arguments":["src"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":39,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":39,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":40,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":40,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":35,"character":36},{"__symbolic":"reference","name":"ImgSrcStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":37,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":38,"character":33},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"boolean"}]}],"updateWithValue":[{"__symbolic":"method"}]}},"DefaultImgSrcDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ImgSrcDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":92,"character":1},"arguments":[{"selector":"\n img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl],\n img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl],\n img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]\n","inputs":["src.xs","src.sm","src.md","src.lg","src.xl","src.lt-sm","src.lt-md","src.lt-lg","src.lt-xl","src.gt-xs","src.gt-sm","src.gt-md","src.gt-lg"]}]}],"members":{}},"negativeOf":{"__symbolic":"function","parameters":["hide"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"hide"},"right":""},"thenExpression":false,"elseExpression":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"hide"},"right":"false"},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"hide"},"right":0}},"thenExpression":true,"elseExpression":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"reference","name":"hide"}}}}},"ShowHideParent":{"__symbolic":"interface"},"ShowHideStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":49,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":48,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ShowHideDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":56,"character":39},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":68,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":68,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":69,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":69,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":70,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":70,"character":27},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":70,"character":34}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":64,"character":36},{"__symbolic":"reference","name":"ShowHideStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":66,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":67,"character":33},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LayoutConfigOptions","line":68,"character":61},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"boolean"}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"getDisplayStyle":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}]}},"DefaultShowHideDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ShowHideDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":184,"character":1},"arguments":[{"selector":"\n [fxShow],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n","inputs":["fxShow","fxShow.xs","fxShow.sm","fxShow.md","fxShow.lg","fxShow.xl","fxShow.lt-sm","fxShow.lt-md","fxShow.lt-lg","fxShow.lt-xl","fxShow.gt-xs","fxShow.gt-sm","fxShow.gt-md","fxShow.gt-lg","fxHide","fxHide.xs","fxHide.sm","fxHide.md","fxHide.lg","fxHide.xl","fxHide.lt-sm","fxHide.lt-md","fxHide.lt-lg","fxHide.lt-xl","fxHide.gt-xs","fxHide.gt-sm","fxHide.gt-md","fxHide.gt-lg"]}]}],"members":{}},"StyleDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":34,"character":36},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":45,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":45,"character":27}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":39,"character":36},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":40,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":41,"character":33},{"__symbolic":"reference","module":"@angular/core","name":"KeyValueDiffers","line":42,"character":41},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":43,"character":34},{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":44,"character":35},{"__symbolic":"reference","module":"@angular/common","name":"NgStyle","line":45,"character":68}]}],"updateWithValue":[{"__symbolic":"method"}],"buildStyleMap":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}]}},"DefaultStyleDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StyleDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":114,"character":1},"arguments":[{"selector":"\n [ngStyle],\n [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl],\n [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl],\n [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]\n","inputs":["ngStyle","ngStyle.xs","ngStyle.sm","ngStyle.md","ngStyle.lg","ngStyle.xl","ngStyle.lt-sm","ngStyle.lt-md","ngStyle.lt-lg","ngStyle.lt-xl","ngStyle.gt-xs","ngStyle.gt-sm","ngStyle.gt-md","ngStyle.gt-lg"]}]}],"members":{}}},"origins":{"ExtendedModule":"./module","ClassDirective":"./class/class","DefaultClassDirective":"./class/class","ImgSrcStyleBuilder":"./img-src/img-src","ImgSrcDirective":"./img-src/img-src","DefaultImgSrcDirective":"./img-src/img-src","negativeOf":"./show-hide/show-hide","ShowHideParent":"./show-hide/show-hide","ShowHideStyleBuilder":"./show-hide/show-hide","ShowHideDirective":"./show-hide/show-hide","DefaultShowHideDirective":"./show-hide/show-hide","StyleDirective":"./style/style","DefaultStyleDirective":"./style/style"},"importAs":"@angular/flex-layout/extended"} \ No newline at end of file +{"__symbolic":"module","version":4,"metadata":{"ExtendedModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":29,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"CoreModule","line":30,"character":12}],"declarations":[{"__symbolic":"reference","name":"DefaultShowHideDirective"},{"__symbolic":"reference","name":"DefaultClassDirective"},{"__symbolic":"reference","name":"DefaultStyleDirective"},{"__symbolic":"reference","name":"DefaultImgSrcDirective"}],"exports":[{"__symbolic":"reference","name":"DefaultShowHideDirective"},{"__symbolic":"reference","name":"DefaultClassDirective"},{"__symbolic":"reference","name":"DefaultStyleDirective"},{"__symbolic":"reference","name":"DefaultImgSrcDirective"}]}]}],"members":{}},"ClassDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":11,"character":36},"members":{"klass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3},"arguments":["class"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":29,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":29,"character":27}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":25,"character":36},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":26,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":27,"character":33},{"__symbolic":"reference","module":"@angular/common","name":"ɵNgClassImpl","line":28,"character":34},{"__symbolic":"reference","module":"@angular/common","name":"NgClass","line":29,"character":70}]}],"updateWithValue":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}]}},"LayoutNgClassImplProvider":{"provide":{"__symbolic":"reference","module":"@angular/common","name":"ɵNgClassImpl","line":28,"character":34},"useClass":{"__symbolic":"reference","module":"@angular/common","name":"ɵNgClassR2Impl","line":72,"character":12}},"DefaultClassDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ClassDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":80,"character":1},"arguments":[{"selector":"\n [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl],\n [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl],\n [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]\n","inputs":["ngClass","ngClass.xs","ngClass.sm","ngClass.md","ngClass.lg","ngClass.xl","ngClass.lt-sm","ngClass.lt-md","ngClass.lt-lg","ngClass.lt-xl","ngClass.gt-xs","ngClass.gt-sm","ngClass.gt-md","ngClass.gt-lg"],"providers":[{"__symbolic":"reference","name":"LayoutNgClassImplProvider"}]}]}],"members":{}},"ImgSrcStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":40},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ImgSrcDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":37},"members":{"src":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3},"arguments":["src"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":39,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":39,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":40,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":40,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":35,"character":36},{"__symbolic":"reference","name":"ImgSrcStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":37,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":38,"character":33},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"boolean"}]}],"updateWithValue":[{"__symbolic":"method"}]}},"DefaultImgSrcDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ImgSrcDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":92,"character":1},"arguments":[{"selector":"\n img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl],\n img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl],\n img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]\n","inputs":["src.xs","src.sm","src.md","src.lg","src.xl","src.lt-sm","src.lt-md","src.lt-lg","src.lt-xl","src.gt-xs","src.gt-sm","src.gt-md","src.gt-lg"]}]}],"members":{}},"ShowHideParent":{"__symbolic":"interface"},"ShowHideStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":36,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":35,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ShowHideDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":43,"character":39},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":55,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":55,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":56,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":56,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":57,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":57,"character":27},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":57,"character":34}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":51,"character":36},{"__symbolic":"reference","name":"ShowHideStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":53,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":54,"character":33},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LayoutConfigOptions","line":55,"character":61},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"boolean"}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"trackExtraTriggers":[{"__symbolic":"method"}],"getDisplayStyle":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}]}},"DefaultShowHideDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ShowHideDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":183,"character":1},"arguments":[{"selector":"\n [fxShow], [fxShow.print],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide], [fxHide.print],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n","inputs":["fxShow","fxShow.print","fxShow.xs","fxShow.sm","fxShow.md","fxShow.lg","fxShow.xl","fxShow.lt-sm","fxShow.lt-md","fxShow.lt-lg","fxShow.lt-xl","fxShow.gt-xs","fxShow.gt-sm","fxShow.gt-md","fxShow.gt-lg","fxHide","fxHide.print","fxHide.xs","fxHide.sm","fxHide.md","fxHide.lg","fxHide.xl","fxHide.lt-sm","fxHide.lt-md","fxHide.lt-lg","fxHide.lt-xl","fxHide.gt-xs","fxHide.gt-sm","fxHide.gt-md","fxHide.gt-lg"]}]}],"members":{}},"StyleDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":39,"character":36},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":50,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":50,"character":27}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":51,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":51,"character":27},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":51,"character":34}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":52,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":52,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":36},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":46,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":47,"character":33},{"__symbolic":"reference","module":"@angular/common","name":"ɵNgStyleImpl","line":48,"character":34},{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":49,"character":35},{"__symbolic":"reference","module":"@angular/common","name":"NgStyle","line":50,"character":68},{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"Object"}]}],"updateWithValue":[{"__symbolic":"method"}],"clearStyles":[{"__symbolic":"method"}],"buildStyleMap":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}]}},"LayoutNgStyleImplProvider":{"provide":{"__symbolic":"reference","module":"@angular/common","name":"ɵNgStyleImpl","line":48,"character":34},"useClass":{"__symbolic":"reference","module":"@angular/common","name":"ɵNgStyleR2Impl","line":131,"character":12}},"DefaultStyleDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StyleDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":138,"character":1},"arguments":[{"selector":"\n [ngStyle],\n [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl],\n [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl],\n [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]\n","inputs":["ngStyle","ngStyle.xs","ngStyle.sm","ngStyle.md","ngStyle.lg","ngStyle.xl","ngStyle.lt-sm","ngStyle.lt-md","ngStyle.lt-lg","ngStyle.lt-xl","ngStyle.gt-xs","ngStyle.gt-sm","ngStyle.gt-md","ngStyle.gt-lg"],"providers":[{"__symbolic":"reference","name":"LayoutNgStyleImplProvider"}]}]}],"members":{}}},"origins":{"ExtendedModule":"./module","ClassDirective":"./class/class","LayoutNgClassImplProvider":"./class/class","DefaultClassDirective":"./class/class","ImgSrcStyleBuilder":"./img-src/img-src","ImgSrcDirective":"./img-src/img-src","DefaultImgSrcDirective":"./img-src/img-src","ShowHideParent":"./show-hide/show-hide","ShowHideStyleBuilder":"./show-hide/show-hide","ShowHideDirective":"./show-hide/show-hide","DefaultShowHideDirective":"./show-hide/show-hide","StyleDirective":"./style/style","LayoutNgStyleImplProvider":"./style/style","DefaultStyleDirective":"./style/style"},"importAs":"@angular/flex-layout/extended"} \ No newline at end of file diff --git a/typings/esm5/extended/show-hide/show-hide.d.ts b/typings/esm5/extended/show-hide/show-hide.d.ts index d49eae81a..de9800ff0 100644 --- a/typings/esm5/extended/show-hide/show-hide.d.ts +++ b/typings/esm5/extended/show-hide/show-hide.d.ts @@ -7,15 +7,6 @@ */ import { ElementRef, OnChanges, SimpleChanges, AfterViewInit } from '@angular/core'; import { BaseDirective2, LayoutConfigOptions, MediaMarshaller, StyleUtils, StyleBuilder } from '@angular/flex-layout/core'; -/** - * For fxHide selectors, we invert the 'value' - * and assign to the equivalent fxShow selector cache - * - When 'hide' === '' === true, do NOT show the element - * - When 'hide' === false or 0... we WILL show the element - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export declare function negativeOf(hide: any): boolean; export interface ShowHideParent { display: string; } @@ -45,6 +36,10 @@ export declare class ShowHideDirective extends BaseDirective2 implements AfterVi * Then conditionally override with the mq-activated Input's current value */ ngOnChanges(changes: SimpleChanges): void; + /** + * Watch for these extra triggers to update fxShow, fxHide stylings + */ + protected trackExtraTriggers(): void; /** * Override accessor to the current HTMLElement's `display` style * Note: Show/Hide will not change the display to 'flex' but will set it to 'block' diff --git a/typings/esm5/extended/style/style.d.ts b/typings/esm5/extended/style/style.d.ts index 43f928e0a..1c0dee1db 100644 --- a/typings/esm5/extended/style/style.d.ts +++ b/typings/esm5/extended/style/style.d.ts @@ -5,8 +5,8 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -import { DoCheck, ElementRef, KeyValueDiffers, Renderer2 } from '@angular/core'; -import { NgStyle } from '@angular/common'; +import { DoCheck, ElementRef } from '@angular/core'; +import { NgStyle, ɵNgStyleImpl, ɵNgStyleR2Impl } from '@angular/common'; import { DomSanitizer } from '@angular/platform-browser'; import { BaseDirective2, StyleUtils, MediaMarshaller } from '@angular/flex-layout/core'; import { NgStyleType, NgStyleMap } from './style-transforms'; @@ -14,14 +14,17 @@ export declare class StyleDirective extends BaseDirective2 implements DoCheck { protected elementRef: ElementRef; protected styler: StyleUtils; protected marshal: MediaMarshaller; - protected keyValueDiffers: KeyValueDiffers; - protected renderer: Renderer2; + protected delegate: ɵNgStyleImpl; protected sanitizer: DomSanitizer; private readonly ngStyleInstance; protected DIRECTIVE_KEY: string; protected fallbackStyles: NgStyleMap; - constructor(elementRef: ElementRef, styler: StyleUtils, marshal: MediaMarshaller, keyValueDiffers: KeyValueDiffers, renderer: Renderer2, sanitizer: DomSanitizer, ngStyleInstance: NgStyle); + protected isServer: boolean; + constructor(elementRef: ElementRef, styler: StyleUtils, marshal: MediaMarshaller, delegate: ɵNgStyleImpl, sanitizer: DomSanitizer, ngStyleInstance: NgStyle, serverLoaded: boolean, platformId: Object); + /** Add generated styles */ protected updateWithValue(value: any): void; + /** Remove generated styles */ + protected clearStyles(): void; /** * Convert raw strings to ngStyleMap; which is required by ngStyle * NOTE: Raw string key-value pairs MUST be delimited by `;` @@ -32,6 +35,10 @@ export declare class StyleDirective extends BaseDirective2 implements DoCheck { /** For ChangeDetectionStrategy.onPush and ngOnChanges() updates */ ngDoCheck(): void; } +export declare const LayoutNgStyleImplProvider: { + provide: typeof ɵNgStyleImpl; + useClass: typeof ɵNgStyleR2Impl; +}; /** * Directive to add responsive support for ngStyle. * diff --git a/typings/esm5/flex/index.metadata.json b/typings/esm5/flex/index.metadata.json index e3bad9cb7..86e73c8a2 100644 --- a/typings/esm5/flex/index.metadata.json +++ b/typings/esm5/flex/index.metadata.json @@ -1 +1 @@ -{"__symbolic":"module","version":4,"metadata":{"FlexModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":38,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"CoreModule","line":39,"character":12},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"BidiModule","line":39,"character":24}],"declarations":[{"__symbolic":"reference","name":"DefaultLayoutDirective"},{"__symbolic":"reference","name":"DefaultLayoutGapDirective"},{"__symbolic":"reference","name":"DefaultLayoutAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexOrderDirective"},{"__symbolic":"reference","name":"DefaultFlexOffsetDirective"},{"__symbolic":"reference","name":"FlexFillDirective"},{"__symbolic":"reference","name":"DefaultFlexAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexDirective"}],"exports":[{"__symbolic":"reference","name":"DefaultLayoutDirective"},{"__symbolic":"reference","name":"DefaultLayoutGapDirective"},{"__symbolic":"reference","name":"DefaultLayoutAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexOrderDirective"},{"__symbolic":"reference","name":"DefaultFlexOffsetDirective"},{"__symbolic":"reference","name":"FlexFillDirective"},{"__symbolic":"reference","name":"DefaultFlexAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexDirective"}]}]}],"members":{}},"FlexStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":30,"character":38},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":29,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":31,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":31,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LayoutConfigOptions","line":31,"character":61}]}],"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":201,"character":35},"members":{"shrink":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":208,"character":3},"arguments":["fxShrink"]}]}],"grow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":215,"character":3},"arguments":["fxGrow"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":227,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":227,"character":22}]}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":225,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":226,"character":36},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LayoutConfigOptions","line":31,"character":61},{"__symbolic":"reference","name":"FlexStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":229,"character":33}]}],"onLayoutChange":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}],"triggerReflow":[{"__symbolic":"method"}]}},"DefaultFlexDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":281,"character":1},"arguments":[{"inputs":["fxFlex","fxFlex.xs","fxFlex.sm","fxFlex.md","fxFlex.lg","fxFlex.xl","fxFlex.lt-sm","fxFlex.lt-md","fxFlex.lt-lg","fxFlex.lt-xl","fxFlex.gt-xs","fxFlex.gt-sm","fxFlex.gt-md","fxFlex.gt-lg"],"selector":"\n [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n [fxFlex.gt-md], [fxFlex.gt-lg]\n"}]}],"members":{}},"FlexAlignStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":17,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":57,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":65,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":61,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":62,"character":36},{"__symbolic":"reference","name":"FlexAlignStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":66,"character":33}]}]}},"DefaultFlexAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexAlignDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":76,"character":1},"arguments":[{"selector":"\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n","inputs":["fxFlexAlign","fxFlexAlign.xs","fxFlexAlign.sm","fxFlexAlign.md","fxFlexAlign.lg","fxFlexAlign.xl","fxFlexAlign.lt-sm","fxFlexAlign.lt-md","fxFlexAlign.lt-lg","fxFlexAlign.lt-xl","fxFlexAlign.gt-xs","fxFlexAlign.gt-sm","fxFlexAlign.gt-md","fxFlexAlign.gt-lg"]}]}],"members":{}},"FlexFillStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexFillDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":38,"character":39},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":37,"character":1},"arguments":[{"selector":"[fxFill], [fxFlexFill]"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":39,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":40,"character":36},{"__symbolic":"reference","name":"FlexFillStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":42,"character":33}]}]}},"FlexOffsetParent":{"__symbolic":"interface"},"FlexOffsetStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":32,"character":44},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":31,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexOffsetDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":67,"character":41},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":74,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":70,"character":31},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"Directionality","line":71,"character":40},{"__symbolic":"reference","name":"FlexOffsetStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":75,"character":33},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":76,"character":32}]}],"updateWithValue":[{"__symbolic":"method"}]}},"DefaultFlexOffsetDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexOffsetDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":114,"character":1},"arguments":[{"selector":"\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n","inputs":["fxFlexOffset","fxFlexOffset.xs","fxFlexOffset.sm","fxFlexOffset.md","fxFlexOffset.lg","fxFlexOffset.xl","fxFlexOffset.lt-sm","fxFlexOffset.lt-md","fxFlexOffset.lt-lg","fxFlexOffset.lt-xl","fxFlexOffset.gt-xs","fxFlexOffset.gt-sm","fxFlexOffset.gt-md","fxFlexOffset.gt-lg"]}]}],"members":{}},"FlexOrderStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":17,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexOrderDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":41,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":49,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":46,"character":36},{"__symbolic":"reference","name":"FlexOrderStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":50,"character":33}]}]}},"DefaultFlexOrderDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexOrderDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":60,"character":1},"arguments":[{"selector":"\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n","inputs":["fxFlexOrder","fxFlexOrder.xs","fxFlexOrder.sm","fxFlexOrder.md","fxFlexOrder.lg","fxFlexOrder.xl","fxFlexOrder.lt-sm","fxFlexOrder.lt-md","fxFlexOrder.lt-lg","fxFlexOrder.lt-xl","fxFlexOrder.gt-xs","fxFlexOrder.gt-sm","fxFlexOrder.gt-md","fxFlexOrder.gt-lg"]}]}],"members":{}},"LayoutStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":40},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":45,"character":37},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":53,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":49,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":50,"character":36},{"__symbolic":"reference","name":"LayoutStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":54,"character":33}]}]}},"DefaultLayoutDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"LayoutDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],\n [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md],\n [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm],\n [fxLayout.gt-md], [fxLayout.gt-lg]\n","inputs":["fxLayout","fxLayout.xs","fxLayout.sm","fxLayout.md","fxLayout.lg","fxLayout.xl","fxLayout.lt-sm","fxLayout.lt-md","fxLayout.lt-lg","fxLayout.lt-xl","fxLayout.gt-xs","fxLayout.gt-sm","fxLayout.gt-md","fxLayout.gt-lg"]}]}],"members":{}},"LayoutAlignParent":{"__symbolic":"interface"},"LayoutAlignStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":26,"character":45},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":25,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":120,"character":42},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":128,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":124,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":125,"character":36},{"__symbolic":"reference","name":"LayoutAlignStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":129,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}],"onLayoutChange":[{"__symbolic":"method"}]}},"DefaultLayoutAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"LayoutAlignDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":171,"character":1},"arguments":[{"selector":"\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n","inputs":["fxLayoutAlign","fxLayoutAlign.xs","fxLayoutAlign.sm","fxLayoutAlign.md","fxLayoutAlign.lg","fxLayoutAlign.xl","fxLayoutAlign.lt-sm","fxLayoutAlign.lt-md","fxLayoutAlign.lt-lg","fxLayoutAlign.lt-xl","fxLayoutAlign.gt-xs","fxLayoutAlign.gt-sm","fxLayoutAlign.gt-md","fxLayoutAlign.gt-lg"]}]}],"members":{}},"LayoutGapParent":{"__symbolic":"interface"},"LayoutGapStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":44,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":43,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":45,"character":31}]}],"buildStyles":[{"__symbolic":"method"}],"sideEffect":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutGapDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":98,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":121,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":115,"character":31},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":116,"character":30},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"Directionality","line":117,"character":40},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":45,"character":31},{"__symbolic":"reference","name":"LayoutGapStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":122,"character":33}]}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"onLayoutChange":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}],"willDisplay":[{"__symbolic":"method"}],"buildChildObservable":[{"__symbolic":"method"}]}},"DefaultLayoutGapDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"LayoutGapDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":231,"character":1},"arguments":[{"selector":"\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n","inputs":["fxLayoutGap","fxLayoutGap.xs","fxLayoutGap.sm","fxLayoutGap.md","fxLayoutGap.lg","fxLayoutGap.xl","fxLayoutGap.lt-sm","fxLayoutGap.lt-md","fxLayoutGap.lt-lg","fxLayoutGap.lt-xl","fxLayoutGap.gt-xs","fxLayoutGap.gt-sm","fxLayoutGap.gt-md","fxLayoutGap.gt-lg"]}]}],"members":{}}},"origins":{"FlexModule":"./module","FlexStyleBuilder":"./flex/flex","FlexDirective":"./flex/flex","DefaultFlexDirective":"./flex/flex","FlexAlignStyleBuilder":"./flex-align/flex-align","FlexAlignDirective":"./flex-align/flex-align","DefaultFlexAlignDirective":"./flex-align/flex-align","FlexFillStyleBuilder":"./flex-fill/flex-fill","FlexFillDirective":"./flex-fill/flex-fill","FlexOffsetParent":"./flex-offset/flex-offset","FlexOffsetStyleBuilder":"./flex-offset/flex-offset","FlexOffsetDirective":"./flex-offset/flex-offset","DefaultFlexOffsetDirective":"./flex-offset/flex-offset","FlexOrderStyleBuilder":"./flex-order/flex-order","FlexOrderDirective":"./flex-order/flex-order","DefaultFlexOrderDirective":"./flex-order/flex-order","LayoutStyleBuilder":"./layout/layout","LayoutDirective":"./layout/layout","DefaultLayoutDirective":"./layout/layout","LayoutAlignParent":"./layout-align/layout-align","LayoutAlignStyleBuilder":"./layout-align/layout-align","LayoutAlignDirective":"./layout-align/layout-align","DefaultLayoutAlignDirective":"./layout-align/layout-align","LayoutGapParent":"./layout-gap/layout-gap","LayoutGapStyleBuilder":"./layout-gap/layout-gap","LayoutGapDirective":"./layout-gap/layout-gap","DefaultLayoutGapDirective":"./layout-gap/layout-gap"},"importAs":"@angular/flex-layout/flex"} \ No newline at end of file +{"__symbolic":"module","version":4,"metadata":{"FlexModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":38,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"CoreModule","line":39,"character":12},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"BidiModule","line":39,"character":24}],"declarations":[{"__symbolic":"reference","name":"DefaultLayoutDirective"},{"__symbolic":"reference","name":"DefaultLayoutGapDirective"},{"__symbolic":"reference","name":"DefaultLayoutAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexOrderDirective"},{"__symbolic":"reference","name":"DefaultFlexOffsetDirective"},{"__symbolic":"reference","name":"FlexFillDirective"},{"__symbolic":"reference","name":"DefaultFlexAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexDirective"}],"exports":[{"__symbolic":"reference","name":"DefaultLayoutDirective"},{"__symbolic":"reference","name":"DefaultLayoutGapDirective"},{"__symbolic":"reference","name":"DefaultLayoutAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexOrderDirective"},{"__symbolic":"reference","name":"DefaultFlexOffsetDirective"},{"__symbolic":"reference","name":"FlexFillDirective"},{"__symbolic":"reference","name":"DefaultFlexAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexDirective"}]}]}],"members":{}},"FlexStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":30,"character":38},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":29,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":31,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":31,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LayoutConfigOptions","line":31,"character":61}]}],"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":201,"character":35},"members":{"shrink":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":208,"character":3},"arguments":["fxShrink"]}]}],"grow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":215,"character":3},"arguments":["fxGrow"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":227,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":227,"character":22}]}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":225,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":226,"character":36},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LayoutConfigOptions","line":31,"character":61},{"__symbolic":"reference","name":"FlexStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":229,"character":33}]}],"onLayoutChange":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}],"triggerReflow":[{"__symbolic":"method"}]}},"DefaultFlexDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":287,"character":1},"arguments":[{"inputs":["fxFlex","fxFlex.xs","fxFlex.sm","fxFlex.md","fxFlex.lg","fxFlex.xl","fxFlex.lt-sm","fxFlex.lt-md","fxFlex.lt-lg","fxFlex.lt-xl","fxFlex.gt-xs","fxFlex.gt-sm","fxFlex.gt-md","fxFlex.gt-lg"],"selector":"\n [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n [fxFlex.gt-md], [fxFlex.gt-lg]\n"}]}],"members":{}},"FlexAlignStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":17,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":57,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":65,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":61,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":62,"character":36},{"__symbolic":"reference","name":"FlexAlignStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":66,"character":33}]}]}},"DefaultFlexAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexAlignDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":76,"character":1},"arguments":[{"selector":"\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n","inputs":["fxFlexAlign","fxFlexAlign.xs","fxFlexAlign.sm","fxFlexAlign.md","fxFlexAlign.lg","fxFlexAlign.xl","fxFlexAlign.lt-sm","fxFlexAlign.lt-md","fxFlexAlign.lt-lg","fxFlexAlign.lt-xl","fxFlexAlign.gt-xs","fxFlexAlign.gt-sm","fxFlexAlign.gt-md","fxFlexAlign.gt-lg"]}]}],"members":{}},"FlexFillStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexFillDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":38,"character":39},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":37,"character":1},"arguments":[{"selector":"[fxFill], [fxFlexFill]"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":39,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":40,"character":36},{"__symbolic":"reference","name":"FlexFillStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":42,"character":33}]}]}},"FlexOffsetParent":{"__symbolic":"interface"},"FlexOffsetStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":32,"character":44},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":31,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexOffsetDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":67,"character":41},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":74,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":70,"character":31},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"Directionality","line":71,"character":40},{"__symbolic":"reference","name":"FlexOffsetStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":75,"character":33},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":76,"character":32}]}],"updateWithValue":[{"__symbolic":"method"}]}},"DefaultFlexOffsetDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexOffsetDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":114,"character":1},"arguments":[{"selector":"\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n","inputs":["fxFlexOffset","fxFlexOffset.xs","fxFlexOffset.sm","fxFlexOffset.md","fxFlexOffset.lg","fxFlexOffset.xl","fxFlexOffset.lt-sm","fxFlexOffset.lt-md","fxFlexOffset.lt-lg","fxFlexOffset.lt-xl","fxFlexOffset.gt-xs","fxFlexOffset.gt-sm","fxFlexOffset.gt-md","fxFlexOffset.gt-lg"]}]}],"members":{}},"FlexOrderStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":17,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexOrderDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":41,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":49,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":46,"character":36},{"__symbolic":"reference","name":"FlexOrderStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":50,"character":33}]}]}},"DefaultFlexOrderDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexOrderDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":60,"character":1},"arguments":[{"selector":"\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n","inputs":["fxFlexOrder","fxFlexOrder.xs","fxFlexOrder.sm","fxFlexOrder.md","fxFlexOrder.lg","fxFlexOrder.xl","fxFlexOrder.lt-sm","fxFlexOrder.lt-md","fxFlexOrder.lt-lg","fxFlexOrder.lt-xl","fxFlexOrder.gt-xs","fxFlexOrder.gt-sm","fxFlexOrder.gt-md","fxFlexOrder.gt-lg"]}]}],"members":{}},"LayoutStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":40},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":45,"character":37},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":53,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":49,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":50,"character":36},{"__symbolic":"reference","name":"LayoutStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":54,"character":33}]}]}},"DefaultLayoutDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"LayoutDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],\n [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md],\n [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm],\n [fxLayout.gt-md], [fxLayout.gt-lg]\n","inputs":["fxLayout","fxLayout.xs","fxLayout.sm","fxLayout.md","fxLayout.lg","fxLayout.xl","fxLayout.lt-sm","fxLayout.lt-md","fxLayout.lt-lg","fxLayout.lt-xl","fxLayout.gt-xs","fxLayout.gt-sm","fxLayout.gt-md","fxLayout.gt-lg"]}]}],"members":{}},"LayoutAlignParent":{"__symbolic":"interface"},"LayoutAlignStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":27,"character":45},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":26,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":121,"character":42},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":130,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":126,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":127,"character":36},{"__symbolic":"reference","name":"LayoutAlignStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":131,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}],"onLayoutChange":[{"__symbolic":"method"}]}},"DefaultLayoutAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"LayoutAlignDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":183,"character":1},"arguments":[{"selector":"\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n","inputs":["fxLayoutAlign","fxLayoutAlign.xs","fxLayoutAlign.sm","fxLayoutAlign.md","fxLayoutAlign.lg","fxLayoutAlign.xl","fxLayoutAlign.lt-sm","fxLayoutAlign.lt-md","fxLayoutAlign.lt-lg","fxLayoutAlign.lt-xl","fxLayoutAlign.gt-xs","fxLayoutAlign.gt-sm","fxLayoutAlign.gt-md","fxLayoutAlign.gt-lg"]}]}],"members":{}},"LayoutGapParent":{"__symbolic":"interface"},"LayoutGapStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":44,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":43,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":45,"character":31}]}],"buildStyles":[{"__symbolic":"method"}],"sideEffect":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutGapDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":98,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":121,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":115,"character":31},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":116,"character":30},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"Directionality","line":117,"character":40},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":45,"character":31},{"__symbolic":"reference","name":"LayoutGapStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":122,"character":33}]}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"onLayoutChange":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}],"clearStyles":[{"__symbolic":"method"}],"willDisplay":[{"__symbolic":"method"}],"buildChildObservable":[{"__symbolic":"method"}]}},"DefaultLayoutGapDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"LayoutGapDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":243,"character":1},"arguments":[{"selector":"\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n","inputs":["fxLayoutGap","fxLayoutGap.xs","fxLayoutGap.sm","fxLayoutGap.md","fxLayoutGap.lg","fxLayoutGap.xl","fxLayoutGap.lt-sm","fxLayoutGap.lt-md","fxLayoutGap.lt-lg","fxLayoutGap.lt-xl","fxLayoutGap.gt-xs","fxLayoutGap.gt-sm","fxLayoutGap.gt-md","fxLayoutGap.gt-lg"]}]}],"members":{}}},"origins":{"FlexModule":"./module","FlexStyleBuilder":"./flex/flex","FlexDirective":"./flex/flex","DefaultFlexDirective":"./flex/flex","FlexAlignStyleBuilder":"./flex-align/flex-align","FlexAlignDirective":"./flex-align/flex-align","DefaultFlexAlignDirective":"./flex-align/flex-align","FlexFillStyleBuilder":"./flex-fill/flex-fill","FlexFillDirective":"./flex-fill/flex-fill","FlexOffsetParent":"./flex-offset/flex-offset","FlexOffsetStyleBuilder":"./flex-offset/flex-offset","FlexOffsetDirective":"./flex-offset/flex-offset","DefaultFlexOffsetDirective":"./flex-offset/flex-offset","FlexOrderStyleBuilder":"./flex-order/flex-order","FlexOrderDirective":"./flex-order/flex-order","DefaultFlexOrderDirective":"./flex-order/flex-order","LayoutStyleBuilder":"./layout/layout","LayoutDirective":"./layout/layout","DefaultLayoutDirective":"./layout/layout","LayoutAlignParent":"./layout-align/layout-align","LayoutAlignStyleBuilder":"./layout-align/layout-align","LayoutAlignDirective":"./layout-align/layout-align","DefaultLayoutAlignDirective":"./layout-align/layout-align","LayoutGapParent":"./layout-gap/layout-gap","LayoutGapStyleBuilder":"./layout-gap/layout-gap","LayoutGapDirective":"./layout-gap/layout-gap","DefaultLayoutGapDirective":"./layout-gap/layout-gap"},"importAs":"@angular/flex-layout/flex"} \ No newline at end of file diff --git a/typings/esm5/flex/layout-align/layout-align.d.ts b/typings/esm5/flex/layout-align/layout-align.d.ts index aa714d1f2..c32462af3 100644 --- a/typings/esm5/flex/layout-align/layout-align.d.ts +++ b/typings/esm5/flex/layout-align/layout-align.d.ts @@ -9,6 +9,7 @@ import { ElementRef } from '@angular/core'; import { BaseDirective2, StyleBuilder, StyleDefinition, StyleUtils, MediaMarshaller, ElementMatcher } from '@angular/flex-layout/core'; export interface LayoutAlignParent { layout: string; + inline: boolean; } export declare class LayoutAlignStyleBuilder extends StyleBuilder { buildStyles(align: string, parent: LayoutAlignParent): StyleDefinition; @@ -29,6 +30,7 @@ export declare class LayoutAlignDirective extends BaseDirective2 { protected marshal: MediaMarshaller; protected DIRECTIVE_KEY: string; protected layout: string; + protected inline: boolean; constructor(elRef: ElementRef, styleUtils: StyleUtils, styleBuilder: LayoutAlignStyleBuilder, marshal: MediaMarshaller); /** * diff --git a/typings/esm5/flex/layout-gap/layout-gap.d.ts b/typings/esm5/flex/layout-gap/layout-gap.d.ts index a6bc93724..284b7cd17 100644 --- a/typings/esm5/flex/layout-gap/layout-gap.d.ts +++ b/typings/esm5/flex/layout-gap/layout-gap.d.ts @@ -47,6 +47,8 @@ export declare class LayoutGapDirective extends BaseDirective2 implements AfterC * */ protected updateWithValue(value: string): void; + /** We need to override clearStyles because in most cases mru isn't populated */ + protected clearStyles(): void; /** Determine if an element will show or hide based on current activation */ protected willDisplay(source: HTMLElement): boolean; protected buildChildObservable(): void; diff --git a/typings/esm5/grid/index.d.ts b/typings/esm5/grid/index.d.ts index e6d4ea3b2..e88835976 100644 --- a/typings/esm5/grid/index.d.ts +++ b/typings/esm5/grid/index.d.ts @@ -2,14 +2,14 @@ * Generated bundle index. Do not edit. */ export * from './public-api'; -export { DefaultGridAlignColumnsDirective as ɵf, GridAlignColumnsDirective as ɵe, GridAlignColumnsStyleBuilder as ɵd } from './align-columns/align-columns'; -export { DefaultGridAlignRowsDirective as ɵi, GridAlignRowsDirective as ɵh, GridAlignRowsStyleBuilder as ɵg } from './align-rows/align-rows'; -export { DefaultGridAreaDirective as ɵl, GridAreaDirective as ɵk, GridAreaStyleBuilder as ɵj } from './area/area'; -export { DefaultGridAreasDirective as ɵo, GridAreasDirective as ɵn, GridAreasStyleBuiler as ɵm } from './areas/areas'; -export { DefaultGridAutoDirective as ɵr, GridAutoDirective as ɵq, GridAutoStyleBuilder as ɵp } from './auto/auto'; -export { DefaultGridColumnDirective as ɵu, GridColumnDirective as ɵt, GridColumnStyleBuilder as ɵs } from './column/column'; -export { DefaultGridColumnsDirective as ɵx, GridColumnsDirective as ɵw, GridColumnsStyleBuilder as ɵv } from './columns/columns'; -export { DefaultGridGapDirective as ɵba, GridGapDirective as ɵz, GridGapStyleBuilder as ɵy } from './gap/gap'; -export { DefaultGridAlignDirective as ɵc, GridAlignDirective as ɵb, GridAlignStyleBuilder as ɵa } from './grid-align/grid-align'; -export { DefaultGridRowDirective as ɵbd, GridRowDirective as ɵbc, GridRowStyleBuilder as ɵbb } from './row/row'; -export { DefaultGridRowsDirective as ɵbg, GridRowsDirective as ɵbf, GridRowsStyleBuilder as ɵbe } from './rows/rows'; +export { DefaultGridAlignColumnsDirective as ɵf2, GridAlignColumnsDirective as ɵe2, GridAlignColumnsStyleBuilder as ɵd2 } from './align-columns/align-columns'; +export { DefaultGridAlignRowsDirective as ɵi2, GridAlignRowsDirective as ɵh2, GridAlignRowsStyleBuilder as ɵg2 } from './align-rows/align-rows'; +export { DefaultGridAreaDirective as ɵl2, GridAreaDirective as ɵk2, GridAreaStyleBuilder as ɵj2 } from './area/area'; +export { DefaultGridAreasDirective as ɵo2, GridAreasDirective as ɵn2, GridAreasStyleBuiler as ɵm2 } from './areas/areas'; +export { DefaultGridAutoDirective as ɵr2, GridAutoDirective as ɵq2, GridAutoStyleBuilder as ɵp2 } from './auto/auto'; +export { DefaultGridColumnDirective as ɵu2, GridColumnDirective as ɵt2, GridColumnStyleBuilder as ɵs2 } from './column/column'; +export { DefaultGridColumnsDirective as ɵx2, GridColumnsDirective as ɵw2, GridColumnsStyleBuilder as ɵv2 } from './columns/columns'; +export { DefaultGridGapDirective as ɵba2, GridGapDirective as ɵz2, GridGapStyleBuilder as ɵy2 } from './gap/gap'; +export { DefaultGridAlignDirective as ɵc2, GridAlignDirective as ɵb2, GridAlignStyleBuilder as ɵa2 } from './grid-align/grid-align'; +export { DefaultGridRowDirective as ɵbd2, GridRowDirective as ɵbc2, GridRowStyleBuilder as ɵbb2 } from './row/row'; +export { DefaultGridRowsDirective as ɵbg2, GridRowsDirective as ɵbf2, GridRowsStyleBuilder as ɵbe2 } from './rows/rows'; diff --git a/typings/esm5/grid/index.metadata.json b/typings/esm5/grid/index.metadata.json index bf51fdbbd..393dfd156 100644 --- a/typings/esm5/grid/index.metadata.json +++ b/typings/esm5/grid/index.metadata.json @@ -1 +1 @@ -{"__symbolic":"module","version":4,"metadata":{"GridModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":43,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"CoreModule","line":44,"character":12}],"declarations":[{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵo"},{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"ɵx"},{"__symbolic":"reference","name":"ɵba"},{"__symbolic":"reference","name":"ɵbd"},{"__symbolic":"reference","name":"ɵbg"}],"exports":[{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵo"},{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"ɵx"},{"__symbolic":"reference","name":"ɵba"},{"__symbolic":"reference","name":"ɵbd"},{"__symbolic":"reference","name":"ɵbg"}]}]}],"members":{}},"ɵa":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":20,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":19,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵb":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":26,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":33,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":30,"character":36},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":34,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":35,"character":33}]}]}},"ɵc":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵb"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":67,"character":1},"arguments":[{"selector":"\n [gdGridAlign],\n [gdGridAlign.xs], [gdGridAlign.sm], [gdGridAlign.md], [gdGridAlign.lg],[gdGridAlign.xl],\n [gdGridAlign.lt-sm], [gdGridAlign.lt-md], [gdGridAlign.lt-lg], [gdGridAlign.lt-xl],\n [gdGridAlign.gt-xs], [gdGridAlign.gt-sm], [gdGridAlign.gt-md], [gdGridAlign.gt-lg]\n","inputs":["gdGridAlign","gdGridAlign.xs","gdGridAlign.sm","gdGridAlign.md","gdGridAlign.lg","gdGridAlign.xl","gdGridAlign.lt-sm","gdGridAlign.lt-md","gdGridAlign.lt-lg","gdGridAlign.lt-xl","gdGridAlign.gt-xs","gdGridAlign.gt-sm","gdGridAlign.gt-md","gdGridAlign.gt-lg"]}]}],"members":{}},"ɵd":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":50},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵe":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":31,"character":47},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":43,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":40,"character":36},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":44,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":45,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵf":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵe"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":86,"character":1},"arguments":[{"selector":"\n [gdAlignColumns],\n [gdAlignColumns.xs], [gdAlignColumns.sm], [gdAlignColumns.md],\n [gdAlignColumns.lg], [gdAlignColumns.xl], [gdAlignColumns.lt-sm],\n [gdAlignColumns.lt-md], [gdAlignColumns.lt-lg], [gdAlignColumns.lt-xl],\n [gdAlignColumns.gt-xs], [gdAlignColumns.gt-sm], [gdAlignColumns.gt-md],\n [gdAlignColumns.gt-lg]\n","inputs":["gdAlignColumns","gdAlignColumns.xs","gdAlignColumns.sm","gdAlignColumns.md","gdAlignColumns.lg","gdAlignColumns.xl","gdAlignColumns.lt-sm","gdAlignColumns.lt-md","gdAlignColumns.lt-lg","gdAlignColumns.lt-xl","gdAlignColumns.gt-xs","gdAlignColumns.gt-sm","gdAlignColumns.gt-md","gdAlignColumns.gt-lg"]}]}],"members":{}},"ɵg":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":47},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵh":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":31,"character":44},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":43,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":40,"character":36},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":44,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":45,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵi":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵh"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":86,"character":1},"arguments":[{"selector":"\n [gdAlignRows],\n [gdAlignRows.xs], [gdAlignRows.sm], [gdAlignRows.md],\n [gdAlignRows.lg], [gdAlignRows.xl], [gdAlignRows.lt-sm],\n [gdAlignRows.lt-md], [gdAlignRows.lt-lg], [gdAlignRows.lt-xl],\n [gdAlignRows.gt-xs], [gdAlignRows.gt-sm], [gdAlignRows.gt-md],\n [gdAlignRows.gt-lg]\n","inputs":["gdAlignRows","gdAlignRows.xs","gdAlignRows.sm","gdAlignRows.md","gdAlignRows.lg","gdAlignRows.xl","gdAlignRows.lt-sm","gdAlignRows.lt-md","gdAlignRows.lt-lg","gdAlignRows.lt-xl","gdAlignRows.gt-xs","gdAlignRows.gt-sm","gdAlignRows.gt-md","gdAlignRows.gt-lg"]}]}],"members":{}},"ɵj":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵk":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":39},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":33,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":29,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":30,"character":36},{"__symbolic":"reference","name":"ɵj"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":34,"character":33}]}]}},"ɵl":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵk"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [gdArea],\n [gdArea.xs], [gdArea.sm], [gdArea.md], [gdArea.lg], [gdArea.xl],\n [gdArea.lt-sm], [gdArea.lt-md], [gdArea.lt-lg], [gdArea.lt-xl],\n [gdArea.gt-xs], [gdArea.gt-sm], [gdArea.gt-md], [gdArea.gt-lg]\n","inputs":["gdArea","gdArea.xs","gdArea.sm","gdArea.md","gdArea.lg","gdArea.xl","gdArea.lt-sm","gdArea.lt-md","gdArea.lt-lg","gdArea.lt-xl","gdArea.gt-xs","gdArea.gt-sm","gdArea.gt-md","gdArea.gt-lg"]}]}],"members":{}},"ɵm":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵn":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":36,"character":40},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":49,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":46,"character":36},{"__symbolic":"reference","name":"ɵm"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":50,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵo":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵn"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":87,"character":1},"arguments":[{"selector":"\n [gdAreas],\n [gdAreas.xs], [gdAreas.sm], [gdAreas.md], [gdAreas.lg], [gdAreas.xl],\n [gdAreas.lt-sm], [gdAreas.lt-md], [gdAreas.lt-lg], [gdAreas.lt-xl],\n [gdAreas.gt-xs], [gdAreas.gt-sm], [gdAreas.gt-md], [gdAreas.gt-lg]\n","inputs":["gdAreas","gdAreas.xs","gdAreas.sm","gdAreas.md","gdAreas.lg","gdAreas.xl","gdAreas.lt-sm","gdAreas.lt-md","gdAreas.lt-lg","gdAreas.lt-xl","gdAreas.gt-xs","gdAreas.gt-sm","gdAreas.gt-md","gdAreas.gt-lg"]}]}],"members":{}},"ɵp":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":24,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵq":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":40,"character":39},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":51,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":48,"character":36},{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":52,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":53,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵr":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵq"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":89,"character":1},"arguments":[{"selector":"\n [gdAuto],\n [gdAuto.xs], [gdAuto.sm], [gdAuto.md], [gdAuto.lg], [gdAuto.xl],\n [gdAuto.lt-sm], [gdAuto.lt-md], [gdAuto.lt-lg], [gdAuto.lt-xl],\n [gdAuto.gt-xs], [gdAuto.gt-sm], [gdAuto.gt-md], [gdAuto.gt-lg]\n","inputs":["gdAuto","gdAuto.xs","gdAuto.sm","gdAuto.md","gdAuto.lg","gdAuto.xl","gdAuto.lt-sm","gdAuto.lt-md","gdAuto.lt-lg","gdAuto.lt-xl","gdAuto.gt-xs","gdAuto.gt-sm","gdAuto.gt-md","gdAuto.gt-lg"]}]}],"members":{}},"ɵs":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":44},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵt":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":41},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":31,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":28,"character":36},{"__symbolic":"reference","name":"ɵs"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":32,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":33,"character":33}]}]}},"ɵu":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵt"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [gdColumn],\n [gdColumn.xs], [gdColumn.sm], [gdColumn.md], [gdColumn.lg], [gdColumn.xl],\n [gdColumn.lt-sm], [gdColumn.lt-md], [gdColumn.lt-lg], [gdColumn.lt-xl],\n [gdColumn.gt-xs], [gdColumn.gt-sm], [gdColumn.gt-md], [gdColumn.gt-lg]\n","inputs":["gdColumn","gdColumn.xs","gdColumn.sm","gdColumn.md","gdColumn.lg","gdColumn.xl","gdColumn.lt-sm","gdColumn.lt-md","gdColumn.lt-lg","gdColumn.lt-xl","gdColumn.gt-xs","gdColumn.gt-sm","gdColumn.gt-md","gdColumn.gt-lg"]}]}],"members":{}},"ɵv":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":45},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵw":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":46,"character":42},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":57,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":54,"character":36},{"__symbolic":"reference","name":"ɵv"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":58,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":59,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵx":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵw"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":97,"character":1},"arguments":[{"selector":"\n [gdColumns],\n [gdColumns.xs], [gdColumns.sm], [gdColumns.md], [gdColumns.lg], [gdColumns.xl],\n [gdColumns.lt-sm], [gdColumns.lt-md], [gdColumns.lt-lg], [gdColumns.lt-xl],\n [gdColumns.gt-xs], [gdColumns.gt-sm], [gdColumns.gt-md], [gdColumns.gt-lg]\n","inputs":["gdColumns","gdColumns.xs","gdColumns.sm","gdColumns.md","gdColumns.lg","gdColumns.xl","gdColumns.lt-sm","gdColumns.lt-md","gdColumns.lt-lg","gdColumns.lt-xl","gdColumns.gt-xs","gdColumns.gt-sm","gdColumns.gt-md","gdColumns.gt-lg"]}]}],"members":{}},"ɵy":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":24,"character":41},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵz":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":33,"character":38},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":45,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":41,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":42,"character":36},{"__symbolic":"reference","name":"ɵy"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":46,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵba":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵz"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":84,"character":1},"arguments":[{"selector":"\n [gdGap],\n [gdGap.xs], [gdGap.sm], [gdGap.md], [gdGap.lg], [gdGap.xl],\n [gdGap.lt-sm], [gdGap.lt-md], [gdGap.lt-lg], [gdGap.lt-xl],\n [gdGap.gt-xs], [gdGap.gt-sm], [gdGap.gt-md], [gdGap.gt-lg]\n","inputs":["gdGap","gdGap.xs","gdGap.sm","gdGap.md","gdGap.lg","gdGap.xl","gdGap.lt-sm","gdGap.lt-md","gdGap.lt-lg","gdGap.lt-xl","gdGap.gt-xs","gdGap.gt-sm","gdGap.gt-md","gdGap.gt-lg"]}]}],"members":{}},"ɵbb":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":41},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵbc":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":38},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":31,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":28,"character":36},{"__symbolic":"reference","name":"ɵbb"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":32,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":33,"character":33}]}]}},"ɵbd":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵbc"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [gdRow],\n [gdRow.xs], [gdRow.sm], [gdRow.md], [gdRow.lg], [gdRow.xl],\n [gdRow.lt-sm], [gdRow.lt-md], [gdRow.lt-lg], [gdRow.lt-xl],\n [gdRow.gt-xs], [gdRow.gt-sm], [gdRow.gt-md], [gdRow.gt-lg]\n","inputs":["gdRow","gdRow.xs","gdRow.sm","gdRow.md","gdRow.lg","gdRow.xl","gdRow.lt-sm","gdRow.lt-md","gdRow.lt-lg","gdRow.lt-xl","gdRow.gt-xs","gdRow.gt-sm","gdRow.gt-md","gdRow.gt-lg"]}]}],"members":{}},"ɵbe":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵbf":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":46,"character":39},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":57,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":54,"character":36},{"__symbolic":"reference","name":"ɵbe"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":58,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":59,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵbg":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵbf"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":97,"character":1},"arguments":[{"selector":"\n [gdRows],\n [gdRows.xs], [gdRows.sm], [gdRows.md], [gdRows.lg], [gdRows.xl],\n [gdRows.lt-sm], [gdRows.lt-md], [gdRows.lt-lg], [gdRows.lt-xl],\n [gdRows.gt-xs], [gdRows.gt-sm], [gdRows.gt-md], [gdRows.gt-lg]\n","inputs":["gdRows","gdRows.xs","gdRows.sm","gdRows.md","gdRows.lg","gdRows.xl","gdRows.lt-sm","gdRows.lt-md","gdRows.lt-lg","gdRows.lt-xl","gdRows.gt-xs","gdRows.gt-sm","gdRows.gt-md","gdRows.gt-lg"]}]}],"members":{}}},"origins":{"GridModule":"./module","ɵa":"./grid-align/grid-align","ɵb":"./grid-align/grid-align","ɵc":"./grid-align/grid-align","ɵd":"./align-columns/align-columns","ɵe":"./align-columns/align-columns","ɵf":"./align-columns/align-columns","ɵg":"./align-rows/align-rows","ɵh":"./align-rows/align-rows","ɵi":"./align-rows/align-rows","ɵj":"./area/area","ɵk":"./area/area","ɵl":"./area/area","ɵm":"./areas/areas","ɵn":"./areas/areas","ɵo":"./areas/areas","ɵp":"./auto/auto","ɵq":"./auto/auto","ɵr":"./auto/auto","ɵs":"./column/column","ɵt":"./column/column","ɵu":"./column/column","ɵv":"./columns/columns","ɵw":"./columns/columns","ɵx":"./columns/columns","ɵy":"./gap/gap","ɵz":"./gap/gap","ɵba":"./gap/gap","ɵbb":"./row/row","ɵbc":"./row/row","ɵbd":"./row/row","ɵbe":"./rows/rows","ɵbf":"./rows/rows","ɵbg":"./rows/rows"},"importAs":"@angular/flex-layout/grid"} \ No newline at end of file +{"__symbolic":"module","version":4,"metadata":{"GridModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":43,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"CoreModule","line":44,"character":12}],"declarations":[{"__symbolic":"reference","name":"ɵc2"},{"__symbolic":"reference","name":"ɵf2"},{"__symbolic":"reference","name":"ɵi2"},{"__symbolic":"reference","name":"ɵl2"},{"__symbolic":"reference","name":"ɵo2"},{"__symbolic":"reference","name":"ɵr2"},{"__symbolic":"reference","name":"ɵu2"},{"__symbolic":"reference","name":"ɵx2"},{"__symbolic":"reference","name":"ɵba2"},{"__symbolic":"reference","name":"ɵbd2"},{"__symbolic":"reference","name":"ɵbg2"}],"exports":[{"__symbolic":"reference","name":"ɵc2"},{"__symbolic":"reference","name":"ɵf2"},{"__symbolic":"reference","name":"ɵi2"},{"__symbolic":"reference","name":"ɵl2"},{"__symbolic":"reference","name":"ɵo2"},{"__symbolic":"reference","name":"ɵr2"},{"__symbolic":"reference","name":"ɵu2"},{"__symbolic":"reference","name":"ɵx2"},{"__symbolic":"reference","name":"ɵba2"},{"__symbolic":"reference","name":"ɵbd2"},{"__symbolic":"reference","name":"ɵbg2"}]}]}],"members":{}},"ɵa2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":20,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":19,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵb2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":26,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":33,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":30,"character":36},{"__symbolic":"reference","name":"ɵa2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":34,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":35,"character":33}]}]}},"ɵc2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵb2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":67,"character":1},"arguments":[{"selector":"\n [gdGridAlign],\n [gdGridAlign.xs], [gdGridAlign.sm], [gdGridAlign.md], [gdGridAlign.lg],[gdGridAlign.xl],\n [gdGridAlign.lt-sm], [gdGridAlign.lt-md], [gdGridAlign.lt-lg], [gdGridAlign.lt-xl],\n [gdGridAlign.gt-xs], [gdGridAlign.gt-sm], [gdGridAlign.gt-md], [gdGridAlign.gt-lg]\n","inputs":["gdGridAlign","gdGridAlign.xs","gdGridAlign.sm","gdGridAlign.md","gdGridAlign.lg","gdGridAlign.xl","gdGridAlign.lt-sm","gdGridAlign.lt-md","gdGridAlign.lt-lg","gdGridAlign.lt-xl","gdGridAlign.gt-xs","gdGridAlign.gt-sm","gdGridAlign.gt-md","gdGridAlign.gt-lg"]}]}],"members":{}},"ɵd2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":50},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵe2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":31,"character":47},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":43,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":40,"character":36},{"__symbolic":"reference","name":"ɵd2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":44,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":45,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵf2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵe2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":86,"character":1},"arguments":[{"selector":"\n [gdAlignColumns],\n [gdAlignColumns.xs], [gdAlignColumns.sm], [gdAlignColumns.md],\n [gdAlignColumns.lg], [gdAlignColumns.xl], [gdAlignColumns.lt-sm],\n [gdAlignColumns.lt-md], [gdAlignColumns.lt-lg], [gdAlignColumns.lt-xl],\n [gdAlignColumns.gt-xs], [gdAlignColumns.gt-sm], [gdAlignColumns.gt-md],\n [gdAlignColumns.gt-lg]\n","inputs":["gdAlignColumns","gdAlignColumns.xs","gdAlignColumns.sm","gdAlignColumns.md","gdAlignColumns.lg","gdAlignColumns.xl","gdAlignColumns.lt-sm","gdAlignColumns.lt-md","gdAlignColumns.lt-lg","gdAlignColumns.lt-xl","gdAlignColumns.gt-xs","gdAlignColumns.gt-sm","gdAlignColumns.gt-md","gdAlignColumns.gt-lg"]}]}],"members":{}},"ɵg2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":47},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵh2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":31,"character":44},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":43,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":40,"character":36},{"__symbolic":"reference","name":"ɵg2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":44,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":45,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵi2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵh2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":86,"character":1},"arguments":[{"selector":"\n [gdAlignRows],\n [gdAlignRows.xs], [gdAlignRows.sm], [gdAlignRows.md],\n [gdAlignRows.lg], [gdAlignRows.xl], [gdAlignRows.lt-sm],\n [gdAlignRows.lt-md], [gdAlignRows.lt-lg], [gdAlignRows.lt-xl],\n [gdAlignRows.gt-xs], [gdAlignRows.gt-sm], [gdAlignRows.gt-md],\n [gdAlignRows.gt-lg]\n","inputs":["gdAlignRows","gdAlignRows.xs","gdAlignRows.sm","gdAlignRows.md","gdAlignRows.lg","gdAlignRows.xl","gdAlignRows.lt-sm","gdAlignRows.lt-md","gdAlignRows.lt-lg","gdAlignRows.lt-xl","gdAlignRows.gt-xs","gdAlignRows.gt-sm","gdAlignRows.gt-md","gdAlignRows.gt-lg"]}]}],"members":{}},"ɵj2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵk2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":39},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":33,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":29,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":30,"character":36},{"__symbolic":"reference","name":"ɵj2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":34,"character":33}]}]}},"ɵl2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵk2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [gdArea],\n [gdArea.xs], [gdArea.sm], [gdArea.md], [gdArea.lg], [gdArea.xl],\n [gdArea.lt-sm], [gdArea.lt-md], [gdArea.lt-lg], [gdArea.lt-xl],\n [gdArea.gt-xs], [gdArea.gt-sm], [gdArea.gt-md], [gdArea.gt-lg]\n","inputs":["gdArea","gdArea.xs","gdArea.sm","gdArea.md","gdArea.lg","gdArea.xl","gdArea.lt-sm","gdArea.lt-md","gdArea.lt-lg","gdArea.lt-xl","gdArea.gt-xs","gdArea.gt-sm","gdArea.gt-md","gdArea.gt-lg"]}]}],"members":{}},"ɵm2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵn2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":36,"character":40},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":49,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":46,"character":36},{"__symbolic":"reference","name":"ɵm2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":50,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵo2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵn2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":87,"character":1},"arguments":[{"selector":"\n [gdAreas],\n [gdAreas.xs], [gdAreas.sm], [gdAreas.md], [gdAreas.lg], [gdAreas.xl],\n [gdAreas.lt-sm], [gdAreas.lt-md], [gdAreas.lt-lg], [gdAreas.lt-xl],\n [gdAreas.gt-xs], [gdAreas.gt-sm], [gdAreas.gt-md], [gdAreas.gt-lg]\n","inputs":["gdAreas","gdAreas.xs","gdAreas.sm","gdAreas.md","gdAreas.lg","gdAreas.xl","gdAreas.lt-sm","gdAreas.lt-md","gdAreas.lt-lg","gdAreas.lt-xl","gdAreas.gt-xs","gdAreas.gt-sm","gdAreas.gt-md","gdAreas.gt-lg"]}]}],"members":{}},"ɵp2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":24,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵq2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":40,"character":39},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":51,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":48,"character":36},{"__symbolic":"reference","name":"ɵp2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":52,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":53,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵr2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵq2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":89,"character":1},"arguments":[{"selector":"\n [gdAuto],\n [gdAuto.xs], [gdAuto.sm], [gdAuto.md], [gdAuto.lg], [gdAuto.xl],\n [gdAuto.lt-sm], [gdAuto.lt-md], [gdAuto.lt-lg], [gdAuto.lt-xl],\n [gdAuto.gt-xs], [gdAuto.gt-sm], [gdAuto.gt-md], [gdAuto.gt-lg]\n","inputs":["gdAuto","gdAuto.xs","gdAuto.sm","gdAuto.md","gdAuto.lg","gdAuto.xl","gdAuto.lt-sm","gdAuto.lt-md","gdAuto.lt-lg","gdAuto.lt-xl","gdAuto.gt-xs","gdAuto.gt-sm","gdAuto.gt-md","gdAuto.gt-lg"]}]}],"members":{}},"ɵs2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":44},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵt2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":41},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":31,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":28,"character":36},{"__symbolic":"reference","name":"ɵs2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":32,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":33,"character":33}]}]}},"ɵu2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵt2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [gdColumn],\n [gdColumn.xs], [gdColumn.sm], [gdColumn.md], [gdColumn.lg], [gdColumn.xl],\n [gdColumn.lt-sm], [gdColumn.lt-md], [gdColumn.lt-lg], [gdColumn.lt-xl],\n [gdColumn.gt-xs], [gdColumn.gt-sm], [gdColumn.gt-md], [gdColumn.gt-lg]\n","inputs":["gdColumn","gdColumn.xs","gdColumn.sm","gdColumn.md","gdColumn.lg","gdColumn.xl","gdColumn.lt-sm","gdColumn.lt-md","gdColumn.lt-lg","gdColumn.lt-xl","gdColumn.gt-xs","gdColumn.gt-sm","gdColumn.gt-md","gdColumn.gt-lg"]}]}],"members":{}},"ɵv2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":45},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵw2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":46,"character":42},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":57,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":54,"character":36},{"__symbolic":"reference","name":"ɵv2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":58,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":59,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵx2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵw2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":97,"character":1},"arguments":[{"selector":"\n [gdColumns],\n [gdColumns.xs], [gdColumns.sm], [gdColumns.md], [gdColumns.lg], [gdColumns.xl],\n [gdColumns.lt-sm], [gdColumns.lt-md], [gdColumns.lt-lg], [gdColumns.lt-xl],\n [gdColumns.gt-xs], [gdColumns.gt-sm], [gdColumns.gt-md], [gdColumns.gt-lg]\n","inputs":["gdColumns","gdColumns.xs","gdColumns.sm","gdColumns.md","gdColumns.lg","gdColumns.xl","gdColumns.lt-sm","gdColumns.lt-md","gdColumns.lt-lg","gdColumns.lt-xl","gdColumns.gt-xs","gdColumns.gt-sm","gdColumns.gt-md","gdColumns.gt-lg"]}]}],"members":{}},"ɵy2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":24,"character":41},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵz2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":33,"character":38},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":45,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":41,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":42,"character":36},{"__symbolic":"reference","name":"ɵy2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":46,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵba2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵz2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":84,"character":1},"arguments":[{"selector":"\n [gdGap],\n [gdGap.xs], [gdGap.sm], [gdGap.md], [gdGap.lg], [gdGap.xl],\n [gdGap.lt-sm], [gdGap.lt-md], [gdGap.lt-lg], [gdGap.lt-xl],\n [gdGap.gt-xs], [gdGap.gt-sm], [gdGap.gt-md], [gdGap.gt-lg]\n","inputs":["gdGap","gdGap.xs","gdGap.sm","gdGap.md","gdGap.lg","gdGap.xl","gdGap.lt-sm","gdGap.lt-md","gdGap.lt-lg","gdGap.lt-xl","gdGap.gt-xs","gdGap.gt-sm","gdGap.gt-md","gdGap.gt-lg"]}]}],"members":{}},"ɵbb2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":41},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵbc2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":38},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":31,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":28,"character":36},{"__symbolic":"reference","name":"ɵbb2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":32,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":33,"character":33}]}]}},"ɵbd2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵbc2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [gdRow],\n [gdRow.xs], [gdRow.sm], [gdRow.md], [gdRow.lg], [gdRow.xl],\n [gdRow.lt-sm], [gdRow.lt-md], [gdRow.lt-lg], [gdRow.lt-xl],\n [gdRow.gt-xs], [gdRow.gt-sm], [gdRow.gt-md], [gdRow.gt-lg]\n","inputs":["gdRow","gdRow.xs","gdRow.sm","gdRow.md","gdRow.lg","gdRow.xl","gdRow.lt-sm","gdRow.lt-md","gdRow.lt-lg","gdRow.lt-xl","gdRow.gt-xs","gdRow.gt-sm","gdRow.gt-md","gdRow.gt-lg"]}]}],"members":{}},"ɵbe2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵbf2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":46,"character":39},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":57,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":54,"character":36},{"__symbolic":"reference","name":"ɵbe2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":58,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":59,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵbg2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵbf2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":97,"character":1},"arguments":[{"selector":"\n [gdRows],\n [gdRows.xs], [gdRows.sm], [gdRows.md], [gdRows.lg], [gdRows.xl],\n [gdRows.lt-sm], [gdRows.lt-md], [gdRows.lt-lg], [gdRows.lt-xl],\n [gdRows.gt-xs], [gdRows.gt-sm], [gdRows.gt-md], [gdRows.gt-lg]\n","inputs":["gdRows","gdRows.xs","gdRows.sm","gdRows.md","gdRows.lg","gdRows.xl","gdRows.lt-sm","gdRows.lt-md","gdRows.lt-lg","gdRows.lt-xl","gdRows.gt-xs","gdRows.gt-sm","gdRows.gt-md","gdRows.gt-lg"]}]}],"members":{}}},"origins":{"GridModule":"./module","ɵa2":"./grid-align/grid-align","ɵb2":"./grid-align/grid-align","ɵc2":"./grid-align/grid-align","ɵd2":"./align-columns/align-columns","ɵe2":"./align-columns/align-columns","ɵf2":"./align-columns/align-columns","ɵg2":"./align-rows/align-rows","ɵh2":"./align-rows/align-rows","ɵi2":"./align-rows/align-rows","ɵj2":"./area/area","ɵk2":"./area/area","ɵl2":"./area/area","ɵm2":"./areas/areas","ɵn2":"./areas/areas","ɵo2":"./areas/areas","ɵp2":"./auto/auto","ɵq2":"./auto/auto","ɵr2":"./auto/auto","ɵs2":"./column/column","ɵt2":"./column/column","ɵu2":"./column/column","ɵv2":"./columns/columns","ɵw2":"./columns/columns","ɵx2":"./columns/columns","ɵy2":"./gap/gap","ɵz2":"./gap/gap","ɵba2":"./gap/gap","ɵbb2":"./row/row","ɵbc2":"./row/row","ɵbd2":"./row/row","ɵbe2":"./rows/rows","ɵbf2":"./rows/rows","ɵbg2":"./rows/rows"},"importAs":"@angular/flex-layout/grid"} \ No newline at end of file diff --git a/typings/esm5/index.metadata.json b/typings/esm5/index.metadata.json index 2de985fd3..3c3ad688e 100644 --- a/typings/esm5/index.metadata.json +++ b/typings/esm5/index.metadata.json @@ -1 +1 @@ -{"__symbolic":"module","version":4,"exports":[{"from":"@angular/flex-layout/grid"}],"metadata":{"VERSION":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Version","line":11,"character":27},"arguments":["7.0.0-beta.22"]},"FlexLayoutModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":32,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout/flex","name":"FlexModule","line":33,"character":12},{"__symbolic":"reference","module":"@angular/flex-layout/extended","name":"ExtendedModule","line":33,"character":24},{"__symbolic":"reference","module":"@angular/flex-layout/grid","name":"GridModule","line":33,"character":40}],"exports":[{"__symbolic":"reference","module":"@angular/flex-layout/flex","name":"FlexModule","line":34,"character":12},{"__symbolic":"reference","module":"@angular/flex-layout/extended","name":"ExtendedModule","line":34,"character":24},{"__symbolic":"reference","module":"@angular/flex-layout/grid","name":"GridModule","line":34,"character":40}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":58,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":58,"character":27},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":58,"character":34}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":59,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":59,"character":22}]}]],"parameters":[{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"Object"}]}]},"statics":{"withConfig":{"__symbolic":"function","parameters":["configOptions","breakpoints"],"defaults":[null,[]],"value":{"ngModule":{"__symbolic":"reference","name":"FlexLayoutModule"},"providers":{"__symbolic":"if","condition":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"configOptions"},"member":"serverLoaded"},"thenExpression":[{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":48,"character":20},"useValue":{"__symbolic":"reference","name":"configOptions"}},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BREAKPOINT","line":49,"character":20},"useValue":{"__symbolic":"reference","name":"breakpoints"},"multi":true},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":50,"character":20},"useValue":true}],"elseExpression":[{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":52,"character":20},"useValue":{"__symbolic":"reference","name":"configOptions"}},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BREAKPOINT","line":53,"character":20},"useValue":{"__symbolic":"reference","name":"breakpoints"},"multi":true}]}}}}}},"origins":{"VERSION":"./version","FlexLayoutModule":"./module"},"importAs":"@angular/flex-layout"} \ No newline at end of file +{"__symbolic":"module","version":4,"exports":[{"from":"@angular/flex-layout/core"},{"from":"@angular/flex-layout/extended"},{"from":"@angular/flex-layout/flex"},{"from":"@angular/flex-layout/grid"}],"metadata":{"VERSION":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Version","line":11,"character":27},"arguments":["8.0.0-beta.26"]},"FlexLayoutModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":34,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout/flex","name":"FlexModule","line":35,"character":12},{"__symbolic":"reference","module":"@angular/flex-layout/extended","name":"ExtendedModule","line":35,"character":24},{"__symbolic":"reference","module":"@angular/flex-layout/grid","name":"GridModule","line":35,"character":40}],"exports":[{"__symbolic":"reference","module":"@angular/flex-layout/flex","name":"FlexModule","line":36,"character":12},{"__symbolic":"reference","module":"@angular/flex-layout/extended","name":"ExtendedModule","line":36,"character":24},{"__symbolic":"reference","module":"@angular/flex-layout/grid","name":"GridModule","line":36,"character":40}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":60,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":60,"character":27},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":60,"character":34}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":61,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":61,"character":22}]}]],"parameters":[{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"Object"}]}]},"statics":{"withConfig":{"__symbolic":"function","parameters":["configOptions","breakpoints"],"defaults":[null,[]],"value":{"ngModule":{"__symbolic":"reference","name":"FlexLayoutModule"},"providers":{"__symbolic":"if","condition":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"configOptions"},"member":"serverLoaded"},"thenExpression":[{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":50,"character":20},"useValue":{}},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BREAKPOINT","line":51,"character":20},"useValue":{"__symbolic":"reference","name":"breakpoints"},"multi":true},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":52,"character":20},"useValue":true}],"elseExpression":[{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":54,"character":20},"useValue":{}},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BREAKPOINT","line":55,"character":20},"useValue":{"__symbolic":"reference","name":"breakpoints"},"multi":true}]}}}}}},"origins":{"VERSION":"./version","FlexLayoutModule":"./module"},"importAs":"@angular/flex-layout"} \ No newline at end of file diff --git a/typings/esm5/server/index.d.ts b/typings/esm5/server/index.d.ts index e5daacf63..bd0294737 100644 --- a/typings/esm5/server/index.d.ts +++ b/typings/esm5/server/index.d.ts @@ -2,3 +2,4 @@ * Generated bundle index. Do not edit. */ export * from './public-api'; +export { ServerMatchMedia as ɵa1 } from './server-match-media'; diff --git a/typings/esm5/server/index.metadata.json b/typings/esm5/server/index.metadata.json index 85adeb02e..5b87e7b15 100644 --- a/typings/esm5/server/index.metadata.json +++ b/typings/esm5/server/index.metadata.json @@ -1 +1 @@ -{"__symbolic":"module","version":4,"metadata":{"FlexLayoutServerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"providers":[{"__symbolic":"reference","name":"SERVER_PROVIDERS"}]}]}],"members":{}},"generateStaticFlexLayoutStyles":{"__symbolic":"function"},"FLEX_SSR_SERIALIZER_FACTORY":{"__symbolic":"function","parameters":["serverSheet","matchMedia","_document","breakpoints"],"value":{"__symbolic":"error","message":"Lambda not supported","line":67,"character":9,"module":"./server-provider"}},"SERVER_PROVIDERS":[{"provide":{"__symbolic":"reference","module":"@angular/platform-server","name":"BEFORE_APP_SERIALIZED","line":83,"character":41},"useFactory":{"__symbolic":"reference","name":"FLEX_SSR_SERIALIZER_FACTORY"},"deps":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StylesheetMap","line":86,"character":6},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MatchMedia","line":87,"character":6},{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":88,"character":6},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BREAKPOINTS","line":89,"character":6}],"multi":true},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":94,"character":13},"useValue":true},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MatchMedia","line":98,"character":13},"useClass":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"ServerMatchMedia","line":99,"character":14}}],"StyleSheet":{"__symbolic":"interface"},"ClassMap":{"__symbolic":"interface"}},"origins":{"FlexLayoutServerModule":"./module","generateStaticFlexLayoutStyles":"./server-provider","FLEX_SSR_SERIALIZER_FACTORY":"./server-provider","SERVER_PROVIDERS":"./server-provider","StyleSheet":"./server-provider","ClassMap":"./server-provider"},"importAs":"@angular/flex-layout/server"} \ No newline at end of file +{"__symbolic":"module","version":4,"metadata":{"FlexLayoutServerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"providers":[{"__symbolic":"reference","name":"SERVER_PROVIDERS"}]}]}],"members":{}},"generateStaticFlexLayoutStyles":{"__symbolic":"function"},"FLEX_SSR_SERIALIZER_FACTORY":{"__symbolic":"function","parameters":["serverSheet","mediaController","_document","breakpoints","layoutConfig"],"value":{"__symbolic":"error","message":"Lambda not supported","line":84,"character":9,"module":"./server-provider"}},"SERVER_PROVIDERS":[{"provide":{"__symbolic":"reference","module":"@angular/platform-server","name":"BEFORE_APP_SERIALIZED","line":101,"character":41},"useFactory":{"__symbolic":"reference","name":"FLEX_SSR_SERIALIZER_FACTORY"},"deps":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StylesheetMap","line":104,"character":6},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"ɵMatchMedia","line":105,"character":6},{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":106,"character":6},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BREAKPOINTS","line":107,"character":6},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":108,"character":6}],"multi":true},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":113,"character":13},"useValue":true},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"ɵMatchMedia","line":117,"character":13},"useClass":{"__symbolic":"reference","name":"ɵa1"}}],"StyleSheet":{"__symbolic":"interface"},"ClassMap":{"__symbolic":"interface"},"ɵa1":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"ɵMatchMedia","line":112,"character":38},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":111,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":114,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":114,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":115,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":115,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":113,"character":31},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"any"}]}],"activateBreakpoint":[{"__symbolic":"method"}],"deactivateBreakpoint":[{"__symbolic":"method"}],"buildMQL":[{"__symbolic":"method"}]}}},"origins":{"FlexLayoutServerModule":"./module","generateStaticFlexLayoutStyles":"./server-provider","FLEX_SSR_SERIALIZER_FACTORY":"./server-provider","SERVER_PROVIDERS":"./server-provider","StyleSheet":"./server-provider","ClassMap":"./server-provider","ɵa1":"./server-match-media"},"importAs":"@angular/flex-layout/server"} \ No newline at end of file diff --git a/core/typings/match-media/server-match-media.d.ts b/typings/esm5/server/server-match-media.d.ts similarity index 88% rename from core/typings/match-media/server-match-media.d.ts rename to typings/esm5/server/server-match-media.d.ts index 1d5bae3f7..ddd460c4f 100644 --- a/core/typings/match-media/server-match-media.d.ts +++ b/typings/esm5/server/server-match-media.d.ts @@ -1,6 +1,5 @@ import { NgZone } from '@angular/core'; -import { BreakPoint } from '../breakpoints/break-point'; -import { MatchMedia } from './match-media'; +import { BreakPoint, ɵMatchMedia as MatchMedia } from '@angular/flex-layout/core'; /** * Special server-only class to simulate a MediaQueryList and * - supports manual activation to simulate mediaQuery matching @@ -25,7 +24,7 @@ export declare class ServerMediaQueryList implements MediaQueryList { /** Add a listener to our internal list to activate later */ addListener(listener: MediaQueryListListener): void; /** Don't need to remove listeners in the server environment */ - removeListener(_: EventListenerOrEventListenerObject | null): void; + removeListener(_: MediaQueryListListener | null): void; addEventListener(_: K, __: (this: MediaQueryList, ev: MediaQueryListEventMap[K]) => any, ___?: boolean | AddEventListenerOptions): void; removeEventListener(_: K, __: (this: MediaQueryList, ev: MediaQueryListEventMap[K]) => any, ___?: boolean | EventListenerOptions): void; dispatchEvent(_: Event): boolean; @@ -41,7 +40,6 @@ export declare class ServerMatchMedia extends MatchMedia { protected _zone: NgZone; protected _platformId: Object; protected _document: any; - protected _registry: Map; constructor(_zone: NgZone, _platformId: Object, _document: any); /** Activate the specified breakpoint if we're on the server, no-op otherwise */ activateBreakpoint(bp: BreakPoint): void; @@ -51,7 +49,7 @@ export declare class ServerMatchMedia extends MatchMedia { * Call window.matchMedia() to build a MediaQueryList; which * supports 0..n listeners for activation/deactivation */ - protected _buildMQL(query: string): ServerMediaQueryList; + protected buildMQL(query: string): ServerMediaQueryList; } declare type MediaQueryListListener = ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null; export {}; diff --git a/typings/esm5/server/server-provider.d.ts b/typings/esm5/server/server-provider.d.ts index 003616d09..4e25f7838 100644 --- a/typings/esm5/server/server-provider.d.ts +++ b/typings/esm5/server/server-provider.d.ts @@ -6,28 +6,30 @@ * found in the LICENSE file at https://angular.io/license */ import { InjectionToken } from '@angular/core'; -import { BreakPoint, MatchMedia, StylesheetMap, ServerMatchMedia } from '@angular/flex-layout/core'; +import { BreakPoint, ɵMatchMedia as MatchMedia, StylesheetMap, LayoutConfigOptions } from '@angular/flex-layout/core'; +import { ServerMatchMedia } from './server-match-media'; /** * Activate all of the registered breakpoints in sequence, and then * retrieve the associated stylings from the virtual stylesheet * @param serverSheet the virtual stylesheet that stores styles for each * element - * @param matchMedia the service to activate/deactivate breakpoints + * @param mediaController the MatchMedia service to activate/deactivate breakpoints * @param breakpoints the registered breakpoints to activate/deactivate + * @param layoutConfig the library config, and specifically the breakpoints to activate */ -export declare function generateStaticFlexLayoutStyles(serverSheet: StylesheetMap, matchMedia: MatchMedia, breakpoints: BreakPoint[]): string; +export declare function generateStaticFlexLayoutStyles(serverSheet: StylesheetMap, mediaController: ServerMatchMedia, breakpoints: BreakPoint[], layoutConfig: LayoutConfigOptions): string; /** * Create a style tag populated with the dynamic stylings from Flex * components and attach it to the head of the DOM */ -export declare function FLEX_SSR_SERIALIZER_FACTORY(serverSheet: StylesheetMap, matchMedia: MatchMedia, _document: Document, breakpoints: BreakPoint[]): () => void; +export declare function FLEX_SSR_SERIALIZER_FACTORY(serverSheet: StylesheetMap, mediaController: ServerMatchMedia, _document: Document, breakpoints: BreakPoint[], layoutConfig: LayoutConfigOptions): () => void; /** * Provider to set static styles on the server */ export declare const SERVER_PROVIDERS: ({ provide: InjectionToken<() => void>; useFactory: typeof FLEX_SSR_SERIALIZER_FACTORY; - deps: (typeof StylesheetMap | typeof MatchMedia | InjectionToken)[]; + deps: (typeof MatchMedia | InjectionToken | typeof StylesheetMap)[]; multi: boolean; useValue?: undefined; useClass?: undefined; diff --git a/typings/extended/class/class.d.ts b/typings/extended/class/class.d.ts index 83d8c5c8e..0003e9a31 100644 --- a/typings/extended/class/class.d.ts +++ b/typings/extended/class/class.d.ts @@ -5,16 +5,14 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -import { DoCheck, ElementRef, IterableDiffers, KeyValueDiffers, Renderer2 } from '@angular/core'; -import { NgClass } from '@angular/common'; +import { DoCheck, ElementRef } from '@angular/core'; +import { NgClass, ɵNgClassImpl, ɵNgClassR2Impl } from '@angular/common'; import { BaseDirective2, StyleUtils, MediaMarshaller } from '@angular/flex-layout/core'; export declare class ClassDirective extends BaseDirective2 implements DoCheck { protected elementRef: ElementRef; protected styler: StyleUtils; protected marshal: MediaMarshaller; - protected iterableDiffers: IterableDiffers; - protected keyValueDiffers: KeyValueDiffers; - protected renderer: Renderer2; + protected delegate: ɵNgClassImpl; protected readonly ngClassInstance: NgClass; protected DIRECTIVE_KEY: string; /** @@ -22,13 +20,17 @@ export declare class ClassDirective extends BaseDirective2 implements DoCheck { * which are merged with activated styles and used as fallbacks. */ klass: string; - constructor(elementRef: ElementRef, styler: StyleUtils, marshal: MediaMarshaller, iterableDiffers: IterableDiffers, keyValueDiffers: KeyValueDiffers, renderer: Renderer2, ngClassInstance: NgClass); + constructor(elementRef: ElementRef, styler: StyleUtils, marshal: MediaMarshaller, delegate: ɵNgClassImpl, ngClassInstance: NgClass); protected updateWithValue(value: any): void; /** * For ChangeDetectionStrategy.onPush and ngOnChanges() updates */ ngDoCheck(): void; } +export declare const LayoutNgClassImplProvider: { + provide: typeof ɵNgClassImpl; + useClass: typeof ɵNgClassR2Impl; +}; /** * Directive to add responsive support for ngClass. * This maintains the core functionality of 'ngClass' and adds responsive API diff --git a/typings/extended/img-src/img-src.d.ts b/typings/extended/img-src/img-src.d.ts index bbaea8281..0edf146d9 100644 --- a/typings/extended/img-src/img-src.d.ts +++ b/typings/extended/img-src/img-src.d.ts @@ -31,7 +31,7 @@ export declare class ImgSrcDirective extends BaseDirective2 { * Do nothing to standard `` usages, only when responsive * keys are present do we actually call `setAttribute()` */ - protected updateWithValue(): void; + protected updateWithValue(value?: string): void; protected styleCache: Map; } /** diff --git a/typings/extended/index.metadata.json b/typings/extended/index.metadata.json index 0ecac7225..c93c4332c 100644 --- a/typings/extended/index.metadata.json +++ b/typings/extended/index.metadata.json @@ -1 +1 @@ -{"__symbolic":"module","version":4,"metadata":{"ExtendedModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":29,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"CoreModule","line":30,"character":12}],"declarations":[{"__symbolic":"reference","name":"DefaultShowHideDirective"},{"__symbolic":"reference","name":"DefaultClassDirective"},{"__symbolic":"reference","name":"DefaultStyleDirective"},{"__symbolic":"reference","name":"DefaultImgSrcDirective"}],"exports":[{"__symbolic":"reference","name":"DefaultShowHideDirective"},{"__symbolic":"reference","name":"DefaultClassDirective"},{"__symbolic":"reference","name":"DefaultStyleDirective"},{"__symbolic":"reference","name":"DefaultImgSrcDirective"}]}]}],"members":{}},"ClassDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":21,"character":36},"members":{"klass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3},"arguments":["class"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":41,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":41,"character":27}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":35,"character":36},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":36,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":37,"character":33},{"__symbolic":"reference","module":"@angular/core","name":"IterableDiffers","line":38,"character":41},{"__symbolic":"reference","module":"@angular/core","name":"KeyValueDiffers","line":39,"character":41},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":40,"character":34},{"__symbolic":"reference","module":"@angular/common","name":"NgClass","line":41,"character":70}]}],"updateWithValue":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}]}},"DefaultClassDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ClassDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":87,"character":1},"arguments":[{"selector":"\n [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl],\n [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl],\n [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]\n","inputs":["ngClass","ngClass.xs","ngClass.sm","ngClass.md","ngClass.lg","ngClass.xl","ngClass.lt-sm","ngClass.lt-md","ngClass.lt-lg","ngClass.lt-xl","ngClass.gt-xs","ngClass.gt-sm","ngClass.gt-md","ngClass.gt-lg"]}]}],"members":{}},"ImgSrcStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":40},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ImgSrcDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":37},"members":{"src":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3},"arguments":["src"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":39,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":39,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":40,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":40,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":35,"character":36},{"__symbolic":"reference","name":"ImgSrcStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":37,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":38,"character":33},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"boolean"}]}],"updateWithValue":[{"__symbolic":"method"}]}},"DefaultImgSrcDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ImgSrcDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":92,"character":1},"arguments":[{"selector":"\n img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl],\n img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl],\n img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]\n","inputs":["src.xs","src.sm","src.md","src.lg","src.xl","src.lt-sm","src.lt-md","src.lt-lg","src.lt-xl","src.gt-xs","src.gt-sm","src.gt-md","src.gt-lg"]}]}],"members":{}},"negativeOf":{"__symbolic":"function","parameters":["hide"],"value":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"hide"},"right":""},"thenExpression":false,"elseExpression":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"hide"},"right":"false"},"right":{"__symbolic":"binop","operator":"===","left":{"__symbolic":"reference","name":"hide"},"right":0}},"thenExpression":true,"elseExpression":{"__symbolic":"pre","operator":"!","operand":{"__symbolic":"reference","name":"hide"}}}}},"ShowHideParent":{"__symbolic":"interface"},"ShowHideStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":49,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":48,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ShowHideDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":56,"character":39},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":68,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":68,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":69,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":69,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":70,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":70,"character":27},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":70,"character":34}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":64,"character":36},{"__symbolic":"reference","name":"ShowHideStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":66,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":67,"character":33},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LayoutConfigOptions","line":68,"character":61},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"boolean"}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"getDisplayStyle":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}]}},"DefaultShowHideDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ShowHideDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":184,"character":1},"arguments":[{"selector":"\n [fxShow],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n","inputs":["fxShow","fxShow.xs","fxShow.sm","fxShow.md","fxShow.lg","fxShow.xl","fxShow.lt-sm","fxShow.lt-md","fxShow.lt-lg","fxShow.lt-xl","fxShow.gt-xs","fxShow.gt-sm","fxShow.gt-md","fxShow.gt-lg","fxHide","fxHide.xs","fxHide.sm","fxHide.md","fxHide.lg","fxHide.xl","fxHide.lt-sm","fxHide.lt-md","fxHide.lt-lg","fxHide.lt-xl","fxHide.gt-xs","fxHide.gt-sm","fxHide.gt-md","fxHide.gt-lg"]}]}],"members":{}},"StyleDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":34,"character":36},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":45,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":45,"character":27}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":39,"character":36},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":40,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":41,"character":33},{"__symbolic":"reference","module":"@angular/core","name":"KeyValueDiffers","line":42,"character":41},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":43,"character":34},{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":44,"character":35},{"__symbolic":"reference","module":"@angular/common","name":"NgStyle","line":45,"character":68}]}],"updateWithValue":[{"__symbolic":"method"}],"buildStyleMap":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}]}},"DefaultStyleDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StyleDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":114,"character":1},"arguments":[{"selector":"\n [ngStyle],\n [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl],\n [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl],\n [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]\n","inputs":["ngStyle","ngStyle.xs","ngStyle.sm","ngStyle.md","ngStyle.lg","ngStyle.xl","ngStyle.lt-sm","ngStyle.lt-md","ngStyle.lt-lg","ngStyle.lt-xl","ngStyle.gt-xs","ngStyle.gt-sm","ngStyle.gt-md","ngStyle.gt-lg"]}]}],"members":{}}},"origins":{"ExtendedModule":"./module","ClassDirective":"./class/class","DefaultClassDirective":"./class/class","ImgSrcStyleBuilder":"./img-src/img-src","ImgSrcDirective":"./img-src/img-src","DefaultImgSrcDirective":"./img-src/img-src","negativeOf":"./show-hide/show-hide","ShowHideParent":"./show-hide/show-hide","ShowHideStyleBuilder":"./show-hide/show-hide","ShowHideDirective":"./show-hide/show-hide","DefaultShowHideDirective":"./show-hide/show-hide","StyleDirective":"./style/style","DefaultStyleDirective":"./style/style"},"importAs":"@angular/flex-layout/extended"} \ No newline at end of file +{"__symbolic":"module","version":4,"metadata":{"ExtendedModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":29,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"CoreModule","line":30,"character":12}],"declarations":[{"__symbolic":"reference","name":"DefaultShowHideDirective"},{"__symbolic":"reference","name":"DefaultClassDirective"},{"__symbolic":"reference","name":"DefaultStyleDirective"},{"__symbolic":"reference","name":"DefaultImgSrcDirective"}],"exports":[{"__symbolic":"reference","name":"DefaultShowHideDirective"},{"__symbolic":"reference","name":"DefaultClassDirective"},{"__symbolic":"reference","name":"DefaultStyleDirective"},{"__symbolic":"reference","name":"DefaultImgSrcDirective"}]}]}],"members":{}},"ClassDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":11,"character":36},"members":{"klass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3},"arguments":["class"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":29,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":29,"character":27}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":25,"character":36},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":26,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":27,"character":33},{"__symbolic":"reference","module":"@angular/common","name":"ɵNgClassImpl","line":28,"character":34},{"__symbolic":"reference","module":"@angular/common","name":"NgClass","line":29,"character":70}]}],"updateWithValue":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}]}},"LayoutNgClassImplProvider":{"provide":{"__symbolic":"reference","module":"@angular/common","name":"ɵNgClassImpl","line":28,"character":34},"useClass":{"__symbolic":"reference","module":"@angular/common","name":"ɵNgClassR2Impl","line":72,"character":12}},"DefaultClassDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ClassDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":80,"character":1},"arguments":[{"selector":"\n [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl],\n [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl],\n [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]\n","inputs":["ngClass","ngClass.xs","ngClass.sm","ngClass.md","ngClass.lg","ngClass.xl","ngClass.lt-sm","ngClass.lt-md","ngClass.lt-lg","ngClass.lt-xl","ngClass.gt-xs","ngClass.gt-sm","ngClass.gt-md","ngClass.gt-lg"],"providers":[{"__symbolic":"reference","name":"LayoutNgClassImplProvider"}]}]}],"members":{}},"ImgSrcStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":40},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ImgSrcDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":37},"members":{"src":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3},"arguments":["src"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":39,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":39,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":40,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":40,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":35,"character":36},{"__symbolic":"reference","name":"ImgSrcStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":37,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":38,"character":33},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"boolean"}]}],"updateWithValue":[{"__symbolic":"method"}]}},"DefaultImgSrcDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ImgSrcDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":92,"character":1},"arguments":[{"selector":"\n img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl],\n img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl],\n img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]\n","inputs":["src.xs","src.sm","src.md","src.lg","src.xl","src.lt-sm","src.lt-md","src.lt-lg","src.lt-xl","src.gt-xs","src.gt-sm","src.gt-md","src.gt-lg"]}]}],"members":{}},"ShowHideParent":{"__symbolic":"interface"},"ShowHideStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":36,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":35,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ShowHideDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":43,"character":39},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":55,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":55,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":56,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":56,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":57,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":57,"character":27},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":57,"character":34}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":51,"character":36},{"__symbolic":"reference","name":"ShowHideStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":53,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":54,"character":33},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LayoutConfigOptions","line":55,"character":61},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"boolean"}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"trackExtraTriggers":[{"__symbolic":"method"}],"getDisplayStyle":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}]}},"DefaultShowHideDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ShowHideDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":183,"character":1},"arguments":[{"selector":"\n [fxShow], [fxShow.print],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide], [fxHide.print],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n","inputs":["fxShow","fxShow.print","fxShow.xs","fxShow.sm","fxShow.md","fxShow.lg","fxShow.xl","fxShow.lt-sm","fxShow.lt-md","fxShow.lt-lg","fxShow.lt-xl","fxShow.gt-xs","fxShow.gt-sm","fxShow.gt-md","fxShow.gt-lg","fxHide","fxHide.print","fxHide.xs","fxHide.sm","fxHide.md","fxHide.lg","fxHide.xl","fxHide.lt-sm","fxHide.lt-md","fxHide.lt-lg","fxHide.lt-xl","fxHide.gt-xs","fxHide.gt-sm","fxHide.gt-md","fxHide.gt-lg"]}]}],"members":{}},"StyleDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":39,"character":36},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":50,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":50,"character":27}}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":51,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":51,"character":27},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":51,"character":34}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":52,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":52,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":36},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":46,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":47,"character":33},{"__symbolic":"reference","module":"@angular/common","name":"ɵNgStyleImpl","line":48,"character":34},{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":49,"character":35},{"__symbolic":"reference","module":"@angular/common","name":"NgStyle","line":50,"character":68},{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"Object"}]}],"updateWithValue":[{"__symbolic":"method"}],"clearStyles":[{"__symbolic":"method"}],"buildStyleMap":[{"__symbolic":"method"}],"ngDoCheck":[{"__symbolic":"method"}]}},"LayoutNgStyleImplProvider":{"provide":{"__symbolic":"reference","module":"@angular/common","name":"ɵNgStyleImpl","line":48,"character":34},"useClass":{"__symbolic":"reference","module":"@angular/common","name":"ɵNgStyleR2Impl","line":131,"character":12}},"DefaultStyleDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StyleDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":138,"character":1},"arguments":[{"selector":"\n [ngStyle],\n [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl],\n [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl],\n [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]\n","inputs":["ngStyle","ngStyle.xs","ngStyle.sm","ngStyle.md","ngStyle.lg","ngStyle.xl","ngStyle.lt-sm","ngStyle.lt-md","ngStyle.lt-lg","ngStyle.lt-xl","ngStyle.gt-xs","ngStyle.gt-sm","ngStyle.gt-md","ngStyle.gt-lg"],"providers":[{"__symbolic":"reference","name":"LayoutNgStyleImplProvider"}]}]}],"members":{}}},"origins":{"ExtendedModule":"./module","ClassDirective":"./class/class","LayoutNgClassImplProvider":"./class/class","DefaultClassDirective":"./class/class","ImgSrcStyleBuilder":"./img-src/img-src","ImgSrcDirective":"./img-src/img-src","DefaultImgSrcDirective":"./img-src/img-src","ShowHideParent":"./show-hide/show-hide","ShowHideStyleBuilder":"./show-hide/show-hide","ShowHideDirective":"./show-hide/show-hide","DefaultShowHideDirective":"./show-hide/show-hide","StyleDirective":"./style/style","LayoutNgStyleImplProvider":"./style/style","DefaultStyleDirective":"./style/style"},"importAs":"@angular/flex-layout/extended"} \ No newline at end of file diff --git a/typings/extended/show-hide/show-hide.d.ts b/typings/extended/show-hide/show-hide.d.ts index d49eae81a..de9800ff0 100644 --- a/typings/extended/show-hide/show-hide.d.ts +++ b/typings/extended/show-hide/show-hide.d.ts @@ -7,15 +7,6 @@ */ import { ElementRef, OnChanges, SimpleChanges, AfterViewInit } from '@angular/core'; import { BaseDirective2, LayoutConfigOptions, MediaMarshaller, StyleUtils, StyleBuilder } from '@angular/flex-layout/core'; -/** - * For fxHide selectors, we invert the 'value' - * and assign to the equivalent fxShow selector cache - * - When 'hide' === '' === true, do NOT show the element - * - When 'hide' === false or 0... we WILL show the element - * @deprecated - * @deletion-target v7.0.0-beta.21 - */ -export declare function negativeOf(hide: any): boolean; export interface ShowHideParent { display: string; } @@ -45,6 +36,10 @@ export declare class ShowHideDirective extends BaseDirective2 implements AfterVi * Then conditionally override with the mq-activated Input's current value */ ngOnChanges(changes: SimpleChanges): void; + /** + * Watch for these extra triggers to update fxShow, fxHide stylings + */ + protected trackExtraTriggers(): void; /** * Override accessor to the current HTMLElement's `display` style * Note: Show/Hide will not change the display to 'flex' but will set it to 'block' diff --git a/typings/extended/style/style.d.ts b/typings/extended/style/style.d.ts index 43f928e0a..1c0dee1db 100644 --- a/typings/extended/style/style.d.ts +++ b/typings/extended/style/style.d.ts @@ -5,8 +5,8 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ -import { DoCheck, ElementRef, KeyValueDiffers, Renderer2 } from '@angular/core'; -import { NgStyle } from '@angular/common'; +import { DoCheck, ElementRef } from '@angular/core'; +import { NgStyle, ɵNgStyleImpl, ɵNgStyleR2Impl } from '@angular/common'; import { DomSanitizer } from '@angular/platform-browser'; import { BaseDirective2, StyleUtils, MediaMarshaller } from '@angular/flex-layout/core'; import { NgStyleType, NgStyleMap } from './style-transforms'; @@ -14,14 +14,17 @@ export declare class StyleDirective extends BaseDirective2 implements DoCheck { protected elementRef: ElementRef; protected styler: StyleUtils; protected marshal: MediaMarshaller; - protected keyValueDiffers: KeyValueDiffers; - protected renderer: Renderer2; + protected delegate: ɵNgStyleImpl; protected sanitizer: DomSanitizer; private readonly ngStyleInstance; protected DIRECTIVE_KEY: string; protected fallbackStyles: NgStyleMap; - constructor(elementRef: ElementRef, styler: StyleUtils, marshal: MediaMarshaller, keyValueDiffers: KeyValueDiffers, renderer: Renderer2, sanitizer: DomSanitizer, ngStyleInstance: NgStyle); + protected isServer: boolean; + constructor(elementRef: ElementRef, styler: StyleUtils, marshal: MediaMarshaller, delegate: ɵNgStyleImpl, sanitizer: DomSanitizer, ngStyleInstance: NgStyle, serverLoaded: boolean, platformId: Object); + /** Add generated styles */ protected updateWithValue(value: any): void; + /** Remove generated styles */ + protected clearStyles(): void; /** * Convert raw strings to ngStyleMap; which is required by ngStyle * NOTE: Raw string key-value pairs MUST be delimited by `;` @@ -32,6 +35,10 @@ export declare class StyleDirective extends BaseDirective2 implements DoCheck { /** For ChangeDetectionStrategy.onPush and ngOnChanges() updates */ ngDoCheck(): void; } +export declare const LayoutNgStyleImplProvider: { + provide: typeof ɵNgStyleImpl; + useClass: typeof ɵNgStyleR2Impl; +}; /** * Directive to add responsive support for ngStyle. * diff --git a/typings/flex/index.metadata.json b/typings/flex/index.metadata.json index e3bad9cb7..86e73c8a2 100644 --- a/typings/flex/index.metadata.json +++ b/typings/flex/index.metadata.json @@ -1 +1 @@ -{"__symbolic":"module","version":4,"metadata":{"FlexModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":38,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"CoreModule","line":39,"character":12},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"BidiModule","line":39,"character":24}],"declarations":[{"__symbolic":"reference","name":"DefaultLayoutDirective"},{"__symbolic":"reference","name":"DefaultLayoutGapDirective"},{"__symbolic":"reference","name":"DefaultLayoutAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexOrderDirective"},{"__symbolic":"reference","name":"DefaultFlexOffsetDirective"},{"__symbolic":"reference","name":"FlexFillDirective"},{"__symbolic":"reference","name":"DefaultFlexAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexDirective"}],"exports":[{"__symbolic":"reference","name":"DefaultLayoutDirective"},{"__symbolic":"reference","name":"DefaultLayoutGapDirective"},{"__symbolic":"reference","name":"DefaultLayoutAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexOrderDirective"},{"__symbolic":"reference","name":"DefaultFlexOffsetDirective"},{"__symbolic":"reference","name":"FlexFillDirective"},{"__symbolic":"reference","name":"DefaultFlexAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexDirective"}]}]}],"members":{}},"FlexStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":30,"character":38},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":29,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":31,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":31,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LayoutConfigOptions","line":31,"character":61}]}],"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":201,"character":35},"members":{"shrink":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":208,"character":3},"arguments":["fxShrink"]}]}],"grow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":215,"character":3},"arguments":["fxGrow"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":227,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":227,"character":22}]}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":225,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":226,"character":36},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LayoutConfigOptions","line":31,"character":61},{"__symbolic":"reference","name":"FlexStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":229,"character":33}]}],"onLayoutChange":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}],"triggerReflow":[{"__symbolic":"method"}]}},"DefaultFlexDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":281,"character":1},"arguments":[{"inputs":["fxFlex","fxFlex.xs","fxFlex.sm","fxFlex.md","fxFlex.lg","fxFlex.xl","fxFlex.lt-sm","fxFlex.lt-md","fxFlex.lt-lg","fxFlex.lt-xl","fxFlex.gt-xs","fxFlex.gt-sm","fxFlex.gt-md","fxFlex.gt-lg"],"selector":"\n [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n [fxFlex.gt-md], [fxFlex.gt-lg]\n"}]}],"members":{}},"FlexAlignStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":17,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":57,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":65,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":61,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":62,"character":36},{"__symbolic":"reference","name":"FlexAlignStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":66,"character":33}]}]}},"DefaultFlexAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexAlignDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":76,"character":1},"arguments":[{"selector":"\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n","inputs":["fxFlexAlign","fxFlexAlign.xs","fxFlexAlign.sm","fxFlexAlign.md","fxFlexAlign.lg","fxFlexAlign.xl","fxFlexAlign.lt-sm","fxFlexAlign.lt-md","fxFlexAlign.lt-lg","fxFlexAlign.lt-xl","fxFlexAlign.gt-xs","fxFlexAlign.gt-sm","fxFlexAlign.gt-md","fxFlexAlign.gt-lg"]}]}],"members":{}},"FlexFillStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexFillDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":38,"character":39},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":37,"character":1},"arguments":[{"selector":"[fxFill], [fxFlexFill]"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":39,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":40,"character":36},{"__symbolic":"reference","name":"FlexFillStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":42,"character":33}]}]}},"FlexOffsetParent":{"__symbolic":"interface"},"FlexOffsetStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":32,"character":44},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":31,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexOffsetDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":67,"character":41},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":74,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":70,"character":31},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"Directionality","line":71,"character":40},{"__symbolic":"reference","name":"FlexOffsetStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":75,"character":33},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":76,"character":32}]}],"updateWithValue":[{"__symbolic":"method"}]}},"DefaultFlexOffsetDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexOffsetDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":114,"character":1},"arguments":[{"selector":"\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n","inputs":["fxFlexOffset","fxFlexOffset.xs","fxFlexOffset.sm","fxFlexOffset.md","fxFlexOffset.lg","fxFlexOffset.xl","fxFlexOffset.lt-sm","fxFlexOffset.lt-md","fxFlexOffset.lt-lg","fxFlexOffset.lt-xl","fxFlexOffset.gt-xs","fxFlexOffset.gt-sm","fxFlexOffset.gt-md","fxFlexOffset.gt-lg"]}]}],"members":{}},"FlexOrderStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":17,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexOrderDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":41,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":49,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":46,"character":36},{"__symbolic":"reference","name":"FlexOrderStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":50,"character":33}]}]}},"DefaultFlexOrderDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexOrderDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":60,"character":1},"arguments":[{"selector":"\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n","inputs":["fxFlexOrder","fxFlexOrder.xs","fxFlexOrder.sm","fxFlexOrder.md","fxFlexOrder.lg","fxFlexOrder.xl","fxFlexOrder.lt-sm","fxFlexOrder.lt-md","fxFlexOrder.lt-lg","fxFlexOrder.lt-xl","fxFlexOrder.gt-xs","fxFlexOrder.gt-sm","fxFlexOrder.gt-md","fxFlexOrder.gt-lg"]}]}],"members":{}},"LayoutStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":40},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":45,"character":37},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":53,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":49,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":50,"character":36},{"__symbolic":"reference","name":"LayoutStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":54,"character":33}]}]}},"DefaultLayoutDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"LayoutDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],\n [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md],\n [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm],\n [fxLayout.gt-md], [fxLayout.gt-lg]\n","inputs":["fxLayout","fxLayout.xs","fxLayout.sm","fxLayout.md","fxLayout.lg","fxLayout.xl","fxLayout.lt-sm","fxLayout.lt-md","fxLayout.lt-lg","fxLayout.lt-xl","fxLayout.gt-xs","fxLayout.gt-sm","fxLayout.gt-md","fxLayout.gt-lg"]}]}],"members":{}},"LayoutAlignParent":{"__symbolic":"interface"},"LayoutAlignStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":26,"character":45},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":25,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":120,"character":42},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":128,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":124,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":125,"character":36},{"__symbolic":"reference","name":"LayoutAlignStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":129,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}],"onLayoutChange":[{"__symbolic":"method"}]}},"DefaultLayoutAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"LayoutAlignDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":171,"character":1},"arguments":[{"selector":"\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n","inputs":["fxLayoutAlign","fxLayoutAlign.xs","fxLayoutAlign.sm","fxLayoutAlign.md","fxLayoutAlign.lg","fxLayoutAlign.xl","fxLayoutAlign.lt-sm","fxLayoutAlign.lt-md","fxLayoutAlign.lt-lg","fxLayoutAlign.lt-xl","fxLayoutAlign.gt-xs","fxLayoutAlign.gt-sm","fxLayoutAlign.gt-md","fxLayoutAlign.gt-lg"]}]}],"members":{}},"LayoutGapParent":{"__symbolic":"interface"},"LayoutGapStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":44,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":43,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":45,"character":31}]}],"buildStyles":[{"__symbolic":"method"}],"sideEffect":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutGapDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":98,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":121,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":115,"character":31},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":116,"character":30},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"Directionality","line":117,"character":40},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":45,"character":31},{"__symbolic":"reference","name":"LayoutGapStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":122,"character":33}]}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"onLayoutChange":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}],"willDisplay":[{"__symbolic":"method"}],"buildChildObservable":[{"__symbolic":"method"}]}},"DefaultLayoutGapDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"LayoutGapDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":231,"character":1},"arguments":[{"selector":"\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n","inputs":["fxLayoutGap","fxLayoutGap.xs","fxLayoutGap.sm","fxLayoutGap.md","fxLayoutGap.lg","fxLayoutGap.xl","fxLayoutGap.lt-sm","fxLayoutGap.lt-md","fxLayoutGap.lt-lg","fxLayoutGap.lt-xl","fxLayoutGap.gt-xs","fxLayoutGap.gt-sm","fxLayoutGap.gt-md","fxLayoutGap.gt-lg"]}]}],"members":{}}},"origins":{"FlexModule":"./module","FlexStyleBuilder":"./flex/flex","FlexDirective":"./flex/flex","DefaultFlexDirective":"./flex/flex","FlexAlignStyleBuilder":"./flex-align/flex-align","FlexAlignDirective":"./flex-align/flex-align","DefaultFlexAlignDirective":"./flex-align/flex-align","FlexFillStyleBuilder":"./flex-fill/flex-fill","FlexFillDirective":"./flex-fill/flex-fill","FlexOffsetParent":"./flex-offset/flex-offset","FlexOffsetStyleBuilder":"./flex-offset/flex-offset","FlexOffsetDirective":"./flex-offset/flex-offset","DefaultFlexOffsetDirective":"./flex-offset/flex-offset","FlexOrderStyleBuilder":"./flex-order/flex-order","FlexOrderDirective":"./flex-order/flex-order","DefaultFlexOrderDirective":"./flex-order/flex-order","LayoutStyleBuilder":"./layout/layout","LayoutDirective":"./layout/layout","DefaultLayoutDirective":"./layout/layout","LayoutAlignParent":"./layout-align/layout-align","LayoutAlignStyleBuilder":"./layout-align/layout-align","LayoutAlignDirective":"./layout-align/layout-align","DefaultLayoutAlignDirective":"./layout-align/layout-align","LayoutGapParent":"./layout-gap/layout-gap","LayoutGapStyleBuilder":"./layout-gap/layout-gap","LayoutGapDirective":"./layout-gap/layout-gap","DefaultLayoutGapDirective":"./layout-gap/layout-gap"},"importAs":"@angular/flex-layout/flex"} \ No newline at end of file +{"__symbolic":"module","version":4,"metadata":{"FlexModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":38,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"CoreModule","line":39,"character":12},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"BidiModule","line":39,"character":24}],"declarations":[{"__symbolic":"reference","name":"DefaultLayoutDirective"},{"__symbolic":"reference","name":"DefaultLayoutGapDirective"},{"__symbolic":"reference","name":"DefaultLayoutAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexOrderDirective"},{"__symbolic":"reference","name":"DefaultFlexOffsetDirective"},{"__symbolic":"reference","name":"FlexFillDirective"},{"__symbolic":"reference","name":"DefaultFlexAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexDirective"}],"exports":[{"__symbolic":"reference","name":"DefaultLayoutDirective"},{"__symbolic":"reference","name":"DefaultLayoutGapDirective"},{"__symbolic":"reference","name":"DefaultLayoutAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexOrderDirective"},{"__symbolic":"reference","name":"DefaultFlexOffsetDirective"},{"__symbolic":"reference","name":"FlexFillDirective"},{"__symbolic":"reference","name":"DefaultFlexAlignDirective"},{"__symbolic":"reference","name":"DefaultFlexDirective"}]}]}],"members":{}},"FlexStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":30,"character":38},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":29,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":31,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":31,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LayoutConfigOptions","line":31,"character":61}]}],"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":201,"character":35},"members":{"shrink":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":208,"character":3},"arguments":["fxShrink"]}]}],"grow":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":215,"character":3},"arguments":["fxGrow"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":227,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":227,"character":22}]}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":225,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":226,"character":36},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LayoutConfigOptions","line":31,"character":61},{"__symbolic":"reference","name":"FlexStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":229,"character":33}]}],"onLayoutChange":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}],"triggerReflow":[{"__symbolic":"method"}]}},"DefaultFlexDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":287,"character":1},"arguments":[{"inputs":["fxFlex","fxFlex.xs","fxFlex.sm","fxFlex.md","fxFlex.lg","fxFlex.xl","fxFlex.lt-sm","fxFlex.lt-md","fxFlex.lt-lg","fxFlex.lt-xl","fxFlex.gt-xs","fxFlex.gt-sm","fxFlex.gt-md","fxFlex.gt-lg"],"selector":"\n [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n [fxFlex.gt-md], [fxFlex.gt-lg]\n"}]}],"members":{}},"FlexAlignStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":17,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":57,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":65,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":61,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":62,"character":36},{"__symbolic":"reference","name":"FlexAlignStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":66,"character":33}]}]}},"DefaultFlexAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexAlignDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":76,"character":1},"arguments":[{"selector":"\n [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n","inputs":["fxFlexAlign","fxFlexAlign.xs","fxFlexAlign.sm","fxFlexAlign.md","fxFlexAlign.lg","fxFlexAlign.xl","fxFlexAlign.lt-sm","fxFlexAlign.lt-md","fxFlexAlign.lt-lg","fxFlexAlign.lt-xl","fxFlexAlign.gt-xs","fxFlexAlign.gt-sm","fxFlexAlign.gt-md","fxFlexAlign.gt-lg"]}]}],"members":{}},"FlexFillStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexFillDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":38,"character":39},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":37,"character":1},"arguments":[{"selector":"[fxFill], [fxFlexFill]"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":39,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":40,"character":36},{"__symbolic":"reference","name":"FlexFillStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":42,"character":33}]}]}},"FlexOffsetParent":{"__symbolic":"interface"},"FlexOffsetStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":32,"character":44},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":31,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexOffsetDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":67,"character":41},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":74,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":70,"character":31},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"Directionality","line":71,"character":40},{"__symbolic":"reference","name":"FlexOffsetStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":75,"character":33},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":76,"character":32}]}],"updateWithValue":[{"__symbolic":"method"}]}},"DefaultFlexOffsetDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexOffsetDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":114,"character":1},"arguments":[{"selector":"\n [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n","inputs":["fxFlexOffset","fxFlexOffset.xs","fxFlexOffset.sm","fxFlexOffset.md","fxFlexOffset.lg","fxFlexOffset.xl","fxFlexOffset.lt-sm","fxFlexOffset.lt-md","fxFlexOffset.lt-lg","fxFlexOffset.lt-xl","fxFlexOffset.gt-xs","fxFlexOffset.gt-sm","fxFlexOffset.gt-md","fxFlexOffset.gt-lg"]}]}],"members":{}},"FlexOrderStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":17,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"FlexOrderDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":41,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":49,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":46,"character":36},{"__symbolic":"reference","name":"FlexOrderStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":50,"character":33}]}]}},"DefaultFlexOrderDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"FlexOrderDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":60,"character":1},"arguments":[{"selector":"\n [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n","inputs":["fxFlexOrder","fxFlexOrder.xs","fxFlexOrder.sm","fxFlexOrder.md","fxFlexOrder.lg","fxFlexOrder.xl","fxFlexOrder.lt-sm","fxFlexOrder.lt-md","fxFlexOrder.lt-lg","fxFlexOrder.lt-xl","fxFlexOrder.gt-xs","fxFlexOrder.gt-sm","fxFlexOrder.gt-md","fxFlexOrder.gt-lg"]}]}],"members":{}},"LayoutStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":40},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":45,"character":37},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":53,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":49,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":50,"character":36},{"__symbolic":"reference","name":"LayoutStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":54,"character":33}]}]}},"DefaultLayoutDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"LayoutDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],\n [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md],\n [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm],\n [fxLayout.gt-md], [fxLayout.gt-lg]\n","inputs":["fxLayout","fxLayout.xs","fxLayout.sm","fxLayout.md","fxLayout.lg","fxLayout.xl","fxLayout.lt-sm","fxLayout.lt-md","fxLayout.lt-lg","fxLayout.lt-xl","fxLayout.gt-xs","fxLayout.gt-sm","fxLayout.gt-md","fxLayout.gt-lg"]}]}],"members":{}},"LayoutAlignParent":{"__symbolic":"interface"},"LayoutAlignStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":27,"character":45},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":26,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":121,"character":42},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":130,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":126,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":127,"character":36},{"__symbolic":"reference","name":"LayoutAlignStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":131,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}],"onLayoutChange":[{"__symbolic":"method"}]}},"DefaultLayoutAlignDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"LayoutAlignDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":183,"character":1},"arguments":[{"selector":"\n [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n","inputs":["fxLayoutAlign","fxLayoutAlign.xs","fxLayoutAlign.sm","fxLayoutAlign.md","fxLayoutAlign.lg","fxLayoutAlign.xl","fxLayoutAlign.lt-sm","fxLayoutAlign.lt-md","fxLayoutAlign.lt-lg","fxLayoutAlign.lt-xl","fxLayoutAlign.gt-xs","fxLayoutAlign.gt-sm","fxLayoutAlign.gt-md","fxLayoutAlign.gt-lg"]}]}],"members":{}},"LayoutGapParent":{"__symbolic":"interface"},"LayoutGapStyleBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":44,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":43,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":45,"character":31}]}],"buildStyles":[{"__symbolic":"method"}],"sideEffect":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"LayoutGapDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":98,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":121,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":115,"character":31},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":116,"character":30},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"Directionality","line":117,"character":40},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":45,"character":31},{"__symbolic":"reference","name":"LayoutGapStyleBuilder"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":122,"character":33}]}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"onLayoutChange":[{"__symbolic":"method"}],"updateWithValue":[{"__symbolic":"method"}],"clearStyles":[{"__symbolic":"method"}],"willDisplay":[{"__symbolic":"method"}],"buildChildObservable":[{"__symbolic":"method"}]}},"DefaultLayoutGapDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"LayoutGapDirective"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":243,"character":1},"arguments":[{"selector":"\n [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n","inputs":["fxLayoutGap","fxLayoutGap.xs","fxLayoutGap.sm","fxLayoutGap.md","fxLayoutGap.lg","fxLayoutGap.xl","fxLayoutGap.lt-sm","fxLayoutGap.lt-md","fxLayoutGap.lt-lg","fxLayoutGap.lt-xl","fxLayoutGap.gt-xs","fxLayoutGap.gt-sm","fxLayoutGap.gt-md","fxLayoutGap.gt-lg"]}]}],"members":{}}},"origins":{"FlexModule":"./module","FlexStyleBuilder":"./flex/flex","FlexDirective":"./flex/flex","DefaultFlexDirective":"./flex/flex","FlexAlignStyleBuilder":"./flex-align/flex-align","FlexAlignDirective":"./flex-align/flex-align","DefaultFlexAlignDirective":"./flex-align/flex-align","FlexFillStyleBuilder":"./flex-fill/flex-fill","FlexFillDirective":"./flex-fill/flex-fill","FlexOffsetParent":"./flex-offset/flex-offset","FlexOffsetStyleBuilder":"./flex-offset/flex-offset","FlexOffsetDirective":"./flex-offset/flex-offset","DefaultFlexOffsetDirective":"./flex-offset/flex-offset","FlexOrderStyleBuilder":"./flex-order/flex-order","FlexOrderDirective":"./flex-order/flex-order","DefaultFlexOrderDirective":"./flex-order/flex-order","LayoutStyleBuilder":"./layout/layout","LayoutDirective":"./layout/layout","DefaultLayoutDirective":"./layout/layout","LayoutAlignParent":"./layout-align/layout-align","LayoutAlignStyleBuilder":"./layout-align/layout-align","LayoutAlignDirective":"./layout-align/layout-align","DefaultLayoutAlignDirective":"./layout-align/layout-align","LayoutGapParent":"./layout-gap/layout-gap","LayoutGapStyleBuilder":"./layout-gap/layout-gap","LayoutGapDirective":"./layout-gap/layout-gap","DefaultLayoutGapDirective":"./layout-gap/layout-gap"},"importAs":"@angular/flex-layout/flex"} \ No newline at end of file diff --git a/typings/flex/layout-align/layout-align.d.ts b/typings/flex/layout-align/layout-align.d.ts index aa714d1f2..c32462af3 100644 --- a/typings/flex/layout-align/layout-align.d.ts +++ b/typings/flex/layout-align/layout-align.d.ts @@ -9,6 +9,7 @@ import { ElementRef } from '@angular/core'; import { BaseDirective2, StyleBuilder, StyleDefinition, StyleUtils, MediaMarshaller, ElementMatcher } from '@angular/flex-layout/core'; export interface LayoutAlignParent { layout: string; + inline: boolean; } export declare class LayoutAlignStyleBuilder extends StyleBuilder { buildStyles(align: string, parent: LayoutAlignParent): StyleDefinition; @@ -29,6 +30,7 @@ export declare class LayoutAlignDirective extends BaseDirective2 { protected marshal: MediaMarshaller; protected DIRECTIVE_KEY: string; protected layout: string; + protected inline: boolean; constructor(elRef: ElementRef, styleUtils: StyleUtils, styleBuilder: LayoutAlignStyleBuilder, marshal: MediaMarshaller); /** * diff --git a/typings/flex/layout-gap/layout-gap.d.ts b/typings/flex/layout-gap/layout-gap.d.ts index a6bc93724..284b7cd17 100644 --- a/typings/flex/layout-gap/layout-gap.d.ts +++ b/typings/flex/layout-gap/layout-gap.d.ts @@ -47,6 +47,8 @@ export declare class LayoutGapDirective extends BaseDirective2 implements AfterC * */ protected updateWithValue(value: string): void; + /** We need to override clearStyles because in most cases mru isn't populated */ + protected clearStyles(): void; /** Determine if an element will show or hide based on current activation */ protected willDisplay(source: HTMLElement): boolean; protected buildChildObservable(): void; diff --git a/typings/grid/index.d.ts b/typings/grid/index.d.ts index e6d4ea3b2..e88835976 100644 --- a/typings/grid/index.d.ts +++ b/typings/grid/index.d.ts @@ -2,14 +2,14 @@ * Generated bundle index. Do not edit. */ export * from './public-api'; -export { DefaultGridAlignColumnsDirective as ɵf, GridAlignColumnsDirective as ɵe, GridAlignColumnsStyleBuilder as ɵd } from './align-columns/align-columns'; -export { DefaultGridAlignRowsDirective as ɵi, GridAlignRowsDirective as ɵh, GridAlignRowsStyleBuilder as ɵg } from './align-rows/align-rows'; -export { DefaultGridAreaDirective as ɵl, GridAreaDirective as ɵk, GridAreaStyleBuilder as ɵj } from './area/area'; -export { DefaultGridAreasDirective as ɵo, GridAreasDirective as ɵn, GridAreasStyleBuiler as ɵm } from './areas/areas'; -export { DefaultGridAutoDirective as ɵr, GridAutoDirective as ɵq, GridAutoStyleBuilder as ɵp } from './auto/auto'; -export { DefaultGridColumnDirective as ɵu, GridColumnDirective as ɵt, GridColumnStyleBuilder as ɵs } from './column/column'; -export { DefaultGridColumnsDirective as ɵx, GridColumnsDirective as ɵw, GridColumnsStyleBuilder as ɵv } from './columns/columns'; -export { DefaultGridGapDirective as ɵba, GridGapDirective as ɵz, GridGapStyleBuilder as ɵy } from './gap/gap'; -export { DefaultGridAlignDirective as ɵc, GridAlignDirective as ɵb, GridAlignStyleBuilder as ɵa } from './grid-align/grid-align'; -export { DefaultGridRowDirective as ɵbd, GridRowDirective as ɵbc, GridRowStyleBuilder as ɵbb } from './row/row'; -export { DefaultGridRowsDirective as ɵbg, GridRowsDirective as ɵbf, GridRowsStyleBuilder as ɵbe } from './rows/rows'; +export { DefaultGridAlignColumnsDirective as ɵf2, GridAlignColumnsDirective as ɵe2, GridAlignColumnsStyleBuilder as ɵd2 } from './align-columns/align-columns'; +export { DefaultGridAlignRowsDirective as ɵi2, GridAlignRowsDirective as ɵh2, GridAlignRowsStyleBuilder as ɵg2 } from './align-rows/align-rows'; +export { DefaultGridAreaDirective as ɵl2, GridAreaDirective as ɵk2, GridAreaStyleBuilder as ɵj2 } from './area/area'; +export { DefaultGridAreasDirective as ɵo2, GridAreasDirective as ɵn2, GridAreasStyleBuiler as ɵm2 } from './areas/areas'; +export { DefaultGridAutoDirective as ɵr2, GridAutoDirective as ɵq2, GridAutoStyleBuilder as ɵp2 } from './auto/auto'; +export { DefaultGridColumnDirective as ɵu2, GridColumnDirective as ɵt2, GridColumnStyleBuilder as ɵs2 } from './column/column'; +export { DefaultGridColumnsDirective as ɵx2, GridColumnsDirective as ɵw2, GridColumnsStyleBuilder as ɵv2 } from './columns/columns'; +export { DefaultGridGapDirective as ɵba2, GridGapDirective as ɵz2, GridGapStyleBuilder as ɵy2 } from './gap/gap'; +export { DefaultGridAlignDirective as ɵc2, GridAlignDirective as ɵb2, GridAlignStyleBuilder as ɵa2 } from './grid-align/grid-align'; +export { DefaultGridRowDirective as ɵbd2, GridRowDirective as ɵbc2, GridRowStyleBuilder as ɵbb2 } from './row/row'; +export { DefaultGridRowsDirective as ɵbg2, GridRowsDirective as ɵbf2, GridRowsStyleBuilder as ɵbe2 } from './rows/rows'; diff --git a/typings/grid/index.metadata.json b/typings/grid/index.metadata.json index bf51fdbbd..393dfd156 100644 --- a/typings/grid/index.metadata.json +++ b/typings/grid/index.metadata.json @@ -1 +1 @@ -{"__symbolic":"module","version":4,"metadata":{"GridModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":43,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"CoreModule","line":44,"character":12}],"declarations":[{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵo"},{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"ɵx"},{"__symbolic":"reference","name":"ɵba"},{"__symbolic":"reference","name":"ɵbd"},{"__symbolic":"reference","name":"ɵbg"}],"exports":[{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵo"},{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","name":"ɵu"},{"__symbolic":"reference","name":"ɵx"},{"__symbolic":"reference","name":"ɵba"},{"__symbolic":"reference","name":"ɵbd"},{"__symbolic":"reference","name":"ɵbg"}]}]}],"members":{}},"ɵa":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":20,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":19,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵb":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":26,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":33,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":30,"character":36},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":34,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":35,"character":33}]}]}},"ɵc":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵb"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":67,"character":1},"arguments":[{"selector":"\n [gdGridAlign],\n [gdGridAlign.xs], [gdGridAlign.sm], [gdGridAlign.md], [gdGridAlign.lg],[gdGridAlign.xl],\n [gdGridAlign.lt-sm], [gdGridAlign.lt-md], [gdGridAlign.lt-lg], [gdGridAlign.lt-xl],\n [gdGridAlign.gt-xs], [gdGridAlign.gt-sm], [gdGridAlign.gt-md], [gdGridAlign.gt-lg]\n","inputs":["gdGridAlign","gdGridAlign.xs","gdGridAlign.sm","gdGridAlign.md","gdGridAlign.lg","gdGridAlign.xl","gdGridAlign.lt-sm","gdGridAlign.lt-md","gdGridAlign.lt-lg","gdGridAlign.lt-xl","gdGridAlign.gt-xs","gdGridAlign.gt-sm","gdGridAlign.gt-md","gdGridAlign.gt-lg"]}]}],"members":{}},"ɵd":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":50},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵe":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":31,"character":47},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":43,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":40,"character":36},{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":44,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":45,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵf":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵe"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":86,"character":1},"arguments":[{"selector":"\n [gdAlignColumns],\n [gdAlignColumns.xs], [gdAlignColumns.sm], [gdAlignColumns.md],\n [gdAlignColumns.lg], [gdAlignColumns.xl], [gdAlignColumns.lt-sm],\n [gdAlignColumns.lt-md], [gdAlignColumns.lt-lg], [gdAlignColumns.lt-xl],\n [gdAlignColumns.gt-xs], [gdAlignColumns.gt-sm], [gdAlignColumns.gt-md],\n [gdAlignColumns.gt-lg]\n","inputs":["gdAlignColumns","gdAlignColumns.xs","gdAlignColumns.sm","gdAlignColumns.md","gdAlignColumns.lg","gdAlignColumns.xl","gdAlignColumns.lt-sm","gdAlignColumns.lt-md","gdAlignColumns.lt-lg","gdAlignColumns.lt-xl","gdAlignColumns.gt-xs","gdAlignColumns.gt-sm","gdAlignColumns.gt-md","gdAlignColumns.gt-lg"]}]}],"members":{}},"ɵg":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":47},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵh":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":31,"character":44},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":43,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":40,"character":36},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":44,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":45,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵi":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵh"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":86,"character":1},"arguments":[{"selector":"\n [gdAlignRows],\n [gdAlignRows.xs], [gdAlignRows.sm], [gdAlignRows.md],\n [gdAlignRows.lg], [gdAlignRows.xl], [gdAlignRows.lt-sm],\n [gdAlignRows.lt-md], [gdAlignRows.lt-lg], [gdAlignRows.lt-xl],\n [gdAlignRows.gt-xs], [gdAlignRows.gt-sm], [gdAlignRows.gt-md],\n [gdAlignRows.gt-lg]\n","inputs":["gdAlignRows","gdAlignRows.xs","gdAlignRows.sm","gdAlignRows.md","gdAlignRows.lg","gdAlignRows.xl","gdAlignRows.lt-sm","gdAlignRows.lt-md","gdAlignRows.lt-lg","gdAlignRows.lt-xl","gdAlignRows.gt-xs","gdAlignRows.gt-sm","gdAlignRows.gt-md","gdAlignRows.gt-lg"]}]}],"members":{}},"ɵj":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵk":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":39},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":33,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":29,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":30,"character":36},{"__symbolic":"reference","name":"ɵj"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":34,"character":33}]}]}},"ɵl":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵk"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [gdArea],\n [gdArea.xs], [gdArea.sm], [gdArea.md], [gdArea.lg], [gdArea.xl],\n [gdArea.lt-sm], [gdArea.lt-md], [gdArea.lt-lg], [gdArea.lt-xl],\n [gdArea.gt-xs], [gdArea.gt-sm], [gdArea.gt-md], [gdArea.gt-lg]\n","inputs":["gdArea","gdArea.xs","gdArea.sm","gdArea.md","gdArea.lg","gdArea.xl","gdArea.lt-sm","gdArea.lt-md","gdArea.lt-lg","gdArea.lt-xl","gdArea.gt-xs","gdArea.gt-sm","gdArea.gt-md","gdArea.gt-lg"]}]}],"members":{}},"ɵm":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵn":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":36,"character":40},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":49,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":46,"character":36},{"__symbolic":"reference","name":"ɵm"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":50,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵo":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵn"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":87,"character":1},"arguments":[{"selector":"\n [gdAreas],\n [gdAreas.xs], [gdAreas.sm], [gdAreas.md], [gdAreas.lg], [gdAreas.xl],\n [gdAreas.lt-sm], [gdAreas.lt-md], [gdAreas.lt-lg], [gdAreas.lt-xl],\n [gdAreas.gt-xs], [gdAreas.gt-sm], [gdAreas.gt-md], [gdAreas.gt-lg]\n","inputs":["gdAreas","gdAreas.xs","gdAreas.sm","gdAreas.md","gdAreas.lg","gdAreas.xl","gdAreas.lt-sm","gdAreas.lt-md","gdAreas.lt-lg","gdAreas.lt-xl","gdAreas.gt-xs","gdAreas.gt-sm","gdAreas.gt-md","gdAreas.gt-lg"]}]}],"members":{}},"ɵp":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":24,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵq":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":40,"character":39},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":51,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":48,"character":36},{"__symbolic":"reference","name":"ɵp"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":52,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":53,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵr":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵq"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":89,"character":1},"arguments":[{"selector":"\n [gdAuto],\n [gdAuto.xs], [gdAuto.sm], [gdAuto.md], [gdAuto.lg], [gdAuto.xl],\n [gdAuto.lt-sm], [gdAuto.lt-md], [gdAuto.lt-lg], [gdAuto.lt-xl],\n [gdAuto.gt-xs], [gdAuto.gt-sm], [gdAuto.gt-md], [gdAuto.gt-lg]\n","inputs":["gdAuto","gdAuto.xs","gdAuto.sm","gdAuto.md","gdAuto.lg","gdAuto.xl","gdAuto.lt-sm","gdAuto.lt-md","gdAuto.lt-lg","gdAuto.lt-xl","gdAuto.gt-xs","gdAuto.gt-sm","gdAuto.gt-md","gdAuto.gt-lg"]}]}],"members":{}},"ɵs":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":44},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵt":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":41},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":31,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":28,"character":36},{"__symbolic":"reference","name":"ɵs"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":32,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":33,"character":33}]}]}},"ɵu":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵt"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [gdColumn],\n [gdColumn.xs], [gdColumn.sm], [gdColumn.md], [gdColumn.lg], [gdColumn.xl],\n [gdColumn.lt-sm], [gdColumn.lt-md], [gdColumn.lt-lg], [gdColumn.lt-xl],\n [gdColumn.gt-xs], [gdColumn.gt-sm], [gdColumn.gt-md], [gdColumn.gt-lg]\n","inputs":["gdColumn","gdColumn.xs","gdColumn.sm","gdColumn.md","gdColumn.lg","gdColumn.xl","gdColumn.lt-sm","gdColumn.lt-md","gdColumn.lt-lg","gdColumn.lt-xl","gdColumn.gt-xs","gdColumn.gt-sm","gdColumn.gt-md","gdColumn.gt-lg"]}]}],"members":{}},"ɵv":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":45},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵw":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":46,"character":42},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":57,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":54,"character":36},{"__symbolic":"reference","name":"ɵv"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":58,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":59,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵx":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵw"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":97,"character":1},"arguments":[{"selector":"\n [gdColumns],\n [gdColumns.xs], [gdColumns.sm], [gdColumns.md], [gdColumns.lg], [gdColumns.xl],\n [gdColumns.lt-sm], [gdColumns.lt-md], [gdColumns.lt-lg], [gdColumns.lt-xl],\n [gdColumns.gt-xs], [gdColumns.gt-sm], [gdColumns.gt-md], [gdColumns.gt-lg]\n","inputs":["gdColumns","gdColumns.xs","gdColumns.sm","gdColumns.md","gdColumns.lg","gdColumns.xl","gdColumns.lt-sm","gdColumns.lt-md","gdColumns.lt-lg","gdColumns.lt-xl","gdColumns.gt-xs","gdColumns.gt-sm","gdColumns.gt-md","gdColumns.gt-lg"]}]}],"members":{}},"ɵy":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":24,"character":41},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵz":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":33,"character":38},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":45,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":41,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":42,"character":36},{"__symbolic":"reference","name":"ɵy"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":46,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵba":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵz"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":84,"character":1},"arguments":[{"selector":"\n [gdGap],\n [gdGap.xs], [gdGap.sm], [gdGap.md], [gdGap.lg], [gdGap.xl],\n [gdGap.lt-sm], [gdGap.lt-md], [gdGap.lt-lg], [gdGap.lt-xl],\n [gdGap.gt-xs], [gdGap.gt-sm], [gdGap.gt-md], [gdGap.gt-lg]\n","inputs":["gdGap","gdGap.xs","gdGap.sm","gdGap.md","gdGap.lg","gdGap.xl","gdGap.lt-sm","gdGap.lt-md","gdGap.lt-lg","gdGap.lt-xl","gdGap.gt-xs","gdGap.gt-sm","gdGap.gt-md","gdGap.gt-lg"]}]}],"members":{}},"ɵbb":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":41},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵbc":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":38},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":31,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":28,"character":36},{"__symbolic":"reference","name":"ɵbb"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":32,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":33,"character":33}]}]}},"ɵbd":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵbc"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [gdRow],\n [gdRow.xs], [gdRow.sm], [gdRow.md], [gdRow.lg], [gdRow.xl],\n [gdRow.lt-sm], [gdRow.lt-md], [gdRow.lt-lg], [gdRow.lt-xl],\n [gdRow.gt-xs], [gdRow.gt-sm], [gdRow.gt-md], [gdRow.gt-lg]\n","inputs":["gdRow","gdRow.xs","gdRow.sm","gdRow.md","gdRow.lg","gdRow.xl","gdRow.lt-sm","gdRow.lt-md","gdRow.lt-lg","gdRow.lt-xl","gdRow.gt-xs","gdRow.gt-sm","gdRow.gt-md","gdRow.gt-lg"]}]}],"members":{}},"ɵbe":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵbf":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":46,"character":39},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":57,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":54,"character":36},{"__symbolic":"reference","name":"ɵbe"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":58,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":59,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵbg":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵbf"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":97,"character":1},"arguments":[{"selector":"\n [gdRows],\n [gdRows.xs], [gdRows.sm], [gdRows.md], [gdRows.lg], [gdRows.xl],\n [gdRows.lt-sm], [gdRows.lt-md], [gdRows.lt-lg], [gdRows.lt-xl],\n [gdRows.gt-xs], [gdRows.gt-sm], [gdRows.gt-md], [gdRows.gt-lg]\n","inputs":["gdRows","gdRows.xs","gdRows.sm","gdRows.md","gdRows.lg","gdRows.xl","gdRows.lt-sm","gdRows.lt-md","gdRows.lt-lg","gdRows.lt-xl","gdRows.gt-xs","gdRows.gt-sm","gdRows.gt-md","gdRows.gt-lg"]}]}],"members":{}}},"origins":{"GridModule":"./module","ɵa":"./grid-align/grid-align","ɵb":"./grid-align/grid-align","ɵc":"./grid-align/grid-align","ɵd":"./align-columns/align-columns","ɵe":"./align-columns/align-columns","ɵf":"./align-columns/align-columns","ɵg":"./align-rows/align-rows","ɵh":"./align-rows/align-rows","ɵi":"./align-rows/align-rows","ɵj":"./area/area","ɵk":"./area/area","ɵl":"./area/area","ɵm":"./areas/areas","ɵn":"./areas/areas","ɵo":"./areas/areas","ɵp":"./auto/auto","ɵq":"./auto/auto","ɵr":"./auto/auto","ɵs":"./column/column","ɵt":"./column/column","ɵu":"./column/column","ɵv":"./columns/columns","ɵw":"./columns/columns","ɵx":"./columns/columns","ɵy":"./gap/gap","ɵz":"./gap/gap","ɵba":"./gap/gap","ɵbb":"./row/row","ɵbc":"./row/row","ɵbd":"./row/row","ɵbe":"./rows/rows","ɵbf":"./rows/rows","ɵbg":"./rows/rows"},"importAs":"@angular/flex-layout/grid"} \ No newline at end of file +{"__symbolic":"module","version":4,"metadata":{"GridModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":43,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"CoreModule","line":44,"character":12}],"declarations":[{"__symbolic":"reference","name":"ɵc2"},{"__symbolic":"reference","name":"ɵf2"},{"__symbolic":"reference","name":"ɵi2"},{"__symbolic":"reference","name":"ɵl2"},{"__symbolic":"reference","name":"ɵo2"},{"__symbolic":"reference","name":"ɵr2"},{"__symbolic":"reference","name":"ɵu2"},{"__symbolic":"reference","name":"ɵx2"},{"__symbolic":"reference","name":"ɵba2"},{"__symbolic":"reference","name":"ɵbd2"},{"__symbolic":"reference","name":"ɵbg2"}],"exports":[{"__symbolic":"reference","name":"ɵc2"},{"__symbolic":"reference","name":"ɵf2"},{"__symbolic":"reference","name":"ɵi2"},{"__symbolic":"reference","name":"ɵl2"},{"__symbolic":"reference","name":"ɵo2"},{"__symbolic":"reference","name":"ɵr2"},{"__symbolic":"reference","name":"ɵu2"},{"__symbolic":"reference","name":"ɵx2"},{"__symbolic":"reference","name":"ɵba2"},{"__symbolic":"reference","name":"ɵbd2"},{"__symbolic":"reference","name":"ɵbg2"}]}]}],"members":{}},"ɵa2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":20,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":19,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵb2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":26,"character":40},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":33,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":30,"character":36},{"__symbolic":"reference","name":"ɵa2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":34,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":35,"character":33}]}]}},"ɵc2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵb2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":67,"character":1},"arguments":[{"selector":"\n [gdGridAlign],\n [gdGridAlign.xs], [gdGridAlign.sm], [gdGridAlign.md], [gdGridAlign.lg],[gdGridAlign.xl],\n [gdGridAlign.lt-sm], [gdGridAlign.lt-md], [gdGridAlign.lt-lg], [gdGridAlign.lt-xl],\n [gdGridAlign.gt-xs], [gdGridAlign.gt-sm], [gdGridAlign.gt-md], [gdGridAlign.gt-lg]\n","inputs":["gdGridAlign","gdGridAlign.xs","gdGridAlign.sm","gdGridAlign.md","gdGridAlign.lg","gdGridAlign.xl","gdGridAlign.lt-sm","gdGridAlign.lt-md","gdGridAlign.lt-lg","gdGridAlign.lt-xl","gdGridAlign.gt-xs","gdGridAlign.gt-sm","gdGridAlign.gt-md","gdGridAlign.gt-lg"]}]}],"members":{}},"ɵd2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":50},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵe2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":31,"character":47},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":43,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":40,"character":36},{"__symbolic":"reference","name":"ɵd2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":44,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":45,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵf2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵe2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":86,"character":1},"arguments":[{"selector":"\n [gdAlignColumns],\n [gdAlignColumns.xs], [gdAlignColumns.sm], [gdAlignColumns.md],\n [gdAlignColumns.lg], [gdAlignColumns.xl], [gdAlignColumns.lt-sm],\n [gdAlignColumns.lt-md], [gdAlignColumns.lt-lg], [gdAlignColumns.lt-xl],\n [gdAlignColumns.gt-xs], [gdAlignColumns.gt-sm], [gdAlignColumns.gt-md],\n [gdAlignColumns.gt-lg]\n","inputs":["gdAlignColumns","gdAlignColumns.xs","gdAlignColumns.sm","gdAlignColumns.md","gdAlignColumns.lg","gdAlignColumns.xl","gdAlignColumns.lt-sm","gdAlignColumns.lt-md","gdAlignColumns.lt-lg","gdAlignColumns.lt-xl","gdAlignColumns.gt-xs","gdAlignColumns.gt-sm","gdAlignColumns.gt-md","gdAlignColumns.gt-lg"]}]}],"members":{}},"ɵg2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":47},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵh2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":31,"character":44},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":43,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":40,"character":36},{"__symbolic":"reference","name":"ɵg2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":44,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":45,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵi2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵh2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":86,"character":1},"arguments":[{"selector":"\n [gdAlignRows],\n [gdAlignRows.xs], [gdAlignRows.sm], [gdAlignRows.md],\n [gdAlignRows.lg], [gdAlignRows.xl], [gdAlignRows.lt-sm],\n [gdAlignRows.lt-md], [gdAlignRows.lt-lg], [gdAlignRows.lt-xl],\n [gdAlignRows.gt-xs], [gdAlignRows.gt-sm], [gdAlignRows.gt-md],\n [gdAlignRows.gt-lg]\n","inputs":["gdAlignRows","gdAlignRows.xs","gdAlignRows.sm","gdAlignRows.md","gdAlignRows.lg","gdAlignRows.xl","gdAlignRows.lt-sm","gdAlignRows.lt-md","gdAlignRows.lt-lg","gdAlignRows.lt-xl","gdAlignRows.gt-xs","gdAlignRows.gt-sm","gdAlignRows.gt-md","gdAlignRows.gt-lg"]}]}],"members":{}},"ɵj2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵk2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":39},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":33,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":29,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":30,"character":36},{"__symbolic":"reference","name":"ɵj2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":34,"character":33}]}]}},"ɵl2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵk2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [gdArea],\n [gdArea.xs], [gdArea.sm], [gdArea.md], [gdArea.lg], [gdArea.xl],\n [gdArea.lt-sm], [gdArea.lt-md], [gdArea.lt-lg], [gdArea.lt-xl],\n [gdArea.gt-xs], [gdArea.gt-sm], [gdArea.gt-md], [gdArea.gt-lg]\n","inputs":["gdArea","gdArea.xs","gdArea.sm","gdArea.md","gdArea.lg","gdArea.xl","gdArea.lt-sm","gdArea.lt-md","gdArea.lt-lg","gdArea.lt-xl","gdArea.gt-xs","gdArea.gt-sm","gdArea.gt-md","gdArea.gt-lg"]}]}],"members":{}},"ɵm2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵn2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":36,"character":40},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":49,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":45,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":46,"character":36},{"__symbolic":"reference","name":"ɵm2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":50,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵo2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵn2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":87,"character":1},"arguments":[{"selector":"\n [gdAreas],\n [gdAreas.xs], [gdAreas.sm], [gdAreas.md], [gdAreas.lg], [gdAreas.xl],\n [gdAreas.lt-sm], [gdAreas.lt-md], [gdAreas.lt-lg], [gdAreas.lt-xl],\n [gdAreas.gt-xs], [gdAreas.gt-sm], [gdAreas.gt-md], [gdAreas.gt-lg]\n","inputs":["gdAreas","gdAreas.xs","gdAreas.sm","gdAreas.md","gdAreas.lg","gdAreas.xl","gdAreas.lt-sm","gdAreas.lt-md","gdAreas.lt-lg","gdAreas.lt-xl","gdAreas.gt-xs","gdAreas.gt-sm","gdAreas.gt-md","gdAreas.gt-lg"]}]}],"members":{}},"ɵp2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":24,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵq2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":40,"character":39},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":51,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":48,"character":36},{"__symbolic":"reference","name":"ɵp2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":52,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":53,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵr2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵq2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":89,"character":1},"arguments":[{"selector":"\n [gdAuto],\n [gdAuto.xs], [gdAuto.sm], [gdAuto.md], [gdAuto.lg], [gdAuto.xl],\n [gdAuto.lt-sm], [gdAuto.lt-md], [gdAuto.lt-lg], [gdAuto.lt-xl],\n [gdAuto.gt-xs], [gdAuto.gt-sm], [gdAuto.gt-md], [gdAuto.gt-lg]\n","inputs":["gdAuto","gdAuto.xs","gdAuto.sm","gdAuto.md","gdAuto.lg","gdAuto.xl","gdAuto.lt-sm","gdAuto.lt-md","gdAuto.lt-lg","gdAuto.lt-xl","gdAuto.gt-xs","gdAuto.gt-sm","gdAuto.gt-md","gdAuto.gt-lg"]}]}],"members":{}},"ɵs2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":44},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵt2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":41},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":31,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":28,"character":36},{"__symbolic":"reference","name":"ɵs2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":32,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":33,"character":33}]}]}},"ɵu2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵt2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [gdColumn],\n [gdColumn.xs], [gdColumn.sm], [gdColumn.md], [gdColumn.lg], [gdColumn.xl],\n [gdColumn.lt-sm], [gdColumn.lt-md], [gdColumn.lt-lg], [gdColumn.lt-xl],\n [gdColumn.gt-xs], [gdColumn.gt-sm], [gdColumn.gt-md], [gdColumn.gt-lg]\n","inputs":["gdColumn","gdColumn.xs","gdColumn.sm","gdColumn.md","gdColumn.lg","gdColumn.xl","gdColumn.lt-sm","gdColumn.lt-md","gdColumn.lt-lg","gdColumn.lt-xl","gdColumn.gt-xs","gdColumn.gt-sm","gdColumn.gt-md","gdColumn.gt-lg"]}]}],"members":{}},"ɵv2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":45},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵw2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":46,"character":42},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":57,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":54,"character":36},{"__symbolic":"reference","name":"ɵv2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":58,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":59,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵx2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵw2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":97,"character":1},"arguments":[{"selector":"\n [gdColumns],\n [gdColumns.xs], [gdColumns.sm], [gdColumns.md], [gdColumns.lg], [gdColumns.xl],\n [gdColumns.lt-sm], [gdColumns.lt-md], [gdColumns.lt-lg], [gdColumns.lt-xl],\n [gdColumns.gt-xs], [gdColumns.gt-sm], [gdColumns.gt-md], [gdColumns.gt-lg]\n","inputs":["gdColumns","gdColumns.xs","gdColumns.sm","gdColumns.md","gdColumns.lg","gdColumns.xl","gdColumns.lt-sm","gdColumns.lt-md","gdColumns.lt-lg","gdColumns.lt-xl","gdColumns.gt-xs","gdColumns.gt-sm","gdColumns.gt-md","gdColumns.gt-lg"]}]}],"members":{}},"ɵy2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":24,"character":41},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵz2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":33,"character":38},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":45,"character":15}}],null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":41,"character":31},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":42,"character":36},{"__symbolic":"reference","name":"ɵy2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":46,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵba2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵz2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":84,"character":1},"arguments":[{"selector":"\n [gdGap],\n [gdGap.xs], [gdGap.sm], [gdGap.md], [gdGap.lg], [gdGap.xl],\n [gdGap.lt-sm], [gdGap.lt-md], [gdGap.lt-lg], [gdGap.lt-xl],\n [gdGap.gt-xs], [gdGap.gt-sm], [gdGap.gt-md], [gdGap.gt-lg]\n","inputs":["gdGap","gdGap.xs","gdGap.sm","gdGap.md","gdGap.lg","gdGap.xl","gdGap.lt-sm","gdGap.lt-md","gdGap.lt-lg","gdGap.lt-xl","gdGap.gt-xs","gdGap.gt-sm","gdGap.gt-md","gdGap.gt-lg"]}]}],"members":{}},"ɵbb2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":19,"character":41},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵbc2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":25,"character":38},"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":31,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":28,"character":36},{"__symbolic":"reference","name":"ɵbb2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":32,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":33,"character":33}]}]}},"ɵbd2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵbc2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"\n [gdRow],\n [gdRow.xs], [gdRow.sm], [gdRow.md], [gdRow.lg], [gdRow.xl],\n [gdRow.lt-sm], [gdRow.lt-md], [gdRow.lt-lg], [gdRow.lt-xl],\n [gdRow.gt-xs], [gdRow.gt-sm], [gdRow.gt-md], [gdRow.gt-lg]\n","inputs":["gdRow","gdRow.xs","gdRow.sm","gdRow.md","gdRow.lg","gdRow.xl","gdRow.lt-sm","gdRow.lt-md","gdRow.lt-lg","gdRow.lt-xl","gdRow.gt-xs","gdRow.gt-sm","gdRow.gt-md","gdRow.gt-lg"]}]}],"members":{}},"ɵbe2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleBuilder","line":25,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":24,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"buildStyles":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}},"ɵbf2":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BaseDirective2","line":46,"character":39},"members":{"inline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3},"arguments":["gdInline"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":57,"character":15}}],null,null],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":54,"character":36},{"__symbolic":"reference","name":"ɵbe2"},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StyleUtils","line":58,"character":32},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MediaMarshaller","line":59,"character":33}]}],"updateWithValue":[{"__symbolic":"method"}]}},"ɵbg2":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"ɵbf2"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":97,"character":1},"arguments":[{"selector":"\n [gdRows],\n [gdRows.xs], [gdRows.sm], [gdRows.md], [gdRows.lg], [gdRows.xl],\n [gdRows.lt-sm], [gdRows.lt-md], [gdRows.lt-lg], [gdRows.lt-xl],\n [gdRows.gt-xs], [gdRows.gt-sm], [gdRows.gt-md], [gdRows.gt-lg]\n","inputs":["gdRows","gdRows.xs","gdRows.sm","gdRows.md","gdRows.lg","gdRows.xl","gdRows.lt-sm","gdRows.lt-md","gdRows.lt-lg","gdRows.lt-xl","gdRows.gt-xs","gdRows.gt-sm","gdRows.gt-md","gdRows.gt-lg"]}]}],"members":{}}},"origins":{"GridModule":"./module","ɵa2":"./grid-align/grid-align","ɵb2":"./grid-align/grid-align","ɵc2":"./grid-align/grid-align","ɵd2":"./align-columns/align-columns","ɵe2":"./align-columns/align-columns","ɵf2":"./align-columns/align-columns","ɵg2":"./align-rows/align-rows","ɵh2":"./align-rows/align-rows","ɵi2":"./align-rows/align-rows","ɵj2":"./area/area","ɵk2":"./area/area","ɵl2":"./area/area","ɵm2":"./areas/areas","ɵn2":"./areas/areas","ɵo2":"./areas/areas","ɵp2":"./auto/auto","ɵq2":"./auto/auto","ɵr2":"./auto/auto","ɵs2":"./column/column","ɵt2":"./column/column","ɵu2":"./column/column","ɵv2":"./columns/columns","ɵw2":"./columns/columns","ɵx2":"./columns/columns","ɵy2":"./gap/gap","ɵz2":"./gap/gap","ɵba2":"./gap/gap","ɵbb2":"./row/row","ɵbc2":"./row/row","ɵbd2":"./row/row","ɵbe2":"./rows/rows","ɵbf2":"./rows/rows","ɵbg2":"./rows/rows"},"importAs":"@angular/flex-layout/grid"} \ No newline at end of file diff --git a/typings/index.metadata.json b/typings/index.metadata.json index 2de985fd3..3c3ad688e 100644 --- a/typings/index.metadata.json +++ b/typings/index.metadata.json @@ -1 +1 @@ -{"__symbolic":"module","version":4,"exports":[{"from":"@angular/flex-layout/grid"}],"metadata":{"VERSION":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Version","line":11,"character":27},"arguments":["7.0.0-beta.22"]},"FlexLayoutModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":32,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout/flex","name":"FlexModule","line":33,"character":12},{"__symbolic":"reference","module":"@angular/flex-layout/extended","name":"ExtendedModule","line":33,"character":24},{"__symbolic":"reference","module":"@angular/flex-layout/grid","name":"GridModule","line":33,"character":40}],"exports":[{"__symbolic":"reference","module":"@angular/flex-layout/flex","name":"FlexModule","line":34,"character":12},{"__symbolic":"reference","module":"@angular/flex-layout/extended","name":"ExtendedModule","line":34,"character":24},{"__symbolic":"reference","module":"@angular/flex-layout/grid","name":"GridModule","line":34,"character":40}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":58,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":58,"character":27},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":58,"character":34}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":59,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":59,"character":22}]}]],"parameters":[{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"Object"}]}]},"statics":{"withConfig":{"__symbolic":"function","parameters":["configOptions","breakpoints"],"defaults":[null,[]],"value":{"ngModule":{"__symbolic":"reference","name":"FlexLayoutModule"},"providers":{"__symbolic":"if","condition":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"configOptions"},"member":"serverLoaded"},"thenExpression":[{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":48,"character":20},"useValue":{"__symbolic":"reference","name":"configOptions"}},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BREAKPOINT","line":49,"character":20},"useValue":{"__symbolic":"reference","name":"breakpoints"},"multi":true},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":50,"character":20},"useValue":true}],"elseExpression":[{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":52,"character":20},"useValue":{"__symbolic":"reference","name":"configOptions"}},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BREAKPOINT","line":53,"character":20},"useValue":{"__symbolic":"reference","name":"breakpoints"},"multi":true}]}}}}}},"origins":{"VERSION":"./version","FlexLayoutModule":"./module"},"importAs":"@angular/flex-layout"} \ No newline at end of file +{"__symbolic":"module","version":4,"exports":[{"from":"@angular/flex-layout/core"},{"from":"@angular/flex-layout/extended"},{"from":"@angular/flex-layout/flex"},{"from":"@angular/flex-layout/grid"}],"metadata":{"VERSION":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"Version","line":11,"character":27},"arguments":["8.0.0-beta.26"]},"FlexLayoutModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":34,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout/flex","name":"FlexModule","line":35,"character":12},{"__symbolic":"reference","module":"@angular/flex-layout/extended","name":"ExtendedModule","line":35,"character":24},{"__symbolic":"reference","module":"@angular/flex-layout/grid","name":"GridModule","line":35,"character":40}],"exports":[{"__symbolic":"reference","module":"@angular/flex-layout/flex","name":"FlexModule","line":36,"character":12},{"__symbolic":"reference","module":"@angular/flex-layout/extended","name":"ExtendedModule","line":36,"character":24},{"__symbolic":"reference","module":"@angular/flex-layout/grid","name":"GridModule","line":36,"character":40}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":60,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":60,"character":27},"arguments":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":60,"character":34}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":61,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":61,"character":22}]}]],"parameters":[{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"Object"}]}]},"statics":{"withConfig":{"__symbolic":"function","parameters":["configOptions","breakpoints"],"defaults":[null,[]],"value":{"ngModule":{"__symbolic":"reference","name":"FlexLayoutModule"},"providers":{"__symbolic":"if","condition":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"configOptions"},"member":"serverLoaded"},"thenExpression":[{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":50,"character":20},"useValue":{}},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BREAKPOINT","line":51,"character":20},"useValue":{"__symbolic":"reference","name":"breakpoints"},"multi":true},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":52,"character":20},"useValue":true}],"elseExpression":[{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":54,"character":20},"useValue":{}},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BREAKPOINT","line":55,"character":20},"useValue":{"__symbolic":"reference","name":"breakpoints"},"multi":true}]}}}}}},"origins":{"VERSION":"./version","FlexLayoutModule":"./module"},"importAs":"@angular/flex-layout"} \ No newline at end of file diff --git a/typings/server/index.d.ts b/typings/server/index.d.ts index e5daacf63..bd0294737 100644 --- a/typings/server/index.d.ts +++ b/typings/server/index.d.ts @@ -2,3 +2,4 @@ * Generated bundle index. Do not edit. */ export * from './public-api'; +export { ServerMatchMedia as ɵa1 } from './server-match-media'; diff --git a/typings/server/index.metadata.json b/typings/server/index.metadata.json index 85adeb02e..5b87e7b15 100644 --- a/typings/server/index.metadata.json +++ b/typings/server/index.metadata.json @@ -1 +1 @@ -{"__symbolic":"module","version":4,"metadata":{"FlexLayoutServerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"providers":[{"__symbolic":"reference","name":"SERVER_PROVIDERS"}]}]}],"members":{}},"generateStaticFlexLayoutStyles":{"__symbolic":"function"},"FLEX_SSR_SERIALIZER_FACTORY":{"__symbolic":"function","parameters":["serverSheet","matchMedia","_document","breakpoints"],"value":{"__symbolic":"error","message":"Lambda not supported","line":67,"character":9,"module":"./server-provider"}},"SERVER_PROVIDERS":[{"provide":{"__symbolic":"reference","module":"@angular/platform-server","name":"BEFORE_APP_SERIALIZED","line":83,"character":41},"useFactory":{"__symbolic":"reference","name":"FLEX_SSR_SERIALIZER_FACTORY"},"deps":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StylesheetMap","line":86,"character":6},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MatchMedia","line":87,"character":6},{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":88,"character":6},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BREAKPOINTS","line":89,"character":6}],"multi":true},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":94,"character":13},"useValue":true},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"MatchMedia","line":98,"character":13},"useClass":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"ServerMatchMedia","line":99,"character":14}}],"StyleSheet":{"__symbolic":"interface"},"ClassMap":{"__symbolic":"interface"}},"origins":{"FlexLayoutServerModule":"./module","generateStaticFlexLayoutStyles":"./server-provider","FLEX_SSR_SERIALIZER_FACTORY":"./server-provider","SERVER_PROVIDERS":"./server-provider","StyleSheet":"./server-provider","ClassMap":"./server-provider"},"importAs":"@angular/flex-layout/server"} \ No newline at end of file +{"__symbolic":"module","version":4,"metadata":{"FlexLayoutServerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"providers":[{"__symbolic":"reference","name":"SERVER_PROVIDERS"}]}]}],"members":{}},"generateStaticFlexLayoutStyles":{"__symbolic":"function"},"FLEX_SSR_SERIALIZER_FACTORY":{"__symbolic":"function","parameters":["serverSheet","mediaController","_document","breakpoints","layoutConfig"],"value":{"__symbolic":"error","message":"Lambda not supported","line":84,"character":9,"module":"./server-provider"}},"SERVER_PROVIDERS":[{"provide":{"__symbolic":"reference","module":"@angular/platform-server","name":"BEFORE_APP_SERIALIZED","line":101,"character":41},"useFactory":{"__symbolic":"reference","name":"FLEX_SSR_SERIALIZER_FACTORY"},"deps":[{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"StylesheetMap","line":104,"character":6},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"ɵMatchMedia","line":105,"character":6},{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":106,"character":6},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"BREAKPOINTS","line":107,"character":6},{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"LAYOUT_CONFIG","line":108,"character":6}],"multi":true},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"SERVER_TOKEN","line":113,"character":13},"useValue":true},{"provide":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"ɵMatchMedia","line":117,"character":13},"useClass":{"__symbolic":"reference","name":"ɵa1"}}],"StyleSheet":{"__symbolic":"interface"},"ClassMap":{"__symbolic":"interface"},"ɵa1":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/flex-layout/core","name":"ɵMatchMedia","line":112,"character":38},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":111,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":114,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":114,"character":22}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":115,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/common","name":"DOCUMENT","line":115,"character":22}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":113,"character":31},{"__symbolic":"reference","name":"Object"},{"__symbolic":"reference","name":"any"}]}],"activateBreakpoint":[{"__symbolic":"method"}],"deactivateBreakpoint":[{"__symbolic":"method"}],"buildMQL":[{"__symbolic":"method"}]}}},"origins":{"FlexLayoutServerModule":"./module","generateStaticFlexLayoutStyles":"./server-provider","FLEX_SSR_SERIALIZER_FACTORY":"./server-provider","SERVER_PROVIDERS":"./server-provider","StyleSheet":"./server-provider","ClassMap":"./server-provider","ɵa1":"./server-match-media"},"importAs":"@angular/flex-layout/server"} \ No newline at end of file diff --git a/typings/core/match-media/server-match-media.d.ts b/typings/server/server-match-media.d.ts similarity index 88% rename from typings/core/match-media/server-match-media.d.ts rename to typings/server/server-match-media.d.ts index 1d5bae3f7..ddd460c4f 100644 --- a/typings/core/match-media/server-match-media.d.ts +++ b/typings/server/server-match-media.d.ts @@ -1,6 +1,5 @@ import { NgZone } from '@angular/core'; -import { BreakPoint } from '../breakpoints/break-point'; -import { MatchMedia } from './match-media'; +import { BreakPoint, ɵMatchMedia as MatchMedia } from '@angular/flex-layout/core'; /** * Special server-only class to simulate a MediaQueryList and * - supports manual activation to simulate mediaQuery matching @@ -25,7 +24,7 @@ export declare class ServerMediaQueryList implements MediaQueryList { /** Add a listener to our internal list to activate later */ addListener(listener: MediaQueryListListener): void; /** Don't need to remove listeners in the server environment */ - removeListener(_: EventListenerOrEventListenerObject | null): void; + removeListener(_: MediaQueryListListener | null): void; addEventListener(_: K, __: (this: MediaQueryList, ev: MediaQueryListEventMap[K]) => any, ___?: boolean | AddEventListenerOptions): void; removeEventListener(_: K, __: (this: MediaQueryList, ev: MediaQueryListEventMap[K]) => any, ___?: boolean | EventListenerOptions): void; dispatchEvent(_: Event): boolean; @@ -41,7 +40,6 @@ export declare class ServerMatchMedia extends MatchMedia { protected _zone: NgZone; protected _platformId: Object; protected _document: any; - protected _registry: Map; constructor(_zone: NgZone, _platformId: Object, _document: any); /** Activate the specified breakpoint if we're on the server, no-op otherwise */ activateBreakpoint(bp: BreakPoint): void; @@ -51,7 +49,7 @@ export declare class ServerMatchMedia extends MatchMedia { * Call window.matchMedia() to build a MediaQueryList; which * supports 0..n listeners for activation/deactivation */ - protected _buildMQL(query: string): ServerMediaQueryList; + protected buildMQL(query: string): ServerMediaQueryList; } declare type MediaQueryListListener = ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null; export {}; diff --git a/typings/server/server-provider.d.ts b/typings/server/server-provider.d.ts index 003616d09..4e25f7838 100644 --- a/typings/server/server-provider.d.ts +++ b/typings/server/server-provider.d.ts @@ -6,28 +6,30 @@ * found in the LICENSE file at https://angular.io/license */ import { InjectionToken } from '@angular/core'; -import { BreakPoint, MatchMedia, StylesheetMap, ServerMatchMedia } from '@angular/flex-layout/core'; +import { BreakPoint, ɵMatchMedia as MatchMedia, StylesheetMap, LayoutConfigOptions } from '@angular/flex-layout/core'; +import { ServerMatchMedia } from './server-match-media'; /** * Activate all of the registered breakpoints in sequence, and then * retrieve the associated stylings from the virtual stylesheet * @param serverSheet the virtual stylesheet that stores styles for each * element - * @param matchMedia the service to activate/deactivate breakpoints + * @param mediaController the MatchMedia service to activate/deactivate breakpoints * @param breakpoints the registered breakpoints to activate/deactivate + * @param layoutConfig the library config, and specifically the breakpoints to activate */ -export declare function generateStaticFlexLayoutStyles(serverSheet: StylesheetMap, matchMedia: MatchMedia, breakpoints: BreakPoint[]): string; +export declare function generateStaticFlexLayoutStyles(serverSheet: StylesheetMap, mediaController: ServerMatchMedia, breakpoints: BreakPoint[], layoutConfig: LayoutConfigOptions): string; /** * Create a style tag populated with the dynamic stylings from Flex * components and attach it to the head of the DOM */ -export declare function FLEX_SSR_SERIALIZER_FACTORY(serverSheet: StylesheetMap, matchMedia: MatchMedia, _document: Document, breakpoints: BreakPoint[]): () => void; +export declare function FLEX_SSR_SERIALIZER_FACTORY(serverSheet: StylesheetMap, mediaController: ServerMatchMedia, _document: Document, breakpoints: BreakPoint[], layoutConfig: LayoutConfigOptions): () => void; /** * Provider to set static styles on the server */ export declare const SERVER_PROVIDERS: ({ provide: InjectionToken<() => void>; useFactory: typeof FLEX_SSR_SERIALIZER_FACTORY; - deps: (typeof StylesheetMap | typeof MatchMedia | InjectionToken)[]; + deps: (typeof MatchMedia | InjectionToken | typeof StylesheetMap)[]; multi: boolean; useValue?: undefined; useClass?: undefined;