{"version":3,"file":"mosaic-design-infosec-components-pipes.mjs","sources":["../../../libs/pipes/src/lib/convert-time-zone/convert-time-zone.pipe.ts","../../../libs/pipes/src/lib/date-diff-humanize/date-diff-humanize.pipe.ts","../../../libs/pipes/src/lib/date-range/date-range.pipe.ts","../../../libs/pipes/src/lib/date/date.pipe.ts","../../../libs/pipes/src/lib/default/default.pipe.ts","../../../libs/pipes/src/lib/escape-highlight/escape-highlight.pipe.ts","../../../libs/pipes/src/lib/escape-html/escape-html.pipe.ts","../../../libs/pipes/src/lib/first-existing-translate/first-existing-translate.pipe.ts","../../../libs/pipes/src/lib/join/join.pipe.ts","../../../libs/pipes/src/lib/safe-html/safe-html.pipe.ts","../../../libs/pipes/src/lib/username/username.pipe.ts","../../../libs/pipes/mosaic-design-infosec-components-pipes.ts"],"sourcesContent":["import { Injectable, Pipe, PipeTransform } from '@angular/core';\nimport { DateAdapter } from '@koobiq/components/core';\nimport { DateTime } from 'luxon';\n\nimport { DateInput, TimeZoneName } from '@mosaic-design/infosec-components/types';\n\n@Injectable({ providedIn: 'root' })\n@Pipe({\n    name: 'icConvertTimeZone',\n    pure: true,\n    standalone: true\n})\nexport class IcConvertTimeZonePipe implements PipeTransform {\n    constructor(private dateAdapter: DateAdapter<DateTime>) {}\n\n    transform(value: DateInput, timeZone: TimeZoneName): DateTime | undefined {\n        if (!value) {\n            return undefined;\n        }\n\n        const date = DateTime.isDateTime(value) ? value : this.dateAdapter.parse(value, null);\n\n        if (!date?.isValid) {\n            return undefined;\n        }\n\n        return date.setZone(timeZone);\n    }\n}\n","import { ChangeDetectorRef, Inject, Injectable, Pipe, PipeTransform } from '@angular/core';\nimport { DateAdapter, KBQ_DATE_LOCALE } from '@koobiq/components/core';\nimport { DateTime, Duration, DurationObjectUnits } from 'luxon';\nimport { ToHumanDurationOptions } from 'luxon/src/duration';\n\nimport { LocaleDepentDateFormatter } from '@mosaic-design/infosec-components/core-components/design-system';\nimport { DateInput, Locale } from '@mosaic-design/infosec-components/types';\nimport { shiftDurationToHighest } from '@mosaic-design/infosec-components/utils';\n\nexport interface DateDiffHumanizeOptions extends ToHumanDurationOptions {\n    smallestUnit?: keyof DurationObjectUnits;\n    isEmptyExcluded?: boolean;\n    isOnlyHighestUnitVisible?: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\n@Pipe({\n    name: 'icDateDiffHumanize',\n    pure: false,\n    standalone: true\n})\nexport class IcDateDiffHumanizePipe extends LocaleDepentDateFormatter implements PipeTransform {\n    constructor(\n        @Inject(KBQ_DATE_LOCALE) locale: Locale,\n        dateAdapter: DateAdapter<DateTime>,\n        changeDetectorRef: ChangeDetectorRef\n    ) {\n        super(locale, dateAdapter, changeDetectorRef);\n    }\n\n    transform([first, second]: DateInput[], options?: DateDiffHumanizeOptions): string {\n        if (!first || !second) {\n            return '';\n        }\n\n        let parsedFirst = this.parse(first);\n        let parsedSecond = this.parse(second);\n\n        if (!parsedFirst || !parsedFirst.isValid || !parsedSecond || !parsedSecond.isValid) {\n            return '';\n        }\n\n        parsedFirst = this.actualizeDateLocale(parsedFirst);\n        parsedSecond = this.actualizeDateLocale(parsedSecond);\n\n        let diff = parsedFirst.diff(parsedSecond, 'seconds');\n        diff = shiftDurationToHighest(diff, options?.smallestUnit, options?.isEmptyExcluded);\n\n        if (options?.isOnlyHighestUnitVisible) {\n            diff = this.getHighestUnitDuration(diff);\n        }\n\n        return diff.toHuman(options);\n    }\n\n    private parse(value: DateInput): DateTime | null {\n        return DateTime.isDateTime(value) ? value : this.dateAdapter.parse(value, null);\n    }\n\n    private getHighestUnitDuration(duration: Duration): Duration {\n        const durationObject = duration.toObject();\n\n        const firstUnitEntry = Object.entries(durationObject)[0] as [keyof DurationObjectUnits, number];\n        const result = Object.fromEntries([firstUnitEntry]) as DurationObjectUnits;\n\n        return Duration.fromObject(result);\n    }\n}\n","import { ChangeDetectorRef, Inject, Injectable, Pipe, PipeTransform } from '@angular/core';\nimport { DateAdapter, DateFormatter, KBQ_DATE_LOCALE } from '@koobiq/components/core';\nimport { DateTime } from 'luxon';\n\nimport { LocaleDepentDateFormatter } from '@mosaic-design/infosec-components/core-components/design-system';\nimport { DateInput, DateRangeFormatType, Locale } from '@mosaic-design/infosec-components/types';\n\n@Injectable({ providedIn: 'root' })\n@Pipe({\n    name: 'icDateRange',\n    pure: false,\n    standalone: true\n})\nexport class IcDateRangePipe extends LocaleDepentDateFormatter implements PipeTransform {\n    constructor(\n        @Inject(KBQ_DATE_LOCALE) locale: Locale,\n        dateAdapter: DateAdapter<DateTime>,\n        private dateFormatter: DateFormatter<DateTime>,\n        changeDetectorRef: ChangeDetectorRef\n    ) {\n        super(locale, dateAdapter, changeDetectorRef);\n    }\n\n    transform([start, end]: DateInput[], format?: DateRangeFormatType): string {\n        if (!start || !end) {\n            return '';\n        }\n\n        let parsedStart = this.parse(start);\n        let parsedEnd = this.parse(end);\n\n        if (!parsedStart?.isValid || !parsedEnd?.isValid) {\n            return '';\n        }\n\n        parsedStart = this.actualizeDateLocale(parsedStart);\n        parsedEnd = this.actualizeDateLocale(parsedEnd);\n\n        switch (format) {\n            case DateRangeFormatType.RangeLongDate:\n                return this.dateFormatter.rangeLongDate(parsedStart, parsedEnd);\n            case DateRangeFormatType.RangeLongDateTime:\n                return this.dateFormatter.rangeLongDateTime(parsedStart, parsedEnd);\n            case DateRangeFormatType.RangeMiddleDateTime:\n                return this.dateFormatter.rangeMiddleDateTime(parsedStart, parsedEnd);\n            case DateRangeFormatType.RangeShortDate:\n                return this.dateFormatter.rangeShortDate(parsedStart, parsedEnd);\n            case DateRangeFormatType.RangeShortDateTime:\n            default:\n                return this.dateFormatter.rangeShortDateTime(parsedStart, parsedEnd);\n        }\n    }\n\n    private parse(value: DateInput): DateTime | null {\n        return DateTime.isDateTime(value) ? value : this.dateAdapter.parse(value, null);\n    }\n}\n","import { ChangeDetectorRef, Inject, Injectable, Pipe, PipeTransform } from '@angular/core';\nimport { DateAdapter, DateFormatter, KBQ_DATE_LOCALE } from '@koobiq/components/core';\nimport { DateTimeOptions } from '@koobiq/date-formatter';\nimport { DateTime } from 'luxon';\n\nimport { LocaleDepentDateFormatter } from '@mosaic-design/infosec-components/core-components/design-system';\nimport { DateFormatType, DateInput, Locale } from '@mosaic-design/infosec-components/types';\n\n@Injectable({ providedIn: 'root' })\n@Pipe({ name: 'icDate', pure: false, standalone: true })\nexport class IcDatePipe extends LocaleDepentDateFormatter implements PipeTransform {\n    // copy from mosaic date formatter template\n    readonly secondsTemplate = `{\n        SHOW_MILLISECONDS,\n        select,\n            yes{:{SECONDS}{MILLISECONDS}}\n            other{{\n                SHOW_SECONDS,\n                select,\n                    yes{:{SECONDS}}\n                    other{}\n            }}\n    }`;\n\n    constructor(\n        @Inject(KBQ_DATE_LOCALE) locale: Locale,\n        dateAdapter: DateAdapter<DateTime>,\n        private dateFormatter: DateFormatter<DateTime>,\n        changeDetectorRef: ChangeDetectorRef\n    ) {\n        super(locale, dateAdapter, changeDetectorRef);\n    }\n\n    transform(value: DateInput | undefined, formatType?: DateFormatType, dateTimeOptions?: DateTimeOptions): string {\n        if (!value) {\n            return '';\n        }\n\n        let date = DateTime.isDateTime(value) ? value : this.dateAdapter.parse(value, null);\n\n        if (!date?.isValid) {\n            return '';\n        }\n\n        date = this.actualizeDateLocale(date);\n\n        switch (formatType) {\n            case DateFormatType.OnlyTime:\n                return this.dateFormatter.absoluteDate(\n                    date,\n                    {\n                        variables: {\n                            SHOW_SECONDS: dateTimeOptions?.seconds ? 'yes' : 'no',\n                            SHOW_MILLISECONDS: dateTimeOptions?.milliseconds ? 'yes' : 'no'\n                        },\n                        DATE: '',\n                        DATETIME: `{TIME}${this.secondsTemplate}`\n                    },\n                    true,\n                    dateTimeOptions?.seconds,\n                    dateTimeOptions?.milliseconds\n                );\n            case DateFormatType.AbsoluteShortDate:\n                return this.dateFormatter.absoluteShortDate(date, dateTimeOptions?.currYear);\n            case DateFormatType.AbsoluteShortDateTime:\n                return this.dateFormatter.absoluteShortDateTime(date, dateTimeOptions);\n            case DateFormatType.AbsoluteLongDate:\n                return this.dateFormatter.absoluteLongDate(date, dateTimeOptions?.currYear);\n            case DateFormatType.AbsoluteLongDateTime:\n                return this.dateFormatter.absoluteLongDateTime(date, dateTimeOptions);\n            case DateFormatType.RelativeShortDate:\n                return this.dateFormatter.relativeShortDate(date);\n            case DateFormatType.RelativeLongDate:\n                return this.dateFormatter.relativeLongDate(date);\n            default:\n                return this.dateFormatter.absoluteLongDateTime(date, dateTimeOptions);\n        }\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'icDefault',\n    pure: true,\n    standalone: true\n})\nexport class IcDefaultPipe<T> implements PipeTransform {\n    transform(value: T | undefined, defaultValue: T): T {\n        return value ?? defaultValue;\n    }\n}\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\n\nimport { escape, escapeRegExp } from '@mosaic-design/infosec-components/utils';\n\n@Injectable({ providedIn: 'root' })\n@Pipe({\n    name: 'icEscapeHighlight',\n    pure: true,\n    standalone: true\n})\nexport class IcEscapeHighlightPipe implements PipeTransform {\n    transform(value: string | null | undefined, search: unknown): string {\n        const val = value ?? '';\n\n        return search && typeof search === 'string'\n            ? val.replace(new RegExp(escapeRegExp(escape(search)), 'gi'), '<mark class=\"kbq-highlight\">$&</mark>')\n            : val;\n    }\n}\n","import { Pipe, PipeTransform, Injectable } from '@angular/core';\n\nimport { escape } from '@mosaic-design/infosec-components/utils';\n\n@Injectable({ providedIn: 'root' })\n@Pipe({\n    name: 'icEscapeHtml',\n    pure: true,\n    standalone: true\n})\nexport class IcEscapeHtmlPipe implements PipeTransform {\n    transform(value: string | null | undefined): string {\n        return escape(value ?? '');\n    }\n}\n","import { ChangeDetectorRef, Inject, Optional, Pipe, PipeTransform } from '@angular/core';\nimport { TRANSLOCO_SCOPE, TranslocoScope, TranslocoService } from '@jsverse/transloco';\nimport { BehaviorSubject, combineLatest, map, Observable, of, switchMap, takeUntil, zip } from 'rxjs';\n\nimport { Destroyable } from '@mosaic-design/infosec-components/core-components/common';\nimport { distinctUntilChangedByHash } from '@mosaic-design/infosec-components/external/object-hash/utils';\nimport { findAliasByScope } from '@mosaic-design/infosec-components/external/transloco/utils';\nimport { LocalizationItem } from '@mosaic-design/infosec-components/types';\nimport { isNonNullable } from '@mosaic-design/infosec-components/utils';\n\ninterface CheckedLocalizationItem extends LocalizationItem {\n    alias: string;\n    hasTranslate: boolean;\n}\n\nconst defaultTranslate = '';\n\n@Pipe({\n    name: 'icFirstExistingTranslate',\n    standalone: true,\n    pure: false\n})\nexport class IcFirstExistingTranslatePipe extends Destroyable implements PipeTransform {\n    #translate = defaultTranslate;\n    #items$ = new BehaviorSubject<LocalizationItem[]>([]);\n\n    constructor(\n        private translocoService: TranslocoService,\n        @Optional() @Inject(TRANSLOCO_SCOPE) private translocoScopes: TranslocoScope[] | null,\n        private changeDetectorRef: ChangeDetectorRef\n    ) {\n        super();\n\n        combineLatest([this.#items$, this.translocoService.langChanges$])\n            .pipe(\n                distinctUntilChangedByHash(),\n                switchMap(([items]) =>\n                    zip(...items.map((item) => this.isTranslateExists$(item))).pipe(\n                        map((checkedItems) => checkedItems.find((checkedItem) => checkedItem.hasTranslate))\n                    )\n                ),\n                switchMap((item) =>\n                    isNonNullable(item)\n                        ? this.translocoService.selectTranslate<string>(item.key, item.params, item.alias)\n                        : of(defaultTranslate)\n                ),\n                takeUntil(this.destroyed$)\n            )\n            .subscribe((item) => {\n                this.#translate = item;\n                this.changeDetectorRef.markForCheck();\n            });\n    }\n\n    private isTranslateExists$(item: LocalizationItem): Observable<CheckedLocalizationItem> {\n        return this.translocoService.selectTranslation(item.scopeOrAlias).pipe(\n            map((translation) => ({\n                ...item,\n                hasTranslate: item.key in translation,\n                alias: findAliasByScope(item.scopeOrAlias, this.translocoScopes ?? []) ?? item.scopeOrAlias\n            }))\n        );\n    }\n\n    transform(items: LocalizationItem[] | undefined): string {\n        this.#items$.next(items ?? []);\n\n        return this.#translate;\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'icJoin',\n    pure: true,\n    standalone: true\n})\nexport class IcJoinPipe implements PipeTransform {\n    transform<T extends string | number>(array: T[], delimiter = ', '): string {\n        return array.join(delimiter);\n    }\n}\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { isNonNullable } from '@mosaic-design/infosec-components/utils';\n\n/**\n * @description Обертка над методом `DomSanitizer.bypassSecurityTrustHtml`.\n */\n@Injectable({ providedIn: 'root' })\n@Pipe({\n    name: 'icSafeHtml',\n    standalone: true\n})\nexport class IcSafeHtmlPipe implements PipeTransform {\n    constructor(private domSanitizer: DomSanitizer) {}\n\n    transform(value: string | null | undefined): SafeHtml | undefined {\n        return isNonNullable(value) ? this.domSanitizer.bypassSecurityTrustHtml(value) : undefined;\n    }\n}\n","import { Pipe, PipeTransform, Injectable } from '@angular/core';\n\nimport { User } from '@mosaic-design/infosec-components/types';\nimport { isEnumValuePredicate, isNonNullable } from '@mosaic-design/infosec-components/utils';\n\nenum FormatKey {\n    FirstName = 'f',\n    MiddleName = 'm',\n    LastName = 'l',\n    Dot = '.'\n}\n\ntype FormatKeyToUserDataMapping = {\n    [key in FormatKey]: keyof User | undefined;\n};\n\nconst formatKeyToUserDataMapping: FormatKeyToUserDataMapping = {\n    [FormatKey.FirstName]: 'firstName',\n    [FormatKey.MiddleName]: 'middleName',\n    [FormatKey.LastName]: 'lastName',\n    [FormatKey.Dot]: undefined\n};\n\n@Injectable({ providedIn: 'root' })\n@Pipe({\n    name: 'icUsername',\n    pure: true,\n    standalone: true\n})\nexport class IcUsernamePipe implements PipeTransform {\n    transform(userInfo: User, format = 'fl'): string {\n        let result = '';\n\n        const formatUnits = format.split('');\n\n        formatUnits.filter(isEnumValuePredicate(FormatKey)).forEach((letter, index, array) => {\n            if (letter !== FormatKey.Dot) {\n                const field = formatKeyToUserDataMapping[letter];\n                const fieldValue = isNonNullable(field) ? userInfo[field] : undefined;\n\n                if (isNonNullable(field) && isNonNullable(fieldValue)) {\n                    const next = array[index + 1];\n\n                    if (next === FormatKey.Dot) {\n                        result = `${result} ${fieldValue[0]}${FormatKey.Dot}`;\n                    } else {\n                        result = `${result} ${fieldValue}`;\n                    }\n                }\n            }\n        });\n\n        return result.trim();\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}