@firestitch/html-editor 9.5.6 → 9.5.9

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 (66) hide show
  1. package/app/classes/plugin.d.ts +7 -7
  2. package/app/components/html-editor/html-editor.component.d.ts +54 -54
  3. package/app/components/html-renderer/html-renderer.component.d.ts +9 -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 +25 -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 -12
  16. package/app/plugins/configs/screen-record-plugin.config.d.ts +7 -7
  17. package/app/plugins/mention.plugin.d.ts +15 -12
  18. package/app/plugins/screen-record.plugin.d.ts +11 -11
  19. package/app/services/froala-loader.service.d.ts +17 -17
  20. package/app/utils/loader.d.ts +7 -7
  21. package/bundles/firestitch-html-editor.umd.js +1031 -1018
  22. package/bundles/firestitch-html-editor.umd.js.map +1 -1
  23. package/bundles/firestitch-html-editor.umd.min.js +2 -2
  24. package/bundles/firestitch-html-editor.umd.min.js.map +1 -1
  25. package/esm2015/app/classes/plugin.js +4 -4
  26. package/esm2015/app/components/html-editor/html-editor.component.js +444 -444
  27. package/esm2015/app/components/html-renderer/html-renderer.component.js +34 -34
  28. package/esm2015/app/consts/paragraph-buttons.const.js +8 -8
  29. package/esm2015/app/consts/rich-buttons.const.js +6 -6
  30. package/esm2015/app/consts/text-buttons.const.js +18 -18
  31. package/esm2015/app/fs-html-editor.module.js +56 -56
  32. package/esm2015/app/injects/config.inject.js +3 -3
  33. package/esm2015/app/plugins/checklist.plugin.js +34 -34
  34. package/esm2015/app/plugins/code.plugin.js +62 -62
  35. package/esm2015/app/plugins/configs/mention-plugin.config.js +1 -1
  36. package/esm2015/app/plugins/mention.plugin.js +87 -73
  37. package/esm2015/app/plugins/screen-record.plugin.js +91 -91
  38. package/esm2015/app/services/froala-loader.service.js +80 -80
  39. package/esm2015/app/utils/loader.js +82 -82
  40. package/esm2015/firestitch-html-editor.js +8 -8
  41. package/esm2015/public_api.js +11 -11
  42. package/esm5/app/classes/plugin.js +8 -8
  43. package/esm5/app/components/html-editor/html-editor.component.js +470 -470
  44. package/esm5/app/components/html-renderer/html-renderer.component.js +39 -39
  45. package/esm5/app/consts/paragraph-buttons.const.js +8 -8
  46. package/esm5/app/consts/rich-buttons.const.js +6 -6
  47. package/esm5/app/consts/text-buttons.const.js +18 -18
  48. package/esm5/app/fs-html-editor.module.js +61 -61
  49. package/esm5/app/injects/config.inject.js +3 -3
  50. package/esm5/app/plugins/checklist.plugin.js +40 -40
  51. package/esm5/app/plugins/code.plugin.js +69 -69
  52. package/esm5/app/plugins/configs/mention-plugin.config.js +1 -1
  53. package/esm5/app/plugins/mention.plugin.js +93 -79
  54. package/esm5/app/plugins/screen-record.plugin.js +105 -105
  55. package/esm5/app/services/froala-loader.service.js +95 -95
  56. package/esm5/app/utils/loader.js +82 -82
  57. package/esm5/firestitch-html-editor.js +8 -8
  58. package/esm5/public_api.js +11 -11
  59. package/fesm2015/firestitch-html-editor.js +950 -936
  60. package/fesm2015/firestitch-html-editor.js.map +1 -1
  61. package/fesm5/firestitch-html-editor.js +1030 -1016
  62. package/fesm5/firestitch-html-editor.js.map +1 -1
  63. package/firestitch-html-editor.d.ts +9 -9
  64. package/firestitch-html-editor.metadata.json +1 -1
  65. package/package.json +1 -1
  66. package/public_api.d.ts +16 -16
@@ -1,79 +1,93 @@
1
- import { __assign, __extends } from "tslib";
2
- import { debounce } from 'lodash-es';
3
- import Tribute from 'tributejs';
4
- import { Plugin } from '../classes/plugin';
5
- var MentionPlugin = /** @class */ (function (_super) {
6
- __extends(MentionPlugin, _super);
7
- function MentionPlugin(config) {
8
- var _this = _super.call(this) || this;
9
- _this.config = config;
10
- _this.config = __assign(__assign({}, config), { buttons: [
11
- {
12
- name: config.name,
13
- tooltip: config.tooltip,
14
- svgPath: config.iconPath,
15
- click: function (editor) {
16
- _this._closeAll();
17
- _this._tribute.showMenuForCollection(editor.el);
18
- }
19
- }
20
- ] });
21
- _this._tribute = new Tribute({
22
- values: debounce(_this._loadValues.bind(_this), 200),
23
- searchOpts: {
24
- pre: '',
25
- post: '',
26
- skip: true
27
- },
28
- containerClass: "fs-html-editor-mention-container " + (_this.config.containerClass || ''),
29
- itemClass: "fs-html-editor-mention-menu-item " + (_this.config.menuItemClass || ''),
30
- trigger: _this.config.trigger,
31
- allowSpaces: true,
32
- menuItemTemplate: function (item) {
33
- return _this.config.menuItemTemplate(item.original);
34
- },
35
- selectTemplate: function (item) {
36
- var template = _this.config.selectedTemplate(item.original);
37
- var p = document.createElement('p');
38
- p.innerHTML = template;
39
- var node = p.firstElementChild;
40
- if (!node) {
41
- node = document.createElement('span');
42
- node.innerHTML = template;
43
- }
44
- node.setAttribute('contenteditable', 'false');
45
- node.classList.add('fr-deletable');
46
- return node.outerHTML;
47
- },
48
- });
49
- MentionPlugin._tributes.push(_this._tribute);
50
- return _this;
51
- }
52
- MentionPlugin.prototype.initialize = function () {
53
- var _this = this;
54
- this._tribute.attach(this.editor.el);
55
- this.editor.events.on('keydown', function (e) {
56
- if (e.key === 'Enter' && _this._tribute.isActive) {
57
- return false;
58
- }
59
- }, true);
60
- };
61
- MentionPlugin.prototype.destroy = function () { };
62
- MentionPlugin.prototype._closeAll = function () {
63
- MentionPlugin._tributes.forEach(function (tribute) {
64
- if (tribute.menu) {
65
- tribute.hideMenu();
66
- }
67
- });
68
- };
69
- MentionPlugin.prototype._loadValues = function (keyword, cb) {
70
- return this.config.fetch(keyword)
71
- .subscribe(function (data) {
72
- cb(data);
73
- });
74
- };
75
- MentionPlugin._tributes = [];
76
- return MentionPlugin;
77
- }(Plugin));
78
- export { MentionPlugin };
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbi5wbHVnaW4uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmlyZXN0aXRjaC9odG1sLWVkaXRvci8iLCJzb3VyY2VzIjpbImFwcC9wbHVnaW5zL21lbnRpb24ucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sT0FBd0IsTUFBTSxXQUFXLENBQUM7QUFJakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzNDO0lBQW1DLGlDQUFNO0lBS3ZDLHVCQUEwQixNQUEyQjtRQUFyRCxZQUNFLGlCQUFPLFNBa0RSO1FBbkR5QixZQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUVuRCxLQUFJLENBQUMsTUFBTSx5QkFDTixNQUFNLEtBQ1QsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtvQkFDakIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO29CQUN2QixPQUFPLEVBQUUsTUFBTSxDQUFDLFFBQVE7b0JBQ3hCLEtBQUssRUFBRSxVQUFDLE1BQU07d0JBQ1osS0FBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNqQixLQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDakQsQ0FBQztpQkFDRjthQUNGLEdBQ0YsQ0FBQztRQUVGLEtBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxPQUFPLENBQUM7WUFDeEIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxLQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsRUFBRSxHQUFHLENBQUM7WUFDbEQsVUFBVSxFQUFFO2dCQUNWLEdBQUcsRUFBRSxFQUFFO2dCQUNQLElBQUksRUFBRSxFQUFFO2dCQUNSLElBQUksRUFBRSxJQUFJO2FBQ1g7WUFDRCxjQUFjLEVBQUUsdUNBQW9DLEtBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBRTtZQUN0RixTQUFTLEVBQUUsdUNBQW9DLEtBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBRTtZQUNoRixPQUFPLEVBQUUsS0FBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1lBQzVCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLGdCQUFnQixFQUFFLFVBQUMsSUFBc0I7Z0JBQ3ZDLE9BQU8sS0FBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckQsQ0FBQztZQUNELGNBQWMsRUFBRSxVQUFDLElBQXNCO2dCQUNyQyxJQUFNLFFBQVEsR0FBRyxLQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFFN0QsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDcEMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7Z0JBRXZCLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLElBQUksRUFBRTtvQkFDVCxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7aUJBQzNCO2dCQUVELElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUVuQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDeEIsQ0FBQztTQUNGLENBQUMsQ0FBQztRQUVMLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzs7SUFDOUMsQ0FBQztJQUVNLGtDQUFVLEdBQWpCO1FBQUEsaUJBT0M7UUFOQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxPQUFPLElBQUssS0FBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7Z0JBQ2hELE9BQU8sS0FBSyxDQUFDO2FBQ2Q7UUFDSCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU0sK0JBQU8sR0FBZCxjQUFrQixDQUFDO0lBRVgsaUNBQVMsR0FBakI7UUFDRSxhQUFhLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFDLE9BQU87WUFDdEMsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO2dCQUNoQixPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDcEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxtQ0FBVyxHQUFuQixVQUFvQixPQUFPLEVBQUUsRUFBRTtRQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQzthQUN0QixTQUFTLENBQUMsVUFBQyxJQUFJO1lBQ2QsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7SUFDZixDQUFDO0lBaEZjLHVCQUFTLEdBQUcsRUFBRSxDQUFDO0lBaUZoQyxvQkFBQztDQUFBLEFBbkZELENBQW1DLE1BQU0sR0FtRnhDO1NBbkZZLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgVHJpYnV0ZSwgeyBUcmlidXRlSXRlbSB9IGZyb20gJ3RyaWJ1dGVqcyc7XG5cbmltcG9ydCB7IE1lbnRpb25QbHVnaW5Db25maWcgfSBmcm9tICcuL2NvbmZpZ3MvbWVudGlvbi1wbHVnaW4uY29uZmlnJztcblxuaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSAnLi4vY2xhc3Nlcy9wbHVnaW4nO1xuXG5cbmV4cG9ydCBjbGFzcyBNZW50aW9uUGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcblxuICBwcml2YXRlIHN0YXRpYyBfdHJpYnV0ZXMgPSBbXTtcbiAgcHJpdmF0ZSBfdHJpYnV0ZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIGNvbmZpZzogTWVudGlvblBsdWdpbkNvbmZpZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBjb25maWcubmFtZSxcbiAgICAgICAgICB0b29sdGlwOiBjb25maWcudG9vbHRpcCxcbiAgICAgICAgICBzdmdQYXRoOiBjb25maWcuaWNvblBhdGgsXG4gICAgICAgICAgY2xpY2s6IChlZGl0b3IpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Nsb3NlQWxsKCk7XG4gICAgICAgICAgICB0aGlzLl90cmlidXRlLnNob3dNZW51Rm9yQ29sbGVjdGlvbihlZGl0b3IuZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG5cbiAgICB0aGlzLl90cmlidXRlID0gbmV3IFRyaWJ1dGUoe1xuICAgICAgICB2YWx1ZXM6IGRlYm91bmNlKHRoaXMuX2xvYWRWYWx1ZXMuYmluZCh0aGlzKSwgMjAwKSxcbiAgICAgICAgc2VhcmNoT3B0czoge1xuICAgICAgICAgIHByZTogJycsXG4gICAgICAgICAgcG9zdDogJycsXG4gICAgICAgICAgc2tpcDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBjb250YWluZXJDbGFzczogYGZzLWh0bWwtZWRpdG9yLW1lbnRpb24tY29udGFpbmVyICR7dGhpcy5jb25maWcuY29udGFpbmVyQ2xhc3MgfHwgJyd9YCxcbiAgICAgICAgaXRlbUNsYXNzOiBgZnMtaHRtbC1lZGl0b3ItbWVudGlvbi1tZW51LWl0ZW0gJHt0aGlzLmNvbmZpZy5tZW51SXRlbUNsYXNzIHx8ICcnfWAsXG4gICAgICAgIHRyaWdnZXI6IHRoaXMuY29uZmlnLnRyaWdnZXIsXG4gICAgICAgIGFsbG93U3BhY2VzOiB0cnVlLFxuICAgICAgICBtZW51SXRlbVRlbXBsYXRlOiAoaXRlbTogVHJpYnV0ZUl0ZW08YW55PikgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5tZW51SXRlbVRlbXBsYXRlKGl0ZW0ub3JpZ2luYWwpO1xuICAgICAgICB9LFxuICAgICAgICBzZWxlY3RUZW1wbGF0ZTogKGl0ZW06IFRyaWJ1dGVJdGVtPGFueT4pID0+IHtcbiAgICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMuY29uZmlnLnNlbGVjdGVkVGVtcGxhdGUoaXRlbS5vcmlnaW5hbCk7XG5cbiAgICAgICAgICBsZXQgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTtcbiAgICAgICAgICBwLmlubmVySFRNTCA9IHRlbXBsYXRlO1xuXG4gICAgICAgICAgbGV0IG5vZGUgPSBwLmZpcnN0RWxlbWVudENoaWxkO1xuICAgICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgICAgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgICAgIG5vZGUuaW5uZXJIVE1MID0gdGVtcGxhdGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsICdmYWxzZScpO1xuICAgICAgICAgIG5vZGUuY2xhc3NMaXN0LmFkZCgnZnItZGVsZXRhYmxlJyk7XG5cbiAgICAgICAgICByZXR1cm4gbm9kZS5vdXRlckhUTUw7XG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgIE1lbnRpb25QbHVnaW4uX3RyaWJ1dGVzLnB1c2godGhpcy5fdHJpYnV0ZSk7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZSgpIHtcbiAgICB0aGlzLl90cmlidXRlLmF0dGFjaCh0aGlzLmVkaXRvci5lbCk7XG4gICAgdGhpcy5lZGl0b3IuZXZlbnRzLm9uKCdrZXlkb3duJywgKGUpID0+IHtcbiAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyAmJiAgdGhpcy5fdHJpYnV0ZS5pc0FjdGl2ZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSwgdHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpIHt9XG5cbiAgcHJpdmF0ZSBfY2xvc2VBbGwoKSB7XG4gICAgTWVudGlvblBsdWdpbi5fdHJpYnV0ZXMuZm9yRWFjaCgodHJpYnV0ZSkgPT4ge1xuICAgICAgaWYgKHRyaWJ1dGUubWVudSkge1xuICAgICAgICB0cmlidXRlLmhpZGVNZW51KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkVmFsdWVzKGtleXdvcmQsIGNiKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmZldGNoKGtleXdvcmQpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBjYihkYXRhKTtcbiAgICAgICAgICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==
1
+ import { __assign, __extends } from "tslib";
2
+ import { debounce } from 'lodash-es';
3
+ import Tribute from 'tributejs';
4
+ import { Plugin } from '../classes/plugin';
5
+ import { guid } from '@firestitch/common';
6
+ var MentionPlugin = /** @class */ (function (_super) {
7
+ __extends(MentionPlugin, _super);
8
+ function MentionPlugin(config) {
9
+ var _this = _super.call(this) || this;
10
+ _this.config = config;
11
+ _this._guid = guid();
12
+ _this.selected = function (event) {
13
+ if (_this.config.selected) {
14
+ if (MentionPlugin._currentGuid === _this._guid) {
15
+ _this.config.selected(event.detail.item.original);
16
+ }
17
+ }
18
+ };
19
+ _this.config = __assign(__assign({}, config), { buttons: [
20
+ {
21
+ name: config.name,
22
+ tooltip: config.tooltip,
23
+ svgPath: config.iconPath,
24
+ click: function (editor) {
25
+ _this._closeAll();
26
+ _this._tribute.showMenuForCollection(editor.el);
27
+ }
28
+ }
29
+ ] });
30
+ _this._tribute = new Tribute({
31
+ values: debounce(_this._loadValues.bind(_this), 200),
32
+ searchOpts: {
33
+ pre: '',
34
+ post: '',
35
+ skip: true
36
+ },
37
+ containerClass: "fs-html-editor-mention-container " + (_this.config.containerClass || ''),
38
+ itemClass: "fs-html-editor-mention-menu-item " + (_this.config.menuItemClass || ''),
39
+ trigger: _this.config.trigger,
40
+ allowSpaces: true,
41
+ menuItemTemplate: function (item) {
42
+ return _this.config.menuItemTemplate(item.original);
43
+ },
44
+ selectTemplate: function (item) {
45
+ var template = _this.config.selectedTemplate(item.original);
46
+ var p = document.createElement('p');
47
+ p.innerHTML = template;
48
+ var node = p.firstElementChild;
49
+ if (!node) {
50
+ node = document.createElement('span');
51
+ node.innerHTML = template;
52
+ }
53
+ node.setAttribute('contenteditable', 'false');
54
+ node.classList.add('fr-deletable');
55
+ return node.outerHTML;
56
+ },
57
+ });
58
+ MentionPlugin._tributes.push(_this._tribute);
59
+ return _this;
60
+ }
61
+ MentionPlugin.prototype.initialize = function () {
62
+ var _this = this;
63
+ this._tribute.attach(this.editor.el);
64
+ this.editor.events.on('keydown', function (e) {
65
+ if (e.key === 'Enter' && _this._tribute.isActive) {
66
+ return false;
67
+ }
68
+ }, true);
69
+ this.editor.el.addEventListener("tribute-replaced", this.selected);
70
+ };
71
+ MentionPlugin.prototype.destroy = function () {
72
+ this.editor.el.removeEventListener("tribute-replaced", this.selected);
73
+ };
74
+ MentionPlugin.prototype._closeAll = function () {
75
+ MentionPlugin._tributes.forEach(function (tribute) {
76
+ if (tribute.menu) {
77
+ tribute.hideMenu();
78
+ }
79
+ });
80
+ };
81
+ MentionPlugin.prototype._loadValues = function (keyword, cb) {
82
+ MentionPlugin._currentGuid = this._guid;
83
+ return this.config.fetch(keyword)
84
+ .subscribe(function (data) {
85
+ cb(data);
86
+ });
87
+ };
88
+ MentionPlugin._currentGuid = null;
89
+ MentionPlugin._tributes = [];
90
+ return MentionPlugin;
91
+ }(Plugin));
92
+ export { MentionPlugin };
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbi5wbHVnaW4uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmlyZXN0aXRjaC9odG1sLWVkaXRvci8iLCJzb3VyY2VzIjpbImFwcC9wbHVnaW5zL21lbnRpb24ucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sT0FBd0IsTUFBTSxXQUFXLENBQUM7QUFJakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUcxQztJQUFtQyxpQ0FBTTtJQU92Qyx1QkFBMEIsTUFBMkI7UUFBckQsWUFDRSxpQkFBTyxTQWtEUjtRQW5EeUIsWUFBTSxHQUFOLE1BQU0sQ0FBcUI7UUFGN0MsV0FBSyxHQUFHLElBQUksRUFBRSxDQUFDO1FBbUVoQixjQUFRLEdBQUcsVUFBQyxLQUFLO1lBQ3RCLElBQUcsS0FBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7Z0JBQ3ZCLElBQUcsYUFBYSxDQUFDLFlBQVksS0FBSyxLQUFJLENBQUMsS0FBSyxFQUFFO29CQUM1QyxLQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDbEQ7YUFDRjtRQUNILENBQUMsQ0FBQTtRQXJFQyxLQUFJLENBQUMsTUFBTSx5QkFDTixNQUFNLEtBQ1QsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtvQkFDakIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO29CQUN2QixPQUFPLEVBQUUsTUFBTSxDQUFDLFFBQVE7b0JBQ3hCLEtBQUssRUFBRSxVQUFDLE1BQU07d0JBQ1osS0FBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO3dCQUNqQixLQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixD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QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sbUNBQVcsR0FBbkIsVUFBb0IsT0FBTyxFQUFFLEVBQUU7UUFDN0IsYUFBYSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO2FBQ3RCLFNBQVMsQ0FBQyxVQUFDLElBQUk7WUFDZCxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNmLENBQUM7SUFoR2MsMEJBQVksR0FBRyxJQUFJLENBQUM7SUFDcEIsdUJBQVMsR0FBRyxFQUFFLENBQUM7SUFnR2hDLG9CQUFDO0NBQUEsQUFuR0QsQ0FBbUMsTUFBTSxHQW1HeEM7U0FuR1ksYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlYm91bmNlIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCBUcmlidXRlLCB7IFRyaWJ1dGVJdGVtIH0gZnJvbSAndHJpYnV0ZWpzJztcblxuaW1wb3J0IHsgTWVudGlvblBsdWdpbkNvbmZpZyB9IGZyb20gJy4vY29uZmlncy9tZW50aW9uLXBsdWdpbi5jb25maWcnO1xuXG5pbXBvcnQgeyBQbHVnaW4gfSBmcm9tICcuLi9jbGFzc2VzL3BsdWdpbic7XG5cbmltcG9ydCB7IGd1aWQgfSBmcm9tICdAZmlyZXN0aXRjaC9jb21tb24nO1xuXG5cbmV4cG9ydCBjbGFzcyBNZW50aW9uUGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcblxuICBwcml2YXRlIHN0YXRpYyBfY3VycmVudEd1aWQgPSBudWxsO1xuICBwcml2YXRlIHN0YXRpYyBfdHJpYnV0ZXMgPSBbXTtcbiAgcHJpdmF0ZSBfdHJpYnV0ZTtcbiAgcHJpdmF0ZSBfZ3VpZCA9IGd1aWQoKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIGNvbmZpZzogTWVudGlvblBsdWdpbkNvbmZpZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBjb25maWcubmFtZSxcbiAgICAgICAgICB0b29sdGlwOiBjb25maWcudG9vbHRpcCxcbiAgICAgICAgICBzdmdQYXRoOiBjb25maWcuaWNvblBhdGgsXG4gICAgICAgICAgY2xpY2s6IChlZGl0b3IpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Nsb3NlQWxsKCk7XG4gICAgICAgICAgICB0aGlzLl90cmlidXRlLnNob3dNZW51Rm9yQ29sbGVjdGlvbihlZGl0b3IuZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG5cbiAgICB0aGlzLl90cmlidXRlID0gbmV3IFRyaWJ1dGUoe1xuICAgICAgICB2YWx1ZXM6IGRlYm91bmNlKHRoaXMuX2xvYWRWYWx1ZXMuYmluZCh0aGlzKSwgMjAwKSxcbiAgICAgICAgc2VhcmNoT3B0czoge1xuICAgICAgICAgIHByZTogJycsXG4gICAgICAgICAgcG9zdDogJycsXG4gICAgICAgICAgc2tpcDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBjb250YWluZXJDbGFzczogYGZzLWh0bWwtZWRpdG9yLW1lbnRpb24tY29udGFpbmVyICR7dGhpcy5jb25maWcuY29udGFpbmVyQ2xhc3MgfHwgJyd9YCxcbiAgICAgICAgaXRlbUNsYXNzOiBgZnMtaHRtbC1lZGl0b3ItbWVudGlvbi1tZW51LWl0ZW0gJHt0aGlzLmNvbmZpZy5tZW51SXRlbUNsYXNzIHx8ICcnfWAsXG4gICAgICAgIHRyaWdnZXI6IHRoaXMuY29uZmlnLnRyaWdnZXIsXG4gICAgICAgIGFsbG93U3BhY2VzOiB0cnVlLFxuICAgICAgICBtZW51SXRlbVRlbXBsYXRlOiAoaXRlbTogVHJpYnV0ZUl0ZW08YW55PikgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5tZW51SXRlbVRlbXBsYXRlKGl0ZW0ub3JpZ2luYWwpO1xuICAgICAgICB9LFxuICAgICAgICBzZWxlY3RUZW1wbGF0ZTogKGl0ZW06IFRyaWJ1dGVJdGVtPGFueT4pID0+IHtcbiAgICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMuY29uZmlnLnNlbGVjdGVkVGVtcGxhdGUoaXRlbS5vcmlnaW5hbCk7XG5cbiAgICAgICAgICBsZXQgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTtcbiAgICAgICAgICBwLmlubmVySFRNTCA9IHRlbXBsYXRlO1xuXG4gICAgICAgICAgbGV0IG5vZGUgPSBwLmZpcnN0RWxlbWVudENoaWxkO1xuICAgICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgICAgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgICAgIG5vZGUuaW5uZXJIVE1MID0gdGVtcGxhdGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsICdmYWxzZScpO1xuICAgICAgICAgIG5vZGUuY2xhc3NMaXN0LmFkZCgnZnItZGVsZXRhYmxlJyk7XG5cbiAgICAgICAgICByZXR1cm4gbm9kZS5vdXRlckhUTUw7XG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgIE1lbnRpb25QbHVnaW4uX3RyaWJ1dGVzLnB1c2godGhpcy5fdHJpYnV0ZSk7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZSgpIHtcbiAgICB0aGlzLl90cmlidXRlLmF0dGFjaCh0aGlzLmVkaXRvci5lbCk7XG4gICAgdGhpcy5lZGl0b3IuZXZlbnRzLm9uKCdrZXlkb3duJywgKGUpID0+IHtcbiAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyAmJiAgdGhpcy5fdHJpYnV0ZS5pc0FjdGl2ZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSwgdHJ1ZSk7XG5cbiAgICBcbiAgICB0aGlzLmVkaXRvci5lbC5hZGRFdmVudExpc3RlbmVyKFwidHJpYnV0ZS1yZXBsYWNlZFwiLCB0aGlzLnNlbGVjdGVkKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RlZCA9IChldmVudCkgPT4ge1xuICAgIGlmKHRoaXMuY29uZmlnLnNlbGVjdGVkKSB7XG4gICAgICBpZihNZW50aW9uUGx1Z2luLl9jdXJyZW50R3VpZCA9PT0gdGhpcy5fZ3VpZCkge1xuICAgICAgICB0aGlzLmNvbmZpZy5zZWxlY3RlZChldmVudC5kZXRhaWwuaXRlbS5vcmlnaW5hbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5lZGl0b3IuZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRyaWJ1dGUtcmVwbGFjZWRcIiwgdGhpcy5zZWxlY3RlZCk7XG4gIH1cblxuICBwcml2YXRlIF9jbG9zZUFsbCgpIHtcbiAgICBNZW50aW9uUGx1Z2luLl90cmlidXRlcy5mb3JFYWNoKCh0cmlidXRlKSA9PiB7XG4gICAgICBpZiAodHJpYnV0ZS5tZW51KSB7XG4gICAgICAgIHRyaWJ1dGUuaGlkZU1lbnUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRWYWx1ZXMoa2V5d29yZCwgY2IpIHtcbiAgICBNZW50aW9uUGx1Z2luLl9jdXJyZW50R3VpZCA9IHRoaXMuX2d1aWQ7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmZldGNoKGtleXdvcmQpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBjYihkYXRhKTtcbiAgICAgICAgICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,106 +1,106 @@
1
- import { __assign, __awaiter, __extends, __generator } from "tslib";
2
- import { Plugin } from '../classes/plugin';
3
- import { ResourceLoader } from '../utils/loader';
4
- var ScreenRecordPlugin = /** @class */ (function (_super) {
5
- __extends(ScreenRecordPlugin, _super);
6
- function ScreenRecordPlugin(config) {
7
- if (config === void 0) { config = {}; }
8
- var _this = _super.call(this) || this;
9
- _this.config = config;
10
- _this.config = __assign(__assign({}, config), { name: config.name || 'screenRecord', buttons: [
11
- {
12
- name: 'screenRecord',
13
- 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\n\tc-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\n 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: function (editor) {
16
- navigator.mediaDevices.getDisplayMedia({ video: true })
17
- .then(function (stream) {
18
- var chunks = [];
19
- var options = { mimeType: 'video/webm; codecs=vp9' };
20
- var mediaRecorder = new MediaRecorder(stream, options);
21
- stream.addEventListener('inactive', function (e) {
22
- mediaRecorder.stop();
23
- mediaRecorder = null;
24
- stream.getTracks().forEach(function (track) { return track.stop(); });
25
- stream = null;
26
- var blob = new Blob(chunks, { type: 'video/webm' });
27
- config.upload(blob)
28
- .subscribe(function (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', function (event) {
33
- if (event.data && event.data.size > 0) {
34
- chunks.push(event.data);
35
- }
36
- });
37
- mediaRecorder.start(10);
38
- })
39
- .catch(function (e) { });
40
- }
41
- }
42
- ] });
43
- return _this;
44
- }
45
- ScreenRecordPlugin.prototype.initialize = function () {
46
- return __awaiter(this, void 0, void 0, function () {
47
- var FroalaEditor;
48
- var _this = this;
49
- return __generator(this, function (_a) {
50
- switch (_a.label) {
51
- case 0: return [4 /*yield*/, ResourceLoader.loadStyles('froala')
52
- .toPromise()];
53
- case 1:
54
- _a.sent();
55
- FroalaEditor = window.FroalaEditor;
56
- this.editor.events.on('mouseup', function (e) {
57
- var el = _this._getEl(e.target);
58
- if (el) {
59
- _this.editor.popups.hideAll();
60
- _this._activeEl = el;
61
- _this._showPopup(el);
62
- }
63
- });
64
- FroalaEditor.POPUP_TEMPLATES["screenRecordPlugin.popup"] = '[_BUTTONS_]';
65
- FroalaEditor.DefineIcon('popupClose', { NAME: 'trash', SVG_KEY: 'remove' });
66
- FroalaEditor.RegisterCommand('popupClose', {
67
- title: 'Remove',
68
- undo: false,
69
- focus: false,
70
- callback: function () {
71
- if (_this._activeEl) {
72
- _this._activeEl.remove();
73
- }
74
- }
75
- });
76
- return [2 /*return*/];
77
- }
78
- });
79
- });
80
- };
81
- ScreenRecordPlugin.prototype._createPopup = function () {
82
- var template = {
83
- buttons: "<div class=\"fr-buttons\">" + this.editor.button.buildList(['popupClose']) + "</div>",
84
- };
85
- return this.editor.popups.create('screenRecordPlugin.popup', template);
86
- };
87
- ScreenRecordPlugin.prototype._showPopup = function (el) {
88
- var $popup = this.editor.popups.get('screenRecordPlugin.popup');
89
- if (!$popup) {
90
- $popup = this._createPopup();
91
- }
92
- this.editor.popups.setContainer('screenRecordPlugin.popup', this.editor.$(el));
93
- var left = el.offsetLeft + el.offsetWidth / 2;
94
- this.editor.popups.show('screenRecordPlugin.popup', left, null);
95
- };
96
- ScreenRecordPlugin.prototype._getEl = function (el) {
97
- if (el && el.classList) {
98
- if (el.classList.contains('fr-screen-record'))
99
- return el;
100
- return this._getEl(el.parentNode);
101
- }
102
- };
103
- return ScreenRecordPlugin;
104
- }(Plugin));
105
- export { ScreenRecordPlugin };
1
+ import { __assign, __awaiter, __extends, __generator } from "tslib";
2
+ import { Plugin } from '../classes/plugin';
3
+ import { ResourceLoader } from '../utils/loader';
4
+ var ScreenRecordPlugin = /** @class */ (function (_super) {
5
+ __extends(ScreenRecordPlugin, _super);
6
+ function ScreenRecordPlugin(config) {
7
+ if (config === void 0) { config = {}; }
8
+ var _this = _super.call(this) || this;
9
+ _this.config = config;
10
+ _this.config = __assign(__assign({}, config), { name: config.name || 'screenRecord', buttons: [
11
+ {
12
+ name: 'screenRecord',
13
+ 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\n\tc-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\n 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: function (editor) {
16
+ navigator.mediaDevices.getDisplayMedia({ video: true })
17
+ .then(function (stream) {
18
+ var chunks = [];
19
+ var options = { mimeType: 'video/webm; codecs=vp9' };
20
+ var mediaRecorder = new MediaRecorder(stream, options);
21
+ stream.addEventListener('inactive', function (e) {
22
+ mediaRecorder.stop();
23
+ mediaRecorder = null;
24
+ stream.getTracks().forEach(function (track) { return track.stop(); });
25
+ stream = null;
26
+ var blob = new Blob(chunks, { type: 'video/webm' });
27
+ config.upload(blob)
28
+ .subscribe(function (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', function (event) {
33
+ if (event.data && event.data.size > 0) {
34
+ chunks.push(event.data);
35
+ }
36
+ });
37
+ mediaRecorder.start(10);
38
+ })
39
+ .catch(function (e) { });
40
+ }
41
+ }
42
+ ] });
43
+ return _this;
44
+ }
45
+ ScreenRecordPlugin.prototype.initialize = function () {
46
+ return __awaiter(this, void 0, void 0, function () {
47
+ var FroalaEditor;
48
+ var _this = this;
49
+ return __generator(this, function (_a) {
50
+ switch (_a.label) {
51
+ case 0: return [4 /*yield*/, ResourceLoader.loadStyles('froala')
52
+ .toPromise()];
53
+ case 1:
54
+ _a.sent();
55
+ FroalaEditor = window.FroalaEditor;
56
+ this.editor.events.on('mouseup', function (e) {
57
+ var el = _this._getEl(e.target);
58
+ if (el) {
59
+ _this.editor.popups.hideAll();
60
+ _this._activeEl = el;
61
+ _this._showPopup(el);
62
+ }
63
+ });
64
+ FroalaEditor.POPUP_TEMPLATES["screenRecordPlugin.popup"] = '[_BUTTONS_]';
65
+ FroalaEditor.DefineIcon('popupClose', { NAME: 'trash', SVG_KEY: 'remove' });
66
+ FroalaEditor.RegisterCommand('popupClose', {
67
+ title: 'Remove',
68
+ undo: false,
69
+ focus: false,
70
+ callback: function () {
71
+ if (_this._activeEl) {
72
+ _this._activeEl.remove();
73
+ }
74
+ }
75
+ });
76
+ return [2 /*return*/];
77
+ }
78
+ });
79
+ });
80
+ };
81
+ ScreenRecordPlugin.prototype._createPopup = function () {
82
+ var template = {
83
+ buttons: "<div class=\"fr-buttons\">" + this.editor.button.buildList(['popupClose']) + "</div>",
84
+ };
85
+ return this.editor.popups.create('screenRecordPlugin.popup', template);
86
+ };
87
+ ScreenRecordPlugin.prototype._showPopup = function (el) {
88
+ var $popup = this.editor.popups.get('screenRecordPlugin.popup');
89
+ if (!$popup) {
90
+ $popup = this._createPopup();
91
+ }
92
+ this.editor.popups.setContainer('screenRecordPlugin.popup', this.editor.$(el));
93
+ var left = el.offsetLeft + el.offsetWidth / 2;
94
+ this.editor.popups.show('screenRecordPlugin.popup', left, null);
95
+ };
96
+ ScreenRecordPlugin.prototype._getEl = function (el) {
97
+ if (el && el.classList) {
98
+ if (el.classList.contains('fr-screen-record'))
99
+ return el;
100
+ return this._getEl(el.parentNode);
101
+ }
102
+ };
103
+ return ScreenRecordPlugin;
104
+ }(Plugin));
105
+ export { ScreenRecordPlugin };
106
106
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXJlY29yZC5wbHVnaW4uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmlyZXN0aXRjaC9odG1sLWVkaXRvci8iLCJzb3VyY2VzIjpbImFwcC9wbHVnaW5zL3NjcmVlbi1yZWNvcmQucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBS2pEO0lBQXdDLHNDQUFNO0lBSTVDLDRCQUEwQixNQUFxQztRQUFyQyx1QkFBQSxFQUFBLFdBQXFDO1FBQS9ELFlBQ0UsaUJBQU8sU0E4Q1I7UUEvQ3lCLFlBQU0sR0FBTixNQUFNLENBQStCO1FBRzdELEtBQUksQ0FBQyxNQUFNLHlCQUNOLE1BQU0sS0FDVCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxjQUFjLEVBQ25DLE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsY0FBYztvQkFDcEIsT0FBTyxFQUFFLGdsQkFFdUg7b0JBQ2hJLE9BQU8sRUFBRSxlQUFlO29CQUN4QixLQUFLLEVBQUUsVUFBQyxNQUFNO3dCQUVOLFNBQVUsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDOzZCQUMzRCxJQUFJLENBQUMsVUFBQyxNQUFNOzRCQUNYLElBQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQzs0QkFDbEIsSUFBTSxPQUFPLEdBQUcsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQzs0QkFDdkQsSUFBSSxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDOzRCQUV2RCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLFVBQUMsQ0FBQztnQ0FDcEMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO2dDQUNyQixhQUFhLEdBQUcsSUFBSSxDQUFDO2dD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QUFDO0lBRU8sdUNBQVUsR0FBbEIsVUFBb0IsRUFBRTtRQUNwQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUVoRSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUM5QjtRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQywwQkFBMEIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRS9FLElBQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFFaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRU8sbUNBQU0sR0FBZCxVQUFlLEVBQUU7UUFDZixJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFO1lBQ3RCLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUM7Z0JBQzNDLE9BQU8sRUFBRSxDQUFDO1lBRVosT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNuQztJQUNILENBQUM7SUFDSCx5QkFBQztBQUFELENBQUMsQUFuSEQsQ0FBd0MsTUFBTSxHQW1IN0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY3JlZW5SZWNvcmRQbHVnaW5Db25maWcgfSBmcm9tICcuL2NvbmZpZ3Mvc2NyZWVuLXJlY29yZC1wbHVnaW4uY29uZmlnJztcbmltcG9ydCB7IFBsdWdpbiB9IGZyb20gJy4uL2NsYXNzZXMvcGx1Z2luJztcbmltcG9ydCB7IFJlc291cmNlTG9hZGVyIH0gZnJvbSAnLi4vdXRpbHMvbG9hZGVyJztcblxuXG5kZWNsYXJlIHZhciBNZWRpYVJlY29yZGVyOiBhbnk7XG5cbmV4cG9ydCBjbGFzcyBTY3JlZW5SZWNvcmRQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuXG4gIHByaXZhdGUgX2FjdGl2ZUVsO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgY29uZmlnOiBTY3JlZW5SZWNvcmRQbHVnaW5Db25maWcgPSB7fSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIG5hbWU6IGNvbmZpZy5uYW1lIHx8ICdzY3JlZW5SZWNvcmQnLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ3NjcmVlblJlY29yZCcsXG4gICAgICAgICAgc3ZnUGF0aDogYE0xNC43LDcuN3Y2LjFINy4xVjcuN0gxNC43IE0xNi4zLDkuNlY2LjljMC0wLjQtMC4zLTAuOC0wLjgtMC44SDYuNGMtMC40LDAtMC44LDAuMy0wLjgsMC44djcuNmMwLDAuNCwwLjMsMC44LDAuOCwwLjhoOS4xYzAuNCwwLDAuOC0wLjMsMC44LTAuOHYtMi43bDEuNywxLjdjMC4zLDAuMywwLjgsMC4zLDEuMSwwYzAuMS0wLjEsMC4yLTAuMywwLjItMC41VjguNGMwLTAuNC0wLjMtMC44LTAuOC0wLjhcblx0Yy0wLjIsMC0wLjQsMC4xLTAuNSwwLjJMMTYuMyw5LjZ6IE0yMS41LDEuNkgyLjljLTAuNywwLTEuMywwLjctMS4zLDEuNnYxNC42YzAsMC45LDAuNiwxLjYsMS4zLDEuNmg3LjZ2MS4xbC01LDFjLTAuMiwwLTAuNCwwLjMtMC40LDAuNmMwLDAuMywwLjIsMC40LDAuNCwwLjRjMCwwLDAsMCwwLjEsMGw1LjMtMWgyLjZsNS4zLDFjMCwwLDAsMCwwLjEsMGMwLjIsMCwwLjQtMC4yLDAuNC0wLjRcbiAgYzAtMC4zLTAuMS0wLjYtMC40LTAuNmwtNS0xdi0xLjFoNy42YzAuNywwLDEuMy0wLjcsMS4zLTEuNlYzLjJDMjIuOSwyLjMsMjIuMywxLjYsMjEuNSwxLjZ6IE0yMS4xLDE3LjNIMy4zVjMuN2gxNy44TDIxLjEsMTcuM0wyMS4xLDE3LjN6YCxcbiAgICAgICAgICB0b29sdGlwOiAnU2NyZWVuIFJlY29yZCcsXG4gICAgICAgICAgY2xpY2s6IChlZGl0b3IpID0+IHtcblxuICAgICAgICAgICAgKDxhbnk+bmF2aWdhdG9yKS5tZWRpYURldmljZXMuZ2V0RGlzcGxheU1lZGlhKHsgdmlkZW86IHRydWUgfSlcbiAgICAgICAgICAgICAgLnRoZW4oKHN0cmVhbSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rcyA9IFtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7IG1pbWVUeXBlOiAndmlkZW8vd2VibTsgY29kZWNzPXZwOScgfTtcbiAgICAgICAgICAgICAgICBsZXQgbWVkaWFSZWNvcmRlciA9IG5ldyBNZWRpYVJlY29yZGVyKHN0cmVhbSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgICAgICBzdHJlYW0uYWRkRXZlbnRMaXN0ZW5lcignaW5hY3RpdmUnLCAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgbWVkaWFSZWNvcmRlci5zdG9wKCk7XG4gICAgICAgICAgICAgICAgICBtZWRpYVJlY29yZGVyID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgIHN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKCh0cmFjaykgPT4gdHJhY2suc3RvcCgpKTtcbiAgICAgICAgICAgICAgICAgIHN0cmVhbSA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihjaHVua3MsIHsgdHlwZTogJ3ZpZGVvL3dlYm0nIH0pO1xuICAgICAgICAgICAgICAgICAgY29uZmlnLnVwbG9hZChibG9iKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh1cmwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yLmh0bWwuaW5zZXJ0KGA8c3BhbiBjbGFzcz1cImZyLXNjcmVlbi1yZWNvcmQgZnItZGVsZXRhYmxlIGZyLWRyYWdnYWJsZVwiPjx2aWRlbyBjb250cm9scyBzdHlsZT1cIm1heC13aWR0aDoke2NvbmZpZy5tYXhXaWR0aH1cIj48c291cmNlIHNyYz1cIiR7dXJsfVwiIHR5cGU9XCJ2aWRlby93ZWJtXCI+PC92aWRlbz48L3NwYW4+YCk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIG1lZGlhUmVjb3JkZXIuYWRkRXZlbnRMaXN0ZW5lcignZGF0YWF2YWlsYWJsZScsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEgJiYgZXZlbnQuZGF0YS5zaXplID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjaHVua3MucHVzaChldmVudC5kYXRhKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIG1lZGlhUmVjb3JkZXIuc3RhcnQoMTApO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuY2F0Y2goKGUpID0+IHsgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbml0aWFsaXplKCkge1xuICAgIGF3YWl0IFJlc291cmNlTG9hZGVyLmxvYWRTdHlsZXMoJ2Zyb2FsYScpXG4gICAgICAudG9Qcm9taXNlKCk7XG5cbiAgICBjb25zdCBGcm9hbGFFZGl0b3IgPSAod2luZG93IGFzIGFueSkuRnJvYWxhRWRpdG9yO1xuXG4gICAgdGhpcy5lZGl0b3IuZXZlbnRzLm9uKCdtb3VzZXVwJywgKGUpID0+IHtcbiAgICAgIGNvbnN0IGVsID0gdGhpcy5fZ2V0RWwoZS50YXJnZXQpO1xuXG4gICAgICBpZiAoZWwpIHtcbiAgICAgICAgdGhpcy5lZGl0b3IucG9wdXBzLmhpZGVBbGwoKTtcbiAgICAgICAgdGhpcy5fYWN0aXZlRWwgPSBlbDtcbiAgICAgICAgdGhpcy5fc2hvd1BvcHVwKGVsKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIEZyb2FsYUVkaXRvci5QT1BVUF9URU1QTEFURVNbXCJzY3JlZW5SZWNvcmRQbHVnaW4ucG9wdXBcIl0gPSAnW19CVVRUT05TX10nO1xuXG4gICAgRnJvYWxhRWRpdG9yLkRlZmluZUljb24oJ3BvcHVwQ2xvc2UnLCB7IE5BTUU6ICd0cmFzaCcsIFNWR19LRVk6ICdyZW1vdmUnIH0pO1xuICAgIEZyb2FsYUVkaXRvci5SZWdpc3RlckNvbW1hbmQoJ3BvcHVwQ2xvc2UnLCB7XG4gICAgICB0aXRsZTogJ1JlbW92ZScsXG4gICAgICB1bmRvOiBmYWxzZSxcbiAgICAgIGZvY3VzOiBmYWxzZSxcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmVFbCkge1xuICAgICAgICAgIHRoaXMuX2FjdGl2ZUVsLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVQb3B1cCgpIHtcblxuICAgIGNvbnN0IHRlbXBsYXRlID0ge1xuICAgICAgYnV0dG9uczogYDxkaXYgY2xhc3M9XCJmci1idXR0b25zXCI+JHt0aGlzLmVkaXRvci5idXR0b24uYnVpbGRMaXN0KFsncG9wdXBDbG9zZSddKX08L2Rpdj5gLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5lZGl0b3IucG9wdXBzLmNyZWF0ZSgnc2NyZWVuUmVjb3JkUGx1Z2luLnBvcHVwJywgdGVtcGxhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2hvd1BvcHVwIChlbCkge1xuICAgIHZhciAkcG9wdXAgPSB0aGlzLmVkaXRvci5wb3B1cHMuZ2V0KCdzY3JlZW5SZWNvcmRQbHVnaW4ucG9wdXAnKTtcblxuICAgIGlmICghJHBvcHVwKSB7XG4gICAgICAkcG9wdXAgPSB0aGlzLl9jcmVhdGVQb3B1cCgpO1xuICAgIH1cblxuICAgIHRoaXMuZWRpdG9yLnBvcHVwcy5zZXRDb250YWluZXIoJ3NjcmVlblJlY29yZFBsdWdpbi5wb3B1cCcsIHRoaXMuZWRpdG9yLiQoZWwpKTtcblxuICAgIGNvbnN0IGxlZnQgPSBlbC5vZmZzZXRMZWZ0ICsgZWwub2Zmc2V0V2lkdGggLyAyO1xuXG4gICAgdGhpcy5lZGl0b3IucG9wdXBzLnNob3coJ3NjcmVlblJlY29yZFBsdWdpbi5wb3B1cCcsIGxlZnQsIG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RWwoZWwpIHtcbiAgICBpZiAoZWwgJiYgZWwuY2xhc3NMaXN0KSB7XG4gICAgICBpZiAoZWwuY2xhc3NMaXN0LmNvbnRhaW5zKCdmci1zY3JlZW4tcmVjb3JkJykpXG4gICAgICAgIHJldHVybiBlbDtcblxuICAgICAgcmV0dXJuIHRoaXMuX2dldEVsKGVsLnBhcmVudE5vZGUpO1xuICAgIH1cbiAgfVxufVxuIl19