@firestitch/html-editor 12.7.5 → 13.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/app/modules/html-editor/classes/plugin.d.ts +7 -7
  2. package/app/modules/html-editor/components/html-editor/html-editor.component.d.ts +60 -58
  3. package/app/modules/html-editor/consts/paragraph-buttons.const.d.ts +1 -1
  4. package/app/modules/html-editor/consts/rich-buttons.const.d.ts +1 -1
  5. package/app/modules/html-editor/consts/text-buttons.const.d.ts +1 -1
  6. package/app/modules/html-editor/enums/default-plugin.enum.d.ts +16 -16
  7. package/app/modules/html-editor/fs-html-editor.module.d.ts +43 -43
  8. package/app/modules/html-editor/injects/config.inject.d.ts +3 -3
  9. package/app/modules/html-editor/interfaces/html-editor-config.d.ts +40 -40
  10. package/app/modules/html-editor/interfaces/plugin-button.d.ts +12 -12
  11. package/app/modules/html-editor/interfaces/plugin-config.d.ts +5 -5
  12. package/app/modules/html-editor/plugins/checklist.plugin.d.ts +7 -7
  13. package/app/modules/html-editor/plugins/code.plugin.d.ts +9 -9
  14. package/app/modules/html-editor/plugins/configs/mention-plugin.config.d.ts +13 -13
  15. package/app/modules/html-editor/plugins/configs/screen-record-plugin.config.d.ts +7 -7
  16. package/app/modules/html-editor/plugins/mention.plugin.d.ts +15 -15
  17. package/app/modules/html-editor/plugins/realtime.plugin.d.ts +7 -7
  18. package/app/modules/html-editor/plugins/screen-record.plugin.d.ts +11 -11
  19. package/app/modules/html-editor/services/froala-loader.service.d.ts +21 -21
  20. package/app/modules/html-renderer/components/html-renderer/html-renderer.component.d.ts +12 -12
  21. package/app/modules/html-renderer/fs-html-renderer.module.d.ts +8 -8
  22. package/{esm2015/app/modules/html-editor/classes/plugin.js → esm2020/app/modules/html-editor/classes/plugin.mjs} +4 -4
  23. package/esm2020/app/modules/html-editor/components/html-editor/html-editor.component.mjs +480 -0
  24. package/{esm2015/app/modules/html-editor/consts/paragraph-buttons.const.js → esm2020/app/modules/html-editor/consts/paragraph-buttons.const.mjs} +9 -9
  25. package/{esm2015/app/modules/html-editor/consts/rich-buttons.const.js → esm2020/app/modules/html-editor/consts/rich-buttons.const.mjs} +6 -6
  26. package/{esm2015/app/modules/html-editor/consts/text-buttons.const.js → esm2020/app/modules/html-editor/consts/text-buttons.const.mjs} +18 -18
  27. package/{esm2015/app/modules/html-editor/enums/default-plugin.enum.js → esm2020/app/modules/html-editor/enums/default-plugin.enum.mjs} +1 -1
  28. package/{esm2015/app/modules/html-editor/fs-html-editor.module.js → esm2020/app/modules/html-editor/fs-html-editor.module.mjs} +72 -69
  29. package/{esm2015/app/modules/html-editor/injects/config.inject.js → esm2020/app/modules/html-editor/injects/config.inject.mjs} +3 -3
  30. package/{esm2015/app/modules/html-editor/interfaces/html-editor-config.js → esm2020/app/modules/html-editor/interfaces/html-editor-config.mjs} +1 -1
  31. package/{esm2015/app/modules/html-editor/interfaces/plugin-button.js → esm2020/app/modules/html-editor/interfaces/plugin-button.mjs} +1 -1
  32. package/{esm2015/app/modules/html-editor/interfaces/plugin-config.js → esm2020/app/modules/html-editor/interfaces/plugin-config.mjs} +1 -1
  33. package/esm2020/app/modules/html-editor/plugins/checklist.plugin.mjs +39 -0
  34. package/esm2020/app/modules/html-editor/plugins/code.plugin.mjs +67 -0
  35. package/{esm2015/app/modules/html-editor/plugins/configs/mention-plugin.config.js → esm2020/app/modules/html-editor/plugins/configs/mention-plugin.config.mjs} +1 -1
  36. package/{esm2015/app/modules/html-editor/plugins/configs/screen-record-plugin.config.js → esm2020/app/modules/html-editor/plugins/configs/screen-record-plugin.config.mjs} +1 -1
  37. package/esm2020/app/modules/html-editor/plugins/mention.plugin.mjs +90 -0
  38. package/esm2020/app/modules/html-editor/plugins/realtime.plugin.mjs +16 -0
  39. package/esm2020/app/modules/html-editor/plugins/screen-record.plugin.mjs +92 -0
  40. package/{esm2015/app/modules/html-editor/services/froala-loader.service.js → esm2020/app/modules/html-editor/services/froala-loader.service.mjs} +90 -90
  41. package/esm2020/app/modules/html-renderer/components/html-renderer/html-renderer.component.mjs +24 -0
  42. package/{esm2015/app/modules/html-renderer/fs-html-renderer.module.js → esm2020/app/modules/html-renderer/fs-html-renderer.module.mjs} +26 -26
  43. package/{esm2015/firestitch-html-editor.js → esm2020/firestitch-html-editor.mjs} +4 -4
  44. package/{esm2015/public_api.js → esm2020/public_api.mjs} +13 -13
  45. package/fesm2015/{firestitch-html-editor.js → firestitch-html-editor.mjs} +952 -952
  46. package/fesm2015/firestitch-html-editor.mjs.map +1 -0
  47. package/fesm2020/firestitch-html-editor.mjs +1014 -0
  48. package/fesm2020/firestitch-html-editor.mjs.map +1 -0
  49. package/firestitch-html-editor.d.ts +5 -5
  50. package/package.json +21 -8
  51. package/public_api.d.ts +18 -18
  52. package/styles.scss +1 -1
  53. package/bundles/firestitch-html-editor.umd.js +0 -1430
  54. package/bundles/firestitch-html-editor.umd.js.map +0 -1
  55. package/esm2015/app/modules/html-editor/components/html-editor/html-editor.component.js +0 -480
  56. package/esm2015/app/modules/html-editor/plugins/checklist.plugin.js +0 -35
  57. package/esm2015/app/modules/html-editor/plugins/code.plugin.js +0 -63
  58. package/esm2015/app/modules/html-editor/plugins/mention.plugin.js +0 -87
  59. package/esm2015/app/modules/html-editor/plugins/realtime.plugin.js +0 -13
  60. package/esm2015/app/modules/html-editor/plugins/screen-record.plugin.js +0 -91
  61. package/esm2015/app/modules/html-renderer/components/html-renderer/html-renderer.component.js +0 -29
  62. package/fesm2015/firestitch-html-editor.js.map +0 -1
