@dotcms/angular 0.0.1-beta.4 → 0.0.1-beta.41

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 (165) hide show
  1. package/README.md +646 -167
  2. package/dotcms-angular.d.ts.map +1 -1
  3. package/esm2022/dotcms-angular.mjs +2 -2
  4. package/esm2022/lib/deprecated/components/dot-editable-text/dot-editable-text.component.mjs +229 -0
  5. package/esm2022/lib/deprecated/components/dot-editable-text/utils.mjs +43 -0
  6. package/esm2022/lib/deprecated/components/no-component/no-component.component.mjs +32 -0
  7. package/esm2022/lib/deprecated/deprecated-api.mjs +11 -0
  8. package/esm2022/lib/{layout → deprecated/layout}/column/column.component.mjs +1 -1
  9. package/esm2022/lib/deprecated/layout/container/container.component.mjs +126 -0
  10. package/esm2022/lib/deprecated/layout/contentlet/contentlet.component.mjs +120 -0
  11. package/esm2022/lib/deprecated/layout/dotcms-layout/dotcms-layout.component.mjs +106 -0
  12. package/esm2022/lib/{layout → deprecated/layout}/row/row.component.mjs +1 -1
  13. package/esm2022/lib/deprecated/models/dotcms.model.mjs +3 -0
  14. package/esm2022/lib/deprecated/models/index.mjs +3 -0
  15. package/esm2022/lib/deprecated/services/dotcms-context/page-context.service.mjs +79 -0
  16. package/esm2022/lib/deprecated/utils/image_loader.mjs +74 -0
  17. package/esm2022/lib/deprecated/utils/index.mjs +84 -0
  18. package/esm2022/next/components/dotcms-block-editor-renderer/blocks/code.component.mjs +49 -0
  19. package/esm2022/next/components/dotcms-block-editor-renderer/blocks/dot-contentlet.component.mjs +125 -0
  20. package/esm2022/next/components/dotcms-block-editor-renderer/blocks/image.component.mjs +25 -0
  21. package/esm2022/next/components/dotcms-block-editor-renderer/blocks/list.component.mjs +66 -0
  22. package/esm2022/next/components/dotcms-block-editor-renderer/blocks/table.component.mjs +97 -0
  23. package/esm2022/next/components/dotcms-block-editor-renderer/blocks/text.component.mjs +231 -0
  24. package/esm2022/next/components/dotcms-block-editor-renderer/blocks/unknown.component.mjs +65 -0
  25. package/esm2022/next/components/dotcms-block-editor-renderer/blocks/video.component.mjs +48 -0
  26. package/esm2022/next/components/dotcms-block-editor-renderer/dotcms-block-editor-renderer.component.mjs +50 -0
  27. package/esm2022/next/components/dotcms-block-editor-renderer/item/dotcms-block-editor-item.component.mjs +45 -0
  28. package/esm2022/next/components/dotcms-editable-text/dotcms-editable-text.component.mjs +240 -0
  29. package/esm2022/next/components/dotcms-editable-text/utils.mjs +20 -0
  30. package/esm2022/next/components/dotcms-layout-body/components/column/column.component.mjs +45 -0
  31. package/esm2022/next/components/dotcms-layout-body/components/container/components/container-not-found/container-not-found.component.mjs +52 -0
  32. package/esm2022/next/components/dotcms-layout-body/components/container/components/empty-container/empty-container.component.mjs +47 -0
  33. package/esm2022/next/components/dotcms-layout-body/components/container/container.component.mjs +99 -0
  34. package/esm2022/next/components/dotcms-layout-body/components/contentlet/contentlet.component.mjs +145 -0
  35. package/esm2022/next/components/dotcms-layout-body/components/fallback-component/fallback-component.component.mjs +47 -0
  36. package/esm2022/next/components/dotcms-layout-body/components/page-error-message/page-error-message.component.mjs +55 -0
  37. package/esm2022/next/components/dotcms-layout-body/components/row/row.component.mjs +46 -0
  38. package/esm2022/next/components/dotcms-layout-body/dotcms-layout-body.component.mjs +69 -0
  39. package/esm2022/next/directives/dotcms-show-when/dotcms-show-when.directive.mjs +49 -0
  40. package/esm2022/next/dotcms-angular-next.mjs +5 -0
  41. package/esm2022/next/models/index.mjs +3 -0
  42. package/esm2022/next/providers/dotcms-client/dotcms-client.provider.mjs +52 -0
  43. package/esm2022/next/providers/dotcms-image-loader/dotcms-image_loader.mjs +74 -0
  44. package/esm2022/next/public_api.mjs +8 -0
  45. package/esm2022/next/services/dotcms-editable-page.service.mjs +93 -0
  46. package/esm2022/next/store/dotcms.store.mjs +61 -0
  47. package/esm2022/public_api.mjs +2 -0
  48. package/fesm2022/dotcms-angular-next.mjs +1904 -0
  49. package/fesm2022/dotcms-angular-next.mjs.map +1 -0
  50. package/fesm2022/dotcms-angular.mjs +103 -10
  51. package/fesm2022/dotcms-angular.mjs.map +1 -1
  52. package/index.d.ts +6 -5
  53. package/lib/{components → deprecated/components}/dot-editable-text/dot-editable-text.component.d.ts +10 -6
  54. package/lib/deprecated/components/dot-editable-text/dot-editable-text.component.d.ts.map +1 -0
  55. package/lib/deprecated/components/dot-editable-text/utils.d.ts.map +1 -0
  56. package/lib/deprecated/components/no-component/no-component.component.d.ts.map +1 -0
  57. package/lib/deprecated/deprecated-api.d.ts +11 -0
  58. package/lib/deprecated/deprecated-api.d.ts.map +1 -0
  59. package/lib/deprecated/layout/column/column.component.d.ts.map +1 -0
  60. package/lib/deprecated/layout/container/container.component.d.ts.map +1 -0
  61. package/lib/deprecated/layout/contentlet/contentlet.component.d.ts.map +1 -0
  62. package/lib/{layout → deprecated/layout}/dotcms-layout/dotcms-layout.component.d.ts +5 -0
  63. package/lib/deprecated/layout/dotcms-layout/dotcms-layout.component.d.ts.map +1 -0
  64. package/lib/deprecated/layout/row/row.component.d.ts.map +1 -0
  65. package/lib/{models → deprecated/models}/dotcms.model.d.ts +2 -2
  66. package/lib/deprecated/models/dotcms.model.d.ts.map +1 -0
  67. package/lib/deprecated/models/index.d.ts.map +1 -0
  68. package/lib/{services → deprecated/services}/dotcms-context/page-context.service.d.ts +4 -0
  69. package/lib/deprecated/services/dotcms-context/page-context.service.d.ts.map +1 -0
  70. package/lib/deprecated/utils/image_loader.d.ts +21 -0
  71. package/lib/deprecated/utils/image_loader.d.ts.map +1 -0
  72. package/lib/deprecated/utils/index.d.ts.map +1 -0
  73. package/next/components/dotcms-block-editor-renderer/blocks/code.component.d.ts +10 -0
  74. package/next/components/dotcms-block-editor-renderer/blocks/code.component.d.ts.map +1 -0
  75. package/next/components/dotcms-block-editor-renderer/blocks/dot-contentlet.component.d.ts +34 -0
  76. package/next/components/dotcms-block-editor-renderer/blocks/dot-contentlet.component.d.ts.map +1 -0
  77. package/next/components/dotcms-block-editor-renderer/blocks/image.component.d.ts +9 -0
  78. package/next/components/dotcms-block-editor-renderer/blocks/image.component.d.ts.map +1 -0
  79. package/next/components/dotcms-block-editor-renderer/blocks/list.component.d.ts +14 -0
  80. package/next/components/dotcms-block-editor-renderer/blocks/list.component.d.ts.map +1 -0
  81. package/next/components/dotcms-block-editor-renderer/blocks/table.component.d.ts +10 -0
  82. package/next/components/dotcms-block-editor-renderer/blocks/table.component.d.ts.map +1 -0
  83. package/next/components/dotcms-block-editor-renderer/blocks/text.component.d.ts +27 -0
  84. package/next/components/dotcms-block-editor-renderer/blocks/text.component.d.ts.map +1 -0
  85. package/next/components/dotcms-block-editor-renderer/blocks/unknown.component.d.ts +18 -0
  86. package/next/components/dotcms-block-editor-renderer/blocks/unknown.component.d.ts.map +1 -0
  87. package/next/components/dotcms-block-editor-renderer/blocks/video.component.d.ts +10 -0
  88. package/next/components/dotcms-block-editor-renderer/blocks/video.component.d.ts.map +1 -0
  89. package/next/components/dotcms-block-editor-renderer/dotcms-block-editor-renderer.component.d.ts +39 -0
  90. package/next/components/dotcms-block-editor-renderer/dotcms-block-editor-renderer.component.d.ts.map +1 -0
  91. package/next/components/dotcms-block-editor-renderer/item/dotcms-block-editor-item.component.d.ts +12 -0
  92. package/next/components/dotcms-block-editor-renderer/item/dotcms-block-editor-item.component.d.ts.map +1 -0
  93. package/next/components/dotcms-editable-text/dotcms-editable-text.component.d.ts +129 -0
  94. package/next/components/dotcms-editable-text/dotcms-editable-text.component.d.ts.map +1 -0
  95. package/next/components/dotcms-editable-text/utils.d.ts +7 -0
  96. package/next/components/dotcms-editable-text/utils.d.ts.map +1 -0
  97. package/next/components/dotcms-layout-body/components/column/column.component.d.ts +21 -0
  98. package/next/components/dotcms-layout-body/components/column/column.component.d.ts.map +1 -0
  99. package/next/components/dotcms-layout-body/components/container/components/container-not-found/container-not-found.component.d.ts +27 -0
  100. package/next/components/dotcms-layout-body/components/container/components/container-not-found/container-not-found.component.d.ts.map +1 -0
  101. package/next/components/dotcms-layout-body/components/container/components/empty-container/empty-container.component.d.ts +23 -0
  102. package/next/components/dotcms-layout-body/components/container/components/empty-container/empty-container.component.d.ts.map +1 -0
  103. package/next/components/dotcms-layout-body/components/container/container.component.d.ts +32 -0
  104. package/next/components/dotcms-layout-body/components/container/container.component.d.ts.map +1 -0
  105. package/next/components/dotcms-layout-body/components/contentlet/contentlet.component.d.ts +48 -0
  106. package/next/components/dotcms-layout-body/components/contentlet/contentlet.component.d.ts.map +1 -0
  107. package/next/components/dotcms-layout-body/components/fallback-component/fallback-component.component.d.ts +16 -0
  108. package/next/components/dotcms-layout-body/components/fallback-component/fallback-component.component.d.ts.map +1 -0
  109. package/next/components/dotcms-layout-body/components/page-error-message/page-error-message.component.d.ts +13 -0
  110. package/next/components/dotcms-layout-body/components/page-error-message/page-error-message.component.d.ts.map +1 -0
  111. package/next/components/dotcms-layout-body/components/row/row.component.d.ts +22 -0
  112. package/next/components/dotcms-layout-body/components/row/row.component.d.ts.map +1 -0
  113. package/next/components/dotcms-layout-body/dotcms-layout-body.component.d.ts +30 -0
  114. package/next/components/dotcms-layout-body/dotcms-layout-body.component.d.ts.map +1 -0
  115. package/next/directives/dotcms-show-when/dotcms-show-when.directive.d.ts +21 -0
  116. package/next/directives/dotcms-show-when/dotcms-show-when.directive.d.ts.map +1 -0
  117. package/next/dotcms-angular-next.d.ts.map +1 -0
  118. package/next/index.d.ts +6 -0
  119. package/next/models/index.d.ts +39 -0
  120. package/next/models/index.d.ts.map +1 -0
  121. package/next/providers/dotcms-client/dotcms-client.provider.d.ts +60 -0
  122. package/next/providers/dotcms-client/dotcms-client.provider.d.ts.map +1 -0
  123. package/next/providers/dotcms-image-loader/dotcms-image_loader.d.ts +21 -0
  124. package/next/providers/dotcms-image-loader/dotcms-image_loader.d.ts.map +1 -0
  125. package/next/public_api.d.ts +8 -0
  126. package/next/public_api.d.ts.map +1 -0
  127. package/next/services/dotcms-editable-page.service.d.ts +40 -0
  128. package/next/services/dotcms-editable-page.service.d.ts.map +1 -0
  129. package/next/store/dotcms.store.d.ts +36 -0
  130. package/next/store/dotcms.store.d.ts.map +1 -0
  131. package/package.json +16 -9
  132. package/public_api.d.ts +2 -0
  133. package/public_api.d.ts.map +1 -0
  134. package/esm2022/index.mjs +0 -5
  135. package/esm2022/lib/components/dot-editable-text/dot-editable-text.component.mjs +0 -225
  136. package/esm2022/lib/components/dot-editable-text/utils.mjs +0 -43
  137. package/esm2022/lib/components/no-component/no-component.component.mjs +0 -32
  138. package/esm2022/lib/layout/container/container.component.mjs +0 -126
  139. package/esm2022/lib/layout/contentlet/contentlet.component.mjs +0 -120
  140. package/esm2022/lib/layout/dotcms-layout/dotcms-layout.component.mjs +0 -100
  141. package/esm2022/lib/models/dotcms.model.mjs +0 -3
  142. package/esm2022/lib/models/index.mjs +0 -3
  143. package/esm2022/lib/services/dotcms-context/page-context.service.mjs +0 -75
  144. package/esm2022/lib/utils/index.mjs +0 -84
  145. package/index.d.ts.map +0 -1
  146. package/lib/components/dot-editable-text/dot-editable-text.component.d.ts.map +0 -1
  147. package/lib/components/dot-editable-text/utils.d.ts.map +0 -1
  148. package/lib/components/no-component/no-component.component.d.ts.map +0 -1
  149. package/lib/layout/column/column.component.d.ts.map +0 -1
  150. package/lib/layout/container/container.component.d.ts.map +0 -1
  151. package/lib/layout/contentlet/contentlet.component.d.ts.map +0 -1
  152. package/lib/layout/dotcms-layout/dotcms-layout.component.d.ts.map +0 -1
  153. package/lib/layout/row/row.component.d.ts.map +0 -1
  154. package/lib/models/dotcms.model.d.ts.map +0 -1
  155. package/lib/models/index.d.ts.map +0 -1
  156. package/lib/services/dotcms-context/page-context.service.d.ts.map +0 -1
  157. package/lib/utils/index.d.ts.map +0 -1
  158. /package/lib/{components → deprecated/components}/dot-editable-text/utils.d.ts +0 -0
  159. /package/lib/{components → deprecated/components}/no-component/no-component.component.d.ts +0 -0
  160. /package/lib/{layout → deprecated/layout}/column/column.component.d.ts +0 -0
  161. /package/lib/{layout → deprecated/layout}/container/container.component.d.ts +0 -0
  162. /package/lib/{layout → deprecated/layout}/contentlet/contentlet.component.d.ts +0 -0
  163. /package/lib/{layout → deprecated/layout}/row/row.component.d.ts +0 -0
  164. /package/lib/{models → deprecated/models}/index.d.ts +0 -0
  165. /package/lib/{utils → deprecated/utils}/index.d.ts +0 -0
