{"version":3,"file":"seniorsistemas-angular-components-code-editor.mjs","sources":["../../projects/angular-components/code-editor/src/lib/code-editor/models/enums/languages.ts","../../projects/angular-components/code-editor/src/lib/code-editor/models/enums/themes.ts","../../projects/angular-components/code-editor/src/lib/code-editor/models/index.ts","../../projects/angular-components/code-editor/src/lib/code-editor/core/use-cases/core-linters.ts","../../projects/angular-components/code-editor/src/lib/code-editor/core/facades/core-facade.ts","../../projects/angular-components/code-editor/src/lib/code-editor/code-editor.component.ts","../../projects/angular-components/code-editor/src/lib/code-editor/code-editor.component.html","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/base-configs/grammar.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/enums/enum-type-order.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/enums/meta-type.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/enums/request-types.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/enums/completion-types.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/enums/keywords.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/models/index.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/base-configs/base-configs.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/utils/custom-http-client/json-response-formatters/format-json-response.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/utils/custom-http-client/json-response-formatters/format-blob-response.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/utils/custom-http-client/custom-http-client.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/utils/custom-translations/custom-translations-service.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/utils/custom-translations/custom-translations.module.ts","../../projects/angular-components/code-editor/src/lib/code-editor/core/models/enums/marker-severity.ts","../../projects/angular-components/code-editor/src/lib/code-editor/core/models/index.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/utils/convert-markers-to-diagnostics.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/utils/is-current-position-inside-string.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete.service.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-states/autocomplete-state-wrapper/autocomplete-state-wrapper-style.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-states/autocomplete-state-wrapper/autocomplete-state-wrapper.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-states/autocomplete-loading-state.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-states/autocomplete-empty-state.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/tax-calculation-language-configs.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/utils/get-language-configs.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/utils/get-safe-response.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete-style.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/extensions/autocomplete/autocomplete.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/languages/tax-calculation/tax-calculation.language.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/languages/json/json.language.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/languages/editor-languages.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/sds-light-style.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/sds-light-highlight-style.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/extensions/scrollbars.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/extensions/font-style.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/extensions/line-counter.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/extensions/autocomplete-tooltip.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/sds-light-theme.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/themes/editor-themes.ts","../../projects/angular-components/code-editor/src/lib/code-editor/infra/cores/codemirror-6/codemirror-6-core.ts","../../projects/angular-components/code-editor/src/lib/code-editor/code-editor.module.ts","../../projects/angular-components/code-editor/src/seniorsistemas-angular-components-code-editor.ts"],"sourcesContent":["export enum Languages {\n    TaxCalculation = \"TaxCalculation\",\n    Json = \"Json\"\n}\n","export enum Themes {\n    SDSLight = \"SDSLight\"\n}\n","/* Interfaces */\nexport * from \"./interfaces/editor-options\";\n\n/* Enums */\nexport * from \"./enums/languages\";\nexport * from \"./enums/themes\";\n","import { Languages } from \"../../models\";\nimport { LinterFacade } from \"../facades/linter-facade\";\n\ntype LinterFacadeFactory = () => LinterFacade;\n\nexport class CoreLinters {\n\n    private static readonly _LINTERS: Map<Languages, LinterFacadeFactory> = new Map([]);\n\n    public static getLinter(language: Languages): LinterFacade | undefined {\n        const languageLinterFactory = CoreLinters._LINTERS.get(language);\n        if (languageLinterFactory) {\n            return languageLinterFactory();\n        }\n        return undefined;\n    }\n}\n","import { Observable, ReplaySubject, Subject } from 'rxjs';\n\nimport { EditorOptions, Languages, Themes } from '../../models';\nimport { Marker } from '../models';\nimport { CoreLinters } from '../use-cases/core-linters';\nimport { LinterFacade } from './linter-facade';\n\nexport abstract class CoreFacade {\n    private readonly $onCoreFinishLoad: ReplaySubject<void> = new ReplaySubject(1);\n    private readonly $onCodeChange: Subject<string> = new Subject();\n    private readonly $onCodeValidityChange: Subject<boolean> = new Subject();\n    private _completionItems: string[] = [];\n    private _lastCodeEmitted = '';\n    private _lastCodeValidityEmitted!: boolean;\n    private _linter!: LinterFacade;\n\n    public changeEditorOptions(options: EditorOptions): void {\n        if (options) {\n            if (typeof options !== 'object') {\n                throw new Error(\"Editor's options must be an EditorOptions object\");\n            }\n\n            this.validateLanguage(options.language as Languages);\n            this.validateTheme(options.theme as Themes);\n            this.setLinter(options.language as Languages);\n\n            this.setCoreEditorOptions(options);\n        }\n    }\n\n    public changeCode(code: string): void {\n        const safeCode = this.getSafeCode(code);\n        if (safeCode !== this._lastCodeEmitted) {\n            this.setCode(safeCode);\n        }\n    }\n\n    public setPayload(payload: string): void {\n        const safeCode = this.getSafeCode(payload);\n        // Força a atualização sem verificar _lastCodeEmitted,\n        // mas preserva o cursor verificando no nível do editor\n        this.setCodeWithCursorPreservation(safeCode);\n    }\n\n    protected abstract setCodeWithCursorPreservation(code: string): void;\n\n    public abstract initCore(): void;\n    public abstract destroyCore(): void;\n\n    public abstract setCoreWrapperElement(element: HTMLDivElement): void;\n    public abstract setCode(code: string): void;\n\n    public getOnCoreFinishLoadObservable(): Observable<void> {\n        return this.$onCoreFinishLoad.asObservable();\n    }\n\n    public getOnCodeChangeObservable(): Observable<string> {\n        return this.$onCodeChange.asObservable();\n    }\n\n    public getOnCodeValidityChangeObservable(): Observable<boolean> {\n        return this.$onCodeValidityChange.asObservable();\n    }\n\n    protected abstract setCoreEditorOptions(options: EditorOptions): void;\n    protected abstract highlightCode(markers: Marker[]): void;\n\n    protected notifyCoreFinishLoad(): void {\n        this.$onCoreFinishLoad.next();\n    }\n\n    protected notifyCodeChange(code: string): void {\n        const safeCode = this.getSafeCode(code);\n        if (safeCode !== this._lastCodeEmitted) {\n            this._lastCodeEmitted = safeCode;\n            this.$onCodeChange.next(safeCode);\n            this.validateCode(safeCode);\n        }\n    }\n\n    protected updateCompletionItems(items: string[]): void {\n        this._completionItems = items || [];\n        this.validateCode(this._lastCodeEmitted);\n    }\n\n    private setLinter(language: Languages): void {\n        this._linter = CoreLinters.getLinter(language) as LinterFacade;\n    }\n\n    private async validateCode(code: string): Promise<void> {\n        if (this._linter) {\n            const markers: Marker[] = await this._linter.lint(code, this._completionItems);\n            this.highlightCode(markers);\n            this.notifyCodeValidityChange(!markers.length);\n        }\n    }\n\n    private notifyCodeValidityChange(validity: boolean): void {\n        if (validity !== this._lastCodeValidityEmitted) {\n            this._lastCodeValidityEmitted = validity;\n            this.$onCodeValidityChange.next(validity);\n        }\n    }\n\n    private validateLanguage(language: Languages): void {\n        const languages = Object.values(Languages);\n        if (language && !languages.includes(language)) {\n            throw new Error(`The informed language \"${language}\" is not supported`);\n        }\n    }\n\n    private validateTheme(theme: Themes): void {\n        const themes = Object.values(Themes);\n        if (theme && !themes.includes(theme)) {\n            throw new Error(`The informed theme \"${theme}\" is not supported`);\n        }\n    }\n\n    private getSafeCode(code: string): string {\n        return typeof code === 'string' ? code : '';\n    }\n}\n","/* eslint-disable @angular-eslint/no-output-on-prefix */\nimport { Component, OnInit, AfterViewInit, OnDestroy, Input, Output, EventEmitter, ViewChild, ElementRef, forwardRef, inject } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { CoreFacade } from './core/facades/core-facade';\nimport { EditorOptions } from './models';\n\n/**\n * @description Componente de editor de código com syntax highlighting, construído sobre\n * um editor Monaco/CodeMirror. Implementa {@link ControlValueAccessor} para integração\n * com formulários Angular e suporta configuração de linguagem, tema e opções avançadas\n * do editor via `editorOptions`.\n *\n * @example\n * ```html\n * <s-code-editor\n *   formControlName=\"script\"\n *   [editorOptions]=\"{ language: 'javascript', theme: 'vs-dark' }\"\n *   (codeChange)=\"onCodeChange($event)\" />\n * ```\n *\n * @category Inputs\n */\n@Component({\n    selector: 's-code-editor',\n    templateUrl: './code-editor.component.html',\n    styleUrls: ['./code-editor.component.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => CodeEditorComponent),\n            multi: true,\n        },\n    ],\n})\nexport class CodeEditorComponent implements OnInit, AfterViewInit, ControlValueAccessor, OnDestroy {\n    private readonly coreFacade = inject(CoreFacade);\n\n    /**\n     * @description Opções de configuração do editor (linguagem, tema, readonly, etc.).\n     * Ao atribuir um novo valor, as opções são aplicadas imediatamente ao editor.\n     */\n    @Input()\n    public set editorOptions(options: EditorOptions | undefined) {\n        if (options) {\n            this.coreFacade.changeEditorOptions(options);\n        }\n    }\n\n    /**\n     * @description Conteúdo textual do editor. Ao atribuir, o código é propagado ao núcleo do editor.\n     */\n    @Input()\n    public set code(code: string) {\n        this.coreFacade.changeCode(code);\n    }\n\n    /**\n     * @description Indica se o código atual é válido segundo as regras do editor.\n     * Pode ser usado para exibir indicadores visuais de erro.\n     *\n     * @default false\n     */\n    @Input() isCodeValid: boolean | undefined = false;\n\n    /**\n     * @description Payload adicional passado ao núcleo do editor, utilizado para\n     * contexto de autocompletar ou validações específicas da linguagem.\n     */\n    @Input()\n    public set payload(payload: string) {\n        this.coreFacade.setPayload(payload);\n    }\n\n    /** @description Emitido sempre que o conteúdo do editor é alterado. Emite o código atual como string. */\n    @Output()\n    public codeChange = new EventEmitter<string>();\n\n    /** @description Emitido quando o estado de validade do código muda. */\n    @Output()\n    public isCodeValidChange = new EventEmitter<boolean>();\n\n    /**\n     * @deprecated Use `codeChange` ao invés deste output.\n     * @description Emitido sempre que o conteúdo do editor é alterado.\n     */\n    @Output()\n    public onCodeChange = new EventEmitter<string>();\n\n    /** @description Emitido quando o componente finaliza o carregamento e o editor está pronto para uso. */\n    @Output()\n    public onComponentFinishLoad = new EventEmitter<void>();\n\n    @ViewChild('coreWrapper')\n    private readonly coreWrapperElement: ElementRef | null = null;\n\n    private readonly _ngUnsubscribe = new Subject<void>();\n\n    private _onChange: (value: string) => void = () => {};\n    private _onTouched: () => void = () => {};\n\n    public writeValue(value: string): void {\n        this.code = value;\n    }\n\n    public registerOnChange(onChange: (value: string) => void): void {\n        this._onChange = onChange;\n    }\n\n    public registerOnTouched(onTouched: () => void): void {\n        this._onTouched = onTouched;\n    }\n\n    public ngOnInit(): void {\n        this.coreFacade.initCore();\n        this.setupCoreListeners();\n    }\n\n    public ngAfterViewInit(): void {\n        this.setCoreWrapperElement();\n    }\n\n    public ngOnDestroy(): void {\n        this.coreFacade.destroyCore();\n        this._ngUnsubscribe.next();\n        this._ngUnsubscribe.complete();\n    }\n\n    private setCoreWrapperElement(): void {\n        this.coreFacade.setCoreWrapperElement(this.coreWrapperElement?.nativeElement as HTMLDivElement);\n    }\n\n    private setupCoreListeners(): void {\n        this.coreFacade\n            .getOnCoreFinishLoadObservable()\n            .pipe(take(1))\n            .subscribe(() => this.onComponentFinishLoad.emit());\n\n        this.coreFacade\n            .getOnCodeChangeObservable()\n            .pipe(takeUntil(this._ngUnsubscribe))\n            .subscribe((code) => {\n                this.codeChange.emit(code);\n                this.onCodeChange.emit(code);\n                this._onTouched();\n                this._onChange(code);\n            });\n\n        this.coreFacade\n            .getOnCodeValidityChangeObservable()\n            .pipe(takeUntil(this._ngUnsubscribe))\n            .subscribe((validity) => {\n                this.isCodeValidChange.emit(validity);\n            });\n    }\n}\n\n","<div #coreWrapper class=\"core-wrapper\"></div>","export default `\n@top Script { statement+ }\n\nstatement[@isGroup=Statement] {\n    Keyword |\n    String |\n    Number\n}\n\n@tokens {\n    String { '\"' (![\\\\n\"])* '\"'? }\n\n    Number { std.digit+ }\n\n    identifierChar { std.asciiLetter | $[_$\\u{a1}-\\u{10ffff}] }\n\n    word { identifierChar (identifierChar | std.digit)* }\n\n    identifier { word }\n}\n\nKeyword {\n    kw<\"SE\">\n    kw<\"ENTAO\">\n    kw<\"FIM_SE\">\n    kw<\"SENAO\">\n    kw<\"NAO\">\n    kw<\"CONTENHA\">\n    kw<\"OU\">\n    kw<\"E\">\n}\n\nkw<term> { @specialize[@name={term}]<identifier, term> }\n\n@detectDelim\n`;\n","export enum EnumTypeOrder {\n    // Tipo de ordenação - Crescente\n    ASC = \"ASC\",\n    // Tipo de ordenação - Decrescente\n    DESC = \"DESC\"\n}\n","export enum MetaType {\n    // Entity\n    ENTITY = \"ENTITY\",\n    // String\n    STRING = \"STRING\",\n    // Integer\n    INTEGER = \"INTEGER\",\n    // Double\n    DOUBLE = \"DOUBLE\",\n    // Long\n    LONG = \"LONG\",\n    // BigDecimal\n    BIGDECIMAL = \"BIGDECIMAL\",\n    // UUID\n    UUID = \"UUID\",\n    // Date\n    DATE = \"DATE\",\n    // DateTime\n    DATETIME = \"DATETIME\",\n    // DateTime\n    LOCALDATETIME = \"LOCALDATETIME\",\n    // Time\n    TIME = \"TIME\",\n    // Boolean\n    BOOLEAN = \"BOOLEAN\",\n    // List\n    LIST = \"LIST\",\n    // Enum\n    ENUM = \"ENUM\",\n    // CustomExpression\n    CUSTOM_EXPRESSION = \"CUSTOM_EXPRESSION\",\n    // PublicExpression\n    PUBLIC_EXPRESSION = \"PUBLIC_EXPRESSION\"\n}\n","export enum RequestTypes {\n    ListContextMetadataById,\n    ListBlobMetadata,\n    ListExpressionMetadata,\n    ListFacadeMetadataNames,\n    GetFacadeMetadataByPath,\n}\n","export enum CompletionTypes {\n    Keyword = \"keyword\",\n    Context = \"context\",\n    Expression = \"expression\",\n    UserExpression = \"userExpression\",\n    Entity = \"entity\",\n    FinalValue = \"finalValue\"\n}\n","export enum Keywords {\n    SE = \"SE\",\n    SENAO = \"SENAO\",\n    CONTENHA = \"CONTENHA\",\n    ENTAO = \"ENTAO\",\n    FIM_SE = \"FIM_SE\",\n    NAO = \"NAO\",\n    E = \"E\",\n    OU = \"OU\"\n}\n","/* Interfaces */\nexport * from \"./interfaces/tax-calculation-configs\";\nexport * from \"./interfaces/fields-order-by\";\nexport * from \"./interfaces/rec-page-request\";\nexport * from \"./interfaces/list-facade-metadata-names\";\nexport * from \"./interfaces/facade-metadata-name\";\nexport * from \"./interfaces/rec-front-context-metadata\";\nexport * from \"./interfaces/list-context-metadata-by-id\";\nexport * from \"./interfaces/rec-expression-metadata\";\nexport * from \"./interfaces/list-expression-metadata\";\nexport * from \"./interfaces/rec-front-field-metadata\";\nexport * from \"./interfaces/rec-front-facade-metadata\";\nexport * from \"./interfaces/get-facade-metadata-by-path\";\nexport * from \"./interfaces/safe-http-communication\";\nexport * from \"./interfaces/completion-Item\";\n\n/* Enums */\nexport * from \"./enums/enum-type-order\";\nexport * from \"./enums/meta-type\";\nexport * from \"./enums/request-types\";\nexport * from \"./enums/completion-types\";\nexport * from \"./enums/keywords\";\n","import { LRLanguage } from \"@codemirror/language\";\nimport { buildParser } from \"@lezer/generator\";\nimport {\n    styleTags,\n    tags\n} from \"@codemirror/highlight\";\n\nimport parserGrammar from \"./grammar\";\nimport { Keywords } from \"../../models\";\n\nexport const baseConfigs = LRLanguage.define({\n    parser:  buildParser(parserGrammar)\n        .configure({\n            props: [\n                styleTags({\n                    [Object.values(Keywords).join(\" \")]: tags.keyword,\n                    \"String\": tags.string,\n                    \"Number\": tags.number,\n                })\n            ]\n        })\n});\n","/**\n * Formats a JSON response to a JS object\n * @param response The response to format\n * @returns A JS object based on the response's body\n */\nexport async function formatJsonResponse(response: Response): Promise<any> {\n    return response.json();\n}\n","/**\n * Formats a Blob response to a JS object\n * @param response The response to format\n * @returns A JS object based on the response's body\n */\nexport async function formatBlobResponse(response: Response): Promise<any> {\n    const textResponse = await (await response.blob()).text();\n    return JSON.parse(textResponse);\n}\n","import {\n    service,\n    user\n} from \"@seniorsistemas/senior-platform-data\";\n\nimport {\n    formatJsonResponse,\n    formatBlobResponse\n} from \"./json-response-formatters\";\n\n/**\n * Custom HttpClient for cases when is not possible to use the Angular's HttpClient\n */\nexport class CustomHttpClient {\n\n    private static readonly _responseFormatterMap: Map<string, (response: Response) => Promise<any>> = new Map([\n        [\"application/json\", formatJsonResponse],\n        [\"application/octet-stream\", formatBlobResponse]\n    ]);\n\n    /**\n     * Executes a Http Get\n     * @param url Url to execute the Get on\n     * @param init Optional additional configs\n     * @returns Whether a Promise<T> on request success or an error in request fail\n     */\n    public static async GET<T>(url: string, init: RequestInit = {}): Promise<T> {\n        const response = await this.interceptRequest(url, {\n            ...init,\n            method: \"GET\"\n        });\n\n        return this.formatResponse<T>(response);\n    }\n\n    /**\n     * Executes a Http Post\n     * @param url Url to execute the Post on\n     * @param body Info to send to server on Post\n     * @param init Optional additional configs\n     * @returns Whether a Promise<T> on request success or an error in request fail\n     */\n    public static async POST<T>(url: string, body: any, init: RequestInit = {}): Promise<T> {\n        const headers = new Headers(init.headers);\n        headers.append(\"Content-Type\", \"application/json\");\n        headers.append(\"Accept\", \"application/json\");\n\n        const response = await this.interceptRequest(url, {\n            ...init,\n            method: \"POST\",\n            body: JSON.stringify(body),\n            headers,\n        });\n\n        return this.formatResponse<T>(response);\n    }\n\n    /**\n     * Intercepts the original request to add a required header for Senior in case of a internal request\n     * @param url Url from the original request\n     * @param originalReq Configs from the original request\n     * @returns Whether a Promise<Response> if the request was made successfully or an error\n     */\n    private static async interceptRequest(url: string, originalReq: RequestInit = {}): Promise<Response> {\n        try {\n            if (!url.includes(\"://\")) {\n                const restUrl = await service.getRestUrl();\n                const authHeader = await user.getAuthHeader();\n\n                const headers = new Headers(originalReq.headers);\n                headers.append(\"Authorization\", authHeader);\n\n                const request = new Request(\n                    restUrl + url,\n                    {\n                        ...originalReq,\n                        headers\n                    }\n                );\n                return fetch(request);\n            }\n\n            return fetch(url, originalReq);\n\n        } catch (err) {\n            throw new Error(`Error fetching requested URL: ${err}`);\n        }\n    }\n\n    /**\n     * Formats the request response to an object<T> or {}\n     * @param response The response to be formatted\n     * @returns Whether a Promise<T> if the response status is in the range 200-299 an error\n     */\n    private static async formatResponse<T>(response: Response): Promise<T> {\n        const contentType = response.headers.get(\"content-type\");\n        const formatter = CustomHttpClient._responseFormatterMap.get(contentType as string);\n        const formattedContentType = formatter ? await formatter(response) : {};\n\n        if (response.ok) return formattedContentType as unknown as T;\n        throw new Error(JSON.stringify(formattedContentType));\n    }\n}\n","import { HostProjectConfigs } from \"@seniorsistemas/angular-components/common\";\nimport { Translations } from \"./models\";\n\n/**\n * Custom translator for cases when is not possible to use the \"TranslateService\" from \"@ngx-translate/core\"\n */\nexport class CustomTranslationsService {\n\n    private static _translations: Translations = {};\n    private static _TRANSLATION_PREFIX = \"\";\n\n    /**\n     * Method used to get the translation for an key based on the host project's translations. Always use the first available language\n     * @param key Key used to search the translation\n     * @returns The translation for the informed key or the key in case there is no translation\n     */\n    public static translate(key: string): string {\n        if (key === undefined || key === null) {\n            return '';\n        }\n        const translationKey = `${CustomTranslationsService._TRANSLATION_PREFIX}${key}`;\n        const firstLanguageTranslations = Object.values(CustomTranslationsService._translations)[0] ?? {};\n        return firstLanguageTranslations[translationKey] ?? translationKey;\n    }\n\n    /**\n     * Method used to set the translations that will be used as base when calling the \"translate\" method\n     * @param translations Translations to use as base\n     */\n    public static setTranslations(translations: Translations): void {\n        CustomTranslationsService._translations = translations ?? {};\n    }\n\n    /**\n     * Method used to set the prefix that will be used when calling the \"translate\" method\n     * @param hostProjectConfigs The host project's configs used to create the prefix\n     */\n    public static setTranslationsPrefix(hostProjectConfigs: HostProjectConfigs): void {\n        const { domain, service } = hostProjectConfigs ?? {};\n        const prefix = `${domain}.${service}.`;\n        CustomTranslationsService._TRANSLATION_PREFIX = prefix;\n    }\n}\n","import { NgModule, inject } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\n\nimport { CustomTranslationsService } from \"./index\";\nimport { HostProjectConfigs, HostProjectConfigsInjectionToken } from \"@seniorsistemas/angular-components/common\";\n\n/**\n * Responsible for setting up the translations that will be used by the \"CustomTranslationsService\".\n * Uses the host project's translations set by using the \"TranslationsModule\" from \"@seniorsistemas/platform-components\"\n */\n@NgModule()\nexport class CustomTranslationsModule {\n    private readonly translate = inject(TranslateService);\n    private readonly hostProjectConfigs = inject<HostProjectConfigs>(HostProjectConfigsInjectionToken);\n\n\n    constructor() {\n        this.factoryTranslations(this.translate, this.hostProjectConfigs);\n    }\n\n    private factoryTranslations(translate: TranslateService, hostProjectConfigs: HostProjectConfigs): void {\n        CustomTranslationsService.setTranslations(translate.translations);\n        CustomTranslationsService.setTranslationsPrefix(hostProjectConfigs);\n    }\n}\n","export enum MarkerSeverity {\n    Error,\n    Info,\n    Warning\n}\n","/* Interfaces */\nexport * from \"./interfaces/marker\";\n\n/* Enums */\nexport * from \"./enums/marker-severity\";\n","import { Diagnostic } from \"@codemirror/lint\";\n\nimport { DiagnosticSeverity } from \"../models\";\nimport {\n    Marker,\n    MarkerSeverity\n} from \"../../../../core/models\";\n\nconst diagnosticSeverityInMarkerSeverityMap: Map<number, DiagnosticSeverity> = new Map([\n    [MarkerSeverity.Error, \"error\"],\n    [MarkerSeverity.Info, \"info\"],\n    [MarkerSeverity.Warning, \"warning\"]\n]);\n\nexport function convertMarkersToDiagnostics(markers: Marker[], textLength: number): Diagnostic[] {\n    return markers.map(marker => ({\n        from: marker.start || 0,\n        to: marker.end || textLength,\n        message: marker.message ?? \"\",\n        severity: diagnosticSeverityInMarkerSeverityMap.get(marker.severity) ?? \"error\"\n    }));\n}\n","export function isCurrentPositionInsideString(stringBeforeCurrentPosition: string): boolean {\n    const doubleQuotesQuantity = stringBeforeCurrentPosition.match(/\"/g)?.length || 0;\n    return doubleQuotesQuantity % 2 !== 0;\n}\n","import { CustomHttpClient } from \"../../../../../../utils\";\nimport {\n    ListContextMetadataByIdRequest,\n    ListContextMetadataByIdResponse,\n    ListExpressionMetadataRequest,\n    ListExpressionMetadataResponse,\n    ListFacadeMetadataNamesRequest,\n    ListFacadeMetadataNamesResponse,\n    GetFacadeMetadataByPathRequest,\n    GetFacadeMetadataByPathResponse,\n} from \"../../models\";\n\nexport class AutocompleteService {\n    private static BASE_URL = \"platform/rule_metadata\";\n\n    public static async listContextMetadataById(request: ListContextMetadataByIdRequest, abortSignal: AbortSignal): Promise<ListContextMetadataByIdResponse> {\n        return CustomHttpClient.POST<ListContextMetadataByIdResponse>(\n            `${AutocompleteService.BASE_URL}/queries/listContextMetadataById`,\n            request,\n            {\n                signal: abortSignal\n            }\n        );\n    }\n\n    public static async listExpressionMetadata(request: ListExpressionMetadataRequest, abortSignal: AbortSignal): Promise<ListExpressionMetadataResponse> {\n        return CustomHttpClient.POST<ListExpressionMetadataResponse>(\n            `${AutocompleteService.BASE_URL}/queries/listExpressionMetadata`,\n            request,\n            {\n                signal: abortSignal\n            }\n        );\n    }\n\n    public static async listFacadeMetadataNames(request: ListFacadeMetadataNamesRequest, abortSignal: AbortSignal): Promise<ListFacadeMetadataNamesResponse> {\n        return CustomHttpClient.POST<ListFacadeMetadataNamesResponse>(\n            `${AutocompleteService.BASE_URL}/queries/listFacadeMetadataNames`,\n            request,\n            {\n                signal: abortSignal\n            }\n        );\n    }\n\n    public static async getFacadeMetadataByPath(request: GetFacadeMetadataByPathRequest, abortSignal: AbortSignal): Promise<GetFacadeMetadataByPathResponse> {\n        return CustomHttpClient.POST<GetFacadeMetadataByPathResponse>(\n            `${AutocompleteService.BASE_URL}/queries/getFacadeMetadataByPath`,\n            request,\n            {\n                signal: abortSignal\n            }\n        );\n    }\n}\n","import { Extension } from \"@codemirror/state\";\nimport { EditorView } from \"@codemirror/view\";\n\n/**\n * Adds style to autocomplete's state-wrapper\n * @returns An extension containing the style\n */\nexport function style(): Extension {\n    return EditorView.theme({\n        \".s-code-editor-taxCalculation-autocomplete-ul\": {\n            \"padding\": \".75rem !important\",\n        },\n\n        \".s-code-editor-taxCalculation-autocomplete-li\": {\n            cursor: \"default !important\",\n            \"line-height\": \"1.375em !important\",\n        },\n    });\n}\n","import {\n    EditorState,\n    Extension,\n    StateField\n} from '@codemirror/state';\nimport { showTooltip, Tooltip } from '@codemirror/tooltip';\n\nimport { CodeMirror6Core } from '../../../../../../codemirror-6-core';\nimport { style } from './autocomplete-state-wrapper-style';\n\nlet htmlElementToBeWrapped: HTMLElement | null = null;\n\n/**\n * Adds a view updates's listener that creates an state over the autocomplete\n * @returns An extension containing everything needed to listen the updates and create the autocomplete's state\n */\nexport function autocompleteStateWrapper(): Extension {\n    return [\n        autocompleteStateWrapperStateField(),\n        style()\n    ];\n}\n\n/**\n * Shows a state on a non-clickable autocomplete item's format with an HTMLElement inside\n * @param element The HTMLElement to show inside the state\n */\nexport function showAutocompleteStateWrapper(element: HTMLElement): void {\n    htmlElementToBeWrapped = element;\n    CodeMirror6Core.updateEditorView();\n}\n\n/**\n * Removes a possible showed autocomplete state\n */\nexport function hideAutocompleteStateWrapper(): void {\n    htmlElementToBeWrapped = null;\n    CodeMirror6Core.updateEditorView();\n}\n\n/*\n * Creates and returns a StateField responsible for listening the view's change and to add the autocomplete\n * state's wrapper\n */\nfunction autocompleteStateWrapperStateField(): StateField<Tooltip> {\n    return StateField.define({\n        create: getAutocompleteStateWrapper,\n        update(_, transaction) {\n            return getAutocompleteStateWrapper(transaction.state);\n        },\n        provide(field: any) {\n            return showTooltip.compute(\n                [field],\n                state => state.field(field),\n            );\n        }\n    });\n}\n\n/*\n * Function responsible for creating the state's wrapper and returning the same as a Tooltip from \"@codemirror/tooltip\";\n * Only creates the Tooltip if the theres is element on the \"htmlElementToBeWrapped\" variable;\n * The same will also be removed when any view update is emitted;\n */\nfunction getAutocompleteStateWrapper(state: EditorState): Tooltip | undefined {\n    if (!htmlElementToBeWrapped) {\n        return undefined;\n    }\n\n    const htmlElementToBeWrappedString = htmlElementToBeWrapped.outerHTML;\n    const stateWrapper: Tooltip = {\n        pos: state.selection.ranges[0].head,\n        create: () => ({ dom: getAutocompleteStateWrapperDomElement(htmlElementToBeWrappedString) })\n    };\n\n    htmlElementToBeWrapped = null;\n    return stateWrapper;\n}\n\nfunction getAutocompleteStateWrapperDomElement(elementToBeWrappedString: string): HTMLElement {\n    const wrapperDiv = document.createElement('div');\n    wrapperDiv.className = 'cm-tooltip-autocomplete cm-tooltip';\n    wrapperDiv.innerHTML =\n        `\n        <ul class=\"s-code-editor-taxCalculation-autocomplete-ul\">\n            <li class=\"s-code-editor-taxCalculation-autocomplete-li\">\n                ${elementToBeWrappedString}\n            </li>\n        </ul>\n\n    `;\n\n    return wrapperDiv;\n}\n","import { Extension } from \"@codemirror/state\";\n\nimport { CustomTranslationsService } from \"../../../../../../../utils\";\nimport { autocompleteStateWrapper, showAutocompleteStateWrapper } from \"./autocomplete-state-wrapper/autocomplete-state-wrapper\";\n\nlet autocompleteLoadingStateHTMLElement!: HTMLElement;\n\n/**\n * Adds a loading-state over the autocomplete\n * @returns An extension containing everything needed to add the loading-state\n */\nexport function autocompleteLoadingState(): Extension {\n    return [autocompleteStateWrapper()];\n}\n\n/**\n * Activates the loading state on the autocomplete\n */\n/*\n * Must set the \"autocompleteLoadingStateHTMLElement\" here for when the document is loaded we do not have\n * yet the \"CustomTranslationsService\" ready\n */\nexport function showAutocompleteLoadingState(): void {\n    if (!autocompleteLoadingStateHTMLElement) {\n        autocompleteLoadingStateHTMLElement = getAutocompleteLoadingStateHTMLElement();\n    }\n\n    showAutocompleteStateWrapper(autocompleteLoadingStateHTMLElement);\n}\n\nfunction getAutocompleteLoadingStateHTMLElement(): HTMLElement {\n    const loadingStateSpanWrapper = document.createElement(\"span\");\n    loadingStateSpanWrapper.innerText = CustomTranslationsService.translate(\"core_language_tax_calculation_fetching_suggestions\");\n\n    return loadingStateSpanWrapper;\n}\n","import { Extension } from \"@codemirror/state\";\n\nimport { CustomTranslationsService } from \"../../../../../../../utils\";\nimport { autocompleteStateWrapper, showAutocompleteStateWrapper } from \"./autocomplete-state-wrapper/autocomplete-state-wrapper\";\n\nlet autocompleteEmptyStateHTMLElement!: HTMLElement;\n\n/**\n * Adds an empty-state over the autocomplete\n * @returns An extension containing everything needed to add the empty-state\n */\nexport function autocompleteEmptyState(): Extension {\n    return [autocompleteStateWrapper()];\n}\n\n/**\n * Activates the empty-state on the autocomplete\n */\n/*\n * Must set the \"autocompleteEmptyStateHTMLElement\" here for when the document is loaded we do not have\n * yet the \"CustomTranslationsService\" ready\n */\nexport function showAutocompleteEmptyState(): void {\n    if (!autocompleteEmptyStateHTMLElement) {\n        autocompleteEmptyStateHTMLElement = getAutocompleteEmptyStateHTMLElement();\n    }\n\n    showAutocompleteStateWrapper(autocompleteEmptyStateHTMLElement);\n}\n\nfunction getAutocompleteEmptyStateHTMLElement(): HTMLElement {\n    const emptyStateSpanWrapper = document.createElement(\"span\");\n    emptyStateSpanWrapper.innerText = CustomTranslationsService.translate(\"core_language_tax_calculation_no_suggestions\");\n\n    return emptyStateSpanWrapper;\n}\n","import { TaxCalculationConfigs } from \"./models\";\n\nexport * from \"./models/interfaces/tax-calculation-configs\";\n\nexport class TaxCalculationLanguageConfigs {\n\n    private static CONFIGS: TaxCalculationConfigs = { contexts: [] };\n\n    public static setConfigs(configs: TaxCalculationConfigs): void {\n        TaxCalculationLanguageConfigs.CONFIGS = JSON.parse(JSON.stringify(configs));\n    }\n\n    public static getConfigs(): TaxCalculationConfigs {\n        return TaxCalculationLanguageConfigs.CONFIGS;\n    }\n}\n","import { TaxCalculationConfigs } from \"../models\";\nimport { TaxCalculationLanguageConfigs } from \"../tax-calculation-language-configs\";\n\n/**\n * Gets the configs for the TaxCalculationLanguage\n * @returns The configs\n */\nexport function getLanguageConfigs(): TaxCalculationConfigs {\n    const configs = TaxCalculationLanguageConfigs.getConfigs();\n    if (!configs.contexts?.length) throw new Error(\n        \"In order to use the TaxCalculation Language's autocomplete, \"\n        + \"one must inform at least one context by using the \"\n        + \"'TaxCalculationLanguageConfigs.setConfigs()'\"\n    );\n    return configs;\n}\n","import {\n    SafeRequest,\n    Response\n} from '../models';\n\n/**\n * Wraps the request to return the same with an identification or undefined in case of error, so the promise will\n * always trigger the \"then\"\n * @param request Request to wrap\n * @returns The typed request's response\n */\nexport async function getSafeResponse(request: SafeRequest): Promise<Response | undefined> {\n    try {\n        return {\n            ...request,\n            response: await request.request\n        };\n    } catch (_) {\n        return undefined;\n    }\n}\n","import { Extension } from \"@codemirror/state\";\nimport { EditorView } from \"@codemirror/view\";\n\n/**\n * Adds style to the autocomplete\n * @returns An extension containing the style\n */\nexport function style(): Extension {\n    return EditorView.theme({\n        \".cm-completionIcon\": {\n            \"font-family\": \"'Font Awesome 5 Pro'\",\n            \"font-weight\": \"900\",\n        },\n\n        \".cm-completionIcon-keyword::after\": {\n            \"content\": getIconBasedOnUnicode(\"f084\"),\n        },\n\n        \".cm-completionIcon-context::after\": {\n            \"content\": getIconBasedOnUnicode(\"f466\"),\n        },\n\n        \".cm-completionIcon-expression::after\": {\n            \"content\": getIconBasedOnUnicode(\"f505\"),\n        },\n\n        \".cm-completionIcon-userExpression::after\": {\n            \"content\": getIconBasedOnUnicode(\"f4ff\"),\n        },\n\n        \".cm-completionIcon-entity::after\": {\n            \"content\": getIconBasedOnUnicode(\"f126\"),\n        },\n\n        \".cm-completionIcon-finalValue::after\": {\n            \"content\": getIconBasedOnUnicode(\"f192\"),\n        },\n    });\n}\n\nfunction getIconBasedOnUnicode(unicode: string): string {\n    return `\"\\\\${unicode}\"`;\n}\n","import { Extension } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\nimport {\n    autocompletion,\n    Completion,\n    CompletionContext,\n    CompletionResult,\n    pickedCompletion,\n    startCompletion,\n} from '@codemirror/autocomplete';\n\nimport { CustomTranslationsService } from '../../../../../../utils';\nimport { CodeMirror6Core } from '../../../../codemirror-6-core';\nimport { isCurrentPositionInsideString } from '../../../../utils';\nimport { AutocompleteService } from './autocomplete.service';\nimport {\n    autocompleteLoadingState,\n    showAutocompleteLoadingState,\n    autocompleteEmptyState,\n    showAutocompleteEmptyState,\n} from './autocomplete-states';\nimport {\n    TaxCalculationConfigs,\n    RequestTypes,\n    Response,\n    SafeRequest,\n    SafeResponse,\n    ListContextMetadataByIdResponse,\n    CompletionTypes,\n    ListExpressionMetadataResponse,\n    MetaType,\n    GetFacadeMetadataByPathResponse,\n    ListFacadeMetadataNamesResponse,\n    Keywords,\n} from '../../models';\nimport { getLanguageConfigs, getSafeResponse } from '../../utils';\nimport { style } from './autocomplete-style';\n\n/**\n * Adds an autocomplete to the editor\n * @returns An extension containing everything needed to create the autocomplete\n */\nexport function autocomplete(): Extension {\n    return [\n        autocompletion({ override: [getCompletionResults] }),\n        autocompleteLoadingState(),\n        autocompleteEmptyState(),\n        style(),\n    ];\n}\n\nconst TRANSLATION_PREFIX = 'core_language_tax_calculation';\nlet completionResults!: CompletionResult;\n\n/*\n * A function to be called when a key is pressed, the ctrl+space is triggered or when the search for\n * completionResults is done.\n * If there is a completionResult, returns it, otherwise starts a new async search.\n * Will only execute the autocompletion if the current cursor position is not inside a string\n */\nfunction getCompletionResults(context: CompletionContext): CompletionResult | null {\n    const isCursorInsideString = isCurrentPositionInsideString(context.state.doc.toString().substring(0, context.pos));\n    if (isCursorInsideString) {\n        return null;\n    };\n\n    if (completionResults) {\n        const finalCompletionResults: CompletionResult = { ...completionResults };\n        const codeLength = context.state.doc.toString().length;\n        finalCompletionResults.from = finalCompletionResults.from > codeLength ? codeLength : finalCompletionResults.from;\n        completionResults = null as unknown as CompletionResult;\n        return finalCompletionResults;\n    }\n    startCompletionResultsSearch(context);\n    return null;\n}\n\nlet cancelLastCompletionSearch: () => void = () => { };\nlet codeMirrorViewElement!: HTMLElement;\n\n/*\n * Starts a new completionResults's async search.\n * Avoids the last search to be finished by calling the \"cancelLastCompletionSearch\" callback function\n */\nfunction startCompletionResultsSearch(context: CompletionContext): void {\n    const token = new AbortController();\n    setTimeout(() => {\n        if (!token.signal.aborted) {\n            showAutocompleteLoadingState();\n            searchCompletionResults(context, token);\n        }\n    }, 500);\n\n    /*\n     * IMPORTANT: The following lines MUST be the way they are!\n     * Here is being add the listener to any keydown/click event so when any key is downed or mouse clicked, we cancel\n     * the last request.\n     * We do this to not show to the user a completionItem in an incorrect place of text, that can be done by either\n     * pressing the * arrows, home, end, backspace and etc. The flow is:\n     * 1. We add an eventListener to keydown/click when the autocompletion's request is triggered;\n     * 2. When any key/click is pressed, we remove the listener and cancel the last request by changing the\n     * isSearchCanceled on token object to true;\n     * 3. If any key that requires autocompletion is triggered, the flow repeats;\n     */\n    codeMirrorViewElement = CodeMirror6Core.getEditorView().contentDOM;\n\n    cancelLastCompletionSearch = () => {\n        codeMirrorViewElement.removeEventListener('keydown', cancelLastCompletionSearch);\n        codeMirrorViewElement.removeEventListener('click', cancelLastCompletionSearch);\n        token.abort();\n    };\n\n    codeMirrorViewElement.addEventListener('keydown', cancelLastCompletionSearch);\n    codeMirrorViewElement.addEventListener('click', cancelLastCompletionSearch);\n}\n\n/*\n * Requests the necessary items to fill the completionResults, although it only really opens the autocomplete\n * box (by calling the \"startCompletion()\", that calls the \"getCompletionResults\") if the current search\n * was not cancelled by a new one\n */\nasync function searchCompletionResults(context: CompletionContext, token: AbortController): Promise<void> {\n    const codeBeforeCursor = context?.state?.doc?.toString().substring(0, context?.pos ?? 0) ?? '';\n    const filter = getFilter(codeBeforeCursor);\n    const path = getPath(codeBeforeCursor, filter.length);\n    const requests: SafeResponse[] = getRequestsBasedOnPath(path, filter, token.signal);\n\n    Promise.all(requests).then((responses) => {\n        if (!token.signal.aborted) {\n            const completions = ([] as Completion[]).concat(\n                getKeywordsCompletions(path),\n                getContextsCompletions(responses as Response[]),\n                getExpressionsCompletions(responses as Response[]),\n                getEntitiesCompletions(responses as Response[]),\n            );\n            const filteredCompletions: Completion[] = getFilteredCompletions(completions, filter);\n\n            if (filteredCompletions.length) {\n                const formattedCompletions: Completion[] = getFormattedCompletions(filteredCompletions, filter);\n                const sortedCompletions: Completion[] = getSortedCompletions(formattedCompletions);\n\n                completionResults = {\n                    from: context.pos,\n                    filter: false,\n                    options: sortedCompletions,\n                };\n                startCompletion(CodeMirror6Core.getEditorView());\n            } else {\n                showAutocompleteEmptyState();\n            }\n        }\n    });\n}\n\n/*\n * Returns the filter in the code written.\n * For example in the code \"controladoria.empresa\", \"empresa\" would be the filter\n * and in \"controladoria\", \"controladoria\" would be the filter.\n * Allows only alphanumerics, underscore and hashtag on filter's start.\n * Does not allow spaces\n */\nfunction getFilter(string: string): string {\n    if (string === undefined || string === null) {\n        return '';\n    }\n\n    const regex = /(#|\\.|)\\w*$/;\n    const match = regex.exec(string);\n    const filter = match ? match[0] : '';\n    return filter.replace('.', '').trim();\n}\n\n/*\n * Returns the path in the code written based on filter.\n * For example in the code \"controladoria.empresa\", \"controladoria\" would be the path\n * and in \"controladoria\", \"\" would be the path.\n * Does not allow spaces\n */\nfunction getPath(string: string, filterLength: number): string {\n    if (string === undefined || string === null) {\n        return '';\n    }\n\n    const stringWithoutPath = string.substring(0, string.length - filterLength);\n    const regex = /(\\w*\\.)*$/;\n    const match = regex.exec(stringWithoutPath);\n    const path = match ? match[0] : '';\n    return path.replace(/\\.$/, '');\n}\n\nfunction getRequestsBasedOnPath(path: string, filter: string, abortSignal: AbortSignal): SafeResponse[] {\n    const languageConfigs: TaxCalculationConfigs = getLanguageConfigs();\n    const requests: SafeRequest[] = [];\n\n    if (path === '') {\n        requests.push({\n            requestType: RequestTypes.ListContextMetadataById,\n            request: AutocompleteService.listContextMetadataById(\n                {\n                    id: languageConfigs.contexts,\n                },\n                abortSignal,\n            ),\n        });\n        requests.push({\n            requestType: RequestTypes.ListExpressionMetadata,\n            request: AutocompleteService.listExpressionMetadata(\n                {\n                    context: languageConfigs.contexts,\n                    subcontext: languageConfigs.subContexts ?? [],\n                    name: filter,\n                    pageRequest: {\n                        offset: 0,\n                        size: 20,\n                    },\n                },\n                abortSignal,\n            ),\n        });\n    } else if (path.includes('.')) {\n        const splittedPath = path.split('.');\n        requests.push({\n            requestType: RequestTypes.GetFacadeMetadataByPath,\n            request: AutocompleteService.getFacadeMetadataByPath(\n                {\n                    context: splittedPath[0],\n                    entityName: splittedPath[1],\n                    fields: splittedPath[2] === undefined ? undefined : splittedPath.slice(2),\n                },\n                abortSignal,\n            ),\n        });\n    } else {\n        requests.push({\n            requestType: RequestTypes.ListFacadeMetadataNames,\n            request: AutocompleteService.listFacadeMetadataNames(\n                {\n                    context: [path],\n                    name: filter,\n                    pageRequest: {\n                        offset: 0,\n                        size: 30,\n                    },\n                },\n                abortSignal,\n            ),\n        });\n    }\n\n    return requests.map((request) => getSafeResponse(request)) as SafeResponse[];\n}\n\nfunction getKeywordsCompletions(path: string): Completion[] {\n    if (path !== '') {\n        return [];\n    }\n\n    const completions = [\n        {\n            label: Keywords.SE,\n            apply: 'SE ()\\nENTAO\\n\\tacao\\nFIM_SE',\n        },\n        {\n            label: Keywords.SENAO,\n            apply: 'SENAO\\n\\tacao',\n        },\n        {\n            label: Keywords.CONTENHA,\n            apply: 'CONTENHA(condicao)',\n        },\n        {\n            label: Keywords.ENTAO,\n            apply: 'ENTAO\\n\\tacao',\n        },\n        {\n            label: Keywords.FIM_SE,\n            apply: 'FIM_SE ',\n        },\n        {\n            label: Keywords.NAO,\n            apply: 'NAO ',\n        },\n        {\n            label: Keywords.E,\n            apply: 'E ',\n        },\n        {\n            label: Keywords.OU,\n            apply: 'OU ',\n        },\n    ];\n\n    return completions.map((completionItem) => ({\n        ...completionItem,\n        detail: CustomTranslationsService.translate(`${TRANSLATION_PREFIX}_keyword`),\n        type: CompletionTypes.Keyword,\n    }));\n}\n\nfunction getContextsCompletions(responses: Response[] = []): Completion[] {\n    const contextsResponse: Response<ListContextMetadataByIdResponse> | undefined = responses.find(\n        (response) => response?.requestType === RequestTypes.ListContextMetadataById,\n    );\n\n    if (contextsResponse) {\n        return (contextsResponse.response?.contextMetadata ?? []).map((contextMetadata) => ({\n            label: contextMetadata.name,\n            detail: CustomTranslationsService.translate(`${TRANSLATION_PREFIX}_context`),\n            apply: contextMetadata.name,\n            type: CompletionTypes.Context,\n        }));\n    }\n\n    return [];\n}\n\nfunction getExpressionsCompletions(responses: Response[] = []): Completion[] {\n    const expressionsResponse: Response<ListExpressionMetadataResponse> | undefined = responses.find(\n        (response) => response?.requestType === RequestTypes.ListExpressionMetadata,\n    );\n\n    if (expressionsResponse) {\n        return (expressionsResponse.response?.expressionMetadata ?? []).map((expressionMetadata) => ({\n            label: expressionMetadata.name,\n            detail: CustomTranslationsService.translate(\n                `${TRANSLATION_PREFIX}_${expressionMetadata.type === MetaType.PUBLIC_EXPRESSION ? 'senior_expression' : 'user_expression'\n                }`,\n            ),\n            apply: expressionMetadata.name,\n            info: expressionMetadata.description,\n            type:\n                expressionMetadata.type === MetaType.PUBLIC_EXPRESSION\n                    ? CompletionTypes.Expression\n                    : CompletionTypes.UserExpression,\n        }));\n    }\n\n    return [];\n}\n\nfunction getEntitiesCompletions(responses: Response[] = []): Completion[] {\n    const facadesResponseFromList: Response<ListFacadeMetadataNamesResponse> | undefined = responses.find(\n        (response) => response?.requestType === RequestTypes.ListFacadeMetadataNames,\n    );\n\n    if (facadesResponseFromList) {\n        return (facadesResponseFromList.response?.facadeMetadataNames ?? []).map((facade) => ({\n            label: facade.name,\n            detail: CustomTranslationsService.translate(`${TRANSLATION_PREFIX}_entity`),\n            apply: facade.name,\n            type: CompletionTypes.Entity,\n        }));\n    }\n\n    const facadesResponseFromGet: Response<GetFacadeMetadataByPathResponse> | undefined = responses.find(\n        (response) => response?.requestType === RequestTypes.GetFacadeMetadataByPath,\n    );\n\n    if (facadesResponseFromGet) {\n        return (facadesResponseFromGet.response?.facadeMetadata?.fields ?? []).map((facade) => ({\n            label: facade.name,\n            detail: CustomTranslationsService.translate(\n                `${TRANSLATION_PREFIX}_${facade.type === MetaType.ENTITY ? 'entity' : 'field'}`,\n            ),\n            apply: facade.name,\n            type: facade.type === MetaType.ENTITY ? CompletionTypes.Entity : CompletionTypes.FinalValue,\n        }));\n    }\n\n    return [];\n}\n\n/*\n * Filtering the completions to only deal with the necessary items\n */\nfunction getFilteredCompletions(completions: Completion[], filter: string): Completion[] {\n    return completions.filter((completionItem) => completionItem.label.toLowerCase().startsWith(filter.toLowerCase()));\n}\n\n/*\n * Overwriting the completions's apply to remove the entire current written value and apply the the entire\n * completion's apply\n */\nfunction getFormattedCompletions(completions: Completion[], filter: string): Completion[] {\n    return completions.map((completionItem) => ({\n        ...completionItem,\n        apply: getCompletionApply(filter, `${completionItem.apply}`),\n    }));\n}\n\nfunction getCompletionApply(\n    filter: string,\n    oldApplyText: string,\n): (view: EditorView, completion: Completion, from: number, to: number) => void {\n    return (view: EditorView, completion: Completion, from: number, to: number): void => {\n        const newFrom = from - filter.length;\n\n        view.dispatch({\n            changes: {\n                to,\n                from: newFrom,\n                insert: oldApplyText,\n            },\n            selection: {\n                anchor: newFrom + oldApplyText.length,\n            },\n            userEvent: 'input.complete',\n            annotations: pickedCompletion.of(completion),\n        });\n    };\n}\n\nconst completionsSortOrder: CompletionTypes[] = [\n    CompletionTypes.Keyword,\n    CompletionTypes.Context,\n    CompletionTypes.UserExpression,\n    CompletionTypes.Expression,\n    CompletionTypes.Entity,\n    CompletionTypes.FinalValue,\n];\n\n/*\n * Sorts the completions following the \"completionsSortOrder\" priority order\n */\nfunction getSortedCompletions(completions: Completion[]): Completion[] {\n    return completions.sort((x: Completion, y: Completion) => {\n        const xPriority = completionsSortOrder.indexOf(x.type as CompletionTypes);\n        const yPriority = completionsSortOrder.indexOf(y.type as CompletionTypes);\n\n        return xPriority - yPriority;\n    });\n}\n","import { LanguageSupport } from \"@codemirror/language\";\n\nimport { baseConfigs } from \"./extensions/base-configs/base-configs\";\nimport { autocomplete } from \"./extensions/autocomplete/autocomplete\";\n\nexport function TaxCalculation(): LanguageSupport {\n    return new LanguageSupport(\n        baseConfigs,\n        [\n            autocomplete(),\n        ]\n    );\n}\n","import { LanguageSupport, LRLanguage } from \"@codemirror/language\";\nimport { buildParser } from \"@lezer/generator\";\nimport { styleTags, tags } from \"@codemirror/highlight\";\n\nconst jsonGrammar = `\n@top JsonDocument { JsonValue }\n\nJsonValue {\n    JsonObject |\n    JsonArray |\n    JsonString |\n    JsonNumber |\n    JsonBoolean |\n    JsonNull\n}\n\nJsonObject {\n    \"{\" (JsonPair (\",\" JsonPair)*)? \"}\"\n}\n\nJsonPair {\n    JsonString \":\" JsonValue\n}\n\nJsonArray {\n    \"[\" (JsonValue (\",\" JsonValue)*)? \"]\"\n}\n\n@tokens {\n    JsonString { '\"' (![\\\\n\"])* '\"'? }\n    JsonNumber {\n        '-'? std.digit+\n        ('.' std.digit+)?\n        ((\"e\" | \"E\") (\"+\" | \"-\")? std.digit+)?\n    }\n    JsonBoolean { \"true\" | \"false\" }\n    JsonNull { \"null\" }\n    space { $[ \\t\\n\\r]+ }\n    \"{\" \"}\"\n    \"[\" \"]\"\n    \":\" \",\"\n}\n\n@skip { space }\n\n@detectDelim\n`;\n\nconst jsonLanguage = LRLanguage.define({\n    parser: buildParser(jsonGrammar).configure({\n        props: [\n            styleTags({\n                JsonString: tags.string,\n                JsonNumber: tags.number,\n                \"JsonBoolean JsonNull\": tags.keyword,\n                '\"{\"': tags.brace,\n                '\"}\"': tags.brace,\n                '\"[\"': tags.brace,\n                '\"]\"': tags.brace,\n                '\":\"': tags.operator,\n                '\",\"': tags.punctuation,\n            }),\n        ],\n    }),\n});\n\nexport function Json(): LanguageSupport {\n    return new LanguageSupport(jsonLanguage);\n}\n","import { LanguageSupport } from \"@codemirror/language\";\n\nimport { Languages } from \"../../../../models\";\n\n/* Languages */\nimport { TaxCalculation } from \"./tax-calculation/tax-calculation.language\";\nimport { Json } from \"./json/json.language\";\n\ntype LanguageSupportFactory = () => LanguageSupport\n\nexport class EditorLanguages {\n\n    private static _LANGUAGES: Map<Languages, LanguageSupportFactory> = new Map([\n        [Languages.TaxCalculation, TaxCalculation],\n        [Languages.Json, Json]\n    ]);\n\n    public static getLanguage(language: Languages): LanguageSupport {\n        const languageSupportFactory = EditorLanguages._LANGUAGES.get(language);\n        if (languageSupportFactory) return languageSupportFactory();\n        return [] as unknown as LanguageSupport;\n    }\n}\n","import { Extension } from \"@codemirror/state\";\nimport { EditorView } from \"@codemirror/view\";\n\n/**\n * Adds style to the editor in general\n * @returns An extension containing the style\n */\nexport function style(): Extension {\n    return EditorView.theme({\n        \"&.cm-editor.cm-focused\": {\n            outline: \"none\",\n        },\n    });\n}\n","import { HighlightStyle, tags } from \"@codemirror/highlight\";\n\nexport const SDSLightHighlightStyle: HighlightStyle = HighlightStyle.define([\n    {\n        tag: tags.keyword,\n        color: \"#008080\",\n    },\n    {\n        tag: tags.string,\n        color: \"#9C3A3A\",\n    },\n    {\n        tag: tags.number,\n        color: \"#400753\",\n    },\n]);\n","import { Extension } from \"@codemirror/state\";\nimport { EditorView } from \"@codemirror/view\";\n\n/**\n * Adds a vertical scrollbar when the editor's height overflows the parent's height\n * @returns An extension containing everything needed to add the scrollbar\n */\nexport function scrollbars(): Extension {\n    return [\n        style()\n    ];\n}\n\nfunction style() {\n    return EditorView.baseTheme({\n        \"&.cm-editor\": {\n            \"height\": \"100%\"\n        },\n\n    });\n}\n","import { Extension } from \"@codemirror/state\";\nimport { EditorView } from \"@codemirror/view\";\nimport { StyleSpec } from \"style-mod\";\n\n/**\n * Adds style to editor'font\n * @returns An extension containing everything needed to add the font style\n */\nexport function fontStyle(): Extension {\n    return [style()];\n}\n\nconst generalFontStyle: StyleSpec = {\n    \"font-family\": \"'Noto Sans Mono', 'sans-serif'\",\n    \"font-style\": \"normal\",\n    \"font-size\": \"1rem\",\n};\n\nfunction style() {\n    return EditorView.theme({\n        \".cm-scroller\": {\n            ...generalFontStyle,\n            \"letter-spacing\": \"0\",\n            \"line-height\": \"1.5em\",\n            \"font-variation-settings\": \"'wght' 400\",\n            \"color\": \"#333333\",\n        },\n\n        \".cm-tooltip.cm-tooltip-autocomplete > ul\": {\n            ...generalFontStyle,\n            \"font-variation-settings\": \"'wght' 300\",\n            \"color\": \"#697882\",\n        },\n\n        \".cm-tooltip.cm-tooltip-autocomplete > ul .cm-completionLabel\": {\n            \"line-height\": \"1.5em\",\n            \"font-variation-settings\": \"'wght' 500\",\n        },\n\n        \".cm-tooltip.cm-tooltip-autocomplete > ul .cm-completionDetail\": {\n            \"font-size\": \"0.875em\",\n            \"font-style\": \"normal\",\n            \"margin-left\": \"0.75rem\",\n        },\n    });\n}\n","import { lineNumbers } from \"@codemirror/gutter\"\nimport { Extension } from \"@codemirror/state\";\nimport { EditorView } from \"@codemirror/view\";\n\n/**\n * Adds a line counter\n * @returns An extension containing everything needed to add the line counter\n */\nexport function lineCounter(): Extension {\n    return [\n        lineNumbers(),\n        style()\n    ];\n}\n\nfunction style() {\n    return EditorView.theme(\n        {\n            \".cm-gutters\": {\n                \"background-color\": \"#fff\",\n                \"color\": \"#428BCA\",\n                \"border-right\": \"none\"\n            },\n            \".cm-gutter\": {\n                \"padding\": \"0 2rem 0 2rem\"\n            }\n        }\n    );\n}\n","import { Extension } from \"@codemirror/state\";\nimport { EditorView } from \"@codemirror/view\";\n\n/**\n * Adds styles to the autocomplete's tooltip\n * @returns An extension containing everything needed to add the style\n */\nexport function autocompleteTooltip(): Extension {\n    return [style()];\n}\n\nfunction style() {\n    return EditorView.baseTheme({\n        \".cm-tooltip\": {\n            \"border\": \"none !important\",\n            \"border-radius\": \"4px\",\n            \"background-color\": \"#E5EAEA !important\",\n        },\n\n        \".cm-tooltip.cm-tooltip-autocomplete > ul[role='listbox']\": {\n            \"padding\": \"1rem\",\n        },\n\n        \".cm-tooltip.cm-tooltip-autocomplete > ul .cm-completionDetail\": {\n            \"margin-left\": \".75rem\",\n        },\n\n        \".cm-tooltip.cm-tooltip-autocomplete > ul .cm-completionDetail::before\": {\n            \"content\": \"'[ '\",\n        },\n\n        \".cm-tooltip.cm-tooltip-autocomplete > ul .cm-completionDetail::after\": {\n            \"content\": \"' ]'\",\n        },\n\n        \".cm-tooltip.cm-tooltip-autocomplete > ul .cm-completionIcon\": {\n            \"padding-right\": 0,\n            \"margin-right\": \".475rem\",\n            \"width\": \"1rem\",\n        },\n\n        \".cm-tooltip-autocomplete ul li[aria-selected]\": {\n            \"border-radius\": \"4px\",\n            \"background-color\": \"#5D96A2 !important\",\n            \"color\": \"#fff !important\",\n        },\n\n        \".cm-tooltip.cm-completionInfo.cm-completionInfo-right\": {\n            \"border-radius\": \"3px\",\n            \"box-shadow\": \"0 2px 4px -1px rgb(0 0 0 / 20%), 0 4px 5px 0 rgb(0 0 0 / 14%), 0 1px 10px 0 rgb(0 0 0 / 12%)\",\n            \"background\": \"#495057 !important\",\n            \"color\": \"#fff\",\n            \"padding\": \".5rem\",\n            \"left\": \"101.6%\",\n        },\n\n        \".cm-tooltip.cm-completionInfo.cm-completionInfo-right::before\": {\n            \"content\": \"''\",\n            \"position\": \"absolute\",\n            \"width\": 0,\n            \"height\": 0,\n            \"top\": \".8125rem\",\n            \"left\": \"-.25rem\",\n            \"margin-top\": \"-.25rem\",\n            \"border-color\": \"transparent\",\n            \"border-style\": \"solid\",\n            \"border-right-color\": \"#495057\",\n            \"border-width\": \".25rem .25rem .25rem 0\",\n        },\n    });\n}\n","import { EditorTheme } from \"../../models\";\n\n/* General Style */\nimport { style } from \"./sds-light-style\";\n\n/* HighlightStyle */\nimport { SDSLightHighlightStyle } from \"./sds-light-highlight-style\";\n\n/* Theme's Extensions */\nimport { scrollbars } from \"./extensions/scrollbars\";\nimport { fontStyle } from \"./extensions/font-style\";\nimport { lineCounter } from \"./extensions/line-counter\";\nimport { autocompleteTooltip } from \"./extensions/autocomplete-tooltip\";\n\nexport function SDSLight(): EditorTheme {\n    return [\n        [\n            style(),\n            scrollbars(),\n            fontStyle(),\n            lineCounter(),\n            autocompleteTooltip()\n        ], \n        SDSLightHighlightStyle\n    ];\n}\n","import { Themes } from \"../../../../models\";\nimport { EditorTheme } from \"../models\";\n\n/* Themes */\nimport { SDSLight } from \"./sds-light/sds-light-theme\";\n\ntype EditorThemeFactory = () => EditorTheme; \n\nexport class EditorThemes {\n\n    private static _THEMES: Map<Themes, EditorThemeFactory> = new Map([\n        [Themes.SDSLight, SDSLight]\n    ]);\n\n    public static getTheme(theme: Themes): EditorTheme {\n        const EditorThemeFactory = EditorThemes._THEMES.get(theme);\n        if (EditorThemeFactory) return EditorThemeFactory();\n        return [] as unknown as EditorTheme;\n    }\n}\n","import { setDiagnostics } from '@codemirror/lint';\nimport { EditorState, Extension, StateEffect, TransactionSpec } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { CoreFacade } from '../../../core/facades/core-facade';\nimport { Marker } from '../../../core/models';\nimport { EditorOptions, Languages, Themes } from '../../../models';\nimport { EditorLanguages } from './languages/editor-languages';\nimport { EditorThemes } from './themes/editor-themes';\nimport { convertMarkersToDiagnostics } from './utils';\n\nexport class CodeMirror6Core extends CoreFacade {\n    public static readonly $onCompletionItemsUpdate: Subject<string[]> = new Subject();\n    private static readonly _ngUnsubscribe: Subject<void> = new Subject();\n    private static _editorView: EditorView | null = null;\n\n    /* These are necessary for the setCode and setEditorOptions can be called before view has been created */\n    private _codeReceivedBeforeViewCreation = '';\n    private _editorOptionsReceivedBeforeViewCreation: Extension = [];\n\n    constructor() {\n        super();\n    }\n\n    public static getEditorView(): EditorView {\n        return CodeMirror6Core._editorView as EditorView;\n    }\n\n    public static updateEditorView(...transactionSpecs: TransactionSpec[]): void {\n        CodeMirror6Core._editorView?.dispatch(...transactionSpecs);\n    }\n\n    public setCoreWrapperElement(element: HTMLDivElement): void {\n        this.createEditorView(element);\n    }\n\n    public setCode(code: string): void {\n        this.changeEditorContent(code);\n    }\n\n    public initCore(): void {\n        this.setObservablesListeners();\n    }\n\n    public destroyCore(): void {\n        this._codeReceivedBeforeViewCreation = '';\n        CodeMirror6Core._editorView = null;\n        CodeMirror6Core._ngUnsubscribe.next();\n        CodeMirror6Core._ngUnsubscribe.complete();\n    }\n\n    protected setCoreEditorOptions(options: EditorOptions): void {\n        const language = EditorLanguages.getLanguage(options.language as Languages);\n        const theme = EditorThemes.getTheme(options.theme as Themes);\n\n        if (CodeMirror6Core._editorView) {\n            CodeMirror6Core.updateEditorView({\n                effects: StateEffect.reconfigure.of([language, theme, this.getCodeChangeListenerExtension()]),\n            });\n        } else {\n            this._editorOptionsReceivedBeforeViewCreation = [language, theme];\n        }\n    }\n\n    protected highlightCode(markers: Marker[]): void {\n        const diagnostics = convertMarkersToDiagnostics(\n            markers,\n            CodeMirror6Core._editorView?.state.doc.length as number,\n        );\n\n        CodeMirror6Core.updateEditorView(\n            setDiagnostics(CodeMirror6Core._editorView?.state as EditorState, diagnostics),\n        );\n    }\n\n    private setObservablesListeners(): void {\n        CodeMirror6Core.$onCompletionItemsUpdate\n            .pipe(takeUntil(CodeMirror6Core._ngUnsubscribe))\n            .subscribe((items) => this.updateCompletionItems(items));\n    }\n\n    private createEditorView(parentElement: HTMLElement): void {\n        CodeMirror6Core._editorView = new EditorView({\n            parent: parentElement,\n            state: EditorState.create({\n                doc: this._codeReceivedBeforeViewCreation,\n                extensions: [this._editorOptionsReceivedBeforeViewCreation, this.getCodeChangeListenerExtension()],\n            }),\n        });\n\n        this.notifyCoreFinishLoad();\n    }\n\n    private getCodeChangeListenerExtension(): Extension {\n        return EditorView.updateListener.of(\n            (update) => update.docChanged && this.notifyCodeChange(update.state.doc.toString()),\n        );\n    }\n\n    private changeEditorContent(code: string): void {\n        if (CodeMirror6Core._editorView) {\n            CodeMirror6Core.updateEditorView({\n                changes: {\n                    from: 0,\n                    to: CodeMirror6Core._editorView.state.doc.length,\n                    insert: code,\n                },\n            });\n        } else {\n            this._codeReceivedBeforeViewCreation = code;\n        }\n    }\n\n    protected setCodeWithCursorPreservation(code: string): void {\n        if (CodeMirror6Core._editorView) {\n            const currentCode = CodeMirror6Core._editorView.state.doc.toString();\n\n            // Só atualiza se o conteúdo for realmente diferente\n            if (currentCode !== code) {\n                const currentSelection = CodeMirror6Core._editorView.state.selection.main;\n\n                CodeMirror6Core.updateEditorView({\n                    changes: {\n                        from: 0,\n                        to: CodeMirror6Core._editorView.state.doc.length,\n                        insert: code,\n                    },\n                    selection: {\n                        anchor: Math.min(currentSelection.anchor, code.length),\n                        head: Math.min(currentSelection.head, code.length),\n                    },\n                });\n            }\n        } else {\n            this._codeReceivedBeforeViewCreation = code;\n        }\n    }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\n\nimport { CodeEditorComponent } from \"./code-editor.component\";\nimport { CoreFacade } from \"./core/facades/core-facade\";\nimport { CodeMirror6Core } from \"./infra/cores/codemirror-6/codemirror-6-core\";\nimport { CustomTranslationsModule } from \"./infra/utils/custom-translations/custom-translations.module\";\n\n@NgModule({\n    imports: [CommonModule, CustomTranslationsModule],\n    declarations: [CodeEditorComponent],\n    exports: [CodeEditorComponent],\n    providers: [\n        {\n            provide: CoreFacade,\n            useClass: CodeMirror6Core,\n        },\n    ],\n})\nexport class CodeEditorModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["style"],"mappings":"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"}