@syncfusion/ej2-angular-richtexteditor 31.2.10-ngcc → 31.2.10
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/CHANGELOG.md +2894 -0
- package/README.md +89 -37
- package/esm2020/public_api.mjs +2 -0
- package/esm2020/src/index.mjs +5 -0
- package/esm2020/src/rich-text-editor/richtexteditor-all.module.mjs +80 -0
- package/esm2020/src/rich-text-editor/richtexteditor.component.mjs +218 -0
- package/esm2020/src/rich-text-editor/richtexteditor.module.mjs +25 -0
- package/esm2020/syncfusion-ej2-angular-richtexteditor.mjs +5 -0
- package/fesm2015/syncfusion-ej2-angular-richtexteditor.mjs +321 -0
- package/fesm2015/syncfusion-ej2-angular-richtexteditor.mjs.map +1 -0
- package/fesm2020/syncfusion-ej2-angular-richtexteditor.mjs +321 -0
- package/fesm2020/syncfusion-ej2-angular-richtexteditor.mjs.map +1 -0
- package/package.json +20 -7
- package/public_api.d.ts +1 -1
- package/src/index.d.ts +4 -4
- package/src/rich-text-editor/richtexteditor-all.module.d.ts +30 -24
- package/src/rich-text-editor/richtexteditor.component.d.ts +90 -87
- package/src/rich-text-editor/richtexteditor.module.d.ts +11 -5
- package/syncfusion-ej2-angular-richtexteditor.d.ts +5 -0
- package/@syncfusion/ej2-angular-richtexteditor.es5.js +0 -370
- package/@syncfusion/ej2-angular-richtexteditor.es5.js.map +0 -1
- package/@syncfusion/ej2-angular-richtexteditor.js +0 -351
- package/@syncfusion/ej2-angular-richtexteditor.js.map +0 -1
- package/LICENSE +0 -10
- package/dist/ej2-angular-richtexteditor.umd.js +0 -958
- package/dist/ej2-angular-richtexteditor.umd.js.map +0 -1
- package/dist/ej2-angular-richtexteditor.umd.min.js +0 -11
- package/dist/ej2-angular-richtexteditor.umd.min.js.map +0 -1
- package/ej2-angular-richtexteditor.d.ts +0 -5
- package/ej2-angular-richtexteditor.metadata.json +0 -1
package/README.md
CHANGED
|
@@ -1,58 +1,80 @@
|
|
|
1
|
-
# Angular
|
|
1
|
+
# Angular Rich Text Editor | Angular Markdown Editor
|
|
2
2
|
|
|
3
|
-
The [Angular RichTextEditor](https://www.syncfusion.com/angular-ui-components/angular-wysiwyg-rich-text-editor?utm_source=npm&utm_medium=listing&utm_campaign=angular-rich-text-editor-npm)
|
|
3
|
+
The [Angular RichTextEditor](https://www.syncfusion.com/angular-ui-components/angular-wysiwyg-rich-text-editor?utm_source=npm&utm_medium=listing&utm_campaign=angular-rich-text-editor-npm) is a feature-rich WYSIWYG HTML editor and Markdown editor. The Rich Text Editor is widely used to create blogs, forum posts, notes sections, comment sections, messaging applications, and more. The component provides an efficient user interface for a better editing experience with mobile support. It has a variety of tools to edit and format rich content, and it return a valid HTML markup or Markdown (MD) content. It allows users to insert images, links, tables, media files and lists with modular architectures.
|
|
4
4
|
|
|
5
|
-
<
|
|
6
|
-
<
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
</
|
|
5
|
+
<div align="center">
|
|
6
|
+
<h4>
|
|
7
|
+
<a href="https://ej2.syncfusion.com/angular/documentation/rich-text-editor/getting-started/?utm_source=npm&utm_medium=listing&utm_campaign=angular-rich-text-editor-npm">📖Getting started</a> •
|
|
8
|
+
<a href="https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-rich-text-editor-npm#/bootstrap5/rich-text-editor/tools">🚀Online demos</a> •
|
|
9
|
+
<a href="https://www.syncfusion.com/angular-components/angular-wysiwyg-rich-text-editor?utm_source=npm&utm_medium=listing&utm_campaign=angular-rich-text-editor-npm">🌐Learn more</a>
|
|
10
|
+
</h4>
|
|
11
|
+
</div>
|
|
10
12
|
|
|
11
13
|
<p align="center">
|
|
12
|
-
<img src="https://raw.githubusercontent.com/SyncfusionExamples/nuget-img/master/
|
|
14
|
+
<img src="https://raw.githubusercontent.com/SyncfusionExamples/nuget-img/master/javascript/javascript-rich-text-editor-new.gif" alt="Angular RichTextEditor Component"/>
|
|
13
15
|
</p>
|
|
14
16
|
|
|
15
17
|
<p align="center">
|
|
16
18
|
Trusted by the world's leading companies
|
|
17
19
|
<a href="https://www.syncfusion.com">
|
|
18
|
-
<img src="https://
|
|
20
|
+
<img src="https://ej2.syncfusion.com/home/images/trusted_companies.png" alt="Bootstrap logo">
|
|
19
21
|
</a>
|
|
20
22
|
</p>
|
|
21
23
|
|
|
22
|
-
##
|
|
24
|
+
## ⚡️ Quick Start
|
|
23
25
|
|
|
24
|
-
|
|
26
|
+
Syncfusion <sup>®</sup> Rich Text Editor is easy to integrate into Angular applications. Just install the package, configure the module, and drop the component into your template.
|
|
25
27
|
|
|
26
|
-
|
|
28
|
+
### 🛠️ Installation
|
|
29
|
+
|
|
30
|
+
Install the Rich Text Editor and its dependencies using npm:
|
|
27
31
|
|
|
28
32
|
```bash
|
|
29
|
-
npm install -
|
|
33
|
+
npm install @syncfusion/ej2-angular-richtexteditor --save
|
|
30
34
|
```
|
|
31
35
|
|
|
32
|
-
|
|
36
|
+
This command will:
|
|
37
|
+
|
|
38
|
+
* Adds `@syncfusion/ej2-angular-richtexteditor` package and its peer dependencies to your `package.json` file.
|
|
39
|
+
* Registers the Syncfusion<sup>®</sup> UI default theme (tailwind) in the `angular.json` file.
|
|
40
|
+
|
|
41
|
+
### ⚙️ Setup
|
|
42
|
+
|
|
43
|
+
#### 1. Create an Angular Application
|
|
44
|
+
|
|
45
|
+
You can use [Angular CLI](https://github.com/angular/angular-cli) to setup your Angular applications. To install the Angular CLI, use the following command.
|
|
33
46
|
|
|
34
47
|
```bash
|
|
48
|
+
npm install -g @angular/cli
|
|
35
49
|
ng new my-app
|
|
36
50
|
cd my-app
|
|
37
51
|
```
|
|
38
52
|
|
|
39
|
-
|
|
53
|
+
#### 2. Import the Rich Text Editor Module
|
|
40
54
|
|
|
41
|
-
|
|
55
|
+
In `app.module.ts`, import the required module:
|
|
42
56
|
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
57
|
+
```typescript
|
|
58
|
+
import { NgModule } from '@angular/core';
|
|
59
|
+
import { BrowserModule } from '@angular/platform-browser';
|
|
60
|
+
import { RichTextEditorAllModule } from '@syncfusion/ej2-angular-richtexteditor';
|
|
61
|
+
import { AppComponent } from './app.component';
|
|
62
|
+
|
|
63
|
+
@NgModule({
|
|
64
|
+
declarations: [AppComponent],
|
|
65
|
+
imports: [BrowserModule, RichTextEditorAllModule],
|
|
66
|
+
bootstrap: [AppComponent]
|
|
67
|
+
})
|
|
68
|
+
export class AppModule { }
|
|
48
69
|
|
|
49
|
-
|
|
50
|
-
* Imports the `RichTextEditorModule` in your application module `app.module.ts`.
|
|
51
|
-
* Registers the Syncfusion<sup>®</sup> UI default theme (material) in the `angular.json` file.
|
|
70
|
+
```
|
|
52
71
|
|
|
53
|
-
|
|
72
|
+
<blockquote>
|
|
73
|
+
<p>ℹ️ <b>Note:</b></p>
|
|
74
|
+
<span><code>RichTextEditorAllModule</code> includes all features of the Rich Text Editor. To reduce bundle size, consider importing only the required modules individually. For detailed information on module injection, refer to the Syncfusion Rich Text Editor Module <a href="https://ej2.syncfusion.com/angular/documentation/rich-text-editor/module">Documentation</a>.</span>
|
|
75
|
+
</blockquote>
|
|
54
76
|
|
|
55
|
-
### Add Rich Text Editor
|
|
77
|
+
### 🧩 Add the Rich Text Editor Component
|
|
56
78
|
|
|
57
79
|
In **src/app/app.component.ts**, use `<ejs-richtexteditor>` selector in `template` attribute of `@Component` directive to render the Syncfusion<sup>®</sup> Angular Rich Text Editor component.
|
|
58
80
|
|
|
@@ -63,7 +85,7 @@ import { ToolbarService, LinkService, ImageService, HtmlEditorService } from '@s
|
|
|
63
85
|
selector: 'app-root',
|
|
64
86
|
template: `<ejs-richtexteditor id='defaultRTE'>
|
|
65
87
|
<ng-template #valueTemplate>
|
|
66
|
-
<p>
|
|
88
|
+
<p>Start editing your content here.</p>
|
|
67
89
|
</ng-template>
|
|
68
90
|
</ejs-richtexteditor>`,
|
|
69
91
|
providers: [ToolbarService, LinkService, ImageService, HtmlEditorService]
|
|
@@ -71,33 +93,63 @@ import { ToolbarService, LinkService, ImageService, HtmlEditorService } from '@s
|
|
|
71
93
|
export class AppComponent { }
|
|
72
94
|
```
|
|
73
95
|
|
|
74
|
-
## Supported frameworks
|
|
96
|
+
## 🛠️ Supported frameworks
|
|
75
97
|
|
|
76
|
-
|
|
98
|
+
Rich Text Editor component is also offered in following list of frameworks.
|
|
77
99
|
|
|
78
100
|
| [<img src="https://ej2.syncfusion.com/github/images/js.svg" height="50" />](https://www.syncfusion.com/javascript-ui-controls?utm_medium=listing&utm_source=github)<br/> [JavaScript](https://www.syncfusion.com/javascript-ui-controls?utm_medium=listing&utm_source=github) | [<img src="https://ej2.syncfusion.com/github/images/react.svg" height="50" />](https://www.syncfusion.com/react-ui-components?utm_medium=listing&utm_source=github)<br/> [React](https://www.syncfusion.com/react-ui-components?utm_medium=listing&utm_source=github) | [<img src="https://ej2.syncfusion.com/github/images/vue.svg" height="50" />](https://www.syncfusion.com/vue-ui-components?utm_medium=listing&utm_source=github)<br/> [Vue](https://www.syncfusion.com/vue-ui-components?utm_medium=listing&utm_source=github) | [<img src="https://ej2.syncfusion.com/github/images/netcore.svg" height="50" />](https://www.syncfusion.com/aspnet-core-ui-controls?utm_medium=listing&utm_source=github)<br/> [ASP.NET Core](https://www.syncfusion.com/aspnet-core-ui-controls?utm_medium=listing&utm_source=github) | [<img src="https://ej2.syncfusion.com/github/images/netmvc.svg" height="50" />](https://www.syncfusion.com/aspnet-mvc-ui-controls?utm_medium=listing&utm_source=github)<br/> [ASP.NET MVC](https://www.syncfusion.com/aspnet-mvc-ui-controls?utm_medium=listing&utm_source=github) |
|
|
79
101
|
| :-----: | :-----: | :-----: | :-----: | :-----: |
|
|
80
102
|
|
|
81
|
-
## Showcase samples
|
|
103
|
+
## 🏗️ Showcase samples
|
|
82
104
|
|
|
83
105
|
* [Angular HTML editor demo](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-rich-text-editor-npm/#/bootstrap5/rich-text-editor/tools)
|
|
84
106
|
* [Blog posting using angular rich text editor demo](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-rich-text-editor-npm/#/bootstrap5/rich-text-editor/blog-posting)
|
|
85
107
|
* [Angular Markdown editor demo](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-rich-text-editor-npm/#/bootstrap5/rich-text-editor/markdown-editor)
|
|
86
108
|
* [Angular live HTML editor demo](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-rich-text-editor-npm/#/bootstrap5/rich-text-editor/online-html-editor)
|
|
87
109
|
|
|
88
|
-
## Key features
|
|
110
|
+
## ✨ Key features
|
|
89
111
|
|
|
90
112
|
* [Edit mode](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-rich-text-editor-npm/#/bootstrap5/rich-text-editor/iframe) - HTML content is possible to edit in a `div` element or an `iframe` in the rich text editor.
|
|
113
|
+
|
|
114
|
+
* [@Mentions](https://ej2.syncfusion.com/angular/demos/#/bootstrap5/rich-text-editor/mention-integration) - Easily mention users, tags, or items with an autocomplete suggestion list.
|
|
115
|
+
|
|
116
|
+
* [Slash Menu Support](https://ej2.syncfusion.com/angular/demos/#/bootstrap5/rich-text-editor/smart-suggestion) - Quickly insert content blocks using the `/` command.
|
|
117
|
+
|
|
118
|
+
* [Checklist Suport](https://ej2.syncfusion.com/angular/demos/#/bootstrap5/rich-text-editor/tools) - Allows users to create checklists (to-do lists) directly within the editor. Users can easily add interactive checkbox items to their content.
|
|
119
|
+
|
|
120
|
+
* [Accessibility & WCAG 2.0 Compliance](https://ej2.syncfusion.com/angular/documentation/rich-text-editor/accessibility) - Ensures full accessibility support, making it user-friendly for people who rely on assistive technologies (AT) or keyboard navigation.
|
|
121
|
+
|
|
122
|
+
* [Preventing Cross-Site Scripting (XSS)](https://ej2.syncfusion.com/aspnetcore/documentation/rich-text-editor/prevent-cross-site-scripting?utm_source=npm&utm_medium=listing&utm_campaign=javascript-richtexteditor-npm) - The Rich Text Editor allows users to edit the content with security by preventing cross-site scripting (XSS).
|
|
123
|
+
|
|
124
|
+
* [HTML code editing](https://ej2.syncfusion.com/angular/documentation/rich-text-editor/miscellaneous/?utm_source=npm&utm_medium=listing&utm_campaign=angular-rich-text-editor-npm/#code-view) - The rich text editor allows users to edit the HTML code directly in the HTML code view.
|
|
125
|
+
|
|
91
126
|
* [Markdown editor](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-rich-text-editor-npm/#/bootstrap5/rich-text-editor/markdown-editor-preview) - The rich text editor allows you to edit Markdown content using the Markdown syntax.
|
|
127
|
+
|
|
92
128
|
* [Markdown content preview](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-rich-text-editor-npm/#/bootstrap5/rich-text-editor/markdown-editor-preview) - Preview of the modified Markdown content in the editor, you can give users the ability to see what the formatted content will look like before they save it.
|
|
93
|
-
|
|
129
|
+
|
|
94
130
|
* [Tools](https://ej2.syncfusion.com/angular/documentation/rich-text-editor/toolbar/?utm_source=npm&utm_medium=listing&utm_campaign=angular-rich-text-editor-npm/#toolbar-items) - The rich text editor handles a wide range of features, including inserting images, hyperlinks, tables, formatting tools, and more.
|
|
131
|
+
|
|
95
132
|
* [Toolbar appearance](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-rich-text-editor-npm/#/bootstrap5/rich-text-editor/types) - The rich text editor can provide a fully customizable toolbar that allows users to access the various formatting and editing options that are available.
|
|
96
|
-
|
|
133
|
+
|
|
134
|
+
* [Export and Import](https://ej2.syncfusion.com/angular/demos/?utm_source=npm&utm_medium=listing&utm_campaign=angular-rich-text-editor-npm/#/bootstrap5/rich-text-editor/export-document) - Supports exporting content to PDF, and Word formats.
|
|
135
|
+
|
|
136
|
+
* [Copy and paste](https://ej2.syncfusion.com/angular/documentation/rich-text-editor/paste-cleanup) - Copy and paste from Microsoft Word, Outlook, or other editors or sources while preserving formatting, styles, and structure.
|
|
137
|
+
|
|
138
|
+
* [Undo and redo](https://ej2.syncfusion.com/angular/documentation/rich-text-editor/undo-redo) - Users can use undo and redo actions to reverse or repeat actions they took while editing the content.
|
|
139
|
+
|
|
97
140
|
* [Module injection](https://ej2.syncfusion.com/angular/documentation/rich-text-editor/getting-started/?utm_source=npm&utm_medium=listing&utm_campaign=angular-rich-text-editor-npm/#module-injection) - It is possible to create a editor that utilizes a modular library to load the necessary functionality on demand. This can be useful for optimizing the performance of the editor.
|
|
141
|
+
|
|
98
142
|
* [Third-party integration](https://ej2.syncfusion.com/angular/documentation/rich-text-editor/third-party-integration/?utm_source=npm&utm_medium=listing&utm_campaign=angular-rich-text-editor-npm) - It is possible to integrate a third-party library into a rich text editor to add additional functionality or features to the editor like `Code-mirror`, `Embedly` and more.
|
|
99
143
|
|
|
100
|
-
##
|
|
144
|
+
## 📚 Resources
|
|
145
|
+
|
|
146
|
+
* [Documentation](https://ej2.syncfusion.com/angular/documentation/rich-text-editor/getting-started)
|
|
147
|
+
* [Theme Studio](https://ej2.syncfusion.com/themestudio/)
|
|
148
|
+
* [What's New](https://www.syncfusion.com/products/whatsnew/angular?utm_medium=listing&utm_source=github)
|
|
149
|
+
* [Road Map](https://www.syncfusion.com/products/roadmap/angular)
|
|
150
|
+
* [E-Books](https://www.syncfusion.com/succinctly-free-ebooks?searchkey=angular&type=all)
|
|
151
|
+
|
|
152
|
+
## 🤝 Support
|
|
101
153
|
|
|
102
154
|
Product support is available through the following mediums.
|
|
103
155
|
|
|
@@ -107,13 +159,13 @@ Product support is available through the following mediums.
|
|
|
107
159
|
* [Request feature or report bug](https://www.syncfusion.com/feedback/angular?utm_source=npm&utm_medium=listing&utm_campaign=angular-rich-text-editor-npm)
|
|
108
160
|
* Live chat
|
|
109
161
|
|
|
110
|
-
## Change log
|
|
162
|
+
## 🔄 Change log
|
|
111
163
|
|
|
112
164
|
Check the changelog [here](https://github.com/syncfusion/ej2-angular-ui-components/blob/master/components/richtexteditor/CHANGELOG.md?utm_source=npm&utm_medium=listing&utm_campaign=angular-rich-text-editor-npm). Get minor improvements and bug fixes every week to stay up to date with frequent updates.
|
|
113
165
|
|
|
114
|
-
## License and copyright
|
|
166
|
+
## ⚖️ License and copyright
|
|
115
167
|
|
|
116
|
-
> This is a commercial product and requires a paid license for possession or use. Syncfusion<sup>®</sup> licensed software, including this component, is subject to the terms and conditions of Syncfusion<sup>®</sup> [EULA](https://www.syncfusion.com/eula/es/). To acquire a license for
|
|
168
|
+
> This is a commercial product and requires a paid license for possession or use. Syncfusion<sup>®</sup> licensed software, including this component, is subject to the terms and conditions of Syncfusion<sup>®</sup> [EULA](https://www.syncfusion.com/eula/es/). To acquire a license for 140+ [Angular UI components](https://www.syncfusion.com/angular-components), you can [purchase](https://www.syncfusion.com/sales/products) or [start a free 30-day trial](https://www.syncfusion.com/account/manage-trials/start-trials).
|
|
117
169
|
|
|
118
170
|
> A free community [license](https://github.com/syncfusion/ej2-angular-ui-components/blob/master/license?utm_source=npm&utm_medium=listing&utm_campaign=angular-rich-text-editor-npm) is also available for companies and individuals whose organizations have less than $1 million USD in annual gross revenue and five or fewer developers.
|
|
119
171
|
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './src/index';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy9pbmRleCc7Il19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { RichTextEditorComponent } from './rich-text-editor/richtexteditor.component';
|
|
2
|
+
export { RichTextEditorModule } from './rich-text-editor/richtexteditor.module';
|
|
3
|
+
export { RichTextEditorAllModule, ToolbarService, LinkService, ImageService, ImportExportService, AudioService, VideoService, CountService, QuickToolbarService, HtmlEditorService, MarkdownEditorService, TableService, PasteCleanupService, ResizeService, FileManagerService, FormatPainterService, EmojiPickerService, SlashMenuService, CodeBlockService } from './rich-text-editor/richtexteditor-all.module';
|
|
4
|
+
export * from '@syncfusion/ej2-richtexteditor';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDckYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwWixjQUFjLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgUmljaFRleHRFZGl0b3JDb21wb25lbnR9IGZyb20gJy4vcmljaC10ZXh0LWVkaXRvci9yaWNodGV4dGVkaXRvci5jb21wb25lbnQnO1xuZXhwb3J0IHsgUmljaFRleHRFZGl0b3JNb2R1bGUgfSBmcm9tICcuL3JpY2gtdGV4dC1lZGl0b3IvcmljaHRleHRlZGl0b3IubW9kdWxlJztcbmV4cG9ydCB7IFJpY2hUZXh0RWRpdG9yQWxsTW9kdWxlLCBUb29sYmFyU2VydmljZSwgTGlua1NlcnZpY2UsIEltYWdlU2VydmljZSwgSW1wb3J0RXhwb3J0U2VydmljZSwgQXVkaW9TZXJ2aWNlLCBWaWRlb1NlcnZpY2UsIENvdW50U2VydmljZSwgUXVpY2tUb29sYmFyU2VydmljZSwgSHRtbEVkaXRvclNlcnZpY2UsIE1hcmtkb3duRWRpdG9yU2VydmljZSwgVGFibGVTZXJ2aWNlLCBQYXN0ZUNsZWFudXBTZXJ2aWNlLCBSZXNpemVTZXJ2aWNlLCBGaWxlTWFuYWdlclNlcnZpY2UsIEZvcm1hdFBhaW50ZXJTZXJ2aWNlLCBFbW9qaVBpY2tlclNlcnZpY2UsIFNsYXNoTWVudVNlcnZpY2UsIENvZGVCbG9ja1NlcnZpY2UgfSBmcm9tICcuL3JpY2gtdGV4dC1lZGl0b3IvcmljaHRleHRlZGl0b3ItYWxsLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICdAc3luY2Z1c2lvbi9lajItcmljaHRleHRlZGl0b3InOyJdfQ==
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { RichTextEditorModule } from './richtexteditor.module';
|
|
4
|
+
import { Toolbar, Link, Image, ImportExport, Audio, Video, Count, QuickToolbar, HtmlEditor, MarkdownEditor, Table, PasteCleanup, Resize, FileManager, FormatPainter, EmojiPicker, SlashMenu, CodeBlock } from '@syncfusion/ej2-richtexteditor';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export const ToolbarService = { provide: 'RichTextEditorToolbar', useValue: Toolbar };
|
|
7
|
+
export const LinkService = { provide: 'RichTextEditorLink', useValue: Link };
|
|
8
|
+
export const ImageService = { provide: 'RichTextEditorImage', useValue: Image };
|
|
9
|
+
export const ImportExportService = { provide: 'RichTextEditorImportExport', useValue: ImportExport };
|
|
10
|
+
export const AudioService = { provide: 'RichTextEditorAudio', useValue: Audio };
|
|
11
|
+
export const VideoService = { provide: 'RichTextEditorVideo', useValue: Video };
|
|
12
|
+
export const CountService = { provide: 'RichTextEditorCount', useValue: Count };
|
|
13
|
+
export const QuickToolbarService = { provide: 'RichTextEditorQuickToolbar', useValue: QuickToolbar };
|
|
14
|
+
export const HtmlEditorService = { provide: 'RichTextEditorHtmlEditor', useValue: HtmlEditor };
|
|
15
|
+
export const MarkdownEditorService = { provide: 'RichTextEditorMarkdownEditor', useValue: MarkdownEditor };
|
|
16
|
+
export const TableService = { provide: 'RichTextEditorTable', useValue: Table };
|
|
17
|
+
export const PasteCleanupService = { provide: 'RichTextEditorPasteCleanup', useValue: PasteCleanup };
|
|
18
|
+
export const ResizeService = { provide: 'RichTextEditorResize', useValue: Resize };
|
|
19
|
+
export const FileManagerService = { provide: 'RichTextEditorFileManager', useValue: FileManager };
|
|
20
|
+
export const FormatPainterService = { provide: 'RichTextEditorFormatPainter', useValue: FormatPainter };
|
|
21
|
+
export const EmojiPickerService = { provide: 'RichTextEditorEmojiPicker', useValue: EmojiPicker };
|
|
22
|
+
export const SlashMenuService = { provide: 'RichTextEditorSlashMenu', useValue: SlashMenu };
|
|
23
|
+
export const CodeBlockService = { provide: 'RichTextEditorCodeBlock', useValue: CodeBlock };
|
|
24
|
+
/**
|
|
25
|
+
* NgModule definition for the RichTextEditor component with providers.
|
|
26
|
+
*/
|
|
27
|
+
export class RichTextEditorAllModule {
|
|
28
|
+
}
|
|
29
|
+
RichTextEditorAllModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: RichTextEditorAllModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
30
|
+
RichTextEditorAllModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: RichTextEditorAllModule, imports: [CommonModule, RichTextEditorModule], exports: [RichTextEditorModule] });
|
|
31
|
+
RichTextEditorAllModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: RichTextEditorAllModule, providers: [
|
|
32
|
+
ToolbarService,
|
|
33
|
+
LinkService,
|
|
34
|
+
ImageService,
|
|
35
|
+
ImportExportService,
|
|
36
|
+
AudioService,
|
|
37
|
+
VideoService,
|
|
38
|
+
CountService,
|
|
39
|
+
QuickToolbarService,
|
|
40
|
+
HtmlEditorService,
|
|
41
|
+
MarkdownEditorService,
|
|
42
|
+
TableService,
|
|
43
|
+
PasteCleanupService,
|
|
44
|
+
ResizeService,
|
|
45
|
+
FileManagerService,
|
|
46
|
+
FormatPainterService,
|
|
47
|
+
EmojiPickerService,
|
|
48
|
+
SlashMenuService,
|
|
49
|
+
CodeBlockService
|
|
50
|
+
], imports: [[CommonModule, RichTextEditorModule], RichTextEditorModule] });
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: RichTextEditorAllModule, decorators: [{
|
|
52
|
+
type: NgModule,
|
|
53
|
+
args: [{
|
|
54
|
+
imports: [CommonModule, RichTextEditorModule],
|
|
55
|
+
exports: [
|
|
56
|
+
RichTextEditorModule
|
|
57
|
+
],
|
|
58
|
+
providers: [
|
|
59
|
+
ToolbarService,
|
|
60
|
+
LinkService,
|
|
61
|
+
ImageService,
|
|
62
|
+
ImportExportService,
|
|
63
|
+
AudioService,
|
|
64
|
+
VideoService,
|
|
65
|
+
CountService,
|
|
66
|
+
QuickToolbarService,
|
|
67
|
+
HtmlEditorService,
|
|
68
|
+
MarkdownEditorService,
|
|
69
|
+
TableService,
|
|
70
|
+
PasteCleanupService,
|
|
71
|
+
ResizeService,
|
|
72
|
+
FileManagerService,
|
|
73
|
+
FormatPainterService,
|
|
74
|
+
EmojiPickerService,
|
|
75
|
+
SlashMenuService,
|
|
76
|
+
CodeBlockService
|
|
77
|
+
]
|
|
78
|
+
}]
|
|
79
|
+
}] });
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaHRleHRlZGl0b3ItYWxsLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9yaWNoLXRleHQtZWRpdG9yL3JpY2h0ZXh0ZWRpdG9yLWFsbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9ELE9BQU8sRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdDQUFnQyxDQUFBOztBQUc1TyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQWtCLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUMsQ0FBQztBQUNwRyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQWtCLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQztBQUMzRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWtCLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUMsQ0FBQztBQUM5RixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBa0IsRUFBRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBQyxDQUFDO0FBQ25ILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBa0IsRUFBRSxPQUFPLEVBQUUscUJBQXFC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QkFDbkIsYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLG9CQUFvQjt3QkFDcEIsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjtxQkFDbkI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgVmFsdWVQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJpY2hUZXh0RWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9yaWNodGV4dGVkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmljaFRleHRFZGl0b3JNb2R1bGUgfSBmcm9tICcuL3JpY2h0ZXh0ZWRpdG9yLm1vZHVsZSc7XG5pbXBvcnQge1Rvb2xiYXIsIExpbmssIEltYWdlLCBJbXBvcnRFeHBvcnQsIEF1ZGlvLCBWaWRlbywgQ291bnQsIFF1aWNrVG9vbGJhciwgSHRtbEVkaXRvciwgTWFya2Rvd25FZGl0b3IsIFRhYmxlLCBQYXN0ZUNsZWFudXAsIFJlc2l6ZSwgRmlsZU1hbmFnZXIsIEZvcm1hdFBhaW50ZXIsIEVtb2ppUGlja2VyLCBTbGFzaE1lbnUsIENvZGVCbG9ja30gZnJvbSAnQHN5bmNmdXNpb24vZWoyLXJpY2h0ZXh0ZWRpdG9yJ1xuXG5cbmV4cG9ydCBjb25zdCBUb29sYmFyU2VydmljZTogVmFsdWVQcm92aWRlciA9IHsgcHJvdmlkZTogJ1JpY2hUZXh0RWRpdG9yVG9vbGJhcicsIHVzZVZhbHVlOiBUb29sYmFyfTtcbmV4cG9ydCBjb25zdCBMaW5rU2VydmljZTogVmFsdWVQcm92aWRlciA9IHsgcHJvdmlkZTogJ1JpY2hUZXh0RWRpdG9yTGluaycsIHVzZVZhbHVlOiBMaW5rfTtcbmV4cG9ydCBjb25zdCBJbWFnZVNlcnZpY2U6IFZhbHVlUHJvdmlkZXIgPSB7IHByb3ZpZGU6ICdSaWNoVGV4dEVkaXRvckltYWdlJywgdXNlVmFsdWU6IEltYWdlfTtcbmV4cG9ydCBjb25zdCBJbXBvcnRFeHBvcnRTZXJ2aWNlOiBWYWx1ZVByb3ZpZGVyID0geyBwcm92aWRlOiAnUmljaFRleHRFZGl0b3JJbXBvcnRFeHBvcnQnLCB1c2VWYWx1ZTogSW1wb3J0RXhwb3J0fTtcbmV4cG9ydCBjb25zdCBBdWRpb1NlcnZpY2U6IFZhbHVlUHJvdmlkZXIgPSB7IHByb3ZpZGU6ICdSaWNoVGV4dEVkaXRvckF1ZGlvJywgdXNlVmFsdWU6IEF1ZGlvfTtcbmV4cG9ydCBjb25zdCBWaWRlb1NlcnZpY2U6IFZhbHVlUHJvdmlkZXIgPSB7IHByb3ZpZGU6ICdSaWNoVGV4dEVkaXRvclZpZGVvJywgdXNlVmFsdWU6IFZpZGVvfTtcbmV4cG9ydCBjb25zdCBDb3VudFNlcnZpY2U6IFZhbHVlUHJvdmlkZXIgPSB7IHByb3ZpZGU6ICdSaWNoVGV4dEVkaXRvckNvdW50JywgdXNlVmFsdWU6IENvdW50fTtcbmV4cG9ydCBjb25zdCBRdWlja1Rvb2xiYXJTZXJ2aWNlOiBWYWx1ZVByb3ZpZGVyID0geyBwcm92aWRlOiAnUmljaFRleHRFZGl0b3JRdWlja1Rvb2xiYXInLCB1c2VWYWx1ZTogUXVpY2tUb29sYmFyfTtcbmV4cG9ydCBjb25zdCBIdG1sRWRpdG9yU2VydmljZTogVmFsdWVQcm92aWRlciA9IHsgcHJvdmlkZTogJ1JpY2hUZXh0RWRpdG9ySHRtbEVkaXRvcicsIHVzZVZhbHVlOiBIdG1sRWRpdG9yfTtcbmV4cG9ydCBjb25zdCBNYXJrZG93bkVkaXRvclNlcnZpY2U6IFZhbHVlUHJvdmlkZXIgPSB7IHByb3ZpZGU6ICdSaWNoVGV4dEVkaXRvck1hcmtkb3duRWRpdG9yJywgdXNlVmFsdWU6IE1hcmtkb3duRWRpdG9yfTtcbmV4cG9ydCBjb25zdCBUYWJsZVNlcnZpY2U6IFZhbHVlUHJvdmlkZXIgPSB7IHByb3ZpZGU6ICdSaWNoVGV4dEVkaXRvclRhYmxlJywgdXNlVmFsdWU6IFRhYmxlfTtcbmV4cG9ydCBjb25zdCBQYXN0ZUNsZWFudXBTZXJ2aWNlOiBWYWx1ZVByb3ZpZGVyID0geyBwcm92aWRlOiAnUmljaFRleHRFZGl0b3JQYXN0ZUNsZWFudXAnLCB1c2VWYWx1ZTogUGFzdGVDbGVhbnVwfTtcbmV4cG9ydCBjb25zdCBSZXNpemVTZXJ2aWNlOiBWYWx1ZVByb3ZpZGVyID0geyBwcm92aWRlOiAnUmljaFRleHRFZGl0b3JSZXNpemUnLCB1c2VWYWx1ZTogUmVzaXplfTtcbmV4cG9ydCBjb25zdCBGaWxlTWFuYWdlclNlcnZpY2U6IFZhbHVlUHJvdmlkZXIgPSB7IHByb3ZpZGU6ICdSaWNoVGV4dEVkaXRvckZpbGVNYW5hZ2VyJywgdXNlVmFsdWU6IEZpbGVNYW5hZ2VyfTtcbmV4cG9ydCBjb25zdCBGb3JtYXRQYWludGVyU2VydmljZTogVmFsdWVQcm92aWRlciA9IHsgcHJvdmlkZTogJ1JpY2hUZXh0RWRpdG9yRm9ybWF0UGFpbnRlcicsIHVzZVZhbHVlOiBGb3JtYXRQYWludGVyfTtcbmV4cG9ydCBjb25zdCBFbW9qaVBpY2tlclNlcnZpY2U6IFZhbHVlUHJvdmlkZXIgPSB7IHByb3ZpZGU6ICdSaWNoVGV4dEVkaXRvckVtb2ppUGlja2VyJywgdXNlVmFsdWU6IEVtb2ppUGlja2VyfTtcbmV4cG9ydCBjb25zdCBTbGFzaE1lbnVTZXJ2aWNlOiBWYWx1ZVByb3ZpZGVyID0geyBwcm92aWRlOiAnUmljaFRleHRFZGl0b3JTbGFzaE1lbnUnLCB1c2VWYWx1ZTogU2xhc2hNZW51fTtcbmV4cG9ydCBjb25zdCBDb2RlQmxvY2tTZXJ2aWNlOiBWYWx1ZVByb3ZpZGVyID0geyBwcm92aWRlOiAnUmljaFRleHRFZGl0b3JDb2RlQmxvY2snLCB1c2VWYWx1ZTogQ29kZUJsb2NrfTtcblxuLyoqXG4gKiBOZ01vZHVsZSBkZWZpbml0aW9uIGZvciB0aGUgUmljaFRleHRFZGl0b3IgY29tcG9uZW50IHdpdGggcHJvdmlkZXJzLlxuICovXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJpY2hUZXh0RWRpdG9yTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIFJpY2hUZXh0RWRpdG9yTW9kdWxlXG4gICAgXSxcbiAgICBwcm92aWRlcnM6W1xuICAgICAgICBUb29sYmFyU2VydmljZSxcbiAgICAgICAgTGlua1NlcnZpY2UsXG4gICAgICAgIEltYWdlU2VydmljZSxcbiAgICAgICAgSW1wb3J0RXhwb3J0U2VydmljZSxcbiAgICAgICAgQXVkaW9TZXJ2aWNlLFxuICAgICAgICBWaWRlb1NlcnZpY2UsXG4gICAgICAgIENvdW50U2VydmljZSxcbiAgICAgICAgUXVpY2tUb29sYmFyU2VydmljZSxcbiAgICAgICAgSHRtbEVkaXRvclNlcnZpY2UsXG4gICAgICAgIE1hcmtkb3duRWRpdG9yU2VydmljZSxcbiAgICAgICAgVGFibGVTZXJ2aWNlLFxuICAgICAgICBQYXN0ZUNsZWFudXBTZXJ2aWNlLFxuICAgICAgICBSZXNpemVTZXJ2aWNlLFxuICAgICAgICBGaWxlTWFuYWdlclNlcnZpY2UsXG4gICAgICAgIEZvcm1hdFBhaW50ZXJTZXJ2aWNlLFxuICAgICAgICBFbW9qaVBpY2tlclNlcnZpY2UsXG4gICAgICAgIFNsYXNoTWVudVNlcnZpY2UsXG4gICAgICAgIENvZGVCbG9ja1NlcnZpY2VcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFJpY2hUZXh0RWRpdG9yQWxsTW9kdWxlIHsgfSJdfQ==
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
var RichTextEditorComponent_1;
|
|
2
|
+
import { __decorate } from "tslib";
|
|
3
|
+
import { Component, ChangeDetectionStrategy, forwardRef, ContentChild } from '@angular/core';
|
|
4
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
5
|
+
import { ComponentBase, ComponentMixins, FormBase, setValue } from '@syncfusion/ej2-angular-base';
|
|
6
|
+
import { RichTextEditor } from '@syncfusion/ej2-richtexteditor';
|
|
7
|
+
import { Template } from '@syncfusion/ej2-angular-base';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export const inputs = ['autoSaveOnIdle', 'backgroundColor', 'bulletFormatList', 'codeBlockSettings', 'cssClass', 'editorMode', 'emojiPickerSettings', 'enableAutoUrl', 'enableHtmlEncode', 'enableHtmlSanitizer', 'enablePersistence', 'enableResize', 'enableRtl', 'enableTabKey', 'enableXhtml', 'enabled', 'enterKey', 'exportPdf', 'exportWord', 'fileManagerSettings', 'floatingToolbarOffset', 'fontColor', 'fontFamily', 'fontSize', 'format', 'formatPainterSettings', 'formatter', 'height', 'htmlAttributes', 'iframeSettings', 'importWord', 'inlineMode', 'insertAudioSettings', 'insertImageSettings', 'insertVideoSettings', 'keyConfig', 'locale', 'maxLength', 'numberFormatList', 'pasteCleanupSettings', 'placeholder', 'quickToolbarSettings', 'readonly', 'saveInterval', 'shiftEnterKey', 'showCharCount', 'showTooltip', 'slashMenuSettings', 'tableSettings', 'toolbarSettings', 'undoRedoSteps', 'undoRedoTimer', 'value', 'valueTemplate', 'width'];
|
|
10
|
+
export const outputs = ['actionBegin', 'actionComplete', 'afterImageDelete', 'afterMediaDelete', 'afterPasteCleanup', 'beforeDialogClose', 'beforeDialogOpen', 'beforeFileUpload', 'beforeImageDrop', 'beforeImageUpload', 'beforeMediaDrop', 'beforePasteCleanup', 'beforeQuickToolbarOpen', 'beforeSanitizeHtml', 'blur', 'change', 'created', 'destroyed', 'dialogClose', 'dialogOpen', 'fileRemoving', 'fileSelected', 'fileUploadFailed', 'fileUploadSuccess', 'fileUploading', 'focus', 'imageRemoving', 'imageSelected', 'imageUploadFailed', 'imageUploadSuccess', 'imageUploading', 'quickToolbarClose', 'quickToolbarOpen', 'resizeStart', 'resizeStop', 'resizing', 'selectionChanged', 'slashMenuItemSelect', 'toolbarClick', 'toolbarStatusUpdate', 'updatedToolbarStatus', 'valueChange'];
|
|
11
|
+
export const twoWays = ['value'];
|
|
12
|
+
/**
|
|
13
|
+
* `ejs-richtexteditor` represents the Angular richtexteditor Component.
|
|
14
|
+
* ```html
|
|
15
|
+
* <ejs-richtexteditor></ejs-richtexteditor>
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
let RichTextEditorComponent = RichTextEditorComponent_1 = class RichTextEditorComponent extends RichTextEditor {
|
|
19
|
+
constructor(ngEle, srenderer, viewContainerRef, injector, cdr) {
|
|
20
|
+
super();
|
|
21
|
+
this.ngEle = ngEle;
|
|
22
|
+
this.srenderer = srenderer;
|
|
23
|
+
this.viewContainerRef = viewContainerRef;
|
|
24
|
+
this.injector = injector;
|
|
25
|
+
this.cdr = cdr;
|
|
26
|
+
this.skipFromEvent = true;
|
|
27
|
+
this.element = this.ngEle.nativeElement;
|
|
28
|
+
this.injectedModules = this.injectedModules || [];
|
|
29
|
+
try {
|
|
30
|
+
let mod = this.injector.get('RichTextEditorToolbar');
|
|
31
|
+
if (this.injectedModules.indexOf(mod) === -1) {
|
|
32
|
+
this.injectedModules.push(mod);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch { }
|
|
36
|
+
try {
|
|
37
|
+
let mod = this.injector.get('RichTextEditorLink');
|
|
38
|
+
if (this.injectedModules.indexOf(mod) === -1) {
|
|
39
|
+
this.injectedModules.push(mod);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch { }
|
|
43
|
+
try {
|
|
44
|
+
let mod = this.injector.get('RichTextEditorImage');
|
|
45
|
+
if (this.injectedModules.indexOf(mod) === -1) {
|
|
46
|
+
this.injectedModules.push(mod);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch { }
|
|
50
|
+
try {
|
|
51
|
+
let mod = this.injector.get('RichTextEditorImportExport');
|
|
52
|
+
if (this.injectedModules.indexOf(mod) === -1) {
|
|
53
|
+
this.injectedModules.push(mod);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch { }
|
|
57
|
+
try {
|
|
58
|
+
let mod = this.injector.get('RichTextEditorAudio');
|
|
59
|
+
if (this.injectedModules.indexOf(mod) === -1) {
|
|
60
|
+
this.injectedModules.push(mod);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch { }
|
|
64
|
+
try {
|
|
65
|
+
let mod = this.injector.get('RichTextEditorVideo');
|
|
66
|
+
if (this.injectedModules.indexOf(mod) === -1) {
|
|
67
|
+
this.injectedModules.push(mod);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch { }
|
|
71
|
+
try {
|
|
72
|
+
let mod = this.injector.get('RichTextEditorCount');
|
|
73
|
+
if (this.injectedModules.indexOf(mod) === -1) {
|
|
74
|
+
this.injectedModules.push(mod);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch { }
|
|
78
|
+
try {
|
|
79
|
+
let mod = this.injector.get('RichTextEditorQuickToolbar');
|
|
80
|
+
if (this.injectedModules.indexOf(mod) === -1) {
|
|
81
|
+
this.injectedModules.push(mod);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch { }
|
|
85
|
+
try {
|
|
86
|
+
let mod = this.injector.get('RichTextEditorHtmlEditor');
|
|
87
|
+
if (this.injectedModules.indexOf(mod) === -1) {
|
|
88
|
+
this.injectedModules.push(mod);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch { }
|
|
92
|
+
try {
|
|
93
|
+
let mod = this.injector.get('RichTextEditorMarkdownEditor');
|
|
94
|
+
if (this.injectedModules.indexOf(mod) === -1) {
|
|
95
|
+
this.injectedModules.push(mod);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch { }
|
|
99
|
+
try {
|
|
100
|
+
let mod = this.injector.get('RichTextEditorTable');
|
|
101
|
+
if (this.injectedModules.indexOf(mod) === -1) {
|
|
102
|
+
this.injectedModules.push(mod);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch { }
|
|
106
|
+
try {
|
|
107
|
+
let mod = this.injector.get('RichTextEditorPasteCleanup');
|
|
108
|
+
if (this.injectedModules.indexOf(mod) === -1) {
|
|
109
|
+
this.injectedModules.push(mod);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch { }
|
|
113
|
+
try {
|
|
114
|
+
let mod = this.injector.get('RichTextEditorResize');
|
|
115
|
+
if (this.injectedModules.indexOf(mod) === -1) {
|
|
116
|
+
this.injectedModules.push(mod);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch { }
|
|
120
|
+
try {
|
|
121
|
+
let mod = this.injector.get('RichTextEditorFileManager');
|
|
122
|
+
if (this.injectedModules.indexOf(mod) === -1) {
|
|
123
|
+
this.injectedModules.push(mod);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
catch { }
|
|
127
|
+
try {
|
|
128
|
+
let mod = this.injector.get('RichTextEditorFormatPainter');
|
|
129
|
+
if (this.injectedModules.indexOf(mod) === -1) {
|
|
130
|
+
this.injectedModules.push(mod);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch { }
|
|
134
|
+
try {
|
|
135
|
+
let mod = this.injector.get('RichTextEditorEmojiPicker');
|
|
136
|
+
if (this.injectedModules.indexOf(mod) === -1) {
|
|
137
|
+
this.injectedModules.push(mod);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
catch { }
|
|
141
|
+
try {
|
|
142
|
+
let mod = this.injector.get('RichTextEditorSlashMenu');
|
|
143
|
+
if (this.injectedModules.indexOf(mod) === -1) {
|
|
144
|
+
this.injectedModules.push(mod);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch { }
|
|
148
|
+
try {
|
|
149
|
+
let mod = this.injector.get('RichTextEditorCodeBlock');
|
|
150
|
+
if (this.injectedModules.indexOf(mod) === -1) {
|
|
151
|
+
this.injectedModules.push(mod);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
catch { }
|
|
155
|
+
this.registerEvents(outputs);
|
|
156
|
+
this.addTwoWay.call(this, twoWays);
|
|
157
|
+
setValue('currentInstance', this, this.viewContainerRef);
|
|
158
|
+
this.formContext = new FormBase();
|
|
159
|
+
this.formCompContext = new ComponentBase();
|
|
160
|
+
}
|
|
161
|
+
registerOnChange(registerFunction) {
|
|
162
|
+
}
|
|
163
|
+
registerOnTouched(registerFunction) {
|
|
164
|
+
}
|
|
165
|
+
writeValue(value) {
|
|
166
|
+
}
|
|
167
|
+
setDisabledState(disabled) {
|
|
168
|
+
}
|
|
169
|
+
ngOnInit() {
|
|
170
|
+
this.formCompContext.ngOnInit(this);
|
|
171
|
+
}
|
|
172
|
+
ngAfterViewInit() {
|
|
173
|
+
this.formContext.ngAfterViewInit(this);
|
|
174
|
+
}
|
|
175
|
+
ngOnDestroy() {
|
|
176
|
+
this.formCompContext.ngOnDestroy(this);
|
|
177
|
+
}
|
|
178
|
+
ngAfterContentChecked() {
|
|
179
|
+
this.formCompContext.ngAfterContentChecked(this);
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
RichTextEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: RichTextEditorComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
183
|
+
RichTextEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: RichTextEditorComponent, selector: "ejs-richtexteditor", inputs: { autoSaveOnIdle: "autoSaveOnIdle", backgroundColor: "backgroundColor", bulletFormatList: "bulletFormatList", codeBlockSettings: "codeBlockSettings", cssClass: "cssClass", editorMode: "editorMode", emojiPickerSettings: "emojiPickerSettings", enableAutoUrl: "enableAutoUrl", enableHtmlEncode: "enableHtmlEncode", enableHtmlSanitizer: "enableHtmlSanitizer", enablePersistence: "enablePersistence", enableResize: "enableResize", enableRtl: "enableRtl", enableTabKey: "enableTabKey", enableXhtml: "enableXhtml", enabled: "enabled", enterKey: "enterKey", exportPdf: "exportPdf", exportWord: "exportWord", fileManagerSettings: "fileManagerSettings", floatingToolbarOffset: "floatingToolbarOffset", fontColor: "fontColor", fontFamily: "fontFamily", fontSize: "fontSize", format: "format", formatPainterSettings: "formatPainterSettings", formatter: "formatter", height: "height", htmlAttributes: "htmlAttributes", iframeSettings: "iframeSettings", importWord: "importWord", inlineMode: "inlineMode", insertAudioSettings: "insertAudioSettings", insertImageSettings: "insertImageSettings", insertVideoSettings: "insertVideoSettings", keyConfig: "keyConfig", locale: "locale", maxLength: "maxLength", numberFormatList: "numberFormatList", pasteCleanupSettings: "pasteCleanupSettings", placeholder: "placeholder", quickToolbarSettings: "quickToolbarSettings", readonly: "readonly", saveInterval: "saveInterval", shiftEnterKey: "shiftEnterKey", showCharCount: "showCharCount", showTooltip: "showTooltip", slashMenuSettings: "slashMenuSettings", tableSettings: "tableSettings", toolbarSettings: "toolbarSettings", undoRedoSteps: "undoRedoSteps", undoRedoTimer: "undoRedoTimer", value: "value", valueTemplate: "valueTemplate", width: "width" }, outputs: { actionBegin: "actionBegin", actionComplete: "actionComplete", afterImageDelete: "afterImageDelete", afterMediaDelete: "afterMediaDelete", afterPasteCleanup: "afterPasteCleanup", beforeDialogClose: "beforeDialogClose", beforeDialogOpen: "beforeDialogOpen", beforeFileUpload: "beforeFileUpload", beforeImageDrop: "beforeImageDrop", beforeImageUpload: "beforeImageUpload", beforeMediaDrop: "beforeMediaDrop", beforePasteCleanup: "beforePasteCleanup", beforeQuickToolbarOpen: "beforeQuickToolbarOpen", beforeSanitizeHtml: "beforeSanitizeHtml", blur: "blur", change: "change", created: "created", destroyed: "destroyed", dialogClose: "dialogClose", dialogOpen: "dialogOpen", fileRemoving: "fileRemoving", fileSelected: "fileSelected", fileUploadFailed: "fileUploadFailed", fileUploadSuccess: "fileUploadSuccess", fileUploading: "fileUploading", focus: "focus", imageRemoving: "imageRemoving", imageSelected: "imageSelected", imageUploadFailed: "imageUploadFailed", imageUploadSuccess: "imageUploadSuccess", imageUploading: "imageUploading", quickToolbarClose: "quickToolbarClose", quickToolbarOpen: "quickToolbarOpen", resizeStart: "resizeStart", resizeStop: "resizeStop", resizing: "resizing", selectionChanged: "selectionChanged", slashMenuItemSelect: "slashMenuItemSelect", toolbarClick: "toolbarClick", toolbarStatusUpdate: "toolbarStatusUpdate", updatedToolbarStatus: "updatedToolbarStatus", valueChange: "valueChange" }, providers: [
|
|
184
|
+
{
|
|
185
|
+
provide: NG_VALUE_ACCESSOR,
|
|
186
|
+
useExisting: forwardRef(() => RichTextEditorComponent_1),
|
|
187
|
+
multi: true
|
|
188
|
+
}
|
|
189
|
+
], queries: [{ propertyName: "valueTemplate", first: true, predicate: ["valueTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
190
|
+
__decorate([
|
|
191
|
+
Template()
|
|
192
|
+
], RichTextEditorComponent.prototype, "valueTemplate", void 0);
|
|
193
|
+
RichTextEditorComponent = RichTextEditorComponent_1 = __decorate([
|
|
194
|
+
ComponentMixins([ComponentBase, FormBase])
|
|
195
|
+
], RichTextEditorComponent);
|
|
196
|
+
export { RichTextEditorComponent };
|
|
197
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: RichTextEditorComponent, decorators: [{
|
|
198
|
+
type: Component,
|
|
199
|
+
args: [{
|
|
200
|
+
selector: 'ejs-richtexteditor',
|
|
201
|
+
inputs: inputs,
|
|
202
|
+
outputs: outputs,
|
|
203
|
+
template: '',
|
|
204
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
205
|
+
providers: [
|
|
206
|
+
{
|
|
207
|
+
provide: NG_VALUE_ACCESSOR,
|
|
208
|
+
useExisting: forwardRef(() => RichTextEditorComponent),
|
|
209
|
+
multi: true
|
|
210
|
+
}
|
|
211
|
+
],
|
|
212
|
+
queries: {}
|
|
213
|
+
}]
|
|
214
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { valueTemplate: [{
|
|
215
|
+
type: ContentChild,
|
|
216
|
+
args: ['valueTemplate']
|
|
217
|
+
}] } });
|
|
218
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaHRleHRlZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3JpY2gtdGV4dC1lZGl0b3IvcmljaHRleHRlZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0UsdUJBQXVCLEVBQXFCLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEwsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBK0IsZUFBZSxFQUEwQixRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkosT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFHeEQsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFhLENBQUMsZ0JBQWdCLEVBQUMsaUJBQWlCLEVBQUMsa0JBQWtCLEVBQUMsbUJBQW1CLEVBQUMsVUFBVSxFQUFDLFlBQVksRUFBQyxxQkFBcUIsRUFBQyxlQUFlLEVBQUMsa0JBQWtCLEVBQUMscUJBQXFCLEVBQUMsbUJBQW1CLEVBQUMsY0FBYyxFQUFDLFdBQVcsRUFBQyxjQUFjLEVBQUMsYUFBYSxFQUFDLFNBQVMsRUFBQyxVQUFVLEVBQUMsV0FBVyxFQUFDLFlBQVksRUFBQyxxQkFBcUIsRUFBQyx1QkFBdUIsRUFBQyxXQUFXLEVBQUMsWUFBWSxFQUFDLFVBQVUsRUFBQyxRQUFRLEVBQUMsdUJBQXVCLEVBQUMsV0FBVyxFQUFDLFFBQVEsRUFBQyxnQkFBZ0IsRUFBQyxnQkFBZ0IsRUFBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLHFCQUFxQixFQUFDLHFCQUFxQixFQUFDLHFCQUFxQixFQUFDLFdBQVcsRUFBQyxRQUFRLEVBQUMsV0FBVyxFQUFDLGtCQUFr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b0JBQ2hCLFFBQVEsRUFBRSxFQUFFO29CQUNaLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsd0JBQXdCLENBQUM7NEJBQ3RELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKO29CQUNELE9BQU8sRUFBRSxFQUVSO2lCQUNKOytNQThEVSxhQUFhO3NCQUZuQixZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDb250YWluZXJSZWYsIFZhbHVlUHJvdmlkZXIsIFJlbmRlcmVyMiwgSW5qZWN0b3IsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgZm9yd2FyZFJlZiwgQ29udGVudENoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbXBvbmVudEJhc2UsIElDb21wb25lbnRCYXNlLCBhcHBseU1peGlucywgQ29tcG9uZW50TWl4aW5zLCBQcm9wZXJ0eUNvbGxlY3Rpb25JbmZvLCBGb3JtQmFzZSwgc2V0VmFsdWUgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1iYXNlJztcbmltcG9ydCB7IFJpY2hUZXh0RWRpdG9yIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLXJpY2h0ZXh0ZWRpdG9yJztcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItYmFzZSc7XG5cblxuZXhwb3J0IGNvbnN0IGlucHV0czogc3RyaW5nW10gPSBbJ2F1dG9TYXZlT25JZGxlJywnYmFja2dyb3VuZENvbG9yJywnYnVsbGV0Rm9ybWF0TGlzdCcsJ2NvZGVCbG9ja1NldHRpbmdzJywnY3NzQ2xhc3MnLCdlZGl0b3JNb2RlJywnZW1vamlQaWNrZXJTZXR0aW5ncycsJ2VuYWJsZUF1dG9VcmwnLCdlbmFibGVIdG1sRW5jb2RlJywnZW5hYmxlSHRtbFNhbml0aXplcicsJ2VuYWJsZVBlcnNpc3RlbmNlJywnZW5hYmxlUmVzaXplJywnZW5hYmxlUnRsJywnZW5hYmxlVGFiS2V5JywnZW5hYmxlWGh0bWwnLCdlbmFibGVkJywnZW50ZXJLZXknLCdleHBvcnRQZGYnLCdleHBvcnRXb3JkJywnZmlsZU1hbmFnZXJTZXR0aW5ncycsJ2Zsb2F0aW5nVG9vbGJhck9mZnNldCcsJ2ZvbnRDb2xvcicsJ2ZvbnRGYW1pbHknLCdmb250U2l6ZScsJ2Zvcm1hdCcsJ2Zvcm1hdFBhaW50ZXJTZXR0aW5ncycsJ2Zvcm1hdHRlcicsJ2hlaWdodCcsJ2h0bWxBdHRyaWJ1dGVzJywnaWZyYW1lU2V0dGluZ3MnLCdpbXBvcnRXb3JkJywnaW5saW5lTW9kZScsJ2luc2VydEF1ZGlvU2V0dGluZ3MnLCdpbnNlcnRJbWFnZVNldHRpbmdzJywnaW5zZXJ0VmlkZW9TZXR0aW5ncycsJ2tleUNvbmZpZycsJ2xvY2FsZScsJ21heExlbmd0aCcsJ251bWJlckZvcm1hdExpc3QnLCdwYXN0ZUNsZWFudXBTZXR0aW5ncycsJ3BsYWNlaG9sZGVyJywncXVpY2tUb29sYmFyU2V0dGluZ3MnLCdyZWFkb25seScsJ3NhdmVJbnRlcnZhbCcsJ3NoaWZ0RW50ZXJLZXknLCdzaG93Q2hhckNvdW50Jywnc2hvd1Rvb2x0aXAnLCdzbGFzaE1lbnVTZXR0aW5ncycsJ3RhYmxlU2V0dGluZ3MnLCd0b29sYmFyU2V0dGluZ3MnLCd1bmRvUmVkb1N0ZXBzJywndW5kb1JlZG9UaW1lcicsJ3ZhbHVlJywndmFsdWVUZW1wbGF0ZScsJ3dpZHRoJ107XG5leHBvcnQgY29uc3Qgb3V0cHV0czogc3RyaW5nW10gPSBbJ2FjdGlvbkJlZ2luJywnYWN0aW9uQ29tcGxldGUnLCdhZnRlckltYWdlRGVsZXRlJywnYWZ0ZXJNZWRpYURlbGV0ZScsJ2FmdGVyUGFzdGVDbGVhbnVwJywnYmVmb3JlRGlhbG9nQ2xvc2UnLCdiZWZvcmVEaWFsb2dPcGVuJywnYmVmb3JlRmlsZVVwbG9hZCcsJ2JlZm9yZUltYWdlRHJvcCcsJ2JlZm9yZUltYWdlVXBsb2FkJywnYmVmb3JlTWVkaWFEcm9wJywnYmVmb3JlUGFzdGVDbGVhbnVwJywnYmVmb3JlUXVpY2tUb29sYmFyT3BlbicsJ2JlZm9yZVNhbml0aXplSHRtbCcsJ2JsdXInLCdjaGFuZ2UnLCdjcmVhdGVkJywnZGVzdHJveWVkJywnZGlhbG9nQ2xvc2UnLCdkaWFsb2dPcGVuJywnZmlsZVJlbW92aW5nJywnZmlsZVNlbGVjdGVkJywnZmlsZVVwbG9hZEZhaWxlZCcsJ2ZpbGVVcGxvYWRTdWNjZXNzJywnZmlsZVVwbG9hZGluZycsJ2ZvY3VzJywnaW1hZ2VSZW1vdmluZycsJ2ltYWdlU2VsZWN0ZWQnLCdpbWFnZVVwbG9hZEZhaWxlZCcsJ2ltYWdlVXBsb2FkU3VjY2VzcycsJ2ltYWdlVXBsb2FkaW5nJywncXVpY2tUb29sYmFyQ2xvc2UnLCdxdWlja1Rvb2xiYXJPcGVuJywncmVzaXplU3RhcnQnLCdyZXNpemVTdG9wJywncmVzaXppbmcnLCdzZWxlY3Rpb25DaGFuZ2VkJywnc2xhc2hNZW51SXRlbVNlbGVjdCcsJ3Rvb2xiYXJDbGljaycsJ3Rvb2xiYXJTdGF0dXNVcGRhdGUnLCd1cGRhdGVkVG9vbGJhclN0YXR1cycsJ3ZhbHVlQ2hhbmdlJ107XG5leHBvcnQgY29uc3QgdHdvV2F5czogc3RyaW5nW10gPSBbJ3ZhbHVlJ107XG5cbi8qKlxuICogYGVqcy1yaWNodGV4dGVkaXRvcmAgcmVwcmVzZW50cyB0aGUgQW5ndWxhciByaWNodGV4dGVkaXRvciBDb21wb25lbnQuXG4gKiBgYGBodG1sXG4gKiA8ZWpzLXJpY2h0ZXh0ZWRpdG9yPjwvZWpzLXJpY2h0ZXh0ZWRpdG9yPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZWpzLXJpY2h0ZXh0ZWRpdG9yJyxcbiAgICBpbnB1dHM6IGlucHV0cyxcbiAgICBvdXRwdXRzOiBvdXRwdXRzLFxuICAgIHRlbXBsYXRlOiAnJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBSaWNoVGV4dEVkaXRvckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBxdWVyaWVzOiB7XG5cbiAgICB9XG59KVxuQENvbXBvbmVudE1peGlucyhbQ29tcG9uZW50QmFzZSwgRm9ybUJhc2VdKVxuZXhwb3J0IGNsYXNzIFJpY2hUZXh0RWRpdG9yQ29tcG9uZW50IGV4dGVuZHMgUmljaFRleHRFZGl0b3IgaW1wbGVtZW50cyBJQ29tcG9uZW50QmFzZSB7XG4gICAgcHVibGljIGZvcm1Db21wQ29udGV4dCA6IGFueTtcbiAgICBwdWJsaWMgZm9ybUNvbnRleHQgOiBhbnk7XG4gICAgcHVibGljIHRhZ09iamVjdHM6IGFueTtcblx0YWN0aW9uQmVnaW46IGFueTtcblx0YWN0aW9uQ29tcGxldGU6IGFueTtcblx0YWZ0ZXJJbWFnZURlbGV0ZTogYW55O1xuXHRhZnRlck1lZGlhRGVsZXRlOiBhbnk7XG5cdGFmdGVyUGFzdGVDbGVhbnVwOiBhbnk7XG5cdGJlZm9yZURpYWxvZ0Nsb3NlOiBhbnk7XG5cdGJlZm9yZURpYWxvZ09wZW46IGFueTtcblx0YmVmb3JlRmlsZVVwbG9hZDogYW55O1xuXHRiZWZvcmVJbWFnZURyb3A6IGFueTtcblx0YmVmb3JlSW1hZ2VVcGxvYWQ6IGFueTtcblx0YmVmb3JlTWVkaWFEcm9wOiBhbnk7XG5cdGJlZm9yZVBhc3RlQ2xlYW51cDogYW55O1xuXHRiZWZvcmVRdWlja1Rvb2xiYXJPcGVuOiBhbnk7XG5cdGJlZm9yZVNhbml0aXplSHRtbDogYW55O1xuXHRibHVyOiBhbnk7XG5cdGNoYW5nZTogYW55O1xuXHRjcmVhdGVkOiBhbnk7XG5cdGRlc3Ryb3llZDogYW55O1xuXHRkaWFsb2dDbG9zZTogYW55O1xuXHRkaWFsb2dPcGVuOiBhbnk7XG5cdGZpbGVSZW1vdmluZzogYW55O1xuXHRmaWxlU2VsZWN0ZWQ6IGFueTtcblx0ZmlsZVVwbG9hZEZhaWxlZDogYW55O1xuXHRmaWxlVXBsb2FkU3VjY2VzczogYW55O1xuXHRmaWxlVXBsb2FkaW5nOiBhbnk7XG5cdGZvY3VzOiBhbnk7XG5cdGltYWdlUmVtb3Zpbmc6IGFueTtcblx0aW1hZ2VTZWxlY3RlZDogYW55O1xuXHRpbWFnZVVwbG9hZEZhaWxlZDogYW55O1xuXHRpbWFnZVVwbG9hZFN1Y2Nlc3M6IGFueTtcblx0aW1hZ2VVcGxvYWRpbmc6IGFueTtcblx0cXVpY2tUb29sYmFyQ2xvc2U6IGFueTtcblx0cXVpY2tUb29sYmFyT3BlbjogYW55O1xuXHRyZXNpemVTdGFydDogYW55O1xuXHRyZXNpemVTdG9wOiBhbnk7XG5cdHJlc2l6aW5nOiBhbnk7XG5cdHNlbGVjdGlvbkNoYW5nZWQ6IGFueTtcblx0c2xhc2hNZW51SXRlbVNlbGVjdDogYW55O1xuXHR0b29sYmFyQ2xpY2s6IGFueTtcblx0dG9vbGJhclN0YXR1c1VwZGF0ZTogYW55O1xuXHR1cGRhdGVkVG9vbGJhclN0YXR1czogYW55O1xuXHRwdWJsaWMgdmFsdWVDaGFuZ2U6IGFueTtcblxuXG4gICAgLyoqIFxuICAgICAqIEFjY2VwdHMgYSB0ZW1wbGF0ZSBkZXNpZ24gYW5kIGFzc2lnbnMgaXQgYXMgdGhlIGNvbnRlbnQgb2YgdGhlIFJpY2ggVGV4dCBFZGl0b3IuIFxuICAgICAqIFRoZSBidWlsdC1pbiB0ZW1wbGF0ZSBlbmdpbmUgcHJvdmlkZXMgb3B0aW9ucyB0byBjb21waWxlIGEgdGVtcGxhdGUgc3RyaW5nIGludG8gYW4gZXhlY3V0YWJsZSBmdW5jdGlvbi4gXG4gICAgICogRm9yIGV4YW1wbGUsIGl0IHN1cHBvcnRzIGV4cHJlc3Npb24gZXZhbHVhdGlvbiBzaW1pbGFyIHRvIEVTNiB0ZW1wbGF0ZSBzdHJpbmcgbGl0ZXJhbHMuXG4gICAgICogXG4gICAgICogeyUgY29kZUJsb2NrIHNyYz0ncmljaC10ZXh0LWVkaXRvci92YWx1ZS10ZW1wbGF0ZS9pbmRleC5tZCcgJX17JSBlbmRjb2RlQmxvY2sgJX1cbiAgICAgKiAgICAgXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3B0eXBlIHN0cmluZ1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3ZhbHVlVGVtcGxhdGUnKVxuICAgIEBUZW1wbGF0ZSgpXG4gICAgcHVibGljIHZhbHVlVGVtcGxhdGU6IGFueTtcblxuICAgIHByaXZhdGUgc2tpcEZyb21FdmVudDpib29sZWFuID0gdHJ1ZTtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nRWxlOiBFbGVtZW50UmVmLCBwcml2YXRlIHNyZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6Vmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLm5nRWxlLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzID0gdGhpcy5pbmplY3RlZE1vZHVsZXMgfHwgW107XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdSaWNoVGV4dEVkaXRvclRvb2xiYXInKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ1JpY2hUZXh0RWRpdG9yTGluaycpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnUmljaFRleHRFZGl0b3JJbWFnZScpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnUmljaFRleHRFZGl0b3JJbXBvcnRFeHBvcnQnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ1JpY2hUZXh0RWRpdG9yQXVkaW8nKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ1JpY2hUZXh0RWRpdG9yVmlkZW8nKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ1JpY2hUZXh0RWRpdG9yQ291bnQnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ1JpY2hUZXh0RWRpdG9yUXVpY2tUb29sYmFyJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdSaWNoVGV4dEVkaXRvckh0bWxFZGl0b3InKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ1JpY2hUZXh0RWRpdG9yTWFya2Rvd25FZGl0b3InKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ1JpY2hUZXh0RWRpdG9yVGFibGUnKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cciAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbW9kID0gdGhpcy5pbmplY3Rvci5nZXQoJ1JpY2hUZXh0RWRpdG9yUGFzdGVDbGVhbnVwJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdSaWNoVGV4dEVkaXRvclJlc2l6ZScpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnUmljaFRleHRFZGl0b3JGaWxlTWFuYWdlcicpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnUmljaFRleHRFZGl0b3JGb3JtYXRQYWludGVyJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdSaWNoVGV4dEVkaXRvckVtb2ppUGlja2VyJyk7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5pbmplY3RlZE1vZHVsZXMuaW5kZXhPZihtb2QpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdGVkTW9kdWxlcy5wdXNoKG1vZClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHsgfVxuXHIgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IG1vZCA9IHRoaXMuaW5qZWN0b3IuZ2V0KCdSaWNoVGV4dEVkaXRvclNsYXNoTWVudScpO1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5qZWN0ZWRNb2R1bGVzLmluZGV4T2YobW9kKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3RlZE1vZHVsZXMucHVzaChtb2QpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCB7IH1cblxyICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBtb2QgPSB0aGlzLmluamVjdG9yLmdldCgnUmljaFRleHRFZGl0b3JDb2RlQmxvY2snKTtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmluamVjdGVkTW9kdWxlcy5pbmRleE9mKG1vZCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWRNb2R1bGVzLnB1c2gobW9kKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggeyB9XG5cclxuICAgICAgICB0aGlzLnJlZ2lzdGVyRXZlbnRzKG91dHB1dHMpO1xuICAgICAgICB0aGlzLmFkZFR3b1dheS5jYWxsKHRoaXMsIHR3b1dheXMpO1xuICAgICAgICBzZXRWYWx1ZSgnY3VycmVudEluc3RhbmNlJywgdGhpcywgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgdGhpcy5mb3JtQ29udGV4dCAgPSBuZXcgRm9ybUJhc2UoKTtcbiAgICAgICAgdGhpcy5mb3JtQ29tcENvbnRleHQgID0gbmV3IENvbXBvbmVudEJhc2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShyZWdpc3RlckZ1bmN0aW9uOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKHJlZ2lzdGVyRnVuY3Rpb246ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgfVxuICAgIFxuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmZvcm1Db21wQ29udGV4dC5uZ09uSW5pdCh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1Db250ZXh0Lm5nQWZ0ZXJWaWV3SW5pdCh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybUNvbXBDb250ZXh0Lm5nT25EZXN0cm95KHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIFxuICAgICAgICB0aGlzLmZvcm1Db21wQ29udGV4dC5uZ0FmdGVyQ29udGVudENoZWNrZWQodGhpcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyRXZlbnRzOiAoZXZlbnRMaXN0OiBzdHJpbmdbXSkgPT4gdm9pZDtcbiAgICBwdWJsaWMgYWRkVHdvV2F5OiAocHJvcExpc3Q6IHN0cmluZ1tdKSA9PiB2b2lkO1xufVxuXG4iXX0=
|