croco-html 1.0.0 → 2.0.1

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 (128) hide show
  1. package/{esm2020 → esm2022}/croco-html.mjs +4 -4
  2. package/esm2022/lib/components/add-files-btn/add-files-btn.component.mjs +53 -0
  3. package/esm2022/lib/components/editor/external-video-block/external-video-block.component.mjs +43 -0
  4. package/{esm2020 → esm2022}/lib/components/editor/html-raw-editor/html-raw-editor.component.mjs +25 -25
  5. package/{esm2020 → esm2022}/lib/components/editor/image-editor/image-editor.component.mjs +46 -46
  6. package/{esm2020 → esm2022}/lib/components/editor/index.mjs +7 -7
  7. package/{esm2020 → esm2022}/lib/components/editor/main-editor/main-editor.component.mjs +76 -76
  8. package/{esm2020 → esm2022}/lib/components/editor/main-editor-block/main-editor-block.component.mjs +41 -41
  9. package/{esm2020 → esm2022}/lib/components/editor/text-editor/text-editor.component.mjs +30 -30
  10. package/esm2022/lib/components/editor/visual-editor/DefaultTags.mjs +27 -0
  11. package/esm2022/lib/components/editor/visual-editor/visual-editor.component.mjs +134 -0
  12. package/{esm2020 → esm2022}/lib/components/file-id-select/file-id-select.component.mjs +58 -58
  13. package/esm2022/lib/components/html-view/html-view.component.mjs +18 -0
  14. package/{esm2020 → esm2022}/lib/components/index.mjs +7 -6
  15. package/{esm2020 → esm2022}/lib/components/upload-files-btn/upload-files-btn.component.mjs +54 -54
  16. package/{esm2020 → esm2022}/lib/components/xml-tags/html-raw-view/html-raw-view.component.mjs +22 -22
  17. package/{esm2020 → esm2022}/lib/components/xml-tags/index.mjs +9 -9
  18. package/esm2022/lib/components/xml-tags/xml-tag-external-video/xml-tag-external-video.component.mjs +49 -0
  19. package/{esm2020 → esm2022}/lib/components/xml-tags/xml-tag-header-inner-text-view/xml-tag-header-inner-text-view.component.mjs +17 -17
  20. package/{esm2020 → esm2022}/lib/components/xml-tags/xml-tag-header-text-view/xml-tag-header-text-view.component.mjs +18 -18
  21. package/{esm2020 → esm2022}/lib/components/xml-tags/xml-tag-html-view/xml-tag-html-view.component.mjs +16 -16
  22. package/{esm2020 → esm2022}/lib/components/xml-tags/xml-tag-rich-text-view/xml-tag-rich-text-view.component.mjs +20 -20
  23. package/{esm2020 → esm2022}/lib/components/xml-tags/xml-tag-table-view/xml-tag-table-view.component.mjs +20 -20
  24. package/{esm2020 → esm2022}/lib/components/xml-tags/xml-tag-text-view/xml-tag-text-view.component.mjs +17 -17
  25. package/esm2022/lib/components/xml-tags/xml-tag-view/xml-tag-view.component.mjs +22 -0
  26. package/esm2022/lib/croco-html.module.mjs +92 -0
  27. package/esm2022/lib/extensions/AngularMaterialTableMethods.mjs +64 -0
  28. package/esm2022/lib/extensions/BodyTagsExtensions.mjs +120 -0
  29. package/esm2022/lib/extensions/BootstrapTableMethods.mjs +67 -0
  30. package/esm2022/lib/extensions/HtmlExtractionMethods.mjs +63 -0
  31. package/{esm2020 → esm2022}/lib/extensions/HtmlRawTagDataConsts.mjs +4 -4
  32. package/esm2022/lib/extensions/ImageMethods.mjs +32 -0
  33. package/{esm2020 → esm2022}/lib/extensions/InterfaceBlock.mjs +1 -1
  34. package/esm2022/lib/extensions/TableBuilder.mjs +35 -0
  35. package/esm2022/lib/extensions/TableMethods.mjs +108 -0
  36. package/esm2022/lib/extensions/TextMethods.mjs +29 -0
  37. package/esm2022/lib/extensions/TextSimpleMethods.mjs +77 -0
  38. package/esm2022/lib/extensions/VideoMethods.mjs +20 -0
  39. package/{esm2020 → esm2022}/lib/extensions/XmlExtensions.mjs +25 -25
  40. package/{esm2020 → esm2022}/lib/extensions/index.mjs +12 -12
  41. package/esm2022/lib/index.mjs +118 -0
  42. package/{esm2020 → esm2022}/lib/models/models.mjs +2 -2
  43. package/esm2022/lib/pipes/RichTextToHtmlPipe.mjs +26 -0
  44. package/{esm2020 → esm2022}/lib/pipes/TagToSpanPipe.mjs +16 -16
  45. package/{esm2020 → esm2022}/lib/pipes/ToHtmlBodyTagsPipe.mjs +17 -17
  46. package/{esm2020 → esm2022}/lib/pipes/ToPreviewHtmlPipe.mjs +17 -17
  47. package/{esm2020 → esm2022}/lib/pipes/index.mjs +5 -5
  48. package/{esm2020 → esm2022}/lib/pipes/to-preview.pipe.mjs +20 -20
  49. package/esm2022/lib/services/file-upload.service.mjs +70 -0
  50. package/{esm2020 → esm2022}/lib/services/files-query.service.mjs +27 -27
  51. package/{esm2020 → esm2022}/public-api.mjs +7 -7
  52. package/{fesm2020 → fesm2022}/croco-html.mjs +1511 -1496
  53. package/fesm2022/croco-html.mjs.map +1 -0
  54. package/index.d.ts +5 -5
  55. package/lib/components/add-files-btn/add-files-btn.component.d.ts +18 -18
  56. package/lib/components/editor/external-video-block/external-video-block.component.d.ts +17 -17
  57. package/lib/components/editor/html-raw-editor/html-raw-editor.component.d.ts +11 -11
  58. package/lib/components/editor/image-editor/image-editor.component.d.ts +18 -18
  59. package/lib/components/editor/index.d.ts +7 -7
  60. package/lib/components/editor/main-editor/main-editor.component.d.ts +27 -27
  61. package/lib/components/editor/main-editor-block/main-editor-block.component.d.ts +16 -16
  62. package/lib/components/editor/text-editor/text-editor.component.d.ts +12 -12
  63. package/lib/components/editor/visual-editor/DefaultTags.d.ts +6 -6
  64. package/lib/components/editor/visual-editor/visual-editor.component.d.ts +36 -36
  65. package/lib/components/file-id-select/file-id-select.component.d.ts +27 -27
  66. package/lib/components/html-view/html-view.component.d.ts +6 -0
  67. package/lib/components/index.d.ts +6 -5
  68. package/lib/components/upload-files-btn/upload-files-btn.component.d.ts +24 -24
  69. package/lib/components/xml-tags/html-raw-view/html-raw-view.component.d.ts +13 -13
  70. package/lib/components/xml-tags/index.d.ts +9 -9
  71. package/lib/components/xml-tags/xml-tag-external-video/xml-tag-external-video.component.d.ts +16 -16
  72. package/lib/components/xml-tags/xml-tag-header-inner-text-view/xml-tag-header-inner-text-view.component.d.ts +10 -10
  73. package/lib/components/xml-tags/xml-tag-header-text-view/xml-tag-header-text-view.component.d.ts +10 -10
  74. package/lib/components/xml-tags/xml-tag-html-view/xml-tag-html-view.component.d.ts +7 -7
  75. package/lib/components/xml-tags/xml-tag-rich-text-view/xml-tag-rich-text-view.component.d.ts +10 -10
  76. package/lib/components/xml-tags/xml-tag-table-view/xml-tag-table-view.component.d.ts +7 -7
  77. package/lib/components/xml-tags/xml-tag-text-view/xml-tag-text-view.component.d.ts +10 -10
  78. package/lib/components/xml-tags/xml-tag-view/xml-tag-view.component.d.ts +8 -8
  79. package/lib/croco-html.module.d.ts +64 -63
  80. package/lib/extensions/AngularMaterialTableMethods.d.ts +7 -10
  81. package/lib/extensions/BodyTagsExtensions.d.ts +11 -11
  82. package/lib/extensions/BootstrapTableMethods.d.ts +9 -9
  83. package/lib/extensions/HtmlExtractionMethods.d.ts +73 -73
  84. package/lib/extensions/HtmlRawTagDataConsts.d.ts +3 -3
  85. package/lib/extensions/ImageMethods.d.ts +18 -18
  86. package/lib/extensions/InterfaceBlock.d.ts +4 -4
  87. package/lib/extensions/TableBuilder.d.ts +5 -5
  88. package/lib/extensions/TableMethods.d.ts +59 -59
  89. package/lib/extensions/TextMethods.d.ts +19 -19
  90. package/lib/extensions/TextSimpleMethods.d.ts +23 -23
  91. package/lib/extensions/VideoMethods.d.ts +19 -19
  92. package/lib/extensions/XmlExtensions.d.ts +5 -5
  93. package/lib/extensions/index.d.ts +10 -10
  94. package/lib/index.d.ts +21 -21
  95. package/lib/models/models.d.ts +14 -10
  96. package/lib/pipes/RichTextToHtmlPipe.d.ts +8 -8
  97. package/lib/pipes/TagToSpanPipe.d.ts +7 -7
  98. package/lib/pipes/ToHtmlBodyTagsPipe.d.ts +8 -8
  99. package/lib/pipes/ToPreviewHtmlPipe.d.ts +9 -9
  100. package/lib/pipes/index.d.ts +5 -5
  101. package/lib/pipes/to-preview.pipe.d.ts +8 -8
  102. package/lib/services/file-upload.service.d.ts +34 -34
  103. package/lib/services/files-query.service.d.ts +42 -42
  104. package/package.json +11 -17
  105. package/public-api.d.ts +4 -4
  106. package/esm2020/lib/components/add-files-btn/add-files-btn.component.mjs +0 -53
  107. package/esm2020/lib/components/editor/external-video-block/external-video-block.component.mjs +0 -43
  108. package/esm2020/lib/components/editor/visual-editor/DefaultTags.mjs +0 -27
  109. package/esm2020/lib/components/editor/visual-editor/visual-editor.component.mjs +0 -134
  110. package/esm2020/lib/components/xml-tags/xml-tag-external-video/xml-tag-external-video.component.mjs +0 -49
  111. package/esm2020/lib/components/xml-tags/xml-tag-view/xml-tag-view.component.mjs +0 -22
  112. package/esm2020/lib/croco-html.module.mjs +0 -91
  113. package/esm2020/lib/extensions/AngularMaterialTableMethods.mjs +0 -64
  114. package/esm2020/lib/extensions/BodyTagsExtensions.mjs +0 -120
  115. package/esm2020/lib/extensions/BootstrapTableMethods.mjs +0 -67
  116. package/esm2020/lib/extensions/HtmlExtractionMethods.mjs +0 -63
  117. package/esm2020/lib/extensions/ImageMethods.mjs +0 -32
  118. package/esm2020/lib/extensions/TableBuilder.mjs +0 -35
  119. package/esm2020/lib/extensions/TableMethods.mjs +0 -108
  120. package/esm2020/lib/extensions/TextMethods.mjs +0 -29
  121. package/esm2020/lib/extensions/TextSimpleMethods.mjs +0 -77
  122. package/esm2020/lib/extensions/VideoMethods.mjs +0 -20
  123. package/esm2020/lib/index.mjs +0 -116
  124. package/esm2020/lib/pipes/RichTextToHtmlPipe.mjs +0 -26
  125. package/esm2020/lib/services/file-upload.service.mjs +0 -70
  126. package/fesm2015/croco-html.mjs +0 -1636
  127. package/fesm2015/croco-html.mjs.map +0 -1
  128. package/fesm2020/croco-html.mjs.map +0 -1
