{"version":3,"file":"mosaic-design-infosec-components-components-time-range.mjs","sources":["../../../libs/components/time-range/src/lib/tokens/default-time-range-types.ts","../../../libs/components/time-range/src/lib/types/time-range-type.ts","../../../libs/components/time-range/src/lib/types/translate-type.ts","../../../libs/components/time-range/src/lib/constants/date-time.ts","../../../libs/components/time-range/src/lib/constants/default-time-range-types.ts","../../../libs/components/time-range/src/lib/constants/i18n.ts","../../../libs/components/time-range/src/lib/constants/translate-type.ts","../../../libs/components/time-range/src/lib/utils/range.ts","../../../libs/components/time-range/src/lib/utils/time-range/time-range.ts","../../../libs/components/time-range/src/lib/validators/range-value.ts","../../../libs/components/time-range/src/lib/components/time-range-base.component.ts","../../../libs/components/time-range/src/lib/components/time-range-option-translate/time-range-option-translate.component.ts","../../../libs/components/time-range/src/lib/components/time-range-option-translate/time-range-option-translate.component.html","../../../libs/components/time-range/src/lib/components/time-range-editor/time-range-editor.component.ts","../../../libs/components/time-range/src/lib/components/time-range-editor/time-range-editor.component.html","../../../libs/components/time-range/src/lib/components/time-range-title-translate/time-range-title-translate.component.ts","../../../libs/components/time-range/src/lib/components/time-range-title-translate/time-range-title-translate.component.html","../../../libs/components/time-range/src/lib/components/time-range-title/time-range-title.component.ts","../../../libs/components/time-range/src/lib/components/time-range-title/time-range-title.component.html","../../../libs/components/time-range/src/lib/components/time-range/time-range.component.ts","../../../libs/components/time-range/src/lib/components/time-range/time-range.component.html","../../../libs/components/time-range/src/lib/time-range.module.ts","../../../libs/components/time-range/mosaic-design-infosec-components-components-time-range.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nimport { TimeRangeType } from '../types';\n\nexport const IC_DEFAULT_TIME_RANGE_TYPES = new InjectionToken<TimeRangeType[]>(\n    'Default types for time range component'\n);\n","export enum TimeRangeType {\n    LastMinute = 'lastMinute',\n    Last5Minutes = 'last5Minutes',\n    Last15Minutes = 'last15Minutes',\n    Last30Minutes = 'last30Minutes',\n    LastHour = 'lastHour',\n    Last24Hours = 'last24Hours',\n    Last3Days = 'last3Days',\n    Last7Days = 'last7Days',\n    Last14Days = 'last14Days',\n    Last30Days = 'last30Days',\n    Last3Months = 'last3Months',\n    Last12Months = 'last12Months',\n    AllTime = 'allTime',\n    CurrentQuarter = 'currentQuarter',\n    CurrentYear = 'currentYear',\n    Range = 'range'\n}\n","import { TimeRangeType } from './time-range-type';\n\nexport enum TimeRangeTranslateType {\n    LastMinutes = 'lastMinutes',\n    LastHours = 'lastHours',\n    LastDays = 'lastDays',\n    LastMonths = 'lastMonths',\n    Other = 'other'\n}\n\nexport type TimeRangeTranslateTypeMap = Record<TimeRangeType, TimeRangeTranslateType>;\n","import { DateObjectUnits } from 'luxon';\n\nexport const dateTimeDefaults: DateObjectUnits = {\n    millisecond: 0,\n    second: 0\n};\n","import { TimeRangeType } from '../types';\n\nexport const defaultTimeRangeTypes: TimeRangeType[] = [\n    TimeRangeType.LastHour,\n    TimeRangeType.Last24Hours,\n    TimeRangeType.Last3Days,\n    TimeRangeType.Last7Days,\n    TimeRangeType.Last14Days,\n    TimeRangeType.CurrentQuarter,\n    TimeRangeType.CurrentYear,\n    TimeRangeType.AllTime,\n    TimeRangeType.Range\n];\n","import { timeRangeTranslates } from '@mosaic-design/infosec-components/i18n-resources';\nimport { LocalizationScopeConfig, IcTranslocoScopeAlias } from '@mosaic-design/infosec-components/types';\n\nexport const scopeConfig: LocalizationScopeConfig = {\n    alias: IcTranslocoScopeAlias.TimeRange,\n    localTranslates: timeRangeTranslates\n};\n","import { TimeRangeTranslateType, TimeRangeTranslateTypeMap, TimeRangeType } from '../types';\n\nexport const timeRangeTranslateTypeMap: TimeRangeTranslateTypeMap = {\n    [TimeRangeType.LastMinute]: TimeRangeTranslateType.LastMinutes,\n    [TimeRangeType.Last5Minutes]: TimeRangeTranslateType.LastMinutes,\n    [TimeRangeType.Last15Minutes]: TimeRangeTranslateType.LastMinutes,\n    [TimeRangeType.Last30Minutes]: TimeRangeTranslateType.LastMinutes,\n    [TimeRangeType.LastHour]: TimeRangeTranslateType.LastHours,\n    [TimeRangeType.Last24Hours]: TimeRangeTranslateType.LastHours,\n    [TimeRangeType.Last3Days]: TimeRangeTranslateType.LastDays,\n    [TimeRangeType.Last7Days]: TimeRangeTranslateType.LastDays,\n    [TimeRangeType.Last14Days]: TimeRangeTranslateType.LastDays,\n    [TimeRangeType.Last30Days]: TimeRangeTranslateType.LastDays,\n    [TimeRangeType.Last3Months]: TimeRangeTranslateType.LastMonths,\n    [TimeRangeType.Last12Months]: TimeRangeTranslateType.LastMonths,\n    [TimeRangeType.AllTime]: TimeRangeTranslateType.Other,\n    [TimeRangeType.CurrentQuarter]: TimeRangeTranslateType.Other,\n    [TimeRangeType.CurrentYear]: TimeRangeTranslateType.Other,\n    [TimeRangeType.Range]: TimeRangeTranslateType.Other\n};\n","import { DateTime } from 'luxon';\n\nimport { dateTimeDefaults } from '../constants';\nimport { RangeValue } from '../types';\n\nexport function getDefaultRangeValue(): Required<RangeValue> {\n    const from = DateTime.now().minus({ days: 1 }).set(dateTimeDefaults);\n    const to = DateTime.now().set(dateTimeDefaults);\n\n    return {\n        fromTime: from,\n        fromDate: from,\n        toTime: to,\n        toDate: to\n    };\n}\n","import { DateObjectUnits, DateTime, DateTimeUnit, DurationLike } from 'luxon';\n\nimport { combineDateAndTime, isNonNullable } from '@mosaic-design/infosec-components/utils';\n\nimport { dateTimeDefaults, defaultTimeRangeTypes } from '../../constants';\nimport { Range, RangeValue, TimeRange, TimeRangeType, TimeRangeUnits } from '../../types';\nimport { getDefaultRangeValue } from '../range';\n\nexport function calculateTimeRange(type: TimeRangeType | undefined, rangeValue?: RangeValue): Range {\n    if (!type) {\n        return {\n            startDateTime: undefined,\n            endDateTime: undefined\n        };\n    }\n\n    const checkedRangeValue = rangeValue || getDefaultRangeValue();\n\n    const range = (duration: DurationLike, defaults?: DateObjectUnits): Range => ({\n        startDateTime: DateTime.now()\n            .minus(duration)\n            .set({\n                ...dateTimeDefaults,\n                ...defaults\n            })\n            .toUTC()\n            .toISO()\n    });\n\n    const lastMinutesRange = (minutes: number): Range => range({ minutes });\n    const lastHoursRange = (hours: number): Range => range({ hours });\n    const lastDaysRange = (days: number): Range => range({ days }, { hour: 0, minute: 0 });\n    const lastMonthsRange = (months: number): Range => range({ months });\n\n    const startOf = (unit: DateTimeUnit): Range => ({\n        startDateTime: DateTime.now().startOf(unit).set(dateTimeDefaults).toUTC().toISO()\n    });\n\n    const formatDateAndTime = (date: DateTime, time: DateTime): string =>\n        combineDateAndTime(date, time).set(dateTimeDefaults).toUTC().toISO() ?? '';\n\n    if (type === TimeRangeType.Range) {\n        return {\n            startDateTime:\n                checkedRangeValue.fromDate && checkedRangeValue.fromTime\n                    ? formatDateAndTime(checkedRangeValue.fromDate, checkedRangeValue.fromTime)\n                    : '',\n            endDateTime:\n                checkedRangeValue.toDate && checkedRangeValue.toTime\n                    ? formatDateAndTime(checkedRangeValue.toDate, checkedRangeValue.toTime)\n                    : ''\n        };\n    }\n\n    switch (type) {\n        case TimeRangeType.LastMinute:\n            return lastMinutesRange(1);\n        case TimeRangeType.Last5Minutes:\n            return lastMinutesRange(5);\n        case TimeRangeType.Last15Minutes:\n            return lastMinutesRange(15);\n        case TimeRangeType.Last30Minutes:\n            return lastMinutesRange(30);\n        case TimeRangeType.LastHour:\n            return lastHoursRange(1);\n        case TimeRangeType.Last24Hours:\n            return lastHoursRange(24);\n        case TimeRangeType.Last3Days:\n            return lastDaysRange(2);\n        case TimeRangeType.Last7Days:\n            return lastDaysRange(6);\n        case TimeRangeType.Last14Days:\n            return lastDaysRange(13);\n        case TimeRangeType.Last30Days:\n            return lastDaysRange(29);\n        case TimeRangeType.Last3Months:\n            return lastMonthsRange(3);\n        case TimeRangeType.Last12Months:\n            return lastMonthsRange(12);\n        case TimeRangeType.CurrentQuarter:\n            return startOf('quarter');\n        case TimeRangeType.CurrentYear:\n            return startOf('year');\n        case TimeRangeType.AllTime:\n        default:\n            return {\n                startDateTime: undefined,\n                endDateTime: undefined\n            };\n    }\n}\n\nexport function getTimeRangeDefaultValue(availableTimeRangeTypes: TimeRangeType[], rangeValue?: RangeValue): TimeRange {\n    const defaultType = availableTimeRangeTypes[0] ?? defaultTimeRangeTypes[0] ?? TimeRangeType.LastHour;\n\n    return {\n        ...calculateTimeRange(defaultType, rangeValue || getDefaultRangeValue()),\n        type: defaultType\n    };\n}\n\nexport function checkAndCorrectTimeRangeValue(\n    value: TimeRange | undefined,\n    availableTimeRangeTypes: TimeRangeType[],\n    rangeValue: RangeValue\n): TimeRange {\n    let result =\n        isNonNullable(value) && availableTimeRangeTypes.includes(value.type)\n            ? value\n            : getTimeRangeDefaultValue(availableTimeRangeTypes, rangeValue);\n\n    if (\n        !result.startDateTime ||\n        (result.type === TimeRangeType.Range && (!result.startDateTime || !result.endDateTime))\n    ) {\n        result = {\n            ...calculateTimeRange(result.type, rangeValue),\n            type: result.type\n        };\n    }\n\n    return result;\n}\n\nexport function getTimeRangeTypeUnits(type: TimeRangeType): TimeRangeUnits {\n    switch (type) {\n        case TimeRangeType.LastMinute:\n            return {\n                minutes: 1\n            };\n        case TimeRangeType.Last5Minutes:\n            return {\n                minutes: 5\n            };\n        case TimeRangeType.Last15Minutes:\n            return {\n                minutes: 15\n            };\n        case TimeRangeType.Last30Minutes:\n            return {\n                minutes: 30\n            };\n        case TimeRangeType.LastHour:\n            return {\n                hours: 1\n            };\n        case TimeRangeType.Last24Hours:\n            return {\n                hours: 24\n            };\n        case TimeRangeType.Last3Days:\n            return {\n                days: 3\n            };\n        case TimeRangeType.Last7Days:\n            return {\n                days: 7\n            };\n        case TimeRangeType.Last14Days:\n            return {\n                days: 14\n            };\n        case TimeRangeType.Last30Days:\n            return {\n                days: 30\n            };\n        case TimeRangeType.Last3Months:\n            return {\n                months: 3\n            };\n        case TimeRangeType.Last12Months:\n            return {\n                months: 12\n            };\n        default:\n            return {};\n    }\n}\n","import { DateTime } from 'luxon';\n\nimport { ValidationGroupValidatorFn } from '@mosaic-design/infosec-components/external/object-hash/utils';\nimport { combineDateAndTime } from '@mosaic-design/infosec-components/utils';\n\ninterface RangeFromValidatorValue {\n    fromTime?: DateTime;\n    fromDate?: DateTime;\n    toTime?: DateTime;\n    toDate?: DateTime;\n}\n\nexport const rangeFromValidator: ValidationGroupValidatorFn<RangeFromValidatorValue> = (form) => {\n    if (!form.fromTime || !form.fromDate || !form.toTime || !form.toDate) {\n        return null;\n    }\n\n    const fromDateTime = combineDateAndTime(form.fromDate, form.fromTime);\n    const toDateTime = combineDateAndTime(form.toDate, form.toTime);\n\n    return fromDateTime > toDateTime ? { fromIsGreaterThanTo: fromDateTime } : null;\n};\n","import { Directive } from '@angular/core';\n\nimport { defaultTimeRangeTypes } from '../constants';\nimport { TimeRangeType } from '../types';\n\n@Directive()\nexport abstract class TimeRangeBaseComponent {\n    protected _availableTimeRangeTypes: TimeRangeType[] = [];\n\n    protected constructor(protected providedDefaultTimeRangeTypes: TimeRangeType[] | null) {\n        this.initAvailableTimeRangeTypes();\n    }\n\n    protected initAvailableTimeRangeTypes(): void {\n        if (!this._availableTimeRangeTypes.length) {\n            this._availableTimeRangeTypes = this.defaultTimeRangeTypes;\n        }\n    }\n\n    protected get defaultTimeRangeTypes(): TimeRangeType[] {\n        return [...(this.providedDefaultTimeRangeTypes || defaultTimeRangeTypes)];\n    }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { IcTranslocoScopeAlias } from '@mosaic-design/infosec-components/types';\n\nimport { timeRangeTranslateTypeMap } from '../../constants';\nimport { TimeRangeOptionContext, TimeRangeTranslateType, TimeRangeType } from '../../types';\n\n@Component({\n    selector: 'ic-time-range-option-translate',\n    templateUrl: './time-range-option-translate.component.html',\n    styleUrls: ['./time-range-option-translate.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TimeRangeOptionTranslateComponent {\n    protected readonly timeRangeTranslateTypeMap = timeRangeTranslateTypeMap;\n    protected readonly TimeRangeType = TimeRangeType;\n    protected readonly TimeRangeTranslateType = TimeRangeTranslateType;\n    protected readonly IcTranslocoScopeAlias = IcTranslocoScopeAlias;\n\n    @Input() context: TimeRangeOptionContext | undefined;\n}\n","<ng-container *transloco=\"let translate; read: IcTranslocoScopeAlias.TimeRange\">\n    <ng-container *ngIf=\"context\">\n        <ng-container [ngSwitch]=\"timeRangeTranslateTypeMap[context.type]\">\n            <ng-container *ngSwitchCase=\"TimeRangeTranslateType.LastMinutes\">\n                {{ translate('TimeRange.Editor.Option.Minutes', { minutes: context.minutes }) }}\n            </ng-container>\n\n            <ng-container *ngSwitchCase=\"TimeRangeTranslateType.LastHours\">\n                {{ translate('TimeRange.Editor.Option.Hours', { hours: context.hours }) }}\n            </ng-container>\n\n            <ng-container *ngSwitchCase=\"TimeRangeTranslateType.LastDays\">\n                {{ translate('TimeRange.Editor.Option.Days', { days: context.days }) }}\n            </ng-container>\n\n            <ng-container *ngSwitchCase=\"TimeRangeTranslateType.LastMonths\">\n                {{ translate('TimeRange.Editor.Option.Months', { months: context.months }) }}\n            </ng-container>\n\n            <ng-container *ngSwitchDefault>\n                <ng-container *ngTemplateOutlet=\"otherOptionTypeTextTemplate\"> </ng-container>\n            </ng-container>\n        </ng-container>\n\n        <ng-template #otherOptionTypeTextTemplate>\n            <ng-container [ngSwitch]=\"context.type\">\n                <ng-container *ngSwitchCase=\"TimeRangeType.AllTime\">\n                    {{ translate('TimeRange.Editor.Option.ForAllTheTime') }}\n                </ng-container>\n\n                <ng-container *ngSwitchCase=\"TimeRangeType.CurrentQuarter\">\n                    {{ translate('TimeRange.Editor.Option.CurrentQuarter') }}\n                </ng-container>\n\n                <ng-container *ngSwitchCase=\"TimeRangeType.CurrentYear\">\n                    {{ translate('TimeRange.Editor.Option.CurrentYear') }}\n                </ng-container>\n\n                <ng-container *ngSwitchCase=\"TimeRangeType.Range\">\n                    {{ translate('TimeRange.Editor.Option.ForPeriod') }}\n                </ng-container>\n            </ng-container>\n        </ng-template>\n    </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, Inject, Input, Optional } from '@angular/core';\nimport {\n    ControlValueAccessor,\n    FormControl,\n    FormGroup,\n    NG_VALIDATORS,\n    NG_VALUE_ACCESSOR,\n    ValidationErrors,\n    Validator\n} from '@angular/forms';\nimport { KBQ_VALIDATION } from '@koobiq/components/core';\nimport { KbqDatepicker } from '@koobiq/components/datepicker';\nimport { TimeFormats } from '@koobiq/components/timepicker';\nimport { DateTime } from 'luxon';\nimport { distinctUntilChanged, map, takeUntil } from 'rxjs';\n\nimport { createValidationGroup, isEqualByHash } from '@mosaic-design/infosec-components/external/object-hash/utils';\nimport { DestroyService } from '@mosaic-design/infosec-components/services';\nimport { FormGroupValue, IcTranslocoScopeAlias, OnChange, OnTouch } from '@mosaic-design/infosec-components/types';\nimport { concatControlValidationErrors, isNonNullable } from '@mosaic-design/infosec-components/utils';\n\nimport { IC_DEFAULT_TIME_RANGE_TYPES } from '../../tokens';\nimport { RangeValue, TimeRange, TimeRangeInputs, TimeRangeOptionContext, TimeRangeType } from '../../types';\nimport {\n    calculateTimeRange,\n    checkAndCorrectTimeRangeValue,\n    getDefaultRangeValue,\n    getTimeRangeTypeUnits\n} from '../../utils';\nimport { rangeFromValidator } from '../../validators';\nimport { TimeRangeBaseComponent } from '../time-range-base.component';\n\ninterface Form {\n    type: FormControl<TimeRangeType>;\n    fromTime: FormControl<DateTime>;\n    fromDate: FormControl<DateTime>;\n    toTime: FormControl<DateTime>;\n    toDate: FormControl<DateTime>;\n}\n\ntype FormValue = FormGroupValue<Form>;\n\n@Component({\n    selector: 'ic-time-range-editor',\n    templateUrl: './time-range-editor.component.html',\n    styleUrls: ['./time-range-editor.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: TimeRangeEditorComponent,\n            multi: true\n        },\n        {\n            provide: NG_VALIDATORS,\n            useExisting: TimeRangeEditorComponent,\n            multi: true\n        },\n        DestroyService,\n        {\n            provide: KBQ_VALIDATION,\n            multi: true,\n            useValue: {\n                useValidation: false\n            }\n        }\n    ]\n})\nexport class TimeRangeEditorComponent\n    extends TimeRangeBaseComponent\n    implements TimeRangeInputs, ControlValueAccessor, Validator\n{\n    protected readonly IcTranslocoScopeAlias = IcTranslocoScopeAlias;\n    protected readonly TimeRangeType = TimeRangeType;\n    protected readonly TimeFormats = TimeFormats;\n\n    @Input() set defaultRangeValue(value: Required<RangeValue> | undefined) {\n        this._defaultRangeValue = value ?? getDefaultRangeValue();\n\n        if (!this.isRangeValueInitialized) {\n            this.form.patchValue(this._defaultRangeValue);\n            this.isRangeValueInitialized = true;\n        }\n    }\n\n    get defaultRangeValue(): Required<RangeValue> {\n        return this._defaultRangeValue;\n    }\n\n    private _defaultRangeValue = getDefaultRangeValue();\n\n    get availableTimeRangeTypes(): TimeRangeType[] {\n        return this._availableTimeRangeTypes;\n    }\n\n    @Input() set availableTimeRangeTypes(value: TimeRangeType[] | undefined) {\n        this._availableTimeRangeTypes = value || this.defaultTimeRangeTypes;\n    }\n\n    /** The maximum selectable date. */\n    @Input() maxDate: DateTime | undefined;\n\n    /** The minimum selectable date. */\n    @Input() minDate: DateTime | undefined;\n\n    form: FormGroup<Form>;\n\n    private isRangeValueInitialized = false;\n\n    constructor(\n        @Optional() @Inject(IC_DEFAULT_TIME_RANGE_TYPES) providedDefaultTimeRangeTypes: TimeRangeType[] | null,\n        private destroyed$: DestroyService\n    ) {\n        super(providedDefaultTimeRangeTypes);\n\n        this.form = this.createForm();\n        this.createFormSubscriptions();\n    }\n\n    value: TimeRange | undefined;\n\n    #lastEmittedValue: TimeRange | undefined;\n    #lastValidationErrorOnEmit: ValidationErrors | null = null;\n\n    get isRangeVisible(): boolean {\n        return this.availableTimeRangeTypes.includes(TimeRangeType.Range);\n    }\n\n    get timeRangeTypesWithoutRange(): TimeRangeType[] {\n        return this.availableTimeRangeTypes.filter((item) => item !== TimeRangeType.Range);\n    }\n\n    onChange: OnChange<TimeRange> = () => {\n        // empty\n    };\n\n    onTouch: OnTouch = () => {\n        // empty\n    };\n\n    registerOnChange(fn: OnChange<TimeRange>): void {\n        this.onChange = fn;\n    }\n\n    registerOnTouched(fn: OnTouch): void {\n        this.onTouch = fn;\n    }\n\n    writeValue(value: TimeRange | undefined): void {\n        if (!value) {\n            return;\n        }\n\n        const corrected = checkAndCorrectTimeRangeValue(value, this.availableTimeRangeTypes, this.form.value);\n\n        this.form.patchValue({\n            type: corrected.type\n        });\n\n        if (corrected.type === TimeRangeType.Range && corrected.startDateTime && corrected.endDateTime) {\n            this.isRangeValueInitialized = true;\n\n            const from = DateTime.fromISO(corrected.startDateTime);\n            const to = DateTime.fromISO(corrected.endDateTime);\n\n            this.form.patchValue({\n                fromTime: from,\n                fromDate: from,\n                toTime: to,\n                toDate: to\n            });\n        }\n    }\n\n    validate(): ValidationErrors | null {\n        return this.#lastValidationErrorOnEmit;\n    }\n\n    getTimeRangeOptionTemplateContext(type: TimeRangeType): TimeRangeOptionContext {\n        return {\n            ...getTimeRangeTypeUnits(type),\n            type\n        };\n    }\n\n    castDatePicker(datePicker: KbqDatepicker<unknown>): KbqDatepicker<DateTime> {\n        return datePicker as KbqDatepicker<DateTime>;\n    }\n\n    private createForm(): FormGroup<Form> {\n        const validationGroup = createValidationGroup<FormValue>({\n            validator: rangeFromValidator,\n            isEqualComparer: (previous, current) => {\n                const previousKeys = Object.keys(previous).map((item) => item as keyof FormValue);\n                const currentKeys = Object.keys(current).map((item) => item as keyof FormValue);\n\n                if (previousKeys.length !== currentKeys.length) {\n                    return false;\n                }\n\n                return !currentKeys.some((key) => current[key] !== previous[key]);\n            }\n        });\n\n        const defaultRangeValue = getDefaultRangeValue();\n\n        return new FormGroup({\n            type: new FormControl<TimeRangeType>(TimeRangeType.LastMinute, {\n                nonNullable: true\n            }),\n            fromTime: new FormControl<DateTime>(defaultRangeValue.fromTime, {\n                validators: [validationGroup.validate],\n                nonNullable: true\n            }),\n            fromDate: new FormControl<DateTime>(defaultRangeValue.fromDate, {\n                validators: [validationGroup.validate],\n                nonNullable: true\n            }),\n            toTime: new FormControl<DateTime>(defaultRangeValue.toTime, {\n                validators: [validationGroup.link],\n                nonNullable: true\n            }),\n            toDate: new FormControl<DateTime>(defaultRangeValue.toDate, {\n                validators: [validationGroup.link],\n                nonNullable: true\n            })\n        });\n    }\n\n    private createFormSubscriptions(): void {\n        const { form } = this;\n        const rangeControls = [\n            form.controls.fromTime,\n            form.controls.fromDate,\n            form.controls.toTime,\n            form.controls.toDate\n        ];\n\n        form.valueChanges\n            .pipe(\n                map((formValue) => formValue.type),\n                distinctUntilChanged(),\n                takeUntil(this.destroyed$)\n            )\n            .subscribe((type) => {\n                const isDisabled = type !== TimeRangeType.Range;\n                rangeControls.forEach((control) => {\n                    if (isDisabled) {\n                        control.disable();\n                    } else {\n                        control.enable();\n                    }\n                });\n            });\n\n        form.valueChanges.pipe(takeUntil(this.destroyed$)).subscribe((formValue) => {\n            const value = this.mapTimeRange(formValue);\n            const errors = concatControlValidationErrors(this.form);\n\n            if (\n                isNonNullable(value) &&\n                (!isEqualByHash(value, this.#lastEmittedValue) ||\n                    !isEqualByHash(errors, this.#lastValidationErrorOnEmit))\n            ) {\n                this.#lastEmittedValue = value;\n                this.#lastValidationErrorOnEmit = errors;\n\n                this.onChange(value);\n            }\n        });\n    }\n\n    private mapTimeRange(value: FormValue): TimeRange | undefined {\n        if (!value.type) {\n            return undefined;\n        }\n\n        return {\n            type: value.type,\n            ...calculateTimeRange(value.type, {\n                fromTime: value.fromTime,\n                fromDate: value.fromDate,\n                toDate: value.toDate,\n                toTime: value.toTime\n            })\n        };\n    }\n}\n","<div class=\"ic-time-range-editor\" [formGroup]=\"form\">\n    <kbq-radio-group [formControl]=\"form.controls.type\">\n        <div class=\"ic-time-range-editor__predefined\">\n            <kbq-radio-button\n                class=\"ic-time-range-editor__column-option\"\n                *ngFor=\"let type of timeRangeTypesWithoutRange\"\n                [value]=\"type\"\n            >\n                <ic-coalesce-content\n                    *icLet=\"getTimeRangeOptionTemplateContext(type); let context\"\n                    [items]=\"[\n                        {\n                            template: defaultOptionTextTemplate,\n                            context: { $implicit: context }\n                        }\n                    ]\"\n                >\n                </ic-coalesce-content>\n            </kbq-radio-button>\n        </div>\n\n        <div class=\"ic-time-range-editor__range\" *ngIf=\"isRangeVisible\">\n            <kbq-radio-button class=\"ic-time-range-editor__range-option\" [value]=\"TimeRangeType.Range\">\n                <ic-coalesce-content\n                    *icLet=\"getTimeRangeOptionTemplateContext(TimeRangeType.Range); let context\"\n                    [items]=\"[{ template: defaultOptionTextTemplate, context: { $implicit: context } }]\"\n                >\n                </ic-coalesce-content>\n            </kbq-radio-button>\n\n            <div class=\"ic-time-range-editor__range-controls\">\n                <div class=\"ic-time-range-editor__date-time\">\n                    <div class=\"ic-time-range-editor__date-time-prefix\">\n                        <ic-coalesce-content\n                            [items]=\"[{ alias: IcTranslocoScopeAlias.TimeRange, key: 'TimeRange.Editor.Label.From' }]\"\n                        >\n                        </ic-coalesce-content>\n                    </div>\n\n                    <div class=\"kbq-group\">\n                        <kbq-form-field class=\"kbq-group-item ic-time-range-editor__range-time\">\n                            <i kbqPrefix kbq-icon=\"kbq-clock_16\"></i>\n                            <input\n                                kbqTimepicker\n                                name=\"fromTime\"\n                                [formControl]=\"form.controls.fromTime\"\n                                [format]=\"TimeFormats.HHmmss\"\n                            />\n                        </kbq-form-field>\n\n                        <kbq-form-field\n                            class=\"kbq-group-item ic-time-range-editor__range-date\"\n                            (click)=\"rangeFromDatepicker.toggle()\"\n                        >\n                            <input\n                                name=\"fromDate\"\n                                [formControl]=\"form.controls.fromDate\"\n                                [kbqDatepicker]=\"castDatePicker(rangeFromDatepicker)\"\n                                [max]=\"form.value.toDate\"\n                            />\n                            <i kbq-icon=\"kbq-calendar-o_16\" kbqSuffix></i>\n                            <kbq-datepicker\n                                #rangeFromDatepicker\n                                [minDate]=\"minDate ?? null\"\n                                [maxDate]=\"maxDate ?? null\"\n                            ></kbq-datepicker>\n                        </kbq-form-field>\n                    </div>\n                </div>\n\n                <div class=\"ic-time-range-editor__date-time\">\n                    <div class=\"ic-time-range-editor__date-time-prefix\">\n                        <ic-coalesce-content\n                            [items]=\"[{ alias: IcTranslocoScopeAlias.TimeRange, key: 'TimeRange.Editor.Label.To' }]\"\n                        >\n                        </ic-coalesce-content>\n                    </div>\n\n                    <div class=\"kbq-group\">\n                        <kbq-form-field class=\"kbq-group-item ic-time-range-editor__range-time\">\n                            <i kbqPrefix kbq-icon=\"kbq-clock_16\"></i>\n                            <input\n                                kbqTimepicker\n                                name=\"toTime\"\n                                [formControl]=\"form.controls.toTime\"\n                                [format]=\"TimeFormats.HHmmss\"\n                            />\n                        </kbq-form-field>\n\n                        <kbq-form-field\n                            class=\"kbq-group-item ic-time-range-editor__range-date\"\n                            (click)=\"rangeToDatepicker.toggle()\"\n                        >\n                            <input\n                                name=\"toDate\"\n                                [formControl]=\"form.controls.toDate\"\n                                [kbqDatepicker]=\"castDatePicker(rangeToDatepicker)\"\n                                [min]=\"form.value.fromDate\"\n                            />\n                            <i kbq-icon=\"kbq-calendar-o_16\" kbqSuffix></i>\n                            <kbq-datepicker\n                                #rangeToDatepicker\n                                [minDate]=\"minDate ?? null\"\n                                [maxDate]=\"maxDate ?? null\"\n                            ></kbq-datepicker>\n                        </kbq-form-field>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </kbq-radio-group>\n</div>\n\n<ng-template #defaultOptionTextTemplate let-context>\n    <ic-time-range-option-translate [context]=\"context\"></ic-time-range-option-translate>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { DateRangeFormatType, IcTranslocoScopeAlias } from '@mosaic-design/infosec-components/types';\n\nimport { timeRangeTranslateTypeMap } from '../../constants';\nimport { TimeRangeTitleContext, TimeRangeTranslateType, TimeRangeType } from '../../types';\n\n@Component({\n    selector: 'ic-time-range-title-translate',\n    templateUrl: './time-range-title-translate.component.html',\n    styleUrls: ['./time-range-title-translate.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TimeRangeTitleTranslateComponent {\n    protected readonly timeRangeTranslateTypeMap = timeRangeTranslateTypeMap;\n    protected readonly TimeRangeType = TimeRangeType;\n    protected readonly TimeRangeTranslateType = TimeRangeTranslateType;\n    protected readonly IcTranslocoScopeAlias = IcTranslocoScopeAlias;\n    protected readonly DateRangeFormatType = DateRangeFormatType;\n\n    @Input() context: TimeRangeTitleContext | undefined;\n}\n","<ng-container *transloco=\"let translate; read: IcTranslocoScopeAlias.TimeRange\">\n    <ng-container *ngIf=\"context\">\n        <ng-container [ngSwitch]=\"timeRangeTranslateTypeMap[context.type]\">\n            <ng-container *ngSwitchCase=\"TimeRangeTranslateType.LastMinutes\">\n                {{ translate('TimeRange.Title.Text.Minutes', { minutes: context.minutes }) }}\n            </ng-container>\n\n            <ng-container *ngSwitchCase=\"TimeRangeTranslateType.LastHours\">\n                {{ translate('TimeRange.Title.Text.Hours', { hours: context.hours }) }}\n            </ng-container>\n\n            <ng-container *ngSwitchCase=\"TimeRangeTranslateType.LastDays\">\n                {{ translate('TimeRange.Title.Text.Days', { days: context.days }) }}\n            </ng-container>\n\n            <ng-container *ngSwitchCase=\"TimeRangeTranslateType.LastMonths\">\n                {{ translate('TimeRange.Title.Text.Months', { months: context.months }) }}\n            </ng-container>\n\n            <ng-container *ngSwitchDefault>\n                <ng-container *ngTemplateOutlet=\"otherTitleTextTemplate\"> </ng-container>\n            </ng-container>\n        </ng-container>\n\n        <ng-template #otherTitleTextTemplate>\n            <ng-container [ngSwitch]=\"context.type\">\n                <ng-container *ngSwitchCase=\"TimeRangeType.AllTime\">\n                    {{ translate('TimeRange.Title.Text.ForAllTheTime') }}\n                </ng-container>\n\n                <ng-container *ngSwitchCase=\"TimeRangeType.CurrentQuarter\">\n                    {{ translate('TimeRange.Title.Text.CurrentQuarter') }}\n                </ng-container>\n\n                <ng-container *ngSwitchCase=\"TimeRangeType.CurrentYear\">\n                    {{ translate('TimeRange.Title.Text.CurrentYear') }}\n                </ng-container>\n\n                <ng-container *ngSwitchCase=\"TimeRangeType.Range\">\n                    <span>\n                        <span>{{ translate('TimeRange.Title.Text.For') }}</span>\n                        <span>\n                            {{\n                                [context.startDateTime ?? '', context.endDateTime ?? '']\n                                    | icDateRange: DateRangeFormatType.RangeLongDate\n                            }}\n                        </span>\n                    </span>\n                </ng-container>\n            </ng-container>\n        </ng-template>\n    </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewEncapsulation } from '@angular/core';\n\nimport { TimeRange, TimeRangeCustomizableTitleContext, TimeRangeTitleContext } from '../../types';\nimport { getTimeRangeTypeUnits } from '../../utils';\n\n@Component({\n    selector: 'ic-time-range-title',\n    templateUrl: './time-range-title.component.html',\n    styleUrls: ['./time-range-title.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class TimeRangeTitleComponent {\n    @Input() set timeRange(value: TimeRange | undefined) {\n        this.context = TimeRangeTitleComponent.mapContext(value);\n        this.titleContext = TimeRangeTitleComponent.mapTitleContext(this.context);\n    }\n\n    @Input() titleTemplate: TemplateRef<TimeRangeCustomizableTitleContext> | undefined;\n\n    protected context: TimeRangeTitleContext | undefined;\n    protected titleContext: TimeRangeCustomizableTitleContext | undefined;\n\n    private static mapContext(timeRange: TimeRange | undefined): TimeRangeTitleContext | undefined {\n        return timeRange\n            ? {\n                  ...timeRange,\n                  ...getTimeRangeTypeUnits(timeRange.type)\n              }\n            : undefined;\n    }\n\n    private static mapTitleContext(\n        context: TimeRangeTitleContext | undefined\n    ): TimeRangeCustomizableTitleContext | undefined {\n        return context\n            ? {\n                  $implicit: context,\n                  ...context\n              }\n            : undefined;\n    }\n}\n","<ng-container *ngIf=\"titleTemplate; else defaultTitleTemplate\">\n    <ng-container *ngTemplateOutlet=\"titleTemplate; context: titleContext ?? null\"></ng-container>\n</ng-container>\n\n<ng-template #defaultTitleTemplate>\n    <a kbq-link pseudo>\n        <span class=\"kbq-link__text\">\n            <ic-coalesce-content [items]=\"[{ template: defaultTimeRangeTitleTextTemplate }]\"> </ic-coalesce-content>\n        </span>\n\n        <i kbq-icon=\"kbq-calendar-o_16\"></i>\n    </a>\n</ng-template>\n\n<ng-template #defaultTimeRangeTitleTextTemplate>\n    <ic-time-range-title-translate [context]=\"context\"></ic-time-range-title-translate>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Inject, Input, Optional, TemplateRef } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { KbqComponentColors, PopUpSizes } from '@koobiq/components/core';\nimport { KbqPopoverTrigger } from '@koobiq/components/popover';\nimport { DateTime } from 'luxon';\n\nimport { IcTranslocoScopeAlias, OnChange, OnTouch } from '@mosaic-design/infosec-components/types';\n\nimport { IC_DEFAULT_TIME_RANGE_TYPES } from '../../tokens';\nimport { RangeValue, TimeRange, TimeRangeCustomizableTitleContext, TimeRangeInputs, TimeRangeType } from '../../types';\nimport { checkAndCorrectTimeRangeValue, getDefaultRangeValue, getTimeRangeDefaultValue } from '../../utils';\nimport { TimeRangeBaseComponent } from '../time-range-base.component';\n\n@Component({\n    selector: 'ic-time-range',\n    templateUrl: './time-range.component.html',\n    styleUrls: ['./time-range.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: TimeRangeComponent,\n            multi: true\n        }\n    ]\n})\nexport class TimeRangeComponent extends TimeRangeBaseComponent implements TimeRangeInputs, ControlValueAccessor {\n    protected readonly KbqComponentColors = KbqComponentColors;\n    protected readonly IcTranslocoScopeAlias = IcTranslocoScopeAlias;\n    protected readonly PopUpSizes = PopUpSizes;\n\n    @Input() set defaultRangeValue(value: RangeValue | undefined) {\n        this.normalizedDefaultRangeValue = {\n            ...getDefaultRangeValue(),\n            ...value\n        };\n    }\n\n    normalizedDefaultRangeValue = getDefaultRangeValue();\n\n    get availableTimeRangeTypes(): TimeRangeType[] {\n        return this._availableTimeRangeTypes;\n    }\n\n    @Input() set availableTimeRangeTypes(value: TimeRangeType[] | undefined) {\n        this._availableTimeRangeTypes = value || this.defaultTimeRangeTypes;\n    }\n\n    /** The maximum selectable date. */\n    @Input() maxDate: DateTime | undefined;\n\n    /** The minimum selectable date. */\n    @Input() minDate: DateTime | undefined;\n\n    @Input() titleTemplate: TemplateRef<TimeRangeCustomizableTitleContext> | undefined;\n\n    titleValue: TimeRange;\n    rangeEditorControl: FormControl<TimeRange>;\n\n    constructor(\n        @Optional() @Inject(IC_DEFAULT_TIME_RANGE_TYPES) providedDefaultTimeRangeTypes: TimeRangeType[] | null\n    ) {\n        super(providedDefaultTimeRangeTypes);\n\n        const defaultValue = getTimeRangeDefaultValue([], this.normalizedDefaultRangeValue);\n        this.titleValue = defaultValue;\n        this.rangeEditorControl = new FormControl<TimeRange>(defaultValue, { nonNullable: true });\n    }\n\n    onChange: OnChange<TimeRange> = () => {\n        // empty\n    };\n\n    onTouch: OnTouch = () => {\n        // empty\n    };\n\n    registerOnChange(fn: OnChange<TimeRange>): void {\n        this.onChange = fn;\n    }\n\n    registerOnTouched(fn: OnTouch): void {\n        this.onTouch = fn;\n    }\n\n    writeValue(value: TimeRange | undefined): void {\n        const corrected = checkAndCorrectTimeRangeValue(\n            value,\n            this.availableTimeRangeTypes,\n            this.normalizedDefaultRangeValue\n        );\n        this.titleValue = corrected;\n        this.rangeEditorControl.setValue(corrected);\n    }\n\n    onApply(popover: KbqPopoverTrigger): void {\n        this.titleValue = this.rangeEditorControl.value;\n        this.onChange(this.titleValue);\n        popover.hide();\n    }\n\n    onCancel(popover: KbqPopoverTrigger): void {\n        popover.hide();\n    }\n\n    onVisibleChange(isVisible: boolean): void {\n        if (!isVisible) {\n            this.rangeEditorControl.setValue(this.titleValue);\n        }\n    }\n}\n","<div class=\"ic-time-range\">\n    <div\n        class=\"ic-time-range__trigger\"\n        kbqPopover\n        #popover=\"kbqPopover\"\n        [kbqPopoverSize]=\"PopUpSizes.Large\"\n        [kbqPopoverContent]=\"timeRangePopoverContent\"\n        [kbqPopoverFooter]=\"timeRangePopoverFooter\"\n        (kbqPopoverVisibleChange)=\"onVisibleChange($event)\"\n    >\n        <ic-time-range-title [timeRange]=\"titleValue\" [titleTemplate]=\"titleTemplate\"> </ic-time-range-title>\n    </div>\n\n    <ng-template #timeRangePopoverContent>\n        <div class=\"ic-time-range__content\">\n            <ic-time-range-editor\n                [formControl]=\"rangeEditorControl\"\n                [availableTimeRangeTypes]=\"availableTimeRangeTypes\"\n                [defaultRangeValue]=\"normalizedDefaultRangeValue\"\n                [minDate]=\"minDate\"\n                [maxDate]=\"maxDate\"\n            >\n            </ic-time-range-editor>\n        </div>\n    </ng-template>\n\n    <ng-template #timeRangePopoverFooter>\n        <div class=\"ic-time-range__buttons\">\n            <button\n                kbq-button\n                [color]=\"KbqComponentColors.Contrast\"\n                (click)=\"onApply(popover)\"\n                [disabled]=\"rangeEditorControl.invalid\"\n            >\n                <ic-coalesce-content\n                    [items]=\"[{ alias: IcTranslocoScopeAlias.TimeRange, key: 'TimeRange.Editor.Button.Apply' }]\"\n                >\n                </ic-coalesce-content>\n            </button>\n\n            <button kbq-button (click)=\"onCancel(popover)\">\n                <ic-coalesce-content\n                    [items]=\"[{ alias: IcTranslocoScopeAlias.TimeRange, key: 'TimeRange.Editor.Button.Cancel' }]\"\n                >\n                </ic-coalesce-content>\n            </button>\n        </div>\n    </ng-template>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqDatepickerModule } from '@koobiq/components/datepicker';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqLinkModule } from '@koobiq/components/link';\nimport { KbqPopoverModule } from '@koobiq/components/popover';\nimport { KbqRadioModule } from '@koobiq/components/radio';\nimport { KbqTimepickerModule } from '@koobiq/components/timepicker';\n\nimport { IcCoalesceContentModule } from '@mosaic-design/infosec-components/components/coalesce-content';\nimport { IcLetDirective } from '@mosaic-design/infosec-components/directives';\nimport { IcDateRangePipe } from '@mosaic-design/infosec-components/pipes';\n\nimport {\n    TimeRangeComponent,\n    TimeRangeEditorComponent,\n    TimeRangeOptionTranslateComponent,\n    TimeRangeTitleComponent,\n    TimeRangeTitleTranslateComponent\n} from './components';\n\n/**\n * @deprecated Будет удален в 19 версии. Компоненты будут standalone\n */\n@NgModule({\n    imports: [\n        CommonModule,\n        FormsModule,\n        ReactiveFormsModule,\n\n        TranslocoDirective,\n\n        KbqRadioModule,\n        KbqFormFieldModule,\n        KbqTimepickerModule,\n        KbqDatepickerModule,\n        KbqIconModule,\n        KbqButtonModule,\n        KbqPopoverModule,\n        KbqLinkModule,\n\n        IcCoalesceContentModule,\n        IcLetDirective,\n        IcDateRangePipe\n    ],\n    declarations: [\n        TimeRangeEditorComponent,\n        TimeRangeComponent,\n        TimeRangeTitleComponent,\n        TimeRangeTitleTranslateComponent,\n        TimeRangeOptionTranslateComponent\n    ],\n    exports: [\n        TimeRangeEditorComponent,\n        TimeRangeComponent,\n        TimeRangeTitleTranslateComponent,\n        TimeRangeOptionTranslateComponent\n    ]\n})\nexport class IcTimeRangeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i9","i11.TimeRangeOptionTranslateComponent","i3","i4","i5.TimeRangeTitleTranslateComponent","i5.TimeRangeEditorComponent","i6.TimeRangeTitleComponent"],"mappings":"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"}