{"version":3,"file":"fundamental-ngx-core-timeline.mjs","sources":["../../../../libs/core/timeline/components/timeline-node-header/timeline-node-header.directive.ts","../../../../libs/core/timeline/services/position-strategies/base-strategy.ts","../../../../libs/core/timeline/services/position-strategies/horizontal-double-sides-strategy.ts","../../../../libs/core/timeline/services/position-strategies/horizontal-single-side-strategy.ts","../../../../libs/core/timeline/services/position-strategies/vertical-double-sides-strategy.ts","../../../../libs/core/timeline/services/position-strategies/vertical-single-side-strategy.ts","../../../../libs/core/timeline/services/position-strategies/position-strategy-factory.ts","../../../../libs/core/timeline/services/timeline-position-control.service.ts","../../../../libs/core/timeline/components/timeline-node/timeline-node.component.ts","../../../../libs/core/timeline/components/timeline-node/timeline-node.component.html","../../../../libs/core/timeline/directives/timeline-first-list-outlet.directive.ts","../../../../libs/core/timeline/directives/timeline-node-def.directive.ts","../../../../libs/core/timeline/directives/timeline-second-list-outlet.directive.ts","../../../../libs/core/timeline/timeline.component.ts","../../../../libs/core/timeline/timeline.component.html","../../../../libs/core/timeline/components/timeline-node-body/timeline-node-body.component.ts","../../../../libs/core/timeline/components/timeline-node-body/timeline-node-body.component.html","../../../../libs/core/timeline/components/timeline-node-footer/timeline-node-footer.component.ts","../../../../libs/core/timeline/components/timeline-node-header/timeline-node-header-info/timeline-node-header-info.directive.ts","../../../../libs/core/timeline/directives/class-bindings/timeline-header-info-sub-title.directive.ts","../../../../libs/core/timeline/directives/class-bindings/timeline-node-header-info-text.directive.ts","../../../../libs/core/timeline/directives/class-bindings/timeline-node-header-info-title.directive.ts","../../../../libs/core/timeline/timeline.module.ts","../../../../libs/core/timeline/fundamental-ngx-core-timeline.ts"],"sourcesContent":["import { Directive } from '@angular/core';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: 'fd-timeline-node-header',\n    host: {\n        class: 'fd-timeline__post-header-container'\n    },\n    standalone: true\n})\nexport class TimelineNodeHeaderDirective {}\n","import { TimelineNodeComponentInterface } from '../../components/timeline-node/timeline-node-component.interface';\nimport { TimelineAxis } from '../../types';\n\nexport abstract class BaseStrategy {\n    /** Calculate styles for timeline nodes */\n    abstract calculateStyles(nodes: TimelineNodeComponentInterface[]): any;\n\n    /** Offset between nodes lines */\n    private readonly SMALL_OFFSET = 14;\n\n    /** Offset between nodes lines with icon */\n    private readonly BIG_OFFSET = 30;\n\n    /** Offset for second list in within vertical axis */\n    private readonly VERTICAL_TOP_LIST_OFFSET = 24;\n\n    /** @hidden */\n    protected _getOffset(node: TimelineNodeComponentInterface): number {\n        return node.glyph ? this.BIG_OFFSET : this.SMALL_OFFSET;\n    }\n\n    /** @hidden */\n    protected _getTwoListFromOne(\n        nodes: TimelineNodeComponentInterface[]\n    ): [TimelineNodeComponentInterface[], TimelineNodeComponentInterface[]] {\n        const lastIndexInFirstList = Math.ceil(nodes.length / 2);\n        const firstList = nodes.slice(0, lastIndexInFirstList);\n        const secondList = nodes.slice(lastIndexInFirstList, nodes.length);\n        return [firstList, secondList];\n    }\n\n    /** @hidden */\n    protected _setStylesForSingleList(nodes: TimelineNodeComponentInterface[], axis: TimelineAxis): void {\n        const [offsetProperty, sizeProperty] =\n            axis === 'horizontal' ? ['offsetLeft', 'width'] : ['offsetTop', 'height'];\n\n        nodes.forEach((node, index) => {\n            const nextNode = nodes[index + 1];\n            // Set line size depend on where next node item is started\n            if (nextNode) {\n                const size =\n                    nextNode.el.nativeElement[offsetProperty] -\n                    node.el.nativeElement[offsetProperty] -\n                    this._getOffset(node);\n                node.lineEl.nativeElement.style[sizeProperty] = size + 'px';\n            } else {\n                // Hide last timeline line in list\n                node.lineEl.nativeElement.style.opacity = '0';\n            }\n        });\n    }\n\n    /** @hidden */\n    protected _setStylesForDoubleList(nodes: TimelineNodeComponentInterface[], axis: TimelineAxis): void {\n        const [firstList, secondList] = this._getTwoListFromOne(nodes);\n        const [offsetProp, sizeProp, sizeOffsetProp] =\n            axis === 'horizontal' ? ['offsetLeft', 'width', 'offsetWidth'] : ['offsetTop', 'height', 'offsetHeight'];\n\n        // Set styles for second list\n        secondList.forEach((node, index) => {\n            const el = node.el.nativeElement;\n            const parallelNodeEl = firstList[index].el.nativeElement;\n\n            // Handle case when bottom edge of item in second list higher than top edge of next item in first list\n            // Actual only for vertical axis because items in horizontal axis have fixed size\n            if (axis === 'vertical') {\n                secondList[index].el.nativeElement.style.marginTop = `${this.SMALL_OFFSET}px`;\n                const prevNode = secondList[index - 1];\n                const diffBetween = prevNode\n                    ? parallelNodeEl.offsetTop +\n                      this.VERTICAL_TOP_LIST_OFFSET -\n                      (prevNode.el.nativeElement.offsetTop + prevNode.el.nativeElement.offsetHeight)\n                    : -1;\n                if (diffBetween > 0) {\n                    prevNode.el.nativeElement.style.marginBottom = `${diffBetween}px`;\n                }\n            }\n\n            // Set line size depend on where next node item is started\n            const diff =\n                parallelNodeEl[offsetProp] + parallelNodeEl[sizeOffsetProp] - el[offsetProp] - this._getOffset(node);\n            node.lineEl.nativeElement.style[sizeProp] = diff + 'px';\n        });\n\n        // Set styles for first list\n        firstList.forEach((node, index) => {\n            const el = node.el.nativeElement;\n            const parallelNode = secondList[index];\n            // Set line size depend on where next node item is started\n            if (parallelNode) {\n                const diff = parallelNode.el.nativeElement[offsetProp] - el[offsetProp] - this._getOffset(node);\n                node.lineEl.nativeElement.style[sizeProp] = diff + 'px';\n            }\n        });\n\n        // Hide last timeline line in lists\n        const lastNode =\n            firstList.length === secondList.length\n                ? secondList[secondList.length - 1]\n                : firstList[firstList.length - 1];\n        lastNode.lineEl.nativeElement.style.opacity = '0';\n    }\n}\n","import { TimelineNodeComponentInterface } from '../../components/timeline-node/timeline-node-component.interface';\nimport { BaseStrategy } from './base-strategy';\n\nexport class HorizontalDoubleSidesStrategy extends BaseStrategy {\n    /** Calculate styles for timeline nodes */\n    calculateStyles(nodes: TimelineNodeComponentInterface[]): any {\n        this._setStylesForDoubleList(nodes, 'horizontal');\n    }\n}\n","import { TimelineNodeComponentInterface } from '../../components/timeline-node/timeline-node-component.interface';\nimport { BaseStrategy } from './base-strategy';\n\nexport class HorizontalSingleSideStrategy extends BaseStrategy {\n    /** Calculate styles for timeline nodes */\n    calculateStyles(nodes: TimelineNodeComponentInterface[]): any {\n        this._setStylesForSingleList(nodes, 'horizontal');\n    }\n}\n","import { TimelineNodeComponentInterface } from '../../components/timeline-node/timeline-node-component.interface';\nimport { BaseStrategy } from './base-strategy';\n\nexport class VerticalDoubleSidesStrategy extends BaseStrategy {\n    /** Calculate styles for timeline nodes */\n    calculateStyles(nodes: TimelineNodeComponentInterface[]): void {\n        this._setStylesForDoubleList(nodes, 'vertical');\n    }\n}\n","import { TimelineNodeComponentInterface } from '../../components/timeline-node/timeline-node-component.interface';\nimport { BaseStrategy } from './base-strategy';\n\nexport class VerticalSingleSideStrategy extends BaseStrategy {\n    /** Calculate styles for timeline nodes */\n    calculateStyles(nodes: TimelineNodeComponentInterface[]): void {\n        this._setStylesForSingleList(nodes, 'vertical');\n    }\n}\n","import { TimeLinePositionStrategy } from '../../types';\nimport { BaseStrategy } from './base-strategy';\nimport { HorizontalDoubleSidesStrategy } from './horizontal-double-sides-strategy';\nimport { HorizontalSingleSideStrategy } from './horizontal-single-side-strategy';\nimport { VerticalDoubleSidesStrategy } from './vertical-double-sides-strategy';\nimport { VerticalSingleSideStrategy } from './vertical-single-side-strategy';\n\nexport class PositionStrategyFactory {\n    /** Get timeline position strategy */\n    static getStrategy(strategy: TimeLinePositionStrategy): BaseStrategy {\n        switch (strategy) {\n            case 'vertical-right':\n                return new VerticalSingleSideStrategy();\n            case 'vertical-left':\n                return new VerticalSingleSideStrategy();\n            case 'vertical-double':\n                return new VerticalDoubleSidesStrategy();\n            case 'horizontal-top':\n                return new HorizontalSingleSideStrategy();\n            case 'horizontal-bottom':\n                return new HorizontalSingleSideStrategy();\n            case 'horizontal-double':\n                return new HorizontalDoubleSidesStrategy();\n            default:\n                throw Error(`Unsupported strategy: ${strategy}`);\n        }\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { TimelineNodeComponentInterface } from '../components/timeline-node/timeline-node-component.interface';\nimport { TimeLinePositionStrategy } from '../types';\nimport { BaseStrategy } from './position-strategies/base-strategy';\nimport { PositionStrategyFactory } from './position-strategies/position-strategy-factory';\n\n@Injectable()\nexport class TimelinePositionControlService {\n    /* List of TimelineNodeComponent */\n    /** @hidden */\n    private _nodeItems: TimelineNodeComponentInterface[] = [];\n\n    /* Current position strategy. It depends on axis and layout */\n    /** @hidden */\n    private _positionStrategy: BaseStrategy;\n\n    /** Calculate styles for timeline nodes */\n    calculatePositions(): void {\n        this._positionStrategy.calculateStyles(this._nodeItems);\n    }\n\n    /** Set strategy for current axis and layout */\n    setStrategy(strategy: TimeLinePositionStrategy): void {\n        this._positionStrategy = PositionStrategyFactory.getStrategy(strategy);\n    }\n\n    /** Register TimelineNodeComponent */\n    registerNode(node: TimelineNodeComponentInterface): void {\n        this._nodeItems.push(node);\n    }\n\n    /** Remove TimelineNodeComponent */\n    removeNode(node: TimelineNodeComponentInterface): void {\n        this._nodeItems = this._nodeItems.filter((item) => item !== node);\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    Input,\n    OnDestroy,\n    OnInit,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconComponent, IconFont } from '@fundamental-ngx/core/icon';\nimport { TimelinePositionControlService } from '../../services/timeline-position-control.service';\nimport { TimelineNodeComponentInterface } from './timeline-node-component.interface';\n\n@Component({\n    selector: 'fd-timeline-node',\n    templateUrl: './timeline-node.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'fd-timeline__node-wrapper',\n        '[class.fd-timeline__node-wrapper--icon]': '!!glyph'\n    },\n    imports: [IconComponent]\n})\nexport class TimelineNodeComponent implements TimelineNodeComponentInterface, OnInit, OnDestroy {\n    /** Glyph of the current timeline node.*/\n    @Input()\n    glyph: string;\n\n    /** Glyph font family */\n    @Input()\n    glyphFont: IconFont = FD_DEFAULT_ICON_FONT_FAMILY;\n\n    /** Aria label for the current timeline node. */\n    @Input()\n    ariaLabel = 'timelineitem';\n\n    /** Reference to the line of timeline node*/\n    @ViewChild('lineEl')\n    lineEl: ElementRef;\n\n    /** @hidden */\n    constructor(\n        public el: ElementRef,\n        private _timelinePositionControl: TimelinePositionControlService\n    ) {}\n\n    /** @hidden */\n    ngOnInit(): void {\n        this._timelinePositionControl.registerNode(this);\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._timelinePositionControl.removeNode(this);\n    }\n}\n","<div class=\"fd-timeline__node-container\">\n    <div class=\"fd-timeline__icon-wrapper\">\n        <div class=\"fd-timeline__node\" [class.fd-timeline__node--icon]=\"!!glyph\">\n            @if (glyph) {\n                <fd-icon [glyph]=\"glyph\" [font]=\"glyphFont\"></fd-icon>\n            }\n        </div>\n    </div>\n    <div #lineEl class=\"fd-timeline__connecting-line\"></div>\n</div>\n<div role=\"timelineitem\" [attr.aria-label]=\"ariaLabel\" class=\"fd-timeline__post\">\n    <ng-content></ng-content>\n</div>\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n    selector: '[fdTimelineFirstListOutlet], [fd-timeline-first-list-outlet]',\n    standalone: true\n})\nexport class TimelineFirstListOutletDirective {\n    /** Ref to ViewContainerRef instance*/\n    constructor(public viewContainer: ViewContainerRef) {}\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n/** Context provided to the timeline node component. */\nexport class TimelineNodeOutletContext<T> {\n    /** Data for the node. */\n    $implicit: T;\n\n    /** Index location of the node. */\n    index?: number;\n\n    /** Length of the number of total dataNodes. */\n    count?: number;\n\n    /** @hidden */\n    constructor(data: T) {\n        this.$implicit = data;\n    }\n}\n\n@Directive({\n    selector: '[fdTimelineNodeDef], [fd-timeline-node-def]',\n    standalone: true\n})\nexport class TimelineNodeDefDirective<T> {\n    /** Data passed to the template*/\n    @Input()\n    fdTimelineNodeData: T;\n\n    /** @hidden */\n    constructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n    selector: '[fdTimelineSecondListOutlet], [fd-timeline-second-list-outlet]',\n    standalone: true\n})\nexport class TimelineSecondListOutletDirective {\n    /** Ref to ViewContainerRef instance*/\n    constructor(public viewContainer: ViewContainerRef) {}\n}\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChildren,\n    DestroyRef,\n    ElementRef,\n    Input,\n    IterableChangeRecord,\n    IterableDiffer,\n    IterableDiffers,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    QueryList,\n    SimpleChanges,\n    TemplateRef,\n    TrackByFunction,\n    ViewChild,\n    ViewContainerRef,\n    ViewEncapsulation,\n    inject\n} from '@angular/core';\nimport { resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { debounceTime } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { range } from '@fundamental-ngx/cdk/utils';\nimport { SkeletonComponent } from '@fundamental-ngx/core/skeleton';\nimport { TimelineNodeHeaderDirective } from './components/timeline-node-header/timeline-node-header.directive';\nimport { TimelineNodeComponent } from './components/timeline-node/timeline-node.component';\nimport { TimelineFirstListOutletDirective } from './directives/timeline-first-list-outlet.directive';\nimport { TimelineNodeDefDirective, TimelineNodeOutletContext } from './directives/timeline-node-def.directive';\nimport { TimelineSecondListOutletDirective } from './directives/timeline-second-list-outlet.directive';\nimport { TimelinePositionControlService } from './services/timeline-position-control.service';\nimport { TimeLinePositionStrategy, TimelineAxis, TimelineSidePosition } from './types';\n\n@Component({\n    selector: 'fd-timeline',\n    templateUrl: './timeline.component.html',\n    styleUrl: './timeline.component.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [TimelinePositionControlService],\n    host: {\n        role: 'timeline',\n        'arial-label': 'timeline',\n        class: 'fd-timeline',\n        '[class.fd-timeline--horizontal]': 'axis === \"horizontal\"',\n        '[class.fd-timeline--vertical]': 'axis === \"vertical\"'\n    },\n    imports: [\n        TimelineFirstListOutletDirective,\n        TimelineSecondListOutletDirective,\n        TimelineNodeComponent,\n        TimelineNodeHeaderDirective,\n        SkeletonComponent\n    ]\n})\nexport class TimelineComponent<T> implements OnInit, OnDestroy, OnChanges, AfterViewInit {\n    /**\n     * Data array to render\n     */\n    @Input()\n    dataSource: T[];\n\n    /**\n     * Tracking function that will be used to check the differences in data changes.\n     */\n    @Input()\n    trackBy: TrackByFunction<T>;\n\n    /**\n     * Axis for timeline\n     */\n    @Input()\n    axis: TimelineAxis = 'vertical';\n\n    /**\n     * Layout for timeline\n     */\n    @Input()\n    layout: TimelineSidePosition = 'right';\n\n    /* First outlet within the timeline template where the dataNodes will be inserted. */\n    /** @hidden */\n    @ViewChild('loadingTemplate')\n    _loadingTemplate: TemplateRef<any>;\n\n    /** @hidden */\n    @ViewChild(TimelineFirstListOutletDirective, { static: true })\n    private _firstListOutlet: TimelineFirstListOutletDirective;\n    /* Second outlet within the timeline template where the dataNodes will be inserted. */\n\n    /** @hidden */\n    @ViewChild(TimelineSecondListOutletDirective, { static: true })\n    private _secondListOutlet: TimelineSecondListOutletDirective;\n    /** The timeline node template for the timeline */\n\n    /** @hidden */\n    @ContentChildren(TimelineNodeDefDirective, { descendants: true })\n    private _nodeDefs: QueryList<TimelineNodeDefDirective<T>>;\n\n    /** @hidden */\n    _canShowFirstList = true;\n\n    /** @hidden */\n    _canShowSecondList = true;\n\n    /** @hidden */\n    _loading = true;\n\n    /** @hidden */\n    readonly loadingRange = range(3);\n\n    /** @hidden\n     * Differ used to find the changes in the data provided by the data source.\n     */\n    private _dataDifferForFirstList: IterableDiffer<T>;\n\n    /** @hidden */\n    private _dataDifferForSecondList: IterableDiffer<T>;\n\n    /** @hidden */\n    private readonly _onDestroy = inject(DestroyRef);\n\n    /** @hidden */\n    constructor(\n        private _differs: IterableDiffers,\n        private _cd: ChangeDetectorRef,\n        private _timelinePositionControlService: TimelinePositionControlService,\n        private _elementRef: ElementRef<HTMLElement>\n    ) {}\n\n    /** @hidden */\n    ngOnInit(): void {\n        this._dataDifferForFirstList = this._differs.find([]).create(this.trackBy);\n        this._dataDifferForSecondList = this._differs.find([]).create(this.trackBy);\n\n        this._canShowFirstList = this.layout !== 'right' && this.layout !== 'bottom';\n        this._canShowSecondList = this.layout !== 'left' && this.layout !== 'top';\n    }\n\n    /** @hidden */\n    ngOnChanges(changes: SimpleChanges): void {\n        if ('axis' in changes || 'layout' in changes) {\n            this._canShowFirstList = this.layout !== 'right' && this.layout !== 'bottom';\n            this._canShowSecondList = this.layout !== 'left' && this.layout !== 'top';\n            this._setPositionStrategy();\n            this.switchDataSource(this.dataSource);\n        }\n        if ('dataSource' in changes && !changes['dataSource'].firstChange) {\n            const value = changes['dataSource'].currentValue;\n            this.switchDataSource(value);\n        }\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        resizeObservable(this._elementRef.nativeElement)\n            .pipe(debounceTime(50), takeUntilDestroyed(this._onDestroy))\n            .subscribe(() => this._timelinePositionControlService.calculatePositions());\n        this._setPositionStrategy();\n        this.switchDataSource(this.dataSource);\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._firstListOutlet.viewContainer.clear();\n    }\n\n    /**\n     * Update state by new data source\n     * If the data source is null, interpret this by clearing the node outlet.\n     */\n    /** @hidden */\n    private switchDataSource(data: T[]): void {\n        this._loading = true;\n        if (!data) {\n            this._firstListOutlet.viewContainer.clear();\n            this._firstListOutlet.viewContainer.createEmbeddedView(this._loadingTemplate);\n            this._cd.detectChanges();\n            this._timelinePositionControlService.calculatePositions();\n            this._cd.detectChanges();\n            return;\n        }\n        if (this._nodeDefs) {\n            const [first, second] = this._splitList(data);\n            this._renderNodeChanges(first, this._dataDifferForFirstList, this._firstListOutlet?.viewContainer);\n            this._renderNodeChanges(second, this._dataDifferForSecondList, this._secondListOutlet?.viewContainer);\n            this._cd.detectChanges();\n            this._timelinePositionControlService.calculatePositions();\n            this._loading = false;\n            this._cd.detectChanges();\n        }\n    }\n\n    /** Check for changes made in the data and render each change (node added/removed/moved). */\n    /** @hidden */\n    private _renderNodeChanges(data: T[], differ: IterableDiffer<T>, vcr: ViewContainerRef): void {\n        const changes = differ.diff(data);\n        if (!changes) {\n            return;\n        }\n        changes.forEachOperation(\n            (item: IterableChangeRecord<T>, adjustedPreviousIndex: number | null, currentIndex: number | null) => {\n                if (currentIndex != null && item.previousIndex === null) {\n                    this._insertNode(data[currentIndex], currentIndex, vcr);\n                } else if (currentIndex === null && adjustedPreviousIndex != null) {\n                    vcr.remove(adjustedPreviousIndex);\n                } else if (adjustedPreviousIndex != null && currentIndex != null) {\n                    const view = vcr.get(adjustedPreviousIndex);\n                    if (view) {\n                        vcr.move(view, currentIndex);\n                    }\n                }\n            }\n        );\n    }\n\n    /** @hidden */\n    private _setPositionStrategy(): void {\n        this._timelinePositionControlService.setStrategy(`${this.axis}-${this.layout}` as TimeLinePositionStrategy);\n    }\n\n    /**\n     * Create the embedded view for the data node template and place it in the correct index location\n     * within the data node view container.\n     */\n    /** @hidden */\n    private _insertNode(nodeData: T, index: number, vcr: ViewContainerRef): void {\n        const node = this._getNodeDef(index);\n\n        // Node context that will be provided to created embedded view\n        const context = new TimelineNodeOutletContext<T>(nodeData);\n\n        vcr.createEmbeddedView(node.template, context, index);\n    }\n\n    /**\n     * Finds the matching node definition that should be used for this node data. If there is only\n     * one node definition, it is returned.\n     */\n    /** @hidden */\n    private _getNodeDef(i: number): TimelineNodeDefDirective<T> {\n        if (this._nodeDefs.length === 1) {\n            return this._nodeDefs.first;\n        }\n        return this._nodeDefs.toArray()[i];\n    }\n\n    /**\n     * Split data list to two list first and second to represent timelines in two lists.\n     */\n    /** @hidden */\n    private _splitList(dataSource: T[]): T[][] {\n        let dataForFirstList: T[] = [];\n        let dataForSecondList: T[] = [];\n        if (this.layout === 'left' || this.layout === 'top') {\n            dataForFirstList = [...dataSource];\n        } else if (this.layout === 'right' || this.layout === 'bottom') {\n            dataForSecondList = [...dataSource];\n        } else {\n            dataSource.forEach((item, index) => {\n                if (index % 2 === 0) {\n                    dataForFirstList.push(item);\n                } else {\n                    dataForSecondList.push(item);\n                }\n            });\n        }\n        return [dataForFirstList, dataForSecondList];\n    }\n}\n","<div\n    [class.fd-timeline__list--empty]=\"!_canShowFirstList && !_loading\"\n    class=\"fd-timeline__list fd-timeline__list--first\"\n>\n    <ng-container fdTimelineFirstListOutlet></ng-container>\n</div>\n<div class=\"fd-timeline__main-line\"></div>\n<div\n    [class.fd-timeline__list--empty]=\"!_canShowSecondList\"\n    [class.fd-timeline__list--with-offset]=\"_canShowFirstList\"\n    class=\"fd-timeline__list fd-timeline__list--second\"\n>\n    <ng-container fdTimelineSecondListOutlet></ng-container>\n</div>\n\n<ng-template #loadingTemplate>\n    @for (_ of loadingRange; track $index) {\n        <fd-timeline-node>\n            <fd-timeline-node-header>\n                <fd-skeleton width=\"100%\" height=\"32px\">\n                    <svg:circle cx=\"16\" cy=\"16\" r=\"16\" rx=\"4\"></svg:circle>\n                    <svg:rect x=\"37\" y=\"0\" width=\"120\" height=\"12\" rx=\"4\"></svg:rect>\n                    <svg:rect x=\"37\" y=\"20\" width=\"80\" height=\"8\" rx=\"4\"></svg:rect>\n                </fd-skeleton>\n            </fd-timeline-node-header>\n\n            <fd-skeleton type=\"text\"></fd-skeleton>\n        </fd-timeline-node>\n    }\n</ng-template>\n","import {\n    afterNextRender,\n    ChangeDetectionStrategy,\n    Component,\n    inject,\n    Injector,\n    Input,\n    ViewEncapsulation\n} from '@angular/core';\nimport { TextComponent } from '@fundamental-ngx/core/text';\nimport { TimelinePositionControlService } from '../../services/timeline-position-control.service';\n\n@Component({\n    selector: 'fd-timeline-node-body',\n    templateUrl: './timeline-node-body.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        class: 'fd-timeline__post-content'\n    },\n    imports: [TextComponent]\n})\nexport class TimelineNodeBodyComponent {\n    /** Text content of timeline node*/\n    @Input()\n    content: string;\n\n    /**\n     * The number of lines to be visible.\n     * If user doesn't provide it, all lines will be visible\n     */\n    @Input()\n    maxLines: number;\n\n    /** @hidden */\n    private readonly _injector = inject(Injector);\n\n    /** @hidden */\n    private readonly _timelinePositionControlService = inject(TimelinePositionControlService);\n\n    /** @hidden */\n    calculatePositions(): void {\n        afterNextRender(\n            () => {\n                this._timelinePositionControlService.calculatePositions();\n            },\n            { injector: this._injector }\n        );\n    }\n}\n","<fd-text\n    [maxLines]=\"maxLines || 0\"\n    [text]=\"content\"\n    [isCollapsed]=\"!!maxLines\"\n    [expandable]=\"!!maxLines\"\n    (isCollapsedChange)=\"calculatePositions()\"\n></fd-text>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n    selector: 'fd-timeline-node-footer',\n    template: '<ng-content></ng-content>',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        class: 'fd-timeline__post-actions'\n    },\n    styles: [\n        `\n            .fd-timeline__post-actions button + button {\n                margin-left: 0.5rem;\n            }\n        `\n    ],\n    standalone: true\n})\nexport class TimelineNodeFooterComponent {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: 'fd-timeline-node-header-info',\n    host: {\n        class: 'fd-timeline__post-header'\n    },\n    standalone: true\n})\nexport class TimelineNodeHeaderInfoDirective {}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n    selector: '[fdTimelineHeaderInfoSubTitle], [fd-timeline-header-info-sub-title]',\n    standalone: true\n})\nexport class TimelineHeaderInfoSubTitleDirective {\n    /** add/remove fd-timeline__post-subheader class*/\n    @HostBinding('class.fd-timeline__post-subheader')\n    fdTimelineNodeHeaderInfoSubTitleClass = true;\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n    selector: '[fdTimelineNodeHeaderInfoText], [fd-timeline-node-header-info-text]',\n    standalone: true\n})\nexport class TimelineNodeHeaderInfoTextDirective {\n    /** add/remove fd-timeline__post-header-text class*/\n    @HostBinding('class.fd-timeline__post-header-text')\n    fdTimelineNodeHeaderInfoTextClass = true;\n}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n    selector: '[fdTimelineNodeHeaderInfoTitle], [fd-timeline-node-header-info-title]',\n    standalone: true\n})\nexport class TimelineNodeHeaderInfoTitleDirective {\n    /** fd-timeline__post-header-title*/\n    @HostBinding('class.fd-timeline__post-header-title')\n    fdTimelineNodeHeaderInfoTitleClass = true;\n}\n","import { NgModule } from '@angular/core';\n\nimport { TimelineNodeBodyComponent } from './components/timeline-node-body/timeline-node-body.component';\nimport { TimelineNodeFooterComponent } from './components/timeline-node-footer/timeline-node-footer.component';\nimport { TimelineNodeHeaderInfoDirective } from './components/timeline-node-header/timeline-node-header-info/timeline-node-header-info.directive';\nimport { TimelineNodeHeaderDirective } from './components/timeline-node-header/timeline-node-header.directive';\nimport { TimelineNodeComponent } from './components/timeline-node/timeline-node.component';\nimport { TimelineHeaderInfoSubTitleDirective } from './directives/class-bindings/timeline-header-info-sub-title.directive';\nimport { TimelineNodeHeaderInfoTextDirective } from './directives/class-bindings/timeline-node-header-info-text.directive';\nimport { TimelineNodeHeaderInfoTitleDirective } from './directives/class-bindings/timeline-node-header-info-title.directive';\nimport { TimelineNodeDefDirective } from './directives/timeline-node-def.directive';\nimport { TimelineComponent } from './timeline.component';\n\n/**\n * @deprecated\n * Use direct imports of `TimelineComponent`,\n    `TimelineNodeDefDirective`,\n    `TimelineNodeHeaderComponent`,\n    `TimelineNodeHeaderInfoComponent`,\n    `TimelineNodeBodyComponent`,\n    `TimelineNodeFooterComponent`,\n    `TimelineNodeComponent`,\n    `TimelineNodeHeaderInfoTitleDirective`,\n    `TimelineNodeHeaderInfoTextDirective`,\n    `TimelineHeaderInfoSubTitleDirective`\n */\n@NgModule({\n    imports: [\n        TimelineComponent,\n        TimelineNodeDefDirective,\n        TimelineNodeHeaderDirective,\n        TimelineNodeHeaderInfoDirective,\n        TimelineNodeBodyComponent,\n        TimelineNodeFooterComponent,\n        TimelineNodeComponent,\n        TimelineNodeHeaderInfoTitleDirective,\n        TimelineNodeHeaderInfoTextDirective,\n        TimelineHeaderInfoSubTitleDirective\n    ],\n    exports: [\n        TimelineComponent,\n        TimelineNodeDefDirective,\n        TimelineNodeHeaderDirective,\n        TimelineNodeHeaderInfoDirective,\n        TimelineNodeBodyComponent,\n        TimelineNodeFooterComponent,\n        TimelineNodeComponent,\n        TimelineNodeHeaderInfoTitleDirective,\n        TimelineNodeHeaderInfoTextDirective,\n        TimelineHeaderInfoSubTitleDirective\n    ]\n})\nexport class TimelineModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TimelinePositionControlService"],"mappings":"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"}