{"version":3,"file":"mosaic-design-infosec-components-components-refresher.mjs","sources":["../../../libs/components/refresher/src/lib/types/refresh-intervals.ts","../../../libs/components/refresher/src/lib/types/refresh-type.ts","../../../libs/components/refresher/src/lib/constants/default-refresher-options.ts","../../../libs/components/refresher/src/lib/constants/default-refresher-value.ts","../../../libs/components/refresher/src/lib/constants/i18n.ts","../../../libs/components/refresher/src/lib/components/refresher/refresher.component.ts","../../../libs/components/refresher/src/lib/components/refresher/refresher.component.html","../../../libs/components/refresher/src/lib/refresher.module.ts","../../../libs/components/refresher/mosaic-design-infosec-components-components-refresher.ts"],"sourcesContent":["export enum RefreshIntervals {\n    OneMinute = 1,\n    FiveMinutes = 5,\n    FifteenMinutes = 15,\n    OneHour = 60\n}\n\nexport type RefreshInterval = RefreshIntervals | number;\n","export enum RefreshType {\n    Manual = 'manual',\n    Auto = 'auto'\n}\n","import { RefresherOptions, RefreshIntervals } from '../types';\n\nexport const defaultRefresherOptions: RefresherOptions = {\n    isAutoRefreshAllowed: true,\n    isManualRefreshAllowed: true,\n    allowedAutoRefreshIntervals: [\n        RefreshIntervals.OneMinute,\n        RefreshIntervals.FiveMinutes,\n        RefreshIntervals.FifteenMinutes,\n        RefreshIntervals.OneHour\n    ]\n};\n","import { RefresherValue } from '../types';\n\nexport const defaultRefresherValue: RefresherValue = {\n    interval: undefined,\n    isAutoRefreshEnabled: false\n};\n","import { refresherTranslates } from '@mosaic-design/infosec-components/i18n-resources';\nimport { LocalizationScopeConfig, IcTranslocoScopeAlias } from '@mosaic-design/infosec-components/types';\n\nexport const scopeConfig: LocalizationScopeConfig = {\n    alias: IcTranslocoScopeAlias.Refresher,\n    localTranslates: refresherTranslates\n};\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    Inject,\n    Injector,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { KbqButtonStyles } from '@koobiq/components/button';\nimport { KbqComponentColors, PopUpPlacements } from '@koobiq/components/core';\n\nimport { ControlValueAccessor } from '@mosaic-design/infosec-components/core-components/common';\nimport { DOCUMENT, DocumentRef, WINDOW, WindowRef } from '@mosaic-design/infosec-components/tokens';\nimport { IcTranslocoScopeAlias } from '@mosaic-design/infosec-components/types';\n\nimport { defaultRefresherOptions, defaultRefresherValue } from '../../constants';\nimport {\n    RefresherIntervalTextTemplateContext,\n    RefresherOptions,\n    RefresherValue,\n    RefreshInterval,\n    RefreshType\n} from '../../types';\n\nconst MILLISECONDS_IN_MINUTE = 60000;\nconst MINUTES_IN_HOUR = 60;\n\n@Component({\n    selector: 'ic-refresher',\n    templateUrl: './refresher.component.html',\n    styleUrls: ['./refresher.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'ic-refresher'\n    },\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: RefresherComponent,\n            multi: true\n        }\n    ]\n})\nexport class RefresherComponent\n    extends ControlValueAccessor<RefresherValue | null | undefined, RefresherValue>\n    implements OnInit, OnDestroy\n{\n    protected readonly IcTranslocoScopeAlias = IcTranslocoScopeAlias;\n    protected readonly KbqButtonStyles = KbqButtonStyles;\n    protected readonly KbqComponentColors = KbqComponentColors;\n\n    isSchedulerOpened = false;\n    value = { ...defaultRefresherValue };\n    currentOptions = { ...defaultRefresherOptions };\n\n    @Input()\n    set options(value: RefresherOptions | undefined) {\n        this.currentOptions = value || defaultRefresherOptions;\n    }\n\n    @Input() hasBackdrop = false;\n    @Input() tooltipPosition = PopUpPlacements.Top;\n\n    @Output() refresh = new EventEmitter<RefreshType>();\n\n    private currentTimer: number | undefined;\n\n    private static calculateTimeToNextEvent(interval: RefreshInterval): number {\n        return interval * MILLISECONDS_IN_MINUTE;\n    }\n\n    constructor(\n        injector: Injector,\n        @Inject(WINDOW) private windowRef: WindowRef,\n        @Inject(DOCUMENT) private documentRef: DocumentRef\n    ) {\n        super(injector);\n    }\n\n    getIntervalTextTemplateContext(interval: RefreshInterval): RefresherIntervalTextTemplateContext {\n        return {\n            interval: {\n                hours: Math.floor(interval / MINUTES_IN_HOUR),\n                minutes: interval % MINUTES_IN_HOUR\n            }\n        };\n    }\n\n    writeValue(value: RefresherValue | null | undefined): void {\n        const isIntervalChanged = this.value.interval !== value?.interval;\n        this.value = value ?? { ...defaultRefresherValue };\n\n        if (isIntervalChanged) {\n            this.createTimer();\n        }\n    }\n\n    override ngOnInit(): void {\n        super.ngOnInit();\n\n        this.createTimer();\n    }\n\n    ngOnDestroy(): void {\n        this.destroyTimer();\n    }\n\n    onManualUpdate(): void {\n        this.onTouch();\n\n        if (this.currentOptions.isManualRefreshAllowed) {\n            this.refresh.emit(RefreshType.Manual);\n            this.createTimer();\n        }\n    }\n\n    onAutoRefreshEnabledChange(): void {\n        this.writeValue({ interval: undefined, isAutoRefreshEnabled: false });\n        this.onChange(this.value);\n    }\n\n    onPeriodChanged(interval: RefreshInterval): void {\n        this.blurFocusFromMenuBtn();\n        this.writeValue({ interval, isAutoRefreshEnabled: true });\n        this.onChange(this.value);\n    }\n\n    blurFocusFromMenuBtn(): void {\n        // т.к при выборе интервала закрываем меню, то снимаем фокус, иначе триггерится тултип\n        setTimeout(() => (this.documentRef.activeElement as HTMLElement | undefined)?.blur());\n    }\n\n    private destroyTimer(): void {\n        if (this.currentTimer) {\n            clearInterval(this.currentTimer);\n            this.currentTimer = undefined;\n        }\n    }\n\n    private createTimer(): void {\n        this.destroyTimer();\n\n        if (this.value.isAutoRefreshEnabled) {\n            this.currentTimer = this.windowRef.setTimeout(\n                () => this.onNextTick(),\n                RefresherComponent.calculateTimeToNextEvent(this.value.interval)\n            );\n        }\n    }\n\n    private onNextTick(): void {\n        if (this.value.isAutoRefreshEnabled) {\n            this.refresh.emit(RefreshType.Auto);\n        }\n\n        this.createTimer();\n    }\n}\n","<div class=\"ic-refresher__update-container\">\n    <ng-template #refresherTooltipTemplate>\n        <ic-coalesce-content\n            [items]=\"[\n                {\n                    alias: IcTranslocoScopeAlias.Refresher,\n                    key: 'Refresher.Tooltip.Text.Refresh'\n                }\n            ]\"\n        ></ic-coalesce-content>\n    </ng-template>\n\n    <button\n        kbq-button\n        [color]=\"KbqComponentColors.Contrast\"\n        [kbqStyle]=\"KbqButtonStyles.Transparent\"\n        class=\"ic-refresher__update\"\n        [kbqTooltip]=\"refresherTooltipTemplate\"\n        [kbqPlacement]=\"tooltipPosition\"\n        [disabled]=\"!currentOptions.isManualRefreshAllowed\"\n        (click)=\"onManualUpdate()\"\n    >\n        <i kbq-icon=\"kbq-arrows-rotate-reverse_16\"></i>\n    </button>\n\n    <span *ngIf=\"value.isAutoRefreshEnabled\" class=\"kbq-mono-compact ic-refresher__interval\">{{ value.interval }}</span>\n</div>\n\n<ng-template #settingsTooltipTemplate>\n    <ic-coalesce-content\n        [items]=\"[\n            {\n                alias: IcTranslocoScopeAlias.Refresher,\n                key: 'Refresher.Tooltip.Text.Settings'\n            }\n        ]\"\n    ></ic-coalesce-content>\n</ng-template>\n\n<button\n    type=\"button\"\n    kbq-button\n    [color]=\"KbqComponentColors.Contrast\"\n    [kbqStyle]=\"KbqButtonStyles.Transparent\"\n    class=\"ic-refresher__trigger\"\n    [class.kbq-active]=\"isSchedulerOpened\"\n    [disabled]=\"!currentOptions.isAutoRefreshAllowed\"\n    [kbqTooltip]=\"settingsTooltipTemplate\"\n    [kbqPlacement]=\"tooltipPosition\"\n    [kbqDropdownTriggerFor]=\"intervalDropdown\"\n    (click)=\"isSchedulerOpened = true\"\n>\n    <span kbq-icon=\"kbq-ellipsis-vertical_16\"></span>\n</button>\n\n<kbq-dropdown\n    #intervalDropdown=\"kbqDropdown\"\n    (closed)=\"blurFocusFromMenuBtn(); isSchedulerOpened = false\"\n    [hasBackdrop]=\"hasBackdrop\"\n    class=\"ic-refresher__dropdown\"\n>\n    <div class=\"kbq-dropdown__group-header kbq-dropdown__group-header_small\">\n        <ic-coalesce-content\n            [items]=\"[\n                {\n                    alias: IcTranslocoScopeAlias.Refresher,\n                    key: 'Refresher.DropDown.Label.AutomaticUpdate'\n                }\n            ]\"\n        ></ic-coalesce-content>\n    </div>\n\n    <button kbq-dropdown-item (click)=\"onAutoRefreshEnabledChange()\">\n        <i\n            kbq-icon=\"kbq-circle-xs_16\"\n            [color]=\"KbqComponentColors.Contrast\"\n            [class.ic-refresher__icon_hidden]=\"value.isAutoRefreshEnabled\"\n        >\n        </i>\n\n        <ic-coalesce-content\n            [items]=\"[\n                {\n                    alias: IcTranslocoScopeAlias.Refresher,\n                    key: 'Refresher.DropDown.Item.RefreshTurnedOff'\n                }\n            ]\"\n        ></ic-coalesce-content>\n    </button>\n\n    <button\n        kbq-dropdown-item\n        *ngFor=\"let interval of currentOptions.allowedAutoRefreshIntervals\"\n        (click)=\"onPeriodChanged(interval)\"\n    >\n        <i\n            kbq-icon=\"kbq-circle-xs_16\"\n            [color]=\"KbqComponentColors.Contrast\"\n            [class.ic-refresher__icon_hidden]=\"interval !== value.interval\"\n        >\n        </i>\n\n        <ng-container *ngIf=\"getIntervalTextTemplateContext(interval) as context\">\n            <ng-container *ngIf=\"context.interval.minutes !== 0 && context.interval.hours !== 0\">\n                <ng-template #hoursAndMinutesTemplate>\n                    <ng-container *transloco=\"let translate; read: IcTranslocoScopeAlias.Refresher\">\n                        <span\n                            >{{ translate('Refresher.DropDown.Item.EveryHours', context.interval) }}\n                            {{ translate('Refresher.DropDown.Item.Minutes', context.interval) }}</span\n                        >\n                    </ng-container>\n                </ng-template>\n\n                <ic-coalesce-content\n                    [items]=\"[\n                        {\n                            template: hoursAndMinutesTemplate\n                        }\n                    ]\"\n                ></ic-coalesce-content>\n            </ng-container>\n\n            <ng-container *ngIf=\"context.interval.minutes === 0 && context.interval.hours !== 0\">\n                <ic-coalesce-content\n                    [items]=\"[\n                        {\n                            alias: IcTranslocoScopeAlias.Refresher,\n                            key: 'Refresher.DropDown.Item.EveryHours',\n                            params: context.interval\n                        }\n                    ]\"\n                ></ic-coalesce-content>\n            </ng-container>\n\n            <ng-container *ngIf=\"context.interval.minutes !== 0 && context.interval.hours === 0\">\n                <ic-coalesce-content\n                    [items]=\"[\n                        {\n                            alias: IcTranslocoScopeAlias.Refresher,\n                            key: 'Refresher.DropDown.Item.EveryMinutes',\n                            params: context.interval\n                        }\n                    ]\"\n                ></ic-coalesce-content>\n            </ng-container>\n        </ng-container>\n    </button>\n</kbq-dropdown>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { KbqCheckboxModule } from '@koobiq/components/checkbox';\nimport { KbqDropdownModule } from '@koobiq/components/dropdown';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\n\nimport { IcCoalesceContentModule } from '@mosaic-design/infosec-components/components/coalesce-content';\n\nimport { RefresherComponent } from './components';\n\n/**\n * @deprecated Будет удален в 19 версии. Компоненты будут standalone\n */\n@NgModule({\n    imports: [\n        CommonModule,\n\n        TranslocoDirective,\n\n        KbqButtonModule,\n        KbqIconModule,\n        KbqDropdownModule,\n        KbqCheckboxModule,\n        KbqToolTipModule,\n\n        IcCoalesceContentModule\n    ],\n    declarations: [RefresherComponent],\n    exports: [RefresherComponent]\n})\nexport class IcRefresherModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}