@dotcms/angular 0.0.1-beta.3 → 0.0.1-beta.30

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 (158) hide show
  1. package/dotcms-angular.d.ts.map +1 -1
  2. package/esm2022/dotcms-angular.mjs +2 -2
  3. package/esm2022/lib/deprecated/components/dot-editable-text/dot-editable-text.component.mjs +229 -0
  4. package/esm2022/lib/deprecated/components/dot-editable-text/utils.mjs +43 -0
  5. package/esm2022/lib/deprecated/components/no-component/no-component.component.mjs +32 -0
  6. package/esm2022/lib/deprecated/deprecated-api.mjs +11 -0
  7. package/esm2022/lib/{layout → deprecated/layout}/column/column.component.mjs +1 -1
  8. package/esm2022/lib/deprecated/layout/container/container.component.mjs +126 -0
  9. package/esm2022/lib/deprecated/layout/contentlet/contentlet.component.mjs +120 -0
  10. package/esm2022/lib/deprecated/layout/dotcms-layout/dotcms-layout.component.mjs +106 -0
  11. package/esm2022/lib/{layout → deprecated/layout}/row/row.component.mjs +1 -1
  12. package/esm2022/lib/deprecated/models/dotcms.model.mjs +3 -0
  13. package/esm2022/lib/deprecated/models/index.mjs +3 -0
  14. package/esm2022/lib/deprecated/services/dotcms-context/page-context.service.mjs +79 -0
  15. package/esm2022/lib/deprecated/utils/image_loader.mjs +74 -0
  16. package/esm2022/lib/deprecated/utils/index.mjs +84 -0
  17. package/esm2022/next/components/dotcms-block-editor-renderer/blocks/code.component.mjs +49 -0
  18. package/esm2022/next/components/dotcms-block-editor-renderer/blocks/contentlet.component.mjs +53 -0
  19. package/esm2022/next/components/dotcms-block-editor-renderer/blocks/image.component.mjs +25 -0
  20. package/esm2022/next/components/dotcms-block-editor-renderer/blocks/list.component.mjs +66 -0
  21. package/esm2022/next/components/dotcms-block-editor-renderer/blocks/table.component.mjs +97 -0
  22. package/esm2022/next/components/dotcms-block-editor-renderer/blocks/text.component.mjs +231 -0
  23. package/esm2022/next/components/dotcms-block-editor-renderer/blocks/video.component.mjs +48 -0
  24. package/esm2022/next/components/dotcms-block-editor-renderer/dotcms-block-editor-renderer.component.mjs +46 -0
  25. package/esm2022/next/components/dotcms-block-editor-renderer/item/dotcms-block-editor-item.component.mjs +43 -0
  26. package/esm2022/next/components/dotcms-editable-text/dotcms-editable-text.component.mjs +246 -0
  27. package/esm2022/next/components/dotcms-editable-text/utils.mjs +20 -0
  28. package/esm2022/next/components/dotcms-layout-body/components/column/column.component.mjs +45 -0
  29. package/esm2022/next/components/dotcms-layout-body/components/container/components/container-not-found/container-not-found.component.mjs +52 -0
  30. package/esm2022/next/components/dotcms-layout-body/components/container/components/empty-container/empty-container.component.mjs +43 -0
  31. package/esm2022/next/components/dotcms-layout-body/components/container/container.component.mjs +99 -0
  32. package/esm2022/next/components/dotcms-layout-body/components/contentlet/contentlet.component.mjs +145 -0
  33. package/esm2022/next/components/dotcms-layout-body/components/fallback-component/fallback-component.component.mjs +47 -0
  34. package/esm2022/next/components/dotcms-layout-body/components/page-error-message/page-error-message.component.mjs +55 -0
  35. package/esm2022/next/components/dotcms-layout-body/components/row/row.component.mjs +46 -0
  36. package/esm2022/next/components/dotcms-layout-body/dotcms-layout-body.component.mjs +69 -0
  37. package/esm2022/next/directives/dotcms-show-when/dotcms-show-when.directive.mjs +49 -0
  38. package/esm2022/next/dotcms-angular-next.mjs +5 -0
  39. package/esm2022/next/models/index.mjs +3 -0
  40. package/esm2022/next/providers/dotcms-image-loader/dotcms-image_loader.mjs +74 -0
  41. package/esm2022/next/public_api.mjs +7 -0
  42. package/esm2022/next/services/dotcms-editable-page.service.mjs +93 -0
  43. package/esm2022/next/store/dotcms.store.mjs +61 -0
  44. package/esm2022/public_api.mjs +2 -0
  45. package/fesm2022/dotcms-angular-next.mjs +1725 -0
  46. package/fesm2022/dotcms-angular-next.mjs.map +1 -0
  47. package/fesm2022/dotcms-angular.mjs +103 -10
  48. package/fesm2022/dotcms-angular.mjs.map +1 -1
  49. package/index.d.ts +6 -5
  50. package/lib/{components → deprecated/components}/dot-editable-text/dot-editable-text.component.d.ts +10 -6
  51. package/lib/deprecated/components/dot-editable-text/dot-editable-text.component.d.ts.map +1 -0
  52. package/lib/deprecated/components/dot-editable-text/utils.d.ts.map +1 -0
  53. package/lib/deprecated/components/no-component/no-component.component.d.ts.map +1 -0
  54. package/lib/deprecated/deprecated-api.d.ts +11 -0
  55. package/lib/deprecated/deprecated-api.d.ts.map +1 -0
  56. package/lib/deprecated/layout/column/column.component.d.ts.map +1 -0
  57. package/lib/deprecated/layout/container/container.component.d.ts.map +1 -0
  58. package/lib/deprecated/layout/contentlet/contentlet.component.d.ts.map +1 -0
  59. package/lib/{layout → deprecated/layout}/dotcms-layout/dotcms-layout.component.d.ts +5 -0
  60. package/lib/deprecated/layout/dotcms-layout/dotcms-layout.component.d.ts.map +1 -0
  61. package/lib/deprecated/layout/row/row.component.d.ts.map +1 -0
  62. package/lib/deprecated/models/dotcms.model.d.ts.map +1 -0
  63. package/lib/deprecated/models/index.d.ts.map +1 -0
  64. package/lib/{services → deprecated/services}/dotcms-context/page-context.service.d.ts +4 -0
  65. package/lib/deprecated/services/dotcms-context/page-context.service.d.ts.map +1 -0
  66. package/lib/deprecated/utils/image_loader.d.ts +21 -0
  67. package/lib/deprecated/utils/image_loader.d.ts.map +1 -0
  68. package/lib/deprecated/utils/index.d.ts.map +1 -0
  69. package/next/components/dotcms-block-editor-renderer/blocks/code.component.d.ts +10 -0
  70. package/next/components/dotcms-block-editor-renderer/blocks/code.component.d.ts.map +1 -0
  71. package/next/components/dotcms-block-editor-renderer/blocks/contentlet.component.d.ts +25 -0
  72. package/next/components/dotcms-block-editor-renderer/blocks/contentlet.component.d.ts.map +1 -0
  73. package/next/components/dotcms-block-editor-renderer/blocks/image.component.d.ts +9 -0
  74. package/next/components/dotcms-block-editor-renderer/blocks/image.component.d.ts.map +1 -0
  75. package/next/components/dotcms-block-editor-renderer/blocks/list.component.d.ts +14 -0
  76. package/next/components/dotcms-block-editor-renderer/blocks/list.component.d.ts.map +1 -0
  77. package/next/components/dotcms-block-editor-renderer/blocks/table.component.d.ts +10 -0
  78. package/next/components/dotcms-block-editor-renderer/blocks/table.component.d.ts.map +1 -0
  79. package/next/components/dotcms-block-editor-renderer/blocks/text.component.d.ts +27 -0
  80. package/next/components/dotcms-block-editor-renderer/blocks/text.component.d.ts.map +1 -0
  81. package/next/components/dotcms-block-editor-renderer/blocks/video.component.d.ts +10 -0
  82. package/next/components/dotcms-block-editor-renderer/blocks/video.component.d.ts.map +1 -0
  83. package/next/components/dotcms-block-editor-renderer/dotcms-block-editor-renderer.component.d.ts +37 -0
  84. package/next/components/dotcms-block-editor-renderer/dotcms-block-editor-renderer.component.d.ts.map +1 -0
  85. package/next/components/dotcms-block-editor-renderer/item/dotcms-block-editor-item.component.d.ts +12 -0
  86. package/next/components/dotcms-block-editor-renderer/item/dotcms-block-editor-item.component.d.ts.map +1 -0
  87. package/next/components/dotcms-editable-text/dotcms-editable-text.component.d.ts +129 -0
  88. package/next/components/dotcms-editable-text/dotcms-editable-text.component.d.ts.map +1 -0
  89. package/next/components/dotcms-editable-text/utils.d.ts +7 -0
  90. package/next/components/dotcms-editable-text/utils.d.ts.map +1 -0
  91. package/next/components/dotcms-layout-body/components/column/column.component.d.ts +21 -0
  92. package/next/components/dotcms-layout-body/components/column/column.component.d.ts.map +1 -0
  93. package/next/components/dotcms-layout-body/components/container/components/container-not-found/container-not-found.component.d.ts +27 -0
  94. package/next/components/dotcms-layout-body/components/container/components/container-not-found/container-not-found.component.d.ts.map +1 -0
  95. package/next/components/dotcms-layout-body/components/container/components/empty-container/empty-container.component.d.ts +23 -0
  96. package/next/components/dotcms-layout-body/components/container/components/empty-container/empty-container.component.d.ts.map +1 -0
  97. package/next/components/dotcms-layout-body/components/container/container.component.d.ts +32 -0
  98. package/next/components/dotcms-layout-body/components/container/container.component.d.ts.map +1 -0
  99. package/next/components/dotcms-layout-body/components/contentlet/contentlet.component.d.ts +48 -0
  100. package/next/components/dotcms-layout-body/components/contentlet/contentlet.component.d.ts.map +1 -0
  101. package/next/components/dotcms-layout-body/components/fallback-component/fallback-component.component.d.ts +16 -0
  102. package/next/components/dotcms-layout-body/components/fallback-component/fallback-component.component.d.ts.map +1 -0
  103. package/next/components/dotcms-layout-body/components/page-error-message/page-error-message.component.d.ts +13 -0
  104. package/next/components/dotcms-layout-body/components/page-error-message/page-error-message.component.d.ts.map +1 -0
  105. package/next/components/dotcms-layout-body/components/row/row.component.d.ts +22 -0
  106. package/next/components/dotcms-layout-body/components/row/row.component.d.ts.map +1 -0
  107. package/next/components/dotcms-layout-body/dotcms-layout-body.component.d.ts +30 -0
  108. package/next/components/dotcms-layout-body/dotcms-layout-body.component.d.ts.map +1 -0
  109. package/next/directives/dotcms-show-when/dotcms-show-when.directive.d.ts +21 -0
  110. package/next/directives/dotcms-show-when/dotcms-show-when.directive.d.ts.map +1 -0
  111. package/next/dotcms-angular-next.d.ts.map +1 -0
  112. package/next/index.d.ts +6 -0
  113. package/next/models/index.d.ts +39 -0
  114. package/next/models/index.d.ts.map +1 -0
  115. package/next/providers/dotcms-image-loader/dotcms-image_loader.d.ts +21 -0
  116. package/next/providers/dotcms-image-loader/dotcms-image_loader.d.ts.map +1 -0
  117. package/next/public_api.d.ts +7 -0
  118. package/next/public_api.d.ts.map +1 -0
  119. package/next/services/dotcms-editable-page.service.d.ts +40 -0
  120. package/next/services/dotcms-editable-page.service.d.ts.map +1 -0
  121. package/next/store/dotcms.store.d.ts +36 -0
  122. package/next/store/dotcms.store.d.ts.map +1 -0
  123. package/package.json +9 -2
  124. package/public_api.d.ts +2 -0
  125. package/public_api.d.ts.map +1 -0
  126. package/esm2022/index.mjs +0 -5
  127. package/esm2022/lib/components/dot-editable-text/dot-editable-text.component.mjs +0 -225
  128. package/esm2022/lib/components/dot-editable-text/utils.mjs +0 -43
  129. package/esm2022/lib/components/no-component/no-component.component.mjs +0 -32
  130. package/esm2022/lib/layout/container/container.component.mjs +0 -126
  131. package/esm2022/lib/layout/contentlet/contentlet.component.mjs +0 -120
  132. package/esm2022/lib/layout/dotcms-layout/dotcms-layout.component.mjs +0 -100
  133. package/esm2022/lib/models/dotcms.model.mjs +0 -3
  134. package/esm2022/lib/models/index.mjs +0 -3
  135. package/esm2022/lib/services/dotcms-context/page-context.service.mjs +0 -75
  136. package/esm2022/lib/utils/index.mjs +0 -84
  137. package/index.d.ts.map +0 -1
  138. package/lib/components/dot-editable-text/dot-editable-text.component.d.ts.map +0 -1
  139. package/lib/components/dot-editable-text/utils.d.ts.map +0 -1
  140. package/lib/components/no-component/no-component.component.d.ts.map +0 -1
  141. package/lib/layout/column/column.component.d.ts.map +0 -1
  142. package/lib/layout/container/container.component.d.ts.map +0 -1
  143. package/lib/layout/contentlet/contentlet.component.d.ts.map +0 -1
  144. package/lib/layout/dotcms-layout/dotcms-layout.component.d.ts.map +0 -1
  145. package/lib/layout/row/row.component.d.ts.map +0 -1
  146. package/lib/models/dotcms.model.d.ts.map +0 -1
  147. package/lib/models/index.d.ts.map +0 -1
  148. package/lib/services/dotcms-context/page-context.service.d.ts.map +0 -1
  149. package/lib/utils/index.d.ts.map +0 -1
  150. /package/lib/{components → deprecated/components}/dot-editable-text/utils.d.ts +0 -0
  151. /package/lib/{components → deprecated/components}/no-component/no-component.component.d.ts +0 -0
  152. /package/lib/{layout → deprecated/layout}/column/column.component.d.ts +0 -0
  153. /package/lib/{layout → deprecated/layout}/container/container.component.d.ts +0 -0
  154. /package/lib/{layout → deprecated/layout}/contentlet/contentlet.component.d.ts +0 -0
  155. /package/lib/{layout → deprecated/layout}/row/row.component.d.ts +0 -0
  156. /package/lib/{models → deprecated/models}/dotcms.model.d.ts +0 -0
  157. /package/lib/{models → deprecated/models}/index.d.ts +0 -0
  158. /package/lib/{utils → deprecated/utils}/index.d.ts +0 -0
