{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { Injectable, Directive, Inject, Input, NgModule } from '@angular/core';\nimport * as i2 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport * as i1 from '@angular/flex-layout/core';\nimport { StyleBuilder, BaseDirective2, LAYOUT_CONFIG, validateBasis, CoreModule } from '@angular/flex-layout/core';\nimport { buildLayoutCSS, LAYOUT_VALUES, isFlowHorizontal, extendObject } from '@angular/flex-layout/_private-utils';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this 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\nclass LayoutStyleBuilder extends StyleBuilder {\n  buildStyles(input) {\n    return buildLayoutCSS(input);\n  }\n\n}\n\nLayoutStyleBuilder.ɵfac = /* @__PURE__ */function () {\n  let ɵLayoutStyleBuilder_BaseFactory;\n  return function LayoutStyleBuilder_Factory(t) {\n    return (ɵLayoutStyleBuilder_BaseFactory || (ɵLayoutStyleBuilder_BaseFactory = i0.ɵɵgetInheritedFactory(LayoutStyleBuilder)))(t || LayoutStyleBuilder);\n  };\n}();\n\nLayoutStyleBuilder.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: LayoutStyleBuilder,\n  factory: LayoutStyleBuilder.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(LayoutStyleBuilder, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], null, null);\n})();\n\nconst inputs$6 = ['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'];\nconst selector$6 = `\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 * '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 */\n\nclass LayoutDirective extends BaseDirective2 {\n  constructor(elRef, styleUtils, styleBuilder, marshal) {\n    super(elRef, styleBuilder, styleUtils, marshal);\n    this.DIRECTIVE_KEY = 'layout';\n    this.styleCache = layoutCache;\n    this.init();\n  }\n\n}\n\nLayoutDirective.ɵfac = function LayoutDirective_Factory(t) {\n  return new (t || LayoutDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.StyleUtils), i0.ɵɵdirectiveInject(LayoutStyleBuilder), i0.ɵɵdirectiveInject(i1.MediaMarshaller));\n};\n\nLayoutDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: LayoutDirective,\n  features: [i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(LayoutDirective, [{\n    type: Directive\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i1.StyleUtils\n    }, {\n      type: LayoutStyleBuilder\n    }, {\n      type: i1.MediaMarshaller\n    }];\n  }, null);\n})();\n\nclass DefaultLayoutDirective extends LayoutDirective {\n  constructor() {\n    super(...arguments);\n    this.inputs = inputs$6;\n  }\n\n}\n\nDefaultLayoutDirective.ɵfac = /* @__PURE__ */function () {\n  let ɵDefaultLayoutDirective_BaseFactory;\n  return function DefaultLayoutDirective_Factory(t) {\n    return (ɵDefaultLayoutDirective_BaseFactory || (ɵDefaultLayoutDirective_BaseFactory = i0.ɵɵgetInheritedFactory(DefaultLayoutDirective)))(t || DefaultLayoutDirective);\n  };\n}();\n\nDefaultLayoutDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: DefaultLayoutDirective,\n  selectors: [[\"\", \"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\", \"\"]],\n  inputs: {\n    fxLayout: \"fxLayout\",\n    \"fxLayout.xs\": \"fxLayout.xs\",\n    \"fxLayout.sm\": \"fxLayout.sm\",\n    \"fxLayout.md\": \"fxLayout.md\",\n    \"fxLayout.lg\": \"fxLayout.lg\",\n    \"fxLayout.xl\": \"fxLayout.xl\",\n    \"fxLayout.lt-sm\": \"fxLayout.lt-sm\",\n    \"fxLayout.lt-md\": \"fxLayout.lt-md\",\n    \"fxLayout.lt-lg\": \"fxLayout.lt-lg\",\n    \"fxLayout.lt-xl\": \"fxLayout.lt-xl\",\n    \"fxLayout.gt-xs\": \"fxLayout.gt-xs\",\n    \"fxLayout.gt-sm\": \"fxLayout.gt-sm\",\n    \"fxLayout.gt-md\": \"fxLayout.gt-md\",\n    \"fxLayout.gt-lg\": \"fxLayout.gt-lg\"\n  },\n  features: [i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DefaultLayoutDirective, [{\n    type: Directive,\n    args: [{\n      selector: selector$6,\n      inputs: inputs$6\n    }]\n  }], null, null);\n})();\n\nconst layoutCache = 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\nconst CLEAR_MARGIN_CSS = {\n  'margin-left': null,\n  'margin-right': null,\n  'margin-top': null,\n  'margin-bottom': null\n};\n\nclass LayoutGapStyleBuilder extends StyleBuilder {\n  constructor(_styler) {\n    super();\n    this._styler = _styler;\n  }\n\n  buildStyles(gapValue, parent) {\n    if (gapValue.endsWith(GRID_SPECIFIER)) {\n      gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER)); // Add the margin to the host element\n\n      return buildGridMargin(gapValue, parent.directionality);\n    } else {\n      return {};\n    }\n  }\n\n  sideEffect(gapValue, _styles, parent) {\n    const items = parent.items;\n\n    if (gapValue.endsWith(GRID_SPECIFIER)) {\n      gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER)); // For each `element` children, set the padding\n\n      const paddingStyles = buildGridPadding(gapValue, parent.directionality);\n\n      this._styler.applyStyleToElements(paddingStyles, parent.items);\n    } else {\n      const lastItem = items.pop(); // For each `element` children EXCEPT the last,\n      // set the margin right/bottom styles...\n\n      const gapCss = buildGapCSS(gapValue, parent);\n\n      this._styler.applyStyleToElements(gapCss, items); // Clear all gaps for all visible elements\n\n\n      this._styler.applyStyleToElements(CLEAR_MARGIN_CSS, [lastItem]);\n    }\n  }\n\n}\n\nLayoutGapStyleBuilder.ɵfac = function LayoutGapStyleBuilder_Factory(t) {\n  return new (t || LayoutGapStyleBuilder)(i0.ɵɵinject(i1.StyleUtils));\n};\n\nLayoutGapStyleBuilder.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: LayoutGapStyleBuilder,\n  factory: LayoutGapStyleBuilder.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(LayoutGapStyleBuilder, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: i1.StyleUtils\n    }];\n  }, null);\n})();\n\nconst inputs$5 = ['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'];\nconst selector$5 = `\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 * 'layout-padding' styling directive\n *  Defines padding of child elements in a layout container\n */\n\nclass LayoutGapDirective extends BaseDirective2 {\n  constructor(elRef, zone, directionality, styleUtils, styleBuilder, marshal) {\n    super(elRef, styleBuilder, styleUtils, marshal);\n    this.zone = zone;\n    this.directionality = directionality;\n    this.styleUtils = styleUtils;\n    this.layout = 'row'; // default flex-direction\n\n    this.DIRECTIVE_KEY = 'layout-gap';\n    this.observerSubject = new Subject();\n    const extraTriggers = [this.directionality.change, this.observerSubject.asObservable()];\n    this.init(extraTriggers);\n    this.marshal.trackValue(this.nativeElement, 'layout').pipe(takeUntil(this.destroySubject)).subscribe(this.onLayoutChange.bind(this));\n  }\n  /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */\n\n\n  get childrenNodes() {\n    const obj = this.nativeElement.children;\n    const buffer = []; // iterate backwards ensuring that length is an UInt32\n\n    for (let i = obj.length; i--;) {\n      buffer[i] = obj[i];\n    }\n\n    return buffer;\n  } // *********************************************\n  // Lifecycle Methods\n  // *********************************************\n\n\n  ngAfterContentInit() {\n    this.buildChildObservable();\n    this.triggerUpdate();\n  }\n\n  ngOnDestroy() {\n    super.ngOnDestroy();\n\n    if (this.observer) {\n      this.observer.disconnect();\n    }\n  } // *********************************************\n  // Protected methods\n  // *********************************************\n\n  /**\n   * Cache the parent container 'flex-direction' and update the 'margin' styles\n   */\n\n\n  onLayoutChange(matcher) {\n    const layout = matcher.value; // Make sure to filter out 'wrap' option\n\n    const direction = layout.split(' ');\n    this.layout = direction[0];\n\n    if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n      this.layout = 'row';\n    }\n\n    this.triggerUpdate();\n  }\n  /**\n   *\n   */\n\n\n  updateWithValue(value) {\n    // Gather all non-hidden Element nodes\n    const items = this.childrenNodes.filter(el => el.nodeType === 1 && this.willDisplay(el)).sort((a, b) => {\n      const orderA = +this.styler.lookupStyle(a, 'order');\n      const orderB = +this.styler.lookupStyle(b, 'order');\n\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\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\n      this.addStyles(value, {\n        directionality,\n        items,\n        layout\n      });\n    }\n  }\n  /** We need to override clearStyles because in most cases mru isn't populated */\n\n\n  clearStyles() {\n    const gridMode = Object.keys(this.mru).length > 0;\n    const childrenStyle = gridMode ? 'padding' : getMarginType(this.directionality.value, this.layout); // If there are styles on the parent remove them\n\n    if (gridMode) {\n      super.clearStyles();\n    } // Then remove the children styles too\n\n\n    this.styleUtils.applyStyleToElements({\n      [childrenStyle]: ''\n    }, this.childrenNodes);\n  }\n  /** Determine if an element will show or hide based on current activation */\n\n\n  willDisplay(source) {\n    const value = this.marshal.getValue(source, 'show-hide');\n    return value === true || value === undefined && this.styleUtils.lookupStyle(source, 'display') !== 'none';\n  }\n\n  buildChildObservable() {\n    this.zone.runOutsideAngular(() => {\n      if (typeof MutationObserver !== 'undefined') {\n        this.observer = new MutationObserver(mutations => {\n          const validatedChanges = it => {\n            return it.addedNodes && it.addedNodes.length > 0 || it.removedNodes && it.removedNodes.length > 0;\n          }; // update gap styles only for child 'added' or 'removed' events\n\n\n          if (mutations.some(validatedChanges)) {\n            this.observerSubject.next();\n          }\n        });\n        this.observer.observe(this.nativeElement, {\n          childList: true\n        });\n      }\n    });\n  }\n\n}\n\nLayoutGapDirective.ɵfac = function LayoutGapDirective_Factory(t) {\n  return new (t || LayoutGapDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i2.Directionality), i0.ɵɵdirectiveInject(i1.StyleUtils), i0.ɵɵdirectiveInject(LayoutGapStyleBuilder), i0.ɵɵdirectiveInject(i1.MediaMarshaller));\n};\n\nLayoutGapDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: LayoutGapDirective,\n  features: [i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(LayoutGapDirective, [{\n    type: Directive\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i0.NgZone\n    }, {\n      type: i2.Directionality\n    }, {\n      type: i1.StyleUtils\n    }, {\n      type: LayoutGapStyleBuilder\n    }, {\n      type: i1.MediaMarshaller\n    }];\n  }, null);\n})();\n\nclass DefaultLayoutGapDirective extends LayoutGapDirective {\n  constructor() {\n    super(...arguments);\n    this.inputs = inputs$5;\n  }\n\n}\n\nDefaultLayoutGapDirective.ɵfac = /* @__PURE__ */function () {\n  let ɵDefaultLayoutGapDirective_BaseFactory;\n  return function DefaultLayoutGapDirective_Factory(t) {\n    return (ɵDefaultLayoutGapDirective_BaseFactory || (ɵDefaultLayoutGapDirective_BaseFactory = i0.ɵɵgetInheritedFactory(DefaultLayoutGapDirective)))(t || DefaultLayoutGapDirective);\n  };\n}();\n\nDefaultLayoutGapDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: DefaultLayoutGapDirective,\n  selectors: [[\"\", \"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\", \"\"]],\n  inputs: {\n    fxLayoutGap: \"fxLayoutGap\",\n    \"fxLayoutGap.xs\": \"fxLayoutGap.xs\",\n    \"fxLayoutGap.sm\": \"fxLayoutGap.sm\",\n    \"fxLayoutGap.md\": \"fxLayoutGap.md\",\n    \"fxLayoutGap.lg\": \"fxLayoutGap.lg\",\n    \"fxLayoutGap.xl\": \"fxLayoutGap.xl\",\n    \"fxLayoutGap.lt-sm\": \"fxLayoutGap.lt-sm\",\n    \"fxLayoutGap.lt-md\": \"fxLayoutGap.lt-md\",\n    \"fxLayoutGap.lt-lg\": \"fxLayoutGap.lt-lg\",\n    \"fxLayoutGap.lt-xl\": \"fxLayoutGap.lt-xl\",\n    \"fxLayoutGap.gt-xs\": \"fxLayoutGap.gt-xs\",\n    \"fxLayoutGap.gt-sm\": \"fxLayoutGap.gt-sm\",\n    \"fxLayoutGap.gt-md\": \"fxLayoutGap.gt-md\",\n    \"fxLayoutGap.gt-lg\": \"fxLayoutGap.gt-lg\"\n  },\n  features: [i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DefaultLayoutGapDirective, [{\n    type: Directive,\n    args: [{\n      selector: selector$5,\n      inputs: inputs$5\n    }]\n  }], null, null);\n})();\n\nconst layoutGapCacheRowRtl = new Map();\nconst layoutGapCacheColumnRtl = new Map();\nconst layoutGapCacheRowLtr = new Map();\nconst layoutGapCacheColumnLtr = new Map();\nconst GRID_SPECIFIER = ' grid';\n\nfunction buildGridPadding(value, directionality) {\n  const [between, below] = value.split(' ');\n  const bottom = below || between;\n  let paddingRight = '0px',\n      paddingBottom = bottom,\n      paddingLeft = '0px';\n\n  if (directionality === 'rtl') {\n    paddingLeft = between;\n  } else {\n    paddingRight = between;\n  }\n\n  return {\n    'padding': `0px ${paddingRight} ${paddingBottom} ${paddingLeft}`\n  };\n}\n\nfunction buildGridMargin(value, directionality) {\n  const [between, below] = value.split(' ');\n  const bottom = below || between;\n\n  const minus = str => `-${str}`;\n\n  let marginRight = '0px',\n      marginBottom = minus(bottom),\n      marginLeft = '0px';\n\n  if (directionality === 'rtl') {\n    marginLeft = minus(between);\n  } else {\n    marginRight = minus(between);\n  }\n\n  return {\n    'margin': `0px ${marginRight} ${marginBottom} ${marginLeft}`\n  };\n}\n\nfunction getMarginType(directionality, layout) {\n  switch (layout) {\n    case 'column':\n      return 'margin-bottom';\n\n    case 'column-reverse':\n      return 'margin-top';\n\n    case 'row':\n      return directionality === 'rtl' ? 'margin-left' : 'margin-right';\n\n    case 'row-reverse':\n      return directionality === 'rtl' ? 'margin-right' : 'margin-left';\n\n    default:\n      return directionality === 'rtl' ? 'margin-left' : 'margin-right';\n  }\n}\n\nfunction buildGapCSS(gapValue, parent) {\n  const key = getMarginType(parent.directionality, parent.layout);\n  const margins = Object.assign({}, 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\nclass FlexStyleBuilder extends StyleBuilder {\n  constructor(layoutConfig) {\n    super();\n    this.layoutConfig = layoutConfig;\n  }\n\n  buildStyles(input, parent) {\n    let [grow, shrink, ...basisParts] = input.split(' ');\n    let basis = basisParts.join(' '); // The flex-direction of this element's flex container. Defaults to 'row'.\n\n    const direction = parent.direction.indexOf('column') > -1 ? 'column' : 'row';\n    const max = isFlowHorizontal(direction) ? 'max-width' : 'max-height';\n    const min = isFlowHorizontal(direction) ? 'min-width' : 'min-height';\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 || String(basis).indexOf('em') > -1 || String(basis).indexOf('vw') > -1 || String(basis).indexOf('vh') > -1;\n    let isValue = hasCalc || hasUnits;\n    grow = grow == '0' ? 0 : grow;\n    shrink = shrink == '0' ? 0 : shrink; // 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\n    const isFixed = !grow && !shrink;\n    let css = {}; // 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    // Use `null` to clear existing styles.\n\n    const clearStyles = {\n      'max-width': null,\n      'max-height': null,\n      'min-width': null,\n      'min-height': null\n    };\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\n      case 'initial': // default\n\n      case 'nogrow':\n        grow = 0;\n        basis = 'auto';\n        break;\n\n      case 'grow':\n        basis = '100%';\n        break;\n\n      case 'noshrink':\n        shrink = 0;\n        basis = 'auto';\n        break;\n\n      case 'auto':\n        break;\n\n      case 'none':\n        grow = 0;\n        shrink = 0;\n        basis = 'auto';\n        break;\n\n      default:\n        // Defaults to percentage sizing unless `px` is explicitly set\n        if (!isValue && !isPercent && !isNaN(basis)) {\n          basis = basis + '%';\n        } // Fix for issue 280\n\n\n        if (basis === '0%') {\n          isValue = true;\n        }\n\n        if (basis === '0px') {\n          basis = '0%';\n        } // fix issue #5345\n\n\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    } // Fix for issues 277, 534, and 728\n\n\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    } // Fix for issue 528\n\n\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] ? hasCalc ? css[max] : `${grow} ${shrink} ${css[max]}` : hasCalc ? css[min] : `${grow} ${shrink} ${css[min]}`;\n      }\n    }\n\n    return extendObject(css, {\n      'box-sizing': 'border-box'\n    });\n  }\n\n}\n\nFlexStyleBuilder.ɵfac = function FlexStyleBuilder_Factory(t) {\n  return new (t || FlexStyleBuilder)(i0.ɵɵinject(LAYOUT_CONFIG));\n};\n\nFlexStyleBuilder.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: FlexStyleBuilder,\n  factory: FlexStyleBuilder.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FlexStyleBuilder, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [LAYOUT_CONFIG]\n      }]\n    }];\n  }, null);\n})();\n\nconst inputs$4 = ['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'];\nconst selector$4 = `\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 * 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 */\n\nclass FlexDirective extends BaseDirective2 {\n  constructor(elRef, styleUtils, layoutConfig, styleBuilder, marshal) {\n    super(elRef, styleBuilder, styleUtils, marshal);\n    this.layoutConfig = layoutConfig;\n    this.marshal = marshal;\n    this.DIRECTIVE_KEY = 'flex';\n    this.direction = undefined;\n    this.wrap = undefined;\n    this.flexGrow = '1';\n    this.flexShrink = '1';\n    this.init();\n  }\n\n  get shrink() {\n    return this.flexShrink;\n  }\n\n  set shrink(value) {\n    this.flexShrink = value || '1';\n    this.triggerReflow();\n  }\n\n  get grow() {\n    return this.flexGrow;\n  }\n\n  set grow(value) {\n    this.flexGrow = value || '1';\n    this.triggerReflow();\n  }\n\n  ngOnInit() {\n    if (this.parentElement) {\n      this.marshal.trackValue(this.parentElement, 'layout').pipe(takeUntil(this.destroySubject)).subscribe(this.onLayoutChange.bind(this));\n      this.marshal.trackValue(this.nativeElement, 'layout-align').pipe(takeUntil(this.destroySubject)).subscribe(this.triggerReflow.bind(this));\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\n\n  onLayoutChange(matcher) {\n    const layout = 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  /** Input to this is exclusively the basis input value */\n\n\n  updateWithValue(value) {\n    const addFlexToParent = this.layoutConfig.addFlexToParent !== false;\n\n    if (this.direction === undefined) {\n      this.direction = this.getFlexFlowDirection(this.parentElement, addFlexToParent);\n    }\n\n    if (this.wrap === undefined) {\n      this.wrap = this.hasWrap(this.parentElement);\n    }\n\n    const direction = this.direction;\n    const isHorizontal = direction.startsWith('row');\n    const hasWrap = this.wrap;\n\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\n    const basis = String(value).replace(';', '');\n    const parts = validateBasis(basis, this.flexGrow, this.flexShrink);\n    this.addStyles(parts.join(' '), {\n      direction,\n      hasWrap\n    });\n  }\n  /** Trigger a style reflow, usually based on a shrink/grow input event */\n\n\n  triggerReflow() {\n    const activatedValue = this.activatedValue;\n\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\nFlexDirective.ɵfac = function FlexDirective_Factory(t) {\n  return new (t || FlexDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.StyleUtils), i0.ɵɵdirectiveInject(LAYOUT_CONFIG), i0.ɵɵdirectiveInject(FlexStyleBuilder), i0.ɵɵdirectiveInject(i1.MediaMarshaller));\n};\n\nFlexDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: FlexDirective,\n  inputs: {\n    shrink: [\"fxShrink\", \"shrink\"],\n    grow: [\"fxGrow\", \"grow\"]\n  },\n  features: [i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FlexDirective, [{\n    type: Directive\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i1.StyleUtils\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [LAYOUT_CONFIG]\n      }]\n    }, {\n      type: FlexStyleBuilder\n    }, {\n      type: i1.MediaMarshaller\n    }];\n  }, {\n    shrink: [{\n      type: Input,\n      args: ['fxShrink']\n    }],\n    grow: [{\n      type: Input,\n      args: ['fxGrow']\n    }]\n  });\n})();\n\nclass DefaultFlexDirective extends FlexDirective {\n  constructor() {\n    super(...arguments);\n    this.inputs = inputs$4;\n  }\n\n}\n\nDefaultFlexDirective.ɵfac = /* @__PURE__ */function () {\n  let ɵDefaultFlexDirective_BaseFactory;\n  return function DefaultFlexDirective_Factory(t) {\n    return (ɵDefaultFlexDirective_BaseFactory || (ɵDefaultFlexDirective_BaseFactory = i0.ɵɵgetInheritedFactory(DefaultFlexDirective)))(t || DefaultFlexDirective);\n  };\n}();\n\nDefaultFlexDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: DefaultFlexDirective,\n  selectors: [[\"\", \"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\", \"\"]],\n  inputs: {\n    fxFlex: \"fxFlex\",\n    \"fxFlex.xs\": \"fxFlex.xs\",\n    \"fxFlex.sm\": \"fxFlex.sm\",\n    \"fxFlex.md\": \"fxFlex.md\",\n    \"fxFlex.lg\": \"fxFlex.lg\",\n    \"fxFlex.xl\": \"fxFlex.xl\",\n    \"fxFlex.lt-sm\": \"fxFlex.lt-sm\",\n    \"fxFlex.lt-md\": \"fxFlex.lt-md\",\n    \"fxFlex.lt-lg\": \"fxFlex.lt-lg\",\n    \"fxFlex.lt-xl\": \"fxFlex.lt-xl\",\n    \"fxFlex.gt-xs\": \"fxFlex.gt-xs\",\n    \"fxFlex.gt-sm\": \"fxFlex.gt-sm\",\n    \"fxFlex.gt-md\": \"fxFlex.gt-md\",\n    \"fxFlex.gt-lg\": \"fxFlex.gt-lg\"\n  },\n  features: [i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DefaultFlexDirective, [{\n    type: Directive,\n    args: [{\n      inputs: inputs$4,\n      selector: selector$4\n    }]\n  }], null, null);\n})();\n\nconst flexRowCache = new Map();\nconst flexColumnCache = new Map();\nconst flexRowWrapCache = new Map();\nconst flexColumnWrapCache = 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\nclass FlexOrderStyleBuilder extends StyleBuilder {\n  buildStyles(value) {\n    return {\n      order: value && parseInt(value, 10) || ''\n    };\n  }\n\n}\n\nFlexOrderStyleBuilder.ɵfac = /* @__PURE__ */function () {\n  let ɵFlexOrderStyleBuilder_BaseFactory;\n  return function FlexOrderStyleBuilder_Factory(t) {\n    return (ɵFlexOrderStyleBuilder_BaseFactory || (ɵFlexOrderStyleBuilder_BaseFactory = i0.ɵɵgetInheritedFactory(FlexOrderStyleBuilder)))(t || FlexOrderStyleBuilder);\n  };\n}();\n\nFlexOrderStyleBuilder.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: FlexOrderStyleBuilder,\n  factory: FlexOrderStyleBuilder.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FlexOrderStyleBuilder, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], null, null);\n})();\n\nconst inputs$3 = ['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'];\nconst selector$3 = `\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 * '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 */\n\nclass FlexOrderDirective extends BaseDirective2 {\n  constructor(elRef, styleUtils, styleBuilder, marshal) {\n    super(elRef, styleBuilder, styleUtils, marshal);\n    this.DIRECTIVE_KEY = 'flex-order';\n    this.styleCache = flexOrderCache;\n    this.init();\n  }\n\n}\n\nFlexOrderDirective.ɵfac = function FlexOrderDirective_Factory(t) {\n  return new (t || FlexOrderDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.StyleUtils), i0.ɵɵdirectiveInject(FlexOrderStyleBuilder), i0.ɵɵdirectiveInject(i1.MediaMarshaller));\n};\n\nFlexOrderDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: FlexOrderDirective,\n  features: [i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FlexOrderDirective, [{\n    type: Directive\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i1.StyleUtils\n    }, {\n      type: FlexOrderStyleBuilder\n    }, {\n      type: i1.MediaMarshaller\n    }];\n  }, null);\n})();\n\nconst flexOrderCache = new Map();\n\nclass DefaultFlexOrderDirective extends FlexOrderDirective {\n  constructor() {\n    super(...arguments);\n    this.inputs = inputs$3;\n  }\n\n}\n\nDefaultFlexOrderDirective.ɵfac = /* @__PURE__ */function () {\n  let ɵDefaultFlexOrderDirective_BaseFactory;\n  return function DefaultFlexOrderDirective_Factory(t) {\n    return (ɵDefaultFlexOrderDirective_BaseFactory || (ɵDefaultFlexOrderDirective_BaseFactory = i0.ɵɵgetInheritedFactory(DefaultFlexOrderDirective)))(t || DefaultFlexOrderDirective);\n  };\n}();\n\nDefaultFlexOrderDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: DefaultFlexOrderDirective,\n  selectors: [[\"\", \"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\", \"\"]],\n  inputs: {\n    fxFlexOrder: \"fxFlexOrder\",\n    \"fxFlexOrder.xs\": \"fxFlexOrder.xs\",\n    \"fxFlexOrder.sm\": \"fxFlexOrder.sm\",\n    \"fxFlexOrder.md\": \"fxFlexOrder.md\",\n    \"fxFlexOrder.lg\": \"fxFlexOrder.lg\",\n    \"fxFlexOrder.xl\": \"fxFlexOrder.xl\",\n    \"fxFlexOrder.lt-sm\": \"fxFlexOrder.lt-sm\",\n    \"fxFlexOrder.lt-md\": \"fxFlexOrder.lt-md\",\n    \"fxFlexOrder.lt-lg\": \"fxFlexOrder.lt-lg\",\n    \"fxFlexOrder.lt-xl\": \"fxFlexOrder.lt-xl\",\n    \"fxFlexOrder.gt-xs\": \"fxFlexOrder.gt-xs\",\n    \"fxFlexOrder.gt-sm\": \"fxFlexOrder.gt-sm\",\n    \"fxFlexOrder.gt-md\": \"fxFlexOrder.gt-md\",\n    \"fxFlexOrder.gt-lg\": \"fxFlexOrder.gt-lg\"\n  },\n  features: [i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DefaultFlexOrderDirective, [{\n    type: Directive,\n    args: [{\n      selector: selector$3,\n      inputs: inputs$3\n    }]\n  }], null, 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 */\n\n\nclass FlexOffsetStyleBuilder extends StyleBuilder {\n  buildStyles(offset, parent) {\n    if (offset === '') {\n      offset = '0';\n    }\n\n    const isPercent = String(offset).indexOf('%') > -1;\n    const isPx = String(offset).indexOf('px') > -1;\n\n    if (!isPx && !isPercent && !isNaN(+offset)) {\n      offset = offset + '%';\n    }\n\n    const horizontalLayoutKey = parent.isRtl ? 'margin-right' : 'margin-left';\n    const styles = isFlowHorizontal(parent.layout) ? {\n      [horizontalLayoutKey]: `${offset}`\n    } : {\n      'margin-top': `${offset}`\n    };\n    return styles;\n  }\n\n}\n\nFlexOffsetStyleBuilder.ɵfac = /* @__PURE__ */function () {\n  let ɵFlexOffsetStyleBuilder_BaseFactory;\n  return function FlexOffsetStyleBuilder_Factory(t) {\n    return (ɵFlexOffsetStyleBuilder_BaseFactory || (ɵFlexOffsetStyleBuilder_BaseFactory = i0.ɵɵgetInheritedFactory(FlexOffsetStyleBuilder)))(t || FlexOffsetStyleBuilder);\n  };\n}();\n\nFlexOffsetStyleBuilder.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: FlexOffsetStyleBuilder,\n  factory: FlexOffsetStyleBuilder.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FlexOffsetStyleBuilder, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], null, null);\n})();\n\nconst inputs$2 = ['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'];\nconst selector$2 = `\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 * 'flex-offset' flexbox styling directive\n * Configures the 'margin-left' of the element in a layout container\n */\n\nclass FlexOffsetDirective extends BaseDirective2 {\n  constructor(elRef, directionality, styleBuilder, marshal, styler) {\n    super(elRef, styleBuilder, styler, marshal);\n    this.directionality = directionality;\n    this.DIRECTIVE_KEY = 'flex-offset';\n    this.init([this.directionality.change]); // Parent DOM `layout-gap` with affect the nested child with `flex-offset`\n\n    if (this.parentElement) {\n      this.marshal.trackValue(this.parentElement, 'layout-gap').pipe(takeUntil(this.destroySubject)).subscribe(this.triggerUpdate.bind(this));\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\n\n  updateWithValue(value = '') {\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\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\n    this.addStyles(value + '', {\n      layout,\n      isRtl\n    });\n  }\n\n}\n\nFlexOffsetDirective.ɵfac = function FlexOffsetDirective_Factory(t) {\n  return new (t || FlexOffsetDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2.Directionality), i0.ɵɵdirectiveInject(FlexOffsetStyleBuilder), i0.ɵɵdirectiveInject(i1.MediaMarshaller), i0.ɵɵdirectiveInject(i1.StyleUtils));\n};\n\nFlexOffsetDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: FlexOffsetDirective,\n  features: [i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FlexOffsetDirective, [{\n    type: Directive\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i2.Directionality\n    }, {\n      type: FlexOffsetStyleBuilder\n    }, {\n      type: i1.MediaMarshaller\n    }, {\n      type: i1.StyleUtils\n    }];\n  }, null);\n})();\n\nclass DefaultFlexOffsetDirective extends FlexOffsetDirective {\n  constructor() {\n    super(...arguments);\n    this.inputs = inputs$2;\n  }\n\n}\n\nDefaultFlexOffsetDirective.ɵfac = /* @__PURE__ */function () {\n  let ɵDefaultFlexOffsetDirective_BaseFactory;\n  return function DefaultFlexOffsetDirective_Factory(t) {\n    return (ɵDefaultFlexOffsetDirective_BaseFactory || (ɵDefaultFlexOffsetDirective_BaseFactory = i0.ɵɵgetInheritedFactory(DefaultFlexOffsetDirective)))(t || DefaultFlexOffsetDirective);\n  };\n}();\n\nDefaultFlexOffsetDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: DefaultFlexOffsetDirective,\n  selectors: [[\"\", \"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\", \"\"]],\n  inputs: {\n    fxFlexOffset: \"fxFlexOffset\",\n    \"fxFlexOffset.xs\": \"fxFlexOffset.xs\",\n    \"fxFlexOffset.sm\": \"fxFlexOffset.sm\",\n    \"fxFlexOffset.md\": \"fxFlexOffset.md\",\n    \"fxFlexOffset.lg\": \"fxFlexOffset.lg\",\n    \"fxFlexOffset.xl\": \"fxFlexOffset.xl\",\n    \"fxFlexOffset.lt-sm\": \"fxFlexOffset.lt-sm\",\n    \"fxFlexOffset.lt-md\": \"fxFlexOffset.lt-md\",\n    \"fxFlexOffset.lt-lg\": \"fxFlexOffset.lt-lg\",\n    \"fxFlexOffset.lt-xl\": \"fxFlexOffset.lt-xl\",\n    \"fxFlexOffset.gt-xs\": \"fxFlexOffset.gt-xs\",\n    \"fxFlexOffset.gt-sm\": \"fxFlexOffset.gt-sm\",\n    \"fxFlexOffset.gt-md\": \"fxFlexOffset.gt-md\",\n    \"fxFlexOffset.gt-lg\": \"fxFlexOffset.gt-lg\"\n  },\n  features: [i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DefaultFlexOffsetDirective, [{\n    type: Directive,\n    args: [{\n      selector: selector$2,\n      inputs: inputs$2\n    }]\n  }], null, null);\n})();\n\nconst flexOffsetCacheRowRtl = new Map();\nconst flexOffsetCacheColumnRtl = new Map();\nconst flexOffsetCacheRowLtr = new Map();\nconst flexOffsetCacheColumnLtr = 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\nclass FlexAlignStyleBuilder extends StyleBuilder {\n  buildStyles(input) {\n    input = input || 'stretch';\n    const styles = {}; // Cross-axis\n\n    switch (input) {\n      case 'start':\n        styles['align-self'] = 'flex-start';\n        break;\n\n      case 'end':\n        styles['align-self'] = 'flex-end';\n        break;\n\n      default:\n        styles['align-self'] = input;\n        break;\n    }\n\n    return styles;\n  }\n\n}\n\nFlexAlignStyleBuilder.ɵfac = /* @__PURE__ */function () {\n  let ɵFlexAlignStyleBuilder_BaseFactory;\n  return function FlexAlignStyleBuilder_Factory(t) {\n    return (ɵFlexAlignStyleBuilder_BaseFactory || (ɵFlexAlignStyleBuilder_BaseFactory = i0.ɵɵgetInheritedFactory(FlexAlignStyleBuilder)))(t || FlexAlignStyleBuilder);\n  };\n}();\n\nFlexAlignStyleBuilder.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: FlexAlignStyleBuilder,\n  factory: FlexAlignStyleBuilder.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FlexAlignStyleBuilder, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], null, null);\n})();\n\nconst inputs$1 = ['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'];\nconst selector$1 = `\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 * '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 */\n\nclass FlexAlignDirective extends BaseDirective2 {\n  constructor(elRef, styleUtils, styleBuilder, marshal) {\n    super(elRef, styleBuilder, styleUtils, marshal);\n    this.DIRECTIVE_KEY = 'flex-align';\n    this.styleCache = flexAlignCache;\n    this.init();\n  }\n\n}\n\nFlexAlignDirective.ɵfac = function FlexAlignDirective_Factory(t) {\n  return new (t || FlexAlignDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.StyleUtils), i0.ɵɵdirectiveInject(FlexAlignStyleBuilder), i0.ɵɵdirectiveInject(i1.MediaMarshaller));\n};\n\nFlexAlignDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: FlexAlignDirective,\n  features: [i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FlexAlignDirective, [{\n    type: Directive\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i1.StyleUtils\n    }, {\n      type: FlexAlignStyleBuilder\n    }, {\n      type: i1.MediaMarshaller\n    }];\n  }, null);\n})();\n\nconst flexAlignCache = new Map();\n\nclass DefaultFlexAlignDirective extends FlexAlignDirective {\n  constructor() {\n    super(...arguments);\n    this.inputs = inputs$1;\n  }\n\n}\n\nDefaultFlexAlignDirective.ɵfac = /* @__PURE__ */function () {\n  let ɵDefaultFlexAlignDirective_BaseFactory;\n  return function DefaultFlexAlignDirective_Factory(t) {\n    return (ɵDefaultFlexAlignDirective_BaseFactory || (ɵDefaultFlexAlignDirective_BaseFactory = i0.ɵɵgetInheritedFactory(DefaultFlexAlignDirective)))(t || DefaultFlexAlignDirective);\n  };\n}();\n\nDefaultFlexAlignDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: DefaultFlexAlignDirective,\n  selectors: [[\"\", \"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\", \"\"]],\n  inputs: {\n    fxFlexAlign: \"fxFlexAlign\",\n    \"fxFlexAlign.xs\": \"fxFlexAlign.xs\",\n    \"fxFlexAlign.sm\": \"fxFlexAlign.sm\",\n    \"fxFlexAlign.md\": \"fxFlexAlign.md\",\n    \"fxFlexAlign.lg\": \"fxFlexAlign.lg\",\n    \"fxFlexAlign.xl\": \"fxFlexAlign.xl\",\n    \"fxFlexAlign.lt-sm\": \"fxFlexAlign.lt-sm\",\n    \"fxFlexAlign.lt-md\": \"fxFlexAlign.lt-md\",\n    \"fxFlexAlign.lt-lg\": \"fxFlexAlign.lt-lg\",\n    \"fxFlexAlign.lt-xl\": \"fxFlexAlign.lt-xl\",\n    \"fxFlexAlign.gt-xs\": \"fxFlexAlign.gt-xs\",\n    \"fxFlexAlign.gt-sm\": \"fxFlexAlign.gt-sm\",\n    \"fxFlexAlign.gt-md\": \"fxFlexAlign.gt-md\",\n    \"fxFlexAlign.gt-lg\": \"fxFlexAlign.gt-lg\"\n  },\n  features: [i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DefaultFlexAlignDirective, [{\n    type: Directive,\n    args: [{\n      selector: selector$1,\n      inputs: inputs$1\n    }]\n  }], null, 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 */\n\n\nconst FLEX_FILL_CSS = {\n  'margin': 0,\n  'width': '100%',\n  'height': '100%',\n  'min-width': '100%',\n  'min-height': '100%'\n};\n\nclass FlexFillStyleBuilder extends StyleBuilder {\n  buildStyles(_input) {\n    return FLEX_FILL_CSS;\n  }\n\n}\n\nFlexFillStyleBuilder.ɵfac = /* @__PURE__ */function () {\n  let ɵFlexFillStyleBuilder_BaseFactory;\n  return function FlexFillStyleBuilder_Factory(t) {\n    return (ɵFlexFillStyleBuilder_BaseFactory || (ɵFlexFillStyleBuilder_BaseFactory = i0.ɵɵgetInheritedFactory(FlexFillStyleBuilder)))(t || FlexFillStyleBuilder);\n  };\n}();\n\nFlexFillStyleBuilder.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: FlexFillStyleBuilder,\n  factory: FlexFillStyleBuilder.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FlexFillStyleBuilder, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], null, null);\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\n\nclass FlexFillDirective extends BaseDirective2 {\n  constructor(elRef, styleUtils, styleBuilder, marshal) {\n    super(elRef, styleBuilder, styleUtils, marshal);\n    this.styleCache = flexFillCache;\n    this.addStyles('');\n  }\n\n}\n\nFlexFillDirective.ɵfac = function FlexFillDirective_Factory(t) {\n  return new (t || FlexFillDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.StyleUtils), i0.ɵɵdirectiveInject(FlexFillStyleBuilder), i0.ɵɵdirectiveInject(i1.MediaMarshaller));\n};\n\nFlexFillDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: FlexFillDirective,\n  selectors: [[\"\", \"fxFill\", \"\"], [\"\", \"fxFlexFill\", \"\"]],\n  features: [i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FlexFillDirective, [{\n    type: Directive,\n    args: [{\n      selector: `[fxFill], [fxFlexFill]`\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i1.StyleUtils\n    }, {\n      type: FlexFillStyleBuilder\n    }, {\n      type: i1.MediaMarshaller\n    }];\n  }, null);\n})();\n\nconst flexFillCache = 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\nclass LayoutAlignStyleBuilder extends StyleBuilder {\n  buildStyles(align, parent) {\n    const css = {},\n          [mainAxis, crossAxis] = align.split(' '); // Main axis\n\n    switch (mainAxis) {\n      case 'center':\n        css['justify-content'] = 'center';\n        break;\n\n      case 'space-around':\n        css['justify-content'] = 'space-around';\n        break;\n\n      case 'space-between':\n        css['justify-content'] = 'space-between';\n        break;\n\n      case 'space-evenly':\n        css['justify-content'] = 'space-evenly';\n        break;\n\n      case 'end':\n      case 'flex-end':\n        css['justify-content'] = 'flex-end';\n        break;\n\n      case 'start':\n      case 'flex-start':\n      default:\n        css['justify-content'] = 'flex-start'; // default main axis\n\n        break;\n    } // Cross-axis\n\n\n    switch (crossAxis) {\n      case 'start':\n      case 'flex-start':\n        css['align-items'] = css['align-content'] = 'flex-start';\n        break;\n\n      case 'center':\n        css['align-items'] = css['align-content'] = 'center';\n        break;\n\n      case 'end':\n      case 'flex-end':\n        css['align-items'] = css['align-content'] = 'flex-end';\n        break;\n\n      case 'space-between':\n        css['align-content'] = 'space-between';\n        css['align-items'] = 'stretch';\n        break;\n\n      case 'space-around':\n        css['align-content'] = 'space-around';\n        css['align-items'] = 'stretch';\n        break;\n\n      case 'baseline':\n        css['align-content'] = 'stretch';\n        css['align-items'] = 'baseline';\n        break;\n\n      case 'stretch':\n      default:\n        // 'stretch'\n        css['align-items'] = css['align-content'] = 'stretch'; // default cross axis\n\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' ? !isFlowHorizontal(parent.layout) ? '100%' : null : null,\n      'max-height': crossAxis === 'stretch' ? isFlowHorizontal(parent.layout) ? '100%' : null : null\n    });\n  }\n\n}\n\nLayoutAlignStyleBuilder.ɵfac = /* @__PURE__ */function () {\n  let ɵLayoutAlignStyleBuilder_BaseFactory;\n  return function LayoutAlignStyleBuilder_Factory(t) {\n    return (ɵLayoutAlignStyleBuilder_BaseFactory || (ɵLayoutAlignStyleBuilder_BaseFactory = i0.ɵɵgetInheritedFactory(LayoutAlignStyleBuilder)))(t || LayoutAlignStyleBuilder);\n  };\n}();\n\nLayoutAlignStyleBuilder.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: LayoutAlignStyleBuilder,\n  factory: LayoutAlignStyleBuilder.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(LayoutAlignStyleBuilder, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], null, null);\n})();\n\nconst 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'];\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 * '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 */\n\nclass LayoutAlignDirective extends BaseDirective2 {\n  constructor(elRef, styleUtils, styleBuilder, marshal) {\n    super(elRef, styleBuilder, styleUtils, marshal);\n    this.DIRECTIVE_KEY = 'layout-align';\n    this.layout = 'row'; // default flex-direction\n\n    this.inline = false; // default inline value\n\n    this.init();\n    this.marshal.trackValue(this.nativeElement, 'layout').pipe(takeUntil(this.destroySubject)).subscribe(this.onLayoutChange.bind(this));\n  } // *********************************************\n  // Protected methods\n  // *********************************************\n\n  /**\n   *\n   */\n\n\n  updateWithValue(value) {\n    const layout = this.layout || 'row';\n    const inline = this.inline;\n\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\n    this.addStyles(value, {\n      layout,\n      inline\n    });\n  }\n  /**\n   * Cache the parent container 'flex-direction' and update the 'flex' styles\n   */\n\n\n  onLayoutChange(matcher) {\n    const layoutKeys = matcher.value.split(' ');\n    this.layout = layoutKeys[0];\n    this.inline = matcher.value.includes('inline');\n\n    if (!LAYOUT_VALUES.find(x => x === this.layout)) {\n      this.layout = 'row';\n    }\n\n    this.triggerUpdate();\n  }\n\n}\n\nLayoutAlignDirective.ɵfac = function LayoutAlignDirective_Factory(t) {\n  return new (t || LayoutAlignDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.StyleUtils), i0.ɵɵdirectiveInject(LayoutAlignStyleBuilder), i0.ɵɵdirectiveInject(i1.MediaMarshaller));\n};\n\nLayoutAlignDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: LayoutAlignDirective,\n  features: [i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(LayoutAlignDirective, [{\n    type: Directive\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i1.StyleUtils\n    }, {\n      type: LayoutAlignStyleBuilder\n    }, {\n      type: i1.MediaMarshaller\n    }];\n  }, null);\n})();\n\nclass DefaultLayoutAlignDirective extends LayoutAlignDirective {\n  constructor() {\n    super(...arguments);\n    this.inputs = inputs;\n  }\n\n}\n\nDefaultLayoutAlignDirective.ɵfac = /* @__PURE__ */function () {\n  let ɵDefaultLayoutAlignDirective_BaseFactory;\n  return function DefaultLayoutAlignDirective_Factory(t) {\n    return (ɵDefaultLayoutAlignDirective_BaseFactory || (ɵDefaultLayoutAlignDirective_BaseFactory = i0.ɵɵgetInheritedFactory(DefaultLayoutAlignDirective)))(t || DefaultLayoutAlignDirective);\n  };\n}();\n\nDefaultLayoutAlignDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: DefaultLayoutAlignDirective,\n  selectors: [[\"\", \"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\", \"\"]],\n  inputs: {\n    fxLayoutAlign: \"fxLayoutAlign\",\n    \"fxLayoutAlign.xs\": \"fxLayoutAlign.xs\",\n    \"fxLayoutAlign.sm\": \"fxLayoutAlign.sm\",\n    \"fxLayoutAlign.md\": \"fxLayoutAlign.md\",\n    \"fxLayoutAlign.lg\": \"fxLayoutAlign.lg\",\n    \"fxLayoutAlign.xl\": \"fxLayoutAlign.xl\",\n    \"fxLayoutAlign.lt-sm\": \"fxLayoutAlign.lt-sm\",\n    \"fxLayoutAlign.lt-md\": \"fxLayoutAlign.lt-md\",\n    \"fxLayoutAlign.lt-lg\": \"fxLayoutAlign.lt-lg\",\n    \"fxLayoutAlign.lt-xl\": \"fxLayoutAlign.lt-xl\",\n    \"fxLayoutAlign.gt-xs\": \"fxLayoutAlign.gt-xs\",\n    \"fxLayoutAlign.gt-sm\": \"fxLayoutAlign.gt-sm\",\n    \"fxLayoutAlign.gt-md\": \"fxLayoutAlign.gt-md\",\n    \"fxLayoutAlign.gt-lg\": \"fxLayoutAlign.gt-lg\"\n  },\n  features: [i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DefaultLayoutAlignDirective, [{\n    type: Directive,\n    args: [{\n      selector,\n      inputs\n    }]\n  }], null, null);\n})();\n\nconst layoutAlignHorizontalCache = new Map();\nconst layoutAlignVerticalCache = new Map();\nconst layoutAlignHorizontalRevCache = new Map();\nconst layoutAlignVerticalRevCache = new Map();\nconst layoutAlignHorizontalInlineCache = new Map();\nconst layoutAlignVerticalInlineCache = new Map();\nconst layoutAlignHorizontalRevInlineCache = new Map();\nconst layoutAlignVerticalRevInlineCache = 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\nconst ALL_DIRECTIVES = [DefaultLayoutDirective, DefaultLayoutGapDirective, DefaultLayoutAlignDirective, DefaultFlexOrderDirective, DefaultFlexOffsetDirective, FlexFillDirective, DefaultFlexAlignDirective, DefaultFlexDirective];\n/**\n * *****************************************************************\n * Define module for the Flex API\n * *****************************************************************\n */\n\nclass FlexModule {}\n\nFlexModule.ɵfac = function FlexModule_Factory(t) {\n  return new (t || FlexModule)();\n};\n\nFlexModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: FlexModule\n});\nFlexModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[CoreModule, BidiModule]]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FlexModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CoreModule, BidiModule],\n      declarations: [...ALL_DIRECTIVES],\n      exports: [...ALL_DIRECTIVES]\n    }]\n  }], null, 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 */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { DefaultFlexAlignDirective, DefaultFlexDirective, DefaultFlexOffsetDirective, DefaultFlexOrderDirective, DefaultLayoutAlignDirective, DefaultLayoutDirective, DefaultLayoutGapDirective, FlexAlignDirective, FlexAlignStyleBuilder, FlexDirective, FlexFillDirective, FlexFillStyleBuilder, FlexModule, FlexOffsetDirective, FlexOffsetStyleBuilder, FlexOrderDirective, FlexOrderStyleBuilder, FlexStyleBuilder, LayoutAlignDirective, LayoutAlignStyleBuilder, LayoutDirective, LayoutGapDirective, LayoutGapStyleBuilder, LayoutStyleBuilder };","map":{"version":3,"sources":["D:/Development/Work/CENOS/cenos-ui/node_modules/@angular/flex-layout/fesm2015/angular-flex-layout-flex.mjs"],"names":["i0","Injectable","Directive","Inject","Input","NgModule","i2","BidiModule","i1","StyleBuilder","BaseDirective2","LAYOUT_CONFIG","validateBasis","CoreModule","buildLayoutCSS","LAYOUT_VALUES","isFlowHorizontal","extendObject","Subject","takeUntil","LayoutStyleBuilder","buildStyles","input","ɵfac","ɵprov","type","args","providedIn","inputs$6","selector$6","LayoutDirective","constructor","elRef","styleUtils","styleBuilder","marshal","DIRECTIVE_KEY","styleCache","layoutCache","init","ElementRef","StyleUtils","MediaMarshaller","ɵdir","DefaultLayoutDirective","arguments","inputs","selector","Map","CLEAR_MARGIN_CSS","LayoutGapStyleBuilder","_styler","gapValue","parent","endsWith","GRID_SPECIFIER","slice","indexOf","buildGridMargin","directionality","sideEffect","_styles","items","paddingStyles","buildGridPadding","applyStyleToElements","lastItem","pop","gapCss","buildGapCSS","inputs$5","selector$5","LayoutGapDirective","zone","layout","observerSubject","extraTriggers","change","asObservable","trackValue","nativeElement","pipe","destroySubject","subscribe","onLayoutChange","bind","childrenNodes","obj","children","buffer","i","length","ngAfterContentInit","buildChildObservable","triggerUpdate","ngOnDestroy","observer","disconnect","matcher","value","direction","split","find","x","updateWithValue","filter","el","nodeType","willDisplay","sort","a","b","orderA","styler","lookupStyle","orderB","isNaN","layoutGapCacheRowRtl","layoutGapCacheRowLtr","layoutGapCacheColumnRtl","layoutGapCacheColumnLtr","addStyles","clearStyles","gridMode","Object","keys","mru","childrenStyle","getMarginType","source","getValue","undefined","runOutsideAngular","MutationObserver","mutations","validatedChanges","it","addedNodes","removedNodes","some","next","observe","childList","NgZone","Directionality","DefaultLayoutGapDirective","between","below","bottom","paddingRight","paddingBottom","paddingLeft","minus","str","marginRight","marginBottom","marginLeft","key","margins","assign","FlexStyleBuilder","layoutConfig","grow","shrink","basisParts","basis","join","max","min","hasCalc","String","usingCalc","isPercent","hasUnits","isValue","isFixed","css","useColumnBasisZero","hasWrap","decorators","inputs$4","selector$4","FlexDirective","wrap","flexGrow","flexShrink","triggerReflow","ngOnInit","parentElement","layoutParts","addFlexToParent","getFlexFlowDirection","isHorizontal","startsWith","flexRowWrapCache","flexRowCache","flexColumnWrapCache","flexColumnCache","replace","parts","activatedValue","updateElement","DefaultFlexDirective","FlexOrderStyleBuilder","order","parseInt","inputs$3","selector$3","FlexOrderDirective","flexOrderCache","DefaultFlexOrderDirective","FlexOffsetStyleBuilder","offset","isPx","horizontalLayoutKey","isRtl","styles","inputs$2","selector$2","FlexOffsetDirective","flexOffsetCacheRowRtl","flexOffsetCacheRowLtr","flexOffsetCacheColumnRtl","flexOffsetCacheColumnLtr","DefaultFlexOffsetDirective","FlexAlignStyleBuilder","inputs$1","selector$1","FlexAlignDirective","flexAlignCache","DefaultFlexAlignDirective","FLEX_FILL_CSS","FlexFillStyleBuilder","_input","FlexFillDirective","flexFillCache","LayoutAlignStyleBuilder","align","mainAxis","crossAxis","inline","LayoutAlignDirective","layoutAlignHorizontalInlineCache","layoutAlignHorizontalCache","layoutAlignHorizontalRevInlineCache","layoutAlignHorizontalRevCache","layoutAlignVerticalInlineCache","layoutAlignVerticalCache","layoutAlignVerticalRevInlineCache","layoutAlignVerticalRevCache","layoutKeys","includes","DefaultLayoutAlignDirective","ALL_DIRECTIVES","FlexModule","ɵmod","ɵinj","imports","declarations","exports"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { Injectable, Directive, Inject, Input, NgModule } from '@angular/core';\nimport * as i2 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport * as i1 from '@angular/flex-layout/core';\nimport { StyleBuilder, BaseDirective2, LAYOUT_CONFIG, validateBasis, CoreModule } from '@angular/flex-layout/core';\nimport { buildLayoutCSS, LAYOUT_VALUES, isFlowHorizontal, extendObject } from '@angular/flex-layout/_private-utils';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass LayoutStyleBuilder extends StyleBuilder {\n    buildStyles(input) {\n        return buildLayoutCSS(input);\n    }\n}\nLayoutStyleBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LayoutStyleBuilder, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nLayoutStyleBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LayoutStyleBuilder, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LayoutStyleBuilder, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }] });\nconst inputs$6 = [\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$6 = `\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 * '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 */\nclass LayoutDirective extends BaseDirective2 {\n    constructor(elRef, styleUtils, styleBuilder, marshal) {\n        super(elRef, styleBuilder, styleUtils, marshal);\n        this.DIRECTIVE_KEY = 'layout';\n        this.styleCache = layoutCache;\n        this.init();\n    }\n}\nLayoutDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LayoutDirective, deps: [{ token: i0.ElementRef }, { token: i1.StyleUtils }, { token: LayoutStyleBuilder }, { token: i1.MediaMarshaller }], target: i0.ɵɵFactoryTarget.Directive });\nLayoutDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: LayoutDirective, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LayoutDirective, decorators: [{\n            type: Directive\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.StyleUtils }, { type: LayoutStyleBuilder }, { type: i1.MediaMarshaller }]; } });\nclass DefaultLayoutDirective extends LayoutDirective {\n    constructor() {\n        super(...arguments);\n        this.inputs = inputs$6;\n    }\n}\nDefaultLayoutDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DefaultLayoutDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nDefaultLayoutDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: DefaultLayoutDirective, 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\", \"fxLayout.xs\": \"fxLayout.xs\", \"fxLayout.sm\": \"fxLayout.sm\", \"fxLayout.md\": \"fxLayout.md\", \"fxLayout.lg\": \"fxLayout.lg\", \"fxLayout.xl\": \"fxLayout.xl\", \"fxLayout.lt-sm\": \"fxLayout.lt-sm\", \"fxLayout.lt-md\": \"fxLayout.lt-md\", \"fxLayout.lt-lg\": \"fxLayout.lt-lg\", \"fxLayout.lt-xl\": \"fxLayout.lt-xl\", \"fxLayout.gt-xs\": \"fxLayout.gt-xs\", \"fxLayout.gt-sm\": \"fxLayout.gt-sm\", \"fxLayout.gt-md\": \"fxLayout.gt-md\", \"fxLayout.gt-lg\": \"fxLayout.gt-lg\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DefaultLayoutDirective, decorators: [{\n            type: Directive,\n            args: [{ selector: selector$6, inputs: inputs$6 }]\n        }] });\nconst layoutCache = 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 */\nconst CLEAR_MARGIN_CSS = {\n    'margin-left': null,\n    'margin-right': null,\n    'margin-top': null,\n    'margin-bottom': null\n};\nclass LayoutGapStyleBuilder extends StyleBuilder {\n    constructor(_styler) {\n        super();\n        this._styler = _styler;\n    }\n    buildStyles(gapValue, parent) {\n        if (gapValue.endsWith(GRID_SPECIFIER)) {\n            gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n            // Add the margin to the host element\n            return buildGridMargin(gapValue, parent.directionality);\n        }\n        else {\n            return {};\n        }\n    }\n    sideEffect(gapValue, _styles, parent) {\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        }\n        else {\n            const lastItem = items.pop();\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            // Clear all gaps for all visible elements\n            this._styler.applyStyleToElements(CLEAR_MARGIN_CSS, [lastItem]);\n        }\n    }\n}\nLayoutGapStyleBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LayoutGapStyleBuilder, deps: [{ token: i1.StyleUtils }], target: i0.ɵɵFactoryTarget.Injectable });\nLayoutGapStyleBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LayoutGapStyleBuilder, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LayoutGapStyleBuilder, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: i1.StyleUtils }]; } });\nconst inputs$5 = [\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$5 = `\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 * 'layout-padding' styling directive\n *  Defines padding of child elements in a layout container\n */\nclass LayoutGapDirective extends BaseDirective2 {\n    constructor(elRef, zone, directionality, styleUtils, styleBuilder, marshal) {\n        super(elRef, styleBuilder, styleUtils, marshal);\n        this.zone = zone;\n        this.directionality = directionality;\n        this.styleUtils = styleUtils;\n        this.layout = 'row'; // default flex-direction\n        this.DIRECTIVE_KEY = 'layout-gap';\n        this.observerSubject = new Subject();\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    /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */\n    get childrenNodes() {\n        const obj = this.nativeElement.children;\n        const buffer = [];\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    // Lifecycle Methods\n    // *********************************************\n    ngAfterContentInit() {\n        this.buildChildObservable();\n        this.triggerUpdate();\n    }\n    ngOnDestroy() {\n        super.ngOnDestroy();\n        if (this.observer) {\n            this.observer.disconnect();\n        }\n    }\n    // *********************************************\n    // Protected methods\n    // *********************************************\n    /**\n     * Cache the parent container 'flex-direction' and update the 'margin' styles\n     */\n    onLayoutChange(matcher) {\n        const layout = 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    updateWithValue(value) {\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            }\n            else {\n                return orderA > orderB ? 1 : -1;\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            }\n            else if (layout === 'row' && directionality !== 'rtl') {\n                this.styleCache = layoutGapCacheRowLtr;\n            }\n            else if (layout === 'column' && directionality === 'rtl') {\n                this.styleCache = layoutGapCacheColumnRtl;\n            }\n            else if (layout === 'column' && directionality !== 'rtl') {\n                this.styleCache = layoutGapCacheColumnLtr;\n            }\n            this.addStyles(value, { directionality, items, layout });\n        }\n    }\n    /** We need to override clearStyles because in most cases mru isn't populated */\n    clearStyles() {\n        const gridMode = Object.keys(this.mru).length > 0;\n        const childrenStyle = gridMode ? 'padding' :\n            getMarginType(this.directionality.value, this.layout);\n        // If there are styles on the parent remove them\n        if (gridMode) {\n            super.clearStyles();\n        }\n        // Then remove the children styles too\n        this.styleUtils.applyStyleToElements({ [childrenStyle]: '' }, this.childrenNodes);\n    }\n    /** Determine if an element will show or hide based on current activation */\n    willDisplay(source) {\n        const value = this.marshal.getValue(source, 'show-hide');\n        return value === true ||\n            (value === undefined && this.styleUtils.lookupStyle(source, 'display') !== 'none');\n    }\n    buildChildObservable() {\n        this.zone.runOutsideAngular(() => {\n            if (typeof MutationObserver !== 'undefined') {\n                this.observer = new MutationObserver((mutations) => {\n                    const validatedChanges = (it) => {\n                        return (it.addedNodes && it.addedNodes.length > 0) ||\n                            (it.removedNodes && it.removedNodes.length > 0);\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}\nLayoutGapDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LayoutGapDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i2.Directionality }, { token: i1.StyleUtils }, { token: LayoutGapStyleBuilder }, { token: i1.MediaMarshaller }], target: i0.ɵɵFactoryTarget.Directive });\nLayoutGapDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: LayoutGapDirective, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LayoutGapDirective, decorators: [{\n            type: Directive\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i2.Directionality }, { type: i1.StyleUtils }, { type: LayoutGapStyleBuilder }, { type: i1.MediaMarshaller }]; } });\nclass DefaultLayoutGapDirective extends LayoutGapDirective {\n    constructor() {\n        super(...arguments);\n        this.inputs = inputs$5;\n    }\n}\nDefaultLayoutGapDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DefaultLayoutGapDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nDefaultLayoutGapDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: DefaultLayoutGapDirective, 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\", \"fxLayoutGap.xs\": \"fxLayoutGap.xs\", \"fxLayoutGap.sm\": \"fxLayoutGap.sm\", \"fxLayoutGap.md\": \"fxLayoutGap.md\", \"fxLayoutGap.lg\": \"fxLayoutGap.lg\", \"fxLayoutGap.xl\": \"fxLayoutGap.xl\", \"fxLayoutGap.lt-sm\": \"fxLayoutGap.lt-sm\", \"fxLayoutGap.lt-md\": \"fxLayoutGap.lt-md\", \"fxLayoutGap.lt-lg\": \"fxLayoutGap.lt-lg\", \"fxLayoutGap.lt-xl\": \"fxLayoutGap.lt-xl\", \"fxLayoutGap.gt-xs\": \"fxLayoutGap.gt-xs\", \"fxLayoutGap.gt-sm\": \"fxLayoutGap.gt-sm\", \"fxLayoutGap.gt-md\": \"fxLayoutGap.gt-md\", \"fxLayoutGap.gt-lg\": \"fxLayoutGap.gt-lg\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DefaultLayoutGapDirective, decorators: [{\n            type: Directive,\n            args: [{ selector: selector$5, inputs: inputs$5 }]\n        }] });\nconst layoutGapCacheRowRtl = new Map();\nconst layoutGapCacheColumnRtl = new Map();\nconst layoutGapCacheRowLtr = new Map();\nconst layoutGapCacheColumnLtr = new Map();\nconst GRID_SPECIFIER = ' grid';\nfunction buildGridPadding(value, directionality) {\n    const [between, below] = value.split(' ');\n    const bottom = below || between;\n    let paddingRight = '0px', paddingBottom = bottom, paddingLeft = '0px';\n    if (directionality === 'rtl') {\n        paddingLeft = between;\n    }\n    else {\n        paddingRight = between;\n    }\n    return { 'padding': `0px ${paddingRight} ${paddingBottom} ${paddingLeft}` };\n}\nfunction buildGridMargin(value, directionality) {\n    const [between, below] = value.split(' ');\n    const bottom = below || between;\n    const minus = (str) => `-${str}`;\n    let marginRight = '0px', marginBottom = minus(bottom), marginLeft = '0px';\n    if (directionality === 'rtl') {\n        marginLeft = minus(between);\n    }\n    else {\n        marginRight = minus(between);\n    }\n    return { 'margin': `0px ${marginRight} ${marginBottom} ${marginLeft}` };\n}\nfunction getMarginType(directionality, layout) {\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}\nfunction buildGapCSS(gapValue, parent) {\n    const key = getMarginType(parent.directionality, parent.layout);\n    const margins = Object.assign({}, CLEAR_MARGIN_CSS);\n    margins[key] = gapValue;\n    return margins;\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 */\nclass FlexStyleBuilder extends StyleBuilder {\n    constructor(layoutConfig) {\n        super();\n        this.layoutConfig = layoutConfig;\n    }\n    buildStyles(input, parent) {\n        let [grow, shrink, ...basisParts] = input.split(' ');\n        let basis = basisParts.join(' ');\n        // The flex-direction of this element's flex container. Defaults to 'row'.\n        const direction = (parent.direction.indexOf('column') > -1) ? 'column' : 'row';\n        const max = isFlowHorizontal(direction) ? 'max-width' : 'max-height';\n        const min = isFlowHorizontal(direction) ? 'min-width' : 'min-height';\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        let isValue = (hasCalc || hasUnits);\n        grow = (grow == '0') ? 0 : grow;\n        shrink = (shrink == '0') ? 0 : shrink;\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        let css = {};\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        // 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)) {\n                    basis = basis + '%';\n                }\n                // Fix for issue 280\n                if (basis === '0%') {\n                    isValue = true;\n                }\n                if (basis === '0px') {\n                    basis = '0%';\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                }\n                else {\n                    css = extendObject(clearStyles, {\n                        'flex': `${grow} ${shrink} ${isValue ? basis : '100%'}`\n                    });\n                }\n                break;\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            }\n            else {\n                css = extendObject(clearStyles, {\n                    'flex': `${grow} ${shrink} ${basis}`\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        // 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            }\n            else {\n                css = extendObject(clearStyles, {\n                    'flex': `${grow} ${shrink} ${basis}`\n                });\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        return extendObject(css, { 'box-sizing': 'border-box' });\n    }\n}\nFlexStyleBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexStyleBuilder, deps: [{ token: LAYOUT_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });\nFlexStyleBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexStyleBuilder, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexStyleBuilder, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () {\n        return [{ type: undefined, decorators: [{\n                        type: Inject,\n                        args: [LAYOUT_CONFIG]\n                    }] }];\n    } });\nconst inputs$4 = [\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$4 = `\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 * 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 */\nclass FlexDirective extends BaseDirective2 {\n    constructor(elRef, styleUtils, layoutConfig, styleBuilder, marshal) {\n        super(elRef, styleBuilder, styleUtils, marshal);\n        this.layoutConfig = layoutConfig;\n        this.marshal = marshal;\n        this.DIRECTIVE_KEY = 'flex';\n        this.direction = undefined;\n        this.wrap = undefined;\n        this.flexGrow = '1';\n        this.flexShrink = '1';\n        this.init();\n    }\n    get shrink() { return this.flexShrink; }\n    set shrink(value) {\n        this.flexShrink = value || '1';\n        this.triggerReflow();\n    }\n    get grow() { return this.flexGrow; }\n    set grow(value) {\n        this.flexGrow = value || '1';\n        this.triggerReflow();\n    }\n    ngOnInit() {\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     * 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    onLayoutChange(matcher) {\n        const layout = 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    /** Input to this is exclusively the basis input value */\n    updateWithValue(value) {\n        const addFlexToParent = this.layoutConfig.addFlexToParent !== false;\n        if (this.direction === undefined) {\n            this.direction = this.getFlexFlowDirection(this.parentElement, addFlexToParent);\n        }\n        if (this.wrap === undefined) {\n            this.wrap = this.hasWrap(this.parentElement);\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        }\n        else if (isHorizontal && !hasWrap) {\n            this.styleCache = flexRowCache;\n        }\n        else if (!isHorizontal && hasWrap) {\n            this.styleCache = flexColumnWrapCache;\n        }\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    /** Trigger a style reflow, usually based on a shrink/grow input event */\n    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}\nFlexDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexDirective, deps: [{ token: i0.ElementRef }, { token: i1.StyleUtils }, { token: LAYOUT_CONFIG }, { token: FlexStyleBuilder }, { token: i1.MediaMarshaller }], target: i0.ɵɵFactoryTarget.Directive });\nFlexDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: FlexDirective, inputs: { shrink: [\"fxShrink\", \"shrink\"], grow: [\"fxGrow\", \"grow\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexDirective, decorators: [{\n            type: Directive\n        }], ctorParameters: function () {\n        return [{ type: i0.ElementRef }, { type: i1.StyleUtils }, { type: undefined, decorators: [{\n                        type: Inject,\n                        args: [LAYOUT_CONFIG]\n                    }] }, { type: FlexStyleBuilder }, { type: i1.MediaMarshaller }];\n    }, propDecorators: { shrink: [{\n                type: Input,\n                args: ['fxShrink']\n            }], grow: [{\n                type: Input,\n                args: ['fxGrow']\n            }] } });\nclass DefaultFlexDirective extends FlexDirective {\n    constructor() {\n        super(...arguments);\n        this.inputs = inputs$4;\n    }\n}\nDefaultFlexDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DefaultFlexDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nDefaultFlexDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: DefaultFlexDirective, 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\", inputs: { fxFlex: \"fxFlex\", \"fxFlex.xs\": \"fxFlex.xs\", \"fxFlex.sm\": \"fxFlex.sm\", \"fxFlex.md\": \"fxFlex.md\", \"fxFlex.lg\": \"fxFlex.lg\", \"fxFlex.xl\": \"fxFlex.xl\", \"fxFlex.lt-sm\": \"fxFlex.lt-sm\", \"fxFlex.lt-md\": \"fxFlex.lt-md\", \"fxFlex.lt-lg\": \"fxFlex.lt-lg\", \"fxFlex.lt-xl\": \"fxFlex.lt-xl\", \"fxFlex.gt-xs\": \"fxFlex.gt-xs\", \"fxFlex.gt-sm\": \"fxFlex.gt-sm\", \"fxFlex.gt-md\": \"fxFlex.gt-md\", \"fxFlex.gt-lg\": \"fxFlex.gt-lg\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DefaultFlexDirective, decorators: [{\n            type: Directive,\n            args: [{ inputs: inputs$4, selector: selector$4 }]\n        }] });\nconst flexRowCache = new Map();\nconst flexColumnCache = new Map();\nconst flexRowWrapCache = new Map();\nconst flexColumnWrapCache = 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 */\nclass FlexOrderStyleBuilder extends StyleBuilder {\n    buildStyles(value) {\n        return { order: (value && parseInt(value, 10)) || '' };\n    }\n}\nFlexOrderStyleBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexOrderStyleBuilder, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nFlexOrderStyleBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexOrderStyleBuilder, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexOrderStyleBuilder, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }] });\nconst inputs$3 = [\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$3 = `\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 * '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 */\nclass FlexOrderDirective extends BaseDirective2 {\n    constructor(elRef, styleUtils, styleBuilder, marshal) {\n        super(elRef, styleBuilder, styleUtils, marshal);\n        this.DIRECTIVE_KEY = 'flex-order';\n        this.styleCache = flexOrderCache;\n        this.init();\n    }\n}\nFlexOrderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexOrderDirective, deps: [{ token: i0.ElementRef }, { token: i1.StyleUtils }, { token: FlexOrderStyleBuilder }, { token: i1.MediaMarshaller }], target: i0.ɵɵFactoryTarget.Directive });\nFlexOrderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: FlexOrderDirective, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexOrderDirective, decorators: [{\n            type: Directive\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.StyleUtils }, { type: FlexOrderStyleBuilder }, { type: i1.MediaMarshaller }]; } });\nconst flexOrderCache = new Map();\nclass DefaultFlexOrderDirective extends FlexOrderDirective {\n    constructor() {\n        super(...arguments);\n        this.inputs = inputs$3;\n    }\n}\nDefaultFlexOrderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DefaultFlexOrderDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nDefaultFlexOrderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: DefaultFlexOrderDirective, 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\", \"fxFlexOrder.xs\": \"fxFlexOrder.xs\", \"fxFlexOrder.sm\": \"fxFlexOrder.sm\", \"fxFlexOrder.md\": \"fxFlexOrder.md\", \"fxFlexOrder.lg\": \"fxFlexOrder.lg\", \"fxFlexOrder.xl\": \"fxFlexOrder.xl\", \"fxFlexOrder.lt-sm\": \"fxFlexOrder.lt-sm\", \"fxFlexOrder.lt-md\": \"fxFlexOrder.lt-md\", \"fxFlexOrder.lt-lg\": \"fxFlexOrder.lt-lg\", \"fxFlexOrder.lt-xl\": \"fxFlexOrder.lt-xl\", \"fxFlexOrder.gt-xs\": \"fxFlexOrder.gt-xs\", \"fxFlexOrder.gt-sm\": \"fxFlexOrder.gt-sm\", \"fxFlexOrder.gt-md\": \"fxFlexOrder.gt-md\", \"fxFlexOrder.gt-lg\": \"fxFlexOrder.gt-lg\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DefaultFlexOrderDirective, decorators: [{\n            type: Directive,\n            args: [{ selector: selector$3, inputs: inputs$3 }]\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 */\nclass FlexOffsetStyleBuilder extends StyleBuilder {\n    buildStyles(offset, parent) {\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 = isFlowHorizontal(parent.layout) ?\n            { [horizontalLayoutKey]: `${offset}` } : { 'margin-top': `${offset}` };\n        return styles;\n    }\n}\nFlexOffsetStyleBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexOffsetStyleBuilder, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nFlexOffsetStyleBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexOffsetStyleBuilder, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexOffsetStyleBuilder, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }] });\nconst inputs$2 = [\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$2 = `\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 * 'flex-offset' flexbox styling directive\n * Configures the 'margin-left' of the element in a layout container\n */\nclass FlexOffsetDirective extends BaseDirective2 {\n    constructor(elRef, directionality, styleBuilder, marshal, styler) {\n        super(elRef, styleBuilder, styler, marshal);\n        this.directionality = directionality;\n        this.DIRECTIVE_KEY = 'flex-offset';\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    // Protected methods\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    updateWithValue(value = '') {\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        }\n        else if (layout === 'row' && !isRtl) {\n            this.styleCache = flexOffsetCacheRowLtr;\n        }\n        else if (layout === 'column' && isRtl) {\n            this.styleCache = flexOffsetCacheColumnRtl;\n        }\n        else if (layout === 'column' && !isRtl) {\n            this.styleCache = flexOffsetCacheColumnLtr;\n        }\n        this.addStyles(value + '', { layout, isRtl });\n    }\n}\nFlexOffsetDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexOffsetDirective, deps: [{ token: i0.ElementRef }, { token: i2.Directionality }, { token: FlexOffsetStyleBuilder }, { token: i1.MediaMarshaller }, { token: i1.StyleUtils }], target: i0.ɵɵFactoryTarget.Directive });\nFlexOffsetDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: FlexOffsetDirective, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexOffsetDirective, decorators: [{\n            type: Directive\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i2.Directionality }, { type: FlexOffsetStyleBuilder }, { type: i1.MediaMarshaller }, { type: i1.StyleUtils }]; } });\nclass DefaultFlexOffsetDirective extends FlexOffsetDirective {\n    constructor() {\n        super(...arguments);\n        this.inputs = inputs$2;\n    }\n}\nDefaultFlexOffsetDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DefaultFlexOffsetDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nDefaultFlexOffsetDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: DefaultFlexOffsetDirective, 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\", \"fxFlexOffset.xs\": \"fxFlexOffset.xs\", \"fxFlexOffset.sm\": \"fxFlexOffset.sm\", \"fxFlexOffset.md\": \"fxFlexOffset.md\", \"fxFlexOffset.lg\": \"fxFlexOffset.lg\", \"fxFlexOffset.xl\": \"fxFlexOffset.xl\", \"fxFlexOffset.lt-sm\": \"fxFlexOffset.lt-sm\", \"fxFlexOffset.lt-md\": \"fxFlexOffset.lt-md\", \"fxFlexOffset.lt-lg\": \"fxFlexOffset.lt-lg\", \"fxFlexOffset.lt-xl\": \"fxFlexOffset.lt-xl\", \"fxFlexOffset.gt-xs\": \"fxFlexOffset.gt-xs\", \"fxFlexOffset.gt-sm\": \"fxFlexOffset.gt-sm\", \"fxFlexOffset.gt-md\": \"fxFlexOffset.gt-md\", \"fxFlexOffset.gt-lg\": \"fxFlexOffset.gt-lg\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DefaultFlexOffsetDirective, decorators: [{\n            type: Directive,\n            args: [{ selector: selector$2, inputs: inputs$2 }]\n        }] });\nconst flexOffsetCacheRowRtl = new Map();\nconst flexOffsetCacheColumnRtl = new Map();\nconst flexOffsetCacheRowLtr = new Map();\nconst flexOffsetCacheColumnLtr = 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 */\nclass FlexAlignStyleBuilder extends StyleBuilder {\n    buildStyles(input) {\n        input = input || 'stretch';\n        const styles = {};\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        return styles;\n    }\n}\nFlexAlignStyleBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexAlignStyleBuilder, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nFlexAlignStyleBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexAlignStyleBuilder, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexAlignStyleBuilder, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }] });\nconst inputs$1 = [\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$1 = `\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 * '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 */\nclass FlexAlignDirective extends BaseDirective2 {\n    constructor(elRef, styleUtils, styleBuilder, marshal) {\n        super(elRef, styleBuilder, styleUtils, marshal);\n        this.DIRECTIVE_KEY = 'flex-align';\n        this.styleCache = flexAlignCache;\n        this.init();\n    }\n}\nFlexAlignDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexAlignDirective, deps: [{ token: i0.ElementRef }, { token: i1.StyleUtils }, { token: FlexAlignStyleBuilder }, { token: i1.MediaMarshaller }], target: i0.ɵɵFactoryTarget.Directive });\nFlexAlignDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: FlexAlignDirective, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexAlignDirective, decorators: [{\n            type: Directive\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.StyleUtils }, { type: FlexAlignStyleBuilder }, { type: i1.MediaMarshaller }]; } });\nconst flexAlignCache = new Map();\nclass DefaultFlexAlignDirective extends FlexAlignDirective {\n    constructor() {\n        super(...arguments);\n        this.inputs = inputs$1;\n    }\n}\nDefaultFlexAlignDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DefaultFlexAlignDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nDefaultFlexAlignDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: DefaultFlexAlignDirective, 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\", \"fxFlexAlign.xs\": \"fxFlexAlign.xs\", \"fxFlexAlign.sm\": \"fxFlexAlign.sm\", \"fxFlexAlign.md\": \"fxFlexAlign.md\", \"fxFlexAlign.lg\": \"fxFlexAlign.lg\", \"fxFlexAlign.xl\": \"fxFlexAlign.xl\", \"fxFlexAlign.lt-sm\": \"fxFlexAlign.lt-sm\", \"fxFlexAlign.lt-md\": \"fxFlexAlign.lt-md\", \"fxFlexAlign.lt-lg\": \"fxFlexAlign.lt-lg\", \"fxFlexAlign.lt-xl\": \"fxFlexAlign.lt-xl\", \"fxFlexAlign.gt-xs\": \"fxFlexAlign.gt-xs\", \"fxFlexAlign.gt-sm\": \"fxFlexAlign.gt-sm\", \"fxFlexAlign.gt-md\": \"fxFlexAlign.gt-md\", \"fxFlexAlign.gt-lg\": \"fxFlexAlign.gt-lg\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DefaultFlexAlignDirective, decorators: [{\n            type: Directive,\n            args: [{ selector: selector$1, inputs: inputs$1 }]\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 */\nconst FLEX_FILL_CSS = {\n    'margin': 0,\n    'width': '100%',\n    'height': '100%',\n    'min-width': '100%',\n    'min-height': '100%'\n};\nclass FlexFillStyleBuilder extends StyleBuilder {\n    buildStyles(_input) {\n        return FLEX_FILL_CSS;\n    }\n}\nFlexFillStyleBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexFillStyleBuilder, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nFlexFillStyleBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexFillStyleBuilder, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexFillStyleBuilder, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\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 */\nclass FlexFillDirective extends BaseDirective2 {\n    constructor(elRef, styleUtils, styleBuilder, marshal) {\n        super(elRef, styleBuilder, styleUtils, marshal);\n        this.styleCache = flexFillCache;\n        this.addStyles('');\n    }\n}\nFlexFillDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexFillDirective, deps: [{ token: i0.ElementRef }, { token: i1.StyleUtils }, { token: FlexFillStyleBuilder }, { token: i1.MediaMarshaller }], target: i0.ɵɵFactoryTarget.Directive });\nFlexFillDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: FlexFillDirective, selector: \"[fxFill], [fxFlexFill]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexFillDirective, decorators: [{\n            type: Directive,\n            args: [{ selector: `[fxFill], [fxFlexFill]` }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.StyleUtils }, { type: FlexFillStyleBuilder }, { type: i1.MediaMarshaller }]; } });\nconst flexFillCache = 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 */\nclass LayoutAlignStyleBuilder extends StyleBuilder {\n    buildStyles(align, parent) {\n        const css = {}, [mainAxis, crossAxis] = align.split(' ');\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        // 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        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        });\n    }\n}\nLayoutAlignStyleBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LayoutAlignStyleBuilder, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nLayoutAlignStyleBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LayoutAlignStyleBuilder, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LayoutAlignStyleBuilder, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\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 * '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 */\nclass LayoutAlignDirective extends BaseDirective2 {\n    constructor(elRef, styleUtils, styleBuilder, marshal) {\n        super(elRef, styleBuilder, styleUtils, marshal);\n        this.DIRECTIVE_KEY = 'layout-align';\n        this.layout = 'row'; // default flex-direction\n        this.inline = false; // default inline value\n        this.init();\n        this.marshal.trackValue(this.nativeElement, 'layout')\n            .pipe(takeUntil(this.destroySubject))\n            .subscribe(this.onLayoutChange.bind(this));\n    }\n    // *********************************************\n    // Protected methods\n    // *********************************************\n    /**\n     *\n     */\n    updateWithValue(value) {\n        const layout = this.layout || 'row';\n        const inline = this.inline;\n        if (layout === 'row' && inline) {\n            this.styleCache = layoutAlignHorizontalInlineCache;\n        }\n        else if (layout === 'row' && !inline) {\n            this.styleCache = layoutAlignHorizontalCache;\n        }\n        else if (layout === 'row-reverse' && inline) {\n            this.styleCache = layoutAlignHorizontalRevInlineCache;\n        }\n        else if (layout === 'row-reverse' && !inline) {\n            this.styleCache = layoutAlignHorizontalRevCache;\n        }\n        else if (layout === 'column' && inline) {\n            this.styleCache = layoutAlignVerticalInlineCache;\n        }\n        else if (layout === 'column' && !inline) {\n            this.styleCache = layoutAlignVerticalCache;\n        }\n        else if (layout === 'column-reverse' && inline) {\n            this.styleCache = layoutAlignVerticalRevInlineCache;\n        }\n        else if (layout === 'column-reverse' && !inline) {\n            this.styleCache = layoutAlignVerticalRevCache;\n        }\n        this.addStyles(value, { layout, inline });\n    }\n    /**\n     * Cache the parent container 'flex-direction' and update the 'flex' styles\n     */\n    onLayoutChange(matcher) {\n        const layoutKeys = 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}\nLayoutAlignDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LayoutAlignDirective, deps: [{ token: i0.ElementRef }, { token: i1.StyleUtils }, { token: LayoutAlignStyleBuilder }, { token: i1.MediaMarshaller }], target: i0.ɵɵFactoryTarget.Directive });\nLayoutAlignDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: LayoutAlignDirective, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LayoutAlignDirective, decorators: [{\n            type: Directive\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.StyleUtils }, { type: LayoutAlignStyleBuilder }, { type: i1.MediaMarshaller }]; } });\nclass DefaultLayoutAlignDirective extends LayoutAlignDirective {\n    constructor() {\n        super(...arguments);\n        this.inputs = inputs;\n    }\n}\nDefaultLayoutAlignDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DefaultLayoutAlignDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nDefaultLayoutAlignDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: DefaultLayoutAlignDirective, 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\", \"fxLayoutAlign.xs\": \"fxLayoutAlign.xs\", \"fxLayoutAlign.sm\": \"fxLayoutAlign.sm\", \"fxLayoutAlign.md\": \"fxLayoutAlign.md\", \"fxLayoutAlign.lg\": \"fxLayoutAlign.lg\", \"fxLayoutAlign.xl\": \"fxLayoutAlign.xl\", \"fxLayoutAlign.lt-sm\": \"fxLayoutAlign.lt-sm\", \"fxLayoutAlign.lt-md\": \"fxLayoutAlign.lt-md\", \"fxLayoutAlign.lt-lg\": \"fxLayoutAlign.lt-lg\", \"fxLayoutAlign.lt-xl\": \"fxLayoutAlign.lt-xl\", \"fxLayoutAlign.gt-xs\": \"fxLayoutAlign.gt-xs\", \"fxLayoutAlign.gt-sm\": \"fxLayoutAlign.gt-sm\", \"fxLayoutAlign.gt-md\": \"fxLayoutAlign.gt-md\", \"fxLayoutAlign.gt-lg\": \"fxLayoutAlign.gt-lg\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DefaultLayoutAlignDirective, decorators: [{\n            type: Directive,\n            args: [{ selector, inputs }]\n        }] });\nconst layoutAlignHorizontalCache = new Map();\nconst layoutAlignVerticalCache = new Map();\nconst layoutAlignHorizontalRevCache = new Map();\nconst layoutAlignVerticalRevCache = new Map();\nconst layoutAlignHorizontalInlineCache = new Map();\nconst layoutAlignVerticalInlineCache = new Map();\nconst layoutAlignHorizontalRevInlineCache = new Map();\nconst layoutAlignVerticalRevInlineCache = 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 */\nconst ALL_DIRECTIVES = [\n    DefaultLayoutDirective,\n    DefaultLayoutGapDirective,\n    DefaultLayoutAlignDirective,\n    DefaultFlexOrderDirective,\n    DefaultFlexOffsetDirective,\n    FlexFillDirective,\n    DefaultFlexAlignDirective,\n    DefaultFlexDirective,\n];\n/**\n * *****************************************************************\n * Define module for the Flex API\n * *****************************************************************\n */\nclass FlexModule {\n}\nFlexModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFlexModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexModule, declarations: [DefaultLayoutDirective,\n        DefaultLayoutGapDirective,\n        DefaultLayoutAlignDirective,\n        DefaultFlexOrderDirective,\n        DefaultFlexOffsetDirective,\n        FlexFillDirective,\n        DefaultFlexAlignDirective,\n        DefaultFlexDirective], imports: [CoreModule, BidiModule], exports: [DefaultLayoutDirective,\n        DefaultLayoutGapDirective,\n        DefaultLayoutAlignDirective,\n        DefaultFlexOrderDirective,\n        DefaultFlexOffsetDirective,\n        FlexFillDirective,\n        DefaultFlexAlignDirective,\n        DefaultFlexDirective] });\nFlexModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexModule, imports: [[CoreModule, BidiModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: FlexModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [CoreModule, BidiModule],\n                    declarations: [...ALL_DIRECTIVES],\n                    exports: [...ALL_DIRECTIVES]\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 * Generated bundle index. Do not edit.\n */\n\nexport { DefaultFlexAlignDirective, DefaultFlexDirective, DefaultFlexOffsetDirective, DefaultFlexOrderDirective, DefaultLayoutAlignDirective, DefaultLayoutDirective, DefaultLayoutGapDirective, FlexAlignDirective, FlexAlignStyleBuilder, FlexDirective, FlexFillDirective, FlexFillStyleBuilder, FlexModule, FlexOffsetDirective, FlexOffsetStyleBuilder, FlexOrderDirective, FlexOrderStyleBuilder, FlexStyleBuilder, LayoutAlignDirective, LayoutAlignStyleBuilder, LayoutDirective, LayoutGapDirective, LayoutGapStyleBuilder, LayoutStyleBuilder };\n"]},"metadata":{},"sourceType":"module"}