@skyux/text-editor 5.7.2 → 6.0.0-beta.2

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 (98) hide show
  1. package/documentation.json +2 -2
  2. package/esm2020/index.mjs +15 -0
  3. package/esm2020/lib/modules/rich-text-display/rich-text-display.component.mjs +36 -0
  4. package/esm2020/lib/modules/rich-text-display/rich-text-display.module.mjs +18 -0
  5. package/esm2020/lib/modules/shared/forms-utility.mjs +10 -0
  6. package/esm2020/lib/modules/shared/sky-text-editor-resources.module.mjs +106 -0
  7. package/esm2020/lib/modules/text-editor/defaults/font-list-defaults.mjs +42 -0
  8. package/esm2020/lib/modules/text-editor/defaults/font-size-list-defaults.mjs +7 -0
  9. package/esm2020/lib/modules/text-editor/defaults/menu-defaults.mjs +5 -0
  10. package/esm2020/lib/modules/text-editor/defaults/style-state-defaults.mjs +15 -0
  11. package/esm2020/lib/modules/text-editor/defaults/toolbar-action-defaults.mjs +12 -0
  12. package/esm2020/lib/modules/text-editor/menubar/text-editor-menubar.component.mjs +191 -0
  13. package/esm2020/lib/modules/text-editor/services/text-editor-adapter.service.mjs +477 -0
  14. package/esm2020/lib/modules/text-editor/services/text-editor-selection.service.mjs +80 -0
  15. package/esm2020/lib/modules/text-editor/services/text-editor.service.mjs +61 -0
  16. package/esm2020/lib/modules/text-editor/services/text-sanitization.service.mjs +38 -0
  17. package/esm2020/lib/modules/text-editor/text-editor.component.mjs +322 -0
  18. package/esm2020/lib/modules/text-editor/text-editor.module.mjs +98 -0
  19. package/esm2020/lib/modules/text-editor/toolbar/text-editor-toolbar.component.mjs +179 -0
  20. package/esm2020/lib/modules/text-editor/types/editor-command.mjs +2 -0
  21. package/esm2020/lib/modules/text-editor/types/editor-setting.mjs +2 -0
  22. package/esm2020/lib/modules/text-editor/types/font-state.mjs +2 -0
  23. package/esm2020/lib/modules/text-editor/types/menu-type.mjs +2 -0
  24. package/esm2020/lib/modules/text-editor/types/style-state.mjs +2 -0
  25. package/esm2020/lib/modules/text-editor/types/text-editor-merge-field.mjs +2 -0
  26. package/esm2020/lib/modules/text-editor/types/toolbar-action-type.mjs +2 -0
  27. package/esm2020/lib/modules/text-editor/url-modal/text-editor-url-modal-context.mjs +6 -0
  28. package/esm2020/lib/modules/text-editor/url-modal/text-editor-url-modal-result.mjs +2 -0
  29. package/esm2020/lib/modules/text-editor/url-modal/text-editor-url-modal.component.mjs +117 -0
  30. package/esm2020/lib/modules/text-editor/url-modal/text-editor-url-target.mjs +9 -0
  31. package/esm2020/skyux-text-editor.mjs +5 -0
  32. package/fesm2015/{skyux-text-editor.js → skyux-text-editor.mjs} +45 -69
  33. package/fesm2015/skyux-text-editor.mjs.map +1 -0
  34. package/fesm2020/skyux-text-editor.mjs +1743 -0
  35. package/fesm2020/skyux-text-editor.mjs.map +1 -0
  36. package/package.json +38 -22
  37. package/bundles/skyux-text-editor.umd.js +0 -2195
  38. package/esm2015/index.js +0 -15
  39. package/esm2015/index.js.map +0 -1
  40. package/esm2015/lib/modules/rich-text-display/rich-text-display.component.js +0 -39
  41. package/esm2015/lib/modules/rich-text-display/rich-text-display.component.js.map +0 -1
  42. package/esm2015/lib/modules/rich-text-display/rich-text-display.module.js +0 -18
  43. package/esm2015/lib/modules/rich-text-display/rich-text-display.module.js.map +0 -1
  44. package/esm2015/lib/modules/shared/forms-utility.js +0 -10
  45. package/esm2015/lib/modules/shared/forms-utility.js.map +0 -1
  46. package/esm2015/lib/modules/shared/sky-text-editor-resources.module.js +0 -106
  47. package/esm2015/lib/modules/shared/sky-text-editor-resources.module.js.map +0 -1
  48. package/esm2015/lib/modules/text-editor/defaults/font-list-defaults.js +0 -42
  49. package/esm2015/lib/modules/text-editor/defaults/font-list-defaults.js.map +0 -1
  50. package/esm2015/lib/modules/text-editor/defaults/font-size-list-defaults.js +0 -7
  51. package/esm2015/lib/modules/text-editor/defaults/font-size-list-defaults.js.map +0 -1
  52. package/esm2015/lib/modules/text-editor/defaults/menu-defaults.js +0 -5
  53. package/esm2015/lib/modules/text-editor/defaults/menu-defaults.js.map +0 -1
  54. package/esm2015/lib/modules/text-editor/defaults/style-state-defaults.js +0 -15
  55. package/esm2015/lib/modules/text-editor/defaults/style-state-defaults.js.map +0 -1
  56. package/esm2015/lib/modules/text-editor/defaults/toolbar-action-defaults.js +0 -12
  57. package/esm2015/lib/modules/text-editor/defaults/toolbar-action-defaults.js.map +0 -1
  58. package/esm2015/lib/modules/text-editor/menubar/text-editor-menubar.component.js +0 -196
  59. package/esm2015/lib/modules/text-editor/menubar/text-editor-menubar.component.js.map +0 -1
  60. package/esm2015/lib/modules/text-editor/services/text-editor-adapter.service.js +0 -474
  61. package/esm2015/lib/modules/text-editor/services/text-editor-adapter.service.js.map +0 -1
  62. package/esm2015/lib/modules/text-editor/services/text-editor-selection.service.js +0 -80
  63. package/esm2015/lib/modules/text-editor/services/text-editor-selection.service.js.map +0 -1
  64. package/esm2015/lib/modules/text-editor/services/text-editor.service.js +0 -61
  65. package/esm2015/lib/modules/text-editor/services/text-editor.service.js.map +0 -1
  66. package/esm2015/lib/modules/text-editor/services/text-sanitization.service.js +0 -38
  67. package/esm2015/lib/modules/text-editor/services/text-sanitization.service.js.map +0 -1
  68. package/esm2015/lib/modules/text-editor/text-editor.component.js +0 -322
  69. package/esm2015/lib/modules/text-editor/text-editor.component.js.map +0 -1
  70. package/esm2015/lib/modules/text-editor/text-editor.module.js +0 -99
  71. package/esm2015/lib/modules/text-editor/text-editor.module.js.map +0 -1
  72. package/esm2015/lib/modules/text-editor/toolbar/text-editor-toolbar.component.js +0 -175
  73. package/esm2015/lib/modules/text-editor/toolbar/text-editor-toolbar.component.js.map +0 -1
  74. package/esm2015/lib/modules/text-editor/types/editor-command.js +0 -2
  75. package/esm2015/lib/modules/text-editor/types/editor-command.js.map +0 -1
  76. package/esm2015/lib/modules/text-editor/types/editor-setting.js +0 -2
  77. package/esm2015/lib/modules/text-editor/types/editor-setting.js.map +0 -1
  78. package/esm2015/lib/modules/text-editor/types/font-state.js +0 -2
  79. package/esm2015/lib/modules/text-editor/types/font-state.js.map +0 -1
  80. package/esm2015/lib/modules/text-editor/types/menu-type.js +0 -2
  81. package/esm2015/lib/modules/text-editor/types/menu-type.js.map +0 -1
  82. package/esm2015/lib/modules/text-editor/types/style-state.js +0 -2
  83. package/esm2015/lib/modules/text-editor/types/style-state.js.map +0 -1
  84. package/esm2015/lib/modules/text-editor/types/text-editor-merge-field.js +0 -2
  85. package/esm2015/lib/modules/text-editor/types/text-editor-merge-field.js.map +0 -1
  86. package/esm2015/lib/modules/text-editor/types/toolbar-action-type.js +0 -2
  87. package/esm2015/lib/modules/text-editor/types/toolbar-action-type.js.map +0 -1
  88. package/esm2015/lib/modules/text-editor/url-modal/text-editor-url-modal-context.js +0 -6
  89. package/esm2015/lib/modules/text-editor/url-modal/text-editor-url-modal-context.js.map +0 -1
  90. package/esm2015/lib/modules/text-editor/url-modal/text-editor-url-modal-result.js +0 -2
  91. package/esm2015/lib/modules/text-editor/url-modal/text-editor-url-modal-result.js.map +0 -1
  92. package/esm2015/lib/modules/text-editor/url-modal/text-editor-url-modal.component.js +0 -121
  93. package/esm2015/lib/modules/text-editor/url-modal/text-editor-url-modal.component.js.map +0 -1
  94. package/esm2015/lib/modules/text-editor/url-modal/text-editor-url-target.js +0 -9
  95. package/esm2015/lib/modules/text-editor/url-modal/text-editor-url-target.js.map +0 -1
  96. package/esm2015/skyux-text-editor.js +0 -5
  97. package/esm2015/skyux-text-editor.js.map +0 -1
  98. package/fesm2015/skyux-text-editor.js.map +0 -1
@@ -72,7 +72,7 @@
72
72
  "name": "NgModule"
73
73
  },
74
74
  "arguments": {
75
- "obj": "{\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyCoreAdapterModule,\n SkyTextEditorResourcesModule,\n SkyI18nModule,\n SkyIconModule,\n SkyIdModule,\n SkyInputBoxModule,\n SkyColorpickerModule,\n SkyCheckboxModule,\n SkyDropdownModule,\n SkyModalModule,\n SkyTabsModule,\n SkyThemeModule,\n SkyToolbarModule,\n ],\n exports: [\n SkyTextEditorComponent,\n SkyTextEditorUrlModalComponent,\n SkyTextEditorToolbarComponent,\n SkyTextEditorMenubarComponent,\n ],\n declarations: [\n SkyTextEditorComponent,\n SkyTextEditorUrlModalComponent,\n SkyTextEditorToolbarComponent,\n SkyTextEditorMenubarComponent,\n ],\n entryComponents: [SkyTextEditorUrlModalComponent],\n}"
75
+ "obj": "{\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SkyCoreAdapterModule,\n SkyTextEditorResourcesModule,\n SkyI18nModule,\n SkyIconModule,\n SkyIdModule,\n SkyInputBoxModule,\n SkyColorpickerModule,\n SkyCheckboxModule,\n SkyDropdownModule,\n SkyModalModule,\n SkyTabsModule,\n SkyThemeModule,\n SkyToolbarModule,\n ],\n exports: [\n SkyTextEditorComponent,\n SkyTextEditorUrlModalComponent,\n SkyTextEditorToolbarComponent,\n SkyTextEditorMenubarComponent,\n ],\n declarations: [\n SkyTextEditorComponent,\n SkyTextEditorUrlModalComponent,\n SkyTextEditorToolbarComponent,\n SkyTextEditorMenubarComponent,\n ],\n}"
76
76
  }
