@acrodata/code-editor
Version:
CodeMirror 6 wrapper for Angular
1 lines • 40.9 kB
Source Map (JSON)
{"version":3,"file":"acrodata-code-editor.mjs","sources":["../../../projects/code-editor/code-editor.ts","../../../projects/code-editor/diff-editor.ts","../../../projects/code-editor/code-editor-module.ts","../../../projects/code-editor/public-api.ts","../../../projects/code-editor/acrodata-code-editor.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n booleanAttribute,\n forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { indentWithTab } from '@codemirror/commands';\nimport { LanguageDescription, indentUnit } from '@codemirror/language';\nimport { Annotation, Compartment, EditorState, Extension, StateEffect } from '@codemirror/state';\nimport { oneDark } from '@codemirror/theme-one-dark';\nimport { EditorView, highlightWhitespace, keymap, placeholder } from '@codemirror/view';\nimport { basicSetup, minimalSetup } from 'codemirror';\n\nexport type Theme = 'light' | 'dark' | Extension;\nexport type Setup = 'basic' | 'minimal' | null;\n\nexport const External = Annotation.define<boolean>();\n\n@Component({\n selector: 'code-editor',\n standalone: true,\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(() => CodeEditor),\n multi: true,\n },\n ],\n})\nexport class CodeEditor implements OnChanges, OnInit, OnDestroy, ControlValueAccessor {\n /**\n * EditorView's [root](https://codemirror.net/docs/ref/#view.EditorView.root).\n *\n * Don't support change dynamically!\n */\n @Input() root?: Document | ShadowRoot;\n\n /**\n * Whether focus on the editor after init.\n *\n * Don't support change dynamically!\n */\n @Input({ transform: booleanAttribute }) autoFocus = false;\n\n /** The editor's value. */\n @Input() value = '';\n\n /** Whether the editor is disabled. */\n @Input({ transform: booleanAttribute }) disabled = false;\n\n /** Whether the editor is readonly. */\n @Input({ transform: booleanAttribute }) readonly = false;\n\n /** The editor's theme. */\n @Input() theme: Theme = 'light';\n\n /** The editor's placecholder. */\n @Input() placeholder = '';\n\n /** Whether indent with Tab key. */\n @Input({ transform: booleanAttribute }) indentWithTab = false;\n\n /** Should be a string consisting either entirely of the same whitespace character. */\n @Input() indentUnit = '';\n\n /** Whether the editor wraps lines. */\n @Input({ transform: booleanAttribute }) lineWrapping = false;\n\n /** Whether highlight the whitespace. */\n @Input({ transform: booleanAttribute }) highlightWhitespace = false;\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 @Input() languages: LanguageDescription[] = [];\n\n /** The editor's language. You should set the `languages` prop at first. */\n @Input() language = '';\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 @Input() setup: Setup = 'basic';\n\n /**\n * It will be appended to the root\n * [extensions](https://codemirror.net/docs/ref/#state.EditorStateConfig.extensions).\n */\n @Input() extensions: Extension[] = [];\n\n /** Event emitted when the editor's value changes. */\n @Output() change = new EventEmitter<string>();\n\n /** Event emitted when focus on the editor. */\n @Output() focus = new EventEmitter<void>();\n\n /** Event emitted when the editor has lost focus. */\n @Output() blur = new EventEmitter<void>();\n\n private _onChange: (value: string) => void = () => {};\n private _onTouched: () => void = () => {};\n\n constructor(private _elementRef: ElementRef<Element>) {}\n\n /**\n * The instance of [EditorView](https://codemirror.net/docs/ref/#view.EditorView).\n */\n 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() {\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 this.setup === 'basic' ? basicSetup : this.setup === 'minimal' ? minimalSetup : [],\n\n ...this.extensions,\n ];\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['value']) {\n this.setValue(this.value);\n }\n if (changes['disabled']) {\n this.setEditable(!this.disabled);\n }\n if (changes['readonly']) {\n this.setReadonly(this.readonly);\n }\n if (changes['theme']) {\n this.setTheme(this.theme);\n }\n if (changes['placeholder']) {\n this.setPlaceholder(this.placeholder);\n }\n if (changes['indentWithTab']) {\n this.setIndentWithTab(this.indentWithTab);\n }\n if (changes['indentUnit']) {\n this.setIndentUnit(this.indentUnit);\n }\n if (changes['lineWrapping']) {\n this.setLineWrapping(this.lineWrapping);\n }\n if (changes['highlightWhitespace']) {\n this.setHighlightWhitespace(this.highlightWhitespace);\n }\n if (changes['language']) {\n this.setLanguage(this.language);\n }\n if (changes['setup'] || changes['extensions']) {\n this.setExtensions(this._getAllExtensions());\n }\n }\n\n ngOnInit(): void {\n this.view = new EditorView({\n root: this.root,\n parent: this._elementRef.nativeElement,\n state: EditorState.create({ doc: this.value, extensions: this._getAllExtensions() }),\n });\n\n if (this.autoFocus) {\n this.view?.focus();\n }\n\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 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) {\n this.setValue(value);\n }\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 setValue(value: string) {\n this.view?.dispatch({\n changes: { from: 0, to: this.view.state.doc.length, insert: value },\n });\n }\n\n private _dispatchEffects(effects: StateEffect<any> | readonly StateEffect<any>[]) {\n return this.view?.dispatch({ effects });\n }\n\n /** Sets the root extensions of the editor. */\n setExtensions(value: Extension[]) {\n this._dispatchEffects(StateEffect.reconfigure.of(value));\n }\n\n /** Sets editor's editable state. */\n setEditable(value: boolean) {\n this._dispatchEffects(this._editableConf.reconfigure(EditorView.editable.of(value)));\n }\n\n /** Sets editor's readonly state. */\n setReadonly(value: boolean) {\n this._dispatchEffects(this._readonlyConf.reconfigure(EditorState.readOnly.of(value)));\n }\n\n /** Sets editor's theme. */\n setTheme(value: Theme) {\n this._dispatchEffects(\n this._themeConf.reconfigure(value === 'light' ? [] : value === 'dark' ? oneDark : value)\n );\n }\n\n /** Sets editor's placeholder. */\n setPlaceholder(value: string) {\n this._dispatchEffects(this._placeholderConf.reconfigure(value ? placeholder(value) : []));\n }\n\n /** Sets editor' indentWithTab. */\n setIndentWithTab(value: boolean) {\n this._dispatchEffects(\n this._indentWithTabConf.reconfigure(value ? keymap.of([indentWithTab]) : [])\n );\n }\n\n /** Sets editor's indentUnit. */\n setIndentUnit(value: string) {\n this._dispatchEffects(this._indentUnitConf.reconfigure(value ? indentUnit.of(value) : []));\n }\n\n /** Sets editor's lineWrapping. */\n setLineWrapping(value: boolean) {\n this._dispatchEffects(this._lineWrappingConf.reconfigure(value ? EditorView.lineWrapping : []));\n }\n\n /** Sets editor's highlightWhitespace. */\n setHighlightWhitespace(value: boolean) {\n this._dispatchEffects(\n this._highlightWhitespaceConf.reconfigure(value ? highlightWhitespace() : [])\n );\n }\n\n /** Sets editor's language dynamically. */\n setLanguage(lang: string) {\n if (!lang || lang == 'plaintext') {\n this._dispatchEffects(this._languageConf.reconfigure([]));\n return;\n }\n if (this.languages.length === 0) {\n if (this.view) {\n console.error('No supported languages. Please set the `languages` prop at first.');\n }\n return;\n }\n const langDesc = this._findLanguage(lang);\n langDesc?.load().then(lang => {\n this._dispatchEffects(this._languageConf.reconfigure([lang]));\n });\n }\n\n /** Find the language's extension by its name. Case insensitive. */\n private _findLanguage(name: string) {\n for (const lang of this.languages) {\n for (const alias of [lang.name, ...lang.alias]) {\n if (name.toLowerCase() === alias.toLowerCase()) {\n return lang;\n }\n }\n }\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","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n booleanAttribute,\n forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { DiffConfig, MergeView } from '@codemirror/merge';\nimport { Compartment, Extension } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\nimport { basicSetup, minimalSetup } from 'codemirror';\n\nimport { External, Setup } from './code-editor';\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 selector: 'diff-editor',\n standalone: true,\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(() => DiffEditor),\n multi: true,\n },\n ],\n})\nexport class DiffEditor implements OnChanges, OnInit, OnDestroy, ControlValueAccessor {\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 @Input() setup: Setup = 'basic';\n\n /** The diff-editor's original value. */\n @Input() originalValue: string = '';\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 @Input() originalExtensions: Extension[] = [];\n\n /** The diff-editor's modified value. */\n @Input() modifiedValue: string = '';\n\n /**\n * The MergeView modified config's\n * [extensions](https://codemirror.net/docs/ref/#state.EditorStateConfig.extensions).\n *\n * Don't support change dynamically!\n */\n @Input() modifiedExtensions: Extension[] = [];\n\n /** Controls whether editor A or editor B is shown first. Defaults to `\"a-b\"`. */\n @Input() orientation?: Orientation;\n\n /** Controls whether revert controls are shown between changed chunks. */\n @Input() revertControls?: RevertControls;\n\n /** When given, this function is called to render the button to revert a chunk. */\n @Input() renderRevertControl?: RenderRevertControl;\n\n /**\n * By default, the merge view will mark inserted and deleted text\n * in changed chunks. Set this to false to turn that off.\n */\n @Input({ transform: booleanAttribute }) highlightChanges = true;\n\n /** Controls whether a gutter marker is shown next to changed lines. */\n @Input({ transform: booleanAttribute }) gutter = true;\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 @Input() collapseUnchanged?: { margin?: number; minSize?: number };\n\n /** Pass options to the diff algorithm. */\n @Input() diffConfig?: DiffConfig;\n\n /** Event emitted when the editor's original value changes. */\n @Output() originalValueChange = new EventEmitter<string>();\n\n /** Event emitted when focus on the original editor. */\n @Output() originalFocus = new EventEmitter<void>();\n\n /** Event emitted when blur on the original editor. */\n @Output() originalBlur = new EventEmitter<void>();\n\n /** Event emitted when the editor's modified value changes. */\n @Output() modifiedValueChange = new EventEmitter<string>();\n\n /** Event emitted when focus on the modified editor. */\n @Output() modifiedFocus = new EventEmitter<void>();\n\n /** Event emitted when blur on the modified editor. */\n @Output() modifiedBlur = new EventEmitter<void>();\n\n private _onChange: (value: DiffEditorModel) => void = () => {};\n private _onTouched: () => void = () => {};\n\n constructor(private _elementRef: ElementRef<Element>) {}\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 if (editor == 'b') {\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\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['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['disabled']) {\n this.setEditable('a', !this.disabled);\n this.setEditable('b', !this.disabled);\n }\n }\n\n ngOnInit(): void {\n this.mergeView = new MergeView({\n parent: this._elementRef.nativeElement,\n a: {\n doc: this.originalValue,\n extensions: [\n this._updateListener('a'),\n this._editableConf.of([]),\n this.setup === 'basic' ? basicSetup : this.setup === 'minimal' ? minimalSetup : [],\n ...this.originalExtensions,\n ],\n },\n b: {\n doc: this.modifiedValue,\n extensions: [\n this._updateListener('b'),\n this._editableConf.of([]),\n this.setup === 'basic' ? basicSetup : this.setup === 'minimal' ? minimalSetup : [],\n ...this.modifiedExtensions,\n ],\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 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 this.setEditable('a', !this.disabled);\n this.setEditable('b', !this.disabled);\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('a', !isDisabled);\n this.setEditable('b', !isDisabled);\n }\n\n /** Sets diff-editor's value. */\n 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 diff-editor's editable state. */\n setEditable(editor: 'a' | 'b', value: boolean) {\n this.mergeView?.[editor].dispatch({\n effects: this._editableConf.reconfigure(EditorView.editable.of(value)),\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CodeEditor } from './code-editor';\nimport { DiffEditor } from './diff-editor';\n\n@NgModule({\n imports: [CodeEditor, DiffEditor],\n exports: [CodeEditor, DiffEditor],\n})\nexport class CodeEditorModule {}\n","/*\n * Public API Surface of code-editor\n */\n\nexport * from './code-editor-module';\nexport * from './code-editor';\nexport * from './diff-editor';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}