@fsegurai/ngx-codemirror
Version:
Angular library that uses codemirror to create a code editor
1 lines • 44.8 kB
Source Map (JSON)
{"version":3,"file":"fsegurai-ngx-codemirror.mjs","sources":["../../../lib/src/code-diff-editor/code-diff-editor.component.ts","../../../lib/src/code-editor/code-editor.component.ts","../../../lib/src/code-editor-module.ts","../../../lib/public_api.ts","../../../lib/fsegurai-ngx-codemirror.ts"],"sourcesContent":["import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n forwardRef,\n inject,\n input,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n output,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DiffConfig, MergeView } from '@codemirror/merge';\nimport { Compartment, Extension, StateEffect } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\nimport { basicSetup, minimalSetup } from 'codemirror';\nimport { External, Setup, Theme } from 'ngx-codemirror';\n\nexport type Orientation = 'a-b' | 'b-a';\nexport type RevertControls = 'a-to-b' | 'b-to-a';\nexport type RenderRevertControl = () => HTMLElement;\n\nexport interface DiffEditorModel {\n original: string;\n modified: string;\n}\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ngx-code-diff-editor, code-diff-editor, [diff-editor]',\n imports: [],\n template: '',\n styles: `\n .diff-editor {\n display: block;\n\n .cm-mergeView,\n .cm-mergeViewEditors {\n height: 100%;\n }\n\n .cm-mergeView .cm-editor,\n .cm-mergeView .cm-scroller {\n height: 100% !important;\n }\n }\n `,\n host: {\n class: 'diff-editor',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CodeDiffEditorComponent),\n multi: true,\n },\n ],\n})\nexport class CodeDiffEditorComponent implements OnChanges, OnInit, OnDestroy, ControlValueAccessor {\n private _elementRef = inject<ElementRef<Element>>(ElementRef);\n\n /** The editor's theme. */\n readonly theme = input<Theme>('light');\n\n /**\n * The editor's built-in setup. The value can be set to\n * [`basic`](https://codemirror.net/docs/ref/#codemirror.basicSetup),\n * [`minimal`](https://codemirror.net/docs/ref/#codemirror.minimalSetup) or `null`.\n *\n * Don't support change dynamically!\n */\n readonly setup = input<Setup>('basic');\n\n /** The diff-editor's original value. */\n @Input() originalValue = '';\n\n /**\n * The MergeView original config's\n * [extensions](https://codemirror.net/docs/ref/#state.EditorStateConfig.extensions).\n *\n * Don't support change dynamically!\n */\n readonly originalExtensions = input<Extension[]>([]);\n\n /** The diff-editor's modified value. */\n @Input() modifiedValue = '';\n\n /**\n * The MergeView modified config's\n * [extensions](https://codemirror.net/docs/ref/#state.EditorStateConfig.extensions).\n */\n readonly modifiedExtensions = input<Extension[]>([]);\n\n /** Controls whether editor A or editor B is shown first. Defaults to `\"a-b\"`. */\n readonly orientation = input<Orientation>();\n\n /** Controls whether revert controls are shown between changed chunks. */\n readonly revertControls = input<RevertControls>();\n\n /** When given, this function is called to render the button to revert a chunk. */\n readonly renderRevertControl = input<RenderRevertControl>();\n\n /**\n * By default, the merge view will mark inserted and deleted text\n * in changed chunks. Set this to false in order to turn that off.\n */\n readonly highlightChanges = input(true, { transform: booleanAttribute });\n\n /** Controls whether a gutter marker is shown next to changed lines. */\n readonly gutter = input(true, { transform: booleanAttribute });\n\n /** Whether the diff-editor is disabled. */\n @Input({ transform: booleanAttribute }) disabled = false;\n\n /**\n * When given, long stretches of unchanged text are collapsed.\n * `margin` gives the number of lines to leave visible after/before\n * a change (default is 3), and `minSize` gives the minimum amount\n * of collapsible lines that need to be present (defaults to 4).\n */\n readonly collapseUnchanged = input<{\n margin?: number;\n minSize?: number;\n }>();\n\n /** Pass options to the diff algorithm. */\n readonly diffConfig = input<DiffConfig>();\n\n /** Event emitted when the editor's original value changes. */\n readonly originalValueChange = output<string>();\n\n /** Event emitted when focus on the original editor. */\n readonly originalFocus = output<void>();\n\n /** Event emitted when blur on the original editor. */\n readonly originalBlur = output<void>();\n\n /** Event emitted when the editor's modified value changes. */\n readonly modifiedValueChange = output<string>();\n\n /** Event emitted when focus on the modified editor. */\n readonly modifiedFocus = output<void>();\n\n /** Event emitted when blur on the modified editor. */\n readonly modifiedBlur = output<void>();\n\n private _onChange: (value: DiffEditorModel) => void = () => {\n // Intentionally left blank\n };\n private _onTouched: () => void = () => {\n // Intentionally left blank\n };\n\n /** The merge view instance. */\n mergeView?: MergeView;\n\n private _updateListener = (editor: 'a' | 'b') => {\n return EditorView.updateListener.of(vu => {\n if (vu.docChanged && !vu.transactions.some(tr => tr.annotation(External))) {\n const value = vu.state.doc.toString();\n if (editor == 'a') {\n this._onChange({ original: value, modified: this.modifiedValue });\n this.originalValue = value;\n this.originalValueChange.emit(value);\n } else {\n this._onChange({ original: this.originalValue, modified: value });\n this.modifiedValue = value;\n this.modifiedValueChange.emit(value);\n }\n }\n });\n };\n\n private _editableConf = new Compartment();\n private _themeConf = new Compartment();\n\n private _getAllExtensions(editor: 'a' | 'b'): Extension[] {\n const setup = this.setup();\n return [\n this._editableConf.of([]),\n this._themeConf.of([]),\n\n this._updateListener(editor),\n setup === 'basic' ? basicSetup : setup === 'minimal' ? minimalSetup : [],\n ...(editor === 'a' ? this.originalExtensions() : this.modifiedExtensions()),\n ];\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['originalValue']) {\n this.setValue('a', this.originalValue);\n }\n if (changes['modifiedValue']) {\n this.setValue('b', this.modifiedValue);\n }\n if (changes['disabled']) {\n this.setEditable(!this.disabled);\n }\n if (changes['theme']) {\n this.setTheme(this.theme());\n }\n this.reconfigureMergeView(changes);\n }\n\n ngOnInit(): void {\n this.initializeMergeView();\n this.addEventListeners();\n this.setEditable(!this.disabled);\n this.setTheme(this.theme());\n }\n\n ngOnDestroy(): void {\n this.mergeView?.destroy();\n }\n\n writeValue(value: DiffEditorModel): void {\n if (this.mergeView && value != null && typeof value === 'object') {\n this.originalValue = value.original;\n this.modifiedValue = value.modified;\n this.setValue('a', value.original);\n this.setValue('b', value.modified);\n }\n }\n\n registerOnChange(fn: (value: DiffEditorModel) => void) {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.setEditable(!isDisabled);\n }\n\n /** Sets diff-editor's value. */\n private setValue(editor: 'a' | 'b', value: string) {\n this.mergeView?.[editor].dispatch({\n changes: { from: 0, to: this.mergeView[editor].state.doc.length, insert: value },\n });\n }\n\n /** Sets editor's editable state. */\n private setEditable(value: boolean) {\n this._dispatchEffects(this._editableConf.reconfigure(EditorView.editable.of(value)));\n }\n\n /** Sets editor's theme. */\n private setTheme(value: Theme) {\n this._dispatchEffects(this._themeConf.reconfigure(value === 'light' ? [] : value));\n }\n\n /** Sets the root extensions of the editor state. */\n private setExtensions(editor: 'a' | 'b', value: Extension[]) {\n this.mergeView?.[editor].dispatch({\n effects: StateEffect.reconfigure.of(value),\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _dispatchEffects(effects: StateEffect<any> | readonly StateEffect<any>[]) {\n this.mergeView?.a.dispatch({ effects });\n this.mergeView?.b.dispatch({ effects });\n }\n\n private initializeMergeView() {\n this.mergeView = new MergeView({\n parent: this._elementRef.nativeElement,\n a: {\n doc: this.originalValue,\n extensions: this._getAllExtensions('a'),\n },\n b: {\n doc: this.modifiedValue,\n extensions: this._getAllExtensions('b'),\n },\n orientation: this.orientation(),\n revertControls: this.revertControls(),\n renderRevertControl: this.renderRevertControl(),\n highlightChanges: this.highlightChanges(),\n gutter: this.gutter(),\n collapseUnchanged: this.collapseUnchanged(),\n diffConfig: this.diffConfig(),\n });\n }\n\n private addEventListeners() {\n this.mergeView?.a.contentDOM.addEventListener('focus', () => {\n this._onTouched();\n this.originalFocus.emit();\n });\n\n this.mergeView?.a.contentDOM.addEventListener('blur', () => {\n this._onTouched();\n this.originalBlur.emit();\n });\n\n this.mergeView?.b.contentDOM.addEventListener('focus', () => {\n this._onTouched();\n this.modifiedFocus.emit();\n });\n\n this.mergeView?.b.contentDOM.addEventListener('blur', () => {\n this._onTouched();\n this.modifiedBlur.emit();\n });\n }\n\n private reconfigureMergeView(changes: SimpleChanges) {\n if (changes['orientation']) {\n this.mergeView?.reconfigure({ orientation: this.orientation() });\n }\n if (changes['revertControls']) {\n this.mergeView?.reconfigure({ revertControls: this.revertControls() });\n }\n if (changes['renderRevertControl']) {\n this.mergeView?.reconfigure({ renderRevertControl: this.renderRevertControl() });\n }\n if (changes['highlightChanges']) {\n this.mergeView?.reconfigure({ highlightChanges: this.highlightChanges() });\n }\n if (changes['gutter']) {\n this.mergeView?.reconfigure({ gutter: this.gutter() });\n }\n if (changes['collapseUnchanged']) {\n this.mergeView?.reconfigure({ collapseUnchanged: this.collapseUnchanged() });\n }\n if (changes['diffConfig']) {\n this.mergeView?.reconfigure({ diffConfig: this.diffConfig() });\n }\n if (changes['setup'] || changes['originalExtensions'] || changes['modifiedExtensions']) {\n this.setExtensions('a', this._getAllExtensions('a'));\n this.setExtensions('b', this._getAllExtensions('b'));\n }\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n forwardRef,\n inject,\n input,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n output,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { indentWithTab } from '@codemirror/commands';\nimport { indentUnit, LanguageDescription } from '@codemirror/language';\nimport { Annotation, Compartment, EditorState, Extension, StateEffect } from '@codemirror/state';\nimport { EditorView, highlightWhitespace, keymap, placeholder } from '@codemirror/view';\nimport { basicSetup, minimalSetup } from 'codemirror';\n\nexport type Theme = 'light' | Extension;\nexport type Setup = 'basic' | 'minimal' | null;\n\nexport const External = Annotation.define<boolean>();\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ngx-code-editor, code-editor, [code-editor]',\n imports: [],\n template: '',\n styles: `\n .code-editor {\n display: block;\n\n .cm-editor {\n height: 100%;\n }\n }\n `,\n host: {\n class: 'code-editor',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CodeEditorComponent),\n multi: true,\n },\n ],\n})\nexport class CodeEditorComponent implements OnChanges, OnInit, OnDestroy, ControlValueAccessor {\n private _elementRef = inject<ElementRef<Element>>(ElementRef);\n\n /**\n * EditorView's [root](https://codemirror.net/docs/ref/#view.EditorView.root).\n *\n * Don't support change dynamically!\n */\n readonly root = input<Document | ShadowRoot>();\n\n /**\n * Whether focus on the editor after init.\n *\n * Don't support change dynamically!\n */\n readonly autoFocus = input(false, { transform: booleanAttribute });\n\n /** The editor's value. */\n readonly value = input('');\n\n /** Whether the editor is disabled. */\n @Input({ transform: booleanAttribute }) disabled = false;\n\n /** Whether the editor is readonly. */\n readonly readonly = input(false, { transform: booleanAttribute });\n\n /** The editor's theme. */\n readonly theme = input<Theme>('light');\n\n /** The editor's placeholder. */\n readonly placeholder = input('');\n\n /** Whether indent with Tab key. */\n readonly indentWithTab = input(false, { transform: booleanAttribute });\n\n /** Should be a string consisting either entirely of the same whitespace character. */\n readonly indentUnit = input(0);\n\n /** Whether the editor wraps lines. */\n readonly lineWrapping = input(false, { transform: booleanAttribute });\n\n /** Whether highlight the whitespace. */\n readonly highlightWhitespace = input(false, { transform: booleanAttribute });\n\n /**\n * An array of language descriptions for known\n * [language-data](https://github.com/codemirror/language-data/blob/main/src/language-data.ts).\n *\n * Don't support change dynamically!\n */\n readonly languages = input<LanguageDescription[]>([]);\n\n /** The editor's language. You should set the `languages` prop at first. */\n readonly language = input('');\n\n /**\n * The editor's built-in setup. The value can be set to\n * [`basic`](https://codemirror.net/docs/ref/#codemirror.basicSetup),\n * [`minimal`](https://codemirror.net/docs/ref/#codemirror.minimalSetup) or `null`.\n */\n readonly setup = input<Setup>('basic');\n\n /**\n * It will be appended to the root\n * [extensions](https://codemirror.net/docs/ref/#state.EditorStateConfig.extensions).\n */\n readonly extensions = input<Extension[]>([]);\n\n /** Event emitted when the editor's value changes. */\n readonly change = output<string>();\n\n /** Event emitted when focus on the editor. */\n readonly focus = output<void>();\n\n /** Event emitted when the editor has lost focus. */\n readonly blur = output<void>();\n\n private _onChange: (value: string) => void = () => {\n // Intentionally left blank\n };\n private _onTouched: () => void = () => {\n // Intentionally left blank\n };\n\n /**\n * The instance of [EditorView](https://codemirror.net/docs/ref/#view.EditorView).\n */\n private view?: EditorView;\n\n private _updateListener = EditorView.updateListener.of(vu => {\n if (vu.docChanged && !vu.transactions.some(tr => tr.annotation(External))) {\n const value = vu.state.doc.toString();\n this._onChange(value);\n this.change.emit(value);\n }\n });\n\n // Extension compartments can be used to make a configuration dynamic.\n // https://codemirror.net/docs/ref/#state.Compartment\n private _editableConf = new Compartment();\n private _readonlyConf = new Compartment();\n private _themeConf = new Compartment();\n private _placeholderConf = new Compartment();\n private _indentWithTabConf = new Compartment();\n private _indentUnitConf = new Compartment();\n private _lineWrappingConf = new Compartment();\n private _highlightWhitespaceConf = new Compartment();\n private _languageConf = new Compartment();\n\n private _getAllExtensions(): Extension[] {\n const setup = this.setup();\n return [\n this._updateListener,\n\n this._editableConf.of([]),\n this._readonlyConf.of([]),\n this._themeConf.of([]),\n this._placeholderConf.of([]),\n this._indentWithTabConf.of([]),\n this._indentUnitConf.of([]),\n this._lineWrappingConf.of([]),\n this._highlightWhitespaceConf.of([]),\n this._languageConf.of([]),\n\n setup === 'basic' ? basicSetup : setup === 'minimal' ? minimalSetup : [],\n\n ...this.extensions(),\n ];\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['value']) this.setValue(this.value());\n if (changes['disabled']) this.setEditable(!this.disabled);\n if (changes['readonly']) this.setReadonly(this.readonly());\n if (changes['theme']) this.setTheme(this.theme());\n if (changes['placeholder']) this.setPlaceholder(this.placeholder());\n if (changes['indentWithTab']) this.setIndentWithTab(this.indentWithTab());\n if (changes['indentUnit']) this.setIndentUnit(this.indentUnit());\n if (changes['lineWrapping']) this.setLineWrapping(this.lineWrapping());\n if (changes['highlightWhitespace']) this.setHighlightWhitespace(this.highlightWhitespace());\n if (changes['language']) this.setLanguage(this.language());\n if (changes['setup'] || changes['extensions']) this.setExtensions(this._getAllExtensions());\n }\n\n ngOnInit(): void {\n this.view = new EditorView({\n root: this.root(),\n parent: this._elementRef.nativeElement,\n state: EditorState.create({\n doc: this.value(),\n extensions: this._getAllExtensions(),\n }),\n });\n\n if (this.autoFocus()) this.view?.focus();\n\n this.addEventListeners();\n\n this.setEditable(!this.disabled);\n this.setReadonly(this.readonly());\n this.setTheme(this.theme());\n this.setPlaceholder(this.placeholder());\n this.setIndentWithTab(this.indentWithTab());\n this.setIndentUnit(this.indentUnit());\n this.setLineWrapping(this.lineWrapping());\n this.setHighlightWhitespace(this.highlightWhitespace());\n this.setLanguage(this.language());\n }\n\n ngOnDestroy(): void {\n this.view?.destroy();\n }\n\n writeValue(value: string): void {\n if (this.view) this.setValue(value);\n }\n\n registerOnChange(fn: (value: string) => void) {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.setEditable(!isDisabled);\n }\n\n /** Sets editor's value. */\n private setValue(value: string) {\n this.view?.dispatch({\n changes: { from: 0, to: this.view.state.doc.length, insert: value },\n });\n }\n\n /** Sets editor's editable state. */\n private setEditable(value: boolean) {\n this._dispatchEffects(this._editableConf.reconfigure(EditorView.editable.of(value)));\n }\n\n /** Sets editor's readonly state. */\n private setReadonly(value: boolean) {\n this._dispatchEffects(this._readonlyConf.reconfigure(EditorState.readOnly.of(value)));\n }\n\n /** Sets editor's theme. */\n private setTheme(value: Theme) {\n this._dispatchEffects(\n this._themeConf.reconfigure(value === 'light' ? [] : value),\n );\n }\n\n /** Sets editor's placeholder. */\n private setPlaceholder(value: string) {\n this._dispatchEffects(this._placeholderConf.reconfigure(value ? placeholder(value) : []));\n }\n\n /** Sets editor' indentWithTab. */\n private setIndentWithTab(value: boolean) {\n this._dispatchEffects(\n this._indentWithTabConf.reconfigure(value ? keymap.of([indentWithTab]) : []),\n );\n }\n\n /** Sets editor's indentUnit. */\n private setIndentUnit(value: number) {\n const spaceCount = Array.from({ length: value }).map(() => ' ').join('');\n this._dispatchEffects(this._indentUnitConf.reconfigure(value ? indentUnit.of(spaceCount) : []));\n }\n\n /** Sets editor's lineWrapping. */\n private setLineWrapping(value: boolean) {\n this._dispatchEffects(this._lineWrappingConf.reconfigure(value ? EditorView.lineWrapping : []));\n }\n\n /** Sets editor's highlightWhitespace. */\n private setHighlightWhitespace(value: boolean) {\n this._dispatchEffects(\n this._highlightWhitespaceConf.reconfigure(value ? highlightWhitespace() : []),\n );\n }\n\n /** Sets the root extensions of the editor. */\n private setExtensions(value: Extension[]) {\n this._dispatchEffects(StateEffect.reconfigure.of(value));\n }\n\n /** Sets editor's language dynamically. */\n private setLanguage(lang: string) {\n if (!lang || lang === 'Plain Text') {\n this._dispatchEffects(this._languageConf.reconfigure([]));\n return;\n }\n\n if (this.languages().length === 0) {\n if (this.view) console.error('No supported languages. Please set the `languages` prop at first.');\n return;\n }\n\n const langDesc = this._findLanguage(lang);\n if (langDesc) {\n langDesc.load().then(lang => {\n this._dispatchEffects(this._languageConf.reconfigure([lang]));\n });\n }\n }\n\n /** Find the language's extension by its name. Case-insensitive. */\n private _findLanguage(name: string) {\n const normalizedInput = name.toLowerCase();\n const lang = this.languages().find(lang =>\n [lang.name, ...lang.alias].some(alias => normalizedInput === alias.toLowerCase()),\n );\n\n if (!lang) {\n console.error('Language not found:', name);\n console.info('Supported language names:', this.languages().map(lang => lang.name).join(', '));\n return null;\n }\n\n return lang;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _dispatchEffects(effects: StateEffect<any> | readonly StateEffect<any>[]) {\n return this.view?.dispatch({ effects });\n }\n\n private addEventListeners() {\n this.view?.contentDOM.addEventListener('focus', () => {\n this._onTouched();\n this.focus.emit();\n });\n\n this.view?.contentDOM.addEventListener('blur', () => {\n this._onTouched();\n this.blur.emit();\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CodeDiffEditorComponent } from './code-diff-editor/code-diff-editor.component';\nimport { CodeEditorComponent } from './code-editor/code-editor.component';\n\nconst sharedDeclarations = [\n CodeEditorComponent,\n CodeDiffEditorComponent,\n];\n\n@NgModule({\n imports: [...sharedDeclarations],\n exports: sharedDeclarations,\n})\nexport class CodeEditorModule {\n}","/*\n * Public API Surface of code-editor\n */\n\nexport * from './src/index';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["External"],"mappings":"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"}