@firestitch/html-editor 12.5.5 → 12.6.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 (52) hide show
  1. package/app/modules/html-editor/classes/plugin.d.ts +7 -7
  2. package/app/modules/html-editor/components/html-editor/html-editor.component.d.ts +59 -59
  3. package/app/modules/html-editor/consts/paragraph-buttons.const.d.ts +1 -1
  4. package/app/modules/html-editor/consts/rich-buttons.const.d.ts +1 -1
  5. package/app/modules/html-editor/consts/text-buttons.const.d.ts +1 -1
  6. package/app/modules/html-editor/enums/default-plugin.enum.d.ts +16 -16
  7. package/app/modules/html-editor/fs-html-editor.module.d.ts +43 -43
  8. package/app/modules/html-editor/injects/config.inject.d.ts +3 -3
  9. package/app/modules/html-editor/interfaces/html-editor-config.d.ts +40 -40
  10. package/app/modules/html-editor/interfaces/plugin-button.d.ts +12 -12
  11. package/app/modules/html-editor/interfaces/plugin-config.d.ts +5 -5
  12. package/app/modules/html-editor/plugins/checklist.plugin.d.ts +7 -7
  13. package/app/modules/html-editor/plugins/code.plugin.d.ts +9 -9
  14. package/app/modules/html-editor/plugins/configs/mention-plugin.config.d.ts +13 -13
  15. package/app/modules/html-editor/plugins/configs/screen-record-plugin.config.d.ts +7 -7
  16. package/app/modules/html-editor/plugins/mention.plugin.d.ts +15 -15
  17. package/app/modules/html-editor/plugins/realtime.plugin.d.ts +7 -7
  18. package/app/modules/html-editor/plugins/screen-record.plugin.d.ts +11 -11
  19. package/app/modules/html-editor/services/froala-loader.service.d.ts +21 -21
  20. package/app/modules/html-renderer/components/html-renderer/html-renderer.component.d.ts +12 -12
  21. package/app/modules/html-renderer/fs-html-renderer.module.d.ts +8 -8
  22. package/bundles/firestitch-html-editor.umd.js +1377 -1382
  23. package/bundles/firestitch-html-editor.umd.js.map +1 -1
  24. package/esm2015/app/modules/html-editor/classes/plugin.js +4 -4
  25. package/esm2015/app/modules/html-editor/components/html-editor/html-editor.component.js +512 -518
  26. package/esm2015/app/modules/html-editor/consts/paragraph-buttons.const.js +9 -9
  27. package/esm2015/app/modules/html-editor/consts/rich-buttons.const.js +6 -6
  28. package/esm2015/app/modules/html-editor/consts/text-buttons.const.js +18 -18
  29. package/esm2015/app/modules/html-editor/enums/default-plugin.enum.js +1 -1
  30. package/esm2015/app/modules/html-editor/fs-html-editor.module.js +68 -68
  31. package/esm2015/app/modules/html-editor/injects/config.inject.js +3 -3
  32. package/esm2015/app/modules/html-editor/interfaces/html-editor-config.js +1 -1
  33. package/esm2015/app/modules/html-editor/interfaces/plugin-button.js +1 -1
  34. package/esm2015/app/modules/html-editor/interfaces/plugin-config.js +1 -1
  35. package/esm2015/app/modules/html-editor/plugins/checklist.plugin.js +34 -34
  36. package/esm2015/app/modules/html-editor/plugins/code.plugin.js +62 -62
  37. package/esm2015/app/modules/html-editor/plugins/configs/mention-plugin.config.js +1 -1
  38. package/esm2015/app/modules/html-editor/plugins/configs/screen-record-plugin.config.js +1 -1
  39. package/esm2015/app/modules/html-editor/plugins/mention.plugin.js +86 -86
  40. package/esm2015/app/modules/html-editor/plugins/realtime.plugin.js +12 -12
  41. package/esm2015/app/modules/html-editor/plugins/screen-record.plugin.js +88 -88
  42. package/esm2015/app/modules/html-editor/services/froala-loader.service.js +90 -89
  43. package/esm2015/app/modules/html-renderer/components/html-renderer/html-renderer.component.js +29 -29
  44. package/esm2015/app/modules/html-renderer/fs-html-renderer.module.js +25 -25
  45. package/esm2015/firestitch-html-editor.js +4 -4
  46. package/esm2015/public_api.js +13 -13
  47. package/fesm2015/firestitch-html-editor.js +980 -985
  48. package/fesm2015/firestitch-html-editor.js.map +1 -1
  49. package/firestitch-html-editor.d.ts +5 -5
  50. package/package.json +3 -5
  51. package/public_api.d.ts +18 -18
  52. package/styles.scss +6 -3
@@ -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 = [];
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
87
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudGlvbi5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvaHRtbC1lZGl0b3IvcGx1Z2lucy9tZW50aW9uLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sT0FBd0IsTUFBTSxXQUFXLENBQUM7QUFJakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUcxQyxNQUFNLE9BQU8sYUFBYyxTQUFRLE1BQU07SUFPdkMsWUFBMEIsTUFBMkI7UUFDbkQsS0FBSyxFQUFFLENBQUM7UUFEZ0IsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFGN0MsVUFBSyxHQUFHLElBQUksRUFBRSxDQUFDO1FBbUVoQixhQUFRLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMxQixJQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO2dCQUN2QixJQUFHLGFBQWEsQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRTtvQkFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ2xEO2FBQ0Y7UUFDSCxDQUFDLENBQUE7UUFyRUMsSUFBSSxDQUFDLE1BQU0sbUNBQ04sTUFBTSxLQUNULE9BQU8sRUFBRTtnQkFDUDtvQkFDRSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7b0JBQ2pCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztvQkFDdkIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxRQUFRO29CQUN4QixLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTt3QkFDaEIsSUFBSSxDQUFDLFNBQVMsRUFB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QUFFO2dCQUNoQixPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDcEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDN0IsYUFBYSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO2FBQ3RCLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2xCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO0lBQ2YsQ0FBQzs7QUFoR2MsMEJBQVksR0FBRyxJQUFJLENBQUM7QUFDcEIsdUJBQVMsR0FBRyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgVHJpYnV0ZSwgeyBUcmlidXRlSXRlbSB9IGZyb20gJ3RyaWJ1dGVqcyc7XG5cbmltcG9ydCB7IE1lbnRpb25QbHVnaW5Db25maWcgfSBmcm9tICcuL2NvbmZpZ3MvbWVudGlvbi1wbHVnaW4uY29uZmlnJztcblxuaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSAnLi4vY2xhc3Nlcy9wbHVnaW4nO1xuXG5pbXBvcnQgeyBndWlkIH0gZnJvbSAnQGZpcmVzdGl0Y2gvY29tbW9uJztcblxuXG5leHBvcnQgY2xhc3MgTWVudGlvblBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2N1cnJlbnRHdWlkID0gbnVsbDtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RyaWJ1dGVzID0gW107XG4gIHByaXZhdGUgX3RyaWJ1dGU7XG4gIHByaXZhdGUgX2d1aWQgPSBndWlkKCk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25maWc6IE1lbnRpb25QbHVnaW5Db25maWcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogY29uZmlnLm5hbWUsXG4gICAgICAgICAgdG9vbHRpcDogY29uZmlnLnRvb2x0aXAsXG4gICAgICAgICAgc3ZnUGF0aDogY29uZmlnLmljb25QYXRoLFxuICAgICAgICAgIGNsaWNrOiAoZWRpdG9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jbG9zZUFsbCgpO1xuICAgICAgICAgICAgdGhpcy5fdHJpYnV0ZS5zaG93TWVudUZvckNvbGxlY3Rpb24oZWRpdG9yLmVsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuXG4gICAgdGhpcy5fdHJpYnV0ZSA9IG5ldyBUcmlidXRlKHtcbiAgICAgICAgdmFsdWVzOiBkZWJvdW5jZSh0aGlzLl9sb2FkVmFsdWVzLmJpbmQodGhpcyksIDIwMCksXG4gICAgICAgIHNlYXJjaE9wdHM6IHtcbiAgICAgICAgICBwcmU6ICcnLFxuICAgICAgICAgIHBvc3Q6ICcnLFxuICAgICAgICAgIHNraXA6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgY29udGFpbmVyQ2xhc3M6IGBmcy1odG1sLWVkaXRvci1tZW50aW9uLWNvbnRhaW5lciAke3RoaXMuY29uZmlnLmNvbnRhaW5lckNsYXNzIHx8ICcnfWAsXG4gICAgICAgIGl0ZW1DbGFzczogYGZzLWh0bWwtZWRpdG9yLW1lbnRpb24tbWVudS1pdGVtICR7dGhpcy5jb25maWcubWVudUl0ZW1DbGFzcyB8fCAnJ31gLFxuICAgICAgICB0cmlnZ2VyOiB0aGlzLmNvbmZpZy50cmlnZ2VyLFxuICAgICAgICBhbGxvd1NwYWNlczogdHJ1ZSxcbiAgICAgICAgbWVudUl0ZW1UZW1wbGF0ZTogKGl0ZW06IFRyaWJ1dGVJdGVtPGFueT4pID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jb25maWcubWVudUl0ZW1UZW1wbGF0ZShpdGVtLm9yaWdpbmFsKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2VsZWN0VGVtcGxhdGU6IChpdGVtOiBUcmlidXRlSXRlbTxhbnk+KSA9PiB7XG4gICAgICAgICAgY29uc3QgdGVtcGxhdGUgPSB0aGlzLmNvbmZpZy5zZWxlY3RlZFRlbXBsYXRlKGl0ZW0ub3JpZ2luYWwpO1xuXG4gICAgICAgICAgbGV0IHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG4gICAgICAgICAgcC5pbm5lckhUTUwgPSB0ZW1wbGF0ZTtcblxuICAgICAgICAgIGxldCBub2RlID0gcC5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICAgIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgICBub2RlLmlubmVySFRNTCA9IHRlbXBsYXRlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdjb250ZW50ZWRpdGFibGUnLCAnZmFsc2UnKTtcbiAgICAgICAgICBub2RlLmNsYXNzTGlzdC5hZGQoJ2ZyLWRlbGV0YWJsZScpO1xuXG4gICAgICAgICAgcmV0dXJuIG5vZGUub3V0ZXJIVE1MO1xuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICBNZW50aW9uUGx1Z2luLl90cmlidXRlcy5wdXNoKHRoaXMuX3RyaWJ1dGUpO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpemUoKSB7XG4gICAgdGhpcy5fdHJpYnV0ZS5hdHRhY2godGhpcy5lZGl0b3IuZWwpO1xuICAgIHRoaXMuZWRpdG9yLmV2ZW50cy5vbigna2V5ZG93bicsIChlKSA9PiB7XG4gICAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicgJiYgIHRoaXMuX3RyaWJ1dGUuaXNBY3RpdmUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0sIHRydWUpO1xuXG4gICAgXG4gICAgdGhpcy5lZGl0b3IuZWwuYWRkRXZlbnRMaXN0ZW5lcihcInRyaWJ1dGUtcmVwbGFjZWRcIiwgdGhpcy5zZWxlY3RlZCk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0ZWQgPSAoZXZlbnQpID0+IHtcbiAgICBpZih0aGlzLmNvbmZpZy5zZWxlY3RlZCkge1xuICAgICAgaWYoTWVudGlvblBsdWdpbi5fY3VycmVudEd1aWQgPT09IHRoaXMuX2d1aWQpIHtcbiAgICAgICAgdGhpcy5jb25maWcuc2VsZWN0ZWQoZXZlbnQuZGV0YWlsLml0ZW0ub3JpZ2luYWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCkge1xuICAgIHRoaXMuZWRpdG9yLmVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmlidXRlLXJlcGxhY2VkXCIsIHRoaXMuc2VsZWN0ZWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VBbGwoKSB7XG4gICAgTWVudGlvblBsdWdpbi5fdHJpYnV0ZXMuZm9yRWFjaCgodHJpYnV0ZSkgPT4ge1xuICAgICAgaWYgKHRyaWJ1dGUubWVudSkge1xuICAgICAgICB0cmlidXRlLmhpZGVNZW51KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkVmFsdWVzKGtleXdvcmQsIGNiKSB7XG4gICAgTWVudGlvblBsdWdpbi5fY3VycmVudEd1aWQgPSB0aGlzLl9ndWlkO1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5mZXRjaChrZXl3b3JkKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgY2IoZGF0YSk7XG4gICAgICAgICAgICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,13 +1,13 @@
1
- import { Plugin } from '../classes/plugin';
2
- export class RealtimePlugin extends Plugin {
3
- constructor(config = { name: 'realtime' }) {
4
- super();
5
- this.config = config;
6
- this.config = Object.assign(Object.assign({}, config), { name: 'realtime' });
7
- }
8
- initialize() {
9
- this.editor.events.on('click', (e) => {
10
- }, false);
11
- }
12
- }
1
+ import { Plugin } from '../classes/plugin';
2
+ export class RealtimePlugin extends Plugin {
3
+ constructor(config = { name: 'realtime' }) {
4
+ super();
5
+ this.config = config;
6
+ this.config = Object.assign(Object.assign({}, config), { name: 'realtime' });
7
+ }
8
+ initialize() {
9
+ this.editor.events.on('click', (e) => {
10
+ }, false);
11
+ }
12
+ }
13
13
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhbHRpbWUucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2h0bWwtZWRpdG9yL3BsdWdpbnMvcmVhbHRpbWUucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUczQyxNQUFNLE9BQU8sY0FBZSxTQUFRLE1BQU07SUFFeEMsWUFBMEIsU0FBdUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO1FBQ25FLEtBQUssRUFBRSxDQUFDO1FBRGdCLFdBQU0sR0FBTixNQUFNLENBQXFDO1FBRW5FLElBQUksQ0FBQyxNQUFNLG1DQUNOLE1BQU0sS0FDVCxJQUFJLEVBQUUsVUFBVSxHQUNqQixDQUFDO0lBQ0osQ0FBQztJQUVNLFVBQVU7UUFFZixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFFckMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ1osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGx1Z2luQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wbHVnaW4tY29uZmlnJztcblxuaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSAnLi4vY2xhc3Nlcy9wbHVnaW4nO1xuXG5cbmV4cG9ydCBjbGFzcyBSZWFsdGltZVBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25maWc6IFBsdWdpbkNvbmZpZyA9IHsgbmFtZTogJ3JlYWx0aW1lJyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIG5hbWU6ICdyZWFsdGltZScsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXplKCkge1xuXG4gICAgdGhpcy5lZGl0b3IuZXZlbnRzLm9uKCdjbGljaycsIChlKSA9PiB7XG5cbiAgICB9LCBmYWxzZSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,91 +1,91 @@
1
- import { __awaiter } from "tslib";
2
- import { Plugin } from '../classes/plugin';
3
- export class ScreenRecordPlugin extends Plugin {
4
- constructor(config = {}) {
5
- super();
6
- this.config = config;
7
- this.config = Object.assign(Object.assign({}, config), { name: config.name || 'screenRecord', buttons: [
8
- {
9
- name: 'screenRecord',
1
+ import { __awaiter } from "tslib";
2
+ import { Plugin } from '../classes/plugin';
3
+ export class ScreenRecordPlugin extends Plugin {
4
+ constructor(config = {}) {
5
+ super();
6
+ this.config = config;
7
+ this.config = Object.assign(Object.assign({}, config), { name: config.name || 'screenRecord', buttons: [
8
+ {
9
+ name: 'screenRecord',
10
10
  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
11
11
  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
12
- 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`,
13
- tooltip: 'Screen Record',
14
- click: (editor) => {
15
- navigator.mediaDevices.getDisplayMedia({ video: true })
16
- .then((stream) => {
17
- const chunks = [];
18
- const options = { mimeType: 'video/webm; codecs=vp9' };
19
- let mediaRecorder = new MediaRecorder(stream, options);
20
- stream.addEventListener('inactive', (e) => {
21
- mediaRecorder.stop();
22
- mediaRecorder = null;
23
- stream.getTracks().forEach((track) => track.stop());
24
- stream = null;
25
- const blob = new Blob(chunks, { type: 'video/webm' });
26
- config.upload(blob)
27
- .subscribe((url) => {
28
- 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>`);
29
- });
30
- });
31
- mediaRecorder.addEventListener('dataavailable', (event) => {
32
- if (event.data && event.data.size > 0) {
33
- chunks.push(event.data);
34
- }
35
- });
36
- mediaRecorder.start(10);
37
- })
38
- .catch((e) => { });
39
- }
40
- }
41
- ] });
42
- }
43
- initialize() {
44
- return __awaiter(this, void 0, void 0, function* () {
45
- const FroalaEditor = window.FroalaEditor;
46
- this.editor.events.on('mouseup', (e) => {
47
- const el = this._getEl(e.target);
48
- if (el) {
49
- this.editor.popups.hideAll();
50
- this._activeEl = el;
51
- this._showPopup(el);
52
- }
53
- });
54
- FroalaEditor.POPUP_TEMPLATES["screenRecordPlugin.popup"] = '[_BUTTONS_]';
55
- FroalaEditor.DefineIcon('popupClose', { NAME: 'trash', SVG_KEY: 'remove' });
56
- FroalaEditor.RegisterCommand('popupClose', {
57
- title: 'Remove',
58
- undo: false,
59
- focus: false,
60
- callback: () => {
61
- if (this._activeEl) {
62
- this._activeEl.remove();
63
- }
64
- }
65
- });
66
- });
67
- }
68
- _createPopup() {
69
- const template = {
70
- buttons: `<div class="fr-buttons">${this.editor.button.buildList(['popupClose'])}</div>`,
71
- };
72
- return this.editor.popups.create('screenRecordPlugin.popup', template);
73
- }
74
- _showPopup(el) {
75
- var $popup = this.editor.popups.get('screenRecordPlugin.popup');
76
- if (!$popup) {
77
- $popup = this._createPopup();
78
- }
79
- this.editor.popups.setContainer('screenRecordPlugin.popup', this.editor.$(el));
80
- const left = el.offsetLeft + el.offsetWidth / 2;
81
- this.editor.popups.show('screenRecordPlugin.popup', left, null);
82
- }
83
- _getEl(el) {
84
- if (el && el.classList) {
85
- if (el.classList.contains('fr-screen-record'))
86
- return el;
87
- return this._getEl(el.parentNode);
88
- }
89
- }
90
- }
12
+ 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`,
13
+ tooltip: 'Screen Record',
14
+ click: (editor) => {
15
+ navigator.mediaDevices.getDisplayMedia({ video: true })
16
+ .then((stream) => {
17
+ const chunks = [];
18
+ const options = { mimeType: 'video/webm; codecs=vp9' };
19
+ let mediaRecorder = new MediaRecorder(stream, options);
20
+ stream.addEventListener('inactive', (e) => {
21
+ mediaRecorder.stop();
22
+ mediaRecorder = null;
23
+ stream.getTracks().forEach((track) => track.stop());
24
+ stream = null;
25
+ const blob = new Blob(chunks, { type: 'video/webm' });
26
+ config.upload(blob)
27
+ .subscribe((url) => {
28
+ 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>`);
29
+ });
30
+ });
31
+ mediaRecorder.addEventListener('dataavailable', (event) => {
32
+ if (event.data && event.data.size > 0) {
33
+ chunks.push(event.data);
34
+ }
35
+ });
36
+ mediaRecorder.start(10);
37
+ })
38
+ .catch((e) => { });
39
+ }
40
+ }
41
+ ] });
42
+ }
43
+ initialize() {
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ const FroalaEditor = window.FroalaEditor;
46
+ this.editor.events.on('mouseup', (e) => {
47
+ const el = this._getEl(e.target);
48
+ if (el) {
49
+ this.editor.popups.hideAll();
50
+ this._activeEl = el;
51
+ this._showPopup(el);
52
+ }
53
+ });
54
+ FroalaEditor.POPUP_TEMPLATES["screenRecordPlugin.popup"] = '[_BUTTONS_]';
55
+ FroalaEditor.DefineIcon('popupClose', { NAME: 'trash', SVG_KEY: 'remove' });
56
+ FroalaEditor.RegisterCommand('popupClose', {
57
+ title: 'Remove',
58
+ undo: false,
59
+ focus: false,
60
+ callback: () => {
61
+ if (this._activeEl) {
62
+ this._activeEl.remove();
63
+ }
64
+ }
65
+ });
66
+ });
67
+ }
68
+ _createPopup() {
69
+ const template = {
70
+ buttons: `<div class="fr-buttons">${this.editor.button.buildList(['popupClose'])}</div>`,
71
+ };
72
+ return this.editor.popups.create('screenRecordPlugin.popup', template);
73
+ }
74
+ _showPopup(el) {
75
+ var $popup = this.editor.popups.get('screenRecordPlugin.popup');
76
+ if (!$popup) {
77
+ $popup = this._createPopup();
78
+ }
79
+ this.editor.popups.setContainer('screenRecordPlugin.popup', this.editor.$(el));
80
+ const left = el.offsetLeft + el.offsetWidth / 2;
81
+ this.editor.popups.show('screenRecordPlugin.popup', left, null);
82
+ }
83
+ _getEl(el) {
84
+ if (el && el.classList) {
85
+ if (el.classList.contains('fr-screen-record'))
86
+ return el;
87
+ return this._getEl(el.parentNode);
88
+ }
89
+ }
90
+ }
91
91
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXJlY29yZC5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvaHRtbC1lZGl0b3IvcGx1Z2lucy9zY3JlZW4tcmVjb3JkLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSzNDLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxNQUFNO0lBSTVDLFlBQTBCLFNBQW1DLEVBQUU7UUFDN0QsS0FBSyxFQUFFLENBQUM7UUFEZ0IsV0FBTSxHQUFOLE1BQU0sQ0FBK0I7UUFHN0QsSUFBSSxDQUFDLE1BQU0sbUNBQ04sTUFBTSxLQUNULElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLGNBQWMsRUFDbkMsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxjQUFjO29CQUNwQixPQUFPLEVBQUU7OzBJQUV1SDtvQkFDaEksT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO3dCQUVWLFNBQVUsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDOzZCQUMzRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTs0QkFDZixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7NEJBQ2xCLE1BQU0sT0FBTyxHQUFHLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLENBQUM7NEJBQ3ZELElBQUksYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQzs0QkFFdkQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dDQUN4QyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7Z0NBQ3JCLGFBQWEsR0FBRyxJQUFJLENBQUM7Z0NBQ3JCLE1B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TUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUVoRSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUM5QjtRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQywwQkFBMEIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRS9FLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFFaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRU8sTUFBTSxDQUFDLEVBQUU7UUFDZixJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFO1lBQ3RCLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUM7Z0JBQzNDLE9BQU8sRUFBRSxDQUFDO1lBRVosT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNuQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjcmVlblJlY29yZFBsdWdpbkNvbmZpZyB9IGZyb20gJy4vY29uZmlncy9zY3JlZW4tcmVjb3JkLXBsdWdpbi5jb25maWcnO1xuaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSAnLi4vY2xhc3Nlcy9wbHVnaW4nO1xuXG5cbmRlY2xhcmUgdmFyIE1lZGlhUmVjb3JkZXI6IGFueTtcblxuZXhwb3J0IGNsYXNzIFNjcmVlblJlY29yZFBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XG5cbiAgcHJpdmF0ZSBfYWN0aXZlRWw7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25maWc6IFNjcmVlblJlY29yZFBsdWdpbkNvbmZpZyA9IHt9KSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgbmFtZTogY29uZmlnLm5hbWUgfHwgJ3NjcmVlblJlY29yZCcsXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnc2NyZWVuUmVjb3JkJyxcbiAgICAgICAgICBzdmdQYXRoOiBgTTE0LjcsNy43djYuMUg3LjFWNy43SDE0LjcgTTE2LjMsOS42VjYuOWMwLTAuNC0wLjMtMC44LTAuOC0wLjhINi40Yy0wLjQsMC0wLjgsMC4zLTAuOCwwLjh2Ny42YzAsMC40LDAuMywwLjgsMC44LDAuOGg5LjFjMC40LDAsMC44LTAuMywwLjgtMC44di0yLjdsMS43LDEuN2MwLjMsMC4zLDAuOCwwLjMsMS4xLDBjMC4xLTAuMSwwLjItMC4zLDAuMi0wLjVWOC40YzAtMC40LTAuMy0wLjgtMC44LTAuOFxuXHRjLTAuMiwwLTAuNCwwLjEtMC41LDAuMkwxNi4zLDkuNnogTTIxLjUsMS42SDIuOWMtMC43LDAtMS4zLDAuNy0xLjMsMS42djE0LjZjMCwwLjksMC42LDEuNiwxLjMsMS42aDcuNnYxLjFsLTUsMWMtMC4yLDAtMC40LDAuMy0wLjQsMC42YzAsMC4zLDAuMiwwLjQsMC40LDAuNGMwLDAsMCwwLDAuMSwwbDUuMy0xaDIuNmw1LjMsMWMwLDAsMCwwLDAuMSwwYzAuMiwwLDAuNC0wLjIsMC40LTAuNFxuICBjMC0wLjMtMC4xLTAuNi0wLjQtMC42bC01LTF2LTEuMWg3LjZjMC43LDAsMS4zLTAuNywxLjMtMS42VjMuMkMyMi45LDIuMywyMi4zLDEuNiwyMS41LDEuNnogTTIxLjEsMTcuM0gzLjNWMy43aDE3LjhMMjEuMSwxNy4zTDIxLjEsMTcuM3pgLFxuICAgICAgICAgIHRvb2x0aXA6ICdTY3JlZW4gUmVjb3JkJyxcbiAgICAgICAgICBjbGljazogKGVkaXRvcikgPT4ge1xuXG4gICAgICAgICAgICAoPGFueT5uYXZpZ2F0b3IpLm1lZGlhRGV2aWNlcy5nZXREaXNwbGF5TWVkaWEoeyB2aWRlbzogdHJ1ZSB9KVxuICAgICAgICAgICAgICAudGhlbigoc3RyZWFtKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2h1bmtzID0gW107XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsgbWltZVR5cGU6ICd2aWRlby93ZWJtOyBjb2RlY3M9dnA5JyB9O1xuICAgICAgICAgICAgICAgIGxldCBtZWRpYVJlY29yZGVyID0gbmV3IE1lZGlhUmVjb3JkZXIoc3RyZWFtLCBvcHRpb25zKTtcblxuICAgICAgICAgICAgICAgIHN0cmVhbS5hZGRFdmVudExpc3RlbmVyKCdpbmFjdGl2ZScsIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBtZWRpYVJlY29yZGVyLnN0b3AoKTtcbiAgICAgICAgICAgICAgICAgIG1lZGlhUmVjb3JkZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2goKHRyYWNrKSA9PiB0cmFjay5zdG9wKCkpO1xuICAgICAgICAgICAgICAgICAgc3RyZWFtID0gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKGNodW5rcywgeyB0eXBlOiAndmlkZW8vd2VibScgfSk7XG4gICAgICAgICAgICAgICAgICBjb25maWcudXBsb2FkKGJsb2IpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHVybCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlZGl0b3IuaHRtbC5pbnNlcnQoYDxzcGFuIGNsYXNzPVwiZnItc2NyZWVuLXJlY29yZCBmci1kZWxldGFibGUgZnItZHJhZ2dhYmxlXCI+PHZpZGVvIGNvbnRyb2xzIHN0eWxlPVwibWF4LXdpZHRoOiR7Y29uZmlnLm1heFdpZHRofVwiPjxzb3VyY2Ugc3JjPVwiJHt1cmx9XCIgdHlwZT1cInZpZGVvL3dlYm1cIj48L3ZpZGVvPjwvc3Bhbj5gKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgbWVkaWFSZWNvcmRlci5hZGRFdmVudExpc3RlbmVyKCdkYXRhYXZhaWxhYmxlJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSAmJiBldmVudC5kYXRhLnNpemUgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNodW5rcy5wdXNoKGV2ZW50LmRhdGEpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgbWVkaWFSZWNvcmRlci5zdGFydCgxMCk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaCgoZSkgPT4geyB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGluaXRpYWxpemUoKSB7XG4gICAgY29uc3QgRnJvYWxhRWRpdG9yID0gKHdpbmRvdyBhcyBhbnkpLkZyb2FsYUVkaXRvcjtcblxuICAgIHRoaXMuZWRpdG9yLmV2ZW50cy5vbignbW91c2V1cCcsIChlKSA9PiB7XG4gICAgICBjb25zdCBlbCA9IHRoaXMuX2dldEVsKGUudGFyZ2V0KTtcblxuICAgICAgaWYgKGVsKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yLnBvcHVwcy5oaWRlQWxsKCk7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUVsID0gZWw7XG4gICAgICAgIHRoaXMuX3Nob3dQb3B1cChlbCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBGcm9hbGFFZGl0b3IuUE9QVVBfVEVNUExBVEVTW1wic2NyZWVuUmVjb3JkUGx1Z2luLnBvcHVwXCJdID0gJ1tfQlVUVE9OU19dJztcblxuICAgIEZyb2FsYUVkaXRvci5EZWZpbmVJY29uKCdwb3B1cENsb3NlJywgeyBOQU1FOiAndHJhc2gnLCBTVkdfS0VZOiAncmVtb3ZlJyB9KTtcbiAgICBGcm9hbGFFZGl0b3IuUmVnaXN0ZXJDb21tYW5kKCdwb3B1cENsb3NlJywge1xuICAgICAgdGl0bGU6ICdSZW1vdmUnLFxuICAgICAgdW5kbzogZmFsc2UsXG4gICAgICBmb2N1czogZmFsc2UsXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fYWN0aXZlRWwpIHtcbiAgICAgICAgICB0aGlzLl9hY3RpdmVFbC5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlUG9wdXAoKSB7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZSA9IHtcbiAgICAgIGJ1dHRvbnM6IGA8ZGl2IGNsYXNzPVwiZnItYnV0dG9uc1wiPiR7dGhpcy5lZGl0b3IuYnV0dG9uLmJ1aWxkTGlzdChbJ3BvcHVwQ2xvc2UnXSl9PC9kaXY+YCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yLnBvcHVwcy5jcmVhdGUoJ3NjcmVlblJlY29yZFBsdWdpbi5wb3B1cCcsIHRlbXBsYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Nob3dQb3B1cCAoZWwpIHtcbiAgICB2YXIgJHBvcHVwID0gdGhpcy5lZGl0b3IucG9wdXBzLmdldCgnc2NyZWVuUmVjb3JkUGx1Z2luLnBvcHVwJyk7XG5cbiAgICBpZiAoISRwb3B1cCkge1xuICAgICAgJHBvcHVwID0gdGhpcy5fY3JlYXRlUG9wdXAoKTtcbiAgICB9XG5cbiAgICB0aGlzLmVkaXRvci5wb3B1cHMuc2V0Q29udGFpbmVyKCdzY3JlZW5SZWNvcmRQbHVnaW4ucG9wdXAnLCB0aGlzLmVkaXRvci4kKGVsKSk7XG5cbiAgICBjb25zdCBsZWZ0ID0gZWwub2Zmc2V0TGVmdCArIGVsLm9mZnNldFdpZHRoIC8gMjtcblxuICAgIHRoaXMuZWRpdG9yLnBvcHVwcy5zaG93KCdzY3JlZW5SZWNvcmRQbHVnaW4ucG9wdXAnLCBsZWZ0LCBudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEVsKGVsKSB7XG4gICAgaWYgKGVsICYmIGVsLmNsYXNzTGlzdCkge1xuICAgICAgaWYgKGVsLmNsYXNzTGlzdC5jb250YWlucygnZnItc2NyZWVuLXJlY29yZCcpKVxuICAgICAgICByZXR1cm4gZWw7XG5cbiAgICAgIHJldHVybiB0aGlzLl9nZXRFbChlbC5wYXJlbnROb2RlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==