{"version":3,"file":"fundamental-ngx-platform-settings-generator.mjs","sources":["../../../../libs/platform/settings-generator/controls/theme-selector-list/theme-selector-list.component.ts","../../../../libs/platform/settings-generator/controls/theme-selector-list/theme-selector-list.component.html","../../../../libs/platform/settings-generator/controls/theme-selector-list/icon.html","../../../../libs/platform/settings-generator/default-config.ts","../../../../libs/platform/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.ts","../../../../libs/platform/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.html","../../../../libs/platform/settings-generator/settings-generator.service.ts","../../../../libs/platform/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.ts","../../../../libs/platform/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.html","../../../../libs/platform/settings-generator/settings-generator-content/settings-generator-content.component.ts","../../../../libs/platform/settings-generator/settings-generator-content/settings-generator-content.component.html","../../../../libs/platform/settings-generator/tokens.ts","../../../../libs/platform/settings-generator/layouts/base-settings-generator-layout.ts","../../../../libs/platform/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.ts","../../../../libs/platform/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.html","../../../../libs/platform/settings-generator/settings-generator-layout-accessor.service.ts","../../../../libs/platform/settings-generator/settings-generator.component.ts","../../../../libs/platform/settings-generator/settings-generator.component.html","../../../../libs/platform/settings-generator/settings-generator.module.ts","../../../../libs/platform/settings-generator/fundamental-ngx-platform-settings-generator.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    Input,\n    OnInit,\n    ViewEncapsulation,\n    forwardRef,\n    inject\n} from '@angular/core';\nimport { ClickedDirective } from '@fundamental-ngx/cdk/utils';\nimport { ListModule } from '@fundamental-ngx/core/list';\nimport { ThemingService } from '@fundamental-ngx/core/theming';\nimport {\n    BaseDynamicFormGeneratorControl,\n    dynamicFormFieldProvider,\n    dynamicFormGroupChildProvider\n} from '@fundamental-ngx/platform/form';\n\n@Component({\n    selector: 'fdp-theme-selector-list',\n    templateUrl: './theme-selector-list.component.html',\n    styleUrl: './theme-selector-list.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    viewProviders: [dynamicFormFieldProvider, dynamicFormGroupChildProvider],\n    imports: [ListModule, ClickedDirective, forwardRef(() => ThemeSelectorListIconComponent), NgTemplateOutlet]\n})\nexport class ThemeSelectorListComponent extends BaseDynamicFormGeneratorControl implements OnInit {\n    /** @hidden */\n    currentTheme: string;\n\n    /** @hidden */\n    private readonly _themingService = inject(ThemingService, {\n        optional: true\n    });\n\n    /** @hidden */\n    ngOnInit(): void {\n        this.currentTheme = this.formItem.default;\n    }\n\n    /** @hidden */\n    setTheme(value: string): void {\n        const control = this.form.get([this.formGroupName, this.name]);\n        this.currentTheme = value;\n        control?.setValue(value);\n        this._themingService?.setTheme(value);\n    }\n}\n\n@Component({\n    selector: 'fdp-theme-selector-list-icon',\n    templateUrl: './icon.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true\n})\nexport class ThemeSelectorListIconComponent {\n    /** @hidden */\n    @Input()\n    size = 40;\n}\n","<ul fd-list [byline]=\"true\">\n    @for (item of formItem.choices; track item) {\n        <li fd-list-item [selected]=\"currentTheme === item.value\">\n            <a fd-list-link (fdkClicked)=\"setTheme(item.value)\">\n                @if (!item.template) {\n                    <div fd-list-thumbnail class=\"settings-selector-list__theme--{{ item.value }}\">\n                        <fdp-theme-selector-list-icon></fdp-theme-selector-list-icon>\n                    </div>\n                    <div fd-list-content>\n                        <div fd-list-title>{{ item.label }}</div>\n                        <div fd-list-byline>{{ item.description }}</div>\n                    </div>\n                } @else {\n                    <ng-template\n                        [ngTemplateOutlet]=\"item.template!\"\n                        [ngTemplateOutletContext]=\"{ $implicit: item }\"\n                    ></ng-template>\n                }\n            </a>\n        </li>\n    }\n</ul>\n","<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 200 200\" [style.width.px]=\"size\" [style.height.px]=\"size\">\n    <defs>\n        <style>\n            .settings-selector-list-icon__cls-1 {\n                fill: #1c2228;\n            }\n\n            .settings-selector-list-icon__cls-2 {\n                fill: #424f5e;\n            }\n\n            .settings-selector-list-icon__cls-3 {\n                fill: #29313a;\n            }\n\n            .settings-selector-list-icon__cls-4 {\n                fill: #3a4552;\n            }\n\n            .settings-selector-list-icon__cls-5 {\n                fill: #91c8f6;\n            }\n\n            .settings-selector-list-icon__cls-6 {\n                fill: #d3d7d9;\n            }\n\n            .settings-selector-list-icon__cls-7 {\n                fill: #354a5f;\n            }\n\n            .settings-selector-list-icon__cls-8 {\n                fill: #7996b4;\n            }\n\n            .settings-selector-list-icon__cls-9 {\n                fill: #fff;\n            }\n        </style>\n    </defs>\n    <rect class=\"settings-selector-list-icon__cls-1\" y=\"88\" width=\"200\" height=\"112\" />\n    <path class=\"settings-selector-list-icon__cls-2\" d=\"M200,105v95H59V110a5,5,0,0,1,5-5Z\" />\n    <path class=\"settings-selector-list-icon__cls-3\" d=\"M64,106H200v94H60V110A4,4,0,0,1,64,106Z\" />\n    <rect class=\"settings-selector-list-icon__cls-3\" y=\"44\" width=\"200\" height=\"44\" />\n    <rect class=\"settings-selector-list-icon__cls-4\" y=\"87\" width=\"200\" height=\"1\" />\n    <path\n        class=\"settings-selector-list-icon__cls-5\"\n        d=\"M64,63h46a5,5,0,0,1,5,5h0a5,5,0,0,1-5,5H64a5,5,0,0,1-5-5h0A5,5,0,0,1,64,63Z\"\n    />\n    <path class=\"settings-selector-list-icon__cls-6\" d=\"M153,63h47V73H153a5,5,0,0,1-5-5h0A5,5,0,0,1,153,63Z\" />\n    <path class=\"settings-selector-list-icon__cls-5\" d=\"M62,85h50a3,3,0,0,1,3,3H59A3,3,0,0,1,62,85Z\" />\n    <rect class=\"settings-selector-list-icon__cls-7\" width=\"200\" height=\"44\" />\n    <path\n        class=\"settings-selector-list-icon__cls-8\"\n        d=\"M68.459,13a1,1,0,0,1,.714,1.707l-16.155,16A1.01,1.01,0,0,1,52.3,31H33.539a1,1,0,0,1-1.01-.99V14a1,1,0,0,1,1-1h34.93m0-3H33.539A4.024,4.024,0,0,0,29.5,14V30a4.024,4.024,0,0,0,4.039,4H52.3a4.033,4.033,0,0,0,2.857-1.172l16.154-16a3.961,3.961,0,0,0,.876-4.359A4.027,4.027,0,0,0,68.459,10Z\"\n    />\n    <rect class=\"settings-selector-list-icon__cls-9\" x=\"82.121\" y=\"16.949\" width=\"75.758\" height=\"10.101\" rx=\"5\" />\n    <path class=\"settings-selector-list-icon__cls-9\" d=\"M170,18h30v8H170a4,4,0,0,1-4-4h0A4,4,0,0,1,170,18Z\" />\n</svg>\n","import { SidebarSettingsGeneratorConfig } from './models/settings-config.model';\n\nexport const FDP_SETTINGS_GENERATOR_DEFAULT_CONFIG: SidebarSettingsGeneratorConfig = {\n    defaultLayout: 'sidebar',\n    sidebar: {\n        mobileBreakpoint: 700,\n        width: '20rem'\n    }\n};\n","import {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    DestroyRef,\n    inject,\n    Input,\n    ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { isSubscribable, merge } from '@fundamental-ngx/cdk/utils';\nimport { AvatarComponent } from '@fundamental-ngx/core/avatar';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { SkeletonComponent } from '@fundamental-ngx/core/skeleton';\nimport { ListAvatarConfig, ListIconConfig } from '@fundamental-ngx/platform/list';\nimport { Observable } from 'rxjs';\nimport { ThumbnailSettingsItem } from '../../../models/settings.model';\n\n@Component({\n    selector: 'fdp-settings-generator-sidebar-icon',\n    templateUrl: './settings-generator-sidebar-icon.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [SkeletonComponent, IconComponent, AvatarComponent]\n})\nexport class SettingsGeneratorSidebarIconComponent {\n    /** Thumbnail configuration. */\n    @Input()\n    set thumbnail(value: ThumbnailSettingsItem) {\n        this._thumbnail = value;\n        if (this.thumbnail.avatar) {\n            this._transformAvatarConfig(this.thumbnail.avatar);\n        }\n\n        if (this.thumbnail.icon) {\n            this._transformIconConfig(this.thumbnail.icon);\n        }\n    }\n\n    get thumbnail(): ThumbnailSettingsItem {\n        return this._thumbnail;\n    }\n\n    /** @hidden */\n    _avatarConfig: ListAvatarConfig | undefined;\n\n    /** @hidden */\n    _iconConfig: ListIconConfig | undefined;\n\n    /** @hidden */\n    private _thumbnail: ThumbnailSettingsItem;\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    private readonly _cdr = inject(ChangeDetectorRef);\n\n    /** @hidden */\n    private _transformAvatarConfig(\n        config$: Partial<ListAvatarConfig> | string | Observable<Partial<ListAvatarConfig> | string>\n    ): void {\n        this._getConfigFromObservable(config$, (parsedConfig) => {\n            const avatarConfig = typeof parsedConfig === 'string' ? { image: parsedConfig } : parsedConfig;\n            this._avatarConfig = merge(new ListAvatarConfig(), avatarConfig);\n            this._cdr.detectChanges();\n        });\n    }\n\n    /** @Hidden */\n    private _transformIconConfig(\n        config$: Partial<ListIconConfig> | string | Observable<Partial<ListIconConfig> | string>\n    ): void {\n        this._getConfigFromObservable(config$, (parsedConfig) => {\n            const iconConfig = typeof parsedConfig === 'string' ? { glyph: parsedConfig } : parsedConfig;\n            this._iconConfig = merge(new ListIconConfig(), iconConfig);\n            this._cdr.detectChanges();\n        });\n    }\n\n    /** @hidden */\n    private _getConfigFromObservable<T>(config: T | Observable<T>, callback: (config: T) => void): void {\n        if (isSubscribable(config)) {\n            config.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((_config) => {\n                callback(_config);\n            });\n\n            return;\n        }\n\n        callback(config);\n    }\n}\n","@if (!_iconConfig && !_avatarConfig) {\n    <fd-skeleton type=\"rectangle\" width=\"48px\" height=\"48px\"></fd-skeleton>\n} @else {\n    @if (_iconConfig && _iconConfig.glyph) {\n        <fd-icon [glyph]=\"_iconConfig.glyph\" [ariaLabel]=\"_iconConfig.ariaLabel\" [font]=\"_iconConfig.font\"></fd-icon>\n    }\n    @if (\n        _avatarConfig && (_avatarConfig.image || _avatarConfig.glyph || _avatarConfig.zoomGlyph || _avatarConfig.label)\n    ) {\n        <fd-avatar\n            [size]=\"_avatarConfig.size\"\n            [glyph]=\"_avatarConfig.glyph\"\n            [zoomGlyph]=\"_avatarConfig.zoomGlyph\"\n            [label]=\"_avatarConfig.label\"\n            [circle]=\"_avatarConfig.circle\"\n            [placeholder]=\"_avatarConfig.placeholder\"\n            [tile]=\"_avatarConfig.tile\"\n            [colorAccent]=\"_avatarConfig.colorAccent\"\n            [image]=\"_avatarConfig.image\"\n            [transparent]=\"_avatarConfig.transparent\"\n            [random]=\"_avatarConfig.random\"\n            [class]=\"'fd-list__icon ' + _avatarConfig.class\"\n            [ariaLabel]=\"_avatarConfig.ariaLabel\"\n            [ariaLabelledby]=\"_avatarConfig.ariaLabelledby\"\n            [contain]=\"_avatarConfig.contain\"\n            [border]=\"_avatarConfig.border\"\n            [alterIcon]=\"_avatarConfig.alterIcon\"\n            [backupImage]=\"_avatarConfig.backupImage\"\n            [clickable]=\"_avatarConfig.clickable\"\n            [attr.alt]=\"_avatarConfig.ariaLabel\"\n            role=\"img\"\n        ></fd-avatar>\n    }\n}\n","import { DestroyRef, ElementRef, Injectable, OnDestroy, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Nullable, set } from '@fundamental-ngx/cdk/utils';\nimport { DynamicFormValue, FormGeneratorComponent } from '@fundamental-ngx/platform/form';\nimport { MessagePopoverFormWrapperComponent } from '@fundamental-ngx/platform/message-popover';\nimport { BehaviorSubject, Observable, Subject, combineLatest, delay, filter, map, switchMap, take, tap } from 'rxjs';\nimport { SettingsModel } from './models/settings.model';\n\nexport type SettingsGeneratorReturnValue = Record<string, unknown>;\n\n@Injectable()\nexport class SettingsGeneratorService implements OnDestroy {\n    /**\n     * Settings configuration subject.\n     */\n    readonly settings = new BehaviorSubject<Nullable<SettingsModel>>(null);\n\n    /**\n     * Stream emitted when user clicked on message popover error entry.\n     */\n    readonly onItemFocus = new Subject<{ path: string; element: ElementRef<HTMLElement> }>();\n\n    /**\n     * Stream emitted when mobile state has been changed.\n     */\n    readonly mobileState$ = new BehaviorSubject<boolean>(false);\n\n    /**\n     * @hidden\n     * Form generators collected from all items and groups.\n     */\n    private readonly _formGenerators = new Map<string, FormGeneratorComponent>();\n\n    /** @hidden */\n    private readonly _messagePopover = inject(MessagePopoverFormWrapperComponent, {\n        optional: true\n    });\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    constructor() {\n        this._listenToMessagePopoverItemClick();\n    }\n\n    /** @hidden */\n    _addFormGenerator(path: string[], formGenerator: FormGeneratorComponent): void {\n        const joinedPath = path.join('.');\n        this._formGenerators.set(joinedPath, formGenerator);\n        formGenerator.loading$\n            .pipe(\n                filter((loading) => !loading),\n                take(1),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe(() => {\n                this._messagePopover?.addForms(formGenerator.formGroup);\n                this._messagePopover?.addFormFields(formGenerator.formFields);\n            });\n    }\n\n    /** @hidden */\n    _removeFormGenerator(path: string[]): void {\n        const joinedPath = path.join('.');\n        this._formGenerators.delete(joinedPath);\n    }\n\n    /**\n     * Submits registered forms and emits result if submission status was successful (no errors).\n     */\n    submit(): Observable<SettingsGeneratorReturnValue> {\n        const joinedEvents: Record<string, Observable<DynamicFormValue>> = {};\n        this._formGenerators.forEach((formGenerator, key) => {\n            joinedEvents[key] = formGenerator.loading$.pipe(\n                filter((result) => !result),\n                delay(50),\n                tap(() => formGenerator.submit()),\n                switchMap(() => formGenerator.formSubmittedStatus$),\n                filter((status) => status.success),\n                take(1),\n                map((result) => result.value as DynamicFormValue),\n                takeUntilDestroyed(this._destroyRef)\n            );\n        });\n\n        return combineLatest(joinedEvents).pipe(\n            map((result) => Object.entries(result).reduce((a, b) => set(a, b[0], b[1]), {})),\n            take(1),\n            takeUntilDestroyed(this._destroyRef)\n        );\n    }\n\n    /**\n     * Sets mobile state.\n     * @param isMobile Whether mobile state should be applied.\n     */\n    setMobileState(isMobile: boolean): void {\n        this.mobileState$.next(isMobile);\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._formGenerators.clear();\n    }\n\n    /**\n     * @hidden\n     * Subscribes to click events from message popover and tries to open the section where invalid input is located.\n     */\n    private _listenToMessagePopoverItemClick(): void {\n        this._messagePopover?.messagePopover$\n            ?.pipe(\n                switchMap((messagePopover) => messagePopover.focusItem),\n                filter((entry) => !!entry.formField),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe((entry) => {\n                this._formGenerators.forEach((formGenerator, path) => {\n                    const formFields = formGenerator.formFields;\n                    // We already filtered entries with present form field.\n                    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n                    if (formFields.includes(entry.formField!)) {\n                        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n                        this.onItemFocus.next({ path, element: entry.formField!.elementRef });\n                        return false;\n                    }\n                });\n            });\n    }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    Input,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation,\n    inject\n} from '@angular/core';\nimport { AsyncOrSyncPipe, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { DynamicFormItem, FormGeneratorComponent } from '@fundamental-ngx/platform/form';\nimport {\n    FormSettingsItem,\n    SettingsFormTab,\n    SettingsItem,\n    SettingsTemplateTab,\n    TemplateSettingsItem\n} from '../../models/settings.model';\nimport { SettingsGeneratorService } from '../../settings-generator.service';\n\nexport type SettingsSectionItemsModel = SettingsTemplateTab | SettingsFormTab | SettingsItem;\n\n@Component({\n    selector: 'fdp-settings-generator-section',\n    templateUrl: './settings-generator-section.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [FormGeneratorComponent, NgTemplateOutlet, AsyncOrSyncPipe]\n})\nexport class SettingsGeneratorSectionComponent {\n    /**\n     * Group name. Used to define full path of the inner form.\n     */\n    @Input()\n    groupName: Nullable<string>;\n\n    /**\n     * Section items.\n     * @param value {Nullable<SettingsSectionItemsModel>} Can be either a template Ref, or Form generator items.\n     */\n    @Input()\n    set items(value: Nullable<SettingsSectionItemsModel>) {\n        this._items = value;\n\n        if (this._isTemplateLayout(value)) {\n            this._renderer = 'template';\n            this._templateRef = value.template;\n        } else {\n            this._renderer = 'form';\n            this._formItems = value?.items || [];\n        }\n    }\n\n    get items(): Nullable<SettingsSectionItemsModel> {\n        return this._items;\n    }\n\n    /** @hidden */\n    _renderer: 'form' | 'template' = 'form';\n\n    /** @hidden */\n    _templateRef: TemplateRef<any> | null = null;\n\n    /** @hidden */\n    _formItems: DynamicFormItem[] = [];\n\n    /** @hidden */\n    private readonly _settingsGeneratorService = inject(SettingsGeneratorService);\n\n    /** @hidden */\n    private _items: Nullable<SettingsSectionItemsModel>;\n\n    /** @hidden */\n    @ViewChild(FormGeneratorComponent)\n    private set _formGeneratorCmp(component: FormGeneratorComponent | undefined) {\n        if (!this.items) {\n            return;\n        }\n\n        const config = this.items as SettingsFormTab | FormSettingsItem;\n\n        const path = [this.groupName, config.id].filter((v) => !!v) as string[];\n\n        if (component) {\n            this._settingsGeneratorService._addFormGenerator(path, component);\n        } else {\n            this._settingsGeneratorService._removeFormGenerator(path);\n        }\n    }\n\n    /** @hidden */\n    _isTemplateLayout(settings: any): settings is TemplateSettingsItem {\n        return !!settings?.template;\n    }\n}\n","@if (_renderer === 'form') {\n    <fdp-form-generator\n        [noAdditionalContent]=\"true\"\n        [mainTitle]=\"items?.title | fdkAsyncOrSync\"\n        [hideMainTItle]=\"true\"\n        [formItems]=\"_formItems\"\n        [unifiedLayout]=\"false\"\n    ></fdp-form-generator>\n}\n@if (_renderer === 'template' && items?.template) {\n    <ng-template [ngTemplateOutlet]=\"_templateRef\"></ng-template>\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    HostBinding,\n    Input,\n    Output,\n    QueryList,\n    Signal,\n    ViewChildren,\n    ViewEncapsulation,\n    computed,\n    input,\n    signal\n} from '@angular/core';\nimport { AsyncOrSyncPipe, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { SkeletonComponent } from '@fundamental-ngx/core/skeleton';\nimport { TabPanelComponent } from '@fundamental-ngx/core/tabs';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { IconTabBarComponent, IconTabBarItem, TabConfig } from '@fundamental-ngx/platform/icon-tab-bar';\nimport {\n    GroupedFormSettingsItem,\n    GroupedTemplateSettingsItem,\n    SettingsFormTab,\n    SettingsItem,\n    SettingsTemplateTab,\n    TemplateSettingsItem\n} from '../models/settings.model';\nimport { SettingsGeneratorSectionComponent } from './settings-generator-section/settings-generator-section.component';\n\n@Component({\n    selector: 'fdp-settings-generator-content',\n    templateUrl: './settings-generator-content.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        TitleComponent,\n        ButtonComponent,\n        SkeletonComponent,\n        SettingsGeneratorSectionComponent,\n        NgTemplateOutlet,\n        AsyncOrSyncPipe,\n        IconTabBarComponent,\n        FdTranslatePipe\n    ]\n})\nexport class SettingsGeneratorContentComponent {\n    /** @hidden */\n    @Input()\n    set settings(value: Nullable<SettingsItem>) {\n        this._settings$.set(value);\n    }\n\n    get settings(): Nullable<SettingsItem> {\n        return this._settings$();\n    }\n\n    /** Whether to render content component in mobile view. */\n    @Input()\n    mobile = false;\n\n    /** Event emits when user needs to be moved back to navigation screen. */\n    @Output()\n    goBack = new EventEmitter<void>();\n\n    /** @hidden */\n    @HostBinding('class')\n    protected readonly _initialClass = 'fdp-settings-generator__content-section';\n\n    /** @hidden */\n    @ViewChildren(TabPanelComponent)\n    private readonly _tabPanels: QueryList<TabPanelComponent>;\n\n    /** Optional alternative text for the settings generator dialog back button. */\n    backButtonLabel = input<string>();\n\n    /** @hidden */\n    _id: Nullable<string>;\n\n    /** @hidden */\n    _renderer$ = computed<'form' | 'template'>(() => (this.isTemplateLayout(this._settings$()) ? 'template' : 'form'));\n\n    /** @hidden */\n    _contentLayout$ = computed<'form' | 'tabs'>(() => (this.isGroupedSettings(this._settings$()) ? 'tabs' : 'form'));\n\n    /** @hidden */\n    _groups$: Signal<(SettingsTemplateTab | SettingsFormTab)[]> = computed(() => {\n        const settings = this._settings$();\n        return this.isGroupedSettings(settings) ? settings.groups : [];\n    });\n\n    /** @hidden */\n    _tabs$: Signal<TabConfig[]> = computed(() =>\n        this._groups$().map<TabConfig>((group, index) => ({\n            label: group.title,\n            active: index === this._activeTab$()\n        }))\n    );\n\n    /** @hidden */\n    _index: number;\n\n    /** @hidden */\n    readonly _activeTab$ = signal(0);\n\n    /** @hidden */\n    readonly _settings$ = signal<Nullable<SettingsItem>>(null);\n\n    /** @hidden */\n    private _settings: Nullable<SettingsItem>;\n\n    /** @hidden */\n    isTemplateLayout(settings: Nullable<SettingsItem>): settings is TemplateSettingsItem {\n        return !!settings?.template;\n    }\n\n    /** @hidden */\n    isGroupedSettings(settings: any): settings is GroupedFormSettingsItem | GroupedTemplateSettingsItem {\n        return settings?.groups?.length > 0;\n    }\n\n    /** @hidden */\n    changeTab(item: IconTabBarItem): void {\n        this._activeTab$.set(item.index);\n    }\n\n    /**\n     * Activates tab by group ID.\n     * @param id ID of the group.\n     */\n    setActiveTab(id: string): void {\n        if (!this.isGroupedSettings(this._settings)) {\n            return;\n        }\n        this._tabPanels?.forEach((tab, index) => {\n            const group = this._groups$()[index];\n\n            if (group.id === id) {\n                tab.open(true);\n                return false;\n            }\n        });\n    }\n}\n","<div\n    fd-title\n    [wrap]=\"!!settings?.wrapSectionTitle\"\n    role=\"heading\"\n    class=\"fd-title--h5 fdp-settings-generator__title\"\n    [attr.aria-level]=\"settings?.sectionTitleHeadingLevel || 5\"\n>\n    @if (mobile) {\n        <button\n            [attr.title]=\"backButtonLabel() || ('platformSettingsGenerator.backButtonLabel' | fdTranslate)()\"\n            [attr.aria-label]=\"backButtonLabel() || ('platformSettingsGenerator.backButtonLabel' | fdTranslate)()\"\n            fd-button\n            glyph=\"navigation-left-arrow\"\n            fdType=\"transparent\"\n            (click)=\"goBack.emit()\"\n        ></button>\n    }\n    @if (settings?.title | fdkAsyncOrSync; as settingsTitle) {\n        {{ settingsTitle }}\n    } @else {\n        <fd-skeleton height=\"40px\" type=\"rectangle\" width=\"40%\" textLines=\"1\" [style.margin]=\"'auto 0'\"></fd-skeleton>\n    }\n</div>\n<ng-template #tabbedLayout>\n    <fdp-icon-tab-bar\n        class=\"fdp-settings-generator__tabs-container\"\n        [tabsConfig]=\"_tabs$()\"\n        (iconTabSelected)=\"changeTab($event)\"\n    ></fdp-icon-tab-bar>\n    @for (group of _groups$(); track group) {\n        <div [attr.hidden]=\"$index === _activeTab$() ? null : true\" class=\"fdp-settings-generator__content-container\">\n            <fdp-settings-generator-section\n                [groupName]=\"$any(settings).id\"\n                [items]=\"group\"\n            ></fdp-settings-generator-section>\n        </div>\n    }\n</ng-template>\n<ng-template #formLayout>\n    <fdp-settings-generator-section [items]=\"settings!\"></fdp-settings-generator-section>\n</ng-template>\n<ng-template [ngTemplateOutlet]=\"_contentLayout$() === 'tabs' ? tabbedLayout : formLayout\"></ng-template>\n","import { InjectionToken } from '@angular/core';\nimport { SettingsConfig } from './models/settings-config.model';\nimport { SettingsGenerator } from './models/settings-generator.model';\n\nexport const FDP_SETTINGS_GENERATOR_CONFIG = new InjectionToken<SettingsConfig>('FdpSettingsGeneratorConfig');\nexport const FDP_SETTINGS_GENERATOR = new InjectionToken<SettingsGenerator>('FdpSettingsGenerator');\n","import { ChangeDetectorRef, DestroyRef, Directive, ElementRef, inject, OnInit } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { SettingsModel } from '../models/settings.model';\nimport { SettingsGeneratorService } from '../settings-generator.service';\nimport { FDP_SETTINGS_GENERATOR } from '../tokens';\n\n@Directive()\nexport abstract class BaseSettingsGeneratorLayout implements OnInit {\n    /**\n     * Subject to notify subscriptions to unsubscribe when component destroys.\n     */\n    protected abstract _destroyRef: DestroyRef;\n\n    /**\n     * Method for focusing inner form control.\n     * It is responsible for activating the section and placing focus on the element.\n     * @param path path of the control joined by dot(.). Usually represents section ID and inner group ID.\n     * @param element ElementRef of native element to focus.\n     */\n    abstract focusElementByPath(path: string, element: ElementRef<HTMLElement>): void;\n\n    /**\n     * Settings schema.\n     */\n    settings: Nullable<SettingsModel>;\n\n    /**\n     * Settings generator service.\n     */\n    protected readonly _settingsGeneratorService = inject(SettingsGeneratorService);\n\n    /**\n     * Change detector ref.\n     */\n    protected readonly _cdr = inject(ChangeDetectorRef);\n\n    /**\n     * Settings generator component ref.\n     */\n    protected _settingsGenerator = inject(FDP_SETTINGS_GENERATOR);\n\n    /** @hidden */\n    ngOnInit(): void {\n        this._settingsGeneratorService.settings.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((settings) => {\n            this.settings = settings;\n            this._cdr.detectChanges();\n        });\n    }\n}\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    DestroyRef,\n    ElementRef,\n    HostBinding,\n    inject,\n    OnInit,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { AsyncOrSyncPipe, Nullable, resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { ListModule } from '@fundamental-ngx/core/list';\nimport { SkeletonComponent } from '@fundamental-ngx/core/skeleton';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { debounceTime, distinctUntilChanged, startWith } from 'rxjs';\nimport { SidebarSettingsGeneratorConfig } from '../../models/settings-config.model';\nimport {\n    FormSettingsItem,\n    GroupedFormSettingsItem,\n    SettingsItem,\n    SidebarSettingsModel,\n    SidebarWidthConfiguration\n} from '../../models/settings.model';\nimport { SettingsGeneratorContentComponent } from '../../settings-generator-content/settings-generator-content.component';\nimport { FDP_SETTINGS_GENERATOR_CONFIG } from '../../tokens';\nimport { BaseSettingsGeneratorLayout } from '../base-settings-generator-layout';\nimport { SettingsGeneratorSidebarIconComponent } from './settings-generator-sidebar-icon/settings-generator-sidebar-icon.component';\n\n@Component({\n    selector: 'fdp-settings-generator-sidebar-layout',\n    templateUrl: './settings-generator-sidebar-layout.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    imports: [\n        ListModule,\n        SettingsGeneratorSidebarIconComponent,\n        SkeletonComponent,\n        SettingsGeneratorContentComponent,\n        AsyncOrSyncPipe,\n        TitleComponent,\n        FdTranslatePipe,\n        FormsModule\n    ]\n})\nexport class SettingsGeneratorSidebarLayoutComponent\n    extends BaseSettingsGeneratorLayout\n    implements OnInit, AfterViewInit\n{\n    /** @hidden */\n    @HostBinding('class.fdp-settings-generator__sidebar-layout--mobile')\n    _isMobile: boolean;\n\n    /** @hidden */\n    @HostBinding('class')\n    protected readonly _initialClass = 'fdp-settings-generator__sidebar-layout';\n\n    /** @hidden */\n    @ViewChild('settingsGeneratorContent')\n    private readonly _settingsGeneratorContent: SettingsGeneratorContentComponent;\n\n    /** @hidden */\n    @ViewChild('listElement', { read: ElementRef })\n    private _listElement: ElementRef;\n\n    /** @hidden */\n    searchTerm: string;\n\n    /**\n     * Selected settings section.\n     */\n    _selectedIndex = -1;\n    /** @hidden */\n    _sidebarWidth: SidebarWidthConfiguration;\n\n    /** @hidden */\n    protected readonly sidebarTitle = computed(() => {\n        const settings = this.settings;\n        if (this._isSidebarSettings(settings) && settings.sidebarTitle) {\n            return settings.sidebarTitle;\n        }\n        return null;\n    });\n\n    /** @hidden */\n    protected readonly headingLevel = computed(() => {\n        const settings = this.settings;\n        if (this._isSidebarSettings(settings) && settings.sidebarTitleHeadingLevel) {\n            return settings.sidebarTitleHeadingLevel;\n        }\n        return 5; // Default to h5\n    });\n\n    /** @hidden */\n    protected _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    private readonly _config = inject<SidebarSettingsGeneratorConfig>(FDP_SETTINGS_GENERATOR_CONFIG);\n\n    /** @hidden */\n    private _sidebarVisible = true;\n\n    /** @hidden */\n    private _initialSelectedItemSet = false;\n\n    /** @hidden */\n    get _mobileSidebarVisible(): boolean {\n        return this._isMobile && this._sidebarVisible;\n    }\n\n    /** @hidden */\n    constructor() {\n        super();\n        this._sidebarWidth = this._getNormalizedSidebarWidth(this._config.sidebar?.width);\n    }\n\n    /** @hidden */\n    ngOnInit(): void {\n        super.ngOnInit();\n        this._settingsGeneratorService.settings.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((settings) => {\n            if (this._isSidebarSettings(settings) && settings.sidebarWidth) {\n                this._sidebarWidth = this._getNormalizedSidebarWidth(settings.sidebarWidth);\n                this._cdr.detectChanges();\n            }\n        });\n    }\n\n    /** @hidden */\n    focusElementByPath(path: string, element: ElementRef<HTMLElement>): void {\n        const pathArray = path.split('.');\n        // We are interested only in sections with ID.\n        const sectionIndex =\n            this.settings?.items.findIndex((section) => {\n                if (!this._isFormGeneratorSection(section)) {\n                    return;\n                }\n                return section.id === pathArray[0];\n            }) ?? -1;\n\n        // Focus on section.\n        if (sectionIndex > -1) {\n            this._setSelectedIndex(sectionIndex);\n        }\n\n        // Currently we support only 2 level nesting of form groups.\n        if (pathArray.length > 0) {\n            this._settingsGeneratorContent.setActiveTab(pathArray[1]);\n        }\n\n        setTimeout(() => {\n            element.nativeElement.focus();\n        });\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        if (this._settingsGenerator.elementRef.nativeElement && this._config.sidebar?.mobileBreakpoint) {\n            resizeObservable(this._settingsGenerator.elementRef.nativeElement)\n                .pipe(startWith(null), debounceTime(30), distinctUntilChanged(), takeUntilDestroyed(this._destroyRef))\n                .subscribe(() => {\n                    const { width } = this._settingsGenerator.elementRef.nativeElement.getBoundingClientRect();\n\n                    const isMobile = width <= this._config.sidebar.mobileBreakpoint;\n\n                    if (this._isMobile === isMobile) {\n                        return;\n                    }\n\n                    this._settingsGeneratorService.setMobileState(isMobile);\n                    this._isMobile = isMobile;\n\n                    // User opened section previously, so focus on that section\n                    if (this._isMobile && this._selectedIndex >= 0) {\n                        this._sidebarVisible = false;\n                    }\n\n                    // In mobile view, we don't need to set initial index, since the section won't be visible to the end user.\n                    if (!this._initialSelectedItemSet && !this._isMobile) {\n                        this._setSelectedIndex(this._selectedIndex > -1 ? this._selectedIndex : 0);\n                        this._initialSelectedItemSet = true;\n                    }\n\n                    if (!this._isMobile && this._selectedIndex === -1) {\n                        this._setSelectedIndex(0);\n                    }\n\n                    this._cdr.detectChanges();\n                });\n        }\n    }\n\n    /** @hidden */\n    _displaySettingsSearchInput(): boolean {\n        const listEl = this._listElement;\n        if (!listEl) {\n            return false;\n        } else {\n            return !!this.searchTerm || listEl.nativeElement.scrollHeight > listEl.nativeElement.clientHeight;\n        }\n    }\n\n    /** @hidden */\n    _setSelectedIndex(index: number): void {\n        this._selectedIndex = index;\n        this._sidebarVisible = index === -1;\n        this._cdr.detectChanges();\n    }\n\n    /** @Hidden */\n    _goBack(): void {\n        this._setSelectedIndex(-1);\n    }\n\n    /** @hidden */\n    private _getNormalizedSidebarWidth(width: string | SidebarWidthConfiguration): SidebarWidthConfiguration {\n        return typeof width === 'string' ? { minWidth: width, maxWidth: width, width } : width;\n    }\n\n    /** @hidden */\n    private _isSidebarSettings(settings: Nullable<any>): settings is SidebarSettingsModel<any> {\n        return settings?.appearance === 'sidebar';\n    }\n\n    /** @hidden */\n    private _isFormGeneratorSection(section: SettingsItem): section is FormSettingsItem | GroupedFormSettingsItem {\n        return !!(section as any).id;\n    }\n}\n","<div\n    class=\"fdp-settings-generator__sidebar\"\n    [class.fdp-settings-generator__sidebar--hidden]=\"!_mobileSidebarVisible\"\n    [style.width]=\"_mobileSidebarVisible ? null : _sidebarWidth.width\"\n    [style.min-width]=\"_mobileSidebarVisible ? null : _sidebarWidth.minWidth\"\n    [style.max-width]=\"_mobileSidebarVisible ? null : _sidebarWidth.maxWidth\"\n>\n    <div class=\"fdp-settings-generator__search-header\">\n        <div\n            fd-title\n            role=\"heading\"\n            [attr.aria-level]=\"headingLevel()\"\n            class=\"fdp-settings-generator__title fd-title--h5\"\n        >\n            {{ sidebarTitle() ?? ('platformSettingsGenerator.settingsLabel' | fdTranslate)() }}\n        </div>\n\n        <!-- TODO: implement search input\n        @if (_displaySettingsSearchInput()) {\n            <fd-input-group\n                type=\"search\"\n                glyph=\"search\"\n                [glyphAriaLabel]=\"('platformSettingsGenerator.searchLabel' | fdTranslate)()\"\n                [attr.placeholder]=\"('platformSettingsGenerator.searchLabel' | fdTranslate)()\"\n                [button]=\"true\"\n                [disabled]=\"false\"\n                [(ngModel)]=\"searchTerm\"\n                class=\"fdp-settings-generator__search-input\"\n            >\n            </fd-input-group>\n        }\n        -->\n    </div>\n    <div class=\"fdp-settings-generator__list-container\" #listElement>\n        <ul fd-list [byline]=\"true\" [navigationIndicator]=\"true\">\n            @for (item of settings?.items; track item; let i = $index) {\n                <li (click)=\"_setSelectedIndex(i)\" fd-list-item [selected]=\"i === _selectedIndex\" [id]=\"item.id\">\n                    <a fd-list-link [navigated]=\"i === _selectedIndex\" [navigationIndicator]=\"_isMobile\">\n                        @if (item.thumbnail) {\n                            <span fd-list-thumbnail>\n                                <fdp-settings-generator-sidebar-icon\n                                    [thumbnail]=\"item.thumbnail\"\n                                ></fdp-settings-generator-sidebar-icon>\n                            </span>\n                        }\n                        <div fd-list-content>\n                            @if (item.title | fdkAsyncOrSync; as titleValue) {\n                                <div fd-list-title [wrap]=\"!!_sidebarWidth.wrapSidebarTitle\">{{ titleValue }}</div>\n                            } @else {\n                                <div fd-list-title>\n                                    <fd-skeleton\n                                        height=\"16px\"\n                                        type=\"rectangle\"\n                                        width=\"40%\"\n                                        textLines=\"1\"\n                                        [style.margin]=\"'auto 0'\"\n                                    ></fd-skeleton>\n                                </div>\n                            }\n                            @if (item.description) {\n                                <div fd-list-byline [wrap]=\"!!_sidebarWidth.wrapSidebarDescription\">\n                                    @if (item.description | fdkAsyncOrSync; as descriptionValue) {\n                                        {{ descriptionValue }}\n                                    } @else {\n                                        <fd-skeleton\n                                            type=\"text\"\n                                            width=\"60%\"\n                                            textLines=\"1\"\n                                            [style.margin]=\"'auto 0'\"\n                                        ></fd-skeleton>\n                                    }\n                                </div>\n                            }\n                        </div>\n                    </a>\n                </li>\n            }\n        </ul>\n    </div>\n</div>\n<div\n    class=\"fdp-settings-generator__content\"\n    [class.fdp-settings-generator__content--hidden]=\"_mobileSidebarVisible\"\n    [style.width]=\"_mobileSidebarVisible ? null : 'calc(100% - ' + _sidebarWidth.width + ')'\"\n    [style.min-width]=\"_mobileSidebarVisible ? null : 'calc(100% - ' + _sidebarWidth.minWidth + ')'\"\n    [style.max-width]=\"_mobileSidebarVisible ? null : 'calc(100% - ' + _sidebarWidth.maxWidth + ')'\"\n>\n    @for (item of settings?.items; track item; let i = $index) {\n        <fdp-settings-generator-content\n            [attr.hidden]=\"i !== _selectedIndex ? true : null\"\n            [settings]=\"item\"\n            [mobile]=\"_isMobile\"\n            (goBack)=\"_goBack()\"\n            #settingsGeneratorContent\n        ></fdp-settings-generator-content>\n    }\n</div>\n","import { Injectable, Type } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { BaseSettingsGeneratorLayout } from './layouts/base-settings-generator-layout';\n\n/**\n * Service, used as a registry of the available layouts for Settings Generator Component.\n */\n@Injectable()\nexport class SettingsGeneratorLayoutAccessorService {\n    /** @hidden */\n    private readonly _layouts = new Map<string, Type<BaseSettingsGeneratorLayout>>();\n\n    /**\n     * Adds custom layout component to layouts registry for later usage with Settings Generator component.\n     * @param layoutName Name of the Layout\n     * @param layoutComponent Component type to be used for defined layout.\n     */\n    addLayout(layoutName: string, layoutComponent: Type<BaseSettingsGeneratorLayout>): void {\n        this._layouts.set(layoutName, layoutComponent);\n    }\n\n    /**\n     * Gets Component type for defined layout.\n     * @param layoutName\n     */\n    getLayout(layoutName: string): Nullable<Type<BaseSettingsGeneratorLayout>> {\n        return this._layouts.get(layoutName);\n    }\n}\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ComponentRef,\n    DestroyRef,\n    ElementRef,\n    HostBinding,\n    Inject,\n    inject,\n    Injector,\n    input,\n    Input,\n    OnDestroy,\n    ViewChild,\n    ViewContainerRef,\n    ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { HasElementRef, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { FormGeneratorService } from '@fundamental-ngx/platform/form';\nimport { BehaviorSubject, filter, Observable, Subscription } from 'rxjs';\nimport { ThemeSelectorListComponent } from './controls/theme-selector-list/theme-selector-list.component';\nimport { BaseSettingsGeneratorLayout } from './layouts/base-settings-generator-layout';\nimport { SettingsGeneratorSidebarLayoutComponent } from './layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component';\nimport { SettingsConfig } from './models/settings-config.model';\nimport { SettingsGenerator } from './models/settings-generator.model';\nimport { SettingsModel } from './models/settings.model';\nimport { SettingsGeneratorLayoutAccessorService } from './settings-generator-layout-accessor.service';\nimport { SettingsGeneratorReturnValue, SettingsGeneratorService } from './settings-generator.service';\nimport { FDP_SETTINGS_GENERATOR, FDP_SETTINGS_GENERATOR_CONFIG } from './tokens';\n\n@Component({\n    selector: 'fdp-settings-generator',\n    templateUrl: './settings-generator.component.html',\n    styleUrl: './settings-generator.component.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        SettingsGeneratorService,\n        {\n            provide: FDP_SETTINGS_GENERATOR,\n            useExisting: SettingsGeneratorComponent\n        }\n    ],\n    standalone: true,\n    host: {\n        '[style.width]': 'width()',\n        '[style.height]': 'height()'\n    }\n})\nexport class SettingsGeneratorComponent implements SettingsGenerator, AfterViewInit, OnDestroy, HasElementRef {\n    /** @hidden */\n    @HostBinding('class')\n    protected readonly _initialClass = 'fdp-settings-generator';\n    /** @hidden */\n    @ViewChild('renderer', { read: ViewContainerRef })\n    private readonly _viewRef: ViewContainerRef;\n\n    /**\n     * Settings Generator Element Ref.\n     */\n    readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n    /**\n     * Settings configuration.\n     */\n    @Input()\n    set settings(value: Nullable<SettingsModel>) {\n        if (value) {\n            value.appearance = value.appearance || (this._config.defaultLayout as string);\n        }\n        this._settings = value;\n        this._settingsGeneratorService.settings.next(value);\n        this._setLayout();\n    }\n\n    get settings(): Nullable<SettingsModel> {\n        return this._settings;\n    }\n\n    /**\n     * Container height.\n     */\n    height = input<string>();\n\n    /**\n     * Container width.\n     */\n    width = input<string>();\n\n    /** @hidden */\n    private _settings: Nullable<SettingsModel>;\n\n    /** @hidden */\n    private readonly _settingsGeneratorService = inject(SettingsGeneratorService);\n\n    /** @hidden */\n    private _currentLayout: string;\n\n    /** @hidden */\n    private readonly _viewReady = new BehaviorSubject<boolean>(false);\n\n    /** @hidden */\n    private _viewReadySub: Subscription;\n\n    /** @hidden */\n    private _layoutComponentRef: ComponentRef<BaseSettingsGeneratorLayout>;\n\n    /** @hidden */\n    constructor(\n        private readonly _fgService: FormGeneratorService,\n        private readonly _settingsLayoutService: SettingsGeneratorLayoutAccessorService,\n        private readonly _injector: Injector,\n        private readonly _cdr: ChangeDetectorRef,\n        private readonly _destroyRef: DestroyRef,\n        @Inject(FDP_SETTINGS_GENERATOR_CONFIG) private readonly _config: SettingsConfig\n    ) {\n        this._settingsLayoutService.addLayout('sidebar', SettingsGeneratorSidebarLayoutComponent);\n        this._fgService.addComponent(ThemeSelectorListComponent, ['theme-list']);\n        this._settingsGeneratorService.onItemFocus.subscribe((entry) => {\n            this._layoutComponentRef.instance.focusElementByPath(entry.path, entry.element);\n        });\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._viewReady.next(true);\n\n        // We need to notify children components to update their classes.\n        this._settingsGeneratorService.mobileState$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n            this._cdr.markForCheck();\n        });\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._viewReady.complete();\n        this._viewReadySub?.unsubscribe();\n        this._layoutComponentRef?.destroy();\n        this._viewRef?.clear();\n    }\n\n    /**\n     * Programmatically submit inner forms of the settings generator.\n     * @returns Observable with settings value grouped by main sections and inner sections.\n     */\n    submit(): Observable<SettingsGeneratorReturnValue> {\n        return this._settingsGeneratorService.submit();\n    }\n\n    /** @hidden */\n    private _setLayout(): void {\n        this._viewReadySub?.unsubscribe();\n\n        this._viewReadySub = this._viewReady.pipe(filter((ready) => ready)).subscribe(() => {\n            if (!this.settings?.appearance || this._currentLayout === this.settings.appearance) {\n                return;\n            }\n\n            const layoutComponent = this._settingsLayoutService.getLayout(this.settings.appearance);\n\n            if (!layoutComponent) {\n                return;\n            }\n\n            const injector = Injector.create({\n                providers: [],\n                parent: this._injector\n            });\n\n            this._layoutComponentRef?.destroy();\n            this._viewRef.clear();\n            this._layoutComponentRef = this._viewRef.createComponent(layoutComponent, { injector });\n\n            this._currentLayout = this.settings.appearance;\n\n            this._cdr.detectChanges();\n        });\n    }\n}\n","<ng-container #renderer></ng-container>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { PlatformFormGeneratorModule } from '@fundamental-ngx/platform/form';\n\nimport {\n    ThemeSelectorListComponent,\n    ThemeSelectorListIconComponent\n} from './controls/theme-selector-list/theme-selector-list.component';\nimport { FDP_SETTINGS_GENERATOR_DEFAULT_CONFIG } from './default-config';\nimport { SettingsGeneratorSidebarIconComponent } from './layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component';\nimport { SettingsGeneratorSidebarLayoutComponent } from './layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component';\nimport { SettingsConfig } from './models/settings-config.model';\nimport { SettingsGeneratorContentComponent } from './settings-generator-content/settings-generator-content.component';\nimport { SettingsGeneratorSectionComponent } from './settings-generator-content/settings-generator-section/settings-generator-section.component';\nimport { SettingsGeneratorLayoutAccessorService } from './settings-generator-layout-accessor.service';\nimport { SettingsGeneratorComponent } from './settings-generator.component';\nimport { FDP_SETTINGS_GENERATOR_CONFIG } from './tokens';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [\n        PlatformFormGeneratorModule,\n        SettingsGeneratorComponent,\n        SettingsGeneratorSidebarLayoutComponent,\n        SettingsGeneratorContentComponent,\n        SettingsGeneratorSectionComponent,\n        ThemeSelectorListComponent,\n        ThemeSelectorListIconComponent,\n        SettingsGeneratorSidebarIconComponent\n    ],\n    exports: [\n        SettingsGeneratorComponent,\n        SettingsGeneratorSidebarLayoutComponent,\n        SettingsGeneratorContentComponent,\n        SettingsGeneratorSectionComponent,\n        ThemeSelectorListIconComponent\n    ],\n    providers: [\n        SettingsGeneratorLayoutAccessorService,\n        {\n            provide: FDP_SETTINGS_GENERATOR_CONFIG,\n            useValue: FDP_SETTINGS_GENERATOR_DEFAULT_CONFIG\n        }\n    ]\n})\nexport class SettingsGeneratorModule {\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<SettingsConfig>): ModuleWithProviders<SettingsGeneratorModule> {\n        return {\n            ngModule: SettingsGeneratorModule,\n            providers: [\n                {\n                    provide: FDP_SETTINGS_GENERATOR_CONFIG,\n                    useValue: { ...FDP_SETTINGS_GENERATOR_DEFAULT_CONFIG, ...config }\n                }\n            ]\n        };\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}