@notectl/angular 0.0.2 → 0.0.4
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/package.json +2 -2
- package/dist/README.md +0 -141
- package/dist/esm2022/index.mjs +0 -6
- package/dist/esm2022/lib/notectl-editor.component.mjs +0 -244
- package/dist/esm2022/lib/notectl-editor.directive.mjs +0 -164
- package/dist/esm2022/lib/notectl-editor.module.mjs +0 -21
- package/dist/esm2022/notectl-angular.mjs +0 -5
- package/dist/esm2022/public-api.mjs +0 -7
- package/dist/fesm2022/notectl-angular.mjs +0 -439
- package/dist/fesm2022/notectl-angular.mjs.map +0 -1
- package/dist/index.d.ts +0 -5
- package/dist/lib/notectl-editor.component.d.ts +0 -92
- package/dist/lib/notectl-editor.directive.d.ts +0 -42
- package/dist/lib/notectl-editor.module.d.ts +0 -8
- package/dist/public-api.d.ts +0 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@notectl/angular",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4",
|
|
4
4
|
"description": "Angular adapter for NotectlEditor",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
},
|
|
50
50
|
"repository": {
|
|
51
51
|
"type": "git",
|
|
52
|
-
"url": "git+https://github.com/
|
|
52
|
+
"url": "git+https://github.com/Samyssmile/notectl.git",
|
|
53
53
|
"directory": "packages/adapters/angular"
|
|
54
54
|
},
|
|
55
55
|
"publishConfig": {
|
package/dist/README.md
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
# @notectl/angular
|
|
2
|
-
|
|
3
|
-
Angular adapter for NotectlEditor - a framework-agnostic rich text editor built on Web Components.
|
|
4
|
-
|
|
5
|
-
## Installation
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npm install @notectl/angular @notectl/core
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## Usage
|
|
12
|
-
|
|
13
|
-
### Import Module
|
|
14
|
-
|
|
15
|
-
```typescript
|
|
16
|
-
import { NgModule } from '@angular/core';
|
|
17
|
-
import { BrowserModule } from '@angular/platform-browser';
|
|
18
|
-
import { NotectlEditorModule } from '@notectl/angular';
|
|
19
|
-
import { AppComponent } from './app.component';
|
|
20
|
-
|
|
21
|
-
@NgModule({
|
|
22
|
-
declarations: [AppComponent],
|
|
23
|
-
imports: [
|
|
24
|
-
BrowserModule,
|
|
25
|
-
NotectlEditorModule
|
|
26
|
-
],
|
|
27
|
-
providers: [],
|
|
28
|
-
bootstrap: [AppComponent]
|
|
29
|
-
})
|
|
30
|
-
export class AppModule { }
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
### Component Usage
|
|
34
|
-
|
|
35
|
-
```typescript
|
|
36
|
-
import { Component } from '@angular/core';
|
|
37
|
-
import type { EditorAPI } from '@notectl/core';
|
|
38
|
-
|
|
39
|
-
@Component({
|
|
40
|
-
selector: 'app-root',
|
|
41
|
-
template: `
|
|
42
|
-
<notectl-editor
|
|
43
|
-
[content]="content"
|
|
44
|
-
[placeholder]="'Start writing...'"
|
|
45
|
-
[readOnly]="false"
|
|
46
|
-
(contentChange)="onContentChange($event)"
|
|
47
|
-
(ready)="onReady($event)"
|
|
48
|
-
></notectl-editor>
|
|
49
|
-
`
|
|
50
|
-
})
|
|
51
|
-
export class AppComponent {
|
|
52
|
-
content = { type: 'doc', content: [] };
|
|
53
|
-
|
|
54
|
-
onContentChange(content: unknown): void {
|
|
55
|
-
console.log('Content changed:', content);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
onReady(editor: EditorAPI): void {
|
|
59
|
-
console.log('Editor ready:', editor);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### Reactive Forms Integration
|
|
65
|
-
|
|
66
|
-
```typescript
|
|
67
|
-
import { Component } from '@angular/core';
|
|
68
|
-
import { FormControl, FormGroup } from '@angular/forms';
|
|
69
|
-
|
|
70
|
-
@Component({
|
|
71
|
-
selector: 'app-editor-form',
|
|
72
|
-
template: `
|
|
73
|
-
<form [formGroup]="form">
|
|
74
|
-
<notectl-editor formControlName="content"></notectl-editor>
|
|
75
|
-
</form>
|
|
76
|
-
`
|
|
77
|
-
})
|
|
78
|
-
export class EditorFormComponent {
|
|
79
|
-
form = new FormGroup({
|
|
80
|
-
content: new FormControl(null)
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
### Directive Usage
|
|
86
|
-
|
|
87
|
-
```typescript
|
|
88
|
-
import { Component } from '@angular/core';
|
|
89
|
-
|
|
90
|
-
@Component({
|
|
91
|
-
selector: 'app-editor',
|
|
92
|
-
template: `
|
|
93
|
-
<div
|
|
94
|
-
notectl-editor
|
|
95
|
-
[content]="content"
|
|
96
|
-
(contentChange)="onContentChange($event)"
|
|
97
|
-
></div>
|
|
98
|
-
`
|
|
99
|
-
})
|
|
100
|
-
export class EditorComponent {
|
|
101
|
-
content = { type: 'doc', content: [] };
|
|
102
|
-
|
|
103
|
-
onContentChange(content: unknown): void {
|
|
104
|
-
console.log('Content changed:', content);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
## API
|
|
110
|
-
|
|
111
|
-
### Component Props
|
|
112
|
-
|
|
113
|
-
- `debug?: boolean` - Enable debug mode
|
|
114
|
-
- `content?: string | object` - Initial editor content
|
|
115
|
-
- `placeholder?: string` - Placeholder text
|
|
116
|
-
- `readOnly?: boolean` - Read-only mode
|
|
117
|
-
- `accessibility?: object` - Accessibility configuration
|
|
118
|
-
- `i18n?: object` - Internationalization settings
|
|
119
|
-
- `theme?: object` - Theme configuration
|
|
120
|
-
|
|
121
|
-
### Component Events
|
|
122
|
-
|
|
123
|
-
- `contentChange: EventEmitter<unknown>` - Emitted when content changes
|
|
124
|
-
- `selectionChange: EventEmitter<unknown>` - Emitted when selection changes
|
|
125
|
-
- `editorFocus: EventEmitter<void>` - Emitted when editor gains focus
|
|
126
|
-
- `editorBlur: EventEmitter<void>` - Emitted when editor loses focus
|
|
127
|
-
- `ready: EventEmitter<EditorAPI>` - Emitted when editor is ready
|
|
128
|
-
- `error: EventEmitter<Error>` - Emitted when an error occurs
|
|
129
|
-
|
|
130
|
-
### Component Methods
|
|
131
|
-
|
|
132
|
-
- `getContent(): unknown` - Get current content
|
|
133
|
-
- `setContent(content: unknown): void` - Set content
|
|
134
|
-
- `getState(): unknown` - Get editor state
|
|
135
|
-
- `executeCommand(command: string, ...args: unknown[]): void` - Execute command
|
|
136
|
-
- `registerPlugin(plugin: unknown): void` - Register a plugin
|
|
137
|
-
- `unregisterPlugin(pluginId: string): void` - Unregister a plugin
|
|
138
|
-
|
|
139
|
-
## License
|
|
140
|
-
|
|
141
|
-
MIT
|
package/dist/esm2022/index.mjs
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @notectl/angular - Angular adapter for NotectlEditor
|
|
3
|
-
* @packageDocumentation
|
|
4
|
-
*/
|
|
5
|
-
export * from './public-api';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBub3RlY3RsL2FuZ3VsYXIgLSBBbmd1bGFyIGFkYXB0ZXIgZm9yIE5vdGVjdGxFZGl0b3JcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -1,244 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Angular component wrapper for NotectlEditor
|
|
3
|
-
*/
|
|
4
|
-
import { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation, forwardRef, } from '@angular/core';
|
|
5
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
/**
|
|
8
|
-
* NotectlEditor Angular component
|
|
9
|
-
*/
|
|
10
|
-
export class NotectlEditorComponent {
|
|
11
|
-
containerRef;
|
|
12
|
-
/** Debug mode */
|
|
13
|
-
debug;
|
|
14
|
-
/** Initial content */
|
|
15
|
-
content;
|
|
16
|
-
/** Placeholder text */
|
|
17
|
-
placeholder;
|
|
18
|
-
/** Read-only mode */
|
|
19
|
-
readOnly;
|
|
20
|
-
/** Accessibility configuration */
|
|
21
|
-
accessibility;
|
|
22
|
-
/** Internationalization configuration */
|
|
23
|
-
i18n;
|
|
24
|
-
/** Theme configuration */
|
|
25
|
-
theme;
|
|
26
|
-
/** Custom class name */
|
|
27
|
-
className;
|
|
28
|
-
/** Emitted when content changes */
|
|
29
|
-
contentChange = new EventEmitter();
|
|
30
|
-
/** Emitted when selection changes */
|
|
31
|
-
selectionChange = new EventEmitter();
|
|
32
|
-
/** Emitted when editor gains focus */
|
|
33
|
-
editorFocus = new EventEmitter();
|
|
34
|
-
/** Emitted when editor loses focus */
|
|
35
|
-
editorBlur = new EventEmitter();
|
|
36
|
-
/** Emitted when editor is ready */
|
|
37
|
-
ready = new EventEmitter();
|
|
38
|
-
/** Emitted when an error occurs */
|
|
39
|
-
error = new EventEmitter();
|
|
40
|
-
editor = null;
|
|
41
|
-
onChange = () => { };
|
|
42
|
-
onTouched = () => { };
|
|
43
|
-
ngOnInit() {
|
|
44
|
-
this.initEditor();
|
|
45
|
-
}
|
|
46
|
-
ngOnDestroy() {
|
|
47
|
-
this.destroyEditor();
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Initialize the editor instance
|
|
51
|
-
*/
|
|
52
|
-
initEditor() {
|
|
53
|
-
if (!this.containerRef?.nativeElement) {
|
|
54
|
-
console.error('NotectlEditor: Container element not found');
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
// Create editor instance
|
|
58
|
-
this.editor = document.createElement('notectl-editor');
|
|
59
|
-
// Configure editor
|
|
60
|
-
const config = {
|
|
61
|
-
debug: this.debug,
|
|
62
|
-
content: this.content,
|
|
63
|
-
placeholder: this.placeholder,
|
|
64
|
-
readOnly: this.readOnly,
|
|
65
|
-
accessibility: this.accessibility,
|
|
66
|
-
i18n: this.i18n,
|
|
67
|
-
theme: this.theme,
|
|
68
|
-
};
|
|
69
|
-
this.editor.configure(config);
|
|
70
|
-
// Attach event listeners
|
|
71
|
-
this.editor.on('content-change', (data) => {
|
|
72
|
-
const eventData = data;
|
|
73
|
-
const content = eventData.content;
|
|
74
|
-
this.contentChange.emit(content);
|
|
75
|
-
this.onChange(content);
|
|
76
|
-
});
|
|
77
|
-
this.editor.on('selection-change', (data) => {
|
|
78
|
-
const eventData = data;
|
|
79
|
-
this.selectionChange.emit(eventData.selection);
|
|
80
|
-
});
|
|
81
|
-
this.editor.on('focus', () => {
|
|
82
|
-
this.editorFocus.emit();
|
|
83
|
-
this.onTouched();
|
|
84
|
-
});
|
|
85
|
-
this.editor.on('blur', () => {
|
|
86
|
-
this.editorBlur.emit();
|
|
87
|
-
});
|
|
88
|
-
this.editor.on('ready', () => {
|
|
89
|
-
this.ready.emit(this.getEditorAPI());
|
|
90
|
-
});
|
|
91
|
-
this.editor.on('error', (data) => {
|
|
92
|
-
const eventData = data;
|
|
93
|
-
if (eventData.error) {
|
|
94
|
-
this.error.emit(eventData.error);
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
// Mount editor
|
|
98
|
-
this.containerRef.nativeElement.appendChild(this.editor);
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Destroy the editor instance
|
|
102
|
-
*/
|
|
103
|
-
destroyEditor() {
|
|
104
|
-
if (this.editor) {
|
|
105
|
-
this.editor.destroy();
|
|
106
|
-
if (this.containerRef?.nativeElement?.contains(this.editor)) {
|
|
107
|
-
this.containerRef.nativeElement.removeChild(this.editor);
|
|
108
|
-
}
|
|
109
|
-
this.editor = null;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Update editor configuration
|
|
114
|
-
*/
|
|
115
|
-
updateConfig() {
|
|
116
|
-
if (!this.editor)
|
|
117
|
-
return;
|
|
118
|
-
const config = {
|
|
119
|
-
debug: this.debug,
|
|
120
|
-
content: this.content,
|
|
121
|
-
placeholder: this.placeholder,
|
|
122
|
-
readOnly: this.readOnly,
|
|
123
|
-
accessibility: this.accessibility,
|
|
124
|
-
i18n: this.i18n,
|
|
125
|
-
theme: this.theme,
|
|
126
|
-
};
|
|
127
|
-
this.editor.configure(config);
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Get editor API
|
|
131
|
-
*/
|
|
132
|
-
getEditorAPI() {
|
|
133
|
-
if (!this.editor) {
|
|
134
|
-
throw new Error('Editor not initialized');
|
|
135
|
-
}
|
|
136
|
-
return this.editor;
|
|
137
|
-
}
|
|
138
|
-
// ControlValueAccessor implementation
|
|
139
|
-
writeValue(value) {
|
|
140
|
-
if (this.editor && typeof value === 'string') {
|
|
141
|
-
this.editor.setContent(value);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
registerOnChange(fn) {
|
|
145
|
-
this.onChange = fn;
|
|
146
|
-
}
|
|
147
|
-
registerOnTouched(fn) {
|
|
148
|
-
this.onTouched = fn;
|
|
149
|
-
}
|
|
150
|
-
setDisabledState(isDisabled) {
|
|
151
|
-
if (this.editor) {
|
|
152
|
-
this.editor.configure({ readOnly: isDisabled });
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
// Public API methods
|
|
156
|
-
/**
|
|
157
|
-
* Get current editor content
|
|
158
|
-
*/
|
|
159
|
-
getContent() {
|
|
160
|
-
return this.editor?.getContent();
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Set editor content
|
|
164
|
-
*/
|
|
165
|
-
setContent(content) {
|
|
166
|
-
if (this.editor && typeof content === 'string') {
|
|
167
|
-
this.editor.setContent(content);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Get current editor state
|
|
172
|
-
*/
|
|
173
|
-
getState() {
|
|
174
|
-
return this.editor?.getState();
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Execute an editor command
|
|
178
|
-
*/
|
|
179
|
-
executeCommand(command, ...args) {
|
|
180
|
-
this.editor?.executeCommand(command, ...args);
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Register a plugin
|
|
184
|
-
*/
|
|
185
|
-
registerPlugin(plugin) {
|
|
186
|
-
this.editor?.registerPlugin(plugin);
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Unregister a plugin
|
|
190
|
-
*/
|
|
191
|
-
unregisterPlugin(pluginId) {
|
|
192
|
-
this.editor?.unregisterPlugin(pluginId);
|
|
193
|
-
}
|
|
194
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotectlEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
195
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NotectlEditorComponent, selector: "notectl-editor", inputs: { debug: "debug", content: "content", placeholder: "placeholder", readOnly: "readOnly", accessibility: "accessibility", i18n: "i18n", theme: "theme", className: "className" }, outputs: { contentChange: "contentChange", selectionChange: "selectionChange", editorFocus: "editorFocus", editorBlur: "editorBlur", ready: "ready", error: "error" }, providers: [
|
|
196
|
-
{
|
|
197
|
-
provide: NG_VALUE_ACCESSOR,
|
|
198
|
-
useExisting: forwardRef(() => NotectlEditorComponent),
|
|
199
|
-
multi: true,
|
|
200
|
-
},
|
|
201
|
-
], viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true, static: true }], ngImport: i0, template: '<div #container [attr.data-notectl-angular-wrapper]="true"></div>', isInline: true, styles: [":host{display:block}\n"], encapsulation: i0.ViewEncapsulation.None });
|
|
202
|
-
}
|
|
203
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotectlEditorComponent, decorators: [{
|
|
204
|
-
type: Component,
|
|
205
|
-
args: [{ selector: 'notectl-editor', template: '<div #container [attr.data-notectl-angular-wrapper]="true"></div>', encapsulation: ViewEncapsulation.None, providers: [
|
|
206
|
-
{
|
|
207
|
-
provide: NG_VALUE_ACCESSOR,
|
|
208
|
-
useExisting: forwardRef(() => NotectlEditorComponent),
|
|
209
|
-
multi: true,
|
|
210
|
-
},
|
|
211
|
-
], styles: [":host{display:block}\n"] }]
|
|
212
|
-
}], propDecorators: { containerRef: [{
|
|
213
|
-
type: ViewChild,
|
|
214
|
-
args: ['container', { static: true }]
|
|
215
|
-
}], debug: [{
|
|
216
|
-
type: Input
|
|
217
|
-
}], content: [{
|
|
218
|
-
type: Input
|
|
219
|
-
}], placeholder: [{
|
|
220
|
-
type: Input
|
|
221
|
-
}], readOnly: [{
|
|
222
|
-
type: Input
|
|
223
|
-
}], accessibility: [{
|
|
224
|
-
type: Input
|
|
225
|
-
}], i18n: [{
|
|
226
|
-
type: Input
|
|
227
|
-
}], theme: [{
|
|
228
|
-
type: Input
|
|
229
|
-
}], className: [{
|
|
230
|
-
type: Input
|
|
231
|
-
}], contentChange: [{
|
|
232
|
-
type: Output
|
|
233
|
-
}], selectionChange: [{
|
|
234
|
-
type: Output
|
|
235
|
-
}], editorFocus: [{
|
|
236
|
-
type: Output
|
|
237
|
-
}], editorBlur: [{
|
|
238
|
-
type: Output
|
|
239
|
-
}], ready: [{
|
|
240
|
-
type: Output
|
|
241
|
-
}], error: [{
|
|
242
|
-
type: Output
|
|
243
|
-
}] } });
|
|
244
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZWN0bC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9ub3RlY3RsLWVkaXRvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFJekU7O0dBRUc7QUFjSCxNQUFNLE9BQU8sc0JBQXNCO0lBQ1MsWUFBWSxDQUE4QjtJQUVwRixpQkFBaUI7SUFDUixLQUFLLENBQVc7SUFFekIsc0JBQXNCO0lBQ2IsT0FBTyxDQUFtQjtJQUVuQyx1QkFBdUI7SUFDZCxXQUFXLENBQVU7SUFFOUIscUJBQXFCO0lBQ1osUUFBUSxDQUFXO0lBRTVCLGtDQUFrQztJQUN6QixhQUFhLENBQWlDO0lBRXZELHlDQUF5QztJQUNoQyxJQUFJLENBQXdCO0lBRXJDLDBCQUEwQjtJQUNqQixLQUFLLENBQXlCO0lBRXZDLHdCQUF3QjtJQUNmLFNBQVMsQ0FBVTtJQUU1QixtQ0FBbUM7SUFDekIsYUFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7SUFFdEQscUNBQXFDO0lBQzNCLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBRXhELHNDQUFzQztJQUM1QixXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUVqRCxzQ0FBc0M7SUFDNUIsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFaEQsbUNBQW1DO0lBQ3pCLEtBQUssR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDO0lBRWhELG1DQUFtQztJQUN6QixLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztJQUVwQyxNQUFNLEdBQTZC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QVc7c0JBQXBCLE1BQU07Z0JBR0csVUFBVTtzQkFBbkIsTUFBTTtnQkFHRyxLQUFLO3NCQUFkLE1BQU07Z0JBR0csS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBbmd1bGFyIGNvbXBvbmVudCB3cmFwcGVyIGZvciBOb3RlY3RsRWRpdG9yXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBmb3J3YXJkUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5vdGVjdGxFZGl0b3IgYXMgTm90ZWN0bEVkaXRvckNvcmUgfSBmcm9tICdAbm90ZWN0bC9jb3JlJztcbmltcG9ydCB0eXBlIHsgRWRpdG9yQ29uZmlnLCBFZGl0b3JBUEkgfSBmcm9tICdAbm90ZWN0bC9jb3JlJztcblxuLyoqXG4gKiBOb3RlY3RsRWRpdG9yIEFuZ3VsYXIgY29tcG9uZW50XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25vdGVjdGwtZWRpdG9yJyxcbiAgdGVtcGxhdGU6ICc8ZGl2ICNjb250YWluZXIgW2F0dHIuZGF0YS1ub3RlY3RsLWFuZ3VsYXItd3JhcHBlcl09XCJ0cnVlXCI+PC9kaXY+JyxcbiAgc3R5bGVzOiBbJzpob3N0IHsgZGlzcGxheTogYmxvY2s7IH0nXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOb3RlY3RsRWRpdG9yQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5vdGVjdGxFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBjb250YWluZXJSZWYhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAvKiogRGVidWcgbW9kZSAqL1xuICBASW5wdXQoKSBkZWJ1Zz86IGJvb2xlYW47XG5cbiAgLyoqIEluaXRpYWwgY29udGVudCAqL1xuICBASW5wdXQoKSBjb250ZW50Pzogc3RyaW5nIHwgb2JqZWN0O1xuXG4gIC8qKiBQbGFjZWhvbGRlciB0ZXh0ICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG4gIC8qKiBSZWFkLW9ubHkgbW9kZSAqL1xuICBASW5wdXQoKSByZWFkT25seT86IGJvb2xlYW47XG5cbiAgLyoqIEFjY2Vzc2liaWxpdHkgY29uZmlndXJhdGlvbiAqL1xuICBASW5wdXQoKSBhY2Nlc3NpYmlsaXR5PzogRWRpdG9yQ29uZmlnWydhY2Nlc3NpYmlsaXR5J107XG5cbiAgLyoqIEludGVybmF0aW9uYWxpemF0aW9uIGNvbmZpZ3VyYXRpb24gKi9cbiAgQElucHV0KCkgaTE4bj86IEVkaXRvckNvbmZpZ1snaTE4biddO1xuXG4gIC8qKiBUaGVtZSBjb25maWd1cmF0aW9uICovXG4gIEBJbnB1dCgpIHRoZW1lPzogRWRpdG9yQ29uZmlnWyd0aGVtZSddO1xuXG4gIC8qKiBDdXN0b20gY2xhc3MgbmFtZSAqL1xuICBASW5wdXQoKSBjbGFzc05hbWU/OiBzdHJpbmc7XG5cbiAgLyoqIEVtaXR0ZWQgd2hlbiBjb250ZW50IGNoYW5nZXMgKi9cbiAgQE91dHB1dCgpIGNvbnRlbnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XG5cbiAgLyoqIEVtaXR0ZWQgd2hlbiBzZWxlY3Rpb24gY2hhbmdlcyAqL1xuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xuXG4gIC8qKiBFbWl0dGVkIHdoZW4gZWRpdG9yIGdhaW5zIGZvY3VzICovXG4gIEBPdXRwdXQoKSBlZGl0b3JGb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKiogRW1pdHRlZCB3aGVuIGVkaXRvciBsb3NlcyBmb2N1cyAqL1xuICBAT3V0cHV0KCkgZWRpdG9yQmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKiogRW1pdHRlZCB3aGVuIGVkaXRvciBpcyByZWFkeSAqL1xuICBAT3V0cHV0KCkgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPEVkaXRvckFQST4oKTtcblxuICAvKiogRW1pdHRlZCB3aGVuIGFuIGVycm9yIG9jY3VycyAqL1xuICBAT3V0cHV0KCkgZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPEVycm9yPigpO1xuXG4gIHByaXZhdGUgZWRpdG9yOiBOb3RlY3RsRWRpdG9yQ29yZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIG9uQ2hhbmdlOiAodmFsdWU6IHVua25vd24pID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRFZGl0b3IoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveUVkaXRvcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGVkaXRvciBpbnN0YW5jZVxuICAgKi9cbiAgcHJpdmF0ZSBpbml0RWRpdG9yKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250YWluZXJSZWY/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vdGVjdGxFZGl0b3I6IENvbnRhaW5lciBlbGVtZW50IG5vdCBmb3VuZCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBlZGl0b3IgaW5zdGFuY2VcbiAgICB0aGlzLmVkaXRvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ25vdGVjdGwtZWRpdG9yJykgYXMgTm90ZWN0bEVkaXRvckNvcmU7XG5cbiAgICAvLyBDb25maWd1cmUgZWRpdG9yXG4gICAgY29uc3QgY29uZmlnOiBFZGl0b3JDb25maWcgPSB7XG4gICAgICBkZWJ1ZzogdGhpcy5kZWJ1ZyxcbiAgICAgIGNvbnRlbnQ6IHRoaXMuY29udGVudCxcbiAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnBsYWNlaG9sZGVyLFxuICAgICAgcmVhZE9ubHk6IHRoaXMucmVhZE9ubHksXG4gICAgICBhY2Nlc3NpYmlsaXR5OiB0aGlzLmFjY2Vzc2liaWxpdHksXG4gICAgICBpMThuOiB0aGlzLmkxOG4sXG4gICAgICB0aGVtZTogdGhpcy50aGVtZSxcbiAgICB9O1xuICAgIHRoaXMuZWRpdG9yLmNvbmZpZ3VyZShjb25maWcpO1xuXG4gICAgLy8gQXR0YWNoIGV2ZW50IGxpc3RlbmVyc1xuICAgIHRoaXMuZWRpdG9yLm9uKCdjb250ZW50LWNoYW5nZScsIChkYXRhKSA9PiB7XG4gICAgICBjb25zdCBldmVudERhdGEgPSBkYXRhIGFzIHsgY29udGVudD86IHVua25vd24gfTtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBldmVudERhdGEuY29udGVudDtcbiAgICAgIHRoaXMuY29udGVudENoYW5nZS5lbWl0KGNvbnRlbnQpO1xuICAgICAgdGhpcy5vbkNoYW5nZShjb250ZW50KTtcbiAgICB9KTtcblxuICAgIHRoaXMuZWRpdG9yLm9uKCdzZWxlY3Rpb24tY2hhbmdlJywgKGRhdGEpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50RGF0YSA9IGRhdGEgYXMgeyBzZWxlY3Rpb24/OiB1bmtub3duIH07XG4gICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KGV2ZW50RGF0YS5zZWxlY3Rpb24pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5lZGl0b3Iub24oJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgdGhpcy5lZGl0b3JGb2N1cy5lbWl0KCk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5lZGl0b3Iub24oJ2JsdXInLCAoKSA9PiB7XG4gICAgICB0aGlzLmVkaXRvckJsdXIuZW1pdCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5lZGl0b3Iub24oJ3JlYWR5JywgKCkgPT4ge1xuICAgICAgdGhpcy5yZWFkeS5lbWl0KHRoaXMuZ2V0RWRpdG9yQVBJKCkpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5lZGl0b3Iub24oJ2Vycm9yJywgKGRhdGEpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50RGF0YSA9IGRhdGEgYXMgeyBlcnJvcj86IEVycm9yIH07XG4gICAgICBpZiAoZXZlbnREYXRhLmVycm9yKSB7XG4gICAgICAgIHRoaXMuZXJyb3IuZW1pdChldmVudERhdGEuZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTW91bnQgZWRpdG9yXG4gICAgdGhpcy5jb250YWluZXJSZWYubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmVkaXRvcik7XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJveSB0aGUgZWRpdG9yIGluc3RhbmNlXG4gICAqL1xuICBwcml2YXRlIGRlc3Ryb3lFZGl0b3IoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZWRpdG9yKSB7XG4gICAgICB0aGlzLmVkaXRvci5kZXN0cm95KCk7XG4gICAgICBpZiAodGhpcy5jb250YWluZXJSZWY/Lm5hdGl2ZUVsZW1lbnQ/LmNvbnRhaW5zKHRoaXMuZWRpdG9yKSkge1xuICAgICAgICB0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuZWRpdG9yKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZWRpdG9yID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGVkaXRvciBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUNvbmZpZygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZWRpdG9yKSByZXR1cm47XG5cbiAgICBjb25zdCBjb25maWc6IEVkaXRvckNvbmZpZyA9IHtcbiAgICAgIGRlYnVnOiB0aGlzLmRlYnVnLFxuICAgICAgY29udGVudDogdGhpcy5jb250ZW50LFxuICAgICAgcGxhY2Vob2xkZXI6IHRoaXMucGxhY2Vob2xkZXIsXG4gICAgICByZWFkT25seTogdGhpcy5yZWFkT25seSxcbiAgICAgIGFjY2Vzc2liaWxpdHk6IHRoaXMuYWNjZXNzaWJpbGl0eSxcbiAgICAgIGkxOG46IHRoaXMuaTE4bixcbiAgICAgIHRoZW1lOiB0aGlzLnRoZW1lLFxuICAgIH07XG4gICAgdGhpcy5lZGl0b3IuY29uZmlndXJlKGNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGVkaXRvciBBUElcbiAgICovXG4gIHByaXZhdGUgZ2V0RWRpdG9yQVBJKCk6IEVkaXRvckFQSSB7XG4gICAgaWYgKCF0aGlzLmVkaXRvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFZGl0b3Igbm90IGluaXRpYWxpemVkJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmVkaXRvciBhcyBFZGl0b3JBUEk7XG4gIH1cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRhdGlvblxuICB3cml0ZVZhbHVlKHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZWRpdG9yICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuZWRpdG9yLnNldENvbnRlbnQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmVkaXRvcikge1xuICAgICAgdGhpcy5lZGl0b3IuY29uZmlndXJlKHsgcmVhZE9ubHk6IGlzRGlzYWJsZWQgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gUHVibGljIEFQSSBtZXRob2RzXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCBlZGl0b3IgY29udGVudFxuICAgKi9cbiAgcHVibGljIGdldENvbnRlbnQoKTogdW5rbm93biB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yPy5nZXRDb250ZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGVkaXRvciBjb250ZW50XG4gICAqL1xuICBwdWJsaWMgc2V0Q29udGVudChjb250ZW50OiB1bmtub3duKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZWRpdG9yICYmIHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5lZGl0b3Iuc2V0Q29udGVudChjb250ZW50KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgZWRpdG9yIHN0YXRlXG4gICAqL1xuICBwdWJsaWMgZ2V0U3RhdGUoKTogdW5rbm93biB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yPy5nZXRTdGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgYW4gZWRpdG9yIGNvbW1hbmRcbiAgICovXG4gIHB1YmxpYyBleGVjdXRlQ29tbWFuZChjb21tYW5kOiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSk6IHZvaWQge1xuICAgIHRoaXMuZWRpdG9yPy5leGVjdXRlQ29tbWFuZChjb21tYW5kLCAuLi5hcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIHBsdWdpblxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyUGx1Z2luKHBsdWdpbjogdW5rbm93bik6IHZvaWQge1xuICAgIHRoaXMuZWRpdG9yPy5yZWdpc3RlclBsdWdpbihwbHVnaW4gYXMgYW55KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnJlZ2lzdGVyIGEgcGx1Z2luXG4gICAqL1xuICBwdWJsaWMgdW5yZWdpc3RlclBsdWdpbihwbHVnaW5JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0b3I/LnVucmVnaXN0ZXJQbHVnaW4ocGx1Z2luSWQpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Angular directive for NotectlEditor (optional alternative to component)
|
|
3
|
-
*/
|
|
4
|
-
import { Directive, EventEmitter, Input, Output, forwardRef, } from '@angular/core';
|
|
5
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
/**
|
|
8
|
-
* Directive to use NotectlEditor on any element
|
|
9
|
-
* Usage: <div notectl-editor [content]="content"></div>
|
|
10
|
-
*/
|
|
11
|
-
export class NotectlEditorDirective {
|
|
12
|
-
elementRef;
|
|
13
|
-
debug;
|
|
14
|
-
content;
|
|
15
|
-
placeholder;
|
|
16
|
-
readOnly;
|
|
17
|
-
accessibility;
|
|
18
|
-
i18n;
|
|
19
|
-
theme;
|
|
20
|
-
contentChange = new EventEmitter();
|
|
21
|
-
selectionChange = new EventEmitter();
|
|
22
|
-
editorFocus = new EventEmitter();
|
|
23
|
-
editorBlur = new EventEmitter();
|
|
24
|
-
ready = new EventEmitter();
|
|
25
|
-
error = new EventEmitter();
|
|
26
|
-
editor = null;
|
|
27
|
-
onChange = () => { };
|
|
28
|
-
onTouched = () => { };
|
|
29
|
-
constructor(elementRef) {
|
|
30
|
-
this.elementRef = elementRef;
|
|
31
|
-
}
|
|
32
|
-
ngOnInit() {
|
|
33
|
-
this.initEditor();
|
|
34
|
-
}
|
|
35
|
-
ngOnDestroy() {
|
|
36
|
-
this.destroyEditor();
|
|
37
|
-
}
|
|
38
|
-
initEditor() {
|
|
39
|
-
const hostElement = this.elementRef.nativeElement;
|
|
40
|
-
// Create editor instance
|
|
41
|
-
this.editor = document.createElement('notectl-editor');
|
|
42
|
-
// Configure editor
|
|
43
|
-
const config = {
|
|
44
|
-
debug: this.debug,
|
|
45
|
-
content: this.content,
|
|
46
|
-
placeholder: this.placeholder,
|
|
47
|
-
readOnly: this.readOnly,
|
|
48
|
-
accessibility: this.accessibility,
|
|
49
|
-
i18n: this.i18n,
|
|
50
|
-
theme: this.theme,
|
|
51
|
-
};
|
|
52
|
-
this.editor.configure(config);
|
|
53
|
-
// Attach event listeners
|
|
54
|
-
this.editor.on('content-change', (data) => {
|
|
55
|
-
const eventData = data;
|
|
56
|
-
const content = eventData.content;
|
|
57
|
-
this.contentChange.emit(content);
|
|
58
|
-
this.onChange(content);
|
|
59
|
-
});
|
|
60
|
-
this.editor.on('selection-change', (data) => {
|
|
61
|
-
const eventData = data;
|
|
62
|
-
this.selectionChange.emit(eventData.selection);
|
|
63
|
-
});
|
|
64
|
-
this.editor.on('focus', () => {
|
|
65
|
-
this.editorFocus.emit();
|
|
66
|
-
this.onTouched();
|
|
67
|
-
});
|
|
68
|
-
this.editor.on('blur', () => {
|
|
69
|
-
this.editorBlur.emit();
|
|
70
|
-
});
|
|
71
|
-
this.editor.on('ready', () => {
|
|
72
|
-
this.ready.emit(this.getEditorAPI());
|
|
73
|
-
});
|
|
74
|
-
this.editor.on('error', (data) => {
|
|
75
|
-
const eventData = data;
|
|
76
|
-
if (eventData.error) {
|
|
77
|
-
this.error.emit(eventData.error);
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
// Mount editor
|
|
81
|
-
hostElement.appendChild(this.editor);
|
|
82
|
-
}
|
|
83
|
-
destroyEditor() {
|
|
84
|
-
if (this.editor) {
|
|
85
|
-
this.editor.destroy();
|
|
86
|
-
const hostElement = this.elementRef.nativeElement;
|
|
87
|
-
if (hostElement.contains(this.editor)) {
|
|
88
|
-
hostElement.removeChild(this.editor);
|
|
89
|
-
}
|
|
90
|
-
this.editor = null;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
getEditorAPI() {
|
|
94
|
-
if (!this.editor) {
|
|
95
|
-
throw new Error('Editor not initialized');
|
|
96
|
-
}
|
|
97
|
-
return this.editor;
|
|
98
|
-
}
|
|
99
|
-
// ControlValueAccessor implementation
|
|
100
|
-
writeValue(value) {
|
|
101
|
-
if (this.editor && typeof value === 'string') {
|
|
102
|
-
this.editor.setContent(value);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
registerOnChange(fn) {
|
|
106
|
-
this.onChange = fn;
|
|
107
|
-
}
|
|
108
|
-
registerOnTouched(fn) {
|
|
109
|
-
this.onTouched = fn;
|
|
110
|
-
}
|
|
111
|
-
setDisabledState(isDisabled) {
|
|
112
|
-
if (this.editor) {
|
|
113
|
-
this.editor.configure({ readOnly: isDisabled });
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotectlEditorDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
117
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NotectlEditorDirective, selector: "[notectl-editor]", inputs: { debug: "debug", content: "content", placeholder: "placeholder", readOnly: "readOnly", accessibility: "accessibility", i18n: "i18n", theme: "theme" }, outputs: { contentChange: "contentChange", selectionChange: "selectionChange", editorFocus: "editorFocus", editorBlur: "editorBlur", ready: "ready", error: "error" }, providers: [
|
|
118
|
-
{
|
|
119
|
-
provide: NG_VALUE_ACCESSOR,
|
|
120
|
-
useExisting: forwardRef(() => NotectlEditorDirective),
|
|
121
|
-
multi: true,
|
|
122
|
-
},
|
|
123
|
-
], ngImport: i0 });
|
|
124
|
-
}
|
|
125
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotectlEditorDirective, decorators: [{
|
|
126
|
-
type: Directive,
|
|
127
|
-
args: [{
|
|
128
|
-
selector: '[notectl-editor]',
|
|
129
|
-
providers: [
|
|
130
|
-
{
|
|
131
|
-
provide: NG_VALUE_ACCESSOR,
|
|
132
|
-
useExisting: forwardRef(() => NotectlEditorDirective),
|
|
133
|
-
multi: true,
|
|
134
|
-
},
|
|
135
|
-
],
|
|
136
|
-
}]
|
|
137
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { debug: [{
|
|
138
|
-
type: Input
|
|
139
|
-
}], content: [{
|
|
140
|
-
type: Input
|
|
141
|
-
}], placeholder: [{
|
|
142
|
-
type: Input
|
|
143
|
-
}], readOnly: [{
|
|
144
|
-
type: Input
|
|
145
|
-
}], accessibility: [{
|
|
146
|
-
type: Input
|
|
147
|
-
}], i18n: [{
|
|
148
|
-
type: Input
|
|
149
|
-
}], theme: [{
|
|
150
|
-
type: Input
|
|
151
|
-
}], contentChange: [{
|
|
152
|
-
type: Output
|
|
153
|
-
}], selectionChange: [{
|
|
154
|
-
type: Output
|
|
155
|
-
}], editorFocus: [{
|
|
156
|
-
type: Output
|
|
157
|
-
}], editorBlur: [{
|
|
158
|
-
type: Output
|
|
159
|
-
}], ready: [{
|
|
160
|
-
type: Output
|
|
161
|
-
}], error: [{
|
|
162
|
-
type: Output
|
|
163
|
-
}] } });
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZWN0bC1lZGl0b3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9ub3RlY3RsLWVkaXRvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFVBQVUsR0FDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBSXpFOzs7R0FHRztBQVdILE1BQU0sT0FBTyxzQkFBc0I7SUFvQmI7SUFuQlgsS0FBSyxDQUFXO0lBQ2hCLE9BQU8sQ0FBbUI7SUFDMUIsV0FBVyxDQUFVO0lBQ3JCLFFBQVEsQ0FBVztJQUNuQixhQUFhLENBQWlDO0lBQzlDLElBQUksQ0FBd0I7SUFDNUIsS0FBSyxDQUF5QjtJQUU3QixhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUM1QyxlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUM5QyxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUN2QyxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUN0QyxLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztJQUN0QyxLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztJQUVwQyxNQUFNLEdBQTZCLElBQUksQ0FBQztJQUN4QyxRQUFRLEdBQTZCLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUM5QyxTQUFTLEdBQWUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBRXpDLFlBQW9CLFVBQW1DO1FBQW5DLGVBQVUsR0FBVixVQUFVLENBQXlCO0lBQUcsQ0FBQztJQUUzRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFD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NEZBRVUsc0JBQXNCO2tCQVZsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQzs0QkFDckQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7K0VBRVUsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQW5ndWxhciBkaXJlY3RpdmUgZm9yIE5vdGVjdGxFZGl0b3IgKG9wdGlvbmFsIGFsdGVybmF0aXZlIHRvIGNvbXBvbmVudClcbiAqL1xuXG5pbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIGZvcndhcmRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTm90ZWN0bEVkaXRvciBhcyBOb3RlY3RsRWRpdG9yQ29yZSB9IGZyb20gJ0Bub3RlY3RsL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBFZGl0b3JDb25maWcsIEVkaXRvckFQSSB9IGZyb20gJ0Bub3RlY3RsL2NvcmUnO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0byB1c2UgTm90ZWN0bEVkaXRvciBvbiBhbnkgZWxlbWVudFxuICogVXNhZ2U6IDxkaXYgbm90ZWN0bC1lZGl0b3IgW2NvbnRlbnRdPVwiY29udGVudFwiPjwvZGl2PlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbm90ZWN0bC1lZGl0b3JdJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOb3RlY3RsRWRpdG9yRGlyZWN0aXZlKSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5vdGVjdGxFZGl0b3JEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASW5wdXQoKSBkZWJ1Zz86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNvbnRlbnQ/OiBzdHJpbmcgfCBvYmplY3Q7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBASW5wdXQoKSByZWFkT25seT86IGJvb2xlYW47XG4gIEBJbnB1dCgpIGFjY2Vzc2liaWxpdHk/OiBFZGl0b3JDb25maWdbJ2FjY2Vzc2liaWxpdHknXTtcbiAgQElucHV0KCkgaTE4bj86IEVkaXRvckNvbmZpZ1snaTE4biddO1xuICBASW5wdXQoKSB0aGVtZT86IEVkaXRvckNvbmZpZ1sndGhlbWUnXTtcblxuICBAT3V0cHV0KCkgY29udGVudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcbiAgQE91dHB1dCgpIGVkaXRvckZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgZWRpdG9yQmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjxFZGl0b3JBUEk+KCk7XG4gIEBPdXRwdXQoKSBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8RXJyb3I+KCk7XG5cbiAgcHJpdmF0ZSBlZGl0b3I6IE5vdGVjdGxFZGl0b3JDb3JlIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgb25DaGFuZ2U6ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBwcml2YXRlIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0RWRpdG9yKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3lFZGl0b3IoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEVkaXRvcigpOiB2b2lkIHtcbiAgICBjb25zdCBob3N0RWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgLy8gQ3JlYXRlIGVkaXRvciBpbnN0YW5jZVxuICAgIHRoaXMuZWRpdG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbm90ZWN0bC1lZGl0b3InKSBhcyBOb3RlY3RsRWRpdG9yQ29yZTtcblxuICAgIC8vIENvbmZpZ3VyZSBlZGl0b3JcbiAgICBjb25zdCBjb25maWc6IEVkaXRvckNvbmZpZyA9IHtcbiAgICAgIGRlYnVnOiB0aGlzLmRlYnVnLFxuICAgICAgY29udGVudDogdGhpcy5jb250ZW50LFxuICAgICAgcGxhY2Vob2xkZXI6IHRoaXMucGxhY2Vob2xkZXIsXG4gICAgICByZWFkT25seTogdGhpcy5yZWFkT25seSxcbiAgICAgIGFjY2Vzc2liaWxpdHk6IHRoaXMuYWNjZXNzaWJpbGl0eSxcbiAgICAgIGkxOG46IHRoaXMuaTE4bixcbiAgICAgIHRoZW1lOiB0aGlzLnRoZW1lLFxuICAgIH07XG4gICAgdGhpcy5lZGl0b3IuY29uZmlndXJlKGNvbmZpZyk7XG5cbiAgICAvLyBBdHRhY2ggZXZlbnQgbGlzdGVuZXJzXG4gICAgdGhpcy5lZGl0b3Iub24oJ2NvbnRlbnQtY2hhbmdlJywgKGRhdGEpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50RGF0YSA9IGRhdGEgYXMgeyBjb250ZW50PzogdW5rbm93biB9O1xuICAgICAgY29uc3QgY29udGVudCA9IGV2ZW50RGF0YS5jb250ZW50O1xuICAgICAgdGhpcy5jb250ZW50Q2hhbmdlLmVtaXQoY29udGVudCk7XG4gICAgICB0aGlzLm9uQ2hhbmdlKGNvbnRlbnQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5lZGl0b3Iub24oJ3NlbGVjdGlvbi1jaGFuZ2UnLCAoZGF0YSkgPT4ge1xuICAgICAgY29uc3QgZXZlbnREYXRhID0gZGF0YSBhcyB7IHNlbGVjdGlvbj86IHVua25vd24gfTtcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoZXZlbnREYXRhLnNlbGVjdGlvbik7XG4gICAgfSk7XG5cbiAgICB0aGlzLmVkaXRvci5vbignZm9jdXMnLCAoKSA9PiB7XG4gICAgICB0aGlzLmVkaXRvckZvY3VzLmVtaXQoKTtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmVkaXRvci5vbignYmx1cicsICgpID0+IHtcbiAgICAgIHRoaXMuZWRpdG9yQmx1ci5lbWl0KCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmVkaXRvci5vbigncmVhZHknLCAoKSA9PiB7XG4gICAgICB0aGlzLnJlYWR5LmVtaXQodGhpcy5nZXRFZGl0b3JBUEkoKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmVkaXRvci5vbignZXJyb3InLCAoZGF0YSkgPT4ge1xuICAgICAgY29uc3QgZXZlbnREYXRhID0gZGF0YSBhcyB7IGVycm9yPzogRXJyb3IgfTtcbiAgICAgIGlmIChldmVudERhdGEuZXJyb3IpIHtcbiAgICAgICAgdGhpcy5lcnJvci5lbWl0KGV2ZW50RGF0YS5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBNb3VudCBlZGl0b3JcbiAgICBob3N0RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmVkaXRvcik7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lFZGl0b3IoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZWRpdG9yKSB7XG4gICAgICB0aGlzLmVkaXRvci5kZXN0cm95KCk7XG4gICAgICBjb25zdCBob3N0RWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgaWYgKGhvc3RFbGVtZW50LmNvbnRhaW5zKHRoaXMuZWRpdG9yKSkge1xuICAgICAgICBob3N0RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLmVkaXRvcik7XG4gICAgICB9XG4gICAgICB0aGlzLmVkaXRvciA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRFZGl0b3JBUEkoKTogRWRpdG9yQVBJIHtcbiAgICBpZiAoIXRoaXMuZWRpdG9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VkaXRvciBub3QgaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yIGFzIEVkaXRvckFQSTtcbiAgfVxuXG4gIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGltcGxlbWVudGF0aW9uXG4gIHdyaXRlVmFsdWUodmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lZGl0b3IgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5lZGl0b3Iuc2V0Q29udGVudCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZWRpdG9yKSB7XG4gICAgICB0aGlzLmVkaXRvci5jb25maWd1cmUoeyByZWFkT25seTogaXNEaXNhYmxlZCB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Angular module for NotectlEditor
|
|
3
|
-
*/
|
|
4
|
-
import { NgModule } from '@angular/core';
|
|
5
|
-
import { CommonModule } from '@angular/common';
|
|
6
|
-
import { NotectlEditorComponent } from './notectl-editor.component';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
export class NotectlEditorModule {
|
|
9
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotectlEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: NotectlEditorModule, declarations: [NotectlEditorComponent], imports: [CommonModule], exports: [NotectlEditorComponent] });
|
|
11
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotectlEditorModule, imports: [CommonModule] });
|
|
12
|
-
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotectlEditorModule, decorators: [{
|
|
14
|
-
type: NgModule,
|
|
15
|
-
args: [{
|
|
16
|
-
declarations: [NotectlEditorComponent],
|
|
17
|
-
imports: [CommonModule],
|
|
18
|
-
exports: [NotectlEditorComponent],
|
|
19
|
-
}]
|
|
20
|
-
}] });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZWN0bC1lZGl0b3IubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9ub3RlY3RsLWVkaXRvci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFPcEUsTUFBTSxPQUFPLG1CQUFtQjt3R0FBbkIsbUJBQW1CO3lHQUFuQixtQkFBbUIsaUJBSmYsc0JBQXNCLGFBQzNCLFlBQVksYUFDWixzQkFBc0I7eUdBRXJCLG1CQUFtQixZQUhwQixZQUFZOzs0RkFHWCxtQkFBbUI7a0JBTC9CLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ3RDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ2xDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBbmd1bGFyIG1vZHVsZSBmb3IgTm90ZWN0bEVkaXRvclxuICovXG5cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTm90ZWN0bEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4vbm90ZWN0bC1lZGl0b3IuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTm90ZWN0bEVkaXRvckNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBleHBvcnRzOiBbTm90ZWN0bEVkaXRvckNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIE5vdGVjdGxFZGl0b3JNb2R1bGUge31cbiJdfQ==
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZWN0bC1hbmd1bGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25vdGVjdGwtYW5ndWxhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Public API surface of @notectl/angular
|
|
3
|
-
*/
|
|
4
|
-
export * from './lib/notectl-editor.component';
|
|
5
|
-
export * from './lib/notectl-editor.module';
|
|
6
|
-
export * from './lib/notectl-editor.directive';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsZ0NBQWdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFB1YmxpYyBBUEkgc3VyZmFjZSBvZiBAbm90ZWN0bC9hbmd1bGFyXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbm90ZWN0bC1lZGl0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL25vdGVjdGwtZWRpdG9yLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ub3RlY3RsLWVkaXRvci5kaXJlY3RpdmUnO1xuIl19
|
|
@@ -1,439 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, forwardRef, Output, Input, ViewChild, ViewEncapsulation, Component, NgModule, Directive } from '@angular/core';
|
|
3
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
|
-
import { CommonModule } from '@angular/common';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Angular component wrapper for NotectlEditor
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* NotectlEditor Angular component
|
|
11
|
-
*/
|
|
12
|
-
class NotectlEditorComponent {
|
|
13
|
-
containerRef;
|
|
14
|
-
/** Debug mode */
|
|
15
|
-
debug;
|
|
16
|
-
/** Initial content */
|
|
17
|
-
content;
|
|
18
|
-
/** Placeholder text */
|
|
19
|
-
placeholder;
|
|
20
|
-
/** Read-only mode */
|
|
21
|
-
readOnly;
|
|
22
|
-
/** Accessibility configuration */
|
|
23
|
-
accessibility;
|
|
24
|
-
/** Internationalization configuration */
|
|
25
|
-
i18n;
|
|
26
|
-
/** Theme configuration */
|
|
27
|
-
theme;
|
|
28
|
-
/** Custom class name */
|
|
29
|
-
className;
|
|
30
|
-
/** Emitted when content changes */
|
|
31
|
-
contentChange = new EventEmitter();
|
|
32
|
-
/** Emitted when selection changes */
|
|
33
|
-
selectionChange = new EventEmitter();
|
|
34
|
-
/** Emitted when editor gains focus */
|
|
35
|
-
editorFocus = new EventEmitter();
|
|
36
|
-
/** Emitted when editor loses focus */
|
|
37
|
-
editorBlur = new EventEmitter();
|
|
38
|
-
/** Emitted when editor is ready */
|
|
39
|
-
ready = new EventEmitter();
|
|
40
|
-
/** Emitted when an error occurs */
|
|
41
|
-
error = new EventEmitter();
|
|
42
|
-
editor = null;
|
|
43
|
-
onChange = () => { };
|
|
44
|
-
onTouched = () => { };
|
|
45
|
-
ngOnInit() {
|
|
46
|
-
this.initEditor();
|
|
47
|
-
}
|
|
48
|
-
ngOnDestroy() {
|
|
49
|
-
this.destroyEditor();
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Initialize the editor instance
|
|
53
|
-
*/
|
|
54
|
-
initEditor() {
|
|
55
|
-
if (!this.containerRef?.nativeElement) {
|
|
56
|
-
console.error('NotectlEditor: Container element not found');
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
// Create editor instance
|
|
60
|
-
this.editor = document.createElement('notectl-editor');
|
|
61
|
-
// Configure editor
|
|
62
|
-
const config = {
|
|
63
|
-
debug: this.debug,
|
|
64
|
-
content: this.content,
|
|
65
|
-
placeholder: this.placeholder,
|
|
66
|
-
readOnly: this.readOnly,
|
|
67
|
-
accessibility: this.accessibility,
|
|
68
|
-
i18n: this.i18n,
|
|
69
|
-
theme: this.theme,
|
|
70
|
-
};
|
|
71
|
-
this.editor.configure(config);
|
|
72
|
-
// Attach event listeners
|
|
73
|
-
this.editor.on('content-change', (data) => {
|
|
74
|
-
const eventData = data;
|
|
75
|
-
const content = eventData.content;
|
|
76
|
-
this.contentChange.emit(content);
|
|
77
|
-
this.onChange(content);
|
|
78
|
-
});
|
|
79
|
-
this.editor.on('selection-change', (data) => {
|
|
80
|
-
const eventData = data;
|
|
81
|
-
this.selectionChange.emit(eventData.selection);
|
|
82
|
-
});
|
|
83
|
-
this.editor.on('focus', () => {
|
|
84
|
-
this.editorFocus.emit();
|
|
85
|
-
this.onTouched();
|
|
86
|
-
});
|
|
87
|
-
this.editor.on('blur', () => {
|
|
88
|
-
this.editorBlur.emit();
|
|
89
|
-
});
|
|
90
|
-
this.editor.on('ready', () => {
|
|
91
|
-
this.ready.emit(this.getEditorAPI());
|
|
92
|
-
});
|
|
93
|
-
this.editor.on('error', (data) => {
|
|
94
|
-
const eventData = data;
|
|
95
|
-
if (eventData.error) {
|
|
96
|
-
this.error.emit(eventData.error);
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
// Mount editor
|
|
100
|
-
this.containerRef.nativeElement.appendChild(this.editor);
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Destroy the editor instance
|
|
104
|
-
*/
|
|
105
|
-
destroyEditor() {
|
|
106
|
-
if (this.editor) {
|
|
107
|
-
this.editor.destroy();
|
|
108
|
-
if (this.containerRef?.nativeElement?.contains(this.editor)) {
|
|
109
|
-
this.containerRef.nativeElement.removeChild(this.editor);
|
|
110
|
-
}
|
|
111
|
-
this.editor = null;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Update editor configuration
|
|
116
|
-
*/
|
|
117
|
-
updateConfig() {
|
|
118
|
-
if (!this.editor)
|
|
119
|
-
return;
|
|
120
|
-
const config = {
|
|
121
|
-
debug: this.debug,
|
|
122
|
-
content: this.content,
|
|
123
|
-
placeholder: this.placeholder,
|
|
124
|
-
readOnly: this.readOnly,
|
|
125
|
-
accessibility: this.accessibility,
|
|
126
|
-
i18n: this.i18n,
|
|
127
|
-
theme: this.theme,
|
|
128
|
-
};
|
|
129
|
-
this.editor.configure(config);
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Get editor API
|
|
133
|
-
*/
|
|
134
|
-
getEditorAPI() {
|
|
135
|
-
if (!this.editor) {
|
|
136
|
-
throw new Error('Editor not initialized');
|
|
137
|
-
}
|
|
138
|
-
return this.editor;
|
|
139
|
-
}
|
|
140
|
-
// ControlValueAccessor implementation
|
|
141
|
-
writeValue(value) {
|
|
142
|
-
if (this.editor && typeof value === 'string') {
|
|
143
|
-
this.editor.setContent(value);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
registerOnChange(fn) {
|
|
147
|
-
this.onChange = fn;
|
|
148
|
-
}
|
|
149
|
-
registerOnTouched(fn) {
|
|
150
|
-
this.onTouched = fn;
|
|
151
|
-
}
|
|
152
|
-
setDisabledState(isDisabled) {
|
|
153
|
-
if (this.editor) {
|
|
154
|
-
this.editor.configure({ readOnly: isDisabled });
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
// Public API methods
|
|
158
|
-
/**
|
|
159
|
-
* Get current editor content
|
|
160
|
-
*/
|
|
161
|
-
getContent() {
|
|
162
|
-
return this.editor?.getContent();
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Set editor content
|
|
166
|
-
*/
|
|
167
|
-
setContent(content) {
|
|
168
|
-
if (this.editor && typeof content === 'string') {
|
|
169
|
-
this.editor.setContent(content);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Get current editor state
|
|
174
|
-
*/
|
|
175
|
-
getState() {
|
|
176
|
-
return this.editor?.getState();
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Execute an editor command
|
|
180
|
-
*/
|
|
181
|
-
executeCommand(command, ...args) {
|
|
182
|
-
this.editor?.executeCommand(command, ...args);
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Register a plugin
|
|
186
|
-
*/
|
|
187
|
-
registerPlugin(plugin) {
|
|
188
|
-
this.editor?.registerPlugin(plugin);
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Unregister a plugin
|
|
192
|
-
*/
|
|
193
|
-
unregisterPlugin(pluginId) {
|
|
194
|
-
this.editor?.unregisterPlugin(pluginId);
|
|
195
|
-
}
|
|
196
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotectlEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
197
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NotectlEditorComponent, selector: "notectl-editor", inputs: { debug: "debug", content: "content", placeholder: "placeholder", readOnly: "readOnly", accessibility: "accessibility", i18n: "i18n", theme: "theme", className: "className" }, outputs: { contentChange: "contentChange", selectionChange: "selectionChange", editorFocus: "editorFocus", editorBlur: "editorBlur", ready: "ready", error: "error" }, providers: [
|
|
198
|
-
{
|
|
199
|
-
provide: NG_VALUE_ACCESSOR,
|
|
200
|
-
useExisting: forwardRef(() => NotectlEditorComponent),
|
|
201
|
-
multi: true,
|
|
202
|
-
},
|
|
203
|
-
], viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true, static: true }], ngImport: i0, template: '<div #container [attr.data-notectl-angular-wrapper]="true"></div>', isInline: true, styles: [":host{display:block}\n"], encapsulation: i0.ViewEncapsulation.None });
|
|
204
|
-
}
|
|
205
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotectlEditorComponent, decorators: [{
|
|
206
|
-
type: Component,
|
|
207
|
-
args: [{ selector: 'notectl-editor', template: '<div #container [attr.data-notectl-angular-wrapper]="true"></div>', encapsulation: ViewEncapsulation.None, providers: [
|
|
208
|
-
{
|
|
209
|
-
provide: NG_VALUE_ACCESSOR,
|
|
210
|
-
useExisting: forwardRef(() => NotectlEditorComponent),
|
|
211
|
-
multi: true,
|
|
212
|
-
},
|
|
213
|
-
], styles: [":host{display:block}\n"] }]
|
|
214
|
-
}], propDecorators: { containerRef: [{
|
|
215
|
-
type: ViewChild,
|
|
216
|
-
args: ['container', { static: true }]
|
|
217
|
-
}], debug: [{
|
|
218
|
-
type: Input
|
|
219
|
-
}], content: [{
|
|
220
|
-
type: Input
|
|
221
|
-
}], placeholder: [{
|
|
222
|
-
type: Input
|
|
223
|
-
}], readOnly: [{
|
|
224
|
-
type: Input
|
|
225
|
-
}], accessibility: [{
|
|
226
|
-
type: Input
|
|
227
|
-
}], i18n: [{
|
|
228
|
-
type: Input
|
|
229
|
-
}], theme: [{
|
|
230
|
-
type: Input
|
|
231
|
-
}], className: [{
|
|
232
|
-
type: Input
|
|
233
|
-
}], contentChange: [{
|
|
234
|
-
type: Output
|
|
235
|
-
}], selectionChange: [{
|
|
236
|
-
type: Output
|
|
237
|
-
}], editorFocus: [{
|
|
238
|
-
type: Output
|
|
239
|
-
}], editorBlur: [{
|
|
240
|
-
type: Output
|
|
241
|
-
}], ready: [{
|
|
242
|
-
type: Output
|
|
243
|
-
}], error: [{
|
|
244
|
-
type: Output
|
|
245
|
-
}] } });
|
|
246
|
-
|
|
247
|
-
/**
|
|
248
|
-
* Angular module for NotectlEditor
|
|
249
|
-
*/
|
|
250
|
-
class NotectlEditorModule {
|
|
251
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotectlEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
252
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: NotectlEditorModule, declarations: [NotectlEditorComponent], imports: [CommonModule], exports: [NotectlEditorComponent] });
|
|
253
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotectlEditorModule, imports: [CommonModule] });
|
|
254
|
-
}
|
|
255
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotectlEditorModule, decorators: [{
|
|
256
|
-
type: NgModule,
|
|
257
|
-
args: [{
|
|
258
|
-
declarations: [NotectlEditorComponent],
|
|
259
|
-
imports: [CommonModule],
|
|
260
|
-
exports: [NotectlEditorComponent],
|
|
261
|
-
}]
|
|
262
|
-
}] });
|
|
263
|
-
|
|
264
|
-
/**
|
|
265
|
-
* Angular directive for NotectlEditor (optional alternative to component)
|
|
266
|
-
*/
|
|
267
|
-
/**
|
|
268
|
-
* Directive to use NotectlEditor on any element
|
|
269
|
-
* Usage: <div notectl-editor [content]="content"></div>
|
|
270
|
-
*/
|
|
271
|
-
class NotectlEditorDirective {
|
|
272
|
-
elementRef;
|
|
273
|
-
debug;
|
|
274
|
-
content;
|
|
275
|
-
placeholder;
|
|
276
|
-
readOnly;
|
|
277
|
-
accessibility;
|
|
278
|
-
i18n;
|
|
279
|
-
theme;
|
|
280
|
-
contentChange = new EventEmitter();
|
|
281
|
-
selectionChange = new EventEmitter();
|
|
282
|
-
editorFocus = new EventEmitter();
|
|
283
|
-
editorBlur = new EventEmitter();
|
|
284
|
-
ready = new EventEmitter();
|
|
285
|
-
error = new EventEmitter();
|
|
286
|
-
editor = null;
|
|
287
|
-
onChange = () => { };
|
|
288
|
-
onTouched = () => { };
|
|
289
|
-
constructor(elementRef) {
|
|
290
|
-
this.elementRef = elementRef;
|
|
291
|
-
}
|
|
292
|
-
ngOnInit() {
|
|
293
|
-
this.initEditor();
|
|
294
|
-
}
|
|
295
|
-
ngOnDestroy() {
|
|
296
|
-
this.destroyEditor();
|
|
297
|
-
}
|
|
298
|
-
initEditor() {
|
|
299
|
-
const hostElement = this.elementRef.nativeElement;
|
|
300
|
-
// Create editor instance
|
|
301
|
-
this.editor = document.createElement('notectl-editor');
|
|
302
|
-
// Configure editor
|
|
303
|
-
const config = {
|
|
304
|
-
debug: this.debug,
|
|
305
|
-
content: this.content,
|
|
306
|
-
placeholder: this.placeholder,
|
|
307
|
-
readOnly: this.readOnly,
|
|
308
|
-
accessibility: this.accessibility,
|
|
309
|
-
i18n: this.i18n,
|
|
310
|
-
theme: this.theme,
|
|
311
|
-
};
|
|
312
|
-
this.editor.configure(config);
|
|
313
|
-
// Attach event listeners
|
|
314
|
-
this.editor.on('content-change', (data) => {
|
|
315
|
-
const eventData = data;
|
|
316
|
-
const content = eventData.content;
|
|
317
|
-
this.contentChange.emit(content);
|
|
318
|
-
this.onChange(content);
|
|
319
|
-
});
|
|
320
|
-
this.editor.on('selection-change', (data) => {
|
|
321
|
-
const eventData = data;
|
|
322
|
-
this.selectionChange.emit(eventData.selection);
|
|
323
|
-
});
|
|
324
|
-
this.editor.on('focus', () => {
|
|
325
|
-
this.editorFocus.emit();
|
|
326
|
-
this.onTouched();
|
|
327
|
-
});
|
|
328
|
-
this.editor.on('blur', () => {
|
|
329
|
-
this.editorBlur.emit();
|
|
330
|
-
});
|
|
331
|
-
this.editor.on('ready', () => {
|
|
332
|
-
this.ready.emit(this.getEditorAPI());
|
|
333
|
-
});
|
|
334
|
-
this.editor.on('error', (data) => {
|
|
335
|
-
const eventData = data;
|
|
336
|
-
if (eventData.error) {
|
|
337
|
-
this.error.emit(eventData.error);
|
|
338
|
-
}
|
|
339
|
-
});
|
|
340
|
-
// Mount editor
|
|
341
|
-
hostElement.appendChild(this.editor);
|
|
342
|
-
}
|
|
343
|
-
destroyEditor() {
|
|
344
|
-
if (this.editor) {
|
|
345
|
-
this.editor.destroy();
|
|
346
|
-
const hostElement = this.elementRef.nativeElement;
|
|
347
|
-
if (hostElement.contains(this.editor)) {
|
|
348
|
-
hostElement.removeChild(this.editor);
|
|
349
|
-
}
|
|
350
|
-
this.editor = null;
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
getEditorAPI() {
|
|
354
|
-
if (!this.editor) {
|
|
355
|
-
throw new Error('Editor not initialized');
|
|
356
|
-
}
|
|
357
|
-
return this.editor;
|
|
358
|
-
}
|
|
359
|
-
// ControlValueAccessor implementation
|
|
360
|
-
writeValue(value) {
|
|
361
|
-
if (this.editor && typeof value === 'string') {
|
|
362
|
-
this.editor.setContent(value);
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
registerOnChange(fn) {
|
|
366
|
-
this.onChange = fn;
|
|
367
|
-
}
|
|
368
|
-
registerOnTouched(fn) {
|
|
369
|
-
this.onTouched = fn;
|
|
370
|
-
}
|
|
371
|
-
setDisabledState(isDisabled) {
|
|
372
|
-
if (this.editor) {
|
|
373
|
-
this.editor.configure({ readOnly: isDisabled });
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotectlEditorDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
377
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NotectlEditorDirective, selector: "[notectl-editor]", inputs: { debug: "debug", content: "content", placeholder: "placeholder", readOnly: "readOnly", accessibility: "accessibility", i18n: "i18n", theme: "theme" }, outputs: { contentChange: "contentChange", selectionChange: "selectionChange", editorFocus: "editorFocus", editorBlur: "editorBlur", ready: "ready", error: "error" }, providers: [
|
|
378
|
-
{
|
|
379
|
-
provide: NG_VALUE_ACCESSOR,
|
|
380
|
-
useExisting: forwardRef(() => NotectlEditorDirective),
|
|
381
|
-
multi: true,
|
|
382
|
-
},
|
|
383
|
-
], ngImport: i0 });
|
|
384
|
-
}
|
|
385
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NotectlEditorDirective, decorators: [{
|
|
386
|
-
type: Directive,
|
|
387
|
-
args: [{
|
|
388
|
-
selector: '[notectl-editor]',
|
|
389
|
-
providers: [
|
|
390
|
-
{
|
|
391
|
-
provide: NG_VALUE_ACCESSOR,
|
|
392
|
-
useExisting: forwardRef(() => NotectlEditorDirective),
|
|
393
|
-
multi: true,
|
|
394
|
-
},
|
|
395
|
-
],
|
|
396
|
-
}]
|
|
397
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { debug: [{
|
|
398
|
-
type: Input
|
|
399
|
-
}], content: [{
|
|
400
|
-
type: Input
|
|
401
|
-
}], placeholder: [{
|
|
402
|
-
type: Input
|
|
403
|
-
}], readOnly: [{
|
|
404
|
-
type: Input
|
|
405
|
-
}], accessibility: [{
|
|
406
|
-
type: Input
|
|
407
|
-
}], i18n: [{
|
|
408
|
-
type: Input
|
|
409
|
-
}], theme: [{
|
|
410
|
-
type: Input
|
|
411
|
-
}], contentChange: [{
|
|
412
|
-
type: Output
|
|
413
|
-
}], selectionChange: [{
|
|
414
|
-
type: Output
|
|
415
|
-
}], editorFocus: [{
|
|
416
|
-
type: Output
|
|
417
|
-
}], editorBlur: [{
|
|
418
|
-
type: Output
|
|
419
|
-
}], ready: [{
|
|
420
|
-
type: Output
|
|
421
|
-
}], error: [{
|
|
422
|
-
type: Output
|
|
423
|
-
}] } });
|
|
424
|
-
|
|
425
|
-
/**
|
|
426
|
-
* Public API surface of @notectl/angular
|
|
427
|
-
*/
|
|
428
|
-
|
|
429
|
-
/**
|
|
430
|
-
* @notectl/angular - Angular adapter for NotectlEditor
|
|
431
|
-
* @packageDocumentation
|
|
432
|
-
*/
|
|
433
|
-
|
|
434
|
-
/**
|
|
435
|
-
* Generated bundle index. Do not edit.
|
|
436
|
-
*/
|
|
437
|
-
|
|
438
|
-
export { NotectlEditorComponent, NotectlEditorDirective, NotectlEditorModule };
|
|
439
|
-
//# sourceMappingURL=notectl-angular.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"notectl-angular.mjs","sources":["../../src/lib/notectl-editor.component.ts","../../src/lib/notectl-editor.module.ts","../../src/lib/notectl-editor.directive.ts","../../src/public-api.ts","../../src/index.ts","../../src/notectl-angular.ts"],"sourcesContent":["/**\n * Angular component wrapper for NotectlEditor\n */\n\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NotectlEditor as NotectlEditorCore } from '@notectl/core';\nimport type { EditorConfig, EditorAPI } from '@notectl/core';\n\n/**\n * NotectlEditor Angular component\n */\n@Component({\n selector: 'notectl-editor',\n template: '<div #container [attr.data-notectl-angular-wrapper]=\"true\"></div>',\n styles: [':host { display: block; }'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NotectlEditorComponent),\n multi: true,\n },\n ],\n})\nexport class NotectlEditorComponent implements OnInit, OnDestroy, ControlValueAccessor {\n @ViewChild('container', { static: true }) containerRef!: ElementRef<HTMLDivElement>;\n\n /** Debug mode */\n @Input() debug?: boolean;\n\n /** Initial content */\n @Input() content?: string | object;\n\n /** Placeholder text */\n @Input() placeholder?: string;\n\n /** Read-only mode */\n @Input() readOnly?: boolean;\n\n /** Accessibility configuration */\n @Input() accessibility?: EditorConfig['accessibility'];\n\n /** Internationalization configuration */\n @Input() i18n?: EditorConfig['i18n'];\n\n /** Theme configuration */\n @Input() theme?: EditorConfig['theme'];\n\n /** Custom class name */\n @Input() className?: string;\n\n /** Emitted when content changes */\n @Output() contentChange = new EventEmitter<unknown>();\n\n /** Emitted when selection changes */\n @Output() selectionChange = new EventEmitter<unknown>();\n\n /** Emitted when editor gains focus */\n @Output() editorFocus = new EventEmitter<void>();\n\n /** Emitted when editor loses focus */\n @Output() editorBlur = new EventEmitter<void>();\n\n /** Emitted when editor is ready */\n @Output() ready = new EventEmitter<EditorAPI>();\n\n /** Emitted when an error occurs */\n @Output() error = new EventEmitter<Error>();\n\n private editor: NotectlEditorCore | null = null;\n private onChange: (value: unknown) => void = () => {};\n private onTouched: () => void = () => {};\n\n ngOnInit(): void {\n this.initEditor();\n }\n\n ngOnDestroy(): void {\n this.destroyEditor();\n }\n\n /**\n * Initialize the editor instance\n */\n private initEditor(): void {\n if (!this.containerRef?.nativeElement) {\n console.error('NotectlEditor: Container element not found');\n return;\n }\n\n // Create editor instance\n this.editor = document.createElement('notectl-editor') as NotectlEditorCore;\n\n // Configure editor\n const config: EditorConfig = {\n debug: this.debug,\n content: this.content,\n placeholder: this.placeholder,\n readOnly: this.readOnly,\n accessibility: this.accessibility,\n i18n: this.i18n,\n theme: this.theme,\n };\n this.editor.configure(config);\n\n // Attach event listeners\n this.editor.on('content-change', (data) => {\n const eventData = data as { content?: unknown };\n const content = eventData.content;\n this.contentChange.emit(content);\n this.onChange(content);\n });\n\n this.editor.on('selection-change', (data) => {\n const eventData = data as { selection?: unknown };\n this.selectionChange.emit(eventData.selection);\n });\n\n this.editor.on('focus', () => {\n this.editorFocus.emit();\n this.onTouched();\n });\n\n this.editor.on('blur', () => {\n this.editorBlur.emit();\n });\n\n this.editor.on('ready', () => {\n this.ready.emit(this.getEditorAPI());\n });\n\n this.editor.on('error', (data) => {\n const eventData = data as { error?: Error };\n if (eventData.error) {\n this.error.emit(eventData.error);\n }\n });\n\n // Mount editor\n this.containerRef.nativeElement.appendChild(this.editor);\n }\n\n /**\n * Destroy the editor instance\n */\n private destroyEditor(): void {\n if (this.editor) {\n this.editor.destroy();\n if (this.containerRef?.nativeElement?.contains(this.editor)) {\n this.containerRef.nativeElement.removeChild(this.editor);\n }\n this.editor = null;\n }\n }\n\n /**\n * Update editor configuration\n */\n private updateConfig(): void {\n if (!this.editor) return;\n\n const config: EditorConfig = {\n debug: this.debug,\n content: this.content,\n placeholder: this.placeholder,\n readOnly: this.readOnly,\n accessibility: this.accessibility,\n i18n: this.i18n,\n theme: this.theme,\n };\n this.editor.configure(config);\n }\n\n /**\n * Get editor API\n */\n private getEditorAPI(): EditorAPI {\n if (!this.editor) {\n throw new Error('Editor not initialized');\n }\n return this.editor as EditorAPI;\n }\n\n // ControlValueAccessor implementation\n writeValue(value: unknown): void {\n if (this.editor && typeof value === 'string') {\n this.editor.setContent(value);\n }\n }\n\n registerOnChange(fn: (value: unknown) => 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 if (this.editor) {\n this.editor.configure({ readOnly: isDisabled });\n }\n }\n\n // Public API methods\n /**\n * Get current editor content\n */\n public getContent(): unknown {\n return this.editor?.getContent();\n }\n\n /**\n * Set editor content\n */\n public setContent(content: unknown): void {\n if (this.editor && typeof content === 'string') {\n this.editor.setContent(content);\n }\n }\n\n /**\n * Get current editor state\n */\n public getState(): unknown {\n return this.editor?.getState();\n }\n\n /**\n * Execute an editor command\n */\n public executeCommand(command: string, ...args: unknown[]): void {\n this.editor?.executeCommand(command, ...args);\n }\n\n /**\n * Register a plugin\n */\n public registerPlugin(plugin: unknown): void {\n this.editor?.registerPlugin(plugin as any);\n }\n\n /**\n * Unregister a plugin\n */\n public unregisterPlugin(pluginId: string): void {\n this.editor?.unregisterPlugin(pluginId);\n }\n}\n","/**\n * Angular module for NotectlEditor\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NotectlEditorComponent } from './notectl-editor.component';\n\n@NgModule({\n declarations: [NotectlEditorComponent],\n imports: [CommonModule],\n exports: [NotectlEditorComponent],\n})\nexport class NotectlEditorModule {}\n","/**\n * Angular directive for NotectlEditor (optional alternative to component)\n */\n\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NotectlEditor as NotectlEditorCore } from '@notectl/core';\nimport type { EditorConfig, EditorAPI } from '@notectl/core';\n\n/**\n * Directive to use NotectlEditor on any element\n * Usage: <div notectl-editor [content]=\"content\"></div>\n */\n@Directive({\n selector: '[notectl-editor]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NotectlEditorDirective),\n multi: true,\n },\n ],\n})\nexport class NotectlEditorDirective implements OnInit, OnDestroy, ControlValueAccessor {\n @Input() debug?: boolean;\n @Input() content?: string | object;\n @Input() placeholder?: string;\n @Input() readOnly?: boolean;\n @Input() accessibility?: EditorConfig['accessibility'];\n @Input() i18n?: EditorConfig['i18n'];\n @Input() theme?: EditorConfig['theme'];\n\n @Output() contentChange = new EventEmitter<unknown>();\n @Output() selectionChange = new EventEmitter<unknown>();\n @Output() editorFocus = new EventEmitter<void>();\n @Output() editorBlur = new EventEmitter<void>();\n @Output() ready = new EventEmitter<EditorAPI>();\n @Output() error = new EventEmitter<Error>();\n\n private editor: NotectlEditorCore | null = null;\n private onChange: (value: unknown) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor(private elementRef: ElementRef<HTMLElement>) {}\n\n ngOnInit(): void {\n this.initEditor();\n }\n\n ngOnDestroy(): void {\n this.destroyEditor();\n }\n\n private initEditor(): void {\n const hostElement = this.elementRef.nativeElement;\n\n // Create editor instance\n this.editor = document.createElement('notectl-editor') as NotectlEditorCore;\n\n // Configure editor\n const config: EditorConfig = {\n debug: this.debug,\n content: this.content,\n placeholder: this.placeholder,\n readOnly: this.readOnly,\n accessibility: this.accessibility,\n i18n: this.i18n,\n theme: this.theme,\n };\n this.editor.configure(config);\n\n // Attach event listeners\n this.editor.on('content-change', (data) => {\n const eventData = data as { content?: unknown };\n const content = eventData.content;\n this.contentChange.emit(content);\n this.onChange(content);\n });\n\n this.editor.on('selection-change', (data) => {\n const eventData = data as { selection?: unknown };\n this.selectionChange.emit(eventData.selection);\n });\n\n this.editor.on('focus', () => {\n this.editorFocus.emit();\n this.onTouched();\n });\n\n this.editor.on('blur', () => {\n this.editorBlur.emit();\n });\n\n this.editor.on('ready', () => {\n this.ready.emit(this.getEditorAPI());\n });\n\n this.editor.on('error', (data) => {\n const eventData = data as { error?: Error };\n if (eventData.error) {\n this.error.emit(eventData.error);\n }\n });\n\n // Mount editor\n hostElement.appendChild(this.editor);\n }\n\n private destroyEditor(): void {\n if (this.editor) {\n this.editor.destroy();\n const hostElement = this.elementRef.nativeElement;\n if (hostElement.contains(this.editor)) {\n hostElement.removeChild(this.editor);\n }\n this.editor = null;\n }\n }\n\n private getEditorAPI(): EditorAPI {\n if (!this.editor) {\n throw new Error('Editor not initialized');\n }\n return this.editor as EditorAPI;\n }\n\n // ControlValueAccessor implementation\n writeValue(value: unknown): void {\n if (this.editor && typeof value === 'string') {\n this.editor.setContent(value);\n }\n }\n\n registerOnChange(fn: (value: unknown) => 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 if (this.editor) {\n this.editor.configure({ readOnly: isDisabled });\n }\n }\n}\n","/**\n * Public API surface of @notectl/angular\n */\n\nexport * from './lib/notectl-editor.component';\nexport * from './lib/notectl-editor.module';\nexport * from './lib/notectl-editor.directive';\n","/**\n * @notectl/angular - Angular adapter for NotectlEditor\n * @packageDocumentation\n */\n\nexport * from './public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Angular component wrapper for NotectlEditor
|
|
3
|
-
*/
|
|
4
|
-
import { ElementRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
|
|
5
|
-
import { ControlValueAccessor } from '@angular/forms';
|
|
6
|
-
import type { EditorConfig, EditorAPI } from '@notectl/core';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
/**
|
|
9
|
-
* NotectlEditor Angular component
|
|
10
|
-
*/
|
|
11
|
-
export declare class NotectlEditorComponent implements OnInit, OnDestroy, ControlValueAccessor {
|
|
12
|
-
containerRef: ElementRef<HTMLDivElement>;
|
|
13
|
-
/** Debug mode */
|
|
14
|
-
debug?: boolean;
|
|
15
|
-
/** Initial content */
|
|
16
|
-
content?: string | object;
|
|
17
|
-
/** Placeholder text */
|
|
18
|
-
placeholder?: string;
|
|
19
|
-
/** Read-only mode */
|
|
20
|
-
readOnly?: boolean;
|
|
21
|
-
/** Accessibility configuration */
|
|
22
|
-
accessibility?: EditorConfig['accessibility'];
|
|
23
|
-
/** Internationalization configuration */
|
|
24
|
-
i18n?: EditorConfig['i18n'];
|
|
25
|
-
/** Theme configuration */
|
|
26
|
-
theme?: EditorConfig['theme'];
|
|
27
|
-
/** Custom class name */
|
|
28
|
-
className?: string;
|
|
29
|
-
/** Emitted when content changes */
|
|
30
|
-
contentChange: EventEmitter<unknown>;
|
|
31
|
-
/** Emitted when selection changes */
|
|
32
|
-
selectionChange: EventEmitter<unknown>;
|
|
33
|
-
/** Emitted when editor gains focus */
|
|
34
|
-
editorFocus: EventEmitter<void>;
|
|
35
|
-
/** Emitted when editor loses focus */
|
|
36
|
-
editorBlur: EventEmitter<void>;
|
|
37
|
-
/** Emitted when editor is ready */
|
|
38
|
-
ready: EventEmitter<EditorAPI>;
|
|
39
|
-
/** Emitted when an error occurs */
|
|
40
|
-
error: EventEmitter<Error>;
|
|
41
|
-
private editor;
|
|
42
|
-
private onChange;
|
|
43
|
-
private onTouched;
|
|
44
|
-
ngOnInit(): void;
|
|
45
|
-
ngOnDestroy(): void;
|
|
46
|
-
/**
|
|
47
|
-
* Initialize the editor instance
|
|
48
|
-
*/
|
|
49
|
-
private initEditor;
|
|
50
|
-
/**
|
|
51
|
-
* Destroy the editor instance
|
|
52
|
-
*/
|
|
53
|
-
private destroyEditor;
|
|
54
|
-
/**
|
|
55
|
-
* Update editor configuration
|
|
56
|
-
*/
|
|
57
|
-
private updateConfig;
|
|
58
|
-
/**
|
|
59
|
-
* Get editor API
|
|
60
|
-
*/
|
|
61
|
-
private getEditorAPI;
|
|
62
|
-
writeValue(value: unknown): void;
|
|
63
|
-
registerOnChange(fn: (value: unknown) => void): void;
|
|
64
|
-
registerOnTouched(fn: () => void): void;
|
|
65
|
-
setDisabledState(isDisabled: boolean): void;
|
|
66
|
-
/**
|
|
67
|
-
* Get current editor content
|
|
68
|
-
*/
|
|
69
|
-
getContent(): unknown;
|
|
70
|
-
/**
|
|
71
|
-
* Set editor content
|
|
72
|
-
*/
|
|
73
|
-
setContent(content: unknown): void;
|
|
74
|
-
/**
|
|
75
|
-
* Get current editor state
|
|
76
|
-
*/
|
|
77
|
-
getState(): unknown;
|
|
78
|
-
/**
|
|
79
|
-
* Execute an editor command
|
|
80
|
-
*/
|
|
81
|
-
executeCommand(command: string, ...args: unknown[]): void;
|
|
82
|
-
/**
|
|
83
|
-
* Register a plugin
|
|
84
|
-
*/
|
|
85
|
-
registerPlugin(plugin: unknown): void;
|
|
86
|
-
/**
|
|
87
|
-
* Unregister a plugin
|
|
88
|
-
*/
|
|
89
|
-
unregisterPlugin(pluginId: string): void;
|
|
90
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NotectlEditorComponent, never>;
|
|
91
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NotectlEditorComponent, "notectl-editor", never, { "debug": { "alias": "debug"; "required": false; }; "content": { "alias": "content"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; }; "accessibility": { "alias": "accessibility"; "required": false; }; "i18n": { "alias": "i18n"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "className": { "alias": "className"; "required": false; }; }, { "contentChange": "contentChange"; "selectionChange": "selectionChange"; "editorFocus": "editorFocus"; "editorBlur": "editorBlur"; "ready": "ready"; "error": "error"; }, never, never, false, never>;
|
|
92
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Angular directive for NotectlEditor (optional alternative to component)
|
|
3
|
-
*/
|
|
4
|
-
import { ElementRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
|
|
5
|
-
import { ControlValueAccessor } from '@angular/forms';
|
|
6
|
-
import type { EditorConfig, EditorAPI } from '@notectl/core';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
/**
|
|
9
|
-
* Directive to use NotectlEditor on any element
|
|
10
|
-
* Usage: <div notectl-editor [content]="content"></div>
|
|
11
|
-
*/
|
|
12
|
-
export declare class NotectlEditorDirective implements OnInit, OnDestroy, ControlValueAccessor {
|
|
13
|
-
private elementRef;
|
|
14
|
-
debug?: boolean;
|
|
15
|
-
content?: string | object;
|
|
16
|
-
placeholder?: string;
|
|
17
|
-
readOnly?: boolean;
|
|
18
|
-
accessibility?: EditorConfig['accessibility'];
|
|
19
|
-
i18n?: EditorConfig['i18n'];
|
|
20
|
-
theme?: EditorConfig['theme'];
|
|
21
|
-
contentChange: EventEmitter<unknown>;
|
|
22
|
-
selectionChange: EventEmitter<unknown>;
|
|
23
|
-
editorFocus: EventEmitter<void>;
|
|
24
|
-
editorBlur: EventEmitter<void>;
|
|
25
|
-
ready: EventEmitter<EditorAPI>;
|
|
26
|
-
error: EventEmitter<Error>;
|
|
27
|
-
private editor;
|
|
28
|
-
private onChange;
|
|
29
|
-
private onTouched;
|
|
30
|
-
constructor(elementRef: ElementRef<HTMLElement>);
|
|
31
|
-
ngOnInit(): void;
|
|
32
|
-
ngOnDestroy(): void;
|
|
33
|
-
private initEditor;
|
|
34
|
-
private destroyEditor;
|
|
35
|
-
private getEditorAPI;
|
|
36
|
-
writeValue(value: unknown): void;
|
|
37
|
-
registerOnChange(fn: (value: unknown) => void): void;
|
|
38
|
-
registerOnTouched(fn: () => void): void;
|
|
39
|
-
setDisabledState(isDisabled: boolean): void;
|
|
40
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NotectlEditorDirective, never>;
|
|
41
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<NotectlEditorDirective, "[notectl-editor]", never, { "debug": { "alias": "debug"; "required": false; }; "content": { "alias": "content"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; }; "accessibility": { "alias": "accessibility"; "required": false; }; "i18n": { "alias": "i18n"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; }, { "contentChange": "contentChange"; "selectionChange": "selectionChange"; "editorFocus": "editorFocus"; "editorBlur": "editorBlur"; "ready": "ready"; "error": "error"; }, never, never, false, never>;
|
|
42
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import * as i0 from "@angular/core";
|
|
2
|
-
import * as i1 from "./notectl-editor.component";
|
|
3
|
-
import * as i2 from "@angular/common";
|
|
4
|
-
export declare class NotectlEditorModule {
|
|
5
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NotectlEditorModule, never>;
|
|
6
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<NotectlEditorModule, [typeof i1.NotectlEditorComponent], [typeof i2.CommonModule], [typeof i1.NotectlEditorComponent]>;
|
|
7
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<NotectlEditorModule>;
|
|
8
|
-
}
|