@skyux/text-editor 8.7.0 → 9.0.0-alpha.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 (48) hide show
  1. package/esm2022/lib/modules/rich-text-display/rich-text-display.component.mjs +42 -0
  2. package/{esm2020 → esm2022}/lib/modules/rich-text-display/rich-text-display.module.mjs +5 -5
  3. package/{esm2020 → esm2022}/lib/modules/shared/sky-text-editor-resources.module.mjs +11 -11
  4. package/esm2022/lib/modules/text-editor/menubar/text-editor-menubar.component.mjs +197 -0
  5. package/esm2022/lib/modules/text-editor/services/text-editor-adapter.service.mjs +431 -0
  6. package/{esm2020 → esm2022}/lib/modules/text-editor/services/text-editor-selection.service.mjs +4 -4
  7. package/esm2022/lib/modules/text-editor/services/text-editor.service.mjs +59 -0
  8. package/esm2022/lib/modules/text-editor/services/text-sanitization.service.mjs +38 -0
  9. package/esm2022/lib/modules/text-editor/text-editor.component.mjs +410 -0
  10. package/{esm2020 → esm2022}/lib/modules/text-editor/text-editor.module.mjs +41 -41
  11. package/esm2022/lib/modules/text-editor/toolbar/text-editor-toolbar.component.mjs +207 -0
  12. package/esm2022/lib/modules/text-editor/url-modal/text-editor-url-modal.component.mjs +119 -0
  13. package/fesm2022/skyux-text-editor.mjs +1828 -0
  14. package/{fesm2020 → fesm2022}/skyux-text-editor.mjs.map +1 -1
  15. package/lib/modules/rich-text-display/rich-text-display.component.d.ts +1 -1
  16. package/lib/modules/text-editor/menubar/text-editor-menubar.component.d.ts +1 -1
  17. package/lib/modules/text-editor/text-editor.component.d.ts +1 -1
  18. package/lib/modules/text-editor/toolbar/text-editor-toolbar.component.d.ts +1 -1
  19. package/package.json +20 -26
  20. package/esm2020/lib/modules/rich-text-display/rich-text-display.component.mjs +0 -44
  21. package/esm2020/lib/modules/text-editor/menubar/text-editor-menubar.component.mjs +0 -197
  22. package/esm2020/lib/modules/text-editor/services/text-editor-adapter.service.mjs +0 -421
  23. package/esm2020/lib/modules/text-editor/services/text-editor.service.mjs +0 -64
  24. package/esm2020/lib/modules/text-editor/services/text-sanitization.service.mjs +0 -43
  25. package/esm2020/lib/modules/text-editor/text-editor.component.mjs +0 -395
  26. package/esm2020/lib/modules/text-editor/toolbar/text-editor-toolbar.component.mjs +0 -204
  27. package/esm2020/lib/modules/text-editor/url-modal/text-editor-url-modal.component.mjs +0 -118
  28. package/fesm2015/skyux-text-editor.mjs +0 -1793
  29. package/fesm2015/skyux-text-editor.mjs.map +0 -1
  30. package/fesm2020/skyux-text-editor.mjs +0 -1804
  31. /package/{esm2020 → esm2022}/index.mjs +0 -0
  32. /package/{esm2020 → esm2022}/lib/modules/shared/forms-utility.mjs +0 -0
  33. /package/{esm2020 → esm2022}/lib/modules/text-editor/defaults/font-list-defaults.mjs +0 -0
  34. /package/{esm2020 → esm2022}/lib/modules/text-editor/defaults/font-size-list-defaults.mjs +0 -0
  35. /package/{esm2020 → esm2022}/lib/modules/text-editor/defaults/menu-defaults.mjs +0 -0
  36. /package/{esm2020 → esm2022}/lib/modules/text-editor/defaults/style-state-defaults.mjs +0 -0
  37. /package/{esm2020 → esm2022}/lib/modules/text-editor/defaults/toolbar-action-defaults.mjs +0 -0
  38. /package/{esm2020 → esm2022}/lib/modules/text-editor/types/editor-command.mjs +0 -0
  39. /package/{esm2020 → esm2022}/lib/modules/text-editor/types/editor-setting.mjs +0 -0
  40. /package/{esm2020 → esm2022}/lib/modules/text-editor/types/font-state.mjs +0 -0
  41. /package/{esm2020 → esm2022}/lib/modules/text-editor/types/menu-type.mjs +0 -0
  42. /package/{esm2020 → esm2022}/lib/modules/text-editor/types/style-state.mjs +0 -0
  43. /package/{esm2020 → esm2022}/lib/modules/text-editor/types/text-editor-merge-field.mjs +0 -0
  44. /package/{esm2020 → esm2022}/lib/modules/text-editor/types/toolbar-action-type.mjs +0 -0
  45. /package/{esm2020 → esm2022}/lib/modules/text-editor/url-modal/text-editor-url-modal-context.mjs +0 -0
  46. /package/{esm2020 → esm2022}/lib/modules/text-editor/url-modal/text-editor-url-modal-result.mjs +0 -0
  47. /package/{esm2020 → esm2022}/lib/modules/text-editor/url-modal/text-editor-url-target.mjs +0 -0
  48. /package/{esm2020 → esm2022}/skyux-text-editor.mjs +0 -0
@@ -0,0 +1,42 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/platform-browser";
4
+ import * as i2 from "../text-editor/services/text-sanitization.service";
5
+ export class SkyRichTextDisplayComponent {
6
+ /**
7
+ * The rich text to display.
8
+ */
9
+ set richText(value) {
10
+ if (value) {
11
+ const cleaned = this.#sanitizationService.sanitize(value);
12
+ /* istanbul ignore else */
13
+ if (cleaned !== this.#_richText) {
14
+ this.#_richText = cleaned;
15
+ // Text has already been sanitized with DOMPurifier.
16
+ // Tell Angular to bypass its own internal sanitization.
17
+ this.sanitizedText = this.#sanitizer.bypassSecurityTrustHtml(cleaned);
18
+ }
19
+ }
20
+ else {
21
+ this.sanitizedText = '';
22
+ }
23
+ }
24
+ #_richText;
25
+ #sanitizer;
26
+ #sanitizationService;
27
+ constructor(sanitizer, sanitizationService) {
28
+ this.sanitizedText = '';
29
+ this.#_richText = '';
30
+ this.#sanitizer = sanitizer;
31
+ this.#sanitizationService = sanitizationService;
32
+ }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyRichTextDisplayComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.SkyTextSanitizationService }], target: i0.ɵɵFactoryTarget.Component }); }
34
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.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" }); }
35
+ }
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyRichTextDisplayComponent, decorators: [{
37
+ type: Component,
38
+ args: [{ selector: 'sky-rich-text-display', template: "<span class=\"sky-rich-text-display-text\" [innerHTML]=\"sanitizedText\"></span>\n" }]
39
+ }], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i2.SkyTextSanitizationService }]; }, propDecorators: { richText: [{
40
+ type: Input
41
+ }] } });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaC10ZXh0LWRpc3BsYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RleHQtZWRpdG9yL3NyYy9saWIvbW9kdWxlcy9yaWNoLXRleHQtZGlzcGxheS9yaWNoLXRleHQtZGlzcGxheS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3JpY2gtdGV4dC1kaXNwbGF5L3JpY2gtdGV4dC1kaXNwbGF5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBU2pELE1BQU0sT0FBTywyQkFBMkI7SUFDdEM7O09BRUc7SUFDSCxJQUNXLFFBQVEsQ0FBQyxLQUF5QjtRQUMzQyxJQUFJLEtBQUssRUFBRTtZQUNULE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUQsMEJBQTBCO1lBQzFCLElBQUksT0FBTyxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO2dCQUUxQixvREFBb0Q7Z0JBQ3BELHdEQUF3RDtnQkFDeEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3ZFO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUlELFVBQVUsQ0FBTTtJQUVoQixVQUFVLENBQWU7SUFDekIsb0JBQW9CLENBQTZCO0lBRWpELFlBQ0UsU0FBdUIsRUFDdkIsbUJBQStDO1FBVDFDLGtCQUFhLEdBQWEsRUFBRSxDQUFDO1FBRXBDLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFTZCxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsbUJBQW1CLENBQUM7SUFDbEQsQ0FBQzs4R0FsQ1UsMkJBQTJCO2tHQUEzQiwyQkFBMkIsK0ZDVHhDLG9GQUNBOzsyRkRRYSwyQkFBMkI7a0JBSnZDLFNBQVM7K0JBQ0UsdUJBQXVCOzRJQVF0QixRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQgeyBTa3lUZXh0U2FuaXRpemF0aW9uU2VydmljZSB9IGZyb20gJy4uL3RleHQtZWRpdG9yL3NlcnZpY2VzL3RleHQtc2FuaXRpemF0aW9uLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktcmljaC10ZXh0LWRpc3BsYXknLFxuICB0ZW1wbGF0ZVVybDogJy4vcmljaC10ZXh0LWRpc3BsYXkuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lSaWNoVGV4dERpc3BsYXlDb21wb25lbnQge1xuICAvKipcbiAgICogVGhlIHJpY2ggdGV4dCB0byBkaXNwbGF5LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCByaWNoVGV4dCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBjb25zdCBjbGVhbmVkID0gdGhpcy4jc2FuaXRpemF0aW9uU2VydmljZS5zYW5pdGl6ZSh2YWx1ZSk7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKGNsZWFuZWQgIT09IHRoaXMuI19yaWNoVGV4dCkge1xuICAgICAgICB0aGlzLiNfcmljaFRleHQgPSBjbGVhbmVkO1xuXG4gICAgICAgIC8vIFRleHQgaGFzIGFscmVhZHkgYmVlbiBzYW5pdGl6ZWQgd2l0aCBET01QdXJpZmllci5cbiAgICAgICAgLy8gVGVsbCBBbmd1bGFyIHRvIGJ5cGFzcyBpdHMgb3duIGludGVybmFsIHNhbml0aXphdGlvbi5cbiAgICAgICAgdGhpcy5zYW5pdGl6ZWRUZXh0ID0gdGhpcy4jc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGNsZWFuZWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNhbml0aXplZFRleHQgPSAnJztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2FuaXRpemVkVGV4dDogU2FmZUh0bWwgPSAnJztcblxuICAjX3JpY2hUZXh0ID0gJyc7XG5cbiAgI3Nhbml0aXplcjogRG9tU2FuaXRpemVyO1xuICAjc2FuaXRpemF0aW9uU2VydmljZTogU2t5VGV4dFNhbml0aXphdGlvblNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgc2FuaXRpemF0aW9uU2VydmljZTogU2t5VGV4dFNhbml0aXphdGlvblNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy4jc2FuaXRpemVyID0gc2FuaXRpemVyO1xuICAgIHRoaXMuI3Nhbml0aXphdGlvblNlcnZpY2UgPSBzYW5pdGl6YXRpb25TZXJ2aWNlO1xuICB9XG59XG4iLCI8c3BhbiBjbGFzcz1cInNreS1yaWNoLXRleHQtZGlzcGxheS10ZXh0XCIgW2lubmVySFRNTF09XCJzYW5pdGl6ZWRUZXh0XCI+PC9zcGFuPlxuIl19
@@ -3,11 +3,11 @@ import { NgModule } from '@angular/core';
3
3
  import { SkyRichTextDisplayComponent } from './rich-text-display.component';
