@dotcms/angular 0.0.1-beta.2 → 0.0.1-beta.20

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 (153) 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.components.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 +225 -0
  27. package/esm2022/{lib/components/dot-editable-text → next/components/dotcms-editable-text}/utils.mjs +1 -1
  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 +6 -0
  42. package/esm2022/next/store/dotcms.store.mjs +61 -0
  43. package/esm2022/public_api.mjs +2 -0
  44. package/fesm2022/dotcms-angular-next.mjs +1642 -0
  45. package/fesm2022/dotcms-angular-next.mjs.map +1 -0
  46. package/fesm2022/dotcms-angular.mjs +97 -4
  47. package/fesm2022/dotcms-angular.mjs.map +1 -1
  48. package/index.d.ts +6 -5
  49. package/lib/{components → deprecated/components}/dot-editable-text/dot-editable-text.component.d.ts +4 -0
  50. package/lib/deprecated/components/dot-editable-text/dot-editable-text.component.d.ts.map +1 -0
  51. package/lib/deprecated/components/dot-editable-text/utils.d.ts.map +1 -0
  52. package/lib/deprecated/components/no-component/no-component.component.d.ts.map +1 -0
  53. package/lib/deprecated/deprecated-api.d.ts +11 -0
  54. package/lib/deprecated/deprecated-api.d.ts.map +1 -0
  55. package/lib/deprecated/layout/column/column.component.d.ts.map +1 -0
  56. package/lib/deprecated/layout/container/container.component.d.ts.map +1 -0
  57. package/lib/deprecated/layout/contentlet/contentlet.component.d.ts.map +1 -0
  58. package/lib/{layout → deprecated/layout}/dotcms-layout/dotcms-layout.component.d.ts +5 -0
  59. package/lib/deprecated/layout/dotcms-layout/dotcms-layout.component.d.ts.map +1 -0
  60. package/lib/deprecated/layout/row/row.component.d.ts.map +1 -0
  61. package/lib/deprecated/models/dotcms.model.d.ts.map +1 -0
  62. package/lib/deprecated/models/index.d.ts.map +1 -0
  63. package/lib/{services → deprecated/services}/dotcms-context/page-context.service.d.ts +4 -0
  64. package/lib/deprecated/services/dotcms-context/page-context.service.d.ts.map +1 -0
  65. package/lib/deprecated/utils/image_loader.d.ts +21 -0
  66. package/lib/deprecated/utils/image_loader.d.ts.map +1 -0
  67. package/lib/deprecated/utils/index.d.ts.map +1 -0
  68. package/next/components/dotcms-block-editor-renderer/blocks/code.component.d.ts +10 -0
  69. package/next/components/dotcms-block-editor-renderer/blocks/code.component.d.ts.map +1 -0
  70. package/next/components/dotcms-block-editor-renderer/blocks/contentlet.component.d.ts +25 -0
  71. package/next/components/dotcms-block-editor-renderer/blocks/contentlet.component.d.ts.map +1 -0
  72. package/next/components/dotcms-block-editor-renderer/blocks/image.component.d.ts +9 -0
  73. package/next/components/dotcms-block-editor-renderer/blocks/image.component.d.ts.map +1 -0
  74. package/next/components/dotcms-block-editor-renderer/blocks/list.component.d.ts +14 -0
  75. package/next/components/dotcms-block-editor-renderer/blocks/list.component.d.ts.map +1 -0
  76. package/next/components/dotcms-block-editor-renderer/blocks/table.component.d.ts +10 -0
  77. package/next/components/dotcms-block-editor-renderer/blocks/table.component.d.ts.map +1 -0
  78. package/next/components/dotcms-block-editor-renderer/blocks/text.component.d.ts +27 -0
  79. package/next/components/dotcms-block-editor-renderer/blocks/text.component.d.ts.map +1 -0
  80. package/next/components/dotcms-block-editor-renderer/blocks/video.components.d.ts +10 -0
  81. package/next/components/dotcms-block-editor-renderer/blocks/video.components.d.ts.map +1 -0
  82. package/next/components/dotcms-block-editor-renderer/dotcms-block-editor-renderer.component.d.ts +37 -0
  83. package/next/components/dotcms-block-editor-renderer/dotcms-block-editor-renderer.component.d.ts.map +1 -0
  84. package/next/components/dotcms-block-editor-renderer/item/dotcms-block-editor-item.component.d.ts +12 -0
  85. package/next/components/dotcms-block-editor-renderer/item/dotcms-block-editor-item.component.d.ts.map +1 -0
  86. package/next/components/dotcms-editable-text/dotcms-editable-text.component.d.ts +129 -0
  87. package/next/components/dotcms-editable-text/dotcms-editable-text.component.d.ts.map +1 -0
  88. package/next/components/dotcms-editable-text/utils.d.ts +7 -0
  89. package/{lib/components/dot-editable-text → next/components/dotcms-editable-text}/utils.d.ts.map +1 -1
  90. package/next/components/dotcms-layout-body/components/column/column.component.d.ts +21 -0
  91. package/next/components/dotcms-layout-body/components/column/column.component.d.ts.map +1 -0
  92. package/next/components/dotcms-layout-body/components/container/components/container-not-found/container-not-found.component.d.ts +27 -0
  93. package/next/components/dotcms-layout-body/components/container/components/container-not-found/container-not-found.component.d.ts.map +1 -0
  94. package/next/components/dotcms-layout-body/components/container/components/empty-container/empty-container.component.d.ts +23 -0
  95. package/next/components/dotcms-layout-body/components/container/components/empty-container/empty-container.component.d.ts.map +1 -0
  96. package/next/components/dotcms-layout-body/components/container/container.component.d.ts +31 -0
  97. package/next/components/dotcms-layout-body/components/container/container.component.d.ts.map +1 -0
  98. package/next/components/dotcms-layout-body/components/contentlet/contentlet.component.d.ts +47 -0
  99. package/next/components/dotcms-layout-body/components/contentlet/contentlet.component.d.ts.map +1 -0
  100. package/next/components/dotcms-layout-body/components/fallback-component/fallback-component.component.d.ts +16 -0
  101. package/next/components/dotcms-layout-body/components/fallback-component/fallback-component.component.d.ts.map +1 -0
  102. package/next/components/dotcms-layout-body/components/page-error-message/page-error-message.component.d.ts +13 -0
  103. package/next/components/dotcms-layout-body/components/page-error-message/page-error-message.component.d.ts.map +1 -0
  104. package/next/components/dotcms-layout-body/components/row/row.component.d.ts +22 -0
  105. package/next/components/dotcms-layout-body/components/row/row.component.d.ts.map +1 -0
  106. package/next/components/dotcms-layout-body/dotcms-layout-body.component.d.ts +30 -0
  107. package/next/components/dotcms-layout-body/dotcms-layout-body.component.d.ts.map +1 -0
  108. package/next/directives/dotcms-show-when/dotcms-show-when.directive.d.ts +21 -0
  109. package/next/directives/dotcms-show-when/dotcms-show-when.directive.d.ts.map +1 -0
  110. package/next/dotcms-angular-next.d.ts.map +1 -0
  111. package/next/index.d.ts +6 -0
  112. package/next/models/index.d.ts +39 -0
  113. package/next/models/index.d.ts.map +1 -0
  114. package/next/providers/dotcms-image-loader/dotcms-image_loader.d.ts +21 -0
  115. package/next/providers/dotcms-image-loader/dotcms-image_loader.d.ts.map +1 -0
  116. package/next/public_api.d.ts +6 -0
  117. package/next/public_api.d.ts.map +1 -0
  118. package/next/store/dotcms.store.d.ts +36 -0
  119. package/next/store/dotcms.store.d.ts.map +1 -0
  120. package/package.json +9 -2
  121. package/public_api.d.ts +2 -0
  122. package/public_api.d.ts.map +1 -0
  123. package/esm2022/index.mjs +0 -5
  124. package/esm2022/lib/components/dot-editable-text/dot-editable-text.component.mjs +0 -225
  125. package/esm2022/lib/components/no-component/no-component.component.mjs +0 -32
  126. package/esm2022/lib/layout/container/container.component.mjs +0 -126
  127. package/esm2022/lib/layout/contentlet/contentlet.component.mjs +0 -120
  128. package/esm2022/lib/layout/dotcms-layout/dotcms-layout.component.mjs +0 -100
  129. package/esm2022/lib/models/dotcms.model.mjs +0 -3
  130. package/esm2022/lib/models/index.mjs +0 -3
  131. package/esm2022/lib/services/dotcms-context/page-context.service.mjs +0 -75
  132. package/esm2022/lib/utils/index.mjs +0 -84
  133. package/index.d.ts.map +0 -1
  134. package/lib/components/dot-editable-text/dot-editable-text.component.d.ts.map +0 -1
  135. package/lib/components/no-component/no-component.component.d.ts.map +0 -1
  136. package/lib/layout/column/column.component.d.ts.map +0 -1
  137. package/lib/layout/container/container.component.d.ts.map +0 -1
  138. package/lib/layout/contentlet/contentlet.component.d.ts.map +0 -1
  139. package/lib/layout/dotcms-layout/dotcms-layout.component.d.ts.map +0 -1
  140. package/lib/layout/row/row.component.d.ts.map +0 -1
  141. package/lib/models/dotcms.model.d.ts.map +0 -1
  142. package/lib/models/index.d.ts.map +0 -1
  143. package/lib/services/dotcms-context/page-context.service.d.ts.map +0 -1
  144. package/lib/utils/index.d.ts.map +0 -1
  145. /package/lib/{components → deprecated/components}/dot-editable-text/utils.d.ts +0 -0
  146. /package/lib/{components → deprecated/components}/no-component/no-component.component.d.ts +0 -0
  147. /package/lib/{layout → deprecated/layout}/column/column.component.d.ts +0 -0
  148. /package/lib/{layout → deprecated/layout}/container/container.component.d.ts +0 -0
  149. /package/lib/{layout → deprecated/layout}/contentlet/contentlet.component.d.ts +0 -0
  150. /package/lib/{layout → deprecated/layout}/row/row.component.d.ts +0 -0
  151. /package/lib/{models → deprecated/models}/dotcms.model.d.ts +0 -0
  152. /package/lib/{models → deprecated/models}/index.d.ts +0 -0
  153. /package/lib/{utils → deprecated/utils}/index.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dotcms-angular-next.mjs","sources":["../../../../../libs/sdk/angular/next/directives/dotcms-show-when/dotcms-show-when.directive.ts","../../../../../libs/sdk/angular/next/providers/dotcms-image-loader/dotcms-image_loader.ts","../../../../../libs/sdk/angular/next/components/dotcms-editable-text/utils.ts","../../../../../libs/sdk/angular/next/components/dotcms-editable-text/dotcms-editable-text.component.ts","../../../../../libs/sdk/angular/next/components/dotcms-editable-text/dotcms-editable-text.component.html","../../../../../libs/sdk/angular/next/components/dotcms-block-editor-renderer/blocks/code.component.ts","../../../../../libs/sdk/angular/next/components/dotcms-block-editor-renderer/blocks/contentlet.component.ts","../../../../../libs/sdk/angular/next/components/dotcms-block-editor-renderer/blocks/image.component.ts","../../../../../libs/sdk/angular/next/components/dotcms-block-editor-renderer/blocks/list.component.ts","../../../../../libs/sdk/angular/next/components/dotcms-block-editor-renderer/blocks/table.component.ts","../../../../../libs/sdk/angular/next/components/dotcms-block-editor-renderer/blocks/text.component.ts","../../../../../libs/sdk/angular/next/components/dotcms-block-editor-renderer/blocks/video.components.ts","../../../../../libs/sdk/angular/next/components/dotcms-block-editor-renderer/item/dotcms-block-editor-item.component.ts","../../../../../libs/sdk/angular/next/components/dotcms-block-editor-renderer/item/dotcms-block-editor-item.component.html","../../../../../libs/sdk/angular/next/components/dotcms-block-editor-renderer/dotcms-block-editor-renderer.component.ts","../../../../../libs/sdk/angular/next/components/dotcms-block-editor-renderer/dotcms-block-editor-renderer.component.html","../../../../../libs/sdk/angular/next/components/dotcms-layout-body/components/page-error-message/page-error-message.component.ts","../../../../../libs/sdk/angular/next/store/dotcms.store.ts","../../../../../libs/sdk/angular/next/components/dotcms-layout-body/components/container/components/container-not-found/container-not-found.component.ts","../../../../../libs/sdk/angular/next/components/dotcms-layout-body/components/container/components/empty-container/empty-container.component.ts","../../../../../libs/sdk/angular/next/components/dotcms-layout-body/components/fallback-component/fallback-component.component.ts","../../../../../libs/sdk/angular/next/components/dotcms-layout-body/components/contentlet/contentlet.component.ts","../../../../../libs/sdk/angular/next/components/dotcms-layout-body/components/container/container.component.ts","../../../../../libs/sdk/angular/next/components/dotcms-layout-body/components/column/column.component.ts","../../../../../libs/sdk/angular/next/components/dotcms-layout-body/components/row/row.component.ts","../../../../../libs/sdk/angular/next/components/dotcms-layout-body/dotcms-layout-body.component.ts","../../../../../libs/sdk/angular/next/dotcms-angular-next.ts"],"sourcesContent":["import { Directive, Input, ViewContainerRef, TemplateRef, inject } from '@angular/core';\n\nimport { getUVEState } from '@dotcms/uve';\nimport { UVE_MODE, UVEState } from '@dotcms/uve/types';\n\n/**\n * Directive to show a template when the UVE is in a specific mode.\n *\n * @example\n * <div *dotCMSShowWhen=\"UVE_MODE.EDIT\">\n * This will be shown when the UVE is in edit mode.\n * </div>\n *\n * @export\n * @class DotCMSShowWhenDirective\n */\n@Directive({\n selector: '[dotCMSShowWhen]',\n standalone: true\n})\nexport class DotCMSShowWhenDirective {\n #when: UVE_MODE = UVE_MODE.EDIT;\n #hasView = false;\n\n @Input() set dotCMSShowWhen(value: UVE_MODE) {\n this.#when = value;\n this.updateViewContainer();\n }\n\n #viewContainerRef = inject(ViewContainerRef);\n #templateRef = inject(TemplateRef);\n\n private updateViewContainer() {\n const state: UVEState | undefined = getUVEState();\n\n const shouldShow = state?.mode === this.#when;\n\n if (shouldShow && !this.#hasView) {\n this.#viewContainerRef.createEmbeddedView(this.#templateRef);\n this.#hasView = true;\n } else if (!shouldShow && this.#hasView) {\n this.#viewContainerRef.clear();\n this.#hasView = false;\n }\n }\n}\n","import { IMAGE_LOADER, ImageLoaderConfig } from '@angular/common';\nimport { Provider } from '@angular/core';\n\n/**\n * Type definition for the DotCMS image loader parameters\n */\ninterface DotCMSImageLoaderParams {\n isOutsideSRC?: boolean;\n languageId?: string;\n}\n\n/**\n * Validates if a given path is a valid URL string\n *\n * @param path - The path to validate\n * @returns boolean indicating if the path is valid\n */\nfunction isValidPath(path: unknown): boolean {\n if (typeof path !== 'string' || path.trim() === '') {\n return false;\n }\n\n try {\n new URL(path);\n\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Provides a DotCMS image loader configuration for the Angular Image directive\n *\n * @param path - The base URL path to the DotCMS instance, or empty to use current site\n * @returns An array of providers for the IMAGE_LOADER token\n * @throws Error if the provided path is invalid\n * @example\n * ```typescript\n * // In your app.config.ts\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideDotCMSImageLoader('https://demo.dotcms.com')\n * // Or use current site:\n * // provideDotCMSImageLoader()\n * ]\n * };\n * ```\n */\nexport function provideDotCMSImageLoader(path?: string): Provider[] {\n // If path is provided, validate it\n if (path && !isValidPath(path)) {\n throw new Error(\n `Image loader has detected an invalid path (\\`${path}\\`). ` +\n `To fix this, supply either the full URL to the dotCMS site, or leave it empty to use the current site.`\n );\n }\n\n return [\n {\n provide: IMAGE_LOADER,\n useValue: (config: ImageLoaderConfig) => createDotCMSURL(config, path)\n }\n ];\n}\n\n/**\n * Creates a DotCMS-compatible URL for image loading\n *\n * @param config - The image loader configuration\n * @param path - The base URL path to the DotCMS instance\n * @returns A fully qualified URL for the image\n * @internal\n */\nfunction createDotCMSURL(config: ImageLoaderConfig, path?: string): string {\n const { loaderParams, src, width } = config;\n const params = loaderParams as DotCMSImageLoaderParams;\n\n if (params?.isOutsideSRC) {\n return src;\n }\n\n // Use empty string as fallback to support using current site\n const dotcmsHost = path ? new URL(path).origin : '';\n const imageSRC = src.includes('/dA/') ? src : `/dA/${src}`;\n const languageId = params?.languageId ?? '1';\n\n if (width) {\n return `${dotcmsHost}${imageSRC}/${width}w?language_id=${languageId}`;\n }\n\n return `${dotcmsHost}${imageSRC}?language_id=${languageId}`;\n}\n","import { EditorComponent } from '@tinymce/tinymce-angular';\n\nexport type DOT_EDITABLE_TEXT_MODE = 'minimal' | 'full' | 'plain';\n\nexport type DOT_EDITABLE_TEXT_FORMAT = 'html' | 'text';\n\nconst DEFAULT_TINYMCE_CONFIG: EditorComponent['init'] = {\n menubar: false,\n inline: true,\n valid_styles: {\n '*': 'font-size,font-family,color,text-decoration,text-align'\n },\n powerpaste_word_import: 'clean',\n powerpaste_html_import: 'clean',\n suffix: '.min', // Suffix to use when loading resources\n license_key: 'gpl'\n};\n\nexport const TINYMCE_CONFIG: {\n [key in DOT_EDITABLE_TEXT_MODE]: EditorComponent['init'];\n} = {\n minimal: {\n ...DEFAULT_TINYMCE_CONFIG,\n plugins: 'link autolink',\n toolbar: 'bold italic underline | link',\n valid_elements: 'strong,em,span[style],a[href]'\n },\n full: {\n ...DEFAULT_TINYMCE_CONFIG,\n plugins: 'link lists autolink charmap',\n style_formats: [\n { title: 'Paragraph', format: 'p' },\n { title: 'Header 1', format: 'h1' },\n { title: 'Header 2', format: 'h2' },\n { title: 'Header 3', format: 'h3' },\n { title: 'Header 4', format: 'h4' },\n { title: 'Header 5', format: 'h5' },\n { title: 'Header 6', format: 'h6' },\n { title: 'Pre', format: 'pre' },\n { title: 'Code', format: 'code' }\n ],\n toolbar: [\n 'styleselect undo redo | bold italic underline | forecolor backcolor | alignleft aligncenter alignright alignfull | numlist bullist outdent indent | hr charmap removeformat | link'\n ]\n },\n plain: {\n ...DEFAULT_TINYMCE_CONFIG,\n plugins: '',\n toolbar: ''\n }\n};\n","import { EditorComponent, TINYMCE_SCRIPT_SRC } from '@tinymce/tinymce-angular';\nimport { EventObj } from '@tinymce/tinymce-angular/editor/Events';\n\nimport {\n Component,\n ElementRef,\n HostListener,\n inject,\n Input,\n OnChanges,\n OnInit,\n Renderer2,\n SecurityContext,\n ViewChild\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport {\n CLIENT_ACTIONS,\n DotCmsClient,\n isInsideEditor,\n NOTIFY_CLIENT,\n postMessageToEditor\n} from '@dotcms/client';\nimport { DotCMSContentlet } from '@dotcms/uve/types';\n\nimport { TINYMCE_CONFIG, DOT_EDITABLE_TEXT_FORMAT, DOT_EDITABLE_TEXT_MODE } from './utils';\n\n/**\n * Dot editable text component.\n * This component is responsible to render a text field that can be edited inline.\n *\n * @export\n * @class DotCMSEditableTextComponent\n * @implements {OnInit}\n * @implements {OnChanges}\n */\n@Component({\n selector: 'dotcms-editable-text',\n standalone: true,\n templateUrl: './dotcms-editable-text.component.html',\n styleUrl: './dotcms-editable-text.component.css',\n imports: [EditorComponent],\n providers: [\n {\n provide: TINYMCE_SCRIPT_SRC,\n useFactory: () => {\n return `${DotCmsClient.dotcmsUrl}/ext/tinymcev7/tinymce.min.js`;\n }\n }\n ]\n})\nexport class DotCMSEditableTextComponent implements OnInit, OnChanges {\n @ViewChild(EditorComponent) editorComponent!: EditorComponent;\n\n /**\n * Represents the mode of the editor which can be `plain`, `minimal`, or `full`\n *\n * @type {DOT_EDITABLE_TEXT_MODE}\n * @memberof DotCMSEditableTextComponent\n */\n @Input() mode: DOT_EDITABLE_TEXT_MODE = 'plain';\n /**\n * Represents the format of the editor which can be `text` or `html`\n *\n * @type {DOT_EDITABLE_TEXT_FORMAT}\n * @memberof DotCMSEditableTextComponent\n */\n @Input() format: DOT_EDITABLE_TEXT_FORMAT = 'text';\n /**\n * Represents the `contentlet` that can be inline edited\n *\n * @type {DotCMSContentlet}\n * @memberof DotCMSEditableTextComponent\n */\n @Input() contentlet!: DotCMSContentlet;\n /**\n * Represents the field name of the `contentlet` that can be edited\n *\n * @memberof DotCMSEditableTextComponent\n */\n @Input() fieldName = '';\n\n /**\n * Represents the content of the `contentlet` that can be edited\n *\n * @protected\n * @memberof DotCMSEditableTextComponent\n */\n protected content = '';\n /**\n * Represents the configuration of the editor\n *\n * @protected\n * @type {EditorComponent['init']}\n * @memberof DotCMSEditableTextComponent\n */\n protected init!: EditorComponent['init'];\n /**\n * Represents if the component is inside the editor\n *\n * @protected\n * @type {boolean}\n * @memberof DotCMSEditableTextComponent\n */\n protected isInsideEditor!: boolean;\n\n readonly #sanitizer = inject<DomSanitizer>(DomSanitizer);\n readonly #renderer = inject<Renderer2>(Renderer2);\n readonly #elementRef = inject<ElementRef>(ElementRef);\n\n /**\n * The TinyMCE editor\n *\n * @readonly\n * @memberof DotCMSEditableTextComponent\n */\n get editor() {\n return this.editorComponent?.editor;\n }\n\n /**\n * Returns the number of pages the contentlet is on\n *\n * @readonly\n * @memberof DotCMSEditableTextComponent\n */\n get onNumberOfPages() {\n return this.contentlet['onNumberOfPages'] || 1;\n }\n\n /**\n * Handle copy contentlet inline editing success event\n *\n * @param {MessageEvent} { data }\n * @return {*}\n * @memberof DotCMSEditableTextComponent\n */\n @HostListener('window:message', ['$event'])\n onMessage({ data }: MessageEvent) {\n const { name, payload } = data;\n if (name !== NOTIFY_CLIENT.UVE_COPY_CONTENTLET_INLINE_EDITING_SUCCESS) {\n return;\n }\n\n const { oldInode, inode } = payload;\n const currentInode = this.contentlet.inode;\n\n if (currentInode === oldInode || currentInode === inode) {\n this.editorComponent.editor.focus();\n\n return;\n }\n }\n\n ngOnInit() {\n this.isInsideEditor = isInsideEditor();\n\n if (!this.isInsideEditor) {\n this.innerHTMLToElement();\n\n return;\n }\n\n this.init = {\n ...TINYMCE_CONFIG[this.mode],\n base_url: `${DotCmsClient.dotcmsUrl}/ext/tinymcev7`\n };\n }\n\n ngOnChanges() {\n this.content = this.contentlet[this.fieldName] || '';\n if (this.editor) {\n this.editor.setContent(this.content, { format: this.format });\n }\n }\n\n /**\n * Handle mouse down event\n *\n * @param {EventObj<MouseEvent>} { event }\n * @return {*}\n * @memberof DotCMSEditableTextComponent\n */\n onMouseDown({ event }: EventObj<MouseEvent>) {\n if (this.onNumberOfPages <= 1 || this.editorComponent.editor.hasFocus()) {\n return;\n }\n\n const { inode, languageId: language } = this.contentlet;\n\n event.stopPropagation();\n event.preventDefault();\n\n try {\n postMessageToEditor({\n action: CLIENT_ACTIONS.COPY_CONTENTLET_INLINE_EDITING,\n payload: {\n dataset: {\n inode,\n language,\n fieldName: this.fieldName\n }\n }\n });\n } catch (error) {\n console.error('Failed to post message to editor:', error);\n }\n }\n /**\n * Handle focus out event\n *\n * @return {*}\n * @memberof DotCMSEditableTextComponent\n */\n onFocusOut() {\n const content = this.editor.getContent({ format: this.format });\n\n if (!this.editor.isDirty() || !this.didContentChange(content)) {\n return;\n }\n\n const { inode, languageId: langId } = this.contentlet;\n\n try {\n postMessageToEditor({\n action: CLIENT_ACTIONS.UPDATE_CONTENTLET_INLINE_EDITING,\n payload: {\n content,\n dataset: {\n inode,\n langId,\n fieldName: this.fieldName\n }\n }\n });\n } catch (error) {\n console.error('Failed to post message to editor:', error);\n }\n }\n\n /**\n * inner HTML to element\n *\n * @private\n * @param {string} editedContent\n * @return {*}\n * @memberof DotCMSEditableTextComponent\n */\n private innerHTMLToElement() {\n const element = this.#elementRef.nativeElement;\n const safeHtml = this.#sanitizer.bypassSecurityTrustHtml(this.content);\n const content = this.#sanitizer.sanitize(SecurityContext.HTML, safeHtml) || '';\n\n this.#renderer.setProperty(element, 'innerHTML', content);\n }\n\n /**\n * Check if the content has changed\n *\n * @private\n * @param {string} editedContent\n * @return {*}\n * @memberof DotCMSEditableTextComponent\n */\n private didContentChange(editedContent: string) {\n return this.content !== editedContent;\n }\n}\n","@if (isInsideEditor) {\n <editor\n #tinyEditor\n [init]=\"init\"\n [initialValue]=\"content\"\n (onMouseDown)=\"onMouseDown($event)\"\n (onFocusOut)=\"onFocusOut()\" />\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'dotcms-block-editor-renderer-code-block',\n standalone: true,\n template: `\n <pre>\n <code>\n <ng-content />\n </code>\n </pre>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DotCodeBlock {}\n\n@Component({\n selector: 'dotcms-block-editor-renderer-block-quote',\n standalone: true,\n template: `\n <blockquote>\n <ng-content />\n </blockquote>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DotBlockQuote {}\n","import { AsyncPipe, NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, Input } from '@angular/core';\n\nimport { Contentlet, ContentNode } from '@dotcms/uve/types';\n\nimport { DynamicComponentEntity } from '../../../models';\nimport { CustomRenderer } from '../dotcms-block-editor-renderer.component';\n\n/**\n * Default component for unknown content type\n */\n@Component({\n selector: 'dot-default-content',\n template: '<div>Unknown Content Type: {{ contentlet?.contentType }}</div>',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DotDefaultContentBlock {\n @Input() contentlet: Contentlet<unknown> | undefined;\n}\n\n/**\n * DotContent component that renders content based on content type\n */\n@Component({\n selector: 'dotcms-block-editor-renderer-contentlet',\n standalone: true,\n imports: [NgComponentOutlet, AsyncPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template:\n '<ng-container *ngComponentOutlet=\"contentComponent | async; inputs: { contentlet: $data() }\"></ng-container>'\n})\nexport class DotContentletBlock {\n @Input() customRenderers: CustomRenderer | undefined;\n @Input() attrs: ContentNode['attrs'];\n\n contentComponent: DynamicComponentEntity | undefined;\n\n protected readonly $data = computed(() => this.attrs?.['data'] as Contentlet<unknown>);\n\n ngOnInit() {\n if (!this.$data()) {\n console.error('DotCMSBlockEditorRendererContentlet: No data provided');\n }\n\n this.contentComponent =\n this.customRenderers?.[this.$data()?.contentType] ??\n import('./contentlet.component').then((m) => m.DotDefaultContentBlock);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, Input } from '@angular/core';\n\nimport { ContentNode } from '@dotcms/uve/types';\n\n@Component({\n selector: 'dotcms-block-editor-renderer-image',\n standalone: true,\n template: `\n <img [alt]=\"attrs?.['alt']\" [src]=\"$srcURL()\" />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DotImageBlock {\n @Input() attrs!: ContentNode['attrs'];\n\n protected readonly $srcURL = computed(() => this.attrs?.['src']);\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'dotcms-block-editor-renderer-bullet-list',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ul>\n <ng-content />\n </ul>\n `\n})\nexport class DotBulletList {}\n\n@Component({\n selector: 'dotcms-block-editor-renderer-ordered-list',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ol>\n <ng-content />\n </ol>\n `\n})\nexport class DotOrdererList {}\n\n@Component({\n selector: 'dotcms-block-editor-renderer-list-item',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <li>\n <ng-content />\n </li>\n `\n})\nexport class DotListItem {}\n","import { NgComponentOutlet } from '@angular/common';\nimport { Component, Input } from '@angular/core';\n\nimport { ContentNode } from '@dotcms/uve/types';\n\nimport { DotCMSBlockEditorItemComponent } from '../item/dotcms-block-editor-item.component';\n@Component({\n selector: 'dotcms-block-editor-renderer-table',\n standalone: true,\n imports: [NgComponentOutlet],\n template: `\n <table>\n <thead>\n @for (rowNode of content?.slice(0, 1); track rowNode.type) {\n <tr>\n @for (cellNode of rowNode.content; track cellNode.type) {\n <th\n [attr.colspan]=\"cellNode.attrs?.['colspan'] || 1\"\n [attr.rowspan]=\"cellNode.attrs?.['rowspan'] || 1\">\n <ng-container\n *ngComponentOutlet=\"\n blockEditorItem;\n inputs: { content: cellNode.content }\n \"></ng-container>\n </th>\n }\n </tr>\n }\n </thead>\n <tbody>\n @for (rowNode of content?.slice(1); track rowNode.type) {\n <tr>\n @for (cellNode of rowNode.content; track cellNode.type) {\n <td\n [attr.colspan]=\"cellNode.attrs?.['colspan'] || 1\"\n [attr.rowspan]=\"cellNode.attrs?.['rowspan'] || 1\">\n <ng-container\n *ngComponentOutlet=\"\n blockEditorItem;\n inputs: { content: cellNode.content }\n \"></ng-container>\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n `\n})\nexport class DotTableBlock {\n @Input() content: ContentNode[] | undefined;\n blockEditorItem = DotCMSBlockEditorItemComponent;\n}\n","import { ChangeDetectionStrategy, Component, computed, Input } from '@angular/core';\n\nimport { Mark } from '@dotcms/uve/types';\n\n@Component({\n selector: 'dotcms-block-editor-renderer-paragraph',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <p>\n <ng-content />\n </p>\n `\n})\nexport class DotParagraphBlock {}\n\n@Component({\n selector: 'dotcms-block-editor-renderer-heading',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @switch (level) {\n @case ('1') {\n <h1>\n <ng-content />\n </h1>\n }\n @case ('2') {\n <h2>\n <ng-content />\n </h2>\n }\n @case ('3') {\n <h3>\n <ng-content />\n </h3>\n }\n @case ('4') {\n <h4>\n <ng-content />\n </h4>\n }\n @case ('5') {\n <h5>\n <ng-content />\n </h5>\n }\n @case ('6') {\n <h6>\n <ng-content />\n </h6>\n }\n @default {\n <h1>\n <ng-content />\n </h1>\n }\n }\n `\n})\nexport class DotHeadingBlock {\n @Input() level!: string;\n}\n\ninterface TextBlockProps {\n marks?: Mark[];\n text?: string;\n}\n\n@Component({\n selector: 'dotcms-block-editor-renderer-text',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @switch (marks?.[0]?.type) {\n @case ('link') {\n <a\n [attr.href]=\"$currentAttrs()['href'] || ''\"\n [attr.target]=\"$currentAttrs()['target'] || ''\">\n <dotcms-block-editor-renderer-text [marks]=\"$remainingMarks()\" [text]=\"text\" />\n </a>\n }\n @case ('bold') {\n <strong>\n <dotcms-block-editor-renderer-text [marks]=\"$remainingMarks()\" [text]=\"text\" />\n </strong>\n }\n @case ('underline') {\n <u>\n <dotcms-block-editor-renderer-text [marks]=\"$remainingMarks()\" [text]=\"text\" />\n </u>\n }\n @case ('italic') {\n <em>\n <dotcms-block-editor-renderer-text [marks]=\"$remainingMarks()\" [text]=\"text\" />\n </em>\n }\n @case ('strike') {\n <s>\n <dotcms-block-editor-renderer-text [marks]=\"$remainingMarks()\" [text]=\"text\" />\n </s>\n }\n @case ('superscript') {\n <sup>\n <dotcms-block-editor-renderer-text [marks]=\"$remainingMarks()\" [text]=\"text\" />\n </sup>\n }\n @case ('subscript') {\n <sub>\n <dotcms-block-editor-renderer-text [marks]=\"$remainingMarks()\" [text]=\"text\" />\n </sub>\n }\n @default {\n {{ text }}\n }\n }\n `\n})\nexport class DotTextBlock {\n @Input() marks: TextBlockProps['marks'] = [];\n @Input() text = '';\n\n protected readonly $remainingMarks = computed(() => this.marks?.slice(1));\n\n protected readonly $currentAttrs = computed(() => {\n const attrs = { ...(this.marks?.[0]?.attrs || {}) };\n\n if (attrs['class']) {\n attrs['className'] = attrs['class'];\n delete attrs['class'];\n }\n\n return attrs;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, Input } from '@angular/core';\n\nimport { ContentNode } from '@dotcms/uve/types';\n\n@Component({\n selector: 'dotcms-block-editor-renderer-video',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <video\n [controls]=\"true\"\n preload=\"metadata\"\n [poster]=\"this.$posterURL()\"\n [width]=\"attrs?.['width']\"\n [height]=\"attrs?.['height']\">\n <track default kind=\"captions\" srclang=\"en\" />\n <source [src]=\"this.$srcURL()\" [type]=\"attrs?.['mimeType']\" />\n Your browser does not support the\n <code>video</code>\n element.\n </video>\n `\n})\nexport class DotVideoBlock {\n @Input() attrs!: ContentNode['attrs'];\n\n protected readonly $srcURL = computed(() => this.attrs?.['src']);\n\n protected readonly $posterURL = computed(() => this.attrs?.['data']?.['thumbnail']);\n}\n","import { AsyncPipe, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport { Component, Input } from '@angular/core';\n\nimport { Blocks } from '@dotcms/uve/internal';\nimport { ContentNode } from '@dotcms/uve/types';\n\nimport { DotCodeBlock, DotBlockQuote } from '../blocks/code.component';\nimport { DotContentletBlock } from '../blocks/contentlet.component';\nimport { DotImageBlock } from '../blocks/image.component';\nimport { DotBulletList, DotOrdererList, DotListItem } from '../blocks/list.component';\nimport { DotTableBlock } from '../blocks/table.component';\nimport { DotParagraphBlock, DotTextBlock, DotHeadingBlock } from '../blocks/text.component';\nimport { DotVideoBlock } from '../blocks/video.components';\nimport { CustomRenderer } from '../dotcms-block-editor-renderer.component';\n\n@Component({\n selector: 'dotcms-block-editor-renderer-block',\n standalone: true,\n templateUrl: './dotcms-block-editor-item.component.html',\n styleUrls: ['./dotcms-block-editor-item.component.scss'],\n imports: [\n NgTemplateOutlet,\n NgComponentOutlet,\n AsyncPipe,\n DotParagraphBlock,\n DotTextBlock,\n DotHeadingBlock,\n DotBulletList,\n DotOrdererList,\n DotListItem,\n DotCodeBlock,\n DotBlockQuote,\n DotImageBlock,\n DotVideoBlock,\n DotTableBlock,\n DotContentletBlock\n ]\n})\nexport class DotCMSBlockEditorItemComponent {\n @Input() content: ContentNode[] | undefined;\n @Input() customRenderers: CustomRenderer | undefined;\n\n BLOCKS = Blocks;\n}\n","@for (node of content; track node) {\n @if (customRenderers?.[node.type]) {\n <ng-container\n *ngTemplateOutlet=\"\n customRender;\n context: { customRender: customRenderers?.[node.type], node: node }\n \"></ng-container>\n } @else {\n @switch (node.type) {\n @case (BLOCKS.PARAGRAPH) {\n <dotcms-block-editor-renderer-paragraph [style]=\"node.attrs\">\n <dotcms-block-editor-renderer-block\n [content]=\"node.content\"\n [customRenderers]=\"customRenderers\" />\n </dotcms-block-editor-renderer-paragraph>\n }\n\n @case (BLOCKS.TEXT) {\n <dotcms-block-editor-renderer-text [marks]=\"node.marks\" [text]=\"node.text || ''\" />\n }\n\n @case (BLOCKS.HEADING) {\n <dotcms-block-editor-renderer-heading\n [style]=\"node.attrs || {}\"\n [level]=\"node.attrs?.['level'] || '1'\">\n <dotcms-block-editor-renderer-block\n [content]=\"node.content\"\n [customRenderers]=\"customRenderers\" />\n </dotcms-block-editor-renderer-heading>\n }\n\n @case (BLOCKS.BULLET_LIST) {\n <dotcms-block-editor-renderer-bullet-list>\n <dotcms-block-editor-renderer-block\n [content]=\"node.content\"\n [customRenderers]=\"customRenderers\" />\n </dotcms-block-editor-renderer-bullet-list>\n }\n\n @case (BLOCKS.ORDERED_LIST) {\n <dotcms-block-editor-renderer-ordered-list>\n <dotcms-block-editor-renderer-block\n [content]=\"node.content\"\n [customRenderers]=\"customRenderers\" />\n </dotcms-block-editor-renderer-ordered-list>\n }\n\n @case (BLOCKS.LIST_ITEM) {\n <dotcms-block-editor-renderer-list-item>\n <dotcms-block-editor-renderer-block\n [content]=\"node.content\"\n [customRenderers]=\"customRenderers\" />\n </dotcms-block-editor-renderer-list-item>\n }\n\n @case (BLOCKS.BLOCK_QUOTE) {\n <dotcms-block-editor-renderer-block-quote>\n <dotcms-block-editor-renderer-block\n [content]=\"node.content\"\n [customRenderers]=\"customRenderers\" />\n </dotcms-block-editor-renderer-block-quote>\n }\n\n @case (BLOCKS.CODE_BLOCK) {\n <dotcms-block-editor-renderer-code-block>\n <dotcms-block-editor-renderer-block\n [content]=\"node.content\"\n [customRenderers]=\"customRenderers\" />\n </dotcms-block-editor-renderer-code-block>\n }\n\n @case (BLOCKS.HARDBREAK) {\n <br />\n }\n\n @case (BLOCKS.HORIZONTAL_RULE) {\n <hr />\n }\n\n @case (BLOCKS.DOT_IMAGE) {\n <dotcms-block-editor-renderer-image [attrs]=\"node.attrs || {}\" />\n }\n\n @case (BLOCKS.DOT_VIDEO) {\n <dotcms-block-editor-renderer-video [attrs]=\"node.attrs || {}\" />\n }\n\n @case (BLOCKS.TABLE) {\n <dotcms-block-editor-renderer-table [content]=\"node.content\" />\n }\n\n @case (BLOCKS.DOT_CONTENT) {\n <dotcms-block-editor-renderer-contentlet\n [attrs]=\"node.attrs || {}\"\n [customRenderers]=\"customRenderers\" />\n }\n\n @default {\n <div>Unknown Block Type: {{ node.type }}</div>\n }\n }\n }\n}\n\n<ng-template #customRender let-customRender=\"customRender\" let-node=\"node\">\n <ng-container\n *ngComponentOutlet=\"customRender | async; inputs: { content: node }\"></ng-container>\n</ng-template>\n","import { Component, Input, signal } from '@angular/core';\n\nimport { getUVEState } from '@dotcms/uve';\nimport { BlockEditorState, isValidBlocks } from '@dotcms/uve/internal';\nimport { UVE_MODE, Block } from '@dotcms/uve/types';\n\nimport { DotCMSBlockEditorItemComponent } from './item/dotcms-block-editor-item.component';\n\nimport { DynamicComponentEntity } from '../../models';\n\n/**\n * Represents a Custom Renderer used by the Block Editor Component\n *\n * @export\n * @interface CustomRenderer\n */\nexport type CustomRenderer = Record<string, DynamicComponentEntity>;\n\n/**\n * A component that renders content from DotCMS's Block Editor field.\n *\n * This component provides an easy way to render Block Editor content in your Angular applications.\n * It handles the rendering of standard blocks and allows customization through custom renderers.\n *\n * For more information about Block Editor, see {@link https://dev.dotcms.com/docs/block-editor}\n *\n * @example\n * ```html\n * <dotcms-block-editor-renderer\n * [blocks]=\"myBlockEditorContent\"\n * [customRenderers]=\"myCustomRenderers\">\n * </dotcms-block-editor-renderer>\n * ```\n */\n@Component({\n selector: 'dotcms-block-editor-renderer',\n standalone: true,\n templateUrl: './dotcms-block-editor-renderer.component.html',\n styleUrls: ['./dotcms-block-editor-renderer.component.scss'],\n imports: [DotCMSBlockEditorItemComponent]\n})\nexport class DotCMSBlockEditorRendererComponent {\n @Input() blocks!: Block;\n @Input() customRenderers: CustomRenderer | undefined;\n\n $blockEditorState = signal<BlockEditorState>({ error: null });\n $isInEditMode = signal(getUVEState()?.mode === UVE_MODE.EDIT);\n\n ngOnInit() {\n const state = isValidBlocks(this.blocks);\n\n if (state.error) {\n console.error('Error in dotcms-block-editor-renderer: ', state.error);\n }\n\n this.$blockEditorState.set(isValidBlocks(this.blocks));\n }\n}\n","@if ($blockEditorState().error && $isInEditMode()) {\n <div data-testid=\"invalid-blocks-message\">\n {{ $blockEditorState().error }}\n </div>\n} @else if (!$blockEditorState().error) {\n <dotcms-block-editor-renderer-block\n [content]=\"blocks.content\"\n [customRenderers]=\"customRenderers\" />\n}\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\n/**\n * @description This component is used to display a message when a page is missing the required `layout.body` property.\n * @internal\n * @class PageErrorMessageComponent\n */\n@Component({\n selector: 'dotcms-page-error-message',\n standalone: true,\n imports: [],\n template: `\n <div\n data-testid=\"error-message\"\n style=\"padding: 1rem; border: 1px solid #e0e0e0; border-radius: 4px;\">\n <p style=\"margin: 0 0 0.5rem; color: #666;\">\n The\n <code>page</code>\n is missing the required\n <code>layout.body</code>\n property.\n </p>\n <p style=\"margin: 0; color: #666;\">\n Make sure the page asset is properly loaded and includes a layout configuration.\n </p>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PageErrorMessageComponent implements OnInit {\n ngOnInit() {\n console.warn('Missing required layout.body property in page');\n }\n}\n","import { computed, Injectable, signal } from '@angular/core';\n\nimport { getUVEState } from '@dotcms/uve';\nimport { DEVELOPMENT_MODE, PRODUCTION_MODE } from '@dotcms/uve/internal';\nimport { DotCMSPageAsset, UVE_MODE } from '@dotcms/uve/types';\n\nimport { DotCMSPageStore } from '../models';\n\nexport const EMPTY_DOTCMS_PAGE_STORE: DotCMSPageStore = {\n page: {} as DotCMSPageAsset,\n components: {},\n mode: PRODUCTION_MODE\n};\n\n/**\n * @description This service is responsible for managing the page context.\n * @internal\n * @author dotCMS\n * @export\n * @class DotCMSStore\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DotCMSStore {\n private $store = signal<DotCMSPageStore>(EMPTY_DOTCMS_PAGE_STORE);\n\n /**\n * @description Get the store\n * @readonly\n * @type {DotCMSPageStore}\n * @memberof DotCMSStore\n */\n get store(): DotCMSPageStore {\n return this.$store();\n }\n\n /**\n * @description Set the store\n * @param {DotCMSPageStore} value\n * @memberof DotCMSStore\n */\n setStore(store: DotCMSPageStore): void {\n this.$store.set(store);\n }\n\n /**\n * @description Get if the current context is in development mode\n * @readonly\n * @type {boolean}\n * @memberof DotCMSStore\n */\n $isDevMode = computed(() => {\n const uveState = getUVEState();\n\n if (uveState?.mode) {\n return uveState?.mode === UVE_MODE.EDIT;\n }\n\n return this.$store()?.mode === DEVELOPMENT_MODE;\n });\n}\n","import { NgStyle } from '@angular/common';\nimport { Component, inject, Input, OnInit } from '@angular/core';\n\nimport { EMPTY_CONTAINER_STYLE_ANGULAR } from '@dotcms/uve/internal';\n\nimport { DotCMSStore } from '../../../../../../store/dotcms.store';\n\n/**\n * @description This component is used to display a message when a container is not found.\n * @export\n * @internal\n * @class ContainerNotFoundComponent\n * @implements {OnInit}\n */\n@Component({\n selector: 'dotcms-container-not-found',\n standalone: true,\n imports: [NgStyle],\n template: `\n @if ($isDevMode()) {\n <div [attr.data-testid]=\"'container-not-found'\" [ngStyle]=\"emptyContainerStyle\">\n This container with identifier {{ identifier }} was not found.\n </div>\n }\n `\n})\nexport class ContainerNotFoundComponent implements OnInit {\n @Input() identifier = 'unknown';\n\n #dotcmsContextService = inject(DotCMSStore);\n\n $isDevMode = this.#dotcmsContextService.$isDevMode;\n emptyContainerStyle = EMPTY_CONTAINER_STYLE_ANGULAR;\n\n ngOnInit() {\n if (this.$isDevMode()) {\n console.error(`Container with identifier ${this.identifier} not found`);\n }\n }\n}\n","import { NgStyle } from '@angular/common';\nimport { Component, inject } from '@angular/core';\n\nimport { EMPTY_CONTAINER_STYLE_ANGULAR } from '@dotcms/uve/internal';\n\nimport { DotCMSStore } from '../../../../../../store/dotcms.store';\n\n/**\n * @description This component is used to display a message when a container is empty.\n * @export\n * @internal\n * @class EmptyContainerComponent\n */\n@Component({\n selector: 'dotcms-empty-container',\n standalone: true,\n imports: [NgStyle],\n template: `\n @if ($isDevMode()) {\n <div [ngStyle]=\"emptyContainerStyle\" data-testid=\"empty-container\">\n <span data-testid=\"empty-container-message\">This container is empty.</span>\n </div>\n }\n `\n})\nexport class EmptyContainerComponent {\n emptyContainerStyle = EMPTY_CONTAINER_STYLE_ANGULAR;\n\n #dotCMSStore = inject(DotCMSStore);\n\n $isDevMode = this.#dotCMSStore.$isDevMode;\n}\n","import { AsyncPipe, NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { DotCMSContentlet } from '@dotcms/uve/types';\n\nimport { DynamicComponentEntity } from '../../../../models';\n\n/**\n * @description Fallback component that renders when no custom component is found for a contentlet\n * @category Components\n * @internal\n * @class FallbackComponent\n */\n@Component({\n selector: 'dotcms-fallback-component',\n standalone: true,\n imports: [AsyncPipe, NgComponentOutlet],\n template: `\n @if (UserNoComponent) {\n <ng-container *ngComponentOutlet=\"UserNoComponent | async; inputs: { contentlet }\" />\n } @else {\n <div data-testid=\"dotcms-fallback-component\">\n <p>No component found for content type: {{ contentlet.contentType }}</p>\n </div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FallbackComponent {\n @Input() UserNoComponent: DynamicComponentEntity | null = null;\n @Input() contentlet!: DotCMSContentlet;\n}\n","import { AsyncPipe, NgComponentOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n Input,\n OnChanges,\n HostBinding,\n signal,\n ViewChild\n} from '@angular/core';\n\nimport { CUSTOM_NO_COMPONENT, getDotContentletAttributes } from '@dotcms/uve/internal';\nimport { DotCMSContentlet, DotContentletAttributes } from '@dotcms/uve/types';\n\nimport { DynamicComponentEntity } from '../../../../models';\nimport { DotCMSStore } from '../../../../store/dotcms.store';\nimport { FallbackComponent } from '../fallback-component/fallback-component.component';\n\n/**\n * @description Contentlet component that renders DotCMS content with development mode support\n *\n * @component\n * @param {DotCMSContentlet} contentlet - The contentlet to be rendered\n * @param {string} container - The container identifier\n * @class ContentletComponent\n */\n@Component({\n selector: 'dotcms-contentlet',\n standalone: true,\n imports: [FallbackComponent, AsyncPipe, NgComponentOutlet],\n template: `\n @if ($UserComponent()) {\n <ng-container\n *ngComponentOutlet=\"\n $UserComponent() | async;\n inputs: { contentlet: $contentlet() ?? contentlet }\n \" />\n } @else if ($isDevMode()) {\n <dotcms-fallback-component\n [UserNoComponent]=\"$UserNoComponent()\"\n [contentlet]=\"$contentlet() ?? contentlet\" />\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ContentletComponent implements OnChanges {\n @Input({ required: true }) contentlet!: DotCMSContentlet;\n @Input({ required: true }) container!: string;\n @ViewChild('contentletRef') contentletRef!: ElementRef;\n @HostBinding('attr.data-dot-object') dotObject = 'contentlet';\n\n #dotCMSStore = inject(DotCMSStore);\n\n $contentlet = signal<DotCMSContentlet | null>(null);\n $UserComponent = signal<DynamicComponentEntity | null>(null);\n $UserNoComponent = signal<DynamicComponentEntity | null>(null);\n $isDevMode = this.#dotCMSStore.$isDevMode;\n $haveContent = signal(false);\n $style = computed(() =>\n this.$isDevMode() && !this.$haveContent() ? { minHeight: '4rem' } : {}\n );\n $dotAttributes = computed<DotContentletAttributes>(() => {\n const contentlet = this.$contentlet();\n if (!contentlet || !this.$isDevMode()) return {} as DotContentletAttributes;\n\n return getDotContentletAttributes(contentlet, this.container);\n });\n\n @HostBinding('attr.data-dot-identifier') identifier: string | null = null;\n @HostBinding('attr.data-dot-basetype') basetype: string | null = null;\n @HostBinding('attr.data-dot-title') title: string | null = null;\n @HostBinding('attr.data-dot-inode') inode: string | null = null;\n @HostBinding('attr.data-dot-type') type: string | null = null;\n @HostBinding('attr.data-dot-container') containerAttribute: string | null = null;\n @HostBinding('attr.data-dot-on-number-of-pages') onNumberOfPages: string | null = null;\n @HostBinding('style') styleAttribute: { [key: string]: unknown } | null = null;\n\n ngOnChanges() {\n this.$contentlet.set(this.contentlet);\n this.setupComponents();\n\n this.identifier = this.$dotAttributes()['data-dot-identifier'];\n this.basetype = this.$dotAttributes()['data-dot-basetype'];\n this.title = this.$dotAttributes()['data-dot-title'];\n this.inode = this.$dotAttributes()['data-dot-inode'];\n this.type = this.$dotAttributes()['data-dot-type'];\n this.containerAttribute = this.$dotAttributes()['data-dot-container'];\n this.onNumberOfPages = this.$dotAttributes()['data-dot-on-number-of-pages'];\n this.styleAttribute = this.$style();\n }\n\n ngAfterViewInit() {\n this.checkContent();\n }\n\n private setupComponents() {\n const store = this.#dotCMSStore.store;\n if (!store) return;\n\n if (!store?.components) return;\n\n this.$UserComponent.set(store.components[this.contentlet?.contentType]);\n this.$UserNoComponent.set(store.components[CUSTOM_NO_COMPONENT]);\n }\n\n private checkContent() {\n const element = this.contentletRef?.nativeElement;\n if (element) {\n const hasContent = element.getBoundingClientRect().height > 0;\n this.$haveContent.set(hasContent);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostBinding,\n inject,\n Input,\n OnChanges,\n signal\n} from '@angular/core';\n\nimport {\n getContainersData,\n getContentletsInContainer,\n getDotContainerAttributes\n} from '@dotcms/uve/internal';\nimport {\n DotCMSColumnContainer,\n DotCMSContentlet,\n DotContainerAttributes,\n EditableContainerData\n} from '@dotcms/uve/types';\n\nimport { ContainerNotFoundComponent } from './components/container-not-found/container-not-found.component';\nimport { EmptyContainerComponent } from './components/empty-container/empty-container.component';\n\nimport { DotCMSStore } from '../../../../store/dotcms.store';\nimport { ContentletComponent } from '../../components/contentlet/contentlet.component';\n\n/**\n * @description This component renders a container with all its content using the layout provided by dotCMS Page API.\n *\n * @see {@link https://www.dotcms.com/docs/latest/page-rest-api-layout-as-a-service-laas}\n * @category Components\n * @internal\n * @class ContainerComponent\n */\n@Component({\n selector: 'dotcms-container',\n standalone: true,\n imports: [ContainerNotFoundComponent, EmptyContainerComponent, ContentletComponent],\n template: `\n @if (!$containerData()) {\n <dotcms-container-not-found [identifier]=\"container.identifier\" />\n } @else if ($isEmpty()) {\n <dotcms-empty-container />\n } @else {\n @for (contentlet of $contentlets(); track contentlet.identifier) {\n <dotcms-contentlet [contentlet]=\"contentlet\" [container]=\"container.identifier\" />\n }\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ContainerComponent implements OnChanges {\n /**\n * The container data to be rendered\n */\n @Input({ required: true }) container!: DotCMSColumnContainer;\n\n #dotCMSStore = inject(DotCMSStore);\n\n $containerData = signal<EditableContainerData | null>(null);\n $contentlets = signal<DotCMSContentlet[]>([]);\n $isEmpty = computed(() => this.$contentlets().length === 0);\n $dotAttributes = computed<DotContainerAttributes>(() => {\n const containerData = this.$containerData();\n\n if (!containerData || !this.#dotCMSStore.$isDevMode()) {\n return {} as DotContainerAttributes;\n }\n\n return getDotContainerAttributes(containerData);\n });\n\n @HostBinding('attr.data-dot-object') dotObject = 'container';\n @HostBinding('attr.data-dot-accept-types') acceptTypes: string | null = null;\n @HostBinding('attr.data-dot-identifier') identifier: string | null = null;\n @HostBinding('attr.data-max-contentlets') maxContentlets: string | null = null;\n @HostBinding('attr.data-dot-uuid') uuid: string | null = null;\n\n ngOnChanges() {\n const { page } = this.#dotCMSStore.store ?? {};\n\n if (!page) {\n return;\n }\n\n this.$containerData.set(getContainersData(page, this.container));\n this.$contentlets.set(getContentletsInContainer(page, this.container));\n\n this.acceptTypes = this.$dotAttributes()['data-dot-accept-types'];\n this.identifier = this.$dotAttributes()['data-dot-identifier'];\n this.maxContentlets = this.$dotAttributes()['data-max-contentlets'];\n this.uuid = this.$dotAttributes()['data-dot-uuid'];\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnChanges } from '@angular/core';\n\nimport { combineClasses, getColumnPositionClasses } from '@dotcms/uve/internal';\nimport { DotPageAssetLayoutColumn } from '@dotcms/uve/types';\n\nimport { ContainerComponent } from '../container/container.component';\n/**\n * This component renders a column with all its content using the layout provided by dotCMS Page API.\n *\n * @see {@link https://www.dotcms.com/docs/latest/page-rest-api-layout-as-a-service-laas}\n * @category Components\n * @internal\n */\n@Component({\n selector: 'dotcms-column',\n standalone: true,\n imports: [ContainerComponent],\n template: `\n <div [class]=\"column.styleClass\" data-testid=\"dotcms-column\">\n @for (container of column.containers; track $index) {\n <dotcms-container [container]=\"container\" />\n }\n </div>\n `,\n styleUrl: './column.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ColumnComponent implements OnChanges {\n /**\n * The column data to be rendered\n */\n @Input({ required: true }) column!: DotPageAssetLayoutColumn;\n\n @HostBinding('class') customClasses = '';\n\n ngOnChanges() {\n const positionClasses = getColumnPositionClasses(this.column);\n\n this.customClasses = combineClasses([positionClasses.startClass, positionClasses.endClass]);\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, signal } from '@angular/core';\n\nimport { combineClasses } from '@dotcms/uve/internal';\nimport { DotPageAssetLayoutRow } from '@dotcms/uve/types';\n\nimport { ColumnComponent } from '../column/column.component';\n\n/**\n * @description This component renders a row with all its content using the layout provided by dotCMS Page API.\n *\n * @see {@link https://www.dotcms.com/docs/latest/page-rest-api-layout-as-a-service-laas}\n * @category Components\n * @internal\n * @class RowComponent\n */\n@Component({\n selector: 'dotcms-row',\n standalone: true,\n imports: [ColumnComponent],\n template: `\n <div class=\"dot-row-container\">\n <div [class]=\"customClasses()\" data-dot-object=\"row\" data-testid=\"dotcms-row\">\n @for (column of row.columns; track $index) {\n <dotcms-column [column]=\"column\" />\n }\n </div>\n </div>\n `,\n styleUrl: './row.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class RowComponent implements OnChanges {\n /**\n * The row data to be rendered\n */\n @Input({ required: true }) row!: DotPageAssetLayoutRow;\n\n customClasses = signal('');\n\n ngOnChanges() {\n this.customClasses.set(combineClasses([this.row.styleClass || 'dot-row']));\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n Input,\n OnChanges,\n signal\n} from '@angular/core';\n\nimport { DotCMSPageAsset, DotCMSPageRendererMode, DotPageAssetLayoutRow } from '@dotcms/uve/types';\n\nimport { PageErrorMessageComponent } from './components/page-error-message/page-error-message.component';\nimport { RowComponent } from './components/row/row.component';\n\nimport { DotCMSPageComponent } from '../../models';\nimport { DotCMSStore } from '../../store/dotcms.store';\n/**\n * @description This component is used to render the layout for a DotCMS page.\n * @param {DotCMSPageAsset} page - The page to render the layout for\n * @param {DotCMSPageComponent} components - The components to render the layout for\n * @param {DotCMSPageRendererMode} mode - The mode to render the layout for\n *\n * @example\n * <dotcms-layout-body [page]=\"page\" [components]=\"components\" [mode]=\"'development'\" />\n *\n * @export\n * @implements {OnChanges}\n * @class DotCMSLayoutBodyComponent\n */\n@Component({\n selector: 'dotcms-layout-body',\n standalone: true,\n imports: [PageErrorMessageComponent, RowComponent],\n providers: [DotCMSStore],\n template: `\n @if ($isEmpty() && $isDevMode()) {\n <dotcms-page-error-message />\n } @else {\n @for (row of $rows(); track row.identifier) {\n <dotcms-row [row]=\"row\" />\n }\n }\n `,\n styleUrl: './dotcms-layout-body.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DotCMSLayoutBodyComponent implements OnChanges {\n @Input({ required: true }) page!: DotCMSPageAsset;\n @Input({ required: true }) components: DotCMSPageComponent = {};\n @Input() mode: DotCMSPageRendererMode = 'production';\n\n #dotCMSStore = inject(DotCMSStore);\n\n $isDevMode = this.#dotCMSStore.$isDevMode;\n\n $rows = signal<DotPageAssetLayoutRow[]>([]);\n\n $isEmpty = signal(false);\n\n ngOnChanges() {\n this.#dotCMSStore.setStore({\n page: this.page,\n components: this.components,\n mode: this.mode\n });\n\n this.$isEmpty.set(!this.page?.layout?.body);\n\n this.$rows.set(this.page?.layout?.body?.rows ?? []);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -3,9 +3,11 @@ import * as i0 from '@angular/core';
3
3
  import { inject, Renderer2, ElementRef, SecurityContext, Component, ViewChild, Input, HostListener, Injectable, ChangeDetectionStrategy, HostBinding, signal, computed, DestroyRef } from '@angular/core';
4
4
  import { DomSanitizer } from '@angular/platform-browser';
5
5
  import { NOTIFY_CLIENT, isInsideEditor, DotCmsClient, postMessageToEditor, CLIENT_ACTIONS, initEditor, updateNavigation } from '@dotcms/client';
6
- import { AsyncPipe, NgComponentOutlet } from '@angular/common';
6
+ import { AsyncPipe, NgComponentOutlet, IMAGE_LOADER } from '@angular/common';
7
7
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
8
8
  import { ActivatedRoute } from '@angular/router';
9
+ import { createUVESubscription } from '@dotcms/uve';
10
+ import { UVEEventType } from '@dotcms/uve/types';
9
11
  import { BehaviorSubject } from 'rxjs';
10
12
  import { map } from 'rxjs/operators';
11
13
 
@@ -53,6 +55,10 @@ const TINYMCE_CONFIG = {
53
55
  };
54
56
 
55
57
  /**
58
+ * @deprecated This component is deprecated and will be removed in future versions.
59
+ * Please use the new Rich Text Editor component from the main SDK.
60
+ * For more information, refer to the migration guide in the documentation.
61
+ *
56
62
  * Dot editable text component.
57
63
  * This component is responsible to render a text field that can be edited inline.
58
64
  *
@@ -272,6 +278,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
272
278
  }] } });
273
279
 
274
280
  /**
281
+ * @deprecated This service is deprecated and will be removed in future versions.
282
+ * Please use the new Page Context service from the main SDK.
283
+ * For more information, refer to the migration guide in the documentation.
284
+ *
275
285
  * @author dotCMS
276
286
  * @description This service is responsible for managing the page context.
277
287
  * @export
@@ -760,6 +770,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
760
770
  }] } });
761
771
 
762
772
  /**
773
+ * @deprecated This component is deprecated and will be removed in future versions.
774
+ * Please use the new Page Layout component from the main SDK.
775
+ * For more information, refer to the migration guide in the documentation.
776
+ *
763
777
  * `DotcmsLayoutComponent` is a class that represents the layout for a DotCMS page.
764
778
  * It includes a `pageAsset` property that represents the DotCMS page asset and a `components` property that represents the dynamic components for the page.
765
779
  *
@@ -806,7 +820,7 @@ class DotcmsLayoutComponent {
806
820
  initEditor({ pathname });
807
821
  updateNavigation(pathname || '/');
808
822
  });
809
- this.client.editor.on('changes', (data) => {
823
+ this.uveSubscription = createUVESubscription(UVEEventType.CONTENT_CHANGES, (data) => {
810
824
  if (this.onReload) {
811
825
  this.onReload();
812
826
  return;
@@ -819,7 +833,7 @@ class DotcmsLayoutComponent {
819
833
  if (!isInsideEditor()) {
820
834
  return;
821
835
  }
822
- this.client.editor.off('changes');
836
+ this.uveSubscription?.unsubscribe();
823
837
  }
824
838
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: DotcmsLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
825
839
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: DotcmsLayoutComponent, isStandalone: true, selector: "dotcms-layout", inputs: { pageAsset: "pageAsset", components: "components", onReload: "onReload", editor: "editor" }, ngImport: i0, template: `
@@ -855,9 +869,88 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
855
869
 
856
870
  /* eslint-disable @typescript-eslint/no-explicit-any */
857
871
 
872
+ /**
873
+ * Validates if a given path is a valid URL string
874
+ *
875
+ * @param path - The path to validate
876
+ * @returns boolean indicating if the path is valid
877
+ */
878
+ function isValidPath(path) {
879
+ if (typeof path !== 'string' || path.trim() === '') {
880
+ return false;
881
+ }
882
+ try {
883
+ new URL(path);
884
+ return true;
885
+ }
886
+ catch {
887
+ return false;
888
+ }
889
+ }
890
+ /**
891
+ * Provides a DotCMS image loader configuration for the Angular Image directive
892
+ *
893
+ * @param path - The base URL path to the DotCMS instance, or empty to use current site
894
+ * @returns An array of providers for the IMAGE_LOADER token
895
+ * @throws Error if the provided path is invalid
896
+ * @example
897
+ * ```typescript
898
+ * // In your app.config.ts
899
+ * export const appConfig: ApplicationConfig = {
900
+ * providers: [
901
+ * provideDotCMSImageLoader('https://demo.dotcms.com')
902
+ * // Or use current site:
903
+ * // provideDotCMSImageLoader()
904
+ * ]
905
+ * };
906
+ * ```
907
+ */
908
+ function provideDotCMSImageLoader(path) {
909
+ // If path is provided, validate it
910
+ if (path && !isValidPath(path)) {
911
+ throw new Error(`Image loader has detected an invalid path (\`${path}\`). ` +
912
+ `To fix this, supply either the full URL to the dotCMS site, or leave it empty to use the current site.`);
913
+ }
914
+ return [
915
+ {
916
+ provide: IMAGE_LOADER,
917
+ useValue: (config) => createDotCMSUrl(config, path)
918
+ }
919
+ ];
920
+ }
921
+ /**
922
+ * Creates a DotCMS-compatible URL for image loading
923
+ *
924
+ * @param config - The image loader configuration
925
+ * @param path - The base URL path to the DotCMS instance
926
+ * @returns A fully qualified URL for the image
927
+ * @internal
928
+ */
929
+ function createDotCMSUrl(config, path) {
930
+ const { loaderParams, src, width } = config;
931
+ const params = loaderParams;
932
+ if (params?.isOutsideSRC) {
933
+ return src;
934
+ }
935
+ // Use empty string as fallback to support using current site
936
+ const dotcmsHost = path ? new URL(path).origin : '';
937
+ const imageSRC = src.includes('/dA/') ? src : `/dA/${src}`;
938
+ const languageId = params?.languageId ?? '1';
939
+ if (width) {
940
+ return `${dotcmsHost}${imageSRC}/${width}w?language_id=${languageId}`;
941
+ }
942
+ return `${dotcmsHost}${imageSRC}?language_id=${languageId}`;
943
+ }
944
+
945
+ /**
946
+ * @deprecated This API is deprecated and will be removed in future versions.
947
+ * Please migrate to the new components and services in the main SDK.
948
+ * For more information, refer to the migration guide in the documentation.
949
+ */
950
+
858
951
  /**
859
952
  * Generated bundle index. Do not edit.
860
953
  */
861
954
 
862
- export { DotEditableTextComponent, DotcmsLayoutComponent, PageContextService };
955
+ export { DotEditableTextComponent, DotcmsLayoutComponent, PageContextService, provideDotCMSImageLoader };
863
956
  //# sourceMappingURL=dotcms-angular.mjs.map