{"version":3,"file":"ks89-ngx-codemirror6.mjs","sources":["../../../../projects/ks89/ngx-codemirror6/src/lib/internal/extension-factories.ts","../../../../projects/ks89/ngx-codemirror6/src/lib/internal/optional-codemirror-packages.ts","../../../../projects/ks89/ngx-codemirror6/src/lib/ngx-codemirror6.component.ts","../../../../projects/ks89/ngx-codemirror6/src/lib/ngx-codemirror6.module.ts","../../../../projects/ks89/ngx-codemirror6/src/public-api.ts","../../../../projects/ks89/ngx-codemirror6/src/ks89-ngx-codemirror6.ts"],"sourcesContent":["import {\n  bracketMatching as codemirrorBracketMatching,\n  codeFolding as codemirrorCodeFolding,\n  defaultHighlightStyle,\n  foldKeymap,\n  foldGutter as codemirrorFoldGutter,\n  indentOnInput as codemirrorIndentOnInput,\n  indentUnit,\n  syntaxHighlighting\n} from '@codemirror/language';\nimport { EditorSelection, EditorState, Extension, StateField } from '@codemirror/state';\nimport {\n  Decoration,\n  DecorationSet,\n  EditorView,\n  GutterMarker,\n  KeyBinding,\n  PanelConstructor,\n  Tooltip,\n  drawSelection as codemirrorDrawSelection,\n  gutter as codemirrorGutter,\n  gutters as codemirrorGutters,\n  highlightActiveLine as codemirrorHighlightActiveLine,\n  highlightActiveLineGutter as codemirrorHighlightActiveLineGutter,\n  highlightSpecialChars as codemirrorHighlightSpecialChars,\n  highlightTrailingWhitespace as codemirrorHighlightTrailingWhitespace,\n  highlightWhitespace as codemirrorHighlightWhitespace,\n  keymap,\n  lineNumbers as codemirrorLineNumbers,\n  placeholder as codemirrorPlaceholder,\n  scrollPastEnd as codemirrorScrollPastEnd,\n  showPanel as codemirrorShowPanel,\n  showTooltip as codemirrorShowTooltip,\n  tooltips as codemirrorTooltips,\n  hoverTooltip as codemirrorHoverTooltip\n} from '@codemirror/view';\nimport {\n  AutocompletionInputConfig,\n  CodemirrorAttributeSource,\n  CodemirrorBaseTheme,\n  CodemirrorCodeFoldingConfig,\n  CodemirrorDecorationSource,\n  CodemirrorFoldGutterConfig,\n  CodemirrorGutterConfig,\n  CodemirrorHoverTooltipOptions,\n  CodemirrorHoverTooltipSource,\n  CodemirrorMarkedRange,\n  CodemirrorSearchConfig,\n  CodemirrorTooltipConfig,\n  KeymapInput,\n  LintInputConfig\n} from '../models/codemirror-config.types';\n\n// import optional packages\nimport { OptionalCodemirrorPackages } from './optional-codemirror-packages';\n\n/** Configuration used to build display and text-rendering extensions. */\nexport interface DisplayExtensionConfig {\n  lineWrapping: boolean;\n  placeholder: string;\n  lineNumbers: boolean;\n  lineNumberFormatter: ((lineNo: number, state: EditorState) => string) | null;\n  highlightActiveLine: boolean;\n  highlightActiveLineGutter: boolean;\n  highlightSelectionMatches: boolean;\n  bracketMatching: boolean;\n  closeBrackets: boolean;\n  highlightSpecialChars: boolean;\n  highlightWhitespace: boolean;\n  highlightTrailingWhitespace: boolean;\n  scrollPastEnd: boolean;\n}\n\n/** Configuration used to build indentation extensions. */\nexport interface IndentationExtensionConfig {\n  tabSize: number;\n  indentUnit: string;\n  indentOnInput: boolean;\n}\n\n/** Configuration used to build keymap extensions. */\nexport interface KeymapExtensionConfig {\n  indentWithTab: boolean;\n  keymaps: KeymapInput;\n}\n\n/** Configuration used to build selection extensions. */\nexport interface SelectionExtensionConfig {\n  multipleSelections: boolean;\n  drawSelection: boolean;\n}\n\n/** Configuration used to build @codemirror/search extensions. */\nexport interface SearchExtensionConfig {\n  search: boolean;\n  searchConfig: CodemirrorSearchConfig | null;\n  searchKeymap: boolean;\n}\n\n/** Configuration used to build folding extensions. */\nexport interface FoldingExtensionConfig {\n  codeFolding: boolean;\n  codeFoldingConfig: CodemirrorCodeFoldingConfig | null;\n  foldGutter: boolean;\n  foldGutterConfig: CodemirrorFoldGutterConfig | null;\n  foldKeymap: boolean;\n}\n\n/** Configuration used to build gutter and breakpoint gutter extensions. */\nexport interface GutterExtensionConfig {\n  customGutters: readonly CodemirrorGutterConfig[];\n  guttersFixed: boolean | null;\n  breakpointGutter: boolean;\n  breakpointField: StateField<readonly number[]>;\n  toggleBreakpoint: (line: number) => void;\n}\n\n/** Configuration used to build decoration extensions. */\nexport interface DecorationExtensionConfig {\n  decorations: CodemirrorDecorationSource | readonly CodemirrorDecorationSource[] | null;\n}\n\n/** Configuration used to build panel extensions. */\nexport interface PanelExtensionConfig {\n  panels: PanelConstructor | readonly PanelConstructor[] | null;\n}\n\n/** Configuration used to build tooltip and hover tooltip extensions. */\nexport interface TooltipExtensionConfig {\n  tooltips: Tooltip | readonly (Tooltip | null)[] | null;\n  tooltipConfig: CodemirrorTooltipConfig | null;\n  hoverTooltip: CodemirrorHoverTooltipSource | null;\n  hoverTooltipOptions: CodemirrorHoverTooltipOptions | null;\n}\n\n/** Configuration used to build editor/content attributes and base theme extensions. */\nexport interface StylingExtensionConfig {\n  editorAttributes: CodemirrorAttributeSource | null;\n  contentAttributes: CodemirrorAttributeSource | null;\n  baseTheme: CodemirrorBaseTheme | null;\n}\n\nclass BreakpointMarker extends GutterMarker {\n  override toDOM(): HTMLElement {\n    const marker = document.createElement('span');\n    marker.className = 'cm-breakpoint-marker';\n    marker.setAttribute('aria-hidden', 'true');\n    return marker;\n  }\n}\n\nconst breakpointMarker = new BreakpointMarker();\n\n/** Creates the EditorState.readOnly facet extension from readOnly and disabled state. */\nexport function createReadOnlyExtensions(readOnly: boolean, disabled: boolean): Extension[] {\n  return [EditorState.readOnly.of(readOnly || disabled)];\n}\n\n/** Creates the EditorView.editable facet extension from readOnly, editable override, and disabled state. */\nexport function createEditableExtensions(readOnly: boolean, editable: boolean | null, disabled: boolean): Extension[] {\n  return [EditorView.editable.of((editable ?? !readOnly) && !disabled)];\n}\n\n/** Normalizes a single theme extension or a theme extension array. */\nexport function createThemeExtensions(theme: Extension | Extension[]): Extension[] {\n  return [syntaxHighlighting(defaultHighlightStyle, { fallback: true }), ...(Array.isArray(theme) ? theme : [theme])];\n}\n\n/** Creates display-related extensions such as line wrapping, line numbers, active line, and whitespace markers. */\nexport async function createDisplayExtensions(config: DisplayExtensionConfig, optionalPackages: OptionalCodemirrorPackages): Promise<Extension[]> {\n  const extensions: Extension[] = [];\n\n  if (config.lineWrapping) {\n    extensions.push(EditorView.lineWrapping);\n  }\n  if (config.placeholder) {\n    extensions.push(codemirrorPlaceholder(config.placeholder));\n  }\n  if (config.lineNumbers) {\n    extensions.push(codemirrorLineNumbers(config.lineNumberFormatter ? { formatNumber: config.lineNumberFormatter } : undefined));\n  }\n  if (config.highlightActiveLine) {\n    extensions.push(codemirrorHighlightActiveLine());\n  }\n  if (config.highlightActiveLineGutter) {\n    extensions.push(codemirrorHighlightActiveLineGutter());\n  }\n  if (config.highlightSelectionMatches) {\n    extensions.push((await optionalPackages.loadSearch()).highlightSelectionMatches());\n  }\n  if (config.bracketMatching) {\n    extensions.push(codemirrorBracketMatching());\n  }\n  if (config.closeBrackets) {\n    const autocomplete = await optionalPackages.loadAutocomplete();\n    extensions.push(autocomplete.closeBrackets(), keymap.of(autocomplete.closeBracketsKeymap));\n  }\n  if (config.highlightSpecialChars) {\n    extensions.push(codemirrorHighlightSpecialChars());\n  }\n  if (config.highlightWhitespace) {\n    extensions.push(codemirrorHighlightWhitespace());\n  }\n  if (config.highlightTrailingWhitespace) {\n    extensions.push(codemirrorHighlightTrailingWhitespace());\n  }\n  if (config.scrollPastEnd) {\n    extensions.push(codemirrorScrollPastEnd());\n  }\n\n  return extensions;\n}\n\n/** Creates indentation state and language-aware indentation extensions. */\nexport function createIndentationExtensions(config: IndentationExtensionConfig): Extension[] {\n  return [\n    EditorState.tabSize.of(config.tabSize),\n    indentUnit.of(config.indentUnit),\n    ...(config.indentOnInput ? [codemirrorIndentOnInput()] : [])\n  ];\n}\n\n/** Creates keymap extensions, including optional Tab indentation when @codemirror/commands is installed. */\nexport async function createKeymapExtensions(config: KeymapExtensionConfig, optionalPackages: OptionalCodemirrorPackages): Promise<Extension[]> {\n  const bindings = flattenKeymaps(config.keymaps);\n\n  if (config.indentWithTab) {\n    bindings.push((await optionalPackages.loadCommands()).indentWithTab);\n  }\n\n  return bindings.length > 0 ? [keymap.of(bindings)] : [];\n}\n\n/** Creates selection behavior extensions, including multiple selection and drawn selections. */\nexport function createSelectionExtensions(config: SelectionExtensionConfig): Extension[] {\n  const extensions: Extension[] = [EditorState.allowMultipleSelections.of(config.multipleSelections)];\n\n  if (config.drawSelection) {\n    extensions.push(codemirrorDrawSelection());\n  }\n\n  return extensions;\n}\n\n/** Creates autocompletion extensions. Requires @codemirror/autocomplete when enabled. */\nexport async function createAutocompletionExtensions(\n  config: AutocompletionInputConfig,\n  optionalPackages: OptionalCodemirrorPackages\n): Promise<Extension[]> {\n  if (!config.autocompletion) {\n    return [];\n  }\n\n  const autocomplete = await optionalPackages.loadAutocomplete();\n  const customSources = Array.isArray(config.completions) ? config.completions : config.completions ? [config.completions] : [];\n  const extensions: Extension[] = [autocomplete.autocompletion(config.autocompletionConfig ?? undefined)];\n\n  if (customSources.length > 0) {\n    extensions.push(EditorState.languageData.of(() => customSources.map((source) => ({ autocomplete: source }))));\n  }\n\n  return extensions;\n}\n\n/** Creates lint extensions. Requires @codemirror/lint when linting or lint gutter is enabled. */\nexport async function createLintExtensions(config: LintInputConfig, optionalPackages: OptionalCodemirrorPackages): Promise<Extension[]> {\n  const extensions: Extension[] = [];\n\n  if (config.lint && config.linter) {\n    extensions.push((await optionalPackages.loadLint()).linter(config.linter, config.lintConfig ?? undefined));\n  }\n  if (config.lintGutter) {\n    extensions.push((await optionalPackages.loadLint()).lintGutter());\n  }\n  if (config.lintKeymap) {\n    extensions.push(keymap.of((await optionalPackages.loadLint()).lintKeymap));\n  }\n\n  return extensions;\n}\n\n/** Creates search extensions. Requires @codemirror/search when search features are enabled. */\nexport async function createSearchExtensions(config: SearchExtensionConfig, optionalPackages: OptionalCodemirrorPackages): Promise<Extension[]> {\n  const extensions: Extension[] = [];\n\n  if (config.search) {\n    extensions.push((await optionalPackages.loadSearch()).search(config.searchConfig ?? undefined));\n  }\n  if (config.searchKeymap) {\n    extensions.push(keymap.of((await optionalPackages.loadSearch()).searchKeymap));\n  }\n\n  return extensions;\n}\n\n/** Creates code folding and fold gutter extensions. */\nexport function createFoldingExtensions(config: FoldingExtensionConfig): Extension[] {\n  const extensions: Extension[] = [];\n\n  if (config.codeFolding) {\n    extensions.push(codemirrorCodeFolding(config.codeFoldingConfig ?? undefined));\n  }\n  if (config.foldGutter) {\n    extensions.push(codemirrorFoldGutter(config.foldGutterConfig ?? undefined));\n  }\n  if (config.foldKeymap) {\n    extensions.push(keymap.of(foldKeymap));\n  }\n\n  return extensions;\n}\n\n/** Creates custom gutters and the wrapper breakpoint gutter extension. */\nexport function createGutterExtensions(config: GutterExtensionConfig): Extension[] {\n  const extensions: Extension[] = [];\n  const customGutterExtensions = config.customGutters.map((gutterConfig) => codemirrorGutter(gutterConfig));\n\n  if (config.guttersFixed !== null && (customGutterExtensions.length > 0 || config.breakpointGutter)) {\n    extensions.push(codemirrorGutters({ fixed: config.guttersFixed }));\n  }\n  if (config.breakpointGutter) {\n    extensions.push(createBreakpointGutter(config));\n  }\n\n  extensions.push(...customGutterExtensions);\n  return extensions;\n}\n\n/** Creates direct decoration extensions and wrapper marked range decorations. */\nexport function createDecorationExtensions(config: DecorationExtensionConfig): Extension[] {\n  const extensions: Extension[] = [];\n\n  for (const decoration of normalizeArray(config.decorations)) {\n    extensions.push(EditorView.decorations.of(decoration));\n  }\n\n  return extensions;\n}\n\n/** Creates panel extensions from panel constructors. */\nexport function createPanelExtensions(config: PanelExtensionConfig): Extension[] {\n  const panelConstructors = normalizeArray(config.panels);\n  return panelConstructors.length > 0 ? panelConstructors.map((panel) => codemirrorShowPanel.of(panel)) : [];\n}\n\n/** Creates tooltip, tooltip configuration, and hover tooltip extensions. */\nexport function createTooltipExtensions(config: TooltipExtensionConfig): Extension[] {\n  const extensions: Extension[] = [];\n\n  if (config.tooltipConfig) {\n    extensions.push(codemirrorTooltips(config.tooltipConfig));\n  }\n  for (const tooltip of normalizeArray(config.tooltips)) {\n    extensions.push(codemirrorShowTooltip.of(tooltip));\n  }\n  if (config.hoverTooltip) {\n    extensions.push(codemirrorHoverTooltip(config.hoverTooltip, config.hoverTooltipOptions ?? undefined));\n  }\n\n  return extensions;\n}\n\n/** Creates editor attributes, content attributes, and base theme extensions. */\nexport function createStylingExtensions(config: StylingExtensionConfig): Extension[] {\n  const extensions: Extension[] = [];\n\n  if (config.baseTheme) {\n    extensions.push(EditorView.baseTheme(config.baseTheme));\n  }\n  if (config.editorAttributes) {\n    extensions.push(EditorView.editorAttributes.of(config.editorAttributes));\n  }\n  if (config.contentAttributes) {\n    extensions.push(EditorView.contentAttributes.of(config.contentAttributes));\n  }\n\n  return extensions;\n}\n\n/** Creates the CodeMirror CSP nonce extension when a nonce is provided. */\nexport function createCspNonceExtensions(cspNonce: string | null): Extension[] {\n  return cspNonce ? [EditorView.cspNonce.of(cspNonce)] : [];\n}\n\n/** Creates a minimal JSON representation before an EditorView exists. */\nexport function createPendingEditorJSON(content: string): unknown {\n  return {\n    doc: content,\n    selection: EditorSelection.single(0).toJSON()\n  };\n}\n\nfunction createBreakpointGutter(config: GutterExtensionConfig): Extension {\n  return codemirrorGutter({\n    class: 'cm-breakpoint-gutter',\n    lineMarker: (view, line) => (view.state.field(config.breakpointField).includes(line.from) ? breakpointMarker : null),\n    domEventHandlers: {\n      mousedown: (view, line, event) => {\n        event.preventDefault();\n        config.toggleBreakpoint(view.state.doc.lineAt(line.from).number);\n        return true;\n      }\n    },\n    initialSpacer: () => breakpointMarker\n  });\n}\n\nexport function createMarkedRangeDecorations(markedRanges: readonly CodemirrorMarkedRange[], docLength: number): DecorationSet {\n  return Decoration.set(\n    markedRanges.flatMap((range) => {\n      const from = Math.max(0, range.from);\n      const to = Math.min(docLength, Math.max(from, range.to));\n\n      if (from >= to) {\n        return [];\n      }\n\n      return Decoration.mark({\n        class: range.class,\n        attributes: range.attributes,\n        tagName: range.tagName,\n        inclusive: range.inclusive,\n        inclusiveStart: range.inclusiveStart,\n        inclusiveEnd: range.inclusiveEnd\n      }).range(from, to);\n    }),\n    true\n  );\n}\n\nfunction flattenKeymaps(keymaps: KeymapInput): KeyBinding[] {\n  if (keymaps.length === 0) {\n    return [];\n  }\n\n  const first = keymaps[0];\n  return Array.isArray(first)\n    ? (keymaps as readonly (readonly KeyBinding[])[]).flatMap((bindings) => [...bindings])\n    : [...(keymaps as readonly KeyBinding[])];\n}\n\nfunction normalizeArray<T>(value: T | readonly T[] | null): readonly T[] {\n  if (!value) {\n    return [];\n  }\n\n  return Array.isArray(value) ? value : [value as T];\n}\n","/** Module type for the optional @codemirror/autocomplete package. */\nexport type AutocompleteModule = typeof import('@codemirror/autocomplete');\n/** Module type for the optional @codemirror/commands package. */\nexport type CommandsModule = typeof import('@codemirror/commands');\n/** Module type for the optional @codemirror/lint package. */\nexport type LintModule = typeof import('@codemirror/lint');\n/** Module type for the optional @codemirror/search package. */\nexport type SearchModule = typeof import('@codemirror/search');\n\nclass MissingOptionalCodemirrorDependencyError extends Error {\n  constructor(packageName: string, cause: unknown) {\n    super(`@ks89/ngx-codemirror6 optional feature requires ${packageName}. Install it in your application to use this API.`, {\n      cause\n    });\n  }\n}\n\n/** Lazy loader and cache for optional CodeMirror packages used by advanced wrapper APIs. */\nexport class OptionalCodemirrorPackages {\n  private autocompleteModule: AutocompleteModule | null = null;\n  private commandsModule: CommandsModule | null = null;\n  private lintModule: LintModule | null = null;\n  private searchModule: SearchModule | null = null;\n\n  /** Cached @codemirror/autocomplete module, or null until it has been loaded. */\n  get autocomplete(): AutocompleteModule | null {\n    return this.autocompleteModule;\n  }\n\n  /** Loads @codemirror/autocomplete or throws a package-specific installation error. */\n  async loadAutocomplete(): Promise<AutocompleteModule> {\n    try {\n      return (this.autocompleteModule ??= await import('@codemirror/autocomplete'));\n    } catch (error) {\n      if (this.isModuleResolutionError(error, '@codemirror/autocomplete')) {\n        throw this.createMissingOptionalDependencyError('@codemirror/autocomplete', error);\n      }\n      throw error;\n    }\n  }\n\n  /** Cached @codemirror/commands module, or null until it has been loaded. */\n  get commands(): CommandsModule | null {\n    return this.commandsModule;\n  }\n\n  /** Loads @codemirror/commands or throws a package-specific installation error. */\n  async loadCommands(): Promise<CommandsModule> {\n    try {\n      return (this.commandsModule ??= await import('@codemirror/commands'));\n    } catch (error) {\n      if (this.isModuleResolutionError(error, '@codemirror/commands')) {\n        throw this.createMissingOptionalDependencyError('@codemirror/commands', error);\n      }\n      throw error;\n    }\n  }\n\n  /** Cached @codemirror/lint module, or null until it has been loaded. */\n  get lint(): LintModule | null {\n    return this.lintModule;\n  }\n\n  /** Loads @codemirror/lint or throws a package-specific installation error. */\n  async loadLint(): Promise<LintModule> {\n    try {\n      return (this.lintModule ??= await import('@codemirror/lint'));\n    } catch (error) {\n      if (this.isModuleResolutionError(error, '@codemirror/lint')) {\n        throw this.createMissingOptionalDependencyError('@codemirror/lint', error);\n      }\n      throw error;\n    }\n  }\n\n  /** Cached @codemirror/search module, or null until it has been loaded. */\n  get search(): SearchModule | null {\n    return this.searchModule;\n  }\n\n  /** Loads @codemirror/search or throws a package-specific installation error. */\n  async loadSearch(): Promise<SearchModule> {\n    try {\n      return (this.searchModule ??= await import('@codemirror/search'));\n    } catch (error) {\n      if (this.isModuleResolutionError(error, '@codemirror/search')) {\n        throw this.createMissingOptionalDependencyError('@codemirror/search', error);\n      }\n      throw error;\n    }\n  }\n\n  private createMissingOptionalDependencyError(packageName: string, error: unknown): Error {\n    return new MissingOptionalCodemirrorDependencyError(packageName, error);\n  }\n\n  private isModuleResolutionError(error: unknown, packageName: string): boolean {\n    if (!(error instanceof Error)) {\n      return false;\n    }\n\n    const code = this.getErrorCode(error);\n    if ((code === 'ERR_MODULE_NOT_FOUND' || code === 'MODULE_NOT_FOUND') && error.message.includes(packageName)) {\n      return true;\n    }\n\n    return (\n      error.message.includes(packageName) &&\n      [\n        'Cannot find module',\n        'Cannot find package',\n        'Failed to resolve module specifier',\n        'could not be resolved',\n        'Could not resolve'\n      ].some((messagePart) => error.message.includes(messagePart))\n    );\n  }\n\n  private getErrorCode(error: Error): string | undefined {\n    return 'code' in error && typeof error.code === 'string' ? error.code : undefined;\n  }\n}\n","/**\n * The MIT License (MIT)\n *\n * Copyright (c) 2023-2026 Stefano Cappa (Ks89)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nimport {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  ErrorHandler,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  forwardRef,\n  inject\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport type { Completion, CompletionSource } from '@codemirror/autocomplete';\nimport type { LintSource } from '@codemirror/lint';\nimport {\n  foldAll as codemirrorFoldAll,\n  foldCode as codemirrorFoldCode,\n  foldState,\n  foldedRanges as codemirrorFoldedRanges,\n  toggleFold as codemirrorToggleFold,\n  unfoldAll as codemirrorUnfoldAll,\n  unfoldCode as codemirrorUnfoldCode\n} from '@codemirror/language';\nimport {\n  EditorView,\n  Panel,\n  PanelConstructor,\n  Tooltip,\n  ViewUpdate,\n  activateHover as codemirrorActivateHover,\n  closeHoverTooltips as codemirrorCloseHoverTooltips,\n  getPanel as codemirrorGetPanel,\n  hasHoverTooltips as codemirrorHasHoverTooltips,\n  repositionTooltips as codemirrorRepositionTooltips,\n  type DecorationSet\n} from '@codemirror/view';\nimport { Compartment, EditorSelection, EditorState, EditorStateConfig, Extension, StateEffect, StateField, TransactionSpec } from '@codemirror/state';\n\nimport {\n  DecorationExtensionConfig,\n  DisplayExtensionConfig,\n  FoldingExtensionConfig,\n  GutterExtensionConfig,\n  IndentationExtensionConfig,\n  KeymapExtensionConfig,\n  SearchExtensionConfig,\n  SelectionExtensionConfig,\n  StylingExtensionConfig,\n  TooltipExtensionConfig,\n  createAutocompletionExtensions,\n  createCspNonceExtensions,\n  createDecorationExtensions,\n  createDisplayExtensions,\n  createEditableExtensions,\n  createFoldingExtensions,\n  createGutterExtensions,\n  createIndentationExtensions,\n  createKeymapExtensions,\n  createLintExtensions,\n  createMarkedRangeDecorations,\n  createPanelExtensions,\n  createPendingEditorJSON,\n  createReadOnlyExtensions,\n  createSearchExtensions,\n  createSelectionExtensions,\n  createStylingExtensions,\n  createThemeExtensions,\n  createTooltipExtensions\n} from './internal/extension-factories';\nimport { OptionalCodemirrorPackages, type AutocompleteModule } from './internal/optional-codemirror-packages';\nimport {\n  AutocompletionInputConfig,\n  CodemirrorAttributeSource,\n  CodemirrorAutocompletionConfig,\n  CodemirrorBaseTheme,\n  CodemirrorCodeFoldingConfig,\n  CodemirrorDecorationSource,\n  CodemirrorFoldGutterConfig,\n  CodemirrorFoldedRange,\n  CodemirrorGutterConfig,\n  CodemirrorHoverTooltipOptions,\n  CodemirrorHoverTooltipSource,\n  CodemirrorLintConfig,\n  CodemirrorMarkedRange,\n  CodemirrorSearchConfig,\n  CodemirrorTooltipConfig,\n  KeymapInput,\n  LintInputConfig\n} from './models/codemirror-config.types';\n\nexport type {\n  CodemirrorAttributeSource,\n  CodemirrorAutocompletionConfig,\n  CodemirrorBaseTheme,\n  CodemirrorCodeFoldingConfig,\n  CodemirrorDecorationSource,\n  CodemirrorFoldGutterConfig,\n  CodemirrorFoldedRange,\n  CodemirrorGutterConfig,\n  CodemirrorHoverTooltipOptions,\n  CodemirrorHoverTooltipSource,\n  CodemirrorLintConfig,\n  CodemirrorMarkedRange,\n  CodemirrorSearchConfig,\n  CodemirrorTooltipConfig,\n  KeymapInput\n} from './models/codemirror-config.types';\n\n/**\n * Angular wrapper component for CodeMirror 6.\n * Provides declarative inputs for common CodeMirror extensions plus imperative methods for editor commands.\n */\n@Component({\n  selector: 'ks-codemirror',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => CodemirrorComponent),\n      multi: true\n    }\n  ],\n  template: `<div #host></div>`,\n  standalone: false\n})\nexport class CodemirrorComponent implements AfterViewInit, ControlValueAccessor, OnChanges, OnDestroy {\n  /** Initial and externally controlled editor document text. */\n  @Input() content: string = '';\n  /** Additional CodeMirror extensions appended after the wrapper-managed extensions. */\n  @Input() appendExtensions: Extension[] = [];\n  /** Language support extension, such as one returned by a @codemirror/lang-* package. */\n  @Input() language: Extension = [];\n  /**\n   * Main switch for read-only mode.\n   * Maps to CodeMirror's EditorState.readOnly facet, which editing commands and extensions consult before changing the document.\n   * In most applications this is the only input you need: true makes the editor read-only, false makes it editable.\n   */\n  @Input() readOnly: boolean = true;\n  /**\n   * Advanced DOM editability override.\n   * Maps to CodeMirror's EditorView.editable facet, which controls whether the content DOM is browser-editable/focusable.\n   * Leave null for normal use; the wrapper then derives it from readOnly with editable = !readOnly.\n   */\n  @Input() editable: boolean | null = null;\n  /** Theme extension or extensions applied to the editor view. */\n  @Input() theme: Extension | Extension[] = [];\n  /** Enables CodeMirror's line wrapping extension for long visual lines. */\n  @Input() lineWrapping: boolean = false;\n  /** Placeholder text shown when the editor document is empty. */\n  @Input() placeholder: string = '';\n  /** Shows a line-number gutter. */\n  @Input() lineNumbers: boolean = false;\n  /** Custom formatter for displayed line numbers in the line-number gutter. */\n  @Input() lineNumberFormatter: ((lineNo: number, state: EditorState) => string) | null = null;\n  /** Highlights the visual line containing the primary selection. */\n  @Input() highlightActiveLine: boolean = false;\n  /** Highlights the gutter for the active line when a gutter is visible. */\n  @Input() highlightActiveLineGutter: boolean = false;\n  /** Enables bracket matching around the cursor through @codemirror/language. */\n  @Input() bracketMatching: boolean = false;\n  /** Highlights unusual or special characters with CodeMirror's special-character highlighter. */\n  @Input() highlightSpecialChars: boolean = false;\n  /** Renders visible markers for whitespace characters. */\n  @Input() highlightWhitespace: boolean = false;\n  /** Renders visible markers for trailing whitespace at line ends. */\n  @Input() highlightTrailingWhitespace: boolean = false;\n  /** Allows scrolling past the end of the document. */\n  @Input() scrollPastEnd: boolean = false;\n  /** Number of columns used to display tab characters in the editor state. */\n  @Input() tabSize: number = 4;\n  /** Indentation unit used by language-aware indentation services. */\n  @Input() indentUnit: string = '  ';\n  /** Custom key bindings or groups of key bindings registered with CodeMirror's keymap extension. */\n  @Input() keymaps: KeymapInput = [];\n  /** Allows the editor state to hold multiple selection ranges. */\n  @Input() multipleSelections: boolean = false;\n  /** Draws the selection with editor-managed DOM so multiple selections and custom selection rendering are visible. */\n  @Input() drawSelection: boolean = false;\n\n  /**\n   * Non-read-only editing inputs.\n   * These inputs affect editing behavior and are useful only when the editor can accept document edits.\n   */\n  /** Enables automatic indentation when typed input matches language indentation rules. */\n  @Input() indentOnInput: boolean = false;\n\n  /**\n   * Optional package: @codemirror/autocomplete.\n   * Install @codemirror/autocomplete in the consuming application to use these inputs.\n   * These inputs are also non-read-only editing inputs.\n   */\n  /** Enables automatic closing of brackets through @codemirror/autocomplete when that optional package is installed. */\n  @Input() closeBrackets: boolean = false;\n  /** Enables the completion UI through @codemirror/autocomplete. */\n  @Input() autocompletion: boolean = false;\n  /** Completion source or sources added to language completions through CodeMirror language data. */\n  @Input() completions: CompletionSource | CompletionSource[] | null = null;\n  /** Configuration object forwarded to @codemirror/autocomplete's autocompletion extension. */\n  @Input() autocompletionConfig: CodemirrorAutocompletionConfig | null = null;\n\n  /**\n   * Optional package: @codemirror/commands.\n   * Install @codemirror/commands in the consuming application to use these inputs.\n   * These inputs are also non-read-only editing inputs.\n   */\n  /** Adds CodeMirror's Tab indentation key binding through @codemirror/commands. */\n  @Input() indentWithTab: boolean = false;\n\n  /**\n   * Optional package: @codemirror/lint.\n   * Install @codemirror/lint in the consuming application to use these inputs.\n   */\n  /** Enables lint diagnostics when a linter source is provided. */\n  @Input() lint: boolean = false;\n  /** Lint source used by @codemirror/lint to produce diagnostics for the current editor view. */\n  @Input() linter: LintSource | null = null;\n  /** Configuration object forwarded to @codemirror/lint's linter extension. */\n  @Input() lintConfig: CodemirrorLintConfig | null = null;\n  /** Shows CodeMirror's lint gutter for diagnostic markers. */\n  @Input() lintGutter: boolean = false;\n  /** Registers CodeMirror's default lint key bindings. */\n  @Input() lintKeymap: boolean = false;\n\n  /**\n   * Optional package: @codemirror/search.\n   * Install @codemirror/search in the consuming application to use these inputs.\n   */\n  /** Highlights other occurrences of the current selection through @codemirror/search. */\n  @Input() highlightSelectionMatches: boolean = false;\n  /** Enables CodeMirror's search state and search panel support through @codemirror/search. */\n  @Input() search: boolean = false;\n  /** Configuration object forwarded to @codemirror/search's search extension. */\n  @Input() searchConfig: CodemirrorSearchConfig | null = null;\n  /** Registers the default search key bindings. */\n  @Input() searchKeymap: boolean = false;\n\n  /**\n   * Core dependency: @codemirror/language.\n   * These inputs do not require optional packages.\n   */\n  /** Enables code folding commands and folded range state through @codemirror/language. */\n  @Input() codeFolding: boolean = false;\n  /** Configuration object forwarded to CodeMirror's codeFolding extension. */\n  @Input() codeFoldingConfig: CodemirrorCodeFoldingConfig | null = null;\n  /** Shows a gutter with fold controls. */\n  @Input() foldGutter: boolean = false;\n  /** Configuration object forwarded to CodeMirror's foldGutter extension. */\n  @Input() foldGutterConfig: CodemirrorFoldGutterConfig | null = null;\n  /** Registers CodeMirror's default folding key bindings. */\n  @Input() foldKeymap: boolean = false;\n\n  /**\n   * Core dependency: @codemirror/view gutters, decorations, panels, and tooltips.\n   * These inputs do not require optional packages.\n   */\n  /** Custom gutter configurations forwarded to CodeMirror's gutter extension. */\n  @Input() customGutters: readonly CodemirrorGutterConfig[] = [];\n  /** Controls whether configured gutters are fixed during horizontal scrolling; null keeps CodeMirror's default. */\n  @Input() guttersFixed: boolean | null = null;\n  /** Adds the wrapper's clickable breakpoint gutter. */\n  @Input() breakpointGutter: boolean = false;\n  /** One-based line numbers that should display breakpoint markers in the breakpoint gutter. */\n  @Input() breakpoints: readonly number[] = [];\n  /** Decoration set or dynamic decoration sources registered with EditorView.decorations. */\n  @Input() decorations: CodemirrorDecorationSource | readonly CodemirrorDecorationSource[] | null = null;\n  /** Simple marked document ranges converted to CodeMirror mark decorations. */\n  @Input() markedRanges: readonly CodemirrorMarkedRange[] = [];\n  /** Panel constructor or constructors shown with CodeMirror's showPanel facet. */\n  @Input() panels: PanelConstructor | readonly PanelConstructor[] | null = null;\n  /** Tooltip descriptor or descriptors shown with CodeMirror's showTooltip facet. */\n  @Input() tooltips: Tooltip | readonly (Tooltip | null)[] | null = null;\n  /** Tooltip positioning configuration forwarded to CodeMirror's tooltips extension. */\n  @Input() tooltipConfig: CodemirrorTooltipConfig | null = null;\n  /** Hover tooltip source used to create contextual tooltips from document positions. */\n  @Input() hoverTooltip: CodemirrorHoverTooltipSource | null = null;\n  /** Options forwarded to CodeMirror's hoverTooltip extension, such as hover delay. */\n  @Input() hoverTooltipOptions: CodemirrorHoverTooltipOptions | null = null;\n\n  /**\n   * Core dependency: @codemirror/view styling and security.\n   * These inputs do not require optional packages.\n   */\n  /** CSP nonce attached to CodeMirror style elements created by the editor view. */\n  @Input() cspNonce: string | null = null;\n  /** Static attributes or an attribute provider applied to the outer .cm-editor element. */\n  @Input() editorAttributes: CodemirrorAttributeSource | null = null;\n  /** Static attributes or an attribute provider applied to the editable content element. */\n  @Input() contentAttributes: CodemirrorAttributeSource | null = null;\n  /** Base theme rules applied with EditorView.baseTheme for structural or feature-specific styling. */\n  @Input() baseTheme: CodemirrorBaseTheme | null = null;\n\n  /** Emits the created CodeMirror EditorView after the editor is initialized. */\n  @Output() editorReady: EventEmitter<EditorView> = new EventEmitter<EditorView>();\n  /** Emits the full document text after user/editor transactions change the document. */\n  @Output() contentChange: EventEmitter<string> = new EventEmitter<string>();\n  /** Emits every CodeMirror ViewUpdate produced by the editor view. */\n  @Output() update: EventEmitter<ViewUpdate> = new EventEmitter<ViewUpdate>();\n  /** Emits the current EditorSelection whenever a transaction changes the selection. */\n  @Output() selectionChange: EventEmitter<EditorSelection> = new EventEmitter<EditorSelection>();\n  /** Emits the updated one-based breakpoint line numbers after the breakpoint gutter toggles a marker. */\n  @Output() breakpointsChange: EventEmitter<number[]> = new EventEmitter<number[]>();\n\n  @ViewChild('host') host: ElementRef<HTMLElement> | undefined;\n\n  private editorView: EditorView | undefined;\n  private languageCompartment: Compartment = new Compartment();\n  private readOnlyCompartment: Compartment = new Compartment();\n  private editableCompartment: Compartment = new Compartment();\n  private themeCompartment: Compartment = new Compartment();\n  private displayCompartment: Compartment = new Compartment();\n  private indentationCompartment: Compartment = new Compartment();\n  private keymapCompartment: Compartment = new Compartment();\n  private selectionCompartment: Compartment = new Compartment();\n  private autocompleteCompartment: Compartment = new Compartment();\n  private lintCompartment: Compartment = new Compartment();\n  private searchCompartment: Compartment = new Compartment();\n  private foldingCompartment: Compartment = new Compartment();\n  private gutterCompartment: Compartment = new Compartment();\n  private decorationCompartment: Compartment = new Compartment();\n  private panelCompartment: Compartment = new Compartment();\n  private tooltipCompartment: Compartment = new Compartment();\n  private stylingCompartment: Compartment = new Compartment();\n  private appendExtensionsCompartment: Compartment = new Compartment();\n  private cspNonceCompartment: Compartment = new Compartment();\n  private readonly breakpointSetEffect = StateEffect.define<readonly number[]>();\n  private readonly breakpointToggleEffect = StateEffect.define<number>();\n  private readonly breakpointStateField = StateField.define<readonly number[]>({\n    create: (state) => this.createBreakpointPositions(state, this.breakpoints),\n    update: (positions, tr) => {\n      let next: readonly number[] = positions.map((position) => tr.changes.mapPos(position, 1));\n\n      for (const effect of tr.effects) {\n        if (effect.is(this.breakpointSetEffect)) {\n          next = this.createBreakpointPositions(tr.state, effect.value);\n        } else if (effect.is(this.breakpointToggleEffect)) {\n          const line = effect.value;\n          if (Number.isInteger(line) && line >= 1 && line <= tr.state.doc.lines) {\n            const position = tr.state.doc.line(line).from;\n            next = this.toggleBreakpointPosition(next, position);\n          }\n        }\n      }\n\n      return this.normalizeBreakpointPositions(next);\n    }\n  });\n  private readonly markedRangesSetEffect = StateEffect.define<readonly CodemirrorMarkedRange[]>();\n  private readonly markedRangesStateField = StateField.define<DecorationSet>({\n    create: (state) => createMarkedRangeDecorations(this.markedRanges, state.doc.length),\n    update: (decorations, tr) => {\n      let next = decorations.map(tr.changes);\n\n      for (const effect of tr.effects) {\n        if (effect.is(this.markedRangesSetEffect)) {\n          next = createMarkedRangeDecorations(effect.value, tr.state.doc.length);\n        }\n      }\n\n      return next;\n    },\n    provide: (field) => EditorView.decorations.from(field)\n  });\n  private disabled: boolean = false;\n  private destroyed: boolean = false;\n  private editorCreationVersion: number = 0;\n  private reconfigureVersion: number = 0;\n  private updatingContentFromModel: boolean = false;\n  private onChange: (value: string) => void = () => undefined;\n  private onTouched: () => void = () => undefined;\n  private optionalPackages: OptionalCodemirrorPackages = new OptionalCodemirrorPackages();\n  private readonly errorHandler: ErrorHandler = inject(ErrorHandler);\n\n  /** Creates the CodeMirror editor after Angular has initialized the host element. */\n  ngAfterViewInit(): void {\n    this.destroyed = false;\n    void this.createEditor(this.content).catch((error: unknown) => this.errorHandler.handleError(error));\n  }\n\n  /** Reconfigures the live editor when Angular input bindings change. */\n  ngOnChanges(changes: SimpleChanges): void {\n    void this.reconfigureEditor(changes).catch((error: unknown) => this.errorHandler.handleError(error));\n  }\n\n  private async reconfigureEditor(changes: SimpleChanges): Promise<void> {\n    if (this.destroyed || !this.editorView) {\n      return;\n    }\n\n    if (changes['content']) {\n      this.setEditorContent(this.content);\n    }\n\n    const reconfigureVersion = ++this.reconfigureVersion;\n    const effects = await this.getReconfigureEffects(changes);\n    if (!this.destroyed && reconfigureVersion === this.reconfigureVersion && this.editorView && effects.length > 0) {\n      this.editorView.dispatch({ effects });\n    }\n  }\n\n  /** Destroys the CodeMirror editor view and prevents pending async initialization from recreating it. */\n  ngOnDestroy(): void {\n    this.destroyed = true;\n    this.editorCreationVersion += 1;\n    this.reconfigureVersion += 1;\n    this.destroyEditor();\n  }\n\n  /**\n   * Implements ControlValueAccessor.writeValue.\n   * Angular forms call this method when the external form model writes a value into the editor.\n   */\n  writeValue(value: string | null | undefined): void {\n    this.content = value ?? '';\n    this.setEditorContent(this.content);\n  }\n\n  /**\n   * Implements ControlValueAccessor.registerOnChange.\n   * Angular forms call this method to register the callback that receives editor document changes.\n   */\n  registerOnChange(fn: (value: string) => void): void {\n    this.onChange = fn;\n  }\n\n  /**\n   * Implements ControlValueAccessor.registerOnTouched.\n   * Angular forms call this method to register the callback emitted when the editor is touched.\n   */\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  /**\n   * Implements ControlValueAccessor.setDisabledState.\n   * Angular forms call this method when the form control is enabled or disabled.\n   */\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    if (this.editorView) {\n      this.editorView.dispatch({\n        effects: [\n          this.readOnlyCompartment.reconfigure(createReadOnlyExtensions(this.readOnly, this.disabled)),\n          this.editableCompartment.reconfigure(createEditableExtensions(this.readOnly, this.editable, this.disabled))\n        ]\n      });\n    }\n  }\n\n  /**\n   * Recreates the editor from a CodeMirror state configuration while preserving wrapper-managed behavior.\n   * User-provided extensions are appended after the wrapper extensions.\n   */\n  async resetEditor(config: EditorStateConfig): Promise<void> {\n    const editorCreationVersion = ++this.editorCreationVersion;\n    this.reconfigureVersion += 1;\n    const state = EditorState.create({\n      ...config,\n      doc: config.doc ?? this.content,\n      extensions: [await this.createExtensions(), config.extensions ?? []]\n    });\n\n    if (!this.destroyed && editorCreationVersion === this.editorCreationVersion) {\n      this.content = state.doc.toString();\n      this.mountEditorState(state);\n    }\n  }\n\n  /** Moves focus to the CodeMirror editor when it exists. */\n  focus(): void {\n    this.editorView?.focus();\n  }\n\n  /** Returns the current editor document text, or the pending content input before initialization. */\n  getValue(): string {\n    return this.editorView?.state.doc.toString() ?? this.content;\n  }\n\n  /** Replaces the full editor document and synchronizes the content input cache. */\n  setValue(value: string): void {\n    this.content = value;\n    this.setEditorContent(value);\n  }\n\n  /** Dispatches one or more raw CodeMirror transaction specs to the editor. */\n  dispatch(...specs: TransactionSpec[]): void {\n    this.editorView?.dispatch(...specs);\n  }\n\n  /** Replaces the current selection ranges with the provided text. */\n  replaceSelection(text: string): void {\n    if (!this.editorView) {\n      return;\n    }\n\n    this.editorView.dispatch(this.editorView.state.replaceSelection(text));\n  }\n\n  /** Scrolls a document position into view, clamping the position to the document bounds. */\n  scrollToPosition(position: number): void {\n    if (!this.editorView) {\n      return;\n    }\n\n    const boundedPosition = Math.max(0, Math.min(position, this.editorView.state.doc.length));\n    this.editorView.dispatch({\n      effects: EditorView.scrollIntoView(boundedPosition, { y: 'center' })\n    });\n  }\n\n  /** Scrolls a one-based document line into view, clamping the line to the document bounds. */\n  scrollToLine(line: number): void {\n    if (!this.editorView) {\n      return;\n    }\n\n    const boundedLine = Math.max(1, Math.min(line, this.editorView.state.doc.lines));\n    this.scrollToPosition(this.editorView.state.doc.line(boundedLine).from);\n  }\n\n  /** Scrolls the primary selection range into view. */\n  scrollSelectionIntoView(): void {\n    if (!this.editorView) {\n      return;\n    }\n\n    this.editorView.dispatch({\n      effects: EditorView.scrollIntoView(this.editorView.state.selection.main, { y: 'nearest' })\n    });\n  }\n\n  /** Serializes the editor state, including history and fold state when those extensions are active. */\n  toJSON(): unknown {\n    if (!this.editorView) {\n      return createPendingEditorJSON(this.content);\n    }\n\n    const fields: Record<string, StateField<any>> = {};\n    if (this.optionalPackages.commands && this.editorView.state.field(this.optionalPackages.commands.historyField, false)) {\n      fields['history'] = this.optionalPackages.commands.historyField;\n    }\n    if (this.editorView.state.field(foldState, false)) {\n      fields['fold'] = foldState;\n    }\n\n    return Object.keys(fields).length > 0 ? this.editorView.state.toJSON(fields) : this.editorView.state.toJSON();\n  }\n\n  /** Restores a serialized CodeMirror state produced by toJSON. */\n  async restoreFromJSON(json: unknown): Promise<void> {\n    const commands = json && typeof json === 'object' && 'history' in json ? await this.optionalPackages.loadCommands() : null;\n    const fields = {\n      ...(commands ? { history: commands.historyField } : {}),\n      ...(json && typeof json === 'object' && 'fold' in json ? { fold: foldState } : {})\n    };\n    const state = EditorState.fromJSON(\n      json,\n      {\n        extensions: await this.createExtensions()\n      },\n      Object.keys(fields).length > 0 ? fields : undefined\n    );\n\n    this.content = state.doc.toString();\n    if (this.editorView) {\n      this.editorView.setState(state);\n    } else {\n      this.mountEditorState(state);\n    }\n  }\n\n  /** Runs the @codemirror/commands undo command. Requires @codemirror/commands. */\n  async undo(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadCommands()).undo(this.editorView) : false;\n  }\n\n  /** Runs the @codemirror/commands redo command. Requires @codemirror/commands. */\n  async redo(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadCommands()).redo(this.editorView) : false;\n  }\n\n  /** Opens CodeMirror's search panel. Requires @codemirror/search. */\n  async openSearchPanel(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadSearch()).openSearchPanel(this.editorView) : false;\n  }\n\n  /** Closes CodeMirror's search panel. Requires @codemirror/search. */\n  async closeSearchPanel(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadSearch()).closeSearchPanel(this.editorView) : false;\n  }\n\n  /** Returns true when the search panel is open and @codemirror/search has been loaded. */\n  isSearchPanelOpen(): boolean {\n    return this.editorView && this.optionalPackages.search ? this.optionalPackages.search.searchPanelOpen(this.editorView.state) : false;\n  }\n\n  /** Selects the next search match. Requires @codemirror/search. */\n  async findNext(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadSearch()).findNext(this.editorView) : false;\n  }\n\n  /** Selects the previous search match. Requires @codemirror/search. */\n  async findPrevious(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadSearch()).findPrevious(this.editorView) : false;\n  }\n\n  /** Replaces the current search match. Requires @codemirror/search. */\n  async replaceNext(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadSearch()).replaceNext(this.editorView) : false;\n  }\n\n  /** Replaces all search matches. Requires @codemirror/search. */\n  async replaceAll(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadSearch()).replaceAll(this.editorView) : false;\n  }\n\n  /** Opens CodeMirror's go-to-line command UI. Requires @codemirror/search. */\n  async gotoLine(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadSearch()).gotoLine(this.editorView) : false;\n  }\n\n  /** Adds the next occurrence of the current selection to the selection set. Requires @codemirror/search. */\n  async selectNextOccurrence(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadSearch()).selectNextOccurrence(this.editorView) : false;\n  }\n\n  /** Selects matches for the current selection. Requires @codemirror/search. */\n  async selectSelectionMatches(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadSearch()).selectSelectionMatches(this.editorView) : false;\n  }\n\n  /** Selects all matches for the active search query. Requires @codemirror/search. */\n  async selectMatches(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadSearch()).selectMatches(this.editorView) : false;\n  }\n\n  /** Folds the foldable range at the current selection. */\n  foldCode(): boolean {\n    return this.editorView ? codemirrorFoldCode(this.editorView) : false;\n  }\n\n  /** Unfolds the folded range at the current selection. */\n  unfoldCode(): boolean {\n    return this.editorView ? codemirrorUnfoldCode(this.editorView) : false;\n  }\n\n  /** Toggles folding at the current selection. */\n  toggleFold(): boolean {\n    return this.editorView ? codemirrorToggleFold(this.editorView) : false;\n  }\n\n  /** Folds all foldable ranges in the document. */\n  foldAll(): boolean {\n    return this.editorView ? codemirrorFoldAll(this.editorView) : false;\n  }\n\n  /** Unfolds all folded ranges in the document. */\n  unfoldAll(): boolean {\n    return this.editorView ? codemirrorUnfoldAll(this.editorView) : false;\n  }\n\n  /** Returns the current folded document ranges. */\n  getFoldedRanges(): CodemirrorFoldedRange[] {\n    if (!this.editorView) {\n      return [];\n    }\n\n    const ranges: CodemirrorFoldedRange[] = [];\n    codemirrorFoldedRanges(this.editorView.state).between(0, this.editorView.state.doc.length, (from, to) => {\n      ranges.push({ from, to });\n    });\n    return ranges;\n  }\n\n  /** Opens the completion UI. Requires @codemirror/autocomplete. */\n  async startCompletion(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadAutocomplete()).startCompletion(this.editorView) : false;\n  }\n\n  /** Closes the completion UI. Requires @codemirror/autocomplete. */\n  async closeCompletion(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadAutocomplete()).closeCompletion(this.editorView) : false;\n  }\n\n  /** Accepts the selected completion. Requires @codemirror/autocomplete. */\n  async acceptCompletion(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadAutocomplete()).acceptCompletion(this.editorView) : false;\n  }\n\n  /** Returns the current completion UI status, or null before @codemirror/autocomplete is loaded. */\n  completionStatus(): ReturnType<AutocompleteModule['completionStatus']> {\n    return this.editorView && this.optionalPackages.autocomplete ? this.optionalPackages.autocomplete.completionStatus(this.editorView.state) : null;\n  }\n\n  /** Returns the currently available completion options, or an empty array when completion is inactive. */\n  currentCompletions(): readonly Completion[] {\n    return this.editorView && this.optionalPackages.autocomplete ? this.optionalPackages.autocomplete.currentCompletions(this.editorView.state) : [];\n  }\n\n  /** Returns the currently selected completion option, or null when none is selected. */\n  selectedCompletion(): Completion | null {\n    return this.editorView && this.optionalPackages.autocomplete ? this.optionalPackages.autocomplete.selectedCompletion(this.editorView.state) : null;\n  }\n\n  /** Returns the selected completion option index, or null when completion is inactive. */\n  selectedCompletionIndex(): number | null {\n    return this.editorView && this.optionalPackages.autocomplete\n      ? this.optionalPackages.autocomplete.selectedCompletionIndex(this.editorView.state)\n      : null;\n  }\n\n  /** Toggles a breakpoint marker for a one-based line number and emits breakpointsChange. */\n  toggleBreakpoint(line: number): void {\n    if (!Number.isInteger(line) || line < 1) {\n      return;\n    }\n\n    if (!this.editorView) {\n      const current = new Set(this.breakpoints);\n      if (current.has(line)) {\n        current.delete(line);\n      } else {\n        current.add(line);\n      }\n      this.breakpoints = this.normalizeBreakpointLineNumbers([...current]);\n      this.breakpointsChange.emit([...this.breakpoints]);\n      return;\n    }\n\n    this.editorView?.dispatch({\n      effects: this.breakpointToggleEffect.of(line)\n    });\n  }\n\n  /** Returns true when the one-based line number has a breakpoint marker. */\n  hasBreakpoint(line: number): boolean {\n    return this.getBreakpointLineNumbers().includes(line);\n  }\n\n  /** Adds a cursor on the line above the current selection. Requires @codemirror/commands. */\n  async addCursorAbove(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadCommands()).addCursorAbove(this.editorView) : false;\n  }\n\n  /** Adds a cursor on the line below the current selection. Requires @codemirror/commands. */\n  async addCursorBelow(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadCommands()).addCursorBelow(this.editorView) : false;\n  }\n\n  /** Toggles line or block comments for the current selection. Requires @codemirror/commands. */\n  async toggleComment(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadCommands()).toggleComment(this.editorView) : false;\n  }\n\n  /** Toggles line comments for the current selection. Requires @codemirror/commands. */\n  async toggleLineComment(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadCommands()).toggleLineComment(this.editorView) : false;\n  }\n\n  /** Adds line comments to the current selection. Requires @codemirror/commands. */\n  async lineComment(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadCommands()).lineComment(this.editorView) : false;\n  }\n\n  /** Removes line comments from the current selection. Requires @codemirror/commands. */\n  async lineUncomment(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadCommands()).lineUncomment(this.editorView) : false;\n  }\n\n  /** Toggles block comments for the current selection. Requires @codemirror/commands. */\n  async toggleBlockComment(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadCommands()).toggleBlockComment(this.editorView) : false;\n  }\n\n  /** Indents the current selection one level deeper. Requires @codemirror/commands. */\n  async indentMore(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadCommands()).indentMore(this.editorView) : false;\n  }\n\n  /** Reduces indentation for the current selection by one level. Requires @codemirror/commands. */\n  async indentLess(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadCommands()).indentLess(this.editorView) : false;\n  }\n\n  /** Applies language-aware indentation to the current selection. Requires @codemirror/commands. */\n  async indentSelection(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadCommands()).indentSelection(this.editorView) : false;\n  }\n\n  /** Deletes the selected lines. Requires @codemirror/commands. */\n  async deleteLine(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadCommands()).deleteLine(this.editorView) : false;\n  }\n\n  /** Moves the selected lines up. Requires @codemirror/commands. */\n  async moveLineUp(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadCommands()).moveLineUp(this.editorView) : false;\n  }\n\n  /** Moves the selected lines down. Requires @codemirror/commands. */\n  async moveLineDown(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadCommands()).moveLineDown(this.editorView) : false;\n  }\n\n  /** Selects the current line. Requires @codemirror/commands. */\n  async selectLine(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadCommands()).selectLine(this.editorView) : false;\n  }\n\n  /** Moves the cursor to the matching bracket when one is available. Requires @codemirror/commands. */\n  async cursorMatchingBracket(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadCommands()).cursorMatchingBracket(this.editorView) : false;\n  }\n\n  /** Toggles Tab focus mode. Requires @codemirror/commands. */\n  async toggleTabFocusMode(): Promise<boolean> {\n    return this.editorView ? (await this.optionalPackages.loadCommands()).toggleTabFocusMode(this.editorView) : false;\n  }\n\n  /** Returns true when hover tooltip sources are active in the editor state. */\n  hasHoverTooltips(): boolean {\n    return this.editorView ? codemirrorHasHoverTooltips(this.editorView.state) : false;\n  }\n\n  /** Activates hover tooltips at a document position. */\n  activateHover(position: number, side: -1 | 1 = 1): void {\n    if (this.editorView) {\n      codemirrorActivateHover(this.editorView, position, side);\n    }\n  }\n\n  /** Closes currently visible hover tooltips. */\n  closeHoverTooltips(): void {\n    this.editorView?.dispatch({\n      effects: codemirrorCloseHoverTooltips\n    });\n  }\n\n  /** Recomputes tooltip positions for the current editor layout. */\n  repositionTooltips(): void {\n    if (this.editorView) {\n      codemirrorRepositionTooltips(this.editorView);\n    }\n  }\n\n  /** Returns the active panel instance for the given panel constructor, when mounted. */\n  getPanel(panel: PanelConstructor): Panel | null {\n    return this.editorView ? codemirrorGetPanel(this.editorView, panel) : null;\n  }\n\n  /** Recreates the editor with the same document and selection, clearing undo/redo history. */\n  async clearHistory(): Promise<void> {\n    if (!this.editorView) {\n      return;\n    }\n\n    const state = this.editorView.state;\n    await this.createEditor(state.doc.toString(), state.selection);\n  }\n\n  private async createEditor(doc: string, selection?: EditorSelection): Promise<void> {\n    const editorCreationVersion = ++this.editorCreationVersion;\n    const state = EditorState.create({\n      doc,\n      selection,\n      extensions: await this.createExtensions()\n    });\n    if (!this.destroyed && editorCreationVersion === this.editorCreationVersion) {\n      this.mountEditorState(state);\n    }\n  }\n\n  private mountEditorState(state: EditorState): void {\n    if (!this.host) {\n      throw new Error('Internal ngx-codemirror6 error - host must be defined');\n    }\n    if (this.destroyed) {\n      return;\n    }\n\n    this.destroyEditor();\n    this.editorView = new EditorView({\n      parent: this.host.nativeElement,\n      state\n    });\n    this.editorReady.emit(this.editorView);\n  }\n\n  private async createExtensions(): Promise<Extension[]> {\n    return [\n      this.languageCompartment.of(this.language),\n      this.readOnlyCompartment.of(createReadOnlyExtensions(this.readOnly, this.disabled)),\n      this.editableCompartment.of(createEditableExtensions(this.readOnly, this.editable, this.disabled)),\n      this.themeCompartment.of(createThemeExtensions(this.theme)),\n      this.displayCompartment.of(await createDisplayExtensions(this.getDisplayConfig(), this.optionalPackages)),\n      this.indentationCompartment.of(createIndentationExtensions(this.getIndentationConfig())),\n      this.keymapCompartment.of(await createKeymapExtensions(this.getKeymapConfig(), this.optionalPackages)),\n      this.selectionCompartment.of(createSelectionExtensions(this.getSelectionConfig())),\n      this.autocompleteCompartment.of(await createAutocompletionExtensions(this.getAutocompletionConfig(), this.optionalPackages)),\n      this.lintCompartment.of(await createLintExtensions(this.getLintConfig(), this.optionalPackages)),\n      this.searchCompartment.of(await createSearchExtensions(this.getSearchConfig(), this.optionalPackages)),\n      this.foldingCompartment.of(createFoldingExtensions(this.getFoldingConfig())),\n      this.breakpointStateField,\n      this.gutterCompartment.of(createGutterExtensions(this.getGutterConfig())),\n      this.markedRangesStateField,\n      this.decorationCompartment.of(createDecorationExtensions(this.getDecorationConfig())),\n      this.panelCompartment.of(createPanelExtensions({ panels: this.panels })),\n      this.tooltipCompartment.of(createTooltipExtensions(this.getTooltipConfig())),\n      this.stylingCompartment.of(createStylingExtensions(this.getStylingConfig())),\n      this.appendExtensionsCompartment.of(this.appendExtensions),\n      this.cspNonceCompartment.of(createCspNonceExtensions(this.cspNonce)),\n      EditorView.domEventHandlers({\n        blur: () => {\n          this.onTouched();\n        }\n      }),\n      EditorView.updateListener.of((update) => {\n        this.update.emit(update);\n        const breakpointLineNumbers = this.getBreakpointLineNumbers(update.state);\n        if (breakpointLineNumbers.length !== this.breakpoints.length || breakpointLineNumbers.some((line, index) => line !== this.breakpoints[index])) {\n          this.breakpoints = breakpointLineNumbers;\n          this.breakpointsChange.emit([...this.breakpoints]);\n        }\n        if (update.selectionSet) {\n          this.selectionChange.emit(update.state.selection);\n        }\n        if (update.docChanged && !this.updatingContentFromModel) {\n          this.content = update.state.doc.toString();\n          this.contentChange.emit(this.content);\n          this.onChange(this.content);\n        }\n      })\n    ];\n  }\n\n  private async getReconfigureEffects(changes: SimpleChanges): Promise<StateEffect<unknown>[]> {\n    const effects: StateEffect<unknown>[] = [];\n\n    if (changes['language']) {\n      effects.push(this.languageCompartment.reconfigure(this.language));\n    }\n    if (changes['readOnly']) {\n      effects.push(this.readOnlyCompartment.reconfigure(createReadOnlyExtensions(this.readOnly, this.disabled)));\n      effects.push(this.editableCompartment.reconfigure(createEditableExtensions(this.readOnly, this.editable, this.disabled)));\n    }\n    if (changes['editable']) {\n      effects.push(this.editableCompartment.reconfigure(createEditableExtensions(this.readOnly, this.editable, this.disabled)));\n    }\n    if (changes['theme']) {\n      effects.push(this.themeCompartment.reconfigure(createThemeExtensions(this.theme)));\n    }\n    if (\n      changes['lineWrapping'] ||\n      changes['placeholder'] ||\n      changes['lineNumbers'] ||\n      changes['lineNumberFormatter'] ||\n      changes['highlightActiveLine'] ||\n      changes['highlightActiveLineGutter'] ||\n      changes['highlightSelectionMatches'] ||\n      changes['bracketMatching'] ||\n      changes['closeBrackets'] ||\n      changes['highlightSpecialChars'] ||\n      changes['highlightWhitespace'] ||\n      changes['highlightTrailingWhitespace'] ||\n      changes['scrollPastEnd']\n    ) {\n      effects.push(this.displayCompartment.reconfigure(await createDisplayExtensions(this.getDisplayConfig(), this.optionalPackages)));\n    }\n    if (changes['tabSize'] || changes['indentUnit'] || changes['indentOnInput']) {\n      effects.push(this.indentationCompartment.reconfigure(createIndentationExtensions(this.getIndentationConfig())));\n    }\n    if (changes['indentWithTab'] || changes['keymaps']) {\n      effects.push(this.keymapCompartment.reconfigure(await createKeymapExtensions(this.getKeymapConfig(), this.optionalPackages)));\n    }\n    if (changes['multipleSelections'] || changes['drawSelection']) {\n      effects.push(this.selectionCompartment.reconfigure(createSelectionExtensions(this.getSelectionConfig())));\n    }\n    if (changes['autocompletion'] || changes['completions'] || changes['autocompletionConfig']) {\n      effects.push(this.autocompleteCompartment.reconfigure(await createAutocompletionExtensions(this.getAutocompletionConfig(), this.optionalPackages)));\n    }\n    if (changes['lint'] || changes['linter'] || changes['lintConfig'] || changes['lintGutter'] || changes['lintKeymap']) {\n      effects.push(this.lintCompartment.reconfigure(await createLintExtensions(this.getLintConfig(), this.optionalPackages)));\n    }\n    if (changes['search'] || changes['searchConfig'] || changes['searchKeymap']) {\n      effects.push(this.searchCompartment.reconfigure(await createSearchExtensions(this.getSearchConfig(), this.optionalPackages)));\n    }\n    if (changes['codeFolding'] || changes['codeFoldingConfig'] || changes['foldGutter'] || changes['foldGutterConfig'] || changes['foldKeymap']) {\n      effects.push(this.foldingCompartment.reconfigure(createFoldingExtensions(this.getFoldingConfig())));\n    }\n    if (changes['customGutters'] || changes['guttersFixed'] || changes['breakpointGutter']) {\n      effects.push(this.gutterCompartment.reconfigure(createGutterExtensions(this.getGutterConfig())));\n    }\n    if (changes['breakpoints']) {\n      effects.push(this.breakpointSetEffect.of(this.breakpoints));\n    }\n    if (changes['markedRanges']) {\n      effects.push(this.markedRangesSetEffect.of(this.markedRanges));\n    }\n    if (changes['decorations']) {\n      effects.push(this.decorationCompartment.reconfigure(createDecorationExtensions(this.getDecorationConfig())));\n    }\n    if (changes['panels']) {\n      effects.push(this.panelCompartment.reconfigure(createPanelExtensions({ panels: this.panels })));\n    }\n    if (changes['tooltips'] || changes['tooltipConfig'] || changes['hoverTooltip'] || changes['hoverTooltipOptions']) {\n      effects.push(this.tooltipCompartment.reconfigure(createTooltipExtensions(this.getTooltipConfig())));\n    }\n    if (changes['editorAttributes'] || changes['contentAttributes'] || changes['baseTheme']) {\n      effects.push(this.stylingCompartment.reconfigure(createStylingExtensions(this.getStylingConfig())));\n    }\n    if (changes['appendExtensions']) {\n      effects.push(this.appendExtensionsCompartment.reconfigure(this.appendExtensions));\n    }\n    if (changes['cspNonce']) {\n      effects.push(this.cspNonceCompartment.reconfigure(createCspNonceExtensions(this.cspNonce)));\n    }\n\n    return effects;\n  }\n\n  private getDisplayConfig(): DisplayExtensionConfig {\n    return {\n      lineWrapping: this.lineWrapping,\n      placeholder: this.placeholder,\n      lineNumbers: this.lineNumbers,\n      lineNumberFormatter: this.lineNumberFormatter,\n      highlightActiveLine: this.highlightActiveLine,\n      highlightActiveLineGutter: this.highlightActiveLineGutter,\n      highlightSelectionMatches: this.highlightSelectionMatches,\n      bracketMatching: this.bracketMatching,\n      closeBrackets: this.closeBrackets,\n      highlightSpecialChars: this.highlightSpecialChars,\n      highlightWhitespace: this.highlightWhitespace,\n      highlightTrailingWhitespace: this.highlightTrailingWhitespace,\n      scrollPastEnd: this.scrollPastEnd\n    };\n  }\n\n  private getIndentationConfig(): IndentationExtensionConfig {\n    return { tabSize: this.tabSize, indentUnit: this.indentUnit, indentOnInput: this.indentOnInput };\n  }\n\n  private getKeymapConfig(): KeymapExtensionConfig {\n    return { indentWithTab: this.indentWithTab, keymaps: this.keymaps };\n  }\n\n  private getSelectionConfig(): SelectionExtensionConfig {\n    return { multipleSelections: this.multipleSelections, drawSelection: this.drawSelection };\n  }\n\n  private getAutocompletionConfig(): AutocompletionInputConfig {\n    return { autocompletion: this.autocompletion, completions: this.completions, autocompletionConfig: this.autocompletionConfig };\n  }\n\n  private getLintConfig(): LintInputConfig {\n    return { lint: this.lint, linter: this.linter, lintConfig: this.lintConfig, lintGutter: this.lintGutter, lintKeymap: this.lintKeymap };\n  }\n\n  private getSearchConfig(): SearchExtensionConfig {\n    return { search: this.search, searchConfig: this.searchConfig, searchKeymap: this.searchKeymap };\n  }\n\n  private getFoldingConfig(): FoldingExtensionConfig {\n    return {\n      codeFolding: this.codeFolding,\n      codeFoldingConfig: this.codeFoldingConfig,\n      foldGutter: this.foldGutter,\n      foldGutterConfig: this.foldGutterConfig,\n      foldKeymap: this.foldKeymap\n    };\n  }\n\n  private getGutterConfig(): GutterExtensionConfig {\n    return {\n      customGutters: this.customGutters,\n      guttersFixed: this.guttersFixed,\n      breakpointGutter: this.breakpointGutter,\n      breakpointField: this.breakpointStateField,\n      toggleBreakpoint: (line: number) => this.toggleBreakpoint(line)\n    };\n  }\n\n  private getDecorationConfig(): DecorationExtensionConfig {\n    return {\n      decorations: this.decorations\n    };\n  }\n\n  private getTooltipConfig(): TooltipExtensionConfig {\n    return {\n      tooltips: this.tooltips,\n      tooltipConfig: this.tooltipConfig,\n      hoverTooltip: this.hoverTooltip,\n      hoverTooltipOptions: this.hoverTooltipOptions\n    };\n  }\n\n  private getStylingConfig(): StylingExtensionConfig {\n    return { editorAttributes: this.editorAttributes, contentAttributes: this.contentAttributes, baseTheme: this.baseTheme };\n  }\n\n  private createBreakpointPositions(state: EditorState, breakpoints: readonly number[]): readonly number[] {\n    return this.normalizeBreakpointPositions(\n      breakpoints\n        .filter((line) => Number.isInteger(line) && line >= 1 && line <= state.doc.lines)\n        .map((line) => state.doc.line(line).from)\n    );\n  }\n\n  private getBreakpointLineNumbers(state?: EditorState): readonly number[] {\n    if (!state) {\n      return this.normalizeBreakpointLineNumbers(this.breakpoints);\n    }\n\n    return this.normalizeBreakpointLineNumbers(state.field(this.breakpointStateField).map((position) => state.doc.lineAt(position).number));\n  }\n\n  private toggleBreakpointPosition(positions: readonly number[], position: number): readonly number[] {\n    const current = new Set(positions);\n    if (current.has(position)) {\n      current.delete(position);\n    } else {\n      current.add(position);\n    }\n\n    return this.normalizeBreakpointPositions([...current]);\n  }\n\n  private normalizeBreakpointPositions(positions: readonly number[]): readonly number[] {\n    return [...new Set(positions)].sort((left, right) => left - right);\n  }\n\n  private normalizeBreakpointLineNumbers(lines: readonly number[]): readonly number[] {\n    return [...new Set(lines)].sort((left, right) => left - right);\n  }\n\n  private setEditorContent(value: string): void {\n    if (!this.editorView) {\n      return;\n    }\n\n    const currentValue = this.editorView.state.doc.toString();\n    if (currentValue === value) {\n      return;\n    }\n\n    this.updatingContentFromModel = true;\n    try {\n      this.editorView.dispatch({\n        changes: {\n          from: 0,\n          to: this.editorView.state.doc.length,\n          insert: value\n        }\n      });\n    } finally {\n      this.updatingContentFromModel = false;\n    }\n  }\n\n  private destroyEditor(): void {\n    this.editorView?.destroy();\n    this.editorView = undefined;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CodemirrorComponent } from './ngx-codemirror6.component';\n\n/** Angular module that declares and exports the ngx-codemirror6 component. */\n@NgModule({\n  declarations: [CodemirrorComponent],\n  imports: [],\n  exports: [CodemirrorComponent]\n})\nexport class CodemirrorModule {}\n","/*\n * Public API Surface of ngx-codemirror6\n */\n\nexport {\n  CodemirrorComponent,\n  type CodemirrorAttributeSource,\n  type CodemirrorAutocompletionConfig,\n  type CodemirrorBaseTheme,\n  type CodemirrorCodeFoldingConfig,\n  type CodemirrorDecorationSource,\n  type CodemirrorFoldGutterConfig,\n  type CodemirrorFoldedRange,\n  type CodemirrorGutterConfig,\n  type CodemirrorHoverTooltipOptions,\n  type CodemirrorHoverTooltipSource,\n  type CodemirrorLintConfig,\n  type CodemirrorMarkedRange,\n  type CodemirrorSearchConfig,\n  type CodemirrorTooltipConfig,\n  type KeymapInput\n} from './lib/ngx-codemirror6.component';\nexport { CodemirrorModule } from './lib/ngx-codemirror6.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["codemirrorPlaceholder","codemirrorLineNumbers","codemirrorHighlightActiveLine","codemirrorHighlightActiveLineGutter","codemirrorBracketMatching","codemirrorHighlightSpecialChars","codemirrorHighlightWhitespace","codemirrorHighlightTrailingWhitespace","codemirrorScrollPastEnd","codemirrorIndentOnInput","codemirrorDrawSelection","codemirrorCodeFolding","codemirrorFoldGutter","codemirrorGutter","codemirrorGutters","codemirrorShowPanel","codemirrorTooltips","codemirrorShowTooltip","codemirrorHoverTooltip","codemirrorFoldCode","codemirrorUnfoldCode","codemirrorToggleFold","codemirrorFoldAll","codemirrorUnfoldAll","codemirrorFoldedRanges","codemirrorHasHoverTooltips","codemirrorActivateHover","codemirrorCloseHoverTooltips","codemirrorRepositionTooltips","codemirrorGetPanel"],"mappings":"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"}