@firestitch/html-editor 9.5.9 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/app/classes/plugin.d.ts +7 -7
  2. package/app/components/html-editor/html-editor.component.d.ts +57 -54
  3. package/app/components/html-renderer/html-renderer.component.d.ts +12 -9
  4. package/app/consts/paragraph-buttons.const.d.ts +1 -1
  5. package/app/consts/rich-buttons.const.d.ts +1 -1
  6. package/app/consts/text-buttons.const.d.ts +1 -1
  7. package/app/enums/default-plugin.enum.d.ts +14 -14
  8. package/app/fs-html-editor.module.d.ts +33 -25
  9. package/app/injects/config.inject.d.ts +3 -3
  10. package/app/interfaces/html-editor-config.d.ts +31 -31
  11. package/app/interfaces/plugin-button.d.ts +12 -12
  12. package/app/interfaces/plugin-config.d.ts +5 -5
  13. package/app/plugins/checklist.plugin.d.ts +7 -7
  14. package/app/plugins/code.plugin.d.ts +9 -9
  15. package/app/plugins/configs/mention-plugin.config.d.ts +13 -13
  16. package/app/plugins/configs/screen-record-plugin.config.d.ts +7 -7
  17. package/app/plugins/mention.plugin.d.ts +15 -15
  18. package/app/plugins/screen-record.plugin.d.ts +11 -11
  19. package/app/services/froala-loader.service.d.ts +20 -17
  20. package/app/utils/loader.d.ts +7 -7
  21. package/bundles/firestitch-html-editor.umd.js +1389 -1274
  22. package/bundles/firestitch-html-editor.umd.js.map +1 -1
  23. package/esm2015/app/classes/plugin.js +5 -5
  24. package/esm2015/app/components/html-editor/html-editor.component.js +453 -445
  25. package/esm2015/app/components/html-renderer/html-renderer.component.js +29 -34
  26. package/esm2015/app/consts/paragraph-buttons.const.js +9 -9
  27. package/esm2015/app/consts/rich-buttons.const.js +7 -7
  28. package/esm2015/app/consts/text-buttons.const.js +19 -19
  29. package/esm2015/app/enums/default-plugin.enum.js +2 -1
  30. package/esm2015/app/fs-html-editor.module.js +65 -57
  31. package/esm2015/app/injects/config.inject.js +4 -4
  32. package/esm2015/app/interfaces/html-editor-config.js +2 -1
  33. package/esm2015/app/interfaces/plugin-button.js +2 -1
  34. package/esm2015/app/interfaces/plugin-config.js +2 -1
  35. package/esm2015/app/plugins/checklist.plugin.js +35 -35
  36. package/esm2015/app/plugins/code.plugin.js +63 -63
  37. package/esm2015/app/plugins/configs/mention-plugin.config.js +2 -1
  38. package/esm2015/app/plugins/configs/screen-record-plugin.config.js +2 -1
  39. package/esm2015/app/plugins/mention.plugin.js +87 -87
  40. package/esm2015/app/plugins/screen-record.plugin.js +92 -92
  41. package/esm2015/app/services/froala-loader.service.js +80 -81
  42. package/esm2015/app/utils/loader.js +83 -83
  43. package/esm2015/firestitch-html-editor.js +5 -9
  44. package/esm2015/public_api.js +12 -12
  45. package/fesm2015/firestitch-html-editor.js +970 -956
  46. package/fesm2015/firestitch-html-editor.js.map +1 -1
  47. package/firestitch-html-editor.d.ts +5 -9
  48. package/package.json +4 -7
  49. package/public_api.d.ts +16 -16
  50. package/styles.scss +3 -2
  51. package/bundles/firestitch-html-editor.umd.min.js +0 -17
  52. package/bundles/firestitch-html-editor.umd.min.js.map +0 -1
  53. package/esm5/app/classes/plugin.js +0 -9
  54. package/esm5/app/components/html-editor/html-editor.component.js +0 -471
  55. package/esm5/app/components/html-renderer/html-renderer.component.js +0 -39
  56. package/esm5/app/consts/paragraph-buttons.const.js +0 -9
  57. package/esm5/app/consts/rich-buttons.const.js +0 -7
  58. package/esm5/app/consts/text-buttons.const.js +0 -19
  59. package/esm5/app/enums/default-plugin.enum.js +0 -1
  60. package/esm5/app/fs-html-editor.module.js +0 -62
  61. package/esm5/app/injects/config.inject.js +0 -4
  62. package/esm5/app/interfaces/html-editor-config.js +0 -1
  63. package/esm5/app/interfaces/plugin-button.js +0 -1
  64. package/esm5/app/interfaces/plugin-config.js +0 -1
  65. package/esm5/app/plugins/checklist.plugin.js +0 -41
  66. package/esm5/app/plugins/code.plugin.js +0 -70
  67. package/esm5/app/plugins/configs/mention-plugin.config.js +0 -1
  68. package/esm5/app/plugins/configs/screen-record-plugin.config.js +0 -1
  69. package/esm5/app/plugins/mention.plugin.js +0 -93
  70. package/esm5/app/plugins/screen-record.plugin.js +0 -106
  71. package/esm5/app/services/froala-loader.service.js +0 -96
  72. package/esm5/app/utils/loader.js +0 -83
  73. package/esm5/firestitch-html-editor.js +0 -9
  74. package/esm5/public_api.js +0 -12
  75. package/fesm5/firestitch-html-editor.js +0 -1074
  76. package/fesm5/firestitch-html-editor.js.map +0 -1
  77. package/firestitch-html-editor.metadata.json +0 -1
