@firestitch/html-editor 12.0.5 → 12.1.2

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.
Files changed (74) hide show
  1. package/app/{classes → modules/html-editor/classes}/plugin.d.ts +7 -7
  2. package/app/{components → modules/html-editor/components}/html-editor/html-editor.component.d.ts +58 -58
  3. package/app/{consts → modules/html-editor/consts}/paragraph-buttons.const.d.ts +1 -1
  4. package/app/{consts → modules/html-editor/consts}/rich-buttons.const.d.ts +1 -1
  5. package/app/{consts → modules/html-editor/consts}/text-buttons.const.d.ts +1 -1
  6. package/app/{enums → modules/html-editor/enums}/default-plugin.enum.d.ts +15 -15
  7. package/app/{fs-html-editor.module.d.ts → modules/html-editor/fs-html-editor.module.d.ts} +43 -43
  8. package/app/{injects → modules/html-editor/injects}/config.inject.d.ts +3 -3
  9. package/app/{interfaces → modules/html-editor/interfaces}/html-editor-config.d.ts +40 -40
  10. package/app/{interfaces → modules/html-editor/interfaces}/plugin-button.d.ts +12 -12
  11. package/app/{interfaces → modules/html-editor/interfaces}/plugin-config.d.ts +5 -5
  12. package/app/{plugins → modules/html-editor/plugins}/checklist.plugin.d.ts +7 -7
  13. package/app/{plugins → modules/html-editor/plugins}/code.plugin.d.ts +9 -9
  14. package/app/{plugins → modules/html-editor/plugins}/configs/mention-plugin.config.d.ts +13 -13
  15. package/app/{plugins → modules/html-editor/plugins}/configs/screen-record-plugin.config.d.ts +7 -7
  16. package/app/{plugins → modules/html-editor/plugins}/mention.plugin.d.ts +15 -15
  17. package/app/modules/html-editor/plugins/realtime.plugin.d.ts +7 -0
  18. package/app/{plugins → modules/html-editor/plugins}/screen-record.plugin.d.ts +11 -11
  19. package/app/{services → modules/html-editor/services}/froala-loader.service.d.ts +22 -20
  20. package/app/{utils → modules/html-editor/utils}/loader.d.ts +7 -7
  21. package/app/{components → modules/html-renderer/components}/html-renderer/html-renderer.component.d.ts +12 -12
  22. package/app/modules/html-renderer/fs-html-renderer.module.d.ts +8 -0
  23. package/bundles/firestitch-html-editor.umd.js +1456 -1403
  24. package/bundles/firestitch-html-editor.umd.js.map +1 -1
  25. package/esm2015/app/modules/html-editor/classes/plugin.js +5 -0
  26. package/esm2015/app/modules/html-editor/components/html-editor/html-editor.component.js +493 -0
  27. package/esm2015/app/modules/html-editor/consts/paragraph-buttons.const.js +9 -0
  28. package/esm2015/app/modules/html-editor/consts/rich-buttons.const.js +7 -0
  29. package/esm2015/app/modules/html-editor/consts/text-buttons.const.js +19 -0
  30. package/esm2015/app/modules/html-editor/enums/default-plugin.enum.js +2 -0
  31. package/esm2015/app/modules/html-editor/fs-html-editor.module.js +68 -0
  32. package/esm2015/app/modules/html-editor/injects/config.inject.js +4 -0
  33. package/esm2015/app/modules/html-editor/interfaces/html-editor-config.js +2 -0
  34. package/esm2015/app/modules/html-editor/interfaces/plugin-button.js +2 -0
  35. package/esm2015/app/modules/html-editor/interfaces/plugin-config.js +2 -0
  36. package/esm2015/app/modules/html-editor/plugins/checklist.plugin.js +35 -0
  37. package/esm2015/app/modules/html-editor/plugins/code.plugin.js +63 -0
  38. package/esm2015/app/modules/html-editor/plugins/configs/mention-plugin.config.js +2 -0
  39. package/esm2015/app/modules/html-editor/plugins/configs/screen-record-plugin.config.js +2 -0
  40. package/esm2015/app/modules/html-editor/plugins/mention.plugin.js +87 -0
  41. package/esm2015/app/modules/html-editor/plugins/realtime.plugin.js +13 -0
  42. package/esm2015/app/modules/html-editor/plugins/screen-record.plugin.js +94 -0
  43. package/esm2015/app/modules/html-editor/services/froala-loader.service.js +86 -0
  44. package/esm2015/app/modules/html-editor/utils/loader.js +89 -0
  45. package/esm2015/app/modules/html-renderer/components/html-renderer/html-renderer.component.js +29 -0
  46. package/esm2015/app/modules/html-renderer/fs-html-renderer.module.js +26 -0
  47. package/esm2015/firestitch-html-editor.js +4 -4
  48. package/esm2015/public_api.js +14 -12
  49. package/fesm2015/firestitch-html-editor.js +1049 -1006
  50. package/fesm2015/firestitch-html-editor.js.map +1 -1
  51. package/firestitch-html-editor.d.ts +5 -5
  52. package/package.json +2 -2
  53. package/public_api.d.ts +18 -16
  54. package/styles.scss +12 -0
  55. package/esm2015/app/classes/plugin.js +0 -5
  56. package/esm2015/app/components/html-editor/html-editor.component.js +0 -493
  57. package/esm2015/app/components/html-renderer/html-renderer.component.js +0 -29
  58. package/esm2015/app/consts/paragraph-buttons.const.js +0 -9
  59. package/esm2015/app/consts/rich-buttons.const.js +0 -7
  60. package/esm2015/app/consts/text-buttons.const.js +0 -19
  61. package/esm2015/app/enums/default-plugin.enum.js +0 -2
  62. package/esm2015/app/fs-html-editor.module.js +0 -69
  63. package/esm2015/app/injects/config.inject.js +0 -4
  64. package/esm2015/app/interfaces/html-editor-config.js +0 -2
  65. package/esm2015/app/interfaces/plugin-button.js +0 -2
  66. package/esm2015/app/interfaces/plugin-config.js +0 -2
  67. package/esm2015/app/plugins/checklist.plugin.js +0 -35
  68. package/esm2015/app/plugins/code.plugin.js +0 -63
  69. package/esm2015/app/plugins/configs/mention-plugin.config.js +0 -2
  70. package/esm2015/app/plugins/configs/screen-record-plugin.config.js +0 -2
  71. package/esm2015/app/plugins/mention.plugin.js +0 -87
  72. package/esm2015/app/plugins/screen-record.plugin.js +0 -94
  73. package/esm2015/app/services/froala-loader.service.js +0 -80
  74. package/esm2015/app/utils/loader.js +0 -84
