{"version":3,"file":"acorex-components-code-editor.mjs","sources":["../../../../packages/components/code-editor/src/lib/plugins/default/formatters/prettier.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/css.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/html.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/javascript.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/json.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/markdown.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/sass.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/sql.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/typescript.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/xml.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/themes/github-dark.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/themes/github-light.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/themes/light.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/themes/one-dark.plugin.ts","../../../../packages/components/code-editor/src/lib/plugins/default/config.ts","../../../../packages/components/code-editor/src/lib/plugins/tokens.ts","../../../../packages/components/code-editor/src/lib/plugins/registry.service.ts","../../../../packages/components/code-editor/src/lib/code-editor.component.ts","../../../../packages/components/code-editor/src/lib/code-editor.module.ts","../../../../packages/components/code-editor/src/lib/plugins/default/languages/index.ts","../../../../packages/components/code-editor/src/lib/plugins/default/index.ts","../../../../packages/components/code-editor/src/index.ts","../../../../packages/components/code-editor/src/acorex-components-code-editor.ts"],"sourcesContent":["import { AXCodeEditorFormatterPlugin } from '../../types';\n\nexport class PrettierFormatterPlugin implements AXCodeEditorFormatterPlugin {\n  readonly id = 'prettier';\n  readonly name = 'Prettier';\n  readonly version = '1.0.0';\n  readonly languages = ['javascript', 'js', 'typescript', 'ts', 'json', 'html', 'css', 'markdown'] as const;\n\n  async format(text: string, language: string): Promise<string | null> {\n    try {\n      const prettier = await import('prettier/standalone');\n      let parser: string | null = null;\n      const plugins: any[] = [];\n\n      switch (language) {\n        case 'javascript':\n        case 'js': {\n          const [babel, estree] = await Promise.all([\n            import('prettier/plugins/babel'),\n            import('prettier/plugins/estree'),\n          ]);\n          plugins.push(babel, estree);\n          parser = 'babel';\n          break;\n        }\n        case 'typescript':\n        case 'ts': {\n          const [typescript, estree] = await Promise.all([\n            import('prettier/plugins/typescript'),\n            import('prettier/plugins/estree'),\n          ]);\n          plugins.push(typescript, estree);\n          parser = 'typescript';\n          break;\n        }\n        case 'json': {\n          const [babel, estree] = await Promise.all([\n            import('prettier/plugins/babel'),\n            import('prettier/plugins/estree'),\n          ]);\n          plugins.push(babel, estree);\n          parser = 'json';\n          break;\n        }\n        case 'html': {\n          const html = await import('prettier/plugins/html');\n          plugins.push(html);\n          parser = 'html';\n          break;\n        }\n        case 'css': {\n          const postcss = await import('prettier/plugins/postcss');\n          plugins.push(postcss);\n          parser = 'css';\n          break;\n        }\n        case 'markdown': {\n          const markdown = await import('prettier/plugins/markdown');\n          plugins.push(markdown);\n          parser = 'markdown';\n          break;\n        }\n        default:\n          return null;\n      }\n\n      if (!parser) return null;\n      const formatted = await prettier.format(text, {\n        parser,\n        plugins,\n      } as any);\n      return formatted;\n    } catch {\n      return null;\n    }\n  }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class CSSLanguagePlugin implements AXCodeEditorLanguagePlugin {\n  readonly id = 'css';\n  readonly name = 'CSS';\n  readonly version = '1.0.0';\n  readonly languages = ['css'] as const;\n\n  async getExtension(): Promise<Extension> {\n    const { css } = await import('@codemirror/lang-css');\n    return css();\n  }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class HTMLLanguagePlugin implements AXCodeEditorLanguagePlugin {\n  readonly id = 'html';\n  readonly name = 'HTML';\n  readonly version = '1.0.0';\n  readonly languages = ['html'] as const;\n\n  async getExtension(): Promise<Extension> {\n    const { html } = await import('@codemirror/lang-html');\n    return html();\n  }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class JavaScriptLanguagePlugin implements AXCodeEditorLanguagePlugin {\n  readonly id = 'javascript';\n  readonly name = 'JavaScript';\n  readonly version = '1.0.0';\n  readonly languages = ['javascript', 'js'] as const;\n\n  async getExtension(): Promise<Extension> {\n    const { javascript } = await import('@codemirror/lang-javascript');\n    return javascript();\n  }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class JSONLanguagePlugin implements AXCodeEditorLanguagePlugin {\n  readonly id = 'json';\n  readonly name = 'JSON';\n  readonly version = '1.0.0';\n  readonly languages = ['json'] as const;\n\n  async getExtension(): Promise<Extension> {\n    const { json } = await import('@codemirror/lang-json');\n    return json();\n  }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class MarkdownLanguagePlugin implements AXCodeEditorLanguagePlugin {\n  readonly id = 'markdown';\n  readonly name = 'Markdown';\n  readonly version = '1.0.0';\n  readonly languages = ['markdown'] as const;\n\n  async getExtension(): Promise<Extension> {\n    const { markdown } = await import('@codemirror/lang-markdown');\n    return markdown();\n  }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class SassLanguagePlugin implements AXCodeEditorLanguagePlugin {\n  readonly id = 'sass';\n  readonly name = 'Sass/SCSS';\n  readonly version = '1.0.0';\n  readonly languages = ['sass', 'scss'] as const;\n\n  async getExtension(): Promise<Extension> {\n    const { sass } = await import('@codemirror/lang-sass');\n    return sass();\n  }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class SQLLanguagePlugin implements AXCodeEditorLanguagePlugin {\n  readonly id = 'sql';\n  readonly name = 'SQL';\n  readonly version = '1.0.0';\n  readonly languages = ['sql'] as const;\n\n  async getExtension(): Promise<Extension> {\n    const { sql } = await import('@codemirror/lang-sql');\n    return sql();\n  }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class TypeScriptLanguagePlugin implements AXCodeEditorLanguagePlugin {\n  readonly id = 'typescript';\n  readonly name = 'TypeScript';\n  readonly version = '1.0.0';\n  readonly languages = ['typescript', 'ts'] as const;\n\n  async getExtension(): Promise<Extension> {\n    const { javascript } = await import('@codemirror/lang-javascript');\n    return javascript({ typescript: true });\n  }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorLanguagePlugin } from '../../types';\n\nexport class XMLLanguagePlugin implements AXCodeEditorLanguagePlugin {\n  readonly id = 'xml';\n  readonly name = 'XML';\n  readonly version = '1.0.0';\n  readonly languages = ['xml'] as const;\n\n  async getExtension(): Promise<Extension> {\n    const { xml } = await import('@codemirror/lang-xml');\n    return xml();\n  }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorThemePlugin } from '../../types';\n\nexport class GitHubDarkThemePlugin implements AXCodeEditorThemePlugin {\n  readonly id = 'github-dark';\n  readonly name = 'GitHub Dark';\n  readonly version = '1.0.0';\n  readonly dark = true;\n\n  async getExtension(): Promise<Extension> {\n    const [{ githubDark }, { EditorView }] = await Promise.all([\n      import('@uiw/codemirror-theme-github'),\n      import('@codemirror/view'),\n    ]);\n    return [\n      githubDark,\n      EditorView.theme(\n        {\n          // '&': { backgroundColor: 'transparent !important' },\n          // '.cm-gutters': { backgroundColor: 'transparent !important' },\n        },\n        { dark: true },\n      ),\n    ];\n  }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorThemePlugin } from '../../types';\n\nexport class GitHubLightThemePlugin implements AXCodeEditorThemePlugin {\n  readonly id = 'github-light';\n  readonly name = 'GitHub Light';\n  readonly version = '1.0.0';\n  readonly dark = false;\n\n  async getExtension(): Promise<Extension> {\n    const [{ githubLight }, { EditorView }] = await Promise.all([\n      import('@uiw/codemirror-theme-github'),\n      import('@codemirror/view'),\n    ]);\n    return [\n      githubLight,\n      EditorView.theme(\n        {\n          // '&': { backgroundColor: 'transparent !important' },\n          // '.cm-gutters': { backgroundColor: 'transparent !important' },\n        },\n        { dark: false },\n      ),\n    ];\n  }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorThemePlugin } from '../../types';\n\nexport class LightThemePlugin implements AXCodeEditorThemePlugin {\n  readonly id = 'light';\n  readonly name = 'Light';\n  readonly version = '1.0.0';\n  readonly dark = false;\n\n  async getExtension(): Promise<Extension> {\n    const { EditorView } = await import('@codemirror/view');\n    return EditorView.theme(\n      {\n        // '&': { backgroundColor: 'transparent !important' },\n        '.cm-gutters': {},\n      },\n      { dark: false },\n    );\n  }\n}\n","import type { Extension } from '@codemirror/state';\nimport { AXCodeEditorThemePlugin } from '../../types';\n\nexport class OneDarkThemePlugin implements AXCodeEditorThemePlugin {\n  readonly id = 'one-dark';\n  readonly name = 'One Dark';\n  readonly version = '1.0.0';\n  readonly dark = true;\n\n  async getExtension(): Promise<Extension> {\n    const { EditorView } = await import('@codemirror/view');\n    try {\n      const { oneDark } = await import('@codemirror/theme-one-dark');\n      return [\n        oneDark,\n        EditorView.theme(\n          {\n            // '&': { backgroundColor: 'transparent !important' },\n            '.cm-gutters': {},\n          },\n          { dark: true },\n        ),\n      ];\n    } catch {\n      return EditorView.theme(\n        {\n          // '&': { backgroundColor: 'transparent !important' },\n          '.cm-gutters': {},\n        },\n        { dark: true },\n      );\n    }\n  }\n}\n","import { AXCodeEditorPluginConfig } from '../types';\nimport { PrettierFormatterPlugin } from './formatters/prettier.plugin';\nimport { CSSLanguagePlugin } from './languages/css.plugin';\nimport { HTMLLanguagePlugin } from './languages/html.plugin';\nimport { JavaScriptLanguagePlugin } from './languages/javascript.plugin';\nimport { JSONLanguagePlugin } from './languages/json.plugin';\nimport { MarkdownLanguagePlugin } from './languages/markdown.plugin';\nimport { SassLanguagePlugin } from './languages/sass.plugin';\nimport { SQLLanguagePlugin } from './languages/sql.plugin';\nimport { TypeScriptLanguagePlugin } from './languages/typescript.plugin';\nimport { XMLLanguagePlugin } from './languages/xml.plugin';\nimport { GitHubDarkThemePlugin } from './themes/github-dark.plugin';\nimport { GitHubLightThemePlugin } from './themes/github-light.plugin';\nimport { LightThemePlugin } from './themes/light.plugin';\nimport { OneDarkThemePlugin } from './themes/one-dark.plugin';\n\n/**\n * Default plugin configuration with all built-in plugins\n */\nexport function provideDefaultCodeEditorPlugins(): AXCodeEditorPluginConfig {\n  return {\n    languages: [\n      new JavaScriptLanguagePlugin(),\n      new TypeScriptLanguagePlugin(),\n      new JSONLanguagePlugin(),\n      new HTMLLanguagePlugin(),\n      new CSSLanguagePlugin(),\n      new SassLanguagePlugin(),\n      new SQLLanguagePlugin(),\n      new XMLLanguagePlugin(),\n      new MarkdownLanguagePlugin(),\n    ],\n    themes: [\n      new OneDarkThemePlugin(),\n      new LightThemePlugin(),\n      new GitHubLightThemePlugin(),\n      new GitHubDarkThemePlugin(),\n    ],\n    formatters: [new PrettierFormatterPlugin()],\n    extensions: [],\n  };\n}\n","import { InjectionToken } from '@angular/core';\nimport { provideDefaultCodeEditorPlugins } from './default/config';\nimport { AXCodeEditorPluginConfig } from './types';\n\n/**\n * Injection token for providing code editor plugin configuration\n */\nexport const AX_CODE_EDITOR_PLUGIN_CONFIG = new InjectionToken<AXCodeEditorPluginConfig>(\n  'AX_CODE_EDITOR_PLUGIN_CONFIG',\n  {\n    providedIn: 'root',\n    factory: () => provideDefaultCodeEditorPlugins(),\n  },\n);\n","import { Injectable, inject } from '@angular/core';\nimport type { Extension } from '@codemirror/state';\nimport {\n  AXCodeEditorExtensionPlugin,\n  AXCodeEditorFormatterPlugin,\n  AXCodeEditorLanguagePlugin,\n  AXCodeEditorPluginConfig,\n  AXCodeEditorThemePlugin,\n} from './types';\nimport { AX_CODE_EDITOR_PLUGIN_CONFIG } from './tokens';\n\n/**\n * Registry service for managing code editor plugins\n */\n@Injectable({ providedIn: 'root' })\nexport class AXCodeEditorPluginRegistry {\n  private config: AXCodeEditorPluginConfig | null = inject(AX_CODE_EDITOR_PLUGIN_CONFIG, { optional: true });\n\n  private languagePlugins = new Map<string, AXCodeEditorLanguagePlugin>();\n  private themePlugins = new Map<string, AXCodeEditorThemePlugin>();\n  private formatterPlugins = new Map<string, AXCodeEditorFormatterPlugin>();\n  private extensionPlugins = new Map<string, AXCodeEditorExtensionPlugin>();\n\n  constructor() {\n    this.initializePlugins();\n  }\n\n  private initializePlugins(): void {\n    if (!this.config) return;\n\n    // Register language plugins\n    this.config.languages?.forEach((plugin) => {\n      plugin.languages.forEach((lang) => {\n        this.languagePlugins.set(lang, plugin);\n      });\n    });\n\n    // Register theme plugins\n    this.config.themes?.forEach((plugin) => {\n      this.themePlugins.set(plugin.id, plugin);\n    });\n\n    // Register formatter plugins\n    this.config.formatters?.forEach((plugin) => {\n      plugin.languages.forEach((lang) => {\n        this.formatterPlugins.set(lang, plugin);\n      });\n    });\n\n    // Register extension plugins\n    this.config.extensions?.forEach((plugin) => {\n      this.extensionPlugins.set(plugin.id, plugin);\n    });\n  }\n\n  /**\n   * Get language extension for the specified language\n   */\n  async getLanguageExtension(language: string): Promise<Extension> {\n    const plugin = this.languagePlugins.get(language);\n    if (!plugin) {\n      console.warn(`No language plugin found for: ${language}`);\n      return [];\n    }\n    return plugin.getExtension();\n  }\n\n  /**\n   * Get theme extension by theme ID\n   */\n  async getThemeExtension(themeId: string): Promise<Extension> {\n    const plugin = this.themePlugins.get(themeId);\n    if (!plugin) {\n      console.warn(`No theme plugin found for: ${themeId}`);\n      return [];\n    }\n    return plugin.getExtension();\n  }\n\n  /**\n   * Format text using the appropriate formatter for the language\n   */\n  async format(text: string, language: string): Promise<string | null> {\n    const plugin = this.formatterPlugins.get(language);\n    if (!plugin) {\n      return null;\n    }\n    return plugin.format(text, language);\n  }\n\n  /**\n   * Get all registered extension plugins\n   */\n  async getExtensionPlugins(): Promise<Extension[]> {\n    const extensions = await Promise.all(\n      Array.from(this.extensionPlugins.values()).map((plugin) => plugin.getExtension()),\n    );\n    return extensions;\n  }\n\n  /**\n   * Check if a language is supported\n   */\n  hasLanguage(language: string): boolean {\n    return this.languagePlugins.has(language);\n  }\n\n  /**\n   * Check if a theme is available\n   */\n  hasTheme(themeId: string): boolean {\n    return this.themePlugins.has(themeId);\n  }\n\n  /**\n   * Check if a formatter is available for a language\n   */\n  hasFormatter(language: string): boolean {\n    return this.formatterPlugins.has(language);\n  }\n\n  /**\n   * Get all available language identifiers\n   */\n  getAvailableLanguages(): string[] {\n    return Array.from(this.languagePlugins.keys());\n  }\n\n  /**\n   * Get all available theme identifiers\n   */\n  getAvailableThemes(): string[] {\n    return Array.from(this.themePlugins.keys());\n  }\n\n  /**\n   * Register a language plugin at runtime\n   */\n  registerLanguagePlugin(plugin: AXCodeEditorLanguagePlugin): void {\n    plugin.languages.forEach((lang) => {\n      this.languagePlugins.set(lang, plugin);\n    });\n  }\n\n  /**\n   * Register a theme plugin at runtime\n   */\n  registerThemePlugin(plugin: AXCodeEditorThemePlugin): void {\n    this.themePlugins.set(plugin.id, plugin);\n  }\n\n  /**\n   * Register a formatter plugin at runtime\n   */\n  registerFormatterPlugin(plugin: AXCodeEditorFormatterPlugin): void {\n    plugin.languages.forEach((lang) => {\n      this.formatterPlugins.set(lang, plugin);\n    });\n  }\n\n  /**\n   * Register an extension plugin at runtime\n   */\n  registerExtensionPlugin(plugin: AXCodeEditorExtensionPlugin): void {\n    this.extensionPlugins.set(plugin.id, plugin);\n  }\n}\n","import { AXComponent, AXValuableComponent, MXValueComponent } from '@acorex/cdk/common';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n  Component,\n  DestroyRef,\n  ElementRef,\n  PLATFORM_ID,\n  afterNextRender,\n  computed,\n  effect,\n  forwardRef,\n  inject,\n  input,\n  output,\n  signal,\n  viewChild,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { AXCodeEditorDefaultLanguage } from './plugins';\nimport { AXCodeEditorPluginRegistry } from './plugins/registry.service';\n\n// Re-export language type for external use\nexport type { AXCodeEditorDefaultLanguage } from './plugins/default/languages';\n\n// Type-only aliases for CodeMirror types (tree-shake friendly)\ntype AXCodeEditorEditorViewLike = import('@codemirror/view').EditorView;\ntype AXCodeEditorKeyBindingLike = import('@codemirror/view').KeyBinding;\nexport type AXCodeEditorExtensionLike = import('@codemirror/state').Extension;\ntype AXCodeEditorCompartmentLike = import('@codemirror/state').Compartment;\nexport type AXCodeEditorCompletionLike = import('@codemirror/autocomplete').Completion;\nexport type AXCodeEditorCompletionSourceLike = import('@codemirror/autocomplete').CompletionSource;\ntype AXCodeEditorCompletionContextLike = import('@codemirror/autocomplete').CompletionContext;\n\ntype AXCodeEditorViewModule = typeof import('@codemirror/view');\ntype AXCodeEditorStateModule = typeof import('@codemirror/state');\ntype AXCodeEditorLanguageModule = typeof import('@codemirror/language');\ntype AXCodeEditorAutocompleteModule = typeof import('@codemirror/autocomplete');\ntype AXCodeEditorCommandsModule = typeof import('@codemirror/commands');\ntype AXCodeEditorSearchModule = typeof import('@codemirror/search');\ntype AXCodeEditorLintModule = typeof import('@codemirror/lint');\n\n@Component({\n  selector: 'ax-code-editor',\n  host: {\n    '(keydown.control.s)': 'onSaveShortcut($event)',\n    class: 'ax-code-editor block',\n  },\n  inputs: ['disabled', 'value', 'state', 'name', 'id'],\n  outputs: ['onValueChanged', 'valueChange', 'stateChange', 'readonlyChange', 'disabledChange'],\n  styles: [\n    `\n      :host {\n        display: block;\n        width: 100%;\n        max-height: 90vh;\n\n        &.ax-disable {\n          opacity: 0.5;\n          cursor: not-allowed;\n        }\n\n        > .ax-editor-container {\n          height: 100%;\n          width: 100%;\n          padding: 0.5rem;\n          align-items: start;\n          --ax-comp-editor-space-start-size: 0;\n          --ax-comp-editor-space-end-size: 0;\n          --ax-comp-editor-border-width: 1px;\n        }\n\n        .ax-code-editor-container {\n          display: flex;\n          flex-direction: column;\n          height: 100%;\n          width: 100%;\n        }\n\n        .cm-editor {\n          width: 100%;\n          max-width: 100%;\n          overflow: auto;\n        }\n\n        .cm-editor.cm-focused {\n          outline: none;\n        }\n\n        .ax-error-message {\n          padding-inline: 0.5rem;\n        }\n      }\n    `,\n  ],\n  providers: [\n    { provide: AXValuableComponent, useExisting: AXCodeEditorComponent },\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => AXCodeEditorComponent),\n      multi: true,\n    },\n    { provide: AXComponent, useExisting: AXCodeEditorComponent },\n  ],\n\n  template: `\n    <div class=\"ax-editor-container\" [style.min-height]=\"getMinHeight()\">\n      <div class=\"ax-code-editor-container\">\n        <div\n          #host\n          class=\"cm-editor\"\n          [attr.aria-label]=\"ariaLabel() ?? null\"\n          [attr.aria-readonly]=\"editorReadonly() ? 'true' : 'false'\"\n          [attr.data-placeholder]=\"placeholder() ?? null\"\n        ></div>\n      </div>\n      <ng-content select=\"ax-validation-rule\"> </ng-content>\n    </div>\n    <div class=\"ax-error-container\"></div>\n  `,\n})\nexport class AXCodeEditorComponent extends MXValueComponent<string> {\n  // Inputs (signals)\n  // value = input<string>('');\n  /** Active language identifier from default plugins. Default: 'javascript'. */\n  language = input<AXCodeEditorDefaultLanguage>('javascript');\n  /** When true, the editor becomes readonly (non-editable). */\n  editorReadonly = input(false, { alias: 'readonly' });\n  /** Placeholder text shown when the document is empty. */\n  placeholder = input<string>('');\n  /** Toggle rendering of line numbers in the gutter. */\n  lineNumbers = input<boolean>(true);\n  /** Soft-wrap long lines when true. */\n  lineWrapping = input<boolean>(false);\n  /** Tab size (spaces per indent level). */\n  tabSize = input<number>(2);\n  /** When true, the Tab key indents instead of moving focus. */\n  indentWithTab = input<boolean>(true);\n  /** Theme identifier. If null, uses platform theme mode (dark/light). */\n  theme = input<string | null>(null);\n  /** Additional CodeMirror extensions to apply. Reconfigures at runtime. */\n  extensions = input<ReadonlyArray<AXCodeEditorExtensionLike>>([]);\n  /** ARIA label for accessibility. */\n  ariaLabel = input<string | null>(null);\n  /** Focus the editor after first render. */\n  focusOnReady = input<boolean>(false);\n  /** If true, format the document via Prettier before emitting save. */\n  formatOnSave = input<boolean>(false);\n  /** Minimum number of rows (lines) to display. Controls the minimum height of the editor. */\n  minRow = input<number | null>(null);\n\n  /**\n   * Custom autocompletion options: either a static array of Completion items\n   * or a CodeMirror CompletionSource function.\n   */\n  customCompletions = input<ReadonlyArray<AXCodeEditorCompletionLike> | AXCodeEditorCompletionSourceLike | null>(null);\n\n  // Outputs (signals)\n  // valueChange = output<string>();\n  /** Emits when the editor is fully initialized and ready. */\n  ready = output<void>();\n  /** Emits when the user triggers save (Ctrl/Cmd+S). Payload is the current text. */\n  save = output<string>();\n\n  // View container\n  host = viewChild<ElementRef<HTMLDivElement>>('host');\n\n  // Runtime state\n  private platformId = inject(PLATFORM_ID);\n  private destroyRef = inject(DestroyRef);\n  private platformService = inject(AXPlatform);\n  private pluginRegistry = inject(AXCodeEditorPluginRegistry);\n\n  private editorViewSig = signal<AXCodeEditorEditorViewLike | null>(null);\n\n  // Compartments to reconfigure editor without recreating it\n  private languageCompartment: AXCodeEditorCompartmentLike | null = null;\n  private readonlyCompartment: AXCodeEditorCompartmentLike | null = null;\n  private themeCompartment: AXCodeEditorCompartmentLike | null = null;\n  private placeholderCompartment: AXCodeEditorCompartmentLike | null = null;\n  private wrappingCompartment: AXCodeEditorCompartmentLike | null = null;\n  private keymapExtrasCompartment: AXCodeEditorCompartmentLike | null = null;\n  private tabSizeCompartment: AXCodeEditorCompartmentLike | null = null;\n  private lineNumbersCompartment: AXCodeEditorCompartmentLike | null = null;\n\n  // Cached CodeMirror modules after initialization\n  private cm: {\n    view: AXCodeEditorViewModule | null;\n    state: AXCodeEditorStateModule | null;\n    language: AXCodeEditorLanguageModule | null;\n    autocomplete: AXCodeEditorAutocompleteModule | null;\n    commands: AXCodeEditorCommandsModule | null;\n    search: AXCodeEditorSearchModule | null;\n    lint: AXCodeEditorLintModule | null;\n  } = { view: null, state: null, language: null, autocomplete: null, commands: null, search: null, lint: null };\n\n  private isBrowser = computed(() => isPlatformBrowser(this.platformId));\n\n  /** Computed minimum height based on minRow (excluding gutter/line numbers). */\n  getMinHeight(): string | null {\n    const rows = this.minRow();\n    if (!rows || rows <= 0) return null;\n    // CodeMirror default line height is typically 1.5em, but we use rem for consistency\n    // This calculates height without accounting for gutter since gutter is separate\n    return `calc(${rows} * 1.5rem)`;\n  }\n\n  constructor() {\n    super();\n    afterNextRender(() => {\n      if (!this.isBrowser()) return;\n      this.initializeEditor();\n    });\n\n    // Keep model in sync when external value changes\n    effect(() => {\n      const view = this.editorViewSig();\n      if (!view) return;\n      const newDoc = this.value ?? '';\n      const current = view.state.doc.toString();\n      if (newDoc !== current) {\n        view.dispatch({\n          changes: { from: 0, to: view.state.doc.length, insert: newDoc },\n        });\n      }\n    });\n\n    // React to dynamic configuration changes\n    effect(() => {\n      const view = this.editorViewSig();\n      if (!view || !this.languageCompartment) return;\n      const lang = this.language();\n      this.pluginRegistry.getLanguageExtension(lang).then((ext) => {\n        if (!view || !this.languageCompartment) return;\n        view.dispatch({ effects: this.languageCompartment.reconfigure(ext) });\n      });\n    });\n\n    effect(() => {\n      const view = this.editorViewSig();\n      if (!view || !this.readonlyCompartment) return;\n      const editable = !this.editorReadonly();\n      import('@codemirror/view').then(({ EditorView }) => {\n        if (!view || !this.readonlyCompartment) return;\n        view.dispatch({ effects: this.readonlyCompartment.reconfigure(EditorView.editable.of(editable)) });\n      });\n    });\n\n    effect(() => {\n      const view = this.editorViewSig();\n      // Establish reactive dependency on theme and platform theme\n      const customTheme = this.theme();\n      const platformTheme = this.platformService.themeMode();\n      if (!view || !this.themeCompartment) return;\n      this.resolveThemeExtension(customTheme, platformTheme).then((themeExt) => {\n        if (!view || !this.themeCompartment) return;\n        view.dispatch({ effects: this.themeCompartment.reconfigure(themeExt) });\n      });\n    });\n\n    effect(() => {\n      this.placeholder();\n      const view = this.editorViewSig();\n      if (!view || !this.placeholderCompartment) return;\n      import('@codemirror/view').then(({ placeholder }) => {\n        if (!view || !this.placeholderCompartment) return;\n        view.dispatch({ effects: this.placeholderCompartment.reconfigure(placeholder(this.placeholder() ?? '')) });\n      });\n    });\n\n    effect(() => {\n      const view = this.editorViewSig();\n      if (!view || !this.wrappingCompartment) return;\n      const EditorView = this.cm.view?.EditorView;\n      if (!EditorView) return;\n      const nextExt = this.lineWrapping() ? EditorView.lineWrapping : [];\n      this.reconfigure(this.wrappingCompartment, nextExt);\n    });\n\n    effect(() => {\n      const view = this.editorViewSig();\n      if (!view || !this.tabSizeCompartment) return;\n      const EditorState = this.cm.state?.EditorState;\n      if (!EditorState) return;\n      this.reconfigure(this.tabSizeCompartment, EditorState.tabSize.of(this.tabSize() ?? 2));\n    });\n\n    effect(() => {\n      const view = this.editorViewSig();\n      if (!view || !this.keymapExtrasCompartment) return;\n      const keymap = this.cm.view?.keymap;\n      const commands = this.cm.commands;\n      if (!keymap || !commands) return;\n      this.reconfigure(this.keymapExtrasCompartment, keymap.of(this.indentWithTab() ? [commands.indentWithTab] : []));\n    });\n\n    effect(() => {\n      const view = this.editorViewSig();\n      if (!view || !this.lineNumbersCompartment) return;\n      const lineNumbers = this.cm.view?.lineNumbers;\n      if (!lineNumbers) return;\n      this.reconfigure(this.lineNumbersCompartment, this.lineNumbers() ? lineNumbers() : []);\n    });\n  }\n\n  private async initializeEditor(): Promise<void> {\n    const hostEl = this.host()?.nativeElement;\n    if (!hostEl) return;\n\n    await this.loadCodeMirrorModules();\n\n    this.createCompartments();\n\n    const keymaps = this.buildKeymaps();\n\n    const viewMod = this.cm.view;\n    const stateMod = this.cm.state;\n    const languageMod = this.cm.language;\n    const autoMod = this.cm.autocomplete;\n    const commandsMod = this.cm.commands;\n    const searchMod = this.cm.search;\n    const lintMod = this.cm.lint;\n    if (!viewMod || !stateMod || !languageMod || !autoMod || !commandsMod || !searchMod || !lintMod) return;\n    const languageExt = await this.pluginRegistry.getLanguageExtension(this.language());\n    const themeExt = await this.resolveThemeExtension(this.theme(), this.platformService.themeMode());\n    const placeholderExt = viewMod.placeholder(this.placeholder() ?? '');\n    const editableExt = viewMod.EditorView.editable.of(!this.editorReadonly());\n    const wrappingExt = this.lineWrapping() ? viewMod.EditorView.lineWrapping : [];\n    const tabSizeExt = stateMod.EditorState.tabSize.of(this.tabSize() ?? 2);\n    const lineNumbersExt = this.lineNumbers() ? viewMod.lineNumbers() : [];\n\n    const autoCompleteExt = autoMod.autocompletion({\n      override: this.buildCustomCompletionSources(),\n    });\n\n    const baseExtensions: ReadonlyArray<AXCodeEditorExtensionLike> = [\n      this.lineNumbersCompartment.of(lineNumbersExt),\n      viewMod.highlightActiveLine(),\n      viewMod.highlightActiveLineGutter(),\n      viewMod.drawSelection(),\n      viewMod.dropCursor(),\n      viewMod.rectangularSelection(),\n      viewMod.crosshairCursor(),\n      viewMod.highlightSpecialChars(),\n      languageMod.syntaxHighlighting(languageMod.defaultHighlightStyle, { fallback: true }),\n      languageMod.bracketMatching(),\n      languageMod.foldGutter(),\n      commandsMod.history(),\n      searchMod.highlightSelectionMatches(),\n      viewMod.keymap.of(keymaps),\n      autoCompleteExt,\n      this.languageCompartment.of(languageExt),\n      this.readonlyCompartment.of(editableExt),\n      this.themeCompartment.of(themeExt),\n      this.placeholderCompartment.of(placeholderExt),\n      this.wrappingCompartment.of(wrappingExt),\n      this.tabSizeCompartment.of(tabSizeExt),\n      this.keymapExtrasCompartment.of(viewMod.keymap.of(this.indentWithTab() ? [commandsMod.indentWithTab] : [])),\n      ...this.extensions(),\n    ];\n\n    const updateListener = viewMod.EditorView.updateListener.of((vu) => {\n      if (vu.docChanged) {\n        const text = vu.state.doc.toString();\n        // this.writeValue(text);\n        this.value = text;\n      }\n    });\n\n    const state = stateMod.EditorState.create({\n      doc: this.value ?? '',\n      extensions: [...baseExtensions, updateListener],\n    });\n\n    const view = new viewMod.EditorView({ state, parent: hostEl });\n\n    // Update listener for external changes (selection, viewport, etc.) if needed later\n    view.dispatch({ effects: [] });\n\n    this.editorViewSig.set(view);\n\n    this.destroyRef.onDestroy(() => {\n      view.destroy();\n      this.editorViewSig.set(null);\n    });\n\n    if (this.focusOnReady()) {\n      view.focus();\n    }\n\n    this.ready.emit();\n  }\n\n  private reconfigure(comp: AXCodeEditorCompartmentLike | null, ext: AXCodeEditorExtensionLike): void {\n    const view = this.editorViewSig();\n    if (!view || !comp) return;\n    view.dispatch({ effects: comp.reconfigure(ext) });\n  }\n\n  /**\n   * Handles Ctrl/Cmd+S on the host. If formatOnSave is enabled, attempts\n   * to format the document first, then emits the saved text.\n   */\n  async onSaveShortcut(event: Event): Promise<void> {\n    event.preventDefault();\n    const view = this.editorViewSig();\n    const current = view?.state.doc.toString() ?? this.value ?? '';\n    const payload = current;\n    if (this.formatOnSave()) {\n      await this.format(true);\n    }\n    this.save.emit(payload);\n  }\n\n  private async loadCodeMirrorModules(): Promise<void> {\n    const [viewMod, stateMod, langMod, autoMod, cmdMod, searchMod, lintMod] = await Promise.all([\n      import('@codemirror/view'),\n      import('@codemirror/state'),\n      import('@codemirror/language'),\n      import('@codemirror/autocomplete'),\n      import('@codemirror/commands'),\n      import('@codemirror/search'),\n      import('@codemirror/lint'),\n    ]);\n    this.cm.view = viewMod;\n    this.cm.state = stateMod;\n    this.cm.language = langMod;\n    this.cm.autocomplete = autoMod;\n    this.cm.commands = cmdMod;\n    this.cm.search = searchMod;\n    this.cm.lint = lintMod;\n  }\n\n  private createCompartments(): void {\n    const stateMod = this.cm.state;\n    if (!stateMod) return;\n    this.languageCompartment = new stateMod.Compartment();\n    this.readonlyCompartment = new stateMod.Compartment();\n    this.themeCompartment = new stateMod.Compartment();\n    this.placeholderCompartment = new stateMod.Compartment();\n    this.wrappingCompartment = new stateMod.Compartment();\n    this.tabSizeCompartment = new stateMod.Compartment();\n    this.keymapExtrasCompartment = new stateMod.Compartment();\n    this.lineNumbersCompartment = new stateMod.Compartment();\n  }\n\n  private buildKeymaps(): ReadonlyArray<AXCodeEditorKeyBindingLike> {\n    const cmdMod = this.cm.commands;\n    const searchMod = this.cm.search;\n    const autoMod = this.cm.autocomplete;\n    const lintMod = this.cm.lint;\n    if (!cmdMod || !searchMod || !autoMod || !lintMod) return [];\n    return [\n      ...cmdMod.defaultKeymap,\n      ...cmdMod.historyKeymap,\n      ...searchMod.searchKeymap,\n      ...autoMod.completionKeymap,\n      ...(lintMod.lintKeymap as unknown as readonly AXCodeEditorKeyBindingLike[]),\n    ];\n  }\n\n  private async resolveThemeExtension(\n    customTheme: string | null,\n    platformTheme: string,\n  ): Promise<AXCodeEditorExtensionLike> {\n    // If custom theme is specified, use it\n    if (customTheme) {\n      return this.pluginRegistry.getThemeExtension(customTheme);\n    }\n\n    // Otherwise, use platform theme (handle 'system' by defaulting to 'github-light')\n    const themeId = platformTheme === 'dark' ? 'github-dark' : 'github-light';\n    return this.pluginRegistry.getThemeExtension(themeId);\n  }\n\n  private buildCustomCompletionSources(): ReadonlyArray<AXCodeEditorCompletionSourceLike> | undefined {\n    const provided = this.customCompletions();\n    if (!provided) return undefined;\n    if (typeof provided === 'function') {\n      return [provided as AXCodeEditorCompletionSourceLike];\n    }\n    // Treat array as a static completion list\n    const staticSource: AXCodeEditorCompletionSourceLike = (context: AXCodeEditorCompletionContextLike) => {\n      const from = context.pos;\n      return { from, options: provided as ReadonlyArray<AXCodeEditorCompletionLike> };\n    };\n    return [staticSource];\n  }\n\n  // Public API\n  /** Programmatically focus the editor. */\n  public override focus(): void {\n    const view = this.editorViewSig();\n    if (view) view.focus();\n  }\n\n  /** Select all text in the current document. */\n  public selectAll(): void {\n    const view = this.editorViewSig();\n    if (!view) return;\n    const length = view.state.doc.length;\n    view.dispatch({ selection: { anchor: 0, head: length } });\n  }\n\n  // Formats the current document using the registered formatter plugin (if available for the active language).\n  // Returns the formatted text or null if unchanged/unsupported.\n  public async format(affect = true): Promise<string | null> {\n    const view = this.editorViewSig();\n    if (!view) return null;\n    const source = view.state.doc.toString();\n    if (!source) return null;\n    const formatted = await this.pluginRegistry.format(source, this.language());\n    if (!formatted || formatted === source) return null;\n    if (affect) {\n      view.dispatch({ changes: { from: 0, to: view.state.doc.length, insert: formatted } });\n    }\n    return formatted;\n  }\n\n  /** Returns the total number of characters in the current document. */\n  public getTotalCharacters(): number {\n    const view = this.editorViewSig();\n    if (view) return view.state.doc.length ?? 0;\n    const text = this.value ?? '';\n    return text.length;\n  }\n\n  /** Returns the total number of lines in the current document. */\n  public getTotalLines(): number {\n    const view = this.editorViewSig();\n    if (view) {\n      const doc: any = view.state.doc;\n      return typeof doc?.lines === 'number' ? doc.lines : doc.toString().split(/\\r?\\n/).length;\n    }\n    const text = this.value ?? '';\n    return text ? text.split(/\\r?\\n/).length : 1;\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXCodeEditorComponent } from './code-editor.component';\n\n@NgModule({\n  imports: [CommonModule, AXCodeEditorComponent],\n  exports: [AXCodeEditorComponent],\n})\nexport class AXCodeEditorModule {}\n","// Language plugins\nexport * from './javascript.plugin';\nexport * from './typescript.plugin';\nexport * from './json.plugin';\nexport * from './html.plugin';\nexport * from './css.plugin';\nexport * from './sass.plugin';\nexport * from './sql.plugin';\nexport * from './xml.plugin';\nexport * from './markdown.plugin';\n\n// Type union of all supported languages from default plugins\nexport type AXCodeEditorDefaultLanguage =\n  | 'javascript'\n  | 'js'\n  | 'typescript'\n  | 'ts'\n  | 'json'\n  | 'html'\n  | 'css'\n  | 'scss'\n  | 'sass'\n  | 'sql'\n  | 'xml'\n  | 'markdown';\n","// Language plugins\nexport * from './languages';\n\n// Theme plugins\nexport * from './themes/one-dark.plugin';\nexport * from './themes/light.plugin';\nexport * from './themes/github-light.plugin';\nexport * from './themes/github-dark.plugin';\n\n// Formatter plugins\nexport * from './formatters/prettier.plugin';\n","// Component & Module\nexport * from './lib/code-editor.component';\nexport * from './lib/code-editor.module';\n\n// Plugins\nexport * from './lib/plugins';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}