croco-html 1.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/{esm2020 → esm2022}/croco-html.mjs +4 -4
  2. package/esm2022/lib/components/add-files-btn/add-files-btn.component.mjs +53 -0
  3. package/esm2022/lib/components/editor/external-video-block/external-video-block.component.mjs +43 -0
  4. package/{esm2020 → esm2022}/lib/components/editor/html-raw-editor/html-raw-editor.component.mjs +25 -25
  5. package/{esm2020 → esm2022}/lib/components/editor/image-editor/image-editor.component.mjs +46 -46
  6. package/{esm2020 → esm2022}/lib/components/editor/index.mjs +7 -7
  7. package/{esm2020 → esm2022}/lib/components/editor/main-editor/main-editor.component.mjs +76 -76
  8. package/{esm2020 → esm2022}/lib/components/editor/main-editor-block/main-editor-block.component.mjs +41 -41
  9. package/{esm2020 → esm2022}/lib/components/editor/text-editor/text-editor.component.mjs +30 -30
  10. package/esm2022/lib/components/editor/visual-editor/DefaultTags.mjs +27 -0
  11. package/esm2022/lib/components/editor/visual-editor/visual-editor.component.mjs +134 -0
  12. package/{esm2020 → esm2022}/lib/components/file-id-select/file-id-select.component.mjs +58 -58
  13. package/esm2022/lib/components/html-view/html-view.component.mjs +18 -0
  14. package/{esm2020 → esm2022}/lib/components/index.mjs +7 -6
  15. package/{esm2020 → esm2022}/lib/components/upload-files-btn/upload-files-btn.component.mjs +54 -54
  16. package/{esm2020 → esm2022}/lib/components/xml-tags/html-raw-view/html-raw-view.component.mjs +22 -22
  17. package/{esm2020 → esm2022}/lib/components/xml-tags/index.mjs +9 -9
  18. package/esm2022/lib/components/xml-tags/xml-tag-external-video/xml-tag-external-video.component.mjs +49 -0
  19. package/{esm2020 → esm2022}/lib/components/xml-tags/xml-tag-header-inner-text-view/xml-tag-header-inner-text-view.component.mjs +17 -17
  20. package/{esm2020 → esm2022}/lib/components/xml-tags/xml-tag-header-text-view/xml-tag-header-text-view.component.mjs +18 -18
  21. package/{esm2020 → esm2022}/lib/components/xml-tags/xml-tag-html-view/xml-tag-html-view.component.mjs +16 -16
  22. package/{esm2020 → esm2022}/lib/components/xml-tags/xml-tag-rich-text-view/xml-tag-rich-text-view.component.mjs +20 -20
  23. package/{esm2020 → esm2022}/lib/components/xml-tags/xml-tag-table-view/xml-tag-table-view.component.mjs +20 -20
  24. package/{esm2020 → esm2022}/lib/components/xml-tags/xml-tag-text-view/xml-tag-text-view.component.mjs +17 -17
  25. package/esm2022/lib/components/xml-tags/xml-tag-view/xml-tag-view.component.mjs +22 -0
  26. package/esm2022/lib/croco-html.module.mjs +92 -0
  27. package/esm2022/lib/extensions/AngularMaterialTableMethods.mjs +64 -0
  28. package/esm2022/lib/extensions/BodyTagsExtensions.mjs +120 -0
  29. package/esm2022/lib/extensions/BootstrapTableMethods.mjs +67 -0
  30. package/esm2022/lib/extensions/HtmlExtractionMethods.mjs +63 -0
  31. package/{esm2020 → esm2022}/lib/extensions/HtmlRawTagDataConsts.mjs +4 -4
  32. package/esm2022/lib/extensions/ImageMethods.mjs +32 -0
  33. package/{esm2020 → esm2022}/lib/extensions/InterfaceBlock.mjs +1 -1
  34. package/esm2022/lib/extensions/TableBuilder.mjs +35 -0
  35. package/esm2022/lib/extensions/TableMethods.mjs +108 -0
  36. package/esm2022/lib/extensions/TextMethods.mjs +29 -0
  37. package/esm2022/lib/extensions/TextSimpleMethods.mjs +77 -0
  38. package/esm2022/lib/extensions/VideoMethods.mjs +20 -0
  39. package/{esm2020 → esm2022}/lib/extensions/XmlExtensions.mjs +25 -25
  40. package/{esm2020 → esm2022}/lib/extensions/index.mjs +12 -12
  41. package/esm2022/lib/index.mjs +118 -0
  42. package/{esm2020 → esm2022}/lib/models/models.mjs +2 -2
  43. package/esm2022/lib/pipes/RichTextToHtmlPipe.mjs +26 -0
  44. package/{esm2020 → esm2022}/lib/pipes/TagToSpanPipe.mjs +16 -16
  45. package/{esm2020 → esm2022}/lib/pipes/ToHtmlBodyTagsPipe.mjs +17 -17
  46. package/{esm2020 → esm2022}/lib/pipes/ToPreviewHtmlPipe.mjs +17 -17
  47. package/{esm2020 → esm2022}/lib/pipes/index.mjs +5 -5
  48. package/{esm2020 → esm2022}/lib/pipes/to-preview.pipe.mjs +20 -20
  49. package/esm2022/lib/services/file-upload.service.mjs +70 -0
  50. package/{esm2020 → esm2022}/lib/services/files-query.service.mjs +27 -27
  51. package/{esm2020 → esm2022}/public-api.mjs +7 -7
  52. package/{fesm2020 → fesm2022}/croco-html.mjs +1511 -1496
  53. package/fesm2022/croco-html.mjs.map +1 -0
  54. package/index.d.ts +5 -5
  55. package/lib/components/add-files-btn/add-files-btn.component.d.ts +18 -18
  56. package/lib/components/editor/external-video-block/external-video-block.component.d.ts +17 -17
  57. package/lib/components/editor/html-raw-editor/html-raw-editor.component.d.ts +11 -11
  58. package/lib/components/editor/image-editor/image-editor.component.d.ts +18 -18
  59. package/lib/components/editor/index.d.ts +7 -7
  60. package/lib/components/editor/main-editor/main-editor.component.d.ts +27 -27
  61. package/lib/components/editor/main-editor-block/main-editor-block.component.d.ts +16 -16
  62. package/lib/components/editor/text-editor/text-editor.component.d.ts +12 -12
  63. package/lib/components/editor/visual-editor/DefaultTags.d.ts +6 -6
  64. package/lib/components/editor/visual-editor/visual-editor.component.d.ts +36 -36
  65. package/lib/components/file-id-select/file-id-select.component.d.ts +27 -27
  66. package/lib/components/html-view/html-view.component.d.ts +6 -0
  67. package/lib/components/index.d.ts +6 -5
  68. package/lib/components/upload-files-btn/upload-files-btn.component.d.ts +24 -24
  69. package/lib/components/xml-tags/html-raw-view/html-raw-view.component.d.ts +13 -13
  70. package/lib/components/xml-tags/index.d.ts +9 -9
  71. package/lib/components/xml-tags/xml-tag-external-video/xml-tag-external-video.component.d.ts +16 -16
  72. package/lib/components/xml-tags/xml-tag-header-inner-text-view/xml-tag-header-inner-text-view.component.d.ts +10 -10
  73. package/lib/components/xml-tags/xml-tag-header-text-view/xml-tag-header-text-view.component.d.ts +10 -10
  74. package/lib/components/xml-tags/xml-tag-html-view/xml-tag-html-view.component.d.ts +7 -7
  75. package/lib/components/xml-tags/xml-tag-rich-text-view/xml-tag-rich-text-view.component.d.ts +10 -10
  76. package/lib/components/xml-tags/xml-tag-table-view/xml-tag-table-view.component.d.ts +7 -7
  77. package/lib/components/xml-tags/xml-tag-text-view/xml-tag-text-view.component.d.ts +10 -10
  78. package/lib/components/xml-tags/xml-tag-view/xml-tag-view.component.d.ts +8 -8
  79. package/lib/croco-html.module.d.ts +64 -63
  80. package/lib/extensions/AngularMaterialTableMethods.d.ts +7 -10
  81. package/lib/extensions/BodyTagsExtensions.d.ts +11 -11
  82. package/lib/extensions/BootstrapTableMethods.d.ts +9 -9
  83. package/lib/extensions/HtmlExtractionMethods.d.ts +73 -73
  84. package/lib/extensions/HtmlRawTagDataConsts.d.ts +3 -3
  85. package/lib/extensions/ImageMethods.d.ts +18 -18
  86. package/lib/extensions/InterfaceBlock.d.ts +4 -4
  87. package/lib/extensions/TableBuilder.d.ts +5 -5
  88. package/lib/extensions/TableMethods.d.ts +59 -59
  89. package/lib/extensions/TextMethods.d.ts +19 -19
  90. package/lib/extensions/TextSimpleMethods.d.ts +23 -23
  91. package/lib/extensions/VideoMethods.d.ts +19 -19
  92. package/lib/extensions/XmlExtensions.d.ts +5 -5
  93. package/lib/extensions/index.d.ts +10 -10
  94. package/lib/index.d.ts +21 -21
  95. package/lib/models/models.d.ts +14 -10
  96. package/lib/pipes/RichTextToHtmlPipe.d.ts +8 -8
  97. package/lib/pipes/TagToSpanPipe.d.ts +7 -7
  98. package/lib/pipes/ToHtmlBodyTagsPipe.d.ts +8 -8
  99. package/lib/pipes/ToPreviewHtmlPipe.d.ts +9 -9
  100. package/lib/pipes/index.d.ts +5 -5
  101. package/lib/pipes/to-preview.pipe.d.ts +8 -8
  102. package/lib/services/file-upload.service.d.ts +34 -34
  103. package/lib/services/files-query.service.d.ts +42 -42
  104. package/package.json +11 -17
  105. package/public-api.d.ts +4 -4
  106. package/esm2020/lib/components/add-files-btn/add-files-btn.component.mjs +0 -53
  107. package/esm2020/lib/components/editor/external-video-block/external-video-block.component.mjs +0 -43
  108. package/esm2020/lib/components/editor/visual-editor/DefaultTags.mjs +0 -27
  109. package/esm2020/lib/components/editor/visual-editor/visual-editor.component.mjs +0 -134
  110. package/esm2020/lib/components/xml-tags/xml-tag-external-video/xml-tag-external-video.component.mjs +0 -49
  111. package/esm2020/lib/components/xml-tags/xml-tag-view/xml-tag-view.component.mjs +0 -22
  112. package/esm2020/lib/croco-html.module.mjs +0 -91
  113. package/esm2020/lib/extensions/AngularMaterialTableMethods.mjs +0 -64
  114. package/esm2020/lib/extensions/BodyTagsExtensions.mjs +0 -120
  115. package/esm2020/lib/extensions/BootstrapTableMethods.mjs +0 -67
  116. package/esm2020/lib/extensions/HtmlExtractionMethods.mjs +0 -63
  117. package/esm2020/lib/extensions/ImageMethods.mjs +0 -32
  118. package/esm2020/lib/extensions/TableBuilder.mjs +0 -35
  119. package/esm2020/lib/extensions/TableMethods.mjs +0 -108
  120. package/esm2020/lib/extensions/TextMethods.mjs +0 -29
  121. package/esm2020/lib/extensions/TextSimpleMethods.mjs +0 -77
  122. package/esm2020/lib/extensions/VideoMethods.mjs +0 -20
  123. package/esm2020/lib/index.mjs +0 -116
  124. package/esm2020/lib/pipes/RichTextToHtmlPipe.mjs +0 -26
  125. package/esm2020/lib/services/file-upload.service.mjs +0 -70
  126. package/fesm2015/croco-html.mjs +0 -1636
  127. package/fesm2015/croco-html.mjs.map +0 -1
  128. package/fesm2020/croco-html.mjs.map +0 -1
