@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,99 @@
1
+ import { ChangeDetectionStrategy, Component, computed, HostBinding, inject, Input, signal } from '@angular/core';
2
+ import { getContainersData, getContentletsInContainer, getDotContainerAttributes } from '@dotcms/uve/internal';
3
+ import { ContainerNotFoundComponent } from './components/container-not-found/container-not-found.component';
4
+ import { EmptyContainerComponent } from './components/empty-container/empty-container.component';
5
+ import { DotCMSStore } from '../../../../store/dotcms.store';
6
+ import { ContentletComponent } from '../../components/contentlet/contentlet.component';
7
+ import * as i0 from "@angular/core";
8
+ /**
9
+ * @description This component renders a container with all its content using the layout provided by dotCMS Page API.
10
+ *
11
+ * @see {@link https://www.dotcms.com/docs/latest/page-rest-api-layout-as-a-service-laas}
12
+ * @category Components
13
+ * @internal
14
+ * @class ContainerComponent
15
+ */
16
+ export class ContainerComponent {
17
+ constructor() {
18
+ this.#dotCMSStore = inject(DotCMSStore);
19
+ this.$containerData = signal(null);
20
+ this.$contentlets = signal([]);
21
+ this.$isEmpty = computed(() => this.$contentlets().length === 0);
22
+ this.$dotAttributes = computed(() => {
23
+ const containerData = this.$containerData();
24
+ if (!containerData || !this.#dotCMSStore.$isDevMode()) {
25
+ return {};
26
+ }
27
+ return getDotContainerAttributes(containerData);
28
+ });
29
+ this.dotObject = 'container';
30
+ this.acceptTypes = null;
31
+ this.identifier = null;
32
+ this.maxContentlets = null;
33
+ this.uuid = null;
34
+ }
35
+ #dotCMSStore;
36
+ ngOnChanges() {
37
+ const { page } = this.#dotCMSStore.store ?? {};
38
+ if (!page) {
39
+ return;
40
+ }
41
+ this.$containerData.set(getContainersData(page, this.container));
42
+ this.$contentlets.set(getContentletsInContainer(page, this.container));
43
+ this.acceptTypes = this.$dotAttributes()['data-dot-accept-types'];
44
+ this.identifier = this.$dotAttributes()['data-dot-identifier'];
45
+ this.maxContentlets = this.$dotAttributes()['data-max-contentlets'];
46
+ this.uuid = this.$dotAttributes()['data-dot-uuid'];
47
+ }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: ContainerComponent, isStandalone: true, selector: "dotcms-container", inputs: { container: "container" }, host: { properties: { "attr.data-dot-object": "this.dotObject", "attr.data-dot-accept-types": "this.acceptTypes", "attr.data-dot-identifier": "this.identifier", "attr.data-max-contentlets": "this.maxContentlets", "attr.data-dot-uuid": "this.uuid" } }, usesOnChanges: true, ngImport: i0, template: `
50
+ @if (!$containerData()) {
51
+ <dotcms-container-not-found [identifier]="container.identifier" />
52
+ } @else if ($isEmpty()) {
53
+ <dotcms-empty-container />
54
+ } @else {
55
+ @for (contentlet of $contentlets(); track contentlet.identifier) {
56
+ <dotcms-contentlet [contentlet]="contentlet" [containerData]="$containerData()!" />
57
+ }
58
+ }
59
+ `, isInline: true, dependencies: [{ kind: "component", type: ContainerNotFoundComponent, selector: "dotcms-container-not-found", inputs: ["identifier"] }, { kind: "component", type: EmptyContainerComponent, selector: "dotcms-empty-container" }, { kind: "component", type: ContentletComponent, selector: "dotcms-contentlet", inputs: ["contentlet", "containerData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
60
+ }
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ContainerComponent, decorators: [{
62
+ type: Component,
63
+ args: [{
64
+ selector: 'dotcms-container',
65
+ standalone: true,
66
+ imports: [ContainerNotFoundComponent, EmptyContainerComponent, ContentletComponent],
67
+ template: `
68
+ @if (!$containerData()) {
69
+ <dotcms-container-not-found [identifier]="container.identifier" />
70
+ } @else if ($isEmpty()) {
71
+ <dotcms-empty-container />
72
+ } @else {
73
+ @for (contentlet of $contentlets(); track contentlet.identifier) {
74
+ <dotcms-contentlet [contentlet]="contentlet" [containerData]="$containerData()!" />
75
+ }
76
+ }
77
+ `,
78
+ changeDetection: ChangeDetectionStrategy.OnPush
79
+ }]
80
+ }], propDecorators: { container: [{
81
+ type: Input,
82
+ args: [{ required: true }]
83
+ }], dotObject: [{
84
+ type: HostBinding,
85
+ args: ['attr.data-dot-object']
86
+ }], acceptTypes: [{
87
+ type: HostBinding,
88
+ args: ['attr.data-dot-accept-types']
89
+ }], identifier: [{
90
+ type: HostBinding,
91
+ args: ['attr.data-dot-identifier']
92
+ }], maxContentlets: [{
93
+ type: HostBinding,
94
+ args: ['attr.data-max-contentlets']
95
+ }], uuid: [{
96
+ type: HostBinding,
97
+ args: ['attr.data-dot-uuid']
98
+ }] } });
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2FuZ3VsYXIvbmV4dC9jb21wb25lbnRzL2RvdGNtcy1sYXlvdXQtYm9keS9jb21wb25lbnRzL2NvbnRhaW5lci9jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUNILGlCQUFpQixFQUNqQix5QkFBeUIsRUFDekIseUJBQXlCLEVBQzVCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDNUcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFFakcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOztBQUV2Rjs7Ozs7OztHQU9HO0FBa0JILE1BQU0sT0FBTyxrQkFBa0I7SUFqQi9CO1FBdUJJLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRW5DLG1CQUFjLEdBQUcsTUFBTSxDQUErQixJQUFJLENBQUMsQ0FBQztRQUM1RCxpQkFBWSxHQUFHLE1BQU0sQ0FBMEIsRUFBRSxDQUFDLENBQUM7UUFDbkQsYUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzVELG1CQUFjLEdBQUcsUUFBUSxDQUF5QixHQUFHLEVBQUU7WUFDbkQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBRTVDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQ3BELE9BQU8sRUFBNEIsQ0FBQztZQUN4QyxDQUFDO1lBRUQsT0FBTyx5QkFBeUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztRQUVrQyxjQUFTLEdBQUcsV0FBVyxDQUFDO1FBQ2xCLGdCQUFXLEdBQWtCLElBQUksQ0FBQztRQUNwQyxlQUFVLEdBQWtCLElBQUksQ0FBQztRQUNoQyxtQkFBYyxHQUFrQixJQUFJLENBQUM7UUFDNUMsU0FBSSxHQUFrQixJQUFJLENBQUM7S0FpQmpFO0lBcENHLFlBQVksQ0FBdUI7SUFxQm5DLFdBQVc7UUFDUCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBRS9DLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNSLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUV2RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN2RCxDQUFDOzhHQXpDUSxrQkFBa0I7a0dBQWxCLGtCQUFrQixpWUFiakI7Ozs7Ozs7Ozs7S0FVVCw0REFYUywwQkFBMEIsK0ZBQUUsdUJBQXVCLG1FQUFFLG1CQUFtQjs7MkZBY3pFLGtCQUFrQjtrQkFqQjlCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLDBCQUEwQixFQUFFLHVCQUF1QixFQUFFLG1CQUFtQixDQUFDO29CQUNuRixRQUFRLEVBQUU7Ozs7Ozs7Ozs7S0FVVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQ7OEJBSzhCLFNBQVM7c0JBQW5DLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQWlCWSxTQUFTO3NCQUE3QyxXQUFXO3VCQUFDLHNCQUFzQjtnQkFDUSxXQUFXO3NCQUFyRCxXQUFXO3VCQUFDLDRCQUE0QjtnQkFDQSxVQUFVO3NCQUFsRCxXQUFXO3VCQUFDLDBCQUEwQjtnQkFDRyxjQUFjO3NCQUF2RCxXQUFXO3VCQUFDLDJCQUEyQjtnQkFDTCxJQUFJO3NCQUF0QyxXQUFXO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEb3RDTVNCYXNpY0NvbnRlbnRsZXQsIERvdENNU0NvbHVtbkNvbnRhaW5lciwgRWRpdGFibGVDb250YWluZXJEYXRhIH0gZnJvbSAnQGRvdGNtcy90eXBlcyc7XG5pbXBvcnQgeyBEb3RDb250YWluZXJBdHRyaWJ1dGVzIH0gZnJvbSAnQGRvdGNtcy90eXBlcy9pbnRlcm5hbCc7XG5pbXBvcnQge1xuICAgIGdldENvbnRhaW5lcnNEYXRhLFxuICAgIGdldENvbnRlbnRsZXRzSW5Db250YWluZXIsXG4gICAgZ2V0RG90Q29udGFpbmVyQXR0cmlidXRlc1xufSBmcm9tICdAZG90Y21zL3V2ZS9pbnRlcm5hbCc7XG5cbmltcG9ydCB7IENvbnRhaW5lck5vdEZvdW5kQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvbnRhaW5lci1ub3QtZm91bmQvY29udGFpbmVyLW5vdC1mb3VuZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRW1wdHlDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZW1wdHktY29udGFpbmVyL2VtcHR5LWNvbnRhaW5lci5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBEb3RDTVNTdG9yZSB9IGZyb20gJy4uLy4uLy4uLy4uL3N0b3JlL2RvdGNtcy5zdG9yZSc7XG5pbXBvcnQgeyBDb250ZW50bGV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb250ZW50bGV0L2NvbnRlbnRsZXQuY29tcG9uZW50JztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhpcyBjb21wb25lbnQgcmVuZGVycyBhIGNvbnRhaW5lciB3aXRoIGFsbCBpdHMgY29udGVudCB1c2luZyB0aGUgbGF5b3V0IHByb3ZpZGVkIGJ5IGRvdENNUyBQYWdlIEFQSS5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5kb3RjbXMuY29tL2RvY3MvbGF0ZXN0L3BhZ2UtcmVzdC1hcGktbGF5b3V0LWFzLWEtc2VydmljZS1sYWFzfVxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqIEBpbnRlcm5hbFxuICogQGNsYXNzIENvbnRhaW5lckNvbXBvbmVudFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RvdGNtcy1jb250YWluZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbnRhaW5lck5vdEZvdW5kQ29tcG9uZW50LCBFbXB0eUNvbnRhaW5lckNvbXBvbmVudCwgQ29udGVudGxldENvbXBvbmVudF0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgQGlmICghJGNvbnRhaW5lckRhdGEoKSkge1xuICAgICAgICAgICAgPGRvdGNtcy1jb250YWluZXItbm90LWZvdW5kIFtpZGVudGlmaWVyXT1cImNvbnRhaW5lci5pZGVudGlmaWVyXCIgLz5cbiAgICAgICAgfSBAZWxzZSBpZiAoJGlzRW1wdHkoKSkge1xuICAgICAgICAgICAgPGRvdGNtcy1lbXB0eS1jb250YWluZXIgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAZm9yIChjb250ZW50bGV0IG9mICRjb250ZW50bGV0cygpOyB0cmFjayBjb250ZW50bGV0LmlkZW50aWZpZXIpIHtcbiAgICAgICAgICAgICAgICA8ZG90Y21zLWNvbnRlbnRsZXQgW2NvbnRlbnRsZXRdPVwiY29udGVudGxldFwiIFtjb250YWluZXJEYXRhXT1cIiRjb250YWluZXJEYXRhKCkhXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ29udGFpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICAvKipcbiAgICAgKiBUaGUgY29udGFpbmVyIGRhdGEgdG8gYmUgcmVuZGVyZWRcbiAgICAgKi9cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBjb250YWluZXIhOiBEb3RDTVNDb2x1bW5Db250YWluZXI7XG5cbiAgICAjZG90Q01TU3RvcmUgPSBpbmplY3QoRG90Q01TU3RvcmUpO1xuXG4gICAgJGNvbnRhaW5lckRhdGEgPSBzaWduYWw8RWRpdGFibGVDb250YWluZXJEYXRhIHwgbnVsbD4obnVsbCk7XG4gICAgJGNvbnRlbnRsZXRzID0gc2lnbmFsPERvdENNU0Jhc2ljQ29udGVudGxldFtdPihbXSk7XG4gICAgJGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB0aGlzLiRjb250ZW50bGV0cygpLmxlbmd0aCA9PT0gMCk7XG4gICAgJGRvdEF0dHJpYnV0ZXMgPSBjb21wdXRlZDxEb3RDb250YWluZXJBdHRyaWJ1dGVzPigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckRhdGEgPSB0aGlzLiRjb250YWluZXJEYXRhKCk7XG5cbiAgICAgICAgaWYgKCFjb250YWluZXJEYXRhIHx8ICF0aGlzLiNkb3RDTVNTdG9yZS4kaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7fSBhcyBEb3RDb250YWluZXJBdHRyaWJ1dGVzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldERvdENvbnRhaW5lckF0dHJpYnV0ZXMoY29udGFpbmVyRGF0YSk7XG4gICAgfSk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1kb3Qtb2JqZWN0JykgZG90T2JqZWN0ID0gJ2NvbnRhaW5lcic7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtZG90LWFjY2VwdC10eXBlcycpIGFjY2VwdFR5cGVzOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1kb3QtaWRlbnRpZmllcicpIGlkZW50aWZpZXI6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLW1heC1jb250ZW50bGV0cycpIG1heENvbnRlbnRsZXRzOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1kb3QtdXVpZCcpIHV1aWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIGNvbnN0IHsgcGFnZSB9ID0gdGhpcy4jZG90Q01TU3RvcmUuc3RvcmUgPz8ge307XG5cbiAgICAgICAgaWYgKCFwYWdlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLiRjb250YWluZXJEYXRhLnNldChnZXRDb250YWluZXJzRGF0YShwYWdlLCB0aGlzLmNvbnRhaW5lcikpO1xuICAgICAgICB0aGlzLiRjb250ZW50bGV0cy5zZXQoZ2V0Q29udGVudGxldHNJbkNvbnRhaW5lcihwYWdlLCB0aGlzLmNvbnRhaW5lcikpO1xuXG4gICAgICAgIHRoaXMuYWNjZXB0VHlwZXMgPSB0aGlzLiRkb3RBdHRyaWJ1dGVzKClbJ2RhdGEtZG90LWFjY2VwdC10eXBlcyddO1xuICAgICAgICB0aGlzLmlkZW50aWZpZXIgPSB0aGlzLiRkb3RBdHRyaWJ1dGVzKClbJ2RhdGEtZG90LWlkZW50aWZpZXInXTtcbiAgICAgICAgdGhpcy5tYXhDb250ZW50bGV0cyA9IHRoaXMuJGRvdEF0dHJpYnV0ZXMoKVsnZGF0YS1tYXgtY29udGVudGxldHMnXTtcbiAgICAgICAgdGhpcy51dWlkID0gdGhpcy4kZG90QXR0cmlidXRlcygpWydkYXRhLWRvdC11dWlkJ107XG4gICAgfVxufVxuIl19
@@ -0,0 +1,145 @@
1
+ import { AsyncPipe, NgComponentOutlet } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, Input, HostBinding, signal, ViewChild } from '@angular/core';
3
+ import { CUSTOM_NO_COMPONENT, getDotContentletAttributes } from '@dotcms/uve/internal';
4
+ import { DotCMSStore } from '../../../../store/dotcms.store';
5
+ import { FallbackComponent } from '../fallback-component/fallback-component.component';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * @description Contentlet component that renders DotCMS content with development mode support
9
+ *
10
+ * @component
11
+ * @param {DotCMSContentlet} contentlet - The contentlet to be rendered
12
+ * @param {string} container - The container identifier
13
+ * @class ContentletComponent
14
+ */
15
+ export class ContentletComponent {
16
+ constructor() {
17
+ this.dotObject = 'contentlet';
18
+ this.#dotCMSStore = inject(DotCMSStore);
19
+ this.$contentlet = signal(null);
20
+ this.$UserComponent = signal(null);
21
+ this.$UserNoComponent = signal(null);
22
+ this.$isDevMode = this.#dotCMSStore.$isDevMode;
23
+ this.$haveContent = signal(false);
24
+ this.$style = computed(() => this.$isDevMode() && !this.$haveContent() ? { minHeight: '4rem' } : {});
25
+ this.$dotAttributes = computed(() => {
26
+ const contentlet = this.$contentlet();
27
+ if (!contentlet || !this.$isDevMode())
28
+ return {};
29
+ return getDotContentletAttributes(contentlet, this.containerData.identifier);
30
+ });
31
+ this.identifier = null;
32
+ this.basetype = null;
33
+ this.title = null;
34
+ this.inode = null;
35
+ this.type = null;
36
+ this.containerAttribute = null;
37
+ this.onNumberOfPages = null;
38
+ this.styleAttribute = null;
39
+ }
40
+ #dotCMSStore;
41
+ ngOnChanges() {
42
+ this.$contentlet.set(this.contentlet);
43
+ this.setupComponents();
44
+ this.identifier = this.$dotAttributes()['data-dot-identifier'];
45
+ this.basetype = this.$dotAttributes()['data-dot-basetype'];
46
+ this.title = this.$dotAttributes()['data-dot-title'];
47
+ this.inode = this.$dotAttributes()['data-dot-inode'];
48
+ this.type = this.$dotAttributes()['data-dot-type'];
49
+ this.containerAttribute = JSON.stringify(this.containerData);
50
+ this.onNumberOfPages = this.$dotAttributes()['data-dot-on-number-of-pages'];
51
+ this.styleAttribute = this.$style();
52
+ }
53
+ ngAfterViewInit() {
54
+ this.checkContent();
55
+ }
56
+ setupComponents() {
57
+ const store = this.#dotCMSStore.store;
58
+ if (!store)
59
+ return;
60
+ if (!store?.components)
61
+ return;
62
+ this.$UserComponent.set(store.components[this.contentlet?.contentType]);
63
+ this.$UserNoComponent.set(store.components[CUSTOM_NO_COMPONENT]);
64
+ }
65
+ checkContent() {
66
+ const element = this.contentletRef?.nativeElement;
67
+ if (element) {
68
+ const hasContent = element.getBoundingClientRect().height > 0;
69
+ this.$haveContent.set(hasContent);
70
+ }
71
+ }
72
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ContentletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
73
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: ContentletComponent, isStandalone: true, selector: "dotcms-contentlet", inputs: { contentlet: "contentlet", containerData: "containerData" }, host: { properties: { "attr.data-dot-object": "this.dotObject", "attr.data-dot-identifier": "this.identifier", "attr.data-dot-basetype": "this.basetype", "attr.data-dot-title": "this.title", "attr.data-dot-inode": "this.inode", "attr.data-dot-type": "this.type", "attr.data-dot-container": "this.containerAttribute", "attr.data-dot-on-number-of-pages": "this.onNumberOfPages", "style": "this.styleAttribute" } }, viewQueries: [{ propertyName: "contentletRef", first: true, predicate: ["contentletRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
74
+ @if ($UserComponent()) {
75
+ <ng-container
76
+ *ngComponentOutlet="
77
+ $UserComponent() | async;
78
+ inputs: { contentlet: $contentlet() ?? contentlet }
79
+ " />
80
+ } @else if ($isDevMode()) {
81
+ <dotcms-fallback-component
82
+ [UserNoComponent]="$UserNoComponent()"
83
+ [contentlet]="$contentlet() ?? contentlet" />
84
+ }
85
+ `, isInline: true, dependencies: [{ kind: "component", type: FallbackComponent, selector: "dotcms-fallback-component", inputs: ["UserNoComponent", "contentlet"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
86
+ }
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ContentletComponent, decorators: [{
88
+ type: Component,
89
+ args: [{
90
+ selector: 'dotcms-contentlet',
91
+ standalone: true,
92
+ imports: [FallbackComponent, AsyncPipe, NgComponentOutlet],
93
+ template: `
94
+ @if ($UserComponent()) {
95
+ <ng-container
96
+ *ngComponentOutlet="
97
+ $UserComponent() | async;
98
+ inputs: { contentlet: $contentlet() ?? contentlet }
99
+ " />
100
+ } @else if ($isDevMode()) {
101
+ <dotcms-fallback-component
102
+ [UserNoComponent]="$UserNoComponent()"
103
+ [contentlet]="$contentlet() ?? contentlet" />
104
+ }
105
+ `,
106
+ changeDetection: ChangeDetectionStrategy.OnPush
107
+ }]
108
+ }], propDecorators: { contentlet: [{
109
+ type: Input,
110
+ args: [{ required: true }]
111
+ }], containerData: [{
112
+ type: Input,
113
+ args: [{ required: true }]
114
+ }], contentletRef: [{
115
+ type: ViewChild,
116
+ args: ['contentletRef']
117
+ }], dotObject: [{
118
+ type: HostBinding,
119
+ args: ['attr.data-dot-object']
120
+ }], identifier: [{
121
+ type: HostBinding,
122
+ args: ['attr.data-dot-identifier']
123
+ }], basetype: [{
124
+ type: HostBinding,
125
+ args: ['attr.data-dot-basetype']
126
+ }], title: [{
127
+ type: HostBinding,
128
+ args: ['attr.data-dot-title']
129
+ }], inode: [{
130
+ type: HostBinding,
131
+ args: ['attr.data-dot-inode']
132
+ }], type: [{
133
+ type: HostBinding,
134
+ args: ['attr.data-dot-type']
135
+ }], containerAttribute: [{
136
+ type: HostBinding,
137
+ args: ['attr.data-dot-container']
138
+ }], onNumberOfPages: [{
139
+ type: HostBinding,
140
+ args: ['attr.data-dot-on-number-of-pages']
141
+ }], styleAttribute: [{
142
+ type: HostBinding,
143
+ args: ['style']
144
+ }] } });
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudGxldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9hbmd1bGFyL25leHQvY29tcG9uZW50cy9kb3RjbXMtbGF5b3V0LWJvZHkvY29tcG9uZW50cy9jb250ZW50bGV0L2NvbnRlbnRsZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBRUwsV0FBVyxFQUNYLE1BQU0sRUFDTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHdkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOztBQUV2Rjs7Ozs7OztHQU9HO0FBb0JILE1BQU0sT0FBTyxtQkFBbUI7SUFuQmhDO1FBdUJ5QyxjQUFTLEdBQUcsWUFBWSxDQUFDO1FBRTlELGlCQUFZLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRW5DLGdCQUFXLEdBQUcsTUFBTSxDQUErQixJQUFJLENBQUMsQ0FBQztRQUN6RCxtQkFBYyxHQUFHLE1BQU0sQ0FBZ0MsSUFBSSxDQUFDLENBQUM7UUFDN0QscUJBQWdCLEdBQUcsTUFBTSxDQUFnQyxJQUFJLENBQUMsQ0FBQztRQUMvRCxlQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUM7UUFDMUMsaUJBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsV0FBTSxHQUFH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ZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgRWxlbWVudFJlZixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIHNpZ25hbCxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERvdENNU0Jhc2ljQ29udGVudGxldCwgRWRpdGFibGVDb250YWluZXJEYXRhIH0gZnJvbSAnQGRvdGNtcy90eXBlcyc7XG5pbXBvcnQgeyBEb3RDb250ZW50bGV0QXR0cmlidXRlcyB9IGZyb20gJ0Bkb3RjbXMvdHlwZXMvaW50ZXJuYWwnO1xuaW1wb3J0IHsgQ1VTVE9NX05PX0NPTVBPTkVOVCwgZ2V0RG90Q29udGVudGxldEF0dHJpYnV0ZXMgfSBmcm9tICdAZG90Y21zL3V2ZS9pbnRlcm5hbCc7XG5cbmltcG9ydCB7IER5bmFtaWNDb21wb25lbnRFbnRpdHkgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgRG90Q01TU3RvcmUgfSBmcm9tICcuLi8uLi8uLi8uLi9zdG9yZS9kb3RjbXMuc3RvcmUnO1xuaW1wb3J0IHsgRmFsbGJhY2tDb21wb25lbnQgfSBmcm9tICcuLi9mYWxsYmFjay1jb21wb25lbnQvZmFsbGJhY2stY29tcG9uZW50LmNvbXBvbmVudCc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbnRlbnRsZXQgY29tcG9uZW50IHRoYXQgcmVuZGVycyBEb3RDTVMgY29udGVudCB3aXRoIGRldmVsb3BtZW50IG1vZGUgc3VwcG9ydFxuICpcbiAqIEBjb21wb25lbnRcbiAqIEBwYXJhbSB7RG90Q01TQ29udGVudGxldH0gY29udGVudGxldCAtIFRoZSBjb250ZW50bGV0IHRvIGJlIHJlbmRlcmVkXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGFpbmVyIC0gVGhlIGNvbnRhaW5lciBpZGVudGlmaWVyXG4gKiBAY2xhc3MgQ29udGVudGxldENvbXBvbmVudFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RvdGNtcy1jb250ZW50bGV0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtGYWxsYmFja0NvbXBvbmVudCwgQXN5bmNQaXBlLCBOZ0NvbXBvbmVudE91dGxldF0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgQGlmICgkVXNlckNvbXBvbmVudCgpKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nQ29tcG9uZW50T3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICRVc2VyQ29tcG9uZW50KCkgfCBhc3luYztcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRzOiB7IGNvbnRlbnRsZXQ6ICRjb250ZW50bGV0KCkgPz8gY29udGVudGxldCB9XG4gICAgICAgICAgICAgICAgXCIgLz5cbiAgICAgICAgfSBAZWxzZSBpZiAoJGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgICA8ZG90Y21zLWZhbGxiYWNrLWNvbXBvbmVudFxuICAgICAgICAgICAgICAgIFtVc2VyTm9Db21wb25lbnRdPVwiJFVzZXJOb0NvbXBvbmVudCgpXCJcbiAgICAgICAgICAgICAgICBbY29udGVudGxldF09XCIkY29udGVudGxldCgpID8/IGNvbnRlbnRsZXRcIiAvPlxuICAgICAgICB9XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50bGV0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBjb250ZW50bGV0ITogRG90Q01TQmFzaWNDb250ZW50bGV0O1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGNvbnRhaW5lckRhdGEhOiBFZGl0YWJsZUNvbnRhaW5lckRhdGE7XG4gICAgQFZpZXdDaGlsZCgnY29udGVudGxldFJlZicpIGNvbnRlbnRsZXRSZWYhOiBFbGVtZW50UmVmO1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWRvdC1vYmplY3QnKSBkb3RPYmplY3QgPSAnY29udGVudGxldCc7XG5cbiAgICAjZG90Q01TU3RvcmUgPSBpbmplY3QoRG90Q01TU3RvcmUpO1xuXG4gICAgJGNvbnRlbnRsZXQgPSBzaWduYWw8RG90Q01TQmFzaWNDb250ZW50bGV0IHwgbnVsbD4obnVsbCk7XG4gICAgJFVzZXJDb21wb25lbnQgPSBzaWduYWw8RHluYW1pY0NvbXBvbmVudEVudGl0eSB8IG51bGw+KG51bGwpO1xuICAgICRVc2VyTm9Db21wb25lbnQgPSBzaWduYWw8RHluYW1pY0NvbXBvbmVudEVudGl0eSB8IG51bGw+KG51bGwpO1xuICAgICRpc0Rldk1vZGUgPSB0aGlzLiNkb3RDTVNTdG9yZS4kaXNEZXZNb2RlO1xuICAgICRoYXZlQ29udGVudCA9IHNpZ25hbChmYWxzZSk7XG4gICAgJHN0eWxlID0gY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgdGhpcy4kaXNEZXZNb2RlKCkgJiYgIXRoaXMuJGhhdmVDb250ZW50KCkgPyB7IG1pbkhlaWdodDogJzRyZW0nIH0gOiB7fVxuICAgICk7XG4gICAgJGRvdEF0dHJpYnV0ZXMgPSBjb21wdXRlZDxEb3RDb250ZW50bGV0QXR0cmlidXRlcz4oKCkgPT4ge1xuICAgICAgICBjb25zdCBjb250ZW50bGV0ID0gdGhpcy4kY29udGVudGxldCgpO1xuICAgICAgICBpZiAoIWNvbnRlbnRsZXQgfHwgIXRoaXMuJGlzRGV2TW9kZSgpKSByZXR1cm4ge30gYXMgRG90Q29udGVudGxldEF0dHJpYnV0ZXM7XG5cbiAgICAgICAgcmV0dXJuIGdldERvdENvbnRlbnRsZXRBdHRyaWJ1dGVzKGNvbnRlbnRsZXQsIHRoaXMuY29udGFpbmVyRGF0YS5pZGVudGlmaWVyKTtcbiAgICB9KTtcblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWRvdC1pZGVudGlmaWVyJykgaWRlbnRpZmllcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtZG90LWJhc2V0eXBlJykgYmFzZXR5cGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWRvdC10aXRsZScpIHRpdGxlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1kb3QtaW5vZGUnKSBpbm9kZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtZG90LXR5cGUnKSB0eXBlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1kb3QtY29udGFpbmVyJykgY29udGFpbmVyQXR0cmlidXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1kb3Qtb24tbnVtYmVyLW9mLXBhZ2VzJykgb25OdW1iZXJPZlBhZ2VzOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlJykgc3R5bGVBdHRyaWJ1dGU6IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9IHwgbnVsbCA9IG51bGw7XG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgdGhpcy4kY29udGVudGxldC5zZXQodGhpcy5jb250ZW50bGV0KTtcbiAgICAgICAgdGhpcy5zZXR1cENvbXBvbmVudHMoKTtcblxuICAgICAgICB0aGlzLmlkZW50aWZpZXIgPSB0aGlzLiRkb3RBdHRyaWJ1dGVzKClbJ2RhdGEtZG90LWlkZW50aWZpZXInXTtcbiAgICAgICAgdGhpcy5iYXNldHlwZSA9IHRoaXMuJGRvdEF0dHJpYnV0ZXMoKVsnZGF0YS1kb3QtYmFzZXR5cGUnXTtcbiAgICAgICAgdGhpcy50aXRsZSA9IHRoaXMuJGRvdEF0dHJpYnV0ZXMoKVsnZGF0YS1kb3QtdGl0bGUnXTtcbiAgICAgICAgdGhpcy5pbm9kZSA9IHRoaXMuJGRvdEF0dHJpYnV0ZXMoKVsnZGF0YS1kb3QtaW5vZGUnXTtcbiAgICAgICAgdGhpcy50eXBlID0gdGhpcy4kZG90QXR0cmlidXRlcygpWydkYXRhLWRvdC10eXBlJ107XG4gICAgICAgIHRoaXMuY29udGFpbmVyQXR0cmlidXRlID0gSlNPTi5zdHJpbmdpZnkodGhpcy5jb250YWluZXJEYXRhKTtcbiAgICAgICAgdGhpcy5vbk51bWJlck9mUGFnZXMgPSB0aGlzLiRkb3RBdHRyaWJ1dGVzKClbJ2RhdGEtZG90LW9uLW51bWJlci1vZi1wYWdlcyddO1xuICAgICAgICB0aGlzLnN0eWxlQXR0cmlidXRlID0gdGhpcy4kc3R5bGUoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMuY2hlY2tDb250ZW50KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXR1cENvbXBvbmVudHMoKSB7XG4gICAgICAgIGNvbnN0IHN0b3JlID0gdGhpcy4jZG90Q01TU3RvcmUuc3RvcmU7XG4gICAgICAgIGlmICghc3RvcmUpIHJldHVybjtcblxuICAgICAgICBpZiAoIXN0b3JlPy5jb21wb25lbnRzKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy4kVXNlckNvbXBvbmVudC5zZXQoc3RvcmUuY29tcG9uZW50c1t0aGlzLmNvbnRlbnRsZXQ/LmNvbnRlbnRUeXBlXSk7XG4gICAgICAgIHRoaXMuJFVzZXJOb0NvbXBvbmVudC5zZXQoc3RvcmUuY29tcG9uZW50c1tDVVNUT01fTk9fQ09NUE9ORU5UXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0NvbnRlbnQoKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmNvbnRlbnRsZXRSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBoYXNDb250ZW50ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgPiAwO1xuICAgICAgICAgICAgdGhpcy4kaGF2ZUNvbnRlbnQuc2V0KGhhc0NvbnRlbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -0,0 +1,47 @@
1
+ import { AsyncPipe, NgComponentOutlet } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * @description Fallback component that renders when no custom component is found for a contentlet
6
+ * @category Components
7
+ * @internal
8
+ * @class FallbackComponent
9
+ */
10
+ export class FallbackComponent {
11
+ constructor() {
12
+ this.UserNoComponent = null;
13
+ }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: FallbackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: FallbackComponent, isStandalone: true, selector: "dotcms-fallback-component", inputs: { UserNoComponent: "UserNoComponent", contentlet: "contentlet" }, ngImport: i0, template: `
16
+ @if (UserNoComponent) {
17
+ <ng-container *ngComponentOutlet="UserNoComponent | async; inputs: { contentlet }" />
18
+ } @else {
19
+ <div data-testid="dotcms-fallback-component">
20
+ <p>No component found for content type: {{ contentlet.contentType }}</p>
21
+ </div>
22
+ }
23
+ `, isInline: true, dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: FallbackComponent, decorators: [{
26
+ type: Component,
27
+ args: [{
28
+ selector: 'dotcms-fallback-component',
29
+ standalone: true,
30
+ imports: [AsyncPipe, NgComponentOutlet],
31
+ template: `
32
+ @if (UserNoComponent) {
33
+ <ng-container *ngComponentOutlet="UserNoComponent | async; inputs: { contentlet }" />
34
+ } @else {
35
+ <div data-testid="dotcms-fallback-component">
36
+ <p>No component found for content type: {{ contentlet.contentType }}</p>
37
+ </div>
38
+ }
39
+ `,
40
+ changeDetection: ChangeDetectionStrategy.OnPush
41
+ }]
42
+ }], propDecorators: { UserNoComponent: [{
43
+ type: Input
44
+ }], contentlet: [{
45
+ type: Input
46
+ }] } });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFsbGJhY2stY29tcG9uZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2FuZ3VsYXIvbmV4dC9jb21wb25lbnRzL2RvdGNtcy1sYXlvdXQtYm9keS9jb21wb25lbnRzL2ZhbGxiYWNrLWNvbXBvbmVudC9mYWxsYmFjay1jb21wb25lbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNMUU7Ozs7O0dBS0c7QUFnQkgsTUFBTSxPQUFPLGlCQUFpQjtJQWY5QjtRQWdCYSxvQkFBZSxHQUFrQyxJQUFJLENBQUM7S0FFbEU7OEdBSFksaUJBQWlCO2tHQUFqQixpQkFBaUIsK0pBWGhCOzs7Ozs7OztLQVFULHVEQVRTLFNBQVMsOENBQUUsaUJBQWlCOzsyRkFZN0IsaUJBQWlCO2tCQWY3QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUM7b0JBQ3ZDLFFBQVEsRUFBRTs7Ozs7Ozs7S0FRVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQ7OEJBRVksZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NvbXBvbmVudE91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEb3RDTVNCYXNpY0NvbnRlbnRsZXQgfSBmcm9tICdAZG90Y21zL3R5cGVzJztcblxuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudEVudGl0eSB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZhbGxiYWNrIGNvbXBvbmVudCB0aGF0IHJlbmRlcnMgd2hlbiBubyBjdXN0b20gY29tcG9uZW50IGlzIGZvdW5kIGZvciBhIGNvbnRlbnRsZXRcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKiBAaW50ZXJuYWxcbiAqIEBjbGFzcyBGYWxsYmFja0NvbXBvbmVudFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RvdGNtcy1mYWxsYmFjay1jb21wb25lbnQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0FzeW5jUGlwZSwgTmdDb21wb25lbnRPdXRsZXRdLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIEBpZiAoVXNlck5vQ29tcG9uZW50KSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cIlVzZXJOb0NvbXBvbmVudCB8IGFzeW5jOyBpbnB1dHM6IHsgY29udGVudGxldCB9XCIgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8ZGl2IGRhdGEtdGVzdGlkPVwiZG90Y21zLWZhbGxiYWNrLWNvbXBvbmVudFwiPlxuICAgICAgICAgICAgICAgIDxwPk5vIGNvbXBvbmVudCBmb3VuZCBmb3IgY29udGVudCB0eXBlOiB7eyBjb250ZW50bGV0LmNvbnRlbnRUeXBlIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEZhbGxiYWNrQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBVc2VyTm9Db21wb25lbnQ6IER5bmFtaWNDb21wb25lbnRFbnRpdHkgfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBjb250ZW50bGV0ITogRG90Q01TQmFzaWNDb250ZW50bGV0O1xufVxuIl19
@@ -0,0 +1,55 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * @description This component is used to display a message when a page is missing the required `layout.body` property.
5
+ * @internal
6
+ * @class PageErrorMessageComponent
7
+ */
8
+ export class PageErrorMessageComponent {
9
+ ngOnInit() {
10
+ console.warn('Missing required layout.body property in page');
11
+ }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: PageErrorMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: PageErrorMessageComponent, isStandalone: true, selector: "dotcms-page-error-message", ngImport: i0, template: `
14
+ <div
15
+ data-testid="error-message"
16
+ style="padding: 1rem; border: 1px solid #e0e0e0; border-radius: 4px;">
17
+ <p style="margin: 0 0 0.5rem; color: #666;">
18
+ The
19
+ <code>page</code>
20
+ is missing the required
21
+ <code>layout.body</code>
22
+ property.
23
+ </p>
24
+ <p style="margin: 0; color: #666;">
25
+ Make sure the page asset is properly loaded and includes a layout configuration.
26
+ </p>
27
+ </div>
28
+ `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: PageErrorMessageComponent, decorators: [{
31
+ type: Component,
32
+ args: [{
33
+ selector: 'dotcms-page-error-message',
34
+ standalone: true,
35
+ imports: [],
36
+ template: `
37
+ <div
38
+ data-testid="error-message"
39
+ style="padding: 1rem; border: 1px solid #e0e0e0; border-radius: 4px;">
40
+ <p style="margin: 0 0 0.5rem; color: #666;">
41
+ The
42
+ <code>page</code>
43
+ is missing the required
44
+ <code>layout.body</code>
45
+ property.
46
+ </p>
47
+ <p style="margin: 0; color: #666;">
48
+ Make sure the page asset is properly loaded and includes a layout configuration.
49
+ </p>
50
+ </div>
51
+ `,
52
+ changeDetection: ChangeDetectionStrategy.OnPush
53
+ }]
54
+ }] });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1lcnJvci1tZXNzYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2FuZ3VsYXIvbmV4dC9jb21wb25lbnRzL2RvdGNtcy1sYXlvdXQtYm9keS9jb21wb25lbnRzL3BhZ2UtZXJyb3ItbWVzc2FnZS9wYWdlLWVycm9yLW1lc3NhZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7O0FBRTNFOzs7O0dBSUc7QUF1QkgsTUFBTSxPQUFPLHlCQUF5QjtJQUNsQyxRQUFRO1FBQ0osT0FBTyxDQUFDLElBQUksQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7OEdBSFEseUJBQXlCO2tHQUF6Qix5QkFBeUIscUZBbEJ4Qjs7Ozs7Ozs7Ozs7Ozs7O0tBZVQ7OzJGQUdRLHlCQUF5QjtrQkF0QnJDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxFQUFFO29CQUNYLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7O0tBZVQ7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gZGlzcGxheSBhIG1lc3NhZ2Ugd2hlbiBhIHBhZ2UgaXMgbWlzc2luZyB0aGUgcmVxdWlyZWQgYGxheW91dC5ib2R5YCBwcm9wZXJ0eS5cbiAqIEBpbnRlcm5hbFxuICogQGNsYXNzIFBhZ2VFcnJvck1lc3NhZ2VDb21wb25lbnRcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkb3RjbXMtcGFnZS1lcnJvci1tZXNzYWdlJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtdLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDFyZW07IGJvcmRlcjogMXB4IHNvbGlkICNlMGUwZTA7IGJvcmRlci1yYWRpdXM6IDRweDtcIj5cbiAgICAgICAgICAgIDxwIHN0eWxlPVwibWFyZ2luOiAwIDAgMC41cmVtOyBjb2xvcjogIzY2NjtcIj5cbiAgICAgICAgICAgICAgICBUaGVcbiAgICAgICAgICAgICAgICA8Y29kZT5wYWdlPC9jb2RlPlxuICAgICAgICAgICAgICAgIGlzIG1pc3NpbmcgdGhlIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgPGNvZGU+bGF5b3V0LmJvZHk8L2NvZGU+XG4gICAgICAgICAgICAgICAgcHJvcGVydHkuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8cCBzdHlsZT1cIm1hcmdpbjogMDsgY29sb3I6ICM2NjY7XCI+XG4gICAgICAgICAgICAgICAgTWFrZSBzdXJlIHRoZSBwYWdlIGFzc2V0IGlzIHByb3Blcmx5IGxvYWRlZCBhbmQgaW5jbHVkZXMgYSBsYXlvdXQgY29uZmlndXJhdGlvbi5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlRXJyb3JNZXNzYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdNaXNzaW5nIHJlcXVpcmVkIGxheW91dC5ib2R5IHByb3BlcnR5IGluIHBhZ2UnKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,46 @@
1
+ import { ChangeDetectionStrategy, Component, Input, signal } from '@angular/core';
2
+ import { combineClasses } from '@dotcms/uve/internal';
3
+ import { ColumnComponent } from '../column/column.component';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * @description This component renders a row 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
+ * @class RowComponent
12
+ */
13
+ export class RowComponent {
14
+ constructor() {
15
+ this.customClasses = signal('');
16
+ }
17
+ ngOnChanges() {
18
+ this.customClasses.set(combineClasses([this.row.styleClass || 'dot-row']));
19
+ }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: RowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: RowComponent, isStandalone: true, selector: "dotcms-row", inputs: { row: "row" }, usesOnChanges: true, ngImport: i0, template: `
22
+ <div class="dot-row-container">
23
+ <div [class]="customClasses()" data-dot-object="row" data-testid="dotcms-row">
24
+ @for (column of row.columns; track $index) {
25
+ <dotcms-column [column]="column" />
26
+ }
27
+ </div>
28
+ </div>
29
+ `, isInline: true, styles: [".dot-row{display:grid;grid-template-columns:repeat(12,1fr);gap:1rem}\n"], dependencies: [{ kind: "component", type: ColumnComponent, selector: "dotcms-column", inputs: ["column"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: RowComponent, decorators: [{
32
+ type: Component,
33
+ args: [{ selector: 'dotcms-row', standalone: true, imports: [ColumnComponent], template: `
34
+ <div class="dot-row-container">
35
+ <div [class]="customClasses()" data-dot-object="row" data-testid="dotcms-row">
36
+ @for (column of row.columns; track $index) {
37
+ <dotcms-column [column]="column" />
38
+ }
39
+ </div>
40
+ </div>
41
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".dot-row{display:grid;grid-template-columns:repeat(12,1fr);gap:1rem}\n"] }]
42
+ }], propDecorators: { row: [{
43
+ type: Input,
44
+ args: [{ required: true }]
45
+ }] } });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2FuZ3VsYXIvbmV4dC9jb21wb25lbnRzL2RvdGNtcy1sYXlvdXQtYm9keS9jb21wb25lbnRzL3Jvdy9yb3cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc3RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUU3RDs7Ozs7OztHQU9HO0FBaUJILE1BQU0sT0FBTyxZQUFZO0lBaEJ6QjtRQXNCSSxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUs5QjtJQUhHLFdBQVc7UUFDUCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQzs4R0FWUSxZQUFZO2tHQUFaLFlBQVksbUhBWlg7Ozs7Ozs7O0tBUVQsZ0pBVFMsZUFBZTs7MkZBYWhCLFlBQVk7a0JBaEJ4QixTQUFTOytCQUNJLFlBQVksY0FDVixJQUFJLFdBQ1AsQ0FBQyxlQUFlLENBQUMsWUFDaEI7Ozs7Ozs7O0tBUVQsbUJBRWdCLHVCQUF1QixDQUFDLE1BQU07OEJBTXBCLEdBQUc7c0JBQTdCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERvdFBhZ2VBc3NldExheW91dFJvdyB9IGZyb20gJ0Bkb3RjbXMvdHlwZXMnO1xuaW1wb3J0IHsgY29tYmluZUNsYXNzZXMgfSBmcm9tICdAZG90Y21zL3V2ZS9pbnRlcm5hbCc7XG5cbmltcG9ydCB7IENvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbHVtbi9jb2x1bW4uY29tcG9uZW50JztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVGhpcyBjb21wb25lbnQgcmVuZGVycyBhIHJvdyB3aXRoIGFsbCBpdHMgY29udGVudCB1c2luZyB0aGUgbGF5b3V0IHByb3ZpZGVkIGJ5IGRvdENNUyBQYWdlIEFQSS5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL3d3dy5kb3RjbXMuY29tL2RvY3MvbGF0ZXN0L3BhZ2UtcmVzdC1hcGktbGF5b3V0LWFzLWEtc2VydmljZS1sYWFzfVxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcbiAqIEBpbnRlcm5hbFxuICogQGNsYXNzIFJvd0NvbXBvbmVudFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RvdGNtcy1yb3cnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbHVtbkNvbXBvbmVudF0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cImRvdC1yb3ctY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IFtjbGFzc109XCJjdXN0b21DbGFzc2VzKClcIiBkYXRhLWRvdC1vYmplY3Q9XCJyb3dcIiBkYXRhLXRlc3RpZD1cImRvdGNtcy1yb3dcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChjb2x1bW4gb2Ygcm93LmNvbHVtbnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICA8ZG90Y21zLWNvbHVtbiBbY29sdW1uXT1cImNvbHVtblwiIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgc3R5bGVVcmw6ICcuL3Jvdy5jb21wb25lbnQuY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBSb3dDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIC8qKlxuICAgICAqIFRoZSByb3cgZGF0YSB0byBiZSByZW5kZXJlZFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHJvdyE6IERvdFBhZ2VBc3NldExheW91dFJvdztcblxuICAgIGN1c3RvbUNsYXNzZXMgPSBzaWduYWwoJycpO1xuXG4gICAgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIHRoaXMuY3VzdG9tQ2xhc3Nlcy5zZXQoY29tYmluZUNsYXNzZXMoW3RoaXMucm93LnN0eWxlQ2xhc3MgfHwgJ2RvdC1yb3cnXSkpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,69 @@
1
+ import { ChangeDetectionStrategy, Component, inject, Input, signal } from '@angular/core';
2
+ import { PageErrorMessageComponent } from './components/page-error-message/page-error-message.component';
3
+ import { RowComponent } from './components/row/row.component';
4
+ import { DotCMSStore } from '../../store/dotcms.store';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * @description This component is used to render the layout for a DotCMS page.
8
+ * @param {DotCMSPageAsset} page - The page to render the layout for
9
+ * @param {DotCMSPageComponent} components - The components to render the layout for
10
+ * @param {DotCMSPageRendererMode} mode - The mode to render the layout for
11
+ *
12
+ * @example
13
+ * <dotcms-layout-body [page]="page" [components]="components" [mode]="'development'" />
14
+ *
15
+ * @export
16
+ * @implements {OnChanges}
17
+ * @class DotCMSLayoutBodyComponent
18
+ */
19
+ export class DotCMSLayoutBodyComponent {
20
+ constructor() {
21
+ this.components = {};
22
+ this.mode = 'production';
23
+ this.#dotCMSStore = inject(DotCMSStore);
24
+ this.$isDevMode = this.#dotCMSStore.$isDevMode;
25
+ this.$rows = signal([]);
26
+ this.$isEmpty = signal(false);
27
+ }
28
+ #dotCMSStore;
29
+ ngOnChanges() {
30
+ this.#dotCMSStore.setStore({
31
+ page: this.page,
32
+ components: this.components,
33
+ mode: this.mode
34
+ });
35
+ this.$isEmpty.set(!this.page?.layout?.body);
36
+ this.$rows.set(this.page?.layout?.body?.rows ?? []);
37
+ }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: DotCMSLayoutBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
39
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: DotCMSLayoutBodyComponent, isStandalone: true, selector: "dotcms-layout-body", inputs: { page: "page", components: "components", mode: "mode" }, providers: [DotCMSStore], usesOnChanges: true, ngImport: i0, template: `
40
+ @if ($isEmpty() && $isDevMode()) {
41
+ <dotcms-page-error-message />
42
+ } @else {
43
+ @for (row of $rows(); track row.identifier) {
44
+ <dotcms-row [row]="row" />
45
+ }
46
+ }
47
+ `, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: PageErrorMessageComponent, selector: "dotcms-page-error-message" }, { kind: "component", type: RowComponent, selector: "dotcms-row", inputs: ["row"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
48
+ }
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: DotCMSLayoutBodyComponent, decorators: [{
50
+ type: Component,
51
+ args: [{ selector: 'dotcms-layout-body', standalone: true, imports: [PageErrorMessageComponent, RowComponent], providers: [DotCMSStore], template: `
52
+ @if ($isEmpty() && $isDevMode()) {
53
+ <dotcms-page-error-message />
54
+ } @else {
55
+ @for (row of $rows(); track row.identifier) {
56
+ <dotcms-row [row]="row" />
57
+ }
58
+ }
59
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}\n"] }]
60
+ }], propDecorators: { page: [{
61
+ type: Input,
62
+ args: [{ required: true }]
63
+ }], components: [{
64
+ type: Input,
65
+ args: [{ required: true }]
66
+ }], mode: [{
67
+ type: Input
68
+ }] } });
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG90Y21zLWxheW91dC1ib2R5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2FuZ3VsYXIvbmV4dC9jb21wb25lbnRzL2RvdGNtcy1sYXlvdXQtYm9keS9kb3RjbXMtbGF5b3V0LWJvZHkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUc5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBQ3ZEOzs7Ozs7Ozs7Ozs7R0FZRztBQWtCSCxNQUFNLE9BQU8seUJBQXlCO0lBakJ0QztRQW1CK0IsZUFBVSxHQUF3QixFQUFFLENBQUM7UUFDdkQsU0FBSSxHQUEyQixZQUFZLENBQUM7UUFFckQsaUJBQVksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFbkMsZUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDO1FBRTFDLFVBQUssR0FBRyxNQUFNLENBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBRTVDLGFBQVEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7S0FhNUI7SUFuQkcsWUFBWSxDQUF1QjtJQVFuQyxXQUFXO1FBQ1AsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7WUFDdkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNsQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQzs4R0F2QlEseUJBQXlCO2tHQUF6Qix5QkFBeUIsbUlBYnZCLENBQUMsV0FBVyxDQUFDLCtDQUNkOzs7Ozs7OztLQVFULGdHQVZTLHlCQUF5QixzRUFBRSxZQUFZOzsyRkFjeEMseUJBQXlCO2tCQWpCckMsU0FBUzsrQkFDSSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMseUJBQXlCLEVBQUUsWUFBWSxDQUFDLGFBQ3ZDLENBQUMsV0FBVyxDQUFDLFlBQ2Q7Ozs7Ozs7O0tBUVQsbUJBRWdCLHVCQUF1QixDQUFDLE1BQU07OEJBR3BCLElBQUk7c0JBQTlCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNFLFVBQVU7c0JBQXBDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNoQixJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIHNpZ25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRG90Q01TUGFnZUFzc2V0LCBEb3RDTVNQYWdlUmVuZGVyZXJNb2RlLCBEb3RQYWdlQXNzZXRMYXlvdXRSb3cgfSBmcm9tICdAZG90Y21zL3R5cGVzJztcblxuaW1wb3J0IHsgUGFnZUVycm9yTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wYWdlLWVycm9yLW1lc3NhZ2UvcGFnZS1lcnJvci1tZXNzYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSb3dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcm93L3Jvdy5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBEb3RDTVNQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IERvdENNU1N0b3JlIH0gZnJvbSAnLi4vLi4vc3RvcmUvZG90Y21zLnN0b3JlJztcbi8qKlxuICogQGRlc2NyaXB0aW9uIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gcmVuZGVyIHRoZSBsYXlvdXQgZm9yIGEgRG90Q01TIHBhZ2UuXG4gKiBAcGFyYW0ge0RvdENNU1BhZ2VBc3NldH0gcGFnZSAtIFRoZSBwYWdlIHRvIHJlbmRlciB0aGUgbGF5b3V0IGZvclxuICogQHBhcmFtIHtEb3RDTVNQYWdlQ29tcG9uZW50fSBjb21wb25lbnRzIC0gVGhlIGNvbXBvbmVudHMgdG8gcmVuZGVyIHRoZSBsYXlvdXQgZm9yXG4gKiBAcGFyYW0ge0RvdENNU1BhZ2VSZW5kZXJlck1vZGV9IG1vZGUgLSBUaGUgbW9kZSB0byByZW5kZXIgdGhlIGxheW91dCBmb3JcbiAqXG4gKiBAZXhhbXBsZVxuICogPGRvdGNtcy1sYXlvdXQtYm9keSBbcGFnZV09XCJwYWdlXCIgW2NvbXBvbmVudHNdPVwiY29tcG9uZW50c1wiIFttb2RlXT1cIidkZXZlbG9wbWVudCdcIiAvPlxuICpcbiAqIEBleHBvcnRcbiAqIEBpbXBsZW1lbnRzIHtPbkNoYW5nZXN9XG4gKiBAY2xhc3MgRG90Q01TTGF5b3V0Qm9keUNvbXBvbmVudFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RvdGNtcy1sYXlvdXQtYm9keScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbUGFnZUVycm9yTWVzc2FnZUNvbXBvbmVudCwgUm93Q29tcG9uZW50XSxcbiAgICBwcm92aWRlcnM6IFtEb3RDTVNTdG9yZV0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgQGlmICgkaXNFbXB0eSgpICYmICRpc0Rldk1vZGUoKSkge1xuICAgICAgICAgICAgPGRvdGNtcy1wYWdlLWVycm9yLW1lc3NhZ2UgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAZm9yIChyb3cgb2YgJHJvd3MoKTsgdHJhY2sgcm93LmlkZW50aWZpZXIpIHtcbiAgICAgICAgICAgICAgICA8ZG90Y21zLXJvdyBbcm93XT1cInJvd1wiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICBgLFxuICAgIHN0eWxlVXJsOiAnLi9kb3RjbXMtbGF5b3V0LWJvZHkuY29tcG9uZW50LmNzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRG90Q01TTGF5b3V0Qm9keUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgcGFnZSE6IERvdENNU1BhZ2VBc3NldDtcbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBjb21wb25lbnRzOiBEb3RDTVNQYWdlQ29tcG9uZW50ID0ge307XG4gICAgQElucHV0KCkgbW9kZTogRG90Q01TUGFnZVJlbmRlcmVyTW9kZSA9ICdwcm9kdWN0aW9uJztcblxuICAgICNkb3RDTVNTdG9yZSA9IGluamVjdChEb3RDTVNTdG9yZSk7XG5cbiAgICAkaXNEZXZNb2RlID0gdGhpcy4jZG90Q01TU3RvcmUuJGlzRGV2TW9kZTtcblxuICAgICRyb3dzID0gc2lnbmFsPERvdFBhZ2VBc3NldExheW91dFJvd1tdPihbXSk7XG5cbiAgICAkaXNFbXB0eSA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgdGhpcy4jZG90Q01TU3RvcmUuc2V0U3RvcmUoe1xuICAgICAgICAgICAgcGFnZTogdGhpcy5wYWdlLFxuICAgICAgICAgICAgY29tcG9uZW50czogdGhpcy5jb21wb25lbnRzLFxuICAgICAgICAgICAgbW9kZTogdGhpcy5tb2RlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuJGlzRW1wdHkuc2V0KCF0aGlzLnBhZ2U/LmxheW91dD8uYm9keSk7XG5cbiAgICAgICAgdGhpcy4kcm93cy5zZXQodGhpcy5wYWdlPy5sYXlvdXQ/LmJvZHk/LnJvd3MgPz8gW10pO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,49 @@
1
+ import { Directive, Input, ViewContainerRef, TemplateRef, inject } from '@angular/core';
2
+ import { UVE_MODE } from '@dotcms/types';
3
+ import { getUVEState } from '@dotcms/uve';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Directive to show a template when the UVE is in a specific mode.
7
+ *
8
+ * @example
9
+ * <div *dotCMSShowWhen="UVE_MODE.EDIT">
10
+ * This will be shown when the UVE is in edit mode.
11
+ * </div>
12
+ *
13
+ * @export
14
+ * @class DotCMSShowWhenDirective
15
+ */
16
+ export class DotCMSShowWhenDirective {
17
+ #when = UVE_MODE.EDIT;
18
+ #hasView = false;
19
+ set dotCMSShowWhen(value) {
20
+ this.#when = value;
21
+ this.updateViewContainer();
22
+ }
23
+ #viewContainerRef = inject(ViewContainerRef);
24
+ #templateRef = inject(TemplateRef);
25
+ updateViewContainer() {
26
+ const state = getUVEState();
27
+ const shouldShow = state?.mode === this.#when;
28
+ if (shouldShow && !this.#hasView) {
29
+ this.#viewContainerRef.createEmbeddedView(this.#templateRef);
30
+ this.#hasView = true;
31
+ }
32
+ else if (!shouldShow && this.#hasView) {
33
+ this.#viewContainerRef.clear();
34
+ this.#hasView = false;
35
+ }
36
+ }
37
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: DotCMSShowWhenDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
38
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.3", type: DotCMSShowWhenDirective, isStandalone: true, selector: "[dotCMSShowWhen]", inputs: { dotCMSShowWhen: "dotCMSShowWhen" }, ngImport: i0 }); }
39
+ }
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: DotCMSShowWhenDirective, decorators: [{
41
+ type: Directive,
42
+ args: [{
43
+ selector: '[dotCMSShowWhen]',
44
+ standalone: true
45
+ }]
46
+ }], propDecorators: { dotCMSShowWhen: [{
47
+ type: Input
48
+ }] } });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG90Y21zLXNob3ctd2hlbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9hbmd1bGFyL25leHQvZGlyZWN0aXZlcy9kb3RjbXMtc2hvdy13aGVuL2RvdGNtcy1zaG93LXdoZW4uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEYsT0FBTyxFQUFFLFFBQVEsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUUxQzs7Ozs7Ozs7OztHQVVHO0FBS0gsTUFBTSxPQUFPLHVCQUF1QjtJQUNoQyxLQUFLLEdBQWEsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNoQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRWpCLElBQWEsY0FBYyxDQUFDLEtBQWU7UUFDdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdDLFlBQVksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFM0IsbUJBQW1CO1FBQ3ZCLE1BQU0sS0FBSyxHQUF5QixXQUFXLEVBQUUsQ0FBQztRQUVsRCxNQUFNLFVBQVUsR0FBRyxLQUFLLEVBQUUsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUM7UUFFOUMsSUFBSSxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN6QixDQUFDO2FBQU0sSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQzFCLENBQUM7SUFDTCxDQUFDOzhHQXhCUSx1QkFBdUI7a0dBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFKbkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OEJBS2dCLGNBQWM7c0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBWaWV3Q29udGFpbmVyUmVmLCBUZW1wbGF0ZVJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFVWRV9NT0RFLCBVVkVTdGF0ZSB9IGZyb20gJ0Bkb3RjbXMvdHlwZXMnO1xuaW1wb3J0IHsgZ2V0VVZFU3RhdGUgfSBmcm9tICdAZG90Y21zL3V2ZSc7XG5cbi8qKlxuICogRGlyZWN0aXZlIHRvIHNob3cgYSB0ZW1wbGF0ZSB3aGVuIHRoZSBVVkUgaXMgaW4gYSBzcGVjaWZpYyBtb2RlLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8ZGl2ICpkb3RDTVNTaG93V2hlbj1cIlVWRV9NT0RFLkVESVRcIj5cbiAqICAgICBUaGlzIHdpbGwgYmUgc2hvd24gd2hlbiB0aGUgVVZFIGlzIGluIGVkaXQgbW9kZS5cbiAqIDwvZGl2PlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBEb3RDTVNTaG93V2hlbkRpcmVjdGl2ZVxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tkb3RDTVNTaG93V2hlbl0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRG90Q01TU2hvd1doZW5EaXJlY3RpdmUge1xuICAgICN3aGVuOiBVVkVfTU9ERSA9IFVWRV9NT0RFLkVESVQ7XG4gICAgI2hhc1ZpZXcgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHNldCBkb3RDTVNTaG93V2hlbih2YWx1ZTogVVZFX01PREUpIHtcbiAgICAgICAgdGhpcy4jd2hlbiA9IHZhbHVlO1xuICAgICAgICB0aGlzLnVwZGF0ZVZpZXdDb250YWluZXIoKTtcbiAgICB9XG5cbiAgICAjdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgICAjdGVtcGxhdGVSZWYgPSBpbmplY3QoVGVtcGxhdGVSZWYpO1xuXG4gICAgcHJpdmF0ZSB1cGRhdGVWaWV3Q29udGFpbmVyKCkge1xuICAgICAgICBjb25zdCBzdGF0ZTogVVZFU3RhdGUgfCB1bmRlZmluZWQgPSBnZXRVVkVTdGF0ZSgpO1xuXG4gICAgICAgIGNvbnN0IHNob3VsZFNob3cgPSBzdGF0ZT8ubW9kZSA9PT0gdGhpcy4jd2hlbjtcblxuICAgICAgICBpZiAoc2hvdWxkU2hvdyAmJiAhdGhpcy4jaGFzVmlldykge1xuICAgICAgICAgICAgdGhpcy4jdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy4jdGVtcGxhdGVSZWYpO1xuICAgICAgICAgICAgdGhpcy4jaGFzVmlldyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoIXNob3VsZFNob3cgJiYgdGhpcy4jaGFzVmlldykge1xuICAgICAgICAgICAgdGhpcy4jdmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy4jaGFzVmlldyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public_api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG90Y21zLWFuZ3VsYXItbmV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2FuZ3VsYXIvbmV4dC9kb3RjbXMtYW5ndWxhci1uZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
@@ -0,0 +1,3 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ export {};
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9hbmd1bGFyL25leHQvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RCIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cblxuaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEb3RDTVNQYWdlQXNzZXQsIERvdENNU1BhZ2VSZW5kZXJlck1vZGUgfSBmcm9tICdAZG90Y21zL3R5cGVzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZHluYW1pYyBjb21wb25lbnQgZW50aXR5LlxuICogQHR5cGVkZWYge1Byb21pc2U8VHlwZTxhbnk+Pn0gRHluYW1pY0NvbXBvbmVudEVudGl0eVxuICogQG1lbWJlcm9mIEBkb3RjbXMvYW5ndWxhclxuICovXG5leHBvcnQgdHlwZSBEeW5hbWljQ29tcG9uZW50RW50aXR5ID0gUHJvbWlzZTxUeXBlPGFueT4+O1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGNvbnRleHQgb2YgYSBEb3RDTVMgcGFnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb3RDTVNQYWdlU3RvcmUge1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIERvdENNUyBwYWdlIGFzc2V0LlxuICAgICAqIEB0eXBlIHtEb3RDTVNQYWdlQXNzZXR9XG4gICAgICogQG1lbWJlcm9mIERvdENNU1BhZ2VTdG9yZVxuICAgICAqL1xuICAgIHBhZ2U6IERvdENNU1BhZ2VBc3NldDtcblxuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIGR5bmFtaWMgY29tcG9uZW50cyBvZiB0aGUgcGFnZSBmb3IgZWFjaCBDb250ZW50IFR5cGUuXG4gICAgICogQHR5cGUge0RvdENNU1BhZ2VDb21wb25lbnR9XG4gICAgICogQG1lbWJlcm9mIERvdENNU1BhZ2VTdG9yZVxuICAgICAqL1xuICAgIGNvbXBvbmVudHM6IERvdENNU1BhZ2VDb21wb25lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgdGhlIHJlbmRlcmVyIG1vZGUuXG4gICAgICogQHR5cGUge0RvdENNU1BhZ2VSZW5kZXJlck1vZGV9XG4gICAgICogQG1lbWJlcm9mIERvdENNU1BhZ2VTdG9yZVxuICAgICAqL1xuICAgIG1vZGU6IERvdENNU1BhZ2VSZW5kZXJlck1vZGU7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIERvdENNUyBwYWdlIGNvbXBvbmVudC5cbiAqIFVzZWQgdG8gc3RvcmUgdGhlIGR5bmFtaWMgY29tcG9uZW50cyBvZiBhIERvdENNUyBwYWdlLlxuICogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIER5bmFtaWNDb21wb25lbnRFbnRpdHk+fSBEb3RDTVNQYWdlQ29tcG9uZW50XG4gKiBAbWVtYmVyb2YgQGRvdGNtcy9hbmd1bGFyXG4gKi9cbmV4cG9ydCB0eXBlIERvdENNU1BhZ2VDb21wb25lbnQgPSBSZWNvcmQ8c3RyaW5nLCBEeW5hbWljQ29tcG9uZW50RW50aXR5PjtcbiJdfQ==