@@ -0,0 +1,43 @@
1
+ import { AsyncPipe, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';
2
+ import { Component, Input } from '@angular/core';
3
+ import { BlockEditorDefaultBlocks } from '@dotcms/types/internal';
4
+ import { DotCodeBlock, DotBlockQuote } from '../blocks/code.component';
5
+ import { DotContentletBlock } from '../blocks/contentlet.component';
6
+ import { DotImageBlock } from '../blocks/image.component';
7
+ import { DotBulletList, DotOrdererList, DotListItem } from '../blocks/list.component';
8
+ import { DotTableBlock } from '../blocks/table.component';
9
+ import { DotParagraphBlock, DotTextBlock, DotHeadingBlock } from '../blocks/text.component';
10
+ import { DotVideoBlock } from '../blocks/video.component';
11
+ import * as i0 from "@angular/core";
12
+ export class DotCMSBlockEditorItemComponent {
13
+ constructor() {
14
+ this.BLOCKS = BlockEditorDefaultBlocks;
15
+ }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: DotCMSBlockEditorItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: DotCMSBlockEditorItemComponent, isStandalone: true, selector: "dotcms-block-editor-renderer-block", inputs: { content: "content", customRenderers: "customRenderers" }, ngImport: i0, template: "@for (node of content; track node) {\n @if (customRenderers?.[node.type]) {\n <ng-container\n *ngTemplateOutlet=\"\n customRender;\n context: { customRender: customRenderers?.[node.type], node: node }\n \"></ng-container>\n } @else {\n @switch (node.type) {\n @case (BLOCKS.PARAGRAPH) {\n <dotcms-block-editor-renderer-paragraph [style]=\"node.attrs\">\n <dotcms-block-editor-renderer-block\n [content]=\"node.content\"\n [customRenderers]=\"customRenderers\" />\n </dotcms-block-editor-renderer-paragraph>\n }\n\n @case (BLOCKS.TEXT) {\n <dotcms-block-editor-renderer-text [marks]=\"node.marks\" [text]=\"node.text || ''\" />\n }\n\n @case (BLOCKS.HEADING) {\n <dotcms-block-editor-renderer-heading\n [style]=\"node.attrs || {}\"\n [level]=\"node.attrs?.['level'] || '1'\">\n <dotcms-block-editor-renderer-block\n [content]=\"node.content\"\n [customRenderers]=\"customRenderers\" />\n </dotcms-block-editor-renderer-heading>\n }\n\n @case (BLOCKS.BULLET_LIST) {\n <dotcms-block-editor-renderer-bullet-list>\n <dotcms-block-editor-renderer-block\n [content]=\"node.content\"\n [customRenderers]=\"customRenderers\" />\n </dotcms-block-editor-renderer-bullet-list>\n }\n\n @case (BLOCKS.ORDERED_LIST) {\n <dotcms-block-editor-renderer-ordered-list>\n <dotcms-block-editor-renderer-block\n [content]=\"node.content\"\n [customRenderers]=\"customRenderers\" />\n </dotcms-block-editor-renderer-ordered-list>\n }\n\n @case (BLOCKS.LIST_ITEM) {\n <dotcms-block-editor-renderer-list-item>\n <dotcms-block-editor-renderer-block\n [content]=\"node.content\"\n [customRenderers]=\"customRenderers\" />\n </dotcms-block-editor-renderer-list-item>\n }\n\n @case (BLOCKS.BLOCK_QUOTE) {\n <dotcms-block-editor-renderer-block-quote>\n <dotcms-block-editor-renderer-block\n [content]=\"node.content\"\n [customRenderers]=\"customRenderers\" />\n </dotcms-block-editor-renderer-block-quote>\n }\n\n @case (BLOCKS.CODE_BLOCK) {\n <dotcms-block-editor-renderer-code-block>\n <dotcms-block-editor-renderer-block\n [content]=\"node.content\"\n [customRenderers]=\"customRenderers\" />\n </dotcms-block-editor-renderer-code-block>\n }\n\n @case (BLOCKS.HARDBREAK) {\n <br />\n }\n\n @case (BLOCKS.HORIZONTAL_RULE) {\n <hr />\n }\n\n @case (BLOCKS.DOT_IMAGE) {\n <dotcms-block-editor-renderer-image [attrs]=\"node.attrs || {}\" />\n }\n\n @case (BLOCKS.DOT_VIDEO) {\n <dotcms-block-editor-renderer-video [attrs]=\"node.attrs || {}\" />\n }\n\n @case (BLOCKS.TABLE) {\n <dotcms-block-editor-renderer-table [content]=\"node.content\" />\n }\n\n @case (BLOCKS.DOT_CONTENT) {\n <dotcms-block-editor-renderer-contentlet\n [attrs]=\"node.attrs || {}\"\n [customRenderers]=\"customRenderers\" />\n }\n\n @default {\n <div>Unknown Block Type: {{ node.type }}</div>\n }\n }\n }\n}\n\n<ng-template #customRender let-customRender=\"customRender\" let-node=\"node\">\n <ng-container\n *ngComponentOutlet=\"customRender | async; inputs: { content: node }\"></ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "component", type: DotCMSBlockEditorItemComponent, selector: "dotcms-block-editor-renderer-block", inputs: ["content", "customRenderers"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: DotParagraphBlock, selector: "dotcms-block-editor-renderer-paragraph" }, { kind: "component", type: DotTextBlock, selector: "dotcms-block-editor-renderer-text", inputs: ["marks", "text"] }, { kind: "component", type: DotHeadingBlock, selector: "dotcms-block-editor-renderer-heading", inputs: ["level"] }, { kind: "component", type: DotBulletList, selector: "dotcms-block-editor-renderer-bullet-list" }, { kind: "component", type: DotOrdererList, selector: "dotcms-block-editor-renderer-ordered-list" }, { kind: "component", type: DotListItem, selector: "dotcms-block-editor-renderer-list-item" }, { kind: "component", type: DotCodeBlock, selector: "dotcms-block-editor-renderer-code-block" }, { kind: "component", type: DotBlockQuote, selector: "dotcms-block-editor-renderer-block-quote" }, { kind: "component", type: DotImageBlock, selector: "dotcms-block-editor-renderer-image", inputs: ["attrs"] }, { kind: "component", type: DotVideoBlock, selector: "dotcms-block-editor-renderer-video", inputs: ["attrs"] }, { kind: "component", type: DotTableBlock, selector: "dotcms-block-editor-renderer-table", inputs: ["content"] }, { kind: "component", type: DotContentletBlock, selector: "dotcms-block-editor-renderer-contentlet", inputs: ["customRenderers", "attrs"] }] }); }
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: DotCMSBlockEditorItemComponent, decorators: [{
20
+ type: Component,
21
+ args: [{ selector: 'dotcms-block-editor-renderer-block', standalone: true, imports: [
22
+ NgTemplateOutlet,
23
+ NgComponentOutlet,
24
+ AsyncPipe,
25
+ DotParagraphBlock,
26
+ DotTextBlock,
27
+ DotHeadingBlock,
28
+ DotBulletList,
29
+ DotOrdererList,
30
+ DotListItem,
31
+ DotCodeBlock,
32
+ DotBlockQuote,
33
+ DotImageBlock,
34
+ DotVideoBlock,
35
+ DotTableBlock,
36
+ DotContentletBlock
37
+ ], template: "@for (node of content; track node) {\n @if (customRenderers?.[node.type]) {\n <ng-container\n *ngTemplateOutlet=\"\n customRender;\n context: { customRender: customRenderers?.[node.type], node: node }\n \"></ng-container>\n } @else {\n @switch (node.type) {\n @case (BLOCKS.PARAGRAPH) {\n <dotcms-block-editor-renderer-paragraph [style]=\"node.attrs\">\n <dotcms-block-editor-renderer-block\n [content]=\"node.content\"\n [customRenderers]=\"customRenderers\" />\n </dotcms-block-editor-renderer-paragraph>\n }\n\n @case (BLOCKS.TEXT) {\n <dotcms-block-editor-renderer-text [marks]=\"node.marks\" [text]=\"node.text || ''\" />\n }\n\n @case (BLOCKS.HEADING) {\n <dotcms-block-editor-renderer-heading\n [style]=\"node.attrs || {}\"\n [level]=\"node.attrs?.['level'] || '1'\">\n <dotcms-block-editor-renderer-block\n [content]=\"node.content\"\n [customRenderers]=\"customRenderers\" />\n </dotcms-block-editor-renderer-heading>\n }\n\n @case (BLOCKS.BULLET_LIST) {\n <dotcms-block-editor-renderer-bullet-list>\n <dotcms-block-editor-renderer-block\n [content]=\"node.content\"\n [customRenderers]=\"customRenderers\" />\n </dotcms-block-editor-renderer-bullet-list>\n }\n\n @case (BLOCKS.ORDERED_LIST) {\n <dotcms-block-editor-renderer-ordered-list>\n <dotcms-block-editor-renderer-block\n [content]=\"node.content\"\n [customRenderers]=\"customRenderers\" />\n </dotcms-block-editor-renderer-ordered-list>\n }\n\n @case (BLOCKS.LIST_ITEM) {\n <dotcms-block-editor-renderer-list-item>\n <dotcms-block-editor-renderer-block\n [content]=\"node.content\"\n [customRenderers]=\"customRenderers\" />\n </dotcms-block-editor-renderer-list-item>\n }\n\n @case (BLOCKS.BLOCK_QUOTE) {\n <dotcms-block-editor-renderer-block-quote>\n <dotcms-block-editor-renderer-block\n [content]=\"node.content\"\n [customRenderers]=\"customRenderers\" />\n </dotcms-block-editor-renderer-block-quote>\n }\n\n @case (BLOCKS.CODE_BLOCK) {\n <dotcms-block-editor-renderer-code-block>\n <dotcms-block-editor-renderer-block\n [content]=\"node.content\"\n [customRenderers]=\"customRenderers\" />\n </dotcms-block-editor-renderer-code-block>\n }\n\n @case (BLOCKS.HARDBREAK) {\n <br />\n }\n\n @case (BLOCKS.HORIZONTAL_RULE) {\n <hr />\n }\n\n @case (BLOCKS.DOT_IMAGE) {\n <dotcms-block-editor-renderer-image [attrs]=\"node.attrs || {}\" />\n }\n\n @case (BLOCKS.DOT_VIDEO) {\n <dotcms-block-editor-renderer-video [attrs]=\"node.attrs || {}\" />\n }\n\n @case (BLOCKS.TABLE) {\n <dotcms-block-editor-renderer-table [content]=\"node.content\" />\n }\n\n @case (BLOCKS.DOT_CONTENT) {\n <dotcms-block-editor-renderer-contentlet\n [attrs]=\"node.attrs || {}\"\n [customRenderers]=\"customRenderers\" />\n }\n\n @default {\n <div>Unknown Block Type: {{ node.type }}</div>\n }\n }\n }\n}\n\n<ng-template #customRender let-customRender=\"customRender\" let-node=\"node\">\n <ng-container\n *ngComponentOutlet=\"customRender | async; inputs: { content: node }\"></ng-container>\n</ng-template>\n" }]
38
+ }], propDecorators: { content: [{
39
+ type: Input
40
+ }], customRenderers: [{
41
+ type: Input
42
+ }] } });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG90Y21zLWJsb2NrLWVkaXRvci1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2FuZ3VsYXIvbmV4dC9jb21wb25lbnRzL2RvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXIvaXRlbS9kb3RjbXMtYmxvY2stZWRpdG9yLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvYW5ndWxhci9uZXh0L2NvbXBvbmVudHMvZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci9pdGVtL2RvdGNtcy1ibG9jay1lZGl0b3ItaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakYsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQTBCMUQsTUFBTSxPQUFPLDhCQUE4QjtJQXZCM0M7UUEyQkksV0FBTSxHQUFHLHdCQUF3QixDQUFDO0tBQ3JDOzhHQUxZLDhCQUE4QjtrR0FBOUIsOEJBQThCLGtLQ3RDM0MsaXBJQTRHQSwwRER0RWEsOEJBQThCLHVIQWpCbkMsZ0JBQWdCLG9KQUNoQixpQkFBaUIsK09BQ2pCLFNBQVMsOENBQ1QsaUJBQWlCLG1GQUNqQixZQUFZLHlHQUNaLGVBQWUsb0dBQ2YsYUFBYSxxRkFDYixjQUFjLHNGQUNkLFdBQVcsbUZBQ1gsWUFBWSxvRkFDWixhQUFhLHFGQUNiLGFBQWEsa0dBQ2IsYUFBYSxrR0FDYixhQUFhLG9HQUNiLGtCQUFrQjs7MkZBR2IsOEJBQThCO2tCQXZCMUMsU0FBUzsrQkFDSSxvQ0FBb0MsY0FDbEMsSUFBSSxXQUdQO3dCQUNMLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixTQUFTO3dCQUNULGlCQUFpQjt3QkFDakIsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxXQUFXO3dCQUNYLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixrQkFBa0I7cUJBQ3JCOzhCQUdRLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NvbXBvbmVudE91dGxldCwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJsb2NrRWRpdG9yTm9kZSB9IGZyb20gJ0Bkb3RjbXMvdHlwZXMnO1xuaW1wb3J0IHsgQmxvY2tFZGl0b3JEZWZhdWx0QmxvY2tzIH0gZnJvbSAnQGRvdGNtcy90eXBlcy9pbnRlcm5hbCc7XG5cbmltcG9ydCB7IERvdENvZGVCbG9jaywgRG90QmxvY2tRdW90ZSB9IGZyb20gJy4uL2Jsb2Nrcy9jb2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEb3RDb250ZW50bGV0QmxvY2sgfSBmcm9tICcuLi9ibG9ja3MvY29udGVudGxldC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRG90SW1hZ2VCbG9jayB9IGZyb20gJy4uL2Jsb2Nrcy9pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRG90QnVsbGV0TGlzdCwgRG90T3JkZXJlckxpc3QsIERvdExpc3RJdGVtIH0gZnJvbSAnLi4vYmxvY2tzL2xpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IERvdFRhYmxlQmxvY2sgfSBmcm9tICcuLi9ibG9ja3MvdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IERvdFBhcmFncmFwaEJsb2NrLCBEb3RUZXh0QmxvY2ssIERvdEhlYWRpbmdCbG9jayB9IGZyb20gJy4uL2Jsb2Nrcy90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEb3RWaWRlb0Jsb2NrIH0gZnJvbSAnLi4vYmxvY2tzL3ZpZGVvLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDdXN0b21SZW5kZXJlciB9IGZyb20gJy4uL2RvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyLWJsb2NrJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kb3RjbXMtYmxvY2stZWRpdG9yLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RvdGNtcy1ibG9jay1lZGl0b3ItaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgTmdDb21wb25lbnRPdXRsZXQsXG4gICAgICAgIEFzeW5jUGlwZSxcbiAgICAgICAgRG90UGFyYWdyYXBoQmxvY2ssXG4gICAgICAgIERvdFRleHRCbG9jayxcbiAgICAgICAgRG90SGVhZGluZ0Jsb2NrLFxuICAgICAgICBEb3RCdWxsZXRMaXN0LFxuICAgICAgICBEb3RPcmRlcmVyTGlzdCxcbiAgICAgICAgRG90TGlzdEl0ZW0sXG4gICAgICAgIERvdENvZGVCbG9jayxcbiAgICAgICAgRG90QmxvY2tRdW90ZSxcbiAgICAgICAgRG90SW1hZ2VCbG9jayxcbiAgICAgICAgRG90VmlkZW9CbG9jayxcbiAgICAgICAgRG90VGFibGVCbG9jayxcbiAgICAgICAgRG90Q29udGVudGxldEJsb2NrXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBEb3RDTVNCbG9ja0VkaXRvckl0ZW1Db21wb25lbnQge1xuICAgIEBJbnB1dCgpIGNvbnRlbnQ6IEJsb2NrRWRpdG9yTm9kZVtdIHwgdW5kZWZpbmVkO1xuICAgIEBJbnB1dCgpIGN1c3RvbVJlbmRlcmVyczogQ3VzdG9tUmVuZGVyZXIgfCB1bmRlZmluZWQ7XG5cbiAgICBCTE9DS1MgPSBCbG9ja0VkaXRvckRlZmF1bHRCbG9ja3M7XG59XG4iLCJAZm9yIChub2RlIG9mIGNvbnRlbnQ7IHRyYWNrIG5vZGUpIHtcbiAgICBAaWYgKGN1c3RvbVJlbmRlcmVycz8uW25vZGUudHlwZV0pIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICBjdXN0b21SZW5kZXI7XG4gICAgICAgICAgICAgICAgY29udGV4dDogeyBjdXN0b21SZW5kZXI6IGN1c3RvbVJlbmRlcmVycz8uW25vZGUudHlwZV0sIG5vZGU6IG5vZGUgfVxuICAgICAgICAgICAgXCI+PC9uZy1jb250YWluZXI+XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIEBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICAgICAgQGNhc2UgKEJMT0NLUy5QQVJBR1JBUEgpIHtcbiAgICAgICAgICAgICAgICA8ZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci1wYXJhZ3JhcGggW3N0eWxlXT1cIm5vZGUuYXR0cnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXItYmxvY2tcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cIm5vZGUuY29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tUmVuZGVyZXJzXT1cImN1c3RvbVJlbmRlcmVyc1wiIC8+XG4gICAgICAgICAgICAgICAgPC9kb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyLXBhcmFncmFwaD5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGNhc2UgKEJMT0NLUy5URVhUKSB7XG4gICAgICAgICAgICAgICAgPGRvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXItdGV4dCBbbWFya3NdPVwibm9kZS5tYXJrc1wiIFt0ZXh0XT1cIm5vZGUudGV4dCB8fCAnJ1wiIC8+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBjYXNlIChCTE9DS1MuSEVBRElORykge1xuICAgICAgICAgICAgICAgIDxkb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyLWhlYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIm5vZGUuYXR0cnMgfHwge31cIlxuICAgICAgICAgICAgICAgICAgICBbbGV2ZWxdPVwibm9kZS5hdHRycz8uWydsZXZlbCddIHx8ICcxJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci1ibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwibm9kZS5jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21SZW5kZXJlcnNdPVwiY3VzdG9tUmVuZGVyZXJzXCIgLz5cbiAgICAgICAgICAgICAgICA8L2RvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXItaGVhZGluZz5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGNhc2UgKEJMT0NLUy5CVUxMRVRfTElTVCkge1xuICAgICAgICAgICAgICAgIDxkb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyLWJ1bGxldC1saXN0PlxuICAgICAgICAgICAgICAgICAgICA8ZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci1ibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwibm9kZS5jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21SZW5kZXJlcnNdPVwiY3VzdG9tUmVuZGVyZXJzXCIgLz5cbiAgICAgICAgICAgICAgICA8L2RvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXItYnVsbGV0LWxpc3Q+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBjYXNlIChCTE9DS1MuT1JERVJFRF9MSVNUKSB7XG4gICAgICAgICAgICAgICAgPGRvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXItb3JkZXJlZC1saXN0PlxuICAgICAgICAgICAgICAgICAgICA8ZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci1ibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwibm9kZS5jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21SZW5kZXJlcnNdPVwiY3VzdG9tUmVuZGVyZXJzXCIgLz5cbiAgICAgICAgICAgICAgICA8L2RvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXItb3JkZXJlZC1saXN0PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAY2FzZSAoQkxPQ0tTLkxJU1RfSVRFTSkge1xuICAgICAgICAgICAgICAgIDxkb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyLWxpc3QtaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPGRvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXItYmxvY2tcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cIm5vZGUuY29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tUmVuZGVyZXJzXT1cImN1c3RvbVJlbmRlcmVyc1wiIC8+XG4gICAgICAgICAgICAgICAgPC9kb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyLWxpc3QtaXRlbT5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGNhc2UgKEJMT0NLUy5CTE9DS19RVU9URSkge1xuICAgICAgICAgICAgICAgIDxkb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyLWJsb2NrLXF1b3RlPlxuICAgICAgICAgICAgICAgICAgICA8ZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci1ibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwibm9kZS5jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21SZW5kZXJlcnNdPVwiY3VzdG9tUmVuZGVyZXJzXCIgLz5cbiAgICAgICAgICAgICAgICA8L2RvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXItYmxvY2stcXVvdGU+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBjYXNlIChCTE9DS1MuQ09ERV9CTE9DSykge1xuICAgICAgICAgICAgICAgIDxkb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyLWNvZGUtYmxvY2s+XG4gICAgICAgICAgICAgICAgICAgIDxkb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyLWJsb2NrXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJub2RlLmNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbVJlbmRlcmVyc109XCJjdXN0b21SZW5kZXJlcnNcIiAvPlxuICAgICAgICAgICAgICAgIDwvZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci1jb2RlLWJsb2NrPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAY2FzZSAoQkxPQ0tTLkhBUkRCUkVBSykge1xuICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAY2FzZSAoQkxPQ0tTLkhPUklaT05UQUxfUlVMRSkge1xuICAgICAgICAgICAgICAgIDxociAvPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAY2FzZSAoQkxPQ0tTLkRPVF9JTUFHRSkge1xuICAgICAgICAgICAgICAgIDxkb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyLWltYWdlIFthdHRyc109XCJub2RlLmF0dHJzIHx8IHt9XCIgLz5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGNhc2UgKEJMT0NLUy5ET1RfVklERU8pIHtcbiAgICAgICAgICAgICAgICA8ZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci12aWRlbyBbYXR0cnNdPVwibm9kZS5hdHRycyB8fCB7fVwiIC8+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBjYXNlIChCTE9DS1MuVEFCTEUpIHtcbiAgICAgICAgICAgICAgICA8ZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci10YWJsZSBbY29udGVudF09XCJub2RlLmNvbnRlbnRcIiAvPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAY2FzZSAoQkxPQ0tTLkRPVF9DT05URU5UKSB7XG4gICAgICAgICAgICAgICAgPGRvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXItY29udGVudGxldFxuICAgICAgICAgICAgICAgICAgICBbYXR0cnNdPVwibm9kZS5hdHRycyB8fCB7fVwiXG4gICAgICAgICAgICAgICAgICAgIFtjdXN0b21SZW5kZXJlcnNdPVwiY3VzdG9tUmVuZGVyZXJzXCIgLz5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICAgIDxkaXY+VW5rbm93biBCbG9jayBUeXBlOiB7eyBub2RlLnR5cGUgfX08L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuPG5nLXRlbXBsYXRlICNjdXN0b21SZW5kZXIgbGV0LWN1c3RvbVJlbmRlcj1cImN1c3RvbVJlbmRlclwiIGxldC1ub2RlPVwibm9kZVwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nQ29tcG9uZW50T3V0bGV0PVwiY3VzdG9tUmVuZGVyIHwgYXN5bmM7IGlucHV0czogeyBjb250ZW50OiBub2RlIH1cIj48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -0,0 +1,246 @@
1
+ import { EditorComponent, TINYMCE_SCRIPT_SRC } from '@tinymce/tinymce-angular';
2
+ import { Component, ElementRef, HostListener, inject, Input, Renderer2, SecurityContext, ViewChild } from '@angular/core';
3
+ import { DomSanitizer } from '@angular/platform-browser';
4
+ import { DotCMSUVEAction, UVE_MODE } from '@dotcms/types';
5
+ import { __DOTCMS_UVE_EVENT__ } from '@dotcms/types/internal';
6
+ import { getUVEState, sendMessageToUVE } from '@dotcms/uve';
7
+ import { __TINYMCE_PATH_ON_DOTCMS__ } from '@dotcms/uve/internal';
8
+ import { TINYMCE_CONFIG } from './utils';
9
+ import * as i0 from "@angular/core";
10
+ /**
11
+ * Dot editable text component.
12
+ * This component is responsible to render a text field that can be edited inline.
13
+ *
14
+ * @export
15
+ * @class DotCMSEditableTextComponent
16
+ * @implements {OnInit}
17
+ * @implements {OnChanges}
18
+ */
19
+ export class DotCMSEditableTextComponent {
20
+ constructor() {
21
+ /**
22
+ * Represents the mode of the editor which can be `plain`, `minimal`, or `full`
23
+ *
24
+ * @type {DOT_EDITABLE_TEXT_MODE}
25
+ * @memberof DotCMSEditableTextComponent
26
+ */
27
+ this.mode = 'plain';
28
+ /**
29
+ * Represents the format of the editor which can be `text` or `html`
30
+ *
31
+ * @type {DOT_EDITABLE_TEXT_FORMAT}
32
+ * @memberof DotCMSEditableTextComponent
33
+ */
34
+ this.format = 'text';
35
+ /**
36
+ * Represents the field name of the `contentlet` that can be edited
37
+ *
38
+ * @memberof DotCMSEditableTextComponent
39
+ */
40
+ this.fieldName = '';
41
+ /**
42
+ * Represents the content of the `contentlet` that can be edited
43
+ *
44
+ * @protected
45
+ * @memberof DotCMSEditableTextComponent
46
+ */
47
+ this.content = '';
48
+ this.#NotDotCMSHostMessage = 'The `dotCMSHost` parameter is not defined. Check that the UVE is sending the correct parameters.';
49
+ this.#sanitizer = inject(DomSanitizer);
50
+ this.#renderer = inject(Renderer2);
51
+ this.#elementRef = inject(ElementRef);
52
+ }
53
+ #NotDotCMSHostMessage;
54
+ #sanitizer;
55
+ #renderer;
56
+ #elementRef;
57
+ /**
58
+ * The TinyMCE editor
59
+ *
60
+ * @readonly
61
+ * @memberof DotCMSEditableTextComponent
62
+ */
63
+ get editor() {
64
+ return this.editorComponent?.editor;
65
+ }
66
+ /**
67
+ * Represents if the component is inside the editor
68
+ *
69
+ * @protected
70
+ * @type {boolean}
71
+ * @memberof DotCMSEditableTextComponent
72
+ */
73
+ get isEditMode() {
74
+ const { mode, dotCMSHost } = getUVEState() || {};
75
+ return mode === UVE_MODE.EDIT && dotCMSHost;
76
+ }
77
+ /**
78
+ * Returns the number of pages the contentlet is on
79
+ *
80
+ * @readonly
81
+ * @memberof DotCMSEditableTextComponent
82
+ */
83
+ get onNumberOfPages() {
84
+ return this.contentlet['onNumberOfPages'] || 1;
85
+ }
86
+ /**
87
+ * Handle copy contentlet inline editing success event
88
+ *
89
+ * @param {MessageEvent} { data }
90
+ * @return {*}
91
+ * @memberof DotCMSEditableTextComponent
92
+ */
93
+ onMessage({ data }) {
94
+ const { name, payload } = data;
95
+ if (name !== __DOTCMS_UVE_EVENT__.UVE_COPY_CONTENTLET_INLINE_EDITING_SUCCESS) {
96
+ return;
97
+ }
98
+ const { oldInode, inode } = payload;
99
+ const currentInode = this.contentlet.inode;
100
+ if (currentInode === oldInode || currentInode === inode) {
101
+ this.editorComponent.editor.focus();
102
+ return;
103
+ }
104
+ }
105
+ ngOnInit() {
106
+ const { dotCMSHost } = getUVEState() || {};
107
+ if (!this.isEditMode) {
108
+ this.innerHTMLToElement();
109
+ if (!dotCMSHost) {
110
+ console.warn(this.#NotDotCMSHostMessage);
111
+ }
112
+ return;
113
+ }
114
+ this.init = {
115
+ ...TINYMCE_CONFIG[this.mode],
116
+ base_url: `${dotCMSHost}/ext/tinymcev7`
117
+ };
118
+ }
119
+ ngOnChanges() {
120
+ this.content = this.contentlet[this.fieldName] || '';
121
+ if (this.editor) {
122
+ this.editor.setContent(this.content, { format: this.format });
123
+ }
124
+ }
125
+ /**
126
+ * Handle mouse down event
127
+ *
128
+ * @param {EventObj<MouseEvent>} { event }
129
+ * @return {*}
130
+ * @memberof DotCMSEditableTextComponent
131
+ */
132
+ onMouseDown({ event }) {
133
+ if (Number(this.onNumberOfPages) <= 1 || this.editorComponent.editor.hasFocus()) {
134
+ return;
135
+ }
136
+ const { inode, languageId: language } = this.contentlet;
137
+ event.stopPropagation();
138
+ event.preventDefault();
139
+ try {
140
+ sendMessageToUVE({
141
+ action: DotCMSUVEAction.COPY_CONTENTLET_INLINE_EDITING,
142
+ payload: {
143
+ dataset: {
144
+ inode,
145
+ language,
146
+ fieldName: this.fieldName
147
+ }
148
+ }
149
+ });
150
+ }
151
+ catch (error) {
152
+ console.error('Failed to post message to editor:', error);
153
+ }
154
+ }
155
+ /**
156
+ * Handle focus out event
157
+ *
158
+ * @return {*}
159
+ * @memberof DotCMSEditableTextComponent
160
+ */
161
+ onFocusOut() {
162
+ const content = this.editor.getContent({ format: this.format });
163
+ if (!this.editor.isDirty() || !this.didContentChange(content)) {
164
+ return;
165
+ }
166
+ const { inode, languageId: langId } = this.contentlet;
167
+ try {
168
+ sendMessageToUVE({
169
+ action: DotCMSUVEAction.UPDATE_CONTENTLET_INLINE_EDITING,
170
+ payload: {
171
+ content,
172
+ dataset: {
173
+ inode,
174
+ langId,
175
+ fieldName: this.fieldName
176
+ }
177
+ }
178
+ });
179
+ }
180
+ catch (error) {
181
+ console.error('Failed to post message to editor:', error);
182
+ }
183
+ }
184
+ /**
185
+ * inner HTML to element
186
+ *
187
+ * @private
188
+ * @param {string} editedContent
189
+ * @return {*}
190
+ * @memberof DotCMSEditableTextComponent
191
+ */
192
+ innerHTMLToElement() {
193
+ const element = this.#elementRef.nativeElement;
194
+ const safeHtml = this.#sanitizer.bypassSecurityTrustHtml(this.content);
195
+ const content = this.#sanitizer.sanitize(SecurityContext.HTML, safeHtml) || '';
196
+ this.#renderer.setProperty(element, 'innerHTML', content);
197
+ }
198
+ /**
199
+ * Check if the content has changed
200
+ *
201
+ * @private
202
+ * @param {string} editedContent
203
+ * @return {*}
204
+ * @memberof DotCMSEditableTextComponent
205
+ */
206
+ didContentChange(editedContent) {
207
+ return this.content !== editedContent;
208
+ }
209
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: DotCMSEditableTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
210
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: DotCMSEditableTextComponent, isStandalone: true, selector: "dotcms-editable-text", inputs: { mode: "mode", format: "format", contentlet: "contentlet", fieldName: "fieldName" }, host: { listeners: { "window:message": "onMessage($event)" } }, providers: [
211
+ {
212
+ provide: TINYMCE_SCRIPT_SRC,
213
+ useFactory: () => {
214
+ const { dotCMSHost } = getUVEState() || {};
215
+ return `${dotCMSHost || ''}${__TINYMCE_PATH_ON_DOTCMS__}`;
216
+ }
217
+ }
218
+ ], viewQueries: [{ propertyName: "editorComponent", first: true, predicate: EditorComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (isEditMode) {\n <editor\n #tinyEditor\n [init]=\"init\"\n [initialValue]=\"content\"\n (onMouseDown)=\"onMouseDown($event)\"\n (onFocusOut)=\"onFocusOut()\" />\n}\n", styles: [":host ::ng-deep .mce-content-body:not(.mce-edit-focus):hover{outline:2px solid #006ce7;border-radius:4px}\n"], dependencies: [{ kind: "component", type: EditorComponent, selector: "editor", inputs: ["cloudChannel", "apiKey", "init", "id", "initialValue", "outputFormat", "inline", "tagName", "plugins", "toolbar", "modelEvents", "allowedEvents", "ignoreEvents", "disabled"] }] }); }
219
+ }
220
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: DotCMSEditableTextComponent, decorators: [{
221
+ type: Component,
222
+ args: [{ selector: 'dotcms-editable-text', standalone: true, imports: [EditorComponent], providers: [
223
+ {
224
+ provide: TINYMCE_SCRIPT_SRC,
225
+ useFactory: () => {
226
+ const { dotCMSHost } = getUVEState() || {};
227
+ return `${dotCMSHost || ''}${__TINYMCE_PATH_ON_DOTCMS__}`;
228
+ }
229
+ }
230
+ ], template: "@if (isEditMode) {\n <editor\n #tinyEditor\n [init]=\"init\"\n [initialValue]=\"content\"\n (onMouseDown)=\"onMouseDown($event)\"\n (onFocusOut)=\"onFocusOut()\" />\n}\n", styles: [":host ::ng-deep .mce-content-body:not(.mce-edit-focus):hover{outline:2px solid #006ce7;border-radius:4px}\n"] }]
231
+ }], propDecorators: { editorComponent: [{
232
+ type: ViewChild,
233
+ args: [EditorComponent]
234
+ }], mode: [{
235
+ type: Input
236
+ }], format: [{
237
+ type: Input
238
+ }], contentlet: [{
239
+ type: Input
240
+ }], fieldName: [{
241
+ type: Input
242
+ }], onMessage: [{
243
+ type: HostListener,
244
+ args: ['window:message', ['$event']]
245
+ }] } });
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG90Y21zLWVkaXRhYmxlLXRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvYW5ndWxhci9uZXh0L2NvbXBvbmVudHMvZG90Y21zLWVkaXRhYmxlLXRleHQvZG90Y21zLWVkaXRhYmxlLXRleHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvYW5ndWxhci9uZXh0L2NvbXBvbmVudHMvZG90Y21zLWVkaXRhYmxlLXRleHQvZG90Y21zLWVkaXRhYmxlLXRleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRy9FLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEVBQXlCLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsY0FBYyxFQUFvRCxNQUFNLFNBQVMsQ0FBQzs7QUFFM0Y7Ozs7Ozs7O0dBUUc7QUFrQkgsTUFBTSxPQUFPLDJCQUEyQjtJQWpCeEM7UUFvQkk7Ozs7O1dBS0c7UUFDTSxTQUFJLEdBQTJCLE9BQU8sQ0FBQztRQUNoRDs7Ozs7V0FLRztRQUNNLFdBQU0sR0FB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QkFDSSxzQkFBc0IsY0FDcEIsSUFBSSxXQUdQLENBQUMsZUFBZSxDQUFDLGFBQ2Y7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsVUFBVSxFQUFFLEdBQUcsRUFBRTtnQ0FDYixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDO2dDQUUzQyxPQUFPLEdBQUcsVUFBVSxJQUFJLEVBQUUsR0FBRywwQkFBMEIsRUFBRSxDQUFDOzRCQUM5RCxDQUFDO3lCQUNKO3FCQUNKOzhCQUcyQixlQUFlO3NCQUExQyxTQUFTO3VCQUFDLGVBQWU7Z0JBUWpCLElBQUk7c0JBQVosS0FBSztnQkFPRyxNQUFNO3NCQUFkLEtBQUs7Z0JBT0csVUFBVTtzQkFBbEIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLO2dCQWtFTixTQUFTO3NCQURSLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGl0b3JDb21wb25lbnQsIFRJTllNQ0VfU0NSSVBUX1NSQyB9IGZyb20gJ0B0aW55bWNlL3RpbnltY2UtYW5ndWxhcic7XG5pbXBvcnQgeyBFdmVudE9iaiB9IGZyb20gJ0B0aW55bWNlL3RpbnltY2UtYW5ndWxhci9lZGl0b3IvRXZlbnRzJztcblxuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFNlY3VyaXR5Q29udGV4dCxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHsgRG90Q01TQmFzaWNDb250ZW50bGV0LCBEb3RDTVNVVkVBY3Rpb24sIFVWRV9NT0RFIH0gZnJvbSAnQGRvdGNtcy90eXBlcyc7XG5pbXBvcnQgeyBfX0RPVENNU19VVkVfRVZFTlRfXyB9IGZyb20gJ0Bkb3RjbXMvdHlwZXMvaW50ZXJuYWwnO1xuaW1wb3J0IHsgZ2V0VVZFU3RhdGUsIHNlbmRNZXNzYWdlVG9VVkUgfSBmcm9tICdAZG90Y21zL3V2ZSc7XG5pbXBvcnQgeyBfX1RJTllNQ0VfUEFUSF9PTl9ET1RDTVNfXyB9IGZyb20gJ0Bkb3RjbXMvdXZlL2ludGVybmFsJztcblxuaW1wb3J0IHsgVElOWU1DRV9DT05GSUcsIERPVF9FRElUQUJMRV9URVhUX0ZPUk1BVCwgRE9UX0VESVRBQkxFX1RFWFRfTU9ERSB9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIERvdCBlZGl0YWJsZSB0ZXh0IGNvbXBvbmVudC5cbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlc3BvbnNpYmxlIHRvIHJlbmRlciBhIHRleHQgZmllbGQgdGhhdCBjYW4gYmUgZWRpdGVkIGlubGluZS5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgRG90Q01TRWRpdGFibGVUZXh0Q29tcG9uZW50XG4gKiBAaW1wbGVtZW50cyB7T25Jbml0fVxuICogQGltcGxlbWVudHMge09uQ2hhbmdlc31cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkb3RjbXMtZWRpdGFibGUtdGV4dCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZG90Y21zLWVkaXRhYmxlLXRleHQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9kb3RjbXMtZWRpdGFibGUtdGV4dC5jb21wb25lbnQuY3NzJyxcbiAgICBpbXBvcnRzOiBbRWRpdG9yQ29tcG9uZW50XSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVElOWU1DRV9TQ1JJUFRfU1JDLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZG90Q01TSG9zdCB9ID0gZ2V0VVZFU3RhdGUoKSB8fCB7fTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtkb3RDTVNIb3N0IHx8ICcnfSR7X19USU5ZTUNFX1BBVEhfT05fRE9UQ01TX199YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRG90Q01TRWRpdGFibGVUZXh0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIEBWaWV3Q2hpbGQoRWRpdG9yQ29tcG9uZW50KSBlZGl0b3JDb21wb25lbnQhOiBFZGl0b3JDb21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBtb2RlIG9mIHRoZSBlZGl0b3Igd2hpY2ggY2FuIGJlIGBwbGFpbmAsIGBtaW5pbWFsYCwgb3IgYGZ1bGxgXG4gICAgICpcbiAgICAgKiBAdHlwZSB7RE9UX0VESVRBQkxFX1RFWFRfTU9ERX1cbiAgICAgKiBAbWVtYmVyb2YgRG90Q01TRWRpdGFibGVUZXh0Q29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgbW9kZTogRE9UX0VESVRBQkxFX1RFWFRfTU9ERSA9ICdwbGFpbic7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgZm9ybWF0IG9mIHRoZSBlZGl0b3Igd2hpY2ggY2FuIGJlIGB0ZXh0YCBvciBgaHRtbGBcbiAgICAgKlxuICAgICAqIEB0eXBlIHtET1RfRURJVEFCTEVfVEVYVF9GT1JNQVR9XG4gICAgICogQG1lbWJlcm9mIERvdENNU0VkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGZvcm1hdDogRE9UX0VESVRBQkxFX1RFWFRfRk9STUFUID0gJ3RleHQnO1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIGBjb250ZW50bGV0YCB0aGF0IGNhbiBiZSBpbmxpbmUgZWRpdGVkXG4gICAgICpcbiAgICAgKiBAdHlwZSB7RG90Q01TQ29udGVudGxldH1cbiAgICAgKiBAbWVtYmVyb2YgRG90Q01TRWRpdGFibGVUZXh0Q29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgY29udGVudGxldCE6IERvdENNU0Jhc2ljQ29udGVudGxldDtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBmaWVsZCBuYW1lIG9mIHRoZSBgY29udGVudGxldGAgdGhhdCBjYW4gYmUgZWRpdGVkXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgRG90Q01TRWRpdGFibGVUZXh0Q29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgZmllbGROYW1lID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBjb250ZW50IG9mIHRoZSBgY29udGVudGxldGAgdGhhdCBjYW4gYmUgZWRpdGVkXG4gICAgICpcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICogQG1lbWJlcm9mIERvdENNU0VkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjb250ZW50ID0gJyc7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgZWRpdG9yXG4gICAgICpcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICogQHR5cGUge0VkaXRvckNvbXBvbmVudFsnaW5pdCddfVxuICAgICAqIEBtZW1iZXJvZiBEb3RDTVNFZGl0YWJsZVRleHRDb21wb25lbnRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaW5pdCE6IEVkaXRvckNvbXBvbmVudFsnaW5pdCddO1xuXG4gICAgcmVhZG9ubHkgI05vdERvdENNU0hvc3RNZXNzYWdlID1cbiAgICAgICAgJ1RoZSBgZG90Q01TSG9zdGAgcGFyYW1ldGVyIGlzIG5vdCBkZWZpbmVkLiBDaGVjayB0aGF0IHRoZSBVVkUgaXMgc2VuZGluZyB0aGUgY29ycmVjdCBwYXJhbWV0ZXJzLic7XG5cbiAgICByZWFkb25seSAjc2FuaXRpemVyID0gaW5qZWN0PERvbVNhbml0aXplcj4oRG9tU2FuaXRpemVyKTtcbiAgICByZWFkb25seSAjcmVuZGVyZXIgPSBpbmplY3Q8UmVuZGVyZXIyPihSZW5kZXJlcjIpO1xuICAgIHJlYWRvbmx5ICNlbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY+KEVsZW1lbnRSZWYpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIFRpbnlNQ0UgZWRpdG9yXG4gICAgICpcbiAgICAgKiBAcmVhZG9ubHlcbiAgICAgKiBAbWVtYmVyb2YgRG90Q01TRWRpdGFibGVUZXh0Q29tcG9uZW50XG4gICAgICovXG4gICAgZ2V0IGVkaXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yQ29tcG9uZW50Py5lZGl0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyBpZiB0aGUgY29tcG9uZW50IGlzIGluc2lkZSB0aGUgZWRpdG9yXG4gICAgICpcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICogQG1lbWJlcm9mIERvdENNU0VkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXQgaXNFZGl0TW9kZSgpIHtcbiAgICAgICAgY29uc3QgeyBtb2RlLCBkb3RDTVNIb3N0IH0gPSBnZXRVVkVTdGF0ZSgpIHx8IHt9O1xuXG4gICAgICAgIHJldHVybiBtb2RlID09PSBVVkVfTU9ERS5FRElUICYmIGRvdENNU0hvc3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHRoZSBjb250ZW50bGV0IGlzIG9uXG4gICAgICpcbiAgICAgKiBAcmVhZG9ubHlcbiAgICAgKiBAbWVtYmVyb2YgRG90Q01TRWRpdGFibGVUZXh0Q29tcG9uZW50XG4gICAgICovXG4gICAgZ2V0IG9uTnVtYmVyT2ZQYWdlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudGxldFsnb25OdW1iZXJPZlBhZ2VzJ10gfHwgMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGUgY29weSBjb250ZW50bGV0IGlubGluZSBlZGl0aW5nIHN1Y2Nlc3MgZXZlbnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7TWVzc2FnZUV2ZW50fSB7IGRhdGEgfVxuICAgICAqIEByZXR1cm4geyp9XG4gICAgICogQG1lbWJlcm9mIERvdENNU0VkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptZXNzYWdlJywgWyckZXZlbnQnXSlcbiAgICBvbk1lc3NhZ2UoeyBkYXRhIH06IE1lc3NhZ2VFdmVudCkge1xuICAgICAgICBjb25zdCB7IG5hbWUsIHBheWxvYWQgfSA9IGRhdGE7XG4gICAgICAgIGlmIChuYW1lICE9PSBfX0RPVENNU19VVkVfRVZFTlRfXy5VVkVfQ09QWV9DT05URU5UTEVUX0lOTElORV9FRElUSU5HX1NVQ0NFU1MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgb2xkSW5vZGUsIGlub2RlIH0gPSBwYXlsb2FkO1xuICAgICAgICBjb25zdCBjdXJyZW50SW5vZGUgPSB0aGlzLmNvbnRlbnRsZXQuaW5vZGU7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRJbm9kZSA9PT0gb2xkSW5vZGUgfHwgY3VycmVudElub2RlID09PSBpbm9kZSkge1xuICAgICAgICAgICAgdGhpcy5lZGl0b3JDb21wb25lbnQuZWRpdG9yLmZvY3VzKCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBjb25zdCB7IGRvdENNU0hvc3QgfSA9IGdldFVWRVN0YXRlKCkgfHwge307XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzRWRpdE1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuaW5uZXJIVE1MVG9FbGVtZW50KCk7XG5cbiAgICAgICAgICAgIGlmICghZG90Q01TSG9zdCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybih0aGlzLiNOb3REb3RDTVNIb3N0TWVzc2FnZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5pdCA9IHtcbiAgICAgICAgICAgIC4uLlRJTllNQ0VfQ09ORklHW3RoaXMubW9kZV0sXG4gICAgICAgICAgICBiYXNlX3VybDogYCR7ZG90Q01TSG9zdH0vZXh0L3RpbnltY2V2N2BcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgdGhpcy5jb250ZW50ID0gdGhpcy5jb250ZW50bGV0W3RoaXMuZmllbGROYW1lXSB8fCAnJztcbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yKSB7XG4gICAgICAgICAgICB0aGlzLmVkaXRvci5zZXRDb250ZW50KHRoaXMuY29udGVudCwgeyBmb3JtYXQ6IHRoaXMuZm9ybWF0IH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIG1vdXNlIGRvd24gZXZlbnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RXZlbnRPYmo8TW91c2VFdmVudD59IHsgZXZlbnQgfVxuICAgICAqIEByZXR1cm4geyp9XG4gICAgICogQG1lbWJlcm9mIERvdENNU0VkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIG9uTW91c2VEb3duKHsgZXZlbnQgfTogRXZlbnRPYmo8TW91c2VFdmVudD4pIHtcbiAgICAgICAgaWYgKE51bWJlcih0aGlzLm9uTnVtYmVyT2ZQYWdlcykgPD0gMSB8fCB0aGlzLmVkaXRvckNvbXBvbmVudC5lZGl0b3IuaGFzRm9jdXMoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBpbm9kZSwgbGFuZ3VhZ2VJZDogbGFuZ3VhZ2UgfSA9IHRoaXMuY29udGVudGxldDtcblxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgc2VuZE1lc3NhZ2VUb1VWRSh7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiBEb3RDTVNVVkVBY3Rpb24uQ09QWV9DT05URU5UTEVUX0lOTElORV9FRElUSU5HLFxuICAgICAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YXNldDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZTogdGhpcy5maWVsZE5hbWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHBvc3QgbWVzc2FnZSB0byBlZGl0b3I6JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBmb2N1cyBvdXQgZXZlbnRcbiAgICAgKlxuICAgICAqIEByZXR1cm4geyp9XG4gICAgICogQG1lbWJlcm9mIERvdENNU0VkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIG9uRm9jdXNPdXQoKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmVkaXRvci5nZXRDb250ZW50KHsgZm9ybWF0OiB0aGlzLmZvcm1hdCB9KTtcblxuICAgICAgICBpZiAoIXRoaXMuZWRpdG9yLmlzRGlydHkoKSB8fCAhdGhpcy5kaWRDb250ZW50Q2hhbmdlKGNvbnRlbnQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGlub2RlLCBsYW5ndWFnZUlkOiBsYW5nSWQgfSA9IHRoaXMuY29udGVudGxldDtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgc2VuZE1lc3NhZ2VUb1VWRSh7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiBEb3RDTVNVVkVBY3Rpb24uVVBEQVRFX0NPTlRFTlRMRVRfSU5MSU5FX0VESVRJTkcsXG4gICAgICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgICAgICAgICAgICBkYXRhc2V0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhbmdJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZTogdGhpcy5maWVsZE5hbWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHBvc3QgbWVzc2FnZSB0byBlZGl0b3I6JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaW5uZXIgSFRNTCB0byBlbGVtZW50XG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBlZGl0ZWRDb250ZW50XG4gICAgICogQHJldHVybiB7Kn1cbiAgICAgKiBAbWVtYmVyb2YgRG90Q01TRWRpdGFibGVUZXh0Q29tcG9uZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBpbm5lckhUTUxUb0VsZW1lbnQoKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHNhZmVIdG1sID0gdGhpcy4jc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHRoaXMuY29udGVudCk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLiNzYW5pdGl6ZXIuc2FuaXRpemUoU2VjdXJpdHlDb250ZXh0LkhUTUwsIHNhZmVIdG1sKSB8fCAnJztcblxuICAgICAgICB0aGlzLiNyZW5kZXJlci5zZXRQcm9wZXJ0eShlbGVtZW50LCAnaW5uZXJIVE1MJywgY29udGVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGNvbnRlbnQgaGFzIGNoYW5nZWRcbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGVkaXRlZENvbnRlbnRcbiAgICAgKiBAcmV0dXJuIHsqfVxuICAgICAqIEBtZW1iZXJvZiBEb3RDTVNFZGl0YWJsZVRleHRDb21wb25lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIGRpZENvbnRlbnRDaGFuZ2UoZWRpdGVkQ29udGVudDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQgIT09IGVkaXRlZENvbnRlbnQ7XG4gICAgfVxufVxuIiwiQGlmIChpc0VkaXRNb2RlKSB7XG4gICAgPGVkaXRvclxuICAgICAgICAjdGlueUVkaXRvclxuICAgICAgICBbaW5pdF09XCJpbml0XCJcbiAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb250ZW50XCJcbiAgICAgICAgKG9uTW91c2VEb3duKT1cIm9uTW91c2VEb3duKCRldmVudClcIlxuICAgICAgICAob25Gb2N1c091dCk9XCJvbkZvY3VzT3V0KClcIiAvPlxufVxuIl19
@@ -0,0 +1,20 @@
1
+ import { __BASE_TINYMCE_CONFIG_WITH_NO_DEFAULT__, __DEFAULT_TINYMCE_CONFIG__ } from '@dotcms/uve/internal';
2
+ const DEFAULT_TINYMCE_CONFIG = {
3
+ ...__DEFAULT_TINYMCE_CONFIG__,
4
+ license_key: 'gpl' // Using self-hosted license key
5
+ };
6
+ export const TINYMCE_CONFIG = {
7
+ minimal: {
8
+ ...DEFAULT_TINYMCE_CONFIG,
9
+ ...__BASE_TINYMCE_CONFIG_WITH_NO_DEFAULT__.minimal
10
+ },
11
+ full: {
12
+ ...DEFAULT_TINYMCE_CONFIG,
13
+ ...__BASE_TINYMCE_CONFIG_WITH_NO_DEFAULT__.full
14
+ },
15
+ plain: {
16
+ ...DEFAULT_TINYMCE_CONFIG,
17
+ ...__BASE_TINYMCE_CONFIG_WITH_NO_DEFAULT__.plain
18
+ }
19
+ };
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9hbmd1bGFyL25leHQvY29tcG9uZW50cy9kb3RjbXMtZWRpdGFibGUtdGV4dC91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQ0gsdUNBQXVDLEVBQ3ZDLDBCQUEwQixFQUM3QixNQUFNLHNCQUFzQixDQUFDO0FBTTlCLE1BQU0sc0JBQXNCLEdBQTRCO0lBQ3BELEdBQUcsMEJBQTBCO0lBQzdCLFdBQVcsRUFBRSxLQUFLLENBQUMsZ0NBQWdDO0NBQ3RELENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBRXZCO0lBQ0EsT0FBTyxFQUFFO1FBQ0wsR0FBRyxzQkFBc0I7UUFDekIsR0FBRyx1Q0FBdUMsQ0FBQyxPQUFPO0tBQ3JEO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsR0FBRyxzQkFBc0I7UUFDekIsR0FBRyx1Q0FBdUMsQ0FBQyxJQUFJO0tBQ2xEO0lBQ0QsS0FBSyxFQUFFO1FBQ0gsR0FBRyxzQkFBc0I7UUFDekIsR0FBRyx1Q0FBdUMsQ0FBQyxLQUFLO0tBQ25EO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVkaXRvckNvbXBvbmVudCB9IGZyb20gJ0B0aW55bWNlL3RpbnltY2UtYW5ndWxhcic7XG5cbmltcG9ydCB7XG4gICAgX19CQVNFX1RJTllNQ0VfQ09ORklHX1dJVEhfTk9fREVGQVVMVF9fLFxuICAgIF9fREVGQVVMVF9USU5ZTUNFX0NPTkZJR19fXG59IGZyb20gJ0Bkb3RjbXMvdXZlL2ludGVybmFsJztcblxuZXhwb3J0IHR5cGUgRE9UX0VESVRBQkxFX1RFWFRfTU9ERSA9ICdtaW5pbWFsJyB8ICdmdWxsJyB8ICdwbGFpbic7XG5cbmV4cG9ydCB0eXBlIERPVF9FRElUQUJMRV9URVhUX0ZPUk1BVCA9ICdodG1sJyB8ICd0ZXh0JztcblxuY29uc3QgREVGQVVMVF9USU5ZTUNFX0NPTkZJRzogRWRpdG9yQ29tcG9uZW50Wydpbml0J10gPSB7XG4gICAgLi4uX19ERUZBVUxUX1RJTllNQ0VfQ09ORklHX18sXG4gICAgbGljZW5zZV9rZXk6ICdncGwnIC8vIFVzaW5nIHNlbGYtaG9zdGVkIGxpY2Vuc2Uga2V5XG59O1xuXG5leHBvcnQgY29uc3QgVElOWU1DRV9DT05GSUc6IHtcbiAgICBba2V5IGluIERPVF9FRElUQUJMRV9URVhUX01PREVdOiBFZGl0b3JDb21wb25lbnRbJ2luaXQnXTtcbn0gPSB7XG4gICAgbWluaW1hbDoge1xuICAgICAgICAuLi5ERUZBVUxUX1RJTllNQ0VfQ09ORklHLFxuICAgICAgICAuLi5fX0JBU0VfVElOWU1DRV9DT05GSUdfV0lUSF9OT19ERUZBVUxUX18ubWluaW1hbFxuICAgIH0sXG4gICAgZnVsbDoge1xuICAgICAgICAuLi5ERUZBVUxUX1RJTllNQ0VfQ09ORklHLFxuICAgICAgICAuLi5fX0JBU0VfVElOWU1DRV9DT05GSUdfV0lUSF9OT19ERUZBVUxUX18uZnVsbFxuICAgIH0sXG4gICAgcGxhaW46IHtcbiAgICAgICAgLi4uREVGQVVMVF9USU5ZTUNFX0NPTkZJRyxcbiAgICAgICAgLi4uX19CQVNFX1RJTllNQ0VfQ09ORklHX1dJVEhfTk9fREVGQVVMVF9fLnBsYWluXG4gICAgfVxufTtcbiJdfQ==
@@ -0,0 +1,45 @@
1
+ import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';
2
+ import { combineClasses, getColumnPositionClasses } from '@dotcms/uve/internal';
3
+ import { ContainerComponent } from '../container/container.component';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * This component renders a column with all its content using the layout provided by dotCMS Page API.
7
+ *
8
+ * @see {@link https://www.dotcms.com/docs/latest/page-rest-api-layout-as-a-service-laas}
9
+ * @category Components
10
+ * @internal
11
+ */
12
+ export class ColumnComponent {
13
+ constructor() {
14
+ this.customClasses = '';
15
+ }
16
+ ngOnChanges() {
17
+ const positionClasses = getColumnPositionClasses(this.column);
18
+ this.customClasses = combineClasses([positionClasses.startClass, positionClasses.endClass]);
19
+ }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: ColumnComponent, isStandalone: true, selector: "dotcms-column", inputs: { column: "column" }, host: { properties: { "class": "this.customClasses" } }, usesOnChanges: true, ngImport: i0, template: `
22
+ <div [class]="column.styleClass" data-testid="dotcms-column">
23
+ @for (container of column.containers; track $index) {
24
+ <dotcms-container [container]="container" />
25
+ }
26
+ </div>
27
+ `, isInline: true, styles: [":host.col-start-1{grid-column-start:1}:host.col-start-2{grid-column-start:2}:host.col-start-3{grid-column-start:3}:host.col-start-4{grid-column-start:4}:host.col-start-5{grid-column-start:5}:host.col-start-6{grid-column-start:6}:host.col-start-7{grid-column-start:7}:host.col-start-8{grid-column-start:8}:host.col-start-9{grid-column-start:9}:host.col-start-10{grid-column-start:10}:host.col-start-11{grid-column-start:11}:host.col-start-12{grid-column-start:12}:host.col-end-1{grid-column-end:1}:host.col-end-2{grid-column-end:2}:host.col-end-3{grid-column-end:3}:host.col-end-4{grid-column-end:4}:host.col-end-5{grid-column-end:5}:host.col-end-6{grid-column-end:6}:host.col-end-7{grid-column-end:7}:host.col-end-8{grid-column-end:8}:host.col-end-9{grid-column-end:9}:host.col-end-10{grid-column-end:10}:host.col-end-11{grid-column-end:11}:host.col-end-12{grid-column-end:12}:host.col-end-13{grid-column-end:13}\n"], dependencies: [{ kind: "component", type: ContainerComponent, selector: "dotcms-container", inputs: ["container"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28
+ }
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ColumnComponent, decorators: [{
30
+ type: Component,
31
+ args: [{ selector: 'dotcms-column', standalone: true, imports: [ContainerComponent], template: `
32
+ <div [class]="column.styleClass" data-testid="dotcms-column">
33
+ @for (container of column.containers; track $index) {
34
+ <dotcms-container [container]="container" />
35
+ }
36
+ </div>
37
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host.col-start-1{grid-column-start:1}:host.col-start-2{grid-column-start:2}:host.col-start-3{grid-column-start:3}:host.col-start-4{grid-column-start:4}:host.col-start-5{grid-column-start:5}:host.col-start-6{grid-column-start:6}:host.col-start-7{grid-column-start:7}:host.col-start-8{grid-column-start:8}:host.col-start-9{grid-column-start:9}:host.col-start-10{grid-column-start:10}:host.col-start-11{grid-column-start:11}:host.col-start-12{grid-column-start:12}:host.col-end-1{grid-column-end:1}:host.col-end-2{grid-column-end:2}:host.col-end-3{grid-column-end:3}:host.col-end-4{grid-column-end:4}:host.col-end-5{grid-column-end:5}:host.col-end-6{grid-column-end:6}:host.col-end-7{grid-column-end:7}:host.col-end-8{grid-column-end:8}:host.col-end-9{grid-column-end:9}:host.col-end-10{grid-column-end:10}:host.col-end-11{grid-column-end:11}:host.col-end-12{grid-column-end:12}:host.col-end-13{grid-column-end:13}\n"] }]
38
+ }], propDecorators: { column: [{
39
+ type: Input,
40
+ args: [{ required: true }]
41
+ }], customClasses: [{
42
+ type: HostBinding,
43
+ args: ['class']
44
+ }] } });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2FuZ3VsYXIvbmV4dC9jb21wb25lbnRzL2RvdGNtcy1sYXlvdXQtYm9keS9jb21wb25lbnRzL2NvbHVtbi9jb2x1bW4uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUdsRyxPQUFPLEVBQUUsY0FBYyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFaEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBQ3RFOzs7Ozs7R0FNRztBQWVILE1BQU0sT0FBTyxlQUFlO0lBZDVCO1FBb0IwQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztLQU81QztJQUxHLFdBQVc7UUFDUCxNQUFNLGVBQWUsR0FBRyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFOUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxjQUFjLENBQUMsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7OEdBWlEsZUFBZTtrR0FBZixlQUFlLHFMQVZkOzs7Ozs7S0FNVCw0OUJBUFMsa0JBQWtCOzsyRkFXbkIsZUFBZTtrQkFkM0IsU0FBUzsrQkFDSSxlQUFlLGNBQ2IsSUFBSSxXQUNQLENBQUMsa0JBQWtCLENBQUMsWUFDbkI7Ozs7OztLQU1ULG1CQUVnQix1QkFBdUIsQ0FBQyxNQUFNOzhCQU1wQixNQUFNO3NCQUFoQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFFSCxhQUFhO3NCQUFsQyxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEb3RQYWdlQXNzZXRMYXlvdXRDb2x1bW4gfSBmcm9tICdAZG90Y21zL3R5cGVzJztcbmltcG9ydCB7IGNvbWJpbmVDbGFzc2VzLCBnZXRDb2x1bW5Qb3NpdGlvbkNsYXNzZXMgfSBmcm9tICdAZG90Y21zL3V2ZS9pbnRlcm5hbCc7XG5cbmltcG9ydCB7IENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbnRhaW5lci9jb250YWluZXIuY29tcG9uZW50Jztcbi8qKlxuICogVGhpcyBjb21wb25lbnQgcmVuZGVycyBhIGNvbHVtbiB3aXRoIGFsbCBpdHMgY29udGVudCB1c2luZyB0aGUgbGF5b3V0IHByb3ZpZGVkIGJ5IGRvdENNUyBQYWdlIEFQSS5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5kb3RjbXMuY29tL2RvY3MvbGF0ZXN0L3BhZ2UtcmVzdC1hcGktbGF5b3V0LWFzLWEtc2VydmljZS1sYWFzfVxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RvdGNtcy1jb2x1bW4nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbnRhaW5lckNvbXBvbmVudF0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBbY2xhc3NdPVwiY29sdW1uLnN0eWxlQ2xhc3NcIiBkYXRhLXRlc3RpZD1cImRvdGNtcy1jb2x1bW5cIj5cbiAgICAgICAgICAgIEBmb3IgKGNvbnRhaW5lciBvZiBjb2x1bW4uY29udGFpbmVyczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPGRvdGNtcy1jb250YWluZXIgW2NvbnRhaW5lcl09XCJjb250YWluZXJcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIHN0eWxlVXJsOiAnLi9jb2x1bW4uY29tcG9uZW50LmNzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ29sdW1uQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICAvKipcbiAgICAgKiBUaGUgY29sdW1uIGRhdGEgdG8gYmUgcmVuZGVyZWRcbiAgICAgKi9cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBjb2x1bW4hOiBEb3RQYWdlQXNzZXRMYXlvdXRDb2x1bW47XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY3VzdG9tQ2xhc3NlcyA9ICcnO1xuXG4gICAgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uQ2xhc3NlcyA9IGdldENvbHVtblBvc2l0aW9uQ2xhc3Nlcyh0aGlzLmNvbHVtbik7XG5cbiAgICAgICAgdGhpcy5jdXN0b21DbGFzc2VzID0gY29tYmluZUNsYXNzZXMoW3Bvc2l0aW9uQ2xhc3Nlcy5zdGFydENsYXNzLCBwb3NpdGlvbkNsYXNzZXMuZW5kQ2xhc3NdKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,52 @@
1
+ import { NgStyle } from '@angular/common';
2
+ import { Component, inject, Input } from '@angular/core';
3
+ import { EMPTY_CONTAINER_STYLE_ANGULAR } from '@dotcms/uve/internal';
4
+ import { DotCMSStore } from '../../../../../../store/dotcms.store';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * @description This component is used to display a message when a container is not found.
8
+ * @export
9
+ * @internal
10
+ * @class ContainerNotFoundComponent
11
+ * @implements {OnInit}
12
+ */
13
+ export class ContainerNotFoundComponent {
14
+ constructor() {
15
+ this.identifier = 'unknown';
16
+ this.#dotcmsContextService = inject(DotCMSStore);
17
+ this.$isDevMode = this.#dotcmsContextService.$isDevMode;
18
+ this.emptyContainerStyle = EMPTY_CONTAINER_STYLE_ANGULAR;
19
+ }
20
+ #dotcmsContextService;
21
+ ngOnInit() {
22
+ if (this.$isDevMode()) {
23
+ console.error(`Container with identifier ${this.identifier} not found`);
24
+ }
25
+ }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ContainerNotFoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: ContainerNotFoundComponent, isStandalone: true, selector: "dotcms-container-not-found", inputs: { identifier: "identifier" }, ngImport: i0, template: `
28
+ @if ($isDevMode()) {
29
+ <div [attr.data-testid]="'container-not-found'" [ngStyle]="emptyContainerStyle">
30
+ This container with identifier {{ identifier }} was not found.
31
+ </div>
32
+ }
33
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
34
+ }
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ContainerNotFoundComponent, decorators: [{
36
+ type: Component,
37
+ args: [{
38
+ selector: 'dotcms-container-not-found',
39
+ standalone: true,
40
+ imports: [NgStyle],
41
+ template: `
42
+ @if ($isDevMode()) {
43
+ <div [attr.data-testid]="'container-not-found'" [ngStyle]="emptyContainerStyle">
44
+ This container with identifier {{ identifier }} was not found.
45
+ </div>
46
+ }
47
+ `
48
+ }]
49
+ }], propDecorators: { identifier: [{
50
+ type: Input
51
+ }] } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLW5vdC1mb3VuZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9hbmd1bGFyL25leHQvY29tcG9uZW50cy9kb3RjbXMtbGF5b3V0LWJvZHkvY29tcG9uZW50cy9jb250YWluZXIvY29tcG9uZW50cy9jb250YWluZXItbm90LWZvdW5kL2NvbnRhaW5lci1ub3QtZm91bmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFakUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOztBQUVuRTs7Ozs7O0dBTUc7QUFhSCxNQUFNLE9BQU8sMEJBQTBCO0lBWnZDO1FBYWEsZUFBVSxHQUFHLFNBQVMsQ0FBQztRQUVoQywwQkFBcUIsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFNUMsZUFBVSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUM7UUFDbkQsd0JBQW1CLEdBQUcsNkJBQTZCLENBQUM7S0FPdkQ7SUFWRyxxQkFBcUIsQ0FBdUI7SUFLNUMsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsSUFBSSxDQUFDLFVBQVUsWUFBWSxDQUFDLENBQUM7UUFDNUUsQ0FBQztJQUNMLENBQUM7OEdBWlEsMEJBQTBCO2tHQUExQiwwQkFBMEIsNEhBUnpCOzs7Ozs7S0FNVCw0REFQUyxPQUFPOzsyRkFTUiwwQkFBMEI7a0JBWnRDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDRCQUE0QjtvQkFDdEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztvQkFDbEIsUUFBUSxFQUFFOzs7Ozs7S0FNVDtpQkFDSjs4QkFFWSxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBFTVBUWV9DT05UQUlORVJfU1RZTEVfQU5HVUxBUiB9IGZyb20gJ0Bkb3RjbXMvdXZlL2ludGVybmFsJztcblxuaW1wb3J0IHsgRG90Q01TU3RvcmUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zdG9yZS9kb3RjbXMuc3RvcmUnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUaGlzIGNvbXBvbmVudCBpcyB1c2VkIHRvIGRpc3BsYXkgYSBtZXNzYWdlIHdoZW4gYSBjb250YWluZXIgaXMgbm90IGZvdW5kLlxuICogQGV4cG9ydFxuICogQGludGVybmFsXG4gKiBAY2xhc3MgQ29udGFpbmVyTm90Rm91bmRDb21wb25lbnRcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZG90Y21zLWNvbnRhaW5lci1ub3QtZm91bmQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nU3R5bGVdLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIEBpZiAoJGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgICA8ZGl2IFthdHRyLmRhdGEtdGVzdGlkXT1cIidjb250YWluZXItbm90LWZvdW5kJ1wiIFtuZ1N0eWxlXT1cImVtcHR5Q29udGFpbmVyU3R5bGVcIj5cbiAgICAgICAgICAgICAgICBUaGlzIGNvbnRhaW5lciB3aXRoIGlkZW50aWZpZXIge3sgaWRlbnRpZmllciB9fSB3YXMgbm90IGZvdW5kLlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICBgXG59KVxuZXhwb3J0IGNsYXNzIENvbnRhaW5lck5vdEZvdW5kQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBpZGVudGlmaWVyID0gJ3Vua25vd24nO1xuXG4gICAgI2RvdGNtc0NvbnRleHRTZXJ2aWNlID0gaW5qZWN0KERvdENNU1N0b3JlKTtcblxuICAgICRpc0Rldk1vZGUgPSB0aGlzLiNkb3RjbXNDb250ZXh0U2VydmljZS4kaXNEZXZNb2RlO1xuICAgIGVtcHR5Q29udGFpbmVyU3R5bGUgPSBFTVBUWV9DT05UQUlORVJfU1RZTEVfQU5HVUxBUjtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy4kaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYENvbnRhaW5lciB3aXRoIGlkZW50aWZpZXIgJHt0aGlzLmlkZW50aWZpZXJ9IG5vdCBmb3VuZGApO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -0,0 +1,43 @@
1
+ import { NgStyle } from '@angular/common';
2
+ import { Component, inject } from '@angular/core';
3
+ import { EMPTY_CONTAINER_STYLE_ANGULAR } from '@dotcms/uve/internal';
4
+ import { DotCMSStore } from '../../../../../../store/dotcms.store';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * @description This component is used to display a message when a container is empty.
8
+ * @export
9
+ * @internal
10
+ * @class EmptyContainerComponent
11
+ */
12
+ export class EmptyContainerComponent {
13
+ constructor() {
14
+ this.emptyContainerStyle = EMPTY_CONTAINER_STYLE_ANGULAR;
15
+ this.#dotCMSStore = inject(DotCMSStore);
16
+ this.$isDevMode = this.#dotCMSStore.$isDevMode;
17
+ }
18
+ #dotCMSStore;
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: EmptyContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
20
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: EmptyContainerComponent, isStandalone: true, selector: "dotcms-empty-container", ngImport: i0, template: `
21
+ @if ($isDevMode()) {
22
+ <div [ngStyle]="emptyContainerStyle" data-testid="empty-container">
23
+ <span data-testid="empty-container-message">This container is empty.</span>
24
+ </div>
25
+ }
26
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: EmptyContainerComponent, decorators: [{
29
+ type: Component,
30
+ args: [{
31
+ selector: 'dotcms-empty-container',
32
+ standalone: true,
33
+ imports: [NgStyle],
34
+ template: `
35
+ @if ($isDevMode()) {
36
+ <div [ngStyle]="emptyContainerStyle" data-testid="empty-container">
37
+ <span data-testid="empty-container-message">This container is empty.</span>
38
+ </div>
39
+ }
40
+ `
41
+ }]
42
+ }] });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2FuZ3VsYXIvbmV4dC9jb21wb25lbnRzL2RvdGNtcy1sYXlvdXQtYm9keS9jb21wb25lbnRzL2NvbnRhaW5lci9jb21wb25lbnRzL2VtcHR5LWNvbnRhaW5lci9lbXB0eS1jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7O0FBRW5FOzs7OztHQUtHO0FBYUgsTUFBTSxPQUFPLHVCQUF1QjtJQVpwQztRQWFJLHdCQUFtQixHQUFHLDZCQUE2QixDQUFDO1FBRXBELGlCQUFZLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRW5DLGVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQztLQUM3QztJQUhHLFlBQVksQ0FBdUI7OEdBSDFCLHVCQUF1QjtrR0FBdkIsdUJBQXVCLGtGQVJ0Qjs7Ozs7O0tBTVQsNERBUFMsT0FBTzs7MkZBU1IsdUJBQXVCO2tCQVpuQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ2xCLFFBQVEsRUFBRTs7Ozs7O0tBTVQ7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEVNUFRZX0NPTlRBSU5FUl9TVFlMRV9BTkdVTEFSIH0gZnJvbSAnQGRvdGNtcy91dmUvaW50ZXJuYWwnO1xuXG5pbXBvcnQgeyBEb3RDTVNTdG9yZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3N0b3JlL2RvdGNtcy5zdG9yZSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gZGlzcGxheSBhIG1lc3NhZ2Ugd2hlbiBhIGNvbnRhaW5lciBpcyBlbXB0eS5cbiAqIEBleHBvcnRcbiAqIEBpbnRlcm5hbFxuICogQGNsYXNzIEVtcHR5Q29udGFpbmVyQ29tcG9uZW50XG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZG90Y21zLWVtcHR5LWNvbnRhaW5lcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdTdHlsZV0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgQGlmICgkaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwiZW1wdHlDb250YWluZXJTdHlsZVwiIGRhdGEtdGVzdGlkPVwiZW1wdHktY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gZGF0YS10ZXN0aWQ9XCJlbXB0eS1jb250YWluZXItbWVzc2FnZVwiPlRoaXMgY29udGFpbmVyIGlzIGVtcHR5Ljwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBFbXB0eUNvbnRhaW5lckNvbXBvbmVudCB7XG4gICAgZW1wdHlDb250YWluZXJTdHlsZSA9IEVNUFRZX0NPTlRBSU5FUl9TVFlMRV9BTkdVTEFSO1xuXG4gICAgI2RvdENNU1N0b3JlID0gaW5qZWN0KERvdENNU1N0b3JlKTtcblxuICAgICRpc0Rldk1vZGUgPSB0aGlzLiNkb3RDTVNTdG9yZS4kaXNEZXZNb2RlO1xufVxuIl19