ngx-jodit-pro
Version:
Angular wrapper for Jodit Pro WYSIWYG editor
1 lines • 15.8 kB
Source Map (JSON)
{"version":3,"file":"ngx-jodit-pro.mjs","sources":["../../../../libs/ngx-jodit-pro/src/lib/ngx-jodit-pro.component.ts","../../../../libs/ngx-jodit-pro/src/lib/ngx-jodit-pro.component.html","../../../../libs/ngx-jodit-pro/src/ngx-jodit-pro.ts"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {IViewOptionsPro} from 'jodit-pro/types/types/view';\nimport {IViewOptions} from 'jodit/types/types';\nimport {IJodit} from 'jodit/types/types/jodit';\nimport {ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, delay, distinctUntilChanged, filter, Subscription, withLatestFrom} from 'rxjs';\n\ndeclare const Jodit: any;\nexport type JoditProConfig = Partial<IViewOptions & IViewOptionsPro & Record<string, any>>;\n\n@Component({\n selector: 'ngx-jodit-pro',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './ngx-jodit-pro.component.html',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgxJoditProComponent),\n multi: true\n }],\n styleUrls: ['./ngx-jodit-pro.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgxJoditProComponent implements ControlValueAccessor, AfterViewInit, OnDestroy {\n @ViewChild('joditContainer', {static: false}) joditContainer!: ElementRef;\n jodit?: IJodit;\n\n /**\n * options for jodit pro. It's of type partial because Config is imported from jodit packge and doesn't contain jodit-pro options.\n * You can add more supported options even Typescript doesn't suggest the options.\n */\n private _options?: JoditProConfig = {};\n @Input() set options(value: JoditProConfig) {\n this._options = value;\n\n if (value) {\n this.initJoditContainer().then();\n }\n }\n\n // value property (subject)\n private valueSubject: BehaviorSubject<string> = new BehaviorSubject<string>('');\n\n @Input() set value(value: string) {\n const sanitizedText = this.prepareText(value);\n if (!this.internValueChange) {\n this.valueSubject.next(sanitizedText);\n } else {\n this.internValueChange = false;\n }\n this.onChange(sanitizedText);\n }\n\n get value(): string {\n return this.valueSubject.getValue();\n }\n\n @Output() valueChange = new EventEmitter<string>();\n\n //events\n @Output() joditChange = new EventEmitter<string>();\n @Output() joditKeyDown = new EventEmitter<KeyboardEvent>();\n @Output() joditKeyUp = new EventEmitter<KeyboardEvent>();\n @Output() joditMousedown = new EventEmitter<MouseEvent>();\n @Output() joditMouseup = new EventEmitter<MouseEvent>();\n @Output() joditClick = new EventEmitter<PointerEvent>();\n @Output() joditFocus = new EventEmitter<FocusEvent>();\n @Output() joditPaste = new EventEmitter<ClipboardEvent>();\n @Output() joditResize = new EventEmitter<void>();\n @Output() joditBeforeEnter = new EventEmitter<KeyboardEvent>();\n @Output() joditBeforeCommand = new EventEmitter<string>();\n @Output() joditAfterExec = new EventEmitter<void>();\n @Output() joditAfterPaste = new EventEmitter<ClipboardEvent>();\n @Output() joditChangeSelection = new EventEmitter<void>();\n\n // Used for delay value assignment to wait for jodit to be initialized\n private joditInitializedSubject: BehaviorSubject<boolean> = new BehaviorSubject(false);\n private valueSubscription?: Subscription;\n private internValueChange = false;\n\n constructor(\n private readonly cdr: ChangeDetectorRef,\n ) {\n this.valueSubscription = combineLatest([\n // Handle value changes ...\n this.valueSubject.asObservable().pipe(distinctUntilChanged()),\n // ...additionally ensuring that the value is reapplied if the editor was not initialized when value was set\n this.joditInitializedSubject.pipe(distinctUntilChanged(), filter(initialized => initialized))\n ]).pipe(\n // Pass through the latest value in case of editor initialization\n withLatestFrom(this.valueSubject),\n // Prevent ExpressionChangedAfterItHasBeenCheckedError\n delay(0)\n ).subscribe(([[_, initialized], text]) => {\n if (this.jodit && initialized) {\n this.jodit.setEditorValue(text);\n }\n });\n }\n\n isHTML(text: string) {\n const elem = document.createElement('div');\n elem.innerHTML = text;\n\n return (\n text &&\n elem.childNodes.length > 0 &&\n elem.childNodes.item(0).nodeType !== 3\n );\n }\n\n async ngAfterViewInit() {\n await this.initJoditContainer();\n }\n\n ngOnDestroy() {\n this.valueSubscription?.unsubscribe();\n this.jodit?.events.destruct();\n }\n\n async initJoditContainer() {\n if (this.joditContainer?.nativeElement) {\n if (this.jodit) {\n this.jodit.destruct();\n this.joditInitializedSubject.next(false);\n }\n this.jodit = Jodit.make(this.joditContainer.nativeElement, this._options) as IJodit;\n await this.jodit.waitForReady();\n this.jodit.setEditorValue(this.valueSubject.getValue());\n\n this.jodit.events.on('change', (text: string) => {\n this.internValueChange = true;\n this.changeValue(text);\n this.joditChange.emit(text);\n this.onChange(text);\n });\n this.jodit.events.on('keydown', (a: KeyboardEvent) => {\n this.joditKeyDown.emit(a);\n });\n this.jodit.events.on('keyup', (a: KeyboardEvent) => {\n this.joditKeyUp.emit(a);\n });\n this.jodit.events.on('mousedown', (a: MouseEvent) => {\n this.joditMousedown.emit(a);\n });\n this.jodit.events.on('mouseup', (a: MouseEvent) => {\n this.joditMouseup.emit(a);\n });\n this.jodit.events.on('click', (a: PointerEvent) => {\n this.joditClick.emit(a);\n this.onTouched();\n });\n this.jodit.events.on('focus', (a: FocusEvent) => {\n this.joditFocus.emit(a);\n });\n this.jodit.events.on('paste', (a: ClipboardEvent) => {\n this.joditPaste.emit(a);\n });\n this.jodit.events.on('resize', () => {\n this.joditResize.emit();\n });\n this.jodit.events.on('beforeEnter', (a: KeyboardEvent) => {\n this.joditBeforeEnter.emit(a);\n });\n this.jodit.events.on('beforeCommand', (a: string) => {\n this.joditBeforeCommand.emit(a);\n });\n this.jodit.events.on('afterExec', () => {\n this.joditAfterExec.emit();\n });\n this.jodit.events.on('afterPaste', (a: ClipboardEvent) => {\n this.joditAfterPaste.emit(a);\n });\n this.jodit.events.on('changeSelection', () => {\n this.joditChangeSelection.emit();\n });\n\n this.joditInitializedSubject.next(true);\n }\n }\n\n changeValue(value: string) {\n this.valueChange.emit(value);\n }\n\n /*\n FUNCTIONS RELEVANT FOR ANGULAR FORMS\n */\n\n onChange = (text: string) => {\n // implemented by user\n };\n\n onTouched = () => {\n // implemented by user\n };\n\n writeValue(text: string): void {\n this.valueSubject.next(this.prepareText(text));\n }\n\n registerOnChange(fn: (text: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.options = {\n ...this._options,\n disabled: isDisabled\n };\n }\n\n private prepareText(text: string) {\n return this.isHTML(text) ? text : `<p>${text}</p>`;\n }\n}\n","<textarea class=\"ngx-jodit-container\" #joditContainer></textarea>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}