4
4
  import * as i0 from "@angular/core";
5
5
  export class SkyRichTextDisplayModule {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyRichTextDisplayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyRichTextDisplayModule, declarations: [SkyRichTextDisplayComponent], imports: [CommonModule], exports: [SkyRichTextDisplayComponent] }); }
8
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyRichTextDisplayModule, imports: [CommonModule] }); }
6
9
  }
7
- SkyRichTextDisplayModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyRichTextDisplayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
- SkyRichTextDisplayModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyRichTextDisplayModule, declarations: [SkyRichTextDisplayComponent], imports: [CommonModule], exports: [SkyRichTextDisplayComponent] });
9
- SkyRichTextDisplayModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyRichTextDisplayModule, imports: [CommonModule] });
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyRichTextDisplayModule, decorators: [{
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyRichTextDisplayModule, decorators: [{
11
11
  type: NgModule,
12
12
  args: [{
13
13
  imports: [CommonModule],
@@ -15,4 +15,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
15
15
  declarations: [SkyRichTextDisplayComponent],
16
16
  }]
17
17
  }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaC10ZXh0LWRpc3BsYXkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RleHQtZWRpdG9yL3NyYy9saWIvbW9kdWxlcy9yaWNoLXRleHQtZGlzcGxheS9yaWNoLXRleHQtZGlzcGxheS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBTzVFLE1BQU0sT0FBTyx3QkFBd0I7O3FIQUF4Qix3QkFBd0I7c0hBQXhCLHdCQUF3QixpQkFGcEIsMkJBQTJCLGFBRmhDLFlBQVksYUFDWiwyQkFBMkI7c0hBRzFCLHdCQUF3QixZQUp6QixZQUFZOzJGQUlYLHdCQUF3QjtrQkFMcEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLDJCQUEyQixDQUFDO29CQUN0QyxZQUFZLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztpQkFDNUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5UmljaFRleHREaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi9yaWNoLXRleHQtZGlzcGxheS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZXhwb3J0czogW1NreVJpY2hUZXh0RGlzcGxheUNvbXBvbmVudF0sXG4gIGRlY2xhcmF0aW9uczogW1NreVJpY2hUZXh0RGlzcGxheUNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVJpY2hUZXh0RGlzcGxheU1vZHVsZSB7fVxuIl19
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaC10ZXh0LWRpc3BsYXkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3RleHQtZWRpdG9yL3NyYy9saWIvbW9kdWxlcy9yaWNoLXRleHQtZGlzcGxheS9yaWNoLXRleHQtZGlzcGxheS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBTzVFLE1BQU0sT0FBTyx3QkFBd0I7OEdBQXhCLHdCQUF3QjsrR0FBeEIsd0JBQXdCLGlCQUZwQiwyQkFBMkIsYUFGaEMsWUFBWSxhQUNaLDJCQUEyQjsrR0FHMUIsd0JBQXdCLFlBSnpCLFlBQVk7OzJGQUlYLHdCQUF3QjtrQkFMcEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLDJCQUEyQixDQUFDO29CQUN0QyxZQUFZLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztpQkFDNUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5UmljaFRleHREaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi9yaWNoLXRleHQtZGlzcGxheS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZXhwb3J0czogW1NreVJpY2hUZXh0RGlzcGxheUNvbXBvbmVudF0sXG4gIGRlY2xhcmF0aW9uczogW1NreVJpY2hUZXh0RGlzcGxheUNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVJpY2hUZXh0RGlzcGxheU1vZHVsZSB7fVxuIl19
@@ -80,17 +80,17 @@ export class SkyTextEditorResourcesProvider {
80
80
  * Import into any component library module that needs to use resource strings.
81
81
  */
82
82
  export class SkyTextEditorResourcesModule {
83
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyTextEditorResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
84
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyTextEditorResourcesModule, exports: [SkyI18nModule] }); }
85
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyTextEditorResourcesModule, providers: [
86
+ {
87
+ provide: SKY_LIB_RESOURCES_PROVIDERS,
88
+ useClass: SkyTextEditorResourcesProvider,
89
+ multi: true,
90
+ },
91
+ ], imports: [SkyI18nModule] }); }
83
92
  }