@@ -1,134 +0,0 @@
1
- import { moveItemInArray } from '@angular/cdk/drag-drop';
2
- import { Component, EventEmitter, Input, Output } from '@angular/core';
3
- import { BodyTagsExtensions } from '../../../extensions/BodyTagsExtensions';
4
- import { FileImageTagDataConsts } from '../../../extensions/ImageMethods';
5
- import { TextMethods } from '../../../extensions/TextMethods';
6
- import { ExternalVideoTagDataConsts, ExternalVideoSupportedTypes } from '../../../extensions/VideoMethods';
7
- import { XmlExtensions } from '../../../extensions/XmlExtensions';
8
- import { DefaultTags } from './DefaultTags';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/common";
11
- import * as i2 from "@angular/forms";
12
- import * as i3 from "@angular/material/form-field";
13
- import * as i4 from "@angular/material/progress-spinner";
14
- import * as i5 from "@angular/material/card";
15
- import * as i6 from "@angular/material/select";
16
- import * as i7 from "@angular/material/core";
17
- import * as i8 from "@angular/material/chips";
18
- import * as i9 from "@angular/material/button";
19
- import * as i10 from "@angular/cdk/drag-drop";
20
- import * as i11 from "../main-editor-block/main-editor-block.component";
21
- import * as i12 from "../../add-files-btn/add-files-btn.component";
22
- export class VisualEditorComponent {
23
- isHtmlSet() {
24
- return this.html.startsWith("<body>");
25
- }
26
- clearHtml() {
27
- this.html = "";
28
- this.recalculateBodyTags();
29
- }
30
- getHtml() {
31
- this.recalculateHtml();
32
- return this.html;
33
- }
34
- constructor(_cdref) {
35
- this._cdref = _cdref;
36
- this.isLoading = false;
37
- this.loadingText = "Идёт загрузка";
38
- this.showMarkUp = true;
39
- this.tags = [];
40
- this.useHtmlRaw = false;
41
- this.html = "";
42
- this.onHtmlChanged = new EventEmitter();
43
- this.rendered = new EventEmitter();
44
- this.bodyTags = [];
45
- }
46
- ngAfterViewInit() {
47
- this.rendered.emit(true);
48
- }
49
- ngAfterContentChecked() {
50
- this._cdref.detectChanges();
51
- }
52
- addTag() {
53
- let tagDescription = this.tags
54
- .find(x => x.tag === this.selectedValue);
55
- let attrs = {};
56
- let innerHtml = "";
57
- if (TextMethods.textTags.includes(tagDescription.tag)) {
58
- attrs["h-align"] = "left";
59
- innerHtml = "Введите ваш текст";
60
- }
61
- else if (tagDescription.tag == ExternalVideoTagDataConsts.TagName) {
62
- attrs[ExternalVideoTagDataConsts.VideoTypeAttrName] = ExternalVideoSupportedTypes.Youtube;
63
- attrs[ExternalVideoTagDataConsts.LinkAttrName] = null;
64
- }
65
- else {
66
- attrs[FileImageTagDataConsts.FileIdAttrName] = null;
67
- }
68
- this.bodyTags.push({
69
- tagDescription,
70
- innerHtml,
71
- attributes: attrs,
72
- presentOrEdit: true
73
- });
74
- this.recalculateHtml();
75
- }
76
- postFilesStartedEventHandler(model) {
77
- this.loadingText = "Файлы загружаются на сервер";
78
- this.isLoading = true;
79
- }
80
- addTagCustom(tag) {
81
- this.bodyTags.push(tag);
82
- this.recalculateHtml();
83
- }
84
- filesTagsReadyHandler(tags) {
85
- for (let i = 0; i < tags.length; i++) {
86
- this.bodyTags.push(tags[i]);
87
- }
88
- this.recalculateHtml();
89
- this.isLoading = false;
90
- }
91
- drop(event) {
92
- moveItemInArray(this.bodyTags, event.previousIndex, event.currentIndex);
93
- this.recalculateHtml();
94
- }
95
- onTagSavedHandler(tag) {
96
- this.recalculateHtml();
97
- }
98
- onTagRemovedHandler(index) {
99
- this.bodyTags.splice(index, 1);
100
- this.recalculateHtml();
101
- }
102
- recalculateHtml() {
103
- let result = BodyTagsExtensions.toHtml(this.bodyTags);
104
- this.html = XmlExtensions.formatXml("<body>" + result + "</body>");
105
- this.onHtmlChanged.emit(this.html);
106
- }
107
- recalculateBodyTags() {
108
- this.bodyTags = BodyTagsExtensions.getBodyTags(this.html, { useCustomDomain: false, domain: "" });
109
- }
110
- ngOnInit() {
111
- this.recalculateBodyTags();
112
- this.tags = DefaultTags.getTags(this.useHtmlRaw);
113
- this.selectedValue = this.tags[0].tag;
114
- }
115
- }
116
- VisualEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: VisualEditorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
117
- VisualEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: VisualEditorComponent, selector: "croco-visual-editor", inputs: { showMarkUp: "showMarkUp", useHtmlRaw: "useHtmlRaw", html: "html" }, outputs: { html: "html", onHtmlChanged: "onHtmlChanged", rendered: "rendered" }, ngImport: i0, template: "<div *ngIf=\"isLoading\">\r\n <div>\r\n <mat-spinner style=\"margin:0 auto;\"></mat-spinner>\r\n <div style=\"text-align: center;\">{{loadingText}}</div>\r\n </div>\r\n <div style=\"height: 10px;\"></div>\r\n</div>\r\n\r\n<div [hidden]=\"isLoading\">\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <div *ngFor=\"let tag of bodyTags; let i = index\" cdkDrag>\r\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\r\n <mat-card-content>\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"example-handle\" cdkDragHandle>\r\n <svg width=\"24px\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path\r\n d=\"M10 9h4V6h3l-5-5-5 5h3v3zm-1 1H6V7l-5 5 5 5v-3h3v-4zm14 2l-5-5v3h-3v4h3v3l5-5zm-9 3h-4v3H7l5 5 5-5h-3v-3z\">\r\n </path>\r\n <path d=\"M0 0h24v24H0z\" fill=\"none\"></path>\r\n </svg>\r\n </div>\r\n <div>\r\n <mat-chip-listbox aria-label=\"Tag display value\">\r\n <mat-chip-option color=\"primary\"\r\n selected>{{tag.tagDescription.displayValue}}</mat-chip-option>\r\n </mat-chip-listbox>\r\n </div>\r\n </div>\r\n\r\n <div style=\"height: 15px;\"></div>\r\n\r\n <croco-html-main-editor-block [tag]=\"tag\" (onTagSaved)=\"onTagSavedHandler($event)\"\r\n (onTagRemoved)=\"onTagRemovedHandler(i)\">\r\n </croco-html-main-editor-block>\r\n </mat-card-content>\r\n </mat-card>\r\n\r\n <div style=\"height: 10px;\">\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<div [hidden]=\"isLoading\">\r\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\r\n <mat-card-content>\r\n <div class=\"row d-flex align-items-center\">\r\n <div class=\"col-12\">\r\n <mat-form-field class=\"w-100\" appearance=\"outline\">\r\n <mat-label>\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0435\u0433</mat-label>\r\n <mat-select [(ngModel)]=\"selectedValue\">\r\n <mat-option *ngFor=\"let tag of tags\" [value]=\"tag.tag\">\r\n {{tag.displayValue}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-12\">\r\n <button (click)=\"addTag()\" class=\"w-100\" mat-stroked-button>\r\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0442\u0435\u0433\r\n </button>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n\r\n <div style=\"height: 10px;\">\r\n </div>\r\n</div>\r\n\r\n<div [hidden]=\"isLoading\">\r\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\r\n <mat-card-content>\r\n <div class=\"row d-flex align-items-center\">\r\n <div class=\"col-12\">\r\n <croco-html-add-files-btn (filesTagsReady)=\"filesTagsReadyHandler($event)\"\r\n (postFilesStarted)=\"postFilesStartedEventHandler($event)\" class=\"w-100\">\r\n </croco-html-add-files-btn>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n\r\n <div style=\"height: 10px;\">\r\n </div>\r\n</div>", styles: [".example-list{width:500px;max-width:100%;border:solid 1px #ccc;min-height:60px;display:block;background:white;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:white;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)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "component", type: i4.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i5.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i8.MatChipListbox, selector: "mat-chip-listbox", inputs: ["tabIndex", "multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i8.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "selectable", "selected"], outputs: ["selectionChange"] }, { kind: "component", type: i9.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i10.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i10.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i10.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i11.MainEditorBlockComponent, selector: "croco-html-main-editor-block", inputs: ["tag"], outputs: ["onTagSaved", "onTagRemoved"] }, { kind: "component", type: i12.AddFilesBtnComponent, selector: "croco-html-add-files-btn", outputs: ["postFilesStarted", "filesTagsReady"] }] });
118
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: VisualEditorComponent, decorators: [{
119
- type: Component,
120
- args: [{ selector: 'croco-visual-editor', template: "<div *ngIf=\"isLoading\">\r\n <div>\r\n <mat-spinner style=\"margin:0 auto;\"></mat-spinner>\r\n <div style=\"text-align: center;\">{{loadingText}}</div>\r\n </div>\r\n <div style=\"height: 10px;\"></div>\r\n</div>\r\n\r\n<div [hidden]=\"isLoading\">\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <div *ngFor=\"let tag of bodyTags; let i = index\" cdkDrag>\r\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\r\n <mat-card-content>\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"example-handle\" cdkDragHandle>\r\n <svg width=\"24px\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\r\n <path\r\n d=\"M10 9h4V6h3l-5-5-5 5h3v3zm-1 1H6V7l-5 5 5 5v-3h3v-4zm14 2l-5-5v3h-3v4h3v3l5-5zm-9 3h-4v3H7l5 5 5-5h-3v-3z\">\r\n </path>\r\n <path d=\"M0 0h24v24H0z\" fill=\"none\"></path>\r\n </svg>\r\n </div>\r\n <div>\r\n <mat-chip-listbox aria-label=\"Tag display value\">\r\n <mat-chip-option color=\"primary\"\r\n selected>{{tag.tagDescription.displayValue}}</mat-chip-option>\r\n </mat-chip-listbox>\r\n </div>\r\n </div>\r\n\r\n <div style=\"height: 15px;\"></div>\r\n\r\n <croco-html-main-editor-block [tag]=\"tag\" (onTagSaved)=\"onTagSavedHandler($event)\"\r\n (onTagRemoved)=\"onTagRemovedHandler(i)\">\r\n </croco-html-main-editor-block>\r\n </mat-card-content>\r\n </mat-card>\r\n\r\n <div style=\"height: 10px;\">\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<div [hidden]=\"isLoading\">\r\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\r\n <mat-card-content>\r\n <div class=\"row d-flex align-items-center\">\r\n <div class=\"col-12\">\r\n <mat-form-field class=\"w-100\" appearance=\"outline\">\r\n <mat-label>\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0435\u0433</mat-label>\r\n <mat-select [(ngModel)]=\"selectedValue\">\r\n <mat-option *ngFor=\"let tag of tags\" [value]=\"tag.tag\">\r\n {{tag.displayValue}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-12\">\r\n <button (click)=\"addTag()\" class=\"w-100\" mat-stroked-button>\r\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0442\u0435\u0433\r\n </button>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n\r\n <div style=\"height: 10px;\">\r\n </div>\r\n</div>\r\n\r\n<div [hidden]=\"isLoading\">\r\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\r\n <mat-card-content>\r\n <div class=\"row d-flex align-items-center\">\r\n <div class=\"col-12\">\r\n <croco-html-add-files-btn (filesTagsReady)=\"filesTagsReadyHandler($event)\"\r\n (postFilesStarted)=\"postFilesStartedEventHandler($event)\" class=\"w-100\">\r\n </croco-html-add-files-btn>\r\n </div>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n\r\n <div style=\"height: 10px;\">\r\n </div>\r\n</div>", styles: [".example-list{width:500px;max-width:100%;border:solid 1px #ccc;min-height:60px;display:block;background:white;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:white;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)}\n"] }]
121
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { showMarkUp: [{
122
- type: Input
123
- }], useHtmlRaw: [{
124
- type: Input
125
- }], html: [{
126
- type: Input
127
- }, {
128
- type: Output
129
- }], onHtmlChanged: [{
130
- type: Output
131
- }], rendered: [{
132
- type: Output
133
- }] } });
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcm9jby1odG1sL3NyYy9saWIvY29tcG9uZW50cy9lZGl0b3IvdmlzdWFsLWVkaXRvci92aXN1YWwtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvci92aXN1YWwtZWRpdG9yL3Zpc3VhbC1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFBb0MsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMzRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFPNUMsTUFBTSxPQUFPLHFCQUFxQjtJQW1CaEMsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFD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QXFCO2tCQUxqQyxTQUFTOytCQUNFLHFCQUFxQjt3R0FVL0IsVUFBVTtzQkFEVCxLQUFLO2dCQVFOLFVBQVU7c0JBRFQsS0FBSztnQkFLTixJQUFJO3NCQUZILEtBQUs7O3NCQUNMLE1BQU07Z0JBa0JQLGFBQWE7c0JBRFosTUFBTTtnQkFJUCxRQUFRO3NCQURQLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJvZHlUYWdzRXh0ZW5zaW9ucyB9IGZyb20gJy4uLy4uLy4uL2V4dGVuc2lvbnMvQm9keVRhZ3NFeHRlbnNpb25zJztcclxuaW1wb3J0IHsgRmlsZUltYWdlVGFnRGF0YUNvbnN0cyB9IGZyb20gJy4uLy4uLy4uL2V4dGVuc2lvbnMvSW1hZ2VNZXRob2RzJztcclxuaW1wb3J0IHsgVGV4dE1ldGhvZHMgfSBmcm9tICcuLi8uLi8uLi9leHRlbnNpb25zL1RleHRNZXRob2RzJztcclxuaW1wb3J0IHsgRXh0ZXJuYWxWaWRlb1RhZ0RhdGFDb25zdHMsIEV4dGVybmFsVmlkZW9TdXBwb3J0ZWRUeXBlcyB9IGZyb20gJy4uLy4uLy4uL2V4dGVuc2lvbnMvVmlkZW9NZXRob2RzJztcclxuaW1wb3J0IHsgWG1sRXh0ZW5zaW9ucyB9IGZyb20gJy4uLy4uLy4uL2V4dGVuc2lvbnMvWG1sRXh0ZW5zaW9ucyc7XHJcbmltcG9ydCB7IFRhZ0l0ZW0sIEh0bWxCb2R5VGFnIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL21vZGVscyc7XHJcbmltcG9ydCB7IEZpbGVQb3N0aW5nU3RhcnRlZCB9IGZyb20gJy4uLy4uL3VwbG9hZC1maWxlcy1idG4vdXBsb2FkLWZpbGVzLWJ0bi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEZWZhdWx0VGFncyB9IGZyb20gJy4vRGVmYXVsdFRhZ3MnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjcm9jby12aXN1YWwtZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdmlzdWFsLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdmlzdWFsLWVkaXRvci5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFZpc3VhbEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIGlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIGxvYWRpbmdUZXh0ID0gXCLQmNC00ZHRgiDQt9Cw0LPRgNGD0LfQutCwXCI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2hvd01hcmtVcCA9IHRydWU7XHJcblxyXG4gIHRhZ3M6IFRhZ0l0ZW1bXSA9IFtdO1xyXG5cclxuICBzZWxlY3RlZFZhbHVlOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdXNlSHRtbFJhdyA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIEBPdXRwdXQoKVxyXG4gIGh0bWw6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIGlzSHRtbFNldCgpe1xyXG4gICAgcmV0dXJuIHRoaXMuaHRtbC5zdGFydHNXaXRoKFwiPGJvZHk+XCIpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJIdG1sKCl7XHJcbiAgICB0aGlzLmh0bWwgPSBcIlwiO1xyXG4gICAgdGhpcy5yZWNhbGN1bGF0ZUJvZHlUYWdzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRIdG1sKCl7XHJcbiAgICB0aGlzLnJlY2FsY3VsYXRlSHRtbCgpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHRtbDtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uSHRtbENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcmVuZGVyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIGJvZHlUYWdzOiBIdG1sQm9keVRhZ1tdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfY2RyZWY6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW5kZXJlZC5lbWl0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY2RyZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgYWRkVGFnKCk6IHZvaWQge1xyXG4gICAgbGV0IHRhZ0Rlc2NyaXB0aW9uID0gdGhpcy50YWdzXHJcbiAgICAgIC5maW5kKHggPT4geC50YWcgPT09IHRoaXMuc2VsZWN0ZWRWYWx1ZSk7XHJcblxyXG4gICAgbGV0IGF0dHJzID0ge307XHJcbiAgICBsZXQgaW5uZXJIdG1sID0gXCJcIjtcclxuXHJcbiAgICBpZihUZXh0TWV0aG9kcy50ZXh0VGFncy5pbmNsdWRlcyh0YWdEZXNjcmlwdGlvbi50YWcpKXtcclxuICAgICAgYXR0cnNbXCJoLWFsaWduXCJdID0gXCJsZWZ0XCI7XHJcbiAgICAgIGlubmVySHRtbCA9IFwi0JLQstC10LTQuNGC0LUg0LLQsNGIINGC0LXQutGB0YJcIjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYodGFnRGVzY3JpcHRpb24udGFnID09IEV4dGVybmFsVmlkZW9UYWdEYXRhQ29uc3RzLlRhZ05hbWUpe1xyXG4gICAgICBhdHRyc1tFeHRlcm5hbFZpZGVvVGFnRGF0YUNvbnN0cy5WaWRlb1R5cGVBdHRyTmFtZV0gPSBFeHRlcm5hbFZpZGVvU3VwcG9ydGVkVHlwZXMuWW91dHViZTtcclxuICAgICAgYXR0cnNbRXh0ZXJuYWxWaWRlb1RhZ0RhdGFDb25zdHMuTGlua0F0dHJOYW1lXSA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgICBhdHRyc1tGaWxlSW1hZ2VUYWdEYXRhQ29uc3RzLkZpbGVJZEF0dHJOYW1lXSA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5ib2R5VGFncy5wdXNoKHtcclxuICAgICAgdGFnRGVzY3JpcHRpb24sXHJcbiAgICAgIGlubmVySHRtbCxcclxuICAgICAgYXR0cmlidXRlczogYXR0cnMsXHJcbiAgICAgIHByZXNlbnRPckVkaXQ6IHRydWVcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVjYWxjdWxhdGVIdG1sKCk7XHJcbiAgfVxyXG5cclxuICBwb3N0RmlsZXNTdGFydGVkRXZlbnRIYW5kbGVyKG1vZGVsOkZpbGVQb3N0aW5nU3RhcnRlZCl7XHJcbiAgICB0aGlzLmxvYWRpbmdUZXh0ID0gXCLQpNCw0LnQu9GLINC30LDQs9GA0YPQttCw0Y7RgtGB0Y8g0L3QsCDRgdC10YDQstC10YBcIjtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGFkZFRhZ0N1c3RvbSh0YWc6IEh0bWxCb2R5VGFnKXtcclxuICAgIHRoaXMuYm9keVRhZ3MucHVzaCh0YWcpO1xyXG4gICAgdGhpcy5yZWNhbGN1bGF0ZUh0bWwoKTtcclxuICB9XHJcblxyXG4gIGZpbGVzVGFnc1JlYWR5SGFuZGxlcih0YWdzOiBIdG1sQm9keVRhZ1tdKXtcclxuICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0YWdzLmxlbmd0aDsgaSsrKXtcclxuICAgICAgdGhpcy5ib2R5VGFncy5wdXNoKHRhZ3NbaV0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZWNhbGN1bGF0ZUh0bWwoKTtcclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8b2JqZWN0W10+KSB7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5ib2R5VGFncywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICAgIHRoaXMucmVjYWxjdWxhdGVIdG1sKCk7XHJcbiAgfVxyXG5cclxuICBvblRhZ1NhdmVkSGFuZGxlcih0YWc6IEh0bWxCb2R5VGFnKXtcclxuICAgIHRoaXMucmVjYWxjdWxhdGVIdG1sKCk7XHJcbiAgfVxyXG5cclxuICBvblRhZ1JlbW92ZWRIYW5kbGVyKGluZGV4OiBudW1iZXIpe1xyXG4gICAgdGhpcy5ib2R5VGFncy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgdGhpcy5yZWNhbGN1bGF0ZUh0bWwoKTtcclxuICB9XHJcblxyXG4gIHJlY2FsY3VsYXRlSHRtbCgpe1xyXG4gICAgbGV0IHJlc3VsdCA9IEJvZHlUYWdzRXh0ZW5zaW9ucy50b0h0bWwodGhpcy5ib2R5VGFncyk7XHJcbiAgICB0aGlzLmh0bWwgPSBYbWxFeHRlbnNpb25zLmZvcm1hdFhtbChcIjxib2R5PlwiICsgcmVzdWx0ICsgXCI8L2JvZHk+XCIpO1xyXG4gICAgdGhpcy5vbkh0bWxDaGFuZ2VkLmVtaXQodGhpcy5odG1sKTtcclxuICB9XHJcblxyXG4gIHJlY2FsY3VsYXRlQm9keVRhZ3MoKXtcclxuICAgIHRoaXMuYm9keVRhZ3MgPSBCb2R5VGFnc0V4dGVuc2lvbnMuZ2V0Qm9keVRhZ3ModGhpcy5odG1sLCB7dXNlQ3VzdG9tRG9tYWluOiBmYWxzZSwgZG9tYWluOiBcIlwifSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVjYWxjdWxhdGVCb2R5VGFncygpO1xyXG5cclxuICAgIHRoaXMudGFncyA9IERlZmF1bHRUYWdzLmdldFRhZ3ModGhpcy51c2VIdG1sUmF3KTtcclxuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHRoaXMudGFnc1swXS50YWc7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJpc0xvYWRpbmdcIj5cclxuICAgIDxkaXY+XHJcbiAgICAgICAgPG1hdC1zcGlubmVyIHN0eWxlPVwibWFyZ2luOjAgYXV0bztcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+e3tsb2FkaW5nVGV4dH19PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwcHg7XCI+PC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBbaGlkZGVuXT1cImlzTG9hZGluZ1wiPlxyXG4gICAgPGRpdiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHRhZyBvZiBib2R5VGFnczsgbGV0IGkgPSBpbmRleFwiIGNka0RyYWc+XHJcbiAgICAgICAgICAgIDxtYXQtY2FyZCBzdHlsZT1cIm1hcmdpbjogMnB4O1wiIGNsYXNzPVwibWF0LWNhcmRcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtaGFuZGxlXCIgY2RrRHJhZ0hhbmRsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyNHB4XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEwIDloNFY2aDNsLTUtNS01IDVoM3Yzem0tMSAxSDZWN2wtNSA1IDUgNXYtM2gzdi00em0xNCAybC01LTV2M2gtM3Y0aDN2M2w1LTV6bS05IDNoLTR2M0g3bDUgNSA1LTVoLTN2LTN6XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoaXAtbGlzdGJveCBhcmlhLWxhYmVsPVwiVGFnIGRpc3BsYXkgdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoaXAtb3B0aW9uIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPnt7dGFnLnRhZ0Rlc2NyaXB0aW9uLmRpc3BsYXlWYWx1ZX19PC9tYXQtY2hpcC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGlwLWxpc3Rib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxNXB4O1wiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8Y3JvY28taHRtbC1tYWluLWVkaXRvci1ibG9jayBbdGFnXT1cInRhZ1wiIChvblRhZ1NhdmVkKT1cIm9uVGFnU2F2ZWRIYW5kbGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAob25UYWdSZW1vdmVkKT1cIm9uVGFnUmVtb3ZlZEhhbmRsZXIoaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Nyb2NvLWh0bWwtbWFpbi1lZGl0b3ItYmxvY2s+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvbWF0LWNhcmQ+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxMHB4O1wiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcblxyXG48ZGl2IFtoaWRkZW5dPVwiaXNMb2FkaW5nXCI+XHJcbiAgICA8bWF0LWNhcmQgc3R5bGU9XCJtYXJnaW46IDJweDtcIiBjbGFzcz1cIm1hdC1jYXJkXCI+XHJcbiAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD7QktGL0LHQtdGA0LjRgtC1INGC0LXQszwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB0YWcgb2YgdGFnc1wiIFt2YWx1ZV09XCJ0YWcudGFnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3t0YWcuZGlzcGxheVZhbHVlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJhZGRUYWcoKVwiIGNsYXNzPVwidy0xMDBcIiBtYXQtc3Ryb2tlZC1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgINCU0L7QsdCw0LLQuNGC0Ywg0YLQtdCzXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgPC9tYXQtY2FyZD5cclxuXHJcbiAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxMHB4O1wiPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBbaGlkZGVuXT1cImlzTG9hZGluZ1wiPlxyXG4gICAgPG1hdC1jYXJkIHN0eWxlPVwibWFyZ2luOiAycHg7XCIgY2xhc3M9XCJtYXQtY2FyZFwiPlxyXG4gICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8Y3JvY28taHRtbC1hZGQtZmlsZXMtYnRuIChmaWxlc1RhZ3NSZWFkeSk9XCJmaWxlc1RhZ3NSZWFkeUhhbmRsZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChwb3N0RmlsZXNTdGFydGVkKT1cInBvc3RGaWxlc1N0YXJ0ZWRFdmVudEhhbmRsZXIoJGV2ZW50KVwiIGNsYXNzPVwidy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Nyb2NvLWh0bWwtYWRkLWZpbGVzLWJ0bj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8L21hdC1jYXJkPlxyXG5cclxuICAgIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDEwcHg7XCI+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -1,49 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/platform-browser";
4
- import * as i2 from "@angular/common";
5
- import * as i3 from "@angular/youtube-player";
6
- export class XmlTagExternalVideoComponent {
7
- set data(value) {
8
- this.tagData = value.data;
9
- }
10
- ;
11
- set tagData(value) {
12
- this.videoId = this.getYouTubeId(value.link);
13
- }
14
- ;
15
- constructor(_domSanitizer) {
16
- this._domSanitizer = _domSanitizer;
17
- }
18
- ngOnInit() {
19
- const youtubeIframeApiUrl = 'https://www.youtube.com/iframe_api';
20
- if (!document.querySelector(`script[src="${youtubeIframeApiUrl}"]`)) {
21
- // This code loads the IFrame Player API code asynchronously, according to the instructions at
22
- // https://developers.google.com/youtube/iframe_api_reference#Getting_Started
23
- const tag = document.createElement('script');
24
- tag.setAttribute('src', youtubeIframeApiUrl);
25
- document.body.appendChild(tag);
26
- }
27
- }
28
- getYouTubeId(youtubeLink) {
29
- //https://www.youtube.com/watch?v=l3KfbfkxJOU
30
- if (youtubeLink.includes("watch?v=")) {
31
- const url = new URL(youtubeLink);
32
- return url.searchParams.get("v");
33
- }
34
- //https://youtu.be/jzBneaWSswY
35
- const bits = youtubeLink.split('/');
36
- return bits[bits.length - 1];
37
- }
38
- }
39
- XmlTagExternalVideoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: XmlTagExternalVideoComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
40
- XmlTagExternalVideoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: XmlTagExternalVideoComponent, selector: "croco-html-xml-tag-external-video", inputs: { data: "data", tagData: "tagData" }, ngImport: i0, template: "<div class=\"d-flex justify-content-center\">\r\n <youtube-player height=\"100%\" width=\"100%\" class=\"y-video\" *ngIf=\"videoId\" [videoId]=\"videoId\"></youtube-player>\r\n</div>\r\n", styles: ["@media only screen and (min-width: 769px){.y-video{display:block;width:640px;height:360px;margin:0 auto}}@media only screen and (max-width: 827px){.y-video{display:block;width:100%;height:315px}}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.YouTubePlayer, selector: "youtube-player", inputs: ["videoId", "height", "width", "startSeconds", "endSeconds", "suggestedQuality", "playerVars", "disableCookies", "showBeforeIframeApiLoads"], outputs: ["ready", "stateChange", "error", "apiChange", "playbackQualityChange", "playbackRateChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: XmlTagExternalVideoComponent, decorators: [{
42
- type: Component,
43
- args: [{ selector: 'croco-html-xml-tag-external-video', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"d-flex justify-content-center\">\r\n <youtube-player height=\"100%\" width=\"100%\" class=\"y-video\" *ngIf=\"videoId\" [videoId]=\"videoId\"></youtube-player>\r\n</div>\r\n", styles: ["@media only screen and (min-width: 769px){.y-video{display:block;width:640px;height:360px;margin:0 auto}}@media only screen and (max-width: 827px){.y-video{display:block;width:100%;height:315px}}\n"] }]
44
- }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; }, propDecorators: { data: [{
45
- type: Input
46
- }], tagData: [{
47
- type: Input
48
- }] } });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1sLXRhZy1leHRlcm5hbC12aWRlby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcm9jby1odG1sL3NyYy9saWIvY29tcG9uZW50cy94bWwtdGFncy94bWwtdGFnLWV4dGVybmFsLXZpZGVvL3htbC10YWctZXh0ZXJuYWwtdmlkZW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JvY28taHRtbC9zcmMvbGliL2NvbXBvbmVudHMveG1sLXRhZ3MveG1sLXRhZy1leHRlcm5hbC12aWRlby94bWwtdGFnLWV4dGVybmFsLXZpZGVvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDOzs7OztBQVdoRixNQUFNLE9BQU8sNEJBQTRCO0lBQ3ZDLElBQW9CLElBQUksQ0FBQyxLQUFxQjtRQUM1QyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUFBLENBQUM7SUFFRixJQUFvQixPQUFPLENBQUMsS0FBMkI7UUFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQUEsQ0FBQztJQUlGLFlBQW9CLGFBQTJCO1FBQTNCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO0lBQUksQ0FBQztJQUVwRCxRQUFRO1FBQ04sTUFBTSxtQkFBbUIsR0FBRyxvQ0FBb0MsQ0FBQztRQUNqRSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxlQUFlLG1CQUFtQixJQUFJLENBQUMsRUFBRTtZQUNuRSw4RkFBOEY7WUFDOUYsNkVBQTZFO1lBQzdFLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0MsR0FBRyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztZQUM3QyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsV0FBa0I7UUFFckMsNkNBQTZDO1FBQzdDLElBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBQztZQUNsQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNqQyxPQUFPLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2xDO1FBRUQsOEJBQThCO1FBQzlCLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDbkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDOzt5SEFuQ1UsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsdUhDWHpDLDZMQUdBOzJGRFFhLDRCQUE0QjtrQkFOeEMsU0FBUzsrQkFDRSxtQ0FBbUMsbUJBRzVCLHVCQUF1QixDQUFDLE1BQU07bUdBRzNCLElBQUk7c0JBQXZCLEtBQUs7Z0JBSWMsT0FBTztzQkFBMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RG9tU2FuaXRpemVyfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHtJbnRlcmZhY2VCbG9ja30gZnJvbSBcIi4uLy4uLy4uL2V4dGVuc2lvbnMvSW50ZXJmYWNlQmxvY2tcIjtcclxuaW1wb3J0IHtFeHRlcm5hbFZpZGVvVGFnRGF0YX0gZnJvbSAnLi4vLi4vLi4vZXh0ZW5zaW9ucyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Nyb2NvLWh0bWwteG1sLXRhZy1leHRlcm5hbC12aWRlbycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3htbC10YWctZXh0ZXJuYWwtdmlkZW8uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3htbC10YWctZXh0ZXJuYWwtdmlkZW8uY29tcG9uZW50LmNzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWG1sVGFnRXh0ZXJuYWxWaWRlb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgcHVibGljIHNldCBkYXRhKHZhbHVlOiBJbnRlcmZhY2VCbG9jaykge1xyXG4gICAgdGhpcy50YWdEYXRhID0gdmFsdWUuZGF0YTtcclxuICB9O1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgc2V0IHRhZ0RhdGEodmFsdWU6IEV4dGVybmFsVmlkZW9UYWdEYXRhKSB7XHJcbiAgICB0aGlzLnZpZGVvSWQgPSB0aGlzLmdldFlvdVR1YmVJZCh2YWx1ZS5saW5rKTtcclxuICB9O1xyXG5cclxuICBwdWJsaWMgdmlkZW9JZD86IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHlvdXR1YmVJZnJhbWVBcGlVcmwgPSAnaHR0cHM6Ly93d3cueW91dHViZS5jb20vaWZyYW1lX2FwaSc7XHJcbiAgICBpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYHNjcmlwdFtzcmM9XCIke3lvdXR1YmVJZnJhbWVBcGlVcmx9XCJdYCkpIHtcclxuICAgICAgLy8gVGhpcyBjb2RlIGxvYWRzIHRoZSBJRnJhbWUgUGxheWVyIEFQSSBjb2RlIGFzeW5jaHJvbm91c2x5LCBhY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucyBhdFxyXG4gICAgICAvLyBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS95b3V0dWJlL2lmcmFtZV9hcGlfcmVmZXJlbmNlI0dldHRpbmdfU3RhcnRlZFxyXG4gICAgICBjb25zdCB0YWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuICAgICAgdGFnLnNldEF0dHJpYnV0ZSgnc3JjJywgeW91dHViZUlmcmFtZUFwaVVybCk7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGFnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0WW91VHViZUlkKHlvdXR1YmVMaW5rOnN0cmluZyk6IHN0cmluZyB7XHJcblxyXG4gICAgLy9odHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWwzS2ZiZmt4Sk9VXHJcbiAgICBpZih5b3V0dWJlTGluay5pbmNsdWRlcyhcIndhdGNoP3Y9XCIpKXtcclxuICAgICAgY29uc3QgdXJsID0gbmV3IFVSTCh5b3V0dWJlTGluayk7XHJcbiAgICAgIHJldHVybiB1cmwuc2VhcmNoUGFyYW1zLmdldChcInZcIik7XHJcbiAgICB9XHJcblxyXG4gICAgLy9odHRwczovL3lvdXR1LmJlL2p6Qm5lYVdTc3dZXHJcbiAgICBjb25zdCBiaXRzID0geW91dHViZUxpbmsuc3BsaXQoJy8nKVxyXG4gICAgcmV0dXJuIGJpdHNbYml0cy5sZW5ndGggLSAxXTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgPHlvdXR1YmUtcGxheWVyIGhlaWdodD1cIjEwMCVcIiB3aWR0aD1cIjEwMCVcIiBjbGFzcz1cInktdmlkZW9cIiAqbmdJZj1cInZpZGVvSWRcIiBbdmlkZW9JZF09XCJ2aWRlb0lkXCI+PC95b3V0dWJlLXBsYXllcj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -1,22 +0,0 @@
1
- import { Component, Input, ViewEncapsulation } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "../xml-tag-html-view/xml-tag-html-view.component";
5
- import * as i3 from "../xml-tag-text-view/xml-tag-text-view.component";
6
- import * as i4 from "../xml-tag-header-text-view/xml-tag-header-text-view.component";
7
- import * as i5 from "../xml-tag-external-video/xml-tag-external-video.component";
8
- import * as i6 from "../html-raw-view/html-raw-view.component";
9
- export class XmlTagViewComponent {
10
- constructor() {
11
- this.data = [];
12
- }
13
- }
14
- XmlTagViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: XmlTagViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
15
- XmlTagViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: XmlTagViewComponent, selector: "croco-html-xml-tag-view", inputs: { data: "data" }, ngImport: i0, template: "<div class=\"\">\r\n <div class=\"row\" *ngFor=\"let item of data\">\r\n <div *ngIf=\"item.type === 'text'\">\r\n <croco-html-xml-tag-text-view [item]=\"item\"></croco-html-xml-tag-text-view>\r\n </div>\r\n <div *ngIf=\"item.type === 'html-raw'\">\r\n <croco-html-raw-view [rawHtml]=\"item.data.innerHTML\">\r\n </croco-html-raw-view>\r\n </div>\r\n <div *ngIf=\"item.type === 'h1' || item.type === 'h2' || item.type === 'h3' || item.type === 'h4' || item.type === 'h5' || item.type === 'h6'\">\r\n <croco-html-xml-tag-header-text-view [item]=\"item\"></croco-html-xml-tag-header-text-view>\r\n </div>\r\n <div *ngIf=\"item.type === 'file-image'\">\r\n <img class=\"mx-auto d-block img-fluid\" [src]=\"item.data.src\"/>\r\n </div>\r\n <div *ngIf=\"item.type === 'table'\">\r\n \r\n <croco-html-xml-tag-html-view *ngIf=\"item.validationResult.isSucceeded\" [html]=\"item.bootstrapHtml\">\r\n </croco-html-xml-tag-html-view>\r\n \r\n <app-tutor-baseapiresponse-banner \r\n *ngIf=\"item.validationResult && !item.validationResult.isSucceeded\" \r\n [message]=\"item.validationResult.message\">\r\n </app-tutor-baseapiresponse-banner>\r\n </div>\r\n \r\n <div *ngIf=\"item.type === 'rich-text'\">\r\n <croco-html-xml-tag-text-view [richTextData]=\"item\"></croco-html-xml-tag-text-view>\r\n </div>\r\n <div *ngIf=\"item.type === 'external-video'\">\r\n <croco-html-xml-tag-external-video [data]=\"item\"></croco-html-xml-tag-external-video>\r\n </div>\r\n <div *ngIf=\"item.type === 'unsupported-tag'\" class=\"red\" style=\"margin-top: 10px;\" >\r\n <h4>\u0414\u0430\u043D\u043D\u044B\u0439 \u0442\u0435\u0433 \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F</h4>\r\n <span>\r\n {{item.data.tagString}}\r\n </span>\r\n </div>\r\n </div>\r\n</div>", styles: [".red{background-color:#c94444;color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.XmlTagHtmlViewComponent, selector: "croco-html-xml-tag-html-view", inputs: ["html"] }, { kind: "component", type: i3.XmlTagTextViewComponent, selector: "croco-html-xml-tag-text-view", inputs: ["item"] }, { kind: "component", type: i4.XmlTagHeaderTextViewComponent, selector: "croco-html-xml-tag-header-text-view", inputs: ["item"] }, { kind: "component", type: i5.XmlTagExternalVideoComponent, selector: "croco-html-xml-tag-external-video", inputs: ["data", "tagData"] }, { kind: "component", type: i6.HtmlRawViewComponent, selector: "croco-html-raw-view", inputs: ["rawHtml"] }], encapsulation: i0.ViewEncapsulation.None });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: XmlTagViewComponent, decorators: [{
17
- type: Component,
18
- args: [{ selector: 'croco-html-xml-tag-view', encapsulation: ViewEncapsulation.None, template: "<div class=\"\">\r\n <div class=\"row\" *ngFor=\"let item of data\">\r\n <div *ngIf=\"item.type === 'text'\">\r\n <croco-html-xml-tag-text-view [item]=\"item\"></croco-html-xml-tag-text-view>\r\n </div>\r\n <div *ngIf=\"item.type === 'html-raw'\">\r\n <croco-html-raw-view [rawHtml]=\"item.data.innerHTML\">\r\n </croco-html-raw-view>\r\n </div>\r\n <div *ngIf=\"item.type === 'h1' || item.type === 'h2' || item.type === 'h3' || item.type === 'h4' || item.type === 'h5' || item.type === 'h6'\">\r\n <croco-html-xml-tag-header-text-view [item]=\"item\"></croco-html-xml-tag-header-text-view>\r\n </div>\r\n <div *ngIf=\"item.type === 'file-image'\">\r\n <img class=\"mx-auto d-block img-fluid\" [src]=\"item.data.src\"/>\r\n </div>\r\n <div *ngIf=\"item.type === 'table'\">\r\n \r\n <croco-html-xml-tag-html-view *ngIf=\"item.validationResult.isSucceeded\" [html]=\"item.bootstrapHtml\">\r\n </croco-html-xml-tag-html-view>\r\n \r\n <app-tutor-baseapiresponse-banner \r\n *ngIf=\"item.validationResult && !item.validationResult.isSucceeded\" \r\n [message]=\"item.validationResult.message\">\r\n </app-tutor-baseapiresponse-banner>\r\n </div>\r\n \r\n <div *ngIf=\"item.type === 'rich-text'\">\r\n <croco-html-xml-tag-text-view [richTextData]=\"item\"></croco-html-xml-tag-text-view>\r\n </div>\r\n <div *ngIf=\"item.type === 'external-video'\">\r\n <croco-html-xml-tag-external-video [data]=\"item\"></croco-html-xml-tag-external-video>\r\n </div>\r\n <div *ngIf=\"item.type === 'unsupported-tag'\" class=\"red\" style=\"margin-top: 10px;\" >\r\n <h4>\u0414\u0430\u043D\u043D\u044B\u0439 \u0442\u0435\u0433 \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F</h4>\r\n <span>\r\n {{item.data.tagString}}\r\n </span>\r\n </div>\r\n </div>\r\n</div>", styles: [".red{background-color:#c94444;color:#fff}\n"] }]
19
- }], ctorParameters: function () { return []; }, propDecorators: { data: [{
20
- type: Input
21
- }] } });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1sLXRhZy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2xpYi9jb21wb25lbnRzL3htbC10YWdzL3htbC10YWctdmlldy94bWwtdGFnLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JvY28taHRtbC9zcmMvbGliL2NvbXBvbmVudHMveG1sLXRhZ3MveG1sLXRhZy12aWV3L3htbC10YWctdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7QUFTcEUsTUFBTSxPQUFPLG1CQUFtQjtJQUs5QjtRQUZBLFNBQUksR0FBb0IsRUFBRSxDQUFDO0lBRVgsQ0FBQzs7Z0hBTE4sbUJBQW1CO29HQUFuQixtQkFBbUIseUZDVGhDLGlsRUF1Q007MkZEOUJPLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDRSx5QkFBeUIsaUJBR3BCLGlCQUFpQixDQUFDLElBQUk7MEVBS3JDLElBQUk7c0JBREgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEludGVyZmFjZUJsb2NrIH0gZnJvbSBcIi4uLy4uLy4uL2V4dGVuc2lvbnMvSW50ZXJmYWNlQmxvY2tcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY3JvY28taHRtbC14bWwtdGFnLXZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi94bWwtdGFnLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3htbC10YWctdmlldy5jb21wb25lbnQuY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFhtbFRhZ1ZpZXdDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGRhdGE6SW50ZXJmYWNlQmxvY2tbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YVwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICd0ZXh0J1wiPlxyXG4gICAgICAgICAgICA8Y3JvY28taHRtbC14bWwtdGFnLXRleHQtdmlldyBbaXRlbV09XCJpdGVtXCI+PC9jcm9jby1odG1sLXhtbC10YWctdGV4dC12aWV3PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdodG1sLXJhdydcIj5cclxuICAgICAgICAgICAgPGNyb2NvLWh0bWwtcmF3LXZpZXcgW3Jhd0h0bWxdPVwiaXRlbS5kYXRhLmlubmVySFRNTFwiPlxyXG4gICAgICAgICAgICA8L2Nyb2NvLWh0bWwtcmF3LXZpZXc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ2gxJyB8fCBpdGVtLnR5cGUgPT09ICdoMicgfHwgaXRlbS50eXBlID09PSAnaDMnIHx8IGl0ZW0udHlwZSA9PT0gJ2g0JyB8fCBpdGVtLnR5cGUgPT09ICdoNScgfHwgaXRlbS50eXBlID09PSAnaDYnXCI+XHJcbiAgICAgICAgICAgIDxjcm9jby1odG1sLXhtbC10YWctaGVhZGVyLXRleHQtdmlldyBbaXRlbV09XCJpdGVtXCI+PC9jcm9jby1odG1sLXhtbC10YWctaGVhZGVyLXRleHQtdmlldz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS50eXBlID09PSAnZmlsZS1pbWFnZSdcIj5cclxuICAgICAgICAgICAgPGltZyBjbGFzcz1cIm14LWF1dG8gZC1ibG9jayBpbWctZmx1aWRcIiBbc3JjXT1cIml0ZW0uZGF0YS5zcmNcIi8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ3RhYmxlJ1wiPlxyXG4gICAgXHJcbiAgICAgICAgICAgIDxjcm9jby1odG1sLXhtbC10YWctaHRtbC12aWV3ICpuZ0lmPVwiaXRlbS52YWxpZGF0aW9uUmVzdWx0LmlzU3VjY2VlZGVkXCIgW2h0bWxdPVwiaXRlbS5ib290c3RyYXBIdG1sXCI+XHJcbiAgICAgICAgICAgIDwvY3JvY28taHRtbC14bWwtdGFnLWh0bWwtdmlldz5cclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8YXBwLXR1dG9yLWJhc2VhcGlyZXNwb25zZS1iYW5uZXIgXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0udmFsaWRhdGlvblJlc3VsdCAmJiAhaXRlbS52YWxpZGF0aW9uUmVzdWx0LmlzU3VjY2VlZGVkXCIgXHJcbiAgICAgICAgICAgICAgICBbbWVzc2FnZV09XCJpdGVtLnZhbGlkYXRpb25SZXN1bHQubWVzc2FnZVwiPlxyXG4gICAgICAgICAgICA8L2FwcC10dXRvci1iYXNlYXBpcmVzcG9uc2UtYmFubmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ3JpY2gtdGV4dCdcIj5cclxuICAgICAgICAgICAgPGNyb2NvLWh0bWwteG1sLXRhZy10ZXh0LXZpZXcgW3JpY2hUZXh0RGF0YV09XCJpdGVtXCI+PC9jcm9jby1odG1sLXhtbC10YWctdGV4dC12aWV3PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdleHRlcm5hbC12aWRlbydcIj5cclxuICAgICAgICAgICAgPGNyb2NvLWh0bWwteG1sLXRhZy1leHRlcm5hbC12aWRlbyBbZGF0YV09XCJpdGVtXCI+PC9jcm9jby1odG1sLXhtbC10YWctZXh0ZXJuYWwtdmlkZW8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ3Vuc3VwcG9ydGVkLXRhZydcIiBjbGFzcz1cInJlZFwiIHN0eWxlPVwibWFyZ2luLXRvcDogMTBweDtcIiA+XHJcbiAgICAgICAgICAgIDxoND7QlNCw0L3QvdGL0Lkg0YLQtdCzINC90LUg0L/QvtC00LTQtdGA0LbQuNCy0LDQtdGC0YHRjzwvaDQ+XHJcbiAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAge3tpdGVtLmRhdGEudGFnU3RyaW5nfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
@@ -1,91 +0,0 @@
1
- import { CommonModule } from "@angular/common";
2
- import { NgModule } from "@angular/core";
3
- import { FormsModule, ReactiveFormsModule } from "@angular/forms";
4
- import { NgSelectModule } from "@ng-select/ng-select";
5
- import { CrocoHtmlDeclarations, MaterialModules } from ".";
6
- import { YouTubePlayerModule } from "@angular/youtube-player";
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "./components/upload-files-btn/upload-files-btn.component";
9
- import * as i2 from "./components/xml-tags/xml-tag-table-view/xml-tag-table-view.component";
10
- import * as i3 from "./components/xml-tags/xml-tag-view/xml-tag-view.component";
11
- import * as i4 from "./components/xml-tags/xml-tag-rich-text-view/xml-tag-rich-text-view.component";
12
- import * as i5 from "./components/xml-tags/xml-tag-html-view/xml-tag-html-view.component";
13
- import * as i6 from "./components/xml-tags/xml-tag-text-view/xml-tag-text-view.component";
14
- import * as i7 from "./components/xml-tags/xml-tag-header-text-view/xml-tag-header-text-view.component";
15
- import * as i8 from "./components/xml-tags/xml-tag-header-inner-text-view/xml-tag-header-inner-text-view.component";
16
- import * as i9 from "./components/xml-tags/xml-tag-external-video/xml-tag-external-video.component";
17
- import * as i10 from "./components/xml-tags/html-raw-view/html-raw-view.component";
18
- import * as i11 from "./components/editor/main-editor/main-editor.component";
19
- import * as i12 from "./components/file-id-select/file-id-select.component";
20
- import * as i13 from "./components/editor/text-editor/text-editor.component";
21
- import * as i14 from "./components/editor/external-video-block/external-video-block.component";
22
- import * as i15 from "./components/editor/image-editor/image-editor.component";
23
- import * as i16 from "./components/editor/main-editor-block/main-editor-block.component";
24
- import * as i17 from "./components/editor/visual-editor/visual-editor.component";
25
- import * as i18 from "./components/add-files-btn/add-files-btn.component";
26
- import * as i19 from "./components/editor/html-raw-editor/html-raw-editor.component";
27
- import * as i20 from "./pipes/RichTextToHtmlPipe";
28
- import * as i21 from "./pipes/TagToSpanPipe";
29
- import * as i22 from "./pipes/to-preview.pipe";
30
- import * as i23 from "./pipes/ToHtmlBodyTagsPipe";
31
- import * as i24 from "./pipes/ToPreviewHtmlPipe";
32
- import * as i25 from "@angular/material/badge";
33
- import * as i26 from "@angular/material/table";
34
- import * as i27 from "@angular/material/expansion";
35
- import * as i28 from "@angular/material/form-field";
36
- import * as i29 from "@angular/material/snack-bar";
37
- import * as i30 from "@angular/material/progress-bar";
38
- import * as i31 from "@angular/material/progress-spinner";
39
- import * as i32 from "@angular/material/tabs";
40
- import * as i33 from "@angular/material/menu";
41
- import * as i34 from "@angular/material/card";
42
- import * as i35 from "@angular/material/select";
43
- import * as i36 from "@angular/material/tooltip";
44
- import * as i37 from "@angular/material/checkbox";
45
- import * as i38 from "@angular/material/chips";
46
- import * as i39 from "@angular/material/list";
47
- import * as i40 from "@angular/material/button";
48
- import * as i41 from "@angular/material/input";
49
- import * as i42 from "@angular/material/dialog";
50
- import * as i43 from "@angular/material/paginator";
51
- import * as i44 from "@angular/material/datepicker";
52
- import * as i45 from "@angular/material/grid-list";
53
- import * as i46 from "@angular/material/slide-toggle";
54
- import * as i47 from "@angular/material/tree";
55
- import * as i48 from "@angular/material/core";
56
- import * as i49 from "@angular/material/autocomplete";
57
- import * as i50 from "@angular/material/sidenav";
58
- import * as i51 from "@angular/material/icon";
59
- import * as i52 from "@angular/cdk/drag-drop";
60
- import * as i53 from "@angular/material/button-toggle";
61
- export class CrocoHtmlModule {
62
- }
63
- CrocoHtmlModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CrocoHtmlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
64
- CrocoHtmlModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: CrocoHtmlModule, declarations: [i1.UploadFilesBtnComponent, i2.XmlTagTableViewComponent, i3.XmlTagViewComponent, i4.XmlTagRichTextViewComponent, i5.XmlTagHtmlViewComponent, i6.XmlTagTextViewComponent, i7.XmlTagHeaderTextViewComponent, i8.XmlTagHeaderInnerTextViewComponent, i9.XmlTagExternalVideoComponent, i10.HtmlRawViewComponent, i11.MainEditorComponent, i12.FileIdSelectComponent, i13.TextEditorComponent, i14.ExternalVideoBlockComponent, i15.ImageEditorComponent, i16.MainEditorBlockComponent, i17.VisualEditorComponent, i18.AddFilesBtnComponent, i19.HtmlRawEditorComponent, i20.RichTextToHtmlPipe, i21.TagToSpanPipe, i22.ToPreviewPipe, i23.ToHtmlBodyTagsPipe, i24.ToPreviewHtmlPipe], imports: [CommonModule,
65
- FormsModule,
66
- ReactiveFormsModule,
67
- NgSelectModule, i25.MatBadgeModule, i26.MatTableModule, i27.MatExpansionModule, i28.MatFormFieldModule, i29.MatSnackBarModule, i30.MatProgressBarModule, i31.MatProgressSpinnerModule, i32.MatTabsModule, i33.MatMenuModule, i34.MatCardModule, i35.MatSelectModule, i36.MatTooltipModule, i37.MatCheckboxModule, i38.MatChipsModule, i39.MatListModule, i40.MatButtonModule, i41.MatInputModule, i42.MatDialogModule, i43.MatPaginatorModule, i44.MatDatepickerModule, i45.MatGridListModule, i46.MatSlideToggleModule, i47.MatTreeModule, i48.MatNativeDateModule, i49.MatAutocompleteModule, i50.MatSidenavModule, i51.MatIconModule, i52.DragDropModule, i53.MatButtonToggleModule, YouTubePlayerModule], exports: [i1.UploadFilesBtnComponent, i2.XmlTagTableViewComponent, i3.XmlTagViewComponent, i4.XmlTagRichTextViewComponent, i5.XmlTagHtmlViewComponent, i6.XmlTagTextViewComponent, i7.XmlTagHeaderTextViewComponent, i8.XmlTagHeaderInnerTextViewComponent, i9.XmlTagExternalVideoComponent, i10.HtmlRawViewComponent, i11.MainEditorComponent, i12.FileIdSelectComponent, i13.TextEditorComponent, i14.ExternalVideoBlockComponent, i15.ImageEditorComponent, i16.MainEditorBlockComponent, i17.VisualEditorComponent, i18.AddFilesBtnComponent, i19.HtmlRawEditorComponent, i20.RichTextToHtmlPipe, i21.TagToSpanPipe, i22.ToPreviewPipe, i23.ToHtmlBodyTagsPipe, i24.ToPreviewHtmlPipe] });
68
- CrocoHtmlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CrocoHtmlModule, imports: [CommonModule,
69
- FormsModule,
70
- ReactiveFormsModule,
71
- NgSelectModule, MaterialModules, YouTubePlayerModule] });
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CrocoHtmlModule, decorators: [{
73
- type: NgModule,
74
- args: [{
75
- declarations: [
76
- ...CrocoHtmlDeclarations,
77
- ],
78
- exports: [
79
- ...CrocoHtmlDeclarations,
80
- ],
81
- imports: [
82
- CommonModule,
83
- FormsModule,
84
- ReactiveFormsModule,
85
- NgSelectModule,
86
- ...MaterialModules,
87
- YouTubePlayerModule
88
- ]
89
- }]
90
- }] });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvY28taHRtbC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jcm9jby1odG1sL3NyYy9saWIvY3JvY28taHRtbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLE1BQU0sR0FBRyxDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0I5RCxNQUFNLE9BQU8sZUFBZTs7NEdBQWYsZUFBZTs2R0FBZixlQUFlLDZxQkFSeEIsWUFBWTtRQUNaLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsY0FBYywwb0JBRWQsbUJBQW1COzZHQUdWLGVBQWUsWUFSeEIsWUFBWTtRQUNaLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsY0FBYyxFQUNYLGVBQWUsRUFDbEIsbUJBQW1COzJGQUdWLGVBQWU7a0JBaEIzQixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRTt3QkFDWixHQUFHLHFCQUFxQjtxQkFDekI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLEdBQUcscUJBQXFCO3FCQUN6QjtvQkFDSCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxHQUFHLGVBQWU7d0JBQ2xCLG1CQUFtQjtxQkFDcEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTmdTZWxlY3RNb2R1bGUgfSBmcm9tIFwiQG5nLXNlbGVjdC9uZy1zZWxlY3RcIjtcclxuaW1wb3J0IHsgQ3JvY29IdG1sRGVjbGFyYXRpb25zLCBNYXRlcmlhbE1vZHVsZXMgfSBmcm9tIFwiLlwiO1xyXG5pbXBvcnQgeyBZb3VUdWJlUGxheWVyTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL3lvdXR1YmUtcGxheWVyXCI7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICAgIC4uLkNyb2NvSHRtbERlY2xhcmF0aW9ucyxcclxuICAgIF0sXHJcbiAgICBleHBvcnRzOiBbXHJcbiAgICAgIC4uLkNyb2NvSHRtbERlY2xhcmF0aW9ucyxcclxuICAgIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTmdTZWxlY3RNb2R1bGUsXHJcbiAgICAuLi5NYXRlcmlhbE1vZHVsZXMsXHJcbiAgICBZb3VUdWJlUGxheWVyTW9kdWxlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3JvY29IdG1sTW9kdWxlIHsgfVxyXG4iXX0=
@@ -1,64 +0,0 @@
1
- export class AngularMaterialTableMethods {
2
- static getAngularMaterialTableData(columns, rows) {
3
- let data = [];
4
- for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {
5
- const row = rows[rowIndex];
6
- var elem = {};
7
- for (let columnIndex = 0; columnIndex < columns.length; columnIndex++) {
8
- const column = columns[columnIndex];
9
- elem[column] = row.columns[columnIndex].data.text;
10
- }
11
- data.push(elem);
12
- }
13
- return {
14
- displayedColumns: columns,
15
- data: data,
16
- };
17
- }
18
- static checkHeaders(tableData) {
19
- if (tableData.header === null) {
20
- return {
21
- isSucceeded: false,
22
- message: "Необходимо указать заголовок таблицы"
23
- };
24
- }
25
- let columns = tableData.header.columns;
26
- var uniqueDislayedColumns = columns.filter((v, i, a) => a.indexOf(v) === i);
27
- if (uniqueDislayedColumns.length !== columns.length) {
28
- return {
29
- isSucceeded: false,
30
- message: "Ошибка при обработке разметки таблицы. Обнаружены дубликаты заголовков."
31
- };
32
- }
33
- return {
34
- isSucceeded: true,
35
- message: "Ok"
36
- };
37
- }
38
- static checkAngularMaterialTableData(tableData, checkHeaders = true) {
39
- if (checkHeaders) {
40
- var checkHeadersResult = this.checkHeaders(tableData);
41
- if (!checkHeadersResult.isSucceeded) {
42
- return checkHeadersResult;
43
- }
44
- }
45
- let rows = tableData.rows;
46
- let columns = tableData.header.columns;
47
- for (let i = 0; i < rows.length; i++) {
48
- const row = rows[i];
49
- if (row.columns.length !== columns.length) {
50
- return {
51
- isSucceeded: false,
52
- message: `Ошибка при обработке разметки таблицы. `
53
- + `Количество колонок в каждой строке таблицы должно соотвествовать количеству колонок указанных в заголовке. `
54
- + `В строке таблицы №${i + 1} количество колонок = ${row.columns.length}, а должно быть ${columns.length}.`
55
- };
56
- }
57
- }
58
- return {
59
- isSucceeded: true,
60
- message: "Ok"
61
- };
62
- }
63
- }
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQW5ndWxhck1hdGVyaWFsVGFibGVNZXRob2RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JvY28taHRtbC9zcmMvbGliL2V4dGVuc2lvbnMvQW5ndWxhck1hdGVyaWFsVGFibGVNZXRob2RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sT0FBTywyQkFBMkI7SUFDcEMsTUFBTSxDQUFDLDJCQUEyQixDQUFDLE9BQWlCLEVBQUUsSUFBb0I7UUFFdEUsSUFBSSxJQUFJLEdBQWEsRUFBRSxDQUFDO1FBRXhCLEtBQUssSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQ3ZELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUUzQixJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7WUFFZCxLQUFLLElBQUksV0FBVyxHQUFHLENBQUMsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRTtnQkFDbkUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUVwQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ3JEO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNuQjtRQUVELE9BQU87WUFDSCxnQkFBZ0IsRUFBRSxPQUFPO1lBQ3pCLElBQUksRUFBRSxJQUFJO1NBQ2IsQ0FBQztJQUNOLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQW9CO1FBQ3BDLElBQUcsU0FBUyxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUM7WUFDekIsT0FBTztnQkFDSCxXQUFXLEVBQUUsS0FBSztnQkFDbEIsT0FBTyxFQUFFLHNDQUFzQzthQUNsRCxDQUFDO1NBQ0w7UUFFRCxJQUFJLE9BQU8sR0FBYSxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUVqRCxJQUFJLHFCQUFxQixHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUU1RSxJQUFJLHFCQUFxQixDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2pELE9BQU87Z0JBQ0gsV0FBVyxFQUFFLEtBQUs7Z0JBQ2xCLE9BQU8sRUFBRSx5RUFBeUU7YUFDckYsQ0FBQztTQUNMO1FBRUQsT0FBTztZQUNILFdBQVcsRUFBRSxJQUFJO1lBQ2pCLE9BQU8sRUFBRSxJQUFJO1NBQ2hCLENBQUM7SUFDTixDQUFDO0lBQ0QsTUFBTSxDQUFDLDZCQUE2QixDQUFDLFNBQW9CLEVBQUUsZUFBd0IsSUFBSTtRQUVuRixJQUFHLFlBQVksRUFBQztZQUNaLElBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUV0RCxJQUFHLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFDO2dCQUMvQixPQUFPLGtCQUFrQixDQUFDO2FBQzdCO1NBQ0o7UUFFRCxJQUFJLElBQUksR0FBbUIsU0FBUyxDQUFDLElBQUksQ0FBQztRQUMxQyxJQUFJLE9BQU8sR0FBYSxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUVqRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNsQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFcEIsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUN2QyxPQUFPO29CQUNILFdBQVcsRUFBRSxLQUFLO29CQUNsQixPQUFPLEVBQUUseUNBQXlDOzBCQUM1Qyw2R0FBNkc7MEJBQzdHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLG1CQUFtQixPQUFPLENBQUMsTUFBTSxHQUFHO2lCQUNsSCxDQUFDO2FBQ0w7U0FDSjtRQUVELE9BQU87WUFDSCxXQUFXLEVBQUUsSUFBSTtZQUNqQixPQUFPLEVBQUUsSUFBSTtTQUNoQixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUFwaVJlc3BvbnNlLCBUYWJsZURhdGEsIFRhYmxlUm93RGF0YSB9IGZyb20gJy4vVGFibGVNZXRob2RzJztcclxuZXhwb3J0IGludGVyZmFjZSBBbmd1bGFyTWF0ZXJpYWxUYWJsZURhdGEge1xyXG4gICAgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW107XHJcbiAgICBkYXRhOiBvYmplY3RbXTtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJNYXRlcmlhbFRhYmxlTWV0aG9kcyB7XHJcbiAgICBzdGF0aWMgZ2V0QW5ndWxhck1hdGVyaWFsVGFibGVEYXRhKGNvbHVtbnM6IHN0cmluZ1tdLCByb3dzOiBUYWJsZVJvd0RhdGFbXSk6IEFuZ3VsYXJNYXRlcmlhbFRhYmxlRGF0YSB7XHJcblxyXG4gICAgICAgIGxldCBkYXRhOiBvYmplY3RbXSA9IFtdO1xyXG5cclxuICAgICAgICBmb3IgKGxldCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDwgcm93cy5sZW5ndGg7IHJvd0luZGV4KyspIHtcclxuICAgICAgICAgICAgY29uc3Qgcm93ID0gcm93c1tyb3dJbmRleF07XHJcblxyXG4gICAgICAgICAgICB2YXIgZWxlbSA9IHt9O1xyXG5cclxuICAgICAgICAgICAgZm9yIChsZXQgY29sdW1uSW5kZXggPSAwOyBjb2x1bW5JbmRleCA8IGNvbHVtbnMubGVuZ3RoOyBjb2x1bW5JbmRleCsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zW2NvbHVtbkluZGV4XTtcclxuXHJcbiAgICAgICAgICAgICAgICBlbGVtW2NvbHVtbl0gPSByb3cuY29sdW1uc1tjb2x1bW5JbmRleF0uZGF0YS50ZXh0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBkYXRhLnB1c2goZWxlbSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBkaXNwbGF5ZWRDb2x1bW5zOiBjb2x1bW5zLFxyXG4gICAgICAgICAgICBkYXRhOiBkYXRhLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGNoZWNrSGVhZGVycyh0YWJsZURhdGE6IFRhYmxlRGF0YSk6IEJhc2VBcGlSZXNwb25zZSB7XHJcbiAgICAgICAgaWYodGFibGVEYXRhLmhlYWRlciA9PT0gbnVsbCl7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBpc1N1Y2NlZWRlZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcItCd0LXQvtCx0YXQvtC00LjQvNC+INGD0LrQsNC30LDRgtGMINC30LDQs9C+0LvQvtCy0L7QuiDRgtCw0LHQu9C40YbRi1wiXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgY29sdW1uczogc3RyaW5nW10gPSB0YWJsZURhdGEuaGVhZGVyLmNvbHVtbnM7XHJcblxyXG4gICAgICAgIHZhciB1bmlxdWVEaXNsYXllZENvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcigodiwgaSwgYSkgPT4gYS5pbmRleE9mKHYpID09PSBpKTtcclxuXHJcbiAgICAgICAgaWYgKHVuaXF1ZURpc2xheWVkQ29sdW1ucy5sZW5ndGggIT09IGNvbHVtbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBpc1N1Y2NlZWRlZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcItCe0YjQuNCx0LrQsCDQv9GA0Lgg0L7QsdGA0LDQsdC+0YLQutC1INGA0LDQt9C80LXRgtC60Lgg0YLQsNCx0LvQuNGG0YsuINCe0LHQvdCw0YDRg9C20LXQvdGLINC00YPQsdC70LjQutCw0YLRiyDQt9Cw0LPQvtC70L7QstC60L7Qsi5cIlxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaXNTdWNjZWVkZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiT2tcIlxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICBzdGF0aWMgY2hlY2tBbmd1bGFyTWF0ZXJpYWxUYWJsZURhdGEodGFibGVEYXRhOiBUYWJsZURhdGEsIGNoZWNrSGVhZGVyczogYm9vbGVhbiA9IHRydWUpOiBCYXNlQXBpUmVzcG9uc2Uge1xyXG5cclxuICAgICAgICBpZihjaGVja0hlYWRlcnMpe1xyXG4gICAgICAgICAgICB2YXIgY2hlY2tIZWFkZXJzUmVzdWx0ID0gdGhpcy5jaGVja0hlYWRlcnModGFibGVEYXRhKTtcclxuXHJcbiAgICAgICAgICAgIGlmKCFjaGVja0hlYWRlcnNSZXN1bHQuaXNTdWNjZWVkZWQpe1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrSGVhZGVyc1Jlc3VsdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHJvd3M6IFRhYmxlUm93RGF0YVtdID0gdGFibGVEYXRhLnJvd3M7XHJcbiAgICAgICAgbGV0IGNvbHVtbnM6IHN0cmluZ1tdID0gdGFibGVEYXRhLmhlYWRlci5jb2x1bW5zO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3Qgcm93ID0gcm93c1tpXTtcclxuXHJcbiAgICAgICAgICAgIGlmIChyb3cuY29sdW1ucy5sZW5ndGggIT09IGNvbHVtbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlzU3VjY2VlZGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBg0J7RiNC40LHQutCwINC/0YDQuCDQvtCx0YDQsNCx0L7RgtC60LUg0YDQsNC30LzQtdGC0LrQuCDRgtCw0LHQu9C40YbRiy4gYFxyXG4gICAgICAgICAgICAgICAgICAgICAgICArIGDQmtC+0LvQuNGH0LXRgdGC0LLQviDQutC+0LvQvtC90L7QuiDQsiDQutCw0LbQtNC+0Lkg0YHRgtGA0L7QutC1INGC0LDQsdC70LjRhtGLINC00L7Qu9C20L3QviDRgdC+0L7RgtCy0LXRgdGC0LLQvtCy0LDRgtGMINC60L7Qu9C40YfQtdGB0YLQstGDINC60L7Qu9C+0L3QvtC6INGD0LrQsNC30LDQvdC90YvRhSDQsiDQt9Cw0LPQvtC70L7QstC60LUuIGBcclxuICAgICAgICAgICAgICAgICAgICAgICAgKyBg0JIg0YHRgtGA0L7QutC1INGC0LDQsdC70LjRhtGLIOKEliR7aSArIDF9INC60L7Qu9C40YfQtdGB0YLQstC+INC60L7Qu9C+0L3QvtC6ID0gJHtyb3cuY29sdW1ucy5sZW5ndGh9LCDQsCDQtNC+0LvQttC90L4g0LHRi9GC0YwgJHtjb2x1bW5zLmxlbmd0aH0uYFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaXNTdWNjZWVkZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiT2tcIlxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuIl19