{"version":3,"file":"mosaic-design-infosec-components-components-pdql-editor.mjs","sources":["../../../libs/components/pdql-editor/src/lib/components/pdql-editor-success/pdql-editor-success.component.ts","../../../libs/components/pdql-editor/src/lib/components/pdql-editor-success/pdql-editor-success.component.html","../../../libs/components/pdql-editor/src/lib/components/pdql-editor-failed/pdql-editor-failed.component.ts","../../../libs/components/pdql-editor/src/lib/components/pdql-editor-failed/pdql-editor-failed.component.html","../../../libs/components/pdql-editor/src/lib/constants/hot-key.ts","../../../libs/components/pdql-editor/src/lib/constants/i18n.ts","../../../libs/components/pdql-editor/src/lib/utils/format-hot-key/format-hot-key.ts","../../../libs/components/pdql-editor/src/lib/components/pdql-editor-hotkey/pdql-editor-hotkey.component.ts","../../../libs/components/pdql-editor/src/lib/components/pdql-editor-hotkey/pdql-editor-hotkey.component.html","../../../libs/components/pdql-editor/src/lib/components/pdql-editor-spinner/pdql-editor-spinner.component.ts","../../../libs/components/pdql-editor/src/lib/components/pdql-editor-spinner/pdql-editor-spinner.component.html","../../../libs/components/pdql-editor/src/lib/components/pdql-editor/pdql-editor.component.ts","../../../libs/components/pdql-editor/src/lib/pdql-editor.module.ts","../../../libs/components/pdql-editor/mosaic-design-infosec-components-components-pdql-editor.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\n\nimport { IcTranslocoScopeAlias } from '@mosaic-design/infosec-components/types';\n\n@Component({\n    selector: 'ic-pdql-editor-success',\n    templateUrl: './pdql-editor-success.component.html',\n    styleUrls: ['./pdql-editor-success.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdqlEditorSuccessComponent {\n    protected readonly IcTranslocoScopeAlias = IcTranslocoScopeAlias;\n}\n","<i kbq-icon class=\"kbq-check_16\"></i>\n\n<div #projectedContent>\n    <ng-content></ng-content>\n</div>\n\n<ng-container *ngIf=\"!projectedContent.hasChildNodes()\">\n    <ng-container *transloco=\"let translate; read: IcTranslocoScopeAlias.PdqlEditor\">\n        <span>{{ translate('PdqlEditor.Hint.Text.CheckSuccess') }}</span>\n    </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { KbqComponentColors } from '@koobiq/components/core';\n\nimport { IcTranslocoScopeAlias } from '@mosaic-design/infosec-components/types';\n\n@Component({\n    selector: 'ic-pdql-editor-failed',\n    templateUrl: './pdql-editor-failed.component.html',\n    styleUrls: ['./pdql-editor-failed.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdqlEditorFailedComponent {\n    protected readonly KbqComponentColors = KbqComponentColors;\n    protected readonly IcTranslocoScopeAlias = IcTranslocoScopeAlias;\n}\n","<i kbq-icon=\"kbq-ban_16\"\n   [color]=\"KbqComponentColors.Error\"\n   class=\"failed-icon\">\n</i>\n\n<div #projectedContent>\n    <ng-content></ng-content>\n</div>\n\n<ng-container *ngIf=\"!projectedContent.hasChildNodes()\">\n    <ng-container *transloco=\"let translate; read: IcTranslocoScopeAlias.PdqlEditor\">\n        <span>{{ translate('PdqlEditor.Hint.Text.CheckFailed') }}</span>\n    </ng-container>\n</ng-container>\n","export const controlKeyTextAlias = 'Ctrl';\n\nexport const shiftKeyTextAlias = 'Shift';\n\nexport const metaKeyTextAlias = 'Command';\n\nexport const hotKeySeparator = ' + ';\n","import { pdqlEditorTranslates } from '@mosaic-design/infosec-components/i18n-resources';\nimport { LocalizationScopeConfig, IcTranslocoScopeAlias } from '@mosaic-design/infosec-components/types';\n\nexport const scopeConfig: LocalizationScopeConfig = {\n    alias: IcTranslocoScopeAlias.PdqlEditor,\n    localTranslates: pdqlEditorTranslates\n};\n","import { isNonNullable } from '@mosaic-design/infosec-components/utils';\n\nimport { controlKeyTextAlias, hotKeySeparator, metaKeyTextAlias, shiftKeyTextAlias } from '../../constants';\nimport { HotKey } from '../../types';\n\nexport function formatHotKey(hotKey: HotKey): string {\n    const items: string[] = [];\n\n    if (hotKey.withControlModifier) {\n        items.push(controlKeyTextAlias);\n    }\n\n    if (hotKey.withShiftModifier) {\n        items.push(shiftKeyTextAlias);\n    }\n\n    if (hotKey.metaKey) {\n        items.push(metaKeyTextAlias);\n    }\n\n    const keyCode = hotKey.keyCodes[0];\n\n    if (isNonNullable(keyCode)) {\n        const keyCodePrefixes = ['Digit', 'Key'];\n\n        items.push(keyCodePrefixes.reduce((previousValue, prefix) => previousValue.replace(prefix, ''), keyCode));\n    } else {\n        throw new Error('[formatHotKey] Invalid hot key: missing key code');\n    }\n\n    return items.join(hotKeySeparator);\n}\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    Input,\n    OnDestroy,\n    Optional,\n    Output\n} from '@angular/core';\nimport { KbqFormField } from '@koobiq/components/form-field';\n\nimport { HotKeyService } from '@mosaic-design/infosec-components/services';\nimport { IcTranslocoScopeAlias } from '@mosaic-design/infosec-components/types';\n\nimport { HotKey } from '../../types';\nimport { formatHotKey } from '../../utils';\n\nexport const defaultHotKey: HotKey = {\n    keyCodes: ['Enter', 'NumpadEnter'],\n    withControlModifier: true,\n    withShiftModifier: false,\n    metaKey: false\n};\n\n@Component({\n    selector: 'ic-pdql-editor-hotkey',\n    templateUrl: './pdql-editor-hotkey.component.html',\n    styleUrls: ['./pdql-editor-hotkey.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [HotKeyService]\n})\nexport class PdqlEditorHotkeyComponent implements OnDestroy, AfterViewInit {\n    protected readonly IcTranslocoScopeAlias = IcTranslocoScopeAlias;\n    protected readonly formatHotKey = formatHotKey;\n\n    get hotKey(): HotKey {\n        return this._hotKey;\n    }\n\n    @Input() set hotKey(value: HotKey | undefined) {\n        this._hotKey = value ?? defaultHotKey;\n        if (this.isInitialized) {\n            this.configureHotKey();\n        }\n    }\n\n    private _hotKey = defaultHotKey;\n\n    @Output() checkPdql = new EventEmitter<void>();\n\n    private hotKeyId = 'PdqlEditorHotkey';\n    private isInitialized = false;\n\n    constructor(\n        private hotKeyService: HotKeyService,\n        @Optional() private kbqFormField?: KbqFormField\n    ) {}\n\n    ngAfterViewInit(): void {\n        this.isInitialized = true;\n        this.configureHotKey();\n    }\n\n    ngOnDestroy(): void {\n        this.hotKeyService.stopHotKeyObserve();\n    }\n\n    private configureHotKey(): void {\n        const formFieldElement = this.kbqFormField?.elementRef.nativeElement as HTMLElement | undefined;\n\n        if (formFieldElement) {\n            this.hotKeyService.unregisterHotKey(this.hotKeyId);\n            this.hotKeyService.stopHotKeyObserve();\n\n            this.hotKeyService.registerHotKey({\n                ...this.hotKey,\n                pathItem: formFieldElement,\n                id: this.hotKeyId,\n                callback: () => this.checkPdql.emit()\n            });\n\n            this.hotKeyService.startHotKeyObserve();\n        } else {\n            // eslint-disable-next-line no-console\n            console.warn(\n                'PdqlEditorHotkeyComponent: hot key was not created because parent KbqFormField was not found.'\n            );\n        }\n    }\n}\n","<div #projectedContent>\n    <ng-content></ng-content>\n</div>\n\n<ng-container *ngIf=\"!projectedContent.hasChildNodes()\">\n    <ng-container *transloco=\"let translate; read: IcTranslocoScopeAlias.PdqlEditor\">\n        <span>{{ translate('PdqlEditor.Hint.Text.Check', { hotKey: formatHotKey(hotKey) }) }}</span>\n    </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\nimport { IcTranslocoScopeAlias } from '@mosaic-design/infosec-components/types';\n\n@Component({\n    selector: 'ic-pdql-editor-spinner',\n    templateUrl: './pdql-editor-spinner.component.html',\n    styleUrls: ['./pdql-editor-spinner.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdqlEditorSpinnerComponent {\n    protected readonly IcTranslocoScopeAlias = IcTranslocoScopeAlias;\n}\n","<ng-container>\n    <kbq-progress-spinner mode=\"indeterminate\"></kbq-progress-spinner>\n\n    <div #projectedContent>\n        <ng-content></ng-content>\n    </div>\n\n    <ng-container *ngIf=\"!projectedContent.hasChildNodes()\">\n        <ng-container *transloco=\"let translate; read: IcTranslocoScopeAlias.PdqlEditor\">\n            <span>{{ translate('PdqlEditor.Hint.Text.CheckInProgress') }}</span>\n        </ng-container>\n    </ng-container>\n</ng-container>\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    Input,\n    Optional,\n    Self,\n    ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { KbqFormField, KbqFormFieldControl } from '@koobiq/components/form-field';\nimport { EditorFromTextArea, fromTextArea, MarkerRange, TextMarker } from 'codemirror';\nimport { Subject } from 'rxjs';\n\nimport { HotKeyService } from '@mosaic-design/infosec-components/services';\nimport { CodeMirrorHighlightRange, OnChange, OnTouch } from '@mosaic-design/infosec-components/types';\nimport { getCodeMirrorCompatibleTextRanges, isArray, isNonNullable } from '@mosaic-design/infosec-components/utils';\n\ntype PdqlEditorValue = string | null | undefined;\n\n@Component({\n    // eslint-disable-next-line @angular-eslint/component-selector\n    selector: 'textarea[icPdqlEditor]',\n    template: '',\n    styleUrls: ['./pdql-editor.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'ic-pdql-editor'\n    },\n    providers: [\n        HotKeyService,\n        {\n            provide: KbqFormFieldControl,\n            useExisting: PdqlEditorComponent\n        }\n    ],\n    encapsulation: ViewEncapsulation.None\n})\nexport class PdqlEditorComponent\n    extends KbqFormFieldControl<PdqlEditorValue>\n    implements AfterViewInit, ControlValueAccessor\n{\n    @Input() set highlight(value: CodeMirrorHighlightRange | CodeMirrorHighlightRange[] | undefined) {\n        if (isNonNullable(value)) {\n            if (isArray(value)) {\n                this._highlight = value;\n            } else {\n                this._highlight = [value];\n            }\n        } else {\n            this._highlight = [];\n        }\n\n        this.refreshHighlight();\n    }\n\n    private _highlight: CodeMirrorHighlightRange[] = [];\n    private lastEmittedValue: PdqlEditorValue;\n    private codeMirrorInstance: EditorFromTextArea | undefined;\n    private highlightErrorMarkers: TextMarker<MarkerRange>[] = [];\n    private readonly defaultHighlightErrorClass = 'ic-pdql-editor_error';\n\n    override readonly stateChanges = new Subject<void>();\n    override focused = false;\n\n    constructor(\n        private focusMonitor: FocusMonitor,\n        protected elementRef: ElementRef<HTMLTextAreaElement>,\n        @Optional() @Self() public override ngControl: NgControl | null,\n        @Optional() private kbqFormField?: KbqFormField | null\n    ) {\n        super();\n\n        if (ngControl) {\n            ngControl.valueAccessor = this;\n        }\n    }\n\n    onChange: OnChange<PdqlEditorValue> = () => {\n        // empty\n    };\n\n    onTouch: OnTouch = () => {\n        // empty\n    };\n\n    ngAfterViewInit(): void {\n        const textArea = this.elementRef.nativeElement;\n\n        if (textArea instanceof HTMLTextAreaElement) {\n            this.codeMirrorInstance = this.setupCodeMirror(textArea);\n            this.refreshHighlight();\n        }\n    }\n\n    focus(): void {\n        this.elementRef.nativeElement.focus();\n        this.codeMirrorInstance?.focus();\n    }\n\n    moveCursorToEnd(): void {\n        const { codeMirrorInstance } = this;\n        if (codeMirrorInstance) {\n            let lineIndex = codeMirrorInstance.lineCount() - 1;\n\n            if (lineIndex < 0) {\n                lineIndex = 0;\n            }\n\n            const lineInfo = codeMirrorInstance.lineInfo(lineIndex);\n            codeMirrorInstance.setCursor({\n                line: lineIndex,\n                ch: lineInfo.text.length\n            });\n        }\n    }\n\n    onContainerClick(): void {\n        this.focus();\n    }\n\n    registerOnChange(fn: OnChange<PdqlEditorValue>): void {\n        this.onChange = fn;\n    }\n\n    registerOnTouched(fn: OnTouch): void {\n        this.onTouch = fn;\n    }\n\n    writeValue(obj: PdqlEditorValue): void {\n        this.value = obj;\n        this.codeMirrorInstance?.setValue(obj ?? '');\n    }\n\n    private setupCodeMirror(textArea: HTMLTextAreaElement): EditorFromTextArea {\n        const instance = fromTextArea(textArea, {\n            scrollbarStyle: 'null',\n            lineWrapping: true\n        });\n        instance.setValue(this.value || '');\n\n        instance.on('change', (inst) => {\n            this.emitValue(inst.getValue());\n            this.stateChanges.next();\n        });\n\n        const formFieldElement = this.kbqFormField?.elementRef.nativeElement as HTMLElement | undefined;\n        if (formFieldElement) {\n            this.focusMonitor.stopMonitoring(formFieldElement);\n            this.focusMonitor.monitor(formFieldElement, true);\n        }\n\n        // can be removed when mosaic will be updated to 13.2\n        instance.on('focus', () => {\n            this.focused = true;\n            this.stateChanges.next();\n        });\n\n        // can be removed when mosaic will be updated to 13.2\n        instance.on('blur', () => {\n            this.focused = false;\n            this.stateChanges.next();\n        });\n\n        return instance;\n    }\n\n    private clearHighlights(): void {\n        this.highlightErrorMarkers.forEach((marker) => {\n            marker.clear();\n        });\n    }\n\n    private refreshHighlight(): void {\n        this.clearHighlights();\n\n        const { codeMirrorInstance, value } = this;\n\n        if (codeMirrorInstance && value) {\n            this._highlight.forEach((highlight) => {\n                const textRanges = getCodeMirrorCompatibleTextRanges(value, highlight);\n\n                textRanges.forEach((textRange) => {\n                    const marker = codeMirrorInstance.markText(textRange.start, textRange.end, {\n                        className: highlight.className || this.defaultHighlightErrorClass,\n                        title: highlight.title\n                    });\n\n                    this.highlightErrorMarkers.push(marker);\n                });\n            });\n        }\n    }\n\n    private emitValue(value: PdqlEditorValue): void {\n        if (value !== this.lastEmittedValue) {\n            this.lastEmittedValue = value;\n            this.value = value;\n            this.onChange(value);\n        }\n    }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslocoDirective } from '@jsverse/transloco';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqProgressSpinnerModule } from '@koobiq/components/progress-spinner';\nimport { KbqTextareaModule } from '@koobiq/components/textarea';\n\nimport {\n    PdqlEditorComponent,\n    PdqlEditorFailedComponent,\n    PdqlEditorHotkeyComponent,\n    PdqlEditorSpinnerComponent,\n    PdqlEditorSuccessComponent\n} from './components';\n\nconst COMPONENTS = [\n    PdqlEditorSuccessComponent,\n    PdqlEditorSpinnerComponent,\n    PdqlEditorFailedComponent,\n    PdqlEditorHotkeyComponent,\n    PdqlEditorComponent\n];\n\n/**\n * @deprecated Будет удален в 19 версии. Компоненты будут standalone\n */\n@NgModule({\n    imports: [\n        CommonModule,\n        FormsModule,\n\n        KbqTextareaModule,\n        KbqFormFieldModule,\n        KbqProgressSpinnerModule,\n        KbqIconModule,\n\n        TranslocoDirective\n    ],\n    declarations: COMPONENTS,\n    exports: COMPONENTS\n})\nexport class IcPdqlEditorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4"],"mappings":"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"}