croco-html 4.0.1 → 4.0.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 (165) hide show
  1. package/fesm2022/croco-html.mjs +145 -144
  2. package/fesm2022/croco-html.mjs.map +1 -1
  3. package/index.d.ts +954 -3
  4. package/package.json +1 -3
  5. package/esm2022/croco-html.mjs +0 -5
  6. package/esm2022/lib/components/add-files-btn/add-files-btn.component.mjs +0 -55
  7. package/esm2022/lib/components/editor/button-editor/button-editor.component.mjs +0 -43
  8. package/esm2022/lib/components/editor/custom-widget-editor/custom-widget-editor.component.mjs +0 -41
  9. package/esm2022/lib/components/editor/download-file-button-editor/download-file-button-editor.component.mjs +0 -42
  10. package/esm2022/lib/components/editor/external-video-editor/embedded-video/code-video.component.mjs +0 -29
  11. package/esm2022/lib/components/editor/external-video-editor/external-video-editor.component.mjs +0 -84
  12. package/esm2022/lib/components/editor/external-video-editor/vk-video-player/vk-video-player.component.mjs +0 -20
  13. package/esm2022/lib/components/editor/external-video-editor/youtube-video-player/youtube-video-player.component.mjs +0 -20
  14. package/esm2022/lib/components/editor/html-editor-settings-modal/html-editor-settings-modal.component.mjs +0 -47
  15. package/esm2022/lib/components/editor/html-raw-editor/html-raw-editor.component.mjs +0 -33
  16. package/esm2022/lib/components/editor/image-editor/image-editor.component.mjs +0 -108
  17. package/esm2022/lib/components/editor/index.mjs +0 -9
  18. package/esm2022/lib/components/editor/main-editor/main-editor.component.mjs +0 -120
  19. package/esm2022/lib/components/editor/main-editor-block/main-editor-block.component.mjs +0 -49
  20. package/esm2022/lib/components/editor/text-editor/text-editor.component.mjs +0 -30
  21. package/esm2022/lib/components/editor/visual-editor/DefaultAligments.mjs +0 -12
  22. package/esm2022/lib/components/editor/visual-editor/DefaultTags.mjs +0 -28
  23. package/esm2022/lib/components/editor/visual-editor/visual-editor.component.mjs +0 -268
  24. package/esm2022/lib/components/error-banner/error-banner.component.mjs +0 -24
  25. package/esm2022/lib/components/file-id-select/file-id-select.component.mjs +0 -87
  26. package/esm2022/lib/components/html-view/html-view.component.mjs +0 -18
  27. package/esm2022/lib/components/index.mjs +0 -7
  28. package/esm2022/lib/components/upload-files-btn/upload-files-btn.component.mjs +0 -66
  29. package/esm2022/lib/components/xml-tags/file-image-tag-view/file-image-tag-view.component.mjs +0 -57
  30. package/esm2022/lib/components/xml-tags/html-raw-view/html-raw-view.component.mjs +0 -24
  31. package/esm2022/lib/components/xml-tags/index.mjs +0 -12
  32. package/esm2022/lib/components/xml-tags/xml-tag-custom-button/xml-tag-button.component.mjs +0 -42
  33. package/esm2022/lib/components/xml-tags/xml-tag-custom-widget/xml-tag-custom-widget.component.mjs +0 -50
  34. package/esm2022/lib/components/xml-tags/xml-tag-download-file-button/xml-tag-download-file-button.component.mjs +0 -48
  35. package/esm2022/lib/components/xml-tags/xml-tag-external-video/xml-tag-external-video.component.mjs +0 -41
  36. package/esm2022/lib/components/xml-tags/xml-tag-header-inner-text-view/xml-tag-header-inner-text-view.component.mjs +0 -16
  37. package/esm2022/lib/components/xml-tags/xml-tag-header-text-view/xml-tag-header-text-view.component.mjs +0 -17
  38. package/esm2022/lib/components/xml-tags/xml-tag-html-view/xml-tag-html-view.component.mjs +0 -16
  39. package/esm2022/lib/components/xml-tags/xml-tag-rich-text-view/xml-tag-rich-text-view.component.mjs +0 -19
  40. package/esm2022/lib/components/xml-tags/xml-tag-table-view/xml-tag-table-view.component.mjs +0 -19
  41. package/esm2022/lib/components/xml-tags/xml-tag-text-view/xml-tag-text-view.component.mjs +0 -16
  42. package/esm2022/lib/components/xml-tags/xml-tag-view/xml-tag-view.component.mjs +0 -41
  43. package/esm2022/lib/consts/index.mjs +0 -2
  44. package/esm2022/lib/croco-html.module.mjs +0 -106
  45. package/esm2022/lib/extensions/AngularMaterialTableMethods.mjs +0 -64
  46. package/esm2022/lib/extensions/BodyTagsExtensions.mjs +0 -192
  47. package/esm2022/lib/extensions/BootstrapTableMethods.mjs +0 -67
  48. package/esm2022/lib/extensions/ButtonMethods.mjs +0 -19
  49. package/esm2022/lib/extensions/CustomWidgetMethods.mjs +0 -33
  50. package/esm2022/lib/extensions/DownloadButtonMethods.mjs +0 -17
  51. package/esm2022/lib/extensions/HtmlExtractionMethods.mjs +0 -65
  52. package/esm2022/lib/extensions/HtmlRawTagDataConsts.mjs +0 -14
  53. package/esm2022/lib/extensions/ImageMethods.mjs +0 -101
  54. package/esm2022/lib/extensions/InterfaceBlock.mjs +0 -2
  55. package/esm2022/lib/extensions/TableBuilder.mjs +0 -35
  56. package/esm2022/lib/extensions/TableMethods.mjs +0 -108
  57. package/esm2022/lib/extensions/Tags.mjs +0 -22
  58. package/esm2022/lib/extensions/TextMethods.mjs +0 -39
  59. package/esm2022/lib/extensions/TextSimpleMethods.mjs +0 -81
  60. package/esm2022/lib/extensions/VideoMethods.mjs +0 -40
  61. package/esm2022/lib/extensions/XmlExtensions.mjs +0 -26
  62. package/esm2022/lib/extensions/index.mjs +0 -12
  63. package/esm2022/lib/index.mjs +0 -122
  64. package/esm2022/lib/models/image-models.mjs +0 -2
  65. package/esm2022/lib/models/index.mjs +0 -3
  66. package/esm2022/lib/models/models.mjs +0 -2
  67. package/esm2022/lib/options/index.mjs +0 -2
  68. package/esm2022/lib/pipes/RichTextToHtmlPipe.mjs +0 -27
  69. package/esm2022/lib/pipes/TagToSpanPipe.mjs +0 -17
  70. package/esm2022/lib/pipes/ToHtmlBodyTagsPipe.mjs +0 -25
  71. package/esm2022/lib/pipes/ToPreviewHtmlPipe.mjs +0 -25
  72. package/esm2022/lib/pipes/index.mjs +0 -6
  73. package/esm2022/lib/pipes/sprite-icon-path.pipe.mjs +0 -17
  74. package/esm2022/lib/pipes/to-preview.pipe.mjs +0 -25
  75. package/esm2022/lib/services/CrocoHtmlFileOptionsService.mjs +0 -32
  76. package/esm2022/lib/services/HtmlViewController.mjs +0 -23
  77. package/esm2022/lib/services/PrivateFileUploadService.mjs +0 -34
  78. package/esm2022/lib/services/PrivateFilesQueryService.mjs +0 -24
  79. package/esm2022/lib/services/PublicFileUploadService.mjs +0 -34
  80. package/esm2022/lib/services/PublicFilesQueryService.mjs +0 -34
  81. package/esm2022/lib/services/blob-create.service.mjs +0 -20
  82. package/esm2022/lib/services/index.mjs +0 -3
  83. package/esm2022/lib/services/screen-width.service.mjs +0 -24
  84. package/esm2022/public-api.mjs +0 -12
  85. package/esm2022/sprites-ids.type.mjs +0 -2
  86. package/lib/components/add-files-btn/add-files-btn.component.d.ts +0 -20
  87. package/lib/components/editor/button-editor/button-editor.component.d.ts +0 -13
  88. package/lib/components/editor/custom-widget-editor/custom-widget-editor.component.d.ts +0 -13
  89. package/lib/components/editor/download-file-button-editor/download-file-button-editor.component.d.ts +0 -13
  90. package/lib/components/editor/external-video-editor/embedded-video/code-video.component.d.ts +0 -14
  91. package/lib/components/editor/external-video-editor/external-video-editor.component.d.ts +0 -17
  92. package/lib/components/editor/external-video-editor/vk-video-player/vk-video-player.component.d.ts +0 -10
  93. package/lib/components/editor/external-video-editor/youtube-video-player/youtube-video-player.component.d.ts +0 -10
  94. package/lib/components/editor/html-editor-settings-modal/html-editor-settings-modal.component.d.ts +0 -17
  95. package/lib/components/editor/html-raw-editor/html-raw-editor.component.d.ts +0 -15
  96. package/lib/components/editor/image-editor/image-editor.component.d.ts +0 -34
  97. package/lib/components/editor/index.d.ts +0 -8
  98. package/lib/components/editor/main-editor/main-editor.component.d.ts +0 -34
  99. package/lib/components/editor/main-editor-block/main-editor-block.component.d.ts +0 -14
  100. package/lib/components/editor/text-editor/text-editor.component.d.ts +0 -12
  101. package/lib/components/editor/visual-editor/DefaultAligments.d.ts +0 -9
  102. package/lib/components/editor/visual-editor/DefaultTags.d.ts +0 -6
  103. package/lib/components/editor/visual-editor/visual-editor.component.d.ts +0 -72
  104. package/lib/components/error-banner/error-banner.component.d.ts +0 -6
  105. package/lib/components/file-id-select/file-id-select.component.d.ts +0 -38
  106. package/lib/components/html-view/html-view.component.d.ts +0 -6
  107. package/lib/components/index.d.ts +0 -6
  108. package/lib/components/upload-files-btn/upload-files-btn.component.d.ts +0 -26
  109. package/lib/components/xml-tags/file-image-tag-view/file-image-tag-view.component.d.ts +0 -22
  110. package/lib/components/xml-tags/html-raw-view/html-raw-view.component.d.ts +0 -12
  111. package/lib/components/xml-tags/index.d.ts +0 -11
  112. package/lib/components/xml-tags/xml-tag-custom-button/xml-tag-button.component.d.ts +0 -14
  113. package/lib/components/xml-tags/xml-tag-custom-widget/xml-tag-custom-widget.component.d.ts +0 -19
  114. package/lib/components/xml-tags/xml-tag-download-file-button/xml-tag-download-file-button.component.d.ts +0 -14
  115. package/lib/components/xml-tags/xml-tag-external-video/xml-tag-external-video.component.d.ts +0 -11
  116. package/lib/components/xml-tags/xml-tag-header-inner-text-view/xml-tag-header-inner-text-view.component.d.ts +0 -10
  117. package/lib/components/xml-tags/xml-tag-header-text-view/xml-tag-header-text-view.component.d.ts +0 -10
  118. package/lib/components/xml-tags/xml-tag-html-view/xml-tag-html-view.component.d.ts +0 -7
  119. package/lib/components/xml-tags/xml-tag-rich-text-view/xml-tag-rich-text-view.component.d.ts +0 -10
  120. package/lib/components/xml-tags/xml-tag-table-view/xml-tag-table-view.component.d.ts +0 -7
  121. package/lib/components/xml-tags/xml-tag-text-view/xml-tag-text-view.component.d.ts +0 -10
  122. package/lib/components/xml-tags/xml-tag-view/xml-tag-view.component.d.ts +0 -8
  123. package/lib/consts/index.d.ts +0 -1
  124. package/lib/croco-html.module.d.ts +0 -70
  125. package/lib/extensions/AngularMaterialTableMethods.d.ts +0 -7
  126. package/lib/extensions/BodyTagsExtensions.d.ts +0 -11
  127. package/lib/extensions/BootstrapTableMethods.d.ts +0 -9
  128. package/lib/extensions/ButtonMethods.d.ts +0 -18
  129. package/lib/extensions/CustomWidgetMethods.d.ts +0 -20
  130. package/lib/extensions/DownloadButtonMethods.d.ts +0 -16
  131. package/lib/extensions/HtmlExtractionMethods.d.ts +0 -59
  132. package/lib/extensions/HtmlRawTagDataConsts.d.ts +0 -13
  133. package/lib/extensions/ImageMethods.d.ts +0 -24
  134. package/lib/extensions/InterfaceBlock.d.ts +0 -7
  135. package/lib/extensions/TableBuilder.d.ts +0 -5
  136. package/lib/extensions/TableMethods.d.ts +0 -60
  137. package/lib/extensions/Tags.d.ts +0 -16
  138. package/lib/extensions/TextMethods.d.ts +0 -29
  139. package/lib/extensions/TextSimpleMethods.d.ts +0 -26
  140. package/lib/extensions/VideoMethods.d.ts +0 -29
  141. package/lib/extensions/XmlExtensions.d.ts +0 -5
  142. package/lib/extensions/index.d.ts +0 -11
  143. package/lib/index.d.ts +0 -25
  144. package/lib/models/image-models.d.ts +0 -19
  145. package/lib/models/index.d.ts +0 -2
  146. package/lib/models/models.d.ts +0 -15
  147. package/lib/options/index.d.ts +0 -46
  148. package/lib/pipes/RichTextToHtmlPipe.d.ts +0 -8
  149. package/lib/pipes/TagToSpanPipe.d.ts +0 -7
  150. package/lib/pipes/ToHtmlBodyTagsPipe.d.ts +0 -11
  151. package/lib/pipes/ToPreviewHtmlPipe.d.ts +0 -11
  152. package/lib/pipes/index.d.ts +0 -5
  153. package/lib/pipes/sprite-icon-path.pipe.d.ts +0 -8
  154. package/lib/pipes/to-preview.pipe.d.ts +0 -11
  155. package/lib/services/CrocoHtmlFileOptionsService.d.ts +0 -10
  156. package/lib/services/HtmlViewController.d.ts +0 -11
  157. package/lib/services/PrivateFileUploadService.d.ts +0 -26
  158. package/lib/services/PrivateFilesQueryService.d.ts +0 -21
  159. package/lib/services/PublicFileUploadService.d.ts +0 -26
  160. package/lib/services/PublicFilesQueryService.d.ts +0 -49
  161. package/lib/services/blob-create.service.d.ts +0 -10
  162. package/lib/services/index.d.ts +0 -2
  163. package/lib/services/screen-width.service.d.ts +0 -10
  164. package/public-api.d.ts +0 -8
  165. package/sprites-ids.type.d.ts +0 -1