77
77
  }
78
78
  ],
@@ -89,7 +89,7 @@
89
89
  "sources": [
90
90
  {
91
91
  "fileName": "projects/text-editor/src/modules/text-editor/text-editor.module.ts",
92
- "line": 55,
92
+ "line": 54,
93
93
  "character": 13
94
94
  }
95
95
  ]
@@ -0,0 +1,15 @@
1
+ export * from './lib/modules/rich-text-display/rich-text-display.module';
2
+ export * from './lib/modules/text-editor/types/font-state';
3
+ export * from './lib/modules/text-editor/types/menu-type';
4
+ export * from './lib/modules/text-editor/types/style-state';
5
+ export * from './lib/modules/text-editor/types/text-editor-merge-field';
6
+ export * from './lib/modules/text-editor/types/toolbar-action-type';
7
+ export * from './lib/modules/text-editor/text-editor.module';
8
+ // Components and directives must be exported to support Angular's "partial" Ivy compiler.
9
+ // Obscure names are used to indicate types are not part of the public API.
10
+ export { SkyRichTextDisplayComponent as λ1 } from './lib/modules/rich-text-display/rich-text-display.component';
11
+ export { SkyTextEditorMenubarComponent as λ2 } from './lib/modules/text-editor/menubar/text-editor-menubar.component';
12
+ export { SkyTextEditorUrlModalComponent as λ3 } from './lib/modules/text-editor/url-modal/text-editor-url-modal.component';
13
+ export { SkyTextEditorToolbarComponent as λ4 } from './lib/modules/text-editor/toolbar/text-editor-toolbar.component';
14
+ export { SkyTextEditorComponent as λ5 } from './lib/modules/text-editor/text-editor.component';
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMERBQTBELENBQUM7QUFFekUsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLHFEQUFxRCxDQUFDO0FBRXBFLGNBQWMsOENBQThDLENBQUM7QUFFN0QsMEZBQTBGO0FBQzFGLDJFQUEyRTtBQUMzRSxPQUFPLEVBQUUsMkJBQTJCLElBQUksRUFBRSxFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDaEgsT0FBTyxFQUFFLDZCQUE2QixJQUFJLEVBQUUsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQ3RILE9BQU8sRUFBRSw4QkFBOEIsSUFBSSxFQUFFLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUMzSCxPQUFPLEVBQUUsNkJBQTZCLElBQUksRUFBRSxFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDdEgsT0FBTyxFQUFFLHNCQUFzQixJQUFJLEVBQUUsRUFBRSxNQUFNLGlEQUFpRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kdWxlcy9yaWNoLXRleHQtZGlzcGxheS9yaWNoLXRleHQtZGlzcGxheS5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL3R5cGVzL2ZvbnQtc3RhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kdWxlcy90ZXh0LWVkaXRvci90eXBlcy9tZW51LXR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kdWxlcy90ZXh0LWVkaXRvci90eXBlcy9zdHlsZS1zdGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL3R5cGVzL3RleHQtZWRpdG9yLW1lcmdlLWZpZWxkJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZHVsZXMvdGV4dC1lZGl0b3IvdHlwZXMvdG9vbGJhci1hY3Rpb24tdHlwZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZHVsZXMvdGV4dC1lZGl0b3IvdGV4dC1lZGl0b3IubW9kdWxlJztcblxuLy8gQ29tcG9uZW50cyBhbmQgZGlyZWN0aXZlcyBtdXN0IGJlIGV4cG9ydGVkIHRvIHN1cHBvcnQgQW5ndWxhcidzIFwicGFydGlhbFwiIEl2eSBjb21waWxlci5cbi8vIE9ic2N1cmUgbmFtZXMgYXJlIHVzZWQgdG8gaW5kaWNhdGUgdHlwZXMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJLlxuZXhwb3J0IHsgU2t5UmljaFRleHREaXNwbGF5Q29tcG9uZW50IGFzIM67MSB9IGZyb20gJy4vbGliL21vZHVsZXMvcmljaC10ZXh0LWRpc3BsYXkvcmljaC10ZXh0LWRpc3BsYXkuY29tcG9uZW50JztcbmV4cG9ydCB7IFNreVRleHRFZGl0b3JNZW51YmFyQ29tcG9uZW50IGFzIM67MiB9IGZyb20gJy4vbGliL21vZHVsZXMvdGV4dC1lZGl0b3IvbWVudWJhci90ZXh0LWVkaXRvci1tZW51YmFyLmNvbXBvbmVudCc7XG5leHBvcnQgeyBTa3lUZXh0RWRpdG9yVXJsTW9kYWxDb21wb25lbnQgYXMgzrszIH0gZnJvbSAnLi9saWIvbW9kdWxlcy90ZXh0LWVkaXRvci91cmwtbW9kYWwvdGV4dC1lZGl0b3ItdXJsLW1vZGFsLmNvbXBvbmVudCc7XG5leHBvcnQgeyBTa3lUZXh0RWRpdG9yVG9vbGJhckNvbXBvbmVudCBhcyDOuzQgfSBmcm9tICcuL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL3Rvb2xiYXIvdGV4dC1lZGl0b3ItdG9vbGJhci5jb21wb25lbnQnO1xuZXhwb3J0IHsgU2t5VGV4dEVkaXRvckNvbXBvbmVudCBhcyDOuzUgfSBmcm9tICcuL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudCc7XG4iXX0=
@@ -0,0 +1,36 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { DomSanitizer } from '@angular/platform-browser';
3
+ import { SkyTextSanitizationService } from '../text-editor/services/text-sanitization.service';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/platform-browser";
6
+ import * as i2 from "../text-editor/services/text-sanitization.service";
7
+ export class SkyRichTextDisplayComponent {
8
+ constructor(sanitizer, sanitizationService) {
9
+ this.sanitizer = sanitizer;
10
+ this.sanitizationService = sanitizationService;
11
+ this.sanitizedText = '';
12
+ this._richText = '';
13
+ }
14
+ /**
15
+ * Specifies the rich text to display.
16
+ */
17
+ set richText(value) {
18
+ const cleaned = this.sanitizationService.sanitize(value);
19
+ /* istanbul ignore else */
20
+ if (cleaned !== this._richText) {
21
+ this._richText = cleaned;
22
+ // Text has already been sanitized with DOMPurifier.
23
+ // Tell Angular to bypass its own internal sanitization.
24
+ this.sanitizedText = this.sanitizer.bypassSecurityTrustHtml(cleaned);
25
+ }
26
+ }
27
+ }
28
+ SkyRichTextDisplayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyRichTextDisplayComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.SkyTextSanitizationService }], target: i0.ɵɵFactoryTarget.Component });
29
+ SkyRichTextDisplayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: SkyRichTextDisplayComponent, selector: "sky-rich-text-display", inputs: { richText: "richText" }, ngImport: i0, template: "<span class=\"sky-rich-text-display-text\" [innerHTML]=\"sanitizedText\"> </span>\n" });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyRichTextDisplayComponent, decorators: [{
31
+ type: Component,
32
+ args: [{ selector: 'sky-rich-text-display', template: "<span class=\"sky-rich-text-display-text\" [innerHTML]=\"sanitizedText\"> </span>\n" }]
33
+ }], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i2.SkyTextSanitizationService }]; }, propDecorators: { richText: [{
34
+ type: Input
35
+ }] } });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaC10ZXh0LWRpc3BsYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RleHQtZWRpdG9yL3NyYy9saWIvbW9kdWxlcy9yaWNoLXRleHQtZGlzcGxheS9yaWNoLXRleHQtZGlzcGxheS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3JpY2gtdGV4dC1kaXNwbGF5L3JpY2gtdGV4dC1kaXNwbGF5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQzs7OztBQU0vRixNQUFNLE9BQU8sMkJBQTJCO0lBcUJ0QyxZQUNVLFNBQXVCLEVBQ3ZCLG1CQUErQztRQUQvQyxjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ3ZCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBNEI7UUFObEQsa0JBQWEsR0FBYSxFQUFFLENBQUM7UUFFNUIsY0FBUyxHQUFHLEVBQUUsQ0FBQztJQUtwQixDQUFDO0lBdkJKOztPQUVHO0lBQ0gsSUFDVyxRQUFRLENBQUMsS0FBYTtRQUMvQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pELDBCQUEwQjtRQUMxQixJQUFJLE9BQU8sS0FBSyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1lBRXpCLG9EQUFvRDtZQUNwRCx3REFBd0Q7WUFDeEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3RFO0lBQ0gsQ0FBQzs7d0hBZlUsMkJBQTJCOzRHQUEzQiwyQkFBMkIsK0ZDVHhDLHFGQUNBOzJGRFFhLDJCQUEyQjtrQkFKdkMsU0FBUzsrQkFDRSx1QkFBdUI7NElBUXRCLFFBQVE7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmltcG9ydCB7IFNreVRleHRTYW5pdGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vdGV4dC1lZGl0b3Ivc2VydmljZXMvdGV4dC1zYW5pdGl6YXRpb24uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1yaWNoLXRleHQtZGlzcGxheScsXG4gIHRlbXBsYXRlVXJsOiAnLi9yaWNoLXRleHQtZGlzcGxheS5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreVJpY2hUZXh0RGlzcGxheUNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHJpY2ggdGV4dCB0byBkaXNwbGF5LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCByaWNoVGV4dCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgY2xlYW5lZCA9IHRoaXMuc2FuaXRpemF0aW9uU2VydmljZS5zYW5pdGl6ZSh2YWx1ZSk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoY2xlYW5lZCAhPT0gdGhpcy5fcmljaFRleHQpIHtcbiAgICAgIHRoaXMuX3JpY2hUZXh0ID0gY2xlYW5lZDtcblxuICAgICAgLy8gVGV4dCBoYXMgYWxyZWFkeSBiZWVuIHNhbml0aXplZCB3aXRoIERPTVB1cmlmaWVyLlxuICAgICAgLy8gVGVsbCBBbmd1bGFyIHRvIGJ5cGFzcyBpdHMgb3duIGludGVybmFsIHNhbml0aXphdGlvbi5cbiAgICAgIHRoaXMuc2FuaXRpemVkVGV4dCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGNsZWFuZWQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzYW5pdGl6ZWRUZXh0OiBTYWZlSHRtbCA9ICcnO1xuXG4gIHByaXZhdGUgX3JpY2hUZXh0ID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICBwcml2YXRlIHNhbml0aXphdGlvblNlcnZpY2U6IFNreVRleHRTYW5pdGl6YXRpb25TZXJ2aWNlXG4gICkge31cbn1cbiIsIjxzcGFuIGNsYXNzPVwic2t5LXJpY2gtdGV4dC1kaXNwbGF5LXRleHRcIiBbaW5uZXJIVE1MXT1cInNhbml0aXplZFRleHRcIj4gPC9zcGFuPlxuIl19
@@ -0,0 +1,18 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { SkyRichTextDisplayComponent } from './rich-text-display.component';
4
+ import * as i0 from "@angular/core";
5
+ export class SkyRichTextDisplayModule {
6
+ }
7
+ SkyRichTextDisplayModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyRichTextDisplayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
+ SkyRichTextDisplayModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyRichTextDisplayModule, declarations: [SkyRichTextDisplayComponent], imports: [CommonModule], exports: [SkyRichTextDisplayComponent] });
9
+ SkyRichTextDisplayModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyRichTextDisplayModule, imports: [[CommonModule]] });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyRichTextDisplayModule, decorators: [{
11
+ type: NgModule,
12
+ args: [{
13
+ imports: [CommonModule],
14
+ exports: [SkyRichTextDisplayComponent],
15
+ declarations: [SkyRichTextDisplayComponent],
16
+ }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaC10ZXh0LWRpc3BsYXkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RleHQtZWRpdG9yL3NyYy9saWIvbW9kdWxlcy9yaWNoLXRleHQtZGlzcGxheS9yaWNoLXRleHQtZGlzcGxheS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBTzVFLE1BQU0sT0FBTyx3QkFBd0I7O3FIQUF4Qix3QkFBd0I7c0hBQXhCLHdCQUF3QixpQkFGcEIsMkJBQTJCLGFBRmhDLFlBQVksYUFDWiwyQkFBMkI7c0hBRzFCLHdCQUF3QixZQUoxQixDQUFDLFlBQVksQ0FBQzsyRkFJWix3QkFBd0I7a0JBTHBDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztvQkFDdEMsWUFBWSxFQUFFLENBQUMsMkJBQTJCLENBQUM7aUJBQzVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreVJpY2hUZXh0RGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4vcmljaC10ZXh0LWRpc3BsYXkuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtTa3lSaWNoVGV4dERpc3BsYXlDb21wb25lbnRdLFxuICBkZWNsYXJhdGlvbnM6IFtTa3lSaWNoVGV4dERpc3BsYXlDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lSaWNoVGV4dERpc3BsYXlNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,10 @@
1
+ // Need to add the following to classes which contain static methods.
2
+ // See: https://github.com/ng-packagr/ng-packagr/issues/641
3
+ // @dynamic
4
+ export class SkyFormsUtility {
5
+ /** Coerces a data-bound value (typically a string) to a boolean. */
6
+ static coerceBooleanProperty(value) {
7
+ return value !== undefined && `${value}` !== 'false';
8
+ }
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtdXRpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90ZXh0LWVkaXRvci9zcmMvbGliL21vZHVsZXMvc2hhcmVkL2Zvcm1zLXV0aWxpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscUVBQXFFO0FBQ3JFLDJEQUEyRDtBQUMzRCxXQUFXO0FBQ1gsTUFBTSxPQUFPLGVBQWU7SUFDMUIsb0VBQW9FO0lBQzdELE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxLQUFVO1FBQzVDLE9BQU8sS0FBSyxLQUFLLFNBQVMsSUFBSSxHQUFHLEtBQUssRUFBRSxLQUFLLE9BQU8sQ0FBQztJQUN2RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBOZWVkIHRvIGFkZCB0aGUgZm9sbG93aW5nIHRvIGNsYXNzZXMgd2hpY2ggY29udGFpbiBzdGF0aWMgbWV0aG9kcy5cbi8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL25nLXBhY2thZ3IvbmctcGFja2Fnci9pc3N1ZXMvNjQxXG4vLyBAZHluYW1pY1xuZXhwb3J0IGNsYXNzIFNreUZvcm1zVXRpbGl0eSB7XG4gIC8qKiBDb2VyY2VzIGEgZGF0YS1ib3VuZCB2YWx1ZSAodHlwaWNhbGx5IGEgc3RyaW5nKSB0byBhIGJvb2xlYW4uICovXG4gIHB1YmxpYyBzdGF0aWMgY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiBgJHt2YWx1ZX1gICE9PSAnZmFsc2UnO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,106 @@
1
+ /**
2
+ * NOTICE: DO NOT MODIFY THIS FILE!
3
+ * The contents of this file were automatically generated by
4
+ * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-text-editor' schematic.
5
+ * To update this file, simply rerun the command.
6
+ */
7
+ import { NgModule } from '@angular/core';
8
+ import { SKY_LIB_RESOURCES_PROVIDERS, SkyI18nModule, getLibStringForLocale, } from '@skyux/i18n';
9
+ import * as i0 from "@angular/core";
10
+ const RESOURCES = {
11
+ 'EN-US': {
12
+ skyux_text_editor_format_menu_action_bold_label: { message: 'Bold' },
13
+ skyux_text_editor_format_menu_action_bold_key_shortcut: {
14
+ message: 'Ctrl+B',
15
+ },
16
+ skyux_text_editor_format_menu_action_italic_label: { message: 'Italic' },
17
+ skyux_text_editor_format_menu_action_italic_key_shortcut: {
18
+ message: 'Ctrl+I',
19
+ },
20
+ skyux_text_editor_format_menu_action_underline_label: {
21
+ message: 'Underline',
22
+ },
23
+ skyux_text_editor_format_menu_action_underline_key_shortcut: {
24
+ message: 'Ctrl+U',
25
+ },
26
+ skyux_text_editor_format_menu_action_strikethrough_label: {
27
+ message: 'Strikethrough',
28
+ },
29
+ skyux_text_editor_format_menu_action_clear_formatting_label: {
30
+ message: 'Clear formatting',
31
+ },
32
+ skyux_text_editor_edit_menu_action_undo_label: { message: 'Undo' },
33
+ skyux_text_editor_edit_menu_action_undo_key_shortcut: { message: 'Ctrl+Z' },
34
+ skyux_text_editor_edit_menu_action_redo_label: { message: 'Redo' },
35
+ skyux_text_editor_edit_menu_action_redo_key_shortcut: { message: 'Ctrl+Y' },
36
+ skyux_text_editor_edit_menu_action_cut_label: { message: 'Cut' },
37
+ skyux_text_editor_edit_menu_action_cut_key_shortcut: { message: 'Ctrl+X' },
38
+ skyux_text_editor_edit_menu_action_copy_label: { message: 'Copy' },
39
+ skyux_text_editor_edit_menu_action_copy_key_shortcut: { message: 'Ctrl+C' },
40
+ skyux_text_editor_edit_menu_action_paste_label: { message: 'Paste' },
41
+ skyux_text_editor_edit_menu_action_paste_key_shortcut: {
42
+ message: 'Ctrl+V',
43
+ },
44
+ skyux_text_editor_edit_menu_action_select_all_label: {
45
+ message: 'Select all',
46
+ },
47
+ skyux_text_editor_edit_menu_action_select_all_key_shortcut: {
48
+ message: 'Ctrl+A',
49
+ },
50
+ skyux_text_editor_menubar_dropdown_button_edit_label: { message: 'Edit' },
51
+ skyux_text_editor_menubar_dropdown_button_format_label: {
52
+ message: 'Format',
53
+ },
54
+ skyux_text_editor_menubar_dropdown_button_insert_label: {
55
+ message: 'Insert merge field',
56
+ },
57
+ skyux_text_editor_url_modal_header_label: { message: 'Create link' },
58
+ skyux_text_editor_url_modal_url_label: {
59
+ message: 'Enter a URL to link to:',
60
+ },
61
+ skyux_text_editor_url_modal_open_label: {
62
+ message: 'Where should it open?',
63
+ },
64
+ skyux_text_editor_url_modal_current_option_label: {
65
+ message: 'Current window',
66
+ },
67
+ skyux_text_editor_url_modal_new_option_label: { message: 'New window' },
68
+ skyux_text_editor_url_modal_email_label: { message: 'Email address' },
69
+ skyux_text_editor_url_modal_subject_label: { message: 'Subject line' },
70
+ skyux_text_editor_url_modal_save_button_label: { message: 'Save' },
71
+ skyux_text_editor_url_modal_cancel_button_label: { message: 'Cancel' },
72
+ },
73
+ };
74
+ export class SkyTextEditorResourcesProvider {
75
+ getString(localeInfo, name) {
76
+ return getLibStringForLocale(RESOURCES, localeInfo.locale, name);
77
+ }
78
+ }
79
+ /**
80
+ * Import into any component library module that needs to use resource strings.
81
+ */
82
+ export class SkyTextEditorResourcesModule {
83
+ }
84
+ SkyTextEditorResourcesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyTextEditorResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
85
+ SkyTextEditorResourcesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyTextEditorResourcesModule, exports: [SkyI18nModule] });
86
+ SkyTextEditorResourcesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyTextEditorResourcesModule, providers: [
87
+ {
88
+ provide: SKY_LIB_RESOURCES_PROVIDERS,
89
+ useClass: SkyTextEditorResourcesProvider,
90
+ multi: true,
91
+ },
92
+ ], imports: [SkyI18nModule] });
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyTextEditorResourcesModule, decorators: [{
94
+ type: NgModule,
95
+ args: [{
96
+ exports: [SkyI18nModule],
97
+ providers: [
98
+ {
99
+ provide: SKY_LIB_RESOURCES_PROVIDERS,
100
+ useClass: SkyTextEditorResourcesProvider,
101
+ multi: true,
102
+ },
103
+ ],
104
+ }]
105
+ }] });
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LXRleHQtZWRpdG9yLXJlc291cmNlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3NoYXJlZC9za3ktdGV4dC1lZGl0b3ItcmVzb3VyY2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUNMLDJCQUEyQixFQUUzQixhQUFhLEVBR2IscUJBQXFCLEdBQ3RCLE1BQU0sYUFBYSxDQUFDOztBQUVyQixNQUFNLFNBQVMsR0FBMEM7SUFDdkQsT0FBTyxFQUFFO1FBQ1AsK0NBQStDLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO1FBQ3BFLHNEQUFzRCxFQUFFO1lBQ3RELE9BQU8sRUFBRSxRQUFRO1NBQ2xCO1FBQ0QsaURBQWlELEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFO1FBQ3hFLHdEQUF3RCxFQUFFO1lBQ3hELE9BQU8sRUFBRSxRQUFRO1NBQ2xCO1FBQ0Qsb0RBQW9ELEVBQUU7WUFDcEQsT0FBTyxFQUFFLFdBQVc7U0FDckI7UUFDRCwyREFBMkQsRUFBRTtZQUMzRCxPQUFPLEVBQUUsUUFBUTtTQUNsQjtRQUNELHdEQUF3RCxFQUFFO1lBQ3hELE9BQU8sRUFBRSxlQUFlO1NBQ3pCO1FBQ0QsMkRBQTJELEVBQUU7WUFDM0QsT0FBTyxFQUFFLGtCQUFrQjtTQUM1QjtRQUNELDZDQUE2QyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtRQUNsRSxvREFBb0QsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUU7UUFDM0UsNkNBQTZDLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO1FBQ2xFLG9EQUFvRCxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRTtRQUMzRSw0Q0FBNEMsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7UUFDaEUsbURBQW1ELEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFO1FBQzFFLDZDQUE2QyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtRQUNsRSxvREFBb0QsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUU7UUFDM0UsOENBQThDLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFO1FBQ3BFLHFEQUFxRCxFQUFFO1lBQ3JELE9BQU8sRUFBRSxRQUFRO1NBQ2xCO1FBQ0QsbURBQW1ELEVBQUU7WUFDbkQsT0FBTyxFQUFFLFlBQVk7U0FDdEI7UUFDRCwwREFBMEQsRUFBRTtZQUMxRCxPQUFPLEVBQUUsUUFBUTtTQUNsQjtRQUNELG9EQUFvRCxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtRQUN6RSxzREFBc0QsRUFBRTtZQUN0RCxPQUFPLEVBQUUsUUFBUTtTQUNsQjtRQUNELHNEQUFzRCxFQUFFO1lBQ3RELE9BQU8sRUFBRSxvQkFBb0I7U0FDOUI7UUFDRCx3Q0FBd0MsRUFBRSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUU7UUFDcEUscUNBQXFDLEVBQUU7WUFDckMsT0FBTyxFQUFFLHlCQUF5QjtTQUNuQztRQUNELHNDQUFzQyxFQUFFO1lBQ3RDLE9BQU8sRUFBRSx1QkFBdUI7U0FDakM7UUFDRCxnREFBZ0QsRUFBRTtZQUNoRCxPQUFPLEVBQUUsZ0JBQWdCO1NBQzFCO1FBQ0QsNENBQTRDLEVBQUUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFO1FBQ3ZFLHVDQUF1QyxFQUFFLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRTtRQUNyRSx5Q0FBeUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUU7UUFDdEUsNkNBQTZDLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO1FBQ2xFLCtDQUErQyxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRTtLQUN2RTtDQUNGLENBQUM7QUFFRixNQUFNLE9BQU8sOEJBQThCO0lBQ2xDLFNBQVMsQ0FDZCxVQUE0QixFQUM1QixJQUFZO1FBRVosT0FBTyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQVdILE1BQU0sT0FBTyw0QkFBNEI7O3lIQUE1Qiw0QkFBNEI7MEhBQTVCLDRCQUE0QixZQVQ3QixhQUFhOzBIQVNaLDRCQUE0QixhQVI1QjtRQUNUO1lBQ0UsT0FBTyxFQUFFLDJCQUEyQjtZQUNwQyxRQUFRLEVBQUUsOEJBQThCO1lBQ3hDLEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRixZQVBTLGFBQWE7MkZBU1osNEJBQTRCO2tCQVZ4QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDeEIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSwyQkFBMkI7NEJBQ3BDLFFBQVEsRUFBRSw4QkFBOEI7NEJBQ3hDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBOT1RJQ0U6IERPIE5PVCBNT0RJRlkgVEhJUyBGSUxFIVxuICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSB3ZXJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5XG4gKiB0aGUgJ25nIGdlbmVyYXRlIEBza3l1eC9pMThuOmxpYi1yZXNvdXJjZXMtbW9kdWxlIGxpYi9tb2R1bGVzL3NoYXJlZC9za3ktdGV4dC1lZGl0b3InIHNjaGVtYXRpYy5cbiAqIFRvIHVwZGF0ZSB0aGlzIGZpbGUsIHNpbXBseSByZXJ1biB0aGUgY29tbWFuZC5cbiAqL1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFNLWV9MSUJfUkVTT1VSQ0VTX1BST1ZJREVSUyxcbiAgU2t5QXBwTG9jYWxlSW5mbyxcbiAgU2t5STE4bk1vZHVsZSxcbiAgU2t5TGliUmVzb3VyY2VzLFxuICBTa3lMaWJSZXNvdXJjZXNQcm92aWRlcixcbiAgZ2V0TGliU3RyaW5nRm9yTG9jYWxlLFxufSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmNvbnN0IFJFU09VUkNFUzogeyBbbG9jYWxlOiBzdHJpbmddOiBTa3lMaWJSZXNvdXJjZXMgfSA9IHtcbiAgJ0VOLVVTJzoge1xuICAgIHNreXV4X3RleHRfZWRpdG9yX2Zvcm1hdF9tZW51X2FjdGlvbl9ib2xkX2xhYmVsOiB7IG1lc3NhZ2U6ICdCb2xkJyB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX2Zvcm1hdF9tZW51X2FjdGlvbl9ib2xkX2tleV9zaG9ydGN1dDoge1xuICAgICAgbWVzc2FnZTogJ0N0cmwrQicsXG4gICAgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl9mb3JtYXRfbWVudV9hY3Rpb25faXRhbGljX2xhYmVsOiB7IG1lc3NhZ2U6ICdJdGFsaWMnIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfZm9ybWF0X21lbnVfYWN0aW9uX2l0YWxpY19rZXlfc2hvcnRjdXQ6IHtcbiAgICAgIG1lc3NhZ2U6ICdDdHJsK0knLFxuICAgIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfZm9ybWF0X21lbnVfYWN0aW9uX3VuZGVybGluZV9sYWJlbDoge1xuICAgICAgbWVzc2FnZTogJ1VuZGVybGluZScsXG4gICAgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl9mb3JtYXRfbWVudV9hY3Rpb25fdW5kZXJsaW5lX2tleV9zaG9ydGN1dDoge1xuICAgICAgbWVzc2FnZTogJ0N0cmwrVScsXG4gICAgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl9mb3JtYXRfbWVudV9hY3Rpb25fc3RyaWtldGhyb3VnaF9sYWJlbDoge1xuICAgICAgbWVzc2FnZTogJ1N0cmlrZXRocm91Z2gnLFxuICAgIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfZm9ybWF0X21lbnVfYWN0aW9uX2NsZWFyX2Zvcm1hdHRpbmdfbGFiZWw6IHtcbiAgICAgIG1lc3NhZ2U6ICdDbGVhciBmb3JtYXR0aW5nJyxcbiAgICB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fdW5kb19sYWJlbDogeyBtZXNzYWdlOiAnVW5kbycgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX3VuZG9fa2V5X3Nob3J0Y3V0OiB7IG1lc3NhZ2U6ICdDdHJsK1onIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl9yZWRvX2xhYmVsOiB7IG1lc3NhZ2U6ICdSZWRvJyB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fcmVkb19rZXlfc2hvcnRjdXQ6IHsgbWVzc2FnZTogJ0N0cmwrWScgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX2N1dF9sYWJlbDogeyBtZXNzYWdlOiAnQ3V0JyB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fY3V0X2tleV9zaG9ydGN1dDogeyBtZXNzYWdlOiAnQ3RybCtYJyB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fY29weV9sYWJlbDogeyBtZXNzYWdlOiAnQ29weScgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX2NvcHlfa2V5X3Nob3J0Y3V0OiB7IG1lc3NhZ2U6ICdDdHJsK0MnIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl9wYXN0ZV9sYWJlbDogeyBtZXNzYWdlOiAnUGFzdGUnIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl9wYXN0ZV9rZXlfc2hvcnRjdXQ6IHtcbiAgICAgIG1lc3NhZ2U6ICdDdHJsK1YnLFxuICAgIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl9zZWxlY3RfYWxsX2xhYmVsOiB7XG4gICAgICBtZXNzYWdlOiAnU2VsZWN0IGFsbCcsXG4gICAgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX3NlbGVjdF9hbGxfa2V5X3Nob3J0Y3V0OiB7XG4gICAgICBtZXNzYWdlOiAnQ3RybCtBJyxcbiAgICB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX21lbnViYXJfZHJvcGRvd25fYnV0dG9uX2VkaXRfbGFiZWw6IHsgbWVzc2FnZTogJ0VkaXQnIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfbWVudWJhcl9kcm9wZG93bl9idXR0b25fZm9ybWF0X2xhYmVsOiB7XG4gICAgICBtZXNzYWdlOiAnRm9ybWF0JyxcbiAgICB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX21lbnViYXJfZHJvcGRvd25fYnV0dG9uX2luc2VydF9sYWJlbDoge1xuICAgICAgbWVzc2FnZTogJ0luc2VydCBtZXJnZSBmaWVsZCcsXG4gICAgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl91cmxfbW9kYWxfaGVhZGVyX2xhYmVsOiB7IG1lc3NhZ2U6ICdDcmVhdGUgbGluaycgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl91cmxfbW9kYWxfdXJsX2xhYmVsOiB7XG4gICAgICBtZXNzYWdlOiAnRW50ZXIgYSBVUkwgdG8gbGluayB0bzonLFxuICAgIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX29wZW5fbGFiZWw6IHtcbiAgICAgIG1lc3NhZ2U6ICdXaGVyZSBzaG91bGQgaXQgb3Blbj8nLFxuICAgIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX2N1cnJlbnRfb3B0aW9uX2xhYmVsOiB7XG4gICAgICBtZXNzYWdlOiAnQ3VycmVudCB3aW5kb3cnLFxuICAgIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX25ld19vcHRpb25fbGFiZWw6IHsgbWVzc2FnZTogJ05ldyB3aW5kb3cnIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX2VtYWlsX2xhYmVsOiB7IG1lc3NhZ2U6ICdFbWFpbCBhZGRyZXNzJyB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX3VybF9tb2RhbF9zdWJqZWN0X2xhYmVsOiB7IG1lc3NhZ2U6ICdTdWJqZWN0IGxpbmUnIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX3NhdmVfYnV0dG9uX2xhYmVsOiB7IG1lc3NhZ2U6ICdTYXZlJyB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX3VybF9tb2RhbF9jYW5jZWxfYnV0dG9uX2xhYmVsOiB7IG1lc3NhZ2U6ICdDYW5jZWwnIH0sXG4gIH0sXG59O1xuXG5leHBvcnQgY2xhc3MgU2t5VGV4dEVkaXRvclJlc291cmNlc1Byb3ZpZGVyIGltcGxlbWVudHMgU2t5TGliUmVzb3VyY2VzUHJvdmlkZXIge1xuICBwdWJsaWMgZ2V0U3RyaW5nKFxuICAgIGxvY2FsZUluZm86IFNreUFwcExvY2FsZUluZm8sXG4gICAgbmFtZTogc3RyaW5nXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGdldExpYlN0cmluZ0ZvckxvY2FsZShSRVNPVVJDRVMsIGxvY2FsZUluZm8ubG9jYWxlLCBuYW1lKTtcbiAgfVxufVxuXG4vKipcbiAqIEltcG9ydCBpbnRvIGFueSBjb21wb25lbnQgbGlicmFyeSBtb2R1bGUgdGhhdCBuZWVkcyB0byB1c2UgcmVzb3VyY2Ugc3RyaW5ncy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgZXhwb3J0czogW1NreUkxOG5Nb2R1bGVdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBTS1lfTElCX1JFU09VUkNFU19QUk9WSURFUlMsXG4gICAgICB1c2VDbGFzczogU2t5VGV4dEVkaXRvclJlc291cmNlc1Byb3ZpZGVyLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGV4dEVkaXRvclJlc291cmNlc01vZHVsZSB7fVxuIl19
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @internal
3
+ */
4
+ export const FONT_LIST_DEFAULTS = [
5
+ {
6
+ name: 'Blackbaud Sans',
7
+ value: '"Blackbaud Sans", Arial, sans-serif',
8
+ },
9
+ {
10
+ name: 'Arial',
11
+ value: 'Arial',
12
+ },
13
+ {
14
+ name: 'Arial Black',
15
+ value: '"Arial Black"',
16
+ },
17
+ {
18
+ name: 'Courier New',
19
+ value: '"Courier New"',
20
+ },
21
+ {
22
+ name: 'Georgia',
23
+ value: 'Georgia, serif',
24
+ },
25
+ {
26
+ name: 'Tahoma',
27
+ value: 'Tahoma, Geneva, sans-serif',
28
+ },
29
+ {
30
+ name: 'Times New Roman',
31
+ value: '"Times New Roman"',
32
+ },
33
+ {
34
+ name: 'Trebuchet MS',
35
+ value: '"Trebuchet MS", sans-serif',
36
+ },
37
+ {
38
+ name: 'Verdana',
39
+ value: 'Verdana, Geneva, sans-serif',
40
+ },
41
+ ];
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9udC1saXN0LWRlZmF1bHRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RleHQtZWRpdG9yL3NyYy9saWIvbW9kdWxlcy90ZXh0LWVkaXRvci9kZWZhdWx0cy9mb250LWxpc3QtZGVmYXVsdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBd0I7SUFDckQ7UUFDRSxJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLEtBQUssRUFBRSxxQ0FBcUM7S0FDN0M7SUFDRDtRQUNFLElBQUksRUFBRSxPQUFPO1FBQ2IsS0FBSyxFQUFFLE9BQU87S0FDZjtJQUNEO1FBQ0UsSUFBSSxFQUFFLGFBQWE7UUFDbkIsS0FBSyxFQUFFLGVBQWU7S0FDdkI7SUFDRDtRQUNFLElBQUksRUFBRSxhQUFhO1FBQ25CLEtBQUssRUFBRSxlQUFlO0tBQ3ZCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsU0FBUztRQUNmLEtBQUssRUFBRSxnQkFBZ0I7S0FDeEI7SUFDRDtRQUNFLElBQUksRUFBRSxRQUFRO1FBQ2QsS0FBSyxFQUFFLDRCQUE0QjtLQUNwQztJQUNEO1FBQ0UsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixLQUFLLEVBQUUsbUJBQW1CO0tBQzNCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsY0FBYztRQUNwQixLQUFLLEVBQUUsNEJBQTRCO0tBQ3BDO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsU0FBUztRQUNmLEtBQUssRUFBRSw2QkFBNkI7S0FDckM7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5VGV4dEVkaXRvckZvbnQgfSBmcm9tICcuLi90eXBlcy9mb250LXN0YXRlJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IEZPTlRfTElTVF9ERUZBVUxUUzogU2t5VGV4dEVkaXRvckZvbnRbXSA9IFtcbiAge1xuICAgIG5hbWU6ICdCbGFja2JhdWQgU2FucycsXG4gICAgdmFsdWU6ICdcIkJsYWNrYmF1ZCBTYW5zXCIsIEFyaWFsLCBzYW5zLXNlcmlmJyxcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdBcmlhbCcsXG4gICAgdmFsdWU6ICdBcmlhbCcsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnQXJpYWwgQmxhY2snLFxuICAgIHZhbHVlOiAnXCJBcmlhbCBCbGFja1wiJyxcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdDb3VyaWVyIE5ldycsXG4gICAgdmFsdWU6ICdcIkNvdXJpZXIgTmV3XCInLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ0dlb3JnaWEnLFxuICAgIHZhbHVlOiAnR2VvcmdpYSwgc2VyaWYnLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ1RhaG9tYScsXG4gICAgdmFsdWU6ICdUYWhvbWEsIEdlbmV2YSwgc2Fucy1zZXJpZicsXG4gIH0sXG4gIHtcbiAgICBuYW1lOiAnVGltZXMgTmV3IFJvbWFuJyxcbiAgICB2YWx1ZTogJ1wiVGltZXMgTmV3IFJvbWFuXCInLFxuICB9LFxuICB7XG4gICAgbmFtZTogJ1RyZWJ1Y2hldCBNUycsXG4gICAgdmFsdWU6ICdcIlRyZWJ1Y2hldCBNU1wiLCBzYW5zLXNlcmlmJyxcbiAgfSxcbiAge1xuICAgIG5hbWU6ICdWZXJkYW5hJyxcbiAgICB2YWx1ZTogJ1ZlcmRhbmEsIEdlbmV2YSwgc2Fucy1zZXJpZicsXG4gIH0sXG5dO1xuIl19
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @internal
3
+ */
4
+ export const FONT_SIZE_LIST_DEFAULTS = [
5
+ 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22, 24, 26, 28, 36, 48,
6
+ ];
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9udC1zaXplLWxpc3QtZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL2RlZmF1bHRzL2ZvbnQtc2l6ZS1saXN0LWRlZmF1bHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQWE7SUFDL0MsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO0NBQ3BFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgRk9OVF9TSVpFX0xJU1RfREVGQVVMVFM6IG51bWJlcltdID0gW1xuICA2LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTgsIDIwLCAyMiwgMjQsIDI2LCAyOCwgMzYsIDQ4LFxuXTtcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @internal
3
+ */
4
+ export const MENU_DEFAULTS = ['edit', 'format'];
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1kZWZhdWx0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90ZXh0LWVkaXRvci9zcmMvbGliL21vZHVsZXMvdGV4dC1lZGl0b3IvZGVmYXVsdHMvbWVudS1kZWZhdWx0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBNEIsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lUZXh0RWRpdG9yTWVudVR5cGUgfSBmcm9tICcuLi90eXBlcy9tZW51LXR5cGUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgTUVOVV9ERUZBVUxUUzogU2t5VGV4dEVkaXRvck1lbnVUeXBlW10gPSBbJ2VkaXQnLCAnZm9ybWF0J107XG4iXX0=
@@ -0,0 +1,15 @@
1
+ import { FONT_LIST_DEFAULTS } from './font-list-defaults';
2
+ /**
3
+ * @internal
4
+ */
5
+ export const STYLE_STATE_DEFAULTS = {
6
+ backColor: 'rgba(0, 0, 0, 0)',
7
+ fontColor: '#000',
8
+ fontSize: 14,
9
+ font: FONT_LIST_DEFAULTS[0].value,
10
+ boldState: false,
11
+ italicState: false,
12
+ underlineState: false,
13
+ linkState: false,
14
+ };
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUtc3RhdGUtZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL2RlZmF1bHRzL3N0eWxlLXN0YXRlLWRlZmF1bHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTFEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQTRCO0lBQzNELFNBQVMsRUFBRSxrQkFBa0I7SUFDN0IsU0FBUyxFQUFFLE1BQU07SUFDakIsUUFBUSxFQUFFLEVBQUU7SUFDWixJQUFJLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztJQUNqQyxTQUFTLEVBQUUsS0FBSztJQUNoQixXQUFXLEVBQUUsS0FBSztJQUNsQixjQUFjLEVBQUUsS0FBSztJQUNyQixTQUFTLEVBQUUsS0FBSztDQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5VGV4dEVkaXRvclN0eWxlU3RhdGUgfSBmcm9tICcuLi90eXBlcy9zdHlsZS1zdGF0ZSc7XG5cbmltcG9ydCB7IEZPTlRfTElTVF9ERUZBVUxUUyB9IGZyb20gJy4vZm9udC1saXN0LWRlZmF1bHRzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFNUWUxFX1NUQVRFX0RFRkFVTFRTOiBTa3lUZXh0RWRpdG9yU3R5bGVTdGF0ZSA9IHtcbiAgYmFja0NvbG9yOiAncmdiYSgwLCAwLCAwLCAwKScsXG4gIGZvbnRDb2xvcjogJyMwMDAnLFxuICBmb250U2l6ZTogMTQsXG4gIGZvbnQ6IEZPTlRfTElTVF9ERUZBVUxUU1swXS52YWx1ZSxcbiAgYm9sZFN0YXRlOiBmYWxzZSxcbiAgaXRhbGljU3RhdGU6IGZhbHNlLFxuICB1bmRlcmxpbmVTdGF0ZTogZmFsc2UsXG4gIGxpbmtTdGF0ZTogZmFsc2UsXG59O1xuIl19
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @internal
3
+ */
4
+ export const TOOLBAR_ACTION_DEFAULTS = [
5
+ 'font-family',
6
+ 'font-size',
7
+ 'font-style',
8
+ 'color',
9
+ 'list',
10
+ 'link',
11
+ ];
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci1hY3Rpb24tZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL2RlZmF1bHRzL3Rvb2xiYXItYWN0aW9uLWRlZmF1bHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQXFDO0lBQ3ZFLGFBQWE7SUFDYixXQUFXO0lBQ1gsWUFBWTtJQUNaLE9BQU87SUFDUCxNQUFNO0lBQ04sTUFBTTtDQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lUZXh0RWRpdG9yVG9vbGJhckFjdGlvblR5cGUgfSBmcm9tICcuLi90eXBlcy90b29sYmFyLWFjdGlvbi10eXBlJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IFRPT0xCQVJfQUNUSU9OX0RFRkFVTFRTOiBTa3lUZXh0RWRpdG9yVG9vbGJhckFjdGlvblR5cGVbXSA9IFtcbiAgJ2ZvbnQtZmFtaWx5JyxcbiAgJ2ZvbnQtc2l6ZScsXG4gICdmb250LXN0eWxlJyxcbiAgJ2NvbG9yJyxcbiAgJ2xpc3QnLFxuICAnbGluaycsXG5dO1xuIl19
@@ -0,0 +1,191 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, } from '@angular/core';
2
+ import { SkyLibResourcesService } from '@skyux/i18n';
3
+ import { SkyDropdownMessageType } from '@skyux/popovers';
4
+ import { Subject, forkJoin } from 'rxjs';
5
+ import { take, takeUntil } from 'rxjs/operators';
6
+ import { SkyFormsUtility } from '../../shared/forms-utility';
7
+ import { SkyTextEditorAdapterService } from '../services/text-editor-adapter.service';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../services/text-editor-adapter.service";
10
+ import * as i2 from "@skyux/i18n";
11
+ import * as i3 from "@skyux/layout";
12
+ import * as i4 from "@skyux/popovers";
13
+ import * as i5 from "@angular/common";
14
+ import * as i6 from "@skyux/theme";
15
+ /**
16
+ * @internal
17
+ */
18
+ export class SkyTextEditorMenubarComponent {
19
+ constructor(adapterService, changeDetector, resources) {
20
+ this.adapterService = adapterService;
21
+ this.changeDetector = changeDetector;
22
+ this.resources = resources;
23
+ this.editorFocusStream = new Subject();
24
+ this.menus = [];
25
+ this.mergeFields = [];
26
+ this._disabled = false;
27
+ this.editDropdownStream = new Subject();
28
+ this.formatDropdownStream = new Subject();
29
+ this.mergeFieldDropdownStream = new Subject();
30
+ this.ngUnsubscribe = new Subject();
31
+ }
32
+ set disabled(value) {
33
+ const coercedValue = SkyFormsUtility.coerceBooleanProperty(value);
34
+ if (coercedValue !== this.disabled) {
35
+ this._disabled = coercedValue;
36
+ this.changeDetector.markForCheck();
37
+ }
38
+ }
39
+ get disabled() {
40
+ return this._disabled;
41
+ }
42
+ ngOnInit() {
43
+ this.editorFocusStream.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {
44
+ this.closeDropdowns();
45
+ });
46
+ forkJoin([
47
+ // Format menu strings.
48
+ this.resources.getString('skyux_text_editor_format_menu_action_bold_label'),
49
+ this.resources.getString('skyux_text_editor_format_menu_action_bold_key_shortcut'),
50
+ this.resources.getString('skyux_text_editor_format_menu_action_italic_label'),
51
+ this.resources.getString('skyux_text_editor_format_menu_action_italic_key_shortcut'),
52
+ this.resources.getString('skyux_text_editor_format_menu_action_underline_label'),
53
+ this.resources.getString('skyux_text_editor_format_menu_action_underline_key_shortcut'),
54
+ this.resources.getString('skyux_text_editor_format_menu_action_strikethrough_label'),
55
+ this.resources.getString('skyux_text_editor_format_menu_action_clear_formatting_label'),
56
+ // Edit menu string - start at index 8.
57
+ this.resources.getString('skyux_text_editor_edit_menu_action_undo_label'),
58
+ this.resources.getString('skyux_text_editor_edit_menu_action_undo_key_shortcut'),
59
+ this.resources.getString('skyux_text_editor_edit_menu_action_redo_label'),
60
+ this.resources.getString('skyux_text_editor_edit_menu_action_redo_key_shortcut'),
61
+ this.resources.getString('skyux_text_editor_edit_menu_action_cut_label'),
62
+ this.resources.getString('skyux_text_editor_edit_menu_action_cut_key_shortcut'),
63
+ this.resources.getString('skyux_text_editor_edit_menu_action_copy_label'),
64
+ this.resources.getString('skyux_text_editor_edit_menu_action_copy_key_shortcut'),
65
+ this.resources.getString('skyux_text_editor_edit_menu_action_paste_label'),
66
+ this.resources.getString('skyux_text_editor_edit_menu_action_paste_key_shortcut'),
67
+ this.resources.getString('skyux_text_editor_edit_menu_action_select_all_label'),
68
+ this.resources.getString('skyux_text_editor_edit_menu_action_select_all_key_shortcut'),
69
+ ])
70
+ .pipe(take(1))
71
+ .subscribe((resources) => {
72
+ this.formatItems = [
73
+ {
74
+ function: () => this.execCommand('bold'),
75
+ label: resources[0],
76
+ keyShortcut: resources[1],
77
+ },
78
+ {
79
+ function: () => this.execCommand('italic'),
80
+ label: resources[2],
81
+ keyShortcut: resources[3],
82
+ },
83
+ {
84
+ function: () => this.execCommand('underline'),
85
+ label: resources[4],
86
+ keyShortcut: resources[5],
87
+ },
88
+ {
89
+ function: () => this.execCommand('strikethrough'),
90
+ label: resources[6],
91
+ },
92
+ {
93
+ isDivider: true,
94
+ },
95
+ {
96
+ function: () => this.clearFormat(),
97
+ label: resources[7],
98
+ },
99
+ ];
100
+ this.editItems = [
101
+ {
102
+ function: () => this.execCommand('undo'),
103
+ label: resources[8],
104
+ keyShortcut: resources[9],
105
+ },
106
+ {
107
+ function: () => this.execCommand('redo'),
108
+ label: resources[10],
109
+ keyShortcut: resources[11],
110
+ },
111
+ {
112
+ isDivider: true,
113
+ },
114
+ {
115
+ function: () => this.execCommand('cut'),
116
+ label: resources[12],
117
+ keyShortcut: resources[13],
118
+ },
119
+ {
120
+ function: () => this.execCommand('copy'),
121
+ label: resources[14],
122
+ keyShortcut: resources[15],
123
+ },
124
+ {
125
+ function: () => this.execCommand('paste'),
126
+ label: resources[16],
127
+ keyShortcut: resources[17],
128
+ },
129
+ {
130
+ isDivider: true,
131
+ },
132
+ {
133
+ function: () => this.execCommand('selectAll'),
134
+ label: resources[18],
135
+ keyShortcut: resources[19],
136
+ },
137
+ ];
138
+ });
139
+ }
140
+ ngOnDestroy() {
141
+ this.ngUnsubscribe.next();
142
+ this.ngUnsubscribe.complete();
143
+ }
144
+ execCommand(command, value = '') {
145
+ this.adapterService.execCommand(this.editorId, {
146
+ command: command,
147
+ value: value,
148
+ });
149
+ }
150
+ insertMergeField(field) {
151
+ this.execCommand('insertHTML', '<img style="display: inline; cursor: grab;" data-fieldid="' +
152
+ field.id +
153
+ '" data-fielddisplay="' +
154
+ field.name +
155
+ '" src="' +
156
+ (field.previewImageUrl ||
157
+ this.adapterService.getMergeFieldDataURI(field.name)) +
158
+ '">');
159
+ }
160
+ closeDropdowns() {
161
+ this.editDropdownStream.next({ type: SkyDropdownMessageType.Close });
162
+ this.formatDropdownStream.next({ type: SkyDropdownMessageType.Close });
163
+ this.mergeFieldDropdownStream.next({ type: SkyDropdownMessageType.Close });
164
+ }
165
+ clearFormat() {
166
+ const currentSelection = this.adapterService.getCurrentSelection(this.editorId);
167
+ /* istanbul ignore else */
168
+ if (currentSelection.rangeCount > 0 &&
169
+ currentSelection.getRangeAt(0).toString().length <= 0) {
170
+ this.execCommand('selectAll');
171
+ }
172
+ this.execCommand('removeFormat');
173
+ }
174
+ }
175
+ SkyTextEditorMenubarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyTextEditorMenubarComponent, deps: [{ token: i1.SkyTextEditorAdapterService }, { token: i0.ChangeDetectorRef }, { token: i2.SkyLibResourcesService }], target: i0.ɵɵFactoryTarget.Component });
176
+ SkyTextEditorMenubarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: SkyTextEditorMenubarComponent, selector: "sky-text-editor-menubar", inputs: { editorFocusStream: "editorFocusStream", editorId: "editorId", menus: "menus", mergeFields: "mergeFields", disabled: "disabled" }, ngImport: i0, template: "<sky-toolbar-item\n *ngFor=\"let menu of menus\"\n class=\"sky-text-editor-menu\"\n [ngClass]=\"'sky-text-editor-menu-' + menu\"\n>\n <ng-container [ngSwitch]=\"menu\">\n <ng-container *ngSwitchCase=\"'edit'\">\n <sky-dropdown\n label=\"Edit menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"editDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_edit_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let editItem of editItems\">\n <button\n *ngIf=\"!editItem.isDivider\"\n type=\"button\"\n (click)=\"editItem.function()\"\n >\n {{ editItem.label }}\n <div\n *ngIf=\"editItem.keyShortcut\"\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ editItem.keyShortcut }}\n </div>\n </button>\n <div\n *ngIf=\"editItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'format'\">\n <sky-dropdown\n label=\"Format menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"formatDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_format_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let formatItem of formatItems\">\n <button\n *ngIf=\"!formatItem.isDivider\"\n type=\"button\"\n (click)=\"formatItem.function()\"\n >\n {{ formatItem.label }}\n <div\n *ngIf=\"formatItem.keyShortcut\"\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ formatItem.keyShortcut }}\n </div>\n </button>\n <div\n *ngIf=\"formatItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'merge-field'\">\n <sky-dropdown\n *ngIf=\"mergeFields && mergeFields.length > 0\"\n label=\"Insert merge field\"\n [disabled]=\"disabled\"\n [messageStream]=\"mergeFieldDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_insert_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let mergeField of mergeFields\">\n <button type=\"button\" (click)=\"insertMergeField(mergeField)\">\n {{ mergeField.name }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n </ng-container>\n</sky-toolbar-item>\n", styles: [".sky-text-editor-dropdown-item-divider{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:transparent;border-bottom:1px solid rgba(0,0,0,.1);cursor:default;filter:none}.sky-text-editor-menu-key-shortcut{float:right;margin-left:15px}\n"], components: [{ type: i3.λ39, selector: "sky-toolbar-item" }, { type: i4.λ3, selector: "sky-dropdown", inputs: ["buttonStyle", "buttonType", "disabled", "dismissOnBlur", "label", "horizontalAlignment", "messageStream", "title", "trigger"] }, { type: i4.λ2, selector: "sky-dropdown-button" }, { type: i4.λ4, selector: "sky-dropdown-menu", inputs: ["ariaLabelledBy", "ariaRole", "useNativeFocus"], outputs: ["menuChanges"] }, { type: i4.λ1, selector: "sky-dropdown-item", inputs: ["ariaRole"] }], directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }], pipes: { "skyLibResources": i2.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
177
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SkyTextEditorMenubarComponent, decorators: [{
178
+ type: Component,
179
+ args: [{ selector: 'sky-text-editor-menubar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<sky-toolbar-item\n *ngFor=\"let menu of menus\"\n class=\"sky-text-editor-menu\"\n [ngClass]=\"'sky-text-editor-menu-' + menu\"\n>\n <ng-container [ngSwitch]=\"menu\">\n <ng-container *ngSwitchCase=\"'edit'\">\n <sky-dropdown\n label=\"Edit menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"editDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_edit_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let editItem of editItems\">\n <button\n *ngIf=\"!editItem.isDivider\"\n type=\"button\"\n (click)=\"editItem.function()\"\n >\n {{ editItem.label }}\n <div\n *ngIf=\"editItem.keyShortcut\"\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ editItem.keyShortcut }}\n </div>\n </button>\n <div\n *ngIf=\"editItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'format'\">\n <sky-dropdown\n label=\"Format menu\"\n [disabled]=\"disabled\"\n [messageStream]=\"formatDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_format_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let formatItem of formatItems\">\n <button\n *ngIf=\"!formatItem.isDivider\"\n type=\"button\"\n (click)=\"formatItem.function()\"\n >\n {{ formatItem.label }}\n <div\n *ngIf=\"formatItem.keyShortcut\"\n class=\"sky-text-editor-menu-key-shortcut\"\n [skyThemeClass]=\"{\n 'sky-font-deemphasized': 'modern',\n 'sky-deemphasized': 'default'\n }\"\n >\n {{ formatItem.keyShortcut }}\n </div>\n </button>\n <div\n *ngIf=\"formatItem.isDivider\"\n class=\"sky-text-editor-dropdown-item-divider\"\n role=\"divider\"\n ></div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n <ng-container *ngSwitchCase=\"'merge-field'\">\n <sky-dropdown\n *ngIf=\"mergeFields && mergeFields.length > 0\"\n label=\"Insert merge field\"\n [disabled]=\"disabled\"\n [messageStream]=\"mergeFieldDropdownStream\"\n >\n <sky-dropdown-button>\n {{\n 'skyux_text_editor_menubar_dropdown_button_insert_label'\n | skyLibResources\n }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let mergeField of mergeFields\">\n <button type=\"button\" (click)=\"insertMergeField(mergeField)\">\n {{ mergeField.name }}\n </button>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </ng-container>\n </ng-container>\n</sky-toolbar-item>\n", styles: [".sky-text-editor-dropdown-item-divider{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:transparent;border-bottom:1px solid rgba(0,0,0,.1);cursor:default;filter:none}.sky-text-editor-menu-key-shortcut{float:right;margin-left:15px}\n"] }]
180
+ }], ctorParameters: function () { return [{ type: i1.SkyTextEditorAdapterService }, { type: i0.ChangeDetectorRef }, { type: i2.SkyLibResourcesService }]; }, propDecorators: { editorFocusStream: [{
181
+ type: Input
182
+ }], editorId: [{
183
+ type: Input
184
+ }], menus: [{
185
+ type: Input
186
+ }], mergeFields: [{
187
+ type: Input
188
+ }], disabled: [{
189
+ type: Input
190
+ }] } });
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL21lbnViYXIvdGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL21lbnViYXIvdGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRCxPQUFPLEVBQXNCLHNCQUFzQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7O0FBSXRGOztHQUVHO0FBT0gsTUFBTSxPQUFPLDZCQUE2QjtJQWtEeEMsWUFDVSxjQUEyQyxFQUMzQyxjQUFpQyxFQUNqQyxTQUFpQztRQUZqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBNkI7UUFDM0MsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQXdCO1FBbkRwQyxzQkFBaUIsR0FB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QUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsRUFDckQ7WUFDQSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNuQyxDQUFDOzswSEF6T1UsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsMk1DNUIxQyw4cEhBOEdBOzJGRGxGYSw2QkFBNkI7a0JBTnpDLFNBQVM7K0JBQ0UseUJBQXlCLG1CQUdsQix1QkFBdUIsQ0FBQyxNQUFNO3VMQUl4QyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlLLFFBQVE7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5pbXBvcnQgeyBTa3lEcm9wZG93bk1lc3NhZ2UsIFNreURyb3Bkb3duTWVzc2FnZVR5cGUgfSBmcm9tICdAc2t5dXgvcG9wb3ZlcnMnO1xuXG5pbXBvcnQgeyBTdWJqZWN0LCBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lGb3Jtc1V0aWxpdHkgfSBmcm9tICcuLi8uLi9zaGFyZWQvZm9ybXMtdXRpbGl0eSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90ZXh0LWVkaXRvci1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvck1lbnVUeXBlIH0gZnJvbSAnLi4vdHlwZXMvbWVudS10eXBlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JNZXJnZUZpZWxkIH0gZnJvbSAnLi4vdHlwZXMvdGV4dC1lZGl0b3ItbWVyZ2UtZmllbGQnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktdGV4dC1lZGl0b3ItbWVudWJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWVkaXRvci1tZW51YmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGV4dEVkaXRvck1lbnViYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlZGl0b3JGb2N1c1N0cmVhbSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGVkaXRvcklkOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIG1lbnVzOiBTa3lUZXh0RWRpdG9yTWVudVR5cGVbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtZXJnZUZpZWxkczogU2t5VGV4dEVkaXRvck1lcmdlRmllbGRbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjb2VyY2VkVmFsdWUgPSBTa3lGb3Jtc1V0aWxpdHkuY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICBpZiAoY29lcmNlZFZhbHVlICE9PSB0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZWRWYWx1ZTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBlZGl0RHJvcGRvd25TdHJlYW0gPSBuZXcgU3ViamVjdDxTa3lEcm9wZG93bk1lc3NhZ2U+KCk7XG5cbiAgcHVibGljIGVkaXRJdGVtczoge1xuICAgIGZ1bmN0aW9uPzogKCkgPT4gdm9pZDtcbiAgICBpc0RpdmlkZXI/OiBib29sZWFuO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGtleVNob3J0Y3V0Pzogc3RyaW5nO1xuICB9W107XG5cbiAgcHVibGljIGZvcm1hdERyb3Bkb3duU3RyZWFtID0gbmV3IFN1YmplY3Q8U2t5RHJvcGRvd25NZXNzYWdlPigpO1xuXG4gIHB1YmxpYyBmb3JtYXRJdGVtczoge1xuICAgIGZ1bmN0aW9uPzogKCkgPT4gdm9pZDtcbiAgICBpc0RpdmlkZXI/OiBib29sZWFuO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGtleVNob3J0Y3V0Pzogc3RyaW5nO1xuICB9W107XG5cbiAgcHVibGljIG1lcmdlRmllbGREcm9wZG93blN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreURyb3Bkb3duTWVzc2FnZT4oKTtcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWRhcHRlclNlcnZpY2U6IFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlc291cmNlczogU2t5TGliUmVzb3VyY2VzU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdG9yRm9jdXNTdHJlYW0ucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bnMoKTtcbiAgICB9KTtcblxuICAgIGZvcmtKb2luKFtcbiAgICAgIC8vIEZvcm1hdCBtZW51IHN0cmluZ3MuXG4gICAgICB0aGlzLnJlc291cmNlcy5nZXRTdHJpbmcoXG4gICAgICAgICdza3l1eF90ZXh0X2VkaXRvcl9mb3JtYXRfbWVudV9hY3Rpb25fYm9sZF9sYWJlbCdcbiAgICAgICksXG4gICAgICB0aGlzLnJlc291cmNlcy5nZXRTdHJpbmcoXG4gICAgICAgICdza3l1eF90ZXh0X2VkaXRvcl9mb3JtYXRfbWVudV9hY3Rpb25fYm9sZF9rZXlfc2hvcnRjdXQnXG4gICAgICApLFxuICAgICAgdGhpcy5yZXNvdXJjZXMuZ2V0U3RyaW5nKFxuICAgICAgICAnc2t5dXhfdGV4dF9lZGl0b3JfZm9ybWF0X21lbnVfYWN0aW9uX2l0YWxpY19sYWJlbCdcbiAgICAgICksXG4gICAgICB0aGlzLnJlc291cmNlcy5nZXRTdHJpbmcoXG4gICAgICAgICdza3l1eF90ZXh0X2VkaXRvcl9mb3JtYXRfbWVudV9hY3Rpb25faXRhbGljX2tleV9zaG9ydGN1dCdcbiAgICAgICksXG4gICAgICB0aGlzLnJlc291cmNlcy5nZXRTdHJpbmcoXG4gICAgICAgICdza3l1eF90ZXh0X2VkaXRvcl9mb3JtYXRfbWVudV9hY3Rpb25fdW5kZXJsaW5lX2xhYmVsJ1xuICAgICAgKSxcbiAgICAgIHRoaXMucmVzb3VyY2VzLmdldFN0cmluZyhcbiAgICAgICAgJ3NreXV4X3RleHRfZWRpdG9yX2Zvcm1hdF9tZW51X2FjdGlvbl91bmRlcmxpbmVfa2V5X3Nob3J0Y3V0J1xuICAgICAgKSxcbiAgICAgIHRoaXMucmVzb3VyY2VzLmdldFN0cmluZyhcbiAgICAgICAgJ3NreXV4X3RleHRfZWRpdG9yX2Zvcm1hdF9tZW51X2FjdGlvbl9zdHJpa2V0aHJvdWdoX2xhYmVsJ1xuICAgICAgKSxcbiAgICAgIHRoaXMucmVzb3VyY2VzLmdldFN0cmluZyhcbiAgICAgICAgJ3NreXV4X3RleHRfZWRpdG9yX2Zvcm1hdF9tZW51X2FjdGlvbl9jbGVhcl9mb3JtYXR0aW5nX2xhYmVsJ1xuICAgICAgKSxcblxuICAgICAgLy8gRWRpdCBtZW51IHN0cmluZyAtIHN0YXJ0IGF0IGluZGV4IDguXG4gICAgICB0aGlzLnJlc291cmNlcy5nZXRTdHJpbmcoJ3NreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fdW5kb19sYWJlbCcpLFxuICAgICAgdGhpcy5yZXNvdXJjZXMuZ2V0U3RyaW5nKFxuICAgICAgICAnc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl91bmRvX2tleV9zaG9ydGN1dCdcbiAgICAgICksXG4gICAgICB0aGlzLnJlc291cmNlcy5nZXRTdHJpbmcoJ3NreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fcmVkb19sYWJlbCcpLFxuICAgICAgdGhpcy5yZXNvdXJjZXMuZ2V0U3RyaW5nKFxuICAgICAgICAnc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl9yZWRvX2tleV9zaG9ydGN1dCdcbiAgICAgICksXG4gICAgICB0aGlzLnJlc291cmNlcy5nZXRTdHJpbmcoJ3NreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fY3V0X2xhYmVsJyksXG4gICAgICB0aGlzLnJlc291cmNlcy5nZXRTdHJpbmcoXG4gICAgICAgICdza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX2N1dF9rZXlfc2hvcnRjdXQnXG4gICAgICApLFxuICAgICAgdGhpcy5yZXNvdXJjZXMuZ2V0U3RyaW5nKCdza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX2NvcHlfbGFiZWwnKSxcbiAgICAgIHRoaXMucmVzb3VyY2VzLmdldFN0cmluZyhcbiAgICAgICAgJ3NreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fY29weV9rZXlfc2hvcnRjdXQnXG4gICAgICApLFxuICAgICAgdGhpcy5yZXNvdXJjZXMuZ2V0U3RyaW5nKFxuICAgICAgICAnc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl9wYXN0ZV9sYWJlbCdcbiAgICAgICksXG4gICAgICB0aGlzLnJlc291cmNlcy5nZXRTdHJpbmcoXG4gICAgICAgICdza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX3Bhc3RlX2tleV9zaG9ydGN1dCdcbiAgICAgICksXG4gICAgICB0aGlzLnJlc291cmNlcy5nZXRTdHJpbmcoXG4gICAgICAgICdza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX3NlbGVjdF9hbGxfbGFiZWwnXG4gICAgICApLFxuICAgICAgdGhpcy5yZXNvdXJjZXMuZ2V0U3RyaW5nKFxuICAgICAgICAnc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl9zZWxlY3RfYWxsX2tleV9zaG9ydGN1dCdcbiAgICAgICksXG4gICAgXSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChyZXNvdXJjZXMpID0+IHtcbiAgICAgICAgdGhpcy5mb3JtYXRJdGVtcyA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy5leGVjQ29tbWFuZCgnYm9sZCcpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlc1swXSxcbiAgICAgICAgICAgIGtleVNob3J0Y3V0OiByZXNvdXJjZXNbMV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy5leGVjQ29tbWFuZCgnaXRhbGljJyksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzWzJdLFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlc1szXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCd1bmRlcmxpbmUnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXNbNF0sXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzWzVdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnVuY3Rpb246ICgpID0+IHRoaXMuZXhlY0NvbW1hbmQoJ3N0cmlrZXRocm91Z2gnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXNbNl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpc0RpdmlkZXI6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy5jbGVhckZvcm1hdCgpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlc1s3XSxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLmVkaXRJdGVtcyA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy5leGVjQ29tbWFuZCgndW5kbycpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlc1s4XSxcbiAgICAgICAgICAgIGtleVNob3J0Y3V0OiByZXNvdXJjZXNbOV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy5leGVjQ29tbWFuZCgncmVkbycpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlc1sxMF0sXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzWzExXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlzRGl2aWRlcjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdjdXQnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXNbMTJdLFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlc1sxM10sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogKCkgPT4gdGhpcy5leGVjQ29tbWFuZCgnY29weScpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlc1sxNF0sXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzWzE1XSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdwYXN0ZScpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlc1sxNl0sXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzWzE3XSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlzRGl2aWRlcjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLmV4ZWNDb21tYW5kKCdzZWxlY3RBbGwnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXNbMThdLFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlc1sxOV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZXhlY0NvbW1hbmQoY29tbWFuZDogc3RyaW5nLCB2YWx1ZTogYW55ID0gJycpOiB2b2lkIHtcbiAgICB0aGlzLmFkYXB0ZXJTZXJ2aWNlLmV4ZWNDb21tYW5kKHRoaXMuZWRpdG9ySWQsIHtcbiAgICAgIGNvbW1hbmQ6IGNvbW1hbmQsXG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaW5zZXJ0TWVyZ2VGaWVsZChmaWVsZDogU2t5VGV4dEVkaXRvck1lcmdlRmllbGQpOiB2b2lkIHtcbiAgICB0aGlzLmV4ZWNDb21tYW5kKFxuICAgICAgJ2luc2VydEhUTUwnLFxuICAgICAgJzxpbWcgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmU7IGN1cnNvcjogZ3JhYjtcIiBkYXRhLWZpZWxkaWQ9XCInICtcbiAgICAgICAgZmllbGQuaWQgK1xuICAgICAgICAnXCIgZGF0YS1maWVsZGRpc3BsYXk9XCInICtcbiAgICAgICAgZmllbGQubmFtZSArXG4gICAgICAgICdcIiBzcmM9XCInICtcbiAgICAgICAgKGZpZWxkLnByZXZpZXdJbWFnZVVybCB8fFxuICAgICAgICAgIHRoaXMuYWRhcHRlclNlcnZpY2UuZ2V0TWVyZ2VGaWVsZERhdGFVUkkoZmllbGQubmFtZSkpICtcbiAgICAgICAgJ1wiPidcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZURyb3Bkb3ducygpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXREcm9wZG93blN0cmVhbS5uZXh0KHsgdHlwZTogU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZSB9KTtcbiAgICB0aGlzLmZvcm1hdERyb3Bkb3duU3RyZWFtLm5leHQoeyB0eXBlOiBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlIH0pO1xuICAgIHRoaXMubWVyZ2VGaWVsZERyb3Bkb3duU3RyZWFtLm5leHQoeyB0eXBlOiBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckZvcm1hdCgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID0gdGhpcy5hZGFwdGVyU2VydmljZS5nZXRDdXJyZW50U2VsZWN0aW9uKFxuICAgICAgdGhpcy5lZGl0b3JJZFxuICAgICk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoXG4gICAgICBjdXJyZW50U2VsZWN0aW9uLnJhbmdlQ291bnQgPiAwICYmXG4gICAgICBjdXJyZW50U2VsZWN0aW9uLmdldFJhbmdlQXQoMCkudG9TdHJpbmcoKS5sZW5ndGggPD0gMFxuICAgICkge1xuICAgICAgdGhpcy5leGVjQ29tbWFuZCgnc2VsZWN0QWxsJyk7XG4gICAgfVxuICAgIHRoaXMuZXhlY0NvbW1hbmQoJ3JlbW92ZUZvcm1hdCcpO1xuICB9XG59XG4iLCI8c2t5LXRvb2xiYXItaXRlbVxuICAqbmdGb3I9XCJsZXQgbWVudSBvZiBtZW51c1wiXG4gIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLW1lbnVcIlxuICBbbmdDbGFzc109XCInc2t5LXRleHQtZWRpdG9yLW1lbnUtJyArIG1lbnVcIlxuPlxuICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJtZW51XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2VkaXQnXCI+XG4gICAgICA8c2t5LWRyb3Bkb3duXG4gICAgICAgIGxhYmVsPVwiRWRpdCBtZW51XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW21lc3NhZ2VTdHJlYW1dPVwiZWRpdERyb3Bkb3duU3RyZWFtXCJcbiAgICAgID5cbiAgICAgICAgPHNreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgICdza3l1eF90ZXh0X2VkaXRvcl9tZW51YmFyX2Ryb3Bkb3duX2J1dHRvbl9lZGl0X2xhYmVsJ1xuICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgIH19XG4gICAgICAgIDwvc2t5LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgPHNreS1kcm9wZG93bi1tZW51PlxuICAgICAgICAgIDxza3ktZHJvcGRvd24taXRlbSAqbmdGb3I9XCJsZXQgZWRpdEl0ZW0gb2YgZWRpdEl0ZW1zXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWVkaXRJdGVtLmlzRGl2aWRlclwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdEl0ZW0uZnVuY3Rpb24oKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGVkaXRJdGVtLmxhYmVsIH19XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImVkaXRJdGVtLmtleVNob3J0Y3V0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNreS10ZXh0LWVkaXRvci1tZW51LWtleS1zaG9ydGN1dFwiXG4gICAgICAgICAgICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgJ3NreS1mb250LWRlZW1waGFzaXplZCc6ICdtb2Rlcm4nLFxuICAgICAgICAgICAgICAgICAgJ3NreS1kZWVtcGhhc2l6ZWQnOiAnZGVmYXVsdCdcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGVkaXRJdGVtLmtleVNob3J0Y3V0IH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwiZWRpdEl0ZW0uaXNEaXZpZGVyXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3ItZHJvcGRvd24taXRlbS1kaXZpZGVyXCJcbiAgICAgICAgICAgICAgcm9sZT1cImRpdmlkZXJcIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDwvc2t5LWRyb3Bkb3duLWl0ZW0+XG4gICAgICAgIDwvc2t5LWRyb3Bkb3duLW1lbnU+XG4gICAgICA8L3NreS1kcm9wZG93bj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZm9ybWF0J1wiPlxuICAgICAgPHNreS1kcm9wZG93blxuICAgICAgICBsYWJlbD1cIkZvcm1hdCBtZW51XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW21lc3NhZ2VTdHJlYW1dPVwiZm9ybWF0RHJvcGRvd25TdHJlYW1cIlxuICAgICAgPlxuICAgICAgICA8c2t5LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgICB7e1xuICAgICAgICAgICAgJ3NreXV4X3RleHRfZWRpdG9yX21lbnViYXJfZHJvcGRvd25fYnV0dG9uX2Zvcm1hdF9sYWJlbCdcbiAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICB9fVxuICAgICAgICA8L3NreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgIDxza3ktZHJvcGRvd24tbWVudT5cbiAgICAgICAgICA8c2t5LWRyb3Bkb3duLWl0ZW0gKm5nRm9yPVwibGV0IGZvcm1hdEl0ZW0gb2YgZm9ybWF0SXRlbXNcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCIhZm9ybWF0SXRlbS5pc0RpdmlkZXJcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1hdEl0ZW0uZnVuY3Rpb24oKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGZvcm1hdEl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9ybWF0SXRlbS5rZXlTaG9ydGN1dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3ItbWVudS1rZXktc2hvcnRjdXRcIlxuICAgICAgICAgICAgICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICdza3ktZm9udC1kZWVtcGhhc2l6ZWQnOiAnbW9kZXJuJyxcbiAgICAgICAgICAgICAgICAgICdza3ktZGVlbXBoYXNpemVkJzogJ2RlZmF1bHQnXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBmb3JtYXRJdGVtLmtleVNob3J0Y3V0IH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwiZm9ybWF0SXRlbS5pc0RpdmlkZXJcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNreS10ZXh0LWVkaXRvci1kcm9wZG93bi1pdGVtLWRpdmlkZXJcIlxuICAgICAgICAgICAgICByb2xlPVwiZGl2aWRlclwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgPC9za3ktZHJvcGRvd24taXRlbT5cbiAgICAgICAgPC9za3ktZHJvcGRvd24tbWVudT5cbiAgICAgIDwvc2t5LWRyb3Bkb3duPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtZXJnZS1maWVsZCdcIj5cbiAgICAgIDxza3ktZHJvcGRvd25cbiAgICAgICAgKm5nSWY9XCJtZXJnZUZpZWxkcyAmJiBtZXJnZUZpZWxkcy5sZW5ndGggPiAwXCJcbiAgICAgICAgbGFiZWw9XCJJbnNlcnQgbWVyZ2UgZmllbGRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbbWVzc2FnZVN0cmVhbV09XCJtZXJnZUZpZWxkRHJvcGRvd25TdHJlYW1cIlxuICAgICAgPlxuICAgICAgICA8c2t5LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgICB7e1xuICAgICAgICAgICAgJ3NreXV4X3RleHRfZWRpdG9yX21lbnViYXJfZHJvcGRvd25fYnV0dG9uX2luc2VydF9sYWJlbCdcbiAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICB9fVxuICAgICAgICA8L3NreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgIDxza3ktZHJvcGRvd24tbWVudT5cbiAgICAgICAgICA8c2t5LWRyb3Bkb3duLWl0ZW0gKm5nRm9yPVwibGV0IG1lcmdlRmllbGQgb2YgbWVyZ2VGaWVsZHNcIj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJpbnNlcnRNZXJnZUZpZWxkKG1lcmdlRmllbGQpXCI+XG4gICAgICAgICAgICAgIHt7IG1lcmdlRmllbGQubmFtZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9za3ktZHJvcGRvd24taXRlbT5cbiAgICAgICAgPC9za3ktZHJvcGRvd24tbWVudT5cbiAgICAgIDwvc2t5LWRyb3Bkb3duPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvc2t5LXRvb2xiYXItaXRlbT5cbiJdfQ==