@@ -1,19 +1,19 @@
1
- export const TextButtons = [
2
- 'paragraphFormat',
3
- 'code',
4
- 'bold',
5
- 'italic',
6
- 'underline',
7
- 'strikeThrough',
8
- 'subscript',
9
- 'superscript',
10
- 'fontFamily',
11
- 'fontSize',
12
- 'textColor',
13
- 'backgroundColor',
14
- 'inlineClass',
15
- 'inlineStyle',
16
- 'clearFormatting',
17
- 'quote',
18
- ];
1
+ export const TextButtons = [
2
+ 'paragraphFormat',
3
+ 'code',
4
+ 'bold',
5
+ 'italic',
6
+ 'underline',
7
+ 'strikeThrough',
8
+ 'subscript',
9
+ 'superscript',
10
+ 'fontFamily',
11
+ 'fontSize',
12
+ 'textColor',
13
+ 'backgroundColor',
14
+ 'inlineClass',
15
+ 'inlineStyle',
16
+ 'clearFormatting',
17
+ 'quote',
18
+ ];
19
19
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1idXR0b25zLmNvbnN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2NvbnN0cy90ZXh0LWJ1dHRvbnMuY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHO0lBQ3pCLGlCQUFpQjtJQUNqQixNQUFNO0lBQ04sTUFBTTtJQUNOLFFBQVE7SUFDUixXQUFXO0lBQ1gsZUFBZTtJQUNmLFdBQVc7SUFDWCxhQUFhO0lBQ2IsWUFBWTtJQUNaLFVBQVU7SUFDVixXQUFXO0lBQ1gsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixhQUFhO0lBQ2IsaUJBQWlCO0lBQ2pCLE9BQU87Q0FDUixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFRleHRCdXR0b25zID0gW1xuICAncGFyYWdyYXBoRm9ybWF0JyxcbiAgJ2NvZGUnLFxuICAnYm9sZCcsXG4gICdpdGFsaWMnLFxuICAndW5kZXJsaW5lJyxcbiAgJ3N0cmlrZVRocm91Z2gnLFxuICAnc3Vic2NyaXB0JyxcbiAgJ3N1cGVyc2NyaXB0JyxcbiAgJ2ZvbnRGYW1pbHknLFxuICAnZm9udFNpemUnLFxuICAndGV4dENvbG9yJyxcbiAgJ2JhY2tncm91bmRDb2xvcicsXG4gICdpbmxpbmVDbGFzcycsXG4gICdpbmxpbmVTdHlsZScsXG4gICdjbGVhckZvcm1hdHRpbmcnLFxuICAncXVvdGUnLFxuXTtcbiJdfQ==
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1wbHVnaW4uZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9odG1sLWVkaXRvci9lbnVtcy9kZWZhdWx0LXBsdWdpbi5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW51bSBGcm9hbGFQbHVnaW4ge1xuICBBbGlnbiA9ICdhbGlnbicsXG4gIENvbG9ycyA9ICdjb2xvcnMnLFxuICBJbWFnZSA9ICdpbWFnZScsXG4gIExpbmsgPSAnbGluaycsXG4gIExpc3RzID0gJ2xpc3RzJyxcbiAgUGFyYWdyYXBoRm9ybWF0ID0gJ3BhcmFncmFwaF9mb3JtYXQnLFxuICBUYWJsZSA9ICd0YWJsZScsXG4gIFVybCA9ICd1cmwnLFxuICBWaWRlbyA9ICd2aWRlbycsXG4gIFF1b3RlID0gJ3F1b3RlJyxcbiAgRHJhZ2dhYmxlID0gJ2RyYWdnYWJsZScsXG4gIEZvbnRTaXplID0gJ2ZvbnRfc2l6ZScsXG4gIFF1aWNrSW5zZXJ0ID0gJ3F1aWNrX2luc2VydCcsXG4gIExpbmVIZWlnaHQgPSAnbGluZV9oZWlnaHQnLFxufVxuIl19
@@ -1,69 +1,72 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { FsLabelModule } from '@firestitch/label';
4
- import { FsSkeletonModule } from '@firestitch/skeleton';
5
- import { FsHtmlRendererModule } from '../html-renderer/fs-html-renderer.module';
6
- import { FsHtmlEditorComponent } from './components/html-editor/html-editor.component';
7
- import { FS_HTML_EDITOR_CONFIG, FS_HTML_EDITOR_DEFAULT_CONFIG } from './injects/config.inject';
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
- "line_height" /* LineHeight */,
67
- ] }, config);
68
- }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtaHRtbC1lZGl0b3IubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2ZzLWh0bWwtZWRpdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRXZGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQW1CL0YsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLFNBQTZCLEVBQUU7UUFDNUMsT0FBTztZQUNMLFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsU0FBUyxFQUFFO2dCQUNULEVBQUUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7Z0JBQzVEO29CQUNFLE9BQU8sRUFBRSxxQkFBcUI7b0JBQzlCLFVBQVUsRUFBRSx5QkFBeUI7b0JBQ3JDLElBQUksRUFBRSxDQUFDLDZCQUE2QixDQUFDO2lCQUN0QzthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7O2dIQWJVLGtCQUFrQjtpSEFBbEIsa0JBQWtCLGlCQUgzQixxQkFBcUIsYUFWckIsWUFBWTtRQUVaLGdCQUFnQjtRQUNoQixhQUFhO1FBQ2Isb0JBQW9CLGFBR3BCLHFCQUFxQjtpSEFNWixrQkFBa0IsWUFkcEI7WUFDUCxZQUFZO1lBRVosZ0JBQWdCO1lBQ2hCLGFBQWE7WUFDYixvQkFBb0I7U0FDckI7NEZBUVUsa0JBQWtCO2tCQWY5QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUVaLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixvQkFBb0I7cUJBQ3JCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxxQkFBcUI7cUJBQ3RCO29CQUNELFlBQVksRUFBRTt3QkFDWixxQkFBcUI7cUJBQ3RCO2lCQUNGOztBQWlCRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsTUFBMEI7SUFDbEUsdUJBQ0UsYUFBYSxFQUFFOzs7Ozs7Ozs7Ozs7OztTQWNkLElBQ0UsTUFBTSxFQUNUO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBGc0xhYmVsTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbGFiZWwnO1xuaW1wb3J0IHsgRnNTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL3NrZWxldG9uJztcblxuaW1wb3J0IHsgRnNIdG1sUmVuZGVyZXJNb2R1bGUgfSBmcm9tICcuLi9odG1sLXJlbmRlcmVyL2ZzLWh0bWwtcmVuZGVyZXIubW9kdWxlJztcbmltcG9ydCB7IEZzSHRtbEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9odG1sLWVkaXRvci9odG1sLWVkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRnJvYWxhUGx1Z2luIH0gZnJvbSAnLi9lbnVtcy9kZWZhdWx0LXBsdWdpbi5lbnVtJztcbmltcG9ydCB7IEZTX0hUTUxfRURJVE9SX0NPTkZJRywgRlNfSFRNTF9FRElUT1JfREVGQVVMVF9DT05GSUcgfSBmcm9tICcuL2luamVjdHMvY29uZmlnLmluamVjdCc7XG5pbXBvcnQgeyBGc0h0bWxFZGl0b3JDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvaHRtbC1lZGl0b3ItY29uZmlnJztcblxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuXG4gICAgRnNTa2VsZXRvbk1vZHVsZSxcbiAgICBGc0xhYmVsTW9kdWxlLFxuICAgIEZzSHRtbFJlbmRlcmVyTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRnNIdG1sRWRpdG9yQ29tcG9uZW50LFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBGc0h0bWxFZGl0b3JDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzSHRtbEVkaXRvck1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZzogRnNIdG1sRWRpdG9yQ29uZmlnID0ge30pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEZzSHRtbEVkaXRvck1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogRnNIdG1sRWRpdG9yTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogRlNfSFRNTF9FRElUT1JfREVGQVVMVF9DT05GSUcsIHVzZVZhbHVlOiBjb25maWcgfSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEZTX0hUTUxfRURJVE9SX0NPTkZJRyxcbiAgICAgICAgICB1c2VGYWN0b3J5OiBGc0h0bWxFZGl0b3JDb25maWdGYWN0b3J5LFxuICAgICAgICAgIGRlcHM6IFtGU19IVE1MX0VESVRPUl9ERUZBVUxUX0NPTkZJR11cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEZzSHRtbEVkaXRvckNvbmZpZ0ZhY3RvcnkoY29uZmlnOiBGc0h0bWxFZGl0b3JDb25maWcpIHtcbiAgcmV0dXJuIHtcbiAgICBmcm9hbGFQbHVnaW5zOiBbXG4gICAgICBGcm9hbGFQbHVnaW4uQWxpZ24sXG4gICAgICBGcm9hbGFQbHVnaW4uQ29sb3JzLFxuICAgICAgRnJvYWxhUGx1Z2luLkltYWdlLFxuICAgICAgRnJvYWxhUGx1Z2luLkxpbmssXG4gICAgICBGcm9hbGFQbHVnaW4uTGlzdHMsXG4gICAgICBGcm9hbGFQbHVnaW4uUGFyYWdyYXBoRm9ybWF0LFxuICAgICAgRnJvYWxhUGx1Z2luLlF1b3RlLFxuICAgICAgRnJvYWxhUGx1Z2luLlRhYmxlLFxuICAgICAgRnJvYWxhUGx1Z2luLlVybCxcbiAgICAgIEZyb2FsYVBsdWdpbi5WaWRlbyxcbiAgICAgIEZyb2FsYVBsdWdpbi5EcmFnZ2FibGUsXG4gICAgICBGcm9hbGFQbHVnaW4uRm9udFNpemUsXG4gICAgICBGcm9hbGFQbHVnaW4uTGluZUhlaWdodCxcbiAgICBdLFxuICAgIC4uLmNvbmZpZ1xuICB9O1xufVxuIl19
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { FsLabelModule } from '@firestitch/label';
4
+ import { FsSkeletonModule } from '@firestitch/skeleton';
5
+ import { FsHtmlRendererModule } from '../html-renderer/fs-html-renderer.module';
6
+ import { FsHtmlEditorComponent } from './components/html-editor/html-editor.component';
7
+ import { FS_HTML_EDITOR_CONFIG, FS_HTML_EDITOR_DEFAULT_CONFIG } from './injects/config.inject';
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: "13.4.0", ngImport: i0, type: FsHtmlEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
25
+ FsHtmlEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.4.0", 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: "13.4.0", ngImport: i0, type: FsHtmlEditorModule, imports: [[
30
+ CommonModule,
31
+ FsSkeletonModule,
32
+ FsLabelModule,
33
+ FsHtmlRendererModule,
34
+ ]] });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", 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 {
54
+ froalaPlugins: [
55
+ "align" /* Align */,
56
+ "colors" /* Colors */,
57
+ "image" /* Image */,
58
+ "link" /* Link */,
59
+ "lists" /* Lists */,
60
+ "paragraph_format" /* ParagraphFormat */,
61
+ "quote" /* Quote */,
62
+ "table" /* Table */,
63
+ "url" /* Url */,
64
+ "video" /* Video */,
65
+ "draggable" /* Draggable */,
66
+ "font_size" /* FontSize */,
67
+ "line_height" /* LineHeight */,
68
+ ],
69
+ ...config
70
+ };
71
+ }
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtaHRtbC1lZGl0b3IubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2ZzLWh0bWwtZWRpdG9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRXZGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQW1CL0YsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLFNBQTZCLEVBQUU7UUFDNUMsT0FBTztZQUNMLFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsU0FBUyxFQUFFO2dCQUNULEVBQUUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7Z0JBQzVEO29CQUNFLE9BQU8sRUFBRSxxQkFBcUI7b0JBQzlCLFVBQVUsRUFBRSx5QkFBeUI7b0JBQ3JDLElBQUksRUFBRSxDQUFDLDZCQUE2QixDQUFDO2lCQUN0QzthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7OytHQWJVLGtCQUFrQjtnSEFBbEIsa0JBQWtCLGlCQUgzQixxQkFBcUIsYUFWckIsWUFBWTtRQUVaLGdCQUFnQjtRQUNoQixhQUFhO1FBQ2Isb0JBQW9CLGFBR3BCLHFCQUFxQjtnSEFNWixrQkFBa0IsWUFkcEI7WUFDUCxZQUFZO1lBRVosZ0JBQWdCO1lBQ2hCLGFBQWE7WUFDYixvQkFBb0I7U0FDckI7MkZBUVUsa0JBQWtCO2tCQWY5QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUVaLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixvQkFBb0I7cUJBQ3JCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxxQkFBcUI7cUJBQ3RCO29CQUNELFlBQVksRUFBRTt3QkFDWixxQkFBcUI7cUJBQ3RCO2lCQUNGOztBQWlCRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsTUFBMEI7SUFDbEUsT0FBTztRQUNMLGFBQWEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7U0FjZDtRQUNELEdBQUcsTUFBTTtLQUNWLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEZzTGFiZWxNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9sYWJlbCc7XG5pbXBvcnQgeyBGc1NrZWxldG9uTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvc2tlbGV0b24nO1xuXG5pbXBvcnQgeyBGc0h0bWxSZW5kZXJlck1vZHVsZSB9IGZyb20gJy4uL2h0bWwtcmVuZGVyZXIvZnMtaHRtbC1yZW5kZXJlci5tb2R1bGUnO1xuaW1wb3J0IHsgRnNIdG1sRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2h0bWwtZWRpdG9yL2h0bWwtZWRpdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGcm9hbGFQbHVnaW4gfSBmcm9tICcuL2VudW1zL2RlZmF1bHQtcGx1Z2luLmVudW0nO1xuaW1wb3J0IHsgRlNfSFRNTF9FRElUT1JfQ09ORklHLCBGU19IVE1MX0VESVRPUl9ERUZBVUxUX0NPTkZJRyB9IGZyb20gJy4vaW5qZWN0cy9jb25maWcuaW5qZWN0JztcbmltcG9ydCB7IEZzSHRtbEVkaXRvckNvbmZpZyB9IGZyb20gJy4vaW50ZXJmYWNlcy9odG1sLWVkaXRvci1jb25maWcnO1xuXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG5cbiAgICBGc1NrZWxldG9uTW9kdWxlLFxuICAgIEZzTGFiZWxNb2R1bGUsXG4gICAgRnNIdG1sUmVuZGVyZXJNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBGc0h0bWxFZGl0b3JDb21wb25lbnQsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEZzSHRtbEVkaXRvckNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNIdG1sRWRpdG9yTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoY29uZmlnOiBGc0h0bWxFZGl0b3JDb25maWcgPSB7fSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RnNIdG1sRWRpdG9yTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBGc0h0bWxFZGl0b3JNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBGU19IVE1MX0VESVRPUl9ERUZBVUxUX0NPTkZJRywgdXNlVmFsdWU6IGNvbmZpZyB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogRlNfSFRNTF9FRElUT1JfQ09ORklHLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IEZzSHRtbEVkaXRvckNvbmZpZ0ZhY3RvcnksXG4gICAgICAgICAgZGVwczogW0ZTX0hUTUxfRURJVE9SX0RFRkFVTFRfQ09ORklHXVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gRnNIdG1sRWRpdG9yQ29uZmlnRmFjdG9yeShjb25maWc6IEZzSHRtbEVkaXRvckNvbmZpZykge1xuICByZXR1cm4ge1xuICAgIGZyb2FsYVBsdWdpbnM6IFtcbiAgICAgIEZyb2FsYVBsdWdpbi5BbGlnbixcbiAgICAgIEZyb2FsYVBsdWdpbi5Db2xvcnMsXG4gICAgICBGcm9hbGFQbHVnaW4uSW1hZ2UsXG4gICAgICBGcm9hbGFQbHVnaW4uTGluayxcbiAgICAgIEZyb2FsYVBsdWdpbi5MaXN0cyxcbiAgICAgIEZyb2FsYVBsdWdpbi5QYXJhZ3JhcGhGb3JtYXQsXG4gICAgICBGcm9hbGFQbHVnaW4uUXVvdGUsXG4gICAgICBGcm9hbGFQbHVnaW4uVGFibGUsXG4gICAgICBGcm9hbGFQbHVnaW4uVXJsLFxuICAgICAgRnJvYWxhUGx1Z2luLlZpZGVvLFxuICAgICAgRnJvYWxhUGx1Z2luLkRyYWdnYWJsZSxcbiAgICAgIEZyb2FsYVBsdWdpbi5Gb250U2l6ZSxcbiAgICAgIEZyb2FsYVBsdWdpbi5MaW5lSGVpZ2h0LFxuICAgIF0sXG4gICAgLi4uY29uZmlnXG4gIH07XG59XG4iXX0=
@@ -1,4 +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');
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
4
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmluamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9odG1sLWVkaXRvci9pbmplY3RzL2NvbmZpZy5pbmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLGNBQWMsQ0FBUSwrQkFBK0IsQ0FBQyxDQUFDO0FBQ3hHLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFRLHVCQUF1QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgRlNfSFRNTF9FRElUT1JfREVGQVVMVF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55W10+KCdmcy1odG1sLWVkaXRvci5kZWZhdWx0LWNvbmZpZycpO1xuZXhwb3J0IGNvbnN0IEZTX0hUTUxfRURJVE9SX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnlbXT4oJ2ZzLWh0bWwtZWRpdG9yLmNvbmZpZycpO1xuIl19
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1lZGl0b3ItY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL2ludGVyZmFjZXMvaHRtbC1lZGl0b3ItY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFBsdWdpbiB9IGZyb20gJy4uL2NsYXNzZXMvcGx1Z2luJztcbmltcG9ydCB7IEZyb2FsYVBsdWdpbiB9IGZyb20gJy4uL2VudW1zL2RlZmF1bHQtcGx1Z2luLmVudW0nO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRnNIdG1sRWRpdG9yQ29uZmlnIHtcbiAgaW1hZ2U/OiBGc0h0bWxFZGl0b3JVcGxvYWRDb25maWc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBoaW50Pzogc3RyaW5nO1xuICBjaGFuZ2U/OiBGdW5jdGlvbjtcbiAgaW5pdE9uQ2xpY2s/OiBib29sZWFuO1xuICBpbml0Q2xpY2s/OiAoZXZlbnQ/OiBVSUV2ZW50KSA9PiB2b2lkO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xuICBhdXRvZm9jdXM/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGFjdGl2YXRpb25LZXk/OiBhbnk7XG4gIHRvb2x0aXA/OiBzdHJpbmc7XG4gIHBsdWdpbnM/OiBQbHVnaW5bXTtcbiAgZnJvYWxhUGx1Z2lucz86IEZyb2FsYVBsdWdpbltdO1xuICBmcm9hbGFDb25maWc/OiBhbnk7XG4gIGFzc2V0c0pTUGF0aD86IHN0cmluZztcbiAgYXNzZXRzQ1NTUGF0aD86IHN0cmluZztcbiAgYnV0dG9ucz86IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgc3ZnS2V5Pzogc3RyaW5nO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIGZvY3VzPzogYm9vbGVhbjtcbiAgICB1bmRvPzogYm9vbGVhbjtcbiAgICByZWZyZXNoQWZ0ZXJDYWxsYmFjaz86IGJvb2xlYW47XG4gICAgY2xpY2s6IChlZGl0b3I6IGFueSkgPT4gdm9pZDtcbiAgfVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZzSHRtbEVkaXRvclVwbG9hZENvbmZpZyB7XG4gIHdpZHRoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBoZWlnaHQ/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHF1YWxpdHk/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIGZvcm1hdD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgbWluV2lkdGg/OiBudW1iZXI7XG4gIG1pbkhlaWdodD86IG51bWJlcjtcbiAgdXBsb2FkPzogKGZpbGU6IEJsb2IpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWJ1dHRvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9odG1sLWVkaXRvci9pbnRlcmZhY2VzL3BsdWdpbi1idXR0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5CdXR0b24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBzdmdQYXRoPzogc3RyaW5nO1xuICB1bmRvPzogYm9vbGVhbjtcbiAgdG9vbHRpcD86IHN0cmluZztcbiAgZm9jdXM/OiBib29sZWFuO1xuICBzaG93T25Nb2JpbGU/OiBib29sZWFuO1xuICByZWZyZXNoQWZ0ZXJDYWxsYmFjaz86IGJvb2xlYW47XG4gIGNsaWNrPzogKGVkaXRvcikgPT4gdm9pZDtcbiAgcmVmcmVzaD86IChlZGl0b3IsIGJ1dHRvbikgPT4gdm9pZDtcbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9odG1sLWVkaXRvci9pbnRlcmZhY2VzL3BsdWdpbi1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsdWdpbkJ1dHRvbiB9IGZyb20gJy4vcGx1Z2luLWJ1dHRvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luQ29uZmlnIHtcbiAgbmFtZT86IHN0cmluZztcbiAgYnV0dG9ucz86IFBsdWdpbkJ1dHRvbltdO1xufVxuIl19
@@ -0,0 +1,39 @@
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 = {
7
+ ...config,
8
+ name: 'checklist',
9
+ buttons: [
10
+ {
11
+ name: 'checklist',
12
+ 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',
13
+ click: (editor) => {
14
+ editor.html.insert('<ul class="checklist"><li></li></ul>');
15
+ }
16
+ }
17
+ ]
18
+ };
19
+ }
20
+ initialize() {
21
+ this.editor.events.on('click', (e) => {
22
+ const li = e.target;
23
+ if (li.nodeName === 'LI' && e.offsetX < 0) {
24
+ const items = [li, ...li.querySelectorAll('li')];
25
+ if (li.classList.contains('checked')) {
26
+ items.forEach((item) => {
27
+ item.classList.remove('checked');
28
+ });
29
+ }
30
+ else {
31
+ items.forEach((item) => {
32
+ item.classList.add('checked');
33
+ });
34
+ }
35
+ }
36
+ }, false);
37
+ }
38
+ }
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tsaXN0LnBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9odG1sLWVkaXRvci9wbHVnaW5zL2NoZWNrbGlzdC5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSzNDLE1BQU0sT0FBTyxlQUFnQixTQUFRLE1BQU07SUFFekMsWUFBMEIsU0FBdUIsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO1FBQ3BFLEtBQUssRUFBRSxDQUFDO1FBRGdCLFdBQU0sR0FBTixNQUFNLENBQXNDO1FBRXBFLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixHQUFHLE1BQU07WUFDVCxJQUFJLEVBQUUsV0FBVztZQUNqQixPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLE9BQU8sRUFBRSw0S0FBNEs7b0JBQ3JMLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO3dCQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO29CQUM3RCxDQUFDO2lCQUNGO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLFVBQVU7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDbkMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNwQixJQUFJLEVBQUUsQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFO2dCQUV6QyxNQUFNLEtBQUssR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUVqRCxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFO29CQUNwQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7d0JBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUNuQyxDQUFDLENBQUMsQ0FBQztpQkFDSjtxQkFBTTtvQkFDTCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7d0JBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUNoQyxDQUFDLENBQUMsQ0FBQztpQkFDSjthQUNGO1FBRUgsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ1osQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSAnLi4vY2xhc3Nlcy9wbHVnaW4nO1xuXG5pbXBvcnQgeyBQbHVnaW5Db25maWcgfSBmcm9tICcuLy4uL2ludGVyZmFjZXMvcGx1Z2luLWNvbmZpZyc7XG5cblxuZXhwb3J0IGNsYXNzIENoZWNrbGlzdFBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25maWc6IFBsdWdpbkNvbmZpZyA9IHsgbmFtZTogJ2NoZWNrbGlzdCcgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBuYW1lOiAnY2hlY2tsaXN0JyxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdjaGVja2xpc3QnLFxuICAgICAgICAgIHN2Z1BhdGg6ICdNOC40LDEwLjNsLTEuMiwxLjJsNCw0TDIwLDYuN2wtMS4yLTEuMmwtNy42LDcuNkw4LjQsMTAuM3ogTTE4LjIsMTguMkg1LjhWNS44aDguOVY0SDUuOEM0LjgsNCw0LDQuOCw0LDUuOHYxMi40YzAsMSwwLjgsMS44LDEuOCwxLjhoMTIuNGMxLDAsMS44LTAuOCwxLjgtMS44di03LjFoLTEuOFYxOC4yeicsXG4gICAgICAgICAgY2xpY2s6IChlZGl0b3IpID0+IHtcbiAgICAgICAgICAgIGVkaXRvci5odG1sLmluc2VydCgnPHVsIGNsYXNzPVwiY2hlY2tsaXN0XCI+PGxpPjwvbGk+PC91bD4nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUoKSB7XG4gICAgdGhpcy5lZGl0b3IuZXZlbnRzLm9uKCdjbGljaycsIChlKSA9PiB7XG4gICAgICBjb25zdCBsaSA9IGUudGFyZ2V0O1xuICAgICAgaWYgKGxpLm5vZGVOYW1lID09PSAnTEknICYmIGUub2Zmc2V0WCA8IDApIHtcblxuICAgICAgICBjb25zdCBpdGVtcyA9IFtsaSwgLi4ubGkucXVlcnlTZWxlY3RvckFsbCgnbGknKV07XG5cbiAgICAgICAgaWYgKGxpLmNsYXNzTGlzdC5jb250YWlucygnY2hlY2tlZCcpKSB7XG4gICAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaXRlbS5jbGFzc0xpc3QucmVtb3ZlKCdjaGVja2VkJyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaXRlbS5jbGFzc0xpc3QuYWRkKCdjaGVja2VkJyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH0sIGZhbHNlKTtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,67 @@
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 = {
7
+ ...config,
8
+ name: 'code',
9
+ buttons: [
10
+ {
11
+ name: 'code',
12
+ 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',
13
+ click: (editor) => {
14
+ const node = editor.selection.get();
15
+ const codeEl = this._getCodeEl(node.baseNode);
16
+ if (codeEl) {
17
+ codeEl.classList.remove('code');
18
+ }
19
+ else {
20
+ editor.html.insert('<p class="code">' + editor.selection.get().toString().replace(/\n{1,}/g, '<br>') + '</p>');
21
+ }
22
+ }
23
+ }
24
+ ]
25
+ };
26
+ }
27
+ initialize() {
28
+ this.editor.events.on('keydown', (e) => {
29
+ if (e.keyCode === 13) {
30
+ const selection = this.editor.selection.get();
31
+ if (selection && this._getCodeEl(selection.baseNode)) {
32
+ e.preventDefault();
33
+ e.stopPropagation();
34
+ e.stopImmediatePropagation();
35
+ let br = '<br>';
36
+ const base = selection.baseNode;
37
+ if (base.nodeName === '#text' && selection.baseOffset === base.length) {
38
+ if (!(base.nextSibling && base.nextSibling.nodeName === 'BR')) {
39
+ br += '<br>';
40
+ }
41
+ }
42
+ else {
43
+ const el = Array.from(base.childNodes).splice(selection.baseOffset - 1, 1).pop();
44
+ if (el && el.nodeName !== 'BR') {
45
+ br += '<br>';
46
+ }
47
+ }
48
+ this.editor.html.insert(br);
49
+ return false;
50
+ }
51
+ }
52
+ }, true);
53
+ }
54
+ destroy() { }
55
+ _getCodeEl(el) {
56
+ if (el) {
57
+ if (el.classList && el.classList.contains('code')) {
58
+ return el;
59
+ }
60
+ if (el.parentElement) {
61
+ return this._getCodeEl(el.parentElement);
62
+ }
63
+ }
64
+ return null;
65
+ }
66
+ }
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvaHRtbC1lZGl0b3IvcGx1Z2lucy9jb2RlLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFLM0MsTUFBTSxPQUFPLFVBQVcsU0FBUSxNQUFNO0lBRXBDLFlBQTBCLFNBQXVCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtRQUMvRCxLQUFLLEVBQUUsQ0FBQztRQURnQixXQUFNLEdBQU4sTUFBTSxDQUFpQztRQUUvRCxJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osR0FBRyxNQUFNO1lBQ1QsSUFBSSxFQUFFLE1BQU07WUFDWixPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLE1BQU07b0JBQ1osT0FBTyxFQUFFLG1IQUFtSDtvQkFDNUgsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7d0JBQ2hCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUM5QyxJQUFJLE1BQU0sRUFBRTs0QkFDVixNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQzt5QkFDakM7NkJBQU07NEJBQ0wsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO3lCQUMvRztvQkFDSCxDQUFDO2lCQUNGO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLFVBQVU7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLENBQUMsT0FBTyxLQUFLLEVBQUUsRUFBRTtnQkFDcEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBRTlDLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUNwRCxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ25CLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDcEIsQ0FBQyxDQUFDLHdCQUF3QixFQUFFLENBQUM7b0JBQzdCLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQztvQkFDaEIsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQztvQkFDaEMsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLE9BQU8sSUFBSSxTQUFTLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUU7d0JBRXJFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLEVBQUU7NEJBQzdELEVBQUUsSUFBSSxNQUFNLENBQUM7eUJBQ2Q7cUJBQ0Y7eUJBQU07d0JBQ0wsTUFBTSxFQUFFLEdBQVEsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUN0RixJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTs0QkFDOUIsRUFBRSxJQUFJLE1BQU0sQ0FBQzt5QkFDZDtxQkFDRjtvQkFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzVCLE9BQU8sS0FBSyxDQUFDO2lCQUNkO2FBQ0Y7UUFDSCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU0sT0FBTyxLQUFJLENBQUM7SUFFWCxVQUFVLENBQUMsRUFBRTtRQUVuQixJQUFJLEVBQUUsRUFBRTtZQUNOLElBQUksRUFBRSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDakQsT0FBTyxFQUFFLENBQUM7YUFDWDtZQUVELElBQUksRUFBRSxDQUFDLGFBQWEsRUFBRTtnQkFDcEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUMxQztTQUNGO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbHVnaW4gfSBmcm9tICcuLi9jbGFzc2VzL3BsdWdpbic7XG5cbmltcG9ydCB7IFBsdWdpbkNvbmZpZyB9IGZyb20gJy4vLi4vaW50ZXJmYWNlcy9wbHVnaW4tY29uZmlnJztcblxuXG5leHBvcnQgY2xhc3MgQ29kZVBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25maWc6IFBsdWdpbkNvbmZpZyA9IHsgbmFtZTogJ2NvZGUnIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgbmFtZTogJ2NvZGUnLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ2NvZGUnLFxuICAgICAgICAgIHN2Z1BhdGg6ICdNOC45LDcuM0w0LjIsMTJsNC43LDQuN2wxLjEtMS4xTDYuNCwxMkwxMCw4LjRMOC45LDcuM3ogTTE1LjEsNy4zTDE0LDguNGwzLjYsMy42TDE0LDE1LjZsMS4xLDEuMWw0LjctNC43TDE1LjEsNy4zeicsXG4gICAgICAgICAgY2xpY2s6IChlZGl0b3IpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBlZGl0b3Iuc2VsZWN0aW9uLmdldCgpO1xuICAgICAgICAgICAgY29uc3QgY29kZUVsID0gdGhpcy5fZ2V0Q29kZUVsKG5vZGUuYmFzZU5vZGUpO1xuICAgICAgICAgICAgaWYgKGNvZGVFbCkge1xuICAgICAgICAgICAgICBjb2RlRWwuY2xhc3NMaXN0LnJlbW92ZSgnY29kZScpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZWRpdG9yLmh0bWwuaW5zZXJ0KCc8cCBjbGFzcz1cImNvZGVcIj4nICsgZWRpdG9yLnNlbGVjdGlvbi5nZXQoKS50b1N0cmluZygpLnJlcGxhY2UoL1xcbnsxLH0vZywnPGJyPicpICsgJzwvcD4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUoKSB7XG4gICAgdGhpcy5lZGl0b3IuZXZlbnRzLm9uKCdrZXlkb3duJywgKGUpID0+IHtcbiAgICAgIGlmIChlLmtleUNvZGUgPT09IDEzKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuZWRpdG9yLnNlbGVjdGlvbi5nZXQoKTtcblxuICAgICAgICBpZiAoc2VsZWN0aW9uICYmIHRoaXMuX2dldENvZGVFbChzZWxlY3Rpb24uYmFzZU5vZGUpKSB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBsZXQgYnIgPSAnPGJyPic7XG4gICAgICAgICAgY29uc3QgYmFzZSA9IHNlbGVjdGlvbi5iYXNlTm9kZTtcbiAgICAgICAgICBpZiAoYmFzZS5ub2RlTmFtZSA9PT0gJyN0ZXh0JyAmJiBzZWxlY3Rpb24uYmFzZU9mZnNldCA9PT0gYmFzZS5sZW5ndGgpIHtcblxuICAgICAgICAgICAgaWYgKCEoYmFzZS5uZXh0U2libGluZyAmJiBiYXNlLm5leHRTaWJsaW5nLm5vZGVOYW1lID09PSAnQlInKSkge1xuICAgICAgICAgICAgICBiciArPSAnPGJyPic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGVsOiBhbnkgPSBBcnJheS5mcm9tKGJhc2UuY2hpbGROb2Rlcykuc3BsaWNlKHNlbGVjdGlvbi5iYXNlT2Zmc2V0IC0gMSwgMSkucG9wKCk7XG4gICAgICAgICAgICBpZiAoZWwgJiYgZWwubm9kZU5hbWUgIT09ICdCUicpIHtcbiAgICAgICAgICAgICAgYnIgKz0gJzxicj4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZWRpdG9yLmh0bWwuaW5zZXJ0KGJyKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCB0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCkge31cblxuICBwcml2YXRlIF9nZXRDb2RlRWwoZWwpIHtcblxuICAgIGlmIChlbCkge1xuICAgICAgaWYgKGVsLmNsYXNzTGlzdCAmJiBlbC5jbGFzc0xpc3QuY29udGFpbnMoJ2NvZGUnKSkge1xuICAgICAgICByZXR1cm4gZWw7XG4gICAgICB9XG5cbiAgICAgIGlmIChlbC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRDb2RlRWwoZWwucGFyZW50RWxlbWVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbi1wbHVnaW4uY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL3BsdWdpbnMvY29uZmlncy9tZW50aW9uLXBsdWdpbi5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsdWdpbkNvbmZpZyB9IGZyb20gJy4vLi4vLi4vaW50ZXJmYWNlcy9wbHVnaW4tY29uZmlnJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBNZW50aW9uUGx1Z2luQ29uZmlnIGV4dGVuZHMgUGx1Z2luQ29uZmlnIHtcbiAgdHJpZ2dlcj86IHN0cmluZztcbiAgbWVudUl0ZW1UZW1wbGF0ZT86IChkYXRhOiBhbnkpID0+IHN0cmluZztcbiAgc2VsZWN0ZWRUZW1wbGF0ZT86IChkYXRhOiBhbnkpID0+IHN0cmluZztcbiAgZmV0Y2g6IChrZXlvcmQ/OiBzdHJpbmcpID0+IE9ic2VydmFibGU8YW55PjtcbiAgY29udGFpbmVyQ2xhc3M/OiBzdHJpbmc7XG4gIG1lbnVJdGVtQ2xhc3M/OiBzdHJpbmc7XG4gIHRvb2x0aXA/OiBzdHJpbmc7XG4gIGljb25QYXRoPzogc3RyaW5nO1xuICBzZWxlY3RlZD86IChpdGVtOiBhbnkpID0+IHZvaWQ7XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXJlY29yZC1wbHVnaW4uY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL3BsdWdpbnMvY29uZmlncy9zY3JlZW4tcmVjb3JkLXBsdWdpbi5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsdWdpbkNvbmZpZyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcGx1Z2luLWNvbmZpZyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyZWVuUmVjb3JkUGx1Z2luQ29uZmlnIGV4dGVuZHMgUGx1Z2luQ29uZmlnIHtcbiAgbmFtZT86IHN0cmluZztcbiAgbWF4V2lkdGg/OiBzdHJpbmcsXG4gIHVwbG9hZD86IChmaWxlOiBCbG9iKSA9PiBPYnNlcnZhYmxlPHN0cmluZz47XG59XG4iXX0=
@@ -0,0 +1,90 @@
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 = {
18
+ ...config,
19
+ buttons: [
20
+ {
21
+ name: config.name,
22
+ tooltip: config.tooltip,
23
+ svgPath: config.iconPath,
24
+ click: (editor) => {
25
+ this._closeAll();
26
+ this._tribute.showMenuForCollection(editor.el);
27
+ }
28
+ }
29
+ ]
30
+ };
31
+ this._tribute = new Tribute({
32
+ values: debounce(this._loadValues.bind(this), 200),
33
+ searchOpts: {
34
+ pre: '',
35
+ post: '',
36
+ skip: true
37
+ },
38
+ containerClass: `fs-html-editor-mention-container ${this.config.containerClass || ''}`,
39
+ itemClass: `fs-html-editor-mention-menu-item ${this.config.menuItemClass || ''}`,
40
+ trigger: this.config.trigger,
41
+ allowSpaces: true,
42
+ menuItemTemplate: (item) => {
43
+ return this.config.menuItemTemplate(item.original);
44
+ },
45
+ selectTemplate: (item) => {
46
+ const template = this.config.selectedTemplate(item.original);
47
+ let p = document.createElement('p');
48
+ p.innerHTML = template;
49
+ let node = p.firstElementChild;
50
+ if (!node) {
51
+ node = document.createElement('span');
52
+ node.innerHTML = template;
53
+ }
54
+ node.setAttribute('contenteditable', 'false');
55
+ node.classList.add('fr-deletable');
56
+ return node.outerHTML;
57
+ },
58
+ });
59
+ MentionPlugin._tributes.push(this._tribute);
60
+ }
61
+ initialize() {
62
+ this._tribute.attach(this.editor.el);
63
+ this.editor.events.on('keydown', (e) => {
64
+ if (e.key === 'Enter' && this._tribute.isActive) {
65
+ return false;
66
+ }
67
+ }, true);
68
+ this.editor.el.addEventListener("tribute-replaced", this.selected);
69
+ }
70
+ destroy() {
71
+ this.editor.el.removeEventListener("tribute-replaced", this.selected);
72
+ }
73
+ _closeAll() {
74
+ MentionPlugin._tributes.forEach((tribute) => {
75
+ if (tribute.menu) {
76
+ tribute.hideMenu();
77
+ }
78
+ });
79
+ }
80
+ _loadValues(keyword, cb) {
81
+ MentionPlugin._currentGuid = this._guid;
82
+ return this.config.fetch(keyword)
83
+ .subscribe((data) => {
84
+ cb(data);
85
+ });
86
+ }
87
+ }
88
+ MentionPlugin._currentGuid = null;
89
+ MentionPlugin._tributes = [];
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbi5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvaHRtbC1lZGl0b3IvcGx1Z2lucy9tZW50aW9uLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sT0FBd0IsTUFBTSxXQUFXLENBQUM7QUFJakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUcxQyxNQUFNLE9BQU8sYUFBYyxTQUFRLE1BQU07SUFPdkMsWUFBMEIsTUFBMkI7UUFDbkQsS0FBSyxFQUFFLENBQUM7UUFEZ0IsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFGN0MsVUFBSyxHQUFHLElBQUksRUFBRSxDQUFDO1FBbUVoQixhQUFRLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMxQixJQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO2dCQUN2QixJQUFHLGFBQWEsQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRTtvQkFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ2xEO2FBQ0Y7UUFDSCxDQUFDLENBQUE7UUFyRUMsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLEdBQUcsTUFBTTtZQUNULE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7b0JBQ2pCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztvQkFDdkIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxRQUFRO29CQUN4QixLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTt3QkFDaEIsSUFBSSxDQUFD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QUMsSUFBSSxFQUFFO2dCQUNoQixPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDcEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDN0IsYUFBYSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO2FBQ3RCLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2xCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO0lBQ2YsQ0FBQzs7QUFoR2MsMEJBQVksR0FBRyxJQUFJLENBQUM7QUFDcEIsdUJBQVMsR0FBRyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgVHJpYnV0ZSwgeyBUcmlidXRlSXRlbSB9IGZyb20gJ3RyaWJ1dGVqcyc7XG5cbmltcG9ydCB7IE1lbnRpb25QbHVnaW5Db25maWcgfSBmcm9tICcuL2NvbmZpZ3MvbWVudGlvbi1wbHVnaW4uY29uZmlnJztcblxuaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSAnLi4vY2xhc3Nlcy9wbHVnaW4nO1xuXG5pbXBvcnQgeyBndWlkIH0gZnJvbSAnQGZpcmVzdGl0Y2gvY29tbW9uJztcblxuXG5leHBvcnQgY2xhc3MgTWVudGlvblBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2N1cnJlbnRHdWlkID0gbnVsbDtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RyaWJ1dGVzID0gW107XG4gIHByaXZhdGUgX3RyaWJ1dGU7XG4gIHByaXZhdGUgX2d1aWQgPSBndWlkKCk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25maWc6IE1lbnRpb25QbHVnaW5Db25maWcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogY29uZmlnLm5hbWUsXG4gICAgICAgICAgdG9vbHRpcDogY29uZmlnLnRvb2x0aXAsXG4gICAgICAgICAgc3ZnUGF0aDogY29uZmlnLmljb25QYXRoLFxuICAgICAgICAgIGNsaWNrOiAoZWRpdG9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jbG9zZUFsbCgpO1xuICAgICAgICAgICAgdGhpcy5fdHJpYnV0ZS5zaG93TWVudUZvckNvbGxlY3Rpb24oZWRpdG9yLmVsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuXG4gICAgdGhpcy5fdHJpYnV0ZSA9IG5ldyBUcmlidXRlKHtcbiAgICAgICAgdmFsdWVzOiBkZWJvdW5jZSh0aGlzLl9sb2FkVmFsdWVzLmJpbmQodGhpcyksIDIwMCksXG4gICAgICAgIHNlYXJjaE9wdHM6IHtcbiAgICAgICAgICBwcmU6ICcnLFxuICAgICAgICAgIHBvc3Q6ICcnLFxuICAgICAgICAgIHNraXA6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgY29udGFpbmVyQ2xhc3M6IGBmcy1odG1sLWVkaXRvci1tZW50aW9uLWNvbnRhaW5lciAke3RoaXMuY29uZmlnLmNvbnRhaW5lckNsYXNzIHx8ICcnfWAsXG4gICAgICAgIGl0ZW1DbGFzczogYGZzLWh0bWwtZWRpdG9yLW1lbnRpb24tbWVudS1pdGVtICR7dGhpcy5jb25maWcubWVudUl0ZW1DbGFzcyB8fCAnJ31gLFxuICAgICAgICB0cmlnZ2VyOiB0aGlzLmNvbmZpZy50cmlnZ2VyLFxuICAgICAgICBhbGxvd1NwYWNlczogdHJ1ZSxcbiAgICAgICAgbWVudUl0ZW1UZW1wbGF0ZTogKGl0ZW06IFRyaWJ1dGVJdGVtPGFueT4pID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25maWcubWVudUl0ZW1UZW1wbGF0ZShpdGVtLm9yaWdpbmFsKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2VsZWN0VGVtcGxhdGU6IChpdGVtOiBUcmlidXRlSXRlbTxhbnk+KSA9PiB7XG4gICAgICAgICAgY29uc3QgdGVtcGxhdGUgPSB0aGlzLmNvbmZpZy5zZWxlY3RlZFRlbXBsYXRlKGl0ZW0ub3JpZ2luYWwpO1xuXG4gICAgICAgICAgbGV0IHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG4gICAgICAgICAgcC5pbm5lckhUTUwgPSB0ZW1wbGF0ZTtcblxuICAgICAgICAgIGxldCBub2RlID0gcC5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICAgIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgICBub2RlLmlubmVySFRNTCA9IHRlbXBsYXRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnLCAnZmFsc2UnKTtcbiAgICAgICAgICBub2RlLmNsYXNzTGlzdC5hZGQoJ2ZyLWRlbGV0YWJsZScpO1xuXG4gICAgICAgICAgcmV0dXJuIG5vZGUub3V0ZXJIVE1MO1xuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICBNZW50aW9uUGx1Z2luLl90cmlidXRlcy5wdXNoKHRoaXMuX3RyaWJ1dGUpO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUoKSB7XG4gICAgdGhpcy5fdHJpYnV0ZS5hdHRhY2godGhpcy5lZGl0b3IuZWwpO1xuICAgIHRoaXMuZWRpdG9yLmV2ZW50cy5vbigna2V5ZG93bicsIChlKSA9PiB7XG4gICAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicgJiYgIHRoaXMuX3RyaWJ1dGUuaXNBY3RpdmUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0sIHRydWUpO1xuXG4gICAgXG4gICAgdGhpcy5lZGl0b3IuZWwuYWRkRXZlbnRMaXN0ZW5lcihcInRyaWJ1dGUtcmVwbGFjZWRcIiwgdGhpcy5zZWxlY3RlZCk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0ZWQgPSAoZXZlbnQpID0+IHtcbiAgICBpZih0aGlzLmNvbmZpZy5zZWxlY3RlZCkge1xuICAgICAgaWYoTWVudGlvblBsdWdpbi5fY3VycmVudEd1aWQgPT09IHRoaXMuX2d1aWQpIHtcbiAgICAgICAgdGhpcy5jb25maWcuc2VsZWN0ZWQoZXZlbnQuZGV0YWlsLml0ZW0ub3JpZ2luYWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCkge1xuICAgIHRoaXMuZWRpdG9yLmVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmlidXRlLXJlcGxhY2VkXCIsIHRoaXMuc2VsZWN0ZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VBbGwoKSB7XG4gICAgTWVudGlvblBsdWdpbi5fdHJpYnV0ZXMuZm9yRWFjaCgodHJpYnV0ZSkgPT4ge1xuICAgICAgaWYgKHRyaWJ1dGUubWVudSkge1xuICAgICAgICB0cmlidXRlLmhpZGVNZW51KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkVmFsdWVzKGtleXdvcmQsIGNiKSB7XG4gICAgTWVudGlvblBsdWdpbi5fY3VycmVudEd1aWQgPSB0aGlzLl9ndWlkO1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5mZXRjaChrZXl3b3JkKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgY2IoZGF0YSk7XG4gICAgICAgICAgICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,16 @@
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 = {
7
+ ...config,
8
+ name: 'realtime',
9
+ };
10
+ }
11
+ initialize() {
12
+ this.editor.events.on('click', (e) => {
13
+ }, false);
14
+ }
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhbHRpbWUucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL3BsdWdpbnMvcmVhbHRpbWUucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUczQyxNQUFNLE9BQU8sY0FBZSxTQUFRLE1BQU07SUFFeEMsWUFBMEIsU0FBdUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO1FBQ25FLEtBQUssRUFBRSxDQUFDO1FBRGdCLFdBQU0sR0FBTixNQUFNLENBQXFDO1FBRW5FLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixHQUFHLE1BQU07WUFDVCxJQUFJLEVBQUUsVUFBVTtTQUNqQixDQUFDO0lBQ0osQ0FBQztJQUVNLFVBQVU7UUFFZixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFFckMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ1osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGx1Z2luQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wbHVnaW4tY29uZmlnJztcblxuaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSAnLi4vY2xhc3Nlcy9wbHVnaW4nO1xuXG5cbmV4cG9ydCBjbGFzcyBSZWFsdGltZVBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25maWc6IFBsdWdpbkNvbmZpZyA9IHsgbmFtZTogJ3JlYWx0aW1lJyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIG5hbWU6ICdyZWFsdGltZScsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplKCkge1xuXG4gICAgdGhpcy5lZGl0b3IuZXZlbnRzLm9uKCdjbGljaycsIChlKSA9PiB7XG5cbiAgICB9LCBmYWxzZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,92 @@
1
+ import { Plugin } from '../classes/plugin';
2
+ export class ScreenRecordPlugin extends Plugin {
3
+ constructor(config = {}) {
4
+ super();
5
+ this.config = config;
6
+ this.config = {
7
+ ...config,
8
+ name: config.name || 'screenRecord',
9
+ buttons: [
10
+ {
11
+ name: 'screenRecord',
12
+ 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
13
+ 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
14
+ 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`,
15
+ tooltip: 'Screen Record',
16
+ click: (editor) => {
17
+ navigator.mediaDevices.getDisplayMedia({ video: true })
18
+ .then((stream) => {
19
+ const chunks = [];
20
+ const options = { mimeType: 'video/webm; codecs=vp9' };
21
+ let mediaRecorder = new MediaRecorder(stream, options);
22
+ stream.addEventListener('inactive', (e) => {
23
+ mediaRecorder.stop();
24
+ mediaRecorder = null;
25
+ stream.getTracks().forEach((track) => track.stop());
26
+ stream = null;
27
+ const blob = new Blob(chunks, { type: 'video/webm' });
28
+ config.upload(blob)
29
+ .subscribe((url) => {
30
+ 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>`);
31
+ });
32
+ });
33
+ mediaRecorder.addEventListener('dataavailable', (event) => {
34
+ if (event.data && event.data.size > 0) {
35
+ chunks.push(event.data);
36
+ }
37
+ });
38
+ mediaRecorder.start(10);
39
+ })
40
+ .catch((e) => { });
41
+ }
42
+ }
43
+ ]
44
+ };
45
+ }
46
+ async initialize() {
47
+ const FroalaEditor = window.FroalaEditor;
48
+ this.editor.events.on('mouseup', (e) => {
49
+ const el = this._getEl(e.target);
50
+ if (el) {
51
+ this.editor.popups.hideAll();
52
+ this._activeEl = el;
53
+ this._showPopup(el);
54
+ }
55
+ });
56
+ FroalaEditor.POPUP_TEMPLATES["screenRecordPlugin.popup"] = '[_BUTTONS_]';
57
+ FroalaEditor.DefineIcon('popupClose', { NAME: 'trash', SVG_KEY: 'remove' });
58
+ FroalaEditor.RegisterCommand('popupClose', {
59
+ title: 'Remove',
60
+ undo: false,
61
+ focus: false,
62
+ callback: () => {
63
+ if (this._activeEl) {
64
+ this._activeEl.remove();
65
+ }
66
+ }
67
+ });
68
+ }
69
+ _createPopup() {
70
+ const template = {
71
+ buttons: `<div class="fr-buttons">${this.editor.button.buildList(['popupClose'])}</div>`,
72
+ };
73
+ return this.editor.popups.create('screenRecordPlugin.popup', template);
74
+ }
75
+ _showPopup(el) {
76
+ var $popup = this.editor.popups.get('screenRecordPlugin.popup');
77
+ if (!$popup) {
78
+ $popup = this._createPopup();
79
+ }
80
+ this.editor.popups.setContainer('screenRecordPlugin.popup', this.editor.$(el));
81
+ const left = el.offsetLeft + el.offsetWidth / 2;
82
+ this.editor.popups.show('screenRecordPlugin.popup', left, null);
83
+ }
84
+ _getEl(el) {
85
+ if (el && el.classList) {
86
+ if (el.classList.contains('fr-screen-record'))
87
+ return el;
88
+ return this._getEl(el.parentNode);
89
+ }
90
+ }
91
+ }
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXJlY29yZC5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvaHRtbC1lZGl0b3IvcGx1Z2lucy9zY3JlZW4tcmVjb3JkLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFLM0MsTUFBTSxPQUFPLGtCQUFtQixTQUFRLE1BQU07SUFJNUMsWUFBMEIsU0FBbUMsRUFBRTtRQUM3RCxLQUFLLEVBQUUsQ0FBQztRQURnQixXQUFNLEdBQU4sTUFBTSxDQUErQjtRQUc3RCxJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osR0FBRyxNQUFNO1lBQ1QsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUksY0FBYztZQUNuQyxPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLGNBQWM7b0JBQ3BCLE9BQU8sRUFBRTs7MElBRXVIO29CQUNoSSxPQUFPLEVBQUUsZUFBZTtvQkFDeEIsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7d0JBRVYsU0FBVSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7NkJBQzNELElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFOzRCQUNmLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQzs0QkFDbEIsTUFBTSxPQUFPLEdBQUcsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQzs0QkFDdkQsSUFBSSxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDOzRCQUV2RCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0NBQ3hDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQ0FDckIsYUFBYSxHQUFHLElBQUksQ0FBQztn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QUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFFaEUsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDOUI7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUvRSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVPLE1BQU0sQ0FBQyxFQUFFO1FBQ2YsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRTtZQUN0QixJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDO2dCQUMzQyxPQUFPLEVBQUUsQ0FBQztZQUVaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbkM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY3JlZW5SZWNvcmRQbHVnaW5Db25maWcgfSBmcm9tICcuL2NvbmZpZ3Mvc2NyZWVuLXJlY29yZC1wbHVnaW4uY29uZmlnJztcbmltcG9ydCB7IFBsdWdpbiB9IGZyb20gJy4uL2NsYXNzZXMvcGx1Z2luJztcblxuXG5kZWNsYXJlIHZhciBNZWRpYVJlY29yZGVyOiBhbnk7XG5cbmV4cG9ydCBjbGFzcyBTY3JlZW5SZWNvcmRQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuXG4gIHByaXZhdGUgX2FjdGl2ZUVsO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgY29uZmlnOiBTY3JlZW5SZWNvcmRQbHVnaW5Db25maWcgPSB7fSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIG5hbWU6IGNvbmZpZy5uYW1lIHx8ICdzY3JlZW5SZWNvcmQnLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ3NjcmVlblJlY29yZCcsXG4gICAgICAgICAgc3ZnUGF0aDogYE0xNC43LDcuN3Y2LjFINy4xVjcuN0gxNC43IE0xNi4zLDkuNlY2LjljMC0wLjQtMC4zLTAuOC0wLjgtMC44SDYuNGMtMC40LDAtMC44LDAuMy0wLjgsMC44djcuNmMwLDAuNCwwLjMsMC44LDAuOCwwLjhoOS4xYzAuNCwwLDAuOC0wLjMsMC44LTAuOHYtMi43bDEuNywxLjdjMC4zLDAuMywwLjgsMC4zLDEuMSwwYzAuMS0wLjEsMC4yLTAuMywwLjItMC41VjguNGMwLTAuNC0wLjMtMC44LTAuOC0wLjhcblx0Yy0wLjIsMC0wLjQsMC4xLTAuNSwwLjJMMTYuMyw5LjZ6IE0yMS41LDEuNkgyLjljLTAuNywwLTEuMywwLjctMS4zLDEuNnYxNC42YzAsMC45LDAuNiwxLjYsMS4zLDEuNmg3LjZ2MS4xbC01LDFjLTAuMiwwLTAuNCwwLjMtMC40LDAuNmMwLDAuMywwLjIsMC40LDAuNCwwLjRjMCwwLDAsMCwwLjEsMGw1LjMtMWgyLjZsNS4zLDFjMCwwLDAsMCwwLjEsMGMwLjIsMCwwLjQtMC4yLDAuNC0wLjRcbiAgYzAtMC4zLTAuMS0wLjYtMC40LTAuNmwtNS0xdi0xLjFoNy42YzAuNywwLDEuMy0wLjcsMS4zLTEuNlYzLjJDMjIuOSwyLjMsMjIuMywxLjYsMjEuNSwxLjZ6IE0yMS4xLDE3LjNIMy4zVjMuN2gxNy44TDIxLjEsMTcuM0wyMS4xLDE3LjN6YCxcbiAgICAgICAgICB0b29sdGlwOiAnU2NyZWVuIFJlY29yZCcsXG4gICAgICAgICAgY2xpY2s6IChlZGl0b3IpID0+IHtcblxuICAgICAgICAgICAgKDxhbnk+bmF2aWdhdG9yKS5tZWRpYURldmljZXMuZ2V0RGlzcGxheU1lZGlhKHsgdmlkZW86IHRydWUgfSlcbiAgICAgICAgICAgICAgLnRoZW4oKHN0cmVhbSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rcyA9IFtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7IG1pbWVUeXBlOiAndmlkZW8vd2VibTsgY29kZWNzPXZwOScgfTtcbiAgICAgICAgICAgICAgICBsZXQgbWVkaWFSZWNvcmRlciA9IG5ldyBNZWRpYVJlY29yZGVyKHN0cmVhbSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgICAgICBzdHJlYW0uYWRkRXZlbnRMaXN0ZW5lcignaW5hY3RpdmUnLCAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgbWVkaWFSZWNvcmRlci5zdG9wKCk7XG4gICAgICAgICAgICAgICAgICBtZWRpYVJlY29yZGVyID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgIHN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKCh0cmFjaykgPT4gdHJhY2suc3RvcCgpKTtcbiAgICAgICAgICAgICAgICAgIHN0cmVhbSA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihjaHVua3MsIHsgdHlwZTogJ3ZpZGVvL3dlYm0nIH0pO1xuICAgICAgICAgICAgICAgICAgY29uZmlnLnVwbG9hZChibG9iKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh1cmwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yLmh0bWwuaW5zZXJ0KGA8c3BhbiBjbGFzcz1cImZyLXNjcmVlbi1yZWNvcmQgZnItZGVsZXRhYmxlIGZyLWRyYWdnYWJsZVwiPjx2aWRlbyBjb250cm9scyBzdHlsZT1cIm1heC13aWR0aDoke2NvbmZpZy5tYXhXaWR0aH1cIj48c291cmNlIHNyYz1cIiR7dXJsfVwiIHR5cGU9XCJ2aWRlby93ZWJtXCI+PC92aWRlbz48L3NwYW4+YCk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIG1lZGlhUmVjb3JkZXIuYWRkRXZlbnRMaXN0ZW5lcignZGF0YWF2YWlsYWJsZScsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEgJiYgZXZlbnQuZGF0YS5zaXplID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjaHVua3MucHVzaChldmVudC5kYXRhKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIG1lZGlhUmVjb3JkZXIuc3RhcnQoMTApO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuY2F0Y2goKGUpID0+IHsgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbml0aWFsaXplKCkge1xuICAgIGNvbnN0IEZyb2FsYUVkaXRvciA9ICh3aW5kb3cgYXMgYW55KS5Gcm9hbGFFZGl0b3I7XG5cbiAgICB0aGlzLmVkaXRvci5ldmVudHMub24oJ21vdXNldXAnLCAoZSkgPT4ge1xuICAgICAgY29uc3QgZWwgPSB0aGlzLl9nZXRFbChlLnRhcmdldCk7XG5cbiAgICAgIGlmIChlbCkge1xuICAgICAgICB0aGlzLmVkaXRvci5wb3B1cHMuaGlkZUFsbCgpO1xuICAgICAgICB0aGlzLl9hY3RpdmVFbCA9IGVsO1xuICAgICAgICB0aGlzLl9zaG93UG9wdXAoZWwpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgRnJvYWxhRWRpdG9yLlBPUFVQX1RFTVBMQVRFU1tcInNjcmVlblJlY29yZFBsdWdpbi5wb3B1cFwiXSA9ICdbX0JVVFRPTlNfXSc7XG5cbiAgICBGcm9hbGFFZGl0b3IuRGVmaW5lSWNvbigncG9wdXBDbG9zZScsIHsgTkFNRTogJ3RyYXNoJywgU1ZHX0tFWTogJ3JlbW92ZScgfSk7XG4gICAgRnJvYWxhRWRpdG9yLlJlZ2lzdGVyQ29tbWFuZCgncG9wdXBDbG9zZScsIHtcbiAgICAgIHRpdGxlOiAnUmVtb3ZlJyxcbiAgICAgIHVuZG86IGZhbHNlLFxuICAgICAgZm9jdXM6IGZhbHNlLFxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZUVsKSB7XG4gICAgICAgICAgdGhpcy5fYWN0aXZlRWwucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZVBvcHVwKCkge1xuXG4gICAgY29uc3QgdGVtcGxhdGUgPSB7XG4gICAgICBidXR0b25zOiBgPGRpdiBjbGFzcz1cImZyLWJ1dHRvbnNcIj4ke3RoaXMuZWRpdG9yLmJ1dHRvbi5idWlsZExpc3QoWydwb3B1cENsb3NlJ10pfTwvZGl2PmAsXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLmVkaXRvci5wb3B1cHMuY3JlYXRlKCdzY3JlZW5SZWNvcmRQbHVnaW4ucG9wdXAnLCB0ZW1wbGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIF9zaG93UG9wdXAgKGVsKSB7XG4gICAgdmFyICRwb3B1cCA9IHRoaXMuZWRpdG9yLnBvcHVwcy5nZXQoJ3NjcmVlblJlY29yZFBsdWdpbi5wb3B1cCcpO1xuXG4gICAgaWYgKCEkcG9wdXApIHtcbiAgICAgICRwb3B1cCA9IHRoaXMuX2NyZWF0ZVBvcHVwKCk7XG4gICAgfVxuXG4gICAgdGhpcy5lZGl0b3IucG9wdXBzLnNldENvbnRhaW5lcignc2NyZWVuUmVjb3JkUGx1Z2luLnBvcHVwJywgdGhpcy5lZGl0b3IuJChlbCkpO1xuXG4gICAgY29uc3QgbGVmdCA9IGVsLm9mZnNldExlZnQgKyBlbC5vZmZzZXRXaWR0aCAvIDI7XG5cbiAgICB0aGlzLmVkaXRvci5wb3B1cHMuc2hvdygnc2NyZWVuUmVjb3JkUGx1Z2luLnBvcHVwJywgbGVmdCwgbnVsbCk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRFbChlbCkge1xuICAgIGlmIChlbCAmJiBlbC5jbGFzc0xpc3QpIHtcbiAgICAgIGlmIChlbC5jbGFzc0xpc3QuY29udGFpbnMoJ2ZyLXNjcmVlbi1yZWNvcmQnKSlcbiAgICAgICAgcmV0dXJuIGVsO1xuXG4gICAgICByZXR1cm4gdGhpcy5fZ2V0RWwoZWwucGFyZW50Tm9kZSk7XG4gICAgfVxuICB9XG59XG4iXX0=