{"version":3,"file":"ngbracket-ngx-layout-flex.mjs","sources":["../../../../projects/libs/flex-layout/flex/flex-align/flex-align.ts","../../../../projects/libs/flex-layout/flex/flex-fill/flex-fill.ts","../../../../projects/libs/flex-layout/flex/flex-offset/flex-offset.ts","../../../../projects/libs/flex-layout/flex/flex-order/flex-order.ts","../../../../projects/libs/flex-layout/flex/flex/flex.ts","../../../../projects/libs/flex-layout/flex/layout-align/layout-align.ts","../../../../projects/libs/flex-layout/flex/layout-gap/layout-gap.ts","../../../../projects/libs/flex-layout/flex/layout/layout.ts","../../../../projects/libs/flex-layout/flex/module.ts","../../../../projects/libs/flex-layout/flex/ngbracket-ngx-layout-flex.ts"],"sourcesContent":["import { Directive, ElementRef, Injectable } from '@angular/core';\nimport {\n  BaseDirective2,\n  MediaMarshaller,\n  StyleBuilder,\n  StyleDefinition,\n  StyleUtils,\n} from '@ngbracket/ngx-layout/core';\n\n@Injectable({ providedIn: 'root' })\nexport class FlexAlignStyleBuilder extends StyleBuilder {\n  buildStyles(input: string) {\n    input = input || 'stretch';\n    const styles: StyleDefinition = {};\n\n    // Cross-axis\n    switch (input) {\n      case 'start':\n        styles['align-self'] = 'flex-start';\n        break;\n      case 'end':\n        styles['align-self'] = 'flex-end';\n        break;\n      default:\n        styles['align-self'] = input;\n        break;\n    }\n\n    return styles;\n  }\n}\n\nconst inputs = [\n  'fxFlexAlign',\n  'fxFlexAlign.xs',\n  'fxFlexAlign.sm',\n  'fxFlexAlign.md',\n  'fxFlexAlign.lg',\n  'fxFlexAlign.xl',\n  'fxFlexAlign.lt-sm',\n  'fxFlexAlign.lt-md',\n  'fxFlexAlign.lt-lg',\n  'fxFlexAlign.lt-xl',\n  'fxFlexAlign.gt-xs',\n  'fxFlexAlign.gt-sm',\n  'fxFlexAlign.gt-md',\n  'fxFlexAlign.gt-lg',\n];\nconst selector = `\n  [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md],\n  [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md],\n  [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm],\n  [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg]\n`;\n\n/**\n * 'flex-align' flexbox styling directive\n * Allows element-specific overrides for cross-axis alignments in a layout container\n * @see https://css-tricks.com/almanac/properties/a/align-self/\n */\n@Directive({ inputs, selector })\nexport class FlexAlignDirective extends BaseDirective2 {\n  protected override DIRECTIVE_KEY = 'flex-align';\n  protected override inputs = inputs;\n\n  constructor(\n    elRef: ElementRef,\n    styleUtils: StyleUtils,\n    styleBuilder: FlexAlignStyleBuilder,\n    marshal: MediaMarshaller,\n  ) {\n    super(elRef, styleBuilder, styleUtils, marshal);\n    this.init();\n  }\n\n  protected override styleCache = flexAlignCache;\n}\n\nconst flexAlignCache: Map<string, StyleDefinition> = new Map();\n\n/**\n * @deprecated The DefaultFlexAlignDirective will be removed in version 21.\n * Use FlexAlignDirective directly instead.\n */\n@Directive({ selector, inputs })\nexport class DefaultFlexAlignDirective extends FlexAlignDirective {\n  protected override inputs = inputs;\n}\n","import { Directive, ElementRef, Injectable } from '@angular/core';\nimport {\n  BaseDirective2,\n  MediaMarshaller,\n  StyleBuilder,\n  StyleDefinition,\n  StyleUtils,\n} from '@ngbracket/ngx-layout/core';\n\nconst FLEX_FILL_CSS = {\n  margin: 0,\n  width: '100%',\n  height: '100%',\n  'min-width': '100%',\n  'min-height': '100%',\n};\n\n@Injectable({ providedIn: 'root' })\nexport class FlexFillStyleBuilder extends StyleBuilder {\n  buildStyles(_input: string) {\n    return FLEX_FILL_CSS;\n  }\n}\n\n/**\n * 'fxFill' flexbox styling directive\n *  Maximizes width and height of element in a layout container\n *\n *  NOTE: fxFill is NOT responsive API!!\n */\n@Directive({\n  selector: `[fxFill], [fxFlexFill]`,\n})\nexport class FlexFillDirective extends BaseDirective2 {\n  constructor(\n    elRef: ElementRef,\n    styleUtils: StyleUtils,\n    styleBuilder: FlexFillStyleBuilder,\n    marshal: MediaMarshaller,\n  ) {\n    super(elRef, styleBuilder, styleUtils, marshal);\n    this.addStyles('');\n  }\n\n  protected override styleCache = flexFillCache;\n}\n\nconst flexFillCache: Map<string, StyleDefinition> = new Map();\n","import { Directionality } from '@angular/cdk/bidi';\nimport {\n  Directive,\n  ElementRef,\n  Inject,\n  Injectable,\n  OnChanges,\n} from '@angular/core';\nimport { isFlowHorizontal } from '@ngbracket/ngx-layout/_private-utils';\nimport {\n  BaseDirective2,\n  LAYOUT_CONFIG,\n  LayoutConfigOptions,\n  MediaMarshaller,\n  StyleBuilder,\n  StyleDefinition,\n  StyleUtils,\n  ɵmultiply as multiply,\n} from '@ngbracket/ngx-layout/core';\nimport { takeUntil } from 'rxjs/operators';\n\nexport interface FlexOffsetParent {\n  layout: string;\n  isRtl: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class FlexOffsetStyleBuilder extends StyleBuilder {\n  constructor(@Inject(LAYOUT_CONFIG) private _config: LayoutConfigOptions) {\n    super();\n  }\n\n  buildStyles(offset: string, parent: FlexOffsetParent) {\n    offset ||= '0';\n    offset = multiply(offset, this._config.multiplier);\n    const isPercent = String(offset).indexOf('%') > -1;\n    const isPx = String(offset).indexOf('px') > -1;\n    if (!isPx && !isPercent && !isNaN(+offset)) {\n      offset = `${offset}%`;\n    }\n    const horizontalLayoutKey = parent.isRtl ? 'margin-right' : 'margin-left';\n    const styles: StyleDefinition = isFlowHorizontal(parent.layout)\n      ? { [horizontalLayoutKey]: offset }\n      : { 'margin-top': offset };\n\n    return styles;\n  }\n}\n\nconst inputs = [\n  'fxFlexOffset',\n  'fxFlexOffset.xs',\n  'fxFlexOffset.sm',\n  'fxFlexOffset.md',\n  'fxFlexOffset.lg',\n  'fxFlexOffset.xl',\n  'fxFlexOffset.lt-sm',\n  'fxFlexOffset.lt-md',\n  'fxFlexOffset.lt-lg',\n  'fxFlexOffset.lt-xl',\n  'fxFlexOffset.gt-xs',\n  'fxFlexOffset.gt-sm',\n  'fxFlexOffset.gt-md',\n  'fxFlexOffset.gt-lg',\n];\nconst selector = `\n  [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md],\n  [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md],\n  [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm],\n  [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg]\n`;\n\n/**\n * 'flex-offset' flexbox styling directive\n * Configures the 'margin-left' of the element in a layout container\n */\n@Directive({ inputs, selector })\nexport class FlexOffsetDirective extends BaseDirective2 implements OnChanges {\n  protected override DIRECTIVE_KEY = 'flex-offset';\n  protected override inputs = inputs;\n\n  constructor(\n    elRef: ElementRef,\n    protected directionality: Directionality,\n    styleBuilder: FlexOffsetStyleBuilder,\n    marshal: MediaMarshaller,\n    styler: StyleUtils,\n  ) {\n    super(elRef, styleBuilder, styler, marshal);\n    this.init([this.directionality.change]);\n    // Parent DOM `layout-gap` with affect the nested child with `flex-offset`\n    if (this.parentElement) {\n      this.marshal\n        .trackValue(this.parentElement, 'layout-gap')\n        .pipe(takeUntil(this.destroySubject))\n        .subscribe(this.triggerUpdate.bind(this));\n    }\n  }\n\n  // *********************************************\n  // Protected methods\n  // *********************************************\n\n  /**\n   * Using the current fxFlexOffset value, update the inline CSS\n   * NOTE: this will assign `margin-left` if the parent flex-direction == 'row',\n   *       otherwise `margin-top` is used for the offset.\n   */\n  protected override updateWithValue(value: string | number = ''): void {\n    // The flex-direction of this element's flex container. Defaults to 'row'.\n    const layout = this.getFlexFlowDirection(this.parentElement!, true);\n    const isRtl = this.directionality.value === 'rtl';\n    if (layout === 'row' && isRtl) {\n      this.styleCache = flexOffsetCacheRowRtl;\n    } else if (layout === 'row' && !isRtl) {\n      this.styleCache = flexOffsetCacheRowLtr;\n    } else if (layout === 'column' && isRtl) {\n      this.styleCache = flexOffsetCacheColumnRtl;\n    } else if (layout === 'column' && !isRtl) {\n      this.styleCache = flexOffsetCacheColumnLtr;\n    }\n    this.addStyles(value + '', { layout, isRtl });\n  }\n}\n\n/**\n * @deprecated The DefaultFlexOffsetDirective will be removed in version 21.\n * Use FlexOffsetDirective directly instead.\n */\n@Directive({ selector, inputs })\nexport class DefaultFlexOffsetDirective extends FlexOffsetDirective {\n  protected override inputs = inputs;\n}\n\nconst flexOffsetCacheRowRtl: Map<string, StyleDefinition> = new Map();\nconst flexOffsetCacheColumnRtl: Map<string, StyleDefinition> = new Map();\nconst flexOffsetCacheRowLtr: Map<string, StyleDefinition> = new Map();\nconst flexOffsetCacheColumnLtr: Map<string, StyleDefinition> = new Map();\n","import { Directive, ElementRef, Injectable, OnChanges } from '@angular/core';\nimport {\n  BaseDirective2,\n  MediaMarshaller,\n  StyleBuilder,\n  StyleDefinition,\n  StyleUtils,\n} from '@ngbracket/ngx-layout/core';\n\n@Injectable({ providedIn: 'root' })\nexport class FlexOrderStyleBuilder extends StyleBuilder {\n  buildStyles(value: string) {\n    return { order: (value && parseInt(value, 10)) || '' };\n  }\n}\n\nconst inputs = [\n  'fxFlexOrder',\n  'fxFlexOrder.xs',\n  'fxFlexOrder.sm',\n  'fxFlexOrder.md',\n  'fxFlexOrder.lg',\n  'fxFlexOrder.xl',\n  'fxFlexOrder.lt-sm',\n  'fxFlexOrder.lt-md',\n  'fxFlexOrder.lt-lg',\n  'fxFlexOrder.lt-xl',\n  'fxFlexOrder.gt-xs',\n  'fxFlexOrder.gt-sm',\n  'fxFlexOrder.gt-md',\n  'fxFlexOrder.gt-lg',\n];\nconst selector = `\n  [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md],\n  [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md],\n  [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm],\n  [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg]\n`;\n\n/**\n * 'flex-order' flexbox styling directive\n * Configures the positional ordering of the element in a sorted layout container\n * @see https://css-tricks.com/almanac/properties/o/order/\n */\n@Directive({ inputs, selector })\nexport class FlexOrderDirective extends BaseDirective2 implements OnChanges {\n  protected override DIRECTIVE_KEY = 'flex-order';\n  protected override inputs = inputs;\n\n  constructor(\n    elRef: ElementRef,\n    styleUtils: StyleUtils,\n    styleBuilder: FlexOrderStyleBuilder,\n    marshal: MediaMarshaller,\n  ) {\n    super(elRef, styleBuilder, styleUtils, marshal);\n    this.init();\n  }\n\n  protected override styleCache = flexOrderCache;\n\n  override updateWithValue(input: string) {\n    super.updateWithValue(input);\n\n    if (this.parentElement) {\n      this.marshal.triggerUpdate(this.parentElement, 'layout-gap');\n    }\n  }\n}\n\nconst flexOrderCache: Map<string, StyleDefinition> = new Map();\n/**\n * @deprecated The DefaultFlexOrderDirective will be removed in version 21.\n * Use FlexOrderDirective directly instead.\n */\n@Directive({ selector, inputs })\nexport class DefaultFlexOrderDirective extends FlexOrderDirective {\n  protected override inputs = inputs;\n}\n","import {\n  Directive,\n  ElementRef,\n  Inject,\n  Injectable,\n  Input,\n  OnInit,\n} from '@angular/core';\nimport {\n  BaseDirective2,\n  ElementMatcher,\n  LAYOUT_CONFIG,\n  LayoutConfigOptions,\n  MediaMarshaller,\n  StyleBuilder,\n  StyleDefinition,\n  StyleUtils,\n  validateBasis,\n} from '@ngbracket/ngx-layout/core';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n  extendObject,\n  isFlowHorizontal,\n} from '@ngbracket/ngx-layout/_private-utils';\n\ninterface FlexBuilderParent {\n  direction: string;\n  hasWrap: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class FlexStyleBuilder extends StyleBuilder {\n  constructor(\n    @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n  ) {\n    super();\n  }\n  buildStyles(input: string, parent: FlexBuilderParent) {\n    let [grow, shrink, ...basisParts]: (string | number)[] = input.split(' ');\n    let basis = basisParts.join(' ');\n\n    // The flex-direction of this element's flex container. Defaults to 'row'.\n    const direction =\n      parent.direction.indexOf('column') > -1 ? 'column' : 'row';\n\n    const max = isFlowHorizontal(direction) ? 'max-width' : 'max-height';\n    const min = isFlowHorizontal(direction) ? 'min-width' : 'min-height';\n\n    const hasCalc = String(basis).indexOf('calc') > -1;\n    const usingCalc = hasCalc || basis === 'auto';\n    const isPercent = String(basis).indexOf('%') > -1 && !hasCalc;\n    const hasUnits =\n      String(basis).indexOf('px') > -1 ||\n      String(basis).indexOf('rem') > -1 ||\n      String(basis).indexOf('em') > -1 ||\n      String(basis).indexOf('vw') > -1 ||\n      String(basis).indexOf('vh') > -1;\n\n    let isValue = hasCalc || hasUnits;\n\n    grow = grow == '0' ? 0 : grow;\n    shrink = shrink == '0' ? 0 : shrink;\n\n    // make box inflexible when shrink and grow are both zero\n    // should not set a min when the grow is zero\n    // should not set a max when the shrink is zero\n    const isFixed = !grow && !shrink;\n\n    let css: { [key: string]: string | number | null } = {};\n\n    // flex-basis allows you to specify the initial/starting main-axis size of the element,\n    // before anything else is computed. It can either be a percentage or an absolute value.\n    // It is, however, not the breaking point for flex-grow/shrink properties\n    //\n    // flex-grow can be seen as this:\n    //   0: Do not stretch. Either size to element's content width, or obey 'flex-basis'.\n    //   1: (Default value). Stretch; will be the same size to all other flex items on\n    //       the same row since they have a default value of 1.\n    //   ≥2 (integer n): Stretch. Will be n times the size of other elements\n    //      with 'flex-grow: 1' on the same row.\n\n    // Use `null` to clear existing styles.\n    const clearStyles = {\n      'max-width': null,\n      'max-height': null,\n      'min-width': null,\n      'min-height': null,\n    };\n    switch (basis || '') {\n      case '':\n        const useColumnBasisZero =\n          this.layoutConfig.useColumnBasisZero !== false;\n        basis =\n          direction === 'row'\n            ? '0%'\n            : useColumnBasisZero\n              ? '0.000000001px'\n              : 'auto';\n        break;\n      case 'initial': // default\n      case 'nogrow':\n        grow = 0;\n        basis = 'auto';\n        break;\n      case 'grow':\n        basis = '100%';\n        break;\n      case 'noshrink':\n        shrink = 0;\n        basis = 'auto';\n        break;\n      case 'auto':\n        break;\n      case 'none':\n        grow = 0;\n        shrink = 0;\n        basis = 'auto';\n        break;\n      default:\n        // Defaults to percentage sizing unless `px` is explicitly set\n        if (!isValue && !isPercent && !isNaN(basis as any)) {\n          basis = basis + '%';\n        }\n\n        // Fix for issue 280\n        if (basis === '0%') {\n          isValue = true;\n        }\n\n        if (basis === '0px') {\n          basis = '0%';\n        }\n\n        // fix issue #5345\n        if (hasCalc) {\n          css = extendObject(clearStyles, {\n            'flex-grow': grow,\n            'flex-shrink': shrink,\n            'flex-basis': isValue ? basis : '100%',\n          });\n        } else {\n          css = extendObject(clearStyles, {\n            flex: `${grow} ${shrink} ${isValue ? basis : '100%'}`,\n          });\n        }\n\n        break;\n    }\n\n    if (!(css['flex'] || css['flex-grow'])) {\n      if (hasCalc) {\n        css = extendObject(clearStyles, {\n          'flex-grow': grow,\n          'flex-shrink': shrink,\n          'flex-basis': basis,\n        });\n      } else {\n        css = extendObject(clearStyles, {\n          flex: `${grow} ${shrink} ${basis}`,\n        });\n      }\n    }\n\n    // Fix for issues 277, 534, and 728\n    if (\n      basis !== '0%' &&\n      basis !== '0px' &&\n      basis !== '0.000000001px' &&\n      basis !== 'auto'\n    ) {\n      css[min] = isFixed || (isValue && grow) ? basis : null;\n      css[max] = isFixed || (!usingCalc && shrink) ? basis : null;\n    }\n\n    // Fix for issue 528\n    if (!css[min] && !css[max]) {\n      if (hasCalc) {\n        css = extendObject(clearStyles, {\n          'flex-grow': grow,\n          'flex-shrink': shrink,\n          'flex-basis': basis,\n        });\n      } else {\n        css = extendObject(clearStyles, {\n          flex: `${grow} ${shrink} ${basis}`,\n        });\n      }\n    } else {\n      // Fix for issue 660\n      if (parent.hasWrap) {\n        css[hasCalc ? 'flex-basis' : 'flex'] = css[max]\n          ? hasCalc\n            ? css[max]\n            : `${grow} ${shrink} ${css[max]}`\n          : hasCalc\n            ? css[min]\n            : `${grow} ${shrink} ${css[min]}`;\n      }\n    }\n\n    return extendObject(css, { 'box-sizing': 'border-box' }) as StyleDefinition;\n  }\n}\n\nconst inputs = [\n  'fxFlex',\n  'fxFlex.xs',\n  'fxFlex.sm',\n  'fxFlex.md',\n  'fxFlex.lg',\n  'fxFlex.xl',\n  'fxFlex.lt-sm',\n  'fxFlex.lt-md',\n  'fxFlex.lt-lg',\n  'fxFlex.lt-xl',\n  'fxFlex.gt-xs',\n  'fxFlex.gt-sm',\n  'fxFlex.gt-md',\n  'fxFlex.gt-lg',\n];\nconst selector = `\n  [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md],\n  [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md],\n  [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm],\n  [fxFlex.gt-md], [fxFlex.gt-lg]\n`;\n\n/**\n * Directive to control the size of a flex item using flex-basis, flex-grow, and flex-shrink.\n * Corresponds to the css `flex` shorthand property.\n *\n * @see https://css-tricks.com/snippets/css/a-guide-to-flexbox/\n */\n@Directive({ inputs, selector })\nexport class FlexDirective extends BaseDirective2 implements OnInit {\n  protected override DIRECTIVE_KEY = 'flex';\n  protected override inputs = inputs;\n  protected direction?: string = undefined;\n  protected wrap?: boolean = undefined;\n\n  @Input('fxShrink')\n  get shrink(): string {\n    return this.flexShrink;\n  }\n  set shrink(value: string) {\n    this.flexShrink = value || '1';\n    this.triggerReflow();\n  }\n\n  @Input('fxGrow')\n  get grow(): string {\n    return this.flexGrow;\n  }\n  set grow(value: string) {\n    this.flexGrow = value || '1';\n    this.triggerReflow();\n  }\n\n  protected flexGrow = '1';\n  protected flexShrink = '1';\n\n  constructor(\n    elRef: ElementRef,\n    styleUtils: StyleUtils,\n    @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n    styleBuilder: FlexStyleBuilder,\n    protected override marshal: MediaMarshaller,\n  ) {\n    super(elRef, styleBuilder, styleUtils, marshal);\n    this.init();\n  }\n\n  ngOnInit() {\n    if (this.parentElement) {\n      this.marshal\n        .trackValue(this.parentElement, 'layout')\n        .pipe(takeUntil(this.destroySubject))\n        .subscribe(this.onLayoutChange.bind(this));\n      this.marshal\n        .trackValue(this.nativeElement, 'layout-align')\n        .pipe(takeUntil(this.destroySubject))\n        .subscribe(this.triggerReflow.bind(this));\n    }\n  }\n\n  /**\n   * Caches the parent container's 'flex-direction' and updates the element's style.\n   * Used as a handler for layout change events from the parent flex container.\n   */\n  protected onLayoutChange(matcher: ElementMatcher) {\n    const layout: string = matcher.value;\n    const layoutParts = layout.split(' ');\n    this.direction = layoutParts[0];\n    this.wrap = layoutParts[1] !== undefined && layoutParts[1] === 'wrap';\n    this.triggerUpdate();\n  }\n\n  /** Input to this is exclusively the basis input value */\n  protected override updateWithValue(value: string) {\n    const addFlexToParent = this.layoutConfig.addFlexToParent !== false;\n    if (this.direction === undefined) {\n      this.direction = this.getFlexFlowDirection(\n        this.parentElement!,\n        addFlexToParent,\n      );\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    } else if (isHorizontal && !hasWrap) {\n      this.styleCache = flexRowCache;\n    } else if (!isHorizontal && hasWrap) {\n      this.styleCache = flexColumnWrapCache;\n    } else if (!isHorizontal && !hasWrap) {\n      this.styleCache = flexColumnCache;\n    }\n    const basis = String(value).replace(';', '');\n    const parts = validateBasis(basis, this.flexGrow, this.flexShrink);\n    this.addStyles(parts.join(' '), { direction, hasWrap });\n  }\n\n  /** Trigger a style reflow, usually based on a shrink/grow input event */\n  protected triggerReflow() {\n    const activatedValue = this.activatedValue;\n    if (activatedValue !== undefined) {\n      const parts = validateBasis(\n        activatedValue + '',\n        this.flexGrow,\n        this.flexShrink,\n      );\n      this.marshal.updateElement(\n        this.nativeElement,\n        this.DIRECTIVE_KEY,\n        parts.join(' '),\n      );\n    }\n  }\n}\n\n/**\n * @deprecated The DefaultFlexDirective will be removed in version 21.\n * Use FlexDirective directly instead.\n */\n@Directive({ inputs, selector })\nexport class DefaultFlexDirective extends FlexDirective {\n  protected override inputs = inputs;\n}\n\nconst flexRowCache: Map<string, StyleDefinition> = new Map();\nconst flexColumnCache: Map<string, StyleDefinition> = new Map();\nconst flexRowWrapCache: Map<string, StyleDefinition> = new Map();\nconst flexColumnWrapCache: Map<string, StyleDefinition> = new Map();\n","import { Directive, ElementRef, Injectable } from '@angular/core';\nimport {\n  BaseDirective2,\n  ElementMatcher,\n  MediaMarshaller,\n  StyleBuilder,\n  StyleDefinition,\n  StyleUtils,\n} from '@ngbracket/ngx-layout/core';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n  extendObject,\n  isFlowHorizontal,\n  LAYOUT_VALUES,\n} from '@ngbracket/ngx-layout/_private-utils';\n\nexport interface LayoutAlignParent {\n  layout: string;\n  inline: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class LayoutAlignStyleBuilder extends StyleBuilder {\n  buildStyles(align: string, parent: LayoutAlignParent) {\n    const css: StyleDefinition = {},\n      [mainAxis, crossAxis] = align.split(' ');\n\n    // Main axis\n    switch (mainAxis) {\n      case 'center':\n        css['justify-content'] = 'center';\n        break;\n      case 'space-around':\n        css['justify-content'] = 'space-around';\n        break;\n      case 'space-between':\n        css['justify-content'] = 'space-between';\n        break;\n      case 'space-evenly':\n        css['justify-content'] = 'space-evenly';\n        break;\n      case 'end':\n      case 'flex-end':\n        css['justify-content'] = 'flex-end';\n        break;\n      case 'start':\n      case 'flex-start':\n      default: // default main axis\n        css['justify-content'] = 'flex-start';\n        break;\n    }\n\n    // Cross-axis\n    switch (crossAxis) {\n      case 'start':\n      case 'flex-start':\n        css['align-items'] = css['align-content'] = 'flex-start';\n        break;\n      case 'center':\n        css['align-items'] = css['align-content'] = 'center';\n        break;\n      case 'end':\n      case 'flex-end':\n        css['align-items'] = css['align-content'] = 'flex-end';\n        break;\n      case 'space-between':\n        css['align-content'] = 'space-between';\n        css['align-items'] = 'stretch';\n        break;\n      case 'space-around':\n        css['align-content'] = 'space-around';\n        css['align-items'] = 'stretch';\n        break;\n      case 'baseline':\n        css['align-content'] = 'stretch';\n        css['align-items'] = 'baseline';\n        break;\n      case 'stretch':\n      default: // 'stretch'\n        // default cross axis\n        css['align-items'] = css['align-content'] = 'stretch';\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':\n        crossAxis === 'stretch'\n          ? !isFlowHorizontal(parent.layout)\n            ? '100%'\n            : null\n          : null,\n      'max-height':\n        crossAxis === 'stretch'\n          ? isFlowHorizontal(parent.layout)\n            ? '100%'\n            : null\n          : null,\n    }) as StyleDefinition;\n  }\n}\n\nconst inputs = [\n  'fxLayoutAlign',\n  'fxLayoutAlign.xs',\n  'fxLayoutAlign.sm',\n  'fxLayoutAlign.md',\n  'fxLayoutAlign.lg',\n  'fxLayoutAlign.xl',\n  'fxLayoutAlign.lt-sm',\n  'fxLayoutAlign.lt-md',\n  'fxLayoutAlign.lt-lg',\n  'fxLayoutAlign.lt-xl',\n  'fxLayoutAlign.gt-xs',\n  'fxLayoutAlign.gt-sm',\n  'fxLayoutAlign.gt-md',\n  'fxLayoutAlign.gt-lg',\n];\nconst selector = `\n  [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md],\n  [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md],\n  [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm],\n  [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]\n`;\n\n/**\n * 'layout-align' flexbox styling directive\n *  Defines positioning of child elements along main and cross axis in a layout container\n *  Optional values: {main-axis} values or {main-axis cross-axis} value pairs\n *\n *  @see https://css-tricks.com/almanac/properties/j/justify-content/\n *  @see https://css-tricks.com/almanac/properties/a/align-items/\n *  @see https://css-tricks.com/almanac/properties/a/align-content/\n */\n@Directive({ inputs, selector })\nexport class LayoutAlignDirective extends BaseDirective2 {\n  protected override DIRECTIVE_KEY = 'layout-align';\n  protected override inputs = inputs;\n  protected layout = 'row'; // default flex-direction\n  protected inline = false; // default inline value\n\n  constructor(\n    elRef: ElementRef,\n    styleUtils: StyleUtils,\n    styleBuilder: LayoutAlignStyleBuilder,\n    marshal: MediaMarshaller,\n  ) {\n    super(elRef, styleBuilder, styleUtils, marshal);\n    this.init();\n    this.marshal\n      .trackValue(this.nativeElement, 'layout')\n      .pipe(takeUntil(this.destroySubject))\n      .subscribe(this.onLayoutChange.bind(this));\n  }\n\n  // *********************************************\n  // Protected methods\n  // *********************************************\n\n  /**\n   *\n   */\n  protected override updateWithValue(value: string) {\n    const layout = this.layout || 'row';\n    const inline = this.inline;\n    if (layout === 'row' && inline) {\n      this.styleCache = layoutAlignHorizontalInlineCache;\n    } else if (layout === 'row' && !inline) {\n      this.styleCache = layoutAlignHorizontalCache;\n    } else if (layout === 'row-reverse' && inline) {\n      this.styleCache = layoutAlignHorizontalRevInlineCache;\n    } else if (layout === 'row-reverse' && !inline) {\n      this.styleCache = layoutAlignHorizontalRevCache;\n    } else if (layout === 'column' && inline) {\n      this.styleCache = layoutAlignVerticalInlineCache;\n    } else if (layout === 'column' && !inline) {\n      this.styleCache = layoutAlignVerticalCache;\n    } else if (layout === 'column-reverse' && inline) {\n      this.styleCache = layoutAlignVerticalRevInlineCache;\n    } else if (layout === 'column-reverse' && !inline) {\n      this.styleCache = layoutAlignVerticalRevCache;\n    }\n    this.addStyles(value, { layout, inline });\n  }\n\n  /**\n   * Cache the parent container 'flex-direction' and update the 'flex' styles\n   */\n  protected onLayoutChange(matcher: ElementMatcher) {\n    const layoutKeys: string[] = matcher.value.split(' ');\n    this.layout = layoutKeys[0];\n    this.inline = matcher.value.includes('inline');\n    if (!LAYOUT_VALUES.find((x) => x === this.layout)) {\n      this.layout = 'row';\n    }\n    this.triggerUpdate();\n  }\n}\n\n/**\n * @deprecated The DefaultLayoutAlignDirective will be removed in version 21.\n * Use LayoutAlignDirective directly instead.\n */\n@Directive({ selector, inputs })\nexport class DefaultLayoutAlignDirective extends LayoutAlignDirective {\n  protected override inputs = inputs;\n}\n\nconst layoutAlignHorizontalCache: Map<string, StyleDefinition> = new Map();\nconst layoutAlignVerticalCache: Map<string, StyleDefinition> = new Map();\nconst layoutAlignHorizontalRevCache: Map<string, StyleDefinition> = new Map();\nconst layoutAlignVerticalRevCache: Map<string, StyleDefinition> = new Map();\nconst layoutAlignHorizontalInlineCache: Map<string, StyleDefinition> =\n  new Map();\nconst layoutAlignVerticalInlineCache: Map<string, StyleDefinition> = new Map();\nconst layoutAlignHorizontalRevInlineCache: Map<string, StyleDefinition> =\n  new Map();\nconst layoutAlignVerticalRevInlineCache: Map<string, StyleDefinition> =\n  new Map();\n","/* eslint-disable prefer-const */\nimport { Directionality } from '@angular/cdk/bidi';\nimport {\n  AfterContentInit,\n  Directive,\n  ElementRef,\n  Inject,\n  Injectable,\n  NgZone,\n  OnDestroy,\n} from '@angular/core';\nimport { LAYOUT_VALUES } from '@ngbracket/ngx-layout/_private-utils';\nimport {\n  BaseDirective2,\n  ElementMatcher,\n  LAYOUT_CONFIG,\n  LayoutConfigOptions,\n  MediaMarshaller,\n  StyleBuilder,\n  StyleDefinition,\n  StyleUtils,\n  ɵmultiply as multiply,\n} from '@ngbracket/ngx-layout/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport interface LayoutGapParent {\n  directionality: string;\n  items: HTMLElement[];\n  layout: string;\n}\n\nconst CLEAR_MARGIN_CSS = {\n  'margin-left': null,\n  'margin-right': null,\n  'margin-top': null,\n  'margin-bottom': null,\n};\n\n@Injectable({ providedIn: 'root' })\nexport class LayoutGapStyleBuilder extends StyleBuilder {\n  constructor(\n    private _styler: StyleUtils,\n    @Inject(LAYOUT_CONFIG) private _config: LayoutConfigOptions,\n  ) {\n    super();\n  }\n\n  buildStyles(gapValue: string, parent: LayoutGapParent) {\n    if (gapValue.endsWith(GRID_SPECIFIER)) {\n      gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n      gapValue = multiply(gapValue, this._config.multiplier);\n\n      // Add the margin to the host element\n      return buildGridMargin(gapValue, parent.directionality);\n    } else {\n      return {};\n    }\n  }\n\n  override sideEffect(\n    gapValue: string,\n    _styles: StyleDefinition,\n    parent: LayoutGapParent,\n  ) {\n    const items = parent.items;\n    if (gapValue.endsWith(GRID_SPECIFIER)) {\n      gapValue = gapValue.slice(0, gapValue.indexOf(GRID_SPECIFIER));\n      gapValue = multiply(gapValue, this._config.multiplier);\n      // For each `element` children, set the padding\n      const paddingStyles = buildGridPadding(gapValue, parent.directionality);\n      this._styler.applyStyleToElements(paddingStyles, parent.items);\n    } else {\n      gapValue = multiply(gapValue, this._config.multiplier);\n      gapValue = this.addFallbackUnit(gapValue);\n\n      const lastItem = items.pop()!;\n\n      // For each `element` children EXCEPT the last,\n      // set the margin right/bottom styles...\n      const gapCss = buildGapCSS(gapValue, parent);\n      this._styler.applyStyleToElements(gapCss, items);\n\n      // Clear all gaps for all visible elements\n      this._styler.applyStyleToElements(CLEAR_MARGIN_CSS, [lastItem]);\n    }\n  }\n\n  private addFallbackUnit(value: string) {\n    return !isNaN(+value) ? `${value}${this._config.defaultUnit}` : value;\n  }\n}\n\nconst inputs = [\n  'fxLayoutGap',\n  'fxLayoutGap.xs',\n  'fxLayoutGap.sm',\n  'fxLayoutGap.md',\n  'fxLayoutGap.lg',\n  'fxLayoutGap.xl',\n  'fxLayoutGap.lt-sm',\n  'fxLayoutGap.lt-md',\n  'fxLayoutGap.lt-lg',\n  'fxLayoutGap.lt-xl',\n  'fxLayoutGap.gt-xs',\n  'fxLayoutGap.gt-sm',\n  'fxLayoutGap.gt-md',\n  'fxLayoutGap.gt-lg',\n];\nconst selector = `\n  [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md],\n  [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md],\n  [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm],\n  [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]\n`;\n\n/**\n * 'layout-padding' styling directive\n *  Defines padding of child elements in a layout container\n */\n@Directive({ inputs, selector })\nexport class LayoutGapDirective\n  extends BaseDirective2\n  implements AfterContentInit, OnDestroy\n{\n  protected layout = 'row'; // default flex-direction\n  protected override DIRECTIVE_KEY = 'layout-gap';\n  protected override inputs = inputs;\n  protected observerSubject = new Subject<void>();\n\n  /** Special accessor to query for all child 'element' nodes regardless of type, class, etc */\n  protected get childrenNodes(): HTMLElement[] {\n    const obj = this.nativeElement.children;\n    const buffer: any[] = [];\n\n    // iterate backwards ensuring that length is an UInt32\n    for (let i = obj.length; i--; ) {\n      buffer[i] = obj[i];\n    }\n    return buffer;\n  }\n\n  constructor(\n    elRef: ElementRef,\n    protected zone: NgZone,\n    protected directionality: Directionality,\n    protected styleUtils: StyleUtils,\n    styleBuilder: LayoutGapStyleBuilder,\n    marshal: MediaMarshaller,\n  ) {\n    super(elRef, styleBuilder, styleUtils, marshal);\n    const extraTriggers = [\n      this.directionality.change,\n      this.observerSubject.asObservable(),\n    ];\n    this.init(extraTriggers);\n    this.marshal\n      .trackValue(this.nativeElement, 'layout')\n      .pipe(takeUntil(this.destroySubject))\n      .subscribe(this.onLayoutChange.bind(this));\n  }\n\n  // *********************************************\n  // Lifecycle Methods\n  // *********************************************\n\n  ngAfterContentInit() {\n    this.buildChildObservable();\n    this.triggerUpdate();\n  }\n\n  override ngOnDestroy() {\n    super.ngOnDestroy();\n    if (this.observer) {\n      this.observer.disconnect();\n    }\n  }\n\n  // *********************************************\n  // Protected methods\n  // *********************************************\n\n  /**\n   * Cache the parent container 'flex-direction' and update the 'margin' styles\n   */\n  protected onLayoutChange(matcher: ElementMatcher) {\n    const layout: string = matcher.value;\n\n    // Make sure to filter out 'wrap' option\n    let newDirection = layout.split(' ')[0];\n\n    if (!LAYOUT_VALUES.find((x) => x === newDirection)) {\n      newDirection = 'row';\n    }\n\n    // Clear the previous style before we change the layout\n    if (this.layout && this.layout !== newDirection) {\n      this.clearStyles();\n    }\n\n    this.layout = newDirection;\n    this.triggerUpdate();\n  }\n\n  /**\n   *\n   */\n  protected override updateWithValue(value: string) {\n    // Gather all non-hidden Element nodes\n    const items = this.childrenNodes\n      .filter((el) => el.nodeType === 1 && this.willDisplay(el))\n      .sort((a, b) => {\n        const orderA = +this.styler.lookupStyle(a, 'order');\n        const orderB = +this.styler.lookupStyle(b, 'order');\n        if (isNaN(orderA) || isNaN(orderB) || orderA === orderB) {\n          return 0;\n        } else {\n          return orderA > orderB ? 1 : -1;\n        }\n      });\n\n    if (items.length > 0) {\n      const directionality = this.directionality.value;\n      const layout = this.layout;\n      if (layout === 'row' && directionality === 'rtl') {\n        this.styleCache = layoutGapCacheRowRtl;\n      } else if (layout === 'row' && directionality !== 'rtl') {\n        this.styleCache = layoutGapCacheRowLtr;\n      } else if (layout === 'column' && directionality === 'rtl') {\n        this.styleCache = layoutGapCacheColumnRtl;\n      } else if (layout === 'column' && directionality !== 'rtl') {\n        this.styleCache = layoutGapCacheColumnLtr;\n      }\n      this.addStyles(value, { directionality, items, layout });\n    }\n  }\n\n  /** We need to override clearStyles because in most cases mru isn't populated */\n  protected override clearStyles() {\n    const gridMode = Object.keys(this.mru).length > 0;\n    const childrenStyle = gridMode\n      ? 'padding'\n      : getMarginType(this.directionality.value, this.layout);\n\n    // If there are styles on the parent remove them\n    if (gridMode) {\n      super.clearStyles();\n    }\n\n    // Then remove the children styles too\n    this.styleUtils.applyStyleToElements(\n      { [childrenStyle]: '' },\n      this.childrenNodes,\n    );\n  }\n\n  /** Determine if an element will show or hide based on current activation */\n  protected willDisplay(source: HTMLElement): boolean {\n    const value = this.marshal.getValue(source, 'show-hide');\n    return (\n      value === true ||\n      (value === undefined &&\n        this.styleUtils.lookupStyle(source, 'display') !== 'none')\n    );\n  }\n\n  protected buildChildObservable(): void {\n    this.zone.runOutsideAngular(() => {\n      if (typeof MutationObserver !== 'undefined') {\n        this.observer = new MutationObserver((mutations: MutationRecord[]) => {\n          const validatedChanges = (it: MutationRecord): boolean => {\n            return (\n              (it.addedNodes && it.addedNodes.length > 0) ||\n              (it.removedNodes && it.removedNodes.length > 0)\n            );\n          };\n\n          // update gap styles only for child 'added' or 'removed' events\n          if (mutations.some(validatedChanges)) {\n            this.observerSubject.next();\n          }\n        });\n        this.observer.observe(this.nativeElement, { childList: true });\n      }\n    });\n  }\n\n  protected observer?: MutationObserver;\n}\n\n/**\n * @deprecated The DefaultLayoutGapDirective will be removed in version 21.\n * Use LayoutGapDirective directly instead.\n */\n@Directive({ selector, inputs })\nexport class DefaultLayoutGapDirective extends LayoutGapDirective {\n  protected override inputs = inputs;\n}\n\nconst layoutGapCacheRowRtl: Map<string, StyleDefinition> = new Map();\nconst layoutGapCacheColumnRtl: Map<string, StyleDefinition> = new Map();\nconst layoutGapCacheRowLtr: Map<string, StyleDefinition> = new Map();\nconst layoutGapCacheColumnLtr: Map<string, StyleDefinition> = new Map();\n\nconst GRID_SPECIFIER = ' grid';\n\nfunction buildGridPadding(\n  value: string,\n  directionality: string,\n): StyleDefinition {\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 { padding: `0px ${paddingRight} ${paddingBottom} ${paddingLeft}` };\n}\n\nfunction buildGridMargin(\n  value: string,\n  directionality: string,\n): StyleDefinition {\n  const [between, below] = value.split(' ');\n  const bottom = below ?? between;\n  const minus = (str: string) => `-${str}`;\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 { margin: `0px ${marginRight} ${marginBottom} ${marginLeft}` };\n}\n\nfunction getMarginType(directionality: string, layout: string) {\n  switch (layout) {\n    case 'column':\n      return 'margin-bottom';\n    case 'column-reverse':\n      return 'margin-top';\n    case 'row':\n      return directionality === 'rtl' ? 'margin-left' : 'margin-right';\n    case 'row-reverse':\n      return directionality === 'rtl' ? 'margin-right' : 'margin-left';\n    default:\n      return directionality === 'rtl' ? 'margin-left' : 'margin-right';\n  }\n}\n\nfunction buildGapCSS(\n  gapValue: string,\n  parent: { directionality: string; layout: string },\n): StyleDefinition {\n  const key = getMarginType(parent.directionality, parent.layout);\n  const margins: { [key: string]: string | null } = { ...CLEAR_MARGIN_CSS };\n  margins[key] = gapValue;\n  return margins;\n}\n","import {\n  Directive,\n  ElementRef,\n  Inject,\n  Injectable,\n  OnChanges,\n} from '@angular/core';\nimport {\n  BaseDirective2,\n  LAYOUT_CONFIG,\n  LayoutConfigOptions,\n  MediaMarshaller,\n  StyleBuilder,\n  StyleDefinition,\n  StyleUtils,\n} from '@ngbracket/ngx-layout/core';\n\nimport { buildLayoutCSS } from '@ngbracket/ngx-layout/_private-utils';\n\nexport interface LayoutStyleDisplay {\n  readonly display: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class LayoutStyleBuilder extends StyleBuilder {\n  buildStyles(input: string, { display }: LayoutStyleDisplay) {\n    const css = buildLayoutCSS(input);\n    return {\n      ...css,\n      display: display === 'none' ? display : css.display,\n    };\n  }\n}\n\nconst inputs = [\n  'fxLayout',\n  'fxLayout.xs',\n  'fxLayout.sm',\n  'fxLayout.md',\n  'fxLayout.lg',\n  'fxLayout.xl',\n  'fxLayout.lt-sm',\n  'fxLayout.lt-md',\n  'fxLayout.lt-lg',\n  'fxLayout.lt-xl',\n  'fxLayout.gt-xs',\n  'fxLayout.gt-sm',\n  'fxLayout.gt-md',\n  'fxLayout.gt-lg',\n];\nconst selector = `\n  [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md],\n  [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md],\n  [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm],\n  [fxLayout.gt-md], [fxLayout.gt-lg]\n`;\n\n/**\n * 'layout' flexbox styling directive\n * Defines the positioning flow direction for the child elements: row or column\n * Optional values: column or row (default)\n * @see https://css-tricks.com/almanac/properties/f/flex-direction/\n *\n */\n@Directive({ selector, inputs })\nexport class LayoutDirective extends BaseDirective2 implements OnChanges {\n  protected override DIRECTIVE_KEY = 'layout';\n  protected override inputs = inputs;\n\n  constructor(\n    elRef: ElementRef,\n    styleUtils: StyleUtils,\n    styleBuilder: LayoutStyleBuilder,\n    marshal: MediaMarshaller,\n    @Inject(LAYOUT_CONFIG) private _config: LayoutConfigOptions,\n  ) {\n    super(elRef, styleBuilder, styleUtils, marshal);\n    this.init();\n  }\n\n  protected override updateWithValue(input: string) {\n    const detectLayoutDisplay = this._config.detectLayoutDisplay;\n    const display = detectLayoutDisplay\n      ? this.styler.lookupStyle(this.nativeElement, 'display')\n      : '';\n    this.styleCache = cacheMap.get(display) ?? new Map();\n    cacheMap.set(display, this.styleCache);\n\n    if (this.currentValue !== input) {\n      this.addStyles(input, { display });\n      this.currentValue = input;\n    }\n  }\n}\n\n/**\n * @deprecated The DefaultLayoutDirective will be removed in version 21.\n * Use LayoutDirective directly instead.\n */\n@Directive({ selector, inputs })\nexport class DefaultLayoutDirective extends LayoutDirective {\n  protected override inputs = inputs;\n}\n\ntype CacheMap = Map<string, StyleDefinition>;\nconst cacheMap = new Map<string, CacheMap>();\n","import { BidiModule } from '@angular/cdk/bidi';\nimport { NgModule } from '@angular/core';\nimport { CoreModule } from '@ngbracket/ngx-layout/core';\n\nimport { DefaultFlexAlignDirective } from './flex-align/flex-align';\nimport { FlexFillDirective } from './flex-fill/flex-fill';\nimport { DefaultFlexOffsetDirective } from './flex-offset/flex-offset';\nimport { DefaultFlexOrderDirective } from './flex-order/flex-order';\nimport { DefaultFlexDirective } from './flex/flex';\nimport { DefaultLayoutAlignDirective } from './layout-align/layout-align';\nimport { DefaultLayoutGapDirective } from './layout-gap/layout-gap';\nimport { DefaultLayoutDirective } from './layout/layout';\n\nconst ALL_DIRECTIVES = [\n  DefaultLayoutDirective,\n  DefaultLayoutGapDirective,\n  DefaultLayoutAlignDirective,\n  DefaultFlexOrderDirective,\n  DefaultFlexOffsetDirective,\n  FlexFillDirective,\n  DefaultFlexAlignDirective,\n  DefaultFlexDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the Flex API\n * *****************************************************************\n */\n\n@NgModule({\n  imports: [CoreModule, BidiModule, ...ALL_DIRECTIVES],\n  exports: [...ALL_DIRECTIVES],\n})\nexport class FlexModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["inputs","selector","multiply","i1","i2"],"mappings":"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"}