{"version":3,"file":"mosaic-design-infosec-components-utils.mjs","sources":["../../../libs/utils/src/lib/type-guards/is-object-empty/is-object-empty.ts","../../../libs/utils/src/lib/type-guards/is-object-valid/is-object-valid.ts","../../../libs/utils/src/lib/type-guards/is-object/is-object.ts","../../../libs/utils/src/lib/type-guards/is-array-valid/is-array-valid.ts","../../../libs/utils/src/lib/type-guards/is-array/is-array.ts","../../../libs/utils/src/lib/type-guards/is-date/is-date.ts","../../../libs/utils/src/lib/type-guards/is-enum-value/is-enum-value.ts","../../../libs/utils/src/lib/type-guards/is-enum-value-predicate/is-enum-value-predicate.ts","../../../libs/utils/src/lib/type-guards/is-falsy/is-falsy.ts","../../../libs/utils/src/lib/type-guards/is-file/is-file.ts","../../../libs/utils/src/lib/type-guards/is-form-array/is-form-array.ts","../../../libs/utils/src/lib/type-guards/is-form-control/is-form-control.ts","../../../libs/utils/src/lib/type-guards/is-form-group/is-form-group.ts","../../../libs/utils/src/lib/type-guards/is-function/is-function.ts","../../../libs/utils/src/lib/type-guards/is-non-nullable/is-non-nullable.ts","../../../libs/utils/src/lib/type-guards/is-not-empty-array/is-not-empty-array.ts","../../../libs/utils/src/lib/type-guards/is-number/is-number.ts","../../../libs/utils/src/lib/type-guards/is-string-not-empty/is-string-not-empty.ts","../../../libs/utils/src/lib/type-guards/is-string/is-string.ts","../../../libs/utils/src/lib/type-guards/is-truthy/is-truthy.ts","../../../libs/utils/src/lib/type-guards/is-undefined/is-undefined.ts","../../../libs/utils/src/lib/object/clone-deep/clone-deep.ts","../../../libs/utils/src/lib/object/assign-deep/assign-deep.ts","../../../libs/utils/src/lib/object/compare-ascending/compare-ascending.ts","../../../libs/utils/src/lib/object/exclude-properties/exclude-properties.ts","../../../libs/utils/src/lib/object/freeze-deep/freeze-deep.ts","../../../libs/utils/src/lib/object/merge-deep/merge-deep.ts","../../../libs/utils/src/lib/object/set/set.ts","../../../libs/utils/src/lib/array/array.ts","../../../libs/utils/src/lib/clipboard.ts","../../../libs/utils/src/lib/code-mirror/code-mirror.ts","../../../libs/utils/src/lib/compare/has-same-keys/has-same-keys.ts","../../../libs/utils/src/lib/date/date.ts","../../../libs/utils/src/lib/dom/format-pixel-size/format-pixel-size.ts","../../../libs/utils/src/lib/dom/parse-style-value/parse-style-value.ts","../../../libs/utils/src/lib/dom/get-element-outer-width/get-element-outer-width.ts","../../../libs/utils/src/lib/element.ts","../../../libs/utils/src/lib/email/is-email-valid/is-email-valid.ts","../../../libs/utils/src/lib/enum/get-string-enum-values/get-string-enum-values.ts","../../../libs/utils/src/lib/error/error.ts","../../../libs/utils/src/lib/escape-reg-exp/escape-reg-exp.ts","../../../libs/utils/src/lib/escape/escape.ts","../../../libs/utils/src/lib/file/file-size/file-size.ts","../../../libs/utils/src/lib/file/read-file/read-file.ts","../../../libs/utils/src/lib/file/format-file-name-without-extension/format-file-name-without-extension.ts","../../../libs/utils/src/lib/forms/common.ts","../../../libs/utils/src/lib/forms/for-each-control/for-each-control.ts","../../../libs/utils/src/lib/forms/concat-control-validation-errors/concat-control-validation-errors.ts","../../../libs/utils/src/lib/forms/control-value-changes/control-value-changes.ts","../../../libs/utils/src/lib/forms/format-optional-value/format-optional-value.ts","../../../libs/utils/src/lib/forms/is-form-empty.ts","../../../libs/utils/src/lib/forms/set-control-enabled-state/set-control-enabled-state.ts","../../../libs/utils/src/lib/forms/validation-switch.ts","../../../libs/utils/src/lib/network/network.ts","../../../libs/utils/src/lib/observable/observable.ts","../../../libs/utils/src/lib/query-params/query-params.ts","../../../libs/utils/src/lib/route/tree.ts","../../../libs/utils/src/lib/rxjs/at-least-one-is-true/at-least-one-is-true.ts","../../../libs/utils/src/lib/rxjs/catch-api-error/catch-api-error.ts","../../../libs/utils/src/lib/rxjs/combine-latest-map/combine-latest-map.ts","../../../libs/utils/src/lib/rxjs/filter-non-nullable/filter-non-nullable.ts","../../../libs/utils/src/lib/rxjs/map-to-void/map-to-void.ts","../../../libs/utils/src/lib/rxjs/run-in-zone/run-in-zone.ts","../../../libs/utils/src/lib/rxjs/skip-query-params-change/skip-query-params-change.ts","../../../libs/utils/src/lib/rxjs/wait-for/wait-for.ts","../../../libs/utils/src/lib/rxjs/when-all-are-false/when-all-are-false.ts","../../../libs/utils/src/lib/rxjs/when-all-are-true/when-all-are-true.ts","../../../libs/utils/src/lib/rxjs/when-finished/when-finished.ts","../../../libs/utils/src/lib/string/add-leading-slash/add-leading-slash.ts","../../../libs/utils/src/lib/string/capitalize/capitalize.ts","../../../libs/utils/src/lib/string/normalize/normalize.ts","../../../libs/utils/src/lib/string/to-pascal-case-localization-key-part/to-pascal-case-localization-key-part.ts","../../../libs/utils/src/lib/time-zone/time-zone.ts","../../../libs/utils/src/lib/timer/timer.ts","../../../libs/utils/src/lib/tree/tree.ts","../../../libs/utils/mosaic-design-infosec-components-utils.ts"],"sourcesContent":["export function isObjectEmpty(object: Record<string, unknown>): boolean {\n    return Object.keys(object).length === 0;\n}\n","import { Validation, Entries, AsObject, AsType } from '@mosaic-design/infosec-components/types';\n\nimport { isObjectEmpty } from '../is-object-empty/is-object-empty';\n\n/** Проверка объекта на наличие ключей и соответствующих значений\n *\n * @param obj - проверяемый объект\n * @param validation - {@link Validation}\n * */\nexport function isObjectValid<T extends AsObject>(obj: AsObject, validation: Validation<T>): obj is T {\n    if (!isObjectEmpty(obj) && !isObjectEmpty(validation)) {\n        return (\n            /** Проверка наличия ключей валидатора в объекте */\n            Object.keys(validation).every((validateKey) => validateKey in obj) &&\n            /** Валидация значений по ключу */\n            Object.entries(validation)\n                .map((value) => value as Entries<Validation<T>>)\n                .every(([key, validate]) => validate((obj as AsType<T>)[key]))\n        );\n    } else {\n        return false;\n    }\n}\n","export function isObject(object: unknown): object is Record<string, unknown> {\n    return typeof object === 'object' && object !== null && !Array.isArray(object);\n}\n","import { Validation, AsObject } from '@mosaic-design/infosec-components/types';\n\nimport { isObjectValid } from '../is-object-valid/is-object-valid';\nimport { isObject } from '../is-object/is-object';\n\n/** Проверка массива на наличие объектов\n *\n * @param array - массив с целевыми объектами\n * @param validation - {@link Validation}\n * */\nexport function isArrayValid<T extends AsObject>(array: unknown[], validation: Validation<T>): array is T[] {\n    return array.length > 0 ? array.every((obj) => isObject(obj) && isObjectValid(obj, validation)) : false;\n}\n","export function isArray<A, B>(value: A | B[]): value is B[];\nexport function isArray(value: unknown): value is [] {\n    return Array.isArray(value);\n}\n","export function isDate(value: unknown): value is Date {\n    return value instanceof Date;\n}\n","import { AsObject } from '@mosaic-design/infosec-components/types';\n\n/**\n * Гвард для проверки принадлежности значения к энуму. Работает только со строковыми энумами.\n */\nexport function isEnumValue<T extends AsObject>(enumType: T, value: unknown): value is T[keyof T] {\n    return Object.values(enumType).includes(value);\n}\n","import { AsObject } from '@mosaic-design/infosec-components/types';\n\nimport { isEnumValue } from '../is-enum-value/is-enum-value';\n\n/**\n * Гвард, возвращающий предикат для проверки принадлежности значения к энуму. Работает только со строковыми энумами.\n */\nexport function isEnumValuePredicate<T extends AsObject>(enumType: T) {\n    return (value: unknown): value is T[keyof T] => isEnumValue(enumType, value);\n}\n","/** Проверка на отрицательное значение\n *\n * @param value - boolean | string | number | undefined | null | object\n * */\nexport function isFalsy(value: boolean | string | number | undefined | null | object): value is false {\n    return !value;\n}\n","export function isFile(file: unknown): file is File {\n    return file instanceof File;\n}\n","import { AbstractControl, FormArray } from '@angular/forms';\n\nexport function isFormArray(control: AbstractControl): control is FormArray {\n    return control instanceof FormArray;\n}\n","import { AbstractControl, FormControl } from '@angular/forms';\n\nexport function isFormControl(control: AbstractControl): control is FormControl {\n    return control instanceof FormControl;\n}\n","import { AbstractControl, FormGroup } from '@angular/forms';\n\nexport function isFormGroup(control: AbstractControl): control is FormGroup {\n    return control instanceof FormGroup;\n}\n","// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isFunction(value: unknown): value is Function {\n    return typeof value === 'function';\n}\n","export function isNonNullable<T>(value: T): value is NonNullable<T> {\n    return value !== undefined && value !== null;\n}\n","export function isNotEmptyArray<T>(array: T[]): array is T[] {\n    return array.length > 0;\n}\n","export function isNumber(value: unknown): value is number {\n    return typeof value === 'number';\n}\n","export function isStringNotEmpty(value: unknown): value is string {\n    return typeof value === 'string' && value.trim().length > 0;\n}\n","export function isString(value: unknown): value is string {\n    return typeof value === 'string';\n}\n","/** Проверка на положительное значение\n *\n * @param value - boolean | string | number | undefined | null | object\n * */\nexport function isTruthy(value: boolean | string | number | undefined | null | object): value is true {\n    return !!value;\n}\n","export function isUndefined(value: unknown): value is undefined {\n    return value === undefined;\n}\n","import { isObject, isDate } from '../../type-guards';\n\nexport function cloneDeep<T>(value: T): T {\n    if (Array.isArray(value)) {\n        const result: unknown[] = [];\n        value.forEach((item) => {\n            result.push(cloneDeep(item));\n        });\n\n        return result as unknown as T;\n    }\n\n    if (isDate(value)) {\n        return new Date(value.valueOf()) as unknown as T;\n    }\n\n    if (isObject(value)) {\n        const result: Record<string, unknown> = {};\n        Object.getOwnPropertyNames(value).forEach((key) => {\n            result[key] = cloneDeep(value[key]);\n        });\n\n        return result as T;\n    }\n\n    return value;\n}\n","import { isObject, isDate } from '../../type-guards';\nimport { cloneDeep } from '../clone-deep';\n\nfunction assign<T, S>(target: T, source: S): T & S {\n    if (!target && !!source) {\n        return cloneDeep(source) as T & S;\n    }\n\n    if (!source && !!target) {\n        return cloneDeep(target) as T & S;\n    }\n\n    if (!isObject(source)) {\n        return cloneDeep(target) as T & S;\n    }\n\n    if (!isObject(target)) {\n        return cloneDeep(source) as T & S;\n    }\n\n    const result: Record<string, unknown> = {\n        ...target\n    };\n\n    Object.getOwnPropertyNames(source).forEach((key) => {\n        const targetValue = target[key];\n        const sourceValue = source[key];\n\n        if (targetValue) {\n            if (isDate(sourceValue)) {\n                result[key] = cloneDeep(sourceValue);\n            } else if (isObject(targetValue) && isObject(sourceValue)) {\n                result[key] = assign(targetValue, sourceValue);\n            } else {\n                result[key] = cloneDeep(sourceValue);\n            }\n        } else {\n            result[key] = cloneDeep(sourceValue);\n        }\n    });\n\n    return result as T & S;\n}\n\nexport function assignDeep<T, S>(target: T, source: S): T & S;\nexport function assignDeep<T, S1>(target: T, source1: S1): T & S1;\nexport function assignDeep<T, S1, S2>(target: T, source1: S1, source2: S2): T & S1 & S2;\nexport function assignDeep<T, S1, S2, S3>(target: T, source1: S1, source2: S2, source3: S3): T & S1 & S2 & S3;\nexport function assignDeep(target: unknown, ...sources: unknown[]): unknown {\n    let result = target;\n    const checkedSources = sources.length ? sources : [undefined];\n\n    checkedSources.forEach((source) => {\n        result = assign(result, source);\n    });\n\n    return result;\n}\n","type ComparableValue = null | undefined | string | number;\n\nfunction compareStrings(a: string, b: string): number {\n    return a.localeCompare(b);\n}\n\nfunction compareNumbers(a: number, b: number): number {\n    if (a > b) {\n        return 1;\n    } else if (a < b) {\n        return -1;\n    } else {\n        return 0;\n    }\n}\n\nfunction compare(value: ComparableValue, other: ComparableValue): number {\n    if (typeof value === 'string' && typeof other === 'string') {\n        return compareStrings(value, other);\n    } else if (typeof value === 'number' && typeof other === 'number') {\n        return compareNumbers(value, other);\n    } else {\n        return -1;\n    }\n}\n\nexport function compareAscending(value: ComparableValue, other: ComparableValue): number {\n    if (value !== other) {\n        const valIsDefined = value !== undefined;\n        const valIsNull = value === null;\n        const valIsReflexive = value === value;\n        const valIsSymbol = typeof value === 'symbol';\n\n        const othIsDefined = other !== undefined;\n        const othIsNull = other === null;\n        const othIsReflexive = other === other;\n        const othIsSymbol = typeof other === 'symbol';\n\n        const val = compare(value, other);\n\n        if (\n            (!othIsNull && !othIsSymbol && !valIsSymbol && val > 0) ||\n            (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n            (valIsNull && othIsDefined && othIsReflexive) ||\n            (!valIsDefined && othIsReflexive) ||\n            !valIsReflexive\n        ) {\n            return 1;\n        }\n        if (\n            (!valIsNull && !valIsSymbol && !othIsSymbol && val < 0) ||\n            (othIsSymbol && valIsDefined && !valIsNull && !valIsSymbol) ||\n            (othIsNull && valIsDefined) ||\n            !othIsDefined ||\n            !othIsReflexive\n        ) {\n            return -1;\n        }\n    }\n\n    return 0;\n}\n","import { isNonNullable } from '../../type-guards';\n\nexport function excludeProperties<T extends Partial<Record<K, unknown>>, K extends Exclude<keyof T, symbol>>(\n    obj: T,\n    keys: K | K[]\n): Omit<T, K> {\n    const excludedKeys = Array.isArray(keys) ? keys : [keys];\n\n    const result = {\n        ...obj\n    };\n\n    excludedKeys.forEach((key) => {\n        delete result[key];\n    });\n\n    return result;\n}\n\nexport function excludePropertiesNullable<T extends { [K in keyof T as Exclude<K, symbol>]+?: unknown }>(\n    obj: T\n): Partial<T> {\n    const result = { ...obj };\n\n    for (const objKey in obj) {\n        if (!isNonNullable(obj[objKey])) {\n            delete result[objKey];\n        }\n    }\n\n    return result;\n}\n","import { isObject, isFunction } from '../../type-guards';\n\nexport function freezeDeep<T>(value: T): Readonly<T> {\n    Object.freeze(value);\n\n    if (Array.isArray(value)) {\n        value.forEach((item) => freezeDeep(item));\n    }\n\n    if (isObject(value)) {\n        Object.getOwnPropertyNames(value).forEach((prop) => {\n            const childValue = value[prop];\n            if (\n                (isObject(childValue) || isFunction(childValue) || Array.isArray(childValue)) &&\n                !Object.isFrozen(childValue)\n            ) {\n                freezeDeep(childValue);\n            }\n        });\n    }\n\n    return value;\n}\n","import { isObject, isDate } from '../../type-guards';\nimport { cloneDeep } from '../clone-deep';\n\nfunction merge<T, S>(target: T, source: S): T & S {\n    if (!target && !!source) {\n        return cloneDeep(source) as T & S;\n    }\n\n    if (!source && !!target) {\n        return cloneDeep(target) as T & S;\n    }\n\n    if (!isObject(source)) {\n        return cloneDeep(target) as T & S;\n    }\n\n    if (!isObject(target)) {\n        return cloneDeep(source) as T & S;\n    }\n\n    const result: Record<string, unknown> = {\n        ...target\n    };\n\n    Object.getOwnPropertyNames(source).forEach((key) => {\n        const targetValue = target[key];\n        const sourceValue = source[key];\n\n        if (targetValue) {\n            if (isDate(sourceValue)) {\n                result[key] = cloneDeep(sourceValue);\n            } else if (isObject(targetValue) && isObject(sourceValue)) {\n                result[key] = merge(targetValue, sourceValue);\n            } else if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\n                const array: unknown[] = [];\n                sourceValue.forEach((item, index) => {\n                    const value: unknown = isObject(item) ? merge(targetValue[index], item) : item;\n                    array.push(value);\n                });\n\n                if (targetValue.length > sourceValue.length) {\n                    for (let i = array.length; i < targetValue.length; i++) {\n                        array.push(cloneDeep(targetValue[i]));\n                    }\n                }\n\n                result[key] = array;\n            } else {\n                result[key] = cloneDeep(sourceValue);\n            }\n        } else {\n            result[key] = cloneDeep(sourceValue);\n        }\n    });\n\n    return result as T & S;\n}\n\nexport function mergeDeep<T, S>(target: T, source: S): T & S;\nexport function mergeDeep<T, S1>(target: T, source1: S1): T & S1;\nexport function mergeDeep<T, S1, S2>(target: T, source1: S1, source2: S2): T & S1 & S2;\nexport function mergeDeep<T, S1, S2, S3>(target: T, source1: S1, source2: S2, source3: S3): T & S1 & S2 & S3;\nexport function mergeDeep(target: unknown, ...sources: unknown[]): unknown {\n    let result = target;\n    const checkedSources = sources.length ? sources : [undefined];\n\n    checkedSources.forEach((source) => {\n        result = merge(result, source);\n    });\n\n    return result;\n}\n","import { cloneDeep } from '../clone-deep';\n\nexport function set<T extends object, P extends keyof T, V extends T[P]>(target: T, prop: P, value: V): T;\nexport function set<T extends object, P1 extends keyof T, P2 extends keyof T[P1], V extends T[P1][P2]>(\n    target: T,\n    prop1: P1,\n    prop2: P2,\n    value: V\n): T;\nexport function set<\n    T extends object,\n    P1 extends keyof T,\n    P2 extends keyof T[P1],\n    P3 extends keyof T[P1][P2],\n    V extends T[P1][P2][P3]\n>(target: T, prop1: P1, prop2: P2, prop3: P3, value: V): T;\nexport function set<\n    T extends object,\n    P1 extends keyof T,\n    P2 extends keyof T[P1],\n    P3 extends keyof T[P1][P2],\n    P4 extends keyof T[P1][P2][P3],\n    V extends T[P1][P2][P3][P4]\n>(target: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, value: V): T;\nexport function set<\n    T extends object,\n    P1 extends keyof T,\n    P2 extends keyof T[P1],\n    P3 extends keyof T[P1][P2],\n    P4 extends keyof T[P1][P2][P3],\n    P5 extends keyof T[P1][P2][P3][P4],\n    V extends T[P1][P2][P3][P4][P5]\n>(target: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, value: V): T;\nexport function set<T extends object, P1 extends keyof T, P2 extends keyof T[P1], V extends T[P1][P2]>(\n    target: T,\n    props: [P1, P2],\n    value: V\n): T;\nexport function set<\n    T extends object,\n    P1 extends keyof T,\n    P2 extends keyof T[P1],\n    P3 extends keyof T[P1][P2],\n    V extends T[P1][P2][P3]\n>(target: T, props: [P1, P2, P3], value: V): T;\nexport function set<\n    T extends object,\n    P1 extends keyof T,\n    P2 extends keyof T[P1],\n    P3 extends keyof T[P1][P2],\n    P4 extends keyof T[P1][P2][P3],\n    V extends T[P1][P2][P3][P4]\n>(target: T, props: [P1, P2, P3, P4], value: V): T;\nexport function set<\n    T extends object,\n    P1 extends keyof T,\n    P2 extends keyof T[P1],\n    P3 extends keyof T[P1][P2],\n    P4 extends keyof T[P1][P2][P3],\n    P5 extends keyof T[P1][P2][P3][P4],\n    V extends T[P1][P2][P3][P4][P5]\n>(target: T, props: [P1, P2, P3, P4, P5], value: V): T;\nexport function set<T extends object>(target: T, props: string[], value: unknown): T;\nexport function set<T extends object>(target: T, ...propsAndValue: unknown[]): unknown {\n    const value = propsAndValue.pop();\n    const props = propsAndValue.flat();\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    const clone = cloneDeep(target) ?? {};\n\n    let part = clone as Record<string, unknown>;\n    props.forEach((prop, index) => {\n        const key = prop as string;\n\n        if (index === props.length - 1) {\n            part[key] = value;\n        } else {\n            if (part[key] === undefined) {\n                part[key] = {};\n            }\n\n            part = part[key] as Record<string, unknown>;\n        }\n    });\n\n    return clone;\n}\n","import { compareAscending } from '../object';\n\nexport type FindIndexPredicate<T> = (value: T, index: number, obj: T[]) => unknown;\nexport type Comparator<T> = (first: T, second: T) => boolean;\nexport type OrderByKey = null | undefined | string | number;\n\nexport interface Group<K, T> {\n    key: K;\n    values: T[];\n}\n\nexport function uniq<T>(array: T[], predicate?: Comparator<T>): T[] {\n    if (predicate) {\n        return array.reduce(\n            (prev, item) => (prev.some((added) => predicate(item, added)) ? prev : [...prev, item]),\n            [] as T[]\n        );\n    } else {\n        return [...new Set(array)];\n    }\n}\n\nexport function sample<T>(array: T[]): T | undefined {\n    if (array.length === 0) {\n        return undefined;\n    }\n\n    const index = Math.round(Math.random() * (array.length - 1));\n\n    return array[index];\n}\n\nexport function groupBy<T, K>(array: T[], keyPredicate: (item: T) => K, keyComparator?: Comparator<K>): Group<K, T>[] {\n    const seed: Group<K, T>[] = [];\n\n    return array.reduce((groups, item) => {\n        const key = keyPredicate(item);\n        const group = groups.find((g) => (keyComparator ? keyComparator(g.key, key) : g.key === key));\n\n        if (group) {\n            group.values.push(item);\n        } else {\n            groups.push({\n                key,\n                values: [item]\n            });\n        }\n\n        return groups;\n    }, seed);\n}\n\nexport function orderBy<T>(array: T[], keyPredicate: (item: T) => OrderByKey, desc?: boolean): T[] {\n    const arrayCopy = [...array];\n\n    const compareKeys = (a: OrderByKey, b: OrderByKey): number => {\n        const compareResult = compareAscending(a, b);\n\n        return desc ? compareResult * -1 : compareResult;\n    };\n\n    const compareItems = (a: T, b: T): number => {\n        const aKey = keyPredicate(a);\n        const bKey = keyPredicate(b);\n\n        return compareKeys(aKey, bKey);\n    };\n\n    return arrayCopy.sort(compareItems);\n}\n\n/**\n * Изменяет массив по ссылке аналогично Array.splice\n */\nexport function remove<T>(array: T[], item: T): T[] {\n    const itemIndex = array.indexOf(item);\n\n    return itemIndex === -1 ? array : array.splice(itemIndex, 1);\n}\n\n/**\n * Перестановка элементов в массиве, без мутации исходного массива\n */\nexport function moveInArray<T>(array: readonly T[], fromIndex: number, toIndex: number): T[] {\n    const arrayCopy = [...array];\n    const element = arrayCopy[fromIndex] as T;\n    arrayCopy.splice(fromIndex, 1);\n    arrayCopy.splice(toIndex, 0, element);\n\n    return arrayCopy;\n}\n","import { from, Observable } from 'rxjs';\n\nexport function copyTextToClipboard(text: string): Observable<void> {\n    return from(navigator.clipboard.writeText(text));\n}\n","import { CodeMirrorTextRange } from '@mosaic-design/infosec-components/types';\n\nexport function getCodeMirrorCompatibleTextRanges(\n    text: string,\n    range: { start: number; end: number }\n): CodeMirrorTextRange[] {\n    const result: CodeMirrorTextRange[] = [];\n\n    if (text) {\n        const lines = text.split(/\\r?\\n/);\n        const substringBeforeStart = text.substring(0, range.start);\n        const substringBeforeEnd = text.substring(0, range.end);\n        const startLineIndex = substringBeforeStart.split(/\\r?\\n/).length - 1;\n        const endLineIndex = substringBeforeEnd.split(/\\r?\\n/).length - 1;\n\n        let charsCountBeforeStartLine = 0;\n        let charsCountBeforeEndLine = 0;\n\n        for (let i = 0; i < startLineIndex; i++) {\n            charsCountBeforeStartLine += lines[i]?.length ?? 0;\n        }\n\n        for (let i = 0; i < endLineIndex; i++) {\n            charsCountBeforeEndLine += lines[i]?.length ?? 0;\n        }\n\n        result.push({\n            start: {\n                line: startLineIndex,\n                ch: range.start - startLineIndex - charsCountBeforeStartLine\n            },\n            end: {\n                line: endLineIndex,\n                ch: range.end - endLineIndex - charsCountBeforeEndLine + 1\n            }\n        });\n    }\n\n    return result;\n}\n","import { AsObject } from '@mosaic-design/infosec-components/types';\n\nimport { isObjectEmpty } from '../../type-guards';\n\n/** Проверка наличия ключей из первого объекта во втором\n *\n * @param target - целевой объект, ключи которого проверяются на наличие\n * @param verify - проверяемый объект\n * */\nexport function hasSameKeys(target: AsObject, verify: AsObject): boolean {\n    return !isObjectEmpty(target) && Object.keys(target).every((key) => key in verify);\n}\n","import { DateTime, Duration, DurationObjectUnits, DurationUnit } from 'luxon';\n\nexport function combineDateAndTime(date: DateTime, time: DateTime): DateTime {\n    return DateTime.now().set({\n        hour: time.hour,\n        minute: time.minute,\n        second: time.second,\n        day: date.day,\n        month: date.month,\n        year: date.year\n    });\n}\n\nexport function shiftDurationToHighest(\n    duration: Duration,\n    smallestUnit: keyof DurationObjectUnits = 'seconds',\n    isEmptyExcluded = true\n): Duration {\n    const units: (keyof DurationObjectUnits)[] = [\n        'years',\n        'months',\n        'days',\n        'hours',\n        'minutes',\n        'seconds',\n        'milliseconds'\n    ];\n    const smallestIdx = units.indexOf(smallestUnit);\n\n    type DurationUnits = {\n        [unit in DurationUnit]?: number | undefined;\n    };\n\n    const normalizedDurationObj = duration\n        .shiftTo(...units)\n        .normalize()\n        .toObject();\n\n    const modifiedDurationObj: DurationUnits = {};\n\n    units\n        .filter((unit, index) => index <= smallestIdx)\n        .filter((unit) => !isEmptyExcluded || (normalizedDurationObj[unit] || 0) > 0)\n        .forEach((unit) => (modifiedDurationObj[unit] = normalizedDurationObj[unit]));\n\n    return Duration.fromObject(modifiedDurationObj);\n}\n","export function formatPixelSize(size: number): string {\n    return `${size}px`;\n}\n","export function parseStyleValue(value: string): number {\n    const parsedValue = parseInt(value);\n\n    return isNaN(parsedValue) ? 0 : parsedValue;\n}\n","import { parseStyleValue } from '../parse-style-value/parse-style-value';\n\nexport function getElementOuterWidth(element: Element, elementStyles: CSSStyleDeclaration): number {\n    return (\n        [elementStyles.marginLeft, elementStyles.marginRight].reduce((acc, item) => acc + parseStyleValue(item), 0) +\n        element.getBoundingClientRect().width\n    );\n}\n","import { Observable } from 'rxjs';\n\nconst defaultOptions: IntersectionObserverInit = {\n    threshold: 0.1\n};\n\nexport function isVisibleInViewport$(element: Element, options?: IntersectionObserverInit): Observable<boolean> {\n    const optionsToUse = options ? options : defaultOptions;\n\n    return new Observable<boolean>((observer) => {\n        const intersectionObserver = new IntersectionObserver((entries) => {\n            observer.next(entries.some((entry) => entry.isIntersecting));\n        }, optionsToUse);\n\n        intersectionObserver.observe(element);\n\n        return {\n            unsubscribe: () => {\n                intersectionObserver.disconnect();\n            }\n        };\n    });\n}\n\nexport function isElementScrollAtStart(element: HTMLElement): boolean {\n    return element.scrollTop <= 0;\n}\n\nexport function isElementScrollAtEnd(element: HTMLElement): boolean {\n    return element.offsetHeight + element.scrollTop >= element.scrollHeight;\n}\n\nexport function nodeMutation$(target: Node, options?: MutationObserverInit): Observable<MutationRecord[]> {\n    return new Observable<MutationRecord[]>((observer) => {\n        const mutationObserver = new MutationObserver((records) => {\n            observer.next(records);\n        });\n\n        mutationObserver.observe(target, options);\n\n        return {\n            unsubscribe: () => mutationObserver.disconnect()\n        };\n    });\n}\n\nexport function nodeResize$(target: Element): Observable<ResizeObserverEntry[]> {\n    return new Observable<ResizeObserverEntry[]>((observer) => {\n        const resizeObserver = new window.ResizeObserver((entries) => {\n            observer.next(entries);\n        });\n\n        resizeObserver.observe(target);\n\n        return {\n            unsubscribe: () => resizeObserver.disconnect()\n        };\n    });\n}\n","const emailValidationRegexp = /^\\S+@\\S+\\.\\S+$/im;\n\nexport function isEmailValid(input: string): boolean {\n    return emailValidationRegexp.test(input);\n}\n","import { AsObject } from '@mosaic-design/infosec-components/types';\n\nimport { isNonNullable } from '../../type-guards';\n\nexport function getStringEnumValues<T extends AsObject>(enumType: T): T[keyof T][] {\n    const enumAsRecord = enumType as Record<string, T[keyof T]>;\n\n    return Object.keys(enumAsRecord)\n        .map((key) => enumAsRecord[key])\n        .filter(isNonNullable);\n}\n","import { ErrorResponse } from '@mosaic-design/infosec-components/types';\n\nimport { isObject } from '../type-guards';\n\ntype ErrorProperty = keyof ErrorResponse;\nconst ErrorValidation: Record<ErrorProperty, (value: unknown) => boolean> = {\n    errors: (value: unknown) => Array.isArray(value),\n    code: (value: unknown) => typeof value === 'number',\n    message: (value: unknown) => typeof value === 'string'\n};\n\n/** Проверка ответа на наличие вложенное ошибки (error: {@link ErrorResponse})\n *\n * @param response HttpResponseError.\n * */\nexport function hasValidError(response: unknown): response is { error: ErrorResponse } {\n    if (isObject(response)) {\n        if ('error' in response) {\n            const { error: errorData } = response;\n            if (isObject(errorData)) {\n                const errorDataKeys = Object.keys(errorData);\n                const errorKeys = Object.keys(ErrorValidation);\n\n                return (\n                    Object.entries(errorData)\n                        .filter(([key]) => errorKeys.includes(key))\n                        .map(([key, value]) => ErrorValidation[key as ErrorProperty](value))\n                        .every((isValid) => isValid) && errorKeys.every((key) => errorDataKeys.includes(key))\n                );\n            } else {\n                return false;\n            }\n        } else {\n            return false;\n        }\n    } else {\n        return false;\n    }\n}\n","// копия https://github.com/lodash/lodash/blob/master/escapeRegExp.js\n\nconst reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\nconst reHasRegExpChar = RegExp(reRegExpChar.source);\n\nexport function escapeRegExp(value: string): string {\n    return value && reHasRegExpChar.test(value) ? value.replace(reRegExpChar, '\\\\$&') : value || '';\n}\n","// копия https://github.com/lodash/lodash/blob/master/escape.js\n\n/* eslint-disable @typescript-eslint/naming-convention */\nconst htmlEscapes: { [key: string]: string } = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;'\n};\n/* eslint-enable */\n\nconst reUnescapedHtml = /[&<>\"']/g;\nconst reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\nexport function escape(value: string): string {\n    return value && reHasUnescapedHtml.test(value)\n        ? value.replace(reUnescapedHtml, (chr) => htmlEscapes[chr] ?? chr)\n        : value || '';\n}\n","import { FileSize, FileSizeUnit } from '@mosaic-design/infosec-components/types';\n\nexport function getFileSize(length: number, precision = 0): FileSize {\n    // 1000 - для мегабайтов и т.д.\n    // 1024 - для мебибайтов и т.д.\n    const unitSize = 1000;\n\n    const units = [\n        FileSizeUnit.B,\n        FileSizeUnit.Kb,\n        FileSizeUnit.Mb,\n        FileSizeUnit.Gb,\n        FileSizeUnit.Tb,\n        FileSizeUnit.Pb,\n        FileSizeUnit.Eb,\n        FileSizeUnit.Zb,\n        FileSizeUnit.Yb\n    ];\n\n    const magnitude = Math.min(Math.floor(Math.log(length) / Math.log(unitSize)), units.length - 1);\n    const result = length / Math.pow(unitSize, magnitude);\n\n    return {\n        size: parseFloat(result.toFixed(precision)),\n        unit: units[magnitude] ?? FileSizeUnit.B\n    };\n}\n","import { Observable, Subscriber } from 'rxjs';\n\ninterface ReadFile {\n    progress$: Observable<number>;\n    complete$: Observable<ArrayBuffer>;\n    error$: Observable<DOMException | null>;\n}\n\nexport function readFile(file: File): ReadFile {\n    const fileReader = new FileReader();\n\n    const progress$ = new Observable<number>((observer) => {\n        fileReader.onprogress = (event) => {\n            if (event.lengthComputable) {\n                const progress = Math.ceil((event.loaded / event.total) * 100);\n                observer.next(progress);\n            } else {\n                observer.next(100);\n                observer.complete();\n            }\n        };\n    });\n\n    let errorObserver: Subscriber<DOMException | null> | undefined;\n\n    const error$ = new Observable<DOMException | null>((observer) => {\n        errorObserver = observer;\n        fileReader.onerror = () => {\n            observer.next(fileReader.error);\n            observer.complete();\n        };\n    });\n\n    const complete$ = new Observable<ArrayBuffer>((observer) => {\n        fileReader.onload = () => {\n            observer.next(fileReader.result as ArrayBuffer);\n            errorObserver?.complete();\n            observer.complete();\n        };\n\n        return {\n            unsubscribe: () => fileReader.abort()\n        };\n    });\n\n    fileReader.readAsArrayBuffer(file);\n\n    return {\n        progress$,\n        complete$,\n        error$\n    };\n}\n","export function formatFileNameWithoutExtension(fileName: string): string {\n    return fileName.replace(/\\.[^/.]+$/, '');\n}\n","import { AbstractControl } from '@angular/forms';\n\nimport { RevalidationState } from '@mosaic-design/infosec-components/types';\n\nexport function getControlName(control: AbstractControl): string | undefined {\n    const formGroup = control.parent?.controls;\n\n    if (!formGroup || Array.isArray(formGroup)) {\n        return undefined;\n    }\n\n    return Object.keys(formGroup).find((name) => control === formGroup[name]) || undefined;\n}\n\nexport function refreshControlValidationErrors(state: RevalidationState): void {\n    const { control, revalidationOptions, validationErrors, previousValidationErrors } = state;\n\n    const errors = { ...control.errors };\n\n    if (validationErrors) {\n        control.setErrors(\n            {\n                ...errors,\n                ...validationErrors\n            },\n            revalidationOptions\n        );\n    } else if (previousValidationErrors) {\n        Object.keys(previousValidationErrors).forEach((key) => {\n            delete errors[key];\n        });\n\n        if (Object.keys(errors).length) {\n            control.setErrors(errors, revalidationOptions);\n        } else {\n            control.setErrors(null, revalidationOptions);\n        }\n    }\n}\n","import { AbstractControl, FormArray, FormGroup } from '@angular/forms';\n\nimport { isFormGroup, isFormControl, isFormArray } from '../../type-guards';\n\ntype Callback = (control: AbstractControl) => void;\n\nexport const forEachControl = (control: AbstractControl, callback: Callback, isParentMustBeProcessed = false): void => {\n    if (isFormArray(control)) {\n        processFormArray(control, callback, isParentMustBeProcessed);\n\n        if (isParentMustBeProcessed) {\n            callback(control);\n        }\n    } else if (isFormGroup(control)) {\n        processFormGroup(control, callback, isParentMustBeProcessed);\n\n        if (isParentMustBeProcessed) {\n            callback(control);\n        }\n    } else if (isFormControl(control)) {\n        callback(control);\n    }\n};\n\nconst processFormArray = (array: FormArray, callback: Callback, isParentMustBeProcessed = false): void => {\n    array.controls.forEach((control) => forEachControl(control, callback, isParentMustBeProcessed));\n};\n\nconst processFormGroup = (group: FormGroup, callback: Callback, isParentMustBeProcessed = false): void => {\n    Object.keys(group.controls).forEach((field) => {\n        const control = group.get(field);\n\n        if (control) {\n            forEachControl(control, callback, isParentMustBeProcessed);\n        }\n    });\n};\n","import { ValidationErrors, AbstractControl } from '@angular/forms';\n\nimport { forEachControl } from '../for-each-control/for-each-control';\n\nexport function concatControlValidationErrors(control: AbstractControl): ValidationErrors | null {\n    let result: ValidationErrors | null = null;\n\n    forEachControl(\n        control,\n        (child) => {\n            if (child.errors) {\n                result = {\n                    ...result,\n                    ...child.errors\n                };\n            }\n        },\n        true\n    );\n\n    return result;\n}\n","import { FormControl, FormGroup, FormArray } from '@angular/forms';\nimport { Observable, BehaviorSubject, takeUntil } from 'rxjs';\n\n/**\n * Преобразование потока значения контрола из холодного в горячий.\n * Причина появления этой функции в том, что если пытаться сделать сложный пайп из valueChanges,\n * то он будет холодным и придется использовать startWith + shareReplay, но даже это не гарантирует\n * актуальность значения, т.к. при использовании такого пайпа в шаблоне пайп может отдавать неактуальное значение, если\n * между созданием пайпа и подпиской в шаблоне произошло изменение формы. В таком случае в шаблон придет значение\n * из startWith, а не текущее из формы. Частично в этом виноват баг https://github.com/angular/angular/issues/13129\n *\n * @param control - Контрол формы.\n * @param destroyed$ - Поток для комплита. Комплитит только внутреннюю подписку. Подписку,\n * созданную от controlValueChanges$ нужно комплитить отдельно.\n */\nexport function controlValueChanges$<T extends FormControl | FormGroup | FormArray>(\n    control: T,\n    destroyed$: Observable<unknown>\n): T['valueChanges'] {\n    const value$ = new BehaviorSubject<unknown>(control.value);\n\n    control.valueChanges.pipe(takeUntil(destroyed$)).subscribe((value) => {\n        value$.next(value);\n    });\n\n    return value$.asObservable();\n}\n","import { isStringNotEmpty } from '../../type-guards';\n\nexport function formatOptionalValue(value: string | null | undefined): string | undefined {\n    return isStringNotEmpty(value) ? value : undefined;\n}\n","import { AbstractControl } from '@angular/forms';\n\nimport { forEachControl } from './for-each-control/for-each-control';\n\nexport const isFormEmpty = (form: AbstractControl): boolean => {\n    try {\n        forEachControl(form, (control) => {\n            if (control.value) {\n                throw new Error();\n            }\n        });\n    } catch (err) {\n        return false;\n    }\n\n    return true;\n};\n","import { AbstractControl } from '@angular/forms';\n\nimport { UpdateControlOptions } from '@mosaic-design/infosec-components/types';\n\nexport function setControlEnabledState(\n    control: AbstractControl,\n    isEnabled: boolean,\n    options?: UpdateControlOptions\n): void {\n    if (control.enabled && !isEnabled) {\n        control.disable(options);\n    }\n\n    if (!control.enabled && isEnabled) {\n        control.enable(options);\n    }\n}\n","import { ValidatorFn, ValidationErrors, Validators, AbstractControl } from '@angular/forms';\n\nimport { RevalidationState, UpdateControlOptions } from '@mosaic-design/infosec-components/types';\n\nimport { refreshControlValidationErrors } from './common';\n\nexport interface ValidationSwitch {\n    wrapValidator: (validator: ValidatorFn | ValidatorFn[]) => ValidatorFn;\n    enableValidator: (options?: ValidationSwitchOptionsInput) => void;\n    disableValidator: (options?: ValidationSwitchOptionsInput) => void;\n}\n\nexport interface ValidationSwitchOptionsInput {\n    refreshValidationErrorOptions?: UpdateControlOptions;\n    isControlUpdatedOnRefresh?: boolean;\n    controlUpdateOptions?: UpdateControlOptions;\n}\n\ninterface ValidationSwitchOptions {\n    revalidationOptions: UpdateControlOptions;\n    isControlUpdatedOnRefresh: boolean;\n    controlUpdateOptions: UpdateControlOptions;\n}\n\nconst defaultRevalidationOptions: UpdateControlOptions = {\n    emitEvent: false,\n    onlySelf: true\n};\n\nfunction mapValidationSwitchOptions(options?: ValidationSwitchOptionsInput): ValidationSwitchOptions {\n    return {\n        ...options,\n        revalidationOptions: options?.refreshValidationErrorOptions\n            ? options.refreshValidationErrorOptions\n            : {\n                  ...defaultRevalidationOptions\n              },\n        isControlUpdatedOnRefresh: !!options?.isControlUpdatedOnRefresh,\n        controlUpdateOptions: options?.controlUpdateOptions\n            ? options.controlUpdateOptions\n            : {\n                  ...defaultRevalidationOptions\n              }\n    };\n}\n\ninterface ValidationItem {\n    validator: ValidatorFn;\n    control?: AbstractControl;\n    validationErrors: ValidationErrors | null;\n    previousValidationErrors: ValidationErrors | null;\n}\n\ninterface ValidationSwitchState {\n    items: ValidationItem[];\n    isEnabled: boolean;\n    options: ValidationSwitchOptions;\n}\n\nfunction createDefaultState(options: ValidationSwitchOptions): ValidationSwitchState {\n    return {\n        items: [],\n        isEnabled: false,\n        options\n    };\n}\n\nfunction createValidationItem(validator: ValidatorFn | ValidatorFn[]): ValidationItem {\n    const composedValidator = Array.isArray(validator) ? Validators.compose(validator) : validator;\n\n    return {\n        validator: composedValidator ? composedValidator : () => null,\n        validationErrors: null,\n        previousValidationErrors: null\n    };\n}\n\nfunction mapValidationErrorsOnRefresh(state: ValidationSwitchState, item: ValidationItem): ValidationErrors | null {\n    if (state.isEnabled) {\n        return item.control ? item.validator(item.control) : null;\n    } else {\n        return null;\n    }\n}\n\nfunction refreshItemValidationErrors(state: ValidationSwitchState, item: ValidationItem): void {\n    item.previousValidationErrors = item.validationErrors;\n    item.validationErrors = mapValidationErrorsOnRefresh(state, item);\n}\n\nfunction refreshAllItemsValidationErrors(state: ValidationSwitchState): void {\n    state.items.forEach((item) => refreshItemValidationErrors(state, item));\n}\n\nfunction refreshItemsControlsValidationErrors(state: ValidationSwitchState): void {\n    state.items.forEach((item) => {\n        if (item.control) {\n            const revalidationState: RevalidationState = {\n                control: item.control,\n                validationErrors: item.validationErrors,\n                previousValidationErrors: item.validationErrors,\n                revalidationOptions: state.options.revalidationOptions\n            };\n\n            refreshControlValidationErrors(revalidationState);\n\n            if (state.options.isControlUpdatedOnRefresh) {\n                item.control.updateValueAndValidity(state.options.controlUpdateOptions);\n            }\n        }\n    });\n}\n\nfunction mergeOptions(state: ValidationSwitchState, options?: ValidationSwitchOptionsInput): void {\n    if (options) {\n        state.options = {\n            ...state.options,\n            ...options\n        };\n    }\n}\n\nfunction enable(state: ValidationSwitchState): void {\n    if (!state.isEnabled) {\n        state.isEnabled = true;\n        refreshAllItemsValidationErrors(state);\n        refreshItemsControlsValidationErrors(state);\n    }\n}\n\nfunction disable(state: ValidationSwitchState): void {\n    if (state.isEnabled) {\n        state.isEnabled = false;\n        refreshAllItemsValidationErrors(state);\n        refreshItemsControlsValidationErrors(state);\n    }\n}\n\nexport function createValidationSwitch(optionsInput?: ValidationSwitchOptionsInput): ValidationSwitch {\n    const state = createDefaultState(mapValidationSwitchOptions(optionsInput));\n\n    return {\n        wrapValidator: (validator: ValidatorFn | ValidatorFn[]) => {\n            const item = createValidationItem(validator);\n            state.items.push(item);\n\n            return (control: AbstractControl) => {\n                item.control = control;\n                refreshItemValidationErrors(state, item);\n\n                return item.validationErrors;\n            };\n        },\n        enableValidator: (options?: ValidationSwitchOptionsInput) => {\n            mergeOptions(state, options);\n            enable(state);\n        },\n        disableValidator: (options?: ValidationSwitchOptionsInput) => {\n            mergeOptions(state, options);\n            disable(state);\n        }\n    };\n}\n","export function isIpAddress(ipaddress: string): boolean {\n    const ipV4Regexp =\n        /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n\n    return ipV4Regexp.test(ipaddress);\n}\n","import { Observable, combineLatest, map } from 'rxjs';\n\nimport { ObservableObject } from '@mosaic-design/infosec-components/types';\n\nexport function createObservedObject<T>(input: ObservableObject<T>): Observable<T> {\n    const names = Object.getOwnPropertyNames(input) as (keyof T)[];\n    const observables = names.map((name) => input[name]);\n\n    return combineLatest(observables).pipe(\n        map((values) => {\n            const entries: [keyof T, unknown][] = [];\n\n            names.forEach((name, i) => {\n                entries.push([name, values[i]]);\n            });\n\n            return Object.fromEntries(entries) as unknown as T;\n        })\n    );\n}\n","type SingleValue = string | number | boolean | undefined;\ntype ManyValues = readonly SingleValue[];\n\ntype QueryParamsKey = string | number;\ntype QueryParamsValue = SingleValue | ManyValues;\ntype QueryParams = Record<QueryParamsKey, QueryParamsValue>;\n\ntype NormalizedSingleValue = Exclude<SingleValue, undefined>;\ntype NormalizedManyValues = readonly NormalizedSingleValue[];\n\ntype NormalizedQueryParamsKey = string;\ntype NormalizedQueryParamsValue = NormalizedSingleValue | NormalizedManyValues;\ntype NormalizedQueryParams = Record<NormalizedQueryParamsKey, NormalizedQueryParamsValue>;\n\nfunction isManyValues(values: SingleValue | ManyValues): values is ManyValues {\n    return Array.isArray(values);\n}\n\nexport function normalizeQueryParams(queryParams: QueryParams | undefined): NormalizedQueryParams | undefined {\n    if (!queryParams) {\n        return undefined;\n    }\n\n    const result: NormalizedQueryParams = {};\n\n    Object.keys(queryParams).forEach((key) => {\n        const value = queryParams[key as keyof QueryParams];\n\n        if (isManyValues(value)) {\n            result[key] = value.filter((val) => val !== undefined) as NormalizedManyValues;\n        } else if (value !== undefined) {\n            result[key] = value;\n        }\n    });\n\n    if (!Object.keys(result).length) {\n        return undefined;\n    }\n\n    return result;\n}\n","import { isNonNullable } from '../type-guards';\n\nenum RouteItemType {\n    Segment = 'Segment',\n    Cut = 'cut',\n    Parameter = 'parameter'\n}\n\ninterface RouteItemBase {\n    type: RouteItemType;\n}\n\ninterface SegmentRouteItem extends RouteItemBase {\n    type: RouteItemType.Segment;\n    path: string;\n}\n\ninterface CutRouteItem extends RouteItemBase {\n    type: RouteItemType.Cut;\n}\n\ninterface ParameterRouteItem extends RouteItemBase {\n    type: RouteItemType.Parameter;\n    parameter: string;\n}\n\nfunction isSegmentRouteItem(item: RouteItemBase): item is SegmentRouteItem {\n    return item.type === RouteItemType.Segment;\n}\n\nfunction isParameterRouteItem(item: RouteItemBase): item is ParameterRouteItem {\n    return item.type === RouteItemType.Parameter;\n}\n\nfunction isSegmentOrParameterRouteItem(item: RouteItemBase): item is SegmentRouteItem | ParameterRouteItem {\n    return isSegmentRouteItem(item) || isParameterRouteItem(item);\n}\n\nexport interface RouteItemContainer {\n    readonly [key: string]: RouteItemConstruction;\n}\n\ntype RouteItem = SegmentRouteItem | CutRouteItem | ParameterRouteItem;\n\nexport class RouteTree {}\n\nexport interface CanCut<T> {\n    /**\n     * Отрезает часть урла. Влияет только на {@link url}.\n     *\n     * @example\n     * getRoutesTree().incident.cut().tasks.view.url -> `/tasks/view`\n     * getRoutesTree().incident.tasks.cut().withParameter('123').view.url -> `/123/view`\n     */\n    cut(): T;\n}\n\ntype WithCut<T> = T & CanCut<T>;\n\nexport class RouteItemConstruction {\n    private items: RouteItem[] = [];\n    private parent: RouteItemConstruction | undefined;\n\n    constructor(private itemPath: string) {}\n\n    static createRouteTree<T extends RouteItemContainer>(items: T): RouteTree & T {\n        const tree = new RouteTree();\n\n        Object.keys(items).forEach((key) => {\n            const treeChild = items[key];\n\n            if (isNonNullable(treeChild)) {\n                Object.defineProperty(tree, key, {\n                    get: () => {\n                        const routeItem: SegmentRouteItem = {\n                            type: RouteItemType.Segment,\n                            path: treeChild.itemPath\n                        };\n\n                        treeChild.items = [routeItem];\n\n                        return treeChild;\n                    }\n                });\n            }\n        });\n\n        return tree as RouteTree & T;\n    }\n\n    static create<T extends RouteItemContainer>(path: string, children?: T): WithCut<RouteItemConstruction & T> {\n        const item = new RouteItemConstruction(path);\n\n        if (children) {\n            Object.keys(children).forEach((key) => {\n                const child = children[key];\n\n                if (isNonNullable(child)) {\n                    child.parent = item;\n\n                    Object.defineProperty(item, key, {\n                        get() {\n                            const routeItem: SegmentRouteItem = {\n                                type: RouteItemType.Segment,\n                                path: child.itemPath\n                            };\n\n                            child.items = [...item.items, routeItem];\n\n                            return child;\n                        }\n                    });\n                }\n            });\n        }\n\n        (item as WithCut<RouteItemConstruction>).cut = item.addCutItem;\n\n        return item as WithCut<RouteItemConstruction & T>;\n    }\n\n    /**\n     * Возвращает последний сегмент урла + опциональный параметр. Используется для path в роутинге angular.\n     *\n     * @example\n     * getRoutesTree().incident.tasks.view.url -> `view`\n     * getRoutesTree().incident.tasks.view.withParameter(parameter).path -> `view/:id`\n     */\n    get path(): string {\n        const index = this.getLastItemIndex(RouteItemType.Segment);\n\n        if (index >= 0) {\n            const { items } = this;\n\n            const segment = items[index] as SegmentRouteItem;\n            const parameter = items.slice(index).find(isParameterRouteItem);\n\n            return parameter ? `${segment.path}/:${parameter.parameter}` : segment.path;\n        } else {\n            throw new Error('[RouteItemConstruction]: Segment path was not found');\n        }\n    }\n\n    /**\n     * Возвращает весь урл.\n     *\n     * @example\n     * getRoutesTree().incident.tasks.view.url -> `/incident/tasks/view`\n     * getRoutesTree().incident.tasks.withParameter('123').view.url -> `/incident/tasks/123/view`\n     */\n    get url(): string {\n        const { items } = this;\n\n        const cutIndex = this.getLastItemIndex(RouteItemType.Cut);\n\n        const value = items\n            .slice(cutIndex + 1)\n            .filter(isSegmentOrParameterRouteItem)\n            .map((item) => (isSegmentRouteItem(item) ? item.path : item.parameter))\n            .join('/');\n\n        return `/${value}`;\n    }\n\n    /**\n     * Добавляет параметр в урл.\n     *\n     * @example\n     * getRoutesTree().incident.tasks.withParameter('123').view.url -> `/incident/tasks/123/view`\n     * getRoutesTree().incident.tasks.view.withParameter('id').path -> `view/:id`\n     * getRoutesTree().incident.tasks.withParameter(id).view.path -> `view`\n     */\n    withParameter(parameter: string): this {\n        const item: ParameterRouteItem = {\n            type: RouteItemType.Parameter,\n            parameter\n        };\n\n        this.items.push(item);\n\n        return this;\n    }\n\n    private getLastItemIndex(type: RouteItemType): number {\n        const { items } = this;\n\n        const indexFromEnd = items\n            .slice(0)\n            .reverse()\n            .findIndex((item) => item.type === type);\n\n        return indexFromEnd === -1 ? -1 : items.length - 1 - indexFromEnd;\n    }\n\n    private addCutItem(): this {\n        const { items } = this;\n        if (items[items.length - 1]?.type !== RouteItemType.Cut) {\n            const item: CutRouteItem = {\n                type: RouteItemType.Cut\n            };\n\n            this.items.push(item);\n        }\n\n        return this;\n    }\n}\n","import { combineLatest, distinctUntilChanged, map, Observable } from 'rxjs';\n\nexport function atLeastOneIsTrue$(...sources: Observable<boolean>[]): Observable<boolean> {\n    return combineLatest(sources).pipe(\n        map((values) => values.includes(true)),\n        distinctUntilChanged()\n    );\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { catchError, Observable, ObservedValueOf, OperatorFunction } from 'rxjs';\n\nimport { ErrorResponse } from '@mosaic-design/infosec-components/types';\n\ntype Selector<T, O, E> = (err: E, caught: Observable<T>) => O;\n\n/**\n * Перехватывает только HttpErrorResponse. Остальные ошибки нужно перехватывать самостоятельно через {@link catchError}.\n */\nexport function catchApiError<T, O extends Observable<unknown>, E extends ErrorResponse | undefined>(\n    selector: Selector<T, O, E>,\n    defaultError?: E\n): OperatorFunction<T, T | ObservedValueOf<O>> {\n    return catchError<T, O>((errorResponse: unknown, caught) => {\n        if (errorResponse instanceof HttpErrorResponse) {\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n            const error = errorResponse.error ?? defaultError;\n\n            return selector(error as E, caught);\n        } else {\n            throw errorResponse;\n        }\n    });\n}\n","import { combineLatest, map, Observable } from 'rxjs';\n\nexport function combineLatestMap$<R, A1, A2>(\n    mapper: (arg1: A1, arg2: A2) => R,\n    ...sources: [Observable<A1>, Observable<A2>]\n): Observable<R>;\nexport function combineLatestMap$<R, A1, A2, A3>(\n    mapper: (arg1: A1, arg2: A2, arg3: A3) => R,\n    ...sources: [Observable<A1>, Observable<A2>, Observable<A3>]\n): Observable<R>;\nexport function combineLatestMap$<R, A1, A2, A3, A4>(\n    mapper: (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => R,\n    ...sources: [Observable<A1>, Observable<A2>, Observable<A3>, Observable<A4>]\n): Observable<R>;\nexport function combineLatestMap$<R, A1, A2, A3, A4, A5>(\n    mapper: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => R,\n    ...sources: [Observable<A1>, Observable<A2>, Observable<A3>, Observable<A4>, Observable<A5>]\n): Observable<R>;\nexport function combineLatestMap$<R, A1, A2, A3, A4, A5, A6>(\n    mapper: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, arg6: A6) => R,\n    ...sources: [Observable<A1>, Observable<A2>, Observable<A3>, Observable<A4>, Observable<A5>, Observable<A6>]\n): Observable<R>;\nexport function combineLatestMap$<R, A1, A2, A3, A4, A5, A6, A7>(\n    mapper: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, arg6: A6, arg7: A7) => R,\n    ...sources: [\n        Observable<A1>,\n        Observable<A2>,\n        Observable<A3>,\n        Observable<A4>,\n        Observable<A5>,\n        Observable<A6>,\n        Observable<A7>\n    ]\n): Observable<R>;\nexport function combineLatestMap$<R, A1, A2, A3, A4, A5, A6, A7, A8>(\n    mapper: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, arg6: A6, arg7: A7, arg8: A8) => R,\n    ...sources: [\n        Observable<A1>,\n        Observable<A2>,\n        Observable<A3>,\n        Observable<A4>,\n        Observable<A5>,\n        Observable<A6>,\n        Observable<A7>,\n        Observable<A8>\n    ]\n): Observable<R>;\nexport function combineLatestMap$<R, A = unknown>(\n    mapper: (...args: A[]) => R,\n    ...sources: Observable<A>[]\n): Observable<R> {\n    return combineLatest(sources).pipe(map((values) => mapper(...values)));\n}\n","import { filter, Observable } from 'rxjs';\n\nimport { isNonNullable } from '../../type-guards';\n\nexport function filterNonNullable<T>() {\n    return (source$: Observable<T | undefined | null>) => source$.pipe(filter(isNonNullable));\n}\n","import { map, Observable, OperatorFunction } from 'rxjs';\n\nexport function mapToVoid<T>(): OperatorFunction<T, void> {\n    return (source: Observable<T>) => source.pipe(map(() => undefined));\n}\n","import { NgZone } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport function runInZone<T>(zone: NgZone) {\n    return (source: Observable<T>): Observable<T> =>\n        new Observable((observer) =>\n            source.subscribe({\n                next: (value: T) => zone.run(() => observer.next(value)),\n                error: (error: unknown) => zone.run(() => observer.error(error)),\n                complete: () => zone.run(() => observer.complete())\n            })\n        );\n}\n","import { distinctUntilChanged, Observable } from 'rxjs';\n\nfunction createUrl(url: string): URL {\n    try {\n        return new URL(url);\n    } catch {\n        return new URL(`https://host.com${url}`);\n    }\n}\n\nfunction isUrlSegmentsEquals(previous: string, current: string): boolean {\n    const previousUrl = createUrl(previous);\n    const currentUrl = createUrl(current);\n\n    return previousUrl.pathname === currentUrl.pathname;\n}\n\n/**\n * Используется в pipe от асинхронного урла. Пропускает эмит в том случае,\n * если в асинхронном урле поменялись только параметры запроса.\n */\nexport function skipQueryParamsChange(): (source$: Observable<string>) => Observable<string> {\n    return distinctUntilChanged<string>((a, b) => isUrlSegmentsEquals(a, b));\n}\n","import { first, Observable, switchMap } from 'rxjs';\n\nexport function waitFor<T>(signal: Observable<unknown>) {\n    return (source: Observable<T>) =>\n        signal.pipe(\n            first(),\n            switchMap(() => source)\n        );\n}\n","import { combineLatest, filter, map, Observable } from 'rxjs';\n\nexport function whenAllAreFalse$(...sources: Observable<boolean>[]): Observable<void> {\n    return combineLatest(sources).pipe(\n        filter((values) => values.every((value) => !value)),\n        map(() => undefined)\n    );\n}\n","import { combineLatest, filter, map, Observable } from 'rxjs';\n\nexport function whenAllAreTrue$(...sources: Observable<boolean>[]): Observable<void> {\n    return combineLatest(sources).pipe(\n        filter((values) => values.every((value) => value)),\n        map(() => undefined)\n    );\n}\n","import { filter, map, Observable, of, pairwise, withLatestFrom } from 'rxjs';\n\nimport { FinishedEvent } from '@mosaic-design/infosec-components/types';\n\nexport function whenFinished$<T>(\n    isInProgress$: Observable<boolean>,\n    error$?: Observable<T>\n): Observable<FinishedEvent<T>> {\n    return isInProgress$.pipe(\n        pairwise(),\n        filter(([previous, current]) => previous && !current),\n        withLatestFrom(error$ ?? of(undefined)),\n        map(([, error]) => ({\n            isSuccess: !error,\n            error\n        }))\n    );\n}\n","export function addLeadingSlash(value: string): string {\n    if (!value) {\n        return value;\n    }\n\n    return value[0] === '/' ? value : `/${value}`;\n}\n","export function capitalize(value: string): string {\n    return value.charAt(0).toUpperCase() + value.slice(1);\n}\n","export const normalizeString = (value: string): string => value.trim().toLowerCase();\n","import { capitalize } from '../capitalize/capitalize';\n\n/**\n * Преобразование строки к части ключа локализации.\n * Заменяем все не-буквы и переходы со строчной на заглавную букву на дефисы.\n * Например:\n * dashboard.long.name.error                         => DashboardLongNameError\n * agent.QueryJobArtifactsErrorsParams.InternalError => AgentQueryJobArtifactsErrorsParamsInternalError\n */\nexport function toPascalCaseLocalizationKeyPart(value: string): string {\n    return capitalize(\n        value\n            // заменяем букву после не-буквы на заглавную\n            .replace(/[-_.](\\w)/gi, (match, p1: string) => capitalize(p1))\n            // удаляем не-буквы и не-цифры\n            .replace(/[^a-z0-9\\d]/gi, '')\n    );\n}\n","import { TimeZoneName } from '@mosaic-design/infosec-components/types';\n\nexport function getCurrentTimeZoneName(): TimeZoneName {\n    return getTimeZoneName(-new Date().getTimezoneOffset());\n}\n\nexport function getTimeZoneName(offsetInMinutes: number): TimeZoneName {\n    const min = -720;\n    const max = 840;\n\n    if (offsetInMinutes < min || offsetInMinutes > max) {\n        throw new Error(`getTimeZoneName: Invalid offset ${offsetInMinutes}`);\n    }\n\n    const minutes = 60;\n\n    const floor = Math.floor(Math.abs(offsetInMinutes) / minutes);\n    const rest = Math.abs(offsetInMinutes) % minutes;\n\n    return `UTC${offsetInMinutes < 0 ? '-' : '+'}${floor}${rest ? `:${rest}` : ''}` as TimeZoneName;\n}\n","// TODO: delete after issue (https://github.com/ReactiveX/rxjs/issues/7473) is closed.\n// eslint-disable-next-line import/named\nimport {\n    BehaviorSubject,\n    filter,\n    first,\n    interval,\n    map,\n    Observable,\n    scan,\n    share,\n    takeWhile,\n    withLatestFrom,\n    SchedulerLike\n} from 'rxjs';\n\nexport interface TimerOptions {\n    timeout: number;\n    refreshInterval: number;\n    paused$: BehaviorSubject<boolean>;\n    scheduler?: SchedulerLike;\n}\n\nexport interface Timer {\n    complete$: Observable<number>;\n    percentProgress$: Observable<number>;\n}\n\nexport function createTimer(options: TimerOptions): Timer {\n    const elapsed$ = interval(options.refreshInterval, options.scheduler).pipe(\n        withLatestFrom(options.paused$),\n        filter(([, paused]) => !paused),\n        scan((elapsed) => elapsed + options.refreshInterval, 0),\n        takeWhile((elapsed) => elapsed <= options.timeout),\n        share()\n    );\n\n    const complete$ = elapsed$.pipe(\n        filter((elapsed) => elapsed >= options.timeout),\n        first()\n    );\n\n    const hundredPercents = 100;\n    const percentProgress$ = elapsed$.pipe(map((elapsed) => (hundredPercents / options.timeout) * elapsed));\n\n    return {\n        complete$,\n        percentProgress$\n    };\n}\n","interface Children<T> {\n    children?: T[];\n}\n\nexport function flattenTree<T extends Children<T>>(nodeOrTree: T | T[]): T[];\nexport function flattenTree<T>(nodeOrTree: T | T[], childrenGetter?: (item: T) => T[]): T[];\nexport function flattenTree<T>(nodeOrTree: T | T[], childrenGetter?: (item: T) => T[]): T[] {\n    if (!nodeOrTree) {\n        return [];\n    }\n\n    const flatNodeChildren = (node: T): T[] => {\n        const children = childrenGetter ? childrenGetter(node) : (node as Children<T>).children;\n\n        return [node, ...(children?.length ? children.map((item) => flattenTree(item, childrenGetter)).flat() : [])];\n    };\n\n    return Array.isArray(nodeOrTree) ? nodeOrTree.map(flatNodeChildren).flat() : flatNodeChildren(nodeOrTree);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}