@@ -0,0 +1,65 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { UVE_MODE } from '@dotcms/types';
3
+ import { getUVEState } from '@dotcms/uve';
4
+ import * as i0 from "@angular/core";
5
+ export class DotUnknownBlockComponent {
6
+ constructor() {
7
+ this.style = {
8
+ backgroundColor: '#fff5f5',
9
+ color: '#333',
10
+ padding: '1rem',
11
+ borderRadius: '0.5rem',
12
+ marginBottom: '1rem',
13
+ marginTop: '1rem',
14
+ border: '1px solid #fc8181'
15
+ };
16
+ }
17
+ get isEditMode() {
18
+ return getUVEState()?.mode === UVE_MODE.EDIT;
19
+ }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: DotUnknownBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: DotUnknownBlockComponent, isStandalone: true, selector: "dotcms-block-editor-renderer-unknown", inputs: { node: "node" }, ngImport: i0, template: `
22
+ @if (isEditMode) {
23
+ <div [style]="style" data-testid="unknown-block-type">
24
+ <strong style="color: #c53030">Warning:</strong>
25
+ The block type
26
+ <strong>{{ node.type }}</strong>
27
+ is not recognized. Please check your
28
+ <a
29
+ href="https://dev.dotcms.com/docs/block-editor"
30
+ target="_blank"
31
+ rel="noopener noreferrer">
32
+ configuration
33
+ </a>
34
+ or contact support for assistance.
35
+ </div>
36
+ }
37
+ `, isInline: true }); }
38
+ }
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: DotUnknownBlockComponent, decorators: [{
40
+ type: Component,
41
+ args: [{
42
+ selector: 'dotcms-block-editor-renderer-unknown',
43
+ standalone: true,
44
+ template: `
45
+ @if (isEditMode) {
46
+ <div [style]="style" data-testid="unknown-block-type">
47
+ <strong style="color: #c53030">Warning:</strong>
48
+ The block type
49
+ <strong>{{ node.type }}</strong>
50
+ is not recognized. Please check your
51
+ <a
52
+ href="https://dev.dotcms.com/docs/block-editor"
53
+ target="_blank"
54
+ rel="noopener noreferrer">
55
+ configuration
56
+ </a>
57
+ or contact support for assistance.
58
+ </div>
59
+ }
60
+ `
61
+ }]
62
+ }], propDecorators: { node: [{
63
+ type: Input
64
+ }] } });
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5rbm93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9hbmd1bGFyL25leHQvY29tcG9uZW50cy9kb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyL2Jsb2Nrcy91bmtub3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQW1CLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQXVCMUMsTUFBTSxPQUFPLHdCQUF3QjtJQXJCckM7UUE0QnVCLFVBQUssR0FBRztZQUN2QixlQUFlLEVBQUUsU0FBUztZQUMxQixLQUFLLEVBQUUsTUFBTTtZQUNiLE9BQU8sRUFBRSxNQUFNO1lBQ2YsWUFBWSxFQUFFLFFBQVE7WUFDdEIsWUFBWSxFQUFFLE1BQU07WUFDcEIsU0FBUyxFQUFFLE1BQU07WUFDakIsTUFBTSxFQUFFLG1CQUFtQjtTQUM5QixDQUFDO0tBQ0w7SUFiRyxJQUFJLFVBQVU7UUFDVixPQUFPLFdBQVcsRUFBRSxFQUFFLElBQUksS0FBSyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQ2pELENBQUM7OEdBTFEsd0JBQXdCO2tHQUF4Qix3QkFBd0IsMEhBbEJ2Qjs7Ozs7Ozs7Ozs7Ozs7OztLQWdCVDs7MkZBRVEsd0JBQXdCO2tCQXJCcEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsc0NBQXNDO29CQUNoRCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7O0tBZ0JUO2lCQUNKOzhCQUVZLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmxvY2tFZGl0b3JOb2RlLCBVVkVfTU9ERSB9IGZyb20gJ0Bkb3RjbXMvdHlwZXMnO1xuaW1wb3J0IHsgZ2V0VVZFU3RhdGUgfSBmcm9tICdAZG90Y21zL3V2ZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci11bmtub3duJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIEBpZiAoaXNFZGl0TW9kZSkge1xuICAgICAgICAgICAgPGRpdiBbc3R5bGVdPVwic3R5bGVcIiBkYXRhLXRlc3RpZD1cInVua25vd24tYmxvY2stdHlwZVwiPlxuICAgICAgICAgICAgICAgIDxzdHJvbmcgc3R5bGU9XCJjb2xvcjogI2M1MzAzMFwiPldhcm5pbmc6PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgVGhlIGJsb2NrIHR5cGVcbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7IG5vZGUudHlwZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIGlzIG5vdCByZWNvZ25pemVkLiBQbGVhc2UgY2hlY2sgeW91clxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIGhyZWY9XCJodHRwczovL2Rldi5kb3RjbXMuY29tL2RvY3MvYmxvY2stZWRpdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uXG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIG9yIGNvbnRhY3Qgc3VwcG9ydCBmb3IgYXNzaXN0YW5jZS5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBEb3RVbmtub3duQmxvY2tDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIG5vZGUhOiBCbG9ja0VkaXRvck5vZGU7XG5cbiAgICBnZXQgaXNFZGl0TW9kZSgpIHtcbiAgICAgICAgcmV0dXJuIGdldFVWRVN0YXRlKCk/Lm1vZGUgPT09IFVWRV9NT0RFLkVESVQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0eWxlID0ge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmNWY1JyxcbiAgICAgICAgY29sb3I6ICcjMzMzJyxcbiAgICAgICAgcGFkZGluZzogJzFyZW0nLFxuICAgICAgICBib3JkZXJSYWRpdXM6ICcwLjVyZW0nLFxuICAgICAgICBtYXJnaW5Cb3R0b206ICcxcmVtJyxcbiAgICAgICAgbWFyZ2luVG9wOiAnMXJlbScsXG4gICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZmM4MTgxJ1xuICAgIH07XG59XG4iXX0=
@@ -0,0 +1,48 @@
1
+ import { ChangeDetectionStrategy, Component, computed, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class DotVideoBlock {
4
+ constructor() {
5
+ this.$srcURL = computed(() => this.attrs?.['src']);
6
+ this.$posterURL = computed(() => this.attrs?.['data']?.['thumbnail']);
7
+ }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: DotVideoBlock, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: DotVideoBlock, isStandalone: true, selector: "dotcms-block-editor-renderer-video", inputs: { attrs: "attrs" }, ngImport: i0, template: `
10
+ <video
11
+ [controls]="true"
12
+ preload="metadata"
13
+ [poster]="this.$posterURL()"
14
+ [width]="attrs?.['width']"
15
+ [height]="attrs?.['height']">
16
+ <track default kind="captions" srclang="en" />
17
+ <source [src]="this.$srcURL()" [type]="attrs?.['mimeType']" />
18
+ Your browser does not support the
19
+ <code>video</code>
20
+ element.
21
+ </video>
22
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: DotVideoBlock, decorators: [{
25
+ type: Component,
26
+ args: [{
27
+ selector: 'dotcms-block-editor-renderer-video',
28
+ standalone: true,
29
+ changeDetection: ChangeDetectionStrategy.OnPush,
30
+ template: `
31
+ <video
32
+ [controls]="true"
33
+ preload="metadata"
34
+ [poster]="this.$posterURL()"
35
+ [width]="attrs?.['width']"
36
+ [height]="attrs?.['height']">
37
+ <track default kind="captions" srclang="en" />
38
+ <source [src]="this.$srcURL()" [type]="attrs?.['mimeType']" />
39
+ Your browser does not support the
40
+ <code>video</code>
41
+ element.
42
+ </video>
43
+ `
44
+ }]
45
+ }], propDecorators: { attrs: [{
46
+ type: Input
47
+ }] } });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkZW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvYW5ndWxhci9uZXh0L2NvbXBvbmVudHMvZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci9ibG9ja3MvdmlkZW8uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUF1QnBGLE1BQU0sT0FBTyxhQUFhO0lBbkIxQjtRQXNCdUIsWUFBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUU5QyxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7S0FDdkY7OEdBTlksYUFBYTtrR0FBYixhQUFhLDBIQWZaOzs7Ozs7Ozs7Ozs7O0tBYVQ7OzJGQUVRLGFBQWE7a0JBbkJ6QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxvQ0FBb0M7b0JBQzlDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7O0tBYVQ7aUJBQ0o7OEJBRVksS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJsb2NrRWRpdG9yTm9kZSB9IGZyb20gJ0Bkb3RjbXMvdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXItdmlkZW8nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHZpZGVvXG4gICAgICAgICAgICBbY29udHJvbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgICBwcmVsb2FkPVwibWV0YWRhdGFcIlxuICAgICAgICAgICAgW3Bvc3Rlcl09XCJ0aGlzLiRwb3N0ZXJVUkwoKVwiXG4gICAgICAgICAgICBbd2lkdGhdPVwiYXR0cnM/Llsnd2lkdGgnXVwiXG4gICAgICAgICAgICBbaGVpZ2h0XT1cImF0dHJzPy5bJ2hlaWdodCddXCI+XG4gICAgICAgICAgICA8dHJhY2sgZGVmYXVsdCBraW5kPVwiY2FwdGlvbnNcIiBzcmNsYW5nPVwiZW5cIiAvPlxuICAgICAgICAgICAgPHNvdXJjZSBbc3JjXT1cInRoaXMuJHNyY1VSTCgpXCIgW3R5cGVdPVwiYXR0cnM/LlsnbWltZVR5cGUnXVwiIC8+XG4gICAgICAgICAgICBZb3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGVcbiAgICAgICAgICAgIDxjb2RlPnZpZGVvPC9jb2RlPlxuICAgICAgICAgICAgZWxlbWVudC5cbiAgICAgICAgPC92aWRlbz5cbiAgICBgXG59KVxuZXhwb3J0IGNsYXNzIERvdFZpZGVvQmxvY2sge1xuICAgIEBJbnB1dCgpIGF0dHJzITogQmxvY2tFZGl0b3JOb2RlWydhdHRycyddO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5ICRzcmNVUkwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmF0dHJzPy5bJ3NyYyddKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSAkcG9zdGVyVVJMID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5hdHRycz8uWydkYXRhJ10/LlsndGh1bWJuYWlsJ10pO1xufVxuIl19
@@ -0,0 +1,50 @@
1
+ import { Component, Input, signal } from '@angular/core';
2
+ import { UVE_MODE } from '@dotcms/types';
3
+ import { getUVEState } from '@dotcms/uve';
4
+ import { isValidBlocks } from '@dotcms/uve/internal';
5
+ import { DotCMSBlockEditorItemComponent } from './item/dotcms-block-editor-item.component';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * A component that renders content from DotCMS's Block Editor field.
9
+ *
10
+ * This component provides an easy way to render Block Editor content in your Angular applications.
11
+ * It handles the rendering of standard blocks and allows customization through custom renderers.
12
+ *
13
+ * For more information about Block Editor, see {@link https://dev.dotcms.com/docs/block-editor}
14
+ *
15
+ * @example
16
+ * ```html
17
+ * <dotcms-block-editor-renderer
18
+ * [blocks]="myBlockEditorContent"
19
+ * [customRenderers]="myCustomRenderers">
20
+ * </dotcms-block-editor-renderer>
21
+ * ```
22
+ */
23
+ export class DotCMSBlockEditorRendererComponent {
24
+ constructor() {
25
+ this.$blockEditorState = signal({ error: null });
26
+ this.$isInEditMode = signal(getUVEState()?.mode === UVE_MODE.EDIT);
27
+ }
28
+ ngOnInit() {
29
+ const state = isValidBlocks(this.blocks);
30
+ if (state.error) {
31
+ console.error('Error in dotcms-block-editor-renderer: ', state.error);
32
+ }
33
+ this.$blockEditorState.set(isValidBlocks(this.blocks));
34
+ }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: DotCMSBlockEditorRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
36
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: DotCMSBlockEditorRendererComponent, isStandalone: true, selector: "dotcms-block-editor-renderer", inputs: { blocks: "blocks", customRenderers: "customRenderers", class: "class", style: "style" }, ngImport: i0, template: "@if ($blockEditorState().error && $isInEditMode()) {\n <div data-testid=\"invalid-blocks-message\">\n {{ $blockEditorState().error }}\n </div>\n} @else if (!$blockEditorState().error) {\n <div [class]=\"class\" [style]=\"style\">\n <dotcms-block-editor-renderer-block\n [content]=\"blocks.content\"\n [customRenderers]=\"customRenderers\" />\n </div>\n}\n", styles: [""], dependencies: [{ kind: "component", type: DotCMSBlockEditorItemComponent, selector: "dotcms-block-editor-renderer-block", inputs: ["content", "customRenderers"] }] }); }
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: DotCMSBlockEditorRendererComponent, decorators: [{
39
+ type: Component,
40
+ args: [{ selector: 'dotcms-block-editor-renderer', standalone: true, imports: [DotCMSBlockEditorItemComponent], template: "@if ($blockEditorState().error && $isInEditMode()) {\n <div data-testid=\"invalid-blocks-message\">\n {{ $blockEditorState().error }}\n </div>\n} @else if (!$blockEditorState().error) {\n <div [class]=\"class\" [style]=\"style\">\n <dotcms-block-editor-renderer-block\n [content]=\"blocks.content\"\n [customRenderers]=\"customRenderers\" />\n </div>\n}\n" }]
41
+ }], propDecorators: { blocks: [{
42
+ type: Input
43
+ }], customRenderers: [{
44
+ type: Input
45
+ }], class: [{
46
+ type: Input
47
+ }], style: [{
48
+ type: Input
49
+ }] } });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9hbmd1bGFyL25leHQvY29tcG9uZW50cy9kb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyL2RvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvYW5ndWxhci9uZXh0L2NvbXBvbmVudHMvZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci9kb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsUUFBUSxFQUFzQixNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7QUFZM0Y7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBUUgsTUFBTSxPQUFPLGtDQUFrQztJQVAvQztRQWFJLHNCQUFpQixHQUFHLE1BQU0sQ0FBbUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM5RCxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBV2pFO0lBVEcsUUFBUTtRQUNKLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFekMsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLHlDQUF5QyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQzs4R0FqQlEsa0NBQWtDO2tHQUFsQyxrQ0FBa0MsMExDMUMvQyxxWkFXQSwwREQ2QmMsOEJBQThCOzsyRkFFL0Isa0NBQWtDO2tCQVA5QyxTQUFTOytCQUNJLDhCQUE4QixjQUM1QixJQUFJLFdBR1AsQ0FBQyw4QkFBOEIsQ0FBQzs4QkFHaEMsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBVVkVfTU9ERSwgQmxvY2tFZGl0b3JDb250ZW50IH0gZnJvbSAnQGRvdGNtcy90eXBlcyc7XG5pbXBvcnQgeyBCbG9ja0VkaXRvclN0YXRlIH0gZnJvbSAnQGRvdGNtcy90eXBlcy9pbnRlcm5hbCc7XG5pbXBvcnQgeyBnZXRVVkVTdGF0ZSB9IGZyb20gJ0Bkb3RjbXMvdXZlJztcbmltcG9ydCB7IGlzVmFsaWRCbG9ja3MgfSBmcm9tICdAZG90Y21zL3V2ZS9pbnRlcm5hbCc7XG5cbmltcG9ydCB7IERvdENNU0Jsb2NrRWRpdG9ySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vaXRlbS9kb3RjbXMtYmxvY2stZWRpdG9yLWl0ZW0uY29tcG9uZW50JztcblxuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudEVudGl0eSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIEN1c3RvbSBSZW5kZXJlciB1c2VkIGJ5IHRoZSBCbG9jayBFZGl0b3IgQ29tcG9uZW50XG4gKlxuICogQGV4cG9ydFxuICogQGludGVyZmFjZSBDdXN0b21SZW5kZXJlclxuICovXG5leHBvcnQgdHlwZSBDdXN0b21SZW5kZXJlciA9IFJlY29yZDxzdHJpbmcsIER5bmFtaWNDb21wb25lbnRFbnRpdHk+O1xuXG4vKipcbiAqIEEgY29tcG9uZW50IHRoYXQgcmVuZGVycyBjb250ZW50IGZyb20gRG90Q01TJ3MgQmxvY2sgRWRpdG9yIGZpZWxkLlxuICpcbiAqIFRoaXMgY29tcG9uZW50IHByb3ZpZGVzIGFuIGVhc3kgd2F5IHRvIHJlbmRlciBCbG9jayBFZGl0b3IgY29udGVudCBpbiB5b3VyIEFuZ3VsYXIgYXBwbGljYXRpb25zLlxuICogSXQgaGFuZGxlcyB0aGUgcmVuZGVyaW5nIG9mIHN0YW5kYXJkIGJsb2NrcyBhbmQgYWxsb3dzIGN1c3RvbWl6YXRpb24gdGhyb3VnaCBjdXN0b20gcmVuZGVyZXJzLlxuICpcbiAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IEJsb2NrIEVkaXRvciwgc2VlIHtAbGluayBodHRwczovL2Rldi5kb3RjbXMuY29tL2RvY3MvYmxvY2stZWRpdG9yfVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8ZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlclxuICogICBbYmxvY2tzXT1cIm15QmxvY2tFZGl0b3JDb250ZW50XCJcbiAqICAgW2N1c3RvbVJlbmRlcmVyc109XCJteUN1c3RvbVJlbmRlcmVyc1wiPlxuICogPC9kb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGltcG9ydHM6IFtEb3RDTVNCbG9ja0VkaXRvckl0ZW1Db21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIERvdENNU0Jsb2NrRWRpdG9yUmVuZGVyZXJDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIGJsb2NrcyE6IEJsb2NrRWRpdG9yQ29udGVudDtcbiAgICBASW5wdXQoKSBjdXN0b21SZW5kZXJlcnM6IEN1c3RvbVJlbmRlcmVyIHwgdW5kZWZpbmVkO1xuICAgIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgQElucHV0KCkgc3R5bGU6IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQ7XG5cbiAgICAkYmxvY2tFZGl0b3JTdGF0ZSA9IHNpZ25hbDxCbG9ja0VkaXRvclN0YXRlPih7IGVycm9yOiBudWxsIH0pO1xuICAgICRpc0luRWRpdE1vZGUgPSBzaWduYWwoZ2V0VVZFU3RhdGUoKT8ubW9kZSA9PT0gVVZFX01PREUuRURJVCk7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBpc1ZhbGlkQmxvY2tzKHRoaXMuYmxvY2tzKTtcblxuICAgICAgICBpZiAoc3RhdGUuZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIGRvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXI6ICcsIHN0YXRlLmVycm9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuJGJsb2NrRWRpdG9yU3RhdGUuc2V0KGlzVmFsaWRCbG9ja3ModGhpcy5ibG9ja3MpKTtcbiAgICB9XG59XG4iLCJAaWYgKCRibG9ja0VkaXRvclN0YXRlKCkuZXJyb3IgJiYgJGlzSW5FZGl0TW9kZSgpKSB7XG4gICAgPGRpdiBkYXRhLXRlc3RpZD1cImludmFsaWQtYmxvY2tzLW1lc3NhZ2VcIj5cbiAgICAgICAge3sgJGJsb2NrRWRpdG9yU3RhdGUoKS5lcnJvciB9fVxuICAgIDwvZGl2PlxufSBAZWxzZSBpZiAoISRibG9ja0VkaXRvclN0YXRlKCkuZXJyb3IpIHtcbiAgICA8ZGl2IFtjbGFzc109XCJjbGFzc1wiIFtzdHlsZV09XCJzdHlsZVwiPlxuICAgICAgICA8ZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci1ibG9ja1xuICAgICAgICAgICAgW2NvbnRlbnRdPVwiYmxvY2tzLmNvbnRlbnRcIlxuICAgICAgICAgICAgW2N1c3RvbVJlbmRlcmVyc109XCJjdXN0b21SZW5kZXJlcnNcIiAvPlxuICAgIDwvZGl2PlxufVxuIl19
@@ -0,0 +1,45 @@
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/dot-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 { DotUnknownBlockComponent } from '../blocks/unknown.component';
11
+ import { DotVideoBlock } from '../blocks/video.component';
12
+ import * as i0 from "@angular/core";
13
+ export class DotCMSBlockEditorItemComponent {
14
+ constructor() {
15
+ this.BLOCKS = BlockEditorDefaultBlocks;
16
+ }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: DotCMSBlockEditorItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18
+ 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 <dotcms-block-editor-renderer-unknown [node]=\"node\" />\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"] }, { kind: "component", type: DotUnknownBlockComponent, selector: "dotcms-block-editor-renderer-unknown", inputs: ["node"] }] }); }
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: DotCMSBlockEditorItemComponent, decorators: [{
21
+ type: Component,
22
+ args: [{ selector: 'dotcms-block-editor-renderer-block', standalone: true, imports: [
23
+ NgTemplateOutlet,
24
+ NgComponentOutlet,
25
+ AsyncPipe,
26
+ DotParagraphBlock,
27
+ DotTextBlock,
28
+ DotHeadingBlock,
29
+ DotBulletList,
30
+ DotOrdererList,
31
+ DotListItem,
32
+ DotCodeBlock,
33
+ DotBlockQuote,
34
+ DotImageBlock,
35
+ DotVideoBlock,
36
+ DotTableBlock,
37
+ DotContentletBlock,
38
+ DotUnknownBlockComponent
39
+ ], 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 <dotcms-block-editor-renderer-unknown [node]=\"node\" />\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" }]
40
+ }], propDecorators: { content: [{
41
+ type: Input
42
+ }], customRenderers: [{
43
+ type: Input
44
+ }] } });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG90Y21zLWJsb2NrLWVkaXRvci1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2FuZ3VsYXIvbmV4dC9jb21wb25lbnRzL2RvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXIvaXRlbS9kb3RjbXMtYmxvY2stZWRpdG9yLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvYW5ndWxhci9uZXh0L2NvbXBvbmVudHMvZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci9pdGVtL2RvdGNtcy1ibG9jay1lZGl0b3ItaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakYsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQTJCMUQsTUFBTSxPQUFPLDhCQUE4QjtJQXhCM0M7UUE0QkksV0FBTSxHQUFHLHdCQUF3QixDQUFDO0tBQ3JDOzhHQUxZLDhCQUE4QjtrR0FBOUIsOEJBQThCLGtLQ3hDM0MsMnBJQTRHQSwwRERwRWEsOEJBQThCLHVIQWxCbkMsZ0JBQWdCLG9KQUNoQixpQkFBaUIsK09BQ2pCLFNBQVMsOENBQ1QsaUJBQWlCLG1GQUNqQixZQUFZLHlHQUNaLGVBQWUsb0dBQ2YsYUFBYSxxRkFDYixjQUFjLHNGQUNkLFdBQVcsbUZBQ1gsWUFBWSxvRkFDWixhQUFhLHFGQUNiLGFBQWEsa0dBQ2IsYUFBYSxrR0FDYixhQUFhLG9HQUNiLGtCQUFrQiwwSEFDbEIsd0JBQXdCOzsyRkFHbkIsOEJBQThCO2tCQXhCMUMsU0FBUzsrQkFDSSxvQ0FBb0MsY0FDbEMsSUFBSSxXQUdQO3dCQUNMLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixTQUFTO3dCQUNULGlCQUFpQjt3QkFDakIsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxXQUFXO3dCQUNYLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLHdCQUF3QjtxQkFDM0I7OEJBR1EsT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nQ29tcG9uZW50T3V0bGV0LCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmxvY2tFZGl0b3JOb2RlIH0gZnJvbSAnQGRvdGNtcy90eXBlcyc7XG5pbXBvcnQgeyBCbG9ja0VkaXRvckRlZmF1bHRCbG9ja3MgfSBmcm9tICdAZG90Y21zL3R5cGVzL2ludGVybmFsJztcblxuaW1wb3J0IHsgRG90Q29kZUJsb2NrLCBEb3RCbG9ja1F1b3RlIH0gZnJvbSAnLi4vYmxvY2tzL2NvZGUuY29tcG9uZW50JztcbmltcG9ydCB7IERvdENvbnRlbnRsZXRCbG9jayB9IGZyb20gJy4uL2Jsb2Nrcy9kb3QtY29udGVudGxldC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRG90SW1hZ2VCbG9jayB9IGZyb20gJy4uL2Jsb2Nrcy9pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRG90QnVsbGV0TGlzdCwgRG90T3JkZXJlckxpc3QsIERvdExpc3RJdGVtIH0gZnJvbSAnLi4vYmxvY2tzL2xpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IERvdFRhYmxlQmxvY2sgfSBmcm9tICcuLi9ibG9ja3MvdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IERvdFBhcmFncmFwaEJsb2NrLCBEb3RUZXh0QmxvY2ssIERvdEhlYWRpbmdCbG9jayB9IGZyb20gJy4uL2Jsb2Nrcy90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEb3RVbmtub3duQmxvY2tDb21wb25lbnQgfSBmcm9tICcuLi9ibG9ja3MvdW5rbm93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRG90VmlkZW9CbG9jayB9IGZyb20gJy4uL2Jsb2Nrcy92aWRlby5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3VzdG9tUmVuZGVyZXIgfSBmcm9tICcuLi9kb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci1ibG9jaycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZG90Y21zLWJsb2NrLWVkaXRvci1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kb3RjbXMtYmxvY2stZWRpdG9yLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIE5nQ29tcG9uZW50T3V0bGV0LFxuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIERvdFBhcmFncmFwaEJsb2NrLFxuICAgICAgICBEb3RUZXh0QmxvY2ssXG4gICAgICAgIERvdEhlYWRpbmdCbG9jayxcbiAgICAgICAgRG90QnVsbGV0TGlzdCxcbiAgICAgICAgRG90T3JkZXJlckxpc3QsXG4gICAgICAgIERvdExpc3RJdGVtLFxuICAgICAgICBEb3RDb2RlQmxvY2ssXG4gICAgICAgIERvdEJsb2NrUXVvdGUsXG4gICAgICAgIERvdEltYWdlQmxvY2ssXG4gICAgICAgIERvdFZpZGVvQmxvY2ssXG4gICAgICAgIERvdFRhYmxlQmxvY2ssXG4gICAgICAgIERvdENvbnRlbnRsZXRCbG9jayxcbiAgICAgICAgRG90VW5rbm93bkJsb2NrQ29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBEb3RDTVNCbG9ja0VkaXRvckl0ZW1Db21wb25lbnQge1xuICAgIEBJbnB1dCgpIGNvbnRlbnQ6IEJsb2NrRWRpdG9yTm9kZVtdIHwgdW5kZWZpbmVkO1xuICAgIEBJbnB1dCgpIGN1c3RvbVJlbmRlcmVyczogQ3VzdG9tUmVuZGVyZXIgfCB1bmRlZmluZWQ7XG5cbiAgICBCTE9DS1MgPSBCbG9ja0VkaXRvckRlZmF1bHRCbG9ja3M7XG59XG4iLCJAZm9yIChub2RlIG9mIGNvbnRlbnQ7IHRyYWNrIG5vZGUpIHtcbiAgICBAaWYgKGN1c3RvbVJlbmRlcmVycz8uW25vZGUudHlwZV0pIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICBjdXN0b21SZW5kZXI7XG4gICAgICAgICAgICAgICAgY29udGV4dDogeyBjdXN0b21SZW5kZXI6IGN1c3RvbVJlbmRlcmVycz8uW25vZGUudHlwZV0sIG5vZGU6IG5vZGUgfVxuICAgICAgICAgICAgXCI+PC9uZy1jb250YWluZXI+XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIEBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICAgICAgQGNhc2UgKEJMT0NLUy5QQVJBR1JBUEgpIHtcbiAgICAgICAgICAgICAgICA8ZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci1wYXJhZ3JhcGggW3N0eWxlXT1cIm5vZGUuYXR0cnNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXItYmxvY2tcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cIm5vZGUuY29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tUmVuZGVyZXJzXT1cImN1c3RvbVJlbmRlcmVyc1wiIC8+XG4gICAgICAgICAgICAgICAgPC9kb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyLXBhcmFncmFwaD5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGNhc2UgKEJMT0NLUy5URVhUKSB7XG4gICAgICAgICAgICAgICAgPGRvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXItdGV4dCBbbWFya3NdPVwibm9kZS5tYXJrc1wiIFt0ZXh0XT1cIm5vZGUudGV4dCB8fCAnJ1wiIC8+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBjYXNlIChCTE9DS1MuSEVBRElORykge1xuICAgICAgICAgICAgICAgIDxkb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyLWhlYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIm5vZGUuYXR0cnMgfHwge31cIlxuICAgICAgICAgICAgICAgICAgICBbbGV2ZWxdPVwibm9kZS5hdHRycz8uWydsZXZlbCddIHx8ICcxJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci1ibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwibm9kZS5jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21SZW5kZXJlcnNdPVwiY3VzdG9tUmVuZGVyZXJzXCIgLz5cbiAgICAgICAgICAgICAgICA8L2RvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXItaGVhZGluZz5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGNhc2UgKEJMT0NLUy5CVUxMRVRfTElTVCkge1xuICAgICAgICAgICAgICAgIDxkb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyLWJ1bGxldC1saXN0PlxuICAgICAgICAgICAgICAgICAgICA8ZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci1ibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwibm9kZS5jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21SZW5kZXJlcnNdPVwiY3VzdG9tUmVuZGVyZXJzXCIgLz5cbiAgICAgICAgICAgICAgICA8L2RvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXItYnVsbGV0LWxpc3Q+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBjYXNlIChCTE9DS1MuT1JERVJFRF9MSVNUKSB7XG4gICAgICAgICAgICAgICAgPGRvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXItb3JkZXJlZC1saXN0PlxuICAgICAgICAgICAgICAgICAgICA8ZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci1ibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwibm9kZS5jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21SZW5kZXJlcnNdPVwiY3VzdG9tUmVuZGVyZXJzXCIgLz5cbiAgICAgICAgICAgICAgICA8L2RvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXItb3JkZXJlZC1saXN0PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAY2FzZSAoQkxPQ0tTLkxJU1RfSVRFTSkge1xuICAgICAgICAgICAgICAgIDxkb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyLWxpc3QtaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPGRvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXItYmxvY2tcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cIm5vZGUuY29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tUmVuZGVyZXJzXT1cImN1c3RvbVJlbmRlcmVyc1wiIC8+XG4gICAgICAgICAgICAgICAgPC9kb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyLWxpc3QtaXRlbT5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGNhc2UgKEJMT0NLUy5CTE9DS19RVU9URSkge1xuICAgICAgICAgICAgICAgIDxkb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyLWJsb2NrLXF1b3RlPlxuICAgICAgICAgICAgICAgICAgICA8ZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci1ibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwibm9kZS5jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21SZW5kZXJlcnNdPVwiY3VzdG9tUmVuZGVyZXJzXCIgLz5cbiAgICAgICAgICAgICAgICA8L2RvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXItYmxvY2stcXVvdGU+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBjYXNlIChCTE9DS1MuQ09ERV9CTE9DSykge1xuICAgICAgICAgICAgICAgIDxkb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyLWNvZGUtYmxvY2s+XG4gICAgICAgICAgICAgICAgICAgIDxkb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyLWJsb2NrXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJub2RlLmNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbVJlbmRlcmVyc109XCJjdXN0b21SZW5kZXJlcnNcIiAvPlxuICAgICAgICAgICAgICAgIDwvZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci1jb2RlLWJsb2NrPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAY2FzZSAoQkxPQ0tTLkhBUkRCUkVBSykge1xuICAgICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAY2FzZSAoQkxPQ0tTLkhPUklaT05UQUxfUlVMRSkge1xuICAgICAgICAgICAgICAgIDxociAvPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAY2FzZSAoQkxPQ0tTLkRPVF9JTUFHRSkge1xuICAgICAgICAgICAgICAgIDxkb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyLWltYWdlIFthdHRyc109XCJub2RlLmF0dHJzIHx8IHt9XCIgLz5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGNhc2UgKEJMT0NLUy5ET1RfVklERU8pIHtcbiAgICAgICAgICAgICAgICA8ZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci12aWRlbyBbYXR0cnNdPVwibm9kZS5hdHRycyB8fCB7fVwiIC8+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBjYXNlIChCTE9DS1MuVEFCTEUpIHtcbiAgICAgICAgICAgICAgICA8ZG90Y21zLWJsb2NrLWVkaXRvci1yZW5kZXJlci10YWJsZSBbY29udGVudF09XCJub2RlLmNvbnRlbnRcIiAvPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAY2FzZSAoQkxPQ0tTLkRPVF9DT05URU5UKSB7XG4gICAgICAgICAgICAgICAgPGRvdGNtcy1ibG9jay1lZGl0b3ItcmVuZGVyZXItY29udGVudGxldFxuICAgICAgICAgICAgICAgICAgICBbYXR0cnNdPVwibm9kZS5hdHRycyB8fCB7fVwiXG4gICAgICAgICAgICAgICAgICAgIFtjdXN0b21SZW5kZXJlcnNdPVwiY3VzdG9tUmVuZGVyZXJzXCIgLz5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICAgIDxkb3RjbXMtYmxvY2stZWRpdG9yLXJlbmRlcmVyLXVua25vd24gW25vZGVdPVwibm9kZVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbjxuZy10ZW1wbGF0ZSAjY3VzdG9tUmVuZGVyIGxldC1jdXN0b21SZW5kZXI9XCJjdXN0b21SZW5kZXJcIiBsZXQtbm9kZT1cIm5vZGVcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0NvbXBvbmVudE91dGxldD1cImN1c3RvbVJlbmRlciB8IGFzeW5jOyBpbnB1dHM6IHsgY29udGVudDogbm9kZSB9XCI+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -0,0 +1,240 @@
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 content of the `contentlet` that can be edited
37
+ *
38
+ * @protected
39
+ * @memberof DotCMSEditableTextComponent
40
+ */
41
+ this.content = '';
42
+ this.#NotDotCMSHostMessage = 'The `dotCMSHost` parameter is not defined. Check that the UVE is sending the correct parameters.';
43
+ this.#sanitizer = inject(DomSanitizer);
44
+ this.#renderer = inject(Renderer2);
45
+ this.#elementRef = inject(ElementRef);
46
+ }
47
+ #NotDotCMSHostMessage;
48
+ #sanitizer;
49
+ #renderer;
50
+ #elementRef;
51
+ /**
52
+ * The TinyMCE editor
53
+ *
54
+ * @readonly
55
+ * @memberof DotCMSEditableTextComponent
56
+ */
57
+ get editor() {
58
+ return this.editorComponent?.editor;
59
+ }
60
+ /**
61
+ * Represents if the component is inside the editor
62
+ *
63
+ * @protected
64
+ * @type {boolean}
65
+ * @memberof DotCMSEditableTextComponent
66
+ */
67
+ get isEditMode() {
68
+ const { mode, dotCMSHost } = getUVEState() || {};
69
+ return mode === UVE_MODE.EDIT && dotCMSHost;
70
+ }
71
+ /**
72
+ * Returns the number of pages the contentlet is on
73
+ *
74
+ * @readonly
75
+ * @memberof DotCMSEditableTextComponent
76
+ */
77
+ get onNumberOfPages() {
78
+ return this.contentlet['onNumberOfPages'] || 1;
79
+ }
80
+ /**
81
+ * Handle copy contentlet inline editing success event
82
+ *
83
+ * @param {MessageEvent} { data }
84
+ * @return {*}
85
+ * @memberof DotCMSEditableTextComponent
86
+ */
87
+ onMessage({ data }) {
88
+ const { name, payload } = data;
89
+ if (name !== __DOTCMS_UVE_EVENT__.UVE_COPY_CONTENTLET_INLINE_EDITING_SUCCESS) {
90
+ return;
91
+ }
92
+ const { oldInode, inode } = payload;
93
+ const currentInode = this.contentlet.inode;
94
+ if (currentInode === oldInode || currentInode === inode) {
95
+ this.editorComponent.editor.focus();
96
+ return;
97
+ }
98
+ }
99
+ ngOnInit() {
100
+ const { dotCMSHost } = getUVEState() || {};
101
+ if (!this.isEditMode) {
102
+ this.innerHTMLToElement();
103
+ if (!dotCMSHost) {
104
+ console.warn(this.#NotDotCMSHostMessage);
105
+ }
106
+ return;
107
+ }
108
+ this.init = {
109
+ ...TINYMCE_CONFIG[this.mode],
110
+ base_url: `${dotCMSHost}/ext/tinymcev7`
111
+ };
112
+ }
113
+ ngOnChanges() {
114
+ this.content = this.contentlet[this.fieldName] || '';
115
+ if (this.editor) {
116
+ this.editor.setContent(this.content, { format: this.format });
117
+ }
118
+ }
119
+ /**
120
+ * Handle mouse down event
121
+ *
122
+ * @param {EventObj<MouseEvent>} { event }
123
+ * @return {*}
124
+ * @memberof DotCMSEditableTextComponent
125
+ */
126
+ onMouseDown({ event }) {
127
+ if (Number(this.onNumberOfPages) <= 1 || this.editorComponent.editor.hasFocus()) {
128
+ return;
129
+ }
130
+ const { inode, languageId: language } = this.contentlet;
131
+ event.stopPropagation();
132
+ event.preventDefault();
133
+ try {
134
+ sendMessageToUVE({
135
+ action: DotCMSUVEAction.COPY_CONTENTLET_INLINE_EDITING,
136
+ payload: {
137
+ dataset: {
138
+ inode,
139
+ language,
140
+ fieldName: this.fieldName
141
+ }
142
+ }
143
+ });
144
+ }
145
+ catch (error) {
146
+ console.error('Failed to post message to editor:', error);
147
+ }
148
+ }
149
+ /**
150
+ * Handle focus out event
151
+ *
152
+ * @return {*}
153
+ * @memberof DotCMSEditableTextComponent
154
+ */
155
+ onFocusOut() {
156
+ const content = this.editor.getContent({ format: this.format });
157
+ if (!this.editor.isDirty() || !this.didContentChange(content)) {
158
+ return;
159
+ }
160
+ const { inode, languageId: langId } = this.contentlet;
161
+ try {
162
+ sendMessageToUVE({
163
+ action: DotCMSUVEAction.UPDATE_CONTENTLET_INLINE_EDITING,
164
+ payload: {
165
+ content,
166
+ dataset: {
167
+ inode,
168
+ langId,
169
+ fieldName: this.fieldName
170
+ }
171
+ }
172
+ });
173
+ }
174
+ catch (error) {
175
+ console.error('Failed to post message to editor:', error);
176
+ }
177
+ }
178
+ /**
179
+ * inner HTML to element
180
+ *
181
+ * @private
182
+ * @param {string} editedContent
183
+ * @return {*}
184
+ * @memberof DotCMSEditableTextComponent
185
+ */
186
+ innerHTMLToElement() {
187
+ const element = this.#elementRef.nativeElement;
188
+ const safeHtml = this.#sanitizer.bypassSecurityTrustHtml(this.content);
189
+ const content = this.#sanitizer.sanitize(SecurityContext.HTML, safeHtml) || '';
190
+ this.#renderer.setProperty(element, 'innerHTML', content);
191
+ }
192
+ /**
193
+ * Check if the content has changed
194
+ *
195
+ * @private
196
+ * @param {string} editedContent
197
+ * @return {*}
198
+ * @memberof DotCMSEditableTextComponent
199
+ */
200
+ didContentChange(editedContent) {
201
+ return this.content !== editedContent;
202
+ }
203
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: DotCMSEditableTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
204
+ 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: [
205
+ {
206
+ provide: TINYMCE_SCRIPT_SRC,
207
+ useFactory: () => {
208
+ const { dotCMSHost } = getUVEState() || {};
209
+ return `${dotCMSHost || ''}${__TINYMCE_PATH_ON_DOTCMS__}`;
210
+ }
211
+ }
212
+ ], 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){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"] }] }); }
213
+ }
214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: DotCMSEditableTextComponent, decorators: [{
215
+ type: Component,
216
+ args: [{ selector: 'dotcms-editable-text', standalone: true, imports: [EditorComponent], providers: [
217
+ {
218
+ provide: TINYMCE_SCRIPT_SRC,
219
+ useFactory: () => {
220
+ const { dotCMSHost } = getUVEState() || {};
221
+ return `${dotCMSHost || ''}${__TINYMCE_PATH_ON_DOTCMS__}`;
222
+ }
223
+ }
224
+ ], 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){outline:2px solid #006ce7;border-radius:4px}\n"] }]
225
+ }], propDecorators: { editorComponent: [{
226
+ type: ViewChild,
227
+ args: [EditorComponent]
228
+ }], mode: [{
229
+ type: Input
230
+ }], format: [{
231
+ type: Input
232
+ }], contentlet: [{
233
+ type: Input
234
+ }], fieldName: [{
235
+ type: Input
236
+ }], onMessage: [{
237
+ type: HostListener,
238
+ args: ['window:message', ['$event']]
239
+ }] } });
240
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG90Y21zLWVkaXRhYmxlLXRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvYW5ndWxhci9uZXh0L2NvbXBvbmVudHMvZG90Y21zLWVkaXRhYmxlLXRleHQvZG90Y21zLWVkaXRhYmxlLXRleHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvYW5ndWxhci9uZXh0L2NvbXBvbmVudHMvZG90Y21zLWVkaXRhYmxlLXRleHQvZG90Y21zLWVkaXRhYmxlLXRleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRy9FLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEVBQXlCLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsY0FBYyxFQUFvRCxNQUFNLFNBQVMsQ0FBQzs7QUFFM0Y7Ozs7Ozs7O0dBUUc7QUFrQkgsTUFBTSxPQUFPLDJCQUEyQjtJQWpCeEM7UUFzQkk7Ozs7O1dBS0c7UUFDTSxTQUFJLEdBQTJCLE9BQU8sQ0FBQztRQUNoRDs7Ozs7V0FLRztRQUNNLFdBQU0sR0FB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QUFDLGFBQ2Y7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsVUFBVSxFQUFFLEdBQUcsRUFBRTtnQ0FDYixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDO2dDQUUzQyxPQUFPLEdBQUcsVUFBVSxJQUFJLEVBQUUsR0FBRywwQkFBMEIsRUFBRSxDQUFDOzRCQUM5RCxDQUFDO3lCQUNKO3FCQUNKOzhCQUsyQixlQUFlO3NCQUExQyxTQUFTO3VCQUFDLGVBQWU7Z0JBUWpCLElBQUk7c0JBQVosS0FBSztnQkFPRyxNQUFNO3NCQUFkLEtBQUs7Z0JBT0csVUFBVTtzQkFBbEIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLO2dCQWtFTixTQUFTO3NCQURSLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGl0b3JDb21wb25lbnQsIFRJTllNQ0VfU0NSSVBUX1NSQyB9IGZyb20gJ0B0aW55bWNlL3RpbnltY2UtYW5ndWxhcic7XG5pbXBvcnQgeyBFdmVudE9iaiB9IGZyb20gJ0B0aW55bWNlL3RpbnltY2UtYW5ndWxhci9lZGl0b3IvRXZlbnRzJztcblxuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFNlY3VyaXR5Q29udGV4dCxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHsgRG90Q01TQmFzaWNDb250ZW50bGV0LCBEb3RDTVNVVkVBY3Rpb24sIFVWRV9NT0RFIH0gZnJvbSAnQGRvdGNtcy90eXBlcyc7XG5pbXBvcnQgeyBfX0RPVENNU19VVkVfRVZFTlRfXyB9IGZyb20gJ0Bkb3RjbXMvdHlwZXMvaW50ZXJuYWwnO1xuaW1wb3J0IHsgZ2V0VVZFU3RhdGUsIHNlbmRNZXNzYWdlVG9VVkUgfSBmcm9tICdAZG90Y21zL3V2ZSc7XG5pbXBvcnQgeyBfX1RJTllNQ0VfUEFUSF9PTl9ET1RDTVNfXyB9IGZyb20gJ0Bkb3RjbXMvdXZlL2ludGVybmFsJztcblxuaW1wb3J0IHsgVElOWU1DRV9DT05GSUcsIERPVF9FRElUQUJMRV9URVhUX0ZPUk1BVCwgRE9UX0VESVRBQkxFX1RFWFRfTU9ERSB9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIERvdCBlZGl0YWJsZSB0ZXh0IGNvbXBvbmVudC5cbiAqIFRoaXMgY29tcG9uZW50IGlzIHJlc3BvbnNpYmxlIHRvIHJlbmRlciBhIHRleHQgZmllbGQgdGhhdCBjYW4gYmUgZWRpdGVkIGlubGluZS5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgRG90Q01TRWRpdGFibGVUZXh0Q29tcG9uZW50XG4gKiBAaW1wbGVtZW50cyB7T25Jbml0fVxuICogQGltcGxlbWVudHMge09uQ2hhbmdlc31cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkb3RjbXMtZWRpdGFibGUtdGV4dCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZG90Y21zLWVkaXRhYmxlLXRleHQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9kb3RjbXMtZWRpdGFibGUtdGV4dC5jb21wb25lbnQuY3NzJyxcbiAgICBpbXBvcnRzOiBbRWRpdG9yQ29tcG9uZW50XSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVElOWU1DRV9TQ1JJUFRfU1JDLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZG90Q01TSG9zdCB9ID0gZ2V0VVZFU3RhdGUoKSB8fCB7fTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtkb3RDTVNIb3N0IHx8ICcnfSR7X19USU5ZTUNFX1BBVEhfT05fRE9UQ01TX199YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRG90Q01TRWRpdGFibGVUZXh0Q29tcG9uZW50PFQgZXh0ZW5kcyBEb3RDTVNCYXNpY0NvbnRlbnRsZXQ+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlc1xue1xuICAgIEBWaWV3Q2hpbGQoRWRpdG9yQ29tcG9uZW50KSBlZGl0b3JDb21wb25lbnQhOiBFZGl0b3JDb21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBtb2RlIG9mIHRoZSBlZGl0b3Igd2hpY2ggY2FuIGJlIGBwbGFpbmAsIGBtaW5pbWFsYCwgb3IgYGZ1bGxgXG4gICAgICpcbiAgICAgKiBAdHlwZSB7RE9UX0VESVRBQkxFX1RFWFRfTU9ERX1cbiAgICAgKiBAbWVtYmVyb2YgRG90Q01TRWRpdGFibGVUZXh0Q29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgbW9kZTogRE9UX0VESVRBQkxFX1RFWFRfTU9ERSA9ICdwbGFpbic7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgZm9ybWF0IG9mIHRoZSBlZGl0b3Igd2hpY2ggY2FuIGJlIGB0ZXh0YCBvciBgaHRtbGBcbiAgICAgKlxuICAgICAqIEB0eXBlIHtET1RfRURJVEFCTEVfVEVYVF9GT1JNQVR9XG4gICAgICogQG1lbWJlcm9mIERvdENNU0VkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGZvcm1hdDogRE9UX0VESVRBQkxFX1RFWFRfRk9STUFUID0gJ3RleHQnO1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIGBjb250ZW50bGV0YCB0aGF0IGNhbiBiZSBpbmxpbmUgZWRpdGVkXG4gICAgICpcbiAgICAgKiBAdHlwZSB7RG90Q01TQ29udGVudGxldH1cbiAgICAgKiBAbWVtYmVyb2YgRG90Q01TRWRpdGFibGVUZXh0Q29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgY29udGVudGxldCE6IFQ7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgZmllbGQgbmFtZSBvZiB0aGUgYGNvbnRlbnRsZXRgIHRoYXQgY2FuIGJlIGVkaXRlZFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIERvdENNU0VkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGZpZWxkTmFtZSE6IGtleW9mIFQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBjb250ZW50IG9mIHRoZSBgY29udGVudGxldGAgdGhhdCBjYW4gYmUgZWRpdGVkXG4gICAgICpcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICogQG1lbWJlcm9mIERvdENNU0VkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjb250ZW50ID0gJyc7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgZWRpdG9yXG4gICAgICpcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICogQHR5cGUge0VkaXRvckNvbXBvbmVudFsnaW5pdCddfVxuICAgICAqIEBtZW1iZXJvZiBEb3RDTVNFZGl0YWJsZVRleHRDb21wb25lbnRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaW5pdCE6IEVkaXRvckNvbXBvbmVudFsnaW5pdCddO1xuXG4gICAgcmVhZG9ubHkgI05vdERvdENNU0hvc3RNZXNzYWdlID1cbiAgICAgICAgJ1RoZSBgZG90Q01TSG9zdGAgcGFyYW1ldGVyIGlzIG5vdCBkZWZpbmVkLiBDaGVjayB0aGF0IHRoZSBVVkUgaXMgc2VuZGluZyB0aGUgY29ycmVjdCBwYXJhbWV0ZXJzLic7XG5cbiAgICByZWFkb25seSAjc2FuaXRpemVyID0gaW5qZWN0PERvbVNhbml0aXplcj4oRG9tU2FuaXRpemVyKTtcbiAgICByZWFkb25seSAjcmVuZGVyZXIgPSBpbmplY3Q8UmVuZGVyZXIyPihSZW5kZXJlcjIpO1xuICAgIHJlYWRvbmx5ICNlbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY+KEVsZW1lbnRSZWYpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIFRpbnlNQ0UgZWRpdG9yXG4gICAgICpcbiAgICAgKiBAcmVhZG9ubHlcbiAgICAgKiBAbWVtYmVyb2YgRG90Q01TRWRpdGFibGVUZXh0Q29tcG9uZW50XG4gICAgICovXG4gICAgZ2V0IGVkaXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yQ29tcG9uZW50Py5lZGl0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyBpZiB0aGUgY29tcG9uZW50IGlzIGluc2lkZSB0aGUgZWRpdG9yXG4gICAgICpcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICogQG1lbWJlcm9mIERvdENNU0VkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXQgaXNFZGl0TW9kZSgpIHtcbiAgICAgICAgY29uc3QgeyBtb2RlLCBkb3RDTVNIb3N0IH0gPSBnZXRVVkVTdGF0ZSgpIHx8IHt9O1xuXG4gICAgICAgIHJldHVybiBtb2RlID09PSBVVkVfTU9ERS5FRElUICYmIGRvdENNU0hvc3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHRoZSBjb250ZW50bGV0IGlzIG9uXG4gICAgICpcbiAgICAgKiBAcmVhZG9ubHlcbiAgICAgKiBAbWVtYmVyb2YgRG90Q01TRWRpdGFibGVUZXh0Q29tcG9uZW50XG4gICAgICovXG4gICAgZ2V0IG9uTnVtYmVyT2ZQYWdlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudGxldFsnb25OdW1iZXJPZlBhZ2VzJ10gfHwgMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGUgY29weSBjb250ZW50bGV0IGlubGluZSBlZGl0aW5nIHN1Y2Nlc3MgZXZlbnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7TWVzc2FnZUV2ZW50fSB7IGRhdGEgfVxuICAgICAqIEByZXR1cm4geyp9XG4gICAgICogQG1lbWJlcm9mIERvdENNU0VkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptZXNzYWdlJywgWyckZXZlbnQnXSlcbiAgICBvbk1lc3NhZ2UoeyBkYXRhIH06IE1lc3NhZ2VFdmVudCkge1xuICAgICAgICBjb25zdCB7IG5hbWUsIHBheWxvYWQgfSA9IGRhdGE7XG4gICAgICAgIGlmIChuYW1lICE9PSBfX0RPVENNU19VVkVfRVZFTlRfXy5VVkVfQ09QWV9DT05URU5UTEVUX0lOTElORV9FRElUSU5HX1NVQ0NFU1MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgb2xkSW5vZGUsIGlub2RlIH0gPSBwYXlsb2FkO1xuICAgICAgICBjb25zdCBjdXJyZW50SW5vZGUgPSB0aGlzLmNvbnRlbnRsZXQuaW5vZGU7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRJbm9kZSA9PT0gb2xkSW5vZGUgfHwgY3VycmVudElub2RlID09PSBpbm9kZSkge1xuICAgICAgICAgICAgdGhpcy5lZGl0b3JDb21wb25lbnQuZWRpdG9yLmZvY3VzKCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBjb25zdCB7IGRvdENNU0hvc3QgfSA9IGdldFVWRVN0YXRlKCkgfHwge307XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzRWRpdE1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuaW5uZXJIVE1MVG9FbGVtZW50KCk7XG5cbiAgICAgICAgICAgIGlmICghZG90Q01TSG9zdCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybih0aGlzLiNOb3REb3RDTVNIb3N0TWVzc2FnZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5pdCA9IHtcbiAgICAgICAgICAgIC4uLlRJTllNQ0VfQ09ORklHW3RoaXMubW9kZV0sXG4gICAgICAgICAgICBiYXNlX3VybDogYCR7ZG90Q01TSG9zdH0vZXh0L3RpbnltY2V2N2BcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgdGhpcy5jb250ZW50ID0gKHRoaXMuY29udGVudGxldFt0aGlzLmZpZWxkTmFtZV0gYXMgc3RyaW5nKSB8fCAnJztcbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yKSB7XG4gICAgICAgICAgICB0aGlzLmVkaXRvci5zZXRDb250ZW50KHRoaXMuY29udGVudCwgeyBmb3JtYXQ6IHRoaXMuZm9ybWF0IH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIG1vdXNlIGRvd24gZXZlbnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RXZlbnRPYmo8TW91c2VFdmVudD59IHsgZXZlbnQgfVxuICAgICAqIEByZXR1cm4geyp9XG4gICAgICogQG1lbWJlcm9mIERvdENNU0VkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIG9uTW91c2VEb3duKHsgZXZlbnQgfTogRXZlbnRPYmo8TW91c2VFdmVudD4pIHtcbiAgICAgICAgaWYgKE51bWJlcih0aGlzLm9uTnVtYmVyT2ZQYWdlcykgPD0gMSB8fCB0aGlzLmVkaXRvckNvbXBvbmVudC5lZGl0b3IuaGFzRm9jdXMoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyBpbm9kZSwgbGFuZ3VhZ2VJZDogbGFuZ3VhZ2UgfSA9IHRoaXMuY29udGVudGxldDtcblxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgc2VuZE1lc3NhZ2VUb1VWRSh7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiBEb3RDTVNVVkVBY3Rpb24uQ09QWV9DT05URU5UTEVUX0lOTElORV9FRElUSU5HLFxuICAgICAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YXNldDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZTogdGhpcy5maWVsZE5hbWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHBvc3QgbWVzc2FnZSB0byBlZGl0b3I6JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBmb2N1cyBvdXQgZXZlbnRcbiAgICAgKlxuICAgICAqIEByZXR1cm4geyp9XG4gICAgICogQG1lbWJlcm9mIERvdENNU0VkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIG9uRm9jdXNPdXQoKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmVkaXRvci5nZXRDb250ZW50KHsgZm9ybWF0OiB0aGlzLmZvcm1hdCB9KTtcblxuICAgICAgICBpZiAoIXRoaXMuZWRpdG9yLmlzRGlydHkoKSB8fCAhdGhpcy5kaWRDb250ZW50Q2hhbmdlKGNvbnRlbnQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGlub2RlLCBsYW5ndWFnZUlkOiBsYW5nSWQgfSA9IHRoaXMuY29udGVudGxldDtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgc2VuZE1lc3NhZ2VUb1VWRSh7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiBEb3RDTVNVVkVBY3Rpb24uVVBEQVRFX0NPTlRFTlRMRVRfSU5MSU5FX0VESVRJTkcsXG4gICAgICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgICAgICAgICAgICBkYXRhc2V0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhbmdJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZTogdGhpcy5maWVsZE5hbWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHBvc3QgbWVzc2FnZSB0byBlZGl0b3I6JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaW5uZXIgSFRNTCB0byBlbGVtZW50XG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBlZGl0ZWRDb250ZW50XG4gICAgICogQHJldHVybiB7Kn1cbiAgICAgKiBAbWVtYmVyb2YgRG90Q01TRWRpdGFibGVUZXh0Q29tcG9uZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBpbm5lckhUTUxUb0VsZW1lbnQoKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHNhZmVIdG1sID0gdGhpcy4jc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHRoaXMuY29udGVudCk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLiNzYW5pdGl6ZXIuc2FuaXRpemUoU2VjdXJpdHlDb250ZXh0LkhUTUwsIHNhZmVIdG1sKSB8fCAnJztcblxuICAgICAgICB0aGlzLiNyZW5kZXJlci5zZXRQcm9wZXJ0eShlbGVtZW50LCAnaW5uZXJIVE1MJywgY29udGVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGNvbnRlbnQgaGFzIGNoYW5nZWRcbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGVkaXRlZENvbnRlbnRcbiAgICAgKiBAcmV0dXJuIHsqfVxuICAgICAqIEBtZW1iZXJvZiBEb3RDTVNFZGl0YWJsZVRleHRDb21wb25lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIGRpZENvbnRlbnRDaGFuZ2UoZWRpdGVkQ29udGVudDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQgIT09IGVkaXRlZENvbnRlbnQ7XG4gICAgfVxufVxuIiwiQGlmIChpc0VkaXRNb2RlKSB7XG4gICAgPGVkaXRvclxuICAgICAgICAjdGlueUVkaXRvclxuICAgICAgICBbaW5pdF09XCJpbml0XCJcbiAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb250ZW50XCJcbiAgICAgICAgKG9uTW91c2VEb3duKT1cIm9uTW91c2VEb3duKCRldmVudClcIlxuICAgICAgICAob25Gb2N1c091dCk9XCJvbkZvY3VzT3V0KClcIiAvPlxufVxuIl19
@@ -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=