croco-html 4.0.2 → 4.1.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.
- package/fesm2022/croco-html.mjs +738 -701
- package/fesm2022/croco-html.mjs.map +1 -1
- package/index.d.ts +3 -954
- package/lib/components/add-files-btn/add-files-btn.component.d.ts +20 -0
- package/lib/components/editor/button-editor/button-editor.component.d.ts +13 -0
- package/lib/components/editor/custom-widget-editor/custom-widget-editor.component.d.ts +13 -0
- package/lib/components/editor/download-file-button-editor/download-file-button-editor.component.d.ts +13 -0
- package/lib/components/editor/external-video-editor/embedded-video/code-video.component.d.ts +14 -0
- package/lib/components/editor/external-video-editor/external-video-editor.component.d.ts +17 -0
- package/lib/components/editor/external-video-editor/vk-video-player/vk-video-player.component.d.ts +10 -0
- package/lib/components/editor/external-video-editor/youtube-video-player/youtube-video-player.component.d.ts +10 -0
- package/lib/components/editor/html-editor-settings-modal/html-editor-settings-modal.component.d.ts +17 -0
- package/lib/components/editor/html-raw-editor/html-raw-editor.component.d.ts +15 -0
- package/lib/components/editor/image-editor/image-editor.component.d.ts +34 -0
- package/lib/components/editor/index.d.ts +8 -0
- package/lib/components/editor/main-editor/main-editor.component.d.ts +34 -0
- package/lib/components/editor/main-editor-block/main-editor-block.component.d.ts +14 -0
- package/lib/components/editor/text-editor/text-editor.component.d.ts +10 -0
- package/lib/components/editor/visual-editor/DefaultAligments.d.ts +5 -0
- package/lib/components/editor/visual-editor/DefaultTags.d.ts +6 -0
- package/lib/components/editor/visual-editor/visual-editor.component.d.ts +69 -0
- package/lib/components/error-banner/error-banner.component.d.ts +6 -0
- package/lib/components/file-id-select/file-id-select.component.d.ts +38 -0
- package/lib/components/html-view/html-view.component.d.ts +6 -0
- package/lib/components/index.d.ts +6 -0
- package/lib/components/upload-files-btn/upload-files-btn.component.d.ts +26 -0
- package/lib/components/xml-tags/file-image-tag-view/file-image-tag-view.component.d.ts +22 -0
- package/lib/components/xml-tags/html-raw-view/html-raw-view.component.d.ts +12 -0
- package/lib/components/xml-tags/index.d.ts +10 -0
- package/lib/components/xml-tags/xml-tag-custom-button/xml-tag-button.component.d.ts +14 -0
- package/lib/components/xml-tags/xml-tag-custom-widget/xml-tag-custom-widget.component.d.ts +19 -0
- package/lib/components/xml-tags/xml-tag-download-file-button/xml-tag-download-file-button.component.d.ts +14 -0
- package/lib/components/xml-tags/xml-tag-external-video/xml-tag-external-video.component.d.ts +11 -0
- package/lib/components/xml-tags/xml-tag-header-inner-text-view/xml-tag-header-inner-text-view.component.d.ts +7 -0
- package/lib/components/xml-tags/xml-tag-header-text-view/xml-tag-header-text-view.component.d.ts +7 -0
- package/lib/components/xml-tags/xml-tag-html-view/xml-tag-html-view.component.d.ts +7 -0
- package/lib/components/xml-tags/xml-tag-table-view/xml-tag-table-view.component.d.ts +7 -0
- package/lib/components/xml-tags/xml-tag-text-view/xml-tag-text-view.component.d.ts +7 -0
- package/lib/components/xml-tags/xml-tag-view/xml-tag-view.component.d.ts +8 -0
- package/lib/consts/index.d.ts +1 -0
- package/lib/croco-html.module.d.ts +68 -0
- package/lib/extensions/AngularMaterialTableMethods.d.ts +7 -0
- package/lib/extensions/BodyTagsExtensions.d.ts +14 -0
- package/lib/extensions/BootstrapTableMethods.d.ts +9 -0
- package/lib/extensions/HtmlExtractionMethods.d.ts +28 -0
- package/lib/extensions/HtmlRawTagDataConsts.d.ts +10 -0
- package/lib/extensions/ImageMethods.d.ts +23 -0
- package/lib/extensions/InterfaceBlock.d.ts +10 -0
- package/lib/extensions/TableBuilder.d.ts +5 -0
- package/lib/extensions/TableMethods.d.ts +60 -0
- package/lib/extensions/Tags.d.ts +16 -0
- package/lib/extensions/TextMethods.d.ts +11 -0
- package/lib/extensions/TextSimpleMethods.d.ts +19 -0
- package/lib/extensions/VideoMethods.d.ts +26 -0
- package/lib/extensions/XmlExtensions.d.ts +5 -0
- package/lib/extensions/index.d.ts +10 -0
- package/lib/index.d.ts +24 -0
- package/lib/models/image-models.d.ts +19 -0
- package/lib/models/index.d.ts +2 -0
- package/lib/models/models.d.ts +18 -0
- package/lib/options/index.d.ts +46 -0
- package/lib/pipes/TagToSpanPipe.d.ts +7 -0
- package/lib/pipes/ToHtmlBodyTagsPipe.d.ts +11 -0
- package/lib/pipes/ToPreviewHtmlPipe.d.ts +11 -0
- package/lib/pipes/index.d.ts +4 -0
- package/lib/pipes/sprite-icon-path.pipe.d.ts +8 -0
- package/lib/pipes/to-preview.pipe.d.ts +11 -0
- package/lib/services/CrocoHtmlFileOptionsService.d.ts +10 -0
- package/lib/services/HtmlViewController.d.ts +11 -0
- package/lib/services/PrivateFileUploadService.d.ts +26 -0
- package/lib/services/PrivateFilesQueryService.d.ts +21 -0
- package/lib/services/PublicFileUploadService.d.ts +26 -0
- package/lib/services/PublicFilesQueryService.d.ts +12 -0
- package/lib/services/blob-create.service.d.ts +10 -0
- package/lib/services/file-models.d.ts +38 -0
- package/lib/services/index.d.ts +3 -0
- package/lib/services/screen-width.service.d.ts +10 -0
- package/lib/tag-services/ButtonTagService.d.ts +27 -0
- package/lib/tag-services/CustomWidgetTagService.d.ts +33 -0
- package/lib/tag-services/DownloadButtonTagService.d.ts +25 -0
- package/lib/tag-services/ExternalVideoTagService.d.ts +12 -0
- package/lib/tag-services/FileImageTagService.d.ts +12 -0
- package/lib/tag-services/HtmlRawTagService.d.ts +12 -0
- package/lib/tag-services/IMarkUpTagService.d.ts +35 -0
- package/lib/tag-services/TextTagHtmlMarkupTagService.d.ts +21 -0
- package/lib/tag-services/index.d.ts +8 -0
- package/package.json +1 -1
- package/public-api.d.ts +8 -0
- package/sprites-ids.type.d.ts +1 -0
package/fesm2022/croco-html.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Inject, Injectable, EventEmitter, Output, Input, ViewChild, Component, ChangeDetectionStrategy,
|
|
2
|
+
import { Inject, Injectable, EventEmitter, Output, Input, ViewChild, Component, ChangeDetectionStrategy, ViewContainerRef, ViewEncapsulation, Pipe, NgModule } from '@angular/core';
|
|
3
3
|
import * as i2 from '@angular/material/button';
|
|
4
4
|
import { MatButton, MatButtonModule, MatIconButton } from '@angular/material/button';
|
|
5
5
|
import * as i1 from '@angular/common/http';
|
|
@@ -165,18 +165,6 @@ class ImageMethods {
|
|
|
165
165
|
static isPrivateFileId(fileId) {
|
|
166
166
|
return !isNaN(Number(fileId));
|
|
167
167
|
}
|
|
168
|
-
static ExtractImage(elem, options) {
|
|
169
|
-
let fileId = elem.getAttribute(FileImageTagDataConsts.FileIdAttrName);
|
|
170
|
-
let src = ImageMethods.buildMediumUrl(fileId, options);
|
|
171
|
-
return {
|
|
172
|
-
type: FileImageTagDataConsts.TagName,
|
|
173
|
-
data: {
|
|
174
|
-
src,
|
|
175
|
-
fileId: fileId,
|
|
176
|
-
screenMediaRequest: elem.getAttribute(FileImageTagDataConsts.ScreenMediaRequest)
|
|
177
|
-
}
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
168
|
static { this.mediaRequestStringToArrayParser = (data) => {
|
|
181
169
|
if (!data) {
|
|
182
170
|
return [];
|
|
@@ -235,26 +223,415 @@ class ImageMethods {
|
|
|
235
223
|
}
|
|
236
224
|
}
|
|
237
225
|
|
|
238
|
-
|
|
239
|
-
(
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
226
|
+
class FileImageTagService {
|
|
227
|
+
constructor() {
|
|
228
|
+
this.tagName = FileImageTagDataConsts.TagName;
|
|
229
|
+
this.shortDescription = "Изображение";
|
|
230
|
+
}
|
|
231
|
+
bodyTagToHtmlStringConverter(bodyTag) {
|
|
232
|
+
let fileIdAttr = "";
|
|
233
|
+
let screenMediaRequestAttr = "";
|
|
234
|
+
if (bodyTag.attributes.hasOwnProperty(FileImageTagDataConsts.FileIdAttrName) && bodyTag.attributes[FileImageTagDataConsts.FileIdAttrName]) {
|
|
235
|
+
fileIdAttr = `${FileImageTagDataConsts.FileIdAttrName}="${bodyTag.attributes[FileImageTagDataConsts.FileIdAttrName]}"`;
|
|
236
|
+
}
|
|
237
|
+
if (bodyTag.attributes.hasOwnProperty(FileImageTagDataConsts.ScreenMediaRequest) && bodyTag.attributes[FileImageTagDataConsts.ScreenMediaRequest]) {
|
|
238
|
+
screenMediaRequestAttr = `${FileImageTagDataConsts.ScreenMediaRequest}="${bodyTag.attributes[FileImageTagDataConsts.ScreenMediaRequest]}"`;
|
|
239
|
+
}
|
|
240
|
+
return `<${FileImageTagDataConsts.TagName} ${fileIdAttr} ${screenMediaRequestAttr}></${FileImageTagDataConsts.TagName}>`;
|
|
241
|
+
}
|
|
242
|
+
extractBlockFromHtmlElement(elem, options) {
|
|
243
|
+
let fileId = elem.getAttribute(FileImageTagDataConsts.FileIdAttrName);
|
|
244
|
+
let src = ImageMethods.buildMediumUrl(fileId, options);
|
|
245
|
+
return {
|
|
246
|
+
type: FileImageTagDataConsts.TagName,
|
|
247
|
+
data: {
|
|
248
|
+
src,
|
|
249
|
+
fileId: fileId,
|
|
250
|
+
screenMediaRequest: elem.getAttribute(FileImageTagDataConsts.ScreenMediaRequest)
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
toBodyTag(data) {
|
|
255
|
+
let fileData = data.data;
|
|
256
|
+
let attrs = {};
|
|
257
|
+
if (fileData.fileId) {
|
|
258
|
+
attrs[FileImageTagDataConsts.FileIdAttrName] = fileData.fileId;
|
|
259
|
+
}
|
|
260
|
+
if (fileData.screenMediaRequest) {
|
|
261
|
+
attrs[FileImageTagDataConsts.ScreenMediaRequest] = fileData.screenMediaRequest;
|
|
262
|
+
}
|
|
263
|
+
return {
|
|
264
|
+
presentOrEdit: true,
|
|
265
|
+
tagDescription: {
|
|
266
|
+
tag: FileImageTagDataConsts.TagName,
|
|
267
|
+
displayValue: this.shortDescription,
|
|
268
|
+
isCustom: false
|
|
269
|
+
},
|
|
270
|
+
attributes: attrs,
|
|
271
|
+
innerHtml: ""
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
getDefaultValue() {
|
|
275
|
+
return {
|
|
276
|
+
tagDescription: {
|
|
277
|
+
tag: this.tagName,
|
|
278
|
+
displayValue: this.shortDescription,
|
|
279
|
+
isCustom: false
|
|
280
|
+
},
|
|
281
|
+
attributes: {
|
|
282
|
+
[FileImageTagDataConsts.FileIdAttrName]: null,
|
|
283
|
+
[FileImageTagDataConsts.ScreenMediaRequest]: FileImageTagDataConsts.DefaultValueForFileImage
|
|
284
|
+
},
|
|
285
|
+
presentOrEdit: false,
|
|
286
|
+
innerHtml: "",
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
}
|
|
249
290
|
|
|
291
|
+
var TextAlignment;
|
|
292
|
+
(function (TextAlignment) {
|
|
293
|
+
TextAlignment["Left"] = "left";
|
|
294
|
+
TextAlignment["Center"] = "center";
|
|
295
|
+
TextAlignment["Right"] = "right";
|
|
296
|
+
})(TextAlignment || (TextAlignment = {}));
|
|
250
297
|
class TextTagDataConsts {
|
|
251
298
|
static { this.HAlign = "h-align"; }
|
|
252
299
|
}
|
|
300
|
+
class TextTagHtmlMarkupTagService {
|
|
301
|
+
constructor(tagName, shortDescription) {
|
|
302
|
+
this.tagName = "text";
|
|
303
|
+
this.shortDescription = "T";
|
|
304
|
+
this.tagName = tagName;
|
|
305
|
+
this.shortDescription = shortDescription;
|
|
306
|
+
}
|
|
307
|
+
bodyTagToHtmlStringConverter(bodyTag) {
|
|
308
|
+
return `<${this.tagName} h-align="${bodyTag.attributes[TextTagDataConsts.HAlign]}">${bodyTag.innerHtml}</${this.tagName}>`;
|
|
309
|
+
}
|
|
310
|
+
extractBlockFromHtmlElement(elem, options) {
|
|
311
|
+
return TextSimpleMethods.ExtractTextTag(elem);
|
|
312
|
+
}
|
|
313
|
+
toBodyTag(data) {
|
|
314
|
+
let textTagData = data.data;
|
|
315
|
+
return {
|
|
316
|
+
presentOrEdit: true,
|
|
317
|
+
tagDescription: {
|
|
318
|
+
tag: this.tagName,
|
|
319
|
+
displayValue: this.shortDescription,
|
|
320
|
+
isCustom: false
|
|
321
|
+
},
|
|
322
|
+
attributes: { [TextTagDataConsts.HAlign]: textTagData.horizontalAlignment },
|
|
323
|
+
innerHtml: BodyTagsExtensions.sanitizeInnerHtml(textTagData.html)
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
getDefaultValue(props) {
|
|
327
|
+
return {
|
|
328
|
+
tagDescription: {
|
|
329
|
+
tag: this.tagName,
|
|
330
|
+
displayValue: this.shortDescription,
|
|
331
|
+
isCustom: false
|
|
332
|
+
},
|
|
333
|
+
attributes: {
|
|
334
|
+
[TextTagDataConsts.HAlign]: TextAlignment.Left
|
|
335
|
+
},
|
|
336
|
+
presentOrEdit: false,
|
|
337
|
+
innerHtml: "",
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
const defaultLinkYouTube = "https://www.youtube.com/embed/4CtSAnJDfsI?si=scyBNJa0Hs2t5aLE";
|
|
343
|
+
const defaultLinkVk = "https://vk.com/video_ext.php?oid=-22822305&id=456241864&hd=2";
|
|
344
|
+
class ExternalVideoTagService {
|
|
345
|
+
constructor() {
|
|
346
|
+
this.tagName = ExternalVideoTagDataConsts.TagName;
|
|
347
|
+
this.shortDescription = "Видео";
|
|
348
|
+
}
|
|
349
|
+
bodyTagToHtmlStringConverter(bodyTag) {
|
|
350
|
+
let useResponsiveWrapperAttr = '';
|
|
351
|
+
if (bodyTag.attributes[ExternalVideoTagDataConsts.VideoTypeAttrName] === ExternalVideoSupportedTypes.Code) {
|
|
352
|
+
useResponsiveWrapperAttr = `${ExternalVideoTagDataConsts.UseResponsiveWrapperAttrName}="${bodyTag.attributes[ExternalVideoTagDataConsts.UseResponsiveWrapperAttrName] || false}"`;
|
|
353
|
+
}
|
|
354
|
+
return `<${bodyTag.tagDescription.tag} ${useResponsiveWrapperAttr} type="${bodyTag.attributes[ExternalVideoTagDataConsts.VideoTypeAttrName]}" link="${bodyTag.attributes[ExternalVideoTagDataConsts.LinkAttrName]}">${bodyTag.innerHtml}</${bodyTag.tagDescription.tag}>`;
|
|
355
|
+
}
|
|
356
|
+
extractBlockFromHtmlElement(elem, options) {
|
|
357
|
+
return {
|
|
358
|
+
type: ExternalVideoTagDataConsts.TagName,
|
|
359
|
+
data: {
|
|
360
|
+
type: elem.getAttribute(ExternalVideoTagDataConsts.VideoTypeAttrName),
|
|
361
|
+
link: elem.getAttribute(ExternalVideoTagDataConsts.LinkAttrName),
|
|
362
|
+
useResponsiveWrapper: elem.getAttribute(ExternalVideoTagDataConsts.UseResponsiveWrapperAttrName) !== 'false',
|
|
363
|
+
innerHtml: elem.innerHTML
|
|
364
|
+
}
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
toBodyTag(data) {
|
|
368
|
+
let fileData = data.data;
|
|
369
|
+
return {
|
|
370
|
+
presentOrEdit: true,
|
|
371
|
+
tagDescription: {
|
|
372
|
+
tag: data.type,
|
|
373
|
+
displayValue: this.shortDescription,
|
|
374
|
+
isCustom: false
|
|
375
|
+
},
|
|
376
|
+
attributes: fileData,
|
|
377
|
+
innerHtml: ""
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
getDefaultValue(props) {
|
|
381
|
+
let attrs = {};
|
|
382
|
+
let innerHtml = "";
|
|
383
|
+
attrs[ExternalVideoTagDataConsts.VideoTypeAttrName] = props.selectedVideoPlayer;
|
|
384
|
+
attrs[ExternalVideoTagDataConsts.UseResponsiveWrapperAttrName] = false;
|
|
385
|
+
attrs[ExternalVideoTagDataConsts.LinkAttrName] = props.selectedVideoPlayer === ExternalVideoSupportedTypes.Code ? '' :
|
|
386
|
+
props.selectedVideoPlayer === ExternalVideoSupportedTypes.VkVideo
|
|
387
|
+
? defaultLinkVk
|
|
388
|
+
: defaultLinkYouTube;
|
|
389
|
+
if (props.selectedVideoPlayer === ExternalVideoSupportedTypes.Code) {
|
|
390
|
+
innerHtml = props.htmlRaw;
|
|
391
|
+
}
|
|
392
|
+
return {
|
|
393
|
+
tagDescription: {
|
|
394
|
+
tag: this.tagName,
|
|
395
|
+
displayValue: this.shortDescription,
|
|
396
|
+
isCustom: false
|
|
397
|
+
},
|
|
398
|
+
attributes: attrs,
|
|
399
|
+
presentOrEdit: false,
|
|
400
|
+
innerHtml: "",
|
|
401
|
+
};
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
class HtmlRawTagDataConsts {
|
|
406
|
+
static { this.TagName = "html-raw"; }
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
class HtmlRawTagService {
|
|
410
|
+
constructor() {
|
|
411
|
+
this.tagName = HtmlRawTagDataConsts.TagName;
|
|
412
|
+
this.shortDescription = "Разметка";
|
|
413
|
+
}
|
|
414
|
+
bodyTagToHtmlStringConverter(bodyTag) {
|
|
415
|
+
return `<${this.tagName}>${bodyTag.innerHtml}</${this.tagName}>`;
|
|
416
|
+
}
|
|
417
|
+
extractBlockFromHtmlElement(elem, options) {
|
|
418
|
+
return {
|
|
419
|
+
type: HtmlRawTagDataConsts.TagName,
|
|
420
|
+
data: {
|
|
421
|
+
innerHTML: elem.innerHTML
|
|
422
|
+
}
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
toBodyTag(data) {
|
|
426
|
+
return {
|
|
427
|
+
presentOrEdit: true,
|
|
428
|
+
tagDescription: {
|
|
429
|
+
tag: HtmlRawTagDataConsts.TagName,
|
|
430
|
+
displayValue: this.shortDescription,
|
|
431
|
+
isCustom: false
|
|
432
|
+
},
|
|
433
|
+
attributes: {},
|
|
434
|
+
innerHtml: BodyTagsExtensions.sanitizeInnerHtml(data.data["innerHTML"])
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
getDefaultValue(props) {
|
|
438
|
+
return {
|
|
439
|
+
tagDescription: {
|
|
440
|
+
tag: this.tagName,
|
|
441
|
+
displayValue: this.shortDescription,
|
|
442
|
+
isCustom: false
|
|
443
|
+
},
|
|
444
|
+
attributes: {},
|
|
445
|
+
presentOrEdit: false,
|
|
446
|
+
innerHtml: props.htmlRaw,
|
|
447
|
+
};
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
const defaultLinkForDownload = "https://storage.yandexcloud.net/mega-academy/presentation.pdf";
|
|
452
|
+
class DownloadButtonTagDataConsts {
|
|
453
|
+
static { this.TagName = "download-file-button"; }
|
|
454
|
+
static { this.TitleAttrName = "title"; }
|
|
455
|
+
static { this.LinkAttrName = "link"; }
|
|
456
|
+
}
|
|
457
|
+
class DownloadButtonTagService {
|
|
458
|
+
constructor() {
|
|
459
|
+
this.tagName = DownloadButtonTagDataConsts.TagName;
|
|
460
|
+
this.shortDescription = "Кнопка для скачивания";
|
|
461
|
+
}
|
|
462
|
+
bodyTagToHtmlStringConverter(bodyTag) {
|
|
463
|
+
return `<${this.tagName} title="${bodyTag.attributes[DownloadButtonTagDataConsts.TitleAttrName]}" link="${bodyTag.attributes[DownloadButtonTagDataConsts.LinkAttrName]}"></${this.tagName}>`;
|
|
464
|
+
}
|
|
465
|
+
extractBlockFromHtmlElement(elem, options) {
|
|
466
|
+
return {
|
|
467
|
+
type: DownloadButtonTagDataConsts.TagName,
|
|
468
|
+
data: {
|
|
469
|
+
title: elem.getAttribute(DownloadButtonTagDataConsts.TitleAttrName),
|
|
470
|
+
link: elem.getAttribute(DownloadButtonTagDataConsts.LinkAttrName)
|
|
471
|
+
}
|
|
472
|
+
};
|
|
473
|
+
}
|
|
474
|
+
toBodyTag(data) {
|
|
475
|
+
let fileData = data.data;
|
|
476
|
+
return {
|
|
477
|
+
presentOrEdit: true,
|
|
478
|
+
tagDescription: {
|
|
479
|
+
tag: data.type,
|
|
480
|
+
displayValue: this.shortDescription,
|
|
481
|
+
isCustom: false
|
|
482
|
+
},
|
|
483
|
+
attributes: fileData,
|
|
484
|
+
innerHtml: ""
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
getDefaultValue(props) {
|
|
488
|
+
return {
|
|
489
|
+
tagDescription: {
|
|
490
|
+
tag: this.tagName,
|
|
491
|
+
displayValue: this.shortDescription,
|
|
492
|
+
isCustom: false
|
|
493
|
+
},
|
|
494
|
+
attributes: {
|
|
495
|
+
[DownloadButtonTagDataConsts.LinkAttrName]: defaultLinkForDownload,
|
|
496
|
+
[DownloadButtonTagDataConsts.TitleAttrName]: 'Скачать'
|
|
497
|
+
},
|
|
498
|
+
presentOrEdit: false,
|
|
499
|
+
innerHtml: props.htmlRaw,
|
|
500
|
+
};
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
class ButtonTagDataConsts {
|
|
505
|
+
static { this.TagName = "button"; }
|
|
506
|
+
static { this.TextAttrName = "text"; }
|
|
507
|
+
static { this.TypeAttrName = "type"; }
|
|
508
|
+
static { this.ClickAttrName = "click"; }
|
|
509
|
+
}
|
|
510
|
+
class ButtonTagService {
|
|
511
|
+
constructor() {
|
|
512
|
+
this.tagName = ButtonTagDataConsts.TagName;
|
|
513
|
+
this.shortDescription = "Кнопка";
|
|
514
|
+
}
|
|
515
|
+
bodyTagToHtmlStringConverter(bodyTag) {
|
|
516
|
+
let atts = bodyTag.attributes;
|
|
517
|
+
return `<${this.tagName} text="${atts[ButtonTagDataConsts.TextAttrName]}" type="${atts[ButtonTagDataConsts.TypeAttrName]}" click="${atts[ButtonTagDataConsts.ClickAttrName]}"></${this.tagName}>`;
|
|
518
|
+
}
|
|
519
|
+
extractBlockFromHtmlElement(elem, options) {
|
|
520
|
+
return {
|
|
521
|
+
type: ButtonTagDataConsts.TagName,
|
|
522
|
+
data: {
|
|
523
|
+
text: elem.getAttribute(ButtonTagDataConsts.TextAttrName),
|
|
524
|
+
type: elem.getAttribute(ButtonTagDataConsts.TypeAttrName),
|
|
525
|
+
click: elem.getAttribute(ButtonTagDataConsts.ClickAttrName)
|
|
526
|
+
}
|
|
527
|
+
};
|
|
528
|
+
}
|
|
529
|
+
toBodyTag(data) {
|
|
530
|
+
let fileData = data.data;
|
|
531
|
+
return {
|
|
532
|
+
presentOrEdit: true,
|
|
533
|
+
tagDescription: {
|
|
534
|
+
tag: data.type,
|
|
535
|
+
displayValue: this.shortDescription,
|
|
536
|
+
isCustom: false
|
|
537
|
+
},
|
|
538
|
+
attributes: fileData,
|
|
539
|
+
innerHtml: ""
|
|
540
|
+
};
|
|
541
|
+
}
|
|
542
|
+
getDefaultValue(props) {
|
|
543
|
+
return {
|
|
544
|
+
tagDescription: {
|
|
545
|
+
tag: this.tagName,
|
|
546
|
+
displayValue: this.shortDescription,
|
|
547
|
+
isCustom: false
|
|
548
|
+
},
|
|
549
|
+
attributes: {
|
|
550
|
+
[ButtonTagDataConsts.ClickAttrName]: '',
|
|
551
|
+
[ButtonTagDataConsts.TypeAttrName]: 'button',
|
|
552
|
+
[ButtonTagDataConsts.TextAttrName]: 'Кнопка'
|
|
553
|
+
},
|
|
554
|
+
presentOrEdit: false,
|
|
555
|
+
innerHtml: props.htmlRaw,
|
|
556
|
+
};
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
class CustomWidgetTagDataConsts {
|
|
561
|
+
static { this.TagName = "custom-widget"; }
|
|
562
|
+
static { this.TypeAttrName = "type"; }
|
|
563
|
+
static { this.DataIdAttrName = "data-id"; }
|
|
564
|
+
static { this.WidgetIdAttrName = "widget-id"; }
|
|
565
|
+
}
|
|
566
|
+
class CustomWidgetTagService {
|
|
567
|
+
constructor() {
|
|
568
|
+
this.tagName = CustomWidgetTagDataConsts.TagName;
|
|
569
|
+
this.shortDescription = "Виджет";
|
|
570
|
+
}
|
|
571
|
+
bodyTagToHtmlStringConverter(bodyTag) {
|
|
572
|
+
let attrs = bodyTag.attributes;
|
|
573
|
+
return `<${this.tagName} type="${attrs[CustomWidgetTagDataConsts.TypeAttrName]}" data-id="${attrs[CustomWidgetTagDataConsts.DataIdAttrName]}" widget-id="${attrs[CustomWidgetTagDataConsts.WidgetIdAttrName]}"></${this.tagName}>`;
|
|
574
|
+
}
|
|
575
|
+
extractBlockFromHtmlElement(elem, options) {
|
|
576
|
+
return {
|
|
577
|
+
type: CustomWidgetTagDataConsts.TagName,
|
|
578
|
+
data: {
|
|
579
|
+
type: elem.getAttribute(CustomWidgetTagDataConsts.TypeAttrName),
|
|
580
|
+
dataId: elem.getAttribute(CustomWidgetTagDataConsts.DataIdAttrName),
|
|
581
|
+
widgetId: elem.getAttribute(CustomWidgetTagDataConsts.WidgetIdAttrName)
|
|
582
|
+
}
|
|
583
|
+
};
|
|
584
|
+
}
|
|
585
|
+
toBodyTag(data) {
|
|
586
|
+
let customWidgetTagData = data.data;
|
|
587
|
+
return {
|
|
588
|
+
presentOrEdit: true,
|
|
589
|
+
tagDescription: {
|
|
590
|
+
tag: data.type,
|
|
591
|
+
displayValue: this.shortDescription,
|
|
592
|
+
isCustom: false
|
|
593
|
+
},
|
|
594
|
+
attributes: customWidgetTagData,
|
|
595
|
+
innerHtml: ""
|
|
596
|
+
};
|
|
597
|
+
}
|
|
598
|
+
getDefaultValue(props) {
|
|
599
|
+
return {
|
|
600
|
+
tagDescription: {
|
|
601
|
+
tag: this.tagName,
|
|
602
|
+
displayValue: this.shortDescription,
|
|
603
|
+
isCustom: false
|
|
604
|
+
},
|
|
605
|
+
attributes: {
|
|
606
|
+
[CustomWidgetTagDataConsts.TypeAttrName]: 'example-type',
|
|
607
|
+
[CustomWidgetTagDataConsts.DataIdAttrName]: 'example-data-id',
|
|
608
|
+
[CustomWidgetTagDataConsts.WidgetIdAttrName]: 'example-widget-id'
|
|
609
|
+
},
|
|
610
|
+
presentOrEdit: false,
|
|
611
|
+
innerHtml: props.htmlRaw,
|
|
612
|
+
};
|
|
613
|
+
}
|
|
614
|
+
static ExtractCustomWidgetTagData(attributes) {
|
|
615
|
+
return {
|
|
616
|
+
type: attributes[CustomWidgetTagDataConsts.TypeAttrName],
|
|
617
|
+
dataId: attributes[CustomWidgetTagDataConsts.DataIdAttrName],
|
|
618
|
+
widgetId: attributes[CustomWidgetTagDataConsts.WidgetIdAttrName]
|
|
619
|
+
};
|
|
620
|
+
}
|
|
621
|
+
static ExtractCustomWidgetAttributes(customWidgetTagData) {
|
|
622
|
+
return {
|
|
623
|
+
[CustomWidgetTagDataConsts.TypeAttrName]: customWidgetTagData.type,
|
|
624
|
+
[CustomWidgetTagDataConsts.DataIdAttrName]: customWidgetTagData.dataId,
|
|
625
|
+
[CustomWidgetTagDataConsts.WidgetIdAttrName]: customWidgetTagData.widgetId
|
|
626
|
+
};
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
|
|
253
630
|
const TextTag = "text";
|
|
254
631
|
class TextSimpleMethods {
|
|
255
632
|
static { this.supportedTags = ["sup", "sub", "strong", "b", "i", "u"]; }
|
|
256
633
|
static ExtractTextTag(elem) {
|
|
257
|
-
var hAlignValue = elem.getAttribute("h-align") ??
|
|
634
|
+
var hAlignValue = elem.getAttribute("h-align") ?? TextAlignment.Left;
|
|
258
635
|
var data = {
|
|
259
636
|
textTagName: elem.tagName.toLowerCase(),
|
|
260
637
|
text: elem.innerText.trim().replace('\n\t', ''),
|
|
@@ -266,7 +643,7 @@ class TextSimpleMethods {
|
|
|
266
643
|
}
|
|
267
644
|
};
|
|
268
645
|
let result = {
|
|
269
|
-
type:
|
|
646
|
+
type: data.textTagName,
|
|
270
647
|
data: data
|
|
271
648
|
};
|
|
272
649
|
if (result.data.text === '\n') {
|
|
@@ -275,7 +652,7 @@ class TextSimpleMethods {
|
|
|
275
652
|
if (result.data.html === '\n') {
|
|
276
653
|
result.data.html = '';
|
|
277
654
|
}
|
|
278
|
-
var alignmentVals = [
|
|
655
|
+
var alignmentVals = [TextAlignment.Left, TextAlignment.Right, TextAlignment.Center];
|
|
279
656
|
if (alignmentVals.indexOf(hAlignValue) < 0) {
|
|
280
657
|
result.data.validationResult = {
|
|
281
658
|
isSucceeded: false,
|
|
@@ -394,298 +771,125 @@ class BootstrapTableMethods {
|
|
|
394
771
|
|
|
395
772
|
class TableTypes {
|
|
396
773
|
static { this.TableRowColumnData = "table-row-column-data"; }
|
|
397
|
-
static { this.Table = "table"; }
|
|
398
|
-
static { this.TableRowColumn = "table-row-column"; }
|
|
399
|
-
}
|
|
400
|
-
class TableMethods {
|
|
401
|
-
static getTableFromHtmlTag(tableTag, options) {
|
|
402
|
-
let tableData = {
|
|
403
|
-
header: TableMethods.getHeader(tableTag),
|
|
404
|
-
rows: TableMethods.getTableRows(tableTag, options)
|
|
405
|
-
};
|
|
406
|
-
var result = {
|
|
407
|
-
type: TableTypes.Table,
|
|
408
|
-
data: tableData,
|
|
409
|
-
validationResult: this.checkTable(tableData),
|
|
410
|
-
bootstrapHtml: ""
|
|
411
|
-
};
|
|
412
|
-
if (!result.validationResult) {
|
|
413
|
-
return result;
|
|
414
|
-
}
|
|
415
|
-
result.bootstrapHtml = BootstrapTableMethods.BuildTable(result.data);
|
|
416
|
-
var angularMaterialTableDataCheck = AngularMaterialTableMethods.checkAngularMaterialTableData(tableData);
|
|
417
|
-
if (!angularMaterialTableDataCheck.isSucceeded) {
|
|
418
|
-
return {
|
|
419
|
-
...result,
|
|
420
|
-
angularMaterialTableDataCheck
|
|
421
|
-
};
|
|
422
|
-
}
|
|
423
|
-
return {
|
|
424
|
-
...result,
|
|
425
|
-
angularMaterialTableDataCheck,
|
|
426
|
-
html: tableTag.outerHTML,
|
|
427
|
-
angularMaterialTableData: AngularMaterialTableMethods.getAngularMaterialTableData(tableData.header.columns, tableData.rows),
|
|
428
|
-
};
|
|
429
|
-
}
|
|
430
|
-
static checkTable(tableData) {
|
|
431
|
-
let rows = tableData.rows;
|
|
432
|
-
let prevRowCount = -1;
|
|
433
|
-
for (let i = 0; i < rows.length; i++) {
|
|
434
|
-
const row = rows[i];
|
|
435
|
-
if (row.columns.length !== prevRowCount && prevRowCount != -1) {
|
|
436
|
-
return {
|
|
437
|
-
isSucceeded: false,
|
|
438
|
-
message: `Ошибка при обработке разметки таблицы. `
|
|
439
|
-
+ `Количество колонок в каждой строке таблицы должно соотвествовать друг другу. `
|
|
440
|
-
+ `В строке таблицы №${i + 1} количество колонок = ${row.columns.length}, а в строке выше ${prevRowCount}.`
|
|
441
|
-
};
|
|
442
|
-
}
|
|
443
|
-
prevRowCount = row.columns.length;
|
|
444
|
-
}
|
|
445
|
-
return {
|
|
446
|
-
isSucceeded: true,
|
|
447
|
-
message: "Ok"
|
|
448
|
-
};
|
|
449
|
-
}
|
|
450
|
-
static getHeader(tableTag) {
|
|
451
|
-
let header = tableTag.tHead;
|
|
452
|
-
if (header === null) {
|
|
453
|
-
return null;
|
|
454
|
-
}
|
|
455
|
-
let tr = header.children.item(0);
|
|
456
|
-
let headerColumns = [];
|
|
457
|
-
for (let j = 0; j < tr.children.length; j++) {
|
|
458
|
-
const jElement = tr.children.item(j);
|
|
459
|
-
headerColumns.push(jElement.innerHTML);
|
|
460
|
-
}
|
|
461
|
-
return {
|
|
462
|
-
type: "table-header",
|
|
463
|
-
columns: headerColumns
|
|
464
|
-
};
|
|
465
|
-
}
|
|
466
|
-
static getTableRows(tableTag, options) {
|
|
467
|
-
let tBody = tableTag.tBodies.item(0);
|
|
468
|
-
let rows = [];
|
|
469
|
-
for (let i = 0; i < tBody.children.length; i++) {
|
|
470
|
-
const iElement = tBody.children.item(i);
|
|
471
|
-
let rowColumns = [];
|
|
472
|
-
for (let j = 0; j < iElement.children.length; j++) {
|
|
473
|
-
const jElement = iElement.children.item(j);
|
|
474
|
-
let children = HtmlExtractionMethods.transformHtmlElementToBlocks(jElement, options);
|
|
475
|
-
if (children.length === 0) {
|
|
476
|
-
var textTag = document.createElement("p");
|
|
477
|
-
textTag.innerHTML = jElement.innerHTML;
|
|
478
|
-
var textElem = TextSimpleMethods.ExtractTextTag(textTag);
|
|
479
|
-
children.push(textElem);
|
|
480
|
-
}
|
|
481
|
-
var result = {
|
|
482
|
-
type: TableTypes.TableRowColumnData,
|
|
483
|
-
data: {
|
|
484
|
-
text: jElement.innerHTML,
|
|
485
|
-
children
|
|
486
|
-
}
|
|
487
|
-
};
|
|
488
|
-
rowColumns.push(result);
|
|
489
|
-
}
|
|
490
|
-
rows.push({
|
|
491
|
-
type: TableTypes.TableRowColumn,
|
|
492
|
-
columns: rowColumns
|
|
493
|
-
});
|
|
494
|
-
}
|
|
495
|
-
return rows;
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
|
|
499
|
-
class TextTags {
|
|
500
|
-
static { this.text = "text"; }
|
|
501
|
-
static { this.h1 = "h1"; }
|
|
502
|
-
static { this.h2 = "h2"; }
|
|
503
|
-
static { this.h3 = "h3"; }
|
|
504
|
-
static { this.h4 = "h4"; }
|
|
505
|
-
static { this.h5 = "h5"; }
|
|
506
|
-
static { this.h6 = "h6"; }
|
|
507
|
-
static { this.headerTextTags = [TextTags.h1, TextTags.h2, TextTags.h3, TextTags.h4, TextTags.h5, TextTags.h6]; }
|
|
508
|
-
static { this.allTextTags = [TextTags.text, ...TextTags.headerTextTags]; }
|
|
509
|
-
}
|
|
510
|
-
class TextMethods {
|
|
511
|
-
static ExtractRichTextData(elem) {
|
|
512
|
-
let children = [];
|
|
513
|
-
for (let i = 0; i < elem.children.length; i++) {
|
|
514
|
-
const child = elem.children.item(i);
|
|
515
|
-
if (child.tagName === "text-block".toUpperCase()) {
|
|
516
|
-
children.push({
|
|
517
|
-
type: "text-block",
|
|
518
|
-
data: {
|
|
519
|
-
text: child.innerHTML
|
|
520
|
-
}
|
|
521
|
-
});
|
|
522
|
-
}
|
|
523
|
-
else if (child.tagName === "line-break".toUpperCase()) {
|
|
524
|
-
children.push({
|
|
525
|
-
type: "line-break"
|
|
526
|
-
});
|
|
527
|
-
}
|
|
528
|
-
}
|
|
529
|
-
return {
|
|
530
|
-
type: "rich-text",
|
|
531
|
-
data: {
|
|
532
|
-
children
|
|
533
|
-
}
|
|
534
|
-
};
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
class ExternalVideoTagDataConsts {
|
|
539
|
-
static { this.TagName = "external-video"; }
|
|
540
|
-
static { this.VideoTypeAttrName = "type"; }
|
|
541
|
-
static { this.LinkAttrName = "link"; }
|
|
542
|
-
static { this.UseResponsiveWrapperAttrName = "use-responsive-wrapper"; }
|
|
543
|
-
static { this.IframeAttrName = "iframe"; }
|
|
544
|
-
}
|
|
545
|
-
class ExternalVideoSupportedTypes {
|
|
546
|
-
static { this.Youtube = "youtube"; }
|
|
547
|
-
static { this.VkVideo = "vk-video"; }
|
|
548
|
-
static { this.Code = "code"; }
|
|
549
|
-
}
|
|
550
|
-
const ExternalVideoPlayers = [
|
|
551
|
-
{
|
|
552
|
-
type: ExternalVideoSupportedTypes.Code,
|
|
553
|
-
displayValue: 'Встраиваемое Видео',
|
|
554
|
-
},
|
|
555
|
-
{
|
|
556
|
-
type: ExternalVideoSupportedTypes.Youtube,
|
|
557
|
-
displayValue: 'Youtube',
|
|
558
|
-
},
|
|
559
|
-
{
|
|
560
|
-
type: ExternalVideoSupportedTypes.VkVideo,
|
|
561
|
-
displayValue: 'Vk Video',
|
|
562
|
-
}
|
|
563
|
-
];
|
|
564
|
-
class VideoMethods {
|
|
565
|
-
static ExtractExternalVideoTag(elem) {
|
|
566
|
-
return {
|
|
567
|
-
type: ExternalVideoTagDataConsts.TagName,
|
|
568
|
-
data: {
|
|
569
|
-
type: elem.getAttribute(ExternalVideoTagDataConsts.VideoTypeAttrName),
|
|
570
|
-
link: elem.getAttribute(ExternalVideoTagDataConsts.LinkAttrName),
|
|
571
|
-
useResponsiveWrapper: elem.getAttribute(ExternalVideoTagDataConsts.UseResponsiveWrapperAttrName) !== 'false',
|
|
572
|
-
innerHtml: elem.innerHTML
|
|
573
|
-
}
|
|
574
|
-
};
|
|
575
|
-
}
|
|
576
|
-
}
|
|
577
|
-
|
|
578
|
-
class DownloadButtonTagDataConsts {
|
|
579
|
-
static { this.TagName = "download-file-button"; }
|
|
580
|
-
static { this.TitleAttrName = "title"; }
|
|
581
|
-
static { this.LinkAttrName = "link"; }
|
|
582
|
-
}
|
|
583
|
-
class DownloadButtonMethods {
|
|
584
|
-
static ExtractDownloadButtonTag(elem) {
|
|
585
|
-
return {
|
|
586
|
-
type: DownloadButtonTagDataConsts.TagName,
|
|
587
|
-
data: {
|
|
588
|
-
title: elem.getAttribute(DownloadButtonTagDataConsts.TitleAttrName),
|
|
589
|
-
link: elem.getAttribute(DownloadButtonTagDataConsts.LinkAttrName)
|
|
590
|
-
}
|
|
591
|
-
};
|
|
592
|
-
}
|
|
593
|
-
}
|
|
594
|
-
|
|
595
|
-
class ButtonTagDataConsts {
|
|
596
|
-
static { this.TagName = "button"; }
|
|
597
|
-
static { this.TextAttrName = "text"; }
|
|
598
|
-
static { this.TypeAttrName = "type"; }
|
|
599
|
-
static { this.ClickAttrName = "click"; }
|
|
600
|
-
}
|
|
601
|
-
class ButtonMethods {
|
|
602
|
-
static ExtractButtonTag(elem) {
|
|
603
|
-
return {
|
|
604
|
-
type: ButtonTagDataConsts.TagName,
|
|
605
|
-
data: {
|
|
606
|
-
text: elem.getAttribute(ButtonTagDataConsts.TextAttrName),
|
|
607
|
-
type: elem.getAttribute(ButtonTagDataConsts.TypeAttrName),
|
|
608
|
-
click: elem.getAttribute(ButtonTagDataConsts.ClickAttrName)
|
|
609
|
-
}
|
|
610
|
-
};
|
|
611
|
-
}
|
|
612
|
-
}
|
|
613
|
-
|
|
614
|
-
class CustomWidgetTagDataConsts {
|
|
615
|
-
static { this.TagName = "custom-widget"; }
|
|
616
|
-
static { this.TypeAttrName = "type"; }
|
|
617
|
-
static { this.DataIdAttrName = "data-id"; }
|
|
618
|
-
static { this.WidgetIdAttrName = "widget-id"; }
|
|
774
|
+
static { this.Table = "table"; }
|
|
775
|
+
static { this.TableRowColumn = "table-row-column"; }
|
|
619
776
|
}
|
|
620
|
-
class
|
|
621
|
-
static
|
|
777
|
+
class TableMethods {
|
|
778
|
+
static getTableFromHtmlTag(tableTag, options) {
|
|
779
|
+
let tableData = {
|
|
780
|
+
header: TableMethods.getHeader(tableTag),
|
|
781
|
+
rows: TableMethods.getTableRows(tableTag, options)
|
|
782
|
+
};
|
|
783
|
+
var result = {
|
|
784
|
+
type: TableTypes.Table,
|
|
785
|
+
data: tableData,
|
|
786
|
+
validationResult: this.checkTable(tableData),
|
|
787
|
+
bootstrapHtml: ""
|
|
788
|
+
};
|
|
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
|
+
}
|
|
622
800
|
return {
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
801
|
+
...result,
|
|
802
|
+
angularMaterialTableDataCheck,
|
|
803
|
+
html: tableTag.outerHTML,
|
|
804
|
+
angularMaterialTableData: AngularMaterialTableMethods.getAngularMaterialTableData(tableData.header.columns, tableData.rows),
|
|
626
805
|
};
|
|
627
806
|
}
|
|
628
|
-
static
|
|
807
|
+
static checkTable(tableData) {
|
|
808
|
+
let rows = tableData.rows;
|
|
809
|
+
let prevRowCount = -1;
|
|
810
|
+
for (let i = 0; i < rows.length; i++) {
|
|
811
|
+
const row = rows[i];
|
|
812
|
+
if (row.columns.length !== prevRowCount && prevRowCount != -1) {
|
|
813
|
+
return {
|
|
814
|
+
isSucceeded: false,
|
|
815
|
+
message: `Ошибка при обработке разметки таблицы. `
|
|
816
|
+
+ `Количество колонок в каждой строке таблицы должно соотвествовать друг другу. `
|
|
817
|
+
+ `В строке таблицы №${i + 1} количество колонок = ${row.columns.length}, а в строке выше ${prevRowCount}.`
|
|
818
|
+
};
|
|
819
|
+
}
|
|
820
|
+
prevRowCount = row.columns.length;
|
|
821
|
+
}
|
|
629
822
|
return {
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
[CustomWidgetTagDataConsts.WidgetIdAttrName]: customWidgetTagData.widgetId
|
|
823
|
+
isSucceeded: true,
|
|
824
|
+
message: "Ok"
|
|
633
825
|
};
|
|
634
826
|
}
|
|
635
|
-
static
|
|
827
|
+
static getHeader(tableTag) {
|
|
828
|
+
let header = tableTag.tHead;
|
|
829
|
+
if (header === null) {
|
|
830
|
+
return null;
|
|
831
|
+
}
|
|
832
|
+
let tr = header.children.item(0);
|
|
833
|
+
let headerColumns = [];
|
|
834
|
+
for (let j = 0; j < tr.children.length; j++) {
|
|
835
|
+
const jElement = tr.children.item(j);
|
|
836
|
+
headerColumns.push(jElement.innerHTML);
|
|
837
|
+
}
|
|
636
838
|
return {
|
|
637
|
-
type:
|
|
638
|
-
|
|
639
|
-
type: elem.getAttribute(CustomWidgetTagDataConsts.TypeAttrName),
|
|
640
|
-
dataId: elem.getAttribute(CustomWidgetTagDataConsts.DataIdAttrName),
|
|
641
|
-
widgetId: elem.getAttribute(CustomWidgetTagDataConsts.WidgetIdAttrName)
|
|
642
|
-
}
|
|
839
|
+
type: "table-header",
|
|
840
|
+
columns: headerColumns
|
|
643
841
|
};
|
|
644
842
|
}
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
843
|
+
static getTableRows(tableTag, options) {
|
|
844
|
+
let tBody = tableTag.tBodies.item(0);
|
|
845
|
+
let rows = [];
|
|
846
|
+
for (let i = 0; i < tBody.children.length; i++) {
|
|
847
|
+
const iElement = tBody.children.item(i);
|
|
848
|
+
let rowColumns = [];
|
|
849
|
+
for (let j = 0; j < iElement.children.length; j++) {
|
|
850
|
+
const jElement = iElement.children.item(j);
|
|
851
|
+
let children = HtmlExtractionMethods.transformHtmlElementToBlocks(jElement, options);
|
|
852
|
+
if (children.length === 0) {
|
|
853
|
+
var textTag = document.createElement("p");
|
|
854
|
+
textTag.innerHTML = jElement.innerHTML;
|
|
855
|
+
var textElem = TextSimpleMethods.ExtractTextTag(textTag);
|
|
856
|
+
children.push(textElem);
|
|
857
|
+
}
|
|
858
|
+
var result = {
|
|
859
|
+
type: TableTypes.TableRowColumnData,
|
|
860
|
+
data: {
|
|
861
|
+
text: jElement.innerHTML,
|
|
862
|
+
children
|
|
863
|
+
}
|
|
864
|
+
};
|
|
865
|
+
rowColumns.push(result);
|
|
656
866
|
}
|
|
657
|
-
|
|
867
|
+
rows.push({
|
|
868
|
+
type: TableTypes.TableRowColumn,
|
|
869
|
+
columns: rowColumns
|
|
870
|
+
});
|
|
871
|
+
}
|
|
872
|
+
return rows;
|
|
658
873
|
}
|
|
659
874
|
}
|
|
660
875
|
|
|
661
876
|
class HtmlExtractionMethods {
|
|
662
|
-
|
|
663
|
-
var data = TextSimpleMethods.ExtractTextTag(elem);
|
|
664
|
-
data.type = tagName;
|
|
665
|
-
return data;
|
|
666
|
-
}
|
|
877
|
+
// TODO удалить в пользу BodyTagsExtensions
|
|
667
878
|
static { this.Extractors = {
|
|
668
|
-
[
|
|
669
|
-
["FILE-IMAGE"]: (elem, options) => ImageMethods.ExtractImage(elem, options),
|
|
670
|
-
["TABLE"]: (elem, options) => TableMethods.getTableFromHtmlTag(elem, options),
|
|
671
|
-
["RICH-TEXT"]: (elem, options) => TextMethods.ExtractRichTextData(elem),
|
|
672
|
-
["H1"]: (elem, options) => HtmlExtractionMethods.ExtractHeaderTag(elem, "h1"),
|
|
673
|
-
["H2"]: (elem, options) => HtmlExtractionMethods.ExtractHeaderTag(elem, "h2"),
|
|
674
|
-
["H3"]: (elem, options) => HtmlExtractionMethods.ExtractHeaderTag(elem, "h3"),
|
|
675
|
-
["H4"]: (elem, options) => HtmlExtractionMethods.ExtractHeaderTag(elem, "h4"),
|
|
676
|
-
["H5"]: (elem, options) => HtmlExtractionMethods.ExtractHeaderTag(elem, "h5"),
|
|
677
|
-
["H6"]: (elem, options) => HtmlExtractionMethods.ExtractHeaderTag(elem, "h6"),
|
|
678
|
-
[ExternalVideoTagDataConsts.TagName.toUpperCase()]: (elem, options) => VideoMethods.ExtractExternalVideoTag(elem),
|
|
679
|
-
[DownloadButtonTagDataConsts.TagName.toUpperCase()]: (elem, options) => DownloadButtonMethods.ExtractDownloadButtonTag(elem),
|
|
680
|
-
[ButtonTagDataConsts.TagName.toUpperCase()]: (elem, options) => ButtonMethods.ExtractButtonTag(elem),
|
|
681
|
-
[CustomWidgetTagDataConsts.TagName.toUpperCase()]: (elem, options) => CustomWidgetMethods.ExtractCustomWidgetTag(elem),
|
|
682
|
-
[HtmlRawTagDataConsts.TagName.toUpperCase()]: (elem, options) => ExtractHtmlRawTagMethods.ExtractHtmlRawTag(elem)
|
|
879
|
+
[TableTypes.Table]: (elem, options) => TableMethods.getTableFromHtmlTag(elem, options),
|
|
683
880
|
}; }
|
|
684
881
|
static transformHtmlElementToBlocks(element, options) {
|
|
685
882
|
var data = [];
|
|
686
883
|
for (let i = 0; i < element.children.length; i++) {
|
|
687
884
|
var elem = element.children.item(i);
|
|
688
|
-
|
|
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)) {
|
|
689
893
|
data.push({
|
|
690
894
|
type: "unsupported-tag",
|
|
691
895
|
data: {
|
|
@@ -694,7 +898,7 @@ class HtmlExtractionMethods {
|
|
|
694
898
|
});
|
|
695
899
|
}
|
|
696
900
|
else {
|
|
697
|
-
var extractor = HtmlExtractionMethods.Extractors[
|
|
901
|
+
var extractor = HtmlExtractionMethods.Extractors[loweredTagName];
|
|
698
902
|
var result = extractor(elem, options);
|
|
699
903
|
data.push(result);
|
|
700
904
|
}
|
|
@@ -714,6 +918,45 @@ class HtmlExtractionMethods {
|
|
|
714
918
|
}
|
|
715
919
|
}
|
|
716
920
|
|
|
921
|
+
class TextTags {
|
|
922
|
+
static { this.text = "text"; }
|
|
923
|
+
static { this.h1 = "h1"; }
|
|
924
|
+
static { this.h2 = "h2"; }
|
|
925
|
+
static { this.h3 = "h3"; }
|
|
926
|
+
static { this.h4 = "h4"; }
|
|
927
|
+
static { this.h5 = "h5"; }
|
|
928
|
+
static { this.h6 = "h6"; }
|
|
929
|
+
static { this.headerTextTags = [TextTags.h1, TextTags.h2, TextTags.h3, TextTags.h4, TextTags.h5, TextTags.h6]; }
|
|
930
|
+
static { this.allTextTags = [TextTags.text, ...TextTags.headerTextTags]; }
|
|
931
|
+
}
|
|
932
|
+
|
|
933
|
+
class ExternalVideoTagDataConsts {
|
|
934
|
+
static { this.TagName = "external-video"; }
|
|
935
|
+
static { this.VideoTypeAttrName = "type"; }
|
|
936
|
+
static { this.LinkAttrName = "link"; }
|
|
937
|
+
static { this.UseResponsiveWrapperAttrName = "use-responsive-wrapper"; }
|
|
938
|
+
static { this.IframeAttrName = "iframe"; }
|
|
939
|
+
}
|
|
940
|
+
class ExternalVideoSupportedTypes {
|
|
941
|
+
static { this.Youtube = "youtube"; }
|
|
942
|
+
static { this.VkVideo = "vk-video"; }
|
|
943
|
+
static { this.Code = "code"; }
|
|
944
|
+
}
|
|
945
|
+
const ExternalVideoPlayers = [
|
|
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',
|
|
957
|
+
}
|
|
958
|
+
];
|
|
959
|
+
|
|
717
960
|
class Tags {
|
|
718
961
|
static { this.Text = TextTags.text; }
|
|
719
962
|
static { this.H1 = TextTags.h1; }
|
|
@@ -732,51 +975,29 @@ class Tags {
|
|
|
732
975
|
}
|
|
733
976
|
|
|
734
977
|
class BodyTagsExtensions {
|
|
735
|
-
static
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
978
|
+
static { this.tagServices = {
|
|
979
|
+
[TextTags.text]: new TextTagHtmlMarkupTagService("text", "T"),
|
|
980
|
+
[TextTags.h1]: new TextTagHtmlMarkupTagService("h1", "H1"),
|
|
981
|
+
[TextTags.h2]: new TextTagHtmlMarkupTagService("h2", "H2"),
|
|
982
|
+
[TextTags.h3]: new TextTagHtmlMarkupTagService("h3", "H3"),
|
|
983
|
+
[TextTags.h4]: new TextTagHtmlMarkupTagService("h4", "H4"),
|
|
984
|
+
[TextTags.h5]: new TextTagHtmlMarkupTagService("h5", "H5"),
|
|
985
|
+
[TextTags.h6]: new TextTagHtmlMarkupTagService("h6", "H6"),
|
|
986
|
+
[FileImageTagDataConsts.TagName]: new FileImageTagService(),
|
|
987
|
+
[ExternalVideoTagDataConsts.TagName]: new ExternalVideoTagService(),
|
|
988
|
+
[HtmlRawTagDataConsts.TagName]: new HtmlRawTagService(),
|
|
989
|
+
[DownloadButtonTagDataConsts.TagName]: new DownloadButtonTagService(),
|
|
990
|
+
[ButtonTagDataConsts.TagName]: new ButtonTagService()
|
|
991
|
+
}; }
|
|
992
|
+
static convertToHtmlString(bodyTag) {
|
|
993
|
+
const tagName = bodyTag.tagDescription.tag;
|
|
994
|
+
if (this.tagServices.hasOwnProperty(tagName)) {
|
|
995
|
+
return this.tagServices[tagName].bodyTagToHtmlStringConverter(bodyTag);
|
|
996
|
+
}
|
|
997
|
+
return `<mapper-not-found>"${bodyTag.tagDescription.tag}" тег не найден.</mapper-not-found>`;
|
|
753
998
|
}
|
|
754
|
-
static
|
|
755
|
-
let htmls = bodyTags.map(
|
|
756
|
-
if (TextTags.allTextTags.includes(x.tagDescription.tag)) {
|
|
757
|
-
return `<${x.tagDescription.tag} h-align="${x.attributes[TextTagDataConsts.HAlign]}">${x.innerHtml}</${x.tagDescription.tag}>`;
|
|
758
|
-
}
|
|
759
|
-
if (x.tagDescription.tag === ExternalVideoTagDataConsts.TagName) {
|
|
760
|
-
let useResponsiveWrapperAttr = '';
|
|
761
|
-
if (x.attributes[ExternalVideoTagDataConsts.VideoTypeAttrName] === ExternalVideoSupportedTypes.Code) {
|
|
762
|
-
useResponsiveWrapperAttr = `${ExternalVideoTagDataConsts.UseResponsiveWrapperAttrName}="${x.attributes[ExternalVideoTagDataConsts.UseResponsiveWrapperAttrName] || false}"`;
|
|
763
|
-
}
|
|
764
|
-
return `<${x.tagDescription.tag} ${useResponsiveWrapperAttr} type="${x.attributes[ExternalVideoTagDataConsts.VideoTypeAttrName]}" link="${x.attributes[ExternalVideoTagDataConsts.LinkAttrName]}">${x.innerHtml}</${x.tagDescription.tag}>`;
|
|
765
|
-
}
|
|
766
|
-
if (x.tagDescription.tag === "html-raw") {
|
|
767
|
-
return `<${x.tagDescription.tag}>${x.innerHtml}</${x.tagDescription.tag}>`;
|
|
768
|
-
}
|
|
769
|
-
if (x.tagDescription.tag === DownloadButtonTagDataConsts.TagName) {
|
|
770
|
-
return `<${x.tagDescription.tag} title="${x.attributes[DownloadButtonTagDataConsts.TitleAttrName]}" link="${x.attributes[DownloadButtonTagDataConsts.LinkAttrName]}"></${x.tagDescription.tag}>`;
|
|
771
|
-
}
|
|
772
|
-
if (x.tagDescription.tag === ButtonTagDataConsts.TagName) {
|
|
773
|
-
return `<${x.tagDescription.tag} text="${x.attributes[ButtonTagDataConsts.TextAttrName]}" type="${x.attributes[ButtonTagDataConsts.TypeAttrName]}" click="${x.attributes[ButtonTagDataConsts.ClickAttrName]}"></${x.tagDescription.tag}>`;
|
|
774
|
-
}
|
|
775
|
-
if (x.tagDescription.tag === CustomWidgetTagDataConsts.TagName) {
|
|
776
|
-
return `<${x.tagDescription.tag} type="${x.attributes[CustomWidgetTagDataConsts.TypeAttrName]}" data-id="${x.attributes[CustomWidgetTagDataConsts.DataIdAttrName]}" widget-id="${x.attributes[CustomWidgetTagDataConsts.WidgetIdAttrName]}"></${x.tagDescription.tag}>`;
|
|
777
|
-
}
|
|
778
|
-
return BodyTagsExtensions.imageTagToHtml(x);
|
|
779
|
-
});
|
|
999
|
+
static bodyTagsToHtml(bodyTags) {
|
|
1000
|
+
let htmls = bodyTags.map(bodyTag => (BodyTagsExtensions.convertToHtmlString(bodyTag)));
|
|
780
1001
|
let result = "";
|
|
781
1002
|
for (let index = 0; index < htmls.length; index++) {
|
|
782
1003
|
const element = htmls[index];
|
|
@@ -784,17 +1005,6 @@ class BodyTagsExtensions {
|
|
|
784
1005
|
}
|
|
785
1006
|
return result;
|
|
786
1007
|
}
|
|
787
|
-
static imageTagToHtml(imageTag) {
|
|
788
|
-
let fileIdAttr = "";
|
|
789
|
-
let screenMediaRequestAttr = "";
|
|
790
|
-
if (imageTag.attributes.hasOwnProperty(FileImageTagDataConsts.FileIdAttrName) && imageTag.attributes[FileImageTagDataConsts.FileIdAttrName]) {
|
|
791
|
-
fileIdAttr = `${FileImageTagDataConsts.FileIdAttrName}="${imageTag.attributes[FileImageTagDataConsts.FileIdAttrName]}"`;
|
|
792
|
-
}
|
|
793
|
-
if (imageTag.attributes.hasOwnProperty(FileImageTagDataConsts.ScreenMediaRequest) && imageTag.attributes[FileImageTagDataConsts.ScreenMediaRequest]) {
|
|
794
|
-
screenMediaRequestAttr = `${FileImageTagDataConsts.ScreenMediaRequest}="${imageTag.attributes[FileImageTagDataConsts.ScreenMediaRequest]}"`;
|
|
795
|
-
}
|
|
796
|
-
return `<${FileImageTagDataConsts.TagName} ${fileIdAttr} ${screenMediaRequestAttr}></${FileImageTagDataConsts.TagName}>`;
|
|
797
|
-
}
|
|
798
1008
|
static getBodyTags(html, options) {
|
|
799
1009
|
let result = HtmlExtractionMethods.transformHtmlStringToBlocks(html, options);
|
|
800
1010
|
return result.map(x => BodyTagsExtensions.toBodyTag(x));
|
|
@@ -803,102 +1013,8 @@ class BodyTagsExtensions {
|
|
|
803
1013
|
return html.trim().replace('\n\t', '');
|
|
804
1014
|
}
|
|
805
1015
|
static toBodyTag(data) {
|
|
806
|
-
if (
|
|
807
|
-
|
|
808
|
-
return {
|
|
809
|
-
presentOrEdit: true,
|
|
810
|
-
tagDescription: {
|
|
811
|
-
tag: textTagData.textTagName,
|
|
812
|
-
displayValue: BodyTagsExtensions.getDescription(data.type),
|
|
813
|
-
isCustom: false
|
|
814
|
-
},
|
|
815
|
-
attributes: { "h-align": textTagData.horizontalAlignment },
|
|
816
|
-
innerHtml: BodyTagsExtensions.sanitizeInnerHtml(textTagData.html)
|
|
817
|
-
};
|
|
818
|
-
}
|
|
819
|
-
if (data.type === FileImageTagDataConsts.TagName) {
|
|
820
|
-
let fileData = data.data;
|
|
821
|
-
let attrs = {};
|
|
822
|
-
if (fileData.fileId) {
|
|
823
|
-
attrs[FileImageTagDataConsts.FileIdAttrName] = fileData.fileId;
|
|
824
|
-
}
|
|
825
|
-
if (fileData.screenMediaRequest) {
|
|
826
|
-
attrs[FileImageTagDataConsts.ScreenMediaRequest] = fileData.screenMediaRequest;
|
|
827
|
-
}
|
|
828
|
-
return {
|
|
829
|
-
presentOrEdit: true,
|
|
830
|
-
tagDescription: {
|
|
831
|
-
tag: FileImageTagDataConsts.TagName,
|
|
832
|
-
displayValue: BodyTagsExtensions.getDescription(data.type),
|
|
833
|
-
isCustom: false
|
|
834
|
-
},
|
|
835
|
-
attributes: attrs,
|
|
836
|
-
innerHtml: ""
|
|
837
|
-
};
|
|
838
|
-
}
|
|
839
|
-
if (data.type === ExternalVideoTagDataConsts.TagName) {
|
|
840
|
-
let fileData = data.data;
|
|
841
|
-
return {
|
|
842
|
-
presentOrEdit: true,
|
|
843
|
-
tagDescription: {
|
|
844
|
-
tag: data.type,
|
|
845
|
-
displayValue: BodyTagsExtensions.getDescription(data.type),
|
|
846
|
-
isCustom: false
|
|
847
|
-
},
|
|
848
|
-
attributes: fileData,
|
|
849
|
-
innerHtml: ""
|
|
850
|
-
};
|
|
851
|
-
}
|
|
852
|
-
if (data.type === ButtonTagDataConsts.TagName) {
|
|
853
|
-
let fileData = data.data;
|
|
854
|
-
return {
|
|
855
|
-
presentOrEdit: true,
|
|
856
|
-
tagDescription: {
|
|
857
|
-
tag: data.type,
|
|
858
|
-
displayValue: BodyTagsExtensions.getDescription(data.type),
|
|
859
|
-
isCustom: false
|
|
860
|
-
},
|
|
861
|
-
attributes: fileData,
|
|
862
|
-
innerHtml: ""
|
|
863
|
-
};
|
|
864
|
-
}
|
|
865
|
-
if (data.type === DownloadButtonTagDataConsts.TagName) {
|
|
866
|
-
let fileData = data.data;
|
|
867
|
-
return {
|
|
868
|
-
presentOrEdit: true,
|
|
869
|
-
tagDescription: {
|
|
870
|
-
tag: data.type,
|
|
871
|
-
displayValue: BodyTagsExtensions.getDescription(data.type),
|
|
872
|
-
isCustom: false
|
|
873
|
-
},
|
|
874
|
-
attributes: fileData,
|
|
875
|
-
innerHtml: ""
|
|
876
|
-
};
|
|
877
|
-
}
|
|
878
|
-
if (data.type === CustomWidgetTagDataConsts.TagName) {
|
|
879
|
-
let customWidgetTagData = data.data;
|
|
880
|
-
return {
|
|
881
|
-
presentOrEdit: true,
|
|
882
|
-
tagDescription: {
|
|
883
|
-
tag: data.type,
|
|
884
|
-
displayValue: BodyTagsExtensions.getDescription(data.type),
|
|
885
|
-
isCustom: false
|
|
886
|
-
},
|
|
887
|
-
attributes: customWidgetTagData,
|
|
888
|
-
innerHtml: ""
|
|
889
|
-
};
|
|
890
|
-
}
|
|
891
|
-
if (data.type === HtmlRawTagDataConsts.TagName) {
|
|
892
|
-
return {
|
|
893
|
-
presentOrEdit: true,
|
|
894
|
-
tagDescription: {
|
|
895
|
-
tag: HtmlRawTagDataConsts.TagName,
|
|
896
|
-
displayValue: BodyTagsExtensions.getDescription(data.type),
|
|
897
|
-
isCustom: false
|
|
898
|
-
},
|
|
899
|
-
attributes: {},
|
|
900
|
-
innerHtml: BodyTagsExtensions.sanitizeInnerHtml(data.data["innerHTML"])
|
|
901
|
-
};
|
|
1016
|
+
if (this.tagServices.hasOwnProperty(data.type)) {
|
|
1017
|
+
return this.tagServices[data.type].toBodyTag(data);
|
|
902
1018
|
}
|
|
903
1019
|
return {
|
|
904
1020
|
presentOrEdit: true,
|
|
@@ -993,10 +1109,10 @@ class PublicFileUploadService {
|
|
|
993
1109
|
}
|
|
994
1110
|
return this._httpClient.post(endpoint, formData, withProgress ? { reportProgress: true, observe: 'events' } : undefined);
|
|
995
1111
|
}
|
|
996
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
997
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1112
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PublicFileUploadService, deps: [{ token: i1.HttpClient }, { token: 'BASE_URL' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1113
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PublicFileUploadService, providedIn: 'root' }); }
|
|
998
1114
|
}
|
|
999
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PublicFileUploadService, decorators: [{
|
|
1000
1116
|
type: Injectable,
|
|
1001
1117
|
args: [{ providedIn: 'root' }]
|
|
1002
1118
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
|
|
@@ -1024,10 +1140,10 @@ class PrivateFileUploadService {
|
|
|
1024
1140
|
}
|
|
1025
1141
|
return this._httpClient.post(endpoint, formData, withProgress ? { reportProgress: true, observe: 'events' } : undefined);
|
|
1026
1142
|
}
|
|
1027
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1028
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1143
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PrivateFileUploadService, deps: [{ token: i1.HttpClient }, { token: 'BASE_URL' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1144
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PrivateFileUploadService, providedIn: 'root' }); }
|
|
1029
1145
|
}
|
|
1030
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1146
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PrivateFileUploadService, decorators: [{
|
|
1031
1147
|
type: Injectable,
|
|
1032
1148
|
args: [{ providedIn: 'root' }]
|
|
1033
1149
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
|
|
@@ -1055,10 +1171,10 @@ class CrocoHtmlFileOptionsService {
|
|
|
1055
1171
|
return this.defaultOptions;
|
|
1056
1172
|
}
|
|
1057
1173
|
}
|
|
1058
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1059
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1174
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CrocoHtmlFileOptionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1175
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CrocoHtmlFileOptionsService, providedIn: 'root' }); }
|
|
1060
1176
|
}
|
|
1061
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1177
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CrocoHtmlFileOptionsService, decorators: [{
|
|
1062
1178
|
type: Injectable,
|
|
1063
1179
|
args: [{
|
|
1064
1180
|
providedIn: 'root'
|
|
@@ -1100,10 +1216,10 @@ class UploadFilesBtnComponent {
|
|
|
1100
1216
|
clickFileInput() {
|
|
1101
1217
|
this.fileInput.nativeElement.click();
|
|
1102
1218
|
}
|
|
1103
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1104
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1219
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UploadFilesBtnComponent, deps: [{ token: PublicFileUploadService }, { token: PrivateFileUploadService }, { token: CrocoHtmlFileOptionsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1220
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: UploadFilesBtnComponent, isStandalone: true, selector: "croco-app-upload-files-btn", inputs: { extAccepts: "extAccepts", isMultiple: "isMultiple", btnText: "btnText", hidden: "hidden" }, outputs: { postFilesStarted: "postFilesStarted", onPublicFilesUploaded: "onPublicFilesUploaded", onPrivateFilesUploaded: "onPrivateFilesUploaded" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["filesInput"], descendants: true }], ngImport: i0, template: "<button [hidden]=\"hidden\" mat-raised-button color=\"primary\" (click)=\"filesInput.click()\">{{btnText}}</button>\n<input [hidden]=\"true\" [accept]=\"extAccepts\" [multiple]=\"isMultiple\" type=\"file\" #filesInput (change)=\"handleFileInput($event.target.files)\" />", styles: [""], dependencies: [{ kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
|
|
1105
1221
|
}
|
|
1106
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1222
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UploadFilesBtnComponent, decorators: [{
|
|
1107
1223
|
type: Component,
|
|
1108
1224
|
args: [{ selector: 'croco-app-upload-files-btn', standalone: true, imports: [MatButton], template: "<button [hidden]=\"hidden\" mat-raised-button color=\"primary\" (click)=\"filesInput.click()\">{{btnText}}</button>\n<input [hidden]=\"true\" [accept]=\"extAccepts\" [multiple]=\"isMultiple\" type=\"file\" #filesInput (change)=\"handleFileInput($event.target.files)\" />" }]
|
|
1109
1225
|
}], ctorParameters: () => [{ type: PublicFileUploadService }, { type: PrivateFileUploadService }, { type: CrocoHtmlFileOptionsService }], propDecorators: { fileInput: [{
|
|
@@ -1160,10 +1276,10 @@ class AddFilesBtnComponent {
|
|
|
1160
1276
|
handleClick() {
|
|
1161
1277
|
this.fakeBtn.clickFileInput();
|
|
1162
1278
|
}
|
|
1163
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1164
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1279
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AddFilesBtnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1280
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: AddFilesBtnComponent, isStandalone: true, selector: "croco-html-add-files-btn", outputs: { postFilesStarted: "postFilesStarted", filesTagsReady: "filesTagsReady" }, viewQueries: [{ propertyName: "fakeBtn", first: true, predicate: ["fakeBtn"], descendants: true }], ngImport: i0, template: "<div [hidden]=\"true\">\n <croco-app-upload-files-btn #fakeBtn\n (onPrivateFilesUploaded)=\"filesUploadedPrivateHandler($event)\"\n (onPublicFilesUploaded)=\"filesUploadedPublicHandler($event)\"\n [btnText]=\"'\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F'\"\n (postFilesStarted)=\"postFilesStartedEventHandler($event)\" [extAccepts]=\"'image/*'\"></croco-app-upload-files-btn>\n</div>\n\n<div>\n <button class=\"w-100\" (click)=\"handleClick()\" mat-stroked-button>\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F</button>\n</div>\n", dependencies: [{ kind: "component", type: UploadFilesBtnComponent, selector: "croco-app-upload-files-btn", inputs: ["extAccepts", "isMultiple", "btnText", "hidden"], outputs: ["postFilesStarted", "onPublicFilesUploaded", "onPrivateFilesUploaded"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
|
|
1165
1281
|
}
|
|
1166
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1282
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AddFilesBtnComponent, decorators: [{
|
|
1167
1283
|
type: Component,
|
|
1168
1284
|
args: [{ selector: 'croco-html-add-files-btn', standalone: true, imports: [UploadFilesBtnComponent, MatButton], template: "<div [hidden]=\"true\">\n <croco-app-upload-files-btn #fakeBtn\n (onPrivateFilesUploaded)=\"filesUploadedPrivateHandler($event)\"\n (onPublicFilesUploaded)=\"filesUploadedPublicHandler($event)\"\n [btnText]=\"'\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F'\"\n (postFilesStarted)=\"postFilesStartedEventHandler($event)\" [extAccepts]=\"'image/*'\"></croco-app-upload-files-btn>\n</div>\n\n<div>\n <button class=\"w-100\" (click)=\"handleClick()\" mat-stroked-button>\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F</button>\n</div>\n" }]
|
|
1169
1285
|
}], ctorParameters: () => [], propDecorators: { postFilesStarted: [{
|
|
@@ -1182,10 +1298,10 @@ class YoutubeVideoPlayerComponent {
|
|
|
1182
1298
|
constructor(sanitizer) {
|
|
1183
1299
|
this.sanitizer = sanitizer;
|
|
1184
1300
|
}
|
|
1185
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1186
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1301
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: YoutubeVideoPlayerComponent, deps: [{ token: i1$1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1302
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: YoutubeVideoPlayerComponent, isStandalone: true, selector: "youtube-video-player", inputs: { link: "link" }, ngImport: i0, template: "<div class=\"code-view video-player use-responsive\">\n <iframe\n [src]=\"safeUrl\"\n title=\"YouTube video player\"\n frameborder=\"0\"\n allow=\"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen></iframe>\n</div>\n", styles: [".code-view.video-player{margin:0 auto;max-width:640px;width:100%;height:360px}.code-view.use-responsive ::ng-deep iframe{width:100%;height:100%}@media screen and (max-width: 768px){.code-view.use-responsive{height:300px}}@media screen and (max-width: 575px){.code-view.use-responsive{height:250px}}@media screen and (max-width: 480px){.code-view.use-responsive{height:200px}}@media screen and (max-width: 380px){.code-view.use-responsive{height:180px}}\n"] }); }
|
|
1187
1303
|
}
|
|
1188
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1304
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: YoutubeVideoPlayerComponent, decorators: [{
|
|
1189
1305
|
type: Component,
|
|
1190
1306
|
args: [{ selector: 'youtube-video-player', standalone: true, imports: [], template: "<div class=\"code-view video-player use-responsive\">\n <iframe\n [src]=\"safeUrl\"\n title=\"YouTube video player\"\n frameborder=\"0\"\n allow=\"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen></iframe>\n</div>\n", styles: [".code-view.video-player{margin:0 auto;max-width:640px;width:100%;height:360px}.code-view.use-responsive ::ng-deep iframe{width:100%;height:100%}@media screen and (max-width: 768px){.code-view.use-responsive{height:300px}}@media screen and (max-width: 575px){.code-view.use-responsive{height:250px}}@media screen and (max-width: 480px){.code-view.use-responsive{height:200px}}@media screen and (max-width: 380px){.code-view.use-responsive{height:180px}}\n"] }]
|
|
1191
1307
|
}], ctorParameters: () => [{ type: i1$1.DomSanitizer }], propDecorators: { link: [{
|
|
@@ -1199,10 +1315,10 @@ class VkVideoPlayerComponent {
|
|
|
1199
1315
|
constructor(sanitizer) {
|
|
1200
1316
|
this.sanitizer = sanitizer;
|
|
1201
1317
|
}
|
|
1202
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1203
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1318
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: VkVideoPlayerComponent, deps: [{ token: i1$1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1319
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: VkVideoPlayerComponent, isStandalone: true, selector: "vk-video-player", inputs: { link: "link" }, ngImport: i0, template: "<div class=\"code-view video-player use-responsive\">\n <iframe\n [src]=\"safeUrl\"\n allow=\"autoplay; encrypted-media; fullscreen; picture-in-picture;\"\n frameborder=\"0\"\n allowfullscreen></iframe>\n</div>\n", styles: [".code-view.video-player{margin:0 auto;max-width:640px;width:100%;height:360px}.code-view.use-responsive ::ng-deep iframe{width:100%;height:100%}@media screen and (max-width: 768px){.code-view.use-responsive{height:300px}}@media screen and (max-width: 575px){.code-view.use-responsive{height:250px}}@media screen and (max-width: 480px){.code-view.use-responsive{height:200px}}@media screen and (max-width: 380px){.code-view.use-responsive{height:180px}}\n"] }); }
|
|
1204
1320
|
}
|
|
1205
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1321
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: VkVideoPlayerComponent, decorators: [{
|
|
1206
1322
|
type: Component,
|
|
1207
1323
|
args: [{ selector: 'vk-video-player', standalone: true, imports: [], template: "<div class=\"code-view video-player use-responsive\">\n <iframe\n [src]=\"safeUrl\"\n allow=\"autoplay; encrypted-media; fullscreen; picture-in-picture;\"\n frameborder=\"0\"\n allowfullscreen></iframe>\n</div>\n", styles: [".code-view.video-player{margin:0 auto;max-width:640px;width:100%;height:360px}.code-view.use-responsive ::ng-deep iframe{width:100%;height:100%}@media screen and (max-width: 768px){.code-view.use-responsive{height:300px}}@media screen and (max-width: 575px){.code-view.use-responsive{height:250px}}@media screen and (max-width: 480px){.code-view.use-responsive{height:200px}}@media screen and (max-width: 380px){.code-view.use-responsive{height:180px}}\n"] }]
|
|
1208
1324
|
}], ctorParameters: () => [{ type: i1$1.DomSanitizer }], propDecorators: { link: [{
|
|
@@ -1223,10 +1339,10 @@ class CodeVideoComponent {
|
|
|
1223
1339
|
this.safeHtml = this._sanitizer.bypassSecurityTrustHtml(this.code);
|
|
1224
1340
|
}
|
|
1225
1341
|
}
|
|
1226
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1227
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1342
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CodeVideoComponent, deps: [{ token: i1$1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1343
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: CodeVideoComponent, isStandalone: true, selector: "code-video", inputs: { code: "code", _useResponsiveWrapper: "_useResponsiveWrapper" }, usesOnChanges: true, ngImport: i0, template: "@if (code) {\n <div class=\"code-view video-player\" [class.use-responsive]=\"useResponsiveWrapper\" [innerHTML]=\"safeHtml\"></div>\n}\n", styles: [".code-view.video-player{margin:0 auto;max-width:640px;width:100%;height:360px}.code-view.use-responsive ::ng-deep iframe{width:100%;height:100%}@media screen and (max-width: 768px){.code-view.use-responsive{height:300px}}@media screen and (max-width: 575px){.code-view.use-responsive{height:250px}}@media screen and (max-width: 480px){.code-view.use-responsive{height:200px}}@media screen and (max-width: 380px){.code-view.use-responsive{height:180px}}\n"] }); }
|
|
1228
1344
|
}
|
|
1229
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1345
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CodeVideoComponent, decorators: [{
|
|
1230
1346
|
type: Component,
|
|
1231
1347
|
args: [{ selector: 'code-video', standalone: true, imports: [], template: "@if (code) {\n <div class=\"code-view video-player\" [class.use-responsive]=\"useResponsiveWrapper\" [innerHTML]=\"safeHtml\"></div>\n}\n", styles: [".code-view.video-player{margin:0 auto;max-width:640px;width:100%;height:360px}.code-view.use-responsive ::ng-deep iframe{width:100%;height:100%}@media screen and (max-width: 768px){.code-view.use-responsive{height:300px}}@media screen and (max-width: 575px){.code-view.use-responsive{height:250px}}@media screen and (max-width: 480px){.code-view.use-responsive{height:200px}}@media screen and (max-width: 380px){.code-view.use-responsive{height:180px}}\n"] }]
|
|
1232
1348
|
}], ctorParameters: () => [{ type: i1$1.DomSanitizer }], propDecorators: { code: [{
|
|
@@ -1258,10 +1374,10 @@ class XmlTagExternalVideoComponent {
|
|
|
1258
1374
|
};
|
|
1259
1375
|
}
|
|
1260
1376
|
;
|
|
1261
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1262
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1377
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: XmlTagExternalVideoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1378
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: XmlTagExternalVideoComponent, isStandalone: true, selector: "croco-html-xml-tag-external-video", inputs: { data: "data", tagData: "tagData" }, ngImport: i0, template: "@switch (_block.type) {\n @case (ExternalVideoSupportedTypes.VkVideo) {\n <vk-video-player [link]=\"_block.link\"></vk-video-player>\n }\n @case (ExternalVideoSupportedTypes.Youtube) {\n <youtube-video-player [link]=\"_block.link\"></youtube-video-player>\n }\n @case (ExternalVideoSupportedTypes.Code) {\n <code-video [code]=\"_block.innerHtml\" [_useResponsiveWrapper]=\"_block.useResponsiveWrapper\"></code-video>\n }\n}\n", styles: ["@media only screen and (min-width: 768px){.y-video{display:block;width:640px;height:360px;margin:0 auto}}@media only screen and (max-width: 959px){.y-video{display:block;width:100%;height:315px}}\n"], dependencies: [{ kind: "component", type: VkVideoPlayerComponent, selector: "vk-video-player", inputs: ["link"] }, { kind: "component", type: YoutubeVideoPlayerComponent, selector: "youtube-video-player", inputs: ["link"] }, { kind: "component", type: CodeVideoComponent, selector: "code-video", inputs: ["code", "_useResponsiveWrapper"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1263
1379
|
}
|
|
1264
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1380
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: XmlTagExternalVideoComponent, decorators: [{
|
|
1265
1381
|
type: Component,
|
|
1266
1382
|
args: [{ selector: 'croco-html-xml-tag-external-video', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [VkVideoPlayerComponent, YoutubeVideoPlayerComponent, CodeVideoComponent], template: "@switch (_block.type) {\n @case (ExternalVideoSupportedTypes.VkVideo) {\n <vk-video-player [link]=\"_block.link\"></vk-video-player>\n }\n @case (ExternalVideoSupportedTypes.Youtube) {\n <youtube-video-player [link]=\"_block.link\"></youtube-video-player>\n }\n @case (ExternalVideoSupportedTypes.Code) {\n <code-video [code]=\"_block.innerHtml\" [_useResponsiveWrapper]=\"_block.useResponsiveWrapper\"></code-video>\n }\n}\n", styles: ["@media only screen and (min-width: 768px){.y-video{display:block;width:640px;height:360px;margin:0 auto}}@media only screen and (max-width: 959px){.y-video{display:block;width:100%;height:315px}}\n"] }]
|
|
1267
1383
|
}], propDecorators: { data: [{
|
|
@@ -1271,96 +1387,51 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
1271
1387
|
}] } });
|
|
1272
1388
|
|
|
1273
1389
|
class XmlTagHeaderInnerTextViewComponent {
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
}
|
|
1277
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: XmlTagHeaderInnerTextViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1278
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: XmlTagHeaderInnerTextViewComponent, isStandalone: true, selector: "croco-html-xml-tag-header-inner-text-view", inputs: { item: "item" }, ngImport: i0, template: "@if (item.type === 'h1') {\n <h1\n [innerHtml]=\"item.data.html\">\n </h1>\n}\n@if (item.type === 'h2') {\n <h2\n [innerHtml]=\"item.data.html\">\n </h2>\n}\n@if (item.type === 'h3') {\n <h3\n [innerHtml]=\"item.data.html\">\n </h3>\n}\n@if (item.type === 'h4') {\n <h4\n [innerHtml]=\"item.data.html\">\n </h4>\n}\n@if (item.type === 'h5') {\n <h5\n [innerHtml]=\"item.data.html\">\n </h5>\n}\n@if (item.type === 'h6') {\n <h6\n [innerHtml]=\"item.data.html\">\n </h6>\n}", styles: [""] }); }
|
|
1390
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: XmlTagHeaderInnerTextViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1391
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: XmlTagHeaderInnerTextViewComponent, isStandalone: true, selector: "croco-html-xml-tag-header-inner-text-view", inputs: { item: "item" }, ngImport: i0, template: "@if (item.type === 'h1') {\n <h1\n [innerHtml]=\"item.data.html\">\n </h1>\n}\n@if (item.type === 'h2') {\n <h2\n [innerHtml]=\"item.data.html\">\n </h2>\n}\n@if (item.type === 'h3') {\n <h3\n [innerHtml]=\"item.data.html\">\n </h3>\n}\n@if (item.type === 'h4') {\n <h4\n [innerHtml]=\"item.data.html\">\n </h4>\n}\n@if (item.type === 'h5') {\n <h5\n [innerHtml]=\"item.data.html\">\n </h5>\n}\n@if (item.type === 'h6') {\n <h6\n [innerHtml]=\"item.data.html\">\n </h6>\n}" }); }
|
|
1279
1392
|
}
|
|
1280
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1393
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: XmlTagHeaderInnerTextViewComponent, decorators: [{
|
|
1281
1394
|
type: Component,
|
|
1282
1395
|
args: [{ selector: 'croco-html-xml-tag-header-inner-text-view', standalone: true, template: "@if (item.type === 'h1') {\n <h1\n [innerHtml]=\"item.data.html\">\n </h1>\n}\n@if (item.type === 'h2') {\n <h2\n [innerHtml]=\"item.data.html\">\n </h2>\n}\n@if (item.type === 'h3') {\n <h3\n [innerHtml]=\"item.data.html\">\n </h3>\n}\n@if (item.type === 'h4') {\n <h4\n [innerHtml]=\"item.data.html\">\n </h4>\n}\n@if (item.type === 'h5') {\n <h5\n [innerHtml]=\"item.data.html\">\n </h5>\n}\n@if (item.type === 'h6') {\n <h6\n [innerHtml]=\"item.data.html\">\n </h6>\n}" }]
|
|
1283
|
-
}],
|
|
1284
|
-
type: Input
|
|
1396
|
+
}], propDecorators: { item: [{
|
|
1397
|
+
type: Input,
|
|
1398
|
+
args: [{ required: true }]
|
|
1285
1399
|
}] } });
|
|
1286
1400
|
|
|
1287
1401
|
class XmlTagHeaderTextViewComponent {
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
}
|
|
1291
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: XmlTagHeaderTextViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1292
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: XmlTagHeaderTextViewComponent, isStandalone: true, selector: "croco-html-xml-tag-header-text-view", inputs: { item: "item" }, ngImport: i0, template: "@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'left') {\n<div style=\"text-align: left;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <croco-html-xml-tag-header-inner-text-view [item]=\"item\">\n </croco-html-xml-tag-header-inner-text-view>\n }\n</div>\n}\n\n@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'right') {\n<div style=\"text-align: right;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <croco-html-xml-tag-header-inner-text-view [item]=\"item\">\n </croco-html-xml-tag-header-inner-text-view>\n }\n</div>\n}\n\n@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'center') {\n<div style=\"text-align: center;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <croco-html-xml-tag-header-inner-text-view [item]=\"item\">\n </croco-html-xml-tag-header-inner-text-view>\n }\n</div>\n}\n\n@if (!item.data.validationResult.isSucceeded) {\n<div class=\"red\" style=\"margin-top: 10px;\">\n <h4>\u0414\u043E\u043F\u0443\u0449\u0435\u043D\u0430 \u043E\u0448\u0438\u0431\u043A\u0430 \u0432 \u0442\u0435\u0433\u0435 <text></h4>\n <span>\n {{item.data.validationResult.message}}\n </span>\n</div>\n}", styles: [""], dependencies: [{ kind: "component", type: XmlTagHeaderInnerTextViewComponent, selector: "croco-html-xml-tag-header-inner-text-view", inputs: ["item"] }] }); }
|
|
1402
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: XmlTagHeaderTextViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1403
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: XmlTagHeaderTextViewComponent, isStandalone: true, selector: "croco-html-xml-tag-header-text-view", inputs: { item: "item" }, ngImport: i0, template: "@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'left') {\n<div style=\"text-align: left;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <croco-html-xml-tag-header-inner-text-view [item]=\"item\">\n </croco-html-xml-tag-header-inner-text-view>\n }\n</div>\n}\n\n@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'right') {\n<div style=\"text-align: right;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <croco-html-xml-tag-header-inner-text-view [item]=\"item\">\n </croco-html-xml-tag-header-inner-text-view>\n }\n</div>\n}\n\n@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'center') {\n<div style=\"text-align: center;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <croco-html-xml-tag-header-inner-text-view [item]=\"item\">\n </croco-html-xml-tag-header-inner-text-view>\n }\n</div>\n}\n\n@if (!item.data.validationResult.isSucceeded) {\n<div class=\"red\" style=\"margin-top: 10px;\">\n <h4>\u0414\u043E\u043F\u0443\u0449\u0435\u043D\u0430 \u043E\u0448\u0438\u0431\u043A\u0430 \u0432 \u0442\u0435\u0433\u0435 <text></h4>\n <span>\n {{item.data.validationResult.message}}\n </span>\n</div>\n}", dependencies: [{ kind: "component", type: XmlTagHeaderInnerTextViewComponent, selector: "croco-html-xml-tag-header-inner-text-view", inputs: ["item"] }] }); }
|
|
1293
1404
|
}
|
|
1294
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1405
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: XmlTagHeaderTextViewComponent, decorators: [{
|
|
1295
1406
|
type: Component,
|
|
1296
1407
|
args: [{ selector: 'croco-html-xml-tag-header-text-view', standalone: true, imports: [XmlTagHeaderInnerTextViewComponent], template: "@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'left') {\n<div style=\"text-align: left;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <croco-html-xml-tag-header-inner-text-view [item]=\"item\">\n </croco-html-xml-tag-header-inner-text-view>\n }\n</div>\n}\n\n@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'right') {\n<div style=\"text-align: right;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <croco-html-xml-tag-header-inner-text-view [item]=\"item\">\n </croco-html-xml-tag-header-inner-text-view>\n }\n</div>\n}\n\n@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'center') {\n<div style=\"text-align: center;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <croco-html-xml-tag-header-inner-text-view [item]=\"item\">\n </croco-html-xml-tag-header-inner-text-view>\n }\n</div>\n}\n\n@if (!item.data.validationResult.isSucceeded) {\n<div class=\"red\" style=\"margin-top: 10px;\">\n <h4>\u0414\u043E\u043F\u0443\u0449\u0435\u043D\u0430 \u043E\u0448\u0438\u0431\u043A\u0430 \u0432 \u0442\u0435\u0433\u0435 <text></h4>\n <span>\n {{item.data.validationResult.message}}\n </span>\n</div>\n}" }]
|
|
1297
|
-
}],
|
|
1298
|
-
type: Input
|
|
1408
|
+
}], propDecorators: { item: [{
|
|
1409
|
+
type: Input,
|
|
1410
|
+
args: [{ required: true }]
|
|
1299
1411
|
}] } });
|
|
1300
1412
|
|
|
1301
1413
|
class XmlTagHtmlViewComponent {
|
|
1302
1414
|
constructor() {
|
|
1303
1415
|
this.html = "";
|
|
1304
1416
|
}
|
|
1305
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1306
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1417
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: XmlTagHtmlViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1418
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: XmlTagHtmlViewComponent, isStandalone: true, selector: "croco-html-xml-tag-html-view", inputs: { html: "html" }, ngImport: i0, template: "<div class=\"col\" [innerHTML]=\"html\">\n</div>" }); }
|
|
1307
1419
|
}
|
|
1308
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1420
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: XmlTagHtmlViewComponent, decorators: [{
|
|
1309
1421
|
type: Component,
|
|
1310
1422
|
args: [{ selector: 'croco-html-xml-tag-html-view', standalone: true, template: "<div class=\"col\" [innerHTML]=\"html\">\n</div>" }]
|
|
1311
1423
|
}], ctorParameters: () => [], propDecorators: { html: [{
|
|
1312
1424
|
type: Input
|
|
1313
1425
|
}] } });
|
|
1314
1426
|
|
|
1315
|
-
class RichTextToHtmlPipe {
|
|
1316
|
-
transform(value) {
|
|
1317
|
-
let result = "";
|
|
1318
|
-
for (let i = 0; i < value.data.children.length; i++) {
|
|
1319
|
-
const child = value.data.children[i];
|
|
1320
|
-
if (child.type === "text-block") {
|
|
1321
|
-
result += `<span>${child.data.text}</span>`;
|
|
1322
|
-
}
|
|
1323
|
-
else if (child.type === "line-break") {
|
|
1324
|
-
result += "</br>";
|
|
1325
|
-
}
|
|
1326
|
-
}
|
|
1327
|
-
return result;
|
|
1328
|
-
}
|
|
1329
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: RichTextToHtmlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1330
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.3", ngImport: i0, type: RichTextToHtmlPipe, isStandalone: true, name: "richTextToHtml" }); }
|
|
1331
|
-
}
|
|
1332
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: RichTextToHtmlPipe, decorators: [{
|
|
1333
|
-
type: Pipe,
|
|
1334
|
-
args: [{
|
|
1335
|
-
name: 'richTextToHtml',
|
|
1336
|
-
standalone: true
|
|
1337
|
-
}]
|
|
1338
|
-
}] });
|
|
1339
|
-
|
|
1340
|
-
class XmlTagRichTextViewComponent {
|
|
1341
|
-
constructor() {
|
|
1342
|
-
this.richTextData = null;
|
|
1343
|
-
}
|
|
1344
|
-
ngOnInit() {
|
|
1345
|
-
}
|
|
1346
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: XmlTagRichTextViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1347
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: XmlTagRichTextViewComponent, isStandalone: true, selector: "croco-html-xml-tag-rich-text-view", inputs: { richTextData: "richTextData" }, ngImport: i0, template: "@if (richTextData) {\n <div [innerHtml]=\"richTextData | richTextToHtml\">\n </div>\n}", dependencies: [{ kind: "pipe", type: RichTextToHtmlPipe, name: "richTextToHtml" }] }); }
|
|
1348
|
-
}
|
|
1349
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: XmlTagRichTextViewComponent, decorators: [{
|
|
1350
|
-
type: Component,
|
|
1351
|
-
args: [{ selector: 'croco-html-xml-tag-rich-text-view', standalone: true, imports: [RichTextToHtmlPipe], template: "@if (richTextData) {\n <div [innerHtml]=\"richTextData | richTextToHtml\">\n </div>\n}" }]
|
|
1352
|
-
}], ctorParameters: () => [], propDecorators: { richTextData: [{
|
|
1353
|
-
type: Input
|
|
1354
|
-
}] } });
|
|
1355
|
-
|
|
1356
1427
|
class XmlTagTableViewComponent {
|
|
1357
1428
|
constructor() {
|
|
1358
1429
|
this.displayedColumns = [];
|
|
1359
1430
|
}
|
|
1360
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1361
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1431
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: XmlTagTableViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1432
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: XmlTagTableViewComponent, isStandalone: true, selector: "croco-html-xml-tag-table-view", inputs: { displayedColumns: "displayedColumns", data: "data" }, ngImport: i0, template: "<table mat-table [dataSource]=\"data\" class=\"mat-elevation-z8 w-100 example-container\">\n @for (column of displayedColumns; track column) {\n <ng-container [matColumnDef]=\"column\">\n <th mat-header-cell *matHeaderCellDef> {{column}} </th>\n <td mat-cell *matCellDef=\"let element\"> {{element[column]}} </td>\n </ng-container>\n }\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n</table>", dependencies: [{ kind: "component", type: MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "component", type: MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "directive", type: MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "component", type: MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }] }); }
|
|
1362
1433
|
}
|
|
1363
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1434
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: XmlTagTableViewComponent, decorators: [{
|
|
1364
1435
|
type: Component,
|
|
1365
1436
|
args: [{ selector: 'croco-html-xml-tag-table-view', standalone: true, imports: [MatTable, MatColumnDef, MatHeaderCellDef, MatHeaderCell, MatCellDef, MatCell, MatHeaderRowDef, MatHeaderRow, MatRowDef, MatRow], template: "<table mat-table [dataSource]=\"data\" class=\"mat-elevation-z8 w-100 example-container\">\n @for (column of displayedColumns; track column) {\n <ng-container [matColumnDef]=\"column\">\n <th mat-header-cell *matHeaderCellDef> {{column}} </th>\n <td mat-cell *matCellDef=\"let element\"> {{element[column]}} </td>\n </ng-container>\n }\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n</table>" }]
|
|
1366
1437
|
}], propDecorators: { displayedColumns: [{
|
|
@@ -1370,17 +1441,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
1370
1441
|
}] } });
|
|
1371
1442
|
|
|
1372
1443
|
class XmlTagTextViewComponent {
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
}
|
|
1376
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: XmlTagTextViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1377
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: XmlTagTextViewComponent, isStandalone: true, selector: "croco-html-xml-tag-text-view", inputs: { item: "item" }, ngImport: i0, template: "@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'left') {\n <div style=\"text-align: left;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <span [innerHtml]=\"item.data.html\"></span>\n }\n </div>\n}\n\n@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'right') {\n <div style=\"text-align: right;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <span [innerHtml]=\"item.data.html\"></span>\n }\n </div>\n}\n\n@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'center') {\n <div style=\"text-align: center;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <span [innerHtml]=\"item.data.html\"></span>\n }\n </div>\n}\n\n@if (!item.data.validationResult.isSucceeded) {\n <div class=\"red\" style=\"margin-top: 10px;\" >\n <h4>\u0414\u043E\u043F\u0443\u0449\u0435\u043D\u0430 \u043E\u0448\u0438\u0431\u043A\u0430 \u0432 \u0442\u0435\u0433\u0435 <text></h4>\n <span>\n {{item.data.validationResult.message}}\n </span>\n </div>\n}", styles: [""] }); }
|
|
1444
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: XmlTagTextViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1445
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: XmlTagTextViewComponent, isStandalone: true, selector: "croco-html-xml-tag-text-view", inputs: { item: "item" }, ngImport: i0, template: "@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'left') {\n <div style=\"text-align: left;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <span [innerHtml]=\"item.data.html\"></span>\n }\n </div>\n}\n\n@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'right') {\n <div style=\"text-align: right;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <span [innerHtml]=\"item.data.html\"></span>\n }\n </div>\n}\n\n@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'center') {\n <div style=\"text-align: center;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <span [innerHtml]=\"item.data.html\"></span>\n }\n </div>\n}\n\n@if (!item.data.validationResult.isSucceeded) {\n <div class=\"red\" style=\"margin-top: 10px;\" >\n <h4>\u0414\u043E\u043F\u0443\u0449\u0435\u043D\u0430 \u043E\u0448\u0438\u0431\u043A\u0430 \u0432 \u0442\u0435\u0433\u0435 <text></h4>\n <span>\n {{item.data.validationResult.message}}\n </span>\n </div>\n}" }); }
|
|
1378
1446
|
}
|
|
1379
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1447
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: XmlTagTextViewComponent, decorators: [{
|
|
1380
1448
|
type: Component,
|
|
1381
1449
|
args: [{ selector: 'croco-html-xml-tag-text-view', standalone: true, template: "@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'left') {\n <div style=\"text-align: left;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <span [innerHtml]=\"item.data.html\"></span>\n }\n </div>\n}\n\n@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'right') {\n <div style=\"text-align: right;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <span [innerHtml]=\"item.data.html\"></span>\n }\n </div>\n}\n\n@if (item.data.validationResult.isSucceeded && item.data.horizontalAlignment === 'center') {\n <div style=\"text-align: center;\">\n @if (item.data.html.length === 0 || !item.data.html) {\n <span> </span>\n }\n @if (item.data.html.length > 0) {\n <span [innerHtml]=\"item.data.html\"></span>\n }\n </div>\n}\n\n@if (!item.data.validationResult.isSucceeded) {\n <div class=\"red\" style=\"margin-top: 10px;\" >\n <h4>\u0414\u043E\u043F\u0443\u0449\u0435\u043D\u0430 \u043E\u0448\u0438\u0431\u043A\u0430 \u0432 \u0442\u0435\u0433\u0435 <text></h4>\n <span>\n {{item.data.validationResult.message}}\n </span>\n </div>\n}" }]
|
|
1382
|
-
}],
|
|
1383
|
-
type: Input
|
|
1450
|
+
}], propDecorators: { item: [{
|
|
1451
|
+
type: Input,
|
|
1452
|
+
args: [{ required: true }]
|
|
1384
1453
|
}] } });
|
|
1385
1454
|
|
|
1386
1455
|
class BlobCreateService {
|
|
@@ -1390,10 +1459,10 @@ class BlobCreateService {
|
|
|
1390
1459
|
getBlob(link) {
|
|
1391
1460
|
return this._http.get(link, { responseType: 'blob' });
|
|
1392
1461
|
}
|
|
1393
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1394
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1462
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BlobCreateService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1463
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BlobCreateService, providedIn: 'root' }); }
|
|
1395
1464
|
}
|
|
1396
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1465
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BlobCreateService, decorators: [{
|
|
1397
1466
|
type: Injectable,
|
|
1398
1467
|
args: [{
|
|
1399
1468
|
providedIn: 'root'
|
|
@@ -1430,10 +1499,10 @@ class XmlTagDownloadFileButtonComponent {
|
|
|
1430
1499
|
URL.revokeObjectURL(objectUrl);
|
|
1431
1500
|
});
|
|
1432
1501
|
}
|
|
1433
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1434
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1502
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: XmlTagDownloadFileButtonComponent, deps: [{ token: BlobCreateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1503
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: XmlTagDownloadFileButtonComponent, isStandalone: true, selector: "croco-html-xml-tag-download-file-button", inputs: { data: "data", tagData: "tagData" }, ngImport: i0, template: "<span\n class=\"download-file-button\"\n (click)=\"downloadFile()\">\n <mat-icon> save</mat-icon>\n {{this._block.title}}\n</span>\n", styles: [".download-file-button{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;transition:.2s ease-in-out}.download-file-button mat-icon{margin-right:5px}.download-file-button:hover{opacity:.7}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
1435
1504
|
}
|
|
1436
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1505
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: XmlTagDownloadFileButtonComponent, decorators: [{
|
|
1437
1506
|
type: Component,
|
|
1438
1507
|
args: [{ selector: 'croco-html-xml-tag-download-file-button', standalone: true, imports: [
|
|
1439
1508
|
MatIcon
|
|
@@ -1448,10 +1517,10 @@ class ErrorBannerComponent {
|
|
|
1448
1517
|
constructor() {
|
|
1449
1518
|
this.message = "";
|
|
1450
1519
|
}
|
|
1451
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1452
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1520
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ErrorBannerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1521
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: ErrorBannerComponent, isStandalone: true, selector: "croco-html-error-banner", inputs: { message: "message" }, ngImport: i0, template: "@if (message) {\n <mat-card class=\"red\">\n <mat-card-content>\n <p>\n {{ message }}\n </p>\n </mat-card-content>\n <mat-card-actions>\n <button mat-button (click)=\"message = null\">\u0417\u0410\u041A\u0420\u042B\u0422\u042C</button>\n </mat-card-actions>\n </mat-card>\n }\n ", styles: [".red{background-color:#c94444;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i1$2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i1$2.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i1$2.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
|
|
1453
1522
|
}
|
|
1454
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1523
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ErrorBannerComponent, decorators: [{
|
|
1455
1524
|
type: Component,
|
|
1456
1525
|
args: [{ selector: 'croco-html-error-banner', standalone: true, imports: [
|
|
1457
1526
|
MatCardModule,
|
|
@@ -1475,10 +1544,10 @@ class ScreenWidthService {
|
|
|
1475
1544
|
getScreenWidth() {
|
|
1476
1545
|
return this.screenWidth.asObservable();
|
|
1477
1546
|
}
|
|
1478
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1479
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1547
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ScreenWidthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1548
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ScreenWidthService, providedIn: 'root' }); }
|
|
1480
1549
|
}
|
|
1481
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1550
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ScreenWidthService, decorators: [{
|
|
1482
1551
|
type: Injectable,
|
|
1483
1552
|
args: [{
|
|
1484
1553
|
providedIn: 'root'
|
|
@@ -1520,10 +1589,10 @@ class FileImageTagViewComponent {
|
|
|
1520
1589
|
this.unsubscribe.next();
|
|
1521
1590
|
this.unsubscribe.complete();
|
|
1522
1591
|
}
|
|
1523
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1524
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1592
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FileImageTagViewComponent, deps: [{ token: ScreenWidthService }, { token: CrocoHtmlOptionsToken }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1593
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: FileImageTagViewComponent, isStandalone: true, selector: "croco-html-file-image-tag-view", inputs: { item: "item" }, ngImport: i0, template: "<img\n [ngStyle]=\"{ 'max-height': imageMaxHeight ? imageMaxHeight + 'px' : '100%', 'max-width': imageMaxWidth ? imageMaxWidth + 'px' : '100%', }\"\n class=\"mx-auto d-block img-fluid\"\n [src]=\"imageSrc\"\n alt=\"\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u043D\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043D\u043E\"\n/>\n", dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
|
|
1525
1594
|
}
|
|
1526
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1595
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FileImageTagViewComponent, decorators: [{
|
|
1527
1596
|
type: Component,
|
|
1528
1597
|
args: [{ selector: 'croco-html-file-image-tag-view', imports: [
|
|
1529
1598
|
NgStyle
|
|
@@ -1546,10 +1615,10 @@ class HtmlRawViewComponent {
|
|
|
1546
1615
|
this.safeHtml = this._sanitizer.bypassSecurityTrustHtml(this.rawHtml);
|
|
1547
1616
|
}
|
|
1548
1617
|
}
|
|
1549
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1550
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1618
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: HtmlRawViewComponent, deps: [{ token: i1$1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1619
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: HtmlRawViewComponent, isStandalone: true, selector: "croco-html-raw-view", inputs: { rawHtml: "rawHtml" }, usesOnChanges: true, ngImport: i0, template: "@if (rawHtml) {\n <div [innerHTML]=\"safeHtml\"></div>\n}\n" }); }
|
|
1551
1620
|
}
|
|
1552
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1621
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: HtmlRawViewComponent, decorators: [{
|
|
1553
1622
|
type: Component,
|
|
1554
1623
|
args: [{ selector: 'croco-html-raw-view', standalone: true, template: "@if (rawHtml) {\n <div [innerHTML]=\"safeHtml\"></div>\n}\n" }]
|
|
1555
1624
|
}], ctorParameters: () => [{ type: i1$1.DomSanitizer }], propDecorators: { rawHtml: [{
|
|
@@ -1566,10 +1635,10 @@ class HtmlViewController {
|
|
|
1566
1635
|
onScriptCalled(script) {
|
|
1567
1636
|
this.scriptCalled.next(script);
|
|
1568
1637
|
}
|
|
1569
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1570
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1638
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: HtmlViewController, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1639
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: HtmlViewController, providedIn: 'root' }); }
|
|
1571
1640
|
}
|
|
1572
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1641
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: HtmlViewController, decorators: [{
|
|
1573
1642
|
type: Injectable,
|
|
1574
1643
|
args: [{
|
|
1575
1644
|
providedIn: 'root'
|
|
@@ -1600,10 +1669,10 @@ class XmlTagButtonComponent {
|
|
|
1600
1669
|
clickHandler() {
|
|
1601
1670
|
this._controller.onScriptCalled(this._block.click);
|
|
1602
1671
|
}
|
|
1603
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1604
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1672
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: XmlTagButtonComponent, deps: [{ token: HtmlViewController }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1673
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: XmlTagButtonComponent, isStandalone: true, selector: "croco-html-xml-tag-button", inputs: { data: "data", tagData: "tagData" }, ngImport: i0, template: "<button mat-stroked-button color=\"primary\" (click)=\"clickHandler()\">{{_block.text}}</button>\n", styles: [""], dependencies: [{ kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
|
|
1605
1674
|
}
|
|
1606
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1675
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: XmlTagButtonComponent, decorators: [{
|
|
1607
1676
|
type: Component,
|
|
1608
1677
|
args: [{ selector: 'croco-html-xml-tag-button', standalone: true, imports: [
|
|
1609
1678
|
MatButton
|
|
@@ -1644,10 +1713,10 @@ class XmlTagCustomWidgetComponent {
|
|
|
1644
1713
|
ngOnDestroy() {
|
|
1645
1714
|
this.dynamicContainerRef.destroy();
|
|
1646
1715
|
}
|
|
1647
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1648
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1716
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: XmlTagCustomWidgetComponent, deps: [{ token: CrocoHtmlOptionsToken }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1717
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: XmlTagCustomWidgetComponent, isStandalone: true, selector: "croco-html-xml-tag-custom-widget", inputs: { tagData: "tagData" }, viewQueries: [{ propertyName: "viewContainerRef", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-container #container>\n @if (!useDynamicComponent) {\n <div [matTooltip]=\"tooltipData\">\n \u041A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0439 \u0432\u0438\u0434\u0436\u0435\u0442. \u0442\u0438\u043F \u0432\u0438\u0434\u0436\u0435\u0442\u0430: {{ tagData?.type }}\n </div>\n }\n</ng-container>\n\n", styles: [":host div{background-color:#a3ded5;padding:5px 10px;display:inline-block;border-radius:10px}\n"], dependencies: [{ kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
|
|
1649
1718
|
}
|
|
1650
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1719
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: XmlTagCustomWidgetComponent, decorators: [{
|
|
1651
1720
|
type: Component,
|
|
1652
1721
|
args: [{ selector: 'croco-html-xml-tag-custom-widget', imports: [MatTooltip], standalone: true, template: "<ng-container #container>\n @if (!useDynamicComponent) {\n <div [matTooltip]=\"tooltipData\">\n \u041A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0439 \u0432\u0438\u0434\u0436\u0435\u0442. \u0442\u0438\u043F \u0432\u0438\u0434\u0436\u0435\u0442\u0430: {{ tagData?.type }}\n </div>\n }\n</ng-container>\n\n", styles: [":host div{background-color:#a3ded5;padding:5px 10px;display:inline-block;border-radius:10px}\n"] }]
|
|
1653
1722
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
@@ -1667,10 +1736,10 @@ class XmlTagViewComponent {
|
|
|
1667
1736
|
isHeaderTextTag(item) {
|
|
1668
1737
|
return TextTags.headerTextTags.includes(item.type);
|
|
1669
1738
|
}
|
|
1670
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1671
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1739
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: XmlTagViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1740
|
+
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.type === '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.type === '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.type === '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.type === '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.type === '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.type === 'rich-text') {\n <div>\n <croco-html-xml-tag-text-view></croco-html-xml-tag-text-view>\n </div>\n }\n\n @if (item.type === '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.type === '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.type === 'button') {\n <div>\n <croco-html-xml-tag-button [data]=\"item\"></croco-html-xml-tag-button>\n </div>\n }\n @if (item.type === '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 </div>\n }\n</div>\n", 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"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1672
1741
|
}
|
|
1673
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1742
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: XmlTagViewComponent, decorators: [{
|
|
1674
1743
|
type: Component,
|
|
1675
1744
|
args: [{ selector: 'croco-html-xml-tag-view', encapsulation: ViewEncapsulation.None, standalone: true, imports: [
|
|
1676
1745
|
XmlTagTextViewComponent,
|
|
@@ -1742,10 +1811,10 @@ class ExternalVideoEditorComponent {
|
|
|
1742
1811
|
const src = elem.getAttribute("src");
|
|
1743
1812
|
this.tagData.link = src;
|
|
1744
1813
|
}
|
|
1745
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1746
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1814
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ExternalVideoEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1815
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: ExternalVideoEditorComponent, isStandalone: true, selector: "croco-html-external-video-editor", inputs: { tag: "tag" }, outputs: { onTagUpdated: "onTagUpdated" }, ngImport: i0, template: "@if (tag.presentOrEdit) {\n <div>\n <div>\n @switch (tagData.type) {\n @case (ExternalVideoSupportedTypes.VkVideo) {\n {{linkText}}: {{tagData.link}}\n }\n @case (ExternalVideoSupportedTypes.Youtube) {\n {{linkText}}: {{tagData.link}}\n }\n @case (ExternalVideoSupportedTypes.Code) {\n <div>\n \u0412\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043C\u044B\u0439 \u043A\u043E\u0434 \u043F\u043B\u0435\u0435\u0440\u0430.\n </div>\n }\n }\n </div>\n <div style=\"height: 10px;\"></div>\n <croco-html-xml-tag-external-video [tagData]=\"tagData\"></croco-html-xml-tag-external-video>\n </div>\n}\n\n@if (!tag.presentOrEdit) {\n @if(tagData.type !== ExternalVideoSupportedTypes.Code) {\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\n {{linkText}}\n </mat-label>\n <input matInput placeholder=\"{{linkText}}\"\n autocomplete=\"off\"\n [(ngModel)]=\"tagData.link\"\n (ngModelChange)=\"linkChanged()\">\n </mat-form-field>\n </div>\n } @else {\n <div>\n <mat-label>\n {{linkText}}\n </mat-label>\n <mat-form-field class=\"w-100\">\n <mat-label>\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430</mat-label>\n <textarea\n #autosize=\"cdkTextareaAutosize\"\n matInput\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"5\"\n placeholder=\"\u0422\u0435\u043A\u0441\u0442\"\n #textArea\n [(ngModel)]=\"tagData.innerHtml\"\n (ngModelChange)=\"linkChanged()\"\n ></textarea>\n </mat-form-field>\n\n <mat-checkbox\n [checked]=\"tagData.useResponsiveWrapper\"\n (change)=\"onCheck($event.checked)\"\n >\n \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0430\u0434\u0430\u043F\u0442\u0438\u0432?\n </mat-checkbox>\n </div>\n }\n}\n", styles: [".code-view.video-player{margin:0 auto;max-width:640px;width:100%;height:360px}.code-view.use-responsive ::ng-deep iframe{width:100%;height:100%}@media screen and (max-width: 768px){.code-view.use-responsive{height:300px}}@media screen and (max-width: 575px){.code-view.use-responsive{height:250px}}@media screen and (max-width: 480px){.code-view.use-responsive{height:200px}}@media screen and (max-width: 380px){.code-view.use-responsive{height:180px}}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: i3.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: XmlTagExternalVideoComponent, selector: "croco-html-xml-tag-external-video", inputs: ["data", "tagData"] }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }] }); }
|
|
1747
1816
|
}
|
|
1748
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1817
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ExternalVideoEditorComponent, decorators: [{
|
|
1749
1818
|
type: Component,
|
|
1750
1819
|
args: [{ selector: 'croco-html-external-video-editor', standalone: true, imports: [
|
|
1751
1820
|
MatFormFieldModule,
|
|
@@ -1773,10 +1842,10 @@ class HtmlRawEditorComponent {
|
|
|
1773
1842
|
onSafeHtmlChange() {
|
|
1774
1843
|
this.safeHtml = this._sanitizer.bypassSecurityTrustHtml(this.tag.innerHtml);
|
|
1775
1844
|
}
|
|
1776
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1777
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1845
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: HtmlRawEditorComponent, deps: [{ token: i1$1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1846
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: HtmlRawEditorComponent, isStandalone: true, selector: "croco-html-html-raw-editor", inputs: { tag: "tag" }, outputs: { onTagUpdated: "onTagUpdated" }, usesOnChanges: true, ngImport: i0, template: "@if (tag.presentOrEdit) {\n <div [innerHTML]=\"safeHtml\">\n </div>\n}\n@if (!tag.presentOrEdit) {\n <div>\n <div style=\"height: 10px;\">\n </div>\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0430 \u0442\u0435\u0433\u0430\n </mat-label>\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n placeholder=\"\u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0430 \u0442\u0435\u0433\u0430\"\n [(ngModel)]=\"tag.innerHtml\"\n (ngModelChange)=\"onSafeHtmlChange()\"\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n}\n\n", styles: [".code-view.video-player{margin:0 auto;max-width:640px;width:100%;height:360px}.code-view.use-responsive ::ng-deep iframe{width:100%;height:100%}@media screen and (max-width: 768px){.code-view.use-responsive{height:300px}}@media screen and (max-width: 575px){.code-view.use-responsive{height:250px}}@media screen and (max-width: 480px){.code-view.use-responsive{height:200px}}@media screen and (max-width: 380px){.code-view.use-responsive{height:180px}}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
1778
1847
|
}
|
|
1779
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1848
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: HtmlRawEditorComponent, decorators: [{
|
|
1780
1849
|
type: Component,
|
|
1781
1850
|
args: [{ selector: 'croco-html-html-raw-editor', standalone: true, imports: [MatFormField, MatLabel, MatInput, CdkTextareaAutosize, FormsModule], template: "@if (tag.presentOrEdit) {\n <div [innerHTML]=\"safeHtml\">\n </div>\n}\n@if (!tag.presentOrEdit) {\n <div>\n <div style=\"height: 10px;\">\n </div>\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0430 \u0442\u0435\u0433\u0430\n </mat-label>\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n placeholder=\"\u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0430 \u0442\u0435\u0433\u0430\"\n [(ngModel)]=\"tag.innerHtml\"\n (ngModelChange)=\"onSafeHtmlChange()\"\n ></textarea>\n </mat-form-field>\n </div>\n </div>\n}\n\n", styles: [".code-view.video-player{margin:0 auto;max-width:640px;width:100%;height:360px}.code-view.use-responsive ::ng-deep iframe{width:100%;height:100%}@media screen and (max-width: 768px){.code-view.use-responsive{height:300px}}@media screen and (max-width: 575px){.code-view.use-responsive{height:250px}}@media screen and (max-width: 480px){.code-view.use-responsive{height:200px}}@media screen and (max-width: 380px){.code-view.use-responsive{height:180px}}\n"] }]
|
|
1782
1851
|
}], ctorParameters: () => [{ type: i1$1.DomSanitizer }], propDecorators: { tag: [{
|
|
@@ -1804,10 +1873,10 @@ class PublicFilesQueryService {
|
|
|
1804
1873
|
search(model) {
|
|
1805
1874
|
return this._httpClient.post(`${this._baseControllerUrl}/GetFiles`, model);
|
|
1806
1875
|
}
|
|
1807
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1808
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1876
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PublicFilesQueryService, deps: [{ token: i1.HttpClient }, { token: 'BASE_URL' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1877
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PublicFilesQueryService, providedIn: 'root' }); }
|
|
1809
1878
|
}
|
|
1810
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1879
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PublicFilesQueryService, decorators: [{
|
|
1811
1880
|
type: Injectable,
|
|
1812
1881
|
args: [{
|
|
1813
1882
|
providedIn: 'root'
|
|
@@ -1825,10 +1894,10 @@ class PrivateFilesQueryService {
|
|
|
1825
1894
|
search(model) {
|
|
1826
1895
|
return this._httpClient.post(`${this._baseControllerUrl}/search`, model);
|
|
1827
1896
|
}
|
|
1828
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1829
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1897
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PrivateFilesQueryService, deps: [{ token: i1.HttpClient }, { token: 'BASE_URL' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1898
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PrivateFilesQueryService, providedIn: 'root' }); }
|
|
1830
1899
|
}
|
|
1831
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1900
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PrivateFilesQueryService, decorators: [{
|
|
1832
1901
|
type: Injectable,
|
|
1833
1902
|
args: [{
|
|
1834
1903
|
providedIn: 'root'
|
|
@@ -1894,10 +1963,10 @@ class FileIdSelectComponent {
|
|
|
1894
1963
|
ngOnChanges(changes) {
|
|
1895
1964
|
this.loadFiles();
|
|
1896
1965
|
}
|
|
1897
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1898
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1966
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FileIdSelectComponent, deps: [{ token: PublicFilesQueryService }, { token: PrivateFilesQueryService }, { token: CrocoHtmlFileOptionsService }, { token: CrocoHtmlOptionsToken }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1967
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: FileIdSelectComponent, isStandalone: true, selector: "croco-html-file-id-select", inputs: { labelText: "labelText", fileId: "fileId" }, outputs: { fileId: "fileId", onFileIdChanged: "onFileIdChanged" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"file-id\">\n <div class=\"form-group\">\n <label for=\"fileName\">{{labelText}}</label>\n <ng-select [(ngModel)]=\"fileId\" (ngModelChange)=\"onModelChanged($event)\" [items]=\"files\" #select\n bindLabel=\"fileName\" (search)=\"onSearchChanged($event)\" [loading]=\"loading\" [loadingText]=\"'\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u044E \u0444\u0430\u0439\u043B\u044B'\"\n dropdownPosition=\"auto\" [bindValue]=\"'fileId'\" labelForId=\"fileName\" placeholder=\"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0444\u0430\u0439\u043B\"\n [virtualScroll]=\"true\">\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\" let-search=\"searchTerm\">\n <div class=\"file-id__container\">\n <div class=\"file-id__text-container\">\n <div>\n <span class=\"h5\">\u0424\u0430\u0439\u043B: </span>\n <span class=\"h5\" [ngOptionHighlight]=\"search\"><b>{{item.fileName}}</b></span>\n </div>\n <div>\n <small>\n <span>\n \u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0444\u0430\u0439\u043B\u0430: <b>{{item.fileId }}</b>\n </span>\n </small>\n </div>\n </div>\n <div class=\"file-id__img\">\n <img class=\"mx-auto d-block img-fluid\" [src]=\"getSrc(item.fileId)\" />\n </div>\n </div>\n\n </ng-template>\n </ng-select>\n </div>\n</div>\n\n<div>\n \u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0444\u0430\u0439\u043B\u0430: {{fileId}}\n</div>\n", styles: [".file-id__container{display:flex;align-items:center;justify-content:space-between;gap:10px}@media (max-width: 768px){.file-id__container{align-items:unset;flex-direction:column}}.file-id__text-container{display:flex;flex-direction:column}.file-id__text-container b{word-break:break-word;white-space:normal}@media (max-width: 768px){.file-id__text-container b{font-size:14px}}@media (max-width: 768px){.file-id__text-container span{font-size:14px}}.file-id__img img{width:100px;height:100px}\n"], dependencies: [{ kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i4.NgSelectComponent, selector: "ng-select", inputs: ["ariaLabelDropdown", "bindLabel", "bindValue", "ariaLabel", "markFirst", "placeholder", "fixedPlaceholder", "notFoundText", "typeToSearchText", "preventToggleOnRightClick", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "tabFocusOnClearButton", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "ngClass", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick", "keyDownFn"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i4.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
1899
1968
|
}
|
|
1900
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1969
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FileIdSelectComponent, decorators: [{
|
|
1901
1970
|
type: Component,
|
|
1902
1971
|
args: [{ selector: 'croco-html-file-id-select', standalone: true, imports: [NgSelectModule, FormsModule], template: "<div class=\"file-id\">\n <div class=\"form-group\">\n <label for=\"fileName\">{{labelText}}</label>\n <ng-select [(ngModel)]=\"fileId\" (ngModelChange)=\"onModelChanged($event)\" [items]=\"files\" #select\n bindLabel=\"fileName\" (search)=\"onSearchChanged($event)\" [loading]=\"loading\" [loadingText]=\"'\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u044E \u0444\u0430\u0439\u043B\u044B'\"\n dropdownPosition=\"auto\" [bindValue]=\"'fileId'\" labelForId=\"fileName\" placeholder=\"\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0444\u0430\u0439\u043B\"\n [virtualScroll]=\"true\">\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\" let-search=\"searchTerm\">\n <div class=\"file-id__container\">\n <div class=\"file-id__text-container\">\n <div>\n <span class=\"h5\">\u0424\u0430\u0439\u043B: </span>\n <span class=\"h5\" [ngOptionHighlight]=\"search\"><b>{{item.fileName}}</b></span>\n </div>\n <div>\n <small>\n <span>\n \u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0444\u0430\u0439\u043B\u0430: <b>{{item.fileId }}</b>\n </span>\n </small>\n </div>\n </div>\n <div class=\"file-id__img\">\n <img class=\"mx-auto d-block img-fluid\" [src]=\"getSrc(item.fileId)\" />\n </div>\n </div>\n\n </ng-template>\n </ng-select>\n </div>\n</div>\n\n<div>\n \u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0444\u0430\u0439\u043B\u0430: {{fileId}}\n</div>\n", styles: [".file-id__container{display:flex;align-items:center;justify-content:space-between;gap:10px}@media (max-width: 768px){.file-id__container{align-items:unset;flex-direction:column}}.file-id__text-container{display:flex;flex-direction:column}.file-id__text-container b{word-break:break-word;white-space:normal}@media (max-width: 768px){.file-id__text-container b{font-size:14px}}@media (max-width: 768px){.file-id__text-container span{font-size:14px}}.file-id__img img{width:100px;height:100px}\n"] }]
|
|
1903
1972
|
}], ctorParameters: () => [{ type: PublicFilesQueryService }, { type: PrivateFilesQueryService }, { type: CrocoHtmlFileOptionsService }, { type: undefined, decorators: [{
|
|
@@ -1978,10 +2047,10 @@ class ImageEditorComponent {
|
|
|
1978
2047
|
this.unsubscribe.next();
|
|
1979
2048
|
this.unsubscribe.complete();
|
|
1980
2049
|
}
|
|
1981
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1982
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: ImageEditorComponent, isStandalone: true, selector: "croco-html-image-editor", inputs: { tag: "tag" }, outputs: { onTagUpdated: "onTagUpdated" }, ngImport: i0, template: "<div>\n <div style=\"height: 10px;\">\n </div>\n\n @if (hasImageError) {\n <div class=\"error-block\">\n \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043F\u043E \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u043E\u043C\u0443 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440\u0443, \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0444\u0430\u0439\u043B \u043D\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043B\u0438 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043D\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435.\n </div>\n }\n\n @if (hasFileId() && !hasImageError) {\n <div>\n <img\n [ngStyle]=\"{ 'max-height': imageMaxHeight ? imageMaxHeight + 'px' : '100%', 'max-width': imageMaxWidth ? imageMaxWidth + 'px' : '100%', }\"\n class=\"mx-auto d-block img-fluid\" [src]=\"getSrc()\" (error)=\"onErrorHandler()\" alt=\"photo\"/>\n </div>\n }\n\n @if (!hasFileId()) {\n <div>\n <h5>[\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u043D\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043E]</h5>\n </div>\n }\n\n @if(!tag.presentOrEdit) {\n <mat-slide-toggle style=\"padding: 10px 0\" [(ngModel)]=\"isShowMediaRequest\">\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043C\u0435\u0434\u0438\u0430 \u0437\u0430\u043F\u0440\u043E\u0441\u044B</mat-slide-toggle>\n }\n\n @if(isShowMediaRequest) {\n <div style=\"display: flex; flex-direction: column; gap: 20px\">\n <div class=\"media-request__header\">\n <span>\u041C\u0435\u0434\u0438\u0430 \u0437\u0430\u043F\u0440\u043E\u0441\u044B:</span>\n @if (!tag.presentOrEdit) {\n <button (click)=\"addNewMediaRequest()\" class=\"w-30\" mat-icon-button color=\"primary\">\n <mat-icon>add</mat-icon>\n </button>\n }\n </div>\n @for (request of requests; track $index) {\n <div class=\"media-request__container\">\n @if (tag.presentOrEdit) {\n <div style=\"display: flex; flex-direction: column; gap: 5px\">\n <span class=\"w-100\">\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430: {{request.minScreenWidth}}</span>\n <span class=\"w-100\">\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430: {{request.maxScreenWidth}}</span>\n <span class=\"w-100\">\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0432\u044B\u0441\u043E\u0442\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F: {{request.maxImageHeight}}</span>\n <span class=\"w-100\">\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F: {{request.maxImageWidth}}</span>\n </div>\n }\n\n @if (!tag.presentOrEdit) {\n <div style=\"width: 100%\">\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430\n </mat-label>\n <input matInput placeholder=\"\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0433\u0440\u0430\u043D\u0438\u0446\u0430 \u0448\u0438\u0440\u0438\u043D\u044B\"\n autocomplete=\"off\"\n [(ngModel)]=\"request.minScreenWidth\"\n (ngModelChange)=\"requestChanged()\">\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430\n </mat-label>\n <input matInput placeholder=\"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0433\u0440\u0430\u043D\u0438\u0446\u0430 \u0448\u0438\u0440\u0438\u043D\u044B\"\n autocomplete=\"off\"\n [(ngModel)]=\"request.maxScreenWidth\"\n (ngModelChange)=\"requestChanged()\">\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0432\u044B\u0441\u043E\u0442\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F\n </mat-label>\n <input matInput placeholder=\"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0432\u044B\u0441\u043E\u0442\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F\"\n autocomplete=\"off\"\n [(ngModel)]=\"request.maxImageHeight\"\n (ngModelChange)=\"requestChanged()\">\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F\n </mat-label>\n <input matInput placeholder=\"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F\"\n autocomplete=\"off\"\n [(ngModel)]=\"request.maxImageWidth\"\n (ngModelChange)=\"requestChanged()\">\n </mat-form-field>\n </div>\n\n <button (click)=\"deleteMediaRequest($index)\" class=\"w-30\" mat-icon-button color=\"warn\">\n <mat-icon>delete</mat-icon>\n </button>\n }\n </div>\n }\n </div>\n }\n</div>\n\n@if (!tag.presentOrEdit) {\n <div>\n <div style=\"height: 10px;\"></div>\n <div style=\"overflow-x:auto;\">\n <mat-button-toggle-group [(ngModel)]=\"searchOrEdit\">\n <mat-button-toggle value=\"search\">\n \u0418\u0441\u043A\u0430\u0442\u044C \u0444\u0430\u0439\u043B <mat-icon>search</mat-icon>\n </mat-button-toggle>\n <mat-button-toggle value=\"edit\">\n \u0423\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u043E \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440\u0443 <mat-icon>settings</mat-icon>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <div style=\"height: 10px;\"></div>\n <div [hidden]=\"searchOrEdit !== 'search'\">\n <croco-html-file-id-select\n [labelText]=\"'\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0444\u0430\u0439\u043B'\"\n [(fileId)]=\"fileId\"\n (onFileIdChanged)=\"onFileIdChanged($event)\">\n </croco-html-file-id-select>\n </div>\n <div [hidden]=\"searchOrEdit !== 'edit'\">\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0444\u0430\u0439\u043B\u0430\n </mat-label>\n <input matInput placeholder=\"\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0444\u0430\u0439\u043B\u0430\" new-autocomplete=\"off\" autocomplete=\"off\"\n [(ngModel)]=\"fileId\"\n (ngModelChange)=\"onFileIdChanged($event)\">\n </mat-form-field>\n </div>\n </div>\n </div>\n}\n", styles: [".error-block{background-color:#f32323;color:#fff;text-align:center;border-radius:10px;padding:10px}.media-request__header{align-items:center;display:flex;width:100%;justify-content:space-between}.media-request__container{display:flex;align-items:center;border-bottom:1px solid rgba(128,128,128,.7);padding-bottom:10px}@media screen and (max-width: 768px){mat-button-toggle-group{display:flex;flex-direction:column}}\n"], dependencies: [{ kind: "directive", type: MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: FileIdSelectComponent, selector: "croco-html-file-id-select", inputs: ["labelText", "fileId"], outputs: ["fileId", "onFileIdChanged"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }] }); }
|
|
2050
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ImageEditorComponent, deps: [{ token: CrocoHtmlOptionsToken }, { token: ScreenWidthService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2051
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: ImageEditorComponent, isStandalone: true, selector: "croco-html-image-editor", inputs: { tag: "tag" }, outputs: { onTagUpdated: "onTagUpdated" }, ngImport: i0, template: "<div>\n <div style=\"height: 10px;\">\n </div>\n\n @if (hasImageError) {\n <div class=\"error-block\">\n \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E \u043F\u043E \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u043E\u043C\u0443 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440\u0443, \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0444\u0430\u0439\u043B \u043D\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043B\u0438 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043D\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435.\n </div>\n }\n\n @if (hasFileId() && !hasImageError) {\n <div>\n <img\n [ngStyle]=\"{ 'max-height': imageMaxHeight ? imageMaxHeight + 'px' : '100%', 'max-width': imageMaxWidth ? imageMaxWidth + 'px' : '100%', }\"\n class=\"mx-auto d-block img-fluid\" [src]=\"getSrc()\" (error)=\"onErrorHandler()\" alt=\"photo\"/>\n </div>\n }\n\n @if (!hasFileId()) {\n <div>\n <h5>[\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u043D\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u043E]</h5>\n </div>\n }\n\n @if(!tag.presentOrEdit) {\n <mat-slide-toggle style=\"padding: 10px 0\" [(ngModel)]=\"isShowMediaRequest\">\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u043C\u0435\u0434\u0438\u0430 \u0437\u0430\u043F\u0440\u043E\u0441\u044B</mat-slide-toggle>\n }\n\n @if(isShowMediaRequest) {\n <div style=\"display: flex; flex-direction: column; gap: 20px\">\n <div class=\"media-request__header\">\n <span>\u041C\u0435\u0434\u0438\u0430 \u0437\u0430\u043F\u0440\u043E\u0441\u044B:</span>\n @if (!tag.presentOrEdit) {\n <button (click)=\"addNewMediaRequest()\" class=\"w-30\" mat-icon-button color=\"primary\">\n <mat-icon>add</mat-icon>\n </button>\n }\n </div>\n @for (request of requests; track $index) {\n <div class=\"media-request__container\">\n @if (tag.presentOrEdit) {\n <div style=\"display: flex; flex-direction: column; gap: 5px\">\n <span class=\"w-100\">\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430: {{request.minScreenWidth}}</span>\n <span class=\"w-100\">\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430: {{request.maxScreenWidth}}</span>\n <span class=\"w-100\">\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0432\u044B\u0441\u043E\u0442\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F: {{request.maxImageHeight}}</span>\n <span class=\"w-100\">\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F: {{request.maxImageWidth}}</span>\n </div>\n }\n\n @if (!tag.presentOrEdit) {\n <div style=\"width: 100%\">\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430\n </mat-label>\n <input matInput placeholder=\"\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0433\u0440\u0430\u043D\u0438\u0446\u0430 \u0448\u0438\u0440\u0438\u043D\u044B\"\n autocomplete=\"off\"\n [(ngModel)]=\"request.minScreenWidth\"\n (ngModelChange)=\"requestChanged()\">\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430\n </mat-label>\n <input matInput placeholder=\"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0433\u0440\u0430\u043D\u0438\u0446\u0430 \u0448\u0438\u0440\u0438\u043D\u044B\"\n autocomplete=\"off\"\n [(ngModel)]=\"request.maxScreenWidth\"\n (ngModelChange)=\"requestChanged()\">\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0432\u044B\u0441\u043E\u0442\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F\n </mat-label>\n <input matInput placeholder=\"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0432\u044B\u0441\u043E\u0442\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F\"\n autocomplete=\"off\"\n [(ngModel)]=\"request.maxImageHeight\"\n (ngModelChange)=\"requestChanged()\">\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F\n </mat-label>\n <input matInput placeholder=\"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0448\u0438\u0440\u0438\u043D\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F\"\n autocomplete=\"off\"\n [(ngModel)]=\"request.maxImageWidth\"\n (ngModelChange)=\"requestChanged()\">\n </mat-form-field>\n </div>\n\n <button (click)=\"deleteMediaRequest($index)\" class=\"w-30\" mat-icon-button color=\"warn\">\n <mat-icon>delete</mat-icon>\n </button>\n }\n </div>\n }\n </div>\n }\n</div>\n\n@if (!tag.presentOrEdit) {\n <div>\n <div style=\"height: 10px;\"></div>\n <div style=\"overflow-x:auto;\">\n <mat-button-toggle-group [(ngModel)]=\"searchOrEdit\">\n <mat-button-toggle value=\"search\">\n \u0418\u0441\u043A\u0430\u0442\u044C \u0444\u0430\u0439\u043B <mat-icon>search</mat-icon>\n </mat-button-toggle>\n <mat-button-toggle value=\"edit\">\n \u0423\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u043E \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440\u0443 <mat-icon>settings</mat-icon>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <div style=\"height: 10px;\"></div>\n <div [hidden]=\"searchOrEdit !== 'search'\">\n <croco-html-file-id-select\n [labelText]=\"'\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0444\u0430\u0439\u043B'\"\n [(fileId)]=\"fileId\"\n (onFileIdChanged)=\"onFileIdChanged($event)\">\n </croco-html-file-id-select>\n </div>\n <div [hidden]=\"searchOrEdit !== 'edit'\">\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0444\u0430\u0439\u043B\u0430\n </mat-label>\n <input matInput placeholder=\"\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0444\u0430\u0439\u043B\u0430\" new-autocomplete=\"off\" autocomplete=\"off\"\n [(ngModel)]=\"fileId\"\n (ngModelChange)=\"onFileIdChanged($event)\">\n </mat-form-field>\n </div>\n </div>\n </div>\n}\n", styles: [".error-block{background-color:#f32323;color:#fff;text-align:center;border-radius:10px;padding:10px}.media-request__header{align-items:center;display:flex;width:100%;justify-content:space-between}.media-request__container{display:flex;align-items:center;border-bottom:1px solid rgba(128,128,128,.7);padding-bottom:10px}@media screen and (max-width: 768px){mat-button-toggle-group{display:flex;flex-direction:column}}\n"], dependencies: [{ kind: "directive", type: MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: FileIdSelectComponent, selector: "croco-html-file-id-select", inputs: ["labelText", "fileId"], outputs: ["fileId", "onFileIdChanged"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }] }); }
|
|
1983
2052
|
}
|
|
1984
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2053
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ImageEditorComponent, decorators: [{
|
|
1985
2054
|
type: Component,
|
|
1986
2055
|
args: [{ selector: 'croco-html-image-editor', standalone: true, imports: [
|
|
1987
2056
|
MatButtonToggleGroup,
|
|
@@ -2029,6 +2098,12 @@ class DefaultTags {
|
|
|
2029
2098
|
}
|
|
2030
2099
|
}
|
|
2031
2100
|
|
|
2101
|
+
const AlignmentsData = [
|
|
2102
|
+
{ value: TextAlignment.Left, text: 'Слева' },
|
|
2103
|
+
{ value: TextAlignment.Center, text: 'По центру' },
|
|
2104
|
+
{ value: TextAlignment.Right, text: 'Справа' },
|
|
2105
|
+
];
|
|
2106
|
+
|
|
2032
2107
|
class DownloadFileButtonEditorComponent {
|
|
2033
2108
|
constructor() {
|
|
2034
2109
|
this.onTagUpdated = new EventEmitter();
|
|
@@ -2044,10 +2119,10 @@ class DownloadFileButtonEditorComponent {
|
|
|
2044
2119
|
linkChanged() {
|
|
2045
2120
|
this.tag.attributes = this.tagData;
|
|
2046
2121
|
}
|
|
2047
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2048
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
2122
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DownloadFileButtonEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2123
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: DownloadFileButtonEditorComponent, isStandalone: true, selector: "croco-html-download-file-button-editor", inputs: { tag: "tag" }, outputs: { onTagUpdated: "onTagUpdated" }, ngImport: i0, template: "@if (tag.presentOrEdit) {\n <div>\n <div>\n \u0421\u0441\u044B\u043B\u043A\u0430 \u0434\u043B\u044F \u0441\u043A\u0430\u0447\u0438\u0432\u0430\u043D\u0438\u044F: {{tagData.link}}\n </div>\n <div style=\"height: 10px;\"></div>\n <div>\n \u0422\u0435\u043A\u0441\u0442 \u043A\u043D\u043E\u043F\u043A\u0438: {{tagData.title}}\n </div>\n <div style=\"height: 20px;\"></div>\n <croco-html-xml-tag-download-file-button [tagData]=\"tagData\"></croco-html-xml-tag-download-file-button>\n </div>\n}\n\n@if (!tag.presentOrEdit) {\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u0421\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 \u0441\u043A\u0430\u0447\u0438\u0432\u0430\u043D\u0438\u0435\n </mat-label>\n <input matInput placeholder=\"\u0421\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 \u0441\u043A\u0430\u0447\u0438\u0432\u0430\u043D\u0438\u0435\"\n autocomplete=\"off\"\n [(ngModel)]=\"tagData.link\"\n (ngModelChange)=\"linkChanged()\">\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u0422\u0435\u043A\u0441\u0442 \u043D\u0430 \u043A\u043D\u043E\u043F\u043A\u0435\n </mat-label>\n <input matInput placeholder=\"\u0422\u0435\u043A\u0441\u0442 \u043D\u0430 \u043A\u043D\u043E\u043F\u043A\u0435\"\n autocomplete=\"off\"\n [(ngModel)]=\"tagData.title\"\n (ngModelChange)=\"linkChanged()\">\n </mat-form-field>\n </div>\n}\n", dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: XmlTagDownloadFileButtonComponent, selector: "croco-html-xml-tag-download-file-button", inputs: ["data", "tagData"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i1$3.MatLabel, selector: "mat-label" }] }); }
|
|
2049
2124
|
}
|
|
2050
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2125
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DownloadFileButtonEditorComponent, decorators: [{
|
|
2051
2126
|
type: Component,
|
|
2052
2127
|
args: [{ selector: 'croco-html-download-file-button-editor', standalone: true, imports: [
|
|
2053
2128
|
MatFormField,
|
|
@@ -2067,18 +2142,16 @@ class TextEditorComponent {
|
|
|
2067
2142
|
constructor() {
|
|
2068
2143
|
this.onTagUpdated = new EventEmitter();
|
|
2069
2144
|
}
|
|
2070
|
-
ngOnInit() {
|
|
2071
|
-
}
|
|
2072
2145
|
getInnerHtml() {
|
|
2073
2146
|
return `<${this.tag.tagDescription.tag}>${this.tag.innerHtml}<${this.tag.tagDescription.tag}/>`;
|
|
2074
2147
|
}
|
|
2075
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2076
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
2148
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TextEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2149
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: TextEditorComponent, isStandalone: true, selector: "croco-html-text-editor", inputs: { tag: "tag" }, outputs: { onTagUpdated: "onTagUpdated" }, ngImport: i0, template: "@if (tag.presentOrEdit) {\n <div>\n <div style=\"height: 10px;\">\n </div>\n @if (tag.attributes['h-align'] === 'left') {\n <div style=\"text-align: left;\" [innerHtml]=\"getInnerHtml()\">\n </div>\n }\n @if (tag.attributes['h-align'] === 'right') {\n <div style=\"text-align: right;\" [innerHtml]=\"getInnerHtml()\">\n </div>\n }\n @if (tag.attributes['h-align'] === 'center') {\n <div style=\"text-align: center;\" [innerHtml]=\"getInnerHtml()\">\n </div>\n }\n </div>\n}\n\n@if (!tag.presentOrEdit) {\n <div>\n <div style=\"overflow-x: auto;\">\n <mat-button-toggle-group [(ngModel)]=\"tag.attributes['h-align']\">\n <mat-button-toggle value=\"center\">\n \u041F\u043E \u0446\u0435\u043D\u0442\u0440\u0443 <mat-icon>format_align_center</mat-icon>\n </mat-button-toggle>\n <mat-button-toggle value=\"left\">\n \u0421\u043B\u0435\u0432\u0430 <mat-icon>format_align_left</mat-icon>\n </mat-button-toggle>\n <mat-button-toggle value=\"right\">\n \u0421\u043F\u0440\u0430\u0432\u0430 <mat-icon> format_align_right</mat-icon>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <div style=\"height: 10px;\">\n </div>\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0430 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u043E\u0433\u043E \u0442\u0435\u0433\u0430</mat-label>\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n placeholder=\"\u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0430 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u043E\u0433\u043E \u0442\u0435\u0433\u0430\"\n [(ngModel)]=\"tag.innerHtml\"></textarea>\n </mat-form-field>\n </div>\n </div>\n}\n", dependencies: [{ kind: "directive", type: MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }] }); }
|
|
2077
2150
|
}
|
|
2078
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2151
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TextEditorComponent, decorators: [{
|
|
2079
2152
|
type: Component,
|
|
2080
2153
|
args: [{ selector: 'croco-html-text-editor', standalone: true, imports: [MatButtonToggleGroup, FormsModule, MatButtonToggle, MatIcon, MatFormField, MatLabel, MatInput, CdkTextareaAutosize], template: "@if (tag.presentOrEdit) {\n <div>\n <div style=\"height: 10px;\">\n </div>\n @if (tag.attributes['h-align'] === 'left') {\n <div style=\"text-align: left;\" [innerHtml]=\"getInnerHtml()\">\n </div>\n }\n @if (tag.attributes['h-align'] === 'right') {\n <div style=\"text-align: right;\" [innerHtml]=\"getInnerHtml()\">\n </div>\n }\n @if (tag.attributes['h-align'] === 'center') {\n <div style=\"text-align: center;\" [innerHtml]=\"getInnerHtml()\">\n </div>\n }\n </div>\n}\n\n@if (!tag.presentOrEdit) {\n <div>\n <div style=\"overflow-x: auto;\">\n <mat-button-toggle-group [(ngModel)]=\"tag.attributes['h-align']\">\n <mat-button-toggle value=\"center\">\n \u041F\u043E \u0446\u0435\u043D\u0442\u0440\u0443 <mat-icon>format_align_center</mat-icon>\n </mat-button-toggle>\n <mat-button-toggle value=\"left\">\n \u0421\u043B\u0435\u0432\u0430 <mat-icon>format_align_left</mat-icon>\n </mat-button-toggle>\n <mat-button-toggle value=\"right\">\n \u0421\u043F\u0440\u0430\u0432\u0430 <mat-icon> format_align_right</mat-icon>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n <div style=\"height: 10px;\">\n </div>\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0430 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u043E\u0433\u043E \u0442\u0435\u0433\u0430</mat-label>\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n placeholder=\"\u0412\u043D\u0443\u0442\u0440\u0435\u043D\u043D\u044F\u044F \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0430 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u043E\u0433\u043E \u0442\u0435\u0433\u0430\"\n [(ngModel)]=\"tag.innerHtml\"></textarea>\n </mat-form-field>\n </div>\n </div>\n}\n" }]
|
|
2081
|
-
}],
|
|
2154
|
+
}], propDecorators: { tag: [{
|
|
2082
2155
|
type: Input
|
|
2083
2156
|
}], onTagUpdated: [{
|
|
2084
2157
|
type: Output
|
|
@@ -2102,10 +2175,10 @@ class ButtonEditorComponent {
|
|
|
2102
2175
|
linkChanged() {
|
|
2103
2176
|
this.tag.attributes = this.tagData;
|
|
2104
2177
|
}
|
|
2105
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2106
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
2178
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ButtonEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2179
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: ButtonEditorComponent, isStandalone: true, selector: "croco-html-button-editor", inputs: { tag: "tag" }, outputs: { onTagUpdated: "onTagUpdated" }, ngImport: i0, template: "@if (tag.presentOrEdit) {\n <div>\n <div>\n \u0422\u0438\u043F: {{tagData.type}}\n </div>\n <div style=\"height: 10px;\"></div>\n <div>\n \u0422\u0435\u043A\u0441\u0442: {{tagData.text}}\n </div>\n <div style=\"height: 10px;\"></div>\n <div>\n \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A \u043D\u0430\u0436\u0430\u0442\u0438\u044F: {{tagData.click}}\n </div>\n <div style=\"height: 10px;\"></div>\n <croco-html-xml-tag-button [tagData]=\"tagData\"></croco-html-xml-tag-button>\n </div>\n} @else {\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u0422\u0438\u043F\n </mat-label>\n <input matInput placeholder=\"\u0422\u0438\u043F\"\n autocomplete=\"off\"\n [(ngModel)]=\"tagData.type\"\n (ngModelChange)=\"linkChanged()\">\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u0422\u0435\u043A\u0441\u0442\n </mat-label>\n <input matInput placeholder=\"\u0422\u0435\u043A\u0441\u0442\"\n autocomplete=\"off\"\n [(ngModel)]=\"tagData.text\"\n (ngModelChange)=\"linkChanged()\">\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>\n \u041E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A \u043D\u0430\u0436\u0430\u0442\u0438\u044F\n </mat-label>\n <input matInput placeholder=\"\u041E\u0431\u0440\u0430\u0431\u043E\u0442\u0447\u0438\u043A \u043D\u0430\u0436\u0430\u0442\u0438\u044F\"\n autocomplete=\"off\"\n [(ngModel)]=\"tagData.click\"\n (ngModelChange)=\"linkChanged()\">\n </mat-form-field>\n </div>\n}\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "component", type: XmlTagButtonComponent, selector: "croco-html-xml-tag-button", inputs: ["data", "tagData"] }] }); }
|
|
2107
2180
|
}
|
|
2108
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2181
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ButtonEditorComponent, decorators: [{
|
|
2109
2182
|
type: Component,
|
|
2110
2183
|
args: [{ selector: 'croco-html-button-editor', standalone: true, imports: [
|
|
2111
2184
|
FormsModule,
|
|
@@ -2130,15 +2203,15 @@ class CustomWidgetEditorComponent {
|
|
|
2130
2203
|
};
|
|
2131
2204
|
}
|
|
2132
2205
|
ngOnInit() {
|
|
2133
|
-
this.tagData =
|
|
2206
|
+
this.tagData = CustomWidgetTagService.ExtractCustomWidgetTagData(this.tag.attributes);
|
|
2134
2207
|
}
|
|
2135
2208
|
dataChanged() {
|
|
2136
|
-
this.tag.attributes =
|
|
2209
|
+
this.tag.attributes = CustomWidgetTagService.ExtractCustomWidgetAttributes(this.tagData);
|
|
2137
2210
|
}
|
|
2138
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2139
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
2211
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CustomWidgetEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2212
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: CustomWidgetEditorComponent, isStandalone: true, selector: "croco-html-custom-widget-editor", inputs: { tag: "tag" }, outputs: { onTagUpdated: "onTagUpdated" }, ngImport: i0, template: "@if (tag.presentOrEdit) {\n <div>\n <div>\n <b>type:</b> {{tagData.type}}\n </div>\n <div style=\"height: 10px;\"></div>\n <div>\n <b>data-id:</b> {{tagData.dataId}}\n </div>\n <div style=\"height: 10px;\"></div>\n <div>\n <b>widget-id:</b> {{tagData.widgetId}}\n </div>\n <div style=\"height: 10px;\"></div>\n <croco-html-xml-tag-custom-widget [tagData]=\"tagData\"></croco-html-xml-tag-custom-widget>\n </div>\n} @else {\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\n type\n </mat-label>\n <input matInput\n placeholder=\"type\"\n autocomplete=\"off\"\n [(ngModel)]=\"tagData.type\"\n (ngModelChange)=\"dataChanged()\">\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>\n data-id\n </mat-label>\n <input matInput\n placeholder=\"data-id\"\n autocomplete=\"off\"\n [(ngModel)]=\"tagData.dataId\"\n (ngModelChange)=\"dataChanged()\">\n </mat-form-field>\n\n <mat-form-field class=\"w-100\">\n <mat-label>\n widget-id\n </mat-label>\n <input matInput\n placeholder=\"widget-id\"\n autocomplete=\"off\"\n [(ngModel)]=\"tagData.widgetId\"\n (ngModelChange)=\"dataChanged()\">\n </mat-form-field>\n </div>\n}\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "component", type: XmlTagCustomWidgetComponent, selector: "croco-html-xml-tag-custom-widget", inputs: ["tagData"] }] }); }
|
|
2140
2213
|
}
|
|
2141
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2214
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CustomWidgetEditorComponent, decorators: [{
|
|
2142
2215
|
type: Component,
|
|
2143
2216
|
args: [{ selector: 'croco-html-custom-widget-editor', standalone: true, imports: [
|
|
2144
2217
|
FormsModule,
|
|
@@ -2168,10 +2241,10 @@ class MainEditorBlockComponent {
|
|
|
2168
2241
|
deleteItem() {
|
|
2169
2242
|
this.onTagRemoved.emit(this.tag);
|
|
2170
2243
|
}
|
|
2171
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2172
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
2244
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MainEditorBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2245
|
+
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 @if (!tag.presentOrEdit) {\n <button (click)=\"save()\" mat-icon-button>\n <svg width=\"800px\" height=\"800px\" viewBox=\"0 0 24 24\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\n aria-labelledby=\"saveIconTitle\" stroke=\"#000000\" stroke-width=\"1\" stroke-linecap=\"square\"\n stroke-linejoin=\"miter\" fill=\"none\" color=\"#000000\"><title id=\"saveIconTitle\">Save</title>\n <path\n d=\"M17.2928932,3.29289322 L21,7 L21,20 C21,20.5522847 20.5522847,21 20,21 L4,21 C3.44771525,21 3,20.5522847 3,20 L3,4 C3,3.44771525 3.44771525,3 4,3 L16.5857864,3 C16.8510029,3 17.1053568,3.10535684 17.2928932,3.29289322 Z\"/>\n <rect width=\"10\" height=\"8\" x=\"7\" y=\"13\"/>\n <rect width=\"8\" height=\"5\" x=\"8\" y=\"3\"/>\n </svg>\n </button>\n }\n <button (click)=\"deleteItem()\" mat-icon-button color=\"warn\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.49988 0.833332H12.4999C13.4204 0.833332 14.1665 1.57952 14.1665 2.5V3.33333H16.6665C17.587 3.33333 18.3332 4.07952 18.3332 4.99999V6.66666C18.3332 7.58714 17.587 8.33333 16.6665 8.33333H16.5998L15.8332 17.5C15.8332 18.4205 15.087 19.1667 14.1665 19.1667H5.8332C4.91272 19.1667 4.16653 18.4205 4.16941 17.5692L3.39975 8.33333H3.33317C2.4127 8.33333 1.6665 7.58714 1.6665 6.66666V4.99999C1.6665 4.07952 2.4127 3.33333 3.33317 3.33333H5.83321V2.5C5.83321 1.57952 6.5794 0.833332 7.49988 0.833332ZM5.83321 5V4.99999H3.33317V6.66666H16.6665V4.99999L14.1665 5H5.83321ZM5.83324 17.5L5.07198 8.33333H14.9276L14.1695 17.4308L14.1666 17.5H5.83324ZM12.4999 2.5V3.33334H7.49992V2.5H12.4999Z\" fill=\"#F96666\"/>\n </svg>\n </button>\n </div>\n </div>\n\n </div>\n</div>\n", styles: [".main-editor-block{display:flex;justify-content:space-between}.editor-container{flex-grow:1}@media screen and (max-width: 700px){.main-editor-block{display:flex;flex-direction:column}}\n"], dependencies: [{ kind: "component", type: TextEditorComponent, selector: "croco-html-text-editor", inputs: ["tag"], outputs: ["onTagUpdated"] }, { kind: "component", type: ImageEditorComponent, selector: "croco-html-image-editor", inputs: ["tag"], outputs: ["onTagUpdated"] }, { kind: "component", type: DownloadFileButtonEditorComponent, selector: "croco-html-download-file-button-editor", inputs: ["tag"], outputs: ["onTagUpdated"] }, { kind: "component", type: HtmlRawEditorComponent, selector: "croco-html-html-raw-editor", inputs: ["tag"], outputs: ["onTagUpdated"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: ExternalVideoEditorComponent, selector: "croco-html-external-video-editor", inputs: ["tag"], outputs: ["onTagUpdated"] }, { kind: "component", type: ButtonEditorComponent, selector: "croco-html-button-editor", inputs: ["tag"], outputs: ["onTagUpdated"] }, { kind: "component", type: CustomWidgetEditorComponent, selector: "croco-html-custom-widget-editor", inputs: ["tag"], outputs: ["onTagUpdated"] }] }); }
|
|
2173
2246
|
}
|
|
2174
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2247
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MainEditorBlockComponent, decorators: [{
|
|
2175
2248
|
type: Component,
|
|
2176
2249
|
args: [{ selector: 'croco-html-main-editor-block', standalone: true, imports: [
|
|
2177
2250
|
TextEditorComponent,
|
|
@@ -2195,10 +2268,10 @@ class SpriteIconPathPipe {
|
|
|
2195
2268
|
transform(id) {
|
|
2196
2269
|
return `assets/lib-sprites/symbol/croco-html-svg-sprite.svg#${id}`;
|
|
2197
2270
|
}
|
|
2198
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2199
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
2271
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SpriteIconPathPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2272
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: SpriteIconPathPipe, isStandalone: true, name: "spriteIconPath" }); }
|
|
2200
2273
|
}
|
|
2201
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2274
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SpriteIconPathPipe, decorators: [{
|
|
2202
2275
|
type: Pipe,
|
|
2203
2276
|
args: [{
|
|
2204
2277
|
name: 'spriteIconPath',
|
|
@@ -2206,9 +2279,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
2206
2279
|
}]
|
|
2207
2280
|
}] });
|
|
2208
2281
|
|
|
2209
|
-
const defaultLinkYouTube = "https://www.youtube.com/embed/4CtSAnJDfsI?si=scyBNJa0Hs2t5aLE";
|
|
2210
|
-
const defaultLinkVk = "https://vk.com/video_ext.php?oid=-22822305&id=456241864&hd=2";
|
|
2211
|
-
const defaultLinkForDownload = "https://storage.yandexcloud.net/mega-academy/presentation.pdf";
|
|
2212
2282
|
class VisualEditorComponent {
|
|
2213
2283
|
isHtmlSet() {
|
|
2214
2284
|
return this.html.startsWith("<body>");
|
|
@@ -2228,7 +2298,7 @@ class VisualEditorComponent {
|
|
|
2228
2298
|
this.loadingText = "Идёт загрузка";
|
|
2229
2299
|
this.text = '';
|
|
2230
2300
|
this.htmlRaw = '';
|
|
2231
|
-
this.alignment =
|
|
2301
|
+
this.alignment = TextAlignment.Left;
|
|
2232
2302
|
this.textTag = DefaultTags.textTags[0].tag;
|
|
2233
2303
|
this.textTagOptions = DefaultTags.textTags;
|
|
2234
2304
|
this.alignmentOptions = AlignmentsData;
|
|
@@ -2257,55 +2327,24 @@ class VisualEditorComponent {
|
|
|
2257
2327
|
addTagClickHandler() {
|
|
2258
2328
|
let tagDescription = this.tags
|
|
2259
2329
|
.find(x => x.tag === this.selectedValue);
|
|
2260
|
-
|
|
2330
|
+
const tagName = tagDescription.tag;
|
|
2331
|
+
if (TextTags.allTextTags.includes(tagName)) {
|
|
2261
2332
|
this.addTextTags();
|
|
2262
2333
|
this.startAddingText();
|
|
2263
2334
|
return;
|
|
2264
2335
|
}
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
innerHtml = this.htmlRaw;
|
|
2276
|
-
}
|
|
2277
|
-
}
|
|
2278
|
-
else if (tagDescription.tag == FileImageTagDataConsts.TagName) {
|
|
2279
|
-
attrs[FileImageTagDataConsts.ScreenMediaRequest] = FileImageTagDataConsts.DefaultValueForFileImage;
|
|
2280
|
-
}
|
|
2281
|
-
else if (tagDescription.tag == DownloadButtonTagDataConsts.TagName) {
|
|
2282
|
-
attrs[DownloadButtonTagDataConsts.LinkAttrName] = defaultLinkForDownload;
|
|
2283
|
-
attrs[DownloadButtonTagDataConsts.TitleAttrName] = 'Скачать';
|
|
2284
|
-
}
|
|
2285
|
-
else if (tagDescription.tag == ButtonTagDataConsts.TagName) {
|
|
2286
|
-
attrs[ButtonTagDataConsts.ClickAttrName] = '';
|
|
2287
|
-
attrs[ButtonTagDataConsts.TypeAttrName] = 'button';
|
|
2288
|
-
attrs[ButtonTagDataConsts.TextAttrName] = 'Кнопка';
|
|
2289
|
-
}
|
|
2290
|
-
else if (tagDescription.tag === HtmlRawTagDataConsts.TagName) {
|
|
2291
|
-
innerHtml = this.htmlRaw;
|
|
2292
|
-
}
|
|
2293
|
-
else if (tagDescription.tag == CustomWidgetTagDataConsts.TagName) {
|
|
2294
|
-
attrs[CustomWidgetTagDataConsts.TypeAttrName] = 'example-type';
|
|
2295
|
-
attrs[CustomWidgetTagDataConsts.DataIdAttrName] = 'example-data-id';
|
|
2296
|
-
attrs[CustomWidgetTagDataConsts.WidgetIdAttrName] = 'example-widget-id';
|
|
2297
|
-
}
|
|
2298
|
-
else if (tagDescription.tag === FileImageTagDataConsts.TagName) {
|
|
2299
|
-
attrs[FileImageTagDataConsts.FileIdAttrName] = null;
|
|
2336
|
+
if (BodyTagsExtensions.tagServices.hasOwnProperty(tagName)) {
|
|
2337
|
+
const tagService = BodyTagsExtensions.tagServices[tagName];
|
|
2338
|
+
let tag = tagService.getDefaultValue({
|
|
2339
|
+
htmlRaw: this.htmlRaw,
|
|
2340
|
+
selectedVideoPlayer: this.selectedVideoPlayer
|
|
2341
|
+
});
|
|
2342
|
+
this.bodyTags.push(tag);
|
|
2343
|
+
this.htmlRaw = '';
|
|
2344
|
+
this.recalculateHtml();
|
|
2345
|
+
return;
|
|
2300
2346
|
}
|
|
2301
|
-
|
|
2302
|
-
tagDescription,
|
|
2303
|
-
innerHtml,
|
|
2304
|
-
attributes: attrs,
|
|
2305
|
-
presentOrEdit: true
|
|
2306
|
-
});
|
|
2307
|
-
this.htmlRaw = '';
|
|
2308
|
-
this.recalculateHtml();
|
|
2347
|
+
alert(`Сервис для тега ${tagName} не зарегистрирован.`);
|
|
2309
2348
|
}
|
|
2310
2349
|
startAddingText(tag = '') {
|
|
2311
2350
|
this.saveBodyTags = [...this.bodyTags];
|
|
@@ -2318,7 +2357,7 @@ class VisualEditorComponent {
|
|
|
2318
2357
|
}
|
|
2319
2358
|
resetTextStyle() {
|
|
2320
2359
|
this.text = '';
|
|
2321
|
-
this.alignment =
|
|
2360
|
+
this.alignment = TextAlignment.Left;
|
|
2322
2361
|
this.textTag = DefaultTags.textTags[0].tag;
|
|
2323
2362
|
}
|
|
2324
2363
|
addTextTags() {
|
|
@@ -2368,7 +2407,7 @@ class VisualEditorComponent {
|
|
|
2368
2407
|
this.recalculateHtml();
|
|
2369
2408
|
}
|
|
2370
2409
|
recalculateHtml() {
|
|
2371
|
-
let result = BodyTagsExtensions.
|
|
2410
|
+
let result = BodyTagsExtensions.bodyTagsToHtml(this.bodyTags);
|
|
2372
2411
|
this.html = XmlExtensions.formatXml("<body>" + result + "</body>");
|
|
2373
2412
|
this.onHtmlChanged.emit(this.html);
|
|
2374
2413
|
}
|
|
@@ -2396,10 +2435,10 @@ class VisualEditorComponent {
|
|
|
2396
2435
|
setAlignButton(type) {
|
|
2397
2436
|
return `align-${type}`;
|
|
2398
2437
|
}
|
|
2399
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2400
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: VisualEditorComponent, isStandalone: true, selector: "croco-visual-editor", inputs: { showMarkUp: "showMarkUp", useHtmlRaw: "useHtmlRaw", html: "html" }, outputs: { html: "html", onHtmlChanged: "onHtmlChanged", rendered: "rendered" }, viewQueries: [{ propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }], ngImport: i0, template: "@if (isLoading) {\n <div>\n <div>\n <mat-spinner style=\"margin:0 auto;\"></mat-spinner>\n <div style=\"text-align: center;\">{{loadingText}}</div>\n </div>\n <div style=\"height: 10px;\"></div>\n </div>\n}\n<div [hidden]=\"isLoading\">\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <div class=\"row d-flex align-items-center\">\n <div class=\"col-12\">\n <div class=\"w-100\" style=\"margin-bottom: 22px\">\n <div class=\"tags\">\n @for (tag of tags; track tag) {\n <span class=\"tag-item\" (click)=\"selectTag(tag)\" [class.active]=\"selectedValue === tag.tag\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"tagButtonIcons\"\n [ngTemplateOutletContext]=\"{icon: tag.tag}\">\n </ng-container>\n </span>\n {{tag.displayValue}}\n </span>\n }\n\n @if (useCustomWidgetsButton) {\n <span class=\"tag-item\" (click)=\"customWidgetsClickHandler()\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"tagButtonIcons\"\n [ngTemplateOutletContext]=\"{icon: 'custom-widget'}\">\n </ng-container>\n </span>\n \u0414\u0440\u0443\u0433\u0438\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044B\n </span>\n }\n \n </div>\n </div>\n </div>\n @if (selectedValue === ExternalVideoTagDataConsts.TagName) {\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\" appearance=\"outline\">\n <mat-label>\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0438\u0434\u0435\u043E\u043F\u043B\u0435\u0435\u0440</mat-label>\n <mat-select [(ngModel)]=\"selectedVideoPlayer\">\n @for (videoPlayer of videoPlayers; track videoPlayer.type) {\n <mat-option [value]=\"videoPlayer.type\">\n {{videoPlayer.displayValue}}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n @if (selectedVideoPlayer === ExternalVideoSupportedTypes.Code) {\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\" appearance=\"outline\">\n <mat-label>\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430</mat-label>\n <input\n matInput\n placeholder=\"\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430\"\n [(ngModel)]=\"htmlRaw\"\n >\n </mat-form-field>\n </div>\n }\n }\n @if (selectedValue === HtmlRawTagDataConsts.TagName) {\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\">\n <mat-label>\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430</mat-label>\n <textarea\n #autosize=\"cdkTextareaAutosize\"\n matInput\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"5\"\n placeholder=\"\u0422\u0435\u043A\u0441\u0442\"\n #textArea\n [(ngModel)]=\"htmlRaw\"\n ></textarea>\n </mat-form-field>\n </div>\n }\n @if (selectedValue === 'text') {\n <div style=\"display: flex; justify-content: space-between; flex-wrap: wrap\">\n <div style=\"margin-bottom: 22px; overflow-x: auto;\">\n <mat-button-toggle-group\n [(ngModel)]=\"textTag\"\n [hideSingleSelectionIndicator]=\"true\"\n >\n @for (option of textTagOptions; track option) {\n <mat-button-toggle value=\"{{ option.tag }}\">\n {{ option.displayValue }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n\n <div style=\"margin-bottom: 22px\">\n <mat-button-toggle-group\n [(ngModel)]=\"alignment\"\n [hideSingleSelectionIndicator]=\"true\"\n >\n @for (option of alignmentOptions; track option) {\n <mat-button-toggle value=\"{{ option.value }}\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"textAlignToggleIcons\"\n [ngTemplateOutletContext]=\"{icon: option.value}\">\n </ng-container>\n </span>\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <mat-form-field class=\"w-100\">\n <mat-label>\u0422\u0435\u043A\u0441\u0442</mat-label>\n <textarea\n #autosize=\"cdkTextareaAutosize\"\n matInput\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"5\"\n placeholder=\"\u0422\u0435\u043A\u0441\u0442\"\n #textArea\n [(ngModel)]=\"text\"\n ></textarea>\n </mat-form-field>\n }\n\n <div class=\"col-12\">\n <button (click)=\"addTagClickHandler()\" class=\"w-100\" mat-stroked-button>\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0442\u0435\u0433\n </button>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <div style=\"height: 10px;\">\n </div>\n</div>\n<div [hidden]=\"isLoading\">\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <div class=\"row d-flex align-items-center\">\n <div class=\"col-12\">\n <croco-html-add-files-btn (filesTagsReady)=\"filesTagsReadyHandler($event)\"\n (postFilesStarted)=\"postFilesStartedEventHandler()\" class=\"w-100\">\n </croco-html-add-files-btn>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <div style=\"height: 10px;\">\n </div>\n</div>\n<div [hidden]=\"isLoading\">\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\">\n @for (tag of bodyTags; track tag; let i = $index) {\n <div cdkDrag>\n <mat-card style=\"margin: 2px;\" class=\"mat-card special\">\n <mat-card-content>\n <div class=\"d-flex justify-content-between\">\n <div class=\"example-handle\" cdkDragHandle>\n <svg width=\"24\" height=\"24\" class=\"move-icon\">\n <use [attr.xlink:href]=\"'move-icon' | spriteIconPath\"></use>\n </svg>\n </div>\n <div>\n <div class=\"badge\" [matTooltip]=\"tag.tagDescription.tag\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"tagButtonIcons\"\n [ngTemplateOutletContext]=\"{icon: tag.tagDescription.tag}\">\n </ng-container>\n </span>\n </div>\n </div>\n </div>\n <div style=\"height: 15px;\"></div>\n <croco-html-main-editor-block [tag]=\"tag\" (onTagSaved)=\"onTagSavedHandler($event)\"\n (onTagRemoved)=\"onTagRemovedHandler(i)\">\n </croco-html-main-editor-block>\n </mat-card-content>\n </mat-card>\n </div>\n }\n </div>\n</div>\n\n<ng-template #textAlignToggleIcons let-icon=\"icon\">\n <svg width=\"20\" height=\"20\">\n <use [attr.xlink:href]=\"setAlignButton(icon) | spriteIconPath\"></use>\n </svg>\n</ng-template>\n\n<ng-template #tagButtonIcons let-icon=\"icon\">\n @if (icon.indexOf('h') === 0 && icon.length === 2) {\n {{icon.toUpperCase()}}\n }\n @else {\n <svg width=\"20\" height=\"20\">\n <use [attr.xlink:href]=\"setTagButton(icon) | spriteIconPath\"></use>\n </svg>\n }\n</ng-template>", styles: [":host{--mat-standard-button-toggle-selected-state-background-color: #323E8B;--mat-standard-button-toggle-text-color: #323E8B;--mat-standard-button-toggle-selected-state-text-color: white;--mat-standard-button-toggle-height: 36px;--mat-standard-button-toggle-divider-color: #323E8B;--mdc-outlined-button-label-text-weight: 400;--mdc-outlined-button-label-text-color: #333333 !important;--mdc-outlined-button-container-shape: 30px;--mdc-outlined-button-outline-width: 2px;--mdc-outlined-button-container-height: 44px}:host ::ng-deep .mat-button-toggle-appearance-standard span.mat-button-toggle-label-content{padding:0 8px;min-width:36px}.text-align-icon,.mat-button-toggle .text-align-icon{color:#323e8b}.mat-button-toggle:hover,.mat-button-toggle:hover .text-align-icon{color:#747ebf}.mat-button-toggle-checked .text-align-icon{color:#fff}.example-list{width:500px;max-width:100%;border:solid 1px #ccc;min-height:60px;display:block;background:#fff;border-radius:4px;overflow:hidden}.example-box{padding:20px 10px;border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;cursor:move;background:#fff;font-size:14px}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.badge{width:44px;height:44px;border-radius:50%;border:1px solid #323E8B;display:flex;align-items:center;justify-content:center;color:#323e8b}.mat-card.special{border:1px solid #747EBF;border-radius:8px;box-shadow:none;margin:2px 2px 10px}.tags{display:flex;gap:10px;flex-wrap:wrap}.tag-item{display:flex;align-items:center;gap:5px;cursor:pointer;padding:10px 20px;border:1px solid #323E8B;border-radius:30px;background-color:#fff;color:#23262a;transition:.2s ease-in-out}.text-align-icon{color:#323e8b}.tag-item.active{background-color:#323e8b;color:#fff}.tag-item.active svg{color:#fff}.tag-item:hover{color:#747ebf;box-shadow:0 0 4px #747ebf}.tag-item:hover svg{color:#747ebf}@media (max-width: 768px){.tag-item:hover{color:inherit;box-shadow:none}.tag-item:hover svg{color:inherit}.tag-item:active{color:#747ebf;box-shadow:0 0 4px #747ebf}.tag-item:active svg{color:#747ebf}}.move-icon:hover{cursor:pointer;opacity:.7}.cdk-drag.cdk-drag-placeholder,.cdk-drag-preview{opacity:.5;transition:opacity .2s}.example-handle{color:#323e8b}\n"], dependencies: [{ kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: AddFilesBtnComponent, selector: "croco-html-add-files-btn", outputs: ["postFilesStarted", "filesTagsReady"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: MainEditorBlockComponent, selector: "croco-html-main-editor-block", inputs: ["tag"], outputs: ["onTagSaved", "onTagRemoved"] }, { kind: "directive", type: MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: SpriteIconPathPipe, name: "spriteIconPath" }] }); }
|
|
2438
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: VisualEditorComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: CrocoHtmlOptionsToken }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2439
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: VisualEditorComponent, isStandalone: true, selector: "croco-visual-editor", inputs: { showMarkUp: "showMarkUp", useHtmlRaw: "useHtmlRaw", html: "html" }, outputs: { html: "html", onHtmlChanged: "onHtmlChanged", rendered: "rendered" }, viewQueries: [{ propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }], ngImport: i0, template: "@if (isLoading) {\n <div>\n <div>\n <mat-spinner style=\"margin:0 auto;\"></mat-spinner>\n <div style=\"text-align: center;\">{{loadingText}}</div>\n </div>\n <div style=\"height: 10px;\"></div>\n </div>\n}\n<div [hidden]=\"isLoading\">\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <div class=\"row d-flex align-items-center\">\n <div class=\"col-12\">\n <div class=\"w-100\" style=\"margin-bottom: 22px\">\n <div class=\"tags\">\n @for (tag of tags; track tag) {\n <span class=\"tag-item\" (click)=\"selectTag(tag)\" [class.active]=\"selectedValue === tag.tag\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"tagButtonIcons\"\n [ngTemplateOutletContext]=\"{icon: tag.tag}\">\n </ng-container>\n </span>\n {{tag.displayValue}}\n </span>\n }\n\n @if (useCustomWidgetsButton) {\n <span class=\"tag-item\" (click)=\"customWidgetsClickHandler()\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"tagButtonIcons\"\n [ngTemplateOutletContext]=\"{icon: 'custom-widget'}\">\n </ng-container>\n </span>\n \u0414\u0440\u0443\u0433\u0438\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044B\n </span>\n }\n \n </div>\n </div>\n </div>\n @if (selectedValue === ExternalVideoTagDataConsts.TagName) {\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\" appearance=\"outline\">\n <mat-label>\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0438\u0434\u0435\u043E\u043F\u043B\u0435\u0435\u0440</mat-label>\n <mat-select [(ngModel)]=\"selectedVideoPlayer\">\n @for (videoPlayer of videoPlayers; track videoPlayer.type) {\n <mat-option [value]=\"videoPlayer.type\">\n {{videoPlayer.displayValue}}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n @if (selectedVideoPlayer === ExternalVideoSupportedTypes.Code) {\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\" appearance=\"outline\">\n <mat-label>\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430</mat-label>\n <input\n matInput\n placeholder=\"\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430\"\n [(ngModel)]=\"htmlRaw\"\n >\n </mat-form-field>\n </div>\n }\n }\n @if (selectedValue === HtmlRawTagDataConsts.TagName) {\n <div class=\"col-12\">\n <mat-form-field class=\"w-100\">\n <mat-label>\u0420\u0430\u0437\u043C\u0435\u0442\u043A\u0430</mat-label>\n <textarea\n #autosize=\"cdkTextareaAutosize\"\n matInput\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"5\"\n placeholder=\"\u0422\u0435\u043A\u0441\u0442\"\n #textArea\n [(ngModel)]=\"htmlRaw\"\n ></textarea>\n </mat-form-field>\n </div>\n }\n @if (selectedValue === 'text') {\n <div style=\"display: flex; justify-content: space-between; flex-wrap: wrap\">\n <div style=\"margin-bottom: 22px; overflow-x: auto;\">\n <mat-button-toggle-group\n [(ngModel)]=\"textTag\"\n [hideSingleSelectionIndicator]=\"true\"\n >\n @for (option of textTagOptions; track option) {\n <mat-button-toggle value=\"{{ option.tag }}\">\n {{ option.displayValue }}\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n\n <div style=\"margin-bottom: 22px\">\n <mat-button-toggle-group\n [(ngModel)]=\"alignment\"\n [hideSingleSelectionIndicator]=\"true\"\n >\n @for (option of alignmentOptions; track option) {\n <mat-button-toggle value=\"{{ option.value }}\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"textAlignToggleIcons\"\n [ngTemplateOutletContext]=\"{icon: option.value}\">\n </ng-container>\n </span>\n </mat-button-toggle>\n }\n </mat-button-toggle-group>\n </div>\n </div>\n <mat-form-field class=\"w-100\">\n <mat-label>\u0422\u0435\u043A\u0441\u0442</mat-label>\n <textarea\n #autosize=\"cdkTextareaAutosize\"\n matInput\n cdkTextareaAutosize\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"5\"\n placeholder=\"\u0422\u0435\u043A\u0441\u0442\"\n #textArea\n [(ngModel)]=\"text\"\n ></textarea>\n </mat-form-field>\n }\n\n <div class=\"col-12\">\n <button (click)=\"addTagClickHandler()\" class=\"w-100\" mat-stroked-button>\n \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0442\u0435\u0433\n </button>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <div style=\"height: 10px;\">\n </div>\n</div>\n<div [hidden]=\"isLoading\">\n <mat-card style=\"margin: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <div class=\"row d-flex align-items-center\">\n <div class=\"col-12\">\n <croco-html-add-files-btn (filesTagsReady)=\"filesTagsReadyHandler($event)\"\n (postFilesStarted)=\"postFilesStartedEventHandler()\" class=\"w-100\">\n </croco-html-add-files-btn>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <div style=\"height: 10px;\">\n </div>\n</div>\n<div [hidden]=\"isLoading\">\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\">\n @for (tag of bodyTags; track tag; let i = $index) {\n <div cdkDrag>\n <mat-card style=\"margin: 2px;\" class=\"mat-card special\">\n <mat-card-content>\n <div class=\"d-flex justify-content-between\">\n <div class=\"example-handle\" cdkDragHandle>\n <svg width=\"24\" height=\"24\" class=\"move-icon\">\n <use [attr.xlink:href]=\"'move-icon' | spriteIconPath\"></use>\n </svg>\n </div>\n <div>\n <div class=\"badge\" [matTooltip]=\"tag.tagDescription.tag\">\n <span class=\"text-align-icon\">\n <ng-container [ngTemplateOutlet]=\"tagButtonIcons\"\n [ngTemplateOutletContext]=\"{icon: tag.tagDescription.tag}\">\n </ng-container>\n </span>\n </div>\n </div>\n </div>\n <div style=\"height: 15px;\"></div>\n <croco-html-main-editor-block [tag]=\"tag\" (onTagSaved)=\"onTagSavedHandler($event)\"\n (onTagRemoved)=\"onTagRemovedHandler(i)\">\n </croco-html-main-editor-block>\n </mat-card-content>\n </mat-card>\n </div>\n }\n </div>\n</div>\n\n<ng-template #textAlignToggleIcons let-icon=\"icon\">\n <svg width=\"20\" height=\"20\">\n <use [attr.xlink:href]=\"setAlignButton(icon) | spriteIconPath\"></use>\n </svg>\n</ng-template>\n\n<ng-template #tagButtonIcons let-icon=\"icon\">\n @if (icon.indexOf('h') === 0 && icon.length === 2) {\n {{icon.toUpperCase()}}\n }\n @else {\n <svg width=\"20\" height=\"20\">\n <use [attr.xlink:href]=\"setTagButton(icon) | spriteIconPath\"></use>\n </svg>\n }\n</ng-template>", styles: [":host{--mat-standard-button-toggle-selected-state-background-color: #323E8B;--mat-standard-button-toggle-text-color: #323E8B;--mat-standard-button-toggle-selected-state-text-color: white;--mat-standard-button-toggle-height: 36px;--mat-standard-button-toggle-divider-color: #323E8B;--mdc-outlined-button-label-text-weight: 400;--mdc-outlined-button-label-text-color: #333333 !important;--mdc-outlined-button-container-shape: 30px;--mdc-outlined-button-outline-width: 2px;--mdc-outlined-button-container-height: 44px}:host ::ng-deep .mat-button-toggle-appearance-standard span.mat-button-toggle-label-content{padding:0 8px;min-width:36px}.text-align-icon,.mat-button-toggle .text-align-icon{color:#323e8b}.mat-button-toggle:hover,.mat-button-toggle:hover .text-align-icon{color:#747ebf}.mat-button-toggle-checked .text-align-icon{color:#fff}.example-list{width:500px;max-width:100%;border:solid 1px #ccc;min-height:60px;display:block;background:#fff;border-radius:4px;overflow:hidden}.example-box{padding:20px 10px;border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;cursor:move;background:#fff;font-size:14px}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.badge{width:44px;height:44px;border-radius:50%;border:1px solid #323E8B;display:flex;align-items:center;justify-content:center;color:#323e8b}.mat-card.special{border:1px solid #747EBF;border-radius:8px;box-shadow:none;margin:2px 2px 10px}.tags{display:flex;gap:10px;flex-wrap:wrap}.tag-item{display:flex;align-items:center;gap:5px;cursor:pointer;padding:10px 20px;border:1px solid #323E8B;border-radius:30px;background-color:#fff;color:#23262a;transition:.2s ease-in-out}.text-align-icon{color:#323e8b}.tag-item.active{background-color:#323e8b;color:#fff}.tag-item.active svg{color:#fff}.tag-item:hover{color:#747ebf;box-shadow:0 0 4px #747ebf}.tag-item:hover svg{color:#747ebf}@media (max-width: 768px){.tag-item:hover{color:inherit;box-shadow:none}.tag-item:hover svg{color:inherit}.tag-item:active{color:#747ebf;box-shadow:0 0 4px #747ebf}.tag-item:active svg{color:#747ebf}}.move-icon:hover{cursor:pointer;opacity:.7}.cdk-drag.cdk-drag-placeholder,.cdk-drag-preview{opacity:.5;transition:opacity .2s}.example-handle{color:#323e8b}\n"], dependencies: [{ kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: AddFilesBtnComponent, selector: "croco-html-add-files-btn", outputs: ["postFilesStarted", "filesTagsReady"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: MainEditorBlockComponent, selector: "croco-html-main-editor-block", inputs: ["tag"], outputs: ["onTagSaved", "onTagRemoved"] }, { kind: "directive", type: MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: SpriteIconPathPipe, name: "spriteIconPath" }] }); }
|
|
2401
2440
|
}
|
|
2402
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2441
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: VisualEditorComponent, decorators: [{
|
|
2403
2442
|
type: Component,
|
|
2404
2443
|
args: [{ selector: 'croco-visual-editor', standalone: true, imports: [
|
|
2405
2444
|
MatProgressSpinner,
|
|
@@ -2451,10 +2490,10 @@ class ToPreviewPipe {
|
|
|
2451
2490
|
transform(value) {
|
|
2452
2491
|
return HtmlExtractionMethods.transformHtmlStringToBlocks(value, this._options);
|
|
2453
2492
|
}
|
|
2454
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2455
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
2493
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ToPreviewPipe, deps: [{ token: CrocoHtmlOptionsToken }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2494
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: ToPreviewPipe, isStandalone: true, name: "topreview" }); }
|
|
2456
2495
|
}
|
|
2457
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2496
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ToPreviewPipe, decorators: [{
|
|
2458
2497
|
type: Pipe,
|
|
2459
2498
|
args: [{
|
|
2460
2499
|
name: 'topreview',
|
|
@@ -2469,10 +2508,10 @@ class HtmlViewComponent {
|
|
|
2469
2508
|
constructor() {
|
|
2470
2509
|
this.html = "<body></body>";
|
|
2471
2510
|
}
|
|
2472
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2473
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
2511
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: HtmlViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2512
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: HtmlViewComponent, isStandalone: true, selector: "croco-html-view", inputs: { html: "html" }, ngImport: i0, template: "<croco-html-xml-tag-view [data]=\"html | topreview\"></croco-html-xml-tag-view>", styles: [""], dependencies: [{ kind: "component", type: XmlTagViewComponent, selector: "croco-html-xml-tag-view", inputs: ["data"] }, { kind: "pipe", type: ToPreviewPipe, name: "topreview" }] }); }
|
|
2474
2513
|
}
|
|
2475
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2514
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: HtmlViewComponent, decorators: [{
|
|
2476
2515
|
type: Component,
|
|
2477
2516
|
args: [{ selector: 'croco-html-view', standalone: true, imports: [XmlTagViewComponent, ToPreviewPipe], template: "<croco-html-xml-tag-view [data]=\"html | topreview\"></croco-html-xml-tag-view>" }]
|
|
2478
2517
|
}], propDecorators: { html: [{
|
|
@@ -2498,10 +2537,10 @@ class HtmlEditorSettingsModalComponent {
|
|
|
2498
2537
|
setSettings() {
|
|
2499
2538
|
this.dialogRef.close(this.form.getRawValue());
|
|
2500
2539
|
}
|
|
2501
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2502
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
2540
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: HtmlEditorSettingsModalComponent, deps: [{ token: i1$4.FormBuilder }, { token: i2$2.MatDialogRef }, { token: CrocoHtmlFileOptionsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2541
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: HtmlEditorSettingsModalComponent, isStandalone: true, selector: "croco-html-html-editor-settings-modal", ngImport: i0, template: "<div mat-dialog-title>\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430</div>\n<div mat-dialog-content class=\"editor-settings\" [formGroup]=\"form\">\n <mat-form-field style=\"margin-top: 20px\">\n <mat-label>\n \u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F\n </mat-label>\n <input matInput formControlName=\"applicationId\">\n </mat-form-field>\n\n <div>\n <mat-label>\n \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043F\u0440\u0438\u0432\u0430\u0442\u043D\u044B\u0435 \u0444\u0430\u0439\u043B\u044B\n </mat-label>\n <mat-checkbox\n formControlName=\"usePrivateFiles\">\n </mat-checkbox>\n </div>\n\n</div>\n<div mat-dialog-actions style=\"display: flex; justify-content: flex-end\">\n <button mat-raised-button color=\"warn\" (click)=\"cancel()\" >\u041E\u0442\u043C\u0435\u043D\u0430</button>\n <button mat-raised-button color=\"primary\" (click)=\"setSettings()\">\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C</button>\n</div>\n", styles: [".editor-settings{padding:20px;display:flex;gap:10px;flex-direction:column;width:360px}\n"], dependencies: [{ kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: MatFormField$1, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel$1, selector: "mat-label" }, { kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
|
|
2503
2542
|
}
|
|
2504
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2543
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: HtmlEditorSettingsModalComponent, decorators: [{
|
|
2505
2544
|
type: Component,
|
|
2506
2545
|
args: [{ selector: 'croco-html-html-editor-settings-modal', standalone: true, imports: [
|
|
2507
2546
|
MatInput,
|
|
@@ -2577,10 +2616,10 @@ class MainEditorComponent {
|
|
|
2577
2616
|
});
|
|
2578
2617
|
});
|
|
2579
2618
|
}
|
|
2580
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2581
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
2619
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MainEditorComponent, deps: [{ token: i1$5.ClipboardService }, { token: i2$3.MatSnackBar }, { token: i0.ChangeDetectorRef }, { token: i2$2.MatDialog }, { token: CrocoHtmlFileOptionsService }, { token: CrocoHtmlOptionsToken }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2620
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: MainEditorComponent, isStandalone: true, selector: "croco-html-main-editor", inputs: { showMarkUp: "showMarkUp", useHtmlRaw: "useHtmlRaw", html: "html" }, outputs: { html: "html", onHtmlChanged: "onHtmlChanged" }, viewQueries: [{ propertyName: "visualEditor", first: true, predicate: ["visualEditor"], descendants: true, static: true }], ngImport: i0, template: "<mat-tab-group mat-stretch-tabs=\"false\" mat-align-tabs=\"start\" style=\"position: relative\">\n <mat-tab>\n <ng-template mat-tab-label>\n <svg class=\"custom-icon\" width=\"32\" height=\"26\">\n <use [attr.xlink:href]=\"'visual-editor-tab' | spriteIconPath\"></use>\n </svg>\n </ng-template>\n\n <div style=\"height: 20px;\"></div>\n\n <croco-visual-editor #visualEditor [useHtmlRaw]=\"true\" [html]=\"html\" (onHtmlChanged)=\"onHtmlChangedHandler($event)\"\n (rendered)=\"visualEditorRenderedHandler()\">\n </croco-visual-editor>\n\n <div style=\"height: 20px;\"></div>\n </mat-tab>\n\n <mat-tab>\n <ng-template mat-tab-label>\n <svg class=\"custom-icon\" width=\"32\" height=\"26\">\n <use [attr.xlink:href]=\"'source-code-tab' | spriteIconPath\"></use>\n </svg>\n </ng-template>\n\n <div style=\"height: 10px;\"></div>\n @if (visualEditorRendered) {\n <div>\n <mat-form-field class=\"w-100\">\n <mat-label>\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434</mat-label>\n <textarea matInput cdkTextareaAutosize #autosize=\"cdkTextareaAutosize\" cdkAutosizeMinRows=\"1\"\n placeholder=\"\u0418\u0441\u0445\u043E\u0434\u043D\u044B\u0439 \u043A\u043E\u0434\" [(ngModel)]=\"html\" (ngModelChange)=\"textAreaModelChangedHandler()\"></textarea>\n </mat-form-field>\n </div>\n }\n\n <button (click)=\"copyMarkUp()\" mat-raised-button color=\"primary\">\n \u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0442\u043A\u0443\n </button>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <svg class=\"custom-icon\" width=\"32\" height=\"30\">\n <use [attr.xlink:href]=\"'viewer-tab' | spriteIconPath\"></use>\n </svg>\n </ng-template>\n\n\n <mat-card style=\"padding: 2px;\" class=\"mat-card\">\n <mat-card-content>\n <croco-html-view [html]=\"html\">\n </croco-html-view>\n </mat-card-content>\n </mat-card>\n </mat-tab>\n</mat-tab-group>\n\n<div [hidden]=\"!showSettingsButton\">\n <mat-icon class=\"settings\" (click)=\"openSettingsModal()\">settings</mat-icon>\n</div>\n", styles: [":host ::ng-deep .mdc-tab.mat-mdc-tab{background-color:#f7f7fa}:host ::ng-deep .mdc-tab.mat-mdc-tab .custom-icon{fill:#323e8b}:host ::ng-deep .mdc-tab.mat-mdc-tab:hover{background-color:#f7f7fa}:host ::ng-deep .mdc-tab.mat-mdc-tab:hover .custom-icon{fill:#747ebf}:host ::ng-deep .mdc-tab.mat-mdc-tab.mdc-tab--active{background-color:#323e8b}:host ::ng-deep .mdc-tab.mat-mdc-tab.mdc-tab--active svg.custom-icon{fill:#fff}:host ::ng-deep div.mat-mdc-tab-labels{justify-content:center}:host{position:relative}:host ::ng-deep .mat-expansion-panel,:host ::ng-deep .mat-mdc-tab-body-content,:host ::ng-deep .mat-mdc-tab-body,:host ::ng-deep .mat-mdc-tab-body-wrapper{overflow:visible}.example-list{width:500px;max-width:100%;border:solid 1px #ccc;min-height:60px;display:block;background:#fff;border-radius:4px;overflow:hidden}.example-box{padding:20px 10px;border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;cursor:move;background:#fff;font-size:14px}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.settings{position:absolute;top:20px;right:20px;cursor:pointer;z-index:1000}\n"], dependencies: [{ kind: "ngmodule", type: MatTabsModule }, { kind: "directive", type: i5.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i5.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i5.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: VisualEditorComponent, selector: "croco-visual-editor", inputs: ["showMarkUp", "useHtmlRaw", "html"], outputs: ["html", "onHtmlChanged", "rendered"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i1$2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i1$2.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: HtmlViewComponent, selector: "croco-html-view", inputs: ["html"] }, { kind: "pipe", type: SpriteIconPathPipe, name: "spriteIconPath" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
2582
2621
|
}
|
|
2583
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2622
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MainEditorComponent, decorators: [{
|
|
2584
2623
|
type: Component,
|
|
2585
2624
|
args: [{ selector: 'croco-html-main-editor', standalone: true, imports: [
|
|
2586
2625
|
MatTabsModule,
|
|
@@ -2618,10 +2657,10 @@ class TagToSpanPipe {
|
|
|
2618
2657
|
transform(value) {
|
|
2619
2658
|
return value.map(x => (`<b>${x}</b>`)).join(' | ');
|
|
2620
2659
|
}
|
|
2621
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2622
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
2660
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TagToSpanPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2661
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: TagToSpanPipe, isStandalone: true, name: "tagToSpan" }); }
|
|
2623
2662
|
}
|
|
2624
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2663
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TagToSpanPipe, decorators: [{
|
|
2625
2664
|
type: Pipe,
|
|
2626
2665
|
args: [{
|
|
2627
2666
|
name: 'tagToSpan',
|
|
@@ -2636,10 +2675,10 @@ class ToHtmlBodyTagsPipe {
|
|
|
2636
2675
|
transform(value) {
|
|
2637
2676
|
return BodyTagsExtensions.getBodyTags(value, this._options);
|
|
2638
2677
|
}
|
|
2639
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2640
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
2678
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ToHtmlBodyTagsPipe, deps: [{ token: CrocoHtmlOptionsToken }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2679
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: ToHtmlBodyTagsPipe, isStandalone: true, name: "tohtmlbodytags" }); }
|
|
2641
2680
|
}
|
|
2642
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2681
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ToHtmlBodyTagsPipe, decorators: [{
|
|
2643
2682
|
type: Pipe,
|
|
2644
2683
|
args: [{
|
|
2645
2684
|
name: 'tohtmlbodytags',
|
|
@@ -2657,10 +2696,10 @@ class ToPreviewHtmlPipe {
|
|
|
2657
2696
|
transform(value) {
|
|
2658
2697
|
return HtmlExtractionMethods.transformHtmlStringToBlocks(value, this._options);
|
|
2659
2698
|
}
|
|
2660
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2661
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
2699
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ToPreviewHtmlPipe, deps: [{ token: CrocoHtmlOptionsToken }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2700
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: ToPreviewHtmlPipe, isStandalone: true, name: "topreviewhtml" }); }
|
|
2662
2701
|
}
|
|
2663
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2702
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ToPreviewHtmlPipe, decorators: [{
|
|
2664
2703
|
type: Pipe,
|
|
2665
2704
|
args: [{
|
|
2666
2705
|
name: 'topreviewhtml',
|
|
@@ -2685,7 +2724,6 @@ const EditorComponents = [
|
|
|
2685
2724
|
const XmlComponents = [
|
|
2686
2725
|
XmlTagTableViewComponent,
|
|
2687
2726
|
XmlTagViewComponent,
|
|
2688
|
-
XmlTagRichTextViewComponent,
|
|
2689
2727
|
XmlTagHtmlViewComponent,
|
|
2690
2728
|
XmlTagTextViewComponent,
|
|
2691
2729
|
XmlTagHeaderTextViewComponent,
|
|
@@ -2697,7 +2735,6 @@ const XmlComponents = [
|
|
|
2697
2735
|
HtmlViewComponent
|
|
2698
2736
|
];
|
|
2699
2737
|
const CrocoPipes = [
|
|
2700
|
-
RichTextToHtmlPipe,
|
|
2701
2738
|
TagToSpanPipe,
|
|
2702
2739
|
ToPreviewPipe,
|
|
2703
2740
|
ToHtmlBodyTagsPipe,
|
|
@@ -2743,23 +2780,23 @@ const MaterialModules = [
|
|
|
2743
2780
|
];
|
|
2744
2781
|
|
|
2745
2782
|
class CrocoHtmlModule {
|
|
2746
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2747
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
2783
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CrocoHtmlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2784
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: CrocoHtmlModule, imports: [CommonModule,
|
|
2748
2785
|
FormsModule,
|
|
2749
2786
|
ReactiveFormsModule,
|
|
2750
2787
|
NgSelectModule, i1$6.MatBadgeModule, i2$4.MatTableModule, i3$1.MatExpansionModule, i1$3.MatFormFieldModule, i2$3.MatSnackBarModule, i6.MatProgressBarModule, i7.MatProgressSpinnerModule, i5.MatTabsModule, i9.MatMenuModule, i1$2.MatCardModule, i11.MatSelectModule, i12.MatTooltipModule, i13.MatCheckboxModule, i14.MatChipsModule, i15.MatListModule, i2.MatButtonModule, i2$1.MatInputModule, i2$2.MatDialogModule, i19.MatPaginatorModule, i20.MatDatepickerModule, i21.MatGridListModule, i22.MatSlideToggleModule, i23.MatTreeModule, i24.MatNativeDateModule, i25.MatAutocompleteModule, i26.MatSidenavModule, i27.MatIconModule, i28.DragDropModule, i29.MatButtonToggleModule, ErrorBannerComponent,
|
|
2751
2788
|
VkVideoPlayerComponent,
|
|
2752
2789
|
YoutubeVideoPlayerComponent,
|
|
2753
2790
|
DownloadFileButtonEditorComponent,
|
|
2754
|
-
XmlTagDownloadFileButtonComponent, UploadFilesBtnComponent, HtmlViewComponent, XmlTagTableViewComponent, XmlTagViewComponent,
|
|
2755
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
2791
|
+
XmlTagDownloadFileButtonComponent, UploadFilesBtnComponent, HtmlViewComponent, XmlTagTableViewComponent, XmlTagViewComponent, XmlTagHtmlViewComponent, XmlTagTextViewComponent, XmlTagHeaderTextViewComponent, XmlTagHeaderInnerTextViewComponent, XmlTagExternalVideoComponent, HtmlRawViewComponent, FileImageTagViewComponent, XmlTagCustomWidgetComponent, HtmlViewComponent, MainEditorComponent, FileIdSelectComponent, TextEditorComponent, ImageEditorComponent, MainEditorBlockComponent, VisualEditorComponent, AddFilesBtnComponent, HtmlRawEditorComponent, CustomWidgetEditorComponent, TagToSpanPipe, ToPreviewPipe, ToHtmlBodyTagsPipe, ToPreviewHtmlPipe], exports: [UploadFilesBtnComponent, HtmlViewComponent, XmlTagTableViewComponent, XmlTagViewComponent, XmlTagHtmlViewComponent, XmlTagTextViewComponent, XmlTagHeaderTextViewComponent, XmlTagHeaderInnerTextViewComponent, XmlTagExternalVideoComponent, HtmlRawViewComponent, FileImageTagViewComponent, XmlTagCustomWidgetComponent, HtmlViewComponent, MainEditorComponent, FileIdSelectComponent, TextEditorComponent, ImageEditorComponent, MainEditorBlockComponent, VisualEditorComponent, AddFilesBtnComponent, HtmlRawEditorComponent, CustomWidgetEditorComponent, TagToSpanPipe, ToPreviewPipe, ToHtmlBodyTagsPipe, ToPreviewHtmlPipe] }); }
|
|
2792
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CrocoHtmlModule, imports: [CommonModule,
|
|
2756
2793
|
FormsModule,
|
|
2757
2794
|
ReactiveFormsModule,
|
|
2758
2795
|
NgSelectModule, MaterialModules, ErrorBannerComponent,
|
|
2759
2796
|
DownloadFileButtonEditorComponent,
|
|
2760
2797
|
XmlTagDownloadFileButtonComponent, UploadFilesBtnComponent, HtmlViewComponent, XmlTagTableViewComponent, XmlTagViewComponent, HtmlViewComponent, MainEditorComponent, FileIdSelectComponent, TextEditorComponent, ImageEditorComponent, MainEditorBlockComponent, VisualEditorComponent, AddFilesBtnComponent, HtmlRawEditorComponent, CustomWidgetEditorComponent] }); }
|
|
2761
2798
|
}
|
|
2762
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2799
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CrocoHtmlModule, decorators: [{
|
|
2763
2800
|
type: NgModule,
|
|
2764
2801
|
args: [{
|
|
2765
2802
|
exports: [
|
|
@@ -2789,5 +2826,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
2789
2826
|
* Generated bundle index. Do not edit.
|
|
2790
2827
|
*/
|
|
2791
2828
|
|
|
2792
|
-
export { AddFilesBtnComponent, AngularMaterialTableMethods, BodyTagsExtensions, BootstrapTableMethods, CrocoHtmlFileOptionsService, CrocoHtmlModule, CrocoHtmlOptionsToken, CustomWidgetEditorComponent,
|
|
2829
|
+
export { AddFilesBtnComponent, AngularMaterialTableMethods, BodyTagsExtensions, BootstrapTableMethods, CrocoHtmlFileOptionsService, CrocoHtmlModule, CrocoHtmlOptionsToken, CustomWidgetEditorComponent, ExternalVideoEditorComponent, ExternalVideoPlayers, ExternalVideoSupportedTypes, ExternalVideoTagDataConsts, FileIdSelectComponent, FileImageTagDataConsts, FileImageTagViewComponent, FileType, HtmlRawEditorComponent, HtmlRawViewComponent, HtmlViewComponent, HtmlViewController, ImageEditorComponent, ImageMethods, MainEditorBlockComponent, MainEditorComponent, TableBuilder, TableMethods, TableTypes, TagToSpanPipe, TextEditorComponent, TextSimpleMethods, TextTag, TextTags, ToHtmlBodyTagsPipe, ToPreviewHtmlPipe, ToPreviewPipe, UploadFilesBtnComponent, VisualEditorComponent, XmlExtensions, XmlTagCustomWidgetComponent, XmlTagExternalVideoComponent, XmlTagHeaderInnerTextViewComponent, XmlTagHeaderTextViewComponent, XmlTagHtmlViewComponent, XmlTagTableViewComponent, XmlTagTextViewComponent, XmlTagViewComponent };
|
|
2793
2830
|
//# sourceMappingURL=croco-html.mjs.map
|