{"version":3,"file":"fundamental-ngx-core-flexible-column-layout.mjs","sources":["../../../../libs/core/flexible-column-layout/constants.ts","../../../../libs/core/flexible-column-layout/tokens.ts","../../../../libs/core/flexible-column-layout/flexible-column-layout.component.ts","../../../../libs/core/flexible-column-layout/flexible-column-layout.component.html","../../../../libs/core/flexible-column-layout/provide-config.ts","../../../../libs/core/flexible-column-layout/flexible-column-layout.module.ts","../../../../libs/core/flexible-column-layout/fundamental-ngx-core-flexible-column-layout.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const ONE_COLUMN_START_FULL_SCREEN = 'OneColumnStartFullScreen';\nexport const ONE_COLUMN_MID_FULL_SCREEN = 'OneColumnMidFullScreen';\nexport const ONE_COLUMN_END_FULL_SCREEN = 'OneColumnEndFullScreen';\nexport const TWO_COLUMNS_START_EXPANDED = 'TwoColumnsStartExpanded';\nexport const TWO_COLUMNS_MID_EXPANDED = 'TwoColumnsMidExpanded';\nexport const TWO_COLUMNS_END_EXPANDED = 'TwoColumnsEndExpanded';\nexport const THREE_COLUMNS_MID_EXPANDED = 'ThreeColumnsMidExpanded';\nexport const THREE_COLUMNS_END_EXPANDED = 'ThreeColumnsEndExpanded';\nexport const THREE_COLUMNS_START_MINIMIZED = 'ThreeColumnsStartMinimized';\nexport const THREE_COLUMNS_END_MINIMIZED = 'ThreeColumnsEndMinimized';\n\nexport const SM_SCREEN_SIZE = 'sm';\nexport const MD_SCREEN_SIZE = 'md';\nexport const LG_SCREEN_SIZE = 'lg';\n\nexport type ScreenSize = 'sm' | 'md' | 'lg';\n\nexport type FlexibleColumnLayout =\n    | 'OneColumnStartFullScreen'\n    | 'OneColumnMidFullScreen'\n    | 'OneColumnEndFullScreen'\n    | 'TwoColumnsStartExpanded'\n    | 'TwoColumnsMidExpanded'\n    | 'TwoColumnsEndExpanded'\n    | 'ThreeColumnsMidExpanded'\n    | 'ThreeColumnsEndExpanded'\n    | 'ThreeColumnsStartMinimized'\n    | 'ThreeColumnsEndMinimized';\n\nexport type ColumnSeparatorValue = 'right' | 'left' | null;\n\nexport interface FlexibleColumnSettings {\n    start: number;\n    mid: number;\n    end: number;\n}\n\nexport type FlexibleColumnLayoutDefinition = { [key in FlexibleColumnLayout]: FlexibleColumnSettings };\n\nexport interface FlexibleLayoutConfig {\n    layouts: FlexibleColumnLayoutDefinition;\n}\n\nexport const DEFAULT_FLEXIBLE_LAYOUT_CONFIG: FlexibleLayoutConfig = {\n    layouts: {\n        OneColumnStartFullScreen: { start: 100, mid: 0, end: 0 },\n        OneColumnMidFullScreen: { start: 0, mid: 100, end: 0 },\n        OneColumnEndFullScreen: { start: 0, mid: 0, end: 100 },\n        TwoColumnsStartExpanded: { start: 67, mid: 33, end: 0 },\n        TwoColumnsMidExpanded: { start: 33, mid: 67, end: 0 },\n        TwoColumnsEndExpanded: { start: 0, mid: 33, end: 67 },\n        ThreeColumnsMidExpanded: { start: 25, mid: 50, end: 25 },\n        ThreeColumnsEndExpanded: { start: 25, mid: 25, end: 50 },\n        ThreeColumnsStartMinimized: { start: 0, mid: 67, end: 33 },\n        ThreeColumnsEndMinimized: { start: 33, mid: 67, end: 0 }\n    }\n};\n\nexport const FD_FLEXIBLE_LAYOUT_CONFIG = new InjectionToken<FlexibleLayoutConfig>('FdFlexibleLayoutConfig');\n","import { InjectionToken } from '@angular/core';\n\nexport const FD_FLEXIBLE_COLUMN_LAYOUT_COMPONENT = new InjectionToken('FdFlexibleColumnLayoutComponent');\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ContentChild,\n    EventEmitter,\n    inject,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Output,\n    SimpleChanges,\n    TemplateRef,\n    ViewEncapsulation\n} from '@angular/core';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport {\n    ColumnSeparatorValue,\n    FD_FLEXIBLE_LAYOUT_CONFIG,\n    FlexibleColumnLayout,\n    FlexibleColumnLayoutDefinition,\n    LG_SCREEN_SIZE,\n    MD_SCREEN_SIZE,\n    ONE_COLUMN_END_FULL_SCREEN,\n    ONE_COLUMN_MID_FULL_SCREEN,\n    ONE_COLUMN_START_FULL_SCREEN,\n    ScreenSize,\n    SM_SCREEN_SIZE,\n    THREE_COLUMNS_END_EXPANDED,\n    THREE_COLUMNS_END_MINIMIZED,\n    THREE_COLUMNS_MID_EXPANDED,\n    THREE_COLUMNS_START_MINIMIZED,\n    TWO_COLUMNS_END_EXPANDED,\n    TWO_COLUMNS_MID_EXPANDED,\n    TWO_COLUMNS_START_EXPANDED\n} from './constants';\nimport { FD_FLEXIBLE_COLUMN_LAYOUT_COMPONENT } from './tokens';\n\n@Component({\n    selector: 'fd-flexible-column-layout',\n    templateUrl: './flexible-column-layout.component.html',\n    styleUrl: './flexible-column-layout.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    providers: [\n        {\n            provide: FD_FLEXIBLE_COLUMN_LAYOUT_COMPONENT,\n            useExisting: FlexibleColumnLayoutComponent\n        }\n    ],\n    imports: [NgTemplateOutlet, ButtonComponent, ContentDensityDirective, IconComponent]\n})\nexport class FlexibleColumnLayoutComponent implements AfterViewInit, OnChanges, OnDestroy, OnInit {\n    /**\n     * The template that provides the content of the first/start/left column\n     */\n    @ContentChild('startColumn')\n    startColumn: TemplateRef<any>;\n\n    /**\n     * The template that provides the content of the middle column\n     */\n    @ContentChild('midColumn')\n    midColumn: TemplateRef<any>;\n\n    /**\n     * The template that provides the content of the last/end/right column\n     */\n    @ContentChild('endColumn')\n    endColumn: TemplateRef<any>;\n\n    /**\n     * The background design of the component\n     * Options include: 'solid' | 'translucent' | 'transparent'\n     * The default is set to 'solid'\n     */\n    @Input()\n    backgroundDesign: 'solid' | 'translucent' | 'transparent' = 'solid';\n\n    /**\n     * The layout of the component\n     * Options include: 'OneColumnStartFullScreen' | 'OneColumnMidFullScreen' |\n     * 'OneColumnEndFullScreen' | 'TwoColumnsStartExpanded' | 'TwoColumnsMidExpanded' |\n     * 'TwoColumnsEndExpanded' | 'ThreeColumnsMidExpanded' | 'ThreeColumnsEndExpanded' |\n     * 'ThreeColumnsStartMinimized' | 'ThreeColumnsEndMinimized'\n     */\n    @Input()\n    layout: FlexibleColumnLayout = ONE_COLUMN_START_FULL_SCREEN;\n\n    /**\n     * Mapping of the layout name and the column layout in %\n     */\n    @Input()\n    layoutDefinitions: FlexibleColumnLayoutDefinition = inject(FD_FLEXIBLE_LAYOUT_CONFIG).layouts;\n\n    /**\n     * The event emitted on layout value change.\n     */\n    @Output()\n    layoutChange: EventEmitter<FlexibleColumnLayout> = new EventEmitter<FlexibleColumnLayout>();\n\n    /**\n     * User defined break point for SM screens\n     * Default (Fiori 3) value is 960\n     */\n    @Input()\n    smBreakPoint = 960;\n\n    /**\n     * User-defined break point for LG screens\n     * the default (Fiori 3) value is 1280\n     */\n    @Input()\n    lgBreakPoint = 1280;\n\n    /**\n     * User-defined onResize function\n     */\n    @Input()\n    customOnResizeFunction: () => void;\n\n    /** aria-label for separator */\n    @Input()\n    separatorAriaLabel: string;\n\n    /** title for expanded button */\n    @Input()\n    expandTitle: string;\n\n    /** title for collapsed button */\n    @Input()\n    collapseTitle: string;\n\n    /** title for expanded state of the button between start and mid column */\n    @Input()\n    expandTitleStartBtn: string;\n\n    /** title for collapsed state of the button between start and mid column */\n    @Input()\n    collapseTitleStartBtn: string;\n\n    /** title for expanded state of the button between mid and end column */\n    @Input()\n    expandTitleEndBtn: string;\n\n    /** title for collapsed state of the button between mid and end column */\n    @Input()\n    collapseTitleEndBtn: string;\n\n    /**\n     * @hidden\n     * left column separator value (between start and middle columns)\n     * that specifies the direction of the arrow and\n     * if the separator is visible\n     * Options include: 'left', 'right' and null\n     */\n    _leftColumnSeparator: ColumnSeparatorValue = null;\n\n    /**\n     * @hidden\n     * right column separator value (between middle and end columns)\n     * that specifies the direction of the arrow and\n     * if the separator is visible\n     * Options include: 'left', 'right' and null\n     */\n    _rightColumnSeparator: ColumnSeparatorValue = null;\n\n    /**\n     * @hidden\n     * the column layout representing the distribution of the width\n     * between the first (start), the middle and the last(end) column\n     */\n    _columnLayout: { start: number; mid: number; end: number } = this.layoutDefinitions[this.layout];\n\n    /**\n     * @hidden\n     * allows to keep track of the previos layout\n     * so we can go back to it on window resize\n     */\n    private _previousLayout: FlexibleColumnLayout = this.layout;\n\n    /** @hidden */\n    private _screenSize: ScreenSize = LG_SCREEN_SIZE;\n\n    /** @hidden */\n    private _subscriptions = new Subscription();\n\n    /**\n     * @hidden\n     * set to 'true' if the layout is changed to fullscreen on window resize\n     * this will allow the layout to switch to previous mode on SM->MD transition\n     * if a layout is set by the user to fullscreen, it should persist on window resize\n     */\n    private _responsiveFullscreenLayout = false;\n\n    /**\n     * @hidden\n     * function that handles the click events on the left separator\n     * and updates the layout\n     */\n    _handleLeftColumnSeparatorClick(): void {\n        switch (this.layout) {\n            case TWO_COLUMNS_START_EXPANDED:\n                this._updateCurrentLayout(TWO_COLUMNS_MID_EXPANDED);\n                break;\n            case TWO_COLUMNS_MID_EXPANDED:\n                this._updateCurrentLayout(TWO_COLUMNS_START_EXPANDED);\n                break;\n            case THREE_COLUMNS_MID_EXPANDED:\n                this._updateCurrentLayout(THREE_COLUMNS_END_MINIMIZED);\n                break;\n            case THREE_COLUMNS_END_MINIMIZED:\n                this._updateCurrentLayout(TWO_COLUMNS_START_EXPANDED);\n                break;\n            case THREE_COLUMNS_START_MINIMIZED:\n                this._updateCurrentLayout(THREE_COLUMNS_END_MINIMIZED);\n                break;\n        }\n    }\n\n    /**\n     * @hidden\n     * function that handles the click events on the right separator\n     * and updates the layout\n     */\n    _handleRightColumnSeparatorClick(): void {\n        switch (this.layout) {\n            case TWO_COLUMNS_END_EXPANDED:\n                this._updateCurrentLayout(THREE_COLUMNS_START_MINIMIZED);\n                break;\n            case THREE_COLUMNS_MID_EXPANDED:\n                this._updateCurrentLayout(THREE_COLUMNS_END_EXPANDED);\n                break;\n            case THREE_COLUMNS_END_EXPANDED:\n                this._updateCurrentLayout(THREE_COLUMNS_MID_EXPANDED);\n                break;\n            case THREE_COLUMNS_END_MINIMIZED:\n                this._updateCurrentLayout(THREE_COLUMNS_MID_EXPANDED);\n                break;\n            case THREE_COLUMNS_START_MINIMIZED:\n                this._updateCurrentLayout(TWO_COLUMNS_END_EXPANDED);\n                break;\n        }\n    }\n\n    /** @hidden */\n    ngOnInit(): void {\n        this._updateColumnLayoutParameters();\n        this._previousLayout = this.layout;\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._screenSize = this._getScreenSize(window.innerWidth);\n        this._listenOnWindowResize();\n    }\n\n    /** @hidden */\n    ngOnChanges(changes: SimpleChanges): void {\n        this._updateColumnLayoutParameters();\n\n        if (changes && changes.layout.previousValue) {\n            this._previousLayout = changes.layout.previousValue;\n        }\n\n        if (changes && changes.layout) {\n            this._responsiveLayoutChangeHandler();\n        }\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._subscriptions.unsubscribe();\n    }\n\n    /**\n     * @hidden\n     * function to determine the screen size in 'sm' | 'md' | 'lg' | 'xl'\n     * format depending on the window size in px\n     */\n    private _getScreenSize(size: number): ScreenSize {\n        if (size > this.lgBreakPoint) {\n            return LG_SCREEN_SIZE;\n        } else if (size > this.smBreakPoint && size <= this.lgBreakPoint) {\n            return MD_SCREEN_SIZE;\n        } else {\n            return SM_SCREEN_SIZE;\n        }\n    }\n\n    /**\n     * @hidden\n     * handles the change of the layouts on reaching a break point\n     */\n    private _responsiveLayoutChangeHandler(): void {\n        this._screenSize = this._getScreenSize(window.innerWidth);\n\n        switch (this.layout) {\n            case ONE_COLUMN_MID_FULL_SCREEN:\n            case ONE_COLUMN_END_FULL_SCREEN: {\n                if (\n                    this._screenSize !== SM_SCREEN_SIZE &&\n                    this.layout !== this._previousLayout &&\n                    this._responsiveFullscreenLayout\n                ) {\n                    this._responsiveFullscreenLayout = false;\n                    this._updateCurrentLayout(this._previousLayout);\n                }\n                break;\n            }\n\n            case TWO_COLUMNS_START_EXPANDED:\n            case TWO_COLUMNS_MID_EXPANDED: {\n                if (this._screenSize === SM_SCREEN_SIZE) {\n                    this._responsiveFullscreenLayout = true;\n                    this._updateCurrentLayout(ONE_COLUMN_MID_FULL_SCREEN);\n                }\n                break;\n            }\n\n            case TWO_COLUMNS_END_EXPANDED: {\n                if (this._screenSize === SM_SCREEN_SIZE) {\n                    this._responsiveFullscreenLayout = true;\n                    this._updateCurrentLayout(ONE_COLUMN_END_FULL_SCREEN);\n                }\n\n                if (this._screenSize === LG_SCREEN_SIZE) {\n                    this._updateCurrentLayout(THREE_COLUMNS_END_EXPANDED);\n                }\n                break;\n            }\n\n            case THREE_COLUMNS_START_MINIMIZED: {\n                if (this._screenSize === SM_SCREEN_SIZE) {\n                    this._responsiveFullscreenLayout = true;\n                    this._updateCurrentLayout(ONE_COLUMN_END_FULL_SCREEN);\n                }\n\n                if (this._screenSize === LG_SCREEN_SIZE) {\n                    this._updateCurrentLayout(THREE_COLUMNS_MID_EXPANDED);\n                }\n                break;\n            }\n\n            case THREE_COLUMNS_END_MINIMIZED: {\n                if (this._screenSize === SM_SCREEN_SIZE) {\n                    this._responsiveFullscreenLayout = true;\n                    this._updateCurrentLayout(ONE_COLUMN_END_FULL_SCREEN);\n                }\n\n                if (this._screenSize === LG_SCREEN_SIZE) {\n                    this._updateCurrentLayout(THREE_COLUMNS_END_MINIMIZED);\n                }\n                break;\n            }\n\n            case THREE_COLUMNS_MID_EXPANDED: {\n                if (this._screenSize === SM_SCREEN_SIZE) {\n                    this._responsiveFullscreenLayout = true;\n                    this._updateCurrentLayout(ONE_COLUMN_END_FULL_SCREEN);\n                }\n\n                if (this._screenSize === MD_SCREEN_SIZE) {\n                    this._updateCurrentLayout(THREE_COLUMNS_START_MINIMIZED);\n                }\n                break;\n            }\n\n            case THREE_COLUMNS_END_EXPANDED: {\n                if (this._screenSize === SM_SCREEN_SIZE) {\n                    this._responsiveFullscreenLayout = true;\n                    this._updateCurrentLayout(ONE_COLUMN_END_FULL_SCREEN);\n                }\n\n                if (this._screenSize === MD_SCREEN_SIZE) {\n                    this._updateCurrentLayout(TWO_COLUMNS_END_EXPANDED);\n                }\n                break;\n            }\n        }\n    }\n\n    /**\n     * @hidden\n     * Listen on window resize and update the layout\n     * call user defined custom function if provided\n     */\n    private _listenOnWindowResize(): void {\n        if (this.customOnResizeFunction) {\n            this.customOnResizeFunction();\n        } else {\n            this._subscriptions.add(\n                fromEvent(window, 'resize')\n                    .pipe(debounceTime(100))\n                    .subscribe(() => this._responsiveLayoutChangeHandler())\n            );\n        }\n    }\n\n    /**\n     * @hidden\n     * determines if the left separator should be visible\n     * and the value that will specify the direction of the arrow\n     */\n    private _getLeftColumnSeparatorValue(): ColumnSeparatorValue {\n        switch (this.layout) {\n            case TWO_COLUMNS_START_EXPANDED:\n                return 'left';\n            case TWO_COLUMNS_MID_EXPANDED:\n            case THREE_COLUMNS_MID_EXPANDED:\n            case THREE_COLUMNS_END_MINIMIZED:\n            case THREE_COLUMNS_START_MINIMIZED:\n                return 'right';\n            default:\n                return null;\n        }\n    }\n\n    /**\n     * @hidden\n     * determines if the right separator should be visible\n     * and the value that will specify the direction of the arrow\n     */\n    private _getRightColumnSeparatorValue(): ColumnSeparatorValue {\n        switch (this.layout) {\n            case TWO_COLUMNS_END_EXPANDED:\n            case THREE_COLUMNS_END_EXPANDED:\n                return 'right';\n            case THREE_COLUMNS_MID_EXPANDED:\n            case THREE_COLUMNS_END_MINIMIZED:\n            case THREE_COLUMNS_START_MINIMIZED:\n                return 'left';\n            default:\n                return null;\n        }\n    }\n\n    /**\n     * @hidden\n     * updates the column layout based on the layout name\n     * makes a call to determine the new value of the left separator\n     * makes a call to determine the new value of the right separator\n     */\n    private _updateColumnLayoutParameters(): void {\n        this._columnLayout = this.layoutDefinitions[this.layout];\n        this._leftColumnSeparator = this._getLeftColumnSeparatorValue();\n        this._rightColumnSeparator = this._getRightColumnSeparatorValue();\n    }\n\n    /**\n     * @hidden\n     * updates the layout\n     * emits an event\n     * makes a call to the helper function that will update the column layout and the separators\n     */\n    private _updateCurrentLayout(newLayout: FlexibleColumnLayout): void {\n        this.layout = newLayout;\n        this._updateColumnLayoutParameters();\n\n        // setTimeout fixes \"ExpressionChangedAfterItHasBeenCheckedError\"\n        setTimeout(() => {\n            this.layoutChange.emit(this.layout);\n        });\n    }\n}\n","<div\n    class=\"fd-flexible-column-layout\"\n    [class.fd-flexible-column-layout--translucent]=\"backgroundDesign === 'translucent'\"\n    [class.fd-flexible-column-layout--transparent]=\"backgroundDesign === 'transparent'\"\n>\n    <!-- Start/Left/First Column -->\n    <div\n        class=\"fd-flexible-column-layout__column\"\n        [style.width.%]=\"_columnLayout.start\"\n        [style.visibility]=\"_columnLayout.start === 0 ? 'hidden' : 'visible'\"\n        [style.height]=\"_columnLayout.start === 0 ? '0' : 'auto'\"\n        [attr.aria-hidden]=\"_columnLayout.start === 0\"\n    >\n        <ng-template [ngTemplateOutlet]=\"startColumn\"></ng-template>\n    </div>\n    <!-- Left Separator -->\n    @if (_leftColumnSeparator) {\n        <div\n            class=\"fd-flexible-column-layout__separator\"\n            [attr.aria-label]=\"separatorAriaLabel\"\n            (click)=\"_handleLeftColumnSeparatorClick()\"\n        >\n            <button\n                fd-button\n                fdCompact\n                fdType=\"transparent\"\n                class=\"fd-flexible-column-layout__button\"\n                [title]=\"\n                    _leftColumnSeparator === 'left'\n                        ? expandTitleStartBtn || expandTitle\n                        : collapseTitleStartBtn || collapseTitle\n                \"\n            >\n                <fd-icon\n                    [glyph]=\"_leftColumnSeparator ? 'slim-arrow-' + _leftColumnSeparator : ''\"\n                    role=\"presentation\"\n                ></fd-icon>\n            </button>\n        </div>\n    }\n    <!-- Middle/Second Column -->\n    <div\n        class=\"fd-flexible-column-layout__column\"\n        [style.width.%]=\"_columnLayout.mid\"\n        [style.visibility]=\"_columnLayout.mid === 0 ? 'hidden' : 'visible'\"\n        [style.height]=\"_columnLayout.mid === 0 ? '0' : 'auto'\"\n        [attr.aria-hidden]=\"_columnLayout.mid === 0\"\n    >\n        <ng-template [ngTemplateOutlet]=\"midColumn\"></ng-template>\n    </div>\n    <!-- Right Separator -->\n    @if (_rightColumnSeparator) {\n        <div\n            class=\"fd-flexible-column-layout__separator\"\n            [attr.aria-label]=\"separatorAriaLabel\"\n            (click)=\"_handleRightColumnSeparatorClick()\"\n        >\n            <button\n                fd-button\n                fdCompact\n                fdType=\"transparent\"\n                class=\"fd-flexible-column-layout__button\"\n                [title]=\"\n                    _rightColumnSeparator === 'left'\n                        ? expandTitleEndBtn || expandTitle\n                        : collapseTitleEndBtn || collapseTitle\n                \"\n            >\n                <fd-icon\n                    [glyph]=\"_rightColumnSeparator ? 'slim-arrow-' + _rightColumnSeparator : ''\"\n                    role=\"presentation\"\n                ></fd-icon>\n            </button>\n        </div>\n    }\n    <!-- End/Right/Third Column -->\n    <div\n        class=\"fd-flexible-column-layout__column\"\n        [style.width.%]=\"_columnLayout.end\"\n        [style.visibility]=\"_columnLayout.end === 0 ? 'hidden' : 'visible'\"\n        [style.height]=\"_columnLayout.end === 0 ? '0' : 'auto'\"\n        [attr.aria-hidden]=\"_columnLayout.end === 0\"\n    >\n        <ng-template [ngTemplateOutlet]=\"endColumn\"></ng-template>\n    </div>\n</div>\n","import { Provider } from '@angular/core';\nimport { merge } from '@fundamental-ngx/cdk/utils';\nimport { DEFAULT_FLEXIBLE_LAYOUT_CONFIG, FD_FLEXIBLE_LAYOUT_CONFIG, FlexibleLayoutConfig } from './constants';\n\n/**\n * Helper function to provide custom configuration for Flexible Column Layout component.\n * @param config\n * @returns\n */\nexport function provideFlexibleColumnLayoutConfig(config: Partial<FlexibleLayoutConfig>): Provider[] {\n    config = merge(structuredClone(DEFAULT_FLEXIBLE_LAYOUT_CONFIG), structuredClone(config));\n    return [\n        {\n            provide: FD_FLEXIBLE_LAYOUT_CONFIG,\n            useValue: config\n        }\n    ];\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { DEFAULT_FLEXIBLE_LAYOUT_CONFIG, FD_FLEXIBLE_LAYOUT_CONFIG, FlexibleLayoutConfig } from './constants';\nimport { FlexibleColumnLayoutComponent } from './flexible-column-layout.component';\nimport { provideFlexibleColumnLayoutConfig } from './provide-config';\n\n/**\n * Adds Flexible Column Layout functionality to your application.\n *\n * Can be imported in two ways:\n * * Plain `FlexibleColumnLayoutModule` with default configuration\n * * With `withConfig()` method which allows passing custom default configuration.\n */\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [FlexibleColumnLayoutComponent],\n    exports: [FlexibleColumnLayoutComponent],\n    providers: [\n        {\n            provide: FD_FLEXIBLE_LAYOUT_CONFIG,\n            useValue: DEFAULT_FLEXIBLE_LAYOUT_CONFIG\n        }\n    ]\n})\nexport class FlexibleColumnLayoutModule {\n    /**\n     * Allows configuring module on a global level with custom configuration.\n     * @param config User's custom configuration.\n     */\n    static withConfig(config: Partial<FlexibleLayoutConfig>): ModuleWithProviders<FlexibleColumnLayoutModule> {\n        return {\n            ngModule: FlexibleColumnLayoutModule,\n            providers: provideFlexibleColumnLayoutConfig(config)\n        };\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}