@@ -1,33 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { FormsModule } from '@angular/forms';
3
- import { CdkTextareaAutosize } from '@angular/cdk/text-field';
4
- import { MatInput } from '@angular/material/input';
5
- import { MatFormField, MatLabel } from '@angular/material/form-field';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/platform-browser";
8
- import * as i2 from "@angular/forms";
9
- export class HtmlRawEditorComponent {
10
- constructor(_sanitizer) {
11
- this._sanitizer = _sanitizer;
12
- this.onTagUpdated = new EventEmitter();
13
- }
14
- ngOnChanges(changes) {
15
- if (changes['tag'] && changes['tag'].currentValue !== changes['tag'].previousValue) {
16
- this.safeHtml = this._sanitizer.bypassSecurityTrustHtml(this.tag.innerHtml);
17
- }
18
- }
19
- onSafeHtmlChange() {
20
- this.safeHtml = this._sanitizer.bypassSecurityTrustHtml(this.tag.innerHtml);
21
- }
22
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HtmlRawEditorComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
23
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: HtmlRawEditorComponent, isStandalone: true, selector: "croco-html-html-raw-editor", inputs: { tag: "tag" }, outputs: { onTagUpdated: "onTagUpdated" }, usesOnChanges: true, ngImport: i0, template: "@if (tag.presentOrEdit) {\n <div [innerHTML]=\"safeHtml\">\n </div>\n}\n@if (!tag.presentOrEdit) {\n <div>\n <div style=\"height: 10px;\">\n </div>\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0430 \u0442\u0435\u0433\u0430\n </mat-label>\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n placeholder=\"\u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0430 \u0442\u0435\u0433\u0430\"\n [(ngModel)]=\"tag.innerHtml\"\n (ngModelChange)=\"onSafeHtmlChange()\"\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n}\n\n", styles: [".code-view.video-player{margin:0 auto;max-width:640px;width:100%;height:360px}.code-view.use-responsive ::ng-deep iframe{width:100%;height:100%}@media screen and (max-width: 768px){.code-view.use-responsive{height:300px}}@media screen and (max-width: 575px){.code-view.use-responsive{height:250px}}@media screen and (max-width: 480px){.code-view.use-responsive{height:200px}}@media screen and (max-width: 380px){.code-view.use-responsive{height:180px}}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
24
- }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HtmlRawEditorComponent, decorators: [{
26
- type: Component,
27
- args: [{ selector: 'croco-html-html-raw-editor', standalone: true, imports: [MatFormField, MatLabel, MatInput, CdkTextareaAutosize, FormsModule], template: "@if (tag.presentOrEdit) {\n <div [innerHTML]=\"safeHtml\">\n </div>\n}\n@if (!tag.presentOrEdit) {\n <div>\n <div style=\"height: 10px;\">\n </div>\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0430 \u0442\u0435\u0433\u0430\n </mat-label>\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n placeholder=\"\u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0430 \u0442\u0435\u0433\u0430\"\n [(ngModel)]=\"tag.innerHtml\"\n (ngModelChange)=\"onSafeHtmlChange()\"\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n}\n\n", styles: [".code-view.video-player{margin:0 auto;max-width:640px;width:100%;height:360px}.code-view.use-responsive ::ng-deep iframe{width:100%;height:100%}@media screen and (max-width: 768px){.code-view.use-responsive{height:300px}}@media screen and (max-width: 575px){.code-view.use-responsive{height:250px}}@media screen and (max-width: 480px){.code-view.use-responsive{height:200px}}@media screen and (max-width: 380px){.code-view.use-responsive{height:180px}}\n"] }]
28
- }], ctorParameters: () => [{ type: i1.DomSanitizer }], propDecorators: { tag: [{
29
- type: Input
30
- }], onTagUpdated: [{
31
- type: Output
32
- }] } });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1yYXctZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvci9odG1sLXJhdy1lZGl0b3IvaHRtbC1yYXctZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvci9odG1sLXJhdy1lZGl0b3IvaHRtbC1yYXctZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRWpHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7OztBQVV0RSxNQUFNLE9BQU8sc0JBQXNCO0lBVWpDLFlBQTZCLFVBQXdCO1FBQXhCLGVBQVUsR0FBVixVQUFVLENBQWM7UUFKckQsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFDO0lBSVUsQ0FBQztJQUUxRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksS0FBSyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkYsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUUsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5RSxDQUFDOytHQXBCVSxzQkFBc0I7bUdBQXRCLHNCQUFzQiw4S0NmbkMsaTFCQXdCQSxnZ0JEWFksWUFBWSw0TEFBRSxRQUFRLHNEQUFFLFFBQVEsaVVBQUUsbUJBQW1CLHdNQUFFLFdBQVc7OzRGQUVqRSxzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0UsNEJBQTRCLGNBRzFCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsQ0FBQztpRkFLN0UsR0FBRztzQkFERixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0bWxCb2R5VGFnIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL21vZGVscyc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENka1RleHRhcmVhQXV0b3NpemUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGV4dC1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCwgTWF0TGFiZWwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcm9jby1odG1sLWh0bWwtcmF3LWVkaXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9odG1sLXJhdy1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi4vZXh0ZXJuYWwtdmlkZW8tZWRpdG9yL2V4dGVybmFsLXZpZGVvLWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTWF0Rm9ybUZpZWxkLCBNYXRMYWJlbCwgTWF0SW5wdXQsIENka1RleHRhcmVhQXV0b3NpemUsIEZvcm1zTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBIdG1sUmF3RWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKVxuICB0YWc6IEh0bWxCb2R5VGFnO1xuXG4gIEBPdXRwdXQoKVxuICBvblRhZ1VwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEh0bWxCb2R5VGFnPigpO1xuXG4gIHNhZmVIdG1sOiBTYWZlSHRtbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9zYW5pdGl6ZXI6IERvbVNhbml0aXplcikgeyB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWyd0YWcnXSAmJiBjaGFuZ2VzWyd0YWcnXS5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXNbJ3RhZyddLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgIHRoaXMuc2FmZUh0bWwgPSB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodGhpcy50YWcuaW5uZXJIdG1sKTtcbiAgICB9XG4gIH1cblxuICBvblNhZmVIdG1sQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuc2FmZUh0bWwgPSB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodGhpcy50YWcuaW5uZXJIdG1sKTtcbiAgfVxufVxuIiwiQGlmICh0YWcucHJlc2VudE9yRWRpdCkge1xuICAgIDxkaXYgW2lubmVySFRNTF09XCJzYWZlSHRtbFwiPlxuICAgIDwvZGl2PlxufVxuQGlmICghdGFnLnByZXNlbnRPckVkaXQpIHtcbiAgPGRpdj5cbiAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxMHB4O1wiPlxuICAgIDwvZGl2PlxuICAgIDxkaXY+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICA8bWF0LWxhYmVsPlxuICAgICAgICAgINCS0L3Rg9GC0YDQtdC90L3Rj9GPINGA0LDQt9C80LXRgtC60LAg0YLQtdCz0LBcbiAgICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBjZGtUZXh0YXJlYUF1dG9zaXplICNhdXRvc2l6ZT1cImNka1RleHRhcmVhQXV0b3NpemVcIlxuICAgICAgICAgIGNka0F1dG9zaXplTWluUm93cz1cIjFcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwi0JLQvdGD0YLRgNC10L3QvdGP0Y8g0YDQsNC30LzQtdGC0LrQsCDRgtC10LPQsFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJ0YWcuaW5uZXJIdG1sXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNhZmVIdG1sQ2hhbmdlKClcIlxuICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxufVxuXG4iXX0=
@@ -1,108 +0,0 @@
1
- import { Component, EventEmitter, Inject, Input, Output } from '@angular/core';
2
- import { ImageMethods, FileImageTagDataConsts } from '../../../extensions';
3
- import { CrocoHtmlOptionsToken } from '../../../consts';
4
- import { MatInput } from '@angular/material/input';
5
- import { MatFormField, MatLabel } from '@angular/material/form-field';
6
- import { FileIdSelectComponent } from '../../file-id-select/file-id-select.component';
7
- import { MatIcon } from '@angular/material/icon';
8
- import { FormsModule } from '@angular/forms';
9
- import { MatButtonToggleGroup, MatButtonToggle } from '@angular/material/button-toggle';
10
- import { NgStyle } from "@angular/common";
11
- import { MatIconButton } from "@angular/material/button";
12
- import { MatSlideToggle } from "@angular/material/slide-toggle";
13
- import { Subject, takeUntil } from "rxjs";
14
- import * as i0 from "@angular/core";
15
- import * as i1 from "../../../services/screen-width.service";
16
- import * as i2 from "@angular/forms";
17
- export class ImageEditorComponent {
18
- onErrorHandler() {
19
- this.hasImageError = true;
20
- }
21
- get fileId() {
22
- return this.tag.attributes[FileImageTagDataConsts.FileIdAttrName];
23
- }
24
- set fileId(value) {
25
- this.tag.attributes[FileImageTagDataConsts.FileIdAttrName] = value;
26
- }
27
- constructor(_options, screenWidthService) {
28
- this._options = _options;
29
- this.screenWidthService = screenWidthService;
30
- this.hasImageError = false;
31
- this.searchOrEdit = "search";
32
- this.requests = [];
33
- this.imageMaxHeight = null;
34
- this.imageMaxWidth = null;
35
- this.isShowMediaRequest = false;
36
- this.unsubscribe = new Subject();
37
- this.onTagUpdated = new EventEmitter();
38
- }
39
- getSrc() {
40
- return ImageMethods.buildUrl(this.tag.attributes[FileImageTagDataConsts.FileIdAttrName], "Medium", this._options);
41
- }
42
- hasFileId() {
43
- return this.tag.attributes.hasOwnProperty(FileImageTagDataConsts.FileIdAttrName);
44
- }
45
- onFileIdChanged(fileId) {
46
- this.tag.attributes[FileImageTagDataConsts.FileIdAttrName] = fileId;
47
- this.removeImageError();
48
- }
49
- removeImageError() {
50
- this.hasImageError = false;
51
- }
52
- ngOnInit() {
53
- let attr = this.tag.attributes[FileImageTagDataConsts.ScreenMediaRequest];
54
- this.requests = ImageMethods.mediaRequestStringToArrayParser(attr);
55
- this.screenWidthService.getScreenWidth()
56
- .pipe(takeUntil(this.unsubscribe))
57
- .subscribe(screenWidth => {
58
- let imageRestrictions = ImageMethods.getImageRestrictionsByScreenSize(screenWidth, this.requests);
59
- this.imageMaxHeight = imageRestrictions.maxHeight;
60
- this.imageMaxWidth = imageRestrictions.maxWidth;
61
- });
62
- }
63
- requestChanged() {
64
- this.tag.attributes[FileImageTagDataConsts.ScreenMediaRequest] = ImageMethods.mediaRequestsArrayToString(this.requests);
65
- }
66
- addNewMediaRequest() {
67
- this.requests.push({
68
- maxScreenWidth: 0,
69
- minScreenWidth: 0,
70
- maxImageHeight: 0,
71
- maxImageWidth: 0
72
- });
73
- }
74
- deleteMediaRequest(index) {
75
- this.requests.splice(index, 1);
76
- this.requestChanged();
77
- }
78
- ngOnDestroy() {
79
- this.unsubscribe.next();
80
- this.unsubscribe.complete();
81
- }
82
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageEditorComponent, deps: [{ token: CrocoHtmlOptionsToken }, { token: i1.ScreenWidthService }], target: i0.ɵɵFactoryTarget.Component }); }
83
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ImageEditorComponent, isStandalone: true, selector: "croco-html-image-editor", inputs: { tag: "tag" }, outputs: { onTagUpdated: "onTagUpdated" }, ngImport: i0, template: "<div>\n <div style=\"height: 10px;\">\n </div>\n\n @if (hasImageError) {\n <div class=\"error-block\">\n \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043F\u043E \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u043E\u043C\u0443 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440\u0443, \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0444\u0430\u0439\u043B \u043D\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043B\u0438 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043D\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435.\n </div>\n }\n\n @if (hasFileId() && !hasImageError) {\n <div>\n <img\n [ngStyle]=\"{ 'max-height': imageMaxHeight ? imageMaxHeight + 'px' : '100%', 'max-width': imageMaxWidth ? imageMaxWidth + 'px' : '100%', }\"\n class=\"mx-auto d-block img-fluid\" [src]=\"getSrc()\" (error)=\"onErrorHandler()\" alt=\"photo\"/>\n </div>\n }\n\n @if (!hasFileId()) {\n <div>\n <h5>[\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u043D\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043E]</h5>\n </div>\n }\n\n @if(!tag.presentOrEdit) {\n <mat-slide-toggle style=\"padding: 10px 0\" [(ngModel)]=\"isShowMediaRequest\">\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043C\u0435\u0434\u0438\u0430 \u0437\u0430\u043F\u0440\u043E\u0441\u044B</mat-slide-toggle>\n }\n\n @if(isShowMediaRequest) {\n <div style=\"display: flex; flex-direction: column; gap: 20px\">\n <div class=\"media-request__header\">\n <span>\u041C\u0435\u0434\u0438\u0430 \u0437\u0430\u043F\u0440\u043E\u0441\u044B:</span>\n @if (!tag.presentOrEdit) {\n <button (click)=\"addNewMediaRequest()\" class=\"w-30\" mat-icon-button color=\"primary\">\n <mat-icon>add</mat-icon>\n </button>\n }\n </div>\n @for (request of requests; track $index) {\n <div class=\"media-request__container\">\n @if (tag.presentOrEdit) {\n <div style=\"display: flex; flex-direction: column; gap: 5px\">\n <span class=\"w-100\">\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430: {{request.minScreenWidth}}</span>\n <span class=\"w-100\">\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430: {{request.maxScreenWidth}}</span>\n <span class=\"w-100\">\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0432\u044B\u0441\u043E\u0442\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F: {{request.maxImageHeight}}</span>\n <span class=\"w-100\">\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F: {{request.maxImageWidth}}</span>\n </div>\n }\n\n @if (!tag.presentOrEdit) {\n <div style=\"width: 100%\">\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430\n </mat-label>\n <input matInput placeholder=\"\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0433\u0440\u0430\u043D\u0438\u0446\u0430 \u0448\u0438\u0440\u0438\u043D\u044B\"\n autocomplete=\"off\"\n [(ngModel)]=\"request.minScreenWidth\"\n (ngModelChange)=\"requestChanged()\">\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430\n </mat-label>\n <input matInput placeholder=\"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0433\u0440\u0430\u043D\u0438\u0446\u0430 \u0448\u0438\u0440\u0438\u043D\u044B\"\n autocomplete=\"off\"\n [(ngModel)]=\"request.maxScreenWidth\"\n (ngModelChange)=\"requestChanged()\">\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0432\u044B\u0441\u043E\u0442\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F\n </mat-label>\n <input matInput placeholder=\"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0432\u044B\u0441\u043E\u0442\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F\"\n autocomplete=\"off\"\n [(ngModel)]=\"request.maxImageHeight\"\n (ngModelChange)=\"requestChanged()\">\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F\n </mat-label>\n <input matInput placeholder=\"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F\"\n autocomplete=\"off\"\n [(ngModel)]=\"request.maxImageWidth\"\n (ngModelChange)=\"requestChanged()\">\n </mat-form-field>\n </div>\n\n <button (click)=\"deleteMediaRequest($index)\" class=\"w-30\" mat-icon-button color=\"warn\">\n <mat-icon>delete</mat-icon>\n </button>\n }\n </div>\n }\n </div>\n }\n</div>\n\n@if (!tag.presentOrEdit) {\n <div>\n <div style=\"height: 10px;\"></div>\n <div style=\"overflow-x:auto;\">\n <mat-button-toggle-group [(ngModel)]=\"searchOrEdit\">\n <mat-button-toggle value=\"search\">\n \u0418\u0441\u043A\u0430\u0442\u044C \u0444\u0430\u0439\u043B <mat-icon>search</mat-icon>\n </mat-button-toggle>\n <mat-button-toggle value=\"edit\">\n \u0423\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u043E \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440\u0443 <mat-icon>settings</mat-icon>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <div style=\"height: 10px;\"></div>\n <div [hidden]=\"searchOrEdit !== 'search'\">\n <croco-html-file-id-select\n [labelText]=\"'\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0444\u0430\u0439\u043B'\"\n [(fileId)]=\"fileId\"\n (onFileIdChanged)=\"onFileIdChanged($event)\">\n </croco-html-file-id-select>\n </div>\n <div [hidden]=\"searchOrEdit !== 'edit'\">\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0444\u0430\u0439\u043B\u0430\n </mat-label>\n <input matInput placeholder=\"\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0444\u0430\u0439\u043B\u0430\" new-autocomplete=\"off\" autocomplete=\"off\"\n [(ngModel)]=\"fileId\"\n (ngModelChange)=\"onFileIdChanged($event)\">\n </mat-form-field>\n </div>\n </div>\n </div>\n}\n", styles: [".error-block{background-color:#f32323;color:#fff;text-align:center;border-radius:10px;padding:10px}.media-request__header{align-items:center;display:flex;width:100%;justify-content:space-between}.media-request__container{display:flex;align-items:center;border-bottom:1px solid rgba(128,128,128,.7);padding-bottom:10px}@media screen and (max-width: 768px){mat-button-toggle-group{display:flex;flex-direction:column}}\n"], dependencies: [{ kind: "directive", type: MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: FileIdSelectComponent, selector: "croco-html-file-id-select", inputs: ["labelText", "fileId"], outputs: ["fileId", "onFileIdChanged"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }] }); }
84
- }
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageEditorComponent, decorators: [{
86
- type: Component,
87
- args: [{ selector: 'croco-html-image-editor', standalone: true, imports: [
88
- MatButtonToggleGroup,
89
- FormsModule,
90
- MatButtonToggle,
91
- MatIcon,
92
- FileIdSelectComponent,
93
- MatFormField,
94
- MatLabel,
95
- MatInput,
96
- NgStyle,
97
- MatIconButton,
98
- MatSlideToggle
99
- ], template: "<div>\n <div style=\"height: 10px;\">\n </div>\n\n @if (hasImageError) {\n <div class=\"error-block\">\n \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043F\u043E \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u043E\u043C\u0443 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440\u0443, \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0444\u0430\u0439\u043B \u043D\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043B\u0438 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043D\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435.\n </div>\n }\n\n @if (hasFileId() && !hasImageError) {\n <div>\n <img\n [ngStyle]=\"{ 'max-height': imageMaxHeight ? imageMaxHeight + 'px' : '100%', 'max-width': imageMaxWidth ? imageMaxWidth + 'px' : '100%', }\"\n class=\"mx-auto d-block img-fluid\" [src]=\"getSrc()\" (error)=\"onErrorHandler()\" alt=\"photo\"/>\n </div>\n }\n\n @if (!hasFileId()) {\n <div>\n <h5>[\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u043D\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043E]</h5>\n </div>\n }\n\n @if(!tag.presentOrEdit) {\n <mat-slide-toggle style=\"padding: 10px 0\" [(ngModel)]=\"isShowMediaRequest\">\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043C\u0435\u0434\u0438\u0430 \u0437\u0430\u043F\u0440\u043E\u0441\u044B</mat-slide-toggle>\n }\n\n @if(isShowMediaRequest) {\n <div style=\"display: flex; flex-direction: column; gap: 20px\">\n <div class=\"media-request__header\">\n <span>\u041C\u0435\u0434\u0438\u0430 \u0437\u0430\u043F\u0440\u043E\u0441\u044B:</span>\n @if (!tag.presentOrEdit) {\n <button (click)=\"addNewMediaRequest()\" class=\"w-30\" mat-icon-button color=\"primary\">\n <mat-icon>add</mat-icon>\n </button>\n }\n </div>\n @for (request of requests; track $index) {\n <div class=\"media-request__container\">\n @if (tag.presentOrEdit) {\n <div style=\"display: flex; flex-direction: column; gap: 5px\">\n <span class=\"w-100\">\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430: {{request.minScreenWidth}}</span>\n <span class=\"w-100\">\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430: {{request.maxScreenWidth}}</span>\n <span class=\"w-100\">\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0432\u044B\u0441\u043E\u0442\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F: {{request.maxImageHeight}}</span>\n <span class=\"w-100\">\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F: {{request.maxImageWidth}}</span>\n </div>\n }\n\n @if (!tag.presentOrEdit) {\n <div style=\"width: 100%\">\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430\n </mat-label>\n <input matInput placeholder=\"\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0433\u0440\u0430\u043D\u0438\u0446\u0430 \u0448\u0438\u0440\u0438\u043D\u044B\"\n autocomplete=\"off\"\n [(ngModel)]=\"request.minScreenWidth\"\n (ngModelChange)=\"requestChanged()\">\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430\n </mat-label>\n <input matInput placeholder=\"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0433\u0440\u0430\u043D\u0438\u0446\u0430 \u0448\u0438\u0440\u0438\u043D\u044B\"\n autocomplete=\"off\"\n [(ngModel)]=\"request.maxScreenWidth\"\n (ngModelChange)=\"requestChanged()\">\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0432\u044B\u0441\u043E\u0442\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F\n </mat-label>\n <input matInput placeholder=\"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0432\u044B\u0441\u043E\u0442\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F\"\n autocomplete=\"off\"\n [(ngModel)]=\"request.maxImageHeight\"\n (ngModelChange)=\"requestChanged()\">\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F\n </mat-label>\n <input matInput placeholder=\"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F\"\n autocomplete=\"off\"\n [(ngModel)]=\"request.maxImageWidth\"\n (ngModelChange)=\"requestChanged()\">\n </mat-form-field>\n </div>\n\n <button (click)=\"deleteMediaRequest($index)\" class=\"w-30\" mat-icon-button color=\"warn\">\n <mat-icon>delete</mat-icon>\n </button>\n }\n </div>\n }\n </div>\n }\n</div>\n\n@if (!tag.presentOrEdit) {\n <div>\n <div style=\"height: 10px;\"></div>\n <div style=\"overflow-x:auto;\">\n <mat-button-toggle-group [(ngModel)]=\"searchOrEdit\">\n <mat-button-toggle value=\"search\">\n \u0418\u0441\u043A\u0430\u0442\u044C \u0444\u0430\u0439\u043B <mat-icon>search</mat-icon>\n </mat-button-toggle>\n <mat-button-toggle value=\"edit\">\n \u0423\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u043E \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440\u0443 <mat-icon>settings</mat-icon>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <div style=\"height: 10px;\"></div>\n <div [hidden]=\"searchOrEdit !== 'search'\">\n <croco-html-file-id-select\n [labelText]=\"'\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0444\u0430\u0439\u043B'\"\n [(fileId)]=\"fileId\"\n (onFileIdChanged)=\"onFileIdChanged($event)\">\n </croco-html-file-id-select>\n </div>\n <div [hidden]=\"searchOrEdit !== 'edit'\">\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0444\u0430\u0439\u043B\u0430\n </mat-label>\n <input matInput placeholder=\"\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0444\u0430\u0439\u043B\u0430\" new-autocomplete=\"off\" autocomplete=\"off\"\n [(ngModel)]=\"fileId\"\n (ngModelChange)=\"onFileIdChanged($event)\">\n </mat-form-field>\n </div>\n </div>\n </div>\n}\n", styles: [".error-block{background-color:#f32323;color:#fff;text-align:center;border-radius:10px;padding:10px}.media-request__header{align-items:center;display:flex;width:100%;justify-content:space-between}.media-request__container{display:flex;align-items:center;border-bottom:1px solid rgba(128,128,128,.7);padding-bottom:10px}@media screen and (max-width: 768px){mat-button-toggle-group{display:flex;flex-direction:column}}\n"] }]
100
- }], ctorParameters: () => [{ type: undefined, decorators: [{
101
- type: Inject,
102
- args: [CrocoHtmlOptionsToken]
103
- }] }, { type: i1.ScreenWidthService }], propDecorators: { tag: [{
104
- type: Input
105
- }], onTagUpdated: [{
106
- type: Output
107
- }] } });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvci9pbWFnZS1lZGl0b3IvaW1hZ2UtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvci9pbWFnZS1lZGl0b3IvaW1hZ2UtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFM0UsT0FBTyxFQUFFLHFCQUFxQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDdEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUF1QjFDLE1BQU0sT0FBTyxvQkFBb0I7SUFhL0IsY0FBYztRQUNaLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFLRCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxJQUFXLE1BQU0sQ0FBQyxLQUFhO1FBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNyRSxDQUFDO0lBRUQsWUFDa0QsUUFBMEIsRUFDekQsa0JBQXNDO1FBRFAsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7UUFDekQsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQTVCekQsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsaUJBQVksR0FBRyxRQUFRLENBQUM7UUFDeEIsYUFBUSxHQUFvQixFQUFFLENBQUM7UUFDL0IsbUJBQWMsR0FBVyxJQUFJLENBQUM7UUFDOUIsa0JBQWEsR0FBVyxJQUFJLENBQUM7UUFDN0IsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVUxQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7SUFhM0MsQ0FBQztJQUVMLE1BQU07UUFDSixPQUFPLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwSCxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBYztRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDcEUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUVsRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxFQUFFO2FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ2pDLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN2QixJQUFJLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxnQ0FBZ0MsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRWxHLElBQUksQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDO1lBQ2xELElBQUksQ0FBQyxhQUFhLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLFlBQVksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDekgsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNqQixjQUFjLEVBQUUsQ0FBQztZQUNqQixjQUFjLEVBQUUsQ0FBQztZQUNqQixjQUFjLEVBQUUsQ0FBQztZQUNqQixhQUFhLEVBQUUsQ0FBQztTQUNqQixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBYTtRQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLENBQUM7K0dBckZVLG9CQUFvQixrQkE2QnJCLHFCQUFxQjttR0E3QnBCLG9CQUFvQixzSkNyQ2pDLG9vUEF5SUEsMmREakhJLG9CQUFvQixpVEFDcEIsV0FBVywrbUJBQ1gsZUFBZSw2UUFDZixPQUFPLDJJQUNQLHFCQUFxQiwrSUFDckIsWUFBWSw0TEFDWixRQUFRLHNEQUNSLFFBQVEsaVVBQ1IsT0FBTywyRUFDUCxhQUFhLDZGQUNiLGNBQWM7OzRGQUdMLG9CQUFvQjtrQkFuQmhDLFNBQVM7K0JBQ0UseUJBQXlCLGNBR3ZCLElBQUksV0FDUDt3QkFDUCxvQkFBb0I7d0JBQ3BCLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixPQUFPO3dCQUNQLHFCQUFxQjt3QkFDckIsWUFBWTt3QkFDWixRQUFRO3dCQUNSLFFBQVE7d0JBQ1IsT0FBTzt3QkFDUCxhQUFhO3dCQUNiLGNBQWM7cUJBQ2Y7OzBCQStCRSxNQUFNOzJCQUFDLHFCQUFxQjswRUFsQi9CLEdBQUc7c0JBREYsS0FBSztnQkFRTixZQUFZO3NCQURYLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW1hZ2VNZXRob2RzLCBGaWxlSW1hZ2VUYWdEYXRhQ29uc3RzIH0gZnJvbSAnLi4vLi4vLi4vZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBIdG1sQm9keVRhZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9tb2RlbHMnO1xuaW1wb3J0IHsgQ3JvY29IdG1sT3B0aW9uc1Rva2VufSBmcm9tICcuLi8uLi8uLi9jb25zdHMnO1xuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGQsIE1hdExhYmVsIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBGaWxlSWRTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi9maWxlLWlkLXNlbGVjdC9maWxlLWlkLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Ub2dnbGVHcm91cCwgTWF0QnV0dG9uVG9nZ2xlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBOZ1N0eWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgU2NyZWVuV2lkdGhTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3NjcmVlbi13aWR0aC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBNYXRJY29uQnV0dG9uIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlXCI7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgQ3JvY29IdG1sT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL29wdGlvbnMnO1xuaW1wb3J0IHsgSU1lZGlhUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nyb2NvLWh0bWwtaW1hZ2UtZWRpdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ltYWdlLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ltYWdlLWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0QnV0dG9uVG9nZ2xlR3JvdXAsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0QnV0dG9uVG9nZ2xlLFxuICAgIE1hdEljb24sXG4gICAgRmlsZUlkU2VsZWN0Q29tcG9uZW50LFxuICAgIE1hdEZvcm1GaWVsZCxcbiAgICBNYXRMYWJlbCxcbiAgICBNYXRJbnB1dCxcbiAgICBOZ1N0eWxlLFxuICAgIE1hdEljb25CdXR0b24sXG4gICAgTWF0U2xpZGVUb2dnbGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBJbWFnZUVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBoYXNJbWFnZUVycm9yID0gZmFsc2U7XG4gIHNlYXJjaE9yRWRpdCA9IFwic2VhcmNoXCI7XG4gIHJlcXVlc3RzOiBJTWVkaWFSZXF1ZXN0W10gPSBbXTtcbiAgaW1hZ2VNYXhIZWlnaHQ6IG51bWJlciA9IG51bGw7XG4gIGltYWdlTWF4V2lkdGg6IG51bWJlciA9IG51bGw7XG4gIGlzU2hvd01lZGlhUmVxdWVzdCA9IGZhbHNlO1xuICBwcml2YXRlIHVuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBASW5wdXQoKVxuICB0YWc6IEh0bWxCb2R5VGFnO1xuXG4gIG9uRXJyb3JIYW5kbGVyKCkge1xuICAgIHRoaXMuaGFzSW1hZ2VFcnJvciA9IHRydWU7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgb25UYWdVcGRhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxIdG1sQm9keVRhZz4oKTtcblxuICBwdWJsaWMgZ2V0IGZpbGVJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRhZy5hdHRyaWJ1dGVzW0ZpbGVJbWFnZVRhZ0RhdGFDb25zdHMuRmlsZUlkQXR0ck5hbWVdO1xuICB9XG5cbiAgcHVibGljIHNldCBmaWxlSWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudGFnLmF0dHJpYnV0ZXNbRmlsZUltYWdlVGFnRGF0YUNvbnN0cy5GaWxlSWRBdHRyTmFtZV0gPSB2YWx1ZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQ3JvY29IdG1sT3B0aW9uc1Rva2VuKSBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zOiBDcm9jb0h0bWxPcHRpb25zLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2NyZWVuV2lkdGhTZXJ2aWNlOiBTY3JlZW5XaWR0aFNlcnZpY2UsXG4gICkgeyB9XG5cbiAgZ2V0U3JjKCkge1xuICAgIHJldHVybiBJbWFnZU1ldGhvZHMuYnVpbGRVcmwodGhpcy50YWcuYXR0cmlidXRlc1tGaWxlSW1hZ2VUYWdEYXRhQ29uc3RzLkZpbGVJZEF0dHJOYW1lXSwgXCJNZWRpdW1cIiwgdGhpcy5fb3B0aW9ucyk7XG4gIH1cblxuICBoYXNGaWxlSWQoKSB7XG4gICAgcmV0dXJuIHRoaXMudGFnLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkoRmlsZUltYWdlVGFnRGF0YUNvbnN0cy5GaWxlSWRBdHRyTmFtZSk7XG4gIH1cblxuICBvbkZpbGVJZENoYW5nZWQoZmlsZUlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRhZy5hdHRyaWJ1dGVzW0ZpbGVJbWFnZVRhZ0RhdGFDb25zdHMuRmlsZUlkQXR0ck5hbWVdID0gZmlsZUlkO1xuICAgIHRoaXMucmVtb3ZlSW1hZ2VFcnJvcigpO1xuICB9XG5cbiAgcmVtb3ZlSW1hZ2VFcnJvcigpIHtcbiAgICB0aGlzLmhhc0ltYWdlRXJyb3IgPSBmYWxzZTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGxldCBhdHRyID0gdGhpcy50YWcuYXR0cmlidXRlc1tGaWxlSW1hZ2VUYWdEYXRhQ29uc3RzLlNjcmVlbk1lZGlhUmVxdWVzdF07XG4gICAgdGhpcy5yZXF1ZXN0cyA9IEltYWdlTWV0aG9kcy5tZWRpYVJlcXVlc3RTdHJpbmdUb0FycmF5UGFyc2VyKGF0dHIpXG5cbiAgICB0aGlzLnNjcmVlbldpZHRoU2VydmljZS5nZXRTY3JlZW5XaWR0aCgpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKHNjcmVlbldpZHRoID0+IHtcbiAgICAgICAgbGV0IGltYWdlUmVzdHJpY3Rpb25zID0gSW1hZ2VNZXRob2RzLmdldEltYWdlUmVzdHJpY3Rpb25zQnlTY3JlZW5TaXplKHNjcmVlbldpZHRoLCB0aGlzLnJlcXVlc3RzKTtcblxuICAgICAgICB0aGlzLmltYWdlTWF4SGVpZ2h0ID0gaW1hZ2VSZXN0cmljdGlvbnMubWF4SGVpZ2h0O1xuICAgICAgICB0aGlzLmltYWdlTWF4V2lkdGggPSBpbWFnZVJlc3RyaWN0aW9ucy5tYXhXaWR0aDtcbiAgICAgIH0pO1xuICB9XG5cbiAgcmVxdWVzdENoYW5nZWQoKSB7XG4gICAgdGhpcy50YWcuYXR0cmlidXRlc1tGaWxlSW1hZ2VUYWdEYXRhQ29uc3RzLlNjcmVlbk1lZGlhUmVxdWVzdF0gPSBJbWFnZU1ldGhvZHMubWVkaWFSZXF1ZXN0c0FycmF5VG9TdHJpbmcodGhpcy5yZXF1ZXN0cylcbiAgfVxuXG4gIGFkZE5ld01lZGlhUmVxdWVzdCgpIHtcbiAgICB0aGlzLnJlcXVlc3RzLnB1c2goe1xuICAgICAgbWF4U2NyZWVuV2lkdGg6IDAsXG4gICAgICBtaW5TY3JlZW5XaWR0aDogMCxcbiAgICAgIG1heEltYWdlSGVpZ2h0OiAwLFxuICAgICAgbWF4SW1hZ2VXaWR0aDogMFxuICAgIH0pXG4gIH1cblxuICBkZWxldGVNZWRpYVJlcXVlc3QoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMucmVxdWVzdHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLnJlcXVlc3RDaGFuZ2VkKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxkaXY+XG4gIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwcHg7XCI+XG4gIDwvZGl2PlxuXG4gIEBpZiAoaGFzSW1hZ2VFcnJvcikge1xuICAgIDxkaXYgY2xhc3M9XCJlcnJvci1ibG9ja1wiPlxuICAgICAg0JjQt9C+0LHRgNCw0LbQtdC90LjQtSDQvdC1INC90LDQudC00LXQvdC+INC/0L4g0YPQutCw0LfQsNC90L3QvtC80YMg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDRgywg0LLQvtC30LzQvtC20L3QviDRhNCw0LnQuyDQvdC1INGB0YPRidC10YHRgtCy0YPQtdGCINC40LvQuCDQvtGC0YHRg9GC0YHRgtCy0YPQtdGCINC90LAg0YHQtdGA0LLQtdGA0LUuXG4gICAgPC9kaXY+XG4gIH1cblxuICBAaWYgKGhhc0ZpbGVJZCgpICYmICFoYXNJbWFnZUVycm9yKSB7XG4gICAgPGRpdj5cbiAgICAgIDxpbWdcbiAgICAgICAgW25nU3R5bGVdPVwieyAnbWF4LWhlaWdodCc6IGltYWdlTWF4SGVpZ2h0ID8gaW1hZ2VNYXhIZWlnaHQgKyAncHgnIDogJzEwMCUnLCAnbWF4LXdpZHRoJzogaW1hZ2VNYXhXaWR0aCA/IGltYWdlTWF4V2lkdGggKyAncHgnIDogJzEwMCUnLCB9XCJcbiAgICAgICAgY2xhc3M9XCJteC1hdXRvIGQtYmxvY2sgaW1nLWZsdWlkXCIgW3NyY109XCJnZXRTcmMoKVwiIChlcnJvcik9XCJvbkVycm9ySGFuZGxlcigpXCIgYWx0PVwicGhvdG9cIi8+XG4gICAgPC9kaXY+XG4gIH1cblxuICBAaWYgKCFoYXNGaWxlSWQoKSkge1xuICAgIDxkaXY+XG4gICAgICA8aDU+W9CY0LfQvtCx0YDQsNC20LXQvdC40LUg0L3QtSDQstGL0LHRgNCw0L3Qvl08L2g1PlxuICAgIDwvZGl2PlxuICB9XG5cbiAgQGlmKCF0YWcucHJlc2VudE9yRWRpdCkge1xuICAgIDxtYXQtc2xpZGUtdG9nZ2xlIHN0eWxlPVwicGFkZGluZzogMTBweCAwXCIgWyhuZ01vZGVsKV09XCJpc1Nob3dNZWRpYVJlcXVlc3RcIj7Qn9C+0LrQsNC30YvQstCw0YLRjCDQvNC10LTQuNCwINC30LDQv9GA0L7RgdGLPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICB9XG5cbiAgQGlmKGlzU2hvd01lZGlhUmVxdWVzdCkge1xuICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDIwcHhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtZWRpYS1yZXF1ZXN0X19oZWFkZXJcIj5cbiAgICAgICAgPHNwYW4+0JzQtdC00LjQsCDQt9Cw0L/RgNC+0YHRizo8L3NwYW4+XG4gICAgICAgIEBpZiAoIXRhZy5wcmVzZW50T3JFZGl0KSB7XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYWRkTmV3TWVkaWFSZXF1ZXN0KClcIiBjbGFzcz1cInctMzBcIiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICA8bWF0LWljb24+YWRkPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICBAZm9yIChyZXF1ZXN0IG9mIHJlcXVlc3RzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lZGlhLXJlcXVlc3RfX2NvbnRhaW5lclwiPlxuICAgICAgICAgIEBpZiAodGFnLnByZXNlbnRPckVkaXQpIHtcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDVweFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInctMTAwXCI+0JzQuNC90LjQvNCw0LvRjNC90LDRjyDRiNC40YDQuNC90LA6IHt7cmVxdWVzdC5taW5TY3JlZW5XaWR0aH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInctMTAwXCI+0JzQsNC60YHQuNC80LDQu9GM0L3QsNGPINGI0LjRgNC40L3QsDoge3tyZXF1ZXN0Lm1heFNjcmVlbldpZHRofX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidy0xMDBcIj7QnNCw0LrRgdC40LzQsNC70YzQvdCw0Y8g0LLRi9GB0L7RgtCwINC40LfQvtCx0YDQsNC20LXQvdC40Y86IHt7cmVxdWVzdC5tYXhJbWFnZUhlaWdodH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInctMTAwXCI+0JzQsNC60YHQuNC80LDQu9GM0L3QsNGPINGI0LjRgNC40L3QsCDQuNC30L7QsdGA0LDQttC10L3QuNGPOiB7e3JlcXVlc3QubWF4SW1hZ2VXaWR0aH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmICghdGFnLnByZXNlbnRPckVkaXQpIHtcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDogMTAwJVwiPlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICDQnNC40L3QuNC80LDQu9GM0L3QsNGPINGI0LjRgNC40L3QsFxuICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cItCc0LjQvdC40LzQsNC70YzQvdCw0Y8g0LPRgNCw0L3QuNGG0LAg0YjQuNGA0LjQvdGLXCJcbiAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyZXF1ZXN0Lm1pblNjcmVlbldpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicmVxdWVzdENoYW5nZWQoKVwiPlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgINCc0LDQutGB0LjQvNCw0LvRjNC90LDRjyDRiNC40YDQuNC90LBcbiAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCLQnNCw0LrRgdC40LzQsNC70YzQvdCw0Y8g0LPRgNCw0L3QuNGG0LAg0YjQuNGA0LjQvdGLXCJcbiAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyZXF1ZXN0Lm1heFNjcmVlbldpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicmVxdWVzdENoYW5nZWQoKVwiPlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgINCc0LDQutGB0LjQvNCw0LvRjNC90LDRjyDQstGL0YHQvtGC0LAg0LjQt9C+0LHRgNCw0LbQtdC90LjRj1xuICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cItCc0LDQutGB0LjQvNCw0LvRjNC90LDRjyDQstGL0YHQvtGC0LAg0LjQt9C+0LHRgNCw0LbQtdC90LjRj1wiXG4gICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicmVxdWVzdC5tYXhJbWFnZUhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInJlcXVlc3RDaGFuZ2VkKClcIj5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICDQnNCw0LrRgdC40LzQsNC70YzQvdCw0Y8g0YjQuNGA0LjQvdCwINC40LfQvtCx0YDQsNC20LXQvdC40Y9cbiAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCLQnNCw0LrRgdC40LzQsNC70YzQvdCw0Y8g0YjQuNGA0LjQvdCwINC40LfQvtCx0YDQsNC20LXQvdC40Y9cIlxuICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJlcXVlc3QubWF4SW1hZ2VXaWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInJlcXVlc3RDaGFuZ2VkKClcIj5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkZWxldGVNZWRpYVJlcXVlc3QoJGluZGV4KVwiIGNsYXNzPVwidy0zMFwiIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cIndhcm5cIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cblxuQGlmICghdGFnLnByZXNlbnRPckVkaXQpIHtcbiAgPGRpdj5cbiAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxMHB4O1wiPjwvZGl2PlxuICAgIDxkaXYgc3R5bGU9XCJvdmVyZmxvdy14OmF1dG87XCI+XG4gICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgWyhuZ01vZGVsKV09XCJzZWFyY2hPckVkaXRcIj5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwic2VhcmNoXCI+XG4gICAgICAgICAg0JjRgdC60LDRgtGMINGE0LDQudC7IDxtYXQtaWNvbj5zZWFyY2g8L21hdC1pY29uPlxuICAgICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJlZGl0XCI+XG4gICAgICAgICAg0KPQutCw0LfQsNGC0Ywg0L/QviDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNGDIDxtYXQtaWNvbj5zZXR0aW5nczwvbWF0LWljb24+XG4gICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwcHg7XCI+PC9kaXY+XG4gICAgPGRpdiBbaGlkZGVuXT1cInNlYXJjaE9yRWRpdCAhPT0gJ3NlYXJjaCdcIj5cbiAgICAgIDxjcm9jby1odG1sLWZpbGUtaWQtc2VsZWN0XG4gICAgICAgIFtsYWJlbFRleHRdPVwiJ9CS0YvQsdGA0LDRgtGMINGE0LDQudC7J1wiXG4gICAgICAgIFsoZmlsZUlkKV09XCJmaWxlSWRcIlxuICAgICAgICAob25GaWxlSWRDaGFuZ2VkKT1cIm9uRmlsZUlkQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICA8L2Nyb2NvLWh0bWwtZmlsZS1pZC1zZWxlY3Q+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBbaGlkZGVuXT1cInNlYXJjaE9yRWRpdCAhPT0gJ2VkaXQnXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgIDxtYXQtbGFiZWw+XG4gICAgICAgICAgICDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRhNCw0LnQu9CwXG4gICAgICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwi0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0YTQsNC50LvQsFwiIG5ldy1hdXRvY29tcGxldGU9XCJvZmZcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWxlSWRcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25GaWxlSWRDaGFuZ2VkKCRldmVudClcIj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbn1cbiJdfQ==
@@ -1,9 +0,0 @@
1
- export * from './external-video-editor/external-video-editor.component';
2
- export * from './html-raw-editor/html-raw-editor.component';
3
- export * from './image-editor/image-editor.component';
4
- export * from './main-editor/main-editor.component';
5
- export * from './main-editor-block/main-editor-block.component';
6
- export * from './text-editor/text-editor.component';
7
- export * from './visual-editor/visual-editor.component';
8
- export * from './custom-widget-editor/custom-widget-editor.component';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcm9jby1odG1sL3NyYy9saWIvY29tcG9uZW50cy9lZGl0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5REFBeUQsQ0FBQTtBQUN2RSxjQUFjLDZDQUE2QyxDQUFBO0FBQzNELGNBQWMsdUNBQXVDLENBQUE7QUFDckQsY0FBYyxxQ0FBcUMsQ0FBQTtBQUNuRCxjQUFjLGlEQUFpRCxDQUFBO0FBQy9ELGNBQWMscUNBQXFDLENBQUE7QUFDbkQsY0FBYyx5Q0FBeUMsQ0FBQTtBQUN2RCxjQUFjLHVEQUF1RCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9leHRlcm5hbC12aWRlby1lZGl0b3IvZXh0ZXJuYWwtdmlkZW8tZWRpdG9yLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vaHRtbC1yYXctZWRpdG9yL2h0bWwtcmF3LWVkaXRvci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2ltYWdlLWVkaXRvci9pbWFnZS1lZGl0b3IuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9tYWluLWVkaXRvci9tYWluLWVkaXRvci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL21haW4tZWRpdG9yLWJsb2NrL21haW4tZWRpdG9yLWJsb2NrLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vdGV4dC1lZGl0b3IvdGV4dC1lZGl0b3IuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi92aXN1YWwtZWRpdG9yL3Zpc3VhbC1lZGl0b3IuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9jdXN0b20td2lkZ2V0LWVkaXRvci9jdXN0b20td2lkZ2V0LWVkaXRvci5jb21wb25lbnQnXG4iXX0=
@@ -1,120 +0,0 @@
1
- import { Component, EventEmitter, Inject, Input, Output, ViewChild } from '@angular/core';
2
- import { VisualEditorComponent } from '../visual-editor/visual-editor.component';
3
- import { MatCardModule } from '@angular/material/card';
4
- import { MatButton } from '@angular/material/button';
5
- import { FormsModule } from '@angular/forms';
6
- import { CdkTextareaAutosize } from '@angular/cdk/text-field';
7
- import { MatInput } from '@angular/material/input';
8
- import { MatFormField, MatLabel } from '@angular/material/form-field';
9
- import { MatTabsModule } from '@angular/material/tabs';
10
- import { HtmlViewComponent } from "../../html-view/html-view.component";
11
- import { SpriteIconPathPipe } from "../../../pipes/sprite-icon-path.pipe";
12
- import { HtmlEditorSettingsModalComponent } from "../html-editor-settings-modal/html-editor-settings-modal.component";
13
- import { MatIcon } from "@angular/material/icon";
14
- import { CrocoHtmlOptionsToken } from '../../../consts';
15
- import * as i0 from "@angular/core";
16
- import * as i1 from "ngx-clipboard";
17
- import * as i2 from "@angular/material/snack-bar";
18
- import * as i3 from "@angular/material/dialog";
19
- import * as i4 from "../../../services/CrocoHtmlFileOptionsService";
20
- import * as i5 from "@angular/material/tabs";
21
- import * as i6 from "@angular/forms";
22
- import * as i7 from "@angular/material/card";
23
- export class MainEditorComponent {
24
- constructor(_clipboardService, _snackBar, _cdref, _dialog, _htmlSettingsService, options) {
25
- this._clipboardService = _clipboardService;
26
- this._snackBar = _snackBar;
27
- this._cdref = _cdref;
28
- this._dialog = _dialog;
29
- this._htmlSettingsService = _htmlSettingsService;
30
- this.visualEditorRendered = false;
31
- this.showMarkUp = true;
32
- this.useHtmlRaw = false;
33
- this.html = "";
34
- this.onHtmlChanged = new EventEmitter();
35
- this.showSettingsButton = false;
36
- this.showSettingsButton = options.showSettingsButton;
37
- }
38
- ngAfterViewInit() {
39
- this.recalculateBodyTags();
40
- }
41
- ngAfterContentChecked() {
42
- this._cdref.detectChanges();
43
- }
44
- visualEditorRenderedHandler() {
45
- this.visualEditorRendered = true;
46
- this.recalculateBodyTags();
47
- }
48
- onHtmlChangedHandler(html) {
49
- this.html = html;
50
- this.onHtmlChanged.emit(html);
51
- }
52
- textAreaModelChangedHandler() {
53
- this.recalculateBodyTags();
54
- this.onHtmlChangedHandler(this.html);
55
- }
56
- recalculateBodyTags() {
57
- this.visualEditor.html = this.html;
58
- this.visualEditor.recalculateBodyTags();
59
- this._cdref.markForCheck();
60
- }
61
- copyMarkUp() {
62
- this._snackBar.open("Разметка скопирована в буфер обмена", "Закрыть", { duration: 1500 });
63
- this._clipboardService.copy(this.html);
64
- }
65
- ngOnInit() {
66
- this.visualEditor.recalculateBodyTags();
67
- }
68
- openSettingsModal() {
69
- this._dialog
70
- .open(HtmlEditorSettingsModalComponent, {
71
- height: '300px',
72
- })
73
- .afterClosed()
74
- .subscribe((data) => {
75
- if (!data) {
76
- return;
77
- }
78
- this._htmlSettingsService.set({
79
- usePrivateFiles: data.usePrivateFiles,
80
- applicationId: data.applicationId === '' ? null : data.applicationId,
81
- });
82
- });
83
- }
84
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MainEditorComponent, deps: [{ token: i1.ClipboardService }, { token: i2.MatSnackBar }, { token: i0.ChangeDetectorRef }, { token: i3.MatDialog }, { token: i4.CrocoHtmlFileOptionsService }, { token: CrocoHtmlOptionsToken }], target: i0.ɵɵFactoryTarget.Component }); }
85
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MainEditorComponent, isStandalone: true, selector: "croco-html-main-editor", inputs: { showMarkUp: "showMarkUp", useHtmlRaw: "useHtmlRaw", html: "html" }, outputs: { html: "html", onHtmlChanged: "onHtmlChanged" }, viewQueries: [{ propertyName: "visualEditor", first: true, predicate: ["visualEditor"], descendants: true, static: true }], ngImport: i0, template: "<mat-tab-group mat-stretch-tabs=\"false\" mat-align-tabs=\"start\" style=\"position: relative\">\n <mat-tab>\n <ng-template mat-tab-label>\n <svg class=\"custom-icon\" width=\"32\" height=\"26\">\n <use [attr.xlink:href]=\"'visual-editor-tab' | spriteIconPath\"></use>\n </svg>\n </ng-template>\n\n <div style=\"height: 20px;\"></div>\n\n <croco-visual-editor #visualEditor [useHtmlRaw]=\"true\" [html]=\"html\" (onHtmlChanged)=\"onHtmlChangedHandler($event)\"\n (rendered)=\"visualEditorRenderedHandler()\">\n </croco-visual-editor>\n\n <div style=\"height: 20px;\"></div>\n </mat-tab>\n\n <mat-tab>\n <ng-template mat-tab-label>\n <svg class=\"custom-icon\" width=\"32\" height=\"26\">\n <use [attr.xlink:href]=\"'source-code-tab' | spriteIconPath\"></use>\n </svg>\n </ng-template>\n\n <div style=\"height: 10px;\"></div>\n @if (visualEditorRendered) {\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434</mat-label>\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\" cdkAutosizeMinRows=\"1\"\n placeholder=\"\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434\" [(ngModel)]=\"html\" (ngModelChange)=\"textAreaModelChangedHandler()\"></textarea>\n </mat-form-field>\n </div>\n }\n\n <button (click)=\"copyMarkUp()\" mat-raised-button color=\"primary\">\n \u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0443\n </button>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <svg class=\"custom-icon\" width=\"32\" height=\"30\">\n <use [attr.xlink:href]=\"'viewer-tab' | spriteIconPath\"></use>\n </svg>\n </ng-template>\n\n\n <mat-card style=\"padding: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <croco-html-view [html]=\"html\">\n </croco-html-view>\n </mat-card-content>\n </mat-card>\n </mat-tab>\n</mat-tab-group>\n\n<div [hidden]=\"!showSettingsButton\">\n <mat-icon class=\"settings\" (click)=\"openSettingsModal()\">settings</mat-icon>\n</div>\n", styles: [":host ::ng-deep .mdc-tab.mat-mdc-tab{background-color:#f7f7fa}:host ::ng-deep .mdc-tab.mat-mdc-tab .custom-icon{fill:#323e8b}:host ::ng-deep .mdc-tab.mat-mdc-tab:hover{background-color:#f7f7fa}:host ::ng-deep .mdc-tab.mat-mdc-tab:hover .custom-icon{fill:#747ebf}:host ::ng-deep .mdc-tab.mat-mdc-tab.mdc-tab--active{background-color:#323e8b}:host ::ng-deep .mdc-tab.mat-mdc-tab.mdc-tab--active svg.custom-icon{fill:#fff}:host ::ng-deep div.mat-mdc-tab-labels{justify-content:center}:host{position:relative}:host ::ng-deep .mat-expansion-panel,:host ::ng-deep .mat-mdc-tab-body-content,:host ::ng-deep .mat-mdc-tab-body,:host ::ng-deep .mat-mdc-tab-body-wrapper{overflow:visible}.example-list{width:500px;max-width:100%;border:solid 1px #ccc;min-height:60px;display:block;background:#fff;border-radius:4px;overflow:hidden}.example-box{padding:20px 10px;border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;cursor:move;background:#fff;font-size:14px}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.settings{position:absolute;top:20px;right:20px;cursor:pointer;z-index:1000}\n"], dependencies: [{ kind: "ngmodule", type: MatTabsModule }, { kind: "directive", type: i5.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i5.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i5.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: VisualEditorComponent, selector: "croco-visual-editor", inputs: ["showMarkUp", "useHtmlRaw", "html"], outputs: ["html", "onHtmlChanged", "rendered"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i7.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i7.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: HtmlViewComponent, selector: "croco-html-view", inputs: ["html"] }, { kind: "pipe", type: SpriteIconPathPipe, name: "spriteIconPath" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
86
- }
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MainEditorComponent, decorators: [{
88
- type: Component,
89
- args: [{ selector: 'croco-html-main-editor', standalone: true, imports: [
90
- MatTabsModule,
91
- VisualEditorComponent,
92
- MatFormField,
93
- MatLabel,
94
- MatInput,
95
- CdkTextareaAutosize,
96
- FormsModule,
97
- MatButton,
98
- MatCardModule,
99
- HtmlViewComponent,
100
- SpriteIconPathPipe,
101
- MatIcon
102
- ], template: "<mat-tab-group mat-stretch-tabs=\"false\" mat-align-tabs=\"start\" style=\"position: relative\">\n <mat-tab>\n <ng-template mat-tab-label>\n <svg class=\"custom-icon\" width=\"32\" height=\"26\">\n <use [attr.xlink:href]=\"'visual-editor-tab' | spriteIconPath\"></use>\n </svg>\n </ng-template>\n\n <div style=\"height: 20px;\"></div>\n\n <croco-visual-editor #visualEditor [useHtmlRaw]=\"true\" [html]=\"html\" (onHtmlChanged)=\"onHtmlChangedHandler($event)\"\n (rendered)=\"visualEditorRenderedHandler()\">\n </croco-visual-editor>\n\n <div style=\"height: 20px;\"></div>\n </mat-tab>\n\n <mat-tab>\n <ng-template mat-tab-label>\n <svg class=\"custom-icon\" width=\"32\" height=\"26\">\n <use [attr.xlink:href]=\"'source-code-tab' | spriteIconPath\"></use>\n </svg>\n </ng-template>\n\n <div style=\"height: 10px;\"></div>\n @if (visualEditorRendered) {\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434</mat-label>\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\" cdkAutosizeMinRows=\"1\"\n placeholder=\"\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434\" [(ngModel)]=\"html\" (ngModelChange)=\"textAreaModelChangedHandler()\"></textarea>\n </mat-form-field>\n </div>\n }\n\n <button (click)=\"copyMarkUp()\" mat-raised-button color=\"primary\">\n \u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0443\n </button>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <svg class=\"custom-icon\" width=\"32\" height=\"30\">\n <use [attr.xlink:href]=\"'viewer-tab' | spriteIconPath\"></use>\n </svg>\n </ng-template>\n\n\n <mat-card style=\"padding: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <croco-html-view [html]=\"html\">\n </croco-html-view>\n </mat-card-content>\n </mat-card>\n </mat-tab>\n</mat-tab-group>\n\n<div [hidden]=\"!showSettingsButton\">\n <mat-icon class=\"settings\" (click)=\"openSettingsModal()\">settings</mat-icon>\n</div>\n", styles: [":host ::ng-deep .mdc-tab.mat-mdc-tab{background-color:#f7f7fa}:host ::ng-deep .mdc-tab.mat-mdc-tab .custom-icon{fill:#323e8b}:host ::ng-deep .mdc-tab.mat-mdc-tab:hover{background-color:#f7f7fa}:host ::ng-deep .mdc-tab.mat-mdc-tab:hover .custom-icon{fill:#747ebf}:host ::ng-deep .mdc-tab.mat-mdc-tab.mdc-tab--active{background-color:#323e8b}:host ::ng-deep .mdc-tab.mat-mdc-tab.mdc-tab--active svg.custom-icon{fill:#fff}:host ::ng-deep div.mat-mdc-tab-labels{justify-content:center}:host{position:relative}:host ::ng-deep .mat-expansion-panel,:host ::ng-deep .mat-mdc-tab-body-content,:host ::ng-deep .mat-mdc-tab-body,:host ::ng-deep .mat-mdc-tab-body-wrapper{overflow:visible}.example-list{width:500px;max-width:100%;border:solid 1px #ccc;min-height:60px;display:block;background:#fff;border-radius:4px;overflow:hidden}.example-box{padding:20px 10px;border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;cursor:move;background:#fff;font-size:14px}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.settings{position:absolute;top:20px;right:20px;cursor:pointer;z-index:1000}\n"] }]
103
- }], ctorParameters: () => [{ type: i1.ClipboardService }, { type: i2.MatSnackBar }, { type: i0.ChangeDetectorRef }, { type: i3.MatDialog }, { type: i4.CrocoHtmlFileOptionsService }, { type: undefined, decorators: [{
104
- type: Inject,
105
- args: [CrocoHtmlOptionsToken]
106
- }] }], propDecorators: { visualEditor: [{
107
- type: ViewChild,
108
- args: ["visualEditor", { static: true }]
109
- }], showMarkUp: [{
110
- type: Input
111
- }], useHtmlRaw: [{
112
- type: Input
113
- }], html: [{
114
- type: Input
115
- }, {
116
- type: Output
117
- }], onHtmlChanged: [{
118
- type: Output
119
- }] } });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JvY28taHRtbC9zcmMvbGliL2NvbXBvbmVudHMvZWRpdG9yL21haW4tZWRpdG9yL21haW4tZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvci9tYWluLWVkaXRvci9tYWluLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBRXRILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7O0FBc0J4RCxNQUFNLE9BQU8sbUJBQW1CO0lBc0I5QixZQUE2QixpQkFBbUMsRUFDN0MsU0FBc0IsRUFDdEIsTUFBeUIsRUFDekIsT0FBa0IsRUFDbEIsb0JBQWlELEVBQ25DLE9BQXlCO1FBTDdCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDN0MsY0FBUyxHQUFULFNBQVMsQ0FBYTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUN6QixZQUFPLEdBQVAsT0FBTyxDQUFXO1FBQ2xCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBNkI7UUF4QnBFLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQU03QixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBR2xCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFJbkIsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUdsQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFM0MsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBUXpCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUM7SUFDdkQsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELDJCQUEyQjtRQUN6QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxJQUFZO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCwyQkFBMkI7UUFDekIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMxRixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLE9BQU87YUFDVCxJQUFJLENBQUMsZ0NBQWdDLEVBQ3BDO1lBQ0UsTUFBTSxFQUFFLE9BQU87U0FDaEIsQ0FBQzthQUNILFdBQVcsRUFBRTthQUNiLFNBQVMsQ0FBQyxDQUFDLElBQWdDLEVBQUUsRUFBRTtZQUM5QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ1YsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDO2dCQUM1QixlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7Z0JBQ3JDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYTthQUNyRSxDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7K0dBdEZVLG1CQUFtQixrTEEyQnBCLHFCQUFxQjttR0EzQnBCLG1CQUFtQix1VkNuRGhDLDJxRUEyREEsNGlERHRCSSxhQUFhLHN1QkFDYixxQkFBcUIsOEpBQ3JCLFlBQVksNExBQ1osUUFBUSxzREFDUixRQUFRLGlVQUNSLG1CQUFtQix3TUFDbkIsV0FBVywrbUJBQ1gsU0FBUyxnTEFDVCxhQUFhLDJOQUNiLGlCQUFpQix5RUFDakIsa0JBQWtCLHVEQUNsQixPQUFPOzs0RkFHRSxtQkFBbUI7a0JBcEIvQixTQUFTOytCQUNFLHdCQUF3QixjQUd0QixJQUFJLFdBQ1A7d0JBQ1AsYUFBYTt3QkFDYixxQkFBcUI7d0JBQ3JCLFlBQVk7d0JBQ1osUUFBUTt3QkFDUixRQUFRO3dCQUNSLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxTQUFTO3dCQUNULGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixrQkFBa0I7d0JBQ2xCLE9BQU87cUJBQ1I7OzBCQTZCRSxNQUFNOzJCQUFDLHFCQUFxQjt5Q0F0Qi9CLFlBQVk7c0JBRFgsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUkzQyxVQUFVO3NCQURULEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUtOLElBQUk7c0JBRkgsS0FBSzs7c0JBQ0wsTUFBTTtnQkFJUCxhQUFhO3NCQURaLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBDbGlwYm9hcmRTZXJ2aWNlIH0gZnJvbSAnbmd4LWNsaXBib2FyZCc7XG5pbXBvcnQgeyBWaXN1YWxFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi92aXN1YWwtZWRpdG9yL3Zpc3VhbC1lZGl0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdENhcmRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENka1RleHRhcmVhQXV0b3NpemUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGV4dC1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCwgTWF0TGFiZWwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IEh0bWxWaWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2h0bWwtdmlldy9odG1sLXZpZXcuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBTcHJpdGVJY29uUGF0aFBpcGUgfSBmcm9tIFwiLi4vLi4vLi4vcGlwZXMvc3ByaXRlLWljb24tcGF0aC5waXBlXCI7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XG5pbXBvcnQgeyBIdG1sRWRpdG9yU2V0dGluZ3NNb2RhbENvbXBvbmVudCB9IGZyb20gXCIuLi9odG1sLWVkaXRvci1zZXR0aW5ncy1tb2RhbC9odG1sLWVkaXRvci1zZXR0aW5ncy1tb2RhbC5jb21wb25lbnRcIjtcbmltcG9ydCB7IENyb2NvSHRtbEVkaXRvckZpbGVPcHRpb25zLCBDcm9jb0h0bWxPcHRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL29wdGlvbnNcIjtcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHsgQ3JvY29IdG1sRmlsZU9wdGlvbnNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL0Nyb2NvSHRtbEZpbGVPcHRpb25zU2VydmljZVwiO1xuaW1wb3J0IHsgQ3JvY29IdG1sT3B0aW9uc1Rva2VuIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3JvY28taHRtbC1tYWluLWVkaXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYWluLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21haW4tZWRpdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXRUYWJzTW9kdWxlLFxuICAgIFZpc3VhbEVkaXRvckNvbXBvbmVudCxcbiAgICBNYXRGb3JtRmllbGQsXG4gICAgTWF0TGFiZWwsXG4gICAgTWF0SW5wdXQsXG4gICAgQ2RrVGV4dGFyZWFBdXRvc2l6ZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRCdXR0b24sXG4gICAgTWF0Q2FyZE1vZHVsZSxcbiAgICBIdG1sVmlld0NvbXBvbmVudCxcbiAgICBTcHJpdGVJY29uUGF0aFBpcGUsXG4gICAgTWF0SWNvblxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE1haW5FZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudENoZWNrZWQsIEFmdGVyVmlld0luaXQge1xuXG4gIHZpc3VhbEVkaXRvclJlbmRlcmVkID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZChcInZpc3VhbEVkaXRvclwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICB2aXN1YWxFZGl0b3I6IFZpc3VhbEVkaXRvckNvbXBvbmVudDtcblxuICBASW5wdXQoKVxuICBzaG93TWFya1VwID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICB1c2VIdG1sUmF3ID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgQE91dHB1dCgpXG4gIGh0bWw6IHN0cmluZyA9IFwiXCI7XG5cbiAgQE91dHB1dCgpXG4gIG9uSHRtbENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBzaG93U2V0dGluZ3NCdXR0b24gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9jbGlwYm9hcmRTZXJ2aWNlOiBDbGlwYm9hcmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3NuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jZHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaHRtbFNldHRpbmdzU2VydmljZTogQ3JvY29IdG1sRmlsZU9wdGlvbnNTZXJ2aWNlLFxuICAgIEBJbmplY3QoQ3JvY29IdG1sT3B0aW9uc1Rva2VuKSBvcHRpb25zOiBDcm9jb0h0bWxPcHRpb25zKSB7XG4gICAgdGhpcy5zaG93U2V0dGluZ3NCdXR0b24gPSBvcHRpb25zLnNob3dTZXR0aW5nc0J1dHRvbjtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlY2FsY3VsYXRlQm9keVRhZ3MoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jZHJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB2aXN1YWxFZGl0b3JSZW5kZXJlZEhhbmRsZXIoKSB7XG4gICAgdGhpcy52aXN1YWxFZGl0b3JSZW5kZXJlZCA9IHRydWU7XG4gICAgdGhpcy5yZWNhbGN1bGF0ZUJvZHlUYWdzKCk7XG4gIH1cblxuICBvbkh0bWxDaGFuZ2VkSGFuZGxlcihodG1sOiBzdHJpbmcpIHtcbiAgICB0aGlzLmh0bWwgPSBodG1sO1xuICAgIHRoaXMub25IdG1sQ2hhbmdlZC5lbWl0KGh0bWwpO1xuICB9XG5cbiAgdGV4dEFyZWFNb2RlbENoYW5nZWRIYW5kbGVyKCkge1xuICAgIHRoaXMucmVjYWxjdWxhdGVCb2R5VGFncygpO1xuICAgIHRoaXMub25IdG1sQ2hhbmdlZEhhbmRsZXIodGhpcy5odG1sKTtcbiAgfVxuXG4gIHJlY2FsY3VsYXRlQm9keVRhZ3MoKSB7XG4gICAgdGhpcy52aXN1YWxFZGl0b3IuaHRtbCA9IHRoaXMuaHRtbDtcbiAgICB0aGlzLnZpc3VhbEVkaXRvci5yZWNhbGN1bGF0ZUJvZHlUYWdzKCk7XG4gICAgdGhpcy5fY2RyZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBjb3B5TWFya1VwKCkge1xuICAgIHRoaXMuX3NuYWNrQmFyLm9wZW4oXCLQoNCw0LfQvNC10YLQutCwINGB0LrQvtC/0LjRgNC+0LLQsNC90LAg0LIg0LHRg9GE0LXRgCDQvtCx0LzQtdC90LBcIiwgXCLQl9Cw0LrRgNGL0YLRjFwiLCB7IGR1cmF0aW9uOiAxNTAwIH0pO1xuICAgIHRoaXMuX2NsaXBib2FyZFNlcnZpY2UuY29weSh0aGlzLmh0bWwpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy52aXN1YWxFZGl0b3IucmVjYWxjdWxhdGVCb2R5VGFncygpO1xuICB9XG5cbiAgb3BlblNldHRpbmdzTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlhbG9nXG4gICAgICAub3BlbihIdG1sRWRpdG9yU2V0dGluZ3NNb2RhbENvbXBvbmVudCxcbiAgICAgICAge1xuICAgICAgICAgIGhlaWdodDogJzMwMHB4JyxcbiAgICAgICAgfSlcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBDcm9jb0h0bWxFZGl0b3JGaWxlT3B0aW9ucykgPT4ge1xuICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9odG1sU2V0dGluZ3NTZXJ2aWNlLnNldCh7XG4gICAgICAgICAgdXNlUHJpdmF0ZUZpbGVzOiBkYXRhLnVzZVByaXZhdGVGaWxlcyxcbiAgICAgICAgICBhcHBsaWNhdGlvbklkOiBkYXRhLmFwcGxpY2F0aW9uSWQgPT09ICcnID8gbnVsbCA6IGRhdGEuYXBwbGljYXRpb25JZCxcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gIH1cbn1cbiIsIjxtYXQtdGFiLWdyb3VwIG1hdC1zdHJldGNoLXRhYnM9XCJmYWxzZVwiIG1hdC1hbGlnbi10YWJzPVwic3RhcnRcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiPlxuICA8bWF0LXRhYj5cbiAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cbiAgICAgIDxzdmcgY2xhc3M9XCJjdXN0b20taWNvblwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIyNlwiPlxuICAgICAgICA8dXNlIFthdHRyLnhsaW5rOmhyZWZdPVwiJ3Zpc3VhbC1lZGl0b3ItdGFiJyB8IHNwcml0ZUljb25QYXRoXCI+PC91c2U+XG4gICAgICA8L3N2Zz5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPGRpdiBzdHlsZT1cImhlaWdodDogMjBweDtcIj48L2Rpdj5cblxuICAgIDxjcm9jby12aXN1YWwtZWRpdG9yICN2aXN1YWxFZGl0b3IgW3VzZUh0bWxSYXddPVwidHJ1ZVwiIFtodG1sXT1cImh0bWxcIiAob25IdG1sQ2hhbmdlZCk9XCJvbkh0bWxDaGFuZ2VkSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgIChyZW5kZXJlZCk9XCJ2aXN1YWxFZGl0b3JSZW5kZXJlZEhhbmRsZXIoKVwiPlxuICAgIDwvY3JvY28tdmlzdWFsLWVkaXRvcj5cblxuICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDIwcHg7XCI+PC9kaXY+XG4gIDwvbWF0LXRhYj5cblxuICA8bWF0LXRhYj5cbiAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cbiAgICAgIDxzdmcgY2xhc3M9XCJjdXN0b20taWNvblwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIyNlwiPlxuICAgICAgICA8dXNlIFthdHRyLnhsaW5rOmhyZWZdPVwiJ3NvdXJjZS1jb2RlLXRhYicgfCBzcHJpdGVJY29uUGF0aFwiPjwvdXNlPlxuICAgICAgPC9zdmc+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwcHg7XCI+PC9kaXY+XG4gICAgQGlmICh2aXN1YWxFZGl0b3JSZW5kZXJlZCkge1xuICAgIDxkaXY+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICA8bWF0LWxhYmVsPtCY0YHRhdC+0LTQvdGL0Lkg0LrQvtC0PC9tYXQtbGFiZWw+XG4gICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBjZGtUZXh0YXJlYUF1dG9zaXplICNhdXRvc2l6ZT1cImNka1RleHRhcmVhQXV0b3NpemVcIiBjZGtBdXRvc2l6ZU1pblJvd3M9XCIxXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cItCY0YHRhdC+0LTQvdGL0Lkg0LrQvtC0XCIgWyhuZ01vZGVsKV09XCJodG1sXCIgKG5nTW9kZWxDaGFuZ2UpPVwidGV4dEFyZWFNb2RlbENoYW5nZWRIYW5kbGVyKClcIj48L3RleHRhcmVhPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8YnV0dG9uIChjbGljayk9XCJjb3B5TWFya1VwKClcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgINCa0L7Qv9C40YDQvtCy0LDRgtGMINGA0LDQt9C80LXRgtC60YNcbiAgICA8L2J1dHRvbj5cbiAgPC9tYXQtdGFiPlxuICA8bWF0LXRhYj5cbiAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cbiAgICAgIDxzdmcgY2xhc3M9XCJjdXN0b20taWNvblwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMFwiPlxuICAgICAgICA8dXNlIFthdHRyLnhsaW5rOmhyZWZdPVwiJ3ZpZXdlci10YWInIHwgc3ByaXRlSWNvblBhdGhcIj48L3VzZT5cbiAgICAgIDwvc3ZnPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cblxuICAgIDxtYXQtY2FyZCBzdHlsZT1cInBhZGRpbmc6IDJweDtcIiBjbGFzcz1cIm1hdC1jYXJkXCI+XG4gICAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgPGNyb2NvLWh0bWwtdmlldyBbaHRtbF09XCJodG1sXCI+XG4gICAgICAgIDwvY3JvY28taHRtbC12aWV3PlxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgIDwvbWF0LWNhcmQ+XG4gIDwvbWF0LXRhYj5cbjwvbWF0LXRhYi1ncm91cD5cblxuPGRpdiBbaGlkZGVuXT1cIiFzaG93U2V0dGluZ3NCdXR0b25cIj5cbiAgPG1hdC1pY29uIGNsYXNzPVwic2V0dGluZ3NcIiAoY2xpY2spPVwib3BlblNldHRpbmdzTW9kYWwoKVwiPnNldHRpbmdzPC9tYXQtaWNvbj5cbjwvZGl2PlxuIl19
@@ -1,49 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { TextTags } from '../../../extensions/TextMethods';
3
- import { MatIconButton } from '@angular/material/button';
4
- import { HtmlRawEditorComponent } from '../html-raw-editor/html-raw-editor.component';
5
- import { DownloadFileButtonEditorComponent } from '../download-file-button-editor/download-file-button-editor.component';
6
- import { ImageEditorComponent } from '../image-editor/image-editor.component';
7
- import { TextEditorComponent } from '../text-editor/text-editor.component';
8
- import { ExternalVideoEditorComponent } from '../external-video-editor/external-video-editor.component';
9
- import { ButtonEditorComponent } from "../button-editor/button-editor.component";
10
- import { CustomWidgetEditorComponent } from "../custom-widget-editor/custom-widget-editor.component";
11
- import * as i0 from "@angular/core";
12
- export class MainEditorBlockComponent {
13
- constructor() {
14
- this.textTags = TextTags.allTextTags;
15
- this.onTagSaved = new EventEmitter();
16
- this.onTagRemoved = new EventEmitter();
17
- }
18
- tagUpdatedHandler(tag) {
19
- }
20
- save() {
21
- this.tag.presentOrEdit = true;
22
- this.onTagSaved.emit(this.tag);
23
- }
24
- deleteItem() {
25
- this.onTagRemoved.emit(this.tag);
26
- }
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MainEditorBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MainEditorBlockComponent, isStandalone: true, selector: "croco-html-main-editor-block", inputs: { tag: "tag" }, outputs: { onTagSaved: "onTagSaved", onTagRemoved: "onTagRemoved" }, ngImport: i0, template: "<div class=\"main-editor-block\">\n <div class=\"editor-container\">\n @if (textTags.includes(tag.tagDescription.tag)) {\n <div>\n <croco-html-text-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-text-editor>\n </div>\n }\n @else if (tag.tagDescription.tag === 'file-image') {\n <div>\n <croco-html-image-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-image-editor>\n </div>\n }\n @else if (tag.tagDescription.tag === 'custom-widget') {\n <div>\n <croco-html-custom-widget-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-custom-widget-editor>\n </div>\n }\n @else if (tag.tagDescription.tag === 'external-video') {\n <div>\n <croco-html-external-video-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-external-video-editor>\n </div>\n }\n @else if (tag.tagDescription.tag === 'download-file-button') {\n <div>\n <croco-html-download-file-button-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-download-file-button-editor>\n </div>\n }\n @else if (tag.tagDescription.tag === 'button') {\n <div>\n <croco-html-button-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-button-editor>\n </div>\n }\n @else if (tag.tagDescription.tag === 'html-raw') {\n <div>\n <croco-html-html-raw-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-html-raw-editor>\n </div>\n }\n\n </div>\n\n <div class=\"d-flex justify-content-between\">\n <div class=\"d-flex justify-content-end align-self-center\">\n <div style=\"margin-left: 16px;min-width: 96px\">\n @if (tag.presentOrEdit) {\n <button (click)=\"tag.presentOrEdit = false\" mat-icon-button>\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14.4374 0C15.0921 0 15.7197 0.261421 16.1781 0.723424L19.279 3.82432C19.7407 4.286 20.0001 4.91217 20.0001 5.56508C20.0001 6.21799 19.7407 6.84416 19.279 7.30584L7.95751 18.6238C7.25903 19.4295 6.2689 19.9245 5.1346 20.0023H0V19.0023L0.00324754 14.7873C0.0884381 13.7328 0.578667 12.7523 1.3265 12.0934L12.6954 0.72463C13.1564 0.260831 13.7834 0 14.4374 0ZM5.06401 18.0048C5.59823 17.967 6.09551 17.7184 6.49482 17.2616L14.0567 9.69971L10.3024 5.94518L2.69613 13.5496C2.29098 13.9079 2.04034 14.4092 2.00003 14.8678V18.0029L5.06401 18.0048ZM11.7167 4.53114L15.471 8.28549L17.8648 5.89162C17.9514 5.80502 18.0001 5.68756 18.0001 5.56508C18.0001 5.4426 17.9514 5.32514 17.8648 5.23854L14.7612 2.13486C14.6755 2.04855 14.559 2 14.4374 2C14.3158 2 14.1992 2.04855 14.1136 2.13486L11.7167 4.53114Z\" fill=\"#323E8B\"/>\n </svg>\n </button>\n }\n @if (!tag.presentOrEdit) {\n <button (click)=\"save()\" mat-icon-button>\n <svg width=\"800px\" height=\"800px\" viewBox=\"0 0 24 24\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\n aria-labelledby=\"saveIconTitle\" stroke=\"#000000\" stroke-width=\"1\" stroke-linecap=\"square\"\n stroke-linejoin=\"miter\" fill=\"none\" color=\"#000000\"><title id=\"saveIconTitle\">Save</title>\n <path\n d=\"M17.2928932,3.29289322 L21,7 L21,20 C21,20.5522847 20.5522847,21 20,21 L4,21 C3.44771525,21 3,20.5522847 3,20 L3,4 C3,3.44771525 3.44771525,3 4,3 L16.5857864,3 C16.8510029,3 17.1053568,3.10535684 17.2928932,3.29289322 Z\"/>\n <rect width=\"10\" height=\"8\" x=\"7\" y=\"13\"/>\n <rect width=\"8\" height=\"5\" x=\"8\" y=\"3\"/>\n </svg>\n </button>\n }\n <button (click)=\"deleteItem()\" mat-icon-button color=\"warn\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.49988 0.833332H12.4999C13.4204 0.833332 14.1665 1.57952 14.1665 2.5V3.33333H16.6665C17.587 3.33333 18.3332 4.07952 18.3332 4.99999V6.66666C18.3332 7.58714 17.587 8.33333 16.6665 8.33333H16.5998L15.8332 17.5C15.8332 18.4205 15.087 19.1667 14.1665 19.1667H5.8332C4.91272 19.1667 4.16653 18.4205 4.16941 17.5692L3.39975 8.33333H3.33317C2.4127 8.33333 1.6665 7.58714 1.6665 6.66666V4.99999C1.6665 4.07952 2.4127 3.33333 3.33317 3.33333H5.83321V2.5C5.83321 1.57952 6.5794 0.833332 7.49988 0.833332ZM5.83321 5V4.99999H3.33317V6.66666H16.6665V4.99999L14.1665 5H5.83321ZM5.83324 17.5L5.07198 8.33333H14.9276L14.1695 17.4308L14.1666 17.5H5.83324ZM12.4999 2.5V3.33334H7.49992V2.5H12.4999Z\" fill=\"#F96666\"/>\n </svg>\n </button>\n </div>\n </div>\n\n </div>\n</div>\n", styles: [".main-editor-block{display:flex;justify-content:space-between}.editor-container{flex-grow:1}@media screen and (max-width: 700px){.main-editor-block{display:flex;flex-direction:column}}\n"], dependencies: [{ kind: "component", type: TextEditorComponent, selector: "croco-html-text-editor", inputs: ["tag"], outputs: ["onTagUpdated"] }, { kind: "component", type: ImageEditorComponent, selector: "croco-html-image-editor", inputs: ["tag"], outputs: ["onTagUpdated"] }, { kind: "component", type: DownloadFileButtonEditorComponent, selector: "croco-html-download-file-button-editor", inputs: ["tag"], outputs: ["onTagUpdated"] }, { kind: "component", type: HtmlRawEditorComponent, selector: "croco-html-html-raw-editor", inputs: ["tag"], outputs: ["onTagUpdated"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: ExternalVideoEditorComponent, selector: "croco-html-external-video-editor", inputs: ["tag"], outputs: ["onTagUpdated"] }, { kind: "component", type: ButtonEditorComponent, selector: "croco-html-button-editor", inputs: ["tag"], outputs: ["onTagUpdated"] }, { kind: "component", type: CustomWidgetEditorComponent, selector: "croco-html-custom-widget-editor", inputs: ["tag"], outputs: ["onTagUpdated"] }] }); }
29
- }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MainEditorBlockComponent, decorators: [{
31
- type: Component,
32
- args: [{ selector: 'croco-html-main-editor-block', standalone: true, imports: [
33
- TextEditorComponent,
34
- ImageEditorComponent,
35
- DownloadFileButtonEditorComponent,
36
- HtmlRawEditorComponent,
37
- MatIconButton,
38
- ExternalVideoEditorComponent,
39
- ButtonEditorComponent,
40
- CustomWidgetEditorComponent
41
- ], template: "<div class=\"main-editor-block\">\n <div class=\"editor-container\">\n @if (textTags.includes(tag.tagDescription.tag)) {\n <div>\n <croco-html-text-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-text-editor>\n </div>\n }\n @else if (tag.tagDescription.tag === 'file-image') {\n <div>\n <croco-html-image-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-image-editor>\n </div>\n }\n @else if (tag.tagDescription.tag === 'custom-widget') {\n <div>\n <croco-html-custom-widget-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-custom-widget-editor>\n </div>\n }\n @else if (tag.tagDescription.tag === 'external-video') {\n <div>\n <croco-html-external-video-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-external-video-editor>\n </div>\n }\n @else if (tag.tagDescription.tag === 'download-file-button') {\n <div>\n <croco-html-download-file-button-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-download-file-button-editor>\n </div>\n }\n @else if (tag.tagDescription.tag === 'button') {\n <div>\n <croco-html-button-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-button-editor>\n </div>\n }\n @else if (tag.tagDescription.tag === 'html-raw') {\n <div>\n <croco-html-html-raw-editor (onTagUpdated)=\"tagUpdatedHandler($event)\" [tag]=\"tag\">\n </croco-html-html-raw-editor>\n </div>\n }\n\n </div>\n\n <div class=\"d-flex justify-content-between\">\n <div class=\"d-flex justify-content-end align-self-center\">\n <div style=\"margin-left: 16px;min-width: 96px\">\n @if (tag.presentOrEdit) {\n <button (click)=\"tag.presentOrEdit = false\" mat-icon-button>\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14.4374 0C15.0921 0 15.7197 0.261421 16.1781 0.723424L19.279 3.82432C19.7407 4.286 20.0001 4.91217 20.0001 5.56508C20.0001 6.21799 19.7407 6.84416 19.279 7.30584L7.95751 18.6238C7.25903 19.4295 6.2689 19.9245 5.1346 20.0023H0V19.0023L0.00324754 14.7873C0.0884381 13.7328 0.578667 12.7523 1.3265 12.0934L12.6954 0.72463C13.1564 0.260831 13.7834 0 14.4374 0ZM5.06401 18.0048C5.59823 17.967 6.09551 17.7184 6.49482 17.2616L14.0567 9.69971L10.3024 5.94518L2.69613 13.5496C2.29098 13.9079 2.04034 14.4092 2.00003 14.8678V18.0029L5.06401 18.0048ZM11.7167 4.53114L15.471 8.28549L17.8648 5.89162C17.9514 5.80502 18.0001 5.68756 18.0001 5.56508C18.0001 5.4426 17.9514 5.32514 17.8648 5.23854L14.7612 2.13486C14.6755 2.04855 14.559 2 14.4374 2C14.3158 2 14.1992 2.04855 14.1136 2.13486L11.7167 4.53114Z\" fill=\"#323E8B\"/>\n </svg>\n </button>\n }\n @if (!tag.presentOrEdit) {\n <button (click)=\"save()\" mat-icon-button>\n <svg width=\"800px\" height=\"800px\" viewBox=\"0 0 24 24\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\n aria-labelledby=\"saveIconTitle\" stroke=\"#000000\" stroke-width=\"1\" stroke-linecap=\"square\"\n stroke-linejoin=\"miter\" fill=\"none\" color=\"#000000\"><title id=\"saveIconTitle\">Save</title>\n <path\n d=\"M17.2928932,3.29289322 L21,7 L21,20 C21,20.5522847 20.5522847,21 20,21 L4,21 C3.44771525,21 3,20.5522847 3,20 L3,4 C3,3.44771525 3.44771525,3 4,3 L16.5857864,3 C16.8510029,3 17.1053568,3.10535684 17.2928932,3.29289322 Z\"/>\n <rect width=\"10\" height=\"8\" x=\"7\" y=\"13\"/>\n <rect width=\"8\" height=\"5\" x=\"8\" y=\"3\"/>\n </svg>\n </button>\n }\n <button (click)=\"deleteItem()\" mat-icon-button color=\"warn\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.49988 0.833332H12.4999C13.4204 0.833332 14.1665 1.57952 14.1665 2.5V3.33333H16.6665C17.587 3.33333 18.3332 4.07952 18.3332 4.99999V6.66666C18.3332 7.58714 17.587 8.33333 16.6665 8.33333H16.5998L15.8332 17.5C15.8332 18.4205 15.087 19.1667 14.1665 19.1667H5.8332C4.91272 19.1667 4.16653 18.4205 4.16941 17.5692L3.39975 8.33333H3.33317C2.4127 8.33333 1.6665 7.58714 1.6665 6.66666V4.99999C1.6665 4.07952 2.4127 3.33333 3.33317 3.33333H5.83321V2.5C5.83321 1.57952 6.5794 0.833332 7.49988 0.833332ZM5.83321 5V4.99999H3.33317V6.66666H16.6665V4.99999L14.1665 5H5.83321ZM5.83324 17.5L5.07198 8.33333H14.9276L14.1695 17.4308L14.1666 17.5H5.83324ZM12.4999 2.5V3.33334H7.49992V2.5H12.4999Z\" fill=\"#F96666\"/>\n </svg>\n </button>\n </div>\n </div>\n\n </div>\n</div>\n", styles: [".main-editor-block{display:flex;justify-content:space-between}.editor-container{flex-grow:1}@media screen and (max-width: 700px){.main-editor-block{display:flex;flex-direction:column}}\n"] }]
42
- }], propDecorators: { tag: [{
43
- type: Input
44
- }], onTagSaved: [{
45
- type: Output
46
- }], onTagRemoved: [{
47
- type: Output
48
- }] } });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1lZGl0b3ItYmxvY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JvY28taHRtbC9zcmMvbGliL2NvbXBvbmVudHMvZWRpdG9yL21haW4tZWRpdG9yLWJsb2NrL21haW4tZWRpdG9yLWJsb2NrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvci9tYWluLWVkaXRvci1ibG9jay9tYWluLWVkaXRvci1ibG9jay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUczRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFDekgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDeEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0RBQXdELENBQUM7O0FBa0JyRyxNQUFNLE9BQU8sd0JBQXdCO0lBaEJyQztRQWtCRSxhQUFRLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztRQU1oQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztRQUc3QyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7S0FhaEQ7SUFYQyxpQkFBaUIsQ0FBQyxHQUFnQjtJQUNsQyxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQzsrR0F2QlUsd0JBQXdCO21HQUF4Qix3QkFBd0IscUxDN0JyQyxtNEpBK0VBLG9QRDVESSxtQkFBbUIsK0dBQ25CLG9CQUFvQixnSEFDcEIsaUNBQWlDLCtIQUNqQyxzQkFBc0IsbUhBQ3RCLGFBQWEsNkZBQ2IsNEJBQTRCLHlIQUM1QixxQkFBcUIsaUhBQ3JCLDJCQUEyQjs7NEZBR2xCLHdCQUF3QjtrQkFoQnBDLFNBQVM7K0JBQ0UsOEJBQThCLGNBRzVCLElBQUksV0FDUDt3QkFDUCxtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIsaUNBQWlDO3dCQUNqQyxzQkFBc0I7d0JBQ3RCLGFBQWE7d0JBQ2IsNEJBQTRCO3dCQUM1QixxQkFBcUI7d0JBQ3JCLDJCQUEyQjtxQkFDNUI7OEJBT0QsR0FBRztzQkFERixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsTUFBTTtnQkFJUCxZQUFZO3NCQURYLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXh0VGFncyB9IGZyb20gJy4uLy4uLy4uL2V4dGVuc2lvbnMvVGV4dE1ldGhvZHMnO1xuaW1wb3J0IHsgSHRtbEJvZHlUYWcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvbW9kZWxzJztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEljb25CdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgSHRtbFJhd0VkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uL2h0bWwtcmF3LWVkaXRvci9odG1sLXJhdy1lZGl0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IERvd25sb2FkRmlsZUJ1dHRvbkVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uL2Rvd25sb2FkLWZpbGUtYnV0dG9uLWVkaXRvci9kb3dubG9hZC1maWxlLWJ1dHRvbi1lZGl0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IEltYWdlRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vaW1hZ2UtZWRpdG9yL2ltYWdlLWVkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFeHRlcm5hbFZpZGVvRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vZXh0ZXJuYWwtdmlkZW8tZWRpdG9yL2V4dGVybmFsLXZpZGVvLWVkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uRWRpdG9yQ29tcG9uZW50IH0gZnJvbSBcIi4uL2J1dHRvbi1lZGl0b3IvYnV0dG9uLWVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IEN1c3RvbVdpZGdldEVkaXRvckNvbXBvbmVudCB9IGZyb20gXCIuLi9jdXN0b20td2lkZ2V0LWVkaXRvci9jdXN0b20td2lkZ2V0LWVkaXRvci5jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3JvY28taHRtbC1tYWluLWVkaXRvci1ibG9jaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYWluLWVkaXRvci1ibG9jay5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21haW4tZWRpdG9yLWJsb2NrLmNvbXBvbmVudC5jc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFRleHRFZGl0b3JDb21wb25lbnQsXG4gICAgSW1hZ2VFZGl0b3JDb21wb25lbnQsXG4gICAgRG93bmxvYWRGaWxlQnV0dG9uRWRpdG9yQ29tcG9uZW50LFxuICAgIEh0bWxSYXdFZGl0b3JDb21wb25lbnQsXG4gICAgTWF0SWNvbkJ1dHRvbixcbiAgICBFeHRlcm5hbFZpZGVvRWRpdG9yQ29tcG9uZW50LFxuICAgIEJ1dHRvbkVkaXRvckNvbXBvbmVudCxcbiAgICBDdXN0b21XaWRnZXRFZGl0b3JDb21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBNYWluRWRpdG9yQmxvY2tDb21wb25lbnQge1xuXG4gIHRleHRUYWdzID0gVGV4dFRhZ3MuYWxsVGV4dFRhZ3M7XG5cbiAgQElucHV0KClcbiAgdGFnOiBIdG1sQm9keVRhZztcblxuICBAT3V0cHV0KClcbiAgb25UYWdTYXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SHRtbEJvZHlUYWc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uVGFnUmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SHRtbEJvZHlUYWc+KCk7XG5cbiAgdGFnVXBkYXRlZEhhbmRsZXIodGFnOiBIdG1sQm9keVRhZyk6IHZvaWQge1xuICB9XG5cbiAgc2F2ZSgpIHtcbiAgICB0aGlzLnRhZy5wcmVzZW50T3JFZGl0ID0gdHJ1ZTtcbiAgICB0aGlzLm9uVGFnU2F2ZWQuZW1pdCh0aGlzLnRhZyk7XG4gIH1cblxuICBkZWxldGVJdGVtKCkge1xuICAgIHRoaXMub25UYWdSZW1vdmVkLmVtaXQodGhpcy50YWcpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWFpbi1lZGl0b3ItYmxvY2tcIj5cbiAgPGRpdiBjbGFzcz1cImVkaXRvci1jb250YWluZXJcIj5cbiAgICBAaWYgKHRleHRUYWdzLmluY2x1ZGVzKHRhZy50YWdEZXNjcmlwdGlvbi50YWcpKSB7XG4gICAgICA8ZGl2PlxuICAgICAgICA8Y3JvY28taHRtbC10ZXh0LWVkaXRvciAob25UYWdVcGRhdGVkKT1cInRhZ1VwZGF0ZWRIYW5kbGVyKCRldmVudClcIiBbdGFnXT1cInRhZ1wiPlxuICAgICAgICA8L2Nyb2NvLWh0bWwtdGV4dC1lZGl0b3I+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGVsc2UgaWYgKHRhZy50YWdEZXNjcmlwdGlvbi50YWcgPT09ICdmaWxlLWltYWdlJykge1xuICAgICAgPGRpdj5cbiAgICAgICAgPGNyb2NvLWh0bWwtaW1hZ2UtZWRpdG9yIChvblRhZ1VwZGF0ZWQpPVwidGFnVXBkYXRlZEhhbmRsZXIoJGV2ZW50KVwiIFt0YWddPVwidGFnXCI+XG4gICAgICAgIDwvY3JvY28taHRtbC1pbWFnZS1lZGl0b3I+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGVsc2UgaWYgKHRhZy50YWdEZXNjcmlwdGlvbi50YWcgPT09ICdjdXN0b20td2lkZ2V0Jykge1xuICAgICAgPGRpdj5cbiAgICAgICAgPGNyb2NvLWh0bWwtY3VzdG9tLXdpZGdldC1lZGl0b3IgKG9uVGFnVXBkYXRlZCk9XCJ0YWdVcGRhdGVkSGFuZGxlcigkZXZlbnQpXCIgW3RhZ109XCJ0YWdcIj5cbiAgICAgICAgPC9jcm9jby1odG1sLWN1c3RvbS13aWRnZXQtZWRpdG9yPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBlbHNlIGlmICh0YWcudGFnRGVzY3JpcHRpb24udGFnID09PSAnZXh0ZXJuYWwtdmlkZW8nKSB7XG4gICAgICA8ZGl2PlxuICAgICAgICA8Y3JvY28taHRtbC1leHRlcm5hbC12aWRlby1lZGl0b3IgKG9uVGFnVXBkYXRlZCk9XCJ0YWdVcGRhdGVkSGFuZGxlcigkZXZlbnQpXCIgW3RhZ109XCJ0YWdcIj5cbiAgICAgICAgPC9jcm9jby1odG1sLWV4dGVybmFsLXZpZGVvLWVkaXRvcj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAZWxzZSBpZiAodGFnLnRhZ0Rlc2NyaXB0aW9uLnRhZyA9PT0gJ2Rvd25sb2FkLWZpbGUtYnV0dG9uJykge1xuICAgICAgPGRpdj5cbiAgICAgICAgPGNyb2NvLWh0bWwtZG93bmxvYWQtZmlsZS1idXR0b24tZWRpdG9yIChvblRhZ1VwZGF0ZWQpPVwidGFnVXBkYXRlZEhhbmRsZXIoJGV2ZW50KVwiIFt0YWddPVwidGFnXCI+XG4gICAgICAgIDwvY3JvY28taHRtbC1kb3dubG9hZC1maWxlLWJ1dHRvbi1lZGl0b3I+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGVsc2UgaWYgKHRhZy50YWdEZXNjcmlwdGlvbi50YWcgPT09ICdidXR0b24nKSB7XG4gICAgICA8ZGl2PlxuICAgICAgICA8Y3JvY28taHRtbC1idXR0b24tZWRpdG9yIChvblRhZ1VwZGF0ZWQpPVwidGFnVXBkYXRlZEhhbmRsZXIoJGV2ZW50KVwiIFt0YWddPVwidGFnXCI+XG4gICAgICAgIDwvY3JvY28taHRtbC1idXR0b24tZWRpdG9yPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBlbHNlIGlmICh0YWcudGFnRGVzY3JpcHRpb24udGFnID09PSAnaHRtbC1yYXcnKSB7XG4gICAgICA8ZGl2PlxuICAgICAgICA8Y3JvY28taHRtbC1odG1sLXJhdy1lZGl0b3IgKG9uVGFnVXBkYXRlZCk9XCJ0YWdVcGRhdGVkSGFuZGxlcigkZXZlbnQpXCIgW3RhZ109XCJ0YWdcIj5cbiAgICAgICAgPC9jcm9jby1odG1sLWh0bWwtcmF3LWVkaXRvcj5cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLXNlbGYtY2VudGVyXCI+XG4gICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLWxlZnQ6IDE2cHg7bWluLXdpZHRoOiA5NnB4XCI+XG4gICAgICAgIEBpZiAodGFnLnByZXNlbnRPckVkaXQpIHtcbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJ0YWcucHJlc2VudE9yRWRpdCA9IGZhbHNlXCIgbWF0LWljb24tYnV0dG9uPlxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xNC40Mzc0IDBDMTUuMDkyMSAwIDE1LjcxOTcgMC4yNjE0MjEgMTYuMTc4MSAwLjcyMzQyNEwxOS4yNzkgMy44MjQzMkMxOS43NDA3IDQuMjg2IDIwLjAwMDEgNC45MTIxNyAyMC4wMDAxIDUuNTY1MDhDMjAuMDAwMSA2LjIxNzk5IDE5Ljc0MDcgNi44NDQxNiAxOS4yNzkgNy4zMDU4NEw3Ljk1NzUxIDE4LjYyMzhDNy4yNTkwMyAxOS40Mjk1IDYuMjY4OSAxOS45MjQ1IDUuMTM0NiAyMC4wMDIzSDBWMTkuMDAyM0wwLjAwMzI0NzU0IDE0Ljc4NzNDMC4wODg0MzgxIDEzLjczMjggMC41Nzg2NjcgMTIuNzUyMyAxLjMyNjUgMTIuMDkzNEwxMi42OTU0IDAuNzI0NjNDMTMuMTU2NCAwLjI2MDgzMSAxMy43ODM0IDAgMTQuNDM3NCAwWk01LjA2NDAxIDE4LjAwNDhDNS41OTgyMyAxNy45NjcgNi4wOTU1MSAxNy43MTg0IDYuNDk0ODIgMTcuMjYxNkwxNC4wNTY3IDkuNjk5NzFMMTAuMzAyNCA1Ljk0NTE4TDIuNjk2MTMgMTMuNTQ5NkMyLjI5MDk4IDEzLjkwNzkgMi4wNDAzNCAxNC40MDkyIDIuMDAwMDMgMTQuODY3OFYxOC4wMDI5TDUuMDY0MDEgMTguMDA0OFpNMTEuNzE2NyA0LjUzMTE0TDE1LjQ3MSA4LjI4NTQ5TDE3Ljg2NDggNS44OTE2MkMxNy45NTE0IDUuODA1MDIgMTguMDAwMSA1LjY4NzU2IDE4LjAwMDEgNS41NjUwOEMxOC4wMDAxIDUuNDQyNiAxNy45NTE0IDUuMzI1MTQgMTcuODY0OCA1LjIzODU0TDE0Ljc2MTIgMi4xMzQ4NkMxNC42NzU1IDIuMDQ4NTUgMTQuNTU5IDIgMTQuNDM3NCAyQzE0LjMxNTggMiAxNC4xOTkyIDIuMDQ4NTUgMTQuMTEzNiAyLjEzNDg2TDExLjcxNjcgNC41MzExNFpcIiBmaWxsPVwiIzMyM0U4QlwiLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoIXRhZy5wcmVzZW50T3JFZGl0KSB7XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwic2F2ZSgpXCIgbWF0LWljb24tYnV0dG9uPlxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjgwMHB4XCIgaGVpZ2h0PVwiODAwcHhcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgcm9sZT1cImltZ1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJzYXZlSWNvblRpdGxlXCIgc3Ryb2tlPVwiIzAwMDAwMFwiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2UtbGluZWNhcD1cInNxdWFyZVwiXG4gICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cIm1pdGVyXCIgZmlsbD1cIm5vbmVcIiBjb2xvcj1cIiMwMDAwMDBcIj48dGl0bGUgaWQ9XCJzYXZlSWNvblRpdGxlXCI+U2F2ZTwvdGl0bGU+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk0xNy4yOTI4OTMyLDMuMjkyODkzMjIgTDIxLDcgTDIxLDIwIEMyMSwyMC41NTIyODQ3IDIwLjU1MjI4NDcsMjEgMjAsMjEgTDQsMjEgQzMuNDQ3NzE1MjUsMjEgMywyMC41NTIyODQ3IDMsMjAgTDMsNCBDMywzLjQ0NzcxNTI1IDMuNDQ3NzE1MjUsMyA0LDMgTDE2LjU4NTc4NjQsMyBDMTYuODUxMDAyOSwzIDE3LjEwNTM1NjgsMy4xMDUzNTY4NCAxNy4yOTI4OTMyLDMuMjkyODkzMjIgWlwiLz5cbiAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjhcIiB4PVwiN1wiIHk9XCIxM1wiLz5cbiAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiNVwiIHg9XCI4XCIgeT1cIjNcIi8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkZWxldGVJdGVtKClcIiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJ3YXJuXCI+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNNy40OTk4OCAwLjgzMzMzMkgxMi40OTk5QzEzLjQyMDQgMC44MzMzMzIgMTQuMTY2NSAxLjU3OTUyIDE0LjE2NjUgMi41VjMuMzMzMzNIMTYuNjY2NUMxNy41ODcgMy4zMzMzMyAxOC4zMzMyIDQuMDc5NTIgMTguMzMzMiA0Ljk5OTk5VjYuNjY2NjZDMTguMzMzMiA3LjU4NzE0IDE3LjU4NyA4LjMzMzMzIDE2LjY2NjUgOC4zMzMzM0gxNi41OTk4TDE1LjgzMzIgMTcuNUMxNS44MzMyIDE4LjQyMDUgMTUuMDg3IDE5LjE2NjcgMTQuMTY2NSAxOS4xNjY3SDUuODMzMkM0LjkxMjcyIDE5LjE2NjcgNC4xNjY1MyAxOC40MjA1IDQuMTY5NDEgMTcuNTY5MkwzLjM5OTc1IDguMzMzMzNIMy4zMzMxN0MyLjQxMjcgOC4zMzMzMyAxLjY2NjUgNy41ODcxNCAxLjY2NjUgNi42NjY2NlY0Ljk5OTk5QzEuNjY2NSA0LjA3OTUyIDIuNDEyNyAzLjMzMzMzIDMuMzMzMTcgMy4zMzMzM0g1LjgzMzIxVjIuNUM1LjgzMzIxIDEuNTc5NTIgNi41Nzk0IDAuODMzMzMyIDcuNDk5ODggMC44MzMzMzJaTTUuODMzMjEgNVY0Ljk5OTk5SDMuMzMzMTdWNi42NjY2NkgxNi42NjY1VjQuOTk5OTlMMTQuMTY2NSA1SDUuODMzMjFaTTUuODMzMjQgMTcuNUw1LjA3MTk4IDguMzMzMzNIMTQuOTI3NkwxNC4xNjk1IDE3LjQzMDhMMTQuMTY2NiAxNy41SDUuODMzMjRaTTEyLjQ5OTkgMi41VjMuMzMzMzRINy40OTk5MlYyLjVIMTIuNDk5OVpcIiBmaWxsPVwiI0Y5NjY2NlwiLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,30 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { CdkTextareaAutosize } from '@angular/cdk/text-field';
3
- import { MatInput } from '@angular/material/input';
4
- import { MatFormField, MatLabel } from '@angular/material/form-field';
5
- import { MatIcon } from '@angular/material/icon';
6
- import { FormsModule } from '@angular/forms';
7
- import { MatButtonToggleGroup, MatButtonToggle } from '@angular/material/button-toggle';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/forms";
10
- export class TextEditorComponent {
11
- constructor() {
12
- this.onTagUpdated = new EventEmitter();
13
- }
14
- ngOnInit() {
15
- }
16
- getInnerHtml() {
17
- return `<${this.tag.tagDescription.tag}>${this.tag.innerHtml}<${this.tag.tagDescription.tag}/>`;
18
- }
19
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
20
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TextEditorComponent, isStandalone: true, selector: "croco-html-text-editor", inputs: { tag: "tag" }, outputs: { onTagUpdated: "onTagUpdated" }, ngImport: i0, template: "@if (tag.presentOrEdit) {\n <div>\n <div style=\"height: 10px;\">\n </div>\n @if (tag.attributes['h-align'] === 'left') {\n <div style=\"text-align: left;\" [innerHtml]=\"getInnerHtml()\">\n </div>\n }\n @if (tag.attributes['h-align'] === 'right') {\n <div style=\"text-align: right;\" [innerHtml]=\"getInnerHtml()\">\n </div>\n }\n @if (tag.attributes['h-align'] === 'center') {\n <div style=\"text-align: center;\" [innerHtml]=\"getInnerHtml()\">\n </div>\n }\n </div>\n}\n\n@if (!tag.presentOrEdit) {\n <div>\n <div style=\"overflow-x: auto;\">\n <mat-button-toggle-group [(ngModel)]=\"tag.attributes['h-align']\">\n <mat-button-toggle value=\"center\">\n \u041F\u043E \u0446\u0435\u043D\u0442\u0440\u0443 <mat-icon>format_align_center</mat-icon>\n </mat-button-toggle>\n <mat-button-toggle value=\"left\">\n \u0421\u043B\u0435\u0432\u0430 <mat-icon>format_align_left</mat-icon>\n </mat-button-toggle>\n <mat-button-toggle value=\"right\">\n \u0421\u043F\u0440\u0430\u0432\u0430 <mat-icon> format_align_right</mat-icon>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <div style=\"height: 10px;\">\n </div>\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0430 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u043E\u0433\u043E \u0442\u0435\u0433\u0430</mat-label>\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n placeholder=\"\u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0430 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u043E\u0433\u043E \u0442\u0435\u0433\u0430\"\n [(ngModel)]=\"tag.innerHtml\"></textarea>\n </mat-form-field>\n </div>\n </div>\n}\n", dependencies: [{ kind: "directive", type: MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }] }); }
21
- }
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextEditorComponent, decorators: [{
23
- type: Component,
24
- args: [{ selector: 'croco-html-text-editor', standalone: true, imports: [MatButtonToggleGroup, FormsModule, MatButtonToggle, MatIcon, MatFormField, MatLabel, MatInput, CdkTextareaAutosize], template: "@if (tag.presentOrEdit) {\n <div>\n <div style=\"height: 10px;\">\n </div>\n @if (tag.attributes['h-align'] === 'left') {\n <div style=\"text-align: left;\" [innerHtml]=\"getInnerHtml()\">\n </div>\n }\n @if (tag.attributes['h-align'] === 'right') {\n <div style=\"text-align: right;\" [innerHtml]=\"getInnerHtml()\">\n </div>\n }\n @if (tag.attributes['h-align'] === 'center') {\n <div style=\"text-align: center;\" [innerHtml]=\"getInnerHtml()\">\n </div>\n }\n </div>\n}\n\n@if (!tag.presentOrEdit) {\n <div>\n <div style=\"overflow-x: auto;\">\n <mat-button-toggle-group [(ngModel)]=\"tag.attributes['h-align']\">\n <mat-button-toggle value=\"center\">\n \u041F\u043E \u0446\u0435\u043D\u0442\u0440\u0443 <mat-icon>format_align_center</mat-icon>\n </mat-button-toggle>\n <mat-button-toggle value=\"left\">\n \u0421\u043B\u0435\u0432\u0430 <mat-icon>format_align_left</mat-icon>\n </mat-button-toggle>\n <mat-button-toggle value=\"right\">\n \u0421\u043F\u0440\u0430\u0432\u0430 <mat-icon> format_align_right</mat-icon>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <div style=\"height: 10px;\">\n </div>\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0430 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u043E\u0433\u043E \u0442\u0435\u0433\u0430</mat-label>\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n placeholder=\"\u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0430 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u043E\u0433\u043E \u0442\u0435\u0433\u0430\"\n [(ngModel)]=\"tag.innerHtml\"></textarea>\n </mat-form-field>\n </div>\n </div>\n}\n" }]
25
- }], ctorParameters: () => [], propDecorators: { tag: [{
26
- type: Input
27
- }], onTagUpdated: [{
28
- type: Output
29
- }] } });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JvY28taHRtbC9zcmMvbGliL2NvbXBvbmVudHMvZWRpdG9yL3RleHQtZWRpdG9yL3RleHQtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvci90ZXh0LWVkaXRvci90ZXh0LWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFReEYsTUFBTSxPQUFPLG1CQUFtQjtJQVE5QjtRQUZBLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztJQUUvQixDQUFDO0lBRWpCLFFBQVE7SUFDUixDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDbEcsQ0FBQzsrR0FmVSxtQkFBbUI7bUdBQW5CLG1CQUFtQixxSkNmaEMsNjhEQStDQSw0Q0RsQ2Msb0JBQW9CLGlUQUFFLFdBQVcsK21CQUFFLGVBQWUsNlFBQUUsT0FBTywySUFBRSxZQUFZLDRMQUFFLFFBQVEsc0RBQUUsUUFBUSxpVUFBRSxtQkFBbUI7OzRGQUVuSCxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0ksd0JBQXdCLGNBRXRCLElBQUksV0FDUCxDQUFDLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixDQUFDO3dEQUsvSCxHQUFHO3NCQURGLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHRtbEJvZHlUYWcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvbW9kZWxzJztcbmltcG9ydCB7IENka1RleHRhcmVhQXV0b3NpemUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGV4dC1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCwgTWF0TGFiZWwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlR3JvdXAsIE1hdEJ1dHRvblRvZ2dsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2Nyb2NvLWh0bWwtdGV4dC1lZGl0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90ZXh0LWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTWF0QnV0dG9uVG9nZ2xlR3JvdXAsIEZvcm1zTW9kdWxlLCBNYXRCdXR0b25Ub2dnbGUsIE1hdEljb24sIE1hdEZvcm1GaWVsZCwgTWF0TGFiZWwsIE1hdElucHV0LCBDZGtUZXh0YXJlYUF1dG9zaXplXVxufSlcbmV4cG9ydCBjbGFzcyBUZXh0RWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKVxuICB0YWc6IEh0bWxCb2R5VGFnO1xuXG4gIEBPdXRwdXQoKVxuICBvblRhZ1VwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEh0bWxCb2R5VGFnPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxuICBnZXRJbm5lckh0bWwoKXtcbiAgICByZXR1cm4gYDwke3RoaXMudGFnLnRhZ0Rlc2NyaXB0aW9uLnRhZ30+JHt0aGlzLnRhZy5pbm5lckh0bWx9PCR7dGhpcy50YWcudGFnRGVzY3JpcHRpb24udGFnfS8+YDtcbiAgfVxufVxuIiwiQGlmICh0YWcucHJlc2VudE9yRWRpdCkge1xuICA8ZGl2PlxuICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwcHg7XCI+XG4gICAgPC9kaXY+XG4gICAgQGlmICh0YWcuYXR0cmlidXRlc1snaC1hbGlnbiddID09PSAnbGVmdCcpIHtcbiAgICAgIDxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOiBsZWZ0O1wiIFtpbm5lckh0bWxdPVwiZ2V0SW5uZXJIdG1sKClcIj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKHRhZy5hdHRyaWJ1dGVzWydoLWFsaWduJ10gPT09ICdyaWdodCcpIHtcbiAgICAgIDxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodDtcIiBbaW5uZXJIdG1sXT1cImdldElubmVySHRtbCgpXCI+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGlmICh0YWcuYXR0cmlidXRlc1snaC1hbGlnbiddID09PSAnY2VudGVyJykge1xuICAgICAgPGRpdiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIiBbaW5uZXJIdG1sXT1cImdldElubmVySHRtbCgpXCI+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxufVxuXG5AaWYgKCF0YWcucHJlc2VudE9yRWRpdCkge1xuICA8ZGl2PlxuICAgIDxkaXYgc3R5bGU9XCJvdmVyZmxvdy14OiBhdXRvO1wiPlxuICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIFsobmdNb2RlbCldPVwidGFnLmF0dHJpYnV0ZXNbJ2gtYWxpZ24nXVwiPlxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJjZW50ZXJcIj5cbiAgICAgICAgICDQn9C+INGG0LXQvdGC0YDRgyA8bWF0LWljb24+Zm9ybWF0X2FsaWduX2NlbnRlcjwvbWF0LWljb24+XG4gICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cImxlZnRcIj5cbiAgICAgICAgICDQodC70LXQstCwIDxtYXQtaWNvbj5mb3JtYXRfYWxpZ25fbGVmdDwvbWF0LWljb24+XG4gICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cInJpZ2h0XCI+XG4gICAgICAgICAg0KHQv9GA0LDQstCwIDxtYXQtaWNvbj4gZm9ybWF0X2FsaWduX3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBzdHlsZT1cImhlaWdodDogMTBweDtcIj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgPG1hdC1sYWJlbD7QktC90YPRgtGA0LXQvdC90Y/RjyDRgNCw0LfQvNC10YLQutCwINGC0LXQutGB0YLQvtCy0L7Qs9C+INGC0LXQs9CwPC9tYXQtbGFiZWw+XG4gICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBjZGtUZXh0YXJlYUF1dG9zaXplICNhdXRvc2l6ZT1cImNka1RleHRhcmVhQXV0b3NpemVcIlxuICAgICAgICAgIGNka0F1dG9zaXplTWluUm93cz1cIjFcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwi0JLQvdGD0YLRgNC10L3QvdGP0Y8g0YDQsNC30LzQtdGC0LrQsCDRgtC10LrRgdGC0L7QstC+0LPQviDRgtC10LPQsFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwidGFnLmlubmVySHRtbFwiPjwvdGV4dGFyZWE+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbn1cbiJdfQ==