croco-html 4.2.1 → 4.2.4
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.
- package/fesm2022/croco-html.mjs +165 -139
- package/fesm2022/croco-html.mjs.map +1 -1
- package/lib/components/editor/main-editor-block/main-editor-block.component.d.ts +5 -1
- package/lib/components/editor/visual-editor/visual-editor.component.d.ts +1 -2
- package/lib/extensions/AngularMaterialTableMethods.d.ts +3 -3
- package/lib/extensions/BootstrapTableMethods.d.ts +2 -2
- package/lib/extensions/HtmlExtractionMethods.d.ts +0 -22
- package/lib/extensions/InterfaceBlock.d.ts +0 -1
- package/lib/extensions/TableMethods.d.ts +4 -20
- package/lib/tag-services/HtmlRawTagService.d.ts +10 -0
- package/lib/tag-services/TableTagService.d.ts +12 -0
- package/package.json +1 -1
- package/lib/extensions/HtmlRawTagDataConsts.d.ts +0 -10
package/fesm2022/croco-html.mjs
CHANGED
|
@@ -87,14 +87,14 @@ class AngularMaterialTableMethods {
|
|
|
87
87
|
data: data,
|
|
88
88
|
};
|
|
89
89
|
}
|
|
90
|
-
static checkHeaders(
|
|
91
|
-
if (
|
|
90
|
+
static checkHeaders(header) {
|
|
91
|
+
if (header === null) {
|
|
92
92
|
return {
|
|
93
93
|
isSucceeded: false,
|
|
94
94
|
message: "Необходимо указать заголовок таблицы"
|
|
95
95
|
};
|
|
96
96
|
}
|
|
97
|
-
let columns =
|
|
97
|
+
let columns = header.columns;
|
|
98
98
|
var uniqueDislayedColumns = columns.filter((v, i, a) => a.indexOf(v) === i);
|
|
99
99
|
if (uniqueDislayedColumns.length !== columns.length) {
|
|
100
100
|
return {
|
|
@@ -107,15 +107,14 @@ class AngularMaterialTableMethods {
|
|
|
107
107
|
message: "Ok"
|
|
108
108
|
};
|
|
109
109
|
}
|
|
110
|
-
static checkAngularMaterialTableData(
|
|
110
|
+
static checkAngularMaterialTableData(header, rows, checkHeaders = true) {
|
|
111
111
|
if (checkHeaders) {
|
|
112
|
-
var checkHeadersResult = this.checkHeaders(
|
|
112
|
+
var checkHeadersResult = this.checkHeaders(header);
|
|
113
113
|
if (!checkHeadersResult.isSucceeded) {
|
|
114
114
|
return checkHeadersResult;
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
|
-
let
|
|
118
|
-
let columns = tableData.header.columns;
|
|
117
|
+
let columns = header.columns;
|
|
119
118
|
for (let i = 0; i < rows.length; i++) {
|
|
120
119
|
const row = rows[i];
|
|
121
120
|
if (row.columns.length !== columns.length) {
|
|
@@ -134,6 +133,42 @@ class AngularMaterialTableMethods {
|
|
|
134
133
|
}
|
|
135
134
|
}
|
|
136
135
|
|
|
136
|
+
class HtmlExtractionMethods {
|
|
137
|
+
static transformHtmlElementToBlocks(element, options) {
|
|
138
|
+
const data = [];
|
|
139
|
+
for (let i = 0; i < element.children.length; i++) {
|
|
140
|
+
const elem = element.children.item(i);
|
|
141
|
+
const loweredTagName = elem.tagName.toLowerCase();
|
|
142
|
+
if (BodyTagsExtensions.tagServices.hasOwnProperty(loweredTagName)) {
|
|
143
|
+
const tagService = BodyTagsExtensions.tagServices[loweredTagName];
|
|
144
|
+
const resultBlock = tagService.extractBlockFromHtmlElement(elem, options);
|
|
145
|
+
data.push(resultBlock);
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
data.push({
|
|
150
|
+
tagName: "unsupported-tag",
|
|
151
|
+
data: {
|
|
152
|
+
tagString: elem.outerHTML
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return data;
|
|
158
|
+
}
|
|
159
|
+
static transformHtmlStringToBlocks(value, options) {
|
|
160
|
+
if (value === undefined || value === null) {
|
|
161
|
+
return [];
|
|
162
|
+
}
|
|
163
|
+
value = value
|
|
164
|
+
.replace('\n', '')
|
|
165
|
+
.replace('\t', '');
|
|
166
|
+
var div = document.createElement("div");
|
|
167
|
+
div.innerHTML = value;
|
|
168
|
+
return this.transformHtmlElementToBlocks(div, options);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
137
172
|
class FileImageTagDataConsts {
|
|
138
173
|
static { this.TagName = "file-image"; }
|
|
139
174
|
static { this.FileIdAttrName = "file-id"; }
|
|
@@ -405,7 +440,6 @@ class ExternalVideoTagService {
|
|
|
405
440
|
class HtmlRawTagDataConsts {
|
|
406
441
|
static { this.TagName = "html-raw"; }
|
|
407
442
|
}
|
|
408
|
-
|
|
409
443
|
class HtmlRawTagService {
|
|
410
444
|
constructor() {
|
|
411
445
|
this.tagName = HtmlRawTagDataConsts.TagName;
|
|
@@ -627,6 +661,62 @@ class CustomWidgetTagService {
|
|
|
627
661
|
}
|
|
628
662
|
}
|
|
629
663
|
|
|
664
|
+
class TextTags {
|
|
665
|
+
static { this.text = "text"; }
|
|
666
|
+
static { this.h1 = "h1"; }
|
|
667
|
+
static { this.h2 = "h2"; }
|
|
668
|
+
static { this.h3 = "h3"; }
|
|
669
|
+
static { this.h4 = "h4"; }
|
|
670
|
+
static { this.h5 = "h5"; }
|
|
671
|
+
static { this.h6 = "h6"; }
|
|
672
|
+
static { this.headerTextTags = [TextTags.h1, TextTags.h2, TextTags.h3, TextTags.h4, TextTags.h5, TextTags.h6]; }
|
|
673
|
+
static { this.allTextTags = [TextTags.text, ...TextTags.headerTextTags]; }
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
class ExternalVideoTagDataConsts {
|
|
677
|
+
static { this.TagName = "external-video"; }
|
|
678
|
+
static { this.VideoTypeAttrName = "type"; }
|
|
679
|
+
static { this.LinkAttrName = "link"; }
|
|
680
|
+
static { this.UseResponsiveWrapperAttrName = "use-responsive-wrapper"; }
|
|
681
|
+
static { this.IframeAttrName = "iframe"; }
|
|
682
|
+
}
|
|
683
|
+
class ExternalVideoSupportedTypes {
|
|
684
|
+
static { this.Youtube = "youtube"; }
|
|
685
|
+
static { this.VkVideo = "vk-video"; }
|
|
686
|
+
static { this.Code = "code"; }
|
|
687
|
+
}
|
|
688
|
+
const ExternalVideoPlayers = [
|
|
689
|
+
{
|
|
690
|
+
type: ExternalVideoSupportedTypes.Code,
|
|
691
|
+
displayValue: 'Встраиваемое Видео',
|
|
692
|
+
},
|
|
693
|
+
{
|
|
694
|
+
type: ExternalVideoSupportedTypes.Youtube,
|
|
695
|
+
displayValue: 'Youtube',
|
|
696
|
+
},
|
|
697
|
+
{
|
|
698
|
+
type: ExternalVideoSupportedTypes.VkVideo,
|
|
699
|
+
displayValue: 'Vk Video',
|
|
700
|
+
}
|
|
701
|
+
];
|
|
702
|
+
|
|
703
|
+
class Tags {
|
|
704
|
+
static { this.Text = TextTags.text; }
|
|
705
|
+
static { this.H1 = TextTags.h1; }
|
|
706
|
+
static { this.H2 = TextTags.h2; }
|
|
707
|
+
static { this.H3 = TextTags.h3; }
|
|
708
|
+
static { this.H4 = TextTags.h4; }
|
|
709
|
+
static { this.H5 = TextTags.h5; }
|
|
710
|
+
static { this.H6 = TextTags.h6; }
|
|
711
|
+
static { this.HtmlRaw = HtmlRawTagDataConsts.TagName; }
|
|
712
|
+
static { this.FileImage = FileImageTagDataConsts.TagName; }
|
|
713
|
+
static { this.Table = 'table'; }
|
|
714
|
+
static { this.RichText = 'rich-text'; }
|
|
715
|
+
static { this.ExternalVideo = ExternalVideoTagDataConsts.TagName; }
|
|
716
|
+
static { this.UnsupportedTag = 'unsupported-tag'; }
|
|
717
|
+
static { this.CustomWidget = CustomWidgetTagDataConsts.TagName; }
|
|
718
|
+
}
|
|
719
|
+
|
|
630
720
|
const TextTag = "text";
|
|
631
721
|
class TextSimpleMethods {
|
|
632
722
|
static { this.supportedTags = ["sup", "sub", "strong", "b", "i", "u"]; }
|
|
@@ -705,10 +795,10 @@ class TextSimpleMethods {
|
|
|
705
795
|
}
|
|
706
796
|
|
|
707
797
|
class BootstrapTableMethods {
|
|
708
|
-
static BuildTable(
|
|
798
|
+
static BuildTable(header, rows) {
|
|
709
799
|
let result = `<table class="table table-bordered">`;
|
|
710
|
-
result += this.BuildHeader(
|
|
711
|
-
result += this.BuildBody(
|
|
800
|
+
result += this.BuildHeader(header);
|
|
801
|
+
result += this.BuildBody(rows);
|
|
712
802
|
result += "</table>";
|
|
713
803
|
return result;
|
|
714
804
|
}
|
|
@@ -776,32 +866,19 @@ class TableTypes {
|
|
|
776
866
|
}
|
|
777
867
|
class TableMethods {
|
|
778
868
|
static getTableFromHtmlTag(tableTag, options) {
|
|
869
|
+
const tableHeader = TableMethods.getHeader(tableTag);
|
|
870
|
+
const tableRows = TableMethods.getTableRows(tableTag, options);
|
|
779
871
|
let tableData = {
|
|
780
|
-
header:
|
|
781
|
-
rows:
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
data: tableData,
|
|
786
|
-
validationResult: this.checkTable(tableData),
|
|
787
|
-
bootstrapHtml: ""
|
|
872
|
+
header: tableHeader,
|
|
873
|
+
rows: tableRows,
|
|
874
|
+
bootstrapHtml: BootstrapTableMethods.BuildTable(tableHeader, tableRows),
|
|
875
|
+
html: tableTag.outerHTML,
|
|
876
|
+
angularMaterialTableDataCheck: AngularMaterialTableMethods.checkAngularMaterialTableData(tableHeader, tableRows)
|
|
788
877
|
};
|
|
789
|
-
if (!result.validationResult) {
|
|
790
|
-
return result;
|
|
791
|
-
}
|
|
792
|
-
result.bootstrapHtml = BootstrapTableMethods.BuildTable(result.data);
|
|
793
|
-
var angularMaterialTableDataCheck = AngularMaterialTableMethods.checkAngularMaterialTableData(tableData);
|
|
794
|
-
if (!angularMaterialTableDataCheck.isSucceeded) {
|
|
795
|
-
return {
|
|
796
|
-
...result,
|
|
797
|
-
angularMaterialTableDataCheck
|
|
798
|
-
};
|
|
799
|
-
}
|
|
800
878
|
return {
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
angularMaterialTableData: AngularMaterialTableMethods.getAngularMaterialTableData(tableData.header.columns, tableData.rows),
|
|
879
|
+
tagName: TableTypes.Table,
|
|
880
|
+
data: tableData,
|
|
881
|
+
validationResult: this.checkTable(tableData)
|
|
805
882
|
};
|
|
806
883
|
}
|
|
807
884
|
static checkTable(tableData) {
|
|
@@ -873,105 +950,42 @@ class TableMethods {
|
|
|
873
950
|
}
|
|
874
951
|
}
|
|
875
952
|
|
|
876
|
-
class
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
}; }
|
|
881
|
-
static transformHtmlElementToBlocks(element, options) {
|
|
882
|
-
var data = [];
|
|
883
|
-
for (let i = 0; i < element.children.length; i++) {
|
|
884
|
-
var elem = element.children.item(i);
|
|
885
|
-
var loweredTagName = elem.tagName.toLowerCase();
|
|
886
|
-
if (BodyTagsExtensions.tagServices.hasOwnProperty(loweredTagName)) {
|
|
887
|
-
var tagService = BodyTagsExtensions.tagServices[loweredTagName];
|
|
888
|
-
var resultBlock = tagService.extractBlockFromHtmlElement(elem, options);
|
|
889
|
-
data.push(resultBlock);
|
|
890
|
-
continue;
|
|
891
|
-
}
|
|
892
|
-
if (!HtmlExtractionMethods.Extractors.hasOwnProperty(loweredTagName)) {
|
|
893
|
-
data.push({
|
|
894
|
-
tagName: "unsupported-tag",
|
|
895
|
-
data: {
|
|
896
|
-
tagString: elem.outerHTML
|
|
897
|
-
}
|
|
898
|
-
});
|
|
899
|
-
}
|
|
900
|
-
else {
|
|
901
|
-
var extractor = HtmlExtractionMethods.Extractors[loweredTagName];
|
|
902
|
-
var result = extractor(elem, options);
|
|
903
|
-
data.push(result);
|
|
904
|
-
}
|
|
905
|
-
}
|
|
906
|
-
return data;
|
|
953
|
+
class TableTagService {
|
|
954
|
+
constructor() {
|
|
955
|
+
this.tagName = TableTypes.Table;
|
|
956
|
+
this.shortDescription = "Таблица";
|
|
907
957
|
}
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
return [];
|
|
911
|
-
}
|
|
912
|
-
value = value
|
|
913
|
-
.replace('\n', '')
|
|
914
|
-
.replace('\t', '');
|
|
915
|
-
var div = document.createElement("div");
|
|
916
|
-
div.innerHTML = value;
|
|
917
|
-
return this.transformHtmlElementToBlocks(div, options);
|
|
958
|
+
bodyTagToHtmlStringConverter(bodyTag) {
|
|
959
|
+
return `<${this.tagName}>${bodyTag.innerHtml}</${this.tagName}>`;
|
|
918
960
|
}
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
{
|
|
947
|
-
type: ExternalVideoSupportedTypes.Code,
|
|
948
|
-
displayValue: 'Встраиваемое Видео',
|
|
949
|
-
},
|
|
950
|
-
{
|
|
951
|
-
type: ExternalVideoSupportedTypes.Youtube,
|
|
952
|
-
displayValue: 'Youtube',
|
|
953
|
-
},
|
|
954
|
-
{
|
|
955
|
-
type: ExternalVideoSupportedTypes.VkVideo,
|
|
956
|
-
displayValue: 'Vk Video',
|
|
961
|
+
extractBlockFromHtmlElement(elem, options) {
|
|
962
|
+
return TableMethods.getTableFromHtmlTag(elem, options);
|
|
963
|
+
}
|
|
964
|
+
toBodyTag(data) {
|
|
965
|
+
let tableData = data.data;
|
|
966
|
+
return {
|
|
967
|
+
presentOrEdit: true,
|
|
968
|
+
tagDescription: {
|
|
969
|
+
tag: data.tagName,
|
|
970
|
+
displayValue: this.shortDescription,
|
|
971
|
+
isCustom: false
|
|
972
|
+
},
|
|
973
|
+
attributes: tableData,
|
|
974
|
+
innerHtml: null
|
|
975
|
+
};
|
|
976
|
+
}
|
|
977
|
+
getDefaultValue(props) {
|
|
978
|
+
return {
|
|
979
|
+
tagDescription: {
|
|
980
|
+
tag: this.tagName,
|
|
981
|
+
displayValue: this.shortDescription,
|
|
982
|
+
isCustom: false
|
|
983
|
+
},
|
|
984
|
+
attributes: {},
|
|
985
|
+
presentOrEdit: false,
|
|
986
|
+
innerHtml: props.htmlRaw,
|
|
987
|
+
};
|
|
957
988
|
}
|
|
958
|
-
];
|
|
959
|
-
|
|
960
|
-
class Tags {
|
|
961
|
-
static { this.Text = TextTags.text; }
|
|
962
|
-
static { this.H1 = TextTags.h1; }
|
|
963
|
-
static { this.H2 = TextTags.h2; }
|
|
964
|
-
static { this.H3 = TextTags.h3; }
|
|
965
|
-
static { this.H4 = TextTags.h4; }
|
|
966
|
-
static { this.H5 = TextTags.h5; }
|
|
967
|
-
static { this.H6 = TextTags.h6; }
|
|
968
|
-
static { this.HtmlRaw = HtmlRawTagDataConsts.TagName; }
|
|
969
|
-
static { this.FileImage = FileImageTagDataConsts.TagName; }
|
|
970
|
-
static { this.Table = 'table'; }
|
|
971
|
-
static { this.RichText = 'rich-text'; }
|
|
972
|
-
static { this.ExternalVideo = ExternalVideoTagDataConsts.TagName; }
|
|
973
|
-
static { this.UnsupportedTag = 'unsupported-tag'; }
|
|
974
|
-
static { this.CustomWidget = CustomWidgetTagDataConsts.TagName; }
|
|
975
989
|
}
|
|
976
990
|
|
|
977
991
|
class BodyTagsExtensions {
|
|
@@ -987,7 +1001,8 @@ class BodyTagsExtensions {
|
|
|
987
1001
|
[ExternalVideoTagDataConsts.TagName]: new ExternalVideoTagService(),
|
|
988
1002
|
[HtmlRawTagDataConsts.TagName]: new HtmlRawTagService(),
|
|
989
1003
|
[DownloadButtonTagDataConsts.TagName]: new DownloadButtonTagService(),
|
|
990
|
-
[ButtonTagDataConsts.TagName]: new ButtonTagService()
|
|
1004
|
+
[ButtonTagDataConsts.TagName]: new ButtonTagService(),
|
|
1005
|
+
[TableTypes.Table]: new TableTagService()
|
|
991
1006
|
}; }
|
|
992
1007
|
static convertToHtmlString(bodyTag) {
|
|
993
1008
|
const tagName = bodyTag.tagDescription.tag;
|
|
@@ -1745,7 +1760,7 @@ class XmlTagViewComponent {
|
|
|
1745
1760
|
return this._options.definedCustomTags.includes(item.tagName);
|
|
1746
1761
|
}
|
|
1747
1762
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: XmlTagViewComponent, deps: [{ token: CrocoHtmlOptionsToken }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1748
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: XmlTagViewComponent, isStandalone: true, selector: "croco-html-xml-tag-view", inputs: { data: "data" }, ngImport: i0, template: "<div>\n @for (item of data; track $index) {\n <div class=\"row\">\n\n @if (item.tagName === 'text') {\n <div>\n <croco-html-xml-tag-text-view [item]=\"item\"></croco-html-xml-tag-text-view>\n </div>\n }\n\n @if (item.tagName === 'html-raw') {\n <div>\n <croco-html-raw-view [rawHtml]=\"item.data.innerHTML\"></croco-html-raw-view>\n </div>\n }\n\n @if (isHeaderTextTag(item)) {\n <div>\n <croco-html-xml-tag-header-text-view [item]=\"item\"></croco-html-xml-tag-header-text-view>\n </div>\n }\n\n @if (item.tagName === 'file-image') {\n <div>\n <croco-html-file-image-tag-view [item]=\"item\"></croco-html-file-image-tag-view>\n </div>\n }\n\n @if (item.tagName === 'custom-widget') {\n <div>\n <croco-html-xml-tag-custom-widget [tagData]=\"item.data\"></croco-html-xml-tag-custom-widget>\n </div>\n }\n\n @if (item.tagName === 'table' && item.validationResult) {\n\n @if (item.validationResult.isSucceeded){\n <croco-html-xml-tag-html-view [html]=\"item.bootstrapHtml\">\n </croco-html-xml-tag-html-view>\n }\n @else {\n <croco-html-error-banner [message]=\"item.validationResult.message\">\n </croco-html-error-banner>\n }\n }\n\n @if (item.tagName === 'external-video') {\n <div>\n <croco-html-xml-tag-external-video [data]=\"item\"></croco-html-xml-tag-external-video>\n </div>\n }\n\n @if (item.tagName === 'download-file-button') {\n <div>\n <croco-html-xml-tag-download-file-button [data]=\"item\"></croco-html-xml-tag-download-file-button>\n </div>\n }\n\n @if (item.tagName === 'button') {\n <div>\n <croco-html-xml-tag-button [data]=\"item\"></croco-html-xml-tag-button>\n </div>\n }\n\n @if (item.tagName === 'unsupported-tag') {\n <div class=\"red\" style=\"margin-top: 10px;\">\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>\n <span>\n {{item.data.tagString}}\n </span>\n </div>\n }\n\n @if (isDefinedCustomTag(item)) {\n
|
|
1763
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: XmlTagViewComponent, isStandalone: true, selector: "croco-html-xml-tag-view", inputs: { data: "data" }, ngImport: i0, template: "<div>\n @for (item of data; track $index) {\n <div class=\"row\">\n\n @if (item.tagName === 'text') {\n <div>\n <croco-html-xml-tag-text-view [item]=\"item\"></croco-html-xml-tag-text-view>\n </div>\n }\n\n @if (item.tagName === 'html-raw') {\n <div>\n <croco-html-raw-view [rawHtml]=\"item.data.innerHTML\"></croco-html-raw-view>\n </div>\n }\n\n @if (isHeaderTextTag(item)) {\n <div>\n <croco-html-xml-tag-header-text-view [item]=\"item\"></croco-html-xml-tag-header-text-view>\n </div>\n }\n\n @if (item.tagName === 'file-image') {\n <div>\n <croco-html-file-image-tag-view [item]=\"item\"></croco-html-file-image-tag-view>\n </div>\n }\n\n @if (item.tagName === 'custom-widget') {\n <div>\n <croco-html-xml-tag-custom-widget [tagData]=\"item.data\"></croco-html-xml-tag-custom-widget>\n </div>\n }\n\n @if (item.tagName === 'table' && item.validationResult) {\n\n @if (item.validationResult.isSucceeded){\n <croco-html-xml-tag-html-view [html]=\"item.data.bootstrapHtml\">\n </croco-html-xml-tag-html-view>\n }\n @else {\n <croco-html-error-banner [message]=\"item.validationResult.message\">\n </croco-html-error-banner>\n }\n }\n\n @if (item.tagName === 'external-video') {\n <div>\n <croco-html-xml-tag-external-video [data]=\"item\"></croco-html-xml-tag-external-video>\n </div>\n }\n\n @if (item.tagName === 'download-file-button') {\n <div>\n <croco-html-xml-tag-download-file-button [data]=\"item\"></croco-html-xml-tag-download-file-button>\n </div>\n }\n\n @if (item.tagName === 'button') {\n <div>\n <croco-html-xml-tag-button [data]=\"item\"></croco-html-xml-tag-button>\n </div>\n }\n\n @if (item.tagName === 'unsupported-tag') {\n <div class=\"red\" style=\"margin-top: 10px;\">\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>\n <span>\n {{item.data.tagString}}\n </span>\n </div>\n }\n\n @if (isDefinedCustomTag(item)) {\n <div>\n <croco-html-defined-custom-tag-view [data]=\"item\"></croco-html-defined-custom-tag-view>\n </div>\n }\n\n </div>\n }\n</div>", styles: [".red{background-color:#c94444;color:#fff}\n"], dependencies: [{ kind: "component", type: XmlTagTextViewComponent, selector: "croco-html-xml-tag-text-view", inputs: ["item"] }, { kind: "component", type: HtmlRawViewComponent, selector: "croco-html-raw-view", inputs: ["rawHtml"] }, { kind: "component", type: XmlTagHeaderTextViewComponent, selector: "croco-html-xml-tag-header-text-view", inputs: ["item"] }, { kind: "component", type: FileImageTagViewComponent, selector: "croco-html-file-image-tag-view", inputs: ["item"] }, { kind: "component", type: XmlTagHtmlViewComponent, selector: "croco-html-xml-tag-html-view", inputs: ["html"] }, { kind: "component", type: ErrorBannerComponent, selector: "croco-html-error-banner", inputs: ["message"] }, { kind: "component", type: XmlTagExternalVideoComponent, selector: "croco-html-xml-tag-external-video", inputs: ["data", "tagData"] }, { kind: "component", type: XmlTagDownloadFileButtonComponent, selector: "croco-html-xml-tag-download-file-button", inputs: ["data", "tagData"] }, { kind: "component", type: XmlTagButtonComponent, selector: "croco-html-xml-tag-button", inputs: ["data", "tagData"] }, { kind: "component", type: XmlTagCustomWidgetComponent, selector: "croco-html-xml-tag-custom-widget", inputs: ["tagData"] }, { kind: "component", type: DefinedCustomTagViewComponent, selector: "croco-html-defined-custom-tag-view", inputs: ["data"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1749
1764
|
}
|
|
1750
1765
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: XmlTagViewComponent, decorators: [{
|
|
1751
1766
|
type: Component,
|
|
@@ -1761,7 +1776,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
1761
1776
|
XmlTagButtonComponent,
|
|
1762
1777
|
XmlTagCustomWidgetComponent,
|
|
1763
1778
|
DefinedCustomTagViewComponent
|
|
1764
|
-
], template: "<div>\n @for (item of data; track $index) {\n <div class=\"row\">\n\n @if (item.tagName === 'text') {\n <div>\n <croco-html-xml-tag-text-view [item]=\"item\"></croco-html-xml-tag-text-view>\n </div>\n }\n\n @if (item.tagName === 'html-raw') {\n <div>\n <croco-html-raw-view [rawHtml]=\"item.data.innerHTML\"></croco-html-raw-view>\n </div>\n }\n\n @if (isHeaderTextTag(item)) {\n <div>\n <croco-html-xml-tag-header-text-view [item]=\"item\"></croco-html-xml-tag-header-text-view>\n </div>\n }\n\n @if (item.tagName === 'file-image') {\n <div>\n <croco-html-file-image-tag-view [item]=\"item\"></croco-html-file-image-tag-view>\n </div>\n }\n\n @if (item.tagName === 'custom-widget') {\n <div>\n <croco-html-xml-tag-custom-widget [tagData]=\"item.data\"></croco-html-xml-tag-custom-widget>\n </div>\n }\n\n @if (item.tagName === 'table' && item.validationResult) {\n\n @if (item.validationResult.isSucceeded){\n <croco-html-xml-tag-html-view [html]=\"item.bootstrapHtml\">\n </croco-html-xml-tag-html-view>\n }\n @else {\n <croco-html-error-banner [message]=\"item.validationResult.message\">\n </croco-html-error-banner>\n }\n }\n\n @if (item.tagName === 'external-video') {\n <div>\n <croco-html-xml-tag-external-video [data]=\"item\"></croco-html-xml-tag-external-video>\n </div>\n }\n\n @if (item.tagName === 'download-file-button') {\n <div>\n <croco-html-xml-tag-download-file-button [data]=\"item\"></croco-html-xml-tag-download-file-button>\n </div>\n }\n\n @if (item.tagName === 'button') {\n <div>\n <croco-html-xml-tag-button [data]=\"item\"></croco-html-xml-tag-button>\n </div>\n }\n\n @if (item.tagName === 'unsupported-tag') {\n <div class=\"red\" style=\"margin-top: 10px;\">\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>\n <span>\n {{item.data.tagString}}\n </span>\n </div>\n }\n\n @if (isDefinedCustomTag(item)) {\n
|
|
1779
|
+
], template: "<div>\n @for (item of data; track $index) {\n <div class=\"row\">\n\n @if (item.tagName === 'text') {\n <div>\n <croco-html-xml-tag-text-view [item]=\"item\"></croco-html-xml-tag-text-view>\n </div>\n }\n\n @if (item.tagName === 'html-raw') {\n <div>\n <croco-html-raw-view [rawHtml]=\"item.data.innerHTML\"></croco-html-raw-view>\n </div>\n }\n\n @if (isHeaderTextTag(item)) {\n <div>\n <croco-html-xml-tag-header-text-view [item]=\"item\"></croco-html-xml-tag-header-text-view>\n </div>\n }\n\n @if (item.tagName === 'file-image') {\n <div>\n <croco-html-file-image-tag-view [item]=\"item\"></croco-html-file-image-tag-view>\n </div>\n }\n\n @if (item.tagName === 'custom-widget') {\n <div>\n <croco-html-xml-tag-custom-widget [tagData]=\"item.data\"></croco-html-xml-tag-custom-widget>\n </div>\n }\n\n @if (item.tagName === 'table' && item.validationResult) {\n\n @if (item.validationResult.isSucceeded){\n <croco-html-xml-tag-html-view [html]=\"item.data.bootstrapHtml\">\n </croco-html-xml-tag-html-view>\n }\n @else {\n <croco-html-error-banner [message]=\"item.validationResult.message\">\n </croco-html-error-banner>\n }\n }\n\n @if (item.tagName === 'external-video') {\n <div>\n <croco-html-xml-tag-external-video [data]=\"item\"></croco-html-xml-tag-external-video>\n </div>\n }\n\n @if (item.tagName === 'download-file-button') {\n <div>\n <croco-html-xml-tag-download-file-button [data]=\"item\"></croco-html-xml-tag-download-file-button>\n </div>\n }\n\n @if (item.tagName === 'button') {\n <div>\n <croco-html-xml-tag-button [data]=\"item\"></croco-html-xml-tag-button>\n </div>\n }\n\n @if (item.tagName === 'unsupported-tag') {\n <div class=\"red\" style=\"margin-top: 10px;\">\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>\n <span>\n {{item.data.tagString}}\n </span>\n </div>\n }\n\n @if (isDefinedCustomTag(item)) {\n <div>\n <croco-html-defined-custom-tag-view [data]=\"item\"></croco-html-defined-custom-tag-view>\n </div>\n }\n\n </div>\n }\n</div>", styles: [".red{background-color:#c94444;color:#fff}\n"] }]
|
|
1765
1780
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
1766
1781
|
type: Inject,
|
|
1767
1782
|
args: [CrocoHtmlOptionsToken]
|
|
@@ -2239,7 +2254,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
2239
2254
|
}] } });
|
|
2240
2255
|
|
|
2241
2256
|
class MainEditorBlockComponent {
|
|
2242
|
-
constructor() {
|
|
2257
|
+
constructor(_options) {
|
|
2258
|
+
this._options = _options;
|
|
2243
2259
|
this.textTags = TextTags.allTextTags;
|
|
2244
2260
|
this.onTagSaved = new EventEmitter();
|
|
2245
2261
|
this.onTagRemoved = new EventEmitter();
|
|
@@ -2250,11 +2266,17 @@ class MainEditorBlockComponent {
|
|
|
2250
2266
|
this.tag.presentOrEdit = true;
|
|
2251
2267
|
this.onTagSaved.emit(this.tag);
|
|
2252
2268
|
}
|
|
2269
|
+
isDefinedCustomTag() {
|
|
2270
|
+
if (this._options.definedCustomTags.includes(this.tag.tagDescription.tag)) {
|
|
2271
|
+
return true;
|
|
2272
|
+
}
|
|
2273
|
+
return false;
|
|
2274
|
+
}
|
|
2253
2275
|
deleteItem() {
|
|
2254
2276
|
this.onTagRemoved.emit(this.tag);
|
|
2255
2277
|
}
|
|
2256
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MainEditorBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2257
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", 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 @
|
|
2278
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MainEditorBlockComponent, deps: [{ token: CrocoHtmlOptionsToken }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2279
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", 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 @else if (isDefinedCustomTag()) {\n <div>\n <croco-html-defined-custom-editor-block [tag]=\"tag\" (onTagUpdated)=\"tagUpdatedHandler($event)\"></croco-html-defined-custom-editor-block>\n </div>\n }\n @else {\n <div>\n {{tag.tagDescription.tag}} \u043D\u0435 \u043F\u043E\u043A\u0430\u0437\u0430\u043D\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 @else {\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"] }] }); }
|
|
2258
2280
|
}
|
|
2259
2281
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MainEditorBlockComponent, decorators: [{
|
|
2260
2282
|
type: Component,
|
|
@@ -2267,9 +2289,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
2267
2289
|
ExternalVideoEditorComponent,
|
|
2268
2290
|
ButtonEditorComponent,
|
|
2269
2291
|
CustomWidgetEditorComponent
|
|
2270
|
-
], 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 @
|
|
2271
|
-
}],
|
|
2272
|
-
|
|
2292
|
+
], 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 @else if (isDefinedCustomTag()) {\n <div>\n <croco-html-defined-custom-editor-block [tag]=\"tag\" (onTagUpdated)=\"tagUpdatedHandler($event)\"></croco-html-defined-custom-editor-block>\n </div>\n }\n @else {\n <div>\n {{tag.tagDescription.tag}} \u043D\u0435 \u043F\u043E\u043A\u0430\u0437\u0430\u043D\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 @else {\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"] }]
|
|
2293
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
2294
|
+
type: Inject,
|
|
2295
|
+
args: [CrocoHtmlOptionsToken]
|
|
2296
|
+
}] }], propDecorators: { tag: [{
|
|
2297
|
+
type: Input,
|
|
2298
|
+
args: [{ required: true }]
|
|
2273
2299
|
}], onTagSaved: [{
|
|
2274
2300
|
type: Output
|
|
2275
2301
|
}], onTagRemoved: [{
|