@@ -1,87 +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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbi5wbHVnaW4uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmlyZXN0aXRjaC9odG1sLWVkaXRvci8iLCJzb3VyY2VzIjpbImFwcC9wbHVnaW5zL21lbnRpb24ucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxPQUF3QixNQUFNLFdBQVcsQ0FBQztBQUlqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFM0MsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzFDLE1BQU0sT0FBTyxhQUFjLFNBQVEsTUFBTTtJQU92QyxZQUEwQixNQUEyQjtRQUNuRCxLQUFLLEVBQUUsQ0FBQztRQURnQixXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUY3QyxVQUFLLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFtRWhCLGFBQVEsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzFCLElBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7Z0JBQ3ZCLElBQUcsYUFBYSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUM1QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDbEQ7YUFDRjtRQUNILENBQUMsQ0FBQTtRQXJFQyxJQUFJLENBQUMsTUFBTSxtQ0FDTixNQUFNLEtBQ1QsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtvQkFDakIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO29CQUN2QixPQUFPLEVBQUUsTUFBTSxDQUFDLFFBQVE7b0JBQ3hCLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO3dCQUNoQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7d0JBQ2pC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QU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUNwQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFdBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUM3QixhQUFhLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7YUFDdEIsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbEIsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7SUFDZixDQUFDOztBQWhHYywwQkFBWSxHQUFHLElBQUksQ0FBQztBQUNwQix1QkFBUyxHQUFHLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlYm91bmNlIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCBUcmlidXRlLCB7IFRyaWJ1dGVJdGVtIH0gZnJvbSAndHJpYnV0ZWpzJztcblxuaW1wb3J0IHsgTWVudGlvblBsdWdpbkNvbmZpZyB9IGZyb20gJy4vY29uZmlncy9tZW50aW9uLXBsdWdpbi5jb25maWcnO1xuXG5pbXBvcnQgeyBQbHVnaW4gfSBmcm9tICcuLi9jbGFzc2VzL3BsdWdpbic7XG5cbmltcG9ydCB7IGd1aWQgfSBmcm9tICdAZmlyZXN0aXRjaC9jb21tb24nO1xuXG5cbmV4cG9ydCBjbGFzcyBNZW50aW9uUGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcblxuICBwcml2YXRlIHN0YXRpYyBfY3VycmVudEd1aWQgPSBudWxsO1xuICBwcml2YXRlIHN0YXRpYyBfdHJpYnV0ZXMgPSBbXTtcbiAgcHJpdmF0ZSBfdHJpYnV0ZTtcbiAgcHJpdmF0ZSBfZ3VpZCA9IGd1aWQoKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIGNvbmZpZzogTWVudGlvblBsdWdpbkNvbmZpZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBjb25maWcubmFtZSxcbiAgICAgICAgICB0b29sdGlwOiBjb25maWcudG9vbHRpcCxcbiAgICAgICAgICBzdmdQYXRoOiBjb25maWcuaWNvblBhdGgsXG4gICAgICAgICAgY2xpY2s6IChlZGl0b3IpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Nsb3NlQWxsKCk7XG4gICAgICAgICAgICB0aGlzLl90cmlidXRlLnNob3dNZW51Rm9yQ29sbGVjdGlvbihlZGl0b3IuZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG5cbiAgICB0aGlzLl90cmlidXRlID0gbmV3IFRyaWJ1dGUoe1xuICAgICAgICB2YWx1ZXM6IGRlYm91bmNlKHRoaXMuX2xvYWRWYWx1ZXMuYmluZCh0aGlzKSwgMjAwKSxcbiAgICAgICAgc2VhcmNoT3B0czoge1xuICAgICAgICAgIHByZTogJycsXG4gICAgICAgICAgcG9zdDogJycsXG4gICAgICAgICAgc2tpcDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBjb250YWluZXJDbGFzczogYGZzLWh0bWwtZWRpdG9yLW1lbnRpb24tY29udGFpbmVyICR7dGhpcy5jb25maWcuY29udGFpbmVyQ2xhc3MgfHwgJyd9YCxcbiAgICAgICAgaXRlbUNsYXNzOiBgZnMtaHRtbC1lZGl0b3ItbWVudGlvbi1tZW51LWl0ZW0gJHt0aGlzLmNvbmZpZy5tZW51SXRlbUNsYXNzIHx8ICcnfWAsXG4gICAgICAgIHRyaWdnZXI6IHRoaXMuY29uZmlnLnRyaWdnZXIsXG4gICAgICAgIGFsbG93U3BhY2VzOiB0cnVlLFxuICAgICAgICBtZW51SXRlbVRlbXBsYXRlOiAoaXRlbTogVHJpYnV0ZUl0ZW08YW55PikgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5tZW51SXRlbVRlbXBsYXRlKGl0ZW0ub3JpZ2luYWwpO1xuICAgICAgICB9LFxuICAgICAgICBzZWxlY3RUZW1wbGF0ZTogKGl0ZW06IFRyaWJ1dGVJdGVtPGFueT4pID0+IHtcbiAgICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMuY29uZmlnLnNlbGVjdGVkVGVtcGxhdGUoaXRlbS5vcmlnaW5hbCk7XG5cbiAgICAgICAgICBsZXQgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTtcbiAgICAgICAgICBwLmlubmVySFRNTCA9IHRlbXBsYXRlO1xuXG4gICAgICAgICAgbGV0IG5vZGUgPSBwLmZpcnN0RWxlbWVudENoaWxkO1xuICAgICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgICAgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgICAgIG5vZGUuaW5uZXJIVE1MID0gdGVtcGxhdGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsICdmYWxzZScpO1xuICAgICAgICAgIG5vZGUuY2xhc3NMaXN0LmFkZCgnZnItZGVsZXRhYmxlJyk7XG5cbiAgICAgICAgICByZXR1cm4gbm9kZS5vdXRlckhUTUw7XG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgIE1lbnRpb25QbHVnaW4uX3RyaWJ1dGVzLnB1c2godGhpcy5fdHJpYnV0ZSk7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZSgpIHtcbiAgICB0aGlzLl90cmlidXRlLmF0dGFjaCh0aGlzLmVkaXRvci5lbCk7XG4gICAgdGhpcy5lZGl0b3IuZXZlbnRzLm9uKCdrZXlkb3duJywgKGUpID0+IHtcbiAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyAmJiAgdGhpcy5fdHJpYnV0ZS5pc0FjdGl2ZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSwgdHJ1ZSk7XG5cbiAgICBcbiAgICB0aGlzLmVkaXRvci5lbC5hZGRFdmVudExpc3RlbmVyKFwidHJpYnV0ZS1yZXBsYWNlZFwiLCB0aGlzLnNlbGVjdGVkKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RlZCA9IChldmVudCkgPT4ge1xuICAgIGlmKHRoaXMuY29uZmlnLnNlbGVjdGVkKSB7XG4gICAgICBpZihNZW50aW9uUGx1Z2luLl9jdXJyZW50R3VpZCA9PT0gdGhpcy5fZ3VpZCkge1xuICAgICAgICB0aGlzLmNvbmZpZy5zZWxlY3RlZChldmVudC5kZXRhaWwuaXRlbS5vcmlnaW5hbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5lZGl0b3IuZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRyaWJ1dGUtcmVwbGFjZWRcIiwgdGhpcy5zZWxlY3RlZCk7XG4gIH1cblxuICBwcml2YXRlIF9jbG9zZUFsbCgpIHtcbiAgICBNZW50aW9uUGx1Z2luLl90cmlidXRlcy5mb3JFYWNoKCh0cmlidXRlKSA9PiB7XG4gICAgICBpZiAodHJpYnV0ZS5tZW51KSB7XG4gICAgICAgIHRyaWJ1dGUuaGlkZU1lbnUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRWYWx1ZXMoa2V5d29yZCwgY2IpIHtcbiAgICBNZW50aW9uUGx1Z2luLl9jdXJyZW50R3VpZCA9IHRoaXMuX2d1aWQ7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmZldGNoKGtleXdvcmQpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBjYihkYXRhKTtcbiAgICAgICAgICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbi5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL3BsdWdpbnMvbWVudGlvbi5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLE9BQXdCLE1BQU0sV0FBVyxDQUFDO0FBSWpELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUzQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHMUMsTUFBTSxPQUFPLGFBQWMsU0FBUSxNQUFNO0lBT3ZDLFlBQTBCLE1BQTJCO1FBQ25ELEtBQUssRUFBRSxDQUFDO1FBRGdCLFdBQU0sR0FBTixNQUFNLENBQXFCO1FBRjdDLFVBQUssR0FBRyxJQUFJLEVBQUUsQ0FBQztRQW1FaEIsYUFBUSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDMUIsSUFBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtnQkFDdkIsSUFBRyxhQUFhLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUU7b0JBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUNsRDthQUNGO1FBQ0gsQ0FBQyxDQUFBO1FBckVDLElBQUksQ0FBQyxNQUFNLG1DQUNOLE1BQU0sS0FDVCxPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO29CQUNqQixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87b0JBQ3ZCLE9BQU8sRUFBRSxNQUFNLENBQUMsUUFBUTtvQkFDeEIsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7d0JBQ2hCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDakIsSUFBSSxDQUFDLFFB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RUFBRSxDQUFDO2FBQ3BCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzdCLGFBQWEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQzthQUN0QixTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNsQixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNmLENBQUM7O0FBaEdjLDBCQUFZLEdBQUcsSUFBSSxDQUFDO0FBQ3BCLHVCQUFTLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVib3VuY2UgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IFRyaWJ1dGUsIHsgVHJpYnV0ZUl0ZW0gfSBmcm9tICd0cmlidXRlanMnO1xuXG5pbXBvcnQgeyBNZW50aW9uUGx1Z2luQ29uZmlnIH0gZnJvbSAnLi9jb25maWdzL21lbnRpb24tcGx1Z2luLmNvbmZpZyc7XG5cbmltcG9ydCB7IFBsdWdpbiB9IGZyb20gJy4uL2NsYXNzZXMvcGx1Z2luJztcblxuaW1wb3J0IHsgZ3VpZCB9IGZyb20gJ0BmaXJlc3RpdGNoL2NvbW1vbic7XG5cblxuZXhwb3J0IGNsYXNzIE1lbnRpb25QbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuXG4gIHByaXZhdGUgc3RhdGljIF9jdXJyZW50R3VpZCA9IG51bGw7XG4gIHByaXZhdGUgc3RhdGljIF90cmlidXRlcyA9IFtdO1xuICBwcml2YXRlIF90cmlidXRlO1xuICBwcml2YXRlIF9ndWlkID0gZ3VpZCgpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgY29uZmlnOiBNZW50aW9uUGx1Z2luQ29uZmlnKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IGNvbmZpZy5uYW1lLFxuICAgICAgICAgIHRvb2x0aXA6IGNvbmZpZy50b29sdGlwLFxuICAgICAgICAgIHN2Z1BhdGg6IGNvbmZpZy5pY29uUGF0aCxcbiAgICAgICAgICBjbGljazogKGVkaXRvcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2xvc2VBbGwoKTtcbiAgICAgICAgICAgIHRoaXMuX3RyaWJ1dGUuc2hvd01lbnVGb3JDb2xsZWN0aW9uKGVkaXRvci5lbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcblxuICAgIHRoaXMuX3RyaWJ1dGUgPSBuZXcgVHJpYnV0ZSh7XG4gICAgICAgIHZhbHVlczogZGVib3VuY2UodGhpcy5fbG9hZFZhbHVlcy5iaW5kKHRoaXMpLCAyMDApLFxuICAgICAgICBzZWFyY2hPcHRzOiB7XG4gICAgICAgICAgcHJlOiAnJyxcbiAgICAgICAgICBwb3N0OiAnJyxcbiAgICAgICAgICBza2lwOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRhaW5lckNsYXNzOiBgZnMtaHRtbC1lZGl0b3ItbWVudGlvbi1jb250YWluZXIgJHt0aGlzLmNvbmZpZy5jb250YWluZXJDbGFzcyB8fCAnJ31gLFxuICAgICAgICBpdGVtQ2xhc3M6IGBmcy1odG1sLWVkaXRvci1tZW50aW9uLW1lbnUtaXRlbSAke3RoaXMuY29uZmlnLm1lbnVJdGVtQ2xhc3MgfHwgJyd9YCxcbiAgICAgICAgdHJpZ2dlcjogdGhpcy5jb25maWcudHJpZ2dlcixcbiAgICAgICAgYWxsb3dTcGFjZXM6IHRydWUsXG4gICAgICAgIG1lbnVJdGVtVGVtcGxhdGU6IChpdGVtOiBUcmlidXRlSXRlbTxhbnk+KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLm1lbnVJdGVtVGVtcGxhdGUoaXRlbS5vcmlnaW5hbCk7XG4gICAgICAgIH0sXG4gICAgICAgIHNlbGVjdFRlbXBsYXRlOiAoaXRlbTogVHJpYnV0ZUl0ZW08YW55PikgPT4ge1xuICAgICAgICAgIGNvbnN0IHRlbXBsYXRlID0gdGhpcy5jb25maWcuc2VsZWN0ZWRUZW1wbGF0ZShpdGVtLm9yaWdpbmFsKTtcblxuICAgICAgICAgIGxldCBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xuICAgICAgICAgIHAuaW5uZXJIVE1MID0gdGVtcGxhdGU7XG5cbiAgICAgICAgICBsZXQgbm9kZSA9IHAuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgICAgICBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICAgICAgbm9kZS5pbm5lckhUTUwgPSB0ZW1wbGF0ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxlJywgJ2ZhbHNlJyk7XG4gICAgICAgICAgbm9kZS5jbGFzc0xpc3QuYWRkKCdmci1kZWxldGFibGUnKTtcblxuICAgICAgICAgIHJldHVybiBub2RlLm91dGVySFRNTDtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgTWVudGlvblBsdWdpbi5fdHJpYnV0ZXMucHVzaCh0aGlzLl90cmlidXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplKCkge1xuICAgIHRoaXMuX3RyaWJ1dGUuYXR0YWNoKHRoaXMuZWRpdG9yLmVsKTtcbiAgICB0aGlzLmVkaXRvci5ldmVudHMub24oJ2tleWRvd24nLCAoZSkgPT4ge1xuICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInICYmICB0aGlzLl90cmlidXRlLmlzQWN0aXZlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9LCB0cnVlKTtcblxuICAgIFxuICAgIHRoaXMuZWRpdG9yLmVsLmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmlidXRlLXJlcGxhY2VkXCIsIHRoaXMuc2VsZWN0ZWQpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdGVkID0gKGV2ZW50KSA9PiB7XG4gICAgaWYodGhpcy5jb25maWcuc2VsZWN0ZWQpIHtcbiAgICAgIGlmKE1lbnRpb25QbHVnaW4uX2N1cnJlbnRHdWlkID09PSB0aGlzLl9ndWlkKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLnNlbGVjdGVkKGV2ZW50LmRldGFpbC5pdGVtLm9yaWdpbmFsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICB0aGlzLmVkaXRvci5lbC5yZW1vdmVFdmVudExpc3RlbmVyKFwidHJpYnV0ZS1yZXBsYWNlZFwiLCB0aGlzLnNlbGVjdGVkKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Nsb3NlQWxsKCkge1xuICAgIE1lbnRpb25QbHVnaW4uX3RyaWJ1dGVzLmZvckVhY2goKHRyaWJ1dGUpID0+IHtcbiAgICAgIGlmICh0cmlidXRlLm1lbnUpIHtcbiAgICAgICAgdHJpYnV0ZS5oaWRlTWVudSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfbG9hZFZhbHVlcyhrZXl3b3JkLCBjYikge1xuICAgIE1lbnRpb25QbHVnaW4uX2N1cnJlbnRHdWlkID0gdGhpcy5fZ3VpZDtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZmV0Y2goa2V5d29yZClcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGNiKGRhdGEpO1xuICAgICAgICAgICAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,94 +1,94 @@
1
- import { __awaiter } from "tslib";
2
- import { Plugin } from '../classes/plugin';
3
- import { ResourceLoader } 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',
1
+ import { __awaiter } from "tslib";
2
+ import { Plugin } from '../classes/plugin';
3
+ import { ResourceLoader } 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
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
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 ResourceLoader.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXJlY29yZC5wbHVnaW4uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmlyZXN0aXRjaC9odG1sLWVkaXRvci8iLCJzb3VyY2VzIjpbImFwcC9wbHVnaW5zL3NjcmVlbi1yZWNvcmQucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBS2pELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxNQUFNO0lBSTVDLFlBQTBCLFNBQW1DLEVBQUU7UUFDN0QsS0FBSyxFQUFFLENBQUM7UUFEZ0IsV0FBTSxHQUFOLE1BQU0sQ0FBK0I7UUFHN0QsSUFBSSxDQUFDLE1BQU0sbUNBQ04sTUFBTSxLQUNULElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLGNBQWMsRUFDbkMsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxjQUFjO29CQUNwQixPQUFPLEVBQUU7OzBJQUV1SDtvQkFDaEksT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO3dCQUVWLFNBQVUsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDOzZCQUMzRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTs0QkFDZixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7NEJBQ2xCLE1BQU0sT0FBTyxHQUFHLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLENBQUM7NEJBQ3ZELElBQUksYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQzs0QkFFdkQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dDQUN4QyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7Z0NBQ3JC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QUMsMEJBQTBCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVPLFVBQVUsQ0FBRSxFQUFFO1FBQ3BCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBRWhFLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQzlCO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLDBCQUEwQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFL0UsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUVoRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTyxNQUFNLENBQUMsRUFBRTtRQUNmLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUU7WUFDdEIsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDM0MsT0FBTyxFQUFFLENBQUM7WUFFWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NyZWVuUmVjb3JkUGx1Z2luQ29uZmlnIH0gZnJvbSAnLi9jb25maWdzL3NjcmVlbi1yZWNvcmQtcGx1Z2luLmNvbmZpZyc7XG5pbXBvcnQgeyBQbHVnaW4gfSBmcm9tICcuLi9jbGFzc2VzL3BsdWdpbic7XG5pbXBvcnQgeyBSZXNvdXJjZUxvYWRlciB9IGZyb20gJy4uL3V0aWxzL2xvYWRlcic7XG5cblxuZGVjbGFyZSB2YXIgTWVkaWFSZWNvcmRlcjogYW55O1xuXG5leHBvcnQgY2xhc3MgU2NyZWVuUmVjb3JkUGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcblxuICBwcml2YXRlIF9hY3RpdmVFbDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIGNvbmZpZzogU2NyZWVuUmVjb3JkUGx1Z2luQ29uZmlnID0ge30pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBuYW1lOiBjb25maWcubmFtZSB8fCAnc2NyZWVuUmVjb3JkJyxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdzY3JlZW5SZWNvcmQnLFxuICAgICAgICAgIHN2Z1BhdGg6IGBNMTQuNyw3Ljd2Ni4xSDcuMVY3LjdIMTQuNyBNMTYuMyw5LjZWNi45YzAtMC40LTAuMy0wLjgtMC44LTAuOEg2LjRjLTAuNCwwLTAuOCwwLjMtMC44LDAuOHY3LjZjMCwwLjQsMC4zLDAuOCwwLjgsMC44aDkuMWMwLjQsMCwwLjgtMC4zLDAuOC0wLjh2LTIuN2wxLjcsMS43YzAuMywwLjMsMC44LDAuMywxLjEsMGMwLjEtMC4xLDAuMi0wLjMsMC4yLTAuNVY4LjRjMC0wLjQtMC4zLTAuOC0wLjgtMC44XG5cdGMtMC4yLDAtMC40LDAuMS0wLjUsMC4yTDE2LjMsOS42eiBNMjEuNSwxLjZIMi45Yy0wLjcsMC0xLjMsMC43LTEuMywxLjZ2MTQuNmMwLDAuOSwwLjYsMS42LDEuMywxLjZoNy42djEuMWwtNSwxYy0wLjIsMC0wLjQsMC4zLTAuNCwwLjZjMCwwLjMsMC4yLDAuNCwwLjQsMC40YzAsMCwwLDAsMC4xLDBsNS4zLTFoMi42bDUuMywxYzAsMCwwLDAsMC4xLDBjMC4yLDAsMC40LTAuMiwwLjQtMC40XG4gIGMwLTAuMy0wLjEtMC42LTAuNC0wLjZsLTUtMXYtMS4xaDcuNmMwLjcsMCwxLjMtMC43LDEuMy0xLjZWMy4yQzIyLjksMi4zLDIyLjMsMS42LDIxLjUsMS42eiBNMjEuMSwxNy4zSDMuM1YzLjdoMTcuOEwyMS4xLDE3LjNMMjEuMSwxNy4zemAsXG4gICAgICAgICAgdG9vbHRpcDogJ1NjcmVlbiBSZWNvcmQnLFxuICAgICAgICAgIGNsaWNrOiAoZWRpdG9yKSA9PiB7XG5cbiAgICAgICAgICAgICg8YW55Pm5hdmlnYXRvcikubWVkaWFEZXZpY2VzLmdldERpc3BsYXlNZWRpYSh7IHZpZGVvOiB0cnVlIH0pXG4gICAgICAgICAgICAgIC50aGVuKChzdHJlYW0pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaHVua3MgPSBbXTtcbiAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0geyBtaW1lVHlwZTogJ3ZpZGVvL3dlYm07IGNvZGVjcz12cDknIH07XG4gICAgICAgICAgICAgICAgbGV0IG1lZGlhUmVjb3JkZXIgPSBuZXcgTWVkaWFSZWNvcmRlcihzdHJlYW0sIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgICAgc3RyZWFtLmFkZEV2ZW50TGlzdGVuZXIoJ2luYWN0aXZlJywgKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgIG1lZGlhUmVjb3JkZXIuc3RvcCgpO1xuICAgICAgICAgICAgICAgICAgbWVkaWFSZWNvcmRlciA9IG51bGw7XG4gICAgICAgICAgICAgICAgICBzdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCgodHJhY2spID0+IHRyYWNrLnN0b3AoKSk7XG4gICAgICAgICAgICAgICAgICBzdHJlYW0gPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoY2h1bmtzLCB7IHR5cGU6ICd2aWRlby93ZWJtJyB9KTtcbiAgICAgICAgICAgICAgICAgIGNvbmZpZy51cGxvYWQoYmxvYilcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgodXJsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRvci5odG1sLmluc2VydChgPHNwYW4gY2xhc3M9XCJmci1zY3JlZW4tcmVjb3JkIGZyLWRlbGV0YWJsZSBmci1kcmFnZ2FibGVcIj48dmlkZW8gY29udHJvbHMgc3R5bGU9XCJtYXgtd2lkdGg6JHtjb25maWcubWF4V2lkdGh9XCI+PHNvdXJjZSBzcmM9XCIke3VybH1cIiB0eXBlPVwidmlkZW8vd2VibVwiPjwvdmlkZW8+PC9zcGFuPmApO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBtZWRpYVJlY29yZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2RhdGFhdmFpbGFibGUnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhICYmIGV2ZW50LmRhdGEuc2l6ZSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtzLnB1c2goZXZlbnQuZGF0YSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBtZWRpYVJlY29yZGVyLnN0YXJ0KDEwKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmNhdGNoKChlKSA9PiB7IH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaW5pdGlhbGl6ZSgpIHtcbiAgICBhd2FpdCBSZXNvdXJjZUxvYWRlci5sb2FkU3R5bGVzKCdmcm9hbGEnKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuXG4gICAgY29uc3QgRnJvYWxhRWRpdG9yID0gKHdpbmRvdyBhcyBhbnkpLkZyb2FsYUVkaXRvcjtcblxuICAgIHRoaXMuZWRpdG9yLmV2ZW50cy5vbignbW91c2V1cCcsIChlKSA9PiB7XG4gICAgICBjb25zdCBlbCA9IHRoaXMuX2dldEVsKGUudGFyZ2V0KTtcblxuICAgICAgaWYgKGVsKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yLnBvcHVwcy5oaWRlQWxsKCk7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUVsID0gZWw7XG4gICAgICAgIHRoaXMuX3Nob3dQb3B1cChlbCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBGcm9hbGFFZGl0b3IuUE9QVVBfVEVNUExBVEVTW1wic2NyZWVuUmVjb3JkUGx1Z2luLnBvcHVwXCJdID0gJ1tfQlVUVE9OU19dJztcblxuICAgIEZyb2FsYUVkaXRvci5EZWZpbmVJY29uKCdwb3B1cENsb3NlJywgeyBOQU1FOiAndHJhc2gnLCBTVkdfS0VZOiAncmVtb3ZlJyB9KTtcbiAgICBGcm9hbGFFZGl0b3IuUmVnaXN0ZXJDb21tYW5kKCdwb3B1cENsb3NlJywge1xuICAgICAgdGl0bGU6ICdSZW1vdmUnLFxuICAgICAgdW5kbzogZmFsc2UsXG4gICAgICBmb2N1czogZmFsc2UsXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fYWN0aXZlRWwpIHtcbiAgICAgICAgICB0aGlzLl9hY3RpdmVFbC5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlUG9wdXAoKSB7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZSA9IHtcbiAgICAgIGJ1dHRvbnM6IGA8ZGl2IGNsYXNzPVwiZnItYnV0dG9uc1wiPiR7dGhpcy5lZGl0b3IuYnV0dG9uLmJ1aWxkTGlzdChbJ3BvcHVwQ2xvc2UnXSl9PC9kaXY+YCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yLnBvcHVwcy5jcmVhdGUoJ3NjcmVlblJlY29yZFBsdWdpbi5wb3B1cCcsIHRlbXBsYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Nob3dQb3B1cCAoZWwpIHtcbiAgICB2YXIgJHBvcHVwID0gdGhpcy5lZGl0b3IucG9wdXBzLmdldCgnc2NyZWVuUmVjb3JkUGx1Z2luLnBvcHVwJyk7XG5cbiAgICBpZiAoISRwb3B1cCkge1xuICAgICAgJHBvcHVwID0gdGhpcy5fY3JlYXRlUG9wdXAoKTtcbiAgICB9XG5cbiAgICB0aGlzLmVkaXRvci5wb3B1cHMuc2V0Q29udGFpbmVyKCdzY3JlZW5SZWNvcmRQbHVnaW4ucG9wdXAnLCB0aGlzLmVkaXRvci4kKGVsKSk7XG5cbiAgICBjb25zdCBsZWZ0ID0gZWwub2Zmc2V0TGVmdCArIGVsLm9mZnNldFdpZHRoIC8gMjtcblxuICAgIHRoaXMuZWRpdG9yLnBvcHVwcy5zaG93KCdzY3JlZW5SZWNvcmRQbHVnaW4ucG9wdXAnLCBsZWZ0LCBudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEVsKGVsKSB7XG4gICAgaWYgKGVsICYmIGVsLmNsYXNzTGlzdCkge1xuICAgICAgaWYgKGVsLmNsYXNzTGlzdC5jb250YWlucygnZnItc2NyZWVuLXJlY29yZCcpKVxuICAgICAgICByZXR1cm4gZWw7XG5cbiAgICAgIHJldHVybiB0aGlzLl9nZXRFbChlbC5wYXJlbnROb2RlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
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 ResourceLoader.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXJlY29yZC5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL3BsdWdpbnMvc2NyZWVuLXJlY29yZC5wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFLakQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLE1BQU07SUFJNUMsWUFBMEIsU0FBbUMsRUFBRTtRQUM3RCxLQUFLLEVBQUUsQ0FBQztRQURnQixXQUFNLEdBQU4sTUFBTSxDQUErQjtRQUc3RCxJQUFJLENBQUMsTUFBTSxtQ0FDTixNQUFNLEtBQ1QsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUksY0FBYyxFQUNuQyxPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLGNBQWM7b0JBQ3BCLE9BQU8sRUFBRTs7MElBRXVIO29CQUNoSSxPQUFPLEVBQUUsZUFBZTtvQkFDeEIsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7d0JBRVYsU0FBVSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7NkJBQzNELElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFOzRCQUNmLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQzs0QkFDbEIsTUFBTSxPQUFPLEdBQUcsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQzs0QkFDdkQsSUFBSSxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDOzRCQUV2RCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0NBQ3hDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQ0FDckIsYUFBYSxHQUFHLElB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RSxRQUFRLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU8sVUFBVSxDQUFFLEVBQUU7UUFDcEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFFaEUsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDOUI7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUvRSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVPLE1BQU0sQ0FBQyxFQUFFO1FBQ2YsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRTtZQUN0QixJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDO2dCQUMzQyxPQUFPLEVBQUUsQ0FBQztZQUVaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbkM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY3JlZW5SZWNvcmRQbHVnaW5Db25maWcgfSBmcm9tICcuL2NvbmZpZ3Mvc2NyZWVuLXJlY29yZC1wbHVnaW4uY29uZmlnJztcbmltcG9ydCB7IFBsdWdpbiB9IGZyb20gJy4uL2NsYXNzZXMvcGx1Z2luJztcbmltcG9ydCB7IFJlc291cmNlTG9hZGVyIH0gZnJvbSAnLi4vdXRpbHMvbG9hZGVyJztcblxuXG5kZWNsYXJlIHZhciBNZWRpYVJlY29yZGVyOiBhbnk7XG5cbmV4cG9ydCBjbGFzcyBTY3JlZW5SZWNvcmRQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuXG4gIHByaXZhdGUgX2FjdGl2ZUVsO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgY29uZmlnOiBTY3JlZW5SZWNvcmRQbHVnaW5Db25maWcgPSB7fSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIG5hbWU6IGNvbmZpZy5uYW1lIHx8ICdzY3JlZW5SZWNvcmQnLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ3NjcmVlblJlY29yZCcsXG4gICAgICAgICAgc3ZnUGF0aDogYE0xNC43LDcuN3Y2LjFINy4xVjcuN0gxNC43IE0xNi4zLDkuNlY2LjljMC0wLjQtMC4zLTAuOC0wLjgtMC44SDYuNGMtMC40LDAtMC44LDAuMy0wLjgsMC44djcuNmMwLDAuNCwwLjMsMC44LDAuOCwwLjhoOS4xYzAuNCwwLDAuOC0wLjMsMC44LTAuOHYtMi43bDEuNywxLjdjMC4zLDAuMywwLjgsMC4zLDEuMSwwYzAuMS0wLjEsMC4yLTAuMywwLjItMC41VjguNGMwLTAuNC0wLjMtMC44LTAuOC0wLjhcblx0Yy0wLjIsMC0wLjQsMC4xLTAuNSwwLjJMMTYuMyw5LjZ6IE0yMS41LDEuNkgyLjljLTAuNywwLTEuMywwLjctMS4zLDEuNnYxNC42YzAsMC45LDAuNiwxLjYsMS4zLDEuNmg3LjZ2MS4xbC01LDFjLTAuMiwwLTAuNCwwLjMtMC40LDAuNmMwLDAuMywwLjIsMC40LDAuNCwwLjRjMCwwLDAsMCwwLjEsMGw1LjMtMWgyLjZsNS4zLDFjMCwwLDAsMCwwLjEsMGMwLjIsMCwwLjQtMC4yLDAuNC0wLjRcbiAgYzAtMC4zLTAuMS0wLjYtMC40LTAuNmwtNS0xdi0xLjFoNy42YzAuNywwLDEuMy0wLjcsMS4zLTEuNlYzLjJDMjIuOSwyLjMsMjIuMywxLjYsMjEuNSwxLjZ6IE0yMS4xLDE3LjNIMy4zVjMuN2gxNy44TDIxLjEsMTcuM0wyMS4xLDE3LjN6YCxcbiAgICAgICAgICB0b29sdGlwOiAnU2NyZWVuIFJlY29yZCcsXG4gICAgICAgICAgY2xpY2s6IChlZGl0b3IpID0+IHtcblxuICAgICAgICAgICAgKDxhbnk+bmF2aWdhdG9yKS5tZWRpYURldmljZXMuZ2V0RGlzcGxheU1lZGlhKHsgdmlkZW86IHRydWUgfSlcbiAgICAgICAgICAgICAgLnRoZW4oKHN0cmVhbSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rcyA9IFtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7IG1pbWVUeXBlOiAndmlkZW8vd2VibTsgY29kZWNzPXZwOScgfTtcbiAgICAgICAgICAgICAgICBsZXQgbWVkaWFSZWNvcmRlciA9IG5ldyBNZWRpYVJlY29yZGVyKHN0cmVhbSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgICAgICBzdHJlYW0uYWRkRXZlbnRMaXN0ZW5lcignaW5hY3RpdmUnLCAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgbWVkaWFSZWNvcmRlci5zdG9wKCk7XG4gICAgICAgICAgICAgICAgICBtZWRpYVJlY29yZGVyID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgIHN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKCh0cmFjaykgPT4gdHJhY2suc3RvcCgpKTtcbiAgICAgICAgICAgICAgICAgIHN0cmVhbSA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihjaHVua3MsIHsgdHlwZTogJ3ZpZGVvL3dlYm0nIH0pO1xuICAgICAgICAgICAgICAgICAgY29uZmlnLnVwbG9hZChibG9iKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh1cmwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yLmh0bWwuaW5zZXJ0KGA8c3BhbiBjbGFzcz1cImZyLXNjcmVlbi1yZWNvcmQgZnItZGVsZXRhYmxlIGZyLWRyYWdnYWJsZVwiPjx2aWRlbyBjb250cm9scyBzdHlsZT1cIm1heC13aWR0aDoke2NvbmZpZy5tYXhXaWR0aH1cIj48c291cmNlIHNyYz1cIiR7dXJsfVwiIHR5cGU9XCJ2aWRlby93ZWJtXCI+PC92aWRlbz48L3NwYW4+YCk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIG1lZGlhUmVjb3JkZXIuYWRkRXZlbnRMaXN0ZW5lcignZGF0YWF2YWlsYWJsZScsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEgJiYgZXZlbnQuZGF0YS5zaXplID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjaHVua3MucHVzaChldmVudC5kYXRhKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIG1lZGlhUmVjb3JkZXIuc3RhcnQoMTApO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuY2F0Y2goKGUpID0+IHsgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbml0aWFsaXplKCkge1xuICAgIGF3YWl0IFJlc291cmNlTG9hZGVyLmxvYWRTdHlsZXMoJ2Zyb2FsYScpXG4gICAgICAudG9Qcm9taXNlKCk7XG5cbiAgICBjb25zdCBGcm9hbGFFZGl0b3IgPSAod2luZG93IGFzIGFueSkuRnJvYWxhRWRpdG9yO1xuXG4gICAgdGhpcy5lZGl0b3IuZXZlbnRzLm9uKCdtb3VzZXVwJywgKGUpID0+IHtcbiAgICAgIGNvbnN0IGVsID0gdGhpcy5fZ2V0RWwoZS50YXJnZXQpO1xuXG4gICAgICBpZiAoZWwpIHtcbiAgICAgICAgdGhpcy5lZGl0b3IucG9wdXBzLmhpZGVBbGwoKTtcbiAgICAgICAgdGhpcy5fYWN0aXZlRWwgPSBlbDtcbiAgICAgICAgdGhpcy5fc2hvd1BvcHVwKGVsKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIEZyb2FsYUVkaXRvci5QT1BVUF9URU1QTEFURVNbXCJzY3JlZW5SZWNvcmRQbHVnaW4ucG9wdXBcIl0gPSAnW19CVVRUT05TX10nO1xuXG4gICAgRnJvYWxhRWRpdG9yLkRlZmluZUljb24oJ3BvcHVwQ2xvc2UnLCB7IE5BTUU6ICd0cmFzaCcsIFNWR19LRVk6ICdyZW1vdmUnIH0pO1xuICAgIEZyb2FsYUVkaXRvci5SZWdpc3RlckNvbW1hbmQoJ3BvcHVwQ2xvc2UnLCB7XG4gICAgICB0aXRsZTogJ1JlbW92ZScsXG4gICAgICB1bmRvOiBmYWxzZSxcbiAgICAgIGZvY3VzOiBmYWxzZSxcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmVFbCkge1xuICAgICAgICAgIHRoaXMuX2FjdGl2ZUVsLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVQb3B1cCgpIHtcblxuICAgIGNvbnN0IHRlbXBsYXRlID0ge1xuICAgICAgYnV0dG9uczogYDxkaXYgY2xhc3M9XCJmci1idXR0b25zXCI+JHt0aGlzLmVkaXRvci5idXR0b24uYnVpbGRMaXN0KFsncG9wdXBDbG9zZSddKX08L2Rpdj5gLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5lZGl0b3IucG9wdXBzLmNyZWF0ZSgnc2NyZWVuUmVjb3JkUGx1Z2luLnBvcHVwJywgdGVtcGxhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2hvd1BvcHVwIChlbCkge1xuICAgIHZhciAkcG9wdXAgPSB0aGlzLmVkaXRvci5wb3B1cHMuZ2V0KCdzY3JlZW5SZWNvcmRQbHVnaW4ucG9wdXAnKTtcblxuICAgIGlmICghJHBvcHVwKSB7XG4gICAgICAkcG9wdXAgPSB0aGlzLl9jcmVhdGVQb3B1cCgpO1xuICAgIH1cblxuICAgIHRoaXMuZWRpdG9yLnBvcHVwcy5zZXRDb250YWluZXIoJ3NjcmVlblJlY29yZFBsdWdpbi5wb3B1cCcsIHRoaXMuZWRpdG9yLiQoZWwpKTtcblxuICAgIGNvbnN0IGxlZnQgPSBlbC5vZmZzZXRMZWZ0ICsgZWwub2Zmc2V0V2lkdGggLyAyO1xuXG4gICAgdGhpcy5lZGl0b3IucG9wdXBzLnNob3coJ3NjcmVlblJlY29yZFBsdWdpbi5wb3B1cCcsIGxlZnQsIG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RWwoZWwpIHtcbiAgICBpZiAoZWwgJiYgZWwuY2xhc3NMaXN0KSB7XG4gICAgICBpZiAoZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdmci1zY3JlZW4tcmVjb3JkJykpXG4gICAgICAgIHJldHVybiBlbDtcblxuICAgICAgcmV0dXJuIHRoaXMuX2dldEVsKGVsLnBhcmVudE5vZGUpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,81 +1,80 @@
1
- import { __decorate, __metadata, __param } from "tslib";
2
- import { Inject, Injectable, Optional } from '@angular/core';
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 { ResourceLoader } from '../utils/loader';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "../injects/config.inject";
9
- let FsFroalaLoaderService = class FsFroalaLoaderService {
10
- constructor(_defaultConfig) {
11
- this._defaultConfig = _defaultConfig;
12
- this._froalaLoaded = new BehaviorSubject(false);
13
- this._defaultPluginsLoaded = new BehaviorSubject(false);
14
- this._loaded$ = combineLatest([this._froalaLoaded, this._defaultPluginsLoaded])
15
- .pipe(map(([FroalaReady, pluginsRead]) => {
16
- return pluginsRead && FroalaReady;
17
- }), shareReplay(1));
18
- if (this._defaultConfig) {
19
- if (this._defaultConfig.assetsJSPath) {
20
- ResourceLoader.setResourceBase(this._defaultConfig.assetsJSPath);
21
- }
22
- if (this._defaultConfig.assetsCSSPath) {
23
- ResourceLoader.setStylesBase(this._defaultConfig.assetsCSSPath);
24
- }
25
- }
26
- this._load();
27
- }
28
- get loaded$() {
29
- return this._loaded$;
30
- }
31
- get ready() {
32
- return this._froalaLoaded.getValue() && this._defaultPluginsLoaded.getValue();
33
- }
34
- get FroalaEditor() {
35
- return this._FroalaEditor;
36
- }
37
- _load() {
38
- combineLatest([
39
- ResourceLoader.loadResource('froala'),
40
- ResourceLoader.loadStyles('froala')
41
- ])
42
- .pipe(tap(() => {
43
- this._FroalaEditor = window.FroalaEditor;
44
- this._froalaDone();
45
- }), concatMap(() => {
46
- return this._loadPlugins();
47
- }), tap(() => {
48
- this._defaultPluginsDone();
49
- }))
50
- .subscribe();
51
- }
52
- _loadPlugins() {
53
- const imports = this._defaultConfig
54
- .defaultPlugins
55
- .reduce((acc, pluginName) => {
56
- const import$ = ResourceLoader.loadResource(pluginName);
57
- acc.push(import$);
58
- return acc;
59
- }, []);
60
- return combineLatest(imports);
61
- }
62
- _froalaDone() {
63
- this._froalaLoaded.next(true);
64
- }
65
- _defaultPluginsDone() {
66
- this._defaultPluginsLoaded.next(true);
67
- }
68
- };
69
- FsFroalaLoaderService.ctorParameters = () => [
70
- { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [FS_HTML_EDITOR_CONFIG,] }] }
71
- ];
72
- FsFroalaLoaderService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FsFroalaLoaderService_Factory() { return new FsFroalaLoaderService(i0.ɵɵinject(i1.FS_HTML_EDITOR_CONFIG, 8)); }, token: FsFroalaLoaderService, providedIn: "root" });
73
- FsFroalaLoaderService = __decorate([
74
- Injectable({
75
- providedIn: 'root',
76
- }),
77
- __param(0, Optional()), __param(0, Inject(FS_HTML_EDITOR_CONFIG)),
78
- __metadata("design:paramtypes", [Object])
79
- ], FsFroalaLoaderService);
80
- export { FsFroalaLoaderService };
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvYWxhLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvaHRtbC1lZGl0b3IvIiwic291cmNlcyI6WyJhcHAvc2VydmljZXMvZnJvYWxhLWxvYWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBTWpELElBQWEscUJBQXFCLEdBQWxDLE1BQWEscUJBQXFCO0lBZWhDLFlBQ3FELGNBQWtDO1FBQWxDLG1CQUFjLEdBQWQsY0FBYyxDQUFvQjtRQVovRSxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5ELGFBQVEsR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2FBQy9FLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFO1lBQ2pDLE9BQU8sV0FBVyxJQUFJLFdBQVcsQ0FBQztRQUNwQyxDQUFDLENBQUMsRUFDRixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztRQUtGLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFO2dCQUNwQyxjQUFjLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUE7YUFDakU7WUFFRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFO2dCQUNyQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUE7YUFDaEU7U0FDRjtRQUVELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hGLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFTyxLQUFLO1FBQ1gsYUFBYSxDQUFDO1lBQ1osY0FBYyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7WUFDckMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDcEMsQ0FBQzthQUNDLElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLGFBQWEsR0FBSSxNQUFjLENBQUMsWUFBWSxDQUFDO1lBQ2xELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVPLFlBQVk7UUFDbEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWM7YUFDaEMsY0FBYzthQUNkLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsRUFBRTtZQUMxQixNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRXhELEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFbEIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFVCxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUNGLENBQUE7OzRDQXBFSSxRQUFRLFlBQUksTUFBTSxTQUFDLHFCQUFxQjs7O0FBaEJoQyxxQkFBcUI7SUFIakMsVUFBVSxDQUFDO1FBQ1YsVUFBVSxFQUFFLE1BQU07S0FDbkIsQ0FBQztJQWlCRyxXQUFBLFFBQVEsRUFBRSxDQUFBLEVBQUUsV0FBQSxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQTs7R0FoQmpDLHFCQUFxQixDQW9GakM7U0FwRlkscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbmNhdE1hcCwgbWFwLCBzaGFyZVJlcGxheSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGU19IVE1MX0VESVRPUl9DT05GSUcgfSBmcm9tICcuLi9pbmplY3RzL2NvbmZpZy5pbmplY3QnO1xuaW1wb3J0IHsgRnNIdG1sRWRpdG9yQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9odG1sLWVkaXRvci1jb25maWcnO1xuXG5pbXBvcnQgeyBSZXNvdXJjZUxvYWRlciB9IGZyb20gJy4uL3V0aWxzL2xvYWRlcic7XG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEZzRnJvYWxhTG9hZGVyU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBfRnJvYWxhRWRpdG9yOiB1bmtub3duO1xuXG4gIHByaXZhdGUgX2Zyb2FsYUxvYWRlZCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIF9kZWZhdWx0UGx1Z2luc0xvYWRlZCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIHByaXZhdGUgX2xvYWRlZCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9mcm9hbGFMb2FkZWQsIHRoaXMuX2RlZmF1bHRQbHVnaW5zTG9hZGVkXSlcbiAgICAucGlwZShcbiAgICAgIG1hcCgoW0Zyb2FsYVJlYWR5LCBwbHVnaW5zUmVhZF0pID0+IHtcbiAgICAgICAgcmV0dXJuIHBsdWdpbnNSZWFkICYmIEZyb2FsYVJlYWR5O1xuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRlNfSFRNTF9FRElUT1JfQ09ORklHKSBwcml2YXRlIF9kZWZhdWx0Q29uZmlnOiBGc0h0bWxFZGl0b3JDb25maWcsXG4gICkge1xuICAgIGlmICh0aGlzLl9kZWZhdWx0Q29uZmlnKSB7XG4gICAgICBpZiAodGhpcy5fZGVmYXVsdENvbmZpZy5hc3NldHNKU1BhdGgpIHtcbiAgICAgICAgUmVzb3VyY2VMb2FkZXIuc2V0UmVzb3VyY2VCYXNlKHRoaXMuX2RlZmF1bHRDb25maWcuYXNzZXRzSlNQYXRoKVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fZGVmYXVsdENvbmZpZy5hc3NldHNDU1NQYXRoKSB7XG4gICAgICAgIFJlc291cmNlTG9hZGVyLnNldFN0eWxlc0Jhc2UodGhpcy5fZGVmYXVsdENvbmZpZy5hc3NldHNDU1NQYXRoKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2xvYWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9hZGVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fbG9hZGVkJDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVhZHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Zyb2FsYUxvYWRlZC5nZXRWYWx1ZSgpICYmIHRoaXMuX2RlZmF1bHRQbHVnaW5zTG9hZGVkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IEZyb2FsYUVkaXRvcigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9Gcm9hbGFFZGl0b3I7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkKCkge1xuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgUmVzb3VyY2VMb2FkZXIubG9hZFJlc291cmNlKCdmcm9hbGEnKSxcbiAgICAgIFJlc291cmNlTG9hZGVyLmxvYWRTdHlsZXMoJ2Zyb2FsYScpXG4gICAgXSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX0Zyb2FsYUVkaXRvciA9ICh3aW5kb3cgYXMgYW55KS5Gcm9hbGFFZGl0b3I7XG4gICAgICAgICAgdGhpcy5fZnJvYWxhRG9uZSgpO1xuICAgICAgICB9KSxcbiAgICAgICAgY29uY2F0TWFwKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fbG9hZFBsdWdpbnMoKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fZGVmYXVsdFBsdWdpbnNEb25lKCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbG9hZFBsdWdpbnMoKTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgY29uc3QgaW1wb3J0cyA9IHRoaXMuX2RlZmF1bHRDb25maWdcbiAgICAgIC5kZWZhdWx0UGx1Z2luc1xuICAgICAgLnJlZHVjZSgoYWNjLCBwbHVnaW5OYW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IGltcG9ydCQgPSBSZXNvdXJjZUxvYWRlci5sb2FkUmVzb3VyY2UocGx1Z2luTmFtZSk7XG5cbiAgICAgICAgYWNjLnB1c2goaW1wb3J0JCk7XG5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIFtdKTtcblxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KGltcG9ydHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZnJvYWxhRG9uZSgpIHtcbiAgICB0aGlzLl9mcm9hbGFMb2FkZWQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2RlZmF1bHRQbHVnaW5zRG9uZSgpIHtcbiAgICB0aGlzLl9kZWZhdWx0UGx1Z2luc0xvYWRlZC5uZXh0KHRydWUpO1xuICB9XG59XG4iXX0=
1
+ import { Inject, Injectable, Optional } from '@angular/core';
2
+ import { BehaviorSubject, combineLatest } from 'rxjs';
3
+ import { concatMap, map, shareReplay, tap } from 'rxjs/operators';
4
+ import { FS_HTML_EDITOR_CONFIG } from '../injects/config.inject';
5
+ import { ResourceLoader } from '../utils/loader';
6
+ import * as i0 from "@angular/core";
7
+ export class FsFroalaLoaderService {
8
+ constructor(_defaultConfig) {
9
+ this._defaultConfig = _defaultConfig;
10
+ this._froalaLoaded = new BehaviorSubject(false);
11
+ this._defaultPluginsLoaded = new BehaviorSubject(false);
12
+ this._loaded$ = combineLatest([this._froalaLoaded, this._defaultPluginsLoaded])
13
+ .pipe(map(([FroalaReady, pluginsRead]) => {
14
+ return pluginsRead && FroalaReady;
15
+ }), shareReplay(1));
16
+ if (this._defaultConfig) {
17
+ if (this._defaultConfig.assetsJSPath) {
18
+ ResourceLoader.setResourceBase(this._defaultConfig.assetsJSPath);
19
+ }
20
+ if (this._defaultConfig.assetsCSSPath) {
21
+ ResourceLoader.setStylesBase(this._defaultConfig.assetsCSSPath);
22
+ }
23
+ }
24
+ this._load();
25
+ }
26
+ get loaded$() {
27
+ return this._loaded$;
28
+ }
29
+ get ready() {
30
+ return this._froalaLoaded.getValue() && this._defaultPluginsLoaded.getValue();
31
+ }
32
+ get FroalaEditor() {
33
+ return this._FroalaEditor;
34
+ }
35
+ _load() {
36
+ combineLatest([
37
+ ResourceLoader.loadResource('froala'),
38
+ ResourceLoader.loadStyles('froala')
39
+ ])
40
+ .pipe(tap(() => {
41
+ this._FroalaEditor = window.FroalaEditor;
42
+ this._froalaDone();
43
+ }), concatMap(() => {
44
+ return this._loadPlugins();
45
+ }), tap(() => {
46
+ this._defaultPluginsDone();
47
+ }))
48
+ .subscribe();
49
+ }
50
+ _loadPlugins() {
51
+ const imports = this._defaultConfig
52
+ .defaultPlugins
53
+ .reduce((acc, pluginName) => {
54
+ const import$ = ResourceLoader.loadResource(pluginName);
55
+ acc.push(import$);
56
+ return acc;
57
+ }, []);
58
+ return combineLatest(imports);
59
+ }
60
+ _froalaDone() {
61
+ this._froalaLoaded.next(true);
62
+ }
63
+ _defaultPluginsDone() {
64
+ this._defaultPluginsLoaded.next(true);
65
+ }
66
+ }
67
+ FsFroalaLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFroalaLoaderService, deps: [{ token: FS_HTML_EDITOR_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
68
+ FsFroalaLoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFroalaLoaderService, providedIn: 'root' });
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsFroalaLoaderService, decorators: [{
70
+ type: Injectable,
71
+ args: [{
72
+ providedIn: 'root',
73
+ }]
74
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
75
+ type: Optional
76
+ }, {
77
+ type: Inject,
78
+ args: [FS_HTML_EDITOR_CONFIG]
79
+ }] }]; } });
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvYWxhLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9zZXJ2aWNlcy9mcm9hbGEtbG9hZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBTWpELE1BQU0sT0FBTyxxQkFBcUI7SUFlaEMsWUFDcUQsY0FBa0M7UUFBbEMsbUJBQWMsR0FBZCxjQUFjLENBQW9CO1FBWi9FLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsMEJBQXFCLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkQsYUFBUSxHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7YUFDL0UsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUU7WUFDakMsT0FBTyxXQUFXLElBQUksV0FBVyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxFQUNGLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO1FBS0YsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUU7Z0JBQ3BDLGNBQWMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQTthQUNqRTtZQUVELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUU7Z0JBQ3JDLGNBQWMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQTthQUNoRTtTQUNGO1FBRUQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEYsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVPLEtBQUs7UUFDWCxhQUFhLENBQUM7WUFDWixjQUFjLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztZQUNyQyxjQUFjLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztTQUNwQyxDQUFDO2FBQ0MsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsYUFBYSxHQUFJLE1BQWMsQ0FBQyxZQUFZLENBQUM7WUFDbEQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRU8sWUFBWTtRQUNsQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYzthQUNoQyxjQUFjO2FBQ2QsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxFQUFFO1lBQzFCLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFeEQsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVsQixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVULE9BQU8sYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDOzttSEFuRlUscUJBQXFCLGtCQWdCVixxQkFBcUI7dUhBaEJoQyxxQkFBcUIsY0FGcEIsTUFBTTs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFpQkksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY29uY2F0TWFwLCBtYXAsIHNoYXJlUmVwbGF5LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZTX0hUTUxfRURJVE9SX0NPTkZJRyB9IGZyb20gJy4uL2luamVjdHMvY29uZmlnLmluamVjdCc7XG5pbXBvcnQgeyBGc0h0bWxFZGl0b3JDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2h0bWwtZWRpdG9yLWNvbmZpZyc7XG5cbmltcG9ydCB7IFJlc291cmNlTG9hZGVyIH0gZnJvbSAnLi4vdXRpbHMvbG9hZGVyJztcblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRnNGcm9hbGFMb2FkZXJTZXJ2aWNlIHtcblxuICBwcml2YXRlIF9Gcm9hbGFFZGl0b3I6IHVua25vd247XG5cbiAgcHJpdmF0ZSBfZnJvYWxhTG9hZGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgX2RlZmF1bHRQbHVnaW5zTG9hZGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHJpdmF0ZSBfbG9hZGVkJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2Zyb2FsYUxvYWRlZCwgdGhpcy5fZGVmYXVsdFBsdWdpbnNMb2FkZWRdKVxuICAgIC5waXBlKFxuICAgICAgbWFwKChbRnJvYWxhUmVhZHksIHBsdWdpbnNSZWFkXSkgPT4ge1xuICAgICAgICByZXR1cm4gcGx1Z2luc1JlYWQgJiYgRnJvYWxhUmVhZHk7XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChGU19IVE1MX0VESVRPUl9DT05GSUcpIHByaXZhdGUgX2RlZmF1bHRDb25maWc6IEZzSHRtbEVkaXRvckNvbmZpZyxcbiAgKSB7XG4gICAgaWYgKHRoaXMuX2RlZmF1bHRDb25maWcpIHtcbiAgICAgIGlmICh0aGlzLl9kZWZhdWx0Q29uZmlnLmFzc2V0c0pTUGF0aCkge1xuICAgICAgICBSZXNvdXJjZUxvYWRlci5zZXRSZXNvdXJjZUJhc2UodGhpcy5fZGVmYXVsdENvbmZpZy5hc3NldHNKU1BhdGgpXG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9kZWZhdWx0Q29uZmlnLmFzc2V0c0NTU1BhdGgpIHtcbiAgICAgICAgUmVzb3VyY2VMb2FkZXIuc2V0U3R5bGVzQmFzZSh0aGlzLl9kZWZhdWx0Q29uZmlnLmFzc2V0c0NTU1BhdGgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fbG9hZCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBsb2FkZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9sb2FkZWQkO1xuICB9XG5cbiAgcHVibGljIGdldCByZWFkeSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZnJvYWxhTG9hZGVkLmdldFZhbHVlKCkgJiYgdGhpcy5fZGVmYXVsdFBsdWdpbnNMb2FkZWQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgRnJvYWxhRWRpdG9yKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX0Zyb2FsYUVkaXRvcjtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWQoKSB7XG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICBSZXNvdXJjZUxvYWRlci5sb2FkUmVzb3VyY2UoJ2Zyb2FsYScpLFxuICAgICAgUmVzb3VyY2VMb2FkZXIubG9hZFN0eWxlcygnZnJvYWxhJylcbiAgICBdKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fRnJvYWxhRWRpdG9yID0gKHdpbmRvdyBhcyBhbnkpLkZyb2FsYUVkaXRvcjtcbiAgICAgICAgICB0aGlzLl9mcm9hbGFEb25lKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBjb25jYXRNYXAoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLl9sb2FkUGx1Z2lucygpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9kZWZhdWx0UGx1Z2luc0RvbmUoKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkUGx1Z2lucygpOiBPYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICBjb25zdCBpbXBvcnRzID0gdGhpcy5fZGVmYXVsdENvbmZpZ1xuICAgICAgLmRlZmF1bHRQbHVnaW5zXG4gICAgICAucmVkdWNlKChhY2MsIHBsdWdpbk5hbWUpID0+IHtcbiAgICAgICAgY29uc3QgaW1wb3J0JCA9IFJlc291cmNlTG9hZGVyLmxvYWRSZXNvdXJjZShwbHVnaW5OYW1lKTtcblxuICAgICAgICBhY2MucHVzaChpbXBvcnQkKTtcblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoaW1wb3J0cyk7XG4gIH1cblxuICBwcml2YXRlIF9mcm9hbGFEb25lKCkge1xuICAgIHRoaXMuX2Zyb2FsYUxvYWRlZC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGVmYXVsdFBsdWdpbnNEb25lKCkge1xuICAgIHRoaXMuX2RlZmF1bHRQbHVnaW5zTG9hZGVkLm5leHQodHJ1ZSk7XG4gIH1cbn1cbiJdfQ==