@@ -1,19 +1,19 @@
1
- export declare class ExternalVideoTagDataConsts {
2
- static TagName: string;
3
- static VideoTypeAttrName: string;
4
- static LinkAttrName: string;
5
- }
6
- export declare class ExternalVideoSupportedTypes {
7
- static Youtube: string;
8
- }
9
- export interface ExternalVideoTag {
10
- type: string;
11
- data: ExternalVideoTagData;
12
- }
13
- export interface ExternalVideoTagData {
14
- type: string;
15
- link: string;
16
- }
17
- export declare class VideoMethods {
18
- static ExtractExternalVideoTag(elem: HTMLElement): ExternalVideoTag;
19
- }
1
+ export declare class ExternalVideoTagDataConsts {
2
+ static TagName: string;
3
+ static VideoTypeAttrName: string;
4
+ static LinkAttrName: string;
5
+ }
6
+ export declare class ExternalVideoSupportedTypes {
7
+ static Youtube: string;
8
+ }
9
+ export interface ExternalVideoTag {
10
+ type: string;
11
+ data: ExternalVideoTagData;
12
+ }
13
+ export interface ExternalVideoTagData {
14
+ type: string;
15
+ link: string;
16
+ }
17
+ export declare class VideoMethods {
18
+ static ExtractExternalVideoTag(elem: HTMLElement): ExternalVideoTag;
19
+ }
@@ -1,5 +1,5 @@
1
- export declare class XmlExtensions {
2
- static formatXml(xml: string, tab?: string): string;
3
- static tagsToLower(xml: string): string;
4
- static replaceTagToLower(xml: string, tag: string): string;
5
- }
1
+ export declare class XmlExtensions {
2
+ static formatXml(xml: string, tab?: string): string;
3
+ static tagsToLower(xml: string): string;
4
+ static replaceTagToLower(xml: string, tag: string): string;
5
+ }
@@ -1,10 +1,10 @@
1
- export * from './AngularMaterialTableMethods';
2
- export * from './BodyTagsExtensions';
3
- export * from './BootstrapTableMethods';
4
- export * from './ImageMethods';
5
- export * from './TableBuilder';
6
- export * from './TableMethods';
7
- export * from './TextMethods';
8
- export * from './TextSimpleMethods';
9
- export * from './VideoMethods';
10
- export * from './XmlExtensions';
1
+ export * from './AngularMaterialTableMethods';
2
+ export * from './BodyTagsExtensions';
3
+ export * from './BootstrapTableMethods';
4
+ export * from './ImageMethods';
5
+ export * from './TableBuilder';
6
+ export * from './TableMethods';
7
+ export * from './TextMethods';
8
+ export * from './TextSimpleMethods';
9
+ export * from './VideoMethods';
10
+ export * from './XmlExtensions';
package/lib/index.d.ts CHANGED
@@ -1,21 +1,21 @@
1
- import { MainEditorBlockComponent } from "./components/editor/main-editor-block/main-editor-block.component";
2
- import { MainEditorComponent } from "./components/editor/main-editor/main-editor.component";
3
- import { FileIdSelectComponent } from "./components/file-id-select/file-id-select.component";
4
- import { XmlTagHeaderInnerTextViewComponent } from "./components/xml-tags/xml-tag-header-inner-text-view/xml-tag-header-inner-text-view.component";
5
- import { XmlTagHtmlViewComponent } from "./components/xml-tags/xml-tag-html-view/xml-tag-html-view.component";
6
- import { XmlTagRichTextViewComponent } from "./components/xml-tags/xml-tag-rich-text-view/xml-tag-rich-text-view.component";
7
- import { XmlTagTableViewComponent } from "./components/xml-tags/xml-tag-table-view/xml-tag-table-view.component";
8
- import { XmlTagViewComponent } from "./components/xml-tags/xml-tag-view/xml-tag-view.component";
9
- import { VisualEditorComponent } from './components/editor/visual-editor/visual-editor.component';
10
- import { AddFilesBtnComponent } from './components/add-files-btn/add-files-btn.component';
11
- import { XmlTagExternalVideoComponent } from "./components/xml-tags/xml-tag-external-video/xml-tag-external-video.component";
12
- import { HtmlRawEditorComponent } from "./components/editor/html-raw-editor/html-raw-editor.component";
13
- import { MatButtonModule } from '@angular/material/button';
14
- import { RichTextToHtmlPipe, TagToSpanPipe, ToHtmlBodyTagsPipe, ToPreviewHtmlPipe } from "./pipes";
15
- import { UploadFilesBtnComponent } from "./components";
16
- import { HtmlRawViewComponent } from "./components/xml-tags/html-raw-view/html-raw-view.component";
17
- export declare const EditorComponents: (typeof AddFilesBtnComponent | typeof HtmlRawEditorComponent | typeof VisualEditorComponent | typeof MainEditorComponent | typeof MainEditorBlockComponent | typeof FileIdSelectComponent)[];
18
- export declare const XmlComponents: (typeof XmlTagExternalVideoComponent | typeof XmlTagHeaderInnerTextViewComponent | typeof XmlTagHtmlViewComponent | typeof XmlTagRichTextViewComponent | typeof XmlTagTableViewComponent | typeof XmlTagViewComponent | typeof HtmlRawViewComponent)[];
19
- export declare const CrocoPipes: (typeof RichTextToHtmlPipe | typeof TagToSpanPipe | typeof ToHtmlBodyTagsPipe | typeof ToPreviewHtmlPipe)[];
20
- export declare const CrocoHtmlDeclarations: (typeof UploadFilesBtnComponent | typeof AddFilesBtnComponent | typeof HtmlRawEditorComponent | typeof VisualEditorComponent | typeof MainEditorComponent | typeof MainEditorBlockComponent | typeof FileIdSelectComponent | typeof XmlTagExternalVideoComponent | typeof XmlTagHeaderInnerTextViewComponent | typeof XmlTagHtmlViewComponent | typeof XmlTagRichTextViewComponent | typeof XmlTagTableViewComponent | typeof XmlTagViewComponent | typeof HtmlRawViewComponent | typeof RichTextToHtmlPipe | typeof TagToSpanPipe | typeof ToHtmlBodyTagsPipe | typeof ToPreviewHtmlPipe)[];
21
- export declare const MaterialModules: (typeof MatButtonModule)[];
1
+ import { MainEditorBlockComponent } from "./components/editor/main-editor-block/main-editor-block.component";
2
+ import { MainEditorComponent } from "./components/editor/main-editor/main-editor.component";
3
+ import { FileIdSelectComponent } from "./components/file-id-select/file-id-select.component";
4
+ import { XmlTagHeaderInnerTextViewComponent } from "./components/xml-tags/xml-tag-header-inner-text-view/xml-tag-header-inner-text-view.component";
5
+ import { XmlTagHtmlViewComponent } from "./components/xml-tags/xml-tag-html-view/xml-tag-html-view.component";
6
+ import { XmlTagRichTextViewComponent } from "./components/xml-tags/xml-tag-rich-text-view/xml-tag-rich-text-view.component";
7
+ import { XmlTagTableViewComponent } from "./components/xml-tags/xml-tag-table-view/xml-tag-table-view.component";
8
+ import { XmlTagViewComponent } from "./components/xml-tags/xml-tag-view/xml-tag-view.component";
9
+ import { VisualEditorComponent } from './components/editor/visual-editor/visual-editor.component';
10
+ import { AddFilesBtnComponent } from './components/add-files-btn/add-files-btn.component';
11
+ import { XmlTagExternalVideoComponent } from "./components/xml-tags/xml-tag-external-video/xml-tag-external-video.component";
12
+ import { HtmlRawEditorComponent } from "./components/editor/html-raw-editor/html-raw-editor.component";
13
+ import { MatNativeDateModule } from '@angular/material/core';
14
+ import { RichTextToHtmlPipe, TagToSpanPipe, ToHtmlBodyTagsPipe, ToPreviewHtmlPipe } from "./pipes";
15
+ import { UploadFilesBtnComponent } from "./components";
16
+ import { HtmlRawViewComponent } from "./components/xml-tags/html-raw-view/html-raw-view.component";
17
+ export declare const EditorComponents: (typeof AddFilesBtnComponent | typeof HtmlRawEditorComponent | typeof VisualEditorComponent | typeof MainEditorComponent | typeof MainEditorBlockComponent | typeof FileIdSelectComponent)[];
18
+ export declare const XmlComponents: (typeof XmlTagExternalVideoComponent | typeof XmlTagHeaderInnerTextViewComponent | typeof XmlTagHtmlViewComponent | typeof XmlTagRichTextViewComponent | typeof XmlTagTableViewComponent | typeof XmlTagViewComponent | typeof HtmlRawViewComponent)[];
19
+ export declare const CrocoPipes: (typeof RichTextToHtmlPipe | typeof TagToSpanPipe | typeof ToHtmlBodyTagsPipe | typeof ToPreviewHtmlPipe)[];
20
+ export declare const CrocoHtmlDeclarations: (typeof UploadFilesBtnComponent | typeof AddFilesBtnComponent | typeof HtmlRawEditorComponent | typeof VisualEditorComponent | typeof MainEditorComponent | typeof MainEditorBlockComponent | typeof FileIdSelectComponent | typeof XmlTagExternalVideoComponent | typeof XmlTagHeaderInnerTextViewComponent | typeof XmlTagHtmlViewComponent | typeof XmlTagRichTextViewComponent | typeof XmlTagTableViewComponent | typeof XmlTagViewComponent | typeof HtmlRawViewComponent | typeof RichTextToHtmlPipe | typeof TagToSpanPipe | typeof ToHtmlBodyTagsPipe | typeof ToPreviewHtmlPipe)[];
21
+ export declare const MaterialModules: (typeof MatNativeDateModule)[];
@@ -1,10 +1,14 @@
1
- export interface TagItem {
2
- tag: string;
3
- displayValue: string;
4
- }
5
- export interface HtmlBodyTag {
6
- tagDescription: TagItem;
7
- innerHtml: string;
8
- attributes: Object;
9
- presentOrEdit: boolean;
10
- }
1
+ export interface TagItem {
2
+ tag: string;
3
+ displayValue: string;
4
+ }
5
+ export interface HtmlBodyTag {
6
+ tagDescription: TagItem;
7
+ innerHtml: string;
8
+ attributes: Object;
9
+ presentOrEdit: boolean;
10
+ }
11
+ export interface AngularMaterialTableData {
12
+ displayedColumns: string[];
13
+ data: object[];
14
+ }
@@ -1,8 +1,8 @@
1
- import { PipeTransform } from "@angular/core";
2
- import { RichTextData } from "../extensions/TextMethods";
3
- import * as i0 from "@angular/core";
4
- export declare class RichTextToHtmlPipe implements PipeTransform {
5
- transform(value: RichTextData): string;
6
- static ɵfac: i0.ɵɵFactoryDeclaration<RichTextToHtmlPipe, never>;
7
- static ɵpipe: i0.ɵɵPipeDeclaration<RichTextToHtmlPipe, "richTextToHtml", false>;
8
- }
1
+ import { PipeTransform } from "@angular/core";
2
+ import { RichTextData } from "../extensions/TextMethods";
3
+ import * as i0 from "@angular/core";
4
+ export declare class RichTextToHtmlPipe implements PipeTransform {
5
+ transform(value: RichTextData): string;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<RichTextToHtmlPipe, never>;
7
+ static ɵpipe: i0.ɵɵPipeDeclaration<RichTextToHtmlPipe, "richTextToHtml", false>;
8
+ }
@@ -1,7 +1,7 @@
1
- import { PipeTransform } from "@angular/core";
2
- import * as i0 from "@angular/core";
3
- export declare class TagToSpanPipe implements PipeTransform {
4
- transform(value: string[]): string;
5
- static ɵfac: i0.ɵɵFactoryDeclaration<TagToSpanPipe, never>;
6
- static ɵpipe: i0.ɵɵPipeDeclaration<TagToSpanPipe, "tagToSpan", false>;
7
- }
1
+ import { PipeTransform } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export declare class TagToSpanPipe implements PipeTransform {
4
+ transform(value: string[]): string;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<TagToSpanPipe, never>;
6
+ static ɵpipe: i0.ɵɵPipeDeclaration<TagToSpanPipe, "tagToSpan", false>;
7
+ }
@@ -1,8 +1,8 @@
1
- import { PipeTransform } from '@angular/core';
2
- import { HtmlBodyTag } from '../models/models';
3
- import * as i0 from "@angular/core";
4
- export declare class ToHtmlBodyTagsPipe implements PipeTransform {
5
- transform(value: string): HtmlBodyTag[];
6
- static ɵfac: i0.ɵɵFactoryDeclaration<ToHtmlBodyTagsPipe, never>;
7
- static ɵpipe: i0.ɵɵPipeDeclaration<ToHtmlBodyTagsPipe, "tohtmlbodytags", false>;
8
- }
1
+ import { PipeTransform } from '@angular/core';
2
+ import { HtmlBodyTag } from '../models/models';
3
+ import * as i0 from "@angular/core";
4
+ export declare class ToHtmlBodyTagsPipe implements PipeTransform {
5
+ transform(value: string): HtmlBodyTag[];
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<ToHtmlBodyTagsPipe, never>;
7
+ static ɵpipe: i0.ɵɵPipeDeclaration<ToHtmlBodyTagsPipe, "tohtmlbodytags", false>;
8
+ }
@@ -1,9 +1,9 @@
1
- import { PipeTransform } from '@angular/core';
2
- import { HtmlExtractionOptions } from '../extensions/HtmlExtractionMethods';
3
- import { InterfaceBlock } from "../extensions/InterfaceBlock";
4
- import * as i0 from "@angular/core";
5
- export declare class ToPreviewHtmlPipe implements PipeTransform {
6
- transform(value: string, options: HtmlExtractionOptions): InterfaceBlock[];
7
- static ɵfac: i0.ɵɵFactoryDeclaration<ToPreviewHtmlPipe, never>;
8
- static ɵpipe: i0.ɵɵPipeDeclaration<ToPreviewHtmlPipe, "topreviewhtml", false>;
9
- }
1
+ import { PipeTransform } from '@angular/core';
2
+ import { HtmlExtractionOptions } from '../extensions/HtmlExtractionMethods';
3
+ import { InterfaceBlock } from "../extensions/InterfaceBlock";
4
+ import * as i0 from "@angular/core";
5
+ export declare class ToPreviewHtmlPipe implements PipeTransform {
6
+ transform(value: string, options: HtmlExtractionOptions): InterfaceBlock[];
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<ToPreviewHtmlPipe, never>;
8
+ static ɵpipe: i0.ɵɵPipeDeclaration<ToPreviewHtmlPipe, "topreviewhtml", false>;
9
+ }
@@ -1,5 +1,5 @@
1
- export * from "./RichTextToHtmlPipe";
2
- export * from "./TagToSpanPipe";
3
- export * from "./to-preview.pipe";
4
- export * from "./ToHtmlBodyTagsPipe";
5
- export * from "./ToPreviewHtmlPipe";
1
+ export * from "./RichTextToHtmlPipe";
2
+ export * from "./TagToSpanPipe";
3
+ export * from "./to-preview.pipe";
4
+ export * from "./ToHtmlBodyTagsPipe";
5
+ export * from "./ToPreviewHtmlPipe";
@@ -1,8 +1,8 @@
1
- import { PipeTransform } from '@angular/core';
2
- import { InterfaceBlock } from "../extensions/InterfaceBlock";
3
- import * as i0 from "@angular/core";
4
- export declare class ToPreviewPipe implements PipeTransform {
5
- transform(value: string): InterfaceBlock[];
6
- static ɵfac: i0.ɵɵFactoryDeclaration<ToPreviewPipe, never>;
7
- static ɵpipe: i0.ɵɵPipeDeclaration<ToPreviewPipe, "topreview", false>;
8
- }
1
+ import { PipeTransform } from '@angular/core';
2
+ import { InterfaceBlock } from "../extensions/InterfaceBlock";
3
+ import * as i0 from "@angular/core";
4
+ export declare class ToPreviewPipe implements PipeTransform {
5
+ transform(value: string): InterfaceBlock[];
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<ToPreviewPipe, never>;
7
+ static ɵpipe: i0.ɵɵPipeDeclaration<ToPreviewPipe, "topreview", false>;
8
+ }
@@ -1,34 +1,34 @@
1
- import { HttpClient, HttpEvent } from '@angular/common/http';
2
- import { Observable } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- export interface BaseApiResponse {
5
- isSucceeded: boolean;
6
- message: string;
7
- }
8
- export interface GenericBaseApiResponse<T> extends BaseApiResponse {
9
- responseObject: T;
10
- }
11
- export interface BaseApiResponseWithFilesIds extends BaseApiResponse {
12
- responseObject: number[];
13
- }
14
- export interface UploadFileWithProgressEvent {
15
- loading: boolean;
16
- response?: BaseApiResponseWithFilesIds;
17
- uploadingLoaded: number;
18
- uploadingTotal: number;
19
- }
20
- export declare class FileUploadService {
21
- private _httpClient;
22
- private baseUrl;
23
- constructor(_httpClient: HttpClient, baseUrl: string);
24
- postFile(file: File, createLocalCopiesNow: boolean, withProgress: true): Observable<HttpEvent<BaseApiResponseWithFilesIds>>;
25
- postFile(file: File, createLocalCopiesNow?: boolean, withProgress?: false): Observable<BaseApiResponseWithFilesIds>;
26
- postFile(file: File, createLocalCopiesNow?: boolean, withProgress?: boolean): Observable<BaseApiResponseWithFilesIds> | Observable<HttpEvent<BaseApiResponseWithFilesIds>>;
27
- postFiles(files: FileList, createLocalCopiesNow?: boolean): Observable<BaseApiResponseWithFilesIds>;
28
- postFilesInner(formData: FormData, createLocalCopiesNow: boolean, withProgress: true): Observable<HttpEvent<BaseApiResponseWithFilesIds>>;
29
- postFilesInner(formData: FormData, createLocalCopiesNow?: boolean, withProgress?: false): Observable<BaseApiResponseWithFilesIds>;
30
- postFilesInner(formData: FormData, createLocalCopiesNow: boolean, withProgress: boolean): Observable<BaseApiResponseWithFilesIds> | Observable<HttpEvent<BaseApiResponseWithFilesIds>>;
31
- uploadFileWithProgress(file: File, createLocalCopiesNow?: boolean): Observable<UploadFileWithProgressEvent>;
32
- static ɵfac: i0.ɵɵFactoryDeclaration<FileUploadService, never>;
33
- static ɵprov: i0.ɵɵInjectableDeclaration<FileUploadService>;
34
- }
1
+ import { HttpClient, HttpEvent } from '@angular/common/http';
2
+ import { Observable } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export interface BaseApiResponse {
5
+ isSucceeded: boolean;
6
+ message: string;
7
+ }
8
+ export interface GenericBaseApiResponse<T> extends BaseApiResponse {
9
+ responseObject: T;
10
+ }
11
+ export interface BaseApiResponseWithFilesIds extends BaseApiResponse {
12
+ responseObject: number[];
13
+ }
14
+ export interface UploadFileWithProgressEvent {
15
+ loading: boolean;
16
+ response?: BaseApiResponseWithFilesIds;
17
+ uploadingLoaded: number;
18
+ uploadingTotal: number;
19
+ }
20
+ export declare class FileUploadService {
21
+ private _httpClient;
22
+ private baseUrl;
23
+ constructor(_httpClient: HttpClient, baseUrl: string);
24
+ postFile(file: File, createLocalCopiesNow: boolean, withProgress: true): Observable<HttpEvent<BaseApiResponseWithFilesIds>>;
25
+ postFile(file: File, createLocalCopiesNow?: boolean, withProgress?: false): Observable<BaseApiResponseWithFilesIds>;
26
+ postFile(file: File, createLocalCopiesNow?: boolean, withProgress?: boolean): Observable<BaseApiResponseWithFilesIds> | Observable<HttpEvent<BaseApiResponseWithFilesIds>>;
27
+ postFiles(files: FileList, createLocalCopiesNow?: boolean): Observable<BaseApiResponseWithFilesIds>;
28
+ postFilesInner(formData: FormData, createLocalCopiesNow: boolean, withProgress: true): Observable<HttpEvent<BaseApiResponseWithFilesIds>>;
29
+ postFilesInner(formData: FormData, createLocalCopiesNow?: boolean, withProgress?: false): Observable<BaseApiResponseWithFilesIds>;
30
+ postFilesInner(formData: FormData, createLocalCopiesNow: boolean, withProgress: boolean): Observable<BaseApiResponseWithFilesIds> | Observable<HttpEvent<BaseApiResponseWithFilesIds>>;
31
+ uploadFileWithProgress(file: File, createLocalCopiesNow?: boolean): Observable<UploadFileWithProgressEvent>;
32
+ static ɵfac: i0.ɵɵFactoryDeclaration<FileUploadService, never>;
33
+ static ɵprov: i0.ɵɵInjectableDeclaration<FileUploadService>;
34
+ }
@@ -1,42 +1,42 @@
1
- import { HttpClient } from "@angular/common/http";
2
- import { Observable } from "rxjs";
3
- import * as i0 from "@angular/core";
4
- export interface GetListResult<T> {
5
- totalCount: number;
6
- list: Array<T>;
7
- }
8
- export interface DbFileNoDataWithRelations {
9
- id: number;
10
- fileName: string;
11
- relations: Array<FileRelationModel>;
12
- }
13
- export interface FileRelationModel {
14
- entityTypeFullName: string;
15
- entityKey: string;
16
- relationName: string;
17
- relationValue: string;
18
- relationCustomData: string;
19
- }
20
- export interface SearchFiles {
21
- fileName: string;
22
- q: string;
23
- count: number | null;
24
- offSet: number;
25
- }
26
- export interface GetListSearchModel {
27
- count: number | null;
28
- offSet: number;
29
- }
30
- export interface FileNameAndIdModel {
31
- fileId: number;
32
- fileName: string;
33
- }
34
- export declare class FilesQueryService {
35
- private _httpClient;
36
- _baseControllerUrl: string;
37
- constructor(_httpClient: HttpClient, baseUrl: string);
38
- getFilesWithRelations(model: SearchFiles): Observable<GetListResult<DbFileNoDataWithRelations>>;
39
- getFiles(model: SearchFiles): Observable<GetListResult<FileNameAndIdModel>>;
40
- static ɵfac: i0.ɵɵFactoryDeclaration<FilesQueryService, never>;
41
- static ɵprov: i0.ɵɵInjectableDeclaration<FilesQueryService>;
42
- }
1
+ import { HttpClient } from "@angular/common/http";
2
+ import { Observable } from "rxjs";
3
+ import * as i0 from "@angular/core";
4
+ export interface GetListResult<T> {
5
+ totalCount: number;
6
+ list: Array<T>;
7
+ }
8
+ export interface DbFileNoDataWithRelations {
9
+ id: number;
10
+ fileName: string;
11
+ relations: Array<FileRelationModel>;
12
+ }
13
+ export interface FileRelationModel {
14
+ entityTypeFullName: string;
15
+ entityKey: string;
16
+ relationName: string;
17
+ relationValue: string;
18
+ relationCustomData: string;
19
+ }
20
+ export interface SearchFiles {
21
+ fileName: string;
22
+ q: string;
23
+ count: number | null;
24
+ offSet: number;
25
+ }
26
+ export interface GetListSearchModel {
27
+ count: number | null;
28
+ offSet: number;
29
+ }
30
+ export interface FileNameAndIdModel {
31
+ fileId: number;
32
+ fileName: string;
33
+ }
34
+ export declare class FilesQueryService {
35
+ private _httpClient;
36
+ _baseControllerUrl: string;
37
+ constructor(_httpClient: HttpClient, baseUrl: string);
38
+ getFilesWithRelations(model: SearchFiles): Observable<GetListResult<DbFileNoDataWithRelations>>;
39
+ getFiles(model: SearchFiles): Observable<GetListResult<FileNameAndIdModel>>;
40
+ static ɵfac: i0.ɵɵFactoryDeclaration<FilesQueryService, never>;
41
+ static ɵprov: i0.ɵɵInjectableDeclaration<FilesQueryService>;
42
+ }
package/package.json CHANGED
@@ -1,23 +1,19 @@
1
1
  {
2
2
  "name": "croco-html",
3
- "version": "1.0.0",
3
+ "version": "2.0.1",
4
4
  "peerDependencies": {
5
- "@angular/common": "^16.2.12",
6
- "@angular/core": "^16.2.12",
7
- "@angular/cdk": "^16.2.14",
8
- "@angular/youtube-player": "^15.2.9",
9
- "@angular/material": ">=15.0.0",
5
+ "@angular/common": "^17.3.4",
6
+ "@angular/core": "^17.3.4",
7
+ "@angular/cdk": "^17.3.4",
8
+ "@angular/youtube-player": "^17.3.4",
9
+ "@angular/material": ">=17.0.0",
10
10
  "ngx-clipboard": ">=15.1.0",
11
- "@ng-select/ng-select": ">=8.3.0"
11
+ "@ng-select/ng-select": "^12.0.7"
12
12
  },
13
13
  "dependencies": {
14
14
  "tslib": ">=2.2.0"
15
15
  },
16
- "module": "fesm2015/croco-html.mjs",
17
- "es2020": "fesm2020/croco-html.mjs",
18
- "esm2020": "esm2020/croco-html.mjs",
19
- "fesm2020": "fesm2020/croco-html.mjs",
20
- "fesm2015": "fesm2015/croco-html.mjs",
16
+ "module": "fesm2022/croco-html.mjs",
21
17
  "typings": "index.d.ts",
22
18
  "exports": {
23
19
  "./package.json": {
@@ -25,11 +21,9 @@
25
21
  },
26
22
  ".": {
27
23
  "types": "./index.d.ts",
28
- "esm2020": "./esm2020/croco-html.mjs",
29
- "es2020": "./fesm2020/croco-html.mjs",
30
- "es2015": "./fesm2015/croco-html.mjs",
31
- "node": "./fesm2015/croco-html.mjs",
32
- "default": "./fesm2020/croco-html.mjs"
24
+ "esm2022": "./esm2022/croco-html.mjs",
25
+ "esm": "./esm2022/croco-html.mjs",
26
+ "default": "./fesm2022/croco-html.mjs"
33
27
  }
34
28
  },
35
29
  "sideEffects": false
package/public-api.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export * from './lib/components';
2
- export * from './lib/pipes';
3
- export * from './lib/extensions';
4
- export * from './lib/croco-html.module';
1
+ export * from './lib/components';
2
+ export * from './lib/pipes';
3
+ export * from './lib/extensions';
4
+ export * from './lib/croco-html.module';
@@ -1,53 +0,0 @@
1
- import { Component, EventEmitter, Output, ViewChild } from '@angular/core';
2
- import { FileImageTagDataConsts } from '../../extensions/ImageMethods';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/material/button";
5
- import * as i2 from "../upload-files-btn/upload-files-btn.component";
6
- export class AddFilesBtnComponent {
7
- constructor() {
8
- this.postFilesStarted = new EventEmitter();
9
- this.fileIds = [];
10
- this.filesTagsReady = new EventEmitter();
11
- }
12
- postFilesStartedEventHandler(data) {
13
- this.postFilesStarted.emit(data);
14
- }
15
- filesUploadedHandler(data) {
16
- this.fileIds = data.responseObject;
17
- let fileTags = [];
18
- for (let i = 0; i < this.fileIds.length; i++) {
19
- let fileTag = {
20
- presentOrEdit: true,
21
- tagDescription: {
22
- tag: FileImageTagDataConsts.TagName,
23
- displayValue: "Изображение"
24
- },
25
- attributes: {
26
- [FileImageTagDataConsts.FileIdAttrName]: this.fileIds[i]
27
- },
28
- innerHtml: ""
29
- };
30
- fileTags.push(fileTag);
31
- }
32
- this.filesTagsReady.emit(fileTags);
33
- }
34
- handleClick() {
35
- this.fakeBtn.clickFileInput();
36
- }
37
- ngOnInit() {
38
- }
39
- }
40
- AddFilesBtnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AddFilesBtnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
41
- AddFilesBtnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: AddFilesBtnComponent, 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\">\r\n <croco-app-upload-files-btn #fakeBtn \r\n (onFilesUploaded)=\"filesUploadedHandler($event)\" \r\n [btnText]=\"'\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F'\"\r\n [createLocalCopiesNow]=\"true\"\r\n (postFilesStarted)=\"postFilesStartedEventHandler($event)\" \r\n [extAccepts]=\"'image/*'\"></croco-app-upload-files-btn>\r\n</div>\r\n\r\n<div>\r\n <button class=\"w-100\" \r\n (click)=\"handleClick()\"\r\n mat-stroked-button>\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F</button>\r\n</div>", styles: [""], dependencies: [{ kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i2.UploadFilesBtnComponent, selector: "croco-app-upload-files-btn", inputs: ["extAccepts", "isMultiple", "btnText", "createLocalCopiesNow", "hidden"], outputs: ["postFilesStarted", "onFilesUploaded"] }] });
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AddFilesBtnComponent, decorators: [{
43
- type: Component,
44
- args: [{ selector: 'croco-html-add-files-btn', template: "<div [hidden]=\"true\">\r\n <croco-app-upload-files-btn #fakeBtn \r\n (onFilesUploaded)=\"filesUploadedHandler($event)\" \r\n [btnText]=\"'\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F'\"\r\n [createLocalCopiesNow]=\"true\"\r\n (postFilesStarted)=\"postFilesStartedEventHandler($event)\" \r\n [extAccepts]=\"'image/*'\"></croco-app-upload-files-btn>\r\n</div>\r\n\r\n<div>\r\n <button class=\"w-100\" \r\n (click)=\"handleClick()\"\r\n mat-stroked-button>\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F</button>\r\n</div>" }]
45
- }], ctorParameters: function () { return []; }, propDecorators: { postFilesStarted: [{
46
- type: Output
47
- }], fakeBtn: [{
48
- type: ViewChild,
49
- args: ["fakeBtn"]
50
- }], filesTagsReady: [{
51
- type: Output
52
- }] } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWZpbGVzLWJ0bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcm9jby1odG1sL3NyYy9saWIvY29tcG9uZW50cy9hZGQtZmlsZXMtYnRuL2FkZC1maWxlcy1idG4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JvY28taHRtbC9zcmMvbGliL2NvbXBvbmVudHMvYWRkLWZpbGVzLWJ0bi9hZGQtZmlsZXMtYnRuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7QUFVdkUsTUFBTSxPQUFPLG9CQUFvQjtJQVUvQjtRQVBBLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFzQixDQUFDO1FBSzFELFlBQU8sR0FBWSxFQUFFLENBQUM7UUFLdEIsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztJQUhuQyxDQUFDO0lBS2pCLDRCQUE0QixDQUFDLElBQXdCO1FBQ25ELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQWlDO1FBQ3BELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUVuQyxJQUFJLFFBQVEsR0FBaUIsRUFBRSxDQUFDO1FBRWhDLEtBQUksSUFBSSxDQUFDLEdBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztZQUN6QyxJQUFJLE9BQU8sR0FBZ0I7Z0JBQ3pCLGFBQWEsRUFBRSxJQUFJO2dCQUNuQixjQUFjLEVBQUU7b0JBQ2QsR0FBRyxFQUFFLHNCQUFzQixDQUFDLE9BQU87b0JBQ25DLFlBQVksRUFBRSxhQUFhO2lCQUM1QjtnQkFDRCxVQUFVLEVBQUU7b0JBQ1YsQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztpQkFDekQ7Z0JBQ0QsU0FBUyxFQUFFLEVBQUU7YUFDZCxDQUFDO1lBRUYsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN4QjtRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsUUFBUTtJQUNSLENBQUM7O2lIQWhEVSxvQkFBb0I7cUdBQXBCLG9CQUFvQix5UENYakMsNHNCQWFNOzJGREZPLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSwwQkFBMEI7MEVBT3BDLGdCQUFnQjtzQkFEZixNQUFNO2dCQUlQLE9BQU87c0JBRE4sU0FBUzt1QkFBQyxTQUFTO2dCQVFwQixjQUFjO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGaWxlSW1hZ2VUYWdEYXRhQ29uc3RzIH0gZnJvbSAnLi4vLi4vZXh0ZW5zaW9ucy9JbWFnZU1ldGhvZHMnO1xyXG5pbXBvcnQgeyBIdG1sQm9keVRhZyB9IGZyb20gJy4uLy4uL21vZGVscy9tb2RlbHMnO1xyXG5pbXBvcnQgeyBCYXNlQXBpUmVzcG9uc2VXaXRoRmlsZXNJZHMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWxlLXVwbG9hZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsZVBvc3RpbmdTdGFydGVkLCBVcGxvYWRGaWxlc0J0bkNvbXBvbmVudCB9IGZyb20gJy4uL3VwbG9hZC1maWxlcy1idG4vdXBsb2FkLWZpbGVzLWJ0bi5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjcm9jby1odG1sLWFkZC1maWxlcy1idG4nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtZmlsZXMtYnRuLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hZGQtZmlsZXMtYnRuLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkRmlsZXNCdG5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwb3N0RmlsZXNTdGFydGVkID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlUG9zdGluZ1N0YXJ0ZWQ+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJmYWtlQnRuXCIpXHJcbiAgZmFrZUJ0biE6IFVwbG9hZEZpbGVzQnRuQ29tcG9uZW50O1xyXG5cclxuICBmaWxlSWRzOm51bWJlcltdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGZpbGVzVGFnc1JlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjxIdG1sQm9keVRhZ1tdPigpO1xyXG5cclxuICBwb3N0RmlsZXNTdGFydGVkRXZlbnRIYW5kbGVyKGRhdGE6IEZpbGVQb3N0aW5nU3RhcnRlZCl7XHJcbiAgICB0aGlzLnBvc3RGaWxlc1N0YXJ0ZWQuZW1pdChkYXRhKTtcclxuICB9XHJcblxyXG4gIGZpbGVzVXBsb2FkZWRIYW5kbGVyKGRhdGE6IEJhc2VBcGlSZXNwb25zZVdpdGhGaWxlc0lkcyl7XHJcbiAgICB0aGlzLmZpbGVJZHMgPSBkYXRhLnJlc3BvbnNlT2JqZWN0O1xyXG5cclxuICAgIGxldCBmaWxlVGFnczpIdG1sQm9keVRhZ1tdID0gW107XHJcblxyXG4gICAgZm9yKGxldCBpPSAwOyBpIDwgdGhpcy5maWxlSWRzLmxlbmd0aDsgaSsrKXtcclxuICAgICAgbGV0IGZpbGVUYWc6IEh0bWxCb2R5VGFnID0ge1xyXG4gICAgICAgIHByZXNlbnRPckVkaXQ6IHRydWUsXHJcbiAgICAgICAgdGFnRGVzY3JpcHRpb246IHtcclxuICAgICAgICAgIHRhZzogRmlsZUltYWdlVGFnRGF0YUNvbnN0cy5UYWdOYW1lLFxyXG4gICAgICAgICAgZGlzcGxheVZhbHVlOiBcItCY0LfQvtCx0YDQsNC20LXQvdC40LVcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgYXR0cmlidXRlczoge1xyXG4gICAgICAgICAgW0ZpbGVJbWFnZVRhZ0RhdGFDb25zdHMuRmlsZUlkQXR0ck5hbWVdOiB0aGlzLmZpbGVJZHNbaV1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGlubmVySHRtbDogXCJcIlxyXG4gICAgICB9O1xyXG5cclxuICAgICAgZmlsZVRhZ3MucHVzaChmaWxlVGFnKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpbGVzVGFnc1JlYWR5LmVtaXQoZmlsZVRhZ3MpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ2xpY2soKXtcclxuICAgIHRoaXMuZmFrZUJ0bi5jbGlja0ZpbGVJbnB1dCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgW2hpZGRlbl09XCJ0cnVlXCI+XHJcbiAgICA8Y3JvY28tYXBwLXVwbG9hZC1maWxlcy1idG4gI2Zha2VCdG4gXHJcbiAgICAgICAgKG9uRmlsZXNVcGxvYWRlZCk9XCJmaWxlc1VwbG9hZGVkSGFuZGxlcigkZXZlbnQpXCIgXHJcbiAgICAgICAgW2J0blRleHRdPVwiJ9CU0L7QsdCw0LLQuNGC0Ywg0LjQt9C+0LHRgNCw0LbQtdC90LjRjydcIlxyXG4gICAgICAgIFtjcmVhdGVMb2NhbENvcGllc05vd109XCJ0cnVlXCJcclxuICAgICAgICAocG9zdEZpbGVzU3RhcnRlZCk9XCJwb3N0RmlsZXNTdGFydGVkRXZlbnRIYW5kbGVyKCRldmVudClcIiBcclxuICAgICAgICBbZXh0QWNjZXB0c109XCInaW1hZ2UvKidcIj48L2Nyb2NvLWFwcC11cGxvYWQtZmlsZXMtYnRuPlxyXG48L2Rpdj5cclxuXHJcbjxkaXY+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwidy0xMDBcIiBcclxuICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2soKVwiXHJcbiAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uPtCU0L7QsdCw0LLQuNGC0Ywg0LjQt9C+0LHRgNCw0LbQtdC90LjRjzwvYnV0dG9uPlxyXG48L2Rpdj4iXX0=
@@ -1,43 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { ExternalVideoSupportedTypes } from '../../../extensions/VideoMethods';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@angular/forms";
6
- import * as i3 from "@angular/material/form-field";
7
- import * as i4 from "@angular/material/input";
8
- import * as i5 from "../../xml-tags/xml-tag-external-video/xml-tag-external-video.component";
9
- export class ExternalVideoBlockComponent {
10
- constructor() {
11
- this.onTagUpdated = new EventEmitter();
12
- this.defaultLink = "https://youtu.be/jzBneaWSswY";
13
- this.data = {
14
- youtubeLink: this.defaultLink
15
- };
16
- this.tagData = {
17
- link: this.defaultLink,
18
- type: ExternalVideoSupportedTypes.Youtube
19
- };
20
- }
21
- linkChanged() {
22
- this.tagData.link = this.data.youtubeLink;
23
- this.tag.attributes = this.tagData;
24
- }
25
- ngOnInit() {
26
- if (!this.tag?.attributes?.['link']) {
27
- this.linkChanged();
28
- }
29
- this.tagData = this.tag.attributes;
30
- this.data.youtubeLink = this.tagData.link;
31
- }
32
- }
33
- ExternalVideoBlockComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ExternalVideoBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
34
- ExternalVideoBlockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ExternalVideoBlockComponent, selector: "croco-html-external-video-block", inputs: { tag: "tag" }, outputs: { onTagUpdated: "onTagUpdated" }, ngImport: i0, template: "<div *ngIf=\"tag.presentOrEdit\">\r\n \r\n <div>\r\n \u0421\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 YouTube: {{data.youtubeLink}}\r\n </div>\r\n\r\n <div style=\"height: 10px;\"></div>\r\n\r\n <croco-html-xml-tag-external-video [tagData]=\"tagData\">\r\n </croco-html-xml-tag-external-video>\r\n</div>\r\n\r\n<div *ngIf=\"!tag.presentOrEdit\">\r\n <div>\r\n <div>\r\n <mat-form-field class=\"w-100\">\r\n <input matInput placeholder=\"\u0421\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 YouTube\"\r\n new-autocomplete=\"off\"\r\n autocomplete=\"off\"\r\n [(ngModel)]=\"data.youtubeLink\"\r\n (ngModelChange)=\"linkChanged()\">\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.XmlTagExternalVideoComponent, selector: "croco-html-xml-tag-external-video", inputs: ["data", "tagData"] }] });
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ExternalVideoBlockComponent, decorators: [{
36
- type: Component,
37
- args: [{ selector: 'croco-html-external-video-block', template: "<div *ngIf=\"tag.presentOrEdit\">\r\n \r\n <div>\r\n \u0421\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 YouTube: {{data.youtubeLink}}\r\n </div>\r\n\r\n <div style=\"height: 10px;\"></div>\r\n\r\n <croco-html-xml-tag-external-video [tagData]=\"tagData\">\r\n </croco-html-xml-tag-external-video>\r\n</div>\r\n\r\n<div *ngIf=\"!tag.presentOrEdit\">\r\n <div>\r\n <div>\r\n <mat-form-field class=\"w-100\">\r\n <input matInput placeholder=\"\u0421\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 YouTube\"\r\n new-autocomplete=\"off\"\r\n autocomplete=\"off\"\r\n [(ngModel)]=\"data.youtubeLink\"\r\n (ngModelChange)=\"linkChanged()\">\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n" }]
38
- }], propDecorators: { tag: [{
39
- type: Input
40
- }], onTagUpdated: [{
41
- type: Output
42
- }] } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtdmlkZW8tYmxvY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JvY28taHRtbC9zcmMvbGliL2NvbXBvbmVudHMvZWRpdG9yL2V4dGVybmFsLXZpZGVvLWJsb2NrL2V4dGVybmFsLXZpZGVvLWJsb2NrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nyb2NvLWh0bWwvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvci9leHRlcm5hbC12aWRlby1ibG9jay9leHRlcm5hbC12aWRlby1ibG9jay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBd0IsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7OztBQVFyRyxNQUFNLE9BQU8sMkJBQTJCO0lBTHhDO1FBV0UsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFDO1FBRS9DLGdCQUFXLEdBQUcsOEJBQThCLENBQUM7UUFFN0MsU0FBSSxHQUFHO1lBQ0wsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1NBQzlCLENBQUE7UUFFRCxZQUFPLEdBQXlCO1lBQzlCLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVztZQUN0QixJQUFJLEVBQUUsMkJBQTJCLENBQUMsT0FBTztTQUMxQyxDQUFDO0tBZUg7SUFiQyxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDMUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNyQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ25DLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtRQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFrQyxDQUFDO1FBQzNELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQzVDLENBQUM7O3dIQS9CVSwyQkFBMkI7NEdBQTNCLDJCQUEyQiwwSUNUeEMsaTFCQTBCQTsyRkRqQmEsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLGlDQUFpQzs4QkFPM0MsR0FBRztzQkFERixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRXh0ZXJuYWxWaWRlb1RhZ0RhdGEsIEV4dGVybmFsVmlkZW9TdXBwb3J0ZWRUeXBlcyB9IGZyb20gJy4uLy4uLy4uL2V4dGVuc2lvbnMvVmlkZW9NZXRob2RzJztcclxuaW1wb3J0IHsgSHRtbEJvZHlUYWcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvbW9kZWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY3JvY28taHRtbC1leHRlcm5hbC12aWRlby1ibG9jaycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2V4dGVybmFsLXZpZGVvLWJsb2NrLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9leHRlcm5hbC12aWRlby1ibG9jay5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEV4dGVybmFsVmlkZW9CbG9ja0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdGFnOiBIdG1sQm9keVRhZztcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgb25UYWdVcGRhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxIdG1sQm9keVRhZz4oKTtcclxuXHJcbiAgZGVmYXVsdExpbmsgPSBcImh0dHBzOi8veW91dHUuYmUvanpCbmVhV1Nzd1lcIjtcclxuXHJcbiAgZGF0YSA9IHtcclxuICAgIHlvdXR1YmVMaW5rOiB0aGlzLmRlZmF1bHRMaW5rXHJcbiAgfVxyXG5cclxuICB0YWdEYXRhOiBFeHRlcm5hbFZpZGVvVGFnRGF0YSA9IHtcclxuICAgIGxpbms6IHRoaXMuZGVmYXVsdExpbmssXHJcbiAgICB0eXBlOiBFeHRlcm5hbFZpZGVvU3VwcG9ydGVkVHlwZXMuWW91dHViZVxyXG4gIH07XHJcblxyXG4gIGxpbmtDaGFuZ2VkKCl7XHJcbiAgICB0aGlzLnRhZ0RhdGEubGluayA9IHRoaXMuZGF0YS55b3V0dWJlTGluaztcclxuICAgIHRoaXMudGFnLmF0dHJpYnV0ZXMgPSB0aGlzLnRhZ0RhdGE7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy50YWc/LmF0dHJpYnV0ZXM/LlsnbGluayddKSB7XHJcbiAgICAgIHRoaXMubGlua0NoYW5nZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRhZ0RhdGEgPSB0aGlzLnRhZy5hdHRyaWJ1dGVzIGFzIEV4dGVybmFsVmlkZW9UYWdEYXRhO1xyXG4gICAgdGhpcy5kYXRhLnlvdXR1YmVMaW5rID0gdGhpcy50YWdEYXRhLmxpbms7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJ0YWcucHJlc2VudE9yRWRpdFwiPlxyXG4gICAgXHJcbiAgICA8ZGl2PlxyXG4gICAgICAgINCh0YHRi9C70LrQsCDQvdCwIFlvdVR1YmU6IHt7ZGF0YS55b3V0dWJlTGlua319XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxMHB4O1wiPjwvZGl2PlxyXG5cclxuICAgIDxjcm9jby1odG1sLXhtbC10YWctZXh0ZXJuYWwtdmlkZW8gW3RhZ0RhdGFdPVwidGFnRGF0YVwiPlxyXG4gICAgPC9jcm9jby1odG1sLXhtbC10YWctZXh0ZXJuYWwtdmlkZW8+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiAqbmdJZj1cIiF0YWcucHJlc2VudE9yRWRpdFwiPlxyXG4gICAgPGRpdj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwi0KHRgdGL0LvQutCwINC90LAgWW91VHViZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3LWF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhdGEueW91dHViZUxpbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImxpbmtDaGFuZ2VkKClcIj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
@@ -1,27 +0,0 @@
1
- import { HtmlRawTagDataConsts } from '../../../extensions/HtmlRawTagDataConsts';
2
- import { FileImageTagDataConsts } from '../../../extensions/ImageMethods';
3
- import { ExternalVideoTagDataConsts } from '../../../extensions/VideoMethods';
4
- export class DefaultTags {
5
- static getTags(useHtmlRaw) {
6
- var result = [...DefaultTags.tags];
7
- if (useHtmlRaw) {
8
- result.push(DefaultTags.htmlRawTag);
9
- }
10
- return result;
11
- }
12
- }
13
- DefaultTags.tags = [
14
- { tag: FileImageTagDataConsts.TagName, displayValue: 'Изображение' },
15
- { tag: ExternalVideoTagDataConsts.TagName, displayValue: 'Внешнее видео Youtube' },
16
- { tag: 'text', displayValue: 'Текст' },
17
- { tag: 'h1', displayValue: 'Заголовок 1 уровня' },
18
- { tag: 'h2', displayValue: 'Заголовок 2 уровня' },
19
- { tag: 'h3', displayValue: 'Заголовок 3 уровня' },
20
- { tag: 'h4', displayValue: 'Заголовок 4 уровня' },
21
- { tag: 'h5', displayValue: 'Заголовок 5 уровня' },
22
- { tag: 'h6', displayValue: 'Заголовок 6 уровня' },
23
- ];
24
- DefaultTags.htmlRawTag = {
25
- tag: HtmlRawTagDataConsts.TagName, displayValue: 'Html разметка'
26
- };
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdFRhZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcm9jby1odG1sL3NyYy9saWIvY29tcG9uZW50cy9lZGl0b3IvdmlzdWFsLWVkaXRvci9EZWZhdWx0VGFncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUc5RSxNQUFNLE9BQU8sV0FBVztJQWlCdEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFtQjtRQUNoQyxJQUFJLE1BQU0sR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5DLElBQUksVUFBVSxFQUFFO1lBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDckM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOztBQXhCTSxnQkFBSSxHQUFjO0lBQ3ZCLEVBQUUsR0FBRyxFQUFFLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFO0lBQ3BFLEVBQUUsR0FBRyxFQUFFLDBCQUEwQixDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsdUJBQXVCLEVBQUU7SUFDbEYsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUU7SUFDdEMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRTtJQUNqRCxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFO0lBQ2pELEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUU7SUFDakQsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRTtJQUNqRCxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFO0lBQ2pELEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUU7Q0FDbEQsQ0FBQztBQUVLLHNCQUFVLEdBQVk7SUFDM0IsR0FBRyxFQUFFLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZTtDQUNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHRtbFJhd1RhZ0RhdGFDb25zdHMgfSBmcm9tICcuLi8uLi8uLi9leHRlbnNpb25zL0h0bWxSYXdUYWdEYXRhQ29uc3RzJztcclxuaW1wb3J0IHsgRmlsZUltYWdlVGFnRGF0YUNvbnN0cyB9IGZyb20gJy4uLy4uLy4uL2V4dGVuc2lvbnMvSW1hZ2VNZXRob2RzJztcclxuaW1wb3J0IHsgRXh0ZXJuYWxWaWRlb1RhZ0RhdGFDb25zdHMgfSBmcm9tICcuLi8uLi8uLi9leHRlbnNpb25zL1ZpZGVvTWV0aG9kcyc7XHJcbmltcG9ydCB7IFRhZ0l0ZW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvbW9kZWxzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBEZWZhdWx0VGFncyB7XHJcbiAgc3RhdGljIHRhZ3M6IFRhZ0l0ZW1bXSA9IFtcclxuICAgIHsgdGFnOiBGaWxlSW1hZ2VUYWdEYXRhQ29uc3RzLlRhZ05hbWUsIGRpc3BsYXlWYWx1ZTogJ9CY0LfQvtCx0YDQsNC20LXQvdC40LUnIH0sXHJcbiAgICB7IHRhZzogRXh0ZXJuYWxWaWRlb1RhZ0RhdGFDb25zdHMuVGFnTmFtZSwgZGlzcGxheVZhbHVlOiAn0JLQvdC10YjQvdC10LUg0LLQuNC00LXQviBZb3V0dWJlJyB9LFxyXG4gICAgeyB0YWc6ICd0ZXh0JywgZGlzcGxheVZhbHVlOiAn0KLQtdC60YHRgicgfSxcclxuICAgIHsgdGFnOiAnaDEnLCBkaXNwbGF5VmFsdWU6ICfQl9Cw0LPQvtC70L7QstC+0LogMSDRg9GA0L7QstC90Y8nIH0sXHJcbiAgICB7IHRhZzogJ2gyJywgZGlzcGxheVZhbHVlOiAn0JfQsNCz0L7Qu9C+0LLQvtC6IDIg0YPRgNC+0LLQvdGPJyB9LFxyXG4gICAgeyB0YWc6ICdoMycsIGRpc3BsYXlWYWx1ZTogJ9CX0LDQs9C+0LvQvtCy0L7QuiAzINGD0YDQvtCy0L3RjycgfSxcclxuICAgIHsgdGFnOiAnaDQnLCBkaXNwbGF5VmFsdWU6ICfQl9Cw0LPQvtC70L7QstC+0LogNCDRg9GA0L7QstC90Y8nIH0sXHJcbiAgICB7IHRhZzogJ2g1JywgZGlzcGxheVZhbHVlOiAn0JfQsNCz0L7Qu9C+0LLQvtC6IDUg0YPRgNC+0LLQvdGPJyB9LFxyXG4gICAgeyB0YWc6ICdoNicsIGRpc3BsYXlWYWx1ZTogJ9CX0LDQs9C+0LvQvtCy0L7QuiA2INGD0YDQvtCy0L3RjycgfSxcclxuICBdO1xyXG5cclxuICBzdGF0aWMgaHRtbFJhd1RhZzogVGFnSXRlbSA9IHtcclxuICAgIHRhZzogSHRtbFJhd1RhZ0RhdGFDb25zdHMuVGFnTmFtZSwgZGlzcGxheVZhbHVlOiAnSHRtbCDRgNCw0LfQvNC10YLQutCwJ1xyXG4gIH07XHJcblxyXG4gIHN0YXRpYyBnZXRUYWdzKHVzZUh0bWxSYXc6IGJvb2xlYW4pOiBUYWdJdGVtW10ge1xyXG4gICAgdmFyIHJlc3VsdCA9IFsuLi5EZWZhdWx0VGFncy50YWdzXTtcclxuXHJcbiAgICBpZiAodXNlSHRtbFJhdykge1xyXG4gICAgICByZXN1bHQucHVzaChEZWZhdWx0VGFncy5odG1sUmF3VGFnKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxufVxyXG4iXX0=