@taiga-ui/kit
Version:
Taiga UI Angular main components kit
1 lines • 11.7 kB
Source Map (JSON)
{"version":3,"file":"taiga-ui-kit-components-timeline.mjs","sources":["../../../projects/kit/components/timeline/timeline-item.component.ts","../../../projects/kit/components/timeline/timeline-item.template.html","../../../projects/kit/components/timeline/timeline.component.ts","../../../projects/kit/components/timeline/timeline.template.html","../../../projects/kit/components/timeline/timeline.ts","../../../projects/kit/components/timeline/taiga-ui-kit-components-timeline.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n linkedSignal,\n model,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\n\nimport {TuiTimelineComponent} from './timeline.component';\n\n@Component({\n selector: 'label[tuiTimelineItem]',\n imports: [FormsModule],\n templateUrl: './timeline-item.template.html',\n styleUrl: './timeline-item.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.inline-size.%]': 'timeline.d() * (value()[1] - value()[0])',\n '[style.inset-inline-start.%]': 'timeline.d() * offset()',\n },\n})\nexport class TuiTimelineItem {\n protected readonly timeline = inject(TuiTimelineComponent);\n protected readonly offset = linkedSignal(() => this.value()[0]);\n public readonly draggable = input(true);\n public readonly resizable = input(true);\n public readonly value = model<readonly [number, number]>([0, 0]);\n\n public readonly min = computed((array = this.timeline.value()) =>\n array.reduce(\n (min, [_, end]) => (end <= this.value()[0] && end > min ? end : min),\n 0,\n ),\n );\n\n public readonly max = computed((array = this.timeline.value()) =>\n array.reduce(\n (max, [start]) => (start >= this.value()[1] && start < max ? start : max),\n this.timeline.max(),\n ),\n );\n\n protected update(input: HTMLInputElement): void {\n const length = this.value()[1] - this.value()[0];\n\n const [start, end] = this.timeline\n .gaps()\n .map(([start, end]): [number, number] => [\n end === this.max() ? this.min() : start,\n start === this.min() ? this.max() : end,\n ])\n .find(\n ([start, end]) =>\n end - start >= length &&\n this.offset() >= start &&\n this.offset() < end,\n ) ?? [this.min(), this.max()];\n\n this.offset.set(Math.max(Math.min(this.offset(), end - length), start));\n this.value.set([this.offset(), this.offset() + length]);\n input.valueAsNumber = this.offset();\n }\n}\n","@if (draggable()) {\n <input\n #drag\n type=\"range\"\n class=\"t-input t-input_drag\"\n [max]=\"timeline.max() - value()[1] + value()[0]\"\n [style.--drag.%]=\"timeline.d() * (value()[1] - value()[0])\"\n [(ngModel)]=\"offset\"\n (ngModelChange)=\"update(drag)\"\n />\n}\n@if (resizable()) {\n <input\n type=\"range\"\n class=\"t-input\"\n [max]=\"value()[1] - 1\"\n [min]=\"min()\"\n [style.inset-inline-end.%]=\"timeline.d() * (timeline.max() - value()[1])\"\n [style.inset-inline-start.%]=\"timeline.d() * min()\"\n [(ngModel)]=\"value()[0]\"\n (ngModelChange)=\"value.set([value()[0], value()[1]])\"\n />\n <input\n type=\"range\"\n class=\"t-input\"\n [max]=\"max()\"\n [min]=\"value()[0] + 1\"\n [style.inset-inline-end.%]=\"timeline.d() * (timeline.max() - max())\"\n [style.inset-inline-start.%]=\"timeline.d() * value()[0]\"\n [(ngModel)]=\"value()[1]\"\n (ngModelChange)=\"value.set([value()[0], value()[1]])\"\n />\n}\n<ng-content />\n","import {NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n input,\n type TemplateRef,\n} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {type TuiOrientation} from '@taiga-ui/core/types';\n\nimport {TuiTimelineItem} from './timeline-item.component';\n\n@Component({\n selector: 'tui-timeline',\n imports: [NgTemplateOutlet],\n templateUrl: './timeline.template.html',\n styleUrl: './timeline.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'[attr.data-orientation]': 'orientation()'},\n})\nexport class TuiTimelineComponent {\n public readonly items = contentChildren(TuiTimelineItem);\n public readonly d = computed(() => 100 / this.max());\n public readonly value = computed(() => this.items().map(({value}) => value()));\n\n public readonly gaps = computed((value = this.value().slice()) =>\n [[0, this.max()], ...value.sort(([a], [b]) => a - b)].map(\n ([_, end = 0], index, array) =>\n [index ? end : 0, array[index + 1]?.[0] ?? this.max()] as const,\n ),\n );\n\n public readonly orientation = input<TuiOrientation>('horizontal');\n public readonly template = input<TemplateRef<TuiContext<number>>>();\n public readonly max = input(100);\n}\n","@for (_ of '-'.repeat(value().length + 1); track value()[$index]) {\n @let gap = gaps()[$index] ?? [0, 0];\n @if (gap[0] < gap[1]) {\n <span\n class=\"t-gap\"\n [style.inline-size.%]=\"(gap[1] - gap[0]) * d()\"\n [style.inset-inline-start.%]=\"gap[0] * d()\"\n >\n <ng-container\n [ngTemplateOutlet]=\"template() || null\"\n [ngTemplateOutletContext]=\"{$implicit: $index}\"\n />\n </span>\n }\n}\n<ng-content />\n","import {TuiTimelineComponent} from './timeline.component';\nimport {TuiTimelineItem} from './timeline-item.component';\n\nexport const TuiTimeline = [TuiTimelineComponent, TuiTimelineItem] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}