@firestitch/markdown-editor 18.0.0 → 18.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12,68 +12,77 @@ import { DomSanitizer } from '@angular/platform-browser';
12
12
  const FS_MARKDOWN_EDITOR_DEFAULT_CONFIG = new InjectionToken('fs-markdown-editor.default-config');
13
13
  const FS_MARKDOWN_EDITOR_CONFIG = new InjectionToken('fs-markdown-editor.config');
14
14
 
15
- const THEME_BASE = '/assets/milkdown/theme/';
15
+ const ASSET_BASE = '/assets/markdown-editor/';
16
16
  const STYLESHEETS = [
17
- `${THEME_BASE}common/block-edit.css`,
18
- `${THEME_BASE}common/code-mirror.css`,
19
- `${THEME_BASE}common/cursor.css`,
20
- `${THEME_BASE}common/image-block.css`,
21
- `${THEME_BASE}common/latex.css`,
22
- `${THEME_BASE}common/link-tooltip.css`,
23
- `${THEME_BASE}common/list-item.css`,
24
- `${THEME_BASE}common/placeholder.css`,
25
- `${THEME_BASE}common/toolbar.css`,
26
- `${THEME_BASE}common/table.css`,
17
+ `${ASSET_BASE}theme/common/block-edit.css`,
18
+ `${ASSET_BASE}theme/common/code-mirror.css`,
19
+ `${ASSET_BASE}theme/common/cursor.css`,
20
+ `${ASSET_BASE}theme/common/image-block.css`,
21
+ `${ASSET_BASE}theme/common/latex.css`,
22
+ `${ASSET_BASE}theme/common/link-tooltip.css`,
23
+ `${ASSET_BASE}theme/common/list-item.css`,
24
+ `${ASSET_BASE}theme/common/placeholder.css`,
25
+ `${ASSET_BASE}theme/common/toolbar.css`,
26
+ `${ASSET_BASE}theme/common/table.css`,
27
27
  ];
28
+ const SCRIPT = `${ASSET_BASE}milkdown.js`;
28
29
  class FsMilkdownLoaderService {
29
30
  _document = inject(DOCUMENT);
30
31
  _loaded = new BehaviorSubject(false);
31
- _stylesLoaded = false;
32
+ _loading = false;
32
33
  _loaded$ = this._loaded.asObservable()
33
34
  .pipe(shareReplay(1));
34
35
  get loaded$() {
35
36
  return this._loaded$;
36
37
  }
37
- loadStyles() {
38
- if (this._stylesLoaded) {
39
- this._loaded.next(true);
40
- return;
41
- }
42
- let remaining = STYLESHEETS.length;
43
- if (remaining === 0) {
44
- this._stylesLoaded = true;
45
- this._loaded.next(true);
38
+ load() {
39
+ if (this._loaded.value || this._loading) {
40
+ if (this._loaded.value) {
41
+ this._loaded.next(true);
42
+ }
46
43
  return;
47
44
  }
45
+ this._loading = true;
46
+ let stylesRemaining = STYLESHEETS.length;
47
+ let scriptDone = false;
48
+ const checkComplete = () => {
49
+ if (stylesRemaining === 0 && scriptDone) {
50
+ this._loading = false;
51
+ this._loaded.next(true);
52
+ }
53
+ };
54
+ const onStyleDone = () => {
55
+ stylesRemaining--;
56
+ checkComplete();
57
+ };
48
58
  STYLESHEETS.forEach((href) => {
49
- const existing = this._document.querySelector(`link[href="${href}"]`);
50
- if (existing) {
51
- remaining--;
52
- if (remaining === 0) {
53
- this._stylesLoaded = true;
54
- this._loaded.next(true);
55
- }
59
+ if (this._document.querySelector(`link[href="${href}"]`)) {
60
+ onStyleDone();
56
61
  return;
57
62
  }
58
63
  const link = this._document.createElement('link');
59
64
  link.rel = 'stylesheet';
60
65
  link.href = href;
61
- link.onload = () => {
62
- remaining--;
63
- if (remaining === 0) {
64
- this._stylesLoaded = true;
65
- this._loaded.next(true);
66
- }
67
- };
68
- link.onerror = () => {
69
- remaining--;
70
- if (remaining === 0) {
71
- this._stylesLoaded = true;
72
- this._loaded.next(true);
73
- }
74
- };
66
+ link.onload = onStyleDone;
67
+ link.onerror = onStyleDone;
75
68
  this._document.head.appendChild(link);
76
69
  });
70
+ if (this._document.querySelector(`script[src="${SCRIPT}"]`)) {
71
+ scriptDone = true;
72
+ checkComplete();
73
+ return;
74
+ }
75
+ const script = this._document.createElement('script');
76
+ script.src = SCRIPT;
77
+ script.onload = () => {
78
+ scriptDone = true;
79
+ checkComplete();
80
+ };
81
+ script.onerror = () => {
82
+ scriptDone = true;
83
+ checkComplete();
84
+ };
85
+ this._document.head.appendChild(script);
77
86
  }
78
87
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsMilkdownLoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
79
88
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsMilkdownLoaderService, providedIn: 'root' });
@@ -86,10 +95,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
86
95
  }] });