84
- SkyTextEditorResourcesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTextEditorResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
85
- SkyTextEditorResourcesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyTextEditorResourcesModule, exports: [SkyI18nModule] });
86
- SkyTextEditorResourcesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", 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: "15.2.9", ngImport: i0, type: SkyTextEditorResourcesModule, decorators: [{
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyTextEditorResourcesModule, decorators: [{
94
94
  type: NgModule,
95
95
  args: [{
96
96
  exports: [SkyI18nModule],
@@ -103,4 +103,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
103
103
  ],
104
104
  }]
105
105
  }] });
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LXRleHQtZWRpdG9yLXJlc291cmNlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3NoYXJlZC9za3ktdGV4dC1lZGl0b3ItcmVzb3VyY2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUNMLDJCQUEyQixFQUUzQixhQUFhLEVBR2IscUJBQXFCLEdBQ3RCLE1BQU0sYUFBYSxDQUFDOztBQUVyQixNQUFNLFNBQVMsR0FBMEM7SUFDdkQsT0FBTyxFQUFFO1FBQ1AsK0NBQStDLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO1FBQ3BFLHNEQUFzRCxFQUFFO1lBQ3RELE9BQU8sRUFBRSxRQUFRO1NBQ2xCO1FBQ0QsaURBQWlELEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFO1FBQ3hFLHdEQUF3RCxFQUFFO1lBQ3hELE9BQU8sRUFBRSxRQUFRO1NBQ2xCO1FBQ0Qsb0RBQW9ELEVBQUU7WUFDcEQsT0FBTyxFQUFFLFdBQVc7U0FDckI7UUFDRCwyREFBMkQsRUFBRTtZQUMzRCxPQUFPLEVBQUUsUUFBUTtTQUNsQjtRQUNELHdEQUF3RCxFQUFFO1lBQ3hELE9BQU8sRUFBRSxlQUFlO1NBQ3pCO1FBQ0QsMkRBQTJELEVBQUU7WUFDM0QsT0FBTyxFQUFFLGtCQUFrQjtTQUM1QjtRQUNELDZDQUE2QyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtRQUNsRSxvREFBb0QsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUU7UUFDM0UsNkNBQTZDLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO1FBQ2xFLG9EQUFvRCxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRTtRQUMzRSw0Q0FBNEMsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7UUFDaEUsbURBQW1ELEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFO1FBQzFFLDZDQUE2QyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtRQUNsRSxvREFBb0QsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUU7UUFDM0UsOENBQThDLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFO1FBQ3BFLHFEQUFxRCxFQUFFO1lBQ3JELE9BQU8sRUFBRSxRQUFRO1NBQ2xCO1FBQ0QsbURBQW1ELEVBQUU7WUFDbkQsT0FBTyxFQUFFLFlBQVk7U0FDdEI7UUFDRCwwREFBMEQsRUFBRTtZQUMxRCxPQUFPLEVBQUUsUUFBUTtTQUNsQjtRQUNELG9EQUFvRCxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtRQUN6RSxzREFBc0QsRUFBRTtZQUN0RCxPQUFPLEVBQUUsUUFBUTtTQUNsQjtRQUNELHNEQUFzRCxFQUFFO1lBQ3RELE9BQU8sRUFBRSxvQkFBb0I7U0FDOUI7UUFDRCx3Q0FBd0MsRUFBRSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUU7UUFDcEUscUNBQXFDLEVBQUU7WUFDckMsT0FBTyxFQUFFLHlCQUF5QjtTQUNuQztRQUNELHNDQUFzQyxFQUFFO1lBQ3RDLE9BQU8sRUFBRSx1QkFBdUI7U0FDakM7UUFDRCxnREFBZ0QsRUFBRTtZQUNoRCxPQUFPLEVBQUUsZ0JBQWdCO1NBQzFCO1FBQ0QsNENBQTRDLEVBQUUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFO1FBQ3ZFLHVDQUF1QyxFQUFFLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRTtRQUNyRSx5Q0FBeUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUU7UUFDdEUsNkNBQTZDLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO1FBQ2xFLCtDQUErQyxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRTtLQUN2RTtDQUNGLENBQUM7QUFFRixNQUFNLE9BQU8sOEJBQThCO0lBQ2xDLFNBQVMsQ0FDZCxVQUE0QixFQUM1QixJQUFZO1FBRVosT0FBTyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQVdILE1BQU0sT0FBTyw0QkFBNEI7O3lIQUE1Qiw0QkFBNEI7MEhBQTVCLDRCQUE0QixZQVQ3QixhQUFhOzBIQVNaLDRCQUE0QixhQVI1QjtRQUNUO1lBQ0UsT0FBTyxFQUFFLDJCQUEyQjtZQUNwQyxRQUFRLEVBQUUsOEJBQThCO1lBQ3hDLEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRixZQVBTLGFBQWE7MkZBU1osNEJBQTRCO2tCQVZ4QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDeEIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSwyQkFBMkI7NEJBQ3BDLFFBQVEsRUFBRSw4QkFBOEI7NEJBQ3hDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBOT1RJQ0U6IERPIE5PVCBNT0RJRlkgVEhJUyBGSUxFIVxuICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSB3ZXJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5XG4gKiB0aGUgJ25nIGdlbmVyYXRlIEBza3l1eC9pMThuOmxpYi1yZXNvdXJjZXMtbW9kdWxlIGxpYi9tb2R1bGVzL3NoYXJlZC9za3ktdGV4dC1lZGl0b3InIHNjaGVtYXRpYy5cbiAqIFRvIHVwZGF0ZSB0aGlzIGZpbGUsIHNpbXBseSByZXJ1biB0aGUgY29tbWFuZC5cbiAqL1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFNLWV9MSUJfUkVTT1VSQ0VTX1BST1ZJREVSUyxcbiAgU2t5QXBwTG9jYWxlSW5mbyxcbiAgU2t5STE4bk1vZHVsZSxcbiAgU2t5TGliUmVzb3VyY2VzLFxuICBTa3lMaWJSZXNvdXJjZXNQcm92aWRlcixcbiAgZ2V0TGliU3RyaW5nRm9yTG9jYWxlLFxufSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmNvbnN0IFJFU09VUkNFUzogeyBbbG9jYWxlOiBzdHJpbmddOiBTa3lMaWJSZXNvdXJjZXMgfSA9IHtcbiAgJ0VOLVVTJzoge1xuICAgIHNreXV4X3RleHRfZWRpdG9yX2Zvcm1hdF9tZW51X2FjdGlvbl9ib2xkX2xhYmVsOiB7IG1lc3NhZ2U6ICdCb2xkJyB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX2Zvcm1hdF9tZW51X2FjdGlvbl9ib2xkX2tleV9zaG9ydGN1dDoge1xuICAgICAgbWVzc2FnZTogJ0N0cmwrQicsXG4gICAgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl9mb3JtYXRfbWVudV9hY3Rpb25faXRhbGljX2xhYmVsOiB7IG1lc3NhZ2U6ICdJdGFsaWMnIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfZm9ybWF0X21lbnVfYWN0aW9uX2l0YWxpY19rZXlfc2hvcnRjdXQ6IHtcbiAgICAgIG1lc3NhZ2U6ICdDdHJsK0knLFxuICAgIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfZm9ybWF0X21lbnVfYWN0aW9uX3VuZGVybGluZV9sYWJlbDoge1xuICAgICAgbWVzc2FnZTogJ1VuZGVybGluZScsXG4gICAgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl9mb3JtYXRfbWVudV9hY3Rpb25fdW5kZXJsaW5lX2tleV9zaG9ydGN1dDoge1xuICAgICAgbWVzc2FnZTogJ0N0cmwrVScsXG4gICAgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl9mb3JtYXRfbWVudV9hY3Rpb25fc3RyaWtldGhyb3VnaF9sYWJlbDoge1xuICAgICAgbWVzc2FnZTogJ1N0cmlrZXRocm91Z2gnLFxuICAgIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfZm9ybWF0X21lbnVfYWN0aW9uX2NsZWFyX2Zvcm1hdHRpbmdfbGFiZWw6IHtcbiAgICAgIG1lc3NhZ2U6ICdDbGVhciBmb3JtYXR0aW5nJyxcbiAgICB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fdW5kb19sYWJlbDogeyBtZXNzYWdlOiAnVW5kbycgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX3VuZG9fa2V5X3Nob3J0Y3V0OiB7IG1lc3NhZ2U6ICdDdHJsK1onIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl9yZWRvX2xhYmVsOiB7IG1lc3NhZ2U6ICdSZWRvJyB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fcmVkb19rZXlfc2hvcnRjdXQ6IHsgbWVzc2FnZTogJ0N0cmwrWScgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX2N1dF9sYWJlbDogeyBtZXNzYWdlOiAnQ3V0JyB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fY3V0X2tleV9zaG9ydGN1dDogeyBtZXNzYWdlOiAnQ3RybCtYJyB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fY29weV9sYWJlbDogeyBtZXNzYWdlOiAnQ29weScgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX2NvcHlfa2V5X3Nob3J0Y3V0OiB7IG1lc3NhZ2U6ICdDdHJsK0MnIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl9wYXN0ZV9sYWJlbDogeyBtZXNzYWdlOiAnUGFzdGUnIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl9wYXN0ZV9rZXlfc2hvcnRjdXQ6IHtcbiAgICAgIG1lc3NhZ2U6ICdDdHJsK1YnLFxuICAgIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl9zZWxlY3RfYWxsX2xhYmVsOiB7XG4gICAgICBtZXNzYWdlOiAnU2VsZWN0IGFsbCcsXG4gICAgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX3NlbGVjdF9hbGxfa2V5X3Nob3J0Y3V0OiB7XG4gICAgICBtZXNzYWdlOiAnQ3RybCtBJyxcbiAgICB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX21lbnViYXJfZHJvcGRvd25fYnV0dG9uX2VkaXRfbGFiZWw6IHsgbWVzc2FnZTogJ0VkaXQnIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfbWVudWJhcl9kcm9wZG93bl9idXR0b25fZm9ybWF0X2xhYmVsOiB7XG4gICAgICBtZXNzYWdlOiAnRm9ybWF0JyxcbiAgICB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX21lbnViYXJfZHJvcGRvd25fYnV0dG9uX2luc2VydF9sYWJlbDoge1xuICAgICAgbWVzc2FnZTogJ0luc2VydCBtZXJnZSBmaWVsZCcsXG4gICAgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl91cmxfbW9kYWxfaGVhZGVyX2xhYmVsOiB7IG1lc3NhZ2U6ICdDcmVhdGUgbGluaycgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl91cmxfbW9kYWxfdXJsX2xhYmVsOiB7XG4gICAgICBtZXNzYWdlOiAnRW50ZXIgYSBVUkwgdG8gbGluayB0bzonLFxuICAgIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX29wZW5fbGFiZWw6IHtcbiAgICAgIG1lc3NhZ2U6ICdXaGVyZSBzaG91bGQgaXQgb3Blbj8nLFxuICAgIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX2N1cnJlbnRfb3B0aW9uX2xhYmVsOiB7XG4gICAgICBtZXNzYWdlOiAnQ3VycmVudCB3aW5kb3cnLFxuICAgIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX25ld19vcHRpb25fbGFiZWw6IHsgbWVzc2FnZTogJ05ldyB3aW5kb3cnIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX2VtYWlsX2xhYmVsOiB7IG1lc3NhZ2U6ICdFbWFpbCBhZGRyZXNzJyB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX3VybF9tb2RhbF9zdWJqZWN0X2xhYmVsOiB7IG1lc3NhZ2U6ICdTdWJqZWN0IGxpbmUnIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX3NhdmVfYnV0dG9uX2xhYmVsOiB7IG1lc3NhZ2U6ICdTYXZlJyB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX3VybF9tb2RhbF9jYW5jZWxfYnV0dG9uX2xhYmVsOiB7IG1lc3NhZ2U6ICdDYW5jZWwnIH0sXG4gIH0sXG59O1xuXG5leHBvcnQgY2xhc3MgU2t5VGV4dEVkaXRvclJlc291cmNlc1Byb3ZpZGVyIGltcGxlbWVudHMgU2t5TGliUmVzb3VyY2VzUHJvdmlkZXIge1xuICBwdWJsaWMgZ2V0U3RyaW5nKFxuICAgIGxvY2FsZUluZm86IFNreUFwcExvY2FsZUluZm8sXG4gICAgbmFtZTogc3RyaW5nXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGdldExpYlN0cmluZ0ZvckxvY2FsZShSRVNPVVJDRVMsIGxvY2FsZUluZm8ubG9jYWxlLCBuYW1lKTtcbiAgfVxufVxuXG4vKipcbiAqIEltcG9ydCBpbnRvIGFueSBjb21wb25lbnQgbGlicmFyeSBtb2R1bGUgdGhhdCBuZWVkcyB0byB1c2UgcmVzb3VyY2Ugc3RyaW5ncy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgZXhwb3J0czogW1NreUkxOG5Nb2R1bGVdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBTS1lfTElCX1JFU09VUkNFU19QUk9WSURFUlMsXG4gICAgICB1c2VDbGFzczogU2t5VGV4dEVkaXRvclJlc291cmNlc1Byb3ZpZGVyLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGV4dEVkaXRvclJlc291cmNlc01vZHVsZSB7fVxuIl19
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LXRleHQtZWRpdG9yLXJlc291cmNlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3NoYXJlZC9za3ktdGV4dC1lZGl0b3ItcmVzb3VyY2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUNMLDJCQUEyQixFQUUzQixhQUFhLEVBR2IscUJBQXFCLEdBQ3RCLE1BQU0sYUFBYSxDQUFDOztBQUVyQixNQUFNLFNBQVMsR0FBMEM7SUFDdkQsT0FBTyxFQUFFO1FBQ1AsK0NBQStDLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO1FBQ3BFLHNEQUFzRCxFQUFFO1lBQ3RELE9BQU8sRUFBRSxRQUFRO1NBQ2xCO1FBQ0QsaURBQWlELEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFO1FBQ3hFLHdEQUF3RCxFQUFFO1lBQ3hELE9BQU8sRUFBRSxRQUFRO1NBQ2xCO1FBQ0Qsb0RBQW9ELEVBQUU7WUFDcEQsT0FBTyxFQUFFLFdBQVc7U0FDckI7UUFDRCwyREFBMkQsRUFBRTtZQUMzRCxPQUFPLEVBQUUsUUFBUTtTQUNsQjtRQUNELHdEQUF3RCxFQUFFO1lBQ3hELE9BQU8sRUFBRSxlQUFlO1NBQ3pCO1FBQ0QsMkRBQTJELEVBQUU7WUFDM0QsT0FBTyxFQUFFLGtCQUFrQjtTQUM1QjtRQUNELDZDQUE2QyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtRQUNsRSxvREFBb0QsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUU7UUFDM0UsNkNBQTZDLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO1FBQ2xFLG9EQUFvRCxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRTtRQUMzRSw0Q0FBNEMsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7UUFDaEUsbURBQW1ELEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFO1FBQzFFLDZDQUE2QyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtRQUNsRSxvREFBb0QsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUU7UUFDM0UsOENBQThDLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFO1FBQ3BFLHFEQUFxRCxFQUFFO1lBQ3JELE9BQU8sRUFBRSxRQUFRO1NBQ2xCO1FBQ0QsbURBQW1ELEVBQUU7WUFDbkQsT0FBTyxFQUFFLFlBQVk7U0FDdEI7UUFDRCwwREFBMEQsRUFBRTtZQUMxRCxPQUFPLEVBQUUsUUFBUTtTQUNsQjtRQUNELG9EQUFvRCxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtRQUN6RSxzREFBc0QsRUFBRTtZQUN0RCxPQUFPLEVBQUUsUUFBUTtTQUNsQjtRQUNELHNEQUFzRCxFQUFFO1lBQ3RELE9BQU8sRUFBRSxvQkFBb0I7U0FDOUI7UUFDRCx3Q0FBd0MsRUFBRSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUU7UUFDcEUscUNBQXFDLEVBQUU7WUFDckMsT0FBTyxFQUFFLHlCQUF5QjtTQUNuQztRQUNELHNDQUFzQyxFQUFFO1lBQ3RDLE9BQU8sRUFBRSx1QkFBdUI7U0FDakM7UUFDRCxnREFBZ0QsRUFBRTtZQUNoRCxPQUFPLEVBQUUsZ0JBQWdCO1NBQzFCO1FBQ0QsNENBQTRDLEVBQUUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFO1FBQ3ZFLHVDQUF1QyxFQUFFLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRTtRQUNyRSx5Q0FBeUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUU7UUFDdEUsNkNBQTZDLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO1FBQ2xFLCtDQUErQyxFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRTtLQUN2RTtDQUNGLENBQUM7QUFFRixNQUFNLE9BQU8sOEJBQThCO0lBQ2xDLFNBQVMsQ0FDZCxVQUE0QixFQUM1QixJQUFZO1FBRVosT0FBTyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQVdILE1BQU0sT0FBTyw0QkFBNEI7OEdBQTVCLDRCQUE0QjsrR0FBNUIsNEJBQTRCLFlBVDdCLGFBQWE7K0dBU1osNEJBQTRCLGFBUjVCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLDJCQUEyQjtnQkFDcEMsUUFBUSxFQUFFLDhCQUE4QjtnQkFDeEMsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLFlBUFMsYUFBYTs7MkZBU1osNEJBQTRCO2tCQVZ4QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDeEIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSwyQkFBMkI7NEJBQ3BDLFFBQVEsRUFBRSw4QkFBOEI7NEJBQ3hDLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBOT1RJQ0U6IERPIE5PVCBNT0RJRlkgVEhJUyBGSUxFIVxuICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSB3ZXJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5XG4gKiB0aGUgJ25nIGdlbmVyYXRlIEBza3l1eC9pMThuOmxpYi1yZXNvdXJjZXMtbW9kdWxlIGxpYi9tb2R1bGVzL3NoYXJlZC9za3ktdGV4dC1lZGl0b3InIHNjaGVtYXRpYy5cbiAqIFRvIHVwZGF0ZSB0aGlzIGZpbGUsIHNpbXBseSByZXJ1biB0aGUgY29tbWFuZC5cbiAqL1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFNLWV9MSUJfUkVTT1VSQ0VTX1BST1ZJREVSUyxcbiAgU2t5QXBwTG9jYWxlSW5mbyxcbiAgU2t5STE4bk1vZHVsZSxcbiAgU2t5TGliUmVzb3VyY2VzLFxuICBTa3lMaWJSZXNvdXJjZXNQcm92aWRlcixcbiAgZ2V0TGliU3RyaW5nRm9yTG9jYWxlLFxufSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmNvbnN0IFJFU09VUkNFUzogeyBbbG9jYWxlOiBzdHJpbmddOiBTa3lMaWJSZXNvdXJjZXMgfSA9IHtcbiAgJ0VOLVVTJzoge1xuICAgIHNreXV4X3RleHRfZWRpdG9yX2Zvcm1hdF9tZW51X2FjdGlvbl9ib2xkX2xhYmVsOiB7IG1lc3NhZ2U6ICdCb2xkJyB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX2Zvcm1hdF9tZW51X2FjdGlvbl9ib2xkX2tleV9zaG9ydGN1dDoge1xuICAgICAgbWVzc2FnZTogJ0N0cmwrQicsXG4gICAgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl9mb3JtYXRfbWVudV9hY3Rpb25faXRhbGljX2xhYmVsOiB7IG1lc3NhZ2U6ICdJdGFsaWMnIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfZm9ybWF0X21lbnVfYWN0aW9uX2l0YWxpY19rZXlfc2hvcnRjdXQ6IHtcbiAgICAgIG1lc3NhZ2U6ICdDdHJsK0knLFxuICAgIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfZm9ybWF0X21lbnVfYWN0aW9uX3VuZGVybGluZV9sYWJlbDoge1xuICAgICAgbWVzc2FnZTogJ1VuZGVybGluZScsXG4gICAgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl9mb3JtYXRfbWVudV9hY3Rpb25fdW5kZXJsaW5lX2tleV9zaG9ydGN1dDoge1xuICAgICAgbWVzc2FnZTogJ0N0cmwrVScsXG4gICAgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl9mb3JtYXRfbWVudV9hY3Rpb25fc3RyaWtldGhyb3VnaF9sYWJlbDoge1xuICAgICAgbWVzc2FnZTogJ1N0cmlrZXRocm91Z2gnLFxuICAgIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfZm9ybWF0X21lbnVfYWN0aW9uX2NsZWFyX2Zvcm1hdHRpbmdfbGFiZWw6IHtcbiAgICAgIG1lc3NhZ2U6ICdDbGVhciBmb3JtYXR0aW5nJyxcbiAgICB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fdW5kb19sYWJlbDogeyBtZXNzYWdlOiAnVW5kbycgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX3VuZG9fa2V5X3Nob3J0Y3V0OiB7IG1lc3NhZ2U6ICdDdHJsK1onIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl9yZWRvX2xhYmVsOiB7IG1lc3NhZ2U6ICdSZWRvJyB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fcmVkb19rZXlfc2hvcnRjdXQ6IHsgbWVzc2FnZTogJ0N0cmwrWScgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX2N1dF9sYWJlbDogeyBtZXNzYWdlOiAnQ3V0JyB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fY3V0X2tleV9zaG9ydGN1dDogeyBtZXNzYWdlOiAnQ3RybCtYJyB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX2VkaXRfbWVudV9hY3Rpb25fY29weV9sYWJlbDogeyBtZXNzYWdlOiAnQ29weScgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX2NvcHlfa2V5X3Nob3J0Y3V0OiB7IG1lc3NhZ2U6ICdDdHJsK0MnIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl9wYXN0ZV9sYWJlbDogeyBtZXNzYWdlOiAnUGFzdGUnIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl9wYXN0ZV9rZXlfc2hvcnRjdXQ6IHtcbiAgICAgIG1lc3NhZ2U6ICdDdHJsK1YnLFxuICAgIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfZWRpdF9tZW51X2FjdGlvbl9zZWxlY3RfYWxsX2xhYmVsOiB7XG4gICAgICBtZXNzYWdlOiAnU2VsZWN0IGFsbCcsXG4gICAgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uX3NlbGVjdF9hbGxfa2V5X3Nob3J0Y3V0OiB7XG4gICAgICBtZXNzYWdlOiAnQ3RybCtBJyxcbiAgICB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX21lbnViYXJfZHJvcGRvd25fYnV0dG9uX2VkaXRfbGFiZWw6IHsgbWVzc2FnZTogJ0VkaXQnIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfbWVudWJhcl9kcm9wZG93bl9idXR0b25fZm9ybWF0X2xhYmVsOiB7XG4gICAgICBtZXNzYWdlOiAnRm9ybWF0JyxcbiAgICB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX21lbnViYXJfZHJvcGRvd25fYnV0dG9uX2luc2VydF9sYWJlbDoge1xuICAgICAgbWVzc2FnZTogJ0luc2VydCBtZXJnZSBmaWVsZCcsXG4gICAgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl91cmxfbW9kYWxfaGVhZGVyX2xhYmVsOiB7IG1lc3NhZ2U6ICdDcmVhdGUgbGluaycgfSxcbiAgICBza3l1eF90ZXh0X2VkaXRvcl91cmxfbW9kYWxfdXJsX2xhYmVsOiB7XG4gICAgICBtZXNzYWdlOiAnRW50ZXIgYSBVUkwgdG8gbGluayB0bzonLFxuICAgIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX29wZW5fbGFiZWw6IHtcbiAgICAgIG1lc3NhZ2U6ICdXaGVyZSBzaG91bGQgaXQgb3Blbj8nLFxuICAgIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX2N1cnJlbnRfb3B0aW9uX2xhYmVsOiB7XG4gICAgICBtZXNzYWdlOiAnQ3VycmVudCB3aW5kb3cnLFxuICAgIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX25ld19vcHRpb25fbGFiZWw6IHsgbWVzc2FnZTogJ05ldyB3aW5kb3cnIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX2VtYWlsX2xhYmVsOiB7IG1lc3NhZ2U6ICdFbWFpbCBhZGRyZXNzJyB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX3VybF9tb2RhbF9zdWJqZWN0X2xhYmVsOiB7IG1lc3NhZ2U6ICdTdWJqZWN0IGxpbmUnIH0sXG4gICAgc2t5dXhfdGV4dF9lZGl0b3JfdXJsX21vZGFsX3NhdmVfYnV0dG9uX2xhYmVsOiB7IG1lc3NhZ2U6ICdTYXZlJyB9LFxuICAgIHNreXV4X3RleHRfZWRpdG9yX3VybF9tb2RhbF9jYW5jZWxfYnV0dG9uX2xhYmVsOiB7IG1lc3NhZ2U6ICdDYW5jZWwnIH0sXG4gIH0sXG59O1xuXG5leHBvcnQgY2xhc3MgU2t5VGV4dEVkaXRvclJlc291cmNlc1Byb3ZpZGVyIGltcGxlbWVudHMgU2t5TGliUmVzb3VyY2VzUHJvdmlkZXIge1xuICBwdWJsaWMgZ2V0U3RyaW5nKFxuICAgIGxvY2FsZUluZm86IFNreUFwcExvY2FsZUluZm8sXG4gICAgbmFtZTogc3RyaW5nXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGdldExpYlN0cmluZ0ZvckxvY2FsZShSRVNPVVJDRVMsIGxvY2FsZUluZm8ubG9jYWxlLCBuYW1lKTtcbiAgfVxufVxuXG4vKipcbiAqIEltcG9ydCBpbnRvIGFueSBjb21wb25lbnQgbGlicmFyeSBtb2R1bGUgdGhhdCBuZWVkcyB0byB1c2UgcmVzb3VyY2Ugc3RyaW5ncy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgZXhwb3J0czogW1NreUkxOG5Nb2R1bGVdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBTS1lfTElCX1JFU09VUkNFU19QUk9WSURFUlMsXG4gICAgICB1c2VDbGFzczogU2t5VGV4dEVkaXRvclJlc291cmNlc1Byb3ZpZGVyLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGV4dEVkaXRvclJlc291cmNlc01vZHVsZSB7fVxuIl19
@@ -0,0 +1,197 @@
1
+ import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
2
+ import { SkyDropdownMessageType } from '@skyux/popovers';
3
+ import he from 'he';
4
+ import { Subject } from 'rxjs';
5
+ import { take, takeUntil } from 'rxjs/operators';
6
+ import { SkyFormsUtility } from '../../shared/forms-utility';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "../services/text-editor-adapter.service";
9
+ import * as i2 from "@skyux/i18n";
10
+ import * as i3 from "@angular/common";
11
+ import * as i4 from "@skyux/popovers";
12
+ import * as i5 from "@skyux/theme";
13
+ import * as i6 from "@skyux/layout";
14
+ const FORMAT_MENU_ACTION = 'skyux_text_editor_format_menu_action_';
15
+ const EDIT_MENU_ACTION = 'skyux_text_editor_edit_menu_action_';
16
+ /**
17
+ * @internal
18
+ */
19
+ export class SkyTextEditorMenubarComponent {
20
+ set disabled(value) {
21
+ const coercedValue = SkyFormsUtility.coerceBooleanProperty(value);
22
+ if (coercedValue !== this.disabled) {
23
+ this.#_disabled = coercedValue;
24
+ this.#changeDetector.markForCheck();
25
+ }
26
+ }
27
+ get disabled() {
28
+ return this.#_disabled;
29
+ }
30
+ #_disabled;
31
+ #ngUnsubscribe;
32
+ #adapterService;
33
+ #changeDetector;
34
+ #resources;
35
+ constructor(adapterService, changeDetector, resources) {
36
+ this.editorFocusStream = new Subject();
37
+ this.menus = [];
38
+ this.mergeFields = [];
39
+ this.#_disabled = false;
40
+ this.editDropdownStream = new Subject();
41
+ this.formatDropdownStream = new Subject();
42
+ this.mergeFieldDropdownStream = new Subject();
43
+ this.#ngUnsubscribe = new Subject();
44
+ this.#adapterService = adapterService;
45
+ this.#changeDetector = changeDetector;
46
+ this.#resources = resources;
47
+ }
48
+ ngOnInit() {
49
+ this.editorFocusStream
50
+ .pipe(takeUntil(this.#ngUnsubscribe))
51
+ .subscribe(() => {
52
+ this.#closeDropdowns();
53
+ });
54
+ this.#resources
55
+ .getStrings({
56
+ bold: FORMAT_MENU_ACTION + 'bold_label',
57
+ boldShort: FORMAT_MENU_ACTION + 'bold_key_shortcut',
58
+ italic: FORMAT_MENU_ACTION + 'italic_label',
59
+ italicShort: FORMAT_MENU_ACTION + 'italic_key_shortcut',
60
+ underline: FORMAT_MENU_ACTION + 'underline_label',
61
+ underlineShort: FORMAT_MENU_ACTION + 'underline_key_shortcut',
62
+ strikethrough: FORMAT_MENU_ACTION + 'strikethrough_label',
63
+ clearFormatting: FORMAT_MENU_ACTION + 'clear_formatting_label',
64
+ undo: EDIT_MENU_ACTION + 'undo_label',
65
+ undoShort: EDIT_MENU_ACTION + 'undo_key_shortcut',
66
+ redo: EDIT_MENU_ACTION + 'redo_label',
67
+ redoShort: EDIT_MENU_ACTION + 'redo_key_shortcut',
68
+ cut: EDIT_MENU_ACTION + 'cut_label',
69
+ cutShort: EDIT_MENU_ACTION + 'cut_key_shortcut',
70
+ copy: EDIT_MENU_ACTION + 'copy_label',
71
+ copyShort: EDIT_MENU_ACTION + 'copy_key_shortcut',
72
+ paste: EDIT_MENU_ACTION + 'paste_label',
73
+ pasteShort: EDIT_MENU_ACTION + 'paste_key_shortcut',
74
+ selectAll: EDIT_MENU_ACTION + 'select_all_label',
75
+ selectAllShort: EDIT_MENU_ACTION + 'select_all_key_shortcut',
76
+ })
77
+ .pipe(take(1), takeUntil(this.#ngUnsubscribe))
78
+ .subscribe((resources) => {
79
+ this.formatItems = [
80
+ {
81
+ function: () => this.execCommand('bold'),
82
+ label: resources.bold,
83
+ keyShortcut: resources.boldShort,
84
+ },
85
+ {
86
+ function: () => this.execCommand('italic'),
87
+ label: resources.italic,
88
+ keyShortcut: resources.italicShort,
89
+ },
90
+ {
91
+ function: () => this.execCommand('underline'),
92
+ label: resources.underline,
93
+ keyShortcut: resources.underlineShort,
94
+ },
95
+ {
96
+ function: () => this.execCommand('strikethrough'),
97
+ label: resources.strikethrough,
98
+ },
99
+ {
100
+ isDivider: true,
101
+ },
102
+ {
103
+ function: () => this.#clearFormat(),
104
+ label: resources.clearFormatting,
105
+ },
106
+ ];
107
+ this.editItems = [
108
+ {
109
+ function: () => this.execCommand('undo'),
110
+ label: resources.undo,
111
+ keyShortcut: resources.undoShort,
112
+ },
113
+ {
114
+ function: () => this.execCommand('redo'),
115
+ label: resources.redo,
116
+ keyShortcut: resources.redoShort,
117
+ },
118
+ {
119
+ isDivider: true,
120
+ },
121
+ {
122
+ function: () => this.execCommand('cut'),
123
+ label: resources.cut,
124
+ keyShortcut: resources.cutShort,
125
+ },
126
+ {
127
+ function: () => this.execCommand('copy'),
128
+ label: resources.copy,
129
+ keyShortcut: resources.copyShort,
130
+ },
131
+ {
132
+ function: () => this.execCommand('paste'),
133
+ label: resources.paste,
134
+ keyShortcut: resources.pasteShort,
135
+ },
136
+ {
137
+ isDivider: true,
138
+ },
139
+ {
140
+ function: () => this.execCommand('selectAll'),
141
+ label: resources.selectAll,
142
+ keyShortcut: resources.selectAllShort,
143
+ },
144
+ ];
145
+ });
146
+ }
147
+ ngOnDestroy() {
148
+ this.#ngUnsubscribe.next();
149
+ this.#ngUnsubscribe.complete();
150
+ }
151
+ execCommand(command, value = '') {
152
+ this.#adapterService.execCommand({
153
+ command: command,
154
+ value: value,
155
+ });
156
+ }
157
+ insertMergeField(field) {
158
+ this.execCommand('insertHTML', '<img style="display: inline; cursor: grab;" data-fieldid="' +
159
+ he.escape(field.id) +
160
+ '" data-fielddisplay="' +
161
+ he.escape(field.name) +
162
+ '" src="' +
163
+ (field.previewImageUrl ||
164
+ this.#adapterService.getMergeFieldDataURI(field.name)) +
165
+ '">');
166
+ }
167
+ #closeDropdowns() {
168
+ this.editDropdownStream.next({ type: SkyDropdownMessageType.Close });
169
+ this.formatDropdownStream.next({ type: SkyDropdownMessageType.Close });
170
+ this.mergeFieldDropdownStream.next({ type: SkyDropdownMessageType.Close });
171
+ }
172
+ #clearFormat() {
173
+ const currentSelection = this.#adapterService.getCurrentSelection();
174
+ /* istanbul ignore else */
175
+ if (currentSelection &&
176
+ currentSelection.rangeCount > 0 &&
177
+ currentSelection.getRangeAt(0).toString().length <= 0) {
178
+ this.execCommand('selectAll');
179
+ }
180
+ this.execCommand('removeFormat');
181
+ }
182
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyTextEditorMenubarComponent, deps: [{ token: i1.SkyTextEditorAdapterService }, { token: i0.ChangeDetectorRef }, { token: i2.SkyLibResourcesService }], target: i0.ɵɵFactoryTarget.Component }); }
183
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkyTextEditorMenubarComponent, selector: "sky-text-editor-menubar", inputs: { editorFocusStream: "editorFocusStream", 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"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4.λ2, selector: "sky-dropdown-button" }, { kind: "component", type: i4.λ3, selector: "sky-dropdown", inputs: ["buttonStyle", "buttonType", "disabled", "dismissOnBlur", "label", "horizontalAlignment", "messageStream", "title", "trigger"] }, { kind: "component", type: i4.λ1, selector: "sky-dropdown-item", inputs: ["ariaRole"] }, { kind: "component", type: i4.λ4, selector: "sky-dropdown-menu", inputs: ["ariaLabelledBy", "ariaRole", "useNativeFocus"], outputs: ["menuChanges"] }, { kind: "directive", type: i5.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "component", type: i6.λ39, selector: "sky-toolbar-item" }, { kind: "pipe", type: i2.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
184
+ }
185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyTextEditorMenubarComponent, decorators: [{
186
+ type: Component,
187
+ 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"] }]
188
+ }], ctorParameters: function () { return [{ type: i1.SkyTextEditorAdapterService }, { type: i0.ChangeDetectorRef }, { type: i2.SkyLibResourcesService }]; }, propDecorators: { editorFocusStream: [{
189
+ type: Input
190
+ }], menus: [{
191
+ type: Input
192
+ }], mergeFields: [{
193
+ type: Input
194
+ }], disabled: [{
195
+ type: Input
196
+ }] } });
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL21lbnViYXIvdGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGV4dC1lZGl0b3Ivc3JjL2xpYi9tb2R1bGVzL3RleHQtZWRpdG9yL21lbnViYXIvdGV4dC1lZGl0b3ItbWVudWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxLQUFLLEdBR04sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFzQixzQkFBc0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdFLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7OztBQUs3RCxNQUFNLGtCQUFrQixHQUFHLHVDQUF1QyxDQUFDO0FBQ25FLE1BQU0sZ0JBQWdCLEdBQUcscUNBQXFDLENBQUM7QUFFL0Q7O0dBRUc7QUFPSCxNQUFNLE9BQU8sNkJBQTZCO0lBVXhDLElBQ1csUUFBUSxDQUFDLEtBQWM7UUFDaEMsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xFLElBQUksWUFBWSxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxZ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QkFBeUIsbUJBR2xCLHVCQUF1QixDQUFDLE1BQU07dUxBSXhDLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFJQyxLQUFLO3NCQURYLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJSyxRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuaW1wb3J0IHsgU2t5RHJvcGRvd25NZXNzYWdlLCBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlIH0gZnJvbSAnQHNreXV4L3BvcG92ZXJzJztcblxuaW1wb3J0IGhlIGZyb20gJ2hlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5Rm9ybXNVdGlsaXR5IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Zvcm1zLXV0aWxpdHknO1xuaW1wb3J0IHsgU2t5VGV4dEVkaXRvckFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdGV4dC1lZGl0b3ItYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVRleHRFZGl0b3JNZW51VHlwZSB9IGZyb20gJy4uL3R5cGVzL21lbnUtdHlwZSc7XG5pbXBvcnQgeyBTa3lUZXh0RWRpdG9yTWVyZ2VGaWVsZCB9IGZyb20gJy4uL3R5cGVzL3RleHQtZWRpdG9yLW1lcmdlLWZpZWxkJztcblxuY29uc3QgRk9STUFUX01FTlVfQUNUSU9OID0gJ3NreXV4X3RleHRfZWRpdG9yX2Zvcm1hdF9tZW51X2FjdGlvbl8nO1xuY29uc3QgRURJVF9NRU5VX0FDVElPTiA9ICdza3l1eF90ZXh0X2VkaXRvcl9lZGl0X21lbnVfYWN0aW9uXyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS10ZXh0LWVkaXRvci1tZW51YmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHQtZWRpdG9yLW1lbnViYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXh0LWVkaXRvci1tZW51YmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lUZXh0RWRpdG9yTWVudWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgQElucHV0KClcbiAgcHVibGljIGVkaXRvckZvY3VzU3RyZWFtID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbWVudXM6IFNreVRleHRFZGl0b3JNZW51VHlwZVtdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIG1lcmdlRmllbGRzOiBTa3lUZXh0RWRpdG9yTWVyZ2VGaWVsZFtdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGNvbnN0IGNvZXJjZWRWYWx1ZSA9IFNreUZvcm1zVXRpbGl0eS5jb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIGlmIChjb2VyY2VkVmFsdWUgIT09IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuI19kaXNhYmxlZCA9IGNvZXJjZWRWYWx1ZTtcbiAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19kaXNhYmxlZDtcbiAgfVxuXG4gICNfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgZWRpdERyb3Bkb3duU3RyZWFtID0gbmV3IFN1YmplY3Q8U2t5RHJvcGRvd25NZXNzYWdlPigpO1xuXG4gIHB1YmxpYyBlZGl0SXRlbXM6XG4gICAgfCB7XG4gICAgICAgIGZ1bmN0aW9uPzogKCkgPT4gdm9pZDtcbiAgICAgICAgaXNEaXZpZGVyPzogYm9vbGVhbjtcbiAgICAgICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgICAgIGtleVNob3J0Y3V0Pzogc3RyaW5nO1xuICAgICAgfVtdXG4gICAgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGZvcm1hdERyb3Bkb3duU3RyZWFtID0gbmV3IFN1YmplY3Q8U2t5RHJvcGRvd25NZXNzYWdlPigpO1xuXG4gIHB1YmxpYyBmb3JtYXRJdGVtczpcbiAgICB8IHtcbiAgICAgICAgZnVuY3Rpb24/OiAoKSA9PiB2b2lkO1xuICAgICAgICBpc0RpdmlkZXI/OiBib29sZWFuO1xuICAgICAgICBsYWJlbD86IHN0cmluZztcbiAgICAgICAga2V5U2hvcnRjdXQ/OiBzdHJpbmc7XG4gICAgICB9W11cbiAgICB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgbWVyZ2VGaWVsZERyb3Bkb3duU3RyZWFtID0gbmV3IFN1YmplY3Q8U2t5RHJvcGRvd25NZXNzYWdlPigpO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI2FkYXB0ZXJTZXJ2aWNlOiBTa3lUZXh0RWRpdG9yQWRhcHRlclNlcnZpY2U7XG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gICNyZXNvdXJjZXM6IFNreUxpYlJlc291cmNlc1NlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYWRhcHRlclNlcnZpY2U6IFNreVRleHRFZGl0b3JBZGFwdGVyU2VydmljZSxcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcmVzb3VyY2VzOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlID0gYWRhcHRlclNlcnZpY2U7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcbiAgICB0aGlzLiNyZXNvdXJjZXMgPSByZXNvdXJjZXM7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0b3JGb2N1c1N0cmVhbVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuI2Nsb3NlRHJvcGRvd25zKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuI3Jlc291cmNlc1xuICAgICAgLmdldFN0cmluZ3Moe1xuICAgICAgICBib2xkOiBGT1JNQVRfTUVOVV9BQ1RJT04gKyAnYm9sZF9sYWJlbCcsXG4gICAgICAgIGJvbGRTaG9ydDogRk9STUFUX01FTlVfQUNUSU9OICsgJ2JvbGRfa2V5X3Nob3J0Y3V0JyxcbiAgICAgICAgaXRhbGljOiBGT1JNQVRfTUVOVV9BQ1RJT04gKyAnaXRhbGljX2xhYmVsJyxcbiAgICAgICAgaXRhbGljU2hvcnQ6IEZPUk1BVF9NRU5VX0FDVElPTiArICdpdGFsaWNfa2V5X3Nob3J0Y3V0JyxcbiAgICAgICAgdW5kZXJsaW5lOiBGT1JNQVRfTUVOVV9BQ1RJT04gKyAndW5kZXJsaW5lX2xhYmVsJyxcbiAgICAgICAgdW5kZXJsaW5lU2hvcnQ6IEZPUk1BVF9NRU5VX0FDVElPTiArICd1bmRlcmxpbmVfa2V5X3Nob3J0Y3V0JyxcbiAgICAgICAgc3RyaWtldGhyb3VnaDogRk9STUFUX01FTlVfQUNUSU9OICsgJ3N0cmlrZXRocm91Z2hfbGFiZWwnLFxuICAgICAgICBjbGVhckZvcm1hdHRpbmc6IEZPUk1BVF9NRU5VX0FDVElPTiArICdjbGVhcl9mb3JtYXR0aW5nX2xhYmVsJyxcbiAgICAgICAgdW5kbzogRURJVF9NRU5VX0FDVElPTiArICd1bmRvX2xhYmVsJyxcbiAgICAgICAgdW5kb1Nob3J0OiBFRElUX01FTlVfQUNUSU9OICsgJ3VuZG9fa2V5X3Nob3J0Y3V0JyxcbiAgICAgICAgcmVkbzogRURJVF9NRU5VX0FDVElPTiArICdyZWRvX2xhYmVsJyxcbiAgICAgICAgcmVkb1Nob3J0OiBFRElUX01FTlVfQUNUSU9OICsgJ3JlZG9fa2V5X3Nob3J0Y3V0JyxcbiAgICAgICAgY3V0OiBFRElUX01FTlVfQUNUSU9OICsgJ2N1dF9sYWJlbCcsXG4gICAgICAgIGN1dFNob3J0OiBFRElUX01FTlVfQUNUSU9OICsgJ2N1dF9rZXlfc2hvcnRjdXQnLFxuICAgICAgICBjb3B5OiBFRElUX01FTlVfQUNUSU9OICsgJ2NvcHlfbGFiZWwnLFxuICAgICAgICBjb3B5U2hvcnQ6IEVESVRfTUVOVV9BQ1RJT04gKyAnY29weV9rZXlfc2hvcnRjdXQnLFxuICAgICAgICBwYXN0ZTogRURJVF9NRU5VX0FDVElPTiArICdwYXN0ZV9sYWJlbCcsXG4gICAgICAgIHBhc3RlU2hvcnQ6IEVESVRfTUVOVV9BQ1RJT04gKyAncGFzdGVfa2V5X3Nob3J0Y3V0JyxcbiAgICAgICAgc2VsZWN0QWxsOiBFRElUX01FTlVfQUNUSU9OICsgJ3NlbGVjdF9hbGxfbGFiZWwnLFxuICAgICAgICBzZWxlY3RBbGxTaG9ydDogRURJVF9NRU5VX0FDVElPTiArICdzZWxlY3RfYWxsX2tleV9zaG9ydGN1dCcsXG4gICAgICB9KVxuICAgICAgLnBpcGUodGFrZSgxKSwgdGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgocmVzb3VyY2VzKSA9PiB7XG4gICAgICAgIHRoaXMuZm9ybWF0SXRlbXMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnVuY3Rpb246ICgpID0+IHRoaXMuZXhlY0NvbW1hbmQoJ2JvbGQnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXMuYm9sZCxcbiAgICAgICAgICAgIGtleVNob3J0Y3V0OiByZXNvdXJjZXMuYm9sZFNob3J0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnVuY3Rpb246ICgpID0+IHRoaXMuZXhlY0NvbW1hbmQoJ2l0YWxpYycpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlcy5pdGFsaWMsXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzLml0YWxpY1Nob3J0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnVuY3Rpb246ICgpID0+IHRoaXMuZXhlY0NvbW1hbmQoJ3VuZGVybGluZScpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlcy51bmRlcmxpbmUsXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzLnVuZGVybGluZVNob3J0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnVuY3Rpb246ICgpID0+IHRoaXMuZXhlY0NvbW1hbmQoJ3N0cmlrZXRocm91Z2gnKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXMuc3RyaWtldGhyb3VnaCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlzRGl2aWRlcjogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiAoKSA9PiB0aGlzLiNjbGVhckZvcm1hdCgpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlcy5jbGVhckZvcm1hdHRpbmcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5lZGl0SXRlbXMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnVuY3Rpb246ICgpID0+IHRoaXMuZXhlY0NvbW1hbmQoJ3VuZG8nKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXMudW5kbyxcbiAgICAgICAgICAgIGtleVNob3J0Y3V0OiByZXNvdXJjZXMudW5kb1Nob3J0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnVuY3Rpb246ICgpID0+IHRoaXMuZXhlY0NvbW1hbmQoJ3JlZG8nKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXMucmVkbyxcbiAgICAgICAgICAgIGtleVNob3J0Y3V0OiByZXNvdXJjZXMucmVkb1Nob3J0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaXNEaXZpZGVyOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnVuY3Rpb246ICgpID0+IHRoaXMuZXhlY0NvbW1hbmQoJ2N1dCcpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlcy5jdXQsXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzLmN1dFNob3J0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnVuY3Rpb246ICgpID0+IHRoaXMuZXhlY0NvbW1hbmQoJ2NvcHknKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXNvdXJjZXMuY29weSxcbiAgICAgICAgICAgIGtleVNob3J0Y3V0OiByZXNvdXJjZXMuY29weVNob3J0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnVuY3Rpb246ICgpID0+IHRoaXMuZXhlY0NvbW1hbmQoJ3Bhc3RlJyksXG4gICAgICAgICAgICBsYWJlbDogcmVzb3VyY2VzLnBhc3RlLFxuICAgICAgICAgICAga2V5U2hvcnRjdXQ6IHJlc291cmNlcy5wYXN0ZVNob3J0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaXNEaXZpZGVyOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnVuY3Rpb246ICgpID0+IHRoaXMuZXhlY0NvbW1hbmQoJ3NlbGVjdEFsbCcpLFxuICAgICAgICAgICAgbGFiZWw6IHJlc291cmNlcy5zZWxlY3RBbGwsXG4gICAgICAgICAgICBrZXlTaG9ydGN1dDogcmVzb3VyY2VzLnNlbGVjdEFsbFNob3J0LFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZXhlY0NvbW1hbmQoY29tbWFuZDogc3RyaW5nLCB2YWx1ZSA9ICcnKTogdm9pZCB7XG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2UuZXhlY0NvbW1hbmQoe1xuICAgICAgY29tbWFuZDogY29tbWFuZCxcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpbnNlcnRNZXJnZUZpZWxkKGZpZWxkOiBTa3lUZXh0RWRpdG9yTWVyZ2VGaWVsZCk6IHZvaWQge1xuICAgIHRoaXMuZXhlY0NvbW1hbmQoXG4gICAgICAnaW5zZXJ0SFRNTCcsXG4gICAgICAnPGltZyBzdHlsZT1cImRpc3BsYXk6IGlubGluZTsgY3Vyc29yOiBncmFiO1wiIGRhdGEtZmllbGRpZD1cIicgK1xuICAgICAgICBoZS5lc2NhcGUoZmllbGQuaWQpICtcbiAgICAgICAgJ1wiIGRhdGEtZmllbGRkaXNwbGF5PVwiJyArXG4gICAgICAgIGhlLmVzY2FwZShmaWVsZC5uYW1lKSArXG4gICAgICAgICdcIiBzcmM9XCInICtcbiAgICAgICAgKGZpZWxkLnByZXZpZXdJbWFnZVVybCB8fFxuICAgICAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmdldE1lcmdlRmllbGREYXRhVVJJKGZpZWxkLm5hbWUpKSArXG4gICAgICAgICdcIj4nXG4gICAgKTtcbiAgfVxuXG4gICNjbG9zZURyb3Bkb3ducygpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXREcm9wZG93blN0cmVhbS5uZXh0KHsgdHlwZTogU2t5RHJvcGRvd25NZXNzYWdlVHlwZS5DbG9zZSB9KTtcbiAgICB0aGlzLmZvcm1hdERyb3Bkb3duU3RyZWFtLm5leHQoeyB0eXBlOiBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlIH0pO1xuICAgIHRoaXMubWVyZ2VGaWVsZERyb3Bkb3duU3RyZWFtLm5leHQoeyB0eXBlOiBTa3lEcm9wZG93bk1lc3NhZ2VUeXBlLkNsb3NlIH0pO1xuICB9XG5cbiAgI2NsZWFyRm9ybWF0KCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLiNhZGFwdGVyU2VydmljZS5nZXRDdXJyZW50U2VsZWN0aW9uKCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoXG4gICAgICBjdXJyZW50U2VsZWN0aW9uICYmXG4gICAgICBjdXJyZW50U2VsZWN0aW9uLnJhbmdlQ291bnQgPiAwICYmXG4gICAgICBjdXJyZW50U2VsZWN0aW9uLmdldFJhbmdlQXQoMCkudG9TdHJpbmcoKS5sZW5ndGggPD0gMFxuICAgICkge1xuICAgICAgdGhpcy5leGVjQ29tbWFuZCgnc2VsZWN0QWxsJyk7XG4gICAgfVxuICAgIHRoaXMuZXhlY0NvbW1hbmQoJ3JlbW92ZUZvcm1hdCcpO1xuICB9XG59XG4iLCI8c2t5LXRvb2xiYXItaXRlbVxuICAqbmdGb3I9XCJsZXQgbWVudSBvZiBtZW51c1wiXG4gIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLW1lbnVcIlxuICBbbmdDbGFzc109XCInc2t5LXRleHQtZWRpdG9yLW1lbnUtJyArIG1lbnVcIlxuPlxuICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJtZW51XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2VkaXQnXCI+XG4gICAgICA8c2t5LWRyb3Bkb3duXG4gICAgICAgIGxhYmVsPVwiRWRpdCBtZW51XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW21lc3NhZ2VTdHJlYW1dPVwiZWRpdERyb3Bkb3duU3RyZWFtXCJcbiAgICAgID5cbiAgICAgICAgPHNreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgICdza3l1eF90ZXh0X2VkaXRvcl9tZW51YmFyX2Ryb3Bkb3duX2J1dHRvbl9lZGl0X2xhYmVsJ1xuICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgIH19XG4gICAgICAgIDwvc2t5LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgPHNreS1kcm9wZG93bi1tZW51PlxuICAgICAgICAgIDxza3ktZHJvcGRvd24taXRlbSAqbmdGb3I9XCJsZXQgZWRpdEl0ZW0gb2YgZWRpdEl0ZW1zXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWVkaXRJdGVtLmlzRGl2aWRlclwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdEl0ZW0/LmZ1bmN0aW9uKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBlZGl0SXRlbS5sYWJlbCB9fVxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJlZGl0SXRlbS5rZXlTaG9ydGN1dFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJza3ktdGV4dC1lZGl0b3ItbWVudS1rZXktc2hvcnRjdXRcIlxuICAgICAgICAgICAgICAgIFtza3lUaGVtZUNsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICdza3ktZm9udC1kZWVtcGhhc2l6ZWQnOiAnbW9kZXJuJyxcbiAgICAgICAgICAgICAgICAgICdza3ktZGVlbXBoYXNpemVkJzogJ2RlZmF1bHQnXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBlZGl0SXRlbS5rZXlTaG9ydGN1dCB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdJZj1cImVkaXRJdGVtLmlzRGl2aWRlclwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLWRyb3Bkb3duLWl0ZW0tZGl2aWRlclwiXG4gICAgICAgICAgICAgIHJvbGU9XCJkaXZpZGVyXCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L3NreS1kcm9wZG93bi1pdGVtPlxuICAgICAgICA8L3NreS1kcm9wZG93bi1tZW51PlxuICAgICAgPC9za3ktZHJvcGRvd24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Zvcm1hdCdcIj5cbiAgICAgIDxza3ktZHJvcGRvd25cbiAgICAgICAgbGFiZWw9XCJGb3JtYXQgbWVudVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFttZXNzYWdlU3RyZWFtXT1cImZvcm1hdERyb3Bkb3duU3RyZWFtXCJcbiAgICAgID5cbiAgICAgICAgPHNreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgICdza3l1eF90ZXh0X2VkaXRvcl9tZW51YmFyX2Ryb3Bkb3duX2J1dHRvbl9mb3JtYXRfbGFiZWwnXG4gICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgfX1cbiAgICAgICAgPC9za3ktZHJvcGRvd24tYnV0dG9uPlxuICAgICAgICA8c2t5LWRyb3Bkb3duLW1lbnU+XG4gICAgICAgICAgPHNreS1kcm9wZG93bi1pdGVtICpuZ0Zvcj1cImxldCBmb3JtYXRJdGVtIG9mIGZvcm1hdEl0ZW1zXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiIWZvcm1hdEl0ZW0uaXNEaXZpZGVyXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJmb3JtYXRJdGVtPy5mdW5jdGlvbigpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgZm9ybWF0SXRlbS5sYWJlbCB9fVxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJmb3JtYXRJdGVtLmtleVNob3J0Y3V0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNreS10ZXh0LWVkaXRvci1tZW51LWtleS1zaG9ydGN1dFwiXG4gICAgICAgICAgICAgICAgW3NreVRoZW1lQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgJ3NreS1mb250LWRlZW1waGFzaXplZCc6ICdtb2Rlcm4nLFxuICAgICAgICAgICAgICAgICAgJ3NreS1kZWVtcGhhc2l6ZWQnOiAnZGVmYXVsdCdcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGZvcm1hdEl0ZW0ua2V5U2hvcnRjdXQgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJmb3JtYXRJdGVtLmlzRGl2aWRlclwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic2t5LXRleHQtZWRpdG9yLWRyb3Bkb3duLWl0ZW0tZGl2aWRlclwiXG4gICAgICAgICAgICAgIHJvbGU9XCJkaXZpZGVyXCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L3NreS1kcm9wZG93bi1pdGVtPlxuICAgICAgICA8L3NreS1kcm9wZG93bi1tZW51PlxuICAgICAgPC9za3ktZHJvcGRvd24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ21lcmdlLWZpZWxkJ1wiPlxuICAgICAgPHNreS1kcm9wZG93blxuICAgICAgICAqbmdJZj1cIm1lcmdlRmllbGRzICYmIG1lcmdlRmllbGRzLmxlbmd0aCA+IDBcIlxuICAgICAgICBsYWJlbD1cIkluc2VydCBtZXJnZSBmaWVsZFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFttZXNzYWdlU3RyZWFtXT1cIm1lcmdlRmllbGREcm9wZG93blN0cmVhbVwiXG4gICAgICA+XG4gICAgICAgIDxza3ktZHJvcGRvd24tYnV0dG9uPlxuICAgICAgICAgIHt7XG4gICAgICAgICAgICAnc2t5dXhfdGV4dF9lZGl0b3JfbWVudWJhcl9kcm9wZG93bl9idXR0b25faW5zZXJ0X2xhYmVsJ1xuICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICAgIH19XG4gICAgICAgIDwvc2t5LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgICAgPHNreS1kcm9wZG93bi1tZW51PlxuICAgICAgICAgIDxza3ktZHJvcGRvd24taXRlbSAqbmdGb3I9XCJsZXQgbWVyZ2VGaWVsZCBvZiBtZXJnZUZpZWxkc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImluc2VydE1lcmdlRmllbGQobWVyZ2VGaWVsZClcIj5cbiAgICAgICAgICAgICAge3sgbWVyZ2VGaWVsZC5uYW1lIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L3NreS1kcm9wZG93bi1pdGVtPlxuICAgICAgICA8L3NreS1kcm9wZG93bi1tZW51PlxuICAgICAgPC9za3ktZHJvcGRvd24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9za3ktdG9vbGJhci1pdGVtPlxuIl19