@dotcms/angular 0.0.1-alpha.45 → 0.0.1-alpha.47
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.
- package/README.md +76 -30
- package/esm2022/lib/components/dot-editable-text/dot-editable-text.component.mjs +5 -5
- package/esm2022/lib/layout/dotcms-layout/dotcms-layout.component.mjs +3 -3
- package/esm2022/lib/utils/index.mjs +8 -3
- package/fesm2022/dotcms-angular.mjs +12 -7
- package/fesm2022/dotcms-angular.mjs.map +1 -1
- package/lib/components/dot-editable-text/dot-editable-text.component.d.ts.map +1 -1
- package/lib/utils/index.d.ts.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @dotcms/angular
|
|
2
2
|
|
|
3
|
-
`@dotcms/angular` is the official Angular library designed to work seamlessly with dotCMS. This library simplifies the process of rendering dotCMS pages and integrating with the [Universal Visual Editor](dotcms.com/docs/latest/universal-visual-editor) in your Angular applications.
|
|
3
|
+
`@dotcms/angular` is the official Angular library designed to work seamlessly with dotCMS. This library simplifies the process of rendering dotCMS pages and integrating with the [Universal Visual Editor](https://www.dotcms.com/docs/latest/universal-visual-editor) in your Angular applications.
|
|
4
4
|
|
|
5
5
|
## Table of Contents
|
|
6
6
|
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
## Features
|
|
20
20
|
|
|
21
|
-
- A set of Angular components
|
|
21
|
+
- A set of Angular components developed for dotCMS page rendering and editor integration.
|
|
22
22
|
- Enhanced development workflow with full TypeScript support.
|
|
23
23
|
- Optimized performance for efficient rendering of dotCMS pages in Angular applications.
|
|
24
24
|
- Flexible customization options to adapt to various project requirements.
|
|
@@ -37,7 +37,7 @@ Or using Yarn:
|
|
|
37
37
|
yarn add @dotcms/angular
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
##
|
|
40
|
+
## Configuration
|
|
41
41
|
### Provider Setup
|
|
42
42
|
We need to provide the information of our dotCMS instance
|
|
43
43
|
|
|
@@ -51,10 +51,11 @@ const DOTCMS_CLIENT_CONFIG: ClientConfig = {
|
|
|
51
51
|
siteId: environment.siteId
|
|
52
52
|
};
|
|
53
53
|
```
|
|
54
|
-
|
|
54
|
+
|
|
55
|
+
Add this configuration to `ApplicationConfig` in your Angular app.
|
|
55
56
|
|
|
56
57
|
`src/app/app.config.ts`
|
|
57
|
-
```
|
|
58
|
+
```typescript
|
|
58
59
|
import { InjectionToken } from '@angular/core';
|
|
59
60
|
import { ClientConfig, DotCmsClient } from '@dotcms/client';
|
|
60
61
|
|
|
@@ -70,36 +71,40 @@ export const appConfig: ApplicationConfig = {
|
|
|
70
71
|
],
|
|
71
72
|
};
|
|
72
73
|
```
|
|
74
|
+
|
|
73
75
|
This way, we will have access to `DOTCMS_CLIENT_TOKEN` from anywhere in our application.
|
|
74
76
|
|
|
75
77
|
### Client Usage
|
|
76
78
|
To interact with the client and obtain information from, for example, our pages
|
|
77
79
|
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
.
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
80
|
+
```typescript
|
|
81
|
+
export class YourComponent {
|
|
82
|
+
private readonly client = inject(DOTCMS_CLIENT_TOKEN);
|
|
83
|
+
|
|
84
|
+
this.client.page
|
|
85
|
+
.get({ ...pageParams })
|
|
86
|
+
.then((response) => {
|
|
87
|
+
// Use your response
|
|
88
|
+
})
|
|
89
|
+
.catch((e) => {
|
|
90
|
+
const error: PageError = {
|
|
91
|
+
message: e.message,
|
|
92
|
+
status: e.status,
|
|
93
|
+
};
|
|
94
|
+
// Use the error response
|
|
95
|
+
})
|
|
96
|
+
}
|
|
93
97
|
```
|
|
94
|
-
|
|
98
|
+
|
|
99
|
+
For more information on how to use the dotCMS Client, you can visit the [documentation](https://www.github.com/dotCMS/core/blob/main/core-web/libs/sdk/client/README.md)
|
|
95
100
|
|
|
96
101
|
## DotCMS Page API
|
|
97
102
|
|
|
98
103
|
The `DotcmsLayoutComponent` requires a `DotCMSPageAsset` object to be passed in to it. This object represents a dotCMS page and can be fetched using the `@dotcms/client` library.
|
|
99
104
|
|
|
100
|
-
- [DotCMS Official Angular Example](https://github.com/dotCMS/core/tree/main/examples/angular)
|
|
105
|
+
- [DotCMS Official Angular Example](https://www.github.com/dotCMS/core/tree/main/examples/angular)
|
|
101
106
|
- [`@dotcms/client` documentation](https://www.npmjs.com/package/@dotcms/client)
|
|
102
|
-
- [Page API documentation](https://dotcms.com/docs/latest/page-api)
|
|
107
|
+
- [Page API documentation](https://www.dotcms.com/docs/latest/page-api)
|
|
103
108
|
|
|
104
109
|
## Components
|
|
105
110
|
|
|
@@ -167,17 +172,58 @@ This setup allows for dynamic rendering of different content types on your dotCM
|
|
|
167
172
|
|
|
168
173
|
## Troubleshooting
|
|
169
174
|
|
|
170
|
-
If you encounter issues:
|
|
175
|
+
If you encounter issues while using `@dotcms/angular`, here are some common problems and their solutions:
|
|
176
|
+
|
|
177
|
+
1. **Dependency Issues**:
|
|
178
|
+
- Ensure that all dependencies, such as `@dotcms/client`, `@angular/core`, and `rxjs`, are correctly installed and up-to-date. You can verify installed versions by running:
|
|
179
|
+
```bash
|
|
180
|
+
npm list @dotcms/client @angular/core rxjs
|
|
181
|
+
```
|
|
182
|
+
- If there are any missing or incompatible versions, reinstall dependencies by running:
|
|
183
|
+
```bash
|
|
184
|
+
npm install
|
|
185
|
+
```
|
|
186
|
+
or
|
|
187
|
+
```bash
|
|
188
|
+
npm install --force
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
2. **Configuration Errors**:
|
|
192
|
+
- **DotCMS Configuration**: Double-check that your `DOTCMS_CLIENT_CONFIG` settings (URL, auth token, site ID) are correct and aligned with the environment variables. For example:
|
|
193
|
+
```typescript
|
|
194
|
+
const DOTCMS_CLIENT_CONFIG: ClientConfig = {
|
|
195
|
+
dotcmsUrl: environment.dotcmsUrl, // Ensure this is a valid URL
|
|
196
|
+
authToken: environment.authToken, // Ensure auth token has the correct permissions
|
|
197
|
+
siteId: environment.siteId // Ensure site ID is valid and accessible
|
|
198
|
+
};
|
|
199
|
+
```
|
|
200
|
+
- **Injection Issues**: Ensure that `DOTCMS_CLIENT_TOKEN` is provided globally. Errors like `NullInjectorError` usually mean the token hasn’t been properly added to the `ApplicationConfig`. Verify by checking `src/app/app.config.ts`.
|
|
201
|
+
|
|
202
|
+
3. **Network and API Errors**:
|
|
203
|
+
- **dotCMS API Connectivity**: If API calls are failing, check your browser’s Network tab to ensure requests to `dotcmsUrl` are successful. For CORS-related issues, ensure that your dotCMS server allows requests from your application’s domain.
|
|
204
|
+
- **Auth Token Permissions**: If you’re seeing `401 Unauthorized` errors, make sure the auth token used in `DOTCMS_CLIENT_CONFIG` has appropriate permissions in dotCMS for accessing pages and content.
|
|
205
|
+
|
|
206
|
+
4. **Page and Component Rendering**:
|
|
207
|
+
- **Dynamic Imports**: If you’re encountering issues with lazy-loaded components, make sure dynamic imports are correctly set up, as in:
|
|
208
|
+
```typescript
|
|
209
|
+
const DYNAMIC_COMPONENTS: DotCMSPageComponent = {
|
|
210
|
+
Activity: import('../pages/content-types/activity/activity.component').then(
|
|
211
|
+
(c) => c.ActivityComponent
|
|
212
|
+
)
|
|
213
|
+
};
|
|
214
|
+
```
|
|
215
|
+
- **Invalid Page Assets**: Ensure that `pageAsset` objects are correctly formatted. Missing fields in `pageAsset` can cause errors in `DotcmsLayoutComponent`. Validate the structure by logging `pageAsset` before passing it in.
|
|
216
|
+
|
|
217
|
+
5. **Common Angular Errors**:
|
|
218
|
+
- **Change Detection**: Angular sometimes fails to detect changes with dynamic content. If `DotcmsLayoutComponent` isn’t updating as expected, you may need to call `ChangeDetectorRef.detectChanges()` manually.
|
|
219
|
+
- **TypeScript Type Errors**: Ensure all types (e.g., `DotCMSPageAsset`, `DotCMSPageComponent`) are imported correctly from `@dotcms/angular`. Type mismatches can often be resolved by verifying imports.
|
|
171
220
|
|
|
172
|
-
|
|
173
|
-
2. Verify that your dotCMS configuration (URL, auth token, site ID) is correct.
|
|
174
|
-
3. Check the browser console for any error messages.
|
|
175
|
-
4. Refer to the [dotCMS documentation](https://dotcms.com/docs/) for additional guidance.
|
|
221
|
+
6. **Consult Documentation**: Refer to the official [dotCMS documentation](https://dotcms.com/docs/) and the [@dotcms/angular GitHub repository](https://github.com/dotCMS/core). These sources often provide updates and additional usage examples.
|
|
176
222
|
|
|
177
223
|
## Contributing
|
|
178
224
|
|
|
179
|
-
GitHub pull requests are the preferred method to contribute code to dotCMS. Before any pull requests can be accepted, an automated tool will ask you to agree to the [dotCMS Contributor's Agreement](https://gist.github.com/wezell/85ef45298c48494b90d92755b583acb3).
|
|
225
|
+
GitHub pull requests are the preferred method to contribute code to dotCMS. Before any pull requests can be accepted, an automated tool will ask you to agree to the [dotCMS Contributor's Agreement](https://www.gist.github.com/wezell/85ef45298c48494b90d92755b583acb3).
|
|
180
226
|
|
|
181
227
|
## Licensing
|
|
182
228
|
|
|
183
|
-
dotCMS comes in multiple editions and as such is dual licensed. The dotCMS Community Edition is licensed under the GPL 3.0 and is freely available for download, customization and deployment for use within organizations of all stripes. dotCMS Enterprise Editions (EE) adds a number of enterprise features and is available via a supported, indemnified commercial license from dotCMS. For the differences between the editions, see [the feature page](http://dotcms.com/cms-platform/features).
|
|
229
|
+
dotCMS comes in multiple editions and as such is dual licensed. The dotCMS Community Edition is licensed under the GPL 3.0 and is freely available for download, customization and deployment for use within organizations of all stripes. dotCMS Enterprise Editions (EE) adds a number of enterprise features and is available via a supported, indemnified commercial license from dotCMS. For the differences between the editions, see [the feature page](http://www.dotcms.com/cms-platform/features).
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EditorComponent, TINYMCE_SCRIPT_SRC } from '@tinymce/tinymce-angular';
|
|
2
2
|
import { Component, ElementRef, HostListener, inject, Input, Renderer2, SecurityContext, ViewChild } from '@angular/core';
|
|
3
3
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
4
|
-
import {
|
|
4
|
+
import { CLIENT_ACTIONS, DotCmsClient, isInsideEditor, NOTIFY_CLIENT, postMessageToEditor } from '@dotcms/client';
|
|
5
5
|
import { TINYMCE_CONFIG } from './utils';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
/**
|
|
@@ -76,7 +76,7 @@ export class DotEditableTextComponent {
|
|
|
76
76
|
*/
|
|
77
77
|
onMessage({ data }) {
|
|
78
78
|
const { name, payload } = data;
|
|
79
|
-
if (name !==
|
|
79
|
+
if (name !== NOTIFY_CLIENT.UVE_COPY_CONTENTLET_INLINE_EDITING_SUCCESS) {
|
|
80
80
|
return;
|
|
81
81
|
}
|
|
82
82
|
const { oldInode, inode } = payload;
|
|
@@ -119,7 +119,7 @@ export class DotEditableTextComponent {
|
|
|
119
119
|
event.preventDefault();
|
|
120
120
|
try {
|
|
121
121
|
postMessageToEditor({
|
|
122
|
-
action:
|
|
122
|
+
action: CLIENT_ACTIONS.COPY_CONTENTLET_INLINE_EDITING,
|
|
123
123
|
payload: {
|
|
124
124
|
dataset: {
|
|
125
125
|
inode,
|
|
@@ -147,7 +147,7 @@ export class DotEditableTextComponent {
|
|
|
147
147
|
const { inode, languageId: langId } = this.contentlet;
|
|
148
148
|
try {
|
|
149
149
|
postMessageToEditor({
|
|
150
|
-
action:
|
|
150
|
+
action: CLIENT_ACTIONS.UPDATE_CONTENTLET_INLINE_EDITING,
|
|
151
151
|
payload: {
|
|
152
152
|
content,
|
|
153
153
|
dataset: {
|
|
@@ -222,4 +222,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
222
222
|
type: HostListener,
|
|
223
223
|
args: ['window:message', ['$event']]
|
|
224
224
|
}] } });
|
|
225
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG90LWVkaXRhYmxlLXRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZG90LWVkaXRhYmxlLXRleHQvZG90LWVkaXRhYmxlLXRleHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZG90LWVkaXRhYmxlLXRleHQvZG90LWVkaXRhYmxlLXRleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRy9FLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixjQUFjLEVBQ2QsbUJBQW1CLEVBQ3RCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGNBQWMsRUFBb0QsTUFBTSxTQUFTLENBQUM7O0FBSTNGOzs7Ozs7OztHQVFHO0FBZ0JILE1BQU0sT0FBTyx3QkFBd0I7SUFmckM7UUFrQkk7Ozs7O1dBS0c7UUFDTSxTQUFJLEdBQTJCLE9BQU8sQ0FBQztRQUNoRDs7Ozs7V0FLRztRQUNNLFdBQU0sR0FBNkIsTUFBTSxDQUFDO1FBUW5EOzs7O1dBSUc7UUFDTSxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRXhCOzs7OztXQUtHO1FBQ08sWUFBTyxHQUFHLEVBQUUsQ0FBQztRQWtCZCxlQUFVLEdBQUcsTUFBTSxDQUFlLFlBQVksQ0FB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QyxTQUFTLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSyxnQkFBZ0IsQ0FBQyxhQUFxQjtRQUMxQyxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssYUFBYSxDQUFDO0lBQzFDLENBQUM7OEdBdk5RLHdCQUF3QjtrR0FBeEIsd0JBQXdCLDhOQVR0QjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLFVBQVUsRUFBRSxHQUFHLEVBQUU7b0JBQ2IsT0FBTyxHQUFHLFlBQVksQ0FBQyxTQUFTLCtCQUErQixDQUFDO2dCQUNwRSxDQUFDO2FBQ0o7U0FDSiwyRUFHVSxlQUFlLHFFQ3JEOUIscU5BUUEscUtEa0NjLGVBQWU7OzJGQVVoQix3QkFBd0I7a0JBZnBDLFNBQVM7K0JBQ0ksbUJBQW1CLGNBQ2pCLElBQUksV0FHUCxDQUFDLGVBQWUsQ0FBQyxhQUNmO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxrQkFBa0I7NEJBQzNCLFVBQVUsRUFBRSxHQUFHLEVBQUU7Z0NBQ2IsT0FBTyxHQUFHLFlBQVksQ0FBQyxTQUFTLCtCQUErQixDQUFDOzRCQUNwRSxDQUFDO3lCQUNKO3FCQUNKOzhCQUcyQixlQUFlO3NCQUExQyxTQUFTO3VCQUFDLGVBQWU7Z0JBUWpCLElBQUk7c0JBQVosS0FBSztnQkFPRyxNQUFNO3NCQUFkLEtBQUs7Z0JBT0csVUFBVTtzQkFBbEIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLO2dCQTBETixTQUFTO3NCQURSLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGl0b3JDb21wb25lbnQsIFRJTllNQ0VfU0NSSVBUX1NSQyB9IGZyb20gJ0B0aW55bWNlL3RpbnltY2UtYW5ndWxhcic7XG5pbXBvcnQgeyBFdmVudE9iaiB9IGZyb20gJ0B0aW55bWNlL3RpbnltY2UtYW5ndWxhci9lZGl0b3IvRXZlbnRzJztcblxuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFNlY3VyaXR5Q29udGV4dCxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHtcbiAgICBDVVNUT01FUl9BQ1RJT05TLFxuICAgIERvdENtc0NsaWVudCxcbiAgICBpc0luc2lkZUVkaXRvcixcbiAgICBwb3N0TWVzc2FnZVRvRWRpdG9yXG59IGZyb20gJ0Bkb3RjbXMvY2xpZW50JztcblxuaW1wb3J0IHsgVElOWU1DRV9DT05GSUcsIERPVF9FRElUQUJMRV9URVhUX0ZPUk1BVCwgRE9UX0VESVRBQkxFX1RFWFRfTU9ERSB9IGZyb20gJy4vdXRpbHMnO1xuXG5pbXBvcnQgeyBEb3RDTVNDb250ZW50bGV0IH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuLyoqXG4gKiBEb3QgZWRpdGFibGUgdGV4dCBjb21wb25lbnQuXG4gKiBUaGlzIGNvbXBvbmVudCBpcyByZXNwb25zaWJsZSB0byByZW5kZXIgYSB0ZXh0IGZpZWxkIHRoYXQgY2FuIGJlIGVkaXRlZCBpbmxpbmUuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIERvdEVkaXRhYmxlVGV4dENvbXBvbmVudFxuICogQGltcGxlbWVudHMge09uSW5pdH1cbiAqIEBpbXBsZW1lbnRzIHtPbkNoYW5nZXN9XG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZG90LWVkaXRhYmxlLXRleHQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RvdC1lZGl0YWJsZS10ZXh0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vZG90LWVkaXRhYmxlLXRleHQuY29tcG9uZW50LmNzcycsXG4gICAgaW1wb3J0czogW0VkaXRvckNvbXBvbmVudF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRJTllNQ0VfU0NSSVBUX1NSQyxcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7RG90Q21zQ2xpZW50LmRvdGNtc1VybH0vZXh0L3RpbnltY2V2Ny90aW55bWNlLm1pbi5qc2A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIERvdEVkaXRhYmxlVGV4dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBAVmlld0NoaWxkKEVkaXRvckNvbXBvbmVudCkgZWRpdG9yQ29tcG9uZW50ITogRWRpdG9yQ29tcG9uZW50O1xuXG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgbW9kZSBvZiB0aGUgZWRpdG9yIHdoaWNoIGNhbiBiZSBgcGxhaW5gLCBgbWluaW1hbGAsIG9yIGBmdWxsYFxuICAgICAqXG4gICAgICogQHR5cGUge0RPVF9FRElUQUJMRV9URVhUX01PREV9XG4gICAgICogQG1lbWJlcm9mIERvdEVkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIG1vZGU6IERPVF9FRElUQUJMRV9URVhUX01PREUgPSAncGxhaW4nO1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIGZvcm1hdCBvZiB0aGUgZWRpdG9yIHdoaWNoIGNhbiBiZSBgdGV4dGAgb3IgYGh0bWxgXG4gICAgICpcbiAgICAgKiBAdHlwZSB7RE9UX0VESVRBQkxFX1RFWFRfRk9STUFUfVxuICAgICAqIEBtZW1iZXJvZiBEb3RFZGl0YWJsZVRleHRDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBmb3JtYXQ6IERPVF9FRElUQUJMRV9URVhUX0ZPUk1BVCA9ICd0ZXh0JztcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBgY29udGVudGxldGAgdGhhdCBjYW4gYmUgaW5saW5lIGVkaXRlZFxuICAgICAqXG4gICAgICogQHR5cGUge0RvdENNU0NvbnRlbnRsZXR9XG4gICAgICogQG1lbWJlcm9mIERvdEVkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGNvbnRlbnRsZXQhOiBEb3RDTVNDb250ZW50bGV0O1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIGZpZWxkIG5hbWUgb2YgdGhlIGBjb250ZW50bGV0YCB0aGF0IGNhbiBiZSBlZGl0ZWRcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBEb3RFZGl0YWJsZVRleHRDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBmaWVsZE5hbWUgPSAnJztcblxuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIGNvbnRlbnQgb2YgdGhlIGBjb250ZW50bGV0YCB0aGF0IGNhbiBiZSBlZGl0ZWRcbiAgICAgKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiBAbWVtYmVyb2YgRG90RWRpdGFibGVUZXh0Q29tcG9uZW50XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNvbnRlbnQgPSAnJztcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBlZGl0b3JcbiAgICAgKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiBAdHlwZSB7RWRpdG9yQ29tcG9uZW50Wydpbml0J119XG4gICAgICogQG1lbWJlcm9mIERvdEVkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpbml0ITogRWRpdG9yQ29tcG9uZW50Wydpbml0J107XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyBpZiB0aGUgY29tcG9uZW50IGlzIGluc2lkZSB0aGUgZWRpdG9yXG4gICAgICpcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICogQG1lbWJlcm9mIERvdEVkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpc0luc2lkZUVkaXRvciE6IGJvb2xlYW47XG5cbiAgICByZWFkb25seSAjc2FuaXRpemVyID0gaW5qZWN0PERvbVNhbml0aXplcj4oRG9tU2FuaXRpemVyKTtcbiAgICByZWFkb25seSAjcmVuZGVyZXIgPSBpbmplY3Q8UmVuZGVyZXIyPihSZW5kZXJlcjIpO1xuICAgIHJlYWRvbmx5ICNlbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY+KEVsZW1lbnRSZWYpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIFRpbnlNQ0UgZWRpdG9yXG4gICAgICpcbiAgICAgKiBAcmVhZG9ubHlcbiAgICAgKiBAbWVtYmVyb2YgRG90RWRpdGFibGVUZXh0Q29tcG9uZW50XG4gICAgICovXG4gICAgZ2V0IGVkaXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yQ29tcG9uZW50Py5lZGl0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHRoZSBjb250ZW50bGV0IGlzIG9uXG4gICAgICpcbiAgICAgKiBAcmVhZG9ubHlcbiAgICAgKiBAbWVtYmVyb2YgRG90RWRpdGFibGVUZXh0Q29tcG9uZW50XG4gICAgICovXG4gICAgZ2V0IG9uTnVtYmVyT2ZQYWdlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudGxldFsnb25OdW1iZXJPZlBhZ2VzJ10gfHwgMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGUgY29weSBjb250ZW50bGV0IGlubGluZSBlZGl0aW5nIHN1Y2Nlc3MgZXZlbnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7TWVzc2FnZUV2ZW50fSB7IGRhdGEgfVxuICAgICAqIEByZXR1cm4geyp9XG4gICAgICogQG1lbWJlcm9mIERvdEVkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptZXNzYWdlJywgWyckZXZlbnQnXSlcbiAgICBvbk1lc3NhZ2UoeyBkYXRhIH06IE1lc3NhZ2VFdmVudCkge1xuICAgICAgICBjb25zdCB7IG5hbWUsIHBheWxvYWQgfSA9IGRhdGE7XG4gICAgICAgIGlmIChuYW1lICE9PSAnQ09QWV9DT05URU5UTEVUX0lOTElORV9FRElUSU5HX1NVQ0NFU1MnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IG9sZElub2RlLCBpbm9kZSB9ID0gcGF5bG9hZDtcbiAgICAgICAgY29uc3QgY3VycmVudElub2RlID0gdGhpcy5jb250ZW50bGV0Lmlub2RlO1xuXG4gICAgICAgIGlmIChjdXJyZW50SW5vZGUgPT09IG9sZElub2RlIHx8IGN1cnJlbnRJbm9kZSA9PT0gaW5vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yQ29tcG9uZW50LmVkaXRvci5mb2N1cygpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pc0luc2lkZUVkaXRvciA9IGlzSW5zaWRlRWRpdG9yKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzSW5zaWRlRWRpdG9yKSB7XG4gICAgICAgICAgICB0aGlzLmlubmVySFRNTFRvRWxlbWVudCgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmluaXQgPSB7XG4gICAgICAgICAgICAuLi5USU5ZTUNFX0NPTkZJR1t0aGlzLm1vZGVdLFxuICAgICAgICAgICAgYmFzZV91cmw6IGAke0RvdENtc0NsaWVudC5kb3RjbXNVcmx9L2V4dC90aW55bWNldjdgXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoKSB7XG4gICAgICAgIHRoaXMuY29udGVudCA9IHRoaXMuY29udGVudGxldFt0aGlzLmZpZWxkTmFtZV0gfHwgJyc7XG4gICAgICAgIGlmICh0aGlzLmVkaXRvcikge1xuICAgICAgICAgICAgdGhpcy5lZGl0b3Iuc2V0Q29udGVudCh0aGlzLmNvbnRlbnQsIHsgZm9ybWF0OiB0aGlzLmZvcm1hdCB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBtb3VzZSBkb3duIGV2ZW50XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0V2ZW50T2JqPE1vdXNlRXZlbnQ+fSB7IGV2ZW50IH1cbiAgICAgKiBAcmV0dXJuIHsqfVxuICAgICAqIEBtZW1iZXJvZiBEb3RFZGl0YWJsZVRleHRDb21wb25lbnRcbiAgICAgKi9cbiAgICBvbk1vdXNlRG93bih7IGV2ZW50IH06IEV2ZW50T2JqPE1vdXNlRXZlbnQ+KSB7XG4gICAgICAgIGlmICh0aGlzLm9uTnVtYmVyT2ZQYWdlcyA8PSAxIHx8IHRoaXMuZWRpdG9yQ29tcG9uZW50LmVkaXRvci5oYXNGb2N1cygpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGlub2RlLCBsYW5ndWFnZUlkOiBsYW5ndWFnZSB9ID0gdGhpcy5jb250ZW50bGV0O1xuXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBwb3N0TWVzc2FnZVRvRWRpdG9yKHtcbiAgICAgICAgICAgICAgICBhY3Rpb246IENVU1RPTUVSX0FDVElPTlMuQ09QWV9DT05URU5UTEVUX0lOTElORV9FRElUSU5HLFxuICAgICAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YXNldDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZTogdGhpcy5maWVsZE5hbWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHBvc3QgbWVzc2FnZSB0byBlZGl0b3I6JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBmb2N1cyBvdXQgZXZlbnRcbiAgICAgKlxuICAgICAqIEByZXR1cm4geyp9XG4gICAgICogQG1lbWJlcm9mIERvdEVkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIG9uRm9jdXNPdXQoKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmVkaXRvci5nZXRDb250ZW50KHsgZm9ybWF0OiB0aGlzLmZvcm1hdCB9KTtcblxuICAgICAgICBpZiAoIXRoaXMuZWRpdG9yLmlzRGlydHkoKSB8fCAhdGhpcy5kaWRDb250ZW50Q2hhbmdlKGNvbnRlbnQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGlub2RlLCBsYW5ndWFnZUlkOiBsYW5nSWQgfSA9IHRoaXMuY29udGVudGxldDtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcG9zdE1lc3NhZ2VUb0VkaXRvcih7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiBDVVNUT01FUl9BQ1RJT05TLlVQREFURV9DT05URU5UTEVUX0lOTElORV9FRElUSU5HLFxuICAgICAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgZGF0YXNldDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYW5nSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IHRoaXMuZmllbGROYW1lXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBwb3N0IG1lc3NhZ2UgdG8gZWRpdG9yOicsIGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGlubmVyIEhUTUwgdG8gZWxlbWVudFxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZWRpdGVkQ29udGVudFxuICAgICAqIEByZXR1cm4geyp9XG4gICAgICogQG1lbWJlcm9mIERvdEVkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIHByaXZhdGUgaW5uZXJIVE1MVG9FbGVtZW50KCkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBzYWZlSHRtbCA9IHRoaXMuI3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh0aGlzLmNvbnRlbnQpO1xuICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy4jc2FuaXRpemVyLnNhbml0aXplKFNlY3VyaXR5Q29udGV4dC5IVE1MLCBzYWZlSHRtbCkgfHwgJyc7XG5cbiAgICAgICAgdGhpcy4jcmVuZGVyZXIuc2V0UHJvcGVydHkoZWxlbWVudCwgJ2lubmVySFRNTCcsIGNvbnRlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHRoZSBjb250ZW50IGhhcyBjaGFuZ2VkXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBlZGl0ZWRDb250ZW50XG4gICAgICogQHJldHVybiB7Kn1cbiAgICAgKiBAbWVtYmVyb2YgRG90RWRpdGFibGVUZXh0Q29tcG9uZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBkaWRDb250ZW50Q2hhbmdlKGVkaXRlZENvbnRlbnQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50ICE9PSBlZGl0ZWRDb250ZW50O1xuICAgIH1cbn1cbiIsIkBpZiAoaXNJbnNpZGVFZGl0b3IpIHtcbiAgICA8ZWRpdG9yXG4gICAgICAgICN0aW55RWRpdG9yXG4gICAgICAgIFtpbml0XT1cImluaXRcIlxuICAgICAgICBbaW5pdGlhbFZhbHVlXT1cImNvbnRlbnRcIlxuICAgICAgICAob25Nb3VzZURvd24pPVwib25Nb3VzZURvd24oJGV2ZW50KVwiXG4gICAgICAgIChvbkZvY3VzT3V0KT1cIm9uRm9jdXNPdXQoKVwiIC8+XG59XG4iXX0=
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG90LWVkaXRhYmxlLXRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZG90LWVkaXRhYmxlLXRleHQvZG90LWVkaXRhYmxlLXRleHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZG90LWVkaXRhYmxlLXRleHQvZG90LWVkaXRhYmxlLXRleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRy9FLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEVBQ0gsY0FBYyxFQUNkLFlBQVksRUFDWixjQUFjLEVBQ2QsYUFBYSxFQUNiLG1CQUFtQixFQUN0QixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxjQUFjLEVBQW9ELE1BQU0sU0FBUyxDQUFDOztBQUkzRjs7Ozs7Ozs7R0FRRztBQWdCSCxNQUFNLE9BQU8sd0JBQXdCO0lBZnJDO1FBa0JJOzs7OztXQUtHO1FBQ00sU0FBSSxHQUEyQixPQUFPLENBQUM7UUFDaEQ7Ozs7O1dBS0c7UUFDTSxXQUFNLEdBQTZCLE1BQU0sQ0FBQztRQVFuRDs7OztXQUlHO1FBQ00sY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUV4Qjs7Ozs7V0FLRztRQUNPLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFrQmQsZUFBVSxHQUFHLE1BQU0sQ0FBZSxZQUFZLENBQUMsQ0FBQztRQUNoRCxjQUFTLEdBQUcsTUFBTSxDQUFZLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDLGdCQUFXLEdBQUcsTUFBTSxDQUFhLFVBQVUsQ0FBQyxDQUFDO0tBK0p6RDtJQWpLWSxVQUFVLENBQXNDO0lBQ2hELFNBQVMsQ0FBZ0M7SUFDekMsV0FBVyxDQUFrQztJQUV0RDs7Ozs7T0FLRztJQUNILElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBSSxlQUFlO1FBQ2YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFFSCxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQWdCO1FBQzVCLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQy9CLElBQUksSUFBSSxLQUFLLGFBQWEsQ0FBQywwQ0FBMEMsRUFBRSxDQUFDO1lBQ3BFLE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDcEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFFM0MsSUFBSSxZQUFZLEtBQUssUUFBUSxJQUFJLFlBQVksS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUN0RCxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUVwQyxPQUFPO1FBQ1gsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUV2QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBRTFCLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksR0FBRztZQUNSLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDNUIsUUFBUSxFQUFFLEdBQUcsWUFBWSxDQUFDLFNBQVMsZ0JBQWdCO1NBQ3RELENBQUM7SUFDTixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNsRSxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBd0I7UUFDdkMsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3RFLE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUV4RCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXZCLElBQUksQ0FBQztZQUNELG1CQUFtQixDQUFDO2dCQUNoQixNQUFNLEVBQUUsY0FBYyxDQUFDLDhCQUE4QjtnQkFDckQsT0FBTyxFQUFFO29CQUNMLE9BQU8sRUFBRTt3QkFDTCxLQUFLO3dCQUNMLFFBQVE7d0JBQ1IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO3FCQUM1QjtpQkFDSjthQUNKLENBQUMsQ0FBQztRQUNQLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0wsQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0gsVUFBVTtRQUNOLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRWhFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDNUQsT0FBTztRQUNYLENBQUM7UUFFRCxNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRXRELElBQUksQ0FBQztZQUNELG1CQUFtQixDQUFDO2dCQUNoQixNQUFNLEVBQUUsY0FBYyxDQUFDLGdDQUFnQztnQkFDdkQsT0FBTyxFQUFFO29CQUNMLE9BQU87b0JBQ1AsT0FBTyxFQUFFO3dCQUNMLEtBQUs7d0JBQ0wsTUFBTTt3QkFDTixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7cUJBQzVCO2lCQUNKO2FBQ0osQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlELENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLGtCQUFrQjtRQUN0QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztRQUMvQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUUvRSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ssZ0JBQWdCLENBQUMsYUFBcUI7UUFDMUMsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLGFBQWEsQ0FBQztJQUMxQyxDQUFDOzhHQXZOUSx3QkFBd0I7a0dBQXhCLHdCQUF3Qiw4TkFUdEI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixVQUFVLEVBQUUsR0FBRyxFQUFFO29CQUNiLE9BQU8sR0FBRyxZQUFZLENBQUMsU0FBUywrQkFBK0IsQ0FBQztnQkFDcEUsQ0FBQzthQUNKO1NBQ0osMkVBR1UsZUFBZSxxRUN0RDlCLHFOQVFBLHFLRG1DYyxlQUFlOzsyRkFVaEIsd0JBQXdCO2tCQWZwQyxTQUFTOytCQUNJLG1CQUFtQixjQUNqQixJQUFJLFdBR1AsQ0FBQyxlQUFlLENBQUMsYUFDZjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixVQUFVLEVBQUUsR0FBRyxFQUFFO2dDQUNiLE9BQU8sR0FBRyxZQUFZLENBQUMsU0FBUywrQkFBK0IsQ0FBQzs0QkFDcEUsQ0FBQzt5QkFDSjtxQkFDSjs4QkFHMkIsZUFBZTtzQkFBMUMsU0FBUzt1QkFBQyxlQUFlO2dCQVFqQixJQUFJO3NCQUFaLEtBQUs7Z0JBT0csTUFBTTtzQkFBZCxLQUFLO2dCQU9HLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTUcsU0FBUztzQkFBakIsS0FBSztnQkEwRE4sU0FBUztzQkFEUixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRpdG9yQ29tcG9uZW50LCBUSU5ZTUNFX1NDUklQVF9TUkMgfSBmcm9tICdAdGlueW1jZS90aW55bWNlLWFuZ3VsYXInO1xuaW1wb3J0IHsgRXZlbnRPYmogfSBmcm9tICdAdGlueW1jZS90aW55bWNlLWFuZ3VsYXIvZWRpdG9yL0V2ZW50cyc7XG5cbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIFJlbmRlcmVyMixcbiAgICBTZWN1cml0eUNvbnRleHQsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmltcG9ydCB7XG4gICAgQ0xJRU5UX0FDVElPTlMsXG4gICAgRG90Q21zQ2xpZW50LFxuICAgIGlzSW5zaWRlRWRpdG9yLFxuICAgIE5PVElGWV9DTElFTlQsXG4gICAgcG9zdE1lc3NhZ2VUb0VkaXRvclxufSBmcm9tICdAZG90Y21zL2NsaWVudCc7XG5cbmltcG9ydCB7IFRJTllNQ0VfQ09ORklHLCBET1RfRURJVEFCTEVfVEVYVF9GT1JNQVQsIERPVF9FRElUQUJMRV9URVhUX01PREUgfSBmcm9tICcuL3V0aWxzJztcblxuaW1wb3J0IHsgRG90Q01TQ29udGVudGxldCB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cbi8qKlxuICogRG90IGVkaXRhYmxlIHRleHQgY29tcG9uZW50LlxuICogVGhpcyBjb21wb25lbnQgaXMgcmVzcG9uc2libGUgdG8gcmVuZGVyIGEgdGV4dCBmaWVsZCB0aGF0IGNhbiBiZSBlZGl0ZWQgaW5saW5lLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBEb3RFZGl0YWJsZVRleHRDb21wb25lbnRcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XG4gKiBAaW1wbGVtZW50cyB7T25DaGFuZ2VzfVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RvdC1lZGl0YWJsZS10ZXh0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kb3QtZWRpdGFibGUtdGV4dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2RvdC1lZGl0YWJsZS10ZXh0LmNvbXBvbmVudC5jc3MnLFxuICAgIGltcG9ydHM6IFtFZGl0b3JDb21wb25lbnRdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUSU5ZTUNFX1NDUklQVF9TUkMsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke0RvdENtc0NsaWVudC5kb3RjbXNVcmx9L2V4dC90aW55bWNldjcvdGlueW1jZS5taW4uanNgO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBEb3RFZGl0YWJsZVRleHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQFZpZXdDaGlsZChFZGl0b3JDb21wb25lbnQpIGVkaXRvckNvbXBvbmVudCE6IEVkaXRvckNvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIG1vZGUgb2YgdGhlIGVkaXRvciB3aGljaCBjYW4gYmUgYHBsYWluYCwgYG1pbmltYWxgLCBvciBgZnVsbGBcbiAgICAgKlxuICAgICAqIEB0eXBlIHtET1RfRURJVEFCTEVfVEVYVF9NT0RFfVxuICAgICAqIEBtZW1iZXJvZiBEb3RFZGl0YWJsZVRleHRDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtb2RlOiBET1RfRURJVEFCTEVfVEVYVF9NT0RFID0gJ3BsYWluJztcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBmb3JtYXQgb2YgdGhlIGVkaXRvciB3aGljaCBjYW4gYmUgYHRleHRgIG9yIGBodG1sYFxuICAgICAqXG4gICAgICogQHR5cGUge0RPVF9FRElUQUJMRV9URVhUX0ZPUk1BVH1cbiAgICAgKiBAbWVtYmVyb2YgRG90RWRpdGFibGVUZXh0Q29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgZm9ybWF0OiBET1RfRURJVEFCTEVfVEVYVF9GT1JNQVQgPSAndGV4dCc7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgYGNvbnRlbnRsZXRgIHRoYXQgY2FuIGJlIGlubGluZSBlZGl0ZWRcbiAgICAgKlxuICAgICAqIEB0eXBlIHtEb3RDTVNDb250ZW50bGV0fVxuICAgICAqIEBtZW1iZXJvZiBEb3RFZGl0YWJsZVRleHRDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBjb250ZW50bGV0ITogRG90Q01TQ29udGVudGxldDtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBmaWVsZCBuYW1lIG9mIHRoZSBgY29udGVudGxldGAgdGhhdCBjYW4gYmUgZWRpdGVkXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgRG90RWRpdGFibGVUZXh0Q29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgZmllbGROYW1lID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBjb250ZW50IG9mIHRoZSBgY29udGVudGxldGAgdGhhdCBjYW4gYmUgZWRpdGVkXG4gICAgICpcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICogQG1lbWJlcm9mIERvdEVkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjb250ZW50ID0gJyc7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgZWRpdG9yXG4gICAgICpcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICogQHR5cGUge0VkaXRvckNvbXBvbmVudFsnaW5pdCddfVxuICAgICAqIEBtZW1iZXJvZiBEb3RFZGl0YWJsZVRleHRDb21wb25lbnRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaW5pdCE6IEVkaXRvckNvbXBvbmVudFsnaW5pdCddO1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgaWYgdGhlIGNvbXBvbmVudCBpcyBpbnNpZGUgdGhlIGVkaXRvclxuICAgICAqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqIEBtZW1iZXJvZiBEb3RFZGl0YWJsZVRleHRDb21wb25lbnRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaXNJbnNpZGVFZGl0b3IhOiBib29sZWFuO1xuXG4gICAgcmVhZG9ubHkgI3Nhbml0aXplciA9IGluamVjdDxEb21TYW5pdGl6ZXI+KERvbVNhbml0aXplcik7XG4gICAgcmVhZG9ubHkgI3JlbmRlcmVyID0gaW5qZWN0PFJlbmRlcmVyMj4oUmVuZGVyZXIyKTtcbiAgICByZWFkb25seSAjZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPihFbGVtZW50UmVmKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBUaW55TUNFIGVkaXRvclxuICAgICAqXG4gICAgICogQHJlYWRvbmx5XG4gICAgICogQG1lbWJlcm9mIERvdEVkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIGdldCBlZGl0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvckNvbXBvbmVudD8uZWRpdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBwYWdlcyB0aGUgY29udGVudGxldCBpcyBvblxuICAgICAqXG4gICAgICogQHJlYWRvbmx5XG4gICAgICogQG1lbWJlcm9mIERvdEVkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIGdldCBvbk51bWJlck9mUGFnZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRsZXRbJ29uTnVtYmVyT2ZQYWdlcyddIHx8IDE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIGNvcHkgY29udGVudGxldCBpbmxpbmUgZWRpdGluZyBzdWNjZXNzIGV2ZW50XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge01lc3NhZ2VFdmVudH0geyBkYXRhIH1cbiAgICAgKiBAcmV0dXJuIHsqfVxuICAgICAqIEBtZW1iZXJvZiBEb3RFZGl0YWJsZVRleHRDb21wb25lbnRcbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bWVzc2FnZScsIFsnJGV2ZW50J10pXG4gICAgb25NZXNzYWdlKHsgZGF0YSB9OiBNZXNzYWdlRXZlbnQpIHtcbiAgICAgICAgY29uc3QgeyBuYW1lLCBwYXlsb2FkIH0gPSBkYXRhO1xuICAgICAgICBpZiAobmFtZSAhPT0gTk9USUZZX0NMSUVOVC5VVkVfQ09QWV9DT05URU5UTEVUX0lOTElORV9FRElUSU5HX1NVQ0NFU1MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgb2xkSW5vZGUsIGlub2RlIH0gPSBwYXlsb2FkO1xuICAgICAgICBjb25zdCBjdXJyZW50SW5vZGUgPSB0aGlzLmNvbnRlbnRsZXQuaW5vZGU7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRJbm9kZSA9PT0gb2xkSW5vZGUgfHwgY3VycmVudElub2RlID09PSBpbm9kZSkge1xuICAgICAgICAgICAgdGhpcy5lZGl0b3JDb21wb25lbnQuZWRpdG9yLmZvY3VzKCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmlzSW5zaWRlRWRpdG9yID0gaXNJbnNpZGVFZGl0b3IoKTtcblxuICAgICAgICBpZiAoIXRoaXMuaXNJbnNpZGVFZGl0b3IpIHtcbiAgICAgICAgICAgIHRoaXMuaW5uZXJIVE1MVG9FbGVtZW50KCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5pdCA9IHtcbiAgICAgICAgICAgIC4uLlRJTllNQ0VfQ09ORklHW3RoaXMubW9kZV0sXG4gICAgICAgICAgICBiYXNlX3VybDogYCR7RG90Q21zQ2xpZW50LmRvdGNtc1VybH0vZXh0L3RpbnltY2V2N2BcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgdGhpcy5jb250ZW50ID0gdGhpcy5jb250ZW50bGV0W3RoaXMuZmllbGROYW1lXSB8fCAnJztcbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yKSB7XG4gICAgICAgICAgICB0aGlzLmVkaXRvci5zZXRDb250ZW50KHRoaXMuY29udGVudCwgeyBmb3JtYXQ6IHRoaXMuZm9ybWF0IH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIG1vdXNlIGRvd24gZXZlbnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RXZlbnRPYmo8TW91c2VFdmVudD59IHsgZXZlbnQgfVxuICAgICAqIEByZXR1cm4geyp9XG4gICAgICogQG1lbWJlcm9mIERvdEVkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIG9uTW91c2VEb3duKHsgZXZlbnQgfTogRXZlbnRPYmo8TW91c2VFdmVudD4pIHtcbiAgICAgICAgaWYgKHRoaXMub25OdW1iZXJPZlBhZ2VzIDw9IDEgfHwgdGhpcy5lZGl0b3JDb21wb25lbnQuZWRpdG9yLmhhc0ZvY3VzKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgaW5vZGUsIGxhbmd1YWdlSWQ6IGxhbmd1YWdlIH0gPSB0aGlzLmNvbnRlbnRsZXQ7XG5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHBvc3RNZXNzYWdlVG9FZGl0b3Ioe1xuICAgICAgICAgICAgICAgIGFjdGlvbjogQ0xJRU5UX0FDVElPTlMuQ09QWV9DT05URU5UTEVUX0lOTElORV9FRElUSU5HLFxuICAgICAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YXNldDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZTogdGhpcy5maWVsZE5hbWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHBvc3QgbWVzc2FnZSB0byBlZGl0b3I6JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBmb2N1cyBvdXQgZXZlbnRcbiAgICAgKlxuICAgICAqIEByZXR1cm4geyp9XG4gICAgICogQG1lbWJlcm9mIERvdEVkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIG9uRm9jdXNPdXQoKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmVkaXRvci5nZXRDb250ZW50KHsgZm9ybWF0OiB0aGlzLmZvcm1hdCB9KTtcblxuICAgICAgICBpZiAoIXRoaXMuZWRpdG9yLmlzRGlydHkoKSB8fCAhdGhpcy5kaWRDb250ZW50Q2hhbmdlKGNvbnRlbnQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGlub2RlLCBsYW5ndWFnZUlkOiBsYW5nSWQgfSA9IHRoaXMuY29udGVudGxldDtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcG9zdE1lc3NhZ2VUb0VkaXRvcih7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiBDTElFTlRfQUNUSU9OUy5VUERBVEVfQ09OVEVOVExFVF9JTkxJTkVfRURJVElORyxcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFzZXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlub2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ0lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lOiB0aGlzLmZpZWxkTmFtZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gcG9zdCBtZXNzYWdlIHRvIGVkaXRvcjonLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpbm5lciBIVE1MIHRvIGVsZW1lbnRcbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGVkaXRlZENvbnRlbnRcbiAgICAgKiBAcmV0dXJuIHsqfVxuICAgICAqIEBtZW1iZXJvZiBEb3RFZGl0YWJsZVRleHRDb21wb25lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIGlubmVySFRNTFRvRWxlbWVudCgpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3Qgc2FmZUh0bWwgPSB0aGlzLiNzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodGhpcy5jb250ZW50KTtcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMuI3Nhbml0aXplci5zYW5pdGl6ZShTZWN1cml0eUNvbnRleHQuSFRNTCwgc2FmZUh0bWwpIHx8ICcnO1xuXG4gICAgICAgIHRoaXMuI3JlbmRlcmVyLnNldFByb3BlcnR5KGVsZW1lbnQsICdpbm5lckhUTUwnLCBjb250ZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgY29udGVudCBoYXMgY2hhbmdlZFxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZWRpdGVkQ29udGVudFxuICAgICAqIEByZXR1cm4geyp9XG4gICAgICogQG1lbWJlcm9mIERvdEVkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIHByaXZhdGUgZGlkQ29udGVudENoYW5nZShlZGl0ZWRDb250ZW50OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudCAhPT0gZWRpdGVkQ29udGVudDtcbiAgICB9XG59XG4iLCJAaWYgKGlzSW5zaWRlRWRpdG9yKSB7XG4gICAgPGVkaXRvclxuICAgICAgICAjdGlueUVkaXRvclxuICAgICAgICBbaW5pdF09XCJpbml0XCJcbiAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb250ZW50XCJcbiAgICAgICAgKG9uTW91c2VEb3duKT1cIm9uTW91c2VEb3duKCRldmVudClcIlxuICAgICAgICAob25Gb2N1c091dCk9XCJvbkZvY3VzT3V0KClcIiAvPlxufVxuIl19
|
|
@@ -2,7 +2,7 @@ import { AsyncPipe } from '@angular/common';
|
|
|
2
2
|
import { ChangeDetectionStrategy, Component, DestroyRef, Input, inject } from '@angular/core';
|
|
3
3
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
4
|
import { ActivatedRoute } from '@angular/router';
|
|
5
|
-
import {
|
|
5
|
+
import { CLIENT_ACTIONS, DotCmsClient, initEditor, isInsideEditor, postMessageToEditor, updateNavigation } from '@dotcms/client';
|
|
6
6
|
import { PageContextService } from '../../services/dotcms-context/page-context.service';
|
|
7
7
|
import { RowComponent } from '../row/row.component';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
@@ -60,7 +60,7 @@ export class DotcmsLayoutComponent {
|
|
|
60
60
|
}
|
|
61
61
|
this.pageContextService.setPageAsset(data);
|
|
62
62
|
});
|
|
63
|
-
postMessageToEditor({ action:
|
|
63
|
+
postMessageToEditor({ action: CLIENT_ACTIONS.CLIENT_READY, payload: this.editor });
|
|
64
64
|
}
|
|
65
65
|
ngOnDestroy() {
|
|
66
66
|
if (!isInsideEditor()) {
|
|
@@ -97,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
97
97
|
}], editor: [{
|
|
98
98
|
type: Input
|
|
99
99
|
}] } });
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG90Y21zLWxheW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9hbmd1bGFyL3NyYy9saWIvbGF5b3V0L2RvdGNtcy1sYXlvdXQvZG90Y21zLWxheW91dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQ0gsY0FBYyxFQUNkLFlBQVksRUFFWixVQUFVLEVBQ1YsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDbkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUl4QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUN4RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBRXBEOzs7Ozs7R0FNRztBQWVILE1BQU0sT0FBTyxxQkFBcUI7SUFkbEM7UUEwRXFCLFVBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0IsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDaEQsZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFL0IsZUFBVSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUM7S0FxQ3hFO0lBbEdHOzs7OztPQUtHO0lBQ0gsSUFDSSxTQUFTLENBQUMsS0FBc0I7UUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsSUFBSSxDQUNSLGlKQUFpSixDQUNwSixDQUFDO1FBQ04sQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQXNDRCxRQUFRO1FBQ0osSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVwRSxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztZQUNwQixPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUNwQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDaEYsTUFBTSxRQUFRLEdBQUcsR0FBRyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFN0MsVUFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUN6QixnQkFBZ0IsQ0FBQyxRQUFRLElBQUksR0FBRyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFFaEIsT0FBTztZQUNYLENBQUM7WUFFRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLElBQXVCLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztRQUVILG1CQUFtQixDQUFDLEVBQUUsTUFBTSxFQUFFLGNBQWMsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7WUFDcEIsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEMsQ0FBQzs4R0FwR1EscUJBQXFCO2tHQUFyQixxQkFBcUIsK0tBVnBCOzs7Ozs7S0FNVCxnR0FQUyxZQUFZLG1FQUFFLFNBQVM7OzJGQVd4QixxQkFBcUI7a0JBZGpDLFNBQVM7K0JBQ0ksZUFBZSxjQUNiLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsWUFDeEI7Ozs7OztLQU1ULG1CQUVnQix1QkFBdUIsQ0FBQyxNQUFNOzhCQVkzQyxTQUFTO3NCQURaLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQTRCRSxVQUFVO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFRaEIsUUFBUTtzQkFBaEIsS0FBSztnQkFhRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRGVzdHJveVJlZixcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1xuICAgIENMSUVOVF9BQ1RJT05TLFxuICAgIERvdENtc0NsaWVudCxcbiAgICBFZGl0b3JDb25maWcsXG4gICAgaW5pdEVkaXRvcixcbiAgICBpc0luc2lkZUVkaXRvcixcbiAgICBwb3N0TWVzc2FnZVRvRWRpdG9yLFxuICAgIHVwZGF0ZU5hdmlnYXRpb25cbn0gZnJvbSAnQGRvdGNtcy9jbGllbnQnO1xuXG5pbXBvcnQgeyBEb3RDTVNQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IERvdENNU1BhZ2VBc3NldCB9IGZyb20gJy4uLy4uL21vZGVscy9kb3RjbXMubW9kZWwnO1xuaW1wb3J0IHsgUGFnZUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZG90Y21zLWNvbnRleHQvcGFnZS1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUm93Q29tcG9uZW50IH0gZnJvbSAnLi4vcm93L3Jvdy5jb21wb25lbnQnO1xuXG4vKipcbiAqIGBEb3RjbXNMYXlvdXRDb21wb25lbnRgIGlzIGEgY2xhc3MgdGhhdCByZXByZXNlbnRzIHRoZSBsYXlvdXQgZm9yIGEgRG90Q01TIHBhZ2UuXG4gKiAgSXQgaW5jbHVkZXMgYSBgcGFnZUFzc2V0YCBwcm9wZXJ0eSB0aGF0IHJlcHJlc2VudHMgdGhlIERvdENNUyBwYWdlIGFzc2V0IGFuZCBhIGBjb21wb25lbnRzYCBwcm9wZXJ0eSB0aGF0IHJlcHJlc2VudHMgdGhlIGR5bmFtaWMgY29tcG9uZW50cyBmb3IgdGhlIHBhZ2UuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIERvdGNtc0xheW91dENvbXBvbmVudFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RvdGNtcy1sYXlvdXQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1Jvd0NvbXBvbmVudCwgQXN5bmNQaXBlXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICBAaWYgKHBhZ2VBc3NldCQgfCBhc3luYzsgYXMgcGFnZSkge1xuICAgICAgICAgICAgQGZvciAocm93IG9mIHRoaXMucGFnZT8ubGF5b3V0Py5ib2R5Py5yb3dzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8ZG90Y21zLXJvdyBbcm93XT1cInJvd1wiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICBgLFxuICAgIHN0eWxlVXJsOiAnLi9kb3RjbXMtbGF5b3V0LmNvbXBvbmVudC5jc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERvdGNtc0xheW91dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSBfcGFnZUFzc2V0ITogRG90Q01TUGFnZUFzc2V0O1xuXG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgRG90Q01TIHBhZ2UgYXNzZXQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7RG90Q01TUGFnZUFzc2V0fVxuICAgICAqIEBtZW1iZXJvZiBEb3RjbXNMYXlvdXRDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICAgIHNldCBwYWdlQXNzZXQodmFsdWU6IERvdENNU1BhZ2VBc3NldCkge1xuICAgICAgICB0aGlzLl9wYWdlQXNzZXQgPSB2YWx1ZTtcbiAgICAgICAgaWYgKCF2YWx1ZS5sYXlvdXQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICAnV2FybmluZzogcGFnZUFzc2V0IGRvZXMgbm90IGhhdmUgYSBgbGF5b3V0YCBwcm9wZXJ0eS4gTWlnaHQgYmUgdXNpbmcgYW4gYWR2YWNlZCB0ZW1wbGF0ZSBvciB5b3VyIGRvdENNUyBpbnN0YW5jZSBub3QgaGF2ZSBhIGVudGVycHJpc2UgbGljZW5zZS4nXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgRG90Q01TIHBhZ2UgYXNzZXQuXG4gICAgICpcbiAgICAgKiBAcmVhZG9ubHlcbiAgICAgKiBAdHlwZSB7RG90Q01TUGFnZUFzc2V0fVxuICAgICAqIEBtZW1iZXJvZiBEb3RjbXNMYXlvdXRDb21wb25lbnRcbiAgICAgKi9cbiAgICBnZXQgcGFnZUFzc2V0KCk6IERvdENNU1BhZ2VBc3NldCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYWdlQXNzZXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGBjb21wb25lbnRzYCBwcm9wZXJ0eSBpcyBhIHJlY29yZCBvZiBkeW5hbWljIGNvbXBvbmVudHMgZm9yIGVhY2ggQ29udGVudGxldCBvbiB0aGUgcGFnZS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtEb3RDTVNQYWdlQ29tcG9uZW50fVxuICAgICAqIEBtZW1iZXJvZiBEb3RjbXNMYXlvdXRDb21wb25lbnRcbiAgICAgKiBAcmVxdWlyZWRcbiAgICAgKi9cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBjb21wb25lbnRzITogRG90Q01TUGFnZUNvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIFRoZSBgb25SZWxvYWRgIHByb3BlcnR5IGlzIGEgZnVuY3Rpb24gdGhhdCByZWxvYWRzIHRoZSBwYWdlIGFmdGVyIGNoYW5nZXMgYXJlIG1hZGUuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgRG90Y21zTGF5b3V0Q29tcG9uZW50XG4gICAgICogQGRlcHJlY2F0ZWQgSW4gZnV0dXJlIGltcGxlbWVudGF0aW9uIHdlIHdpbGwgYmUgbGlzdGVuaW5nIGZvciB0aGUgY2hhbmdlcyBmcm9tIHRoZSBlZGl0b3IgdG8gdXBkYXRlIHRoZSBwYWdlIHN0YXRlIHNvIHJlbG9hZCB3aWxsIG5vdCBiZSBuZWVkZWQuXG4gICAgICovXG4gICAgQElucHV0KCkgb25SZWxvYWQhOiAoKSA9PiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAdHlwZSB7RG90Q01TRmV0Y2hDb25maWd9XG4gICAgICogQG1lbWJlcm9mIERvdENNU1BhZ2VFZGl0b3JDb25maWdcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGNvbmZpZ3VyYXRpb24gY3VzdG9tIHBhcmFtcyBmb3IgZGF0YSBmZXRjaGluZyBvbiBFZGl0IE1vZGUuXG4gICAgICogQGV4YW1wbGUgPGNhcHRpb24+RXhhbXBsZSB3aXRoIEN1c3RvbSBHcmFwaFFMIHF1ZXJ5PC9jYXB0aW9uPlxuICAgICAqIDxkb3RjbXMtbGF5b3V0IFtlZGl0b3JdPVwieyBxdWVyeTogJ3F1ZXJ5IHsgLi4uIH0nIH1cIi8+XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZSA8Y2FwdGlvbj5FeGFtcGxlIHVzYWdlIHdpdGggQ3VzdG9tIFBhZ2UgQVBJIHBhcmFtZXRlcnM8L2NhcHRpb24+XG4gICAgICogPGRvdGNtcy1sYXlvdXQgW2VkaXRvcl09XCJ7IHBhcmFtczogeyBkZXB0aDogJzInIH0gfVwiLz47XG4gICAgICovXG4gICAgQElucHV0KCkgZWRpdG9yITogRWRpdG9yQ29uZmlnO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwYWdlQ29udGV4dFNlcnZpY2UgPSBpbmplY3QoUGFnZUNvbnRleHRTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYkID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByaXZhdGUgY2xpZW50ITogRG90Q21zQ2xpZW50O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBwYWdlQXNzZXQkID0gdGhpcy5wYWdlQ29udGV4dFNlcnZpY2UuY3VycmVudFBhZ2UkO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMucGFnZUNvbnRleHRTZXJ2aWNlLnNldENvbnRleHQodGhpcy5wYWdlQXNzZXQsIHRoaXMuY29tcG9uZW50cyk7XG5cbiAgICAgICAgaWYgKCFpc0luc2lkZUVkaXRvcigpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsaWVudCA9IERvdENtc0NsaWVudC5pbnN0YW5jZTtcbiAgICAgICAgdGhpcy5yb3V0ZS51cmwucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmJCkpLnN1YnNjcmliZSgodXJsU2VnbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhdGhuYW1lID0gJy8nICsgdXJsU2VnbWVudHMuam9pbignLycpO1xuXG4gICAgICAgICAgICBpbml0RWRpdG9yKHsgcGF0aG5hbWUgfSk7XG4gICAgICAgICAgICB1cGRhdGVOYXZpZ2F0aW9uKHBhdGhuYW1lIHx8ICcvJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY2xpZW50LmVkaXRvci5vbignY2hhbmdlcycsIChkYXRhKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5vblJlbG9hZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25SZWxvYWQoKTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5wYWdlQ29udGV4dFNlcnZpY2Uuc2V0UGFnZUFzc2V0KGRhdGEgYXMgRG90Q01TUGFnZUFzc2V0KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcG9zdE1lc3NhZ2VUb0VkaXRvcih7IGFjdGlvbjogQ0xJRU5UX0FDVElPTlMuQ0xJRU5UX1JFQURZLCBwYXlsb2FkOiB0aGlzLmVkaXRvciB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKCFpc0luc2lkZUVkaXRvcigpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsaWVudC5lZGl0b3Iub2ZmKCdjaGFuZ2VzJyk7XG4gICAgfVxufVxuIl19
|
|
@@ -53,11 +53,16 @@ export const getContainersData = (containers, containerRef) => {
|
|
|
53
53
|
const acceptTypes = containerStructures
|
|
54
54
|
.map((structure) => structure.contentTypeVar)
|
|
55
55
|
.join(',');
|
|
56
|
-
|
|
56
|
+
// Get the contentlets for "this" container
|
|
57
|
+
const contentlets = containers[identifier].contentlets[`uuid-${uuid}`] ??
|
|
58
|
+
containers[identifier].contentlets[`uuid-dotParser_${uuid}`];
|
|
59
|
+
if (!contentlets) {
|
|
60
|
+
console.warn(`We couldn't find the contentlets for the container with the identifier ${identifier} and the uuid ${uuid} becareful by adding content to this container.\nWe recommend to change the container in the layout and add the content again.`);
|
|
61
|
+
}
|
|
57
62
|
return {
|
|
58
63
|
...containers[identifier].container,
|
|
59
64
|
acceptTypes,
|
|
60
|
-
contentlets,
|
|
65
|
+
contentlets: contentlets ?? [],
|
|
61
66
|
variantId
|
|
62
67
|
};
|
|
63
68
|
};
|
|
@@ -76,4 +81,4 @@ export const getPositionStyleClasses = (start, end) => {
|
|
|
76
81
|
endClass
|
|
77
82
|
};
|
|
78
83
|
};
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9hbmd1bGFyL3NyYy9saWIvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsc0NBQXNDO0FBQ3RDLGlDQUFpQztBQUNqQzs7O0dBR0c7QUFDSCxNQUFNLFdBQVcsR0FBa0M7SUFDL0MsQ0FBQyxFQUFFLFdBQVc7SUFDZCxDQUFDLEVBQUUsV0FBVztJQUNkLENBQUMsRUFBRSxXQUFXO0lBQ2QsQ0FBQyxFQUFFLFdBQVc7SUFDZCxDQUFDLEVBQUUsV0FBVztJQUNkLENBQUMsRUFBRSxXQUFXO0lBQ2QsQ0FBQyxFQUFFLFdBQVc7SUFDZCxDQUFDLEVBQUUsV0FBVztJQUNkLENBQUMsRUFBRSxXQUFXO0lBQ2QsRUFBRSxFQUFFLFlBQVk7SUFDaEIsRUFBRSxFQUFFLFlBQVk7SUFDaEIsRUFBRSxFQUFFLFlBQVk7SUFDaEIsRUFBRSxFQUFFLFlBQVk7Q0FDbkIsQ0FBQztBQUVGLHNDQUFzQztBQUN0QyxpQ0FBaUM7QUFDakM7OztHQUdHO0FBQ0gsTUFBTSxhQUFhLEdBQWtDO0lBQ2pELENBQUMsRUFBRSxhQUFhO0lBQ2hCLENBQUMsRUFBRSxhQUFhO0lBQ2hCLENBQUMsRUFBRSxhQUFhO0lBQ2hCLENBQUMsRUFBRSxhQUFhO0lBQ2hCLENBQUMsRUFBRSxhQUFhO0lBQ2hCLENBQUMsRUFBRSxhQUFhO0lBQ2hCLENBQUMsRUFBRSxhQUFhO0lBQ2hCLENBQUMsRUFBRSxhQUFhO0lBQ2hCLENBQUMsRUFBRSxhQUFhO0lBQ2hCLEVBQUUsRUFBRSxjQUFjO0lBQ2xCLEVBQUUsRUFBRSxjQUFjO0lBQ2xCLEVBQUUsRUFBRSxjQUFjO0NBQ3JCLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUM3QixVQUFvQyxFQUNwQyxZQUE2QixFQUMvQixFQUFFO0lBQ0EsTUFBTSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxZQUFZLENBQUM7SUFFMUMsTUFBTSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVsRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsU0FBUyxFQUFFLG9CQUFvQixJQUFJLEVBQUUsQ0FBQztJQUU1RCxNQUFNLFdBQVcsR0FBVyxtQkFBbUI7U0FDMUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDO1NBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVmLDJDQUEyQztJQUMzQyxNQUFNLFdBQVcsR0FDYixVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDbEQsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUVqRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsSUFBSSxDQUNSLDBFQUEwRSxVQUFVLGlCQUFpQixJQUFJLGdJQUFnSSxDQUM1TyxDQUFDO0lBQ04sQ0FBQztJQUVELE9BQU87UUFDSCxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTO1FBQ25DLFdBQVc7UUFDWCxXQUFXLEVBQUUsV0FBVyxJQUFJLEVBQUU7UUFDOUIsU0FBUztLQUNaLENBQUM7QUFDTixDQUFDLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEtBQWEsRUFBRSxHQUFXLEVBQUUsRUFBRTtJQUNsRSxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRWxDLE9BQU87UUFDSCxVQUFVO1FBQ1YsUUFBUTtLQUNYLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEb3RDTVNDb250YWluZXIsIERvdENNU1BhZ2VBc3NldENvbnRhaW5lciB9IGZyb20gJy4uL21vZGVscy9kb3RjbXMubW9kZWwnO1xuXG4vL0NoYW5nZWQgdGhlIHR5cGUsIHRvIGF2b2lkIFNRIGlzc3VlLlxuLy9UaGlzIHNob3VsZCBiZSBwdXQgaW5zaWRlIGEgbGliXG4vKipcbiAqIFJlcHJlc2VudHMgYSBtYXBwaW5nIG9mIG51bWJlcnMgdG8gY29ycmVzcG9uZGluZyBDU1MgY2xhc3MgbmFtZXMgZm9yIGNvbHVtbiBlbmQgdmFsdWVzLlxuICogQHR5cGVkZWYge1JlY29yZDxudW1iZXIsIHN0cmluZyB8IG51bGw+fSBFbmRDbGFzc01hcFxuICovXG5jb25zdCBlbmRDbGFzc01hcDogUmVjb3JkPG51bWJlciwgc3RyaW5nIHwgbnVsbD4gPSB7XG4gICAgMTogJ2NvbC1lbmQtMScsXG4gICAgMjogJ2NvbC1lbmQtMicsXG4gICAgMzogJ2NvbC1lbmQtMycsXG4gICAgNDogJ2NvbC1lbmQtNCcsXG4gICAgNTogJ2NvbC1lbmQtNScsXG4gICAgNjogJ2NvbC1lbmQtNicsXG4gICAgNzogJ2NvbC1lbmQtNycsXG4gICAgODogJ2NvbC1lbmQtOCcsXG4gICAgOTogJ2NvbC1lbmQtOScsXG4gICAgMTA6ICdjb2wtZW5kLTEwJyxcbiAgICAxMTogJ2NvbC1lbmQtMTEnLFxuICAgIDEyOiAnY29sLWVuZC0xMicsXG4gICAgMTM6ICdjb2wtZW5kLTEzJ1xufTtcblxuLy9DaGFuZ2VkIHRoZSB0eXBlLCB0byBhdm9pZCBTUSBpc3N1ZS5cbi8vVGhpcyBzaG91bGQgYmUgcHV0IGluc2lkZSBhIGxpYlxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbWFwcGluZyBvZiBudW1iZXJzIHRvIENTUyBjbGFzcyBuYW1lcyBmb3Igc3RhcnRpbmcgY29sdW1ucy5cbiAqIEB0eXBlZGVmIHtSZWNvcmQ8bnVtYmVyLCBzdHJpbmcgfCBudWxsPn0gU3RhcnRDbGFzc01hcFxuICovXG5jb25zdCBzdGFydENsYXNzTWFwOiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmcgfCBudWxsPiA9IHtcbiAgICAxOiAnY29sLXN0YXJ0LTEnLFxuICAgIDI6ICdjb2wtc3RhcnQtMicsXG4gICAgMzogJ2NvbC1zdGFydC0zJyxcbiAgICA0OiAnY29sLXN0YXJ0LTQnLFxuICAgIDU6ICdjb2wtc3RhcnQtNScsXG4gICAgNjogJ2NvbC1zdGFydC02JyxcbiAgICA3OiAnY29sLXN0YXJ0LTcnLFxuICAgIDg6ICdjb2wtc3RhcnQtOCcsXG4gICAgOTogJ2NvbC1zdGFydC05JyxcbiAgICAxMDogJ2NvbC1zdGFydC0xMCcsXG4gICAgMTE6ICdjb2wtc3RhcnQtMTEnLFxuICAgIDEyOiAnY29sLXN0YXJ0LTEyJ1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGRhdGEgZm9yIGEgc2V0IG9mIGNvbnRhaW5lcnMuXG4gKlxuICogQHBhcmFtIGNvbnRhaW5lcnMgLSBUaGUgRG90Q01TUGFnZUFzc2V0Q29udGFpbmVyIG9iamVjdCBjb250YWluaW5nIHRoZSBjb250YWluZXJzLlxuICogQHBhcmFtIGNvbnRhaW5lclJlZiAtIFRoZSBEb3RDTVNDb250YWluZXIgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgY29udGFpbmVyIHJlZmVyZW5jZS5cbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBjb250YWluZXIgZGF0YSwgYWNjZXB0IHR5cGVzLCBjb250ZW50bGV0cywgYW5kIHZhcmlhbnQgSUQuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRDb250YWluZXJzRGF0YSA9IChcbiAgICBjb250YWluZXJzOiBEb3RDTVNQYWdlQXNzZXRDb250YWluZXIsXG4gICAgY29udGFpbmVyUmVmOiBEb3RDTVNDb250YWluZXJcbikgPT4ge1xuICAgIGNvbnN0IHsgaWRlbnRpZmllciwgdXVpZCB9ID0gY29udGFpbmVyUmVmO1xuXG4gICAgY29uc3QgeyBjb250YWluZXJTdHJ1Y3R1cmVzLCBjb250YWluZXIgfSA9IGNvbnRhaW5lcnNbaWRlbnRpZmllcl07XG5cbiAgICBjb25zdCB7IHZhcmlhbnRJZCB9ID0gY29udGFpbmVyPy5wYXJlbnRQZXJtaXNzaW9uYWJsZSB8fCB7fTtcblxuICAgIGNvbnN0IGFjY2VwdFR5cGVzOiBzdHJpbmcgPSBjb250YWluZXJTdHJ1Y3R1cmVzXG4gICAgICAgIC5tYXAoKHN0cnVjdHVyZSkgPT4gc3RydWN0dXJlLmNvbnRlbnRUeXBlVmFyKVxuICAgICAgICAuam9pbignLCcpO1xuXG4gICAgLy8gR2V0IHRoZSBjb250ZW50bGV0cyBmb3IgXCJ0aGlzXCIgY29udGFpbmVyXG4gICAgY29uc3QgY29udGVudGxldHMgPVxuICAgICAgICBjb250YWluZXJzW2lkZW50aWZpZXJdLmNvbnRlbnRsZXRzW2B1dWlkLSR7dXVpZH1gXSA/P1xuICAgICAgICBjb250YWluZXJzW2lkZW50aWZpZXJdLmNvbnRlbnRsZXRzW2B1dWlkLWRvdFBhcnNlcl8ke3V1aWR9YF07XG5cbiAgICBpZiAoIWNvbnRlbnRsZXRzKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBXZSBjb3VsZG4ndCBmaW5kIHRoZSBjb250ZW50bGV0cyBmb3IgdGhlIGNvbnRhaW5lciB3aXRoIHRoZSBpZGVudGlmaWVyICR7aWRlbnRpZmllcn0gYW5kIHRoZSB1dWlkICR7dXVpZH0gYmVjYXJlZnVsIGJ5IGFkZGluZyBjb250ZW50IHRvIHRoaXMgY29udGFpbmVyLlxcbldlIHJlY29tbWVuZCB0byBjaGFuZ2UgdGhlIGNvbnRhaW5lciBpbiB0aGUgbGF5b3V0IGFuZCBhZGQgdGhlIGNvbnRlbnQgYWdhaW4uYFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbnRhaW5lcnNbaWRlbnRpZmllcl0uY29udGFpbmVyLFxuICAgICAgICBhY2NlcHRUeXBlcyxcbiAgICAgICAgY29udGVudGxldHM6IGNvbnRlbnRsZXRzID8/IFtdLFxuICAgICAgICB2YXJpYW50SWRcbiAgICB9O1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwb3NpdGlvbiBzdHlsZSBjbGFzc2VzIGJhc2VkIG9uIHRoZSBzdGFydCBhbmQgZW5kIHZhbHVlcy5cbiAqIFVzZWQgdG8gc2V0IHRoZSBncmlkIGNvbHVtbiBzdGFydCBhbmQgZW5kIHZhbHVlcy5cbiAqIEBwYXJhbSBzdGFydCAtIFRoZSBzdGFydCB2YWx1ZS5cbiAqIEBwYXJhbSBlbmQgLSBUaGUgZW5kIHZhbHVlLlxuICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHN0YXJ0Q2xhc3MgYW5kIGVuZENsYXNzLlxuICovXG5leHBvcnQgY29uc3QgZ2V0UG9zaXRpb25TdHlsZUNsYXNzZXMgPSAoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBzdGFydENsYXNzID0gc3RhcnRDbGFzc01hcFtzdGFydF07XG4gICAgY29uc3QgZW5kQ2xhc3MgPSBlbmRDbGFzc01hcFtlbmRdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3RhcnRDbGFzcyxcbiAgICAgICAgZW5kQ2xhc3NcbiAgICB9O1xufTtcbiJdfQ==
|
|
@@ -2,7 +2,7 @@ import { TINYMCE_SCRIPT_SRC, EditorComponent } from '@tinymce/tinymce-angular';
|
|
|
2
2
|
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
|
-
import { isInsideEditor, DotCmsClient, postMessageToEditor,
|
|
5
|
+
import { NOTIFY_CLIENT, isInsideEditor, DotCmsClient, postMessageToEditor, CLIENT_ACTIONS, initEditor, updateNavigation } from '@dotcms/client';
|
|
6
6
|
import { AsyncPipe, NgComponentOutlet } from '@angular/common';
|
|
7
7
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
8
8
|
import { ActivatedRoute } from '@angular/router';
|
|
@@ -124,7 +124,7 @@ class DotEditableTextComponent {
|
|
|
124
124
|
*/
|
|
125
125
|
onMessage({ data }) {
|
|
126
126
|
const { name, payload } = data;
|
|
127
|
-
if (name !==
|
|
127
|
+
if (name !== NOTIFY_CLIENT.UVE_COPY_CONTENTLET_INLINE_EDITING_SUCCESS) {
|
|
128
128
|
return;
|
|
129
129
|
}
|
|
130
130
|
const { oldInode, inode } = payload;
|
|
@@ -167,7 +167,7 @@ class DotEditableTextComponent {
|
|
|
167
167
|
event.preventDefault();
|
|
168
168
|
try {
|
|
169
169
|
postMessageToEditor({
|
|
170
|
-
action:
|
|
170
|
+
action: CLIENT_ACTIONS.COPY_CONTENTLET_INLINE_EDITING,
|
|
171
171
|
payload: {
|
|
172
172
|
dataset: {
|
|
173
173
|
inode,
|
|
@@ -195,7 +195,7 @@ class DotEditableTextComponent {
|
|
|
195
195
|
const { inode, languageId: langId } = this.contentlet;
|
|
196
196
|
try {
|
|
197
197
|
postMessageToEditor({
|
|
198
|
-
action:
|
|
198
|
+
action: CLIENT_ACTIONS.UPDATE_CONTENTLET_INLINE_EDITING,
|
|
199
199
|
payload: {
|
|
200
200
|
content,
|
|
201
201
|
dataset: {
|
|
@@ -396,11 +396,16 @@ const getContainersData = (containers, containerRef) => {
|
|
|
396
396
|
const acceptTypes = containerStructures
|
|
397
397
|
.map((structure) => structure.contentTypeVar)
|
|
398
398
|
.join(',');
|
|
399
|
-
|
|
399
|
+
// Get the contentlets for "this" container
|
|
400
|
+
const contentlets = containers[identifier].contentlets[`uuid-${uuid}`] ??
|
|
401
|
+
containers[identifier].contentlets[`uuid-dotParser_${uuid}`];
|
|
402
|
+
if (!contentlets) {
|
|
403
|
+
console.warn(`We couldn't find the contentlets for the container with the identifier ${identifier} and the uuid ${uuid} becareful by adding content to this container.\nWe recommend to change the container in the layout and add the content again.`);
|
|
404
|
+
}
|
|
400
405
|
return {
|
|
401
406
|
...containers[identifier].container,
|
|
402
407
|
acceptTypes,
|
|
403
|
-
contentlets,
|
|
408
|
+
contentlets: contentlets ?? [],
|
|
404
409
|
variantId
|
|
405
410
|
};
|
|
406
411
|
};
|
|
@@ -808,7 +813,7 @@ class DotcmsLayoutComponent {
|
|
|
808
813
|
}
|
|
809
814
|
this.pageContextService.setPageAsset(data);
|
|
810
815
|
});
|
|
811
|
-
postMessageToEditor({ action:
|
|
816
|
+
postMessageToEditor({ action: CLIENT_ACTIONS.CLIENT_READY, payload: this.editor });
|
|
812
817
|
}
|
|
813
818
|
ngOnDestroy() {
|
|
814
819
|
if (!isInsideEditor()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dotcms-angular.mjs","sources":["../../../../../libs/sdk/angular/src/lib/components/dot-editable-text/utils.ts","../../../../../libs/sdk/angular/src/lib/components/dot-editable-text/dot-editable-text.component.ts","../../../../../libs/sdk/angular/src/lib/components/dot-editable-text/dot-editable-text.component.html","../../../../../libs/sdk/angular/src/lib/services/dotcms-context/page-context.service.ts","../../../../../libs/sdk/angular/src/lib/utils/index.ts","../../../../../libs/sdk/angular/src/lib/components/no-component/no-component.component.ts","../../../../../libs/sdk/angular/src/lib/layout/contentlet/contentlet.component.ts","../../../../../libs/sdk/angular/src/lib/layout/container/container.component.ts","../../../../../libs/sdk/angular/src/lib/layout/container/container.component.html","../../../../../libs/sdk/angular/src/lib/layout/column/column.component.ts","../../../../../libs/sdk/angular/src/lib/layout/row/row.component.ts","../../../../../libs/sdk/angular/src/lib/layout/dotcms-layout/dotcms-layout.component.ts","../../../../../libs/sdk/angular/src/lib/models/dotcms.model.ts","../../../../../libs/sdk/angular/src/lib/models/index.ts","../../../../../libs/sdk/angular/src/dotcms-angular.ts"],"sourcesContent":["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 CUSTOMER_ACTIONS,\n DotCmsClient,\n isInsideEditor,\n postMessageToEditor\n} from '@dotcms/client';\n\nimport { TINYMCE_CONFIG, DOT_EDITABLE_TEXT_FORMAT, DOT_EDITABLE_TEXT_MODE } from './utils';\n\nimport { DotCMSContentlet } from '../../models';\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 DotEditableTextComponent\n * @implements {OnInit}\n * @implements {OnChanges}\n */\n@Component({\n selector: 'dot-editable-text',\n standalone: true,\n templateUrl: './dot-editable-text.component.html',\n styleUrl: './dot-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 DotEditableTextComponent 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 DotEditableTextComponent\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 DotEditableTextComponent\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 DotEditableTextComponent\n */\n @Input() contentlet!: DotCMSContentlet;\n /**\n * Represents the field name of the `contentlet` that can be edited\n *\n * @memberof DotEditableTextComponent\n */\n @Input() fieldName = '';\n\n /**\n * Represents the content of the `contentlet` that can be edited\n *\n * @protected\n * @memberof DotEditableTextComponent\n */\n protected content = '';\n /**\n * Represents the configuration of the editor\n *\n * @protected\n * @type {EditorComponent['init']}\n * @memberof DotEditableTextComponent\n */\n protected init!: EditorComponent['init'];\n /**\n * Represents if the component is inside the editor\n *\n * @protected\n * @type {boolean}\n * @memberof DotEditableTextComponent\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 DotEditableTextComponent\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 DotEditableTextComponent\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 DotEditableTextComponent\n */\n @HostListener('window:message', ['$event'])\n onMessage({ data }: MessageEvent) {\n const { name, payload } = data;\n if (name !== '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 DotEditableTextComponent\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: CUSTOMER_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 DotEditableTextComponent\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: CUSTOMER_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 DotEditableTextComponent\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 DotEditableTextComponent\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 { BehaviorSubject, Observable } from 'rxjs';\n\nimport { Injectable } from '@angular/core';\n\nimport { map } from 'rxjs/operators';\n\nimport { isInsideEditor } from '@dotcms/client';\n\nimport { DotCMSPageComponent, DotCMSPageContext } from '../../models';\nimport { DotCMSPageAsset } from '../../models/dotcms.model';\n\n/**\n * @author dotCMS\n * @description This service is responsible for managing the page context.\n * @export\n * @class PageContextService\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class PageContextService {\n private context$ = new BehaviorSubject<DotCMSPageContext | null>(null);\n\n /**\n * @description Get the context\n * @readonly\n * @type {DotCMSPageContext}\n * @memberof PageContextService\n */\n get context(): DotCMSPageContext {\n return this.context$.getValue() as DotCMSPageContext;\n }\n\n /**\n * @description Get the context as an observable\n * @readonly\n * @memberof PageContextService\n */\n get contextObs$() {\n return this.context$.asObservable();\n }\n\n /**\n * @description Get the current page asset\n * @readonly\n * @type {(Observable<DotCMSPageAsset | null>)}\n * @memberof PageContextService\n */\n get currentPage$(): Observable<DotCMSPageAsset | null> {\n return this.contextObs$.pipe(map((context) => context?.pageAsset || null));\n }\n\n /**\n *\n * @description Set the context\n * @param {DotCMSPageAsset} value\n * @memberof DotcmsContextService\n */\n setContext(pageAsset: DotCMSPageAsset, components: DotCMSPageComponent) {\n this.context$.next({\n pageAsset,\n components,\n isInsideEditor: isInsideEditor()\n });\n }\n\n /**\n * @description Set the page asset in the context\n * @param {DotCMSPageAsset} pageAsset\n * @memberof PageContextService\n */\n setPageAsset(pageAsset: DotCMSPageAsset) {\n this.context$.next({\n ...this.context,\n pageAsset\n });\n }\n}\n","import { DotCMSContainer, DotCMSPageAssetContainer } from '../models/dotcms.model';\n\n//Changed the type, to avoid SQ issue.\n//This should be put inside a lib\n/**\n * Represents a mapping of numbers to corresponding CSS class names for column end values.\n * @typedef {Record<number, string | null>} EndClassMap\n */\nconst endClassMap: Record<number, string | null> = {\n 1: 'col-end-1',\n 2: 'col-end-2',\n 3: 'col-end-3',\n 4: 'col-end-4',\n 5: 'col-end-5',\n 6: 'col-end-6',\n 7: 'col-end-7',\n 8: 'col-end-8',\n 9: 'col-end-9',\n 10: 'col-end-10',\n 11: 'col-end-11',\n 12: 'col-end-12',\n 13: 'col-end-13'\n};\n\n//Changed the type, to avoid SQ issue.\n//This should be put inside a lib\n/**\n * Represents a mapping of numbers to CSS class names for starting columns.\n * @typedef {Record<number, string | null>} StartClassMap\n */\nconst startClassMap: Record<number, string | null> = {\n 1: 'col-start-1',\n 2: 'col-start-2',\n 3: 'col-start-3',\n 4: 'col-start-4',\n 5: 'col-start-5',\n 6: 'col-start-6',\n 7: 'col-start-7',\n 8: 'col-start-8',\n 9: 'col-start-9',\n 10: 'col-start-10',\n 11: 'col-start-11',\n 12: 'col-start-12'\n};\n\n/**\n * Retrieves the data for a set of containers.\n *\n * @param containers - The DotCMSPageAssetContainer object containing the containers.\n * @param containerRef - The DotCMSContainer object representing the container reference.\n * @returns An object containing the container data, accept types, contentlets, and variant ID.\n */\nexport const getContainersData = (\n containers: DotCMSPageAssetContainer,\n containerRef: DotCMSContainer\n) => {\n const { identifier, uuid } = containerRef;\n\n const { containerStructures, container } = containers[identifier];\n\n const { variantId } = container?.parentPermissionable || {};\n\n const acceptTypes: string = containerStructures\n .map((structure) => structure.contentTypeVar)\n .join(',');\n\n const contentlets = containers[identifier].contentlets[`uuid-${uuid}`];\n\n return {\n ...containers[identifier].container,\n acceptTypes,\n contentlets,\n variantId\n };\n};\n\n/**\n * Returns the position style classes based on the start and end values.\n * Used to set the grid column start and end values.\n * @param start - The start value.\n * @param end - The end value.\n * @returns An object containing the startClass and endClass.\n */\nexport const getPositionStyleClasses = (start: number, end: number) => {\n const startClass = startClassMap[start];\n const endClass = endClassMap[end];\n\n return {\n startClass,\n endClass\n };\n};\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nimport { DotCMSContentlet } from '../../models';\n\n/**\n * This component is responsible to display a message when there is no component for a contentlet.\n *\n * @export\n * @class NoComponent\n */\n@Component({\n selector: 'dotcms-no-component',\n standalone: true,\n template: `\n No Component for {{ contentlet.contentType }}\n `,\n styleUrl: './no-component.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NoComponent {\n /**\n * The contentlet object containing content data.\n * The component displays a message based on the content type of this contentlet.\n */\n @Input() contentlet!: DotCMSContentlet;\n\n /**\n * The data-testid attribute used for identifying the component during testing.\n */\n @HostBinding('attr.data-testid') testId = 'no-component';\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnChanges } from '@angular/core';\n\nimport { DotCMSContentlet } from '../../models';\n\n/**\n * This component is responsible to display a contentlet.\n *\n * @export\n * @class ContentletComponent\n * @implements {OnChanges}\n */\n@Component({\n selector: 'dotcms-contentlet-wrapper',\n standalone: true,\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ContentletComponent implements OnChanges {\n /**\n * The contentlet object containing content data.\n *\n * @type {DotCMSContentlet}\n * @memberof ContentletComponent\n */\n @Input({ required: true }) contentlet!: DotCMSContentlet;\n /**\n * The container data (as string) where the contentlet is located.\n *\n * @type {string}\n * @memberof ContentletComponent\n */\n @Input() container!: string;\n\n /**\n * The identifier of contentlet component.\n *\n * @type {(string | null)}\n * @memberof ContentletComponent\n */\n @HostBinding('attr.data-dot-identifier') identifier: string | null = null;\n /**\n * The base type of contentlet component.\n *\n * @type {(string | null)}\n * @memberof ContentletComponent\n */\n @HostBinding('attr.data-dot-basetype') baseType: string | null = null;\n /**\n * The title of contentlet component.\n *\n * @type {(string | null)}\n * @memberof ContentletComponent\n */\n @HostBinding('attr.data-dot-title') title: string | null = null;\n /**\n * The inode of contentlet component.\n *\n * @type {(string | null)}\n * @memberof ContentletComponent\n */\n @HostBinding('attr.data-dot-inode') inode: string | null = null;\n /**\n * The type of contentlet component.\n *\n * @type {(string | null)}\n * @memberof ContentletComponent\n */\n @HostBinding('attr.data-dot-type') dotType: string | null = null;\n /**\n * The container of contentlet component.\n *\n * @type {(string | null)}\n * @memberof ContentletComponent\n */\n @HostBinding('attr.data-dot-container') dotContainer: string | null = null;\n /**\n * The number of pages where the contentlet appears\n *\n * @type {(string | null)}\n * @memberof ContentletComponent\n */\n @HostBinding('attr.data-dot-on-number-of-pages') numberOfPages: string | null = null;\n /**\n * The content of contentlet component.\n *\n * @type {(string | null)}\n * @memberof ContentletComponent\n */\n @HostBinding('attr.data-dot-object') dotContent: string | null = null;\n\n ngOnChanges() {\n this.identifier = this.contentlet.identifier;\n this.baseType = this.contentlet.baseType;\n this.title = this.contentlet.title;\n this.inode = this.contentlet.inode;\n this.dotType = this.contentlet.contentType;\n this.dotContainer = this.container;\n this.numberOfPages = this.contentlet['onNumberOfPages'];\n this.dotContent = 'contentlet';\n }\n}\n","import { AsyncPipe, NgComponentOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnChanges,\n computed,\n inject,\n signal\n} from '@angular/core';\n\nimport { NoComponent } from '../../components/no-component/no-component.component';\nimport { DynamicComponentEntity } from '../../models';\nimport { DotCMSContainer, DotCMSContentlet } from '../../models/dotcms.model';\nimport { PageContextService } from '../../services/dotcms-context/page-context.service';\nimport { getContainersData } from '../../utils';\nimport { ContentletComponent } from '../contentlet/contentlet.component';\n\ninterface DotContainer {\n acceptTypes: string;\n identifier: string;\n maxContentlets: number;\n uuid: string;\n variantId?: string;\n}\n\n/**\n * This component is responsible to display a container with contentlets.\n *\n * @export\n * @class ContainerComponent\n * @implements {OnChanges}\n */\n@Component({\n selector: 'dotcms-container',\n standalone: true,\n imports: [AsyncPipe, NgComponentOutlet, NoComponent, ContentletComponent],\n templateUrl: './container.component.html',\n styleUrl: './container.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ContainerComponent implements OnChanges {\n /**\n * The container object containing the contentlets.\n *\n * @type {DotCMSContainer}\n * @memberof ContainerComponent\n */\n @Input({ required: true }) container!: DotCMSContainer;\n\n private readonly pageContextService: PageContextService = inject(PageContextService);\n protected readonly NoComponent = NoComponent;\n protected readonly $isInsideEditor = signal<boolean>(false);\n\n protected componentsMap!: Record<string, DynamicComponentEntity>;\n protected $contentlets = signal<DotCMSContentlet[]>([]);\n protected $dotContainer = signal<DotContainer | null>(null);\n protected $dotContainerAsString = computed(() => JSON.stringify(this.$dotContainer()));\n\n /**\n * The accept types for the container component.\n *\n * @type {(string | null)}\n * @memberof ContainerComponent\n */\n @HostBinding('attr.data-dot-accept-types') acceptTypes: string | null = null;\n\n /**\n * The identifier for the container component.\n *\n * @type {(string | null)}\n * @memberof ContainerComponent\n */\n @HostBinding('attr.data-dot-identifier') identifier: string | null = null;\n /**\n * The max contentlets for the container component.\n *\n * @type {(number | null)}\n * @memberof ContainerComponent\n */\n @HostBinding('attr.data-max-contentlets') maxContentlets: number | null = null;\n /**\n * The uuid for the container component.\n *\n * @type {(string | null)}\n * @memberof ContainerComponent\n */\n @HostBinding('attr.data-dot-uuid') uuid: string | null = null;\n /**\n * The class for the container component.\n *\n * @type {(string | null)}\n * @memberof ContainerComponent\n */\n @HostBinding('class') class: string | null = null;\n /**\n * The dot object for the container component.\n *\n * @type {(string | null)}\n * @memberof ContainerComponent\n */\n @HostBinding('attr.data-dot-object') dotObject: string | null = null;\n /**\n * The data-testid attribute used for identifying the component during testing.\n *\n * @memberof ContainerComponent\n */\n @HostBinding('attr.data-testid') testId = 'dot-container';\n\n ngOnChanges() {\n const { pageAsset, components, isInsideEditor } = this.pageContextService.context;\n const { acceptTypes, maxContentlets, variantId, path, contentlets } = getContainersData(\n pageAsset.containers,\n this.container\n );\n const { identifier, uuid } = this.container;\n\n this.componentsMap = components;\n\n this.$isInsideEditor.set(isInsideEditor);\n this.$contentlets.set(contentlets);\n this.$dotContainer.set({\n identifier: path ?? identifier,\n acceptTypes,\n maxContentlets,\n variantId,\n uuid\n });\n\n if (this.$isInsideEditor()) {\n this.acceptTypes = acceptTypes;\n this.identifier = identifier;\n this.maxContentlets = maxContentlets;\n this.uuid = uuid;\n this.class = this.$contentlets().length ? null : 'empty-container';\n this.dotObject = 'container';\n }\n }\n}\n","@if ($isInsideEditor()) {\n @if ($contentlets().length) {\n @for (contentlet of $contentlets(); track $index) {\n <dotcms-contentlet-wrapper\n [contentlet]=\"contentlet\"\n [container]=\"$dotContainerAsString()\">\n <ng-container\n *ngComponentOutlet=\"\n (componentsMap[contentlet.contentType] || componentsMap['CustomNoComponent']\n | async) || NoComponent;\n inputs: { contentlet }\n \" />\n </dotcms-contentlet-wrapper>\n }\n } @else {\n This container is empty.\n }\n} @else {\n @for (contentlet of $contentlets(); track $index) {\n <ng-container\n *ngComponentOutlet=\"\n componentsMap[contentlet.contentType] | async;\n inputs: { contentlet }\n \" />\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit } from '@angular/core';\n\nimport { DotPageAssetLayoutColumn } from '../../models';\nimport { getPositionStyleClasses } from '../../utils';\nimport { ContainerComponent } from '../container/container.component';\n\n/**\n * This component is responsible to display a column with containers.\n *\n * @export\n * @class ColumnComponent\n * @implements {OnInit}\n */\n@Component({\n selector: 'dotcms-column',\n standalone: true,\n imports: [ContainerComponent],\n template: `\n @for (container of column.containers; track $index) {\n <dotcms-container [container]=\"container\" />\n }\n `,\n styleUrl: './column.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ColumnComponent implements OnInit {\n /**\n * The column object containing the containers.\n *\n * @type {DotPageAssetLayoutColumn}\n * @memberof ColumnComponent\n */\n @Input() column!: DotPageAssetLayoutColumn;\n\n /**\n * The data-testid attribute used for identifying the component during testing.\n *\n * @memberof ColumnComponent\n */\n @HostBinding('class') containerClasses = '';\n\n ngOnInit() {\n const { startClass, endClass } = getPositionStyleClasses(\n this.column.leftOffset,\n this.column.width + this.column.leftOffset\n );\n this.containerClasses = `${startClass} ${endClass}`;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { DotPageAssetLayoutRow } from '../../models';\nimport { ColumnComponent } from '../column/column.component';\n\n/**\n * This component is responsible to display a row with columns.\n *\n * @export\n * @class RowComponent\n */\n@Component({\n selector: 'dotcms-row',\n standalone: true,\n imports: [ColumnComponent],\n template: `\n @for (column of row.columns; track $index) {\n <dotcms-column [column]=\"column\" />\n }\n `,\n styleUrl: './row.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class RowComponent {\n /**\n * The row object containing the columns.\n *\n * @type {DotPageAssetLayoutRow}\n * @memberof RowComponent\n */\n @Input({ required: true }) row!: DotPageAssetLayoutRow;\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Input,\n OnInit,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute } from '@angular/router';\n\nimport {\n CUSTOMER_ACTIONS,\n DotCmsClient,\n EditorConfig,\n initEditor,\n isInsideEditor,\n postMessageToEditor,\n updateNavigation\n} from '@dotcms/client';\n\nimport { DotCMSPageComponent } from '../../models';\nimport { DotCMSPageAsset } from '../../models/dotcms.model';\nimport { PageContextService } from '../../services/dotcms-context/page-context.service';\nimport { RowComponent } from '../row/row.component';\n\n/**\n * `DotcmsLayoutComponent` is a class that represents the layout for a DotCMS page.\n * It includes a `pageAsset` property that represents the DotCMS page asset and a `components` property that represents the dynamic components for the page.\n *\n * @export\n * @class DotcmsLayoutComponent\n */\n@Component({\n selector: 'dotcms-layout',\n standalone: true,\n imports: [RowComponent, AsyncPipe],\n template: `\n @if (pageAsset$ | async; as page) {\n @for (row of this.page?.layout?.body?.rows; track $index) {\n <dotcms-row [row]=\"row\" />\n }\n }\n `,\n styleUrl: './dotcms-layout.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DotcmsLayoutComponent implements OnInit {\n private _pageAsset!: DotCMSPageAsset;\n\n /**\n * Represents the DotCMS page asset.\n *\n * @type {DotCMSPageAsset}\n * @memberof DotcmsLayoutComponent\n */\n @Input({ required: true })\n set pageAsset(value: DotCMSPageAsset) {\n this._pageAsset = value;\n if (!value.layout) {\n console.warn(\n 'Warning: pageAsset does not have a `layout` property. Might be using an advaced template or your dotCMS instance not have a enterprise license.'\n );\n }\n }\n\n /**\n * Returns the DotCMS page asset.\n *\n * @readonly\n * @type {DotCMSPageAsset}\n * @memberof DotcmsLayoutComponent\n */\n get pageAsset(): DotCMSPageAsset {\n return this._pageAsset;\n }\n\n /**\n * The `components` property is a record of dynamic components for each Contentlet on the page.\n *\n * @type {DotCMSPageComponent}\n * @memberof DotcmsLayoutComponent\n * @required\n */\n @Input({ required: true }) components!: DotCMSPageComponent;\n\n /**\n * The `onReload` property is a function that reloads the page after changes are made.\n *\n * @memberof DotcmsLayoutComponent\n * @deprecated In future implementation we will be listening for the changes from the editor to update the page state so reload will not be needed.\n */\n @Input() onReload!: () => void;\n\n /**\n *\n * @type {DotCMSFetchConfig}\n * @memberof DotCMSPageEditorConfig\n * @description The configuration custom params for data fetching on Edit Mode.\n * @example <caption>Example with Custom GraphQL query</caption>\n * <dotcms-layout [editor]=\"{ query: 'query { ... }' }\"/>\n *\n * @example <caption>Example usage with Custom Page API parameters</caption>\n * <dotcms-layout [editor]=\"{ params: { depth: '2' } }\"/>;\n */\n @Input() editor!: EditorConfig;\n\n private readonly route = inject(ActivatedRoute);\n private readonly pageContextService = inject(PageContextService);\n private readonly destroyRef$ = inject(DestroyRef);\n private client!: DotCmsClient;\n protected readonly pageAsset$ = this.pageContextService.currentPage$;\n\n ngOnInit() {\n this.pageContextService.setContext(this.pageAsset, this.components);\n\n if (!isInsideEditor()) {\n return;\n }\n\n this.client = DotCmsClient.instance;\n this.route.url.pipe(takeUntilDestroyed(this.destroyRef$)).subscribe((urlSegments) => {\n const pathname = '/' + urlSegments.join('/');\n\n initEditor({ pathname });\n updateNavigation(pathname || '/');\n });\n\n this.client.editor.on('changes', (data) => {\n if (this.onReload) {\n this.onReload();\n\n return;\n }\n\n this.pageContextService.setPageAsset(data as DotCMSPageAsset);\n });\n\n postMessageToEditor({ action: CUSTOMER_ACTIONS.CLIENT_READY, payload: this.editor });\n }\n\n ngOnDestroy() {\n if (!isInsideEditor()) {\n return;\n }\n\n this.client.editor.off('changes');\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport interface DotCMSPageAsset {\n canCreateTemplate: boolean;\n containers: DotCMSPageAssetContainer;\n layout: DotCMSLayout;\n page: DotCMSPage;\n site: DotCMSSite;\n template: DotCMSTemplate;\n viewAs: DotCMSViewAs;\n vanityUrl?: {\n pattern: string;\n vanityUrlId: string;\n url: string;\n siteId: string;\n languageId: number;\n forwardTo: string;\n response: number;\n order: number;\n temporaryRedirect: boolean;\n permanentRedirect: boolean;\n forward: boolean;\n };\n}\n\nexport interface DotPageAssetLayoutRow {\n identifier: number;\n value?: string;\n id?: string;\n columns: DotPageAssetLayoutColumn[];\n styleClass?: string;\n}\n\nexport interface DotPageAssetLayoutColumn {\n preview: boolean;\n containers: DotCMSContainer[];\n widthPercent: number;\n width: number;\n leftOffset: number;\n left: number;\n styleClass?: string;\n}\n\nexport interface DotCMSPageAssetContainer {\n [key: string]: {\n container: DotCMSContainer;\n containerStructures: DotCMSContainerStructure[];\n contentlets: {\n [key: string]: DotCMSContentlet[];\n };\n };\n}\n\nexport interface DotCMSContainer {\n identifier: string;\n uuid: string;\n iDate: number;\n type: string;\n owner?: string;\n inode: string;\n source: string;\n title: string;\n friendlyName: string;\n modDate: number;\n modUser: string;\n sortOrder: number;\n showOnMenu: boolean;\n code?: string;\n maxContentlets: number;\n useDiv: boolean;\n sortContentletsBy?: string;\n preLoop: string;\n postLoop: string;\n staticify: boolean;\n luceneQuery?: string;\n notes: string;\n languageId?: number;\n path?: string;\n live: boolean;\n locked: boolean;\n working: boolean;\n deleted: boolean;\n name: string;\n archived: boolean;\n permissionId: string;\n versionId: string;\n versionType: string;\n permissionType: string;\n categoryId: string;\n idate: number;\n new: boolean;\n acceptTypes: string;\n contentlets: DotCMSContentlet[];\n parentPermissionable: DotCMSSiteParentPermissionable;\n}\n\nexport interface DotCMSContentlet {\n archived: boolean;\n baseType: string;\n deleted?: boolean;\n binary?: string;\n binaryContentAsset?: string;\n binaryVersion?: string;\n contentType: string;\n file?: string;\n folder: string;\n hasLiveVersion?: boolean;\n hasTitleImage: boolean;\n host: string;\n hostName: string;\n identifier: string;\n inode: string;\n image?: string;\n languageId: number;\n language?: string;\n live: boolean;\n locked: boolean;\n mimeType?: string;\n modDate: string;\n modUser: string;\n modUserName: string;\n owner: string;\n sortOrder: number;\n stInode: string;\n title: string;\n titleImage: string;\n text?: string;\n url: string;\n working: boolean;\n body?: string;\n contentTypeIcon?: string;\n variant?: string;\n __icon__?: string;\n [key: string]: any; // This is a catch-all for any other custom properties that might be on the contentlet.\n}\n\nexport interface DotcmsNavigationItem {\n code?: any;\n folder: string;\n children?: DotcmsNavigationItem[];\n host: string;\n languageId: number;\n href: string;\n title: string;\n type: string;\n hash: number;\n target: string;\n order: number;\n}\n\ninterface DotCMSTemplate {\n iDate: number;\n type: string;\n owner: string;\n inode: string;\n identifier: string;\n source: string;\n title: string;\n friendlyName: string;\n modDate: number;\n modUser: string;\n sortOrder: number;\n showOnMenu: boolean;\n image: string;\n drawed: boolean;\n drawedBody: string;\n theme: string;\n anonymous: boolean;\n template: boolean;\n name: string;\n live: boolean;\n archived: boolean;\n locked: boolean;\n working: boolean;\n permissionId: string;\n versionId: string;\n versionType: string;\n deleted: boolean;\n permissionType: string;\n categoryId: string;\n idate: number;\n new: boolean;\n canEdit: boolean;\n}\n\ninterface DotCMSPage {\n template: string;\n modDate: number;\n metadata: string;\n cachettl: string;\n pageURI: string;\n title: string;\n type: string;\n showOnMenu: string;\n httpsRequired: boolean;\n inode: string;\n disabledWYSIWYG: any[];\n seokeywords: string;\n host: string;\n lastReview: number;\n working: boolean;\n locked: boolean;\n stInode: string;\n friendlyName: string;\n live: boolean;\n owner: string;\n identifier: string;\n nullProperties: any[];\n friendlyname: string;\n pagemetadata: string;\n languageId: number;\n url: string;\n seodescription: string;\n modUserName: string;\n folder: string;\n deleted: boolean;\n sortOrder: number;\n modUser: string;\n pageUrl: string;\n workingInode: string;\n shortyWorking: string;\n canEdit: boolean;\n canRead: boolean;\n canLock: boolean;\n lockedOn: number;\n lockedBy: string;\n lockedByName: string;\n liveInode: string;\n shortyLive: string;\n}\n\ninterface DotCMSViewAs {\n language: {\n id: number;\n languageCode: string;\n countryCode: string;\n language: string;\n country: string;\n };\n mode: string;\n}\n\ninterface DotCMSLayout {\n pageWidth: string;\n width: string;\n layout: string;\n title: string;\n header: boolean;\n footer: boolean;\n body: DotPageAssetLayoutBody;\n sidebar: DotPageAssetLayoutSidebar;\n}\n\ninterface DotCMSContainerStructure {\n id: string;\n structureId: string;\n containerInode: string;\n containerId: string;\n code: string;\n contentTypeVar: string;\n}\n\ninterface DotPageAssetLayoutSidebar {\n preview: boolean;\n containers: DotCMSContainer[];\n location: string;\n widthPercent: number;\n width: string;\n}\n\ninterface DotPageAssetLayoutBody {\n rows: DotPageAssetLayoutRow[];\n}\n\ninterface DotCMSSite {\n lowIndexPriority: boolean;\n name: string;\n default: boolean;\n aliases: string;\n parent: boolean;\n tagStorage: string;\n systemHost: boolean;\n inode: string;\n versionType: string;\n structureInode: string;\n hostname: string;\n hostThumbnail?: any;\n owner: string;\n permissionId: string;\n permissionType: string;\n type: string;\n identifier: string;\n modDate: number;\n host: string;\n live: boolean;\n indexPolicy: string;\n categoryId: string;\n actionId?: any;\n new: boolean;\n archived: boolean;\n locked: boolean;\n disabledWysiwyg: any[];\n modUser: string;\n working: boolean;\n titleImage: {\n present: boolean;\n };\n folder: string;\n htmlpage: boolean;\n fileAsset: boolean;\n vanityUrl: boolean;\n keyValue: boolean;\n structure?: DotCMSSiteStructure;\n title: string;\n languageId: number;\n indexPolicyDependencies: string;\n contentTypeId: string;\n versionId: string;\n lastReview: number;\n nextReview?: any;\n reviewInterval?: any;\n sortOrder: number;\n contentType: DotCMSSiteContentType;\n}\n\ninterface DotCMSSiteContentType {\n owner?: any;\n parentPermissionable: DotCMSSiteParentPermissionable;\n permissionId: string;\n permissionType: string;\n}\n\nexport interface DotCMSSiteParentPermissionable {\n Inode: string;\n Identifier: string;\n permissionByIdentifier: boolean;\n type: string;\n owner?: any;\n identifier: string;\n permissionId: string;\n parentPermissionable?: any;\n permissionType: string;\n inode: string;\n childrenPermissionable?: any;\n variantId?: string;\n}\n\ninterface DotCMSSiteStructure {\n iDate: number;\n type: string;\n owner?: any;\n inode: string;\n identifier: string;\n name: string;\n description: string;\n defaultStructure: boolean;\n reviewInterval?: any;\n reviewerRole?: any;\n pagedetail?: any;\n structureType: number;\n fixed: boolean;\n system: boolean;\n velocityVarName: string;\n urlMapPattern?: any;\n host: string;\n folder: string;\n publishDateVar?: any;\n expireDateVar?: any;\n modDate: number;\n fields: DotCMSSiteField[];\n widget: boolean;\n detailPage?: any;\n fieldsBySortOrder: DotCMSSiteField[];\n form: boolean;\n htmlpageAsset: boolean;\n content: boolean;\n fileAsset: boolean;\n persona: boolean;\n permissionId: string;\n permissionType: string;\n live: boolean;\n categoryId: string;\n idate: number;\n new: boolean;\n archived: boolean;\n locked: boolean;\n modUser: string;\n working: boolean;\n title: string;\n versionId: string;\n versionType: string;\n}\n\ninterface DotCMSSiteField {\n iDate: number;\n type: string;\n owner?: any;\n inode: string;\n identifier: string;\n structureInode: string;\n fieldName: string;\n fieldType: string;\n fieldRelationType?: any;\n fieldContentlet: string;\n required: boolean;\n velocityVarName: string;\n sortOrder: number;\n values?: any;\n regexCheck?: any;\n hint?: any;\n defaultValue?: any;\n indexed: boolean;\n listed: boolean;\n fixed: boolean;\n readOnly: boolean;\n searchable: boolean;\n unique: boolean;\n modDate: number;\n dataType: string;\n live: boolean;\n categoryId: string;\n idate: number;\n new: boolean;\n archived: boolean;\n locked: boolean;\n modUser: string;\n working: boolean;\n permissionId: string;\n parentPermissionable?: any;\n permissionType: string;\n title: string;\n versionId: string;\n versionType: string;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport * from './dotcms.model';\n\nimport { Type } from '@angular/core';\n\nimport { DotCMSPageAsset } from './dotcms.model';\n\n/**\n * Represents a dynamic component entity.\n * @typedef {Promise<Type<any>>} DynamicComponentEntity\n * @memberof @dotcms/angular\n */\nexport type DynamicComponentEntity = Promise<Type<any>>;\n\n/**\n * Represents the context of a DotCMS page.\n */\nexport interface DotCMSPageContext {\n /**\n * Represents the DotCMS page asset.\n * @type {DotCMSPageAsset}\n * @memberof DotCMSPageContext\n */\n pageAsset: DotCMSPageAsset;\n\n /**\n * Represents the dynamic components of the page for each Content Type.\n * @type {DotCMSPageComponent}\n * @memberof DotCMSPageContext\n */\n components: DotCMSPageComponent;\n\n /**\n * Indicates whether the page is being viewed inside the editor.\n * @type {boolean}\n * @memberof DotCMSPageContext\n */\n isInsideEditor: boolean;\n}\n\n/**\n * Represents a DotCMS page component.\n * Used to store the dynamic components of a DotCMS page.\n * @typedef {Record<string, DynamicComponentEntity>} DotCMSPageComponent\n * @memberof @dotcms/angular\n */\nexport type DotCMSPageComponent = Record<string, DynamicComponentEntity>;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dotcms-angular.mjs","sources":["../../../../../libs/sdk/angular/src/lib/components/dot-editable-text/utils.ts","../../../../../libs/sdk/angular/src/lib/components/dot-editable-text/dot-editable-text.component.ts","../../../../../libs/sdk/angular/src/lib/components/dot-editable-text/dot-editable-text.component.html","../../../../../libs/sdk/angular/src/lib/services/dotcms-context/page-context.service.ts","../../../../../libs/sdk/angular/src/lib/utils/index.ts","../../../../../libs/sdk/angular/src/lib/components/no-component/no-component.component.ts","../../../../../libs/sdk/angular/src/lib/layout/contentlet/contentlet.component.ts","../../../../../libs/sdk/angular/src/lib/layout/container/container.component.ts","../../../../../libs/sdk/angular/src/lib/layout/container/container.component.html","../../../../../libs/sdk/angular/src/lib/layout/column/column.component.ts","../../../../../libs/sdk/angular/src/lib/layout/row/row.component.ts","../../../../../libs/sdk/angular/src/lib/layout/dotcms-layout/dotcms-layout.component.ts","../../../../../libs/sdk/angular/src/lib/models/dotcms.model.ts","../../../../../libs/sdk/angular/src/lib/models/index.ts","../../../../../libs/sdk/angular/src/dotcms-angular.ts"],"sourcesContent":["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';\n\nimport { TINYMCE_CONFIG, DOT_EDITABLE_TEXT_FORMAT, DOT_EDITABLE_TEXT_MODE } from './utils';\n\nimport { DotCMSContentlet } from '../../models';\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 DotEditableTextComponent\n * @implements {OnInit}\n * @implements {OnChanges}\n */\n@Component({\n selector: 'dot-editable-text',\n standalone: true,\n templateUrl: './dot-editable-text.component.html',\n styleUrl: './dot-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 DotEditableTextComponent 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 DotEditableTextComponent\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 DotEditableTextComponent\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 DotEditableTextComponent\n */\n @Input() contentlet!: DotCMSContentlet;\n /**\n * Represents the field name of the `contentlet` that can be edited\n *\n * @memberof DotEditableTextComponent\n */\n @Input() fieldName = '';\n\n /**\n * Represents the content of the `contentlet` that can be edited\n *\n * @protected\n * @memberof DotEditableTextComponent\n */\n protected content = '';\n /**\n * Represents the configuration of the editor\n *\n * @protected\n * @type {EditorComponent['init']}\n * @memberof DotEditableTextComponent\n */\n protected init!: EditorComponent['init'];\n /**\n * Represents if the component is inside the editor\n *\n * @protected\n * @type {boolean}\n * @memberof DotEditableTextComponent\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 DotEditableTextComponent\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 DotEditableTextComponent\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 DotEditableTextComponent\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 DotEditableTextComponent\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 DotEditableTextComponent\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 DotEditableTextComponent\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 DotEditableTextComponent\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 { BehaviorSubject, Observable } from 'rxjs';\n\nimport { Injectable } from '@angular/core';\n\nimport { map } from 'rxjs/operators';\n\nimport { isInsideEditor } from '@dotcms/client';\n\nimport { DotCMSPageComponent, DotCMSPageContext } from '../../models';\nimport { DotCMSPageAsset } from '../../models/dotcms.model';\n\n/**\n * @author dotCMS\n * @description This service is responsible for managing the page context.\n * @export\n * @class PageContextService\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class PageContextService {\n private context$ = new BehaviorSubject<DotCMSPageContext | null>(null);\n\n /**\n * @description Get the context\n * @readonly\n * @type {DotCMSPageContext}\n * @memberof PageContextService\n */\n get context(): DotCMSPageContext {\n return this.context$.getValue() as DotCMSPageContext;\n }\n\n /**\n * @description Get the context as an observable\n * @readonly\n * @memberof PageContextService\n */\n get contextObs$() {\n return this.context$.asObservable();\n }\n\n /**\n * @description Get the current page asset\n * @readonly\n * @type {(Observable<DotCMSPageAsset | null>)}\n * @memberof PageContextService\n */\n get currentPage$(): Observable<DotCMSPageAsset | null> {\n return this.contextObs$.pipe(map((context) => context?.pageAsset || null));\n }\n\n /**\n *\n * @description Set the context\n * @param {DotCMSPageAsset} value\n * @memberof DotcmsContextService\n */\n setContext(pageAsset: DotCMSPageAsset, components: DotCMSPageComponent) {\n this.context$.next({\n pageAsset,\n components,\n isInsideEditor: isInsideEditor()\n });\n }\n\n /**\n * @description Set the page asset in the context\n * @param {DotCMSPageAsset} pageAsset\n * @memberof PageContextService\n */\n setPageAsset(pageAsset: DotCMSPageAsset) {\n this.context$.next({\n ...this.context,\n pageAsset\n });\n }\n}\n","import { DotCMSContainer, DotCMSPageAssetContainer } from '../models/dotcms.model';\n\n//Changed the type, to avoid SQ issue.\n//This should be put inside a lib\n/**\n * Represents a mapping of numbers to corresponding CSS class names for column end values.\n * @typedef {Record<number, string | null>} EndClassMap\n */\nconst endClassMap: Record<number, string | null> = {\n 1: 'col-end-1',\n 2: 'col-end-2',\n 3: 'col-end-3',\n 4: 'col-end-4',\n 5: 'col-end-5',\n 6: 'col-end-6',\n 7: 'col-end-7',\n 8: 'col-end-8',\n 9: 'col-end-9',\n 10: 'col-end-10',\n 11: 'col-end-11',\n 12: 'col-end-12',\n 13: 'col-end-13'\n};\n\n//Changed the type, to avoid SQ issue.\n//This should be put inside a lib\n/**\n * Represents a mapping of numbers to CSS class names for starting columns.\n * @typedef {Record<number, string | null>} StartClassMap\n */\nconst startClassMap: Record<number, string | null> = {\n 1: 'col-start-1',\n 2: 'col-start-2',\n 3: 'col-start-3',\n 4: 'col-start-4',\n 5: 'col-start-5',\n 6: 'col-start-6',\n 7: 'col-start-7',\n 8: 'col-start-8',\n 9: 'col-start-9',\n 10: 'col-start-10',\n 11: 'col-start-11',\n 12: 'col-start-12'\n};\n\n/**\n * Retrieves the data for a set of containers.\n *\n * @param containers - The DotCMSPageAssetContainer object containing the containers.\n * @param containerRef - The DotCMSContainer object representing the container reference.\n * @returns An object containing the container data, accept types, contentlets, and variant ID.\n */\nexport const getContainersData = (\n containers: DotCMSPageAssetContainer,\n containerRef: DotCMSContainer\n) => {\n const { identifier, uuid } = containerRef;\n\n const { containerStructures, container } = containers[identifier];\n\n const { variantId } = container?.parentPermissionable || {};\n\n const acceptTypes: string = containerStructures\n .map((structure) => structure.contentTypeVar)\n .join(',');\n\n // Get the contentlets for \"this\" container\n const contentlets =\n containers[identifier].contentlets[`uuid-${uuid}`] ??\n containers[identifier].contentlets[`uuid-dotParser_${uuid}`];\n\n if (!contentlets) {\n console.warn(\n `We couldn't find the contentlets for the container with the identifier ${identifier} and the uuid ${uuid} becareful by adding content to this container.\\nWe recommend to change the container in the layout and add the content again.`\n );\n }\n\n return {\n ...containers[identifier].container,\n acceptTypes,\n contentlets: contentlets ?? [],\n variantId\n };\n};\n\n/**\n * Returns the position style classes based on the start and end values.\n * Used to set the grid column start and end values.\n * @param start - The start value.\n * @param end - The end value.\n * @returns An object containing the startClass and endClass.\n */\nexport const getPositionStyleClasses = (start: number, end: number) => {\n const startClass = startClassMap[start];\n const endClass = endClassMap[end];\n\n return {\n startClass,\n endClass\n };\n};\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\nimport { DotCMSContentlet } from '../../models';\n\n/**\n * This component is responsible to display a message when there is no component for a contentlet.\n *\n * @export\n * @class NoComponent\n */\n@Component({\n selector: 'dotcms-no-component',\n standalone: true,\n template: `\n No Component for {{ contentlet.contentType }}\n `,\n styleUrl: './no-component.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NoComponent {\n /**\n * The contentlet object containing content data.\n * The component displays a message based on the content type of this contentlet.\n */\n @Input() contentlet!: DotCMSContentlet;\n\n /**\n * The data-testid attribute used for identifying the component during testing.\n */\n @HostBinding('attr.data-testid') testId = 'no-component';\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnChanges } from '@angular/core';\n\nimport { DotCMSContentlet } from '../../models';\n\n/**\n * This component is responsible to display a contentlet.\n *\n * @export\n * @class ContentletComponent\n * @implements {OnChanges}\n */\n@Component({\n selector: 'dotcms-contentlet-wrapper',\n standalone: true,\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ContentletComponent implements OnChanges {\n /**\n * The contentlet object containing content data.\n *\n * @type {DotCMSContentlet}\n * @memberof ContentletComponent\n */\n @Input({ required: true }) contentlet!: DotCMSContentlet;\n /**\n * The container data (as string) where the contentlet is located.\n *\n * @type {string}\n * @memberof ContentletComponent\n */\n @Input() container!: string;\n\n /**\n * The identifier of contentlet component.\n *\n * @type {(string | null)}\n * @memberof ContentletComponent\n */\n @HostBinding('attr.data-dot-identifier') identifier: string | null = null;\n /**\n * The base type of contentlet component.\n *\n * @type {(string | null)}\n * @memberof ContentletComponent\n */\n @HostBinding('attr.data-dot-basetype') baseType: string | null = null;\n /**\n * The title of contentlet component.\n *\n * @type {(string | null)}\n * @memberof ContentletComponent\n */\n @HostBinding('attr.data-dot-title') title: string | null = null;\n /**\n * The inode of contentlet component.\n *\n * @type {(string | null)}\n * @memberof ContentletComponent\n */\n @HostBinding('attr.data-dot-inode') inode: string | null = null;\n /**\n * The type of contentlet component.\n *\n * @type {(string | null)}\n * @memberof ContentletComponent\n */\n @HostBinding('attr.data-dot-type') dotType: string | null = null;\n /**\n * The container of contentlet component.\n *\n * @type {(string | null)}\n * @memberof ContentletComponent\n */\n @HostBinding('attr.data-dot-container') dotContainer: string | null = null;\n /**\n * The number of pages where the contentlet appears\n *\n * @type {(string | null)}\n * @memberof ContentletComponent\n */\n @HostBinding('attr.data-dot-on-number-of-pages') numberOfPages: string | null = null;\n /**\n * The content of contentlet component.\n *\n * @type {(string | null)}\n * @memberof ContentletComponent\n */\n @HostBinding('attr.data-dot-object') dotContent: string | null = null;\n\n ngOnChanges() {\n this.identifier = this.contentlet.identifier;\n this.baseType = this.contentlet.baseType;\n this.title = this.contentlet.title;\n this.inode = this.contentlet.inode;\n this.dotType = this.contentlet.contentType;\n this.dotContainer = this.container;\n this.numberOfPages = this.contentlet['onNumberOfPages'];\n this.dotContent = 'contentlet';\n }\n}\n","import { AsyncPipe, NgComponentOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnChanges,\n computed,\n inject,\n signal\n} from '@angular/core';\n\nimport { NoComponent } from '../../components/no-component/no-component.component';\nimport { DynamicComponentEntity } from '../../models';\nimport { DotCMSContainer, DotCMSContentlet } from '../../models/dotcms.model';\nimport { PageContextService } from '../../services/dotcms-context/page-context.service';\nimport { getContainersData } from '../../utils';\nimport { ContentletComponent } from '../contentlet/contentlet.component';\n\ninterface DotContainer {\n acceptTypes: string;\n identifier: string;\n maxContentlets: number;\n uuid: string;\n variantId?: string;\n}\n\n/**\n * This component is responsible to display a container with contentlets.\n *\n * @export\n * @class ContainerComponent\n * @implements {OnChanges}\n */\n@Component({\n selector: 'dotcms-container',\n standalone: true,\n imports: [AsyncPipe, NgComponentOutlet, NoComponent, ContentletComponent],\n templateUrl: './container.component.html',\n styleUrl: './container.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ContainerComponent implements OnChanges {\n /**\n * The container object containing the contentlets.\n *\n * @type {DotCMSContainer}\n * @memberof ContainerComponent\n */\n @Input({ required: true }) container!: DotCMSContainer;\n\n private readonly pageContextService: PageContextService = inject(PageContextService);\n protected readonly NoComponent = NoComponent;\n protected readonly $isInsideEditor = signal<boolean>(false);\n\n protected componentsMap!: Record<string, DynamicComponentEntity>;\n protected $contentlets = signal<DotCMSContentlet[]>([]);\n protected $dotContainer = signal<DotContainer | null>(null);\n protected $dotContainerAsString = computed(() => JSON.stringify(this.$dotContainer()));\n\n /**\n * The accept types for the container component.\n *\n * @type {(string | null)}\n * @memberof ContainerComponent\n */\n @HostBinding('attr.data-dot-accept-types') acceptTypes: string | null = null;\n\n /**\n * The identifier for the container component.\n *\n * @type {(string | null)}\n * @memberof ContainerComponent\n */\n @HostBinding('attr.data-dot-identifier') identifier: string | null = null;\n /**\n * The max contentlets for the container component.\n *\n * @type {(number | null)}\n * @memberof ContainerComponent\n */\n @HostBinding('attr.data-max-contentlets') maxContentlets: number | null = null;\n /**\n * The uuid for the container component.\n *\n * @type {(string | null)}\n * @memberof ContainerComponent\n */\n @HostBinding('attr.data-dot-uuid') uuid: string | null = null;\n /**\n * The class for the container component.\n *\n * @type {(string | null)}\n * @memberof ContainerComponent\n */\n @HostBinding('class') class: string | null = null;\n /**\n * The dot object for the container component.\n *\n * @type {(string | null)}\n * @memberof ContainerComponent\n */\n @HostBinding('attr.data-dot-object') dotObject: string | null = null;\n /**\n * The data-testid attribute used for identifying the component during testing.\n *\n * @memberof ContainerComponent\n */\n @HostBinding('attr.data-testid') testId = 'dot-container';\n\n ngOnChanges() {\n const { pageAsset, components, isInsideEditor } = this.pageContextService.context;\n const { acceptTypes, maxContentlets, variantId, path, contentlets } = getContainersData(\n pageAsset.containers,\n this.container\n );\n const { identifier, uuid } = this.container;\n\n this.componentsMap = components;\n\n this.$isInsideEditor.set(isInsideEditor);\n this.$contentlets.set(contentlets);\n this.$dotContainer.set({\n identifier: path ?? identifier,\n acceptTypes,\n maxContentlets,\n variantId,\n uuid\n });\n\n if (this.$isInsideEditor()) {\n this.acceptTypes = acceptTypes;\n this.identifier = identifier;\n this.maxContentlets = maxContentlets;\n this.uuid = uuid;\n this.class = this.$contentlets().length ? null : 'empty-container';\n this.dotObject = 'container';\n }\n }\n}\n","@if ($isInsideEditor()) {\n @if ($contentlets().length) {\n @for (contentlet of $contentlets(); track $index) {\n <dotcms-contentlet-wrapper\n [contentlet]=\"contentlet\"\n [container]=\"$dotContainerAsString()\">\n <ng-container\n *ngComponentOutlet=\"\n (componentsMap[contentlet.contentType] || componentsMap['CustomNoComponent']\n | async) || NoComponent;\n inputs: { contentlet }\n \" />\n </dotcms-contentlet-wrapper>\n }\n } @else {\n This container is empty.\n }\n} @else {\n @for (contentlet of $contentlets(); track $index) {\n <ng-container\n *ngComponentOutlet=\"\n componentsMap[contentlet.contentType] | async;\n inputs: { contentlet }\n \" />\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit } from '@angular/core';\n\nimport { DotPageAssetLayoutColumn } from '../../models';\nimport { getPositionStyleClasses } from '../../utils';\nimport { ContainerComponent } from '../container/container.component';\n\n/**\n * This component is responsible to display a column with containers.\n *\n * @export\n * @class ColumnComponent\n * @implements {OnInit}\n */\n@Component({\n selector: 'dotcms-column',\n standalone: true,\n imports: [ContainerComponent],\n template: `\n @for (container of column.containers; track $index) {\n <dotcms-container [container]=\"container\" />\n }\n `,\n styleUrl: './column.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ColumnComponent implements OnInit {\n /**\n * The column object containing the containers.\n *\n * @type {DotPageAssetLayoutColumn}\n * @memberof ColumnComponent\n */\n @Input() column!: DotPageAssetLayoutColumn;\n\n /**\n * The data-testid attribute used for identifying the component during testing.\n *\n * @memberof ColumnComponent\n */\n @HostBinding('class') containerClasses = '';\n\n ngOnInit() {\n const { startClass, endClass } = getPositionStyleClasses(\n this.column.leftOffset,\n this.column.width + this.column.leftOffset\n );\n this.containerClasses = `${startClass} ${endClass}`;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { DotPageAssetLayoutRow } from '../../models';\nimport { ColumnComponent } from '../column/column.component';\n\n/**\n * This component is responsible to display a row with columns.\n *\n * @export\n * @class RowComponent\n */\n@Component({\n selector: 'dotcms-row',\n standalone: true,\n imports: [ColumnComponent],\n template: `\n @for (column of row.columns; track $index) {\n <dotcms-column [column]=\"column\" />\n }\n `,\n styleUrl: './row.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class RowComponent {\n /**\n * The row object containing the columns.\n *\n * @type {DotPageAssetLayoutRow}\n * @memberof RowComponent\n */\n @Input({ required: true }) row!: DotPageAssetLayoutRow;\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Input,\n OnInit,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute } from '@angular/router';\n\nimport {\n CLIENT_ACTIONS,\n DotCmsClient,\n EditorConfig,\n initEditor,\n isInsideEditor,\n postMessageToEditor,\n updateNavigation\n} from '@dotcms/client';\n\nimport { DotCMSPageComponent } from '../../models';\nimport { DotCMSPageAsset } from '../../models/dotcms.model';\nimport { PageContextService } from '../../services/dotcms-context/page-context.service';\nimport { RowComponent } from '../row/row.component';\n\n/**\n * `DotcmsLayoutComponent` is a class that represents the layout for a DotCMS page.\n * It includes a `pageAsset` property that represents the DotCMS page asset and a `components` property that represents the dynamic components for the page.\n *\n * @export\n * @class DotcmsLayoutComponent\n */\n@Component({\n selector: 'dotcms-layout',\n standalone: true,\n imports: [RowComponent, AsyncPipe],\n template: `\n @if (pageAsset$ | async; as page) {\n @for (row of this.page?.layout?.body?.rows; track $index) {\n <dotcms-row [row]=\"row\" />\n }\n }\n `,\n styleUrl: './dotcms-layout.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DotcmsLayoutComponent implements OnInit {\n private _pageAsset!: DotCMSPageAsset;\n\n /**\n * Represents the DotCMS page asset.\n *\n * @type {DotCMSPageAsset}\n * @memberof DotcmsLayoutComponent\n */\n @Input({ required: true })\n set pageAsset(value: DotCMSPageAsset) {\n this._pageAsset = value;\n if (!value.layout) {\n console.warn(\n 'Warning: pageAsset does not have a `layout` property. Might be using an advaced template or your dotCMS instance not have a enterprise license.'\n );\n }\n }\n\n /**\n * Returns the DotCMS page asset.\n *\n * @readonly\n * @type {DotCMSPageAsset}\n * @memberof DotcmsLayoutComponent\n */\n get pageAsset(): DotCMSPageAsset {\n return this._pageAsset;\n }\n\n /**\n * The `components` property is a record of dynamic components for each Contentlet on the page.\n *\n * @type {DotCMSPageComponent}\n * @memberof DotcmsLayoutComponent\n * @required\n */\n @Input({ required: true }) components!: DotCMSPageComponent;\n\n /**\n * The `onReload` property is a function that reloads the page after changes are made.\n *\n * @memberof DotcmsLayoutComponent\n * @deprecated In future implementation we will be listening for the changes from the editor to update the page state so reload will not be needed.\n */\n @Input() onReload!: () => void;\n\n /**\n *\n * @type {DotCMSFetchConfig}\n * @memberof DotCMSPageEditorConfig\n * @description The configuration custom params for data fetching on Edit Mode.\n * @example <caption>Example with Custom GraphQL query</caption>\n * <dotcms-layout [editor]=\"{ query: 'query { ... }' }\"/>\n *\n * @example <caption>Example usage with Custom Page API parameters</caption>\n * <dotcms-layout [editor]=\"{ params: { depth: '2' } }\"/>;\n */\n @Input() editor!: EditorConfig;\n\n private readonly route = inject(ActivatedRoute);\n private readonly pageContextService = inject(PageContextService);\n private readonly destroyRef$ = inject(DestroyRef);\n private client!: DotCmsClient;\n protected readonly pageAsset$ = this.pageContextService.currentPage$;\n\n ngOnInit() {\n this.pageContextService.setContext(this.pageAsset, this.components);\n\n if (!isInsideEditor()) {\n return;\n }\n\n this.client = DotCmsClient.instance;\n this.route.url.pipe(takeUntilDestroyed(this.destroyRef$)).subscribe((urlSegments) => {\n const pathname = '/' + urlSegments.join('/');\n\n initEditor({ pathname });\n updateNavigation(pathname || '/');\n });\n\n this.client.editor.on('changes', (data) => {\n if (this.onReload) {\n this.onReload();\n\n return;\n }\n\n this.pageContextService.setPageAsset(data as DotCMSPageAsset);\n });\n\n postMessageToEditor({ action: CLIENT_ACTIONS.CLIENT_READY, payload: this.editor });\n }\n\n ngOnDestroy() {\n if (!isInsideEditor()) {\n return;\n }\n\n this.client.editor.off('changes');\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport interface DotCMSPageAsset {\n canCreateTemplate: boolean;\n containers: DotCMSPageAssetContainer;\n layout: DotCMSLayout;\n page: DotCMSPage;\n site: DotCMSSite;\n template: DotCMSTemplate;\n viewAs: DotCMSViewAs;\n vanityUrl?: {\n pattern: string;\n vanityUrlId: string;\n url: string;\n siteId: string;\n languageId: number;\n forwardTo: string;\n response: number;\n order: number;\n temporaryRedirect: boolean;\n permanentRedirect: boolean;\n forward: boolean;\n };\n}\n\nexport interface DotPageAssetLayoutRow {\n identifier: number;\n value?: string;\n id?: string;\n columns: DotPageAssetLayoutColumn[];\n styleClass?: string;\n}\n\nexport interface DotPageAssetLayoutColumn {\n preview: boolean;\n containers: DotCMSContainer[];\n widthPercent: number;\n width: number;\n leftOffset: number;\n left: number;\n styleClass?: string;\n}\n\nexport interface DotCMSPageAssetContainer {\n [key: string]: {\n container: DotCMSContainer;\n containerStructures: DotCMSContainerStructure[];\n contentlets: {\n [key: string]: DotCMSContentlet[];\n };\n };\n}\n\nexport interface DotCMSContainer {\n identifier: string;\n uuid: string;\n iDate: number;\n type: string;\n owner?: string;\n inode: string;\n source: string;\n title: string;\n friendlyName: string;\n modDate: number;\n modUser: string;\n sortOrder: number;\n showOnMenu: boolean;\n code?: string;\n maxContentlets: number;\n useDiv: boolean;\n sortContentletsBy?: string;\n preLoop: string;\n postLoop: string;\n staticify: boolean;\n luceneQuery?: string;\n notes: string;\n languageId?: number;\n path?: string;\n live: boolean;\n locked: boolean;\n working: boolean;\n deleted: boolean;\n name: string;\n archived: boolean;\n permissionId: string;\n versionId: string;\n versionType: string;\n permissionType: string;\n categoryId: string;\n idate: number;\n new: boolean;\n acceptTypes: string;\n contentlets: DotCMSContentlet[];\n parentPermissionable: DotCMSSiteParentPermissionable;\n}\n\nexport interface DotCMSContentlet {\n archived: boolean;\n baseType: string;\n deleted?: boolean;\n binary?: string;\n binaryContentAsset?: string;\n binaryVersion?: string;\n contentType: string;\n file?: string;\n folder: string;\n hasLiveVersion?: boolean;\n hasTitleImage: boolean;\n host: string;\n hostName: string;\n identifier: string;\n inode: string;\n image?: string;\n languageId: number;\n language?: string;\n live: boolean;\n locked: boolean;\n mimeType?: string;\n modDate: string;\n modUser: string;\n modUserName: string;\n owner: string;\n sortOrder: number;\n stInode: string;\n title: string;\n titleImage: string;\n text?: string;\n url: string;\n working: boolean;\n body?: string;\n contentTypeIcon?: string;\n variant?: string;\n __icon__?: string;\n [key: string]: any; // This is a catch-all for any other custom properties that might be on the contentlet.\n}\n\nexport interface DotcmsNavigationItem {\n code?: any;\n folder: string;\n children?: DotcmsNavigationItem[];\n host: string;\n languageId: number;\n href: string;\n title: string;\n type: string;\n hash: number;\n target: string;\n order: number;\n}\n\ninterface DotCMSTemplate {\n iDate: number;\n type: string;\n owner: string;\n inode: string;\n identifier: string;\n source: string;\n title: string;\n friendlyName: string;\n modDate: number;\n modUser: string;\n sortOrder: number;\n showOnMenu: boolean;\n image: string;\n drawed: boolean;\n drawedBody: string;\n theme: string;\n anonymous: boolean;\n template: boolean;\n name: string;\n live: boolean;\n archived: boolean;\n locked: boolean;\n working: boolean;\n permissionId: string;\n versionId: string;\n versionType: string;\n deleted: boolean;\n permissionType: string;\n categoryId: string;\n idate: number;\n new: boolean;\n canEdit: boolean;\n}\n\ninterface DotCMSPage {\n template: string;\n modDate: number;\n metadata: string;\n cachettl: string;\n pageURI: string;\n title: string;\n type: string;\n showOnMenu: string;\n httpsRequired: boolean;\n inode: string;\n disabledWYSIWYG: any[];\n seokeywords: string;\n host: string;\n lastReview: number;\n working: boolean;\n locked: boolean;\n stInode: string;\n friendlyName: string;\n live: boolean;\n owner: string;\n identifier: string;\n nullProperties: any[];\n friendlyname: string;\n pagemetadata: string;\n languageId: number;\n url: string;\n seodescription: string;\n modUserName: string;\n folder: string;\n deleted: boolean;\n sortOrder: number;\n modUser: string;\n pageUrl: string;\n workingInode: string;\n shortyWorking: string;\n canEdit: boolean;\n canRead: boolean;\n canLock: boolean;\n lockedOn: number;\n lockedBy: string;\n lockedByName: string;\n liveInode: string;\n shortyLive: string;\n}\n\ninterface DotCMSViewAs {\n language: {\n id: number;\n languageCode: string;\n countryCode: string;\n language: string;\n country: string;\n };\n mode: string;\n}\n\ninterface DotCMSLayout {\n pageWidth: string;\n width: string;\n layout: string;\n title: string;\n header: boolean;\n footer: boolean;\n body: DotPageAssetLayoutBody;\n sidebar: DotPageAssetLayoutSidebar;\n}\n\ninterface DotCMSContainerStructure {\n id: string;\n structureId: string;\n containerInode: string;\n containerId: string;\n code: string;\n contentTypeVar: string;\n}\n\ninterface DotPageAssetLayoutSidebar {\n preview: boolean;\n containers: DotCMSContainer[];\n location: string;\n widthPercent: number;\n width: string;\n}\n\ninterface DotPageAssetLayoutBody {\n rows: DotPageAssetLayoutRow[];\n}\n\ninterface DotCMSSite {\n lowIndexPriority: boolean;\n name: string;\n default: boolean;\n aliases: string;\n parent: boolean;\n tagStorage: string;\n systemHost: boolean;\n inode: string;\n versionType: string;\n structureInode: string;\n hostname: string;\n hostThumbnail?: any;\n owner: string;\n permissionId: string;\n permissionType: string;\n type: string;\n identifier: string;\n modDate: number;\n host: string;\n live: boolean;\n indexPolicy: string;\n categoryId: string;\n actionId?: any;\n new: boolean;\n archived: boolean;\n locked: boolean;\n disabledWysiwyg: any[];\n modUser: string;\n working: boolean;\n titleImage: {\n present: boolean;\n };\n folder: string;\n htmlpage: boolean;\n fileAsset: boolean;\n vanityUrl: boolean;\n keyValue: boolean;\n structure?: DotCMSSiteStructure;\n title: string;\n languageId: number;\n indexPolicyDependencies: string;\n contentTypeId: string;\n versionId: string;\n lastReview: number;\n nextReview?: any;\n reviewInterval?: any;\n sortOrder: number;\n contentType: DotCMSSiteContentType;\n}\n\ninterface DotCMSSiteContentType {\n owner?: any;\n parentPermissionable: DotCMSSiteParentPermissionable;\n permissionId: string;\n permissionType: string;\n}\n\nexport interface DotCMSSiteParentPermissionable {\n Inode: string;\n Identifier: string;\n permissionByIdentifier: boolean;\n type: string;\n owner?: any;\n identifier: string;\n permissionId: string;\n parentPermissionable?: any;\n permissionType: string;\n inode: string;\n childrenPermissionable?: any;\n variantId?: string;\n}\n\ninterface DotCMSSiteStructure {\n iDate: number;\n type: string;\n owner?: any;\n inode: string;\n identifier: string;\n name: string;\n description: string;\n defaultStructure: boolean;\n reviewInterval?: any;\n reviewerRole?: any;\n pagedetail?: any;\n structureType: number;\n fixed: boolean;\n system: boolean;\n velocityVarName: string;\n urlMapPattern?: any;\n host: string;\n folder: string;\n publishDateVar?: any;\n expireDateVar?: any;\n modDate: number;\n fields: DotCMSSiteField[];\n widget: boolean;\n detailPage?: any;\n fieldsBySortOrder: DotCMSSiteField[];\n form: boolean;\n htmlpageAsset: boolean;\n content: boolean;\n fileAsset: boolean;\n persona: boolean;\n permissionId: string;\n permissionType: string;\n live: boolean;\n categoryId: string;\n idate: number;\n new: boolean;\n archived: boolean;\n locked: boolean;\n modUser: string;\n working: boolean;\n title: string;\n versionId: string;\n versionType: string;\n}\n\ninterface DotCMSSiteField {\n iDate: number;\n type: string;\n owner?: any;\n inode: string;\n identifier: string;\n structureInode: string;\n fieldName: string;\n fieldType: string;\n fieldRelationType?: any;\n fieldContentlet: string;\n required: boolean;\n velocityVarName: string;\n sortOrder: number;\n values?: any;\n regexCheck?: any;\n hint?: any;\n defaultValue?: any;\n indexed: boolean;\n listed: boolean;\n fixed: boolean;\n readOnly: boolean;\n searchable: boolean;\n unique: boolean;\n modDate: number;\n dataType: string;\n live: boolean;\n categoryId: string;\n idate: number;\n new: boolean;\n archived: boolean;\n locked: boolean;\n modUser: string;\n working: boolean;\n permissionId: string;\n parentPermissionable?: any;\n permissionType: string;\n title: string;\n versionId: string;\n versionType: string;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport * from './dotcms.model';\n\nimport { Type } from '@angular/core';\n\nimport { DotCMSPageAsset } from './dotcms.model';\n\n/**\n * Represents a dynamic component entity.\n * @typedef {Promise<Type<any>>} DynamicComponentEntity\n * @memberof @dotcms/angular\n */\nexport type DynamicComponentEntity = Promise<Type<any>>;\n\n/**\n * Represents the context of a DotCMS page.\n */\nexport interface DotCMSPageContext {\n /**\n * Represents the DotCMS page asset.\n * @type {DotCMSPageAsset}\n * @memberof DotCMSPageContext\n */\n pageAsset: DotCMSPageAsset;\n\n /**\n * Represents the dynamic components of the page for each Content Type.\n * @type {DotCMSPageComponent}\n * @memberof DotCMSPageContext\n */\n components: DotCMSPageComponent;\n\n /**\n * Indicates whether the page is being viewed inside the editor.\n * @type {boolean}\n * @memberof DotCMSPageContext\n */\n isInsideEditor: boolean;\n}\n\n/**\n * Represents a DotCMS page component.\n * Used to store the dynamic components of a DotCMS page.\n * @typedef {Record<string, DynamicComponentEntity>} DotCMSPageComponent\n * @memberof @dotcms/angular\n */\nexport type DotCMSPageComponent = Record<string, DynamicComponentEntity>;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dot-editable-text.component.d.ts","sourceRoot":"","sources":["../../../../../../../libs/sdk/angular/src/lib/components/dot-editable-text/dot-editable-text.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAsB,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAElE,OAAO,EAMH,SAAS,EACT,MAAM,EAIT,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"dot-editable-text.component.d.ts","sourceRoot":"","sources":["../../../../../../../libs/sdk/angular/src/lib/components/dot-editable-text/dot-editable-text.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAsB,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAElE,OAAO,EAMH,SAAS,EACT,MAAM,EAIT,MAAM,eAAe,CAAC;AAWvB,OAAO,EAAkB,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAE3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;;AAEhD;;;;;;;;GAQG;AACH,qBAea,wBAAyB,YAAW,MAAM,EAAE,SAAS;;IAClC,eAAe,EAAG,eAAe,CAAC;IAE9D;;;;;OAKG;IACM,IAAI,EAAE,sBAAsB,CAAW;IAChD;;;;;OAKG;IACM,MAAM,EAAE,wBAAwB,CAAU;IACnD;;;;;OAKG;IACM,UAAU,EAAG,gBAAgB,CAAC;IACvC;;;;OAIG;IACM,SAAS,SAAM;IAExB;;;;;OAKG;IACH,SAAS,CAAC,OAAO,SAAM;IACvB;;;;;;OAMG;IACH,SAAS,CAAC,IAAI,EAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC;;;;;;OAMG;IACH,SAAS,CAAC,cAAc,EAAG,OAAO,CAAC;IAMnC;;;;;OAKG;IACH,IAAI,MAAM,6BAET;IAED;;;;;OAKG;IACH,IAAI,eAAe,QAElB;IAED;;;;;;OAMG;IAEH,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,YAAY;IAgBhC,QAAQ;IAeR,WAAW;IAOX;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC;IAyB3C;;;;;OAKG;IACH,UAAU;IA0BV;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;yCArNf,wBAAwB;2CAAxB,wBAAwB;CAwNpC"}
|
package/lib/utils/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../libs/sdk/angular/src/lib/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AA6CnF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,eACd,wBAAwB,gBACtB,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../libs/sdk/angular/src/lib/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AA6CnF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,eACd,wBAAwB,gBACtB,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BhC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,UAAW,MAAM,OAAO,MAAM;;;CAQjE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dotcms/angular",
|
|
3
|
-
"version": "0.0.1-alpha.
|
|
3
|
+
"version": "0.0.1-alpha.47",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": ">=17.0.0",
|
|
6
6
|
"@angular/core": ">=17.0.0",
|
|
7
7
|
"@angular/router": ">=17.0.0",
|
|
8
|
-
"@dotcms/client": "0.0.1-alpha.
|
|
8
|
+
"@dotcms/client": "0.0.1-alpha.47",
|
|
9
9
|
"@tinymce/tinymce-angular": "^8.0.0",
|
|
10
10
|
"rxjs": ">=7.0.0"
|
|
11
11
|
},
|