87
96
 
88
97
  class FsMarkdownEditorComponent {
89
- _defaultConfig = inject(FS_MARKDOWN_EDITOR_CONFIG, { optional: true });
90
- _cdRef = inject(ChangeDetectorRef);
91
- _loader = inject(FsMilkdownLoaderService);
92
- _zone = inject(NgZone);
93
98
  editorRef;
94
99
  classFocused = false;
95
100
  config = {};
@@ -104,12 +109,16 @@ class FsMarkdownEditorComponent {
104
109
  _markdown = '';
105
110
  _editorReady = false;
106
111
  _destroy$ = new Subject();
112
+ _defaultConfig = inject(FS_MARKDOWN_EDITOR_CONFIG, { optional: true });
113
+ _cdRef = inject(ChangeDetectorRef);
114
+ _loader = inject(FsMilkdownLoaderService);
115
+ _zone = inject(NgZone);
107
116
  get markdown() {
108
117
  return this._markdown;
109
118
  }
110
119
  ngOnInit() {
111
120
  this.config = { ...(this._defaultConfig || {}), ...(this.config || {}) };
112
- this._loader.loadStyles();
121
+ this._loader.load();
113
122
  }
114
123
  ngAfterViewInit() {
115
124
  this._loader.loaded$
@@ -191,19 +200,20 @@ class FsMarkdownEditorComponent {
191
200
  if (this._crepe || !this.editorRef) {
192
201
  return;
193
202
  }
194
- this._zone.runOutsideAngular(async () => {
195
- const [{ Crepe }, { editorViewCtx, parserCtx }] = await Promise.all([
196
- import('@milkdown/crepe'),
197
- import('@milkdown/kit/core'),
198
- ]);
199
- this._editorViewCtx = editorViewCtx;
200
- this._parserCtx = parserCtx;
201
- this._crepe = new Crepe({
203
+ const milkdown = window.__MILKDOWN__;
204
+ if (!milkdown) {
205
+ console.error('Milkdown not loaded. Ensure assets are configured.');
206
+ return;
207
+ }
208
+ this._editorViewCtx = milkdown.editorViewCtx;
209
+ this._parserCtx = milkdown.parserCtx;
210
+ this._zone.runOutsideAngular(() => {
211
+ this._crepe = new milkdown.Crepe({
202
212
  root: this.editorRef.nativeElement,
203
213
  defaultValue: this._markdown,
204
214
  features: {},
205
215
  featureConfigs: {
206
- [Crepe.Feature.Placeholder]: {
216
+ [milkdown.Crepe.Feature.Placeholder]: {
207
217
  text: this.config.placeholder || 'Start typing...',
208
218
  },
209
219
  },
@@ -1 +1 @@
1
- {"version":3,"file":"firestitch-markdown-editor.mjs","sources":["../../src/app/modules/markdown-editor/injects/config.inject.ts","../../src/app/modules/markdown-editor/services/milkdown-loader.service.ts","../../src/app/modules/markdown-editor/components/markdown-editor/markdown-editor.component.ts","../../src/app/modules/markdown-editor/components/markdown-editor/markdown-editor.component.html","../../src/app/modules/markdown-editor/fs-markdown-editor.module.ts","../../src/app/modules/markdown-renderer/components/markdown-renderer/markdown-renderer.component.ts","../../src/app/modules/markdown-renderer/components/markdown-renderer/markdown-renderer.component.html","../../src/firestitch-markdown-editor.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const FS_MARKDOWN_EDITOR_DEFAULT_CONFIG = new InjectionToken<any[]>('fs-markdown-editor.default-config');\nexport const FS_MARKDOWN_EDITOR_CONFIG = new InjectionToken<any[]>('fs-markdown-editor.config');\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\n\nconst THEME_BASE = '/assets/milkdown/theme/';\n\nconst STYLESHEETS = [\n `${THEME_BASE}common/block-edit.css`,\n `${THEME_BASE}common/code-mirror.css`,\n `${THEME_BASE}common/cursor.css`,\n `${THEME_BASE}common/image-block.css`,\n `${THEME_BASE}common/latex.css`,\n `${THEME_BASE}common/link-tooltip.css`,\n `${THEME_BASE}common/list-item.css`,\n `${THEME_BASE}common/placeholder.css`,\n `${THEME_BASE}common/toolbar.css`,\n `${THEME_BASE}common/table.css`,\n];\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FsMilkdownLoaderService {\n private _document = inject<Document>(DOCUMENT);\n private _loaded = new BehaviorSubject(false);\n private _stylesLoaded = false;\n\n private _loaded$ = this._loaded.asObservable()\n .pipe(\n shareReplay(1),\n );\n\n public get loaded$(): Observable<boolean> {\n return this._loaded$;\n }\n\n public loadStyles(): void {\n if (this._stylesLoaded) {\n this._loaded.next(true);\n\n return;\n }\n\n let remaining = STYLESHEETS.length;\n\n if (remaining === 0) {\n this._stylesLoaded = true;\n this._loaded.next(true);\n\n return;\n }\n\n STYLESHEETS.forEach((href) => {\n const existing = this._document.querySelector(`link[href=\"${href}\"]`);\n if (existing) {\n remaining--;\n if (remaining === 0) {\n this._stylesLoaded = true;\n this._loaded.next(true);\n }\n\n return;\n }\n\n const link = this._document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n link.onload = () => {\n remaining--;\n if (remaining === 0) {\n this._stylesLoaded = true;\n this._loaded.next(true);\n }\n };\n link.onerror = () => {\n remaining--;\n if (remaining === 0) {\n this._stylesLoaded = true;\n this._loaded.next(true);\n }\n };\n\n this._document.head.appendChild(link);\n });\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Optional,\n ViewChild,\n} from '@angular/core';\nimport {\n ControlContainer,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgForm,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\n\nimport { guid } from '@firestitch/common';\nimport { FsLabelModule } from '@firestitch/label';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { Crepe } from '@milkdown/crepe';\n\nimport { FS_MARKDOWN_EDITOR_CONFIG } from '../../injects/config.inject';\nimport { FsMarkdownEditorConfig } from '../../interfaces/markdown-editor-config';\nimport { FsMilkdownLoaderService } from '../../services/milkdown-loader.service';\n\n\n@Component({\n selector: 'fs-markdown-editor',\n templateUrl: './markdown-editor.component.html',\n styleUrls: ['./markdown-editor.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FsMarkdownEditorComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => FsMarkdownEditorComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [\n {\n provide: ControlContainer,\n deps: [[Optional, NgForm]],\n useFactory: (ngForm: NgForm) => ngForm,\n },\n ],\n standalone: true,\n imports: [\n FsLabelModule,\n ],\n})\nexport class FsMarkdownEditorComponent\n implements OnInit, AfterViewInit, ControlValueAccessor, Validator, OnDestroy {\n\n private _defaultConfig = inject<FsMarkdownEditorConfig>(FS_MARKDOWN_EDITOR_CONFIG, { optional: true });\n private _cdRef = inject(ChangeDetectorRef);\n private _loader = inject(FsMilkdownLoaderService);\n private _zone = inject(NgZone);\n\n @ViewChild('editorRef') public editorRef: ElementRef;\n\n @HostBinding('class.focused') public classFocused = false;\n\n @Input() public config: FsMarkdownEditorConfig = {};\n\n @Input()\n @HostBinding('class.disabled')\n public disabled = false;\n\n @HostBinding('class.initialized')\n public initialized = false;\n\n public readonly containerID = `fs-markdown-editor-${guid('xxx')}`;\n public onTouched: () => void;\n public onChange: (data: any) => void;\n\n private _crepe: Crepe;\n private _editorViewCtx: any;\n private _parserCtx: any;\n private _markdown = '';\n private _editorReady = false;\n private _destroy$ = new Subject<void>();\n\n public get markdown(): string {\n return this._markdown;\n }\n\n public ngOnInit(): void {\n this.config = { ...(this._defaultConfig || {}), ...(this.config || {}) };\n this._loader.loadStyles();\n }\n\n public ngAfterViewInit(): void {\n this._loader.loaded$\n .pipe(takeUntil(this._destroy$))\n .subscribe((loaded) => {\n if (loaded) {\n this._initEditor();\n }\n });\n }\n\n public writeValue(markdown: string): void {\n this._markdown = markdown || '';\n\n if (this._editorReady) {\n this._setEditorContent(this._markdown);\n }\n\n this._cdRef.markForCheck();\n }\n\n public registerOnChange(fn: (data: any) => void): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public validate(): ValidationErrors | null {\n const err: any = {};\n if (this.config.maxLength && this._markdown) {\n const length = this._markdown.length;\n if (length > this.config.maxLength) {\n err.maxLengthError = `Must be ${this.config.maxLength} characters or fewer. You entered ${length} characters.`;\n }\n }\n\n return Object.keys(err).length ? err : null;\n }\n\n public clear(): void {\n this.writeValue('');\n if (this.onChange) {\n this.onChange('');\n }\n }\n\n public setMarkdown(markdown: string): void {\n this.writeValue(markdown);\n }\n\n public getMarkdown(): string {\n if (!this._crepe) {\n return this._markdown;\n }\n\n return this._crepe.getMarkdown();\n }\n\n public focus(): void {\n if (this._crepe && this._editorViewCtx) {\n this._crepe.editor.action((ctx) => {\n const view = ctx.get(this._editorViewCtx) as any;\n view.focus();\n });\n }\n }\n\n public disable(): void {\n this.disabled = true;\n this._cdRef.markForCheck();\n }\n\n public destroy(): void {\n if (this._crepe) {\n this._crepe.destroy();\n this._crepe = null;\n }\n this._editorReady = false;\n this.initialized = false;\n this._cdRef.markForCheck();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n this.destroy();\n }\n\n private _initEditor(): void {\n if (this._crepe || !this.editorRef) {\n return;\n }\n\n this._zone.runOutsideAngular(async () => {\n const [{ Crepe }, { editorViewCtx, parserCtx }] = await Promise.all([\n import('@milkdown/crepe'),\n import('@milkdown/kit/core'),\n ]);\n\n this._editorViewCtx = editorViewCtx;\n this._parserCtx = parserCtx;\n\n this._crepe = new Crepe({\n root: this.editorRef.nativeElement,\n defaultValue: this._markdown,\n features: {},\n featureConfigs: {\n [Crepe.Feature.Placeholder]: {\n text: this.config.placeholder || 'Start typing...',\n },\n },\n });\n\n this._crepe.on((listener) => {\n listener.markdownUpdated((_ctx, markdown, prevMarkdown) => {\n if (markdown !== prevMarkdown) {\n this._zone.run(() => {\n this._markdown = markdown;\n if (this.onChange) {\n this.onChange(markdown);\n }\n if (this.onTouched) {\n this.onTouched();\n }\n this._cdRef.markForCheck();\n });\n }\n });\n });\n\n this._crepe.create().then(() => {\n this._zone.run(() => {\n this._editorReady = true;\n this.initialized = true;\n\n if (this._markdown) {\n this._setEditorContent(this._markdown);\n }\n\n this._cdRef.markForCheck();\n\n if (this.config.autofocus) {\n this.focus();\n }\n\n if (this.config.initialized) {\n this.config.initialized();\n }\n });\n });\n });\n }\n\n private _setEditorContent(markdown: string): void {\n this._crepe.editor.action((ctx) => {\n const view = ctx.get(this._editorViewCtx) as any;\n const parser = ctx.get(this._parserCtx) as any;\n const doc = parser(markdown);\n if (doc) {\n const tr = view.state.tr.replaceWith(\n 0, view.state.doc.content.size, doc.content,\n );\n view.dispatch(tr);\n }\n });\n }\n}\n","<fs-label-field\n [appearance]=\"'outline'\"\n [hoverable]=\"true\"\n [showOutline]=\"initialized\"\n [disabled]=\"disabled\"\n [padless]=\"config.padless\"\n [class.initialized]=\"initialized\">\n @if (config.label) {\n <fs-label>\n {{ config.label }}\n </fs-label>\n }\n <div\n class=\"markdown-editor-container\"\n [id]=\"containerID\">\n <div #editorRef></div>\n </div>\n <fs-label-message>\n <div class=\"fs-form-message\">\n <div class=\"fs-form-hint\">\n {{ config.hint }}\n </div>\n </div>\n </fs-label-message>\n</fs-label-field>\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { FsLabelModule } from '@firestitch/label';\n\nimport { FsMarkdownEditorComponent } from './components/markdown-editor/markdown-editor.component';\nimport { FS_MARKDOWN_EDITOR_CONFIG, FS_MARKDOWN_EDITOR_DEFAULT_CONFIG } from './injects/config.inject';\nimport { FsMarkdownEditorConfig } from './interfaces/markdown-editor-config';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FsLabelModule,\n FsMarkdownEditorComponent,\n ],\n exports: [\n FsMarkdownEditorComponent,\n ],\n})\nexport class FsMarkdownEditorModule {\n public static forRoot(config: FsMarkdownEditorConfig = {}): ModuleWithProviders<FsMarkdownEditorModule> {\n return {\n ngModule: FsMarkdownEditorModule,\n providers: [\n { provide: FS_MARKDOWN_EDITOR_DEFAULT_CONFIG, useValue: config },\n {\n provide: FS_MARKDOWN_EDITOR_CONFIG,\n useFactory: markdownEditorConfigFactory,\n deps: [FS_MARKDOWN_EDITOR_DEFAULT_CONFIG],\n },\n ],\n };\n }\n}\n\nexport function markdownEditorConfigFactory(config: FsMarkdownEditorConfig) {\n return {\n ...config,\n };\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, inject } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n\n@Component({\n selector: 'fs-markdown-renderer',\n templateUrl: 'markdown-renderer.component.html',\n styleUrls: ['markdown-renderer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class FsMarkdownRendererComponent {\n private _sanitizer = inject(DomSanitizer);\n private _cdRef = inject(ChangeDetectorRef);\n\n @Input('markdown') public set setMarkdown(markdown: string) {\n this._rawMarkdown = markdown || '';\n this._renderMarkdown();\n }\n\n public renderedHtml: SafeHtml;\n\n private _rawMarkdown = '';\n\n private _renderMarkdown(): void {\n const html = this._markdownToHtml(this._rawMarkdown);\n this.renderedHtml = this._sanitizer.bypassSecurityTrustHtml(html);\n this._cdRef.markForCheck();\n }\n\n private _markdownToHtml(markdown: string): string {\n if (!markdown) {\n return '';\n }\n\n let html = markdown;\n\n html = html.replace(/^### (.+)$/gm, '<h3>$1</h3>');\n html = html.replace(/^## (.+)$/gm, '<h2>$1</h2>');\n html = html.replace(/^# (.+)$/gm, '<h1>$1</h1>');\n\n html = html.replace(/\\*\\*(.+?)\\*\\*/g, '<strong>$1</strong>');\n html = html.replace(/\\*(.+?)\\*/g, '<em>$1</em>');\n html = html.replace(/~~(.+?)~~/g, '<del>$1</del>');\n html = html.replace(/`([^`]+)`/g, '<code>$1</code>');\n\n html = html.replace(/```(\\w*)\\n([\\s\\S]*?)```/g, '<pre><code class=\"language-$1\">$2</code></pre>');\n\n html = html.replace(/^\\> (.+)$/gm, '<blockquote>$1</blockquote>');\n\n html = html.replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, '<a href=\"$2\">$1</a>');\n\n html = html.replace(/\\n/g, '<br>');\n\n return html;\n }\n}\n","<div class=\"fs-markdown-renderer\" [innerHtml]=\"renderedHtml\"></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"firestitch-markdown-editor.mjs","sources":["../../src/app/modules/markdown-editor/injects/config.inject.ts","../../src/app/modules/markdown-editor/services/milkdown-loader.service.ts","../../src/app/modules/markdown-editor/components/markdown-editor/markdown-editor.component.ts","../../src/app/modules/markdown-editor/components/markdown-editor/markdown-editor.component.html","../../src/app/modules/markdown-editor/fs-markdown-editor.module.ts","../../src/app/modules/markdown-renderer/components/markdown-renderer/markdown-renderer.component.ts","../../src/app/modules/markdown-renderer/components/markdown-renderer/markdown-renderer.component.html","../../src/firestitch-markdown-editor.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const FS_MARKDOWN_EDITOR_DEFAULT_CONFIG = new InjectionToken<any[]>('fs-markdown-editor.default-config');\nexport const FS_MARKDOWN_EDITOR_CONFIG = new InjectionToken<any[]>('fs-markdown-editor.config');\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\n\nconst ASSET_BASE = '/assets/markdown-editor/';\n\nconst STYLESHEETS = [\n `${ASSET_BASE}theme/common/block-edit.css`,\n `${ASSET_BASE}theme/common/code-mirror.css`,\n `${ASSET_BASE}theme/common/cursor.css`,\n `${ASSET_BASE}theme/common/image-block.css`,\n `${ASSET_BASE}theme/common/latex.css`,\n `${ASSET_BASE}theme/common/link-tooltip.css`,\n `${ASSET_BASE}theme/common/list-item.css`,\n `${ASSET_BASE}theme/common/placeholder.css`,\n `${ASSET_BASE}theme/common/toolbar.css`,\n `${ASSET_BASE}theme/common/table.css`,\n];\n\nconst SCRIPT = `${ASSET_BASE}milkdown.js`;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FsMilkdownLoaderService {\n private _document = inject<Document>(DOCUMENT);\n private _loaded = new BehaviorSubject(false);\n private _loading = false;\n\n private _loaded$ = this._loaded.asObservable()\n .pipe(\n shareReplay(1),\n );\n\n public get loaded$(): Observable<boolean> {\n return this._loaded$;\n }\n\n public load(): void {\n if (this._loaded.value || this._loading) {\n if (this._loaded.value) {\n this._loaded.next(true);\n }\n\n return;\n }\n\n this._loading = true;\n\n let stylesRemaining = STYLESHEETS.length;\n let scriptDone = false;\n\n const checkComplete = () => {\n if (stylesRemaining === 0 && scriptDone) {\n this._loading = false;\n this._loaded.next(true);\n }\n };\n\n const onStyleDone = () => {\n stylesRemaining--;\n checkComplete();\n };\n\n STYLESHEETS.forEach((href) => {\n if (this._document.querySelector(`link[href=\"${href}\"]`)) {\n onStyleDone();\n\n return;\n }\n\n const link = this._document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n link.onload = onStyleDone;\n link.onerror = onStyleDone;\n this._document.head.appendChild(link);\n });\n\n if (this._document.querySelector(`script[src=\"${SCRIPT}\"]`)) {\n scriptDone = true;\n checkComplete();\n\n return;\n }\n\n const script = this._document.createElement('script');\n script.src = SCRIPT;\n script.onload = () => {\n scriptDone = true;\n checkComplete();\n };\n script.onerror = () => {\n scriptDone = true;\n checkComplete();\n };\n this._document.head.appendChild(script);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Optional,\n ViewChild,\n} from '@angular/core';\nimport {\n ControlContainer,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n NgForm,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\n\nimport { guid } from '@firestitch/common';\nimport { FsLabelModule } from '@firestitch/label';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { FS_MARKDOWN_EDITOR_CONFIG } from '../../injects/config.inject';\nimport { FsMarkdownEditorConfig } from '../../interfaces/markdown-editor-config';\nimport { FsMilkdownLoaderService } from '../../services/milkdown-loader.service';\n\n\n@Component({\n selector: 'fs-markdown-editor',\n templateUrl: './markdown-editor.component.html',\n styleUrls: ['./markdown-editor.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FsMarkdownEditorComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => FsMarkdownEditorComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [\n {\n provide: ControlContainer,\n deps: [[Optional, NgForm]],\n useFactory: (ngForm: NgForm) => ngForm,\n },\n ],\n standalone: true,\n imports: [\n FsLabelModule,\n ],\n})\nexport class FsMarkdownEditorComponent\nimplements OnInit, AfterViewInit, ControlValueAccessor, Validator, OnDestroy {\n\n @ViewChild('editorRef') public editorRef: ElementRef;\n\n @HostBinding('class.focused') public classFocused = false;\n\n @Input() public config: FsMarkdownEditorConfig = {};\n\n @Input()\n @HostBinding('class.disabled')\n public disabled = false;\n\n @HostBinding('class.initialized')\n public initialized = false;\n\n public readonly containerID = `fs-markdown-editor-${guid('xxx')}`;\n public onTouched: () => void;\n public onChange: (data: any) => void;\n\n private _crepe: any;\n private _editorViewCtx: any;\n private _parserCtx: any;\n private _markdown = '';\n private _editorReady = false;\n private _destroy$ = new Subject<void>();\n private _defaultConfig = inject<FsMarkdownEditorConfig>(FS_MARKDOWN_EDITOR_CONFIG, { optional: true });\n private _cdRef = inject(ChangeDetectorRef);\n private _loader = inject(FsMilkdownLoaderService);\n private _zone = inject(NgZone);\n\n\n public get markdown(): string {\n return this._markdown;\n }\n\n public ngOnInit(): void {\n this.config = { ...(this._defaultConfig || {}), ...(this.config || {}) };\n this._loader.load();\n }\n\n public ngAfterViewInit(): void {\n this._loader.loaded$\n .pipe(takeUntil(this._destroy$))\n .subscribe((loaded) => {\n if (loaded) {\n this._initEditor();\n }\n });\n }\n\n public writeValue(markdown: string): void {\n this._markdown = markdown || '';\n\n if (this._editorReady) {\n this._setEditorContent(this._markdown);\n }\n\n this._cdRef.markForCheck();\n }\n\n public registerOnChange(fn: (data: any) => void): void {\n this.onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public validate(): ValidationErrors | null {\n const err: any = {};\n if (this.config.maxLength && this._markdown) {\n const length = this._markdown.length;\n if (length > this.config.maxLength) {\n err.maxLengthError = `Must be ${this.config.maxLength} characters or fewer. You entered ${length} characters.`;\n }\n }\n\n return Object.keys(err).length ? err : null;\n }\n\n public clear(): void {\n this.writeValue('');\n if (this.onChange) {\n this.onChange('');\n }\n }\n\n public setMarkdown(markdown: string): void {\n this.writeValue(markdown);\n }\n\n public getMarkdown(): string {\n if (!this._crepe) {\n return this._markdown;\n }\n\n return this._crepe.getMarkdown();\n }\n\n public focus(): void {\n if (this._crepe && this._editorViewCtx) {\n this._crepe.editor.action((ctx: any) => {\n const view = ctx.get(this._editorViewCtx);\n view.focus();\n });\n }\n }\n\n public disable(): void {\n this.disabled = true;\n this._cdRef.markForCheck();\n }\n\n public destroy(): void {\n if (this._crepe) {\n this._crepe.destroy();\n this._crepe = null;\n }\n this._editorReady = false;\n this.initialized = false;\n this._cdRef.markForCheck();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n this.destroy();\n }\n\n private _initEditor(): void {\n if (this._crepe || !this.editorRef) {\n return;\n }\n\n const milkdown = (window as any).__MILKDOWN__;\n if (!milkdown) {\n console.error('Milkdown not loaded. Ensure assets are configured.');\n\n return;\n }\n\n this._editorViewCtx = milkdown.editorViewCtx;\n this._parserCtx = milkdown.parserCtx;\n\n this._zone.runOutsideAngular(() => {\n this._crepe = new milkdown.Crepe({\n root: this.editorRef.nativeElement,\n defaultValue: this._markdown,\n features: {},\n featureConfigs: {\n [milkdown.Crepe.Feature.Placeholder]: {\n text: this.config.placeholder || 'Start typing...',\n },\n },\n });\n\n this._crepe.on((listener: any) => {\n listener.markdownUpdated((_ctx: any, markdown: string, prevMarkdown: string) => {\n if (markdown !== prevMarkdown) {\n this._zone.run(() => {\n this._markdown = markdown;\n if (this.onChange) {\n this.onChange(markdown);\n }\n if (this.onTouched) {\n this.onTouched();\n }\n this._cdRef.markForCheck();\n });\n }\n });\n });\n\n this._crepe.create().then(() => {\n this._zone.run(() => {\n this._editorReady = true;\n this.initialized = true;\n\n if (this._markdown) {\n this._setEditorContent(this._markdown);\n }\n\n this._cdRef.markForCheck();\n\n if (this.config.autofocus) {\n this.focus();\n }\n\n if (this.config.initialized) {\n this.config.initialized();\n }\n });\n });\n });\n }\n\n private _setEditorContent(markdown: string): void {\n this._crepe.editor.action((ctx: any) => {\n const view = ctx.get(this._editorViewCtx);\n const parser = ctx.get(this._parserCtx);\n const doc = parser(markdown);\n if (doc) {\n const tr = view.state.tr.replaceWith(\n 0, view.state.doc.content.size, doc.content,\n );\n view.dispatch(tr);\n }\n });\n }\n}\n","<fs-label-field\n [appearance]=\"'outline'\"\n [hoverable]=\"true\"\n [showOutline]=\"initialized\"\n [disabled]=\"disabled\"\n [padless]=\"config.padless\"\n [class.initialized]=\"initialized\">\n @if (config.label) {\n <fs-label>\n {{ config.label }}\n </fs-label>\n }\n <div\n class=\"markdown-editor-container\"\n [id]=\"containerID\">\n <div #editorRef></div>\n </div>\n <fs-label-message>\n <div class=\"fs-form-message\">\n <div class=\"fs-form-hint\">\n {{ config.hint }}\n </div>\n </div>\n </fs-label-message>\n</fs-label-field>\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { FsLabelModule } from '@firestitch/label';\n\nimport { FsMarkdownEditorComponent } from './components/markdown-editor/markdown-editor.component';\nimport { FS_MARKDOWN_EDITOR_CONFIG, FS_MARKDOWN_EDITOR_DEFAULT_CONFIG } from './injects/config.inject';\nimport { FsMarkdownEditorConfig } from './interfaces/markdown-editor-config';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FsLabelModule,\n FsMarkdownEditorComponent,\n ],\n exports: [\n FsMarkdownEditorComponent,\n ],\n})\nexport class FsMarkdownEditorModule {\n public static forRoot(config: FsMarkdownEditorConfig = {}): ModuleWithProviders<FsMarkdownEditorModule> {\n return {\n ngModule: FsMarkdownEditorModule,\n providers: [\n { provide: FS_MARKDOWN_EDITOR_DEFAULT_CONFIG, useValue: config },\n {\n provide: FS_MARKDOWN_EDITOR_CONFIG,\n useFactory: markdownEditorConfigFactory,\n deps: [FS_MARKDOWN_EDITOR_DEFAULT_CONFIG],\n },\n ],\n };\n }\n}\n\nexport function markdownEditorConfigFactory(config: FsMarkdownEditorConfig) {\n return {\n ...config,\n };\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, inject } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n\n@Component({\n selector: 'fs-markdown-renderer',\n templateUrl: 'markdown-renderer.component.html',\n styleUrls: ['markdown-renderer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class FsMarkdownRendererComponent {\n private _sanitizer = inject(DomSanitizer);\n private _cdRef = inject(ChangeDetectorRef);\n\n @Input('markdown') public set setMarkdown(markdown: string) {\n this._rawMarkdown = markdown || '';\n this._renderMarkdown();\n }\n\n public renderedHtml: SafeHtml;\n\n private _rawMarkdown = '';\n\n private _renderMarkdown(): void {\n const html = this._markdownToHtml(this._rawMarkdown);\n this.renderedHtml = this._sanitizer.bypassSecurityTrustHtml(html);\n this._cdRef.markForCheck();\n }\n\n private _markdownToHtml(markdown: string): string {\n if (!markdown) {\n return '';\n }\n\n let html = markdown;\n\n html = html.replace(/^### (.+)$/gm, '<h3>$1</h3>');\n html = html.replace(/^## (.+)$/gm, '<h2>$1</h2>');\n html = html.replace(/^# (.+)$/gm, '<h1>$1</h1>');\n\n html = html.replace(/\\*\\*(.+?)\\*\\*/g, '<strong>$1</strong>');\n html = html.replace(/\\*(.+?)\\*/g, '<em>$1</em>');\n html = html.replace(/~~(.+?)~~/g, '<del>$1</del>');\n html = html.replace(/`([^`]+)`/g, '<code>$1</code>');\n\n html = html.replace(/```(\\w*)\\n([\\s\\S]*?)```/g, '<pre><code class=\"language-$1\">$2</code></pre>');\n\n html = html.replace(/^\\> (.+)$/gm, '<blockquote>$1</blockquote>');\n\n html = html.replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, '<a href=\"$2\">$1</a>');\n\n html = html.replace(/\\n/g, '<br>');\n\n return html;\n }\n}\n","<div class=\"fs-markdown-renderer\" [innerHtml]=\"renderedHtml\"></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@firestitch/markdown-editor",
3
- "version": "18.0.0",
3
+ "version": "18.0.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/Firestitch/ngx-markdown-editor"
@@ -14,8 +14,6 @@
14
14
  ],
15
15
  "license": "MIT",
16
16
  "dependencies": {
17
- "@milkdown/crepe": "^7.18.0",
18
- "@milkdown/kit": "^7.18.0",
19
17
  "tslib": "^2.3.0"
20
18
  },
21
19
  "sideEffects": false,