@@ -0,0 +1,68 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FsLabelModule } from '@firestitch/label';
4
+ import { FsSkeletonModule } from '@firestitch/skeleton';
5
+ import { FsHtmlEditorComponent } from './components/html-editor/html-editor.component';
6
+ import { FS_HTML_EDITOR_CONFIG, FS_HTML_EDITOR_DEFAULT_CONFIG } from './injects/config.inject';
7
+ import { FsHtmlRendererModule } from '../html-renderer/fs-html-renderer.module';
8
+ import * as i0 from "@angular/core";
9
+ export class FsHtmlEditorModule {
10
+ static forRoot(config = {}) {
11
+ return {
12
+ ngModule: FsHtmlEditorModule,
13
+ providers: [
14
+ { provide: FS_HTML_EDITOR_DEFAULT_CONFIG, useValue: config },
15
+ {
16
+ provide: FS_HTML_EDITOR_CONFIG,
17
+ useFactory: FsHtmlEditorConfigFactory,
18
+ deps: [FS_HTML_EDITOR_DEFAULT_CONFIG]
19
+ }
20
+ ]
21
+ };
22
+ }
23
+ }
24
+ FsHtmlEditorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsHtmlEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
25
+ FsHtmlEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsHtmlEditorModule, declarations: [FsHtmlEditorComponent], imports: [CommonModule,
26
+ FsSkeletonModule,
27
+ FsLabelModule,
28
+ FsHtmlRendererModule], exports: [FsHtmlEditorComponent] });
29
+ FsHtmlEditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsHtmlEditorModule, imports: [[
30
+ CommonModule,
31
+ FsSkeletonModule,
32
+ FsLabelModule,
33
+ FsHtmlRendererModule,
34
+ ]] });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsHtmlEditorModule, decorators: [{
36
+ type: NgModule,
37
+ args: [{
38
+ imports: [
39
+ CommonModule,
40
+ FsSkeletonModule,
41
+ FsLabelModule,
42
+ FsHtmlRendererModule,
43
+ ],
44
+ exports: [
45
+ FsHtmlEditorComponent,
46
+ ],
47
+ declarations: [
48
+ FsHtmlEditorComponent,
49
+ ],
50
+ }]
51
+ }] });
52
+ export function FsHtmlEditorConfigFactory(config) {
53
+ return Object.assign({ froalaPlugins: [
54
+ "align" /* Align */,
55
+ "colors" /* Colors */,
56
+ "image" /* Image */,
57
+ "link" /* Link */,
58
+ "lists" /* Lists */,
59
+ "paragraph_format" /* ParagraphFormat */,
60
+ "quote" /* Quote */,
61
+ "table" /* Table */,
62
+ "url" /* Url */,
63
+ "video" /* Video */,
64
+ "draggable" /* Draggable */,
65
+ "font_size" /* FontSize */,
66
+ ] }, config);
67
+ }
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtaHRtbC1lZGl0b3IubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2ZzLWh0bWwtZWRpdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRXZGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRS9GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOztBQWtCaEYsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLFNBQTZCLEVBQUU7UUFDNUMsT0FBTztZQUNMLFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsU0FBUyxFQUFFO2dCQUNULEVBQUUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7Z0JBQzVEO29CQUNFLE9BQU8sRUFBRSxxQkFBcUI7b0JBQzlCLFVBQVUsRUFBRSx5QkFBeUI7b0JBQ3JDLElBQUksRUFBRSxDQUFDLDZCQUE2QixDQUFDO2lCQUN0QzthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7O2dIQWJVLGtCQUFrQjtpSEFBbEIsa0JBQWtCLGlCQUgzQixxQkFBcUIsYUFWckIsWUFBWTtRQUVaLGdCQUFnQjtRQUNoQixhQUFhO1FBQ2Isb0JBQW9CLGFBR3BCLHFCQUFxQjtpSEFNWixrQkFBa0IsWUFkcEI7WUFDUCxZQUFZO1lBRVosZ0JBQWdCO1lBQ2hCLGFBQWE7WUFDYixvQkFBb0I7U0FDckI7NEZBUVUsa0JBQWtCO2tCQWY5QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUVaLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixvQkFBb0I7cUJBQ3JCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxxQkFBcUI7cUJBQ3RCO29CQUNELFlBQVksRUFBRTt3QkFDWixxQkFBcUI7cUJBQ3RCO2lCQUNGOztBQWlCRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsTUFBMEI7SUFDbEUsdUJBQ0UsYUFBYSxFQUFFOzs7Ozs7Ozs7Ozs7O1NBYWQsSUFDRSxNQUFNLEVBQ1Q7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IEZzTGFiZWxNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9sYWJlbCc7XG5pbXBvcnQgeyBGc1NrZWxldG9uTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvc2tlbGV0b24nO1xuXG5pbXBvcnQgeyBGc0h0bWxFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvaHRtbC1lZGl0b3IvaHRtbC1lZGl0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IEZzSHRtbEVkaXRvckNvbmZpZyB9IGZyb20gJy4vaW50ZXJmYWNlcy9odG1sLWVkaXRvci1jb25maWcnO1xuaW1wb3J0IHsgRlNfSFRNTF9FRElUT1JfQ09ORklHLCBGU19IVE1MX0VESVRPUl9ERUZBVUxUX0NPTkZJRyB9IGZyb20gJy4vaW5qZWN0cy9jb25maWcuaW5qZWN0JztcbmltcG9ydCB7IEZyb2FsYVBsdWdpbiB9IGZyb20gJy4vZW51bXMvZGVmYXVsdC1wbHVnaW4uZW51bSc7XG5pbXBvcnQgeyBGc0h0bWxSZW5kZXJlck1vZHVsZSB9IGZyb20gJy4uL2h0bWwtcmVuZGVyZXIvZnMtaHRtbC1yZW5kZXJlci5tb2R1bGUnO1xuXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG5cbiAgICBGc1NrZWxldG9uTW9kdWxlLFxuICAgIEZzTGFiZWxNb2R1bGUsXG4gICAgRnNIdG1sUmVuZGVyZXJNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBGc0h0bWxFZGl0b3JDb21wb25lbnQsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEZzSHRtbEVkaXRvckNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNIdG1sRWRpdG9yTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoY29uZmlnOiBGc0h0bWxFZGl0b3JDb25maWcgPSB7fSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RnNIdG1sRWRpdG9yTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBGc0h0bWxFZGl0b3JNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBGU19IVE1MX0VESVRPUl9ERUZBVUxUX0NPTkZJRywgdXNlVmFsdWU6IGNvbmZpZyB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogRlNfSFRNTF9FRElUT1JfQ09ORklHLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IEZzSHRtbEVkaXRvckNvbmZpZ0ZhY3RvcnksXG4gICAgICAgICAgZGVwczogW0ZTX0hUTUxfRURJVE9SX0RFRkFVTFRfQ09ORklHXVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gRnNIdG1sRWRpdG9yQ29uZmlnRmFjdG9yeShjb25maWc6IEZzSHRtbEVkaXRvckNvbmZpZykge1xuICByZXR1cm4ge1xuICAgIGZyb2FsYVBsdWdpbnM6IFtcbiAgICAgIEZyb2FsYVBsdWdpbi5BbGlnbixcbiAgICAgIEZyb2FsYVBsdWdpbi5Db2xvcnMsXG4gICAgICBGcm9hbGFQbHVnaW4uSW1hZ2UsXG4gICAgICBGcm9hbGFQbHVnaW4uTGluayxcbiAgICAgIEZyb2FsYVBsdWdpbi5MaXN0cyxcbiAgICAgIEZyb2FsYVBsdWdpbi5QYXJhZ3JhcGhGb3JtYXQsXG4gICAgICBGcm9hbGFQbHVnaW4uUXVvdGUsXG4gICAgICBGcm9hbGFQbHVnaW4uVGFibGUsXG4gICAgICBGcm9hbGFQbHVnaW4uVXJsLFxuICAgICAgRnJvYWxhUGx1Z2luLlZpZGVvLFxuICAgICAgRnJvYWxhUGx1Z2luLkRyYWdnYWJsZSxcbiAgICAgIEZyb2FsYVBsdWdpbi5Gb250U2l6ZSxcbiAgICBdLFxuICAgIC4uLmNvbmZpZ1xuICB9O1xufVxuIl19
@@ -0,0 +1,4 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const FS_HTML_EDITOR_DEFAULT_CONFIG = new InjectionToken('fs-html-editor.default-config');
3
+ export const FS_HTML_EDITOR_CONFIG = new InjectionToken('fs-html-editor.config');
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmluamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9odG1sLWVkaXRvci9pbmplY3RzL2NvbmZpZy5pbmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLGNBQWMsQ0FBUSwrQkFBK0IsQ0FBQyxDQUFDO0FBQ3hHLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFRLHVCQUF1QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgRlNfSFRNTF9FRElUT1JfREVGQVVMVF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55W10+KCdmcy1odG1sLWVkaXRvci5kZWZhdWx0LWNvbmZpZycpO1xuZXhwb3J0IGNvbnN0IEZTX0hUTUxfRURJVE9SX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnlbXT4oJ2ZzLWh0bWwtZWRpdG9yLmNvbmZpZycpO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1lZGl0b3ItY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2ludGVyZmFjZXMvaHRtbC1lZGl0b3ItY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFBsdWdpbiB9IGZyb20gJy4uL2NsYXNzZXMvcGx1Z2luJztcbmltcG9ydCB7IEZyb2FsYVBsdWdpbiB9IGZyb20gJy4uL2VudW1zL2RlZmF1bHQtcGx1Z2luLmVudW0nO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRnNIdG1sRWRpdG9yQ29uZmlnIHtcbiAgaW1hZ2U/OiBGc0h0bWxFZGl0b3JVcGxvYWRDb25maWc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBoaW50Pzogc3RyaW5nO1xuICBjaGFuZ2U/OiBGdW5jdGlvbjtcbiAgaW5pdE9uQ2xpY2s/OiBib29sZWFuO1xuICBpbml0Q2xpY2s/OiAoZXZlbnQ/OiBVSUV2ZW50KSA9PiB2b2lkO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xuICBhdXRvZm9jdXM/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGFjdGl2YXRpb25LZXk/OiBhbnk7XG4gIHRvb2x0aXA/OiBzdHJpbmc7XG4gIHBsdWdpbnM/OiBQbHVnaW5bXTtcbiAgZnJvYWxhUGx1Z2lucz86IEZyb2FsYVBsdWdpbltdO1xuICBmcm9hbGFDb25maWc/OiBhbnk7XG4gIGFzc2V0c0pTUGF0aD86IHN0cmluZztcbiAgYXNzZXRzQ1NTUGF0aD86IHN0cmluZztcbiAgYnV0dG9ucz86IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgc3ZnS2V5Pzogc3RyaW5nO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIGZvY3VzPzogYm9vbGVhbjtcbiAgICB1bmRvPzogYm9vbGVhbjtcbiAgICByZWZyZXNoQWZ0ZXJDYWxsYmFjaz86IGJvb2xlYW47XG4gICAgY2xpY2s6IChlZGl0b3I6IGFueSkgPT4gdm9pZDtcbiAgfVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZzSHRtbEVkaXRvclVwbG9hZENvbmZpZyB7XG4gIHdpZHRoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBoZWlnaHQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHF1YWxpdHk/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGZvcm1hdD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgbWluV2lkdGg/OiBudW1iZXI7XG4gIG1pbkhlaWdodD86IG51bWJlcjtcbiAgdXBsb2FkPzogKGZpbGU6IEJsb2IpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWJ1dHRvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9odG1sLWVkaXRvci9pbnRlcmZhY2VzL3BsdWdpbi1idXR0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5CdXR0b24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBzdmdQYXRoPzogc3RyaW5nO1xuICB1bmRvPzogYm9vbGVhbjtcbiAgdG9vbHRpcD86IHN0cmluZztcbiAgZm9jdXM/OiBib29sZWFuO1xuICBzaG93T25Nb2JpbGU/OiBib29sZWFuO1xuICByZWZyZXNoQWZ0ZXJDYWxsYmFjaz86IGJvb2xlYW47XG4gIGNsaWNrPzogKGVkaXRvcikgPT4gdm9pZDtcbiAgcmVmcmVzaD86IChlZGl0b3IsIGJ1dHRvbikgPT4gdm9pZDtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9odG1sLWVkaXRvci9pbnRlcmZhY2VzL3BsdWdpbi1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsdWdpbkJ1dHRvbiB9IGZyb20gJy4vcGx1Z2luLWJ1dHRvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luQ29uZmlnIHtcbiAgbmFtZT86IHN0cmluZztcbiAgYnV0dG9ucz86IFBsdWdpbkJ1dHRvbltdO1xufVxuIl19
@@ -0,0 +1,35 @@
1
+ import { Plugin } from '../classes/plugin';
2
+ export class ChecklistPlugin extends Plugin {
3
+ constructor(config = { name: 'checklist' }) {
4
+ super();
5
+ this.config = config;
6
+ this.config = Object.assign(Object.assign({}, config), { name: 'checklist', buttons: [
7
+ {
8
+ name: 'checklist',
9
+ 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',
10
+ click: (editor) => {
11
+ editor.html.insert('<ul class="checklist"><li></li></ul>');
12
+ }
13
+ }
14
+ ] });
15
+ }
16
+ initialize() {
17
+ this.editor.events.on('click', (e) => {
18
+ const li = e.target;
19
+ if (li.nodeName === 'LI' && e.offsetX < 0) {
20
+ const items = [li, ...li.querySelectorAll('li')];
21
+ if (li.classList.contains('checked')) {
22
+ items.forEach((item) => {
23
+ item.classList.remove('checked');
24
+ });
25
+ }
26
+ else {
27
+ items.forEach((item) => {
28
+ item.classList.add('checked');
29
+ });
30
+ }
31
+ }
32
+ }, false);
33
+ }
34
+ }
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tsaXN0LnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9odG1sLWVkaXRvci9wbHVnaW5zL2NoZWNrbGlzdC5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSzNDLE1BQU0sT0FBTyxlQUFnQixTQUFRLE1BQU07SUFFekMsWUFBMEIsU0FBdUIsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO1FBQ3BFLEtBQUssRUFBRSxDQUFDO1FBRGdCLFdBQU0sR0FBTixNQUFNLENBQXNDO1FBRXBFLElBQUksQ0FBQyxNQUFNLG1DQUNOLE1BQU0sS0FDVCxJQUFJLEVBQUUsV0FBVyxFQUNqQixPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLE9BQU8sRUFBRSw0S0FBNEs7b0JBQ3JMLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO3dCQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO29CQUM3RCxDQUFDO2lCQUNGO2FBQ0YsR0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLFVBQVU7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDbkMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNwQixJQUFJLEVBQUUsQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFO2dCQUV6QyxNQUFNLEtBQUssR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUVqRCxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFO29CQUNwQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7d0JBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUNuQyxDQUFDLENBQUMsQ0FBQztpQkFDSjtxQkFBTTtvQkFDTCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7d0JBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUNoQyxDQUFDLENBQUMsQ0FBQztpQkFDSjthQUNGO1FBRUgsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ1osQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSAnLi4vY2xhc3Nlcy9wbHVnaW4nO1xuXG5pbXBvcnQgeyBQbHVnaW5Db25maWcgfSBmcm9tICcuLy4uL2ludGVyZmFjZXMvcGx1Z2luLWNvbmZpZyc7XG5cblxuZXhwb3J0IGNsYXNzIENoZWNrbGlzdFBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25maWc6IFBsdWdpbkNvbmZpZyA9IHsgbmFtZTogJ2NoZWNrbGlzdCcgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBuYW1lOiAnY2hlY2tsaXN0JyxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdjaGVja2xpc3QnLFxuICAgICAgICAgIHN2Z1BhdGg6ICdNOC40LDEwLjNsLTEuMiwxLjJsNCw0TDIwLDYuN2wtMS4yLTEuMmwtNy42LDcuNkw4LjQsMTAuM3ogTTE4LjIsMTguMkg1LjhWNS44aDguOVY0SDUuOEM0LjgsNCw0LDQuOCw0LDUuOHYxMi40YzAsMSwwLjgsMS44LDEuOCwxLjhoMTIuNGMxLDAsMS44LTAuOCwxLjgtMS44di03LjFoLTEuOFYxOC4yeicsXG4gICAgICAgICAgY2xpY2s6IChlZGl0b3IpID0+IHtcbiAgICAgICAgICAgIGVkaXRvci5odG1sLmluc2VydCgnPHVsIGNsYXNzPVwiY2hlY2tsaXN0XCI+PGxpPjwvbGk+PC91bD4nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUoKSB7XG4gICAgdGhpcy5lZGl0b3IuZXZlbnRzLm9uKCdjbGljaycsIChlKSA9PiB7XG4gICAgICBjb25zdCBsaSA9IGUudGFyZ2V0O1xuICAgICAgaWYgKGxpLm5vZGVOYW1lID09PSAnTEknICYmIGUub2Zmc2V0WCA8IDApIHtcblxuICAgICAgICBjb25zdCBpdGVtcyA9IFtsaSwgLi4ubGkucXVlcnlTZWxlY3RvckFsbCgnbGknKV07XG5cbiAgICAgICAgaWYgKGxpLmNsYXNzTGlzdC5jb250YWlucygnY2hlY2tlZCcpKSB7XG4gICAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaXRlbS5jbGFzc0xpc3QucmVtb3ZlKCdjaGVja2VkJyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaXRlbS5jbGFzc0xpc3QuYWRkKCdjaGVja2VkJyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH0sIGZhbHNlKTtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,63 @@
1
+ import { Plugin } from '../classes/plugin';
2
+ export class CodePlugin extends Plugin {
3
+ constructor(config = { name: 'code' }) {
4
+ super();
5
+ this.config = config;
6
+ this.config = Object.assign(Object.assign({}, config), { name: 'code', buttons: [
7
+ {
8
+ name: 'code',
9
+ 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',
10
+ click: (editor) => {
11
+ const node = editor.selection.get();
12
+ const codeEl = this._getCodeEl(node.baseNode);
13
+ if (codeEl) {
14
+ codeEl.classList.remove('code');
15
+ }
16
+ else {
17
+ editor.html.insert('<p class="code">' + editor.selection.get().toString().replace(/\n{1,}/g, '<br>') + '</p>');
18
+ }
19
+ }
20
+ }
21
+ ] });
22
+ }
23
+ initialize() {
24
+ this.editor.events.on('keydown', (e) => {
25
+ if (e.keyCode === 13) {
26
+ const selection = this.editor.selection.get();
27
+ if (selection && this._getCodeEl(selection.baseNode)) {
28
+ e.preventDefault();
29
+ e.stopPropagation();
30
+ e.stopImmediatePropagation();
31
+ let br = '<br>';
32
+ const base = selection.baseNode;
33
+ if (base.nodeName === '#text' && selection.baseOffset === base.length) {
34
+ if (!(base.nextSibling && base.nextSibling.nodeName === 'BR')) {
35
+ br += '<br>';
36
+ }
37
+ }
38
+ else {
39
+ const el = Array.from(base.childNodes).splice(selection.baseOffset - 1, 1).pop();
40
+ if (el && el.nodeName !== 'BR') {
41
+ br += '<br>';
42
+ }
43
+ }
44
+ this.editor.html.insert(br);
45
+ return false;
46
+ }
47
+ }
48
+ }, true);
49
+ }
50
+ destroy() { }
51
+ _getCodeEl(el) {
52
+ if (el) {
53
+ if (el.classList && el.classList.contains('code')) {
54
+ return el;
55
+ }
56
+ if (el.parentElement) {
57
+ return this._getCodeEl(el.parentElement);
58
+ }
59
+ }
60
+ return null;
61
+ }
62
+ }
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvaHRtbC1lZGl0b3IvcGx1Z2lucy9jb2RlLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFLM0MsTUFBTSxPQUFPLFVBQVcsU0FBUSxNQUFNO0lBRXBDLFlBQTBCLFNBQXVCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtRQUMvRCxLQUFLLEVBQUUsQ0FBQztRQURnQixXQUFNLEdBQU4sTUFBTSxDQUFpQztRQUUvRCxJQUFJLENBQUMsTUFBTSxtQ0FDTixNQUFNLEtBQ1QsSUFBSSxFQUFFLE1BQU0sRUFDWixPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLE1BQU07b0JBQ1osT0FBTyxFQUFFLG1IQUFtSDtvQkFDNUgsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7d0JBQ2hCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUM5QyxJQUFJLE1BQU0sRUFBRTs0QkFDVixNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQzt5QkFDakM7NkJBQU07NEJBQ0wsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO3lCQUMvRztvQkFDSCxDQUFDO2lCQUNGO2FBQ0YsR0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLFVBQVU7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLENBQUMsT0FBTyxLQUFLLEVBQUUsRUFBRTtnQkFDcEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBRTlDLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUNwRCxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ25CLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDcEIsQ0FBQyxDQUFDLHdCQUF3QixFQUFFLENBQUM7b0JBQzdCLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQztvQkFDaEIsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQztvQkFDaEMsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLE9BQU8sSUFBSSxTQUFTLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUU7d0JBRXJFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLEVBQUU7NEJBQzdELEVBQUUsSUFBSSxNQUFNLENBQUM7eUJBQ2Q7cUJBQ0Y7eUJBQU07d0JBQ0wsTUFBTSxFQUFFLEdBQVEsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUN0RixJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTs0QkFDOUIsRUFBRSxJQUFJLE1BQU0sQ0FBQzt5QkFDZDtxQkFDRjtvQkFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzVCLE9BQU8sS0FBSyxDQUFDO2lCQUNkO2FBQ0Y7UUFDSCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU0sT0FBTyxLQUFJLENBQUM7SUFFWCxVQUFVLENBQUMsRUFBRTtRQUVuQixJQUFJLEVBQUUsRUFBRTtZQUNOLElBQUksRUFBRSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDakQsT0FBTyxFQUFFLENBQUM7YUFDWDtZQUVELElBQUksRUFBRSxDQUFDLGFBQWEsRUFBRTtnQkFDcEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUMxQztTQUNGO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbHVnaW4gfSBmcm9tICcuLi9jbGFzc2VzL3BsdWdpbic7XG5cbmltcG9ydCB7IFBsdWdpbkNvbmZpZyB9IGZyb20gJy4vLi4vaW50ZXJmYWNlcy9wbHVnaW4tY29uZmlnJztcblxuXG5leHBvcnQgY2xhc3MgQ29kZVBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25maWc6IFBsdWdpbkNvbmZpZyA9IHsgbmFtZTogJ2NvZGUnIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgbmFtZTogJ2NvZGUnLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2NvZGUnLFxuICAgICAgICAgIHN2Z1BhdGg6ICdNOC45LDcuM0w0LjIsMTJsNC43LDQuN2wxLjEtMS4xTDYuNCwxMkwxMCw4LjRMOC45LDcuM3ogTTE1LjEsNy4zTDE0LDguNGwzLjYsMy42TDE0LDE1LjZsMS4xLDEuMWw0LjctNC43TDE1LjEsNy4zeicsXG4gICAgICAgICAgY2xpY2s6IChlZGl0b3IpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBlZGl0b3Iuc2VsZWN0aW9uLmdldCgpO1xuICAgICAgICAgICAgY29uc3QgY29kZUVsID0gdGhpcy5fZ2V0Q29kZUVsKG5vZGUuYmFzZU5vZGUpO1xuICAgICAgICAgICAgaWYgKGNvZGVFbCkge1xuICAgICAgICAgICAgICBjb2RlRWwuY2xhc3NMaXN0LnJlbW92ZSgnY29kZScpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZWRpdG9yLmh0bWwuaW5zZXJ0KCc8cCBjbGFzcz1cImNvZGVcIj4nICsgZWRpdG9yLnNlbGVjdGlvbi5nZXQoKS50b1N0cmluZygpLnJlcGxhY2UoL1xcbnsxLH0vZywnPGJyPicpICsgJzwvcD4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUoKSB7XG4gICAgdGhpcy5lZGl0b3IuZXZlbnRzLm9uKCdrZXlkb3duJywgKGUpID0+IHtcbiAgICAgIGlmIChlLmtleUNvZGUgPT09IDEzKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZWRpdG9yLnNlbGVjdGlvbi5nZXQoKTtcblxuICAgICAgICBpZiAoc2VsZWN0aW9uICYmIHRoaXMuX2dldENvZGVFbChzZWxlY3Rpb24uYmFzZU5vZGUpKSB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBsZXQgYnIgPSAnPGJyPic7XG4gICAgICAgICAgY29uc3QgYmFzZSA9IHNlbGVjdGlvbi5iYXNlTm9kZTtcbiAgICAgICAgICBpZiAoYmFzZS5ub2RlTmFtZSA9PT0gJyN0ZXh0JyAmJiBzZWxlY3Rpb24uYmFzZU9mZnNldCA9PT0gYmFzZS5sZW5ndGgpIHtcblxuICAgICAgICAgICAgaWYgKCEoYmFzZS5uZXh0U2libGluZyAmJiBiYXNlLm5leHRTaWJsaW5nLm5vZGVOYW1lID09PSAnQlInKSkge1xuICAgICAgICAgICAgICBiciArPSAnPGJyPic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGVsOiBhbnkgPSBBcnJheS5mcm9tKGJhc2UuY2hpbGROb2Rlcykuc3BsaWNlKHNlbGVjdGlvbi5iYXNlT2Zmc2V0IC0gMSwgMSkucG9wKCk7XG4gICAgICAgICAgICBpZiAoZWwgJiYgZWwubm9kZU5hbWUgIT09ICdCUicpIHtcbiAgICAgICAgICAgICAgYnIgKz0gJzxicj4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZWRpdG9yLmh0bWwuaW5zZXJ0KGJyKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCB0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCkge31cblxuICBwcml2YXRlIF9nZXRDb2RlRWwoZWwpIHtcblxuICAgIGlmIChlbCkge1xuICAgICAgaWYgKGVsLmNsYXNzTGlzdCAmJiBlbC5jbGFzc0xpc3QuY29udGFpbnMoJ2NvZGUnKSkge1xuICAgICAgICByZXR1cm4gZWw7XG4gICAgICB9XG5cbiAgICAgIGlmIChlbC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRDb2RlRWwoZWwucGFyZW50RWxlbWVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbi1wbHVnaW4uY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL3BsdWdpbnMvY29uZmlncy9tZW50aW9uLXBsdWdpbi5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsdWdpbkNvbmZpZyB9IGZyb20gJy4vLi4vLi4vaW50ZXJmYWNlcy9wbHVnaW4tY29uZmlnJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBNZW50aW9uUGx1Z2luQ29uZmlnIGV4dGVuZHMgUGx1Z2luQ29uZmlnIHtcbiAgdHJpZ2dlcj86IHN0cmluZztcbiAgbWVudUl0ZW1UZW1wbGF0ZT86IChkYXRhOiBhbnkpID0+IHN0cmluZztcbiAgc2VsZWN0ZWRUZW1wbGF0ZT86IChkYXRhOiBhbnkpID0+IHN0cmluZztcbiAgZmV0Y2g6IChrZXlvcmQ/OiBzdHJpbmcpID0+IE9ic2VydmFibGU8YW55PjtcbiAgY29udGFpbmVyQ2xhc3M/OiBzdHJpbmc7XG4gIG1lbnVJdGVtQ2xhc3M/OiBzdHJpbmc7XG4gIHRvb2x0aXA/OiBzdHJpbmc7XG4gIGljb25QYXRoPzogc3RyaW5nO1xuICBzZWxlY3RlZD86IChpdGVtOiBhbnkpID0+IHZvaWQ7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXJlY29yZC1wbHVnaW4uY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL3BsdWdpbnMvY29uZmlncy9zY3JlZW4tcmVjb3JkLXBsdWdpbi5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsdWdpbkNvbmZpZyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcGx1Z2luLWNvbmZpZyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyZWVuUmVjb3JkUGx1Z2luQ29uZmlnIGV4dGVuZHMgUGx1Z2luQ29uZmlnIHtcbiAgbmFtZT86IHN0cmluZztcbiAgbWF4V2lkdGg/OiBzdHJpbmcsXG4gIHVwbG9hZD86IChmaWxlOiBCbG9iKSA9PiBPYnNlcnZhYmxlPHN0cmluZz47XG59XG4iXX0=
@@ -0,0 +1,87 @@
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
+ constructor(config) {
7
+ super();
8
+ this.config = config;
9
+ this._guid = guid();
10
+ this.selected = (event) => {
11
+ if (this.config.selected) {
12
+ if (MentionPlugin._currentGuid === this._guid) {
13
+ this.config.selected(event.detail.item.original);
14
+ }
15
+ }
16
+ };
17
+ this.config = Object.assign(Object.assign({}, config), { buttons: [
18
+ {
19
+ name: config.name,
20
+ tooltip: config.tooltip,
21
+ svgPath: config.iconPath,
22
+ click: (editor) => {
23
+ this._closeAll();
24
+ this._tribute.showMenuForCollection(editor.el);
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
+ destroy() {
68
+ this.editor.el.removeEventListener("tribute-replaced", this.selected);
69
+ }
70
+ _closeAll() {
71
+ MentionPlugin._tributes.forEach((tribute) => {
72
+ if (tribute.menu) {
73
+ tribute.hideMenu();
74
+ }
75
+ });
76
+ }
77
+ _loadValues(keyword, cb) {
78
+ MentionPlugin._currentGuid = this._guid;
79
+ return this.config.fetch(keyword)
80
+ .subscribe((data) => {
81
+ cb(data);
82
+ });
83
+ }
84
+ }
85
+ MentionPlugin._currentGuid = null;
86
+ MentionPlugin._tributes = [];
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbi5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvaHRtbC1lZGl0b3IvcGx1Z2lucy9tZW50aW9uLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sT0FBd0IsTUFBTSxXQUFXLENBQUM7QUFJakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUcxQyxNQUFNLE9BQU8sYUFBYyxTQUFRLE1BQU07SUFPdkMsWUFBMEIsTUFBMkI7UUFDbkQsS0FBSyxFQUFFLENBQUM7UUFEZ0IsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFGN0MsVUFBSyxHQUFHLElBQUksRUFBRSxDQUFDO1FBbUVoQixhQUFRLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMxQixJQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO2dCQUN2QixJQUFHLGFBQWEsQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRTtvQkFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ2xEO2FBQ0Y7UUFDSCxDQUFDLENBQUE7UUFyRUMsSUFBSSxDQUFDLE1BQU0sbUNBQ04sTUFBTSxLQUNULE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7b0JBQ2pCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztvQkFDdkIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxRQUFRO29CQUN4QixLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTt3QkFDaEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDakQsQ0FBQztpQkFDRjthQUNGLEdBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxPQUFPLENBQUM7WUFDeEIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUM7WUFDbEQsVUFBVSxFQUFFO2dCQUNWLEdBQUcsRUFBRSxFQUFFO2dCQUNQLElBQUksRUFBRSxFQUFFO2dCQUNSLElBQUksRUFBRSxJQUFJO2FBQ1g7WUFDRCxjQUFjLEVBQUUsb0NBQW9DLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxJQUFJLEVBQUUsRUFBRTtZQUN0RixTQUFTLEVBQUUsb0NBQW9DLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxJQUFJLEVBQUUsRUFBRTtZQUNoRixPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1lBQzVCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLGdCQUFnQixFQUFFLENBQUMsSUFBc0IsRUFBRSxFQUFFO2dCQUMzQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JELENBQUM7WUFDRCxjQUFjLEVBQUUsQ0FBQyxJQUFzQixFQUFFLEVBQUU7Z0JBQ3pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUU3RCxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQyxDQUFDLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztnQkFFdkIsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLGlCQUFpQixDQUFDO2dCQUMvQixJQUFJLENBQUMsSUFBSSxFQUFFO29CQUNULElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztpQkFDM0I7Z0JBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBRW5DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUN4QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBRUwsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTSxVQUFVO1FBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLE9BQU8sSUFBSyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtnQkFDaEQsT0FBTyxLQUFLLENBQUM7YUFDZDtRQUNILENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUdULElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBVU0sT0FBTztRQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU8sU0FBUztRQUNmLGFBQWEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDMUMsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO2dCQUNoQixPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDcEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDN0IsYUFBYSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO2FBQ3RCLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2xCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO0lBQ2YsQ0FBQzs7QUFoR2MsMEJBQVksR0FBRyxJQUFJLENBQUM7QUFDcEIsdUJBQVMsR0FBRyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgVHJpYnV0ZSwgeyBUcmlidXRlSXRlbSB9IGZyb20gJ3RyaWJ1dGVqcyc7XG5cbmltcG9ydCB7IE1lbnRpb25QbHVnaW5Db25maWcgfSBmcm9tICcuL2NvbmZpZ3MvbWVudGlvbi1wbHVnaW4uY29uZmlnJztcblxuaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSAnLi4vY2xhc3Nlcy9wbHVnaW4nO1xuXG5pbXBvcnQgeyBndWlkIH0gZnJvbSAnQGZpcmVzdGl0Y2gvY29tbW9uJztcblxuXG5leHBvcnQgY2xhc3MgTWVudGlvblBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2N1cnJlbnRHdWlkID0gbnVsbDtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RyaWJ1dGVzID0gW107XG4gIHByaXZhdGUgX3RyaWJ1dGU7XG4gIHByaXZhdGUgX2d1aWQgPSBndWlkKCk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25maWc6IE1lbnRpb25QbHVnaW5Db25maWcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogY29uZmlnLm5hbWUsXG4gICAgICAgICAgdG9vbHRpcDogY29uZmlnLnRvb2x0aXAsXG4gICAgICAgICAgc3ZnUGF0aDogY29uZmlnLmljb25QYXRoLFxuICAgICAgICAgIGNsaWNrOiAoZWRpdG9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jbG9zZUFsbCgpO1xuICAgICAgICAgICAgdGhpcy5fdHJpYnV0ZS5zaG93TWVudUZvckNvbGxlY3Rpb24oZWRpdG9yLmVsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuXG4gICAgdGhpcy5fdHJpYnV0ZSA9IG5ldyBUcmlidXRlKHtcbiAgICAgICAgdmFsdWVzOiBkZWJvdW5jZSh0aGlzLl9sb2FkVmFsdWVzLmJpbmQodGhpcyksIDIwMCksXG4gICAgICAgIHNlYXJjaE9wdHM6IHtcbiAgICAgICAgICBwcmU6ICcnLFxuICAgICAgICAgIHBvc3Q6ICcnLFxuICAgICAgICAgIHNraXA6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgY29udGFpbmVyQ2xhc3M6IGBmcy1odG1sLWVkaXRvci1tZW50aW9uLWNvbnRhaW5lciAke3RoaXMuY29uZmlnLmNvbnRhaW5lckNsYXNzIHx8ICcnfWAsXG4gICAgICAgIGl0ZW1DbGFzczogYGZzLWh0bWwtZWRpdG9yLW1lbnRpb24tbWVudS1pdGVtICR7dGhpcy5jb25maWcubWVudUl0ZW1DbGFzcyB8fCAnJ31gLFxuICAgICAgICB0cmlnZ2VyOiB0aGlzLmNvbmZpZy50cmlnZ2VyLFxuICAgICAgICBhbGxvd1NwYWNlczogdHJ1ZSxcbiAgICAgICAgbWVudUl0ZW1UZW1wbGF0ZTogKGl0ZW06IFRyaWJ1dGVJdGVtPGFueT4pID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25maWcubWVudUl0ZW1UZW1wbGF0ZShpdGVtLm9yaWdpbmFsKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2VsZWN0VGVtcGxhdGU6IChpdGVtOiBUcmlidXRlSXRlbTxhbnk+KSA9PiB7XG4gICAgICAgICAgY29uc3QgdGVtcGxhdGUgPSB0aGlzLmNvbmZpZy5zZWxlY3RlZFRlbXBsYXRlKGl0ZW0ub3JpZ2luYWwpO1xuXG4gICAgICAgICAgbGV0IHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG4gICAgICAgICAgcC5pbm5lckhUTUwgPSB0ZW1wbGF0ZTtcblxuICAgICAgICAgIGxldCBub2RlID0gcC5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICAgIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgICBub2RlLmlubmVySFRNTCA9IHRlbXBsYXRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnLCAnZmFsc2UnKTtcbiAgICAgICAgICBub2RlLmNsYXNzTGlzdC5hZGQoJ2ZyLWRlbGV0YWJsZScpO1xuXG4gICAgICAgICAgcmV0dXJuIG5vZGUub3V0ZXJIVE1MO1xuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICBNZW50aW9uUGx1Z2luLl90cmlidXRlcy5wdXNoKHRoaXMuX3RyaWJ1dGUpO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUoKSB7XG4gICAgdGhpcy5fdHJpYnV0ZS5hdHRhY2godGhpcy5lZGl0b3IuZWwpO1xuICAgIHRoaXMuZWRpdG9yLmV2ZW50cy5vbigna2V5ZG93bicsIChlKSA9PiB7XG4gICAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicgJiYgIHRoaXMuX3RyaWJ1dGUuaXNBY3RpdmUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0sIHRydWUpO1xuXG4gICAgXG4gICAgdGhpcy5lZGl0b3IuZWwuYWRkRXZlbnRMaXN0ZW5lcihcInRyaWJ1dGUtcmVwbGFjZWRcIiwgdGhpcy5zZWxlY3RlZCk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0ZWQgPSAoZXZlbnQpID0+IHtcbiAgICBpZih0aGlzLmNvbmZpZy5zZWxlY3RlZCkge1xuICAgICAgaWYoTWVudGlvblBsdWdpbi5fY3VycmVudEd1aWQgPT09IHRoaXMuX2d1aWQpIHtcbiAgICAgICAgdGhpcy5jb25maWcuc2VsZWN0ZWQoZXZlbnQuZGV0YWlsLml0ZW0ub3JpZ2luYWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCkge1xuICAgIHRoaXMuZWRpdG9yLmVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmlidXRlLXJlcGxhY2VkXCIsIHRoaXMuc2VsZWN0ZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VBbGwoKSB7XG4gICAgTWVudGlvblBsdWdpbi5fdHJpYnV0ZXMuZm9yRWFjaCgodHJpYnV0ZSkgPT4ge1xuICAgICAgaWYgKHRyaWJ1dGUubWVudSkge1xuICAgICAgICB0cmlidXRlLmhpZGVNZW51KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkVmFsdWVzKGtleXdvcmQsIGNiKSB7XG4gICAgTWVudGlvblBsdWdpbi5fY3VycmVudEd1aWQgPSB0aGlzLl9ndWlkO1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5mZXRjaChrZXl3b3JkKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgY2IoZGF0YSk7XG4gICAgICAgICAgICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,13 @@
1
+ import { Plugin } from '../classes/plugin';
2
+ export class RealtimePlugin extends Plugin {
3
+ constructor(config = { name: 'realtime' }) {
4
+ super();
5
+ this.config = config;
6
+ this.config = Object.assign(Object.assign({}, config), { name: 'realtime' });
7
+ }
8
+ initialize() {
9
+ this.editor.events.on('click', (e) => {
10
+ }, false);
11
+ }
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhbHRpbWUucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL3BsdWdpbnMvcmVhbHRpbWUucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUczQyxNQUFNLE9BQU8sY0FBZSxTQUFRLE1BQU07SUFFeEMsWUFBMEIsU0FBdUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO1FBQ25FLEtBQUssRUFBRSxDQUFDO1FBRGdCLFdBQU0sR0FBTixNQUFNLENBQXFDO1FBRW5FLElBQUksQ0FBQyxNQUFNLG1DQUNOLE1BQU0sS0FDVCxJQUFJLEVBQUUsVUFBVSxHQUNqQixDQUFDO0lBQ0osQ0FBQztJQUVNLFVBQVU7UUFFZixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFFckMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ1osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGx1Z2luQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wbHVnaW4tY29uZmlnJztcblxuaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSAnLi4vY2xhc3Nlcy9wbHVnaW4nO1xuXG5cbmV4cG9ydCBjbGFzcyBSZWFsdGltZVBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25maWc6IFBsdWdpbkNvbmZpZyA9IHsgbmFtZTogJ3JlYWx0aW1lJyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIG5hbWU6ICdyZWFsdGltZScsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplKCkge1xuXG4gICAgdGhpcy5lZGl0b3IuZXZlbnRzLm9uKCdjbGljaycsIChlKSA9PiB7XG5cbiAgICB9LCBmYWxzZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,94 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Plugin } from '../classes/plugin';
3
+ import { resourceLoaderFactory } from '../utils/loader';
4
+ export class ScreenRecordPlugin extends Plugin {
5
+ constructor(config = {}) {
6
+ super();
7
+ this.config = config;
8
+ this.config = Object.assign(Object.assign({}, config), { name: config.name || 'screenRecord', buttons: [
9
+ {
10
+ name: 'screenRecord',
11
+ 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
12
+ 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
13
+ 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`,
14
+ tooltip: 'Screen Record',
15
+ click: (editor) => {
16
+ navigator.mediaDevices.getDisplayMedia({ video: true })
17
+ .then((stream) => {
18
+ const chunks = [];
19
+ const options = { mimeType: 'video/webm; codecs=vp9' };
20
+ let mediaRecorder = new MediaRecorder(stream, options);
21
+ stream.addEventListener('inactive', (e) => {
22
+ mediaRecorder.stop();
23
+ mediaRecorder = null;
24
+ stream.getTracks().forEach((track) => track.stop());
25
+ stream = null;
26
+ const blob = new Blob(chunks, { type: 'video/webm' });
27
+ config.upload(blob)
28
+ .subscribe((url) => {
29
+ 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>`);
30
+ });
31
+ });
32
+ mediaRecorder.addEventListener('dataavailable', (event) => {
33
+ if (event.data && event.data.size > 0) {
34
+ chunks.push(event.data);
35
+ }
36
+ });
37
+ mediaRecorder.start(10);
38
+ })
39
+ .catch((e) => { });
40
+ }
41
+ }
42
+ ] });
43
+ }
44
+ initialize() {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ yield resourceLoaderFactory(document).loadStyles('froala')
47
+ .toPromise();
48
+ const FroalaEditor = window.FroalaEditor;
49
+ this.editor.events.on('mouseup', (e) => {
50
+ const el = this._getEl(e.target);
51
+ if (el) {
52
+ this.editor.popups.hideAll();
53
+ this._activeEl = el;
54
+ this._showPopup(el);
55
+ }
56
+ });
57
+ FroalaEditor.POPUP_TEMPLATES["screenRecordPlugin.popup"] = '[_BUTTONS_]';
58
+ FroalaEditor.DefineIcon('popupClose', { NAME: 'trash', SVG_KEY: 'remove' });
59
+ FroalaEditor.RegisterCommand('popupClose', {
60
+ title: 'Remove',
61
+ undo: false,
62
+ focus: false,
63
+ callback: () => {
64
+ if (this._activeEl) {
65
+ this._activeEl.remove();
66
+ }
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXJlY29yZC5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvaHRtbC1lZGl0b3IvcGx1Z2lucy9zY3JlZW4tcmVjb3JkLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBS3hELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxNQUFNO0lBSTVDLFlBQTBCLFNBQW1DLEVBQUU7UUFDN0QsS0FBSyxFQUFFLENBQUM7UUFEZ0IsV0FBTSxHQUFOLE1BQU0sQ0FBK0I7UUFHN0QsSUFBSSxDQUFDLE1BQU0sbUNBQ04sTUFBTSxLQUNULElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLGNBQWMsRUFDbkMsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxjQUFjO29CQUNwQixPQUFPLEVBQUU7OzBJQUV1SDtvQkFDaEksT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO3dCQUVWLFNBQVUsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDOzZCQUMzRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTs0QkFDZixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7NEJBQ2xCLE1BQU0sT0FBTyxHQUFHLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLENBQUM7NEJBQ3ZELElBQUksYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQzs0QkFFdkQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dDQUN4QyxhQUFhLENBQUMsSUFBSSxF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Q0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQywwQkFBMEIsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU8sVUFBVSxDQUFFLEVBQUU7UUFDcEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFFaEUsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDOUI7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUvRSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVPLE1BQU0sQ0FBQyxFQUFFO1FBQ2YsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRTtZQUN0QixJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDO2dCQUMzQyxPQUFPLEVBQUUsQ0FBQztZQUVaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbkM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY3JlZW5SZWNvcmRQbHVnaW5Db25maWcgfSBmcm9tICcuL2NvbmZpZ3Mvc2NyZWVuLXJlY29yZC1wbHVnaW4uY29uZmlnJztcbmltcG9ydCB7IFBsdWdpbiB9IGZyb20gJy4uL2NsYXNzZXMvcGx1Z2luJztcbmltcG9ydCB7IHJlc291cmNlTG9hZGVyRmFjdG9yeSB9IGZyb20gJy4uL3V0aWxzL2xvYWRlcic7XG5cblxuZGVjbGFyZSB2YXIgTWVkaWFSZWNvcmRlcjogYW55O1xuXG5leHBvcnQgY2xhc3MgU2NyZWVuUmVjb3JkUGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcblxuICBwcml2YXRlIF9hY3RpdmVFbDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIGNvbmZpZzogU2NyZWVuUmVjb3JkUGx1Z2luQ29uZmlnID0ge30pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBuYW1lOiBjb25maWcubmFtZSB8fCAnc2NyZWVuUmVjb3JkJyxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdzY3JlZW5SZWNvcmQnLFxuICAgICAgICAgIHN2Z1BhdGg6IGBNMTQuNyw3Ljd2Ni4xSDcuMVY3LjdIMTQuNyBNMTYuMyw5LjZWNi45YzAtMC40LTAuMy0wLjgtMC44LTAuOEg2LjRjLTAuNCwwLTAuOCwwLjMtMC44LDAuOHY3LjZjMCwwLjQsMC4zLDAuOCwwLjgsMC44aDkuMWMwLjQsMCwwLjgtMC4zLDAuOC0wLjh2LTIuN2wxLjcsMS43YzAuMywwLjMsMC44LDAuMywxLjEsMGMwLjEtMC4xLDAuMi0wLjMsMC4yLTAuNVY4LjRjMC0wLjQtMC4zLTAuOC0wLjgtMC44XG5cdGMtMC4yLDAtMC40LDAuMS0wLjUsMC4yTDE2LjMsOS42eiBNMjEuNSwxLjZIMi45Yy0wLjcsMC0xLjMsMC43LTEuMywxLjZ2MTQuNmMwLDAuOSwwLjYsMS42LDEuMywxLjZoNy42djEuMWwtNSwxYy0wLjIsMC0wLjQsMC4zLTAuNCwwLjZjMCwwLjMsMC4yLDAuNCwwLjQsMC40YzAsMCwwLDAsMC4xLDBsNS4zLTFoMi42bDUuMywxYzAsMCwwLDAsMC4xLDBjMC4yLDAsMC40LTAuMiwwLjQtMC40XG4gIGMwLTAuMy0wLjEtMC42LTAuNC0wLjZsLTUtMXYtMS4xaDcuNmMwLjcsMCwxLjMtMC43LDEuMy0xLjZWMy4yQzIyLjksMi4zLDIyLjMsMS42LDIxLjUsMS42eiBNMjEuMSwxNy4zSDMuM1YzLjdoMTcuOEwyMS4xLDE3LjNMMjEuMSwxNy4zemAsXG4gICAgICAgICAgdG9vbHRpcDogJ1NjcmVlbiBSZWNvcmQnLFxuICAgICAgICAgIGNsaWNrOiAoZWRpdG9yKSA9PiB7XG5cbiAgICAgICAgICAgICg8YW55Pm5hdmlnYXRvcikubWVkaWFEZXZpY2VzLmdldERpc3BsYXlNZWRpYSh7IHZpZGVvOiB0cnVlIH0pXG4gICAgICAgICAgICAgIC50aGVuKChzdHJlYW0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaHVua3MgPSBbXTtcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0geyBtaW1lVHlwZTogJ3ZpZGVvL3dlYm07IGNvZGVjcz12cDknIH07XG4gICAgICAgICAgICAgICAgbGV0IG1lZGlhUmVjb3JkZXIgPSBuZXcgTWVkaWFSZWNvcmRlcihzdHJlYW0sIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgICAgc3RyZWFtLmFkZEV2ZW50TGlzdGVuZXIoJ2luYWN0aXZlJywgKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgIG1lZGlhUmVjb3JkZXIuc3RvcCgpO1xuICAgICAgICAgICAgICAgICAgbWVkaWFSZWNvcmRlciA9IG51bGw7XG4gICAgICAgICAgICAgICAgICBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCgodHJhY2spID0+IHRyYWNrLnN0b3AoKSk7XG4gICAgICAgICAgICAgICAgICBzdHJlYW0gPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoY2h1bmtzLCB7IHR5cGU6ICd2aWRlby93ZWJtJyB9KTtcbiAgICAgICAgICAgICAgICAgIGNvbmZpZy51cGxvYWQoYmxvYilcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgodXJsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRvci5odG1sLmluc2VydChgPHNwYW4gY2xhc3M9XCJmci1zY3JlZW4tcmVjb3JkIGZyLWRlbGV0YWJsZSBmci1kcmFnZ2FibGVcIj48dmlkZW8gY29udHJvbHMgc3R5bGU9XCJtYXgtd2lkdGg6JHtjb25maWcubWF4V2lkdGh9XCI+PHNvdXJjZSBzcmM9XCIke3VybH1cIiB0eXBlPVwidmlkZW8vd2VibVwiPjwvdmlkZW8+PC9zcGFuPmApO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBtZWRpYVJlY29yZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2RhdGFhdmFpbGFibGUnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhICYmIGV2ZW50LmRhdGEuc2l6ZSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtzLnB1c2goZXZlbnQuZGF0YSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBtZWRpYVJlY29yZGVyLnN0YXJ0KDEwKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmNhdGNoKChlKSA9PiB7IH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaW5pdGlhbGl6ZSgpIHtcbiAgICBhd2FpdCByZXNvdXJjZUxvYWRlckZhY3RvcnkoZG9jdW1lbnQpLmxvYWRTdHlsZXMoJ2Zyb2FsYScpXG4gICAgICAudG9Qcm9taXNlKCk7XG5cbiAgICBjb25zdCBGcm9hbGFFZGl0b3IgPSAod2luZG93IGFzIGFueSkuRnJvYWxhRWRpdG9yO1xuXG4gICAgdGhpcy5lZGl0b3IuZXZlbnRzLm9uKCdtb3VzZXVwJywgKGUpID0+IHtcbiAgICAgIGNvbnN0IGVsID0gdGhpcy5fZ2V0RWwoZS50YXJnZXQpO1xuXG4gICAgICBpZiAoZWwpIHtcbiAgICAgICAgdGhpcy5lZGl0b3IucG9wdXBzLmhpZGVBbGwoKTtcbiAgICAgICAgdGhpcy5fYWN0aXZlRWwgPSBlbDtcbiAgICAgICAgdGhpcy5fc2hvd1BvcHVwKGVsKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIEZyb2FsYUVkaXRvci5QT1BVUF9URU1QTEFURVNbXCJzY3JlZW5SZWNvcmRQbHVnaW4ucG9wdXBcIl0gPSAnW19CVVRUT05TX10nO1xuXG4gICAgRnJvYWxhRWRpdG9yLkRlZmluZUljb24oJ3BvcHVwQ2xvc2UnLCB7IE5BTUU6ICd0cmFzaCcsIFNWR19LRVk6ICdyZW1vdmUnIH0pO1xuICAgIEZyb2FsYUVkaXRvci5SZWdpc3RlckNvbW1hbmQoJ3BvcHVwQ2xvc2UnLCB7XG4gICAgICB0aXRsZTogJ1JlbW92ZScsXG4gICAgICB1bmRvOiBmYWxzZSxcbiAgICAgIGZvY3VzOiBmYWxzZSxcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmVFbCkge1xuICAgICAgICAgIHRoaXMuX2FjdGl2ZUVsLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVQb3B1cCgpIHtcblxuICAgIGNvbnN0IHRlbXBsYXRlID0ge1xuICAgICAgYnV0dG9uczogYDxkaXYgY2xhc3M9XCJmci1idXR0b25zXCI+JHt0aGlzLmVkaXRvci5idXR0b24uYnVpbGRMaXN0KFsncG9wdXBDbG9zZSddKX08L2Rpdj5gLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5lZGl0b3IucG9wdXBzLmNyZWF0ZSgnc2NyZWVuUmVjb3JkUGx1Z2luLnBvcHVwJywgdGVtcGxhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2hvd1BvcHVwIChlbCkge1xuICAgIHZhciAkcG9wdXAgPSB0aGlzLmVkaXRvci5wb3B1cHMuZ2V0KCdzY3JlZW5SZWNvcmRQbHVnaW4ucG9wdXAnKTtcblxuICAgIGlmICghJHBvcHVwKSB7XG4gICAgICAkcG9wdXAgPSB0aGlzLl9jcmVhdGVQb3B1cCgpO1xuICAgIH1cblxuICAgIHRoaXMuZWRpdG9yLnBvcHVwcy5zZXRDb250YWluZXIoJ3NjcmVlblJlY29yZFBsdWdpbi5wb3B1cCcsIHRoaXMuZWRpdG9yLiQoZWwpKTtcblxuICAgIGNvbnN0IGxlZnQgPSBlbC5vZmZzZXRMZWZ0ICsgZWwub2Zmc2V0V2lkdGggLyAyO1xuXG4gICAgdGhpcy5lZGl0b3IucG9wdXBzLnNob3coJ3NjcmVlblJlY29yZFBsdWdpbi5wb3B1cCcsIGxlZnQsIG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RWwoZWwpIHtcbiAgICBpZiAoZWwgJiYgZWwuY2xhc3NMaXN0KSB7XG4gICAgICBpZiAoZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdmci1zY3JlZW4tcmVjb3JkJykpXG4gICAgICAgIHJldHVybiBlbDtcblxuICAgICAgcmV0dXJuIHRoaXMuX2dldEVsKGVsLnBhcmVudE5vZGUpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,86 @@
1
+ import { Inject, Injectable, Optional } from '@angular/core';
2
+ import { DOCUMENT } from '@angular/common';
3
+ import { BehaviorSubject, combineLatest } from 'rxjs';
4
+ import { concatMap, map, shareReplay, tap } from 'rxjs/operators';
5
+ import { FS_HTML_EDITOR_CONFIG } from '../injects/config.inject';
6
+ import { resourceLoaderFactory } from '../utils/loader';
7
+ import * as i0 from "@angular/core";
8
+ export class FsFroalaLoaderService {
9
+ constructor(_defaultConfig, _document) {
10
+ this._defaultConfig = _defaultConfig;
11
+ this._document = _document;
12
+ this._froalaLoaded = new BehaviorSubject(false);
13
+ this._froalaPluginsLoaded = new BehaviorSubject(false);
14
+ this._resourceLoader = resourceLoaderFactory(this._document);
15
+ this._loaded$ = combineLatest([this._froalaLoaded, this._froalaPluginsLoaded])
16
+ .pipe(map(([FroalaReady, pluginsRead]) => {
17
+ return pluginsRead && FroalaReady;
18
+ }), shareReplay(1));
19
+ if (this._defaultConfig) {
20
+ if (this._defaultConfig.assetsJSPath) {
21
+ this._resourceLoader.setResourceBase(this._defaultConfig.assetsJSPath);
22
+ }
23
+ if (this._defaultConfig.assetsCSSPath) {
24
+ this._resourceLoader.setStylesBase(this._defaultConfig.assetsCSSPath);
25
+ }
26
+ }
27
+ this._load();
28
+ }
29
+ get loaded$() {
30
+ return this._loaded$;
31
+ }
32
+ get ready() {
33
+ return this._froalaLoaded.getValue() && this._froalaPluginsLoaded.getValue();
34
+ }
35
+ get FroalaEditor() {
36
+ return this._FroalaEditor;
37
+ }
38
+ _load() {
39
+ combineLatest([
40
+ this._resourceLoader.loadResource('froala'),
41
+ this._resourceLoader.loadStyles('froala')
42
+ ])
43
+ .pipe(tap(() => {
44
+ this._FroalaEditor = window.FroalaEditor;
45
+ this._froalaDone();
46
+ }), concatMap(() => {
47
+ return this._loadPlugins();
48
+ }), tap(() => {
49
+ this._froalaPluginsDone();
50
+ }))
51
+ .subscribe();
52
+ }
53
+ _loadPlugins() {
54
+ const imports = this._defaultConfig
55
+ .froalaPlugins
56
+ .reduce((acc, pluginName) => {
57
+ const import$ = this._resourceLoader.loadResource(pluginName);
58
+ acc.push(import$);
59
+ return acc;
60
+ }, []);
61
+ return combineLatest(imports);
62
+ }
63
+ _froalaDone() {
64
+ this._froalaLoaded.next(true);
65
+ }
66
+ _froalaPluginsDone() {
67
+ this._froalaPluginsLoaded.next(true);
68
+ }
69
+ }
70
+ FsFroalaLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFroalaLoaderService, deps: [{ token: FS_HTML_EDITOR_CONFIG, optional: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
71
+ FsFroalaLoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFroalaLoaderService, providedIn: 'root' });
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFroalaLoaderService, decorators: [{
73
+ type: Injectable,
74
+ args: [{
75
+ providedIn: 'root',
76
+ }]
77
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
78
+ type: Optional
79
+ }, {
80
+ type: Inject,
81
+ args: [FS_HTML_EDITOR_CONFIG]
82
+ }] }, { type: Document, decorators: [{
83
+ type: Inject,
84
+ args: [DOCUMENT]
85
+ }] }]; } });
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvYWxhLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL3NlcnZpY2VzL2Zyb2FsYS1sb2FkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFNeEQsTUFBTSxPQUFPLHFCQUFxQjtJQWdCaEMsWUFFVSxjQUFrQyxFQUVsQyxTQUFtQjtRQUZuQixtQkFBYyxHQUFkLGNBQWMsQ0FBb0I7UUFFbEMsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQWhCckIsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyx5QkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxvQkFBZSxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV4RCxhQUFRLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQzthQUM5RSxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRTtZQUNqQyxPQUFPLFdBQVcsSUFBSSxXQUFXLENBQUM7UUFDcEMsQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7UUFRRixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRTtnQkFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQTthQUN2RTtZQUVELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUE7YUFDdEU7U0FDRjtRQUVELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQy9FLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFTyxLQUFLO1FBQ1gsYUFBYSxDQUFDO1lBQ1osSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO1lBQzNDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztTQUMxQyxDQUFDO2FBQ0MsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsYUFBYSxHQUFJLE1BQWMsQ0FBQyxZQUFZLENBQUM7WUFDbEQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRU8sWUFBWTtRQUNsQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYzthQUNoQyxhQUFhO2FBQ2IsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxFQUFFO1lBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRTlELEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFbEIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFVCxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQzs7bUhBdkZVLHFCQUFxQixrQkFpQlYscUJBQXFCLDZCQUVqQyxRQUFRO3VIQW5CUCxxQkFBcUIsY0FGcEIsTUFBTTs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFrQkksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxxQkFBcUI7OEJBR3RCLFFBQVE7MEJBRDFCLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb25jYXRNYXAsIG1hcCwgc2hhcmVSZXBsYXksIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRlNfSFRNTF9FRElUT1JfQ09ORklHIH0gZnJvbSAnLi4vaW5qZWN0cy9jb25maWcuaW5qZWN0JztcbmltcG9ydCB7IEZzSHRtbEVkaXRvckNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvaHRtbC1lZGl0b3ItY29uZmlnJztcblxuaW1wb3J0IHsgcmVzb3VyY2VMb2FkZXJGYWN0b3J5IH0gZnJvbSAnLi4vdXRpbHMvbG9hZGVyJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRnNGcm9hbGFMb2FkZXJTZXJ2aWNlIHtcblxuICBwcml2YXRlIF9Gcm9hbGFFZGl0b3I6IHVua25vd247XG5cbiAgcHJpdmF0ZSBfZnJvYWxhTG9hZGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgX2Zyb2FsYVBsdWdpbnNMb2FkZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBfcmVzb3VyY2VMb2FkZXIgPSByZXNvdXJjZUxvYWRlckZhY3RvcnkodGhpcy5fZG9jdW1lbnQpO1xuXG4gIHByaXZhdGUgX2xvYWRlZCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9mcm9hbGFMb2FkZWQsIHRoaXMuX2Zyb2FsYVBsdWdpbnNMb2FkZWRdKVxuICAgIC5waXBlKFxuICAgICAgbWFwKChbRnJvYWxhUmVhZHksIHBsdWdpbnNSZWFkXSkgPT4ge1xuICAgICAgICByZXR1cm4gcGx1Z2luc1JlYWQgJiYgRnJvYWxhUmVhZHk7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChGU19IVE1MX0VESVRPUl9DT05GSUcpXG4gICAgcHJpdmF0ZSBfZGVmYXVsdENvbmZpZzogRnNIdG1sRWRpdG9yQ29uZmlnLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpXG4gICAgcHJpdmF0ZSBfZG9jdW1lbnQ6IERvY3VtZW50LFxuICApIHtcbiAgICBpZiAodGhpcy5fZGVmYXVsdENvbmZpZykge1xuICAgICAgaWYgKHRoaXMuX2RlZmF1bHRDb25maWcuYXNzZXRzSlNQYXRoKSB7XG4gICAgICAgIHRoaXMuX3Jlc291cmNlTG9hZGVyLnNldFJlc291cmNlQmFzZSh0aGlzLl9kZWZhdWx0Q29uZmlnLmFzc2V0c0pTUGF0aClcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2RlZmF1bHRDb25maWcuYXNzZXRzQ1NTUGF0aCkge1xuICAgICAgICB0aGlzLl9yZXNvdXJjZUxvYWRlci5zZXRTdHlsZXNCYXNlKHRoaXMuX2RlZmF1bHRDb25maWcuYXNzZXRzQ1NTUGF0aClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9sb2FkKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvYWRlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRlZCQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlYWR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mcm9hbGFMb2FkZWQuZ2V0VmFsdWUoKSAmJiB0aGlzLl9mcm9hbGFQbHVnaW5zTG9hZGVkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IEZyb2FsYUVkaXRvcigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9Gcm9hbGFFZGl0b3I7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkKCkge1xuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5fcmVzb3VyY2VMb2FkZXIubG9hZFJlc291cmNlKCdmcm9hbGEnKSxcbiAgICAgIHRoaXMuX3Jlc291cmNlTG9hZGVyLmxvYWRTdHlsZXMoJ2Zyb2FsYScpXG4gICAgXSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX0Zyb2FsYUVkaXRvciA9ICh3aW5kb3cgYXMgYW55KS5Gcm9hbGFFZGl0b3I7XG4gICAgICAgICAgdGhpcy5fZnJvYWxhRG9uZSgpO1xuICAgICAgICB9KSxcbiAgICAgICAgY29uY2F0TWFwKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fbG9hZFBsdWdpbnMoKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fZnJvYWxhUGx1Z2luc0RvbmUoKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkUGx1Z2lucygpOiBPYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICBjb25zdCBpbXBvcnRzID0gdGhpcy5fZGVmYXVsdENvbmZpZ1xuICAgICAgLmZyb2FsYVBsdWdpbnNcbiAgICAgIC5yZWR1Y2UoKGFjYywgcGx1Z2luTmFtZSkgPT4ge1xuICAgICAgICBjb25zdCBpbXBvcnQkID0gdGhpcy5fcmVzb3VyY2VMb2FkZXIubG9hZFJlc291cmNlKHBsdWdpbk5hbWUpO1xuXG4gICAgICAgIGFjYy5wdXNoKGltcG9ydCQpO1xuXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChpbXBvcnRzKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Zyb2FsYURvbmUoKSB7XG4gICAgdGhpcy5fZnJvYWxhTG9hZGVkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIF9mcm9hbGFQbHVnaW5zRG9uZSgpIHtcbiAgICB0aGlzLl9mcm9hbGFQbHVnaW5zTG9hZGVkLm5leHQodHJ1ZSk7XG4gIH1cbn1cbiJdfQ==