@ng-util/markdown 20.1.0 → 21.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.
package/README.md
CHANGED
|
@@ -26,8 +26,6 @@ npm install @ng-util/markdown --save
|
|
|
26
26
|
|
|
27
27
|
### Simple
|
|
28
28
|
|
|
29
|
-
**Standalone**
|
|
30
|
-
|
|
31
29
|
```ts
|
|
32
30
|
import { Component } from '@angular/core';
|
|
33
31
|
import { NuMonacoEditorComponent } from '@ng-util/monaco-editor';
|
|
@@ -42,22 +40,6 @@ import { NuMonacoEditorComponent } from '@ng-util/monaco-editor';
|
|
|
42
40
|
export class MonacoDemo { }
|
|
43
41
|
```
|
|
44
42
|
|
|
45
|
-
**Module**
|
|
46
|
-
|
|
47
|
-
Include `NuMarkdownModule` in Main Module and Feature Modules where you want to use the editor component.(eg: app.module.ts):
|
|
48
|
-
|
|
49
|
-
```ts
|
|
50
|
-
import { NgModule } from '@angular/core';
|
|
51
|
-
import { NuMarkdownModule } from '@ng-util/markdown';
|
|
52
|
-
|
|
53
|
-
@NgModule({
|
|
54
|
-
imports: [
|
|
55
|
-
NuMarkdownModule // And use `provideNuMarkdownConfig` to modify the global configuration
|
|
56
|
-
],
|
|
57
|
-
})
|
|
58
|
-
export class AppModule { }
|
|
59
|
-
```
|
|
60
|
-
|
|
61
43
|
Create markdown options in component.
|
|
62
44
|
|
|
63
45
|
```ts
|
|
@@ -65,7 +47,7 @@ import { Component } from '@angular/core';
|
|
|
65
47
|
|
|
66
48
|
@Component({
|
|
67
49
|
selector: 'app-root',
|
|
68
|
-
template: `<nu-markdown [(ngModel)]="value"
|
|
50
|
+
template: `<nu-markdown [(ngModel)]="value" />`,
|
|
69
51
|
})
|
|
70
52
|
export class DemoComponent {
|
|
71
53
|
value = '# Title';
|
|
@@ -77,18 +59,17 @@ export class DemoComponent {
|
|
|
77
59
|
You can use `nu-markdown-preview` component to render a Markdown preview effect (no editing).
|
|
78
60
|
|
|
79
61
|
```html
|
|
80
|
-
<nu-markdown-preview value="# Title"
|
|
62
|
+
<nu-markdown-preview value="# Title" />
|
|
81
63
|
```
|
|
82
64
|
|
|
83
65
|
### How to change cdn?
|
|
84
66
|
|
|
85
|
-
-
|
|
86
|
-
- If using module, use `NuMarkdownModule.forRoot({ libs: [] })` to adjust.
|
|
67
|
+
- Using `provideNuMarkdownConfig({ libs: [] })` to adjust.
|
|
87
68
|
|
|
88
69
|
The libs parameter should contain `index.min.js` and `index.css`, like this:
|
|
89
70
|
|
|
90
71
|
```ts
|
|
91
|
-
provideNuMarkdownConfig({
|
|
72
|
+
provideNuMarkdownConfig({
|
|
92
73
|
libs: [
|
|
93
74
|
'https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js',
|
|
94
75
|
'https://cdn.jsdelivr.net/npm/vditor/dist/index.css'
|
|
@@ -110,7 +91,7 @@ In addition, You can also use local path:
|
|
|
110
91
|
Then modify the libs path:
|
|
111
92
|
|
|
112
93
|
```ts
|
|
113
|
-
provideNuMarkdownConfig({
|
|
94
|
+
provideNuMarkdownConfig({
|
|
114
95
|
libs: [
|
|
115
96
|
'./assets/vditor/index.min.js',
|
|
116
97
|
'./assets/vditor/index.css'
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, makeEnvironmentProviders, inject, Injectable, ElementRef, input, numberAttribute, booleanAttribute, Directive, EventEmitter, ChangeDetectionStrategy, Component, forwardRef
|
|
2
|
+
import { InjectionToken, makeEnvironmentProviders, inject, Injectable, ElementRef, input, numberAttribute, booleanAttribute, afterNextRender, Directive, EventEmitter, ChangeDetectionStrategy, Component, forwardRef } from '@angular/core';
|
|
3
3
|
import { Subject } from 'rxjs';
|
|
4
4
|
import { NuLazyService } from '@ng-util/lazy';
|
|
5
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
6
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
6
|
-
import { CommonModule } from '@angular/common';
|
|
7
7
|
|
|
8
8
|
const NU_MARKDOWN_CONFIG = new InjectionToken('NU_MARKDOWN_CONFIG');
|
|
9
9
|
function provideNuMarkdownConfig(config) {
|
|
@@ -13,19 +13,16 @@ function provideNuMarkdownConfig(config) {
|
|
|
13
13
|
class NuMarkdownService {
|
|
14
14
|
config = inject(NU_MARKDOWN_CONFIG, { optional: true });
|
|
15
15
|
lazySrv = inject(NuLazyService);
|
|
16
|
-
libs
|
|
16
|
+
libs = this.config?.libs || [
|
|
17
|
+
`https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js`,
|
|
18
|
+
`https://cdn.jsdelivr.net/npm/vditor/dist/index.css`
|
|
19
|
+
];
|
|
17
20
|
loading = false;
|
|
18
21
|
loaded = false;
|
|
19
22
|
notify$ = new Subject();
|
|
20
23
|
get notify() {
|
|
21
24
|
return this.notify$.asObservable();
|
|
22
25
|
}
|
|
23
|
-
constructor() {
|
|
24
|
-
this.libs = this.config?.libs || [
|
|
25
|
-
`https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js`,
|
|
26
|
-
`https://cdn.jsdelivr.net/npm/vditor/dist/index.css`
|
|
27
|
-
];
|
|
28
|
-
}
|
|
29
26
|
load() {
|
|
30
27
|
if (this.loading) {
|
|
31
28
|
if (this.loaded) {
|
|
@@ -42,52 +39,50 @@ class NuMarkdownService {
|
|
|
42
39
|
this.lazySrv.load(libs);
|
|
43
40
|
return this;
|
|
44
41
|
}
|
|
45
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
46
|
-
/** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
42
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: NuMarkdownService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
43
|
+
/** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: NuMarkdownService, providedIn: 'root' });
|
|
47
44
|
}
|
|
48
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: NuMarkdownService, decorators: [{
|
|
49
46
|
type: Injectable,
|
|
50
47
|
args: [{ providedIn: 'root' }]
|
|
51
|
-
}]
|
|
48
|
+
}] });
|
|
52
49
|
|
|
53
50
|
class NuMarkdownBaseComponent {
|
|
54
51
|
el = inject(ElementRef);
|
|
55
52
|
config = inject(NU_MARKDOWN_CONFIG, { optional: true });
|
|
56
53
|
srv = inject(NuMarkdownService);
|
|
57
|
-
notify$;
|
|
58
54
|
_instance;
|
|
59
|
-
delay = input(0, { transform: numberAttribute });
|
|
60
|
-
disabled = input(false, { transform: booleanAttribute });
|
|
55
|
+
delay = input(0, ...(ngDevMode ? [{ debugName: "delay", transform: numberAttribute }] : [{ transform: numberAttribute }]));
|
|
56
|
+
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
61
57
|
get instance() {
|
|
62
58
|
return this._instance;
|
|
63
59
|
}
|
|
60
|
+
constructor() {
|
|
61
|
+
this.srv.notify.pipe(takeUntilDestroyed()).subscribe(() => this.initDelay());
|
|
62
|
+
afterNextRender(() => {
|
|
63
|
+
if (this.loaded) {
|
|
64
|
+
this.initDelay();
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
this.srv.load();
|
|
68
|
+
});
|
|
69
|
+
}
|
|
64
70
|
initDelay() {
|
|
65
71
|
setTimeout(() => this.init(), this.delay());
|
|
66
72
|
}
|
|
67
73
|
get loaded() {
|
|
68
74
|
return !!window.Vditor;
|
|
69
75
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
if (this.loaded) {
|
|
73
|
-
this.initDelay();
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
this.srv.load();
|
|
77
|
-
}
|
|
78
|
-
ngOnDestroy() {
|
|
79
|
-
this.notify$?.unsubscribe();
|
|
80
|
-
}
|
|
81
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: NuMarkdownBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
82
|
-
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.2", type: NuMarkdownBaseComponent, isStandalone: true, inputs: { delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
76
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: NuMarkdownBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
77
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.0", type: NuMarkdownBaseComponent, isStandalone: true, inputs: { delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
83
78
|
}
|
|
84
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
79
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: NuMarkdownBaseComponent, decorators: [{
|
|
85
80
|
type: Directive
|
|
86
|
-
}] });
|
|
81
|
+
}], ctorParameters: () => [], propDecorators: { delay: [{ type: i0.Input, args: [{ isSignal: true, alias: "delay", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
|
|
87
82
|
|
|
88
83
|
class NuMarkdownPreviewComponent extends NuMarkdownBaseComponent {
|
|
89
|
-
options = input();
|
|
90
|
-
value = input('');
|
|
84
|
+
options = input(...(ngDevMode ? [undefined, { debugName: "options" }] : []));
|
|
85
|
+
value = input('', ...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
91
86
|
ready = new EventEmitter();
|
|
92
87
|
async init() {
|
|
93
88
|
await Vditor.preview(this.el.nativeElement, this.value(), {
|
|
@@ -96,10 +91,10 @@ class NuMarkdownPreviewComponent extends NuMarkdownBaseComponent {
|
|
|
96
91
|
});
|
|
97
92
|
this.ready.emit(this.el.nativeElement.innerHTML);
|
|
98
93
|
}
|
|
99
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
100
|
-
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "
|
|
94
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: NuMarkdownPreviewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
95
|
+
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.0", type: NuMarkdownPreviewComponent, isStandalone: true, selector: "nu-markdown-preview", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["nuMarkdownPreview"], usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
101
96
|
}
|
|
102
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
97
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: NuMarkdownPreviewComponent, decorators: [{
|
|
103
98
|
type: Component,
|
|
104
99
|
args: [{
|
|
105
100
|
selector: 'nu-markdown-preview',
|
|
@@ -107,10 +102,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.2", ngImpor
|
|
|
107
102
|
exportAs: 'nuMarkdownPreview',
|
|
108
103
|
changeDetection: ChangeDetectionStrategy.OnPush
|
|
109
104
|
}]
|
|
110
|
-
}] });
|
|
105
|
+
}], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }] } });
|
|
111
106
|
|
|
112
107
|
class NuMarkdownComponent extends NuMarkdownBaseComponent {
|
|
113
|
-
options = input();
|
|
108
|
+
options = input(...(ngDevMode ? [undefined, { debugName: "options" }] : []));
|
|
114
109
|
ready = new EventEmitter();
|
|
115
110
|
value = '';
|
|
116
111
|
onChange = (_) => { };
|
|
@@ -156,8 +151,8 @@ class NuMarkdownComponent extends NuMarkdownBaseComponent {
|
|
|
156
151
|
setDisabledState(v) {
|
|
157
152
|
this.setDisabled(v);
|
|
158
153
|
}
|
|
159
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
160
|
-
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "
|
|
154
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: NuMarkdownComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
155
|
+
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.0", type: NuMarkdownComponent, isStandalone: true, selector: "nu-markdown", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
161
156
|
{
|
|
162
157
|
provide: NG_VALUE_ACCESSOR,
|
|
163
158
|
useExisting: forwardRef((() => NuMarkdownComponent)),
|
|
@@ -165,7 +160,7 @@ class NuMarkdownComponent extends NuMarkdownBaseComponent {
|
|
|
165
160
|
}
|
|
166
161
|
], exportAs: ["nuMarkdown"], usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
167
162
|
}
|
|
168
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: NuMarkdownComponent, decorators: [{
|
|
169
164
|
type: Component,
|
|
170
165
|
args: [{
|
|
171
166
|
selector: 'nu-markdown',
|
|
@@ -180,34 +175,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.2", ngImpor
|
|
|
180
175
|
],
|
|
181
176
|
changeDetection: ChangeDetectionStrategy.OnPush
|
|
182
177
|
}]
|
|
183
|
-
}] });
|
|
184
|
-
|
|
185
|
-
const COMPONENTS = [NuMarkdownComponent, NuMarkdownPreviewComponent];
|
|
186
|
-
class NuMarkdownModule {
|
|
187
|
-
/**
|
|
188
|
-
* Or use `provideNuMarkdownConfig` instead.
|
|
189
|
-
*/
|
|
190
|
-
static forRoot(config) {
|
|
191
|
-
return {
|
|
192
|
-
ngModule: NuMarkdownModule,
|
|
193
|
-
providers: [{ provide: NU_MARKDOWN_CONFIG, useValue: config }]
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: NuMarkdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
197
|
-
/** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.2", ngImport: i0, type: NuMarkdownModule, imports: [CommonModule, NuMarkdownComponent, NuMarkdownPreviewComponent], exports: [NuMarkdownComponent, NuMarkdownPreviewComponent] });
|
|
198
|
-
/** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: NuMarkdownModule, imports: [CommonModule] });
|
|
199
|
-
}
|
|
200
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: NuMarkdownModule, decorators: [{
|
|
201
|
-
type: NgModule,
|
|
202
|
-
args: [{
|
|
203
|
-
imports: [CommonModule, ...COMPONENTS],
|
|
204
|
-
exports: COMPONENTS
|
|
205
|
-
}]
|
|
206
|
-
}] });
|
|
178
|
+
}], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }] } });
|
|
207
179
|
|
|
208
180
|
/**
|
|
209
181
|
* Generated bundle index. Do not edit.
|
|
210
182
|
*/
|
|
211
183
|
|
|
212
|
-
export { NU_MARKDOWN_CONFIG, NuMarkdownBaseComponent, NuMarkdownComponent,
|
|
184
|
+
export { NU_MARKDOWN_CONFIG, NuMarkdownBaseComponent, NuMarkdownComponent, NuMarkdownPreviewComponent, NuMarkdownService, provideNuMarkdownConfig };
|
|
213
185
|
//# sourceMappingURL=ng-util-markdown.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-util-markdown.mjs","sources":["../../../../packages/markdown/markdown.config.ts","../../../../packages/markdown/markdown.service.ts","../../../../packages/markdown/markdown-base.component.ts","../../../../packages/markdown/markdown-preview.component.ts","../../../../packages/markdown/markdown.component.ts","../../../../packages/markdown/markdown.module.ts","../../../../packages/markdown/ng-util-markdown.ts"],"sourcesContent":["import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\nimport type VditorType from 'vditor';\n\nexport const NU_MARKDOWN_CONFIG = new InjectionToken<NuMarkdownConfig>('NU_MARKDOWN_CONFIG');\n\nexport function provideNuMarkdownConfig(config?: NuMarkdownConfig): EnvironmentProviders {\n return makeEnvironmentProviders([{ provide: NU_MARKDOWN_CONFIG, useValue: config }]);\n}\n\nexport interface NuMarkdownConfig {\n /**\n * The base URL to [Vditor](https://github.com/Vanessa219/vditor) library, Default: `['https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js', 'https://cdn.jsdelivr.net/npm/vditor/dist/index.css']`\n */\n libs?: string[];\n\n /**\n * Equar [IOptions](https://github.com/Vanessa219/vditor#options)\n */\n defaultOptions?: VditorType['vditor']['options'];\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { NuLazyService } from '@ng-util/lazy';\n\nimport { NU_MARKDOWN_CONFIG } from './markdown.config';\n\n@Injectable({ providedIn: 'root' })\nexport class NuMarkdownService {\n private readonly config = inject(NU_MARKDOWN_CONFIG, { optional: true });\n private readonly lazySrv = inject(NuLazyService);\n private libs: string[];\n private loading = false;\n private loaded = false;\n private notify$ = new Subject<void>();\n\n get notify(): Observable<void> {\n return this.notify$.asObservable();\n }\n\n constructor() {\n this.libs = this.config?.libs || [\n `https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js`,\n `https://cdn.jsdelivr.net/npm/vditor/dist/index.css`\n ];\n }\n\n load(): this {\n if (this.loading) {\n if (this.loaded) {\n this.notify$.next();\n }\n return this;\n }\n this.loading = true;\n\n const libs = this.libs!;\n this.lazySrv.monitor(libs).subscribe(() => {\n this.loaded = true;\n this.notify$.next();\n });\n this.lazySrv.load(libs);\n\n return this;\n }\n}\n","import {\n AfterViewInit,\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n input,\n numberAttribute,\n OnDestroy\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport type VditorType from 'vditor';\n\nimport { NU_MARKDOWN_CONFIG } from './markdown.config';\nimport { NuMarkdownService } from './markdown.service';\n\n@Directive()\nexport abstract class NuMarkdownBaseComponent implements AfterViewInit, OnDestroy {\n protected el = inject<ElementRef<HTMLElement>>(ElementRef);\n protected config = inject(NU_MARKDOWN_CONFIG, { optional: true });\n protected srv = inject(NuMarkdownService);\n\n private notify$?: Subscription;\n protected _instance?: VditorType;\n\n delay = input(0, { transform: numberAttribute });\n disabled = input(false, { transform: booleanAttribute });\n\n get instance(): VditorType | undefined {\n return this._instance;\n }\n\n private initDelay(): void {\n setTimeout(() => this.init(), this.delay());\n }\n\n protected abstract init(): void;\n\n protected get loaded(): boolean {\n return !!(window as any).Vditor;\n }\n\n ngAfterViewInit(): void {\n this.notify$ = this.srv.notify.subscribe(() => this.initDelay());\n if (this.loaded) {\n this.initDelay();\n return;\n }\n this.srv.load();\n }\n\n ngOnDestroy(): void {\n this.notify$?.unsubscribe();\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, input } from '@angular/core';\n\nimport { NuMarkdownBaseComponent } from './markdown-base.component';\n\ndeclare let Vditor: any;\n\n@Component({\n selector: 'nu-markdown-preview',\n template: ``,\n exportAs: 'nuMarkdownPreview',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NuMarkdownPreviewComponent extends NuMarkdownBaseComponent {\n options = input<any>();\n value = input<string>('');\n readonly ready = new EventEmitter<string>();\n\n protected async init() {\n await Vditor.preview(this.el.nativeElement, this.value(), {\n cdn: 'https://cdn.jsdelivr.net/npm/vditor',\n ...this.options()\n });\n this.ready.emit(this.el.nativeElement.innerHTML);\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { NuMarkdownBaseComponent } from './markdown-base.component';\nimport type VditorType from 'vditor';\n\ndeclare let Vditor: any;\n\n@Component({\n selector: 'nu-markdown',\n template: ``,\n exportAs: 'nuMarkdown',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NuMarkdownComponent),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NuMarkdownComponent extends NuMarkdownBaseComponent implements ControlValueAccessor {\n options = input<VditorType['vditor']['options']>();\n readonly ready = new EventEmitter<VditorType>();\n\n private value = '';\n private onChange = (_: string) => {};\n\n protected init(): void {\n const options: VditorType['vditor']['options'] = {\n value: this.value,\n cache: {\n enable: false\n },\n mode: 'sv',\n minHeight: 350,\n input: (value: string) => {\n this.onChange(value);\n },\n after: () => {\n this.setDisabled(this.disabled());\n },\n ...this.config?.defaultOptions,\n ...this.options\n };\n this._instance = new Vditor(this.el.nativeElement, options);\n this.ready.emit(this._instance);\n }\n\n private setDisabled(v: boolean): void {\n const i = this._instance;\n if (i == null) return;\n if (v) {\n i.disabled();\n } else {\n i.enable();\n }\n }\n\n writeValue(value: string): void {\n this.value = value;\n this.instance?.setValue(value);\n }\n\n registerOnChange(fn: (_: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(_: () => void): void {}\n\n setDisabledState(v: boolean): void {\n this.setDisabled(v);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { NuMarkdownPreviewComponent } from './markdown-preview.component';\nimport { NuMarkdownComponent } from './markdown.component';\nimport { NuMarkdownConfig, NU_MARKDOWN_CONFIG } from './markdown.config';\n\nconst COMPONENTS = [NuMarkdownComponent, NuMarkdownPreviewComponent];\n\n@NgModule({\n imports: [CommonModule, ...COMPONENTS],\n exports: COMPONENTS\n})\nexport class NuMarkdownModule {\n /**\n * Or use `provideNuMarkdownConfig` instead.\n */\n static forRoot(config?: NuMarkdownConfig): ModuleWithProviders<NuMarkdownModule> {\n return {\n ngModule: NuMarkdownModule,\n providers: [{ provide: NU_MARKDOWN_CONFIG, useValue: config }]\n };\n }\n}\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":"ng-util-markdown.mjs","sources":["../../../../packages/markdown/markdown.config.ts","../../../../packages/markdown/markdown.service.ts","../../../../packages/markdown/markdown-base.component.ts","../../../../packages/markdown/markdown-preview.component.ts","../../../../packages/markdown/markdown.component.ts","../../../../packages/markdown/ng-util-markdown.ts"],"sourcesContent":["import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\nimport type VditorType from 'vditor';\n\nexport const NU_MARKDOWN_CONFIG = new InjectionToken<NuMarkdownConfig>('NU_MARKDOWN_CONFIG');\n\nexport function provideNuMarkdownConfig(config?: NuMarkdownConfig): EnvironmentProviders {\n return makeEnvironmentProviders([{ provide: NU_MARKDOWN_CONFIG, useValue: config }]);\n}\n\nexport interface NuMarkdownConfig {\n /**\n * The base URL to [Vditor](https://github.com/Vanessa219/vditor) library, Default: `['https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js', 'https://cdn.jsdelivr.net/npm/vditor/dist/index.css']`\n */\n libs?: string[];\n\n /**\n * Equar [IOptions](https://github.com/Vanessa219/vditor#options)\n */\n defaultOptions?: VditorType['vditor']['options'];\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { NuLazyService } from '@ng-util/lazy';\n\nimport { NU_MARKDOWN_CONFIG } from './markdown.config';\n\n@Injectable({ providedIn: 'root' })\nexport class NuMarkdownService {\n private readonly config = inject(NU_MARKDOWN_CONFIG, { optional: true });\n private readonly lazySrv = inject(NuLazyService);\n private libs = this.config?.libs || [\n `https://cdn.jsdelivr.net/npm/vditor/dist/index.min.js`,\n `https://cdn.jsdelivr.net/npm/vditor/dist/index.css`\n ];\n private loading = false;\n private loaded = false;\n private notify$ = new Subject<void>();\n\n get notify(): Observable<void> {\n return this.notify$.asObservable();\n }\n\n load(): this {\n if (this.loading) {\n if (this.loaded) {\n this.notify$.next();\n }\n return this;\n }\n this.loading = true;\n\n const libs = this.libs;\n this.lazySrv.monitor(libs).subscribe(() => {\n this.loaded = true;\n this.notify$.next();\n });\n this.lazySrv.load(libs);\n\n return this;\n }\n}\n","import {\n afterNextRender,\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n input,\n numberAttribute\n} from '@angular/core';\nimport type VditorType from 'vditor';\nimport { NU_MARKDOWN_CONFIG } from './markdown.config';\nimport { NuMarkdownService } from './markdown.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive()\nexport abstract class NuMarkdownBaseComponent {\n protected el = inject<ElementRef<HTMLElement>>(ElementRef);\n protected config = inject(NU_MARKDOWN_CONFIG, { optional: true });\n protected srv = inject(NuMarkdownService);\n\n protected _instance?: VditorType;\n\n delay = input(0, { transform: numberAttribute });\n disabled = input(false, { transform: booleanAttribute });\n\n get instance(): VditorType | undefined {\n return this._instance;\n }\n\n constructor() {\n this.srv.notify.pipe(takeUntilDestroyed()).subscribe(() => this.initDelay());\n\n afterNextRender(() => {\n if (this.loaded) {\n this.initDelay();\n return;\n }\n this.srv.load();\n });\n }\n\n private initDelay(): void {\n setTimeout(() => this.init(), this.delay());\n }\n\n protected abstract init(): void;\n\n protected get loaded(): boolean {\n return !!(window as any).Vditor;\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, input } from '@angular/core';\n\nimport { NuMarkdownBaseComponent } from './markdown-base.component';\n\ndeclare let Vditor: any;\n\n@Component({\n selector: 'nu-markdown-preview',\n template: ``,\n exportAs: 'nuMarkdownPreview',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NuMarkdownPreviewComponent extends NuMarkdownBaseComponent {\n options = input<any>();\n value = input<string>('');\n readonly ready = new EventEmitter<string>();\n\n protected async init() {\n await Vditor.preview(this.el.nativeElement, this.value(), {\n cdn: 'https://cdn.jsdelivr.net/npm/vditor',\n ...this.options()\n });\n this.ready.emit(this.el.nativeElement.innerHTML);\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { NuMarkdownBaseComponent } from './markdown-base.component';\nimport type VditorType from 'vditor';\n\ndeclare let Vditor: any;\n\n@Component({\n selector: 'nu-markdown',\n template: ``,\n exportAs: 'nuMarkdown',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NuMarkdownComponent),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NuMarkdownComponent extends NuMarkdownBaseComponent implements ControlValueAccessor {\n options = input<VditorType['vditor']['options']>();\n readonly ready = new EventEmitter<VditorType>();\n\n private value = '';\n private onChange = (_: string) => {};\n\n protected init(): void {\n const options: VditorType['vditor']['options'] = {\n value: this.value,\n cache: {\n enable: false\n },\n mode: 'sv',\n minHeight: 350,\n input: (value: string) => {\n this.onChange(value);\n },\n after: () => {\n this.setDisabled(this.disabled());\n },\n ...this.config?.defaultOptions,\n ...this.options\n };\n this._instance = new Vditor(this.el.nativeElement, options);\n this.ready.emit(this._instance);\n }\n\n private setDisabled(v: boolean): void {\n const i = this._instance;\n if (i == null) return;\n if (v) {\n i.disabled();\n } else {\n i.enable();\n }\n }\n\n writeValue(value: string): void {\n this.value = value;\n this.instance?.setValue(value);\n }\n\n registerOnChange(fn: (_: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(_: () => void): void {}\n\n setDisabledState(v: boolean): void {\n this.setDisabled(v);\n }\n}\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": "@ng-util/markdown",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "21.0.1",
|
|
4
4
|
"author": "cipchk<cipchk@qq.com>",
|
|
5
5
|
"description": "Vditor for Angular",
|
|
6
6
|
"license": "MIT",
|
|
@@ -21,18 +21,17 @@
|
|
|
21
21
|
"angular standalone library"
|
|
22
22
|
],
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@ng-util/
|
|
25
|
-
"@ng-util/lazy": "^14.0.0",
|
|
24
|
+
"@ng-util/lazy": "^20.0.0",
|
|
26
25
|
"tslib": "^2.3.0"
|
|
27
26
|
},
|
|
28
27
|
"module": "fesm2022/ng-util-markdown.mjs",
|
|
29
|
-
"typings": "
|
|
28
|
+
"typings": "types/ng-util-markdown.d.ts",
|
|
30
29
|
"exports": {
|
|
31
30
|
"./package.json": {
|
|
32
31
|
"default": "./package.json"
|
|
33
32
|
},
|
|
34
33
|
".": {
|
|
35
|
-
"types": "./
|
|
34
|
+
"types": "./types/ng-util-markdown.d.ts",
|
|
36
35
|
"default": "./fesm2022/ng-util-markdown.mjs"
|
|
37
36
|
}
|
|
38
37
|
},
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { ElementRef, EventEmitter, InjectionToken, EnvironmentProviders } from '@angular/core';
|
|
3
3
|
import * as _ng_util_markdown from '@ng-util/markdown';
|
|
4
4
|
import VditorType from 'vditor';
|
|
5
5
|
import { Observable } from 'rxjs';
|
|
6
6
|
import { ControlValueAccessor } from '@angular/forms';
|
|
7
|
-
import * as i1 from '@angular/common';
|
|
8
7
|
|
|
9
8
|
declare class NuMarkdownService {
|
|
10
9
|
private readonly config;
|
|
@@ -14,26 +13,23 @@ declare class NuMarkdownService {
|
|
|
14
13
|
private loaded;
|
|
15
14
|
private notify$;
|
|
16
15
|
get notify(): Observable<void>;
|
|
17
|
-
constructor();
|
|
18
16
|
load(): this;
|
|
19
17
|
static ɵfac: i0.ɵɵFactoryDeclaration<NuMarkdownService, never>;
|
|
20
18
|
static ɵprov: i0.ɵɵInjectableDeclaration<NuMarkdownService>;
|
|
21
19
|
}
|
|
22
20
|
|
|
23
|
-
declare abstract class NuMarkdownBaseComponent
|
|
21
|
+
declare abstract class NuMarkdownBaseComponent {
|
|
24
22
|
protected el: ElementRef<HTMLElement>;
|
|
25
23
|
protected config: _ng_util_markdown.NuMarkdownConfig | null;
|
|
26
24
|
protected srv: NuMarkdownService;
|
|
27
|
-
private notify$?;
|
|
28
25
|
protected _instance?: VditorType;
|
|
29
26
|
delay: i0.InputSignalWithTransform<number, unknown>;
|
|
30
27
|
disabled: i0.InputSignalWithTransform<boolean, unknown>;
|
|
31
28
|
get instance(): VditorType | undefined;
|
|
29
|
+
constructor();
|
|
32
30
|
private initDelay;
|
|
33
31
|
protected abstract init(): void;
|
|
34
32
|
protected get loaded(): boolean;
|
|
35
|
-
ngAfterViewInit(): void;
|
|
36
|
-
ngOnDestroy(): void;
|
|
37
33
|
static ɵfac: i0.ɵɵFactoryDeclaration<NuMarkdownBaseComponent, never>;
|
|
38
34
|
static ɵdir: i0.ɵɵDirectiveDeclaration<NuMarkdownBaseComponent, never, never, { "delay": { "alias": "delay"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
39
35
|
}
|
|
@@ -75,15 +71,5 @@ interface NuMarkdownConfig {
|
|
|
75
71
|
defaultOptions?: VditorType['vditor']['options'];
|
|
76
72
|
}
|
|
77
73
|
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Or use `provideNuMarkdownConfig` instead.
|
|
81
|
-
*/
|
|
82
|
-
static forRoot(config?: NuMarkdownConfig): ModuleWithProviders<NuMarkdownModule>;
|
|
83
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NuMarkdownModule, never>;
|
|
84
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<NuMarkdownModule, never, [typeof i1.CommonModule, typeof NuMarkdownComponent, typeof NuMarkdownPreviewComponent], [typeof NuMarkdownComponent, typeof NuMarkdownPreviewComponent]>;
|
|
85
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<NuMarkdownModule>;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
export { NU_MARKDOWN_CONFIG, NuMarkdownBaseComponent, NuMarkdownComponent, NuMarkdownModule, NuMarkdownPreviewComponent, NuMarkdownService, provideNuMarkdownConfig };
|
|
74
|
+
export { NU_MARKDOWN_CONFIG, NuMarkdownBaseComponent, NuMarkdownComponent, NuMarkdownPreviewComponent, NuMarkdownService, provideNuMarkdownConfig };
|
|
89
75
|
export type { NuMarkdownConfig };
|