@firestitch/html-editor 15.0.0 → 16.0.0
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/app/modules/html-editor/components/html-editor/html-editor.component.d.ts +1 -1
- package/app/modules/html-renderer/components/html-renderer/html-renderer.component.d.ts +1 -1
- package/esm2022/app/modules/html-editor/classes/plugin.mjs +7 -0
- package/esm2022/app/modules/html-editor/components/html-editor/html-editor.component.mjs +518 -0
- package/{esm2020 → esm2022}/app/modules/html-editor/directives/html-editor-container.directive.mjs +4 -4
- package/{esm2020 → esm2022}/app/modules/html-editor/fs-html-editor.module.mjs +13 -13
- package/esm2022/app/modules/html-editor/plugins/checklist.plugin.mjs +40 -0
- package/esm2022/app/modules/html-editor/plugins/code.plugin.mjs +68 -0
- package/esm2022/app/modules/html-editor/plugins/mention.plugin.mjs +92 -0
- package/esm2022/app/modules/html-editor/plugins/realtime.plugin.mjs +17 -0
- package/esm2022/app/modules/html-editor/plugins/screen-record.plugin.mjs +94 -0
- package/esm2022/app/modules/html-editor/services/froala-loader.service.mjs +93 -0
- package/esm2022/app/modules/html-renderer/components/html-renderer/html-renderer.component.mjs +27 -0
- package/{esm2020 → esm2022}/app/modules/html-renderer/fs-html-renderer.module.mjs +5 -5
- package/{fesm2020 → fesm2022}/firestitch-html-editor.mjs +95 -71
- package/{fesm2020 → fesm2022}/firestitch-html-editor.mjs.map +1 -1
- package/package.json +5 -11
- package/esm2020/app/modules/html-editor/classes/plugin.mjs +0 -5
- package/esm2020/app/modules/html-editor/components/html-editor/html-editor.component.mjs +0 -509
- package/esm2020/app/modules/html-editor/plugins/checklist.plugin.mjs +0 -39
- package/esm2020/app/modules/html-editor/plugins/code.plugin.mjs +0 -67
- package/esm2020/app/modules/html-editor/plugins/mention.plugin.mjs +0 -90
- package/esm2020/app/modules/html-editor/plugins/realtime.plugin.mjs +0 -16
- package/esm2020/app/modules/html-editor/plugins/screen-record.plugin.mjs +0 -92
- package/esm2020/app/modules/html-editor/services/froala-loader.service.mjs +0 -90
- package/esm2020/app/modules/html-renderer/components/html-renderer/html-renderer.component.mjs +0 -24
- package/fesm2015/firestitch-html-editor.mjs +0 -1043
- package/fesm2015/firestitch-html-editor.mjs.map +0 -1
- /package/{esm2020 → esm2022}/app/modules/html-editor/consts/paragraph-buttons.const.mjs +0 -0
- /package/{esm2020 → esm2022}/app/modules/html-editor/consts/rich-buttons.const.mjs +0 -0
- /package/{esm2020 → esm2022}/app/modules/html-editor/consts/text-buttons.const.mjs +0 -0
- /package/{esm2020 → esm2022}/app/modules/html-editor/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/modules/html-editor/enums/default-plugin.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/app/modules/html-editor/injects/config.inject.mjs +0 -0
- /package/{esm2020 → esm2022}/app/modules/html-editor/interfaces/html-editor-config.mjs +0 -0
- /package/{esm2020 → esm2022}/app/modules/html-editor/interfaces/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/modules/html-editor/interfaces/plugin-config.mjs +0 -0
- /package/{esm2020 → esm2022}/app/modules/html-editor/interfaces/toolbar-button.mjs +0 -0
- /package/{esm2020 → esm2022}/app/modules/html-editor/plugins/configs/mention-plugin.config.mjs +0 -0
- /package/{esm2020 → esm2022}/app/modules/html-editor/plugins/configs/screen-record-plugin.config.mjs +0 -0
- /package/{esm2020 → esm2022}/firestitch-html-editor.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
package/{esm2020 → esm2022}/app/modules/html-editor/directives/html-editor-container.directive.mjs
RENAMED
|
@@ -4,11 +4,11 @@ export class FsHtmlEditorContainerDirective {
|
|
|
4
4
|
static ngTemplateContextGuard(dir, ctx) {
|
|
5
5
|
return true;
|
|
6
6
|
}
|
|
7
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsHtmlEditorContainerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: FsHtmlEditorContainerDirective, selector: "[fsHtmlEditorContainer]", ngImport: i0 });
|
|
7
9
|
}
|
|
8
|
-
|
|
9
|
-
FsHtmlEditorContainerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: FsHtmlEditorContainerDirective, selector: "[fsHtmlEditorContainer]", ngImport: i0 });
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsHtmlEditorContainerDirective, decorators: [{
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsHtmlEditorContainerDirective, decorators: [{
|
|
11
11
|
type: Directive,
|
|
12
12
|
args: [{ selector: '[fsHtmlEditorContainer]' }]
|
|
13
13
|
}] });
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1lZGl0b3ItY29udGFpbmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9odG1sLWVkaXRvci9kaXJlY3RpdmVzL2h0bWwtZWRpdG9yLWNvbnRhaW5lci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUFHdkQsTUFBTSxPQUFPLDhCQUE4QjtJQUNsQyxNQUFNLENBQUMsc0JBQXNCLENBQ2xDLEdBQW1DLEVBQ25DLEdBQVk7UUFJWixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7d0dBUlUsOEJBQThCOzRGQUE5Qiw4QkFBOEI7OzRGQUE5Qiw4QkFBOEI7a0JBRDFDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUseUJBQXlCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tmc0h0bWxFZGl0b3JDb250YWluZXJdJyB9KVxuZXhwb3J0IGNsYXNzIEZzSHRtbEVkaXRvckNvbnRhaW5lckRpcmVjdGl2ZSB7XG4gIHB1YmxpYyBzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZChcbiAgICBkaXI6IEZzSHRtbEVkaXRvckNvbnRhaW5lckRpcmVjdGl2ZSxcbiAgICBjdHg6IHVua25vd24sXG4gICk6IGN0eCBpcyB7XG4gICAgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIH0ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=
|
|
@@ -21,19 +21,19 @@ export class FsHtmlEditorModule {
|
|
|
21
21
|
],
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsHtmlEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
25
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: FsHtmlEditorModule, declarations: [FsHtmlEditorComponent,
|
|
26
|
+
FsHtmlEditorContainerDirective], imports: [CommonModule,
|
|
27
|
+
FsSkeletonModule,
|
|
28
|
+
FsLabelModule,
|
|
29
|
+
FsHtmlRendererModule], exports: [FsHtmlEditorComponent,
|
|
30
|
+
FsHtmlEditorContainerDirective] });
|
|
31
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsHtmlEditorModule, imports: [CommonModule,
|
|
32
|
+
FsSkeletonModule,
|
|
33
|
+
FsLabelModule,
|
|
34
|
+
FsHtmlRendererModule] });
|
|
24
35
|
}
|
|
25
|
-
|
|
26
|
-
FsHtmlEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: FsHtmlEditorModule, declarations: [FsHtmlEditorComponent,
|
|
27
|
-
FsHtmlEditorContainerDirective], imports: [CommonModule,
|
|
28
|
-
FsSkeletonModule,
|
|
29
|
-
FsLabelModule,
|
|
30
|
-
FsHtmlRendererModule], exports: [FsHtmlEditorComponent,
|
|
31
|
-
FsHtmlEditorContainerDirective] });
|
|
32
|
-
FsHtmlEditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsHtmlEditorModule, imports: [CommonModule,
|
|
33
|
-
FsSkeletonModule,
|
|
34
|
-
FsLabelModule,
|
|
35
|
-
FsHtmlRendererModule] });
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsHtmlEditorModule, decorators: [{
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsHtmlEditorModule, decorators: [{
|
|
37
37
|
type: NgModule,
|
|
38
38
|
args: [{
|
|
39
39
|
imports: [
|
|
@@ -72,4 +72,4 @@ export function FsHtmlEditorConfigFactory(config) {
|
|
|
72
72
|
...config,
|
|
73
73
|
};
|
|
74
74
|
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtaHRtbC1lZGl0b3IubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2ZzLWh0bWwtZWRpdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFxQi9GLE1BQU0sT0FBTyxrQkFBa0I7SUFDdEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUE2QixFQUFFO1FBQ25ELE9BQU87WUFDTCxRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLFNBQVMsRUFBRTtnQkFDVCxFQUFFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO2dCQUM1RDtvQkFDRSxPQUFPLEVBQUUscUJBQXFCO29CQUM5QixVQUFVLEVBQUUseUJBQXlCO29CQUNyQyxJQUFJLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztpQkFDdEM7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO3dHQWJVLGtCQUFrQjt5R0FBbEIsa0JBQWtCLGlCQUozQixxQkFBcUI7WUFDckIsOEJBQThCLGFBWjlCLFlBQVk7WUFFWixnQkFBZ0I7WUFDaEIsYUFBYTtZQUNiLG9CQUFvQixhQUdwQixxQkFBcUI7WUFDckIsOEJBQThCO3lHQU9yQixrQkFBa0IsWUFmM0IsWUFBWTtZQUVaLGdCQUFnQjtZQUNoQixhQUFhO1lBQ2Isb0JBQW9COzs0RkFXWCxrQkFBa0I7a0JBakI5QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUVaLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixvQkFBb0I7cUJBQ3JCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxxQkFBcUI7d0JBQ3JCLDhCQUE4QjtxQkFDL0I7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLHFCQUFxQjt3QkFDckIsOEJBQThCO3FCQUMvQjtpQkFDRjs7QUFpQkQsTUFBTSxVQUFVLHlCQUF5QixDQUFDLE1BQTBCO0lBQ2xFLE9BQU87UUFDTCxhQUFhLEVBQUU7Ozs7Ozs7Ozs7Ozs7O1NBY2Q7UUFDRCxHQUFHLE1BQU07S0FDVixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBGc0xhYmVsTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbGFiZWwnO1xuaW1wb3J0IHsgRnNTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL3NrZWxldG9uJztcblxuaW1wb3J0IHsgRnNIdG1sUmVuZGVyZXJNb2R1bGUgfSBmcm9tICcuLi9odG1sLXJlbmRlcmVyL2ZzLWh0bWwtcmVuZGVyZXIubW9kdWxlJztcblxuaW1wb3J0IHsgRnNIdG1sRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2h0bWwtZWRpdG9yL2h0bWwtZWRpdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGc0h0bWxFZGl0b3JDb250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgRnJvYWxhUGx1Z2luIH0gZnJvbSAnLi9lbnVtcy9kZWZhdWx0LXBsdWdpbi5lbnVtJztcbmltcG9ydCB7IEZTX0hUTUxfRURJVE9SX0NPTkZJRywgRlNfSFRNTF9FRElUT1JfREVGQVVMVF9DT05GSUcgfSBmcm9tICcuL2luamVjdHMvY29uZmlnLmluamVjdCc7XG5pbXBvcnQgeyBGc0h0bWxFZGl0b3JDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvaHRtbC1lZGl0b3ItY29uZmlnJztcblxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuXG4gICAgRnNTa2VsZXRvbk1vZHVsZSxcbiAgICBGc0xhYmVsTW9kdWxlLFxuICAgIEZzSHRtbFJlbmRlcmVyTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRnNIdG1sRWRpdG9yQ29tcG9uZW50LFxuICAgIEZzSHRtbEVkaXRvckNvbnRhaW5lckRpcmVjdGl2ZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRnNIdG1sRWRpdG9yQ29tcG9uZW50LFxuICAgIEZzSHRtbEVkaXRvckNvbnRhaW5lckRpcmVjdGl2ZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNIdG1sRWRpdG9yTW9kdWxlIHtcbiAgcHVibGljIHN0YXRpYyBmb3JSb290KGNvbmZpZzogRnNIdG1sRWRpdG9yQ29uZmlnID0ge30pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEZzSHRtbEVkaXRvck1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogRnNIdG1sRWRpdG9yTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogRlNfSFRNTF9FRElUT1JfREVGQVVMVF9DT05GSUcsIHVzZVZhbHVlOiBjb25maWcgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEZTX0hUTUxfRURJVE9SX0NPTkZJRyxcbiAgICAgICAgICB1c2VGYWN0b3J5OiBGc0h0bWxFZGl0b3JDb25maWdGYWN0b3J5LFxuICAgICAgICAgIGRlcHM6IFtGU19IVE1MX0VESVRPUl9ERUZBVUxUX0NPTkZJR10sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEZzSHRtbEVkaXRvckNvbmZpZ0ZhY3RvcnkoY29uZmlnOiBGc0h0bWxFZGl0b3JDb25maWcpIHtcbiAgcmV0dXJuIHtcbiAgICBmcm9hbGFQbHVnaW5zOiBbXG4gICAgICBGcm9hbGFQbHVnaW4uQWxpZ24sXG4gICAgICBGcm9hbGFQbHVnaW4uQ29sb3JzLFxuICAgICAgRnJvYWxhUGx1Z2luLkltYWdlLFxuICAgICAgRnJvYWxhUGx1Z2luLkxpbmssXG4gICAgICBGcm9hbGFQbHVnaW4uTGlzdHMsXG4gICAgICBGcm9hbGFQbHVnaW4uUGFyYWdyYXBoRm9ybWF0LFxuICAgICAgRnJvYWxhUGx1Z2luLlF1b3RlLFxuICAgICAgRnJvYWxhUGx1Z2luLlRhYmxlLFxuICAgICAgRnJvYWxhUGx1Z2luLlVybCxcbiAgICAgIEZyb2FsYVBsdWdpbi5WaWRlbyxcbiAgICAgIEZyb2FsYVBsdWdpbi5EcmFnZ2FibGUsXG4gICAgICBGcm9hbGFQbHVnaW4uRm9udFNpemUsXG4gICAgICBGcm9hbGFQbHVnaW4uTGluZUhlaWdodCxcbiAgICBdLFxuICAgIC4uLmNvbmZpZyxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Plugin } from '../classes/plugin';
|
|
2
|
+
export class ChecklistPlugin extends Plugin {
|
|
3
|
+
config;
|
|
4
|
+
constructor(config = { name: 'checklist' }) {
|
|
5
|
+
super();
|
|
6
|
+
this.config = config;
|
|
7
|
+
this.config = {
|
|
8
|
+
...config,
|
|
9
|
+
name: 'checklist',
|
|
10
|
+
buttons: [
|
|
11
|
+
{
|
|
12
|
+
name: 'checklist',
|
|
13
|
+
svgPath: 'M8.4,10.3l-1.2,1.2l4,4L20,6.7l-1.2-1.2l-7.6,7.6L8.4,10.3z M18.2,18.2H5.8V5.8h8.9V4H5.8C4.8,4,4,4.8,4,5.8v12.4c0,1,0.8,1.8,1.8,1.8h12.4c1,0,1.8-0.8,1.8-1.8v-7.1h-1.8V18.2z',
|
|
14
|
+
click: (editor) => {
|
|
15
|
+
editor.html.insert('<ul class="checklist"><li></li></ul>');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
initialize() {
|
|
22
|
+
this.editor.events.on('click', (e) => {
|
|
23
|
+
const li = e.target;
|
|
24
|
+
if (li.nodeName === 'LI' && e.offsetX < 0) {
|
|
25
|
+
const items = [li, ...li.querySelectorAll('li')];
|
|
26
|
+
if (li.classList.contains('checked')) {
|
|
27
|
+
items.forEach((item) => {
|
|
28
|
+
item.classList.remove('checked');
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
items.forEach((item) => {
|
|
33
|
+
item.classList.add('checked');
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}, false);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tsaXN0LnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9odG1sLWVkaXRvci9wbHVnaW5zL2NoZWNrbGlzdC5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSzNDLE1BQU0sT0FBTyxlQUFnQixTQUFRLE1BQU07SUFFZjtJQUExQixZQUEwQixTQUF1QixFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7UUFDcEUsS0FBSyxFQUFFLENBQUM7UUFEZ0IsV0FBTSxHQUFOLE1BQU0sQ0FBc0M7UUFFcEUsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLEdBQUcsTUFBTTtZQUNULElBQUksRUFBRSxXQUFXO1lBQ2pCLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsV0FBVztvQkFDakIsT0FBTyxFQUFFLDRLQUE0SztvQkFDckwsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7d0JBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7b0JBQzdELENBQUM7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRU0sVUFBVTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNuQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ3BCLElBQUksRUFBRSxDQUFDLFFBQVEsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUU7Z0JBRXpDLE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBRWpELElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQ3BDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTt3QkFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ25DLENBQUMsQ0FBQyxDQUFDO2lCQUNKO3FCQUFNO29CQUNMLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTt3QkFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ2hDLENBQUMsQ0FBQyxDQUFDO2lCQUNKO2FBQ0Y7UUFFSCxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDWixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbHVnaW4gfSBmcm9tICcuLi9jbGFzc2VzL3BsdWdpbic7XG5cbmltcG9ydCB7IFBsdWdpbkNvbmZpZyB9IGZyb20gJy4vLi4vaW50ZXJmYWNlcy9wbHVnaW4tY29uZmlnJztcblxuXG5leHBvcnQgY2xhc3MgQ2hlY2tsaXN0UGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIGNvbmZpZzogUGx1Z2luQ29uZmlnID0geyBuYW1lOiAnY2hlY2tsaXN0JyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIG5hbWU6ICdjaGVja2xpc3QnLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2NoZWNrbGlzdCcsXG4gICAgICAgICAgc3ZnUGF0aDogJ004LjQsMTAuM2wtMS4yLDEuMmw0LDRMMjAsNi43bC0xLjItMS4ybC03LjYsNy42TDguNCwxMC4zeiBNMTguMiwxOC4ySDUuOFY1LjhoOC45VjRINS44QzQuOCw0LDQsNC44LDQsNS44djEyLjRjMCwxLDAuOCwxLjgsMS44LDEuOGgxMi40YzEsMCwxLjgtMC44LDEuOC0xLjh2LTcuMWgtMS44VjE4LjJ6JyxcbiAgICAgICAgICBjbGljazogKGVkaXRvcikgPT4ge1xuICAgICAgICAgICAgZWRpdG9yLmh0bWwuaW5zZXJ0KCc8dWwgY2xhc3M9XCJjaGVja2xpc3RcIj48bGk+PC9saT48L3VsPicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZSgpIHtcbiAgICB0aGlzLmVkaXRvci5ldmVudHMub24oJ2NsaWNrJywgKGUpID0+IHtcbiAgICAgIGNvbnN0IGxpID0gZS50YXJnZXQ7XG4gICAgICBpZiAobGkubm9kZU5hbWUgPT09ICdMSScgJiYgZS5vZmZzZXRYIDwgMCkge1xuXG4gICAgICAgIGNvbnN0IGl0ZW1zID0gW2xpLCAuLi5saS5xdWVyeVNlbGVjdG9yQWxsKCdsaScpXTtcblxuICAgICAgICBpZiAobGkuY2xhc3NMaXN0LmNvbnRhaW5zKCdjaGVja2VkJykpIHtcbiAgICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpdGVtLmNsYXNzTGlzdC5yZW1vdmUoJ2NoZWNrZWQnKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpdGVtLmNsYXNzTGlzdC5hZGQoJ2NoZWNrZWQnKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfSwgZmFsc2UpO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Plugin } from '../classes/plugin';
|
|
2
|
+
export class CodePlugin extends Plugin {
|
|
3
|
+
config;
|
|
4
|
+
constructor(config = { name: 'code' }) {
|
|
5
|
+
super();
|
|
6
|
+
this.config = config;
|
|
7
|
+
this.config = {
|
|
8
|
+
...config,
|
|
9
|
+
name: 'code',
|
|
10
|
+
buttons: [
|
|
11
|
+
{
|
|
12
|
+
name: 'code',
|
|
13
|
+
svgPath: 'M8.9,7.3L4.2,12l4.7,4.7l1.1-1.1L6.4,12L10,8.4L8.9,7.3z M15.1,7.3L14,8.4l3.6,3.6L14,15.6l1.1,1.1l4.7-4.7L15.1,7.3z',
|
|
14
|
+
click: (editor) => {
|
|
15
|
+
const node = editor.selection.get();
|
|
16
|
+
const codeEl = this._getCodeEl(node.baseNode);
|
|
17
|
+
if (codeEl) {
|
|
18
|
+
codeEl.classList.remove('code');
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
editor.html.insert('<p class="code">' + editor.selection.get().toString().replace(/\n{1,}/g, '<br>') + '</p>');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
initialize() {
|
|
29
|
+
this.editor.events.on('keydown', (e) => {
|
|
30
|
+
if (e.keyCode === 13) {
|
|
31
|
+
const selection = this.editor.selection.get();
|
|
32
|
+
if (selection && this._getCodeEl(selection.baseNode)) {
|
|
33
|
+
e.preventDefault();
|
|
34
|
+
e.stopPropagation();
|
|
35
|
+
e.stopImmediatePropagation();
|
|
36
|
+
let br = '<br>';
|
|
37
|
+
const base = selection.baseNode;
|
|
38
|
+
if (base.nodeName === '#text' && selection.baseOffset === base.length) {
|
|
39
|
+
if (!(base.nextSibling && base.nextSibling.nodeName === 'BR')) {
|
|
40
|
+
br += '<br>';
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
const el = Array.from(base.childNodes).splice(selection.baseOffset - 1, 1).pop();
|
|
45
|
+
if (el && el.nodeName !== 'BR') {
|
|
46
|
+
br += '<br>';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
this.editor.html.insert(br);
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}, true);
|
|
54
|
+
}
|
|
55
|
+
destroy() { }
|
|
56
|
+
_getCodeEl(el) {
|
|
57
|
+
if (el) {
|
|
58
|
+
if (el.classList && el.classList.contains('code')) {
|
|
59
|
+
return el;
|
|
60
|
+
}
|
|
61
|
+
if (el.parentElement) {
|
|
62
|
+
return this._getCodeEl(el.parentElement);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvaHRtbC1lZGl0b3IvcGx1Z2lucy9jb2RlLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFLM0MsTUFBTSxPQUFPLFVBQVcsU0FBUSxNQUFNO0lBRVY7SUFBMUIsWUFBMEIsU0FBdUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1FBQy9ELEtBQUssRUFBRSxDQUFDO1FBRGdCLFdBQU0sR0FBTixNQUFNLENBQWlDO1FBRS9ELElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixHQUFHLE1BQU07WUFDVCxJQUFJLEVBQUUsTUFBTTtZQUNaLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsTUFBTTtvQkFDWixPQUFPLEVBQUUsbUhBQW1IO29CQUM1SCxLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTt3QkFDaEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQzlDLElBQUksTUFBTSxFQUFFOzRCQUNWLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3lCQUNqQzs2QkFBTTs0QkFDTCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7eUJBQy9HO29CQUNILENBQUM7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRU0sVUFBVTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEtBQUssRUFBRSxFQUFFO2dCQUNwQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFFOUMsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQ3BELENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDbkIsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUNwQixDQUFDLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztvQkFDN0IsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDO29CQUNoQixNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDO29CQUNoQyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssT0FBTyxJQUFJLFNBQVMsQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRTt3QkFFckUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsRUFBRTs0QkFDN0QsRUFBRSxJQUFJLE1BQU0sQ0FBQzt5QkFDZDtxQkFDRjt5QkFBTTt3QkFDTCxNQUFNLEVBQUUsR0FBUSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ3RGLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFOzRCQUM5QixFQUFFLElBQUksTUFBTSxDQUFDO3lCQUNkO3FCQUNGO29CQUVELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDNUIsT0FBTyxLQUFLLENBQUM7aUJBQ2Q7YUFDRjtRQUNILENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTSxPQUFPLEtBQUksQ0FBQztJQUVYLFVBQVUsQ0FBQyxFQUFFO1FBRW5CLElBQUksRUFBRSxFQUFFO1lBQ04sSUFBSSxFQUFFLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNqRCxPQUFPLEVBQUUsQ0FBQzthQUNYO1lBRUQsSUFBSSxFQUFFLENBQUMsYUFBYSxFQUFFO2dCQUNwQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQzFDO1NBQ0Y7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsdWdpbiB9IGZyb20gJy4uL2NsYXNzZXMvcGx1Z2luJztcblxuaW1wb3J0IHsgUGx1Z2luQ29uZmlnIH0gZnJvbSAnLi8uLi9pbnRlcmZhY2VzL3BsdWdpbi1jb25maWcnO1xuXG5cbmV4cG9ydCBjbGFzcyBDb2RlUGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIGNvbmZpZzogUGx1Z2luQ29uZmlnID0geyBuYW1lOiAnY29kZScgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBuYW1lOiAnY29kZScsXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnY29kZScsXG4gICAgICAgICAgc3ZnUGF0aDogJ004LjksNy4zTDQuMiwxMmw0LjcsNC43bDEuMS0xLjFMNi40LDEyTDEwLDguNEw4LjksNy4zeiBNMTUuMSw3LjNMMTQsOC40bDMuNiwzLjZMMTQsMTUuNmwxLjEsMS4xbDQuNy00LjdMMTUuMSw3LjN6JyxcbiAgICAgICAgICBjbGljazogKGVkaXRvcikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGVkaXRvci5zZWxlY3Rpb24uZ2V0KCk7XG4gICAgICAgICAgICBjb25zdCBjb2RlRWwgPSB0aGlzLl9nZXRDb2RlRWwobm9kZS5iYXNlTm9kZSk7XG4gICAgICAgICAgICBpZiAoY29kZUVsKSB7XG4gICAgICAgICAgICAgIGNvZGVFbC5jbGFzc0xpc3QucmVtb3ZlKCdjb2RlJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlZGl0b3IuaHRtbC5pbnNlcnQoJzxwIGNsYXNzPVwiY29kZVwiPicgKyBlZGl0b3Iuc2VsZWN0aW9uLmdldCgpLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxuezEsfS9nLCc8YnI+JykgKyAnPC9wPicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZSgpIHtcbiAgICB0aGlzLmVkaXRvci5ldmVudHMub24oJ2tleWRvd24nLCAoZSkgPT4ge1xuICAgICAgaWYgKGUua2V5Q29kZSA9PT0gMTMpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5lZGl0b3Iuc2VsZWN0aW9uLmdldCgpO1xuXG4gICAgICAgIGlmIChzZWxlY3Rpb24gJiYgdGhpcy5fZ2V0Q29kZUVsKHNlbGVjdGlvbi5iYXNlTm9kZSkpIHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGxldCBiciA9ICc8YnI+JztcbiAgICAgICAgICBjb25zdCBiYXNlID0gc2VsZWN0aW9uLmJhc2VOb2RlO1xuICAgICAgICAgIGlmIChiYXNlLm5vZGVOYW1lID09PSAnI3RleHQnICYmIHNlbGVjdGlvbi5iYXNlT2Zmc2V0ID09PSBiYXNlLmxlbmd0aCkge1xuXG4gICAgICAgICAgICBpZiAoIShiYXNlLm5leHRTaWJsaW5nICYmIGJhc2UubmV4dFNpYmxpbmcubm9kZU5hbWUgPT09ICdCUicpKSB7XG4gICAgICAgICAgICAgIGJyICs9ICc8YnI+JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZWw6IGFueSA9IEFycmF5LmZyb20oYmFzZS5jaGlsZE5vZGVzKS5zcGxpY2Uoc2VsZWN0aW9uLmJhc2VPZmZzZXQgLSAxLCAxKS5wb3AoKTtcbiAgICAgICAgICAgIGlmIChlbCAmJiBlbC5ub2RlTmFtZSAhPT0gJ0JSJykge1xuICAgICAgICAgICAgICBiciArPSAnPGJyPic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5lZGl0b3IuaHRtbC5pbnNlcnQoYnIpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIHRydWUpO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKSB7fVxuXG4gIHByaXZhdGUgX2dldENvZGVFbChlbCkge1xuXG4gICAgaWYgKGVsKSB7XG4gICAgICBpZiAoZWwuY2xhc3NMaXN0ICYmIGVsLmNsYXNzTGlzdC5jb250YWlucygnY29kZScpKSB7XG4gICAgICAgIHJldHVybiBlbDtcbiAgICAgIH1cblxuICAgICAgaWYgKGVsLnBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldENvZGVFbChlbC5wYXJlbnRFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { debounce } from 'lodash-es';
|
|
2
|
+
import Tribute from 'tributejs';
|
|
3
|
+
import { Plugin } from '../classes/plugin';
|
|
4
|
+
import { guid } from '@firestitch/common';
|
|
5
|
+
export class MentionPlugin extends Plugin {
|
|
6
|
+
config;
|
|
7
|
+
static _currentGuid = null;
|
|
8
|
+
static _tributes = [];
|
|
9
|
+
_tribute;
|
|
10
|
+
_guid = guid();
|
|
11
|
+
constructor(config) {
|
|
12
|
+
super();
|
|
13
|
+
this.config = config;
|
|
14
|
+
this.config = {
|
|
15
|
+
...config,
|
|
16
|
+
buttons: [
|
|
17
|
+
{
|
|
18
|
+
name: config.name,
|
|
19
|
+
tooltip: config.tooltip,
|
|
20
|
+
svgPath: config.iconPath,
|
|
21
|
+
click: (editor) => {
|
|
22
|
+
this._closeAll();
|
|
23
|
+
this._tribute.showMenuForCollection(editor.el);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
};
|
|
28
|
+
this._tribute = new Tribute({
|
|
29
|
+
values: debounce(this._loadValues.bind(this), 200),
|
|
30
|
+
searchOpts: {
|
|
31
|
+
pre: '',
|
|
32
|
+
post: '',
|
|
33
|
+
skip: true
|
|
34
|
+
},
|
|
35
|
+
containerClass: `fs-html-editor-mention-container ${this.config.containerClass || ''}`,
|
|
36
|
+
itemClass: `fs-html-editor-mention-menu-item ${this.config.menuItemClass || ''}`,
|
|
37
|
+
trigger: this.config.trigger,
|
|
38
|
+
allowSpaces: true,
|
|
39
|
+
menuItemTemplate: (item) => {
|
|
40
|
+
return this.config.menuItemTemplate(item.original);
|
|
41
|
+
},
|
|
42
|
+
selectTemplate: (item) => {
|
|
43
|
+
const template = this.config.selectedTemplate(item.original);
|
|
44
|
+
let p = document.createElement('p');
|
|
45
|
+
p.innerHTML = template;
|
|
46
|
+
let node = p.firstElementChild;
|
|
47
|
+
if (!node) {
|
|
48
|
+
node = document.createElement('span');
|
|
49
|
+
node.innerHTML = template;
|
|
50
|
+
}
|
|
51
|
+
node.setAttribute('contenteditable', 'false');
|
|
52
|
+
node.classList.add('fr-deletable');
|
|
53
|
+
return node.outerHTML;
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
MentionPlugin._tributes.push(this._tribute);
|
|
57
|
+
}
|
|
58
|
+
initialize() {
|
|
59
|
+
this._tribute.attach(this.editor.el);
|
|
60
|
+
this.editor.events.on('keydown', (e) => {
|
|
61
|
+
if (e.key === 'Enter' && this._tribute.isActive) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
}, true);
|
|
65
|
+
this.editor.el.addEventListener("tribute-replaced", this.selected);
|
|
66
|
+
}
|
|
67
|
+
selected = (event) => {
|
|
68
|
+
if (this.config.selected) {
|
|
69
|
+
if (MentionPlugin._currentGuid === this._guid) {
|
|
70
|
+
this.config.selected(event.detail.item.original);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
destroy() {
|
|
75
|
+
this.editor.el.removeEventListener("tribute-replaced", this.selected);
|
|
76
|
+
}
|
|
77
|
+
_closeAll() {
|
|
78
|
+
MentionPlugin._tributes.forEach((tribute) => {
|
|
79
|
+
if (tribute.menu) {
|
|
80
|
+
tribute.hideMenu();
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
_loadValues(keyword, cb) {
|
|
85
|
+
MentionPlugin._currentGuid = this._guid;
|
|
86
|
+
return this.config.fetch(keyword)
|
|
87
|
+
.subscribe((data) => {
|
|
88
|
+
cb(data);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbi5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvaHRtbC1lZGl0b3IvcGx1Z2lucy9tZW50aW9uLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sT0FBd0IsTUFBTSxXQUFXLENBQUM7QUFJakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUcxQyxNQUFNLE9BQU8sYUFBYyxTQUFRLE1BQU07SUFPYjtJQUxsQixNQUFNLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUMzQixNQUFNLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixRQUFRLENBQUM7SUFDVCxLQUFLLEdBQUcsSUFBSSxFQUFFLENBQUM7SUFFdkIsWUFBMEIsTUFBMkI7UUFDbkQsS0FBSyxFQUFFLENBQUM7UUFEZ0IsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFFbkQsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLEdBQUcsTUFBTTtZQUNULE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7b0JBQ2pCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztvQkFDdkIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxRQUFRO29CQUN4QixLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTt3QkFDaEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDakQsQ0FBQztpQkFDRjthQUNGO1NBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxPQUFP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Q0FBQztJQUVPLFNBQVM7UUFDZixhQUFhLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzFDLElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtnQkFDaEIsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ3BCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzdCLGFBQWEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQzthQUN0QixTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNsQixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgVHJpYnV0ZSwgeyBUcmlidXRlSXRlbSB9IGZyb20gJ3RyaWJ1dGVqcyc7XG5cbmltcG9ydCB7IE1lbnRpb25QbHVnaW5Db25maWcgfSBmcm9tICcuL2NvbmZpZ3MvbWVudGlvbi1wbHVnaW4uY29uZmlnJztcblxuaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSAnLi4vY2xhc3Nlcy9wbHVnaW4nO1xuXG5pbXBvcnQgeyBndWlkIH0gZnJvbSAnQGZpcmVzdGl0Y2gvY29tbW9uJztcblxuXG5leHBvcnQgY2xhc3MgTWVudGlvblBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2N1cnJlbnRHdWlkID0gbnVsbDtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RyaWJ1dGVzID0gW107XG4gIHByaXZhdGUgX3RyaWJ1dGU7XG4gIHByaXZhdGUgX2d1aWQgPSBndWlkKCk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25maWc6IE1lbnRpb25QbHVnaW5Db25maWcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogY29uZmlnLm5hbWUsXG4gICAgICAgICAgdG9vbHRpcDogY29uZmlnLnRvb2x0aXAsXG4gICAgICAgICAgc3ZnUGF0aDogY29uZmlnLmljb25QYXRoLFxuICAgICAgICAgIGNsaWNrOiAoZWRpdG9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jbG9zZUFsbCgpO1xuICAgICAgICAgICAgdGhpcy5fdHJpYnV0ZS5zaG93TWVudUZvckNvbGxlY3Rpb24oZWRpdG9yLmVsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuXG4gICAgdGhpcy5fdHJpYnV0ZSA9IG5ldyBUcmlidXRlKHtcbiAgICAgICAgdmFsdWVzOiBkZWJvdW5jZSh0aGlzLl9sb2FkVmFsdWVzLmJpbmQodGhpcyksIDIwMCksXG4gICAgICAgIHNlYXJjaE9wdHM6IHtcbiAgICAgICAgICBwcmU6ICcnLFxuICAgICAgICAgIHBvc3Q6ICcnLFxuICAgICAgICAgIHNraXA6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgY29udGFpbmVyQ2xhc3M6IGBmcy1odG1sLWVkaXRvci1tZW50aW9uLWNvbnRhaW5lciAke3RoaXMuY29uZmlnLmNvbnRhaW5lckNsYXNzIHx8ICcnfWAsXG4gICAgICAgIGl0ZW1DbGFzczogYGZzLWh0bWwtZWRpdG9yLW1lbnRpb24tbWVudS1pdGVtICR7dGhpcy5jb25maWcubWVudUl0ZW1DbGFzcyB8fCAnJ31gLFxuICAgICAgICB0cmlnZ2VyOiB0aGlzLmNvbmZpZy50cmlnZ2VyLFxuICAgICAgICBhbGxvd1NwYWNlczogdHJ1ZSxcbiAgICAgICAgbWVudUl0ZW1UZW1wbGF0ZTogKGl0ZW06IFRyaWJ1dGVJdGVtPGFueT4pID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25maWcubWVudUl0ZW1UZW1wbGF0ZShpdGVtLm9yaWdpbmFsKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2VsZWN0VGVtcGxhdGU6IChpdGVtOiBUcmlidXRlSXRlbTxhbnk+KSA9PiB7XG4gICAgICAgICAgY29uc3QgdGVtcGxhdGUgPSB0aGlzLmNvbmZpZy5zZWxlY3RlZFRlbXBsYXRlKGl0ZW0ub3JpZ2luYWwpO1xuXG4gICAgICAgICAgbGV0IHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG4gICAgICAgICAgcC5pbm5lckhUTUwgPSB0ZW1wbGF0ZTtcblxuICAgICAgICAgIGxldCBub2RlID0gcC5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICAgIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgICBub2RlLmlubmVySFRNTCA9IHRlbXBsYXRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnLCAnZmFsc2UnKTtcbiAgICAgICAgICBub2RlLmNsYXNzTGlzdC5hZGQoJ2ZyLWRlbGV0YWJsZScpO1xuXG4gICAgICAgICAgcmV0dXJuIG5vZGUub3V0ZXJIVE1MO1xuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICBNZW50aW9uUGx1Z2luLl90cmlidXRlcy5wdXNoKHRoaXMuX3RyaWJ1dGUpO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUoKSB7XG4gICAgdGhpcy5fdHJpYnV0ZS5hdHRhY2godGhpcy5lZGl0b3IuZWwpO1xuICAgIHRoaXMuZWRpdG9yLmV2ZW50cy5vbigna2V5ZG93bicsIChlKSA9PiB7XG4gICAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicgJiYgIHRoaXMuX3RyaWJ1dGUuaXNBY3RpdmUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0sIHRydWUpO1xuXG4gICAgXG4gICAgdGhpcy5lZGl0b3IuZWwuYWRkRXZlbnRMaXN0ZW5lcihcInRyaWJ1dGUtcmVwbGFjZWRcIiwgdGhpcy5zZWxlY3RlZCk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0ZWQgPSAoZXZlbnQpID0+IHtcbiAgICBpZih0aGlzLmNvbmZpZy5zZWxlY3RlZCkge1xuICAgICAgaWYoTWVudGlvblBsdWdpbi5fY3VycmVudEd1aWQgPT09IHRoaXMuX2d1aWQpIHtcbiAgICAgICAgdGhpcy5jb25maWcuc2VsZWN0ZWQoZXZlbnQuZGV0YWlsLml0ZW0ub3JpZ2luYWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCkge1xuICAgIHRoaXMuZWRpdG9yLmVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmlidXRlLXJlcGxhY2VkXCIsIHRoaXMuc2VsZWN0ZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VBbGwoKSB7XG4gICAgTWVudGlvblBsdWdpbi5fdHJpYnV0ZXMuZm9yRWFjaCgodHJpYnV0ZSkgPT4ge1xuICAgICAgaWYgKHRyaWJ1dGUubWVudSkge1xuICAgICAgICB0cmlidXRlLmhpZGVNZW51KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkVmFsdWVzKGtleXdvcmQsIGNiKSB7XG4gICAgTWVudGlvblBsdWdpbi5fY3VycmVudEd1aWQgPSB0aGlzLl9ndWlkO1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5mZXRjaChrZXl3b3JkKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgY2IoZGF0YSk7XG4gICAgICAgICAgICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Plugin } from '../classes/plugin';
|
|
2
|
+
export class RealtimePlugin extends Plugin {
|
|
3
|
+
config;
|
|
4
|
+
constructor(config = { name: 'realtime' }) {
|
|
5
|
+
super();
|
|
6
|
+
this.config = config;
|
|
7
|
+
this.config = {
|
|
8
|
+
...config,
|
|
9
|
+
name: 'realtime',
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
initialize() {
|
|
13
|
+
this.editor.events.on('click', (e) => {
|
|
14
|
+
}, false);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhbHRpbWUucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL3BsdWdpbnMvcmVhbHRpbWUucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUczQyxNQUFNLE9BQU8sY0FBZSxTQUFRLE1BQU07SUFFZDtJQUExQixZQUEwQixTQUF1QixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7UUFDbkUsS0FBSyxFQUFFLENBQUM7UUFEZ0IsV0FBTSxHQUFOLE1BQU0sQ0FBcUM7UUFFbkUsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLEdBQUcsTUFBTTtZQUNULElBQUksRUFBRSxVQUFVO1NBQ2pCLENBQUM7SUFDSixDQUFDO0lBRU0sVUFBVTtRQUVmLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUVyQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDWixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbHVnaW5Db25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BsdWdpbi1jb25maWcnO1xuXG5pbXBvcnQgeyBQbHVnaW4gfSBmcm9tICcuLi9jbGFzc2VzL3BsdWdpbic7XG5cblxuZXhwb3J0IGNsYXNzIFJlYWx0aW1lUGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIGNvbmZpZzogUGx1Z2luQ29uZmlnID0geyBuYW1lOiAncmVhbHRpbWUnIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgbmFtZTogJ3JlYWx0aW1lJyxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUoKSB7XG5cbiAgICB0aGlzLmVkaXRvci5ldmVudHMub24oJ2NsaWNrJywgKGUpID0+IHtcblxuICAgIH0sIGZhbHNlKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Plugin } from '../classes/plugin';
|
|
2
|
+
export class ScreenRecordPlugin extends Plugin {
|
|
3
|
+
config;
|
|
4
|
+
_activeEl;
|
|
5
|
+
constructor(config = {}) {
|
|
6
|
+
super();
|
|
7
|
+
this.config = config;
|
|
8
|
+
this.config = {
|
|
9
|
+
...config,
|
|
10
|
+
name: config.name || 'screenRecord',
|
|
11
|
+
buttons: [
|
|
12
|
+
{
|
|
13
|
+
name: 'screenRecord',
|
|
14
|
+
svgPath: `M14.7,7.7v6.1H7.1V7.7H14.7 M16.3,9.6V6.9c0-0.4-0.3-0.8-0.8-0.8H6.4c-0.4,0-0.8,0.3-0.8,0.8v7.6c0,0.4,0.3,0.8,0.8,0.8h9.1c0.4,0,0.8-0.3,0.8-0.8v-2.7l1.7,1.7c0.3,0.3,0.8,0.3,1.1,0c0.1-0.1,0.2-0.3,0.2-0.5V8.4c0-0.4-0.3-0.8-0.8-0.8
|
|
15
|
+
c-0.2,0-0.4,0.1-0.5,0.2L16.3,9.6z M21.5,1.6H2.9c-0.7,0-1.3,0.7-1.3,1.6v14.6c0,0.9,0.6,1.6,1.3,1.6h7.6v1.1l-5,1c-0.2,0-0.4,0.3-0.4,0.6c0,0.3,0.2,0.4,0.4,0.4c0,0,0,0,0.1,0l5.3-1h2.6l5.3,1c0,0,0,0,0.1,0c0.2,0,0.4-0.2,0.4-0.4
|
|
16
|
+
c0-0.3-0.1-0.6-0.4-0.6l-5-1v-1.1h7.6c0.7,0,1.3-0.7,1.3-1.6V3.2C22.9,2.3,22.3,1.6,21.5,1.6z M21.1,17.3H3.3V3.7h17.8L21.1,17.3L21.1,17.3z`,
|
|
17
|
+
tooltip: 'Screen Record',
|
|
18
|
+
click: (editor) => {
|
|
19
|
+
navigator.mediaDevices.getDisplayMedia({ video: true })
|
|
20
|
+
.then((stream) => {
|
|
21
|
+
const chunks = [];
|
|
22
|
+
const options = { mimeType: 'video/webm; codecs=vp9' };
|
|
23
|
+
let mediaRecorder = new MediaRecorder(stream, options);
|
|
24
|
+
stream.addEventListener('inactive', (e) => {
|
|
25
|
+
mediaRecorder.stop();
|
|
26
|
+
mediaRecorder = null;
|
|
27
|
+
stream.getTracks().forEach((track) => track.stop());
|
|
28
|
+
stream = null;
|
|
29
|
+
const blob = new Blob(chunks, { type: 'video/webm' });
|
|
30
|
+
config.upload(blob)
|
|
31
|
+
.subscribe((url) => {
|
|
32
|
+
editor.html.insert(`<span class="fr-screen-record fr-deletable fr-draggable"><video controls style="max-width:${config.maxWidth}"><source src="${url}" type="video/webm"></video></span>`);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
mediaRecorder.addEventListener('dataavailable', (event) => {
|
|
36
|
+
if (event.data && event.data.size > 0) {
|
|
37
|
+
chunks.push(event.data);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
mediaRecorder.start(10);
|
|
41
|
+
})
|
|
42
|
+
.catch((e) => { });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
async initialize() {
|
|
49
|
+
const FroalaEditor = window.FroalaEditor;
|
|
50
|
+
this.editor.events.on('mouseup', (e) => {
|
|
51
|
+
const el = this._getEl(e.target);
|
|
52
|
+
if (el) {
|
|
53
|
+
this.editor.popups.hideAll();
|
|
54
|
+
this._activeEl = el;
|
|
55
|
+
this._showPopup(el);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
FroalaEditor.POPUP_TEMPLATES["screenRecordPlugin.popup"] = '[_BUTTONS_]';
|
|
59
|
+
FroalaEditor.DefineIcon('popupClose', { NAME: 'trash', SVG_KEY: 'remove' });
|
|
60
|
+
FroalaEditor.RegisterCommand('popupClose', {
|
|
61
|
+
title: 'Remove',
|
|
62
|
+
undo: false,
|
|
63
|
+
focus: false,
|
|
64
|
+
callback: () => {
|
|
65
|
+
if (this._activeEl) {
|
|
66
|
+
this._activeEl.remove();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
_createPopup() {
|
|
72
|
+
const template = {
|
|
73
|
+
buttons: `<div class="fr-buttons">${this.editor.button.buildList(['popupClose'])}</div>`,
|
|
74
|
+
};
|
|
75
|
+
return this.editor.popups.create('screenRecordPlugin.popup', template);
|
|
76
|
+
}
|
|
77
|
+
_showPopup(el) {
|
|
78
|
+
var $popup = this.editor.popups.get('screenRecordPlugin.popup');
|
|
79
|
+
if (!$popup) {
|
|
80
|
+
$popup = this._createPopup();
|
|
81
|
+
}
|
|
82
|
+
this.editor.popups.setContainer('screenRecordPlugin.popup', this.editor.$(el));
|
|
83
|
+
const left = el.offsetLeft + el.offsetWidth / 2;
|
|
84
|
+
this.editor.popups.show('screenRecordPlugin.popup', left, null);
|
|
85
|
+
}
|
|
86
|
+
_getEl(el) {
|
|
87
|
+
if (el && el.classList) {
|
|
88
|
+
if (el.classList.contains('fr-screen-record'))
|
|
89
|
+
return el;
|
|
90
|
+
return this._getEl(el.parentNode);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXJlY29yZC5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvaHRtbC1lZGl0b3IvcGx1Z2lucy9zY3JlZW4tcmVjb3JkLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFLM0MsTUFBTSxPQUFPLGtCQUFtQixTQUFRLE1BQU07SUFJbEI7SUFGbEIsU0FBUyxDQUFDO0lBRWxCLFlBQTBCLFNBQW1DLEVBQUU7UUFDN0QsS0FBSyxFQUFFLENBQUM7UUFEZ0IsV0FBTSxHQUFOLE1BQU0sQ0FBK0I7UUFHN0QsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLEdBQUcsTUFBTTtZQUNULElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLGNBQWM7WUFDbkMsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxjQUFjO29CQUNwQixPQUFPLEVBQUU7OzBJQUV1SDtvQkFDaEksT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO3dCQUVWLFNBQVUsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDOzZCQUMzRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTs0QkFDZixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7NEJBQ2xCLE1BQU0sT0FBTyxHQUFHLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLENBQUM7NEJBQ3ZELElBQUksYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQzs0QkFFdkQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dDQUN4QyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7Z0NBQ3JC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LElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBRWhFLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQzlCO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLDBCQUEwQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFL0UsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUVoRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTyxNQUFNLENBQUMsRUFBRTtRQUNmLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUU7WUFDdEIsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDM0MsT0FBTyxFQUFFLENBQUM7WUFFWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NyZWVuUmVjb3JkUGx1Z2luQ29uZmlnIH0gZnJvbSAnLi9jb25maWdzL3NjcmVlbi1yZWNvcmQtcGx1Z2luLmNvbmZpZyc7XG5pbXBvcnQgeyBQbHVnaW4gfSBmcm9tICcuLi9jbGFzc2VzL3BsdWdpbic7XG5cblxuZGVjbGFyZSB2YXIgTWVkaWFSZWNvcmRlcjogYW55O1xuXG5leHBvcnQgY2xhc3MgU2NyZWVuUmVjb3JkUGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcblxuICBwcml2YXRlIF9hY3RpdmVFbDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIGNvbmZpZzogU2NyZWVuUmVjb3JkUGx1Z2luQ29uZmlnID0ge30pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBuYW1lOiBjb25maWcubmFtZSB8fCAnc2NyZWVuUmVjb3JkJyxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdzY3JlZW5SZWNvcmQnLFxuICAgICAgICAgIHN2Z1BhdGg6IGBNMTQuNyw3Ljd2Ni4xSDcuMVY3LjdIMTQuNyBNMTYuMyw5LjZWNi45YzAtMC40LTAuMy0wLjgtMC44LTAuOEg2LjRjLTAuNCwwLTAuOCwwLjMtMC44LDAuOHY3LjZjMCwwLjQsMC4zLDAuOCwwLjgsMC44aDkuMWMwLjQsMCwwLjgtMC4zLDAuOC0wLjh2LTIuN2wxLjcsMS43YzAuMywwLjMsMC44LDAuMywxLjEsMGMwLjEtMC4xLDAuMi0wLjMsMC4yLTAuNVY4LjRjMC0wLjQtMC4zLTAuOC0wLjgtMC44XG5cdGMtMC4yLDAtMC40LDAuMS0wLjUsMC4yTDE2LjMsOS42eiBNMjEuNSwxLjZIMi45Yy0wLjcsMC0xLjMsMC43LTEuMywxLjZ2MTQuNmMwLDAuOSwwLjYsMS42LDEuMywxLjZoNy42djEuMWwtNSwxYy0wLjIsMC0wLjQsMC4zLTAuNCwwLjZjMCwwLjMsMC4yLDAuNCwwLjQsMC40YzAsMCwwLDAsMC4xLDBsNS4zLTFoMi42bDUuMywxYzAsMCwwLDAsMC4xLDBjMC4yLDAsMC40LTAuMiwwLjQtMC40XG4gIGMwLTAuMy0wLjEtMC42LTAuNC0wLjZsLTUtMXYtMS4xaDcuNmMwLjcsMCwxLjMtMC43LDEuMy0xLjZWMy4yQzIyLjksMi4zLDIyLjMsMS42LDIxLjUsMS42eiBNMjEuMSwxNy4zSDMuM1YzLjdoMTcuOEwyMS4xLDE3LjNMMjEuMSwxNy4zemAsXG4gICAgICAgICAgdG9vbHRpcDogJ1NjcmVlbiBSZWNvcmQnLFxuICAgICAgICAgIGNsaWNrOiAoZWRpdG9yKSA9PiB7XG5cbiAgICAgICAgICAgICg8YW55Pm5hdmlnYXRvcikubWVkaWFEZXZpY2VzLmdldERpc3BsYXlNZWRpYSh7IHZpZGVvOiB0cnVlIH0pXG4gICAgICAgICAgICAgIC50aGVuKChzdHJlYW0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaHVua3MgPSBbXTtcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0geyBtaW1lVHlwZTogJ3ZpZGVvL3dlYm07IGNvZGVjcz12cDknIH07XG4gICAgICAgICAgICAgICAgbGV0IG1lZGlhUmVjb3JkZXIgPSBuZXcgTWVkaWFSZWNvcmRlcihzdHJlYW0sIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgICAgc3RyZWFtLmFkZEV2ZW50TGlzdGVuZXIoJ2luYWN0aXZlJywgKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgIG1lZGlhUmVjb3JkZXIuc3RvcCgpO1xuICAgICAgICAgICAgICAgICAgbWVkaWFSZWNvcmRlciA9IG51bGw7XG4gICAgICAgICAgICAgICAgICBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCgodHJhY2spID0+IHRyYWNrLnN0b3AoKSk7XG4gICAgICAgICAgICAgICAgICBzdHJlYW0gPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoY2h1bmtzLCB7IHR5cGU6ICd2aWRlby93ZWJtJyB9KTtcbiAgICAgICAgICAgICAgICAgIGNvbmZpZy51cGxvYWQoYmxvYilcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgodXJsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRvci5odG1sLmluc2VydChgPHNwYW4gY2xhc3M9XCJmci1zY3JlZW4tcmVjb3JkIGZyLWRlbGV0YWJsZSBmci1kcmFnZ2FibGVcIj48dmlkZW8gY29udHJvbHMgc3R5bGU9XCJtYXgtd2lkdGg6JHtjb25maWcubWF4V2lkdGh9XCI+PHNvdXJjZSBzcmM9XCIke3VybH1cIiB0eXBlPVwidmlkZW8vd2VibVwiPjwvdmlkZW8+PC9zcGFuPmApO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBtZWRpYVJlY29yZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2RhdGFhdmFpbGFibGUnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhICYmIGV2ZW50LmRhdGEuc2l6ZSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtzLnB1c2goZXZlbnQuZGF0YSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBtZWRpYVJlY29yZGVyLnN0YXJ0KDEwKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmNhdGNoKChlKSA9PiB7IH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaW5pdGlhbGl6ZSgpIHtcbiAgICBjb25zdCBGcm9hbGFFZGl0b3IgPSAod2luZG93IGFzIGFueSkuRnJvYWxhRWRpdG9yO1xuXG4gICAgdGhpcy5lZGl0b3IuZXZlbnRzLm9uKCdtb3VzZXVwJywgKGUpID0+IHtcbiAgICAgIGNvbnN0IGVsID0gdGhpcy5fZ2V0RWwoZS50YXJnZXQpO1xuXG4gICAgICBpZiAoZWwpIHtcbiAgICAgICAgdGhpcy5lZGl0b3IucG9wdXBzLmhpZGVBbGwoKTtcbiAgICAgICAgdGhpcy5fYWN0aXZlRWwgPSBlbDtcbiAgICAgICAgdGhpcy5fc2hvd1BvcHVwKGVsKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIEZyb2FsYUVkaXRvci5QT1BVUF9URU1QTEFURVNbXCJzY3JlZW5SZWNvcmRQbHVnaW4ucG9wdXBcIl0gPSAnW19CVVRUT05TX10nO1xuXG4gICAgRnJvYWxhRWRpdG9yLkRlZmluZUljb24oJ3BvcHVwQ2xvc2UnLCB7IE5BTUU6ICd0cmFzaCcsIFNWR19LRVk6ICdyZW1vdmUnIH0pO1xuICAgIEZyb2FsYUVkaXRvci5SZWdpc3RlckNvbW1hbmQoJ3BvcHVwQ2xvc2UnLCB7XG4gICAgICB0aXRsZTogJ1JlbW92ZScsXG4gICAgICB1bmRvOiBmYWxzZSxcbiAgICAgIGZvY3VzOiBmYWxzZSxcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmVFbCkge1xuICAgICAgICAgIHRoaXMuX2FjdGl2ZUVsLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVQb3B1cCgpIHtcblxuICAgIGNvbnN0IHRlbXBsYXRlID0ge1xuICAgICAgYnV0dG9uczogYDxkaXYgY2xhc3M9XCJmci1idXR0b25zXCI+JHt0aGlzLmVkaXRvci5idXR0b24uYnVpbGRMaXN0KFsncG9wdXBDbG9zZSddKX08L2Rpdj5gLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5lZGl0b3IucG9wdXBzLmNyZWF0ZSgnc2NyZWVuUmVjb3JkUGx1Z2luLnBvcHVwJywgdGVtcGxhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2hvd1BvcHVwIChlbCkge1xuICAgIHZhciAkcG9wdXAgPSB0aGlzLmVkaXRvci5wb3B1cHMuZ2V0KCdzY3JlZW5SZWNvcmRQbHVnaW4ucG9wdXAnKTtcblxuICAgIGlmICghJHBvcHVwKSB7XG4gICAgICAkcG9wdXAgPSB0aGlzLl9jcmVhdGVQb3B1cCgpO1xuICAgIH1cblxuICAgIHRoaXMuZWRpdG9yLnBvcHVwcy5zZXRDb250YWluZXIoJ3NjcmVlblJlY29yZFBsdWdpbi5wb3B1cCcsIHRoaXMuZWRpdG9yLiQoZWwpKTtcblxuICAgIGNvbnN0IGxlZnQgPSBlbC5vZmZzZXRMZWZ0ICsgZWwub2Zmc2V0V2lkdGggLyAyO1xuXG4gICAgdGhpcy5lZGl0b3IucG9wdXBzLnNob3coJ3NjcmVlblJlY29yZFBsdWdpbi5wb3B1cCcsIGxlZnQsIG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RWwoZWwpIHtcbiAgICBpZiAoZWwgJiYgZWwuY2xhc3NMaXN0KSB7XG4gICAgICBpZiAoZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdmci1zY3JlZW4tcmVjb3JkJykpXG4gICAgICAgIHJldHVybiBlbDtcblxuICAgICAgcmV0dXJuIHRoaXMuX2dldEVsKGVsLnBhcmVudE5vZGUpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { Inject, Injectable, Optional } from '@angular/core';
|
|
3
|
+
import { fsSourceLoader } from '@firestitch/common';
|
|
4
|
+
import { BehaviorSubject, combineLatest } from 'rxjs';
|
|
5
|
+
import { concatMap, map, shareReplay, tap } from 'rxjs/operators';
|
|
6
|
+
import { FS_HTML_EDITOR_CONFIG } from '../injects/config.inject';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class FsFroalaLoaderService {
|
|
9
|
+
_defaultConfig;
|
|
10
|
+
_document;
|
|
11
|
+
_froalaEditor;
|
|
12
|
+
_froalaLoaded = new BehaviorSubject(false);
|
|
13
|
+
_froalaPluginsLoaded = new BehaviorSubject(false);
|
|
14
|
+
_sourceLoader = fsSourceLoader;
|
|
15
|
+
_loaded$ = combineLatest([this._froalaLoaded, this._froalaPluginsLoaded])
|
|
16
|
+
.pipe(map(([FroalaReady, pluginsRead]) => {
|
|
17
|
+
return pluginsRead && FroalaReady;
|
|
18
|
+
}), shareReplay(1));
|
|
19
|
+
constructor(_defaultConfig, _document) {
|
|
20
|
+
this._defaultConfig = _defaultConfig;
|
|
21
|
+
this._document = _document;
|
|
22
|
+
this._sourceLoader.setDocument(this._document);
|
|
23
|
+
this._load();
|
|
24
|
+
}
|
|
25
|
+
get loaded$() {
|
|
26
|
+
return this._loaded$;
|
|
27
|
+
}
|
|
28
|
+
get FroalaEditor() {
|
|
29
|
+
return this._froalaEditor;
|
|
30
|
+
}
|
|
31
|
+
_load() {
|
|
32
|
+
const baseDir = '/assets/froala/';
|
|
33
|
+
this._sourceLoader.registerResources({
|
|
34
|
+
froala: [
|
|
35
|
+
`${baseDir}js/froala_editor.min.js`,
|
|
36
|
+
`${baseDir}css/froala_editor.pkgd.min.css`,
|
|
37
|
+
],
|
|
38
|
+
froala_align: `${baseDir}js/plugins/align.min.js`,
|
|
39
|
+
froala_colors: `${baseDir}js/plugins/colors.min.js`,
|
|
40
|
+
froala_image: `${baseDir}js/plugins/image.min.js`,
|
|
41
|
+
froala_link: `${baseDir}js/plugins/link.min.js`,
|
|
42
|
+
froala_lists: `${baseDir}js/plugins/lists.min.js`,
|
|
43
|
+
froala_paragraph_format: `${baseDir}js/plugins/paragraph_format.min.js`,
|
|
44
|
+
froala_table: `${baseDir}js/plugins/table.min.js`,
|
|
45
|
+
froala_url: `${baseDir}js/plugins/url.min.js`,
|
|
46
|
+
froala_video: `${baseDir}js/plugins/video.min.js`,
|
|
47
|
+
froala_quote: `${baseDir}js/plugins/quote.min.js`,
|
|
48
|
+
froala_draggable: `${baseDir}js/plugins/draggable.min.js`,
|
|
49
|
+
froala_font_size: `${baseDir}js/plugins/font_size.min.js`,
|
|
50
|
+
froala_quick_insert: `${baseDir}js/plugins/quick_insert.min.js`,
|
|
51
|
+
froala_line_height: `${baseDir}js/plugins/line_height.min.js`,
|
|
52
|
+
});
|
|
53
|
+
this._sourceLoader.loadResource('froala')
|
|
54
|
+
.pipe(tap(() => {
|
|
55
|
+
this._froalaEditor = window.FroalaEditor;
|
|
56
|
+
this._froalaDone();
|
|
57
|
+
}), concatMap(() => {
|
|
58
|
+
return this._loadPlugins();
|
|
59
|
+
}), tap(() => {
|
|
60
|
+
this._froalaPluginsDone();
|
|
61
|
+
}))
|
|
62
|
+
.subscribe();
|
|
63
|
+
}
|
|
64
|
+
_loadPlugins() {
|
|
65
|
+
const resources = this._defaultConfig
|
|
66
|
+
.froalaPlugins
|
|
67
|
+
.map((pluginName) => `froala_${pluginName}`);
|
|
68
|
+
return this._sourceLoader.loadResources(resources);
|
|
69
|
+
}
|
|
70
|
+
_froalaDone() {
|
|
71
|
+
this._froalaLoaded.next(true);
|
|
72
|
+
}
|
|
73
|
+
_froalaPluginsDone() {
|
|
74
|
+
this._froalaPluginsLoaded.next(true);
|
|
75
|
+
}
|
|
76
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFroalaLoaderService, deps: [{ token: FS_HTML_EDITOR_CONFIG, optional: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
77
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFroalaLoaderService, providedIn: 'root' });
|
|
78
|
+
}
|
|
79
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsFroalaLoaderService, decorators: [{
|
|
80
|
+
type: Injectable,
|
|
81
|
+
args: [{
|
|
82
|
+
providedIn: 'root',
|
|
83
|
+
}]
|
|
84
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
85
|
+
type: Optional
|
|
86
|
+
}, {
|
|
87
|
+
type: Inject,
|
|
88
|
+
args: [FS_HTML_EDITOR_CONFIG]
|
|
89
|
+
}] }, { type: Document, decorators: [{
|
|
90
|
+
type: Inject,
|
|
91
|
+
args: [DOCUMENT]
|
|
92
|
+
}] }]; } });
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvYWxhLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL3NlcnZpY2VzL2Zyb2FsYS1sb2FkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBT2pFLE1BQU0sT0FBTyxxQkFBcUI7SUFtQnRCO0lBRUE7SUFuQkYsYUFBYSxDQUFNO0lBRW5CLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxvQkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRCxhQUFhLEdBQUcsY0FBYyxDQUFDO0lBRS9CLFFBQVEsR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1NBQzlFLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFO1FBQ2pDLE9BQU8sV0FBVyxJQUFJLFdBQVcsQ0FBQztJQUNwQyxDQUFDLENBQUMsRUFDRixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztJQUVKLFlB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QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBmc1NvdXJjZUxvYWRlciB9IGZyb20gJ0BmaXJlc3RpdGNoL2NvbW1vbic7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY29uY2F0TWFwLCBtYXAsIHNoYXJlUmVwbGF5LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZTX0hUTUxfRURJVE9SX0NPTkZJRyB9IGZyb20gJy4uL2luamVjdHMvY29uZmlnLmluamVjdCc7XG5pbXBvcnQgeyBGc0h0bWxFZGl0b3JDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2h0bWwtZWRpdG9yLWNvbmZpZyc7XG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEZzRnJvYWxhTG9hZGVyU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBfZnJvYWxhRWRpdG9yOiBhbnk7XG5cbiAgcHJpdmF0ZSBfZnJvYWxhTG9hZGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgX2Zyb2FsYVBsdWdpbnNMb2FkZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBfc291cmNlTG9hZGVyID0gZnNTb3VyY2VMb2FkZXI7XG5cbiAgcHJpdmF0ZSBfbG9hZGVkJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2Zyb2FsYUxvYWRlZCwgdGhpcy5fZnJvYWxhUGx1Z2luc0xvYWRlZF0pXG4gICAgLnBpcGUoXG4gICAgICBtYXAoKFtGcm9hbGFSZWFkeSwgcGx1Z2luc1JlYWRdKSA9PiB7XG4gICAgICAgIHJldHVybiBwbHVnaW5zUmVhZCAmJiBGcm9hbGFSZWFkeTtcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoMSksXG4gICAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoRlNfSFRNTF9FRElUT1JfQ09ORklHKVxuICAgIHByaXZhdGUgX2RlZmF1bHRDb25maWc6IEZzSHRtbEVkaXRvckNvbmZpZyxcbiAgICBASW5qZWN0KERPQ1VNRU5UKVxuICAgIHByaXZhdGUgX2RvY3VtZW50OiBEb2N1bWVudCxcbiAgKSB7XG4gICAgdGhpcy5fc291cmNlTG9hZGVyLnNldERvY3VtZW50KHRoaXMuX2RvY3VtZW50KTtcbiAgICB0aGlzLl9sb2FkKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvYWRlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRlZCQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IEZyb2FsYUVkaXRvcigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9mcm9hbGFFZGl0b3I7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkKCkge1xuICAgIGNvbnN0IGJhc2VEaXIgPSAnL2Fzc2V0cy9mcm9hbGEvJztcbiAgICB0aGlzLl9zb3VyY2VMb2FkZXIucmVnaXN0ZXJSZXNvdXJjZXMoe1xuICAgICAgZnJvYWxhOiBbXG4gICAgICAgIGAke2Jhc2VEaXJ9anMvZnJvYWxhX2VkaXRvci5taW4uanNgLFxuICAgICAgICBgJHtiYXNlRGlyfWNzcy9mcm9hbGFfZWRpdG9yLnBrZ2QubWluLmNzc2AsXG4gICAgICBdLFxuICAgICAgZnJvYWxhX2FsaWduOiBgJHtiYXNlRGlyfWpzL3BsdWdpbnMvYWxpZ24ubWluLmpzYCxcbiAgICAgIGZyb2FsYV9jb2xvcnM6IGAke2Jhc2VEaXJ9anMvcGx1Z2lucy9jb2xvcnMubWluLmpzYCxcbiAgICAgIGZyb2FsYV9pbWFnZTogYCR7YmFzZURpcn1qcy9wbHVnaW5zL2ltYWdlLm1pbi5qc2AsXG4gICAgICBmcm9hbGFfbGluazogYCR7YmFzZURpcn1qcy9wbHVnaW5zL2xpbmsubWluLmpzYCxcbiAgICAgIGZyb2FsYV9saXN0czogYCR7YmFzZURpcn1qcy9wbHVnaW5zL2xpc3RzLm1pbi5qc2AsXG4gICAgICBmcm9hbGFfcGFyYWdyYXBoX2Zvcm1hdDogYCR7YmFzZURpcn1qcy9wbHVnaW5zL3BhcmFncmFwaF9mb3JtYXQubWluLmpzYCxcbiAgICAgIGZyb2FsYV90YWJsZTogYCR7YmFzZURpcn1qcy9wbHVnaW5zL3RhYmxlLm1pbi5qc2AsXG4gICAgICBmcm9hbGFfdXJsOiBgJHtiYXNlRGlyfWpzL3BsdWdpbnMvdXJsLm1pbi5qc2AsXG4gICAgICBmcm9hbGFfdmlkZW86IGAke2Jhc2VEaXJ9anMvcGx1Z2lucy92aWRlby5taW4uanNgLFxuICAgICAgZnJvYWxhX3F1b3RlOiBgJHtiYXNlRGlyfWpzL3BsdWdpbnMvcXVvdGUubWluLmpzYCxcbiAgICAgIGZyb2FsYV9kcmFnZ2FibGU6IGAke2Jhc2VEaXJ9anMvcGx1Z2lucy9kcmFnZ2FibGUubWluLmpzYCxcbiAgICAgIGZyb2FsYV9mb250X3NpemU6IGAke2Jhc2VEaXJ9anMvcGx1Z2lucy9mb250X3NpemUubWluLmpzYCxcbiAgICAgIGZyb2FsYV9xdWlja19pbnNlcnQ6IGAke2Jhc2VEaXJ9anMvcGx1Z2lucy9xdWlja19pbnNlcnQubWluLmpzYCxcbiAgICAgIGZyb2FsYV9saW5lX2hlaWdodDogYCR7YmFzZURpcn1qcy9wbHVnaW5zL2xpbmVfaGVpZ2h0Lm1pbi5qc2AsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9zb3VyY2VMb2FkZXIubG9hZFJlc291cmNlKCdmcm9hbGEnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fZnJvYWxhRWRpdG9yID0gKHdpbmRvdyBhcyBhbnkpLkZyb2FsYUVkaXRvcjtcbiAgICAgICAgICB0aGlzLl9mcm9hbGFEb25lKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBjb25jYXRNYXAoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9sb2FkUGx1Z2lucygpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9mcm9hbGFQbHVnaW5zRG9uZSgpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRQbHVnaW5zKCk6IE9ic2VydmFibGU8dW5rbm93bj4ge1xuICAgIGNvbnN0IHJlc291cmNlcyA9IHRoaXMuX2RlZmF1bHRDb25maWdcbiAgICAgIC5mcm9hbGFQbHVnaW5zXG4gICAgICAubWFwKChwbHVnaW5OYW1lKSA9PiBgZnJvYWxhXyR7cGx1Z2luTmFtZX1gKTtcblxuICAgIHJldHVybiB0aGlzLl9zb3VyY2VMb2FkZXIubG9hZFJlc291cmNlcyhyZXNvdXJjZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZnJvYWxhRG9uZSgpIHtcbiAgICB0aGlzLl9mcm9hbGFMb2FkZWQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Zyb2FsYVBsdWdpbnNEb25lKCkge1xuICAgIHRoaXMuX2Zyb2FsYVBsdWdpbnNMb2FkZWQubmV4dCh0cnVlKTtcbiAgfVxufVxuIl19
|
package/esm2022/app/modules/html-renderer/components/html-renderer/html-renderer.component.mjs
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, Input, ChangeDetectorRef } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/platform-browser";
|
|
5
|
+
export class FsHtmlRendererComponent {
|
|
6
|
+
sanitized;
|
|
7
|
+
_cdRef;
|
|
8
|
+
set setHtml(html) {
|
|
9
|
+
this.trustedHtml = this.sanitized.bypassSecurityTrustHtml(html || '');
|
|
10
|
+
this._cdRef.markForCheck();
|
|
11
|
+
}
|
|
12
|
+
trustedHtml;
|
|
13
|
+
constructor(sanitized, _cdRef) {
|
|
14
|
+
this.sanitized = sanitized;
|
|
15
|
+
this._cdRef = _cdRef;
|
|
16
|
+
}
|
|
17
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsHtmlRendererComponent, deps: [{ token: i1.DomSanitizer }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
18
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FsHtmlRendererComponent, selector: "fs-html-renderer", inputs: { setHtml: ["html", "setHtml"] }, ngImport: i0, template: "<span class=\"fr-view fs-html-editor-default\" [innerHtml]=\"trustedHtml\"></span>\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
19
|
+
}
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsHtmlRendererComponent, decorators: [{
|
|
21
|
+
type: Component,
|
|
22
|
+
args: [{ selector: 'fs-html-renderer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<span class=\"fr-view fs-html-editor-default\" [innerHtml]=\"trustedHtml\"></span>\n" }]
|
|
23
|
+
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { setHtml: [{
|
|
24
|
+
type: Input,
|
|
25
|
+
args: ['html']
|
|
26
|
+
}] } });
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvaHRtbC1yZW5kZXJlci9jb21wb25lbnRzL2h0bWwtcmVuZGVyZXIvaHRtbC1yZW5kZXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvaHRtbC1yZW5kZXJlci9jb21wb25lbnRzL2h0bWwtcmVuZGVyZXIvaHRtbC1yZW5kZXJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVM3RixNQUFNLE9BQU8sdUJBQXVCO0lBVXhCO0lBQ0E7SUFUVixJQUEwQixPQUFPLENBQUMsSUFBSTtRQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVNLFdBQVcsQ0FBVztJQUU3QixZQUNVLFNBQXVCLEVBQ3ZCLE1BQXlCO1FBRHpCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDdkIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7SUFDL0IsQ0FBQzt3R0FaTSx1QkFBdUI7NEZBQXZCLHVCQUF1QixrR0NWcEMsc0ZBQ0E7OzRGRFNhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTttSUFJckIsT0FBTztzQkFBaEMsS0FBSzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtaHRtbC1yZW5kZXJlcicsXG4gIHRlbXBsYXRlVXJsOiAnaHRtbC1yZW5kZXJlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydodG1sLXJlbmRlcmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGc0h0bWxSZW5kZXJlckNvbXBvbmVudCB7XG5cbiAgQElucHV0KCdodG1sJykgcHVibGljIHNldCBzZXRIdG1sKGh0bWwpIHtcbiAgICB0aGlzLnRydXN0ZWRIdG1sID0gdGhpcy5zYW5pdGl6ZWQuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoaHRtbCB8fCAnJyk7XG4gICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgdHJ1c3RlZEh0bWw6IFNhZmVIdG1sO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNhbml0aXplZDogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7IH1cblxufVxuIiwiPHNwYW4gY2xhc3M9XCJmci12aWV3IGZzLWh0bWwtZWRpdG9yLWRlZmF1bHRcIiBbaW5uZXJIdG1sXT1cInRydXN0ZWRIdG1sXCI+PC9zcGFuPlxuIl19
|
|
@@ -3,11 +3,11 @@ import { CommonModule } from '@angular/common';
|
|
|
3
3
|
import { FsHtmlRendererComponent } from './components/html-renderer/html-renderer.component';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export class FsHtmlRendererModule {
|
|
6
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsHtmlRendererModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
7
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: FsHtmlRendererModule, declarations: [FsHtmlRendererComponent], imports: [CommonModule], exports: [FsHtmlRendererComponent] });
|
|
8
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsHtmlRendererModule, imports: [CommonModule] });
|
|
6
9
|
}
|
|
7
|
-
|
|
8
|
-
FsHtmlRendererModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: FsHtmlRendererModule, declarations: [FsHtmlRendererComponent], imports: [CommonModule], exports: [FsHtmlRendererComponent] });
|
|
9
|
-
FsHtmlRendererModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsHtmlRendererModule, imports: [CommonModule] });
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FsHtmlRendererModule, decorators: [{
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FsHtmlRendererModule, decorators: [{
|
|
11
11
|
type: NgModule,
|
|
12
12
|
args: [{
|
|
13
13
|
imports: [
|
|
@@ -21,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
21
21
|
],
|
|
22
22
|
}]
|
|
23
23
|
}] });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtaHRtbC1yZW5kZXJlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvaHRtbC1yZW5kZXJlci9mcy1odG1sLXJlbmRlcmVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7QUFhN0YsTUFBTSxPQUFPLG9CQUFvQjt3R0FBcEIsb0JBQW9CO3lHQUFwQixvQkFBb0IsaUJBSDdCLHVCQUF1QixhQU52QixZQUFZLGFBR1osdUJBQXVCO3lHQU1kLG9CQUFvQixZQVQ3QixZQUFZOzs0RkFTSCxvQkFBb0I7a0JBWGhDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLHVCQUF1QjtxQkFDeEI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLHVCQUF1QjtxQkFDeEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgRnNIdG1sUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvaHRtbC1yZW5kZXJlci9odG1sLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBGc0h0bWxSZW5kZXJlckNvbXBvbmVudCxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRnNIdG1sUmVuZGVyZXJDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzSHRtbFJlbmRlcmVyTW9kdWxlIHtcbn1cbiJdfQ==
|