@firestitch/html-editor 12.0.3 → 12.1.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 (73) hide show
  1. package/app/{classes → modules/html-editor/classes}/plugin.d.ts +7 -7
  2. package/app/{components → modules/html-editor/components}/html-editor/html-editor.component.d.ts +58 -58
  3. package/app/{consts → modules/html-editor/consts}/paragraph-buttons.const.d.ts +1 -1
  4. package/app/{consts → modules/html-editor/consts}/rich-buttons.const.d.ts +1 -1
  5. package/app/{consts → modules/html-editor/consts}/text-buttons.const.d.ts +1 -1
  6. package/app/{enums → modules/html-editor/enums}/default-plugin.enum.d.ts +15 -15
  7. package/app/{fs-html-editor.module.d.ts → modules/html-editor/fs-html-editor.module.d.ts} +43 -42
  8. package/app/{injects → modules/html-editor/injects}/config.inject.d.ts +3 -3
  9. package/app/{interfaces → modules/html-editor/interfaces}/html-editor-config.d.ts +40 -40
  10. package/app/{interfaces → modules/html-editor/interfaces}/plugin-button.d.ts +12 -12
  11. package/app/{interfaces → modules/html-editor/interfaces}/plugin-config.d.ts +5 -5
  12. package/app/{plugins → modules/html-editor/plugins}/checklist.plugin.d.ts +7 -7
  13. package/app/{plugins → modules/html-editor/plugins}/code.plugin.d.ts +9 -9
  14. package/app/{plugins → modules/html-editor/plugins}/configs/mention-plugin.config.d.ts +13 -13
  15. package/app/{plugins → modules/html-editor/plugins}/configs/screen-record-plugin.config.d.ts +7 -7
  16. package/app/{plugins → modules/html-editor/plugins}/mention.plugin.d.ts +15 -15
  17. package/app/modules/html-editor/plugins/realtime.plugin.d.ts +7 -0
  18. package/app/{plugins → modules/html-editor/plugins}/screen-record.plugin.d.ts +11 -11
  19. package/app/{services → modules/html-editor/services}/froala-loader.service.d.ts +20 -20
  20. package/app/{utils → modules/html-editor/utils}/loader.d.ts +7 -7
  21. package/app/{components → modules/html-renderer/components}/html-renderer/html-renderer.component.d.ts +12 -12
  22. package/app/modules/html-renderer/fs-html-renderer.module.d.ts +8 -0
  23. package/bundles/firestitch-html-editor.umd.js +1449 -1400
  24. package/bundles/firestitch-html-editor.umd.js.map +1 -1
  25. package/esm2015/app/modules/html-editor/classes/plugin.js +5 -0
  26. package/esm2015/app/modules/html-editor/components/html-editor/html-editor.component.js +493 -0
  27. package/esm2015/app/modules/html-editor/consts/paragraph-buttons.const.js +9 -0
  28. package/esm2015/app/modules/html-editor/consts/rich-buttons.const.js +7 -0
  29. package/esm2015/app/modules/html-editor/consts/text-buttons.const.js +19 -0
  30. package/esm2015/app/modules/html-editor/enums/default-plugin.enum.js +2 -0
  31. package/esm2015/app/modules/html-editor/fs-html-editor.module.js +68 -0
  32. package/esm2015/app/modules/html-editor/injects/config.inject.js +4 -0
  33. package/esm2015/app/modules/html-editor/interfaces/html-editor-config.js +2 -0
  34. package/esm2015/app/modules/html-editor/interfaces/plugin-button.js +2 -0
  35. package/esm2015/app/modules/html-editor/interfaces/plugin-config.js +2 -0
  36. package/esm2015/app/modules/html-editor/plugins/checklist.plugin.js +35 -0
  37. package/esm2015/app/modules/html-editor/plugins/code.plugin.js +63 -0
  38. package/esm2015/app/modules/html-editor/plugins/configs/mention-plugin.config.js +2 -0
  39. package/esm2015/app/modules/html-editor/plugins/configs/screen-record-plugin.config.js +2 -0
  40. package/esm2015/app/modules/html-editor/plugins/mention.plugin.js +87 -0
  41. package/esm2015/app/modules/html-editor/plugins/realtime.plugin.js +13 -0
  42. package/esm2015/app/modules/html-editor/plugins/screen-record.plugin.js +94 -0
  43. package/esm2015/app/modules/html-editor/services/froala-loader.service.js +80 -0
  44. package/esm2015/app/modules/html-editor/utils/loader.js +84 -0
  45. package/esm2015/app/modules/html-renderer/components/html-renderer/html-renderer.component.js +29 -0
  46. package/esm2015/app/modules/html-renderer/fs-html-renderer.module.js +26 -0
  47. package/esm2015/firestitch-html-editor.js +4 -4
  48. package/esm2015/public_api.js +14 -12
  49. package/fesm2015/firestitch-html-editor.js +1040 -999
  50. package/fesm2015/firestitch-html-editor.js.map +1 -1
  51. package/firestitch-html-editor.d.ts +5 -5
  52. package/package.json +1 -1
  53. package/public_api.d.ts +18 -16
  54. package/esm2015/app/classes/plugin.js +0 -5
  55. package/esm2015/app/components/html-editor/html-editor.component.js +0 -489
  56. package/esm2015/app/components/html-renderer/html-renderer.component.js +0 -29
  57. package/esm2015/app/consts/paragraph-buttons.const.js +0 -9
  58. package/esm2015/app/consts/rich-buttons.const.js +0 -7
  59. package/esm2015/app/consts/text-buttons.const.js +0 -19
  60. package/esm2015/app/enums/default-plugin.enum.js +0 -2
  61. package/esm2015/app/fs-html-editor.module.js +0 -65
  62. package/esm2015/app/injects/config.inject.js +0 -4
  63. package/esm2015/app/interfaces/html-editor-config.js +0 -2
  64. package/esm2015/app/interfaces/plugin-button.js +0 -2
  65. package/esm2015/app/interfaces/plugin-config.js +0 -2
  66. package/esm2015/app/plugins/checklist.plugin.js +0 -35
  67. package/esm2015/app/plugins/code.plugin.js +0 -63
  68. package/esm2015/app/plugins/configs/mention-plugin.config.js +0 -2
  69. package/esm2015/app/plugins/configs/screen-record-plugin.config.js +0 -2
  70. package/esm2015/app/plugins/mention.plugin.js +0 -87
  71. package/esm2015/app/plugins/screen-record.plugin.js +0 -94
  72. package/esm2015/app/services/froala-loader.service.js +0 -80
  73. package/esm2015/app/utils/loader.js +0 -84
@@ -1,84 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- import { shareReplay } from 'rxjs/operators';
3
- function resourceLoaderFactory() {
4
- let resourceBase = '/assets/js/froala/';
5
- let stylesBase = '/assets/css/';
6
- const head = document.getElementsByTagName('head')[0];
7
- const files = new Map();
8
- const resourcePaths = {
9
- froala: 'froala_editor.min.js',
10
- align: 'plugins/align.min.js',
11
- colors: 'plugins/colors.min.js',
12
- image: 'plugins/image.min.js',
13
- link: 'plugins/link.min.js',
14
- lists: 'plugins/lists.min.js',
15
- paragraph_format: 'plugins/paragraph_format.min.js',
16
- table: 'plugins/table.min.js',
17
- url: 'plugins/url.min.js',
18
- video: 'plugins/video.min.js',
19
- quote: 'plugins/quote.min.js',
20
- draggable: 'plugins/draggable.min.js',
21
- font_size: 'plugins/font_size.min.js',
22
- quick_insert: 'plugins/quick_insert.min.js',
23
- };
24
- const stylesPaths = {
25
- froala: 'froala_editor.pkgd.min.css',
26
- };
27
- const loadResource = function (scriptPath) {
28
- if (!files.has(scriptPath)) {
29
- const obs$ = new Observable((obs) => {
30
- const script = document.createElement('script');
31
- script.src = scriptPath;
32
- head.appendChild(script);
33
- script.onload = () => {
34
- obs.next();
35
- obs.complete();
36
- };
37
- script.onerror = (err) => {
38
- obs.error(err);
39
- };
40
- })
41
- .pipe(shareReplay(1));
42
- files.set(scriptPath, obs$);
43
- }
44
- return files.get(scriptPath);
45
- };
46
- const loadStyles = function (stylePath) {
47
- if (!files.has(stylePath)) {
48
- const obs$ = new Observable((obs) => {
49
- const style = document.createElement('link');
50
- style.id = stylePath;
51
- style.rel = 'stylesheet';
52
- style.href = `${stylePath}`;
53
- head.appendChild(style);
54
- style.onload = () => {
55
- obs.next();
56
- obs.complete();
57
- };
58
- style.onerror = (err) => {
59
- obs.error(err);
60
- };
61
- });
62
- files.set(stylePath, obs$);
63
- }
64
- return files.get(stylePath);
65
- };
66
- return {
67
- setResourceBase: (path) => {
68
- resourceBase = path;
69
- },
70
- setStylesBase: (path) => {
71
- stylesBase = path;
72
- },
73
- loadResource: (resourceName) => {
74
- const path = resourcePaths[resourceName] || resourceName;
75
- return loadResource(resourceBase + path);
76
- },
77
- loadStyles: (resourceName) => {
78
- const path = stylesPaths[resourceName] || resourceName;
79
- return loadStyles(stylesBase + path);
80
- }
81
- };
82
- }
83
- export const ResourceLoader = resourceLoaderFactory();
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC91dGlscy9sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsU0FBUyxxQkFBcUI7SUFDNUIsSUFBSSxZQUFZLEdBQUcsb0JBQW9CLENBQUM7SUFDeEMsSUFBSSxVQUFVLEdBQUcsY0FBYyxDQUFDO0lBRWhDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBK0IsQ0FBQztJQUVyRCxNQUFNLGFBQWEsR0FBRztRQUNwQixNQUFNLEVBQUUsc0JBQXNCO1FBQzlCLEtBQUssRUFBRSxzQkFBc0I7UUFDN0IsTUFBTSxFQUFFLHVCQUF1QjtRQUMvQixLQUFLLEVBQUUsc0JBQXNCO1FBQzdCLElBQUksRUFBRSxxQkFBcUI7UUFDM0IsS0FBSyxFQUFFLHNCQUFzQjtRQUM3QixnQkFBZ0IsRUFBRSxpQ0FBaUM7UUFDbkQsS0FBSyxFQUFFLHNCQUFzQjtRQUM3QixHQUFHLEVBQUUsb0JBQW9CO1FBQ3pCLEtBQUssRUFBRSxzQkFBc0I7UUFDN0IsS0FBSyxFQUFFLHNCQUFzQjtRQUM3QixTQUFTLEVBQUUsMEJBQTBCO1FBQ3JDLFNBQVMsRUFBRSwwQkFBMEI7UUFDckMsWUFBWSxFQUFFLDZCQUE2QjtLQUM1QyxDQUFBO0lBRUQsTUFBTSxXQUFXLEdBQUc7UUFDbEIsTUFBTSxFQUFFLDRCQUE0QjtLQUNyQyxDQUFBO0lBRUQsTUFBTSxZQUFZLEdBQUcsVUFBVSxVQUFrQjtRQUMvQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMxQixNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUVsQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNoRCxNQUFNLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQztnQkFFeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFFekIsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7b0JBQ25CLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDWCxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2pCLENBQUMsQ0FBQztnQkFFRixNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ3ZCLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2pCLENBQUMsQ0FBQTtZQUNILENBQUMsQ0FBQztpQkFDQyxJQUFJLENBQ0gsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7WUFFSixLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUM3QjtRQUVELE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQixDQUFDLENBQUM7SUFFRixNQUFNLFVBQVUsR0FBRyxVQUFVLFNBQWlCO1FBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2xDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzdDLEtBQUssQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDO2dCQUNyQixLQUFLLENBQUMsR0FBRyxHQUFHLFlBQVksQ0FBQztnQkFDekIsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLFNBQVMsRUFBRSxDQUFDO2dCQUU1QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUV4QixLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtvQkFDbEIsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNYLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDakIsQ0FBQyxDQUFDO2dCQUVGLEtBQUssQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDdEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDakIsQ0FBQyxDQUFBO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUM1QjtRQUVELE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixDQUFDLENBQUM7SUFFRixPQUFPO1FBQ0wsZUFBZSxFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUU7WUFDaEMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN0QixDQUFDO1FBQ0QsYUFBYSxFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUU7WUFDOUIsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNwQixDQUFDO1FBQ0QsWUFBWSxFQUFFLENBQUMsWUFBb0IsRUFBRSxFQUFFO1lBQ3JDLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsSUFBSSxZQUFZLENBQUM7WUFFekQsT0FBTyxZQUFZLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFDRCxVQUFVLEVBQUUsQ0FBQyxZQUFvQixFQUFFLEVBQUU7WUFDbkMsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLFlBQVksQ0FBQztZQUV2RCxPQUFPLFVBQVUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDdkMsQ0FBQztLQUNGLENBQUE7QUFDSCxDQUFDO0FBR0QsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLHFCQUFxQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZnVuY3Rpb24gcmVzb3VyY2VMb2FkZXJGYWN0b3J5KCkge1xuICBsZXQgcmVzb3VyY2VCYXNlID0gJy9hc3NldHMvanMvZnJvYWxhLyc7XG4gIGxldCBzdHlsZXNCYXNlID0gJy9hc3NldHMvY3NzLyc7XG5cbiAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gIGNvbnN0IGZpbGVzID0gbmV3IE1hcDxzdHJpbmcsIE9ic2VydmFibGU8dW5rbm93bj4+KCk7XG5cbiAgY29uc3QgcmVzb3VyY2VQYXRocyA9IHtcbiAgICBmcm9hbGE6ICdmcm9hbGFfZWRpdG9yLm1pbi5qcycsXG4gICAgYWxpZ246ICdwbHVnaW5zL2FsaWduLm1pbi5qcycsXG4gICAgY29sb3JzOiAncGx1Z2lucy9jb2xvcnMubWluLmpzJyxcbiAgICBpbWFnZTogJ3BsdWdpbnMvaW1hZ2UubWluLmpzJyxcbiAgICBsaW5rOiAncGx1Z2lucy9saW5rLm1pbi5qcycsXG4gICAgbGlzdHM6ICdwbHVnaW5zL2xpc3RzLm1pbi5qcycsXG4gICAgcGFyYWdyYXBoX2Zvcm1hdDogJ3BsdWdpbnMvcGFyYWdyYXBoX2Zvcm1hdC5taW4uanMnLFxuICAgIHRhYmxlOiAncGx1Z2lucy90YWJsZS5taW4uanMnLFxuICAgIHVybDogJ3BsdWdpbnMvdXJsLm1pbi5qcycsXG4gICAgdmlkZW86ICdwbHVnaW5zL3ZpZGVvLm1pbi5qcycsXG4gICAgcXVvdGU6ICdwbHVnaW5zL3F1b3RlLm1pbi5qcycsXG4gICAgZHJhZ2dhYmxlOiAncGx1Z2lucy9kcmFnZ2FibGUubWluLmpzJyxcbiAgICBmb250X3NpemU6ICdwbHVnaW5zL2ZvbnRfc2l6ZS5taW4uanMnLFxuICAgIHF1aWNrX2luc2VydDogJ3BsdWdpbnMvcXVpY2tfaW5zZXJ0Lm1pbi5qcycsXG4gIH1cblxuICBjb25zdCBzdHlsZXNQYXRocyA9IHtcbiAgICBmcm9hbGE6ICdmcm9hbGFfZWRpdG9yLnBrZ2QubWluLmNzcycsXG4gIH1cblxuICBjb25zdCBsb2FkUmVzb3VyY2UgPSBmdW5jdGlvbiAoc2NyaXB0UGF0aDogc3RyaW5nKTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgaWYgKCFmaWxlcy5oYXMoc2NyaXB0UGF0aCkpIHtcbiAgICAgIGNvbnN0IG9icyQgPSBuZXcgT2JzZXJ2YWJsZSgob2JzKSA9PiB7XG5cbiAgICAgICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICAgIHNjcmlwdC5zcmMgPSBzY3JpcHRQYXRoO1xuXG4gICAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcblxuICAgICAgICBzY3JpcHQub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgIG9icy5uZXh0KCk7XG4gICAgICAgICAgb2JzLmNvbXBsZXRlKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoZXJyKSA9PiB7XG4gICAgICAgICAgb2JzLmVycm9yKGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgICAgICApO1xuXG4gICAgICBmaWxlcy5zZXQoc2NyaXB0UGF0aCwgb2JzJCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbGVzLmdldChzY3JpcHRQYXRoKTtcbiAgfTtcblxuICBjb25zdCBsb2FkU3R5bGVzID0gZnVuY3Rpb24gKHN0eWxlUGF0aDogc3RyaW5nKTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgaWYgKCFmaWxlcy5oYXMoc3R5bGVQYXRoKSkge1xuICAgICAgY29uc3Qgb2JzJCA9IG5ldyBPYnNlcnZhYmxlKChvYnMpID0+IHtcbiAgICAgICAgY29uc3Qgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7XG4gICAgICAgIHN0eWxlLmlkID0gc3R5bGVQYXRoO1xuICAgICAgICBzdHlsZS5yZWwgPSAnc3R5bGVzaGVldCc7XG4gICAgICAgIHN0eWxlLmhyZWYgPSBgJHtzdHlsZVBhdGh9YDtcblxuICAgICAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcblxuICAgICAgICBzdHlsZS5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgb2JzLm5leHQoKTtcbiAgICAgICAgICBvYnMuY29tcGxldGUoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBzdHlsZS5vbmVycm9yID0gKGVycikgPT4ge1xuICAgICAgICAgIG9icy5lcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgZmlsZXMuc2V0KHN0eWxlUGF0aCwgb2JzJCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbGVzLmdldChzdHlsZVBhdGgpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgc2V0UmVzb3VyY2VCYXNlOiAocGF0aDogc3RyaW5nKSA9PiB7XG4gICAgICByZXNvdXJjZUJhc2UgPSBwYXRoO1xuICAgIH0sXG4gICAgc2V0U3R5bGVzQmFzZTogKHBhdGg6IHN0cmluZykgPT4ge1xuICAgICAgc3R5bGVzQmFzZSA9IHBhdGg7XG4gICAgfSxcbiAgICBsb2FkUmVzb3VyY2U6IChyZXNvdXJjZU5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgcGF0aCA9IHJlc291cmNlUGF0aHNbcmVzb3VyY2VOYW1lXSB8fCByZXNvdXJjZU5hbWU7XG5cbiAgICAgIHJldHVybiBsb2FkUmVzb3VyY2UocmVzb3VyY2VCYXNlICsgcGF0aCk7XG4gICAgfSxcbiAgICBsb2FkU3R5bGVzOiAocmVzb3VyY2VOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHBhdGggPSBzdHlsZXNQYXRoc1tyZXNvdXJjZU5hbWVdIHx8IHJlc291cmNlTmFtZTtcblxuICAgICAgcmV0dXJuIGxvYWRTdHlsZXMoc3R5bGVzQmFzZSArIHBhdGgpO1xuICAgIH1cbiAgfVxufVxuXG5cbmV4cG9ydCBjb25zdCBSZXNvdXJjZUxvYWRlciA9IHJlc291cmNlTG9hZGVyRmFjdG9yeSgpO1xuIl19