@dotcms/angular 0.0.1-beta.4 → 0.0.1-beta.40
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 +642 -167
- package/dotcms-angular.d.ts.map +1 -1
- package/esm2022/dotcms-angular.mjs +2 -2
- package/esm2022/lib/deprecated/components/dot-editable-text/dot-editable-text.component.mjs +229 -0
- package/esm2022/lib/deprecated/components/dot-editable-text/utils.mjs +43 -0
- package/esm2022/lib/deprecated/components/no-component/no-component.component.mjs +32 -0
- package/esm2022/lib/deprecated/deprecated-api.mjs +11 -0
- package/esm2022/lib/{layout → deprecated/layout}/column/column.component.mjs +1 -1
- package/esm2022/lib/deprecated/layout/container/container.component.mjs +126 -0
- package/esm2022/lib/deprecated/layout/contentlet/contentlet.component.mjs +120 -0
- package/esm2022/lib/deprecated/layout/dotcms-layout/dotcms-layout.component.mjs +106 -0
- package/esm2022/lib/{layout → deprecated/layout}/row/row.component.mjs +1 -1
- package/esm2022/lib/deprecated/models/dotcms.model.mjs +3 -0
- package/esm2022/lib/deprecated/models/index.mjs +3 -0
- package/esm2022/lib/deprecated/services/dotcms-context/page-context.service.mjs +79 -0
- package/esm2022/lib/deprecated/utils/image_loader.mjs +74 -0
- package/esm2022/lib/deprecated/utils/index.mjs +84 -0
- package/esm2022/next/components/dotcms-block-editor-renderer/blocks/code.component.mjs +49 -0
- package/esm2022/next/components/dotcms-block-editor-renderer/blocks/dot-contentlet.component.mjs +125 -0
- package/esm2022/next/components/dotcms-block-editor-renderer/blocks/image.component.mjs +25 -0
- package/esm2022/next/components/dotcms-block-editor-renderer/blocks/list.component.mjs +66 -0
- package/esm2022/next/components/dotcms-block-editor-renderer/blocks/table.component.mjs +97 -0
- package/esm2022/next/components/dotcms-block-editor-renderer/blocks/text.component.mjs +231 -0
- package/esm2022/next/components/dotcms-block-editor-renderer/blocks/unknown.component.mjs +65 -0
- package/esm2022/next/components/dotcms-block-editor-renderer/blocks/video.component.mjs +48 -0
- package/esm2022/next/components/dotcms-block-editor-renderer/dotcms-block-editor-renderer.component.mjs +50 -0
- package/esm2022/next/components/dotcms-block-editor-renderer/item/dotcms-block-editor-item.component.mjs +45 -0
- package/esm2022/next/components/dotcms-editable-text/dotcms-editable-text.component.mjs +240 -0
- package/esm2022/next/components/dotcms-editable-text/utils.mjs +20 -0
- package/esm2022/next/components/dotcms-layout-body/components/column/column.component.mjs +45 -0
- package/esm2022/next/components/dotcms-layout-body/components/container/components/container-not-found/container-not-found.component.mjs +52 -0
- package/esm2022/next/components/dotcms-layout-body/components/container/components/empty-container/empty-container.component.mjs +47 -0
- package/esm2022/next/components/dotcms-layout-body/components/container/container.component.mjs +99 -0
- package/esm2022/next/components/dotcms-layout-body/components/contentlet/contentlet.component.mjs +145 -0
- package/esm2022/next/components/dotcms-layout-body/components/fallback-component/fallback-component.component.mjs +47 -0
- package/esm2022/next/components/dotcms-layout-body/components/page-error-message/page-error-message.component.mjs +55 -0
- package/esm2022/next/components/dotcms-layout-body/components/row/row.component.mjs +46 -0
- package/esm2022/next/components/dotcms-layout-body/dotcms-layout-body.component.mjs +69 -0
- package/esm2022/next/directives/dotcms-show-when/dotcms-show-when.directive.mjs +49 -0
- package/esm2022/next/dotcms-angular-next.mjs +5 -0
- package/esm2022/next/models/index.mjs +3 -0
- package/esm2022/next/providers/dotcms-client/dotcms-client.provider.mjs +52 -0
- package/esm2022/next/providers/dotcms-image-loader/dotcms-image_loader.mjs +74 -0
- package/esm2022/next/public_api.mjs +8 -0
- package/esm2022/next/services/dotcms-editable-page.service.mjs +93 -0
- package/esm2022/next/store/dotcms.store.mjs +61 -0
- package/esm2022/public_api.mjs +2 -0
- package/fesm2022/dotcms-angular-next.mjs +1904 -0
- package/fesm2022/dotcms-angular-next.mjs.map +1 -0
- package/fesm2022/dotcms-angular.mjs +103 -10
- package/fesm2022/dotcms-angular.mjs.map +1 -1
- package/index.d.ts +6 -5
- package/lib/{components → deprecated/components}/dot-editable-text/dot-editable-text.component.d.ts +10 -6
- package/lib/deprecated/components/dot-editable-text/dot-editable-text.component.d.ts.map +1 -0
- package/lib/deprecated/components/dot-editable-text/utils.d.ts.map +1 -0
- package/lib/deprecated/components/no-component/no-component.component.d.ts.map +1 -0
- package/lib/deprecated/deprecated-api.d.ts +11 -0
- package/lib/deprecated/deprecated-api.d.ts.map +1 -0
- package/lib/deprecated/layout/column/column.component.d.ts.map +1 -0
- package/lib/deprecated/layout/container/container.component.d.ts.map +1 -0
- package/lib/deprecated/layout/contentlet/contentlet.component.d.ts.map +1 -0
- package/lib/{layout → deprecated/layout}/dotcms-layout/dotcms-layout.component.d.ts +5 -0
- package/lib/deprecated/layout/dotcms-layout/dotcms-layout.component.d.ts.map +1 -0
- package/lib/deprecated/layout/row/row.component.d.ts.map +1 -0
- package/lib/{models → deprecated/models}/dotcms.model.d.ts +2 -2
- package/lib/deprecated/models/dotcms.model.d.ts.map +1 -0
- package/lib/deprecated/models/index.d.ts.map +1 -0
- package/lib/{services → deprecated/services}/dotcms-context/page-context.service.d.ts +4 -0
- package/lib/deprecated/services/dotcms-context/page-context.service.d.ts.map +1 -0
- package/lib/deprecated/utils/image_loader.d.ts +21 -0
- package/lib/deprecated/utils/image_loader.d.ts.map +1 -0
- package/lib/deprecated/utils/index.d.ts.map +1 -0
- package/next/components/dotcms-block-editor-renderer/blocks/code.component.d.ts +10 -0
- package/next/components/dotcms-block-editor-renderer/blocks/code.component.d.ts.map +1 -0
- package/next/components/dotcms-block-editor-renderer/blocks/dot-contentlet.component.d.ts +34 -0
- package/next/components/dotcms-block-editor-renderer/blocks/dot-contentlet.component.d.ts.map +1 -0
- package/next/components/dotcms-block-editor-renderer/blocks/image.component.d.ts +9 -0
- package/next/components/dotcms-block-editor-renderer/blocks/image.component.d.ts.map +1 -0
- package/next/components/dotcms-block-editor-renderer/blocks/list.component.d.ts +14 -0
- package/next/components/dotcms-block-editor-renderer/blocks/list.component.d.ts.map +1 -0
- package/next/components/dotcms-block-editor-renderer/blocks/table.component.d.ts +10 -0
- package/next/components/dotcms-block-editor-renderer/blocks/table.component.d.ts.map +1 -0
- package/next/components/dotcms-block-editor-renderer/blocks/text.component.d.ts +27 -0
- package/next/components/dotcms-block-editor-renderer/blocks/text.component.d.ts.map +1 -0
- package/next/components/dotcms-block-editor-renderer/blocks/unknown.component.d.ts +18 -0
- package/next/components/dotcms-block-editor-renderer/blocks/unknown.component.d.ts.map +1 -0
- package/next/components/dotcms-block-editor-renderer/blocks/video.component.d.ts +10 -0
- package/next/components/dotcms-block-editor-renderer/blocks/video.component.d.ts.map +1 -0
- package/next/components/dotcms-block-editor-renderer/dotcms-block-editor-renderer.component.d.ts +39 -0
- package/next/components/dotcms-block-editor-renderer/dotcms-block-editor-renderer.component.d.ts.map +1 -0
- package/next/components/dotcms-block-editor-renderer/item/dotcms-block-editor-item.component.d.ts +12 -0
- package/next/components/dotcms-block-editor-renderer/item/dotcms-block-editor-item.component.d.ts.map +1 -0
- package/next/components/dotcms-editable-text/dotcms-editable-text.component.d.ts +129 -0
- package/next/components/dotcms-editable-text/dotcms-editable-text.component.d.ts.map +1 -0
- package/next/components/dotcms-editable-text/utils.d.ts +7 -0
- package/next/components/dotcms-editable-text/utils.d.ts.map +1 -0
- package/next/components/dotcms-layout-body/components/column/column.component.d.ts +21 -0
- package/next/components/dotcms-layout-body/components/column/column.component.d.ts.map +1 -0
- package/next/components/dotcms-layout-body/components/container/components/container-not-found/container-not-found.component.d.ts +27 -0
- package/next/components/dotcms-layout-body/components/container/components/container-not-found/container-not-found.component.d.ts.map +1 -0
- package/next/components/dotcms-layout-body/components/container/components/empty-container/empty-container.component.d.ts +23 -0
- package/next/components/dotcms-layout-body/components/container/components/empty-container/empty-container.component.d.ts.map +1 -0
- package/next/components/dotcms-layout-body/components/container/container.component.d.ts +32 -0
- package/next/components/dotcms-layout-body/components/container/container.component.d.ts.map +1 -0
- package/next/components/dotcms-layout-body/components/contentlet/contentlet.component.d.ts +48 -0
- package/next/components/dotcms-layout-body/components/contentlet/contentlet.component.d.ts.map +1 -0
- package/next/components/dotcms-layout-body/components/fallback-component/fallback-component.component.d.ts +16 -0
- package/next/components/dotcms-layout-body/components/fallback-component/fallback-component.component.d.ts.map +1 -0
- package/next/components/dotcms-layout-body/components/page-error-message/page-error-message.component.d.ts +13 -0
- package/next/components/dotcms-layout-body/components/page-error-message/page-error-message.component.d.ts.map +1 -0
- package/next/components/dotcms-layout-body/components/row/row.component.d.ts +22 -0
- package/next/components/dotcms-layout-body/components/row/row.component.d.ts.map +1 -0
- package/next/components/dotcms-layout-body/dotcms-layout-body.component.d.ts +30 -0
- package/next/components/dotcms-layout-body/dotcms-layout-body.component.d.ts.map +1 -0
- package/next/directives/dotcms-show-when/dotcms-show-when.directive.d.ts +21 -0
- package/next/directives/dotcms-show-when/dotcms-show-when.directive.d.ts.map +1 -0
- package/next/dotcms-angular-next.d.ts.map +1 -0
- package/next/index.d.ts +6 -0
- package/next/models/index.d.ts +39 -0
- package/next/models/index.d.ts.map +1 -0
- package/next/providers/dotcms-client/dotcms-client.provider.d.ts +60 -0
- package/next/providers/dotcms-client/dotcms-client.provider.d.ts.map +1 -0
- package/next/providers/dotcms-image-loader/dotcms-image_loader.d.ts +21 -0
- package/next/providers/dotcms-image-loader/dotcms-image_loader.d.ts.map +1 -0
- package/next/public_api.d.ts +8 -0
- package/next/public_api.d.ts.map +1 -0
- package/next/services/dotcms-editable-page.service.d.ts +40 -0
- package/next/services/dotcms-editable-page.service.d.ts.map +1 -0
- package/next/store/dotcms.store.d.ts +36 -0
- package/next/store/dotcms.store.d.ts.map +1 -0
- package/package.json +9 -2
- package/public_api.d.ts +2 -0
- package/public_api.d.ts.map +1 -0
- package/esm2022/index.mjs +0 -5
- package/esm2022/lib/components/dot-editable-text/dot-editable-text.component.mjs +0 -225
- package/esm2022/lib/components/dot-editable-text/utils.mjs +0 -43
- package/esm2022/lib/components/no-component/no-component.component.mjs +0 -32
- package/esm2022/lib/layout/container/container.component.mjs +0 -126
- package/esm2022/lib/layout/contentlet/contentlet.component.mjs +0 -120
- package/esm2022/lib/layout/dotcms-layout/dotcms-layout.component.mjs +0 -100
- package/esm2022/lib/models/dotcms.model.mjs +0 -3
- package/esm2022/lib/models/index.mjs +0 -3
- package/esm2022/lib/services/dotcms-context/page-context.service.mjs +0 -75
- package/esm2022/lib/utils/index.mjs +0 -84
- package/index.d.ts.map +0 -1
- package/lib/components/dot-editable-text/dot-editable-text.component.d.ts.map +0 -1
- package/lib/components/dot-editable-text/utils.d.ts.map +0 -1
- package/lib/components/no-component/no-component.component.d.ts.map +0 -1
- package/lib/layout/column/column.component.d.ts.map +0 -1
- package/lib/layout/container/container.component.d.ts.map +0 -1
- package/lib/layout/contentlet/contentlet.component.d.ts.map +0 -1
- package/lib/layout/dotcms-layout/dotcms-layout.component.d.ts.map +0 -1
- package/lib/layout/row/row.component.d.ts.map +0 -1
- package/lib/models/dotcms.model.d.ts.map +0 -1
- package/lib/models/index.d.ts.map +0 -1
- package/lib/services/dotcms-context/page-context.service.d.ts.map +0 -1
- package/lib/utils/index.d.ts.map +0 -1
- /package/lib/{components → deprecated/components}/dot-editable-text/utils.d.ts +0 -0
- /package/lib/{components → deprecated/components}/no-component/no-component.component.d.ts +0 -0
- /package/lib/{layout → deprecated/layout}/column/column.component.d.ts +0 -0
- /package/lib/{layout → deprecated/layout}/container/container.component.d.ts +0 -0
- /package/lib/{layout → deprecated/layout}/contentlet/contentlet.component.d.ts +0 -0
- /package/lib/{layout → deprecated/layout}/row/row.component.d.ts +0 -0
- /package/lib/{models → deprecated/models}/index.d.ts +0 -0
- /package/lib/{utils → deprecated/utils}/index.d.ts +0 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { OnChanges } from '@angular/core';
|
|
2
|
+
import { DotCMSPageAsset, DotCMSPageRendererMode, DotPageAssetLayoutRow } from '@dotcms/types';
|
|
3
|
+
import { DotCMSPageComponent } from '../../models';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* @description This component is used to render the layout for a DotCMS page.
|
|
7
|
+
* @param {DotCMSPageAsset} page - The page to render the layout for
|
|
8
|
+
* @param {DotCMSPageComponent} components - The components to render the layout for
|
|
9
|
+
* @param {DotCMSPageRendererMode} mode - The mode to render the layout for
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* <dotcms-layout-body [page]="page" [components]="components" [mode]="'development'" />
|
|
13
|
+
*
|
|
14
|
+
* @export
|
|
15
|
+
* @implements {OnChanges}
|
|
16
|
+
* @class DotCMSLayoutBodyComponent
|
|
17
|
+
*/
|
|
18
|
+
export declare class DotCMSLayoutBodyComponent implements OnChanges {
|
|
19
|
+
#private;
|
|
20
|
+
page: DotCMSPageAsset;
|
|
21
|
+
components: DotCMSPageComponent;
|
|
22
|
+
mode: DotCMSPageRendererMode;
|
|
23
|
+
$isDevMode: import("@angular/core").Signal<boolean>;
|
|
24
|
+
$rows: import("@angular/core").WritableSignal<DotPageAssetLayoutRow[]>;
|
|
25
|
+
$isEmpty: import("@angular/core").WritableSignal<boolean>;
|
|
26
|
+
ngOnChanges(): void;
|
|
27
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DotCMSLayoutBodyComponent, never>;
|
|
28
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DotCMSLayoutBodyComponent, "dotcms-layout-body", never, { "page": { "alias": "page"; "required": true; }; "components": { "alias": "components"; "required": true; }; "mode": { "alias": "mode"; "required": false; }; }, {}, never, never, true, never>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=dotcms-layout-body.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dotcms-layout-body.component.d.ts","sourceRoot":"","sources":["../../../../../../../libs/sdk/angular/next/components/dotcms-layout-body/dotcms-layout-body.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,SAAS,EAEZ,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAK/F,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;;AAEnD;;;;;;;;;;;;GAYG;AACH,qBAiBa,yBAA0B,YAAW,SAAS;;IAC5B,IAAI,EAAG,eAAe,CAAC;IACvB,UAAU,EAAE,mBAAmB,CAAM;IACvD,IAAI,EAAE,sBAAsB,CAAgB;IAIrD,UAAU,0CAAgC;IAE1C,KAAK,kEAAuC;IAE5C,QAAQ,kDAAiB;IAEzB,WAAW;yCAbF,yBAAyB;2CAAzB,yBAAyB;CAwBrC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { UVE_MODE } from '@dotcms/types';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Directive to show a template when the UVE is in a specific mode.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* <div *dotCMSShowWhen="UVE_MODE.EDIT">
|
|
8
|
+
* This will be shown when the UVE is in edit mode.
|
|
9
|
+
* </div>
|
|
10
|
+
*
|
|
11
|
+
* @export
|
|
12
|
+
* @class DotCMSShowWhenDirective
|
|
13
|
+
*/
|
|
14
|
+
export declare class DotCMSShowWhenDirective {
|
|
15
|
+
#private;
|
|
16
|
+
set dotCMSShowWhen(value: UVE_MODE);
|
|
17
|
+
private updateViewContainer;
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DotCMSShowWhenDirective, never>;
|
|
19
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<DotCMSShowWhenDirective, "[dotCMSShowWhen]", never, { "dotCMSShowWhen": { "alias": "dotCMSShowWhen"; "required": false; }; }, {}, never, never, true, never>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=dotcms-show-when.directive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dotcms-show-when.directive.d.ts","sourceRoot":"","sources":["../../../../../../../libs/sdk/angular/next/directives/dotcms-show-when/dotcms-show-when.directive.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAY,MAAM,eAAe,CAAC;;AAGnD;;;;;;;;;;GAUG;AACH,qBAIa,uBAAuB;;IAIhC,IAAa,cAAc,CAAC,KAAK,EAAE,QAAQ,EAG1C;IAKD,OAAO,CAAC,mBAAmB;yCAZlB,uBAAuB;2CAAvB,uBAAuB;CAyBnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dotcms-angular-next.d.ts","sourceRoot":"","sources":["../../../../../libs/sdk/angular/next/dotcms-angular-next.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAEH,cAAc,cAAc,CAAC"}
|
package/next/index.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Type } from '@angular/core';
|
|
2
|
+
import { DotCMSPageAsset, DotCMSPageRendererMode } from '@dotcms/types';
|
|
3
|
+
/**
|
|
4
|
+
* Represents a dynamic component entity.
|
|
5
|
+
* @typedef {Promise<Type<any>>} DynamicComponentEntity
|
|
6
|
+
* @memberof @dotcms/angular
|
|
7
|
+
*/
|
|
8
|
+
export type DynamicComponentEntity = Promise<Type<any>>;
|
|
9
|
+
/**
|
|
10
|
+
* Represents the context of a DotCMS page.
|
|
11
|
+
*/
|
|
12
|
+
export interface DotCMSPageStore {
|
|
13
|
+
/**
|
|
14
|
+
* Represents the DotCMS page asset.
|
|
15
|
+
* @type {DotCMSPageAsset}
|
|
16
|
+
* @memberof DotCMSPageStore
|
|
17
|
+
*/
|
|
18
|
+
page: DotCMSPageAsset;
|
|
19
|
+
/**
|
|
20
|
+
* Represents the dynamic components of the page for each Content Type.
|
|
21
|
+
* @type {DotCMSPageComponent}
|
|
22
|
+
* @memberof DotCMSPageStore
|
|
23
|
+
*/
|
|
24
|
+
components: DotCMSPageComponent;
|
|
25
|
+
/**
|
|
26
|
+
* Indicates the renderer mode.
|
|
27
|
+
* @type {DotCMSPageRendererMode}
|
|
28
|
+
* @memberof DotCMSPageStore
|
|
29
|
+
*/
|
|
30
|
+
mode: DotCMSPageRendererMode;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Represents a DotCMS page component.
|
|
34
|
+
* Used to store the dynamic components of a DotCMS page.
|
|
35
|
+
* @typedef {Record<string, DynamicComponentEntity>} DotCMSPageComponent
|
|
36
|
+
* @memberof @dotcms/angular
|
|
37
|
+
*/
|
|
38
|
+
export type DotCMSPageComponent = Record<string, DynamicComponentEntity>;
|
|
39
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../libs/sdk/angular/next/models/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAExE;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B;;;;OAIG;IACH,IAAI,EAAE,eAAe,CAAC;IAEtB;;;;OAIG;IACH,UAAU,EAAE,mBAAmB,CAAC;IAEhC;;;;OAIG;IACH,IAAI,EAAE,sBAAsB,CAAC;CAChC;AAED;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { EnvironmentProviders } from '@angular/core';
|
|
2
|
+
import { createDotCMSClient } from '@dotcms/client/next';
|
|
3
|
+
import { DotCMSClientConfig } from '@dotcms/types';
|
|
4
|
+
/**
|
|
5
|
+
* Type alias for the return type of createDotCMSClient function.
|
|
6
|
+
* Used to ensure type consistency across the DotCMSClient interface and class.
|
|
7
|
+
*/
|
|
8
|
+
type ClientType = ReturnType<typeof createDotCMSClient>;
|
|
9
|
+
/**
|
|
10
|
+
* Interface that extends the client type created by createDotCMSClient.
|
|
11
|
+
* This interface provides type safety and IntelliSense support for the DotCMS client
|
|
12
|
+
* when used as a dependency injection token in Angular applications.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* dotcmsClient = inject(DotCMSClient);
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export interface DotCMSClient extends ClientType {
|
|
20
|
+
}
|
|
21
|
+
export declare class DotCMSClient {
|
|
22
|
+
constructor(client: ClientType);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Creates environment providers for the DotCMS client to be used in Angular applications.
|
|
26
|
+
* This function configures the DI container to provide a DotCMSClient instance
|
|
27
|
+
* throughout the application using the specified configuration.
|
|
28
|
+
*
|
|
29
|
+
* The provider should be registered at the application level (typically in main.ts)
|
|
30
|
+
* to ensure a single instance is shared across the entire application.
|
|
31
|
+
*
|
|
32
|
+
* @param options - Configuration object for the DotCMS client
|
|
33
|
+
* @param options.apiUrl - The base URL for the DotCMS API
|
|
34
|
+
* @param options.authToken - Authentication token for API requests (optional)
|
|
35
|
+
* @param options.siteId - The site identifier (optional)
|
|
36
|
+
* @returns Environment providers array that can be used with bootstrapApplication
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* // main.ts
|
|
41
|
+
* import { bootstrapApplication } from '@angular/platform-browser';
|
|
42
|
+
* import { AppComponent } from './app/app.component';
|
|
43
|
+
* import { provideDotCMSClient } from '@dotcms/angular';
|
|
44
|
+
*
|
|
45
|
+
* bootstrapApplication(AppComponent, {
|
|
46
|
+
* providers: [
|
|
47
|
+
* provideDotCMSClient({
|
|
48
|
+
* apiUrl: 'https://demo.dotcms.com',
|
|
49
|
+
* authToken: 'your-auth-token',
|
|
50
|
+
* siteId: 'your-site-id'
|
|
51
|
+
* }),
|
|
52
|
+
* // other providers...
|
|
53
|
+
* ]
|
|
54
|
+
* });
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
*/
|
|
58
|
+
export declare function provideDotCMSClient(options: DotCMSClientConfig): EnvironmentProviders;
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=dotcms-client.provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dotcms-client.provider.d.ts","sourceRoot":"","sources":["../../../../../../../libs/sdk/angular/next/providers/dotcms-client/dotcms-client.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD;;;GAGG;AACH,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAIxD;;;;;;;;;GASG;AAEH,MAAM,WAAW,YAAa,SAAQ,UAAU;CAAG;AAGnD,qBAAa,YAAY;gBACT,MAAM,EAAE,UAAU;CAGjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,GAAG,oBAAoB,CASrF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Provider } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* Provides a DotCMS image loader configuration for the Angular Image directive
|
|
4
|
+
*
|
|
5
|
+
* @param path - The base URL path to the DotCMS instance, or empty to use current site
|
|
6
|
+
* @returns An array of providers for the IMAGE_LOADER token
|
|
7
|
+
* @throws Error if the provided path is invalid
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* // In your app.config.ts
|
|
11
|
+
* export const appConfig: ApplicationConfig = {
|
|
12
|
+
* providers: [
|
|
13
|
+
* provideDotCMSImageLoader('https://demo.dotcms.com')
|
|
14
|
+
* // Or use current site:
|
|
15
|
+
* // provideDotCMSImageLoader()
|
|
16
|
+
* ]
|
|
17
|
+
* };
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare function provideDotCMSImageLoader(path?: string): Provider[];
|
|
21
|
+
//# sourceMappingURL=dotcms-image_loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dotcms-image_loader.d.ts","sourceRoot":"","sources":["../../../../../../../libs/sdk/angular/next/providers/dotcms-image-loader/dotcms-image_loader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AA8BzC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,EAAE,CAelE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { DotCMSShowWhenDirective } from './directives/dotcms-show-when/dotcms-show-when.directive';
|
|
2
|
+
export { provideDotCMSImageLoader } from './providers/dotcms-image-loader/dotcms-image_loader';
|
|
3
|
+
export { provideDotCMSClient, DotCMSClient } from './providers/dotcms-client/dotcms-client.provider';
|
|
4
|
+
export { DotCMSEditableTextComponent } from './components/dotcms-editable-text/dotcms-editable-text.component';
|
|
5
|
+
export { DotCMSBlockEditorRendererComponent } from './components/dotcms-block-editor-renderer/dotcms-block-editor-renderer.component';
|
|
6
|
+
export { DotCMSLayoutBodyComponent } from './components/dotcms-layout-body/dotcms-layout-body.component';
|
|
7
|
+
export { DotCMSEditablePageService } from './services/dotcms-editable-page.service';
|
|
8
|
+
//# sourceMappingURL=public_api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public_api.d.ts","sourceRoot":"","sources":["../../../../../libs/sdk/angular/next/public_api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,0DAA0D,CAAC;AAEnG,OAAO,EAAE,wBAAwB,EAAE,MAAM,qDAAqD,CAAC;AAE/F,OAAO,EACH,mBAAmB,EACnB,YAAY,EACf,MAAM,kDAAkD,CAAC;AAE1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kEAAkE,CAAC;AAE/G,OAAO,EAAE,kCAAkC,EAAE,MAAM,kFAAkF,CAAC;AAEtI,OAAO,EAAE,yBAAyB,EAAE,MAAM,8DAA8D,CAAC;AAEzG,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { DotCMSComposedPageResponse, DotCMSExtendedPageResponse } from '@dotcms/types';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class DotCMSEditablePageService {
|
|
5
|
+
#private;
|
|
6
|
+
/**
|
|
7
|
+
* Listens for changes to an editable page and returns an Observable that emits the updated page data.
|
|
8
|
+
* This method initializes the UVE (Universal Visual Editor) and sets up subscriptions to track content changes.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* // Import the service
|
|
13
|
+
* import { DotCMSEditablePageService } from '@dotcms/angular';
|
|
14
|
+
*
|
|
15
|
+
* // Inject the service
|
|
16
|
+
* constructor(private editablePageService: DotCMSEditablePageService) {}
|
|
17
|
+
*
|
|
18
|
+
* // Get the page data from your API call
|
|
19
|
+
* const page = await client.page.get('/');
|
|
20
|
+
*
|
|
21
|
+
* // Listen for changes
|
|
22
|
+
* const subscription = this.editablePageService.listen(page).subscribe(updatedPage => {
|
|
23
|
+
* if (updatedPage) {
|
|
24
|
+
* // Handle updated page data
|
|
25
|
+
* console.log('Page updated:', updatedPage);
|
|
26
|
+
* }
|
|
27
|
+
* });
|
|
28
|
+
*
|
|
29
|
+
* // When done listening, unsubscribe
|
|
30
|
+
* subscription.unsubscribe();
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @param response Optional initial page data
|
|
34
|
+
* @returns Observable that emits the updated page data or undefined
|
|
35
|
+
*/
|
|
36
|
+
listen<T extends DotCMSExtendedPageResponse>(response?: DotCMSComposedPageResponse<T>): Observable<DotCMSComposedPageResponse<T> | undefined>;
|
|
37
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DotCMSEditablePageService, never>;
|
|
38
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<DotCMSEditablePageService>;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=dotcms-editable-page.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dotcms-editable-page.service.d.ts","sourceRoot":"","sources":["../../../../../../libs/sdk/angular/next/services/dotcms-editable-page.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAe,MAAM,MAAM,CAAC;AAM/C,OAAO,EAGH,0BAA0B,EAC1B,0BAA0B,EAC7B,MAAM,eAAe,CAAC;;AAGvB,qBAGa,yBAAyB;;IAmBlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,MAAM,CAAC,CAAC,SAAS,0BAA0B,EACvC,QAAQ,CAAC,EAAE,0BAA0B,CAAC,CAAC,CAAC,GACzC,UAAU,CAAC,0BAA0B,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;yCAnD/C,yBAAyB;6CAAzB,yBAAyB;CA0FrC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { DotCMSPageStore } from '../models';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare const EMPTY_DOTCMS_PAGE_STORE: DotCMSPageStore;
|
|
4
|
+
/**
|
|
5
|
+
* @description This service is responsible for managing the page context.
|
|
6
|
+
* @internal
|
|
7
|
+
* @author dotCMS
|
|
8
|
+
* @export
|
|
9
|
+
* @class DotCMSStore
|
|
10
|
+
*/
|
|
11
|
+
export declare class DotCMSStore {
|
|
12
|
+
private $store;
|
|
13
|
+
/**
|
|
14
|
+
* @description Get the store
|
|
15
|
+
* @readonly
|
|
16
|
+
* @type {DotCMSPageStore}
|
|
17
|
+
* @memberof DotCMSStore
|
|
18
|
+
*/
|
|
19
|
+
get store(): DotCMSPageStore;
|
|
20
|
+
/**
|
|
21
|
+
* @description Set the store
|
|
22
|
+
* @param {DotCMSPageStore} value
|
|
23
|
+
* @memberof DotCMSStore
|
|
24
|
+
*/
|
|
25
|
+
setStore(store: DotCMSPageStore): void;
|
|
26
|
+
/**
|
|
27
|
+
* @description Get if the current context is in development mode
|
|
28
|
+
* @readonly
|
|
29
|
+
* @type {boolean}
|
|
30
|
+
* @memberof DotCMSStore
|
|
31
|
+
*/
|
|
32
|
+
$isDevMode: import("@angular/core").Signal<boolean>;
|
|
33
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DotCMSStore, never>;
|
|
34
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<DotCMSStore>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=dotcms.store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dotcms.store.d.ts","sourceRoot":"","sources":["../../../../../../libs/sdk/angular/next/store/dotcms.store.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;;AAE5C,eAAO,MAAM,uBAAuB,EAAE,eAIrC,CAAC;AAEF;;;;;;GAMG;AACH,qBAGa,WAAW;IACpB,OAAO,CAAC,MAAM,CAAoD;IAElE;;;;;OAKG;IACH,IAAI,KAAK,IAAI,eAAe,CAE3B;IAED;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAItC;;;;;OAKG;IACH,UAAU,0CAQP;yCApCM,WAAW;6CAAX,WAAW;CAqCvB"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dotcms/angular",
|
|
3
|
-
"version": "0.0.1-beta.
|
|
3
|
+
"version": "0.0.1-beta.40",
|
|
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-beta.
|
|
8
|
+
"@dotcms/client": "0.0.1-beta.40",
|
|
9
|
+
"@dotcms/uve": "0.0.1-beta.40",
|
|
9
10
|
"@tinymce/tinymce-angular": "^8.0.0",
|
|
10
11
|
"rxjs": ">=7.0.0"
|
|
11
12
|
},
|
|
@@ -40,6 +41,12 @@
|
|
|
40
41
|
"esm2022": "./esm2022/dotcms-angular.mjs",
|
|
41
42
|
"esm": "./esm2022/dotcms-angular.mjs",
|
|
42
43
|
"default": "./fesm2022/dotcms-angular.mjs"
|
|
44
|
+
},
|
|
45
|
+
"./next": {
|
|
46
|
+
"types": "./next/index.d.ts",
|
|
47
|
+
"esm2022": "./esm2022/next/dotcms-angular-next.mjs",
|
|
48
|
+
"esm": "./esm2022/next/dotcms-angular-next.mjs",
|
|
49
|
+
"default": "./fesm2022/dotcms-angular-next.mjs"
|
|
43
50
|
}
|
|
44
51
|
},
|
|
45
52
|
"sideEffects": false,
|
package/public_api.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public_api.d.ts","sourceRoot":"","sources":["../../../../libs/sdk/angular/src/public_api.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC"}
|
package/esm2022/index.mjs
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export * from './lib/components/dot-editable-text/dot-editable-text.component';
|
|
2
|
-
export * from './lib/layout/dotcms-layout/dotcms-layout.component';
|
|
3
|
-
export * from './lib/services/dotcms-context/page-context.service';
|
|
4
|
-
export * from './lib/models';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9hbmd1bGFyL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdFQUFnRSxDQUFDO0FBQy9FLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZG90LWVkaXRhYmxlLXRleHQvZG90LWVkaXRhYmxlLXRleHQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xheW91dC9kb3RjbXMtbGF5b3V0L2RvdGNtcy1sYXlvdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2RvdGNtcy1jb250ZXh0L3BhZ2UtY29udGV4dC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscyc7XG4iXX0=
|
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
import { EditorComponent, TINYMCE_SCRIPT_SRC } from '@tinymce/tinymce-angular';
|
|
2
|
-
import { Component, ElementRef, HostListener, inject, Input, Renderer2, SecurityContext, ViewChild } from '@angular/core';
|
|
3
|
-
import { DomSanitizer } from '@angular/platform-browser';
|
|
4
|
-
import { CLIENT_ACTIONS, DotCmsClient, isInsideEditor, NOTIFY_CLIENT, postMessageToEditor } from '@dotcms/client';
|
|
5
|
-
import { TINYMCE_CONFIG } from './utils';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
/**
|
|
8
|
-
* Dot editable text component.
|
|
9
|
-
* This component is responsible to render a text field that can be edited inline.
|
|
10
|
-
*
|
|
11
|
-
* @export
|
|
12
|
-
* @class DotEditableTextComponent
|
|
13
|
-
* @implements {OnInit}
|
|
14
|
-
* @implements {OnChanges}
|
|
15
|
-
*/
|
|
16
|
-
export class DotEditableTextComponent {
|
|
17
|
-
constructor() {
|
|
18
|
-
/**
|
|
19
|
-
* Represents the mode of the editor which can be `plain`, `minimal`, or `full`
|
|
20
|
-
*
|
|
21
|
-
* @type {DOT_EDITABLE_TEXT_MODE}
|
|
22
|
-
* @memberof DotEditableTextComponent
|
|
23
|
-
*/
|
|
24
|
-
this.mode = 'plain';
|
|
25
|
-
/**
|
|
26
|
-
* Represents the format of the editor which can be `text` or `html`
|
|
27
|
-
*
|
|
28
|
-
* @type {DOT_EDITABLE_TEXT_FORMAT}
|
|
29
|
-
* @memberof DotEditableTextComponent
|
|
30
|
-
*/
|
|
31
|
-
this.format = 'text';
|
|
32
|
-
/**
|
|
33
|
-
* Represents the field name of the `contentlet` that can be edited
|
|
34
|
-
*
|
|
35
|
-
* @memberof DotEditableTextComponent
|
|
36
|
-
*/
|
|
37
|
-
this.fieldName = '';
|
|
38
|
-
/**
|
|
39
|
-
* Represents the content of the `contentlet` that can be edited
|
|
40
|
-
*
|
|
41
|
-
* @protected
|
|
42
|
-
* @memberof DotEditableTextComponent
|
|
43
|
-
*/
|
|
44
|
-
this.content = '';
|
|
45
|
-
this.#sanitizer = inject(DomSanitizer);
|
|
46
|
-
this.#renderer = inject(Renderer2);
|
|
47
|
-
this.#elementRef = inject(ElementRef);
|
|
48
|
-
}
|
|
49
|
-
#sanitizer;
|
|
50
|
-
#renderer;
|
|
51
|
-
#elementRef;
|
|
52
|
-
/**
|
|
53
|
-
* The TinyMCE editor
|
|
54
|
-
*
|
|
55
|
-
* @readonly
|
|
56
|
-
* @memberof DotEditableTextComponent
|
|
57
|
-
*/
|
|
58
|
-
get editor() {
|
|
59
|
-
return this.editorComponent?.editor;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Returns the number of pages the contentlet is on
|
|
63
|
-
*
|
|
64
|
-
* @readonly
|
|
65
|
-
* @memberof DotEditableTextComponent
|
|
66
|
-
*/
|
|
67
|
-
get onNumberOfPages() {
|
|
68
|
-
return this.contentlet['onNumberOfPages'] || 1;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Handle copy contentlet inline editing success event
|
|
72
|
-
*
|
|
73
|
-
* @param {MessageEvent} { data }
|
|
74
|
-
* @return {*}
|
|
75
|
-
* @memberof DotEditableTextComponent
|
|
76
|
-
*/
|
|
77
|
-
onMessage({ data }) {
|
|
78
|
-
const { name, payload } = data;
|
|
79
|
-
if (name !== NOTIFY_CLIENT.UVE_COPY_CONTENTLET_INLINE_EDITING_SUCCESS) {
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
const { oldInode, inode } = payload;
|
|
83
|
-
const currentInode = this.contentlet.inode;
|
|
84
|
-
if (currentInode === oldInode || currentInode === inode) {
|
|
85
|
-
this.editorComponent.editor.focus();
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
ngOnInit() {
|
|
90
|
-
this.isInsideEditor = isInsideEditor();
|
|
91
|
-
if (!this.isInsideEditor) {
|
|
92
|
-
this.innerHTMLToElement();
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
this.init = {
|
|
96
|
-
...TINYMCE_CONFIG[this.mode],
|
|
97
|
-
base_url: `${DotCmsClient.dotcmsUrl}/ext/tinymcev7`
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
ngOnChanges() {
|
|
101
|
-
this.content = this.contentlet[this.fieldName] || '';
|
|
102
|
-
if (this.editor) {
|
|
103
|
-
this.editor.setContent(this.content, { format: this.format });
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Handle mouse down event
|
|
108
|
-
*
|
|
109
|
-
* @param {EventObj<MouseEvent>} { event }
|
|
110
|
-
* @return {*}
|
|
111
|
-
* @memberof DotEditableTextComponent
|
|
112
|
-
*/
|
|
113
|
-
onMouseDown({ event }) {
|
|
114
|
-
if (this.onNumberOfPages <= 1 || this.editorComponent.editor.hasFocus()) {
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
const { inode, languageId: language } = this.contentlet;
|
|
118
|
-
event.stopPropagation();
|
|
119
|
-
event.preventDefault();
|
|
120
|
-
try {
|
|
121
|
-
postMessageToEditor({
|
|
122
|
-
action: CLIENT_ACTIONS.COPY_CONTENTLET_INLINE_EDITING,
|
|
123
|
-
payload: {
|
|
124
|
-
dataset: {
|
|
125
|
-
inode,
|
|
126
|
-
language,
|
|
127
|
-
fieldName: this.fieldName
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
catch (error) {
|
|
133
|
-
console.error('Failed to post message to editor:', error);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Handle focus out event
|
|
138
|
-
*
|
|
139
|
-
* @return {*}
|
|
140
|
-
* @memberof DotEditableTextComponent
|
|
141
|
-
*/
|
|
142
|
-
onFocusOut() {
|
|
143
|
-
const content = this.editor.getContent({ format: this.format });
|
|
144
|
-
if (!this.editor.isDirty() || !this.didContentChange(content)) {
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
|
-
const { inode, languageId: langId } = this.contentlet;
|
|
148
|
-
try {
|
|
149
|
-
postMessageToEditor({
|
|
150
|
-
action: CLIENT_ACTIONS.UPDATE_CONTENTLET_INLINE_EDITING,
|
|
151
|
-
payload: {
|
|
152
|
-
content,
|
|
153
|
-
dataset: {
|
|
154
|
-
inode,
|
|
155
|
-
langId,
|
|
156
|
-
fieldName: this.fieldName
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
catch (error) {
|
|
162
|
-
console.error('Failed to post message to editor:', error);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* inner HTML to element
|
|
167
|
-
*
|
|
168
|
-
* @private
|
|
169
|
-
* @param {string} editedContent
|
|
170
|
-
* @return {*}
|
|
171
|
-
* @memberof DotEditableTextComponent
|
|
172
|
-
*/
|
|
173
|
-
innerHTMLToElement() {
|
|
174
|
-
const element = this.#elementRef.nativeElement;
|
|
175
|
-
const safeHtml = this.#sanitizer.bypassSecurityTrustHtml(this.content);
|
|
176
|
-
const content = this.#sanitizer.sanitize(SecurityContext.HTML, safeHtml) || '';
|
|
177
|
-
this.#renderer.setProperty(element, 'innerHTML', content);
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Check if the content has changed
|
|
181
|
-
*
|
|
182
|
-
* @private
|
|
183
|
-
* @param {string} editedContent
|
|
184
|
-
* @return {*}
|
|
185
|
-
* @memberof DotEditableTextComponent
|
|
186
|
-
*/
|
|
187
|
-
didContentChange(editedContent) {
|
|
188
|
-
return this.content !== editedContent;
|
|
189
|
-
}
|
|
190
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: DotEditableTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
191
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: DotEditableTextComponent, isStandalone: true, selector: "dot-editable-text", inputs: { mode: "mode", format: "format", contentlet: "contentlet", fieldName: "fieldName" }, host: { listeners: { "window:message": "onMessage($event)" } }, providers: [
|
|
192
|
-
{
|
|
193
|
-
provide: TINYMCE_SCRIPT_SRC,
|
|
194
|
-
useFactory: () => {
|
|
195
|
-
return `${DotCmsClient.dotcmsUrl}/ext/tinymcev7/tinymce.min.js`;
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
], viewQueries: [{ propertyName: "editorComponent", first: true, predicate: EditorComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (isInsideEditor) {\n <editor\n #tinyEditor\n [init]=\"init\"\n [initialValue]=\"content\"\n (onMouseDown)=\"onMouseDown($event)\"\n (onFocusOut)=\"onFocusOut()\" />\n}\n", styles: [":host ::ng-deep .mce-content-body:not(.mce-edit-focus):hover{outline:2px solid #006ce7;border-radius:4px}\n"], dependencies: [{ kind: "component", type: EditorComponent, selector: "editor", inputs: ["cloudChannel", "apiKey", "init", "id", "initialValue", "outputFormat", "inline", "tagName", "plugins", "toolbar", "modelEvents", "allowedEvents", "ignoreEvents", "disabled"] }] }); }
|
|
199
|
-
}
|
|
200
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: DotEditableTextComponent, decorators: [{
|
|
201
|
-
type: Component,
|
|
202
|
-
args: [{ selector: 'dot-editable-text', standalone: true, imports: [EditorComponent], providers: [
|
|
203
|
-
{
|
|
204
|
-
provide: TINYMCE_SCRIPT_SRC,
|
|
205
|
-
useFactory: () => {
|
|
206
|
-
return `${DotCmsClient.dotcmsUrl}/ext/tinymcev7/tinymce.min.js`;
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
], template: "@if (isInsideEditor) {\n <editor\n #tinyEditor\n [init]=\"init\"\n [initialValue]=\"content\"\n (onMouseDown)=\"onMouseDown($event)\"\n (onFocusOut)=\"onFocusOut()\" />\n}\n", styles: [":host ::ng-deep .mce-content-body:not(.mce-edit-focus):hover{outline:2px solid #006ce7;border-radius:4px}\n"] }]
|
|
210
|
-
}], propDecorators: { editorComponent: [{
|
|
211
|
-
type: ViewChild,
|
|
212
|
-
args: [EditorComponent]
|
|
213
|
-
}], mode: [{
|
|
214
|
-
type: Input
|
|
215
|
-
}], format: [{
|
|
216
|
-
type: Input
|
|
217
|
-
}], contentlet: [{
|
|
218
|
-
type: Input
|
|
219
|
-
}], fieldName: [{
|
|
220
|
-
type: Input
|
|
221
|
-
}], onMessage: [{
|
|
222
|
-
type: HostListener,
|
|
223
|
-
args: ['window:message', ['$event']]
|
|
224
|
-
}] } });
|
|
225
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG90LWVkaXRhYmxlLXRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZG90LWVkaXRhYmxlLXRleHQvZG90LWVkaXRhYmxlLXRleHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZG90LWVkaXRhYmxlLXRleHQvZG90LWVkaXRhYmxlLXRleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRy9FLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEVBQ0gsY0FBYyxFQUNkLFlBQVksRUFDWixjQUFjLEVBQ2QsYUFBYSxFQUNiLG1CQUFtQixFQUN0QixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxjQUFjLEVBQW9ELE1BQU0sU0FBUyxDQUFDOztBQUkzRjs7Ozs7Ozs7R0FRRztBQWdCSCxNQUFNLE9BQU8sd0JBQXdCO0lBZnJDO1FBa0JJOzs7OztXQUtHO1FBQ00sU0FBSSxHQUEyQixPQUFPLENBQUM7UUFDaEQ7Ozs7O1dBS0c7UUFDTSxXQUFNLEdBQTZCLE1BQU0sQ0FBQztRQVFuRDs7OztXQUlHO1FBQ00sY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUV4Qjs7Ozs7V0FLRztRQUNPLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFrQmQsZUFBVSxHQUFHLE1BQU0sQ0FBZSxZ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QUUvRSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ssZ0JBQWdCLENBQUMsYUFBcUI7UUFDMUMsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLGFBQWEsQ0FBQztJQUMxQyxDQUFDOzhHQXZOUSx3QkFBd0I7a0dBQXhCLHdCQUF3Qiw4TkFUdEI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixVQUFVLEVBQUUsR0FBRyxFQUFFO29CQUNiLE9BQU8sR0FBRyxZQUFZLENBQUMsU0FBUywrQkFBK0IsQ0FBQztnQkFDcEUsQ0FBQzthQUNKO1NBQ0osMkVBR1UsZUFBZSxxRUN0RDlCLHFOQVFBLHFLRG1DYyxlQUFlOzsyRkFVaEIsd0JBQXdCO2tCQWZwQyxTQUFTOytCQUNJLG1CQUFtQixjQUNqQixJQUFJLFdBR1AsQ0FBQyxlQUFlLENBQUMsYUFDZjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixVQUFVLEVBQUUsR0FBRyxFQUFFO2dDQUNiLE9BQU8sR0FBRyxZQUFZLENBQUMsU0FBUywrQkFBK0IsQ0FBQzs0QkFDcEUsQ0FBQzt5QkFDSjtxQkFDSjs4QkFHMkIsZUFBZTtzQkFBMUMsU0FBUzt1QkFBQyxlQUFlO2dCQVFqQixJQUFJO3NCQUFaLEtBQUs7Z0JBT0csTUFBTTtzQkFBZCxLQUFLO2dCQU9HLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTUcsU0FBUztzQkFBakIsS0FBSztnQkEwRE4sU0FBUztzQkFEUixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRpdG9yQ29tcG9uZW50LCBUSU5ZTUNFX1NDUklQVF9TUkMgfSBmcm9tICdAdGlueW1jZS90aW55bWNlLWFuZ3VsYXInO1xuaW1wb3J0IHsgRXZlbnRPYmogfSBmcm9tICdAdGlueW1jZS90aW55bWNlLWFuZ3VsYXIvZWRpdG9yL0V2ZW50cyc7XG5cbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIFJlbmRlcmVyMixcbiAgICBTZWN1cml0eUNvbnRleHQsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmltcG9ydCB7XG4gICAgQ0xJRU5UX0FDVElPTlMsXG4gICAgRG90Q21zQ2xpZW50LFxuICAgIGlzSW5zaWRlRWRpdG9yLFxuICAgIE5PVElGWV9DTElFTlQsXG4gICAgcG9zdE1lc3NhZ2VUb0VkaXRvclxufSBmcm9tICdAZG90Y21zL2NsaWVudCc7XG5cbmltcG9ydCB7IFRJTllNQ0VfQ09ORklHLCBET1RfRURJVEFCTEVfVEVYVF9GT1JNQVQsIERPVF9FRElUQUJMRV9URVhUX01PREUgfSBmcm9tICcuL3V0aWxzJztcblxuaW1wb3J0IHsgRG90Q01TQ29udGVudGxldCB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cbi8qKlxuICogRG90IGVkaXRhYmxlIHRleHQgY29tcG9uZW50LlxuICogVGhpcyBjb21wb25lbnQgaXMgcmVzcG9uc2libGUgdG8gcmVuZGVyIGEgdGV4dCBmaWVsZCB0aGF0IGNhbiBiZSBlZGl0ZWQgaW5saW5lLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBEb3RFZGl0YWJsZVRleHRDb21wb25lbnRcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XG4gKiBAaW1wbGVtZW50cyB7T25DaGFuZ2VzfVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RvdC1lZGl0YWJsZS10ZXh0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kb3QtZWRpdGFibGUtdGV4dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2RvdC1lZGl0YWJsZS10ZXh0LmNvbXBvbmVudC5jc3MnLFxuICAgIGltcG9ydHM6IFtFZGl0b3JDb21wb25lbnRdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUSU5ZTUNFX1NDUklQVF9TUkMsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke0RvdENtc0NsaWVudC5kb3RjbXNVcmx9L2V4dC90aW55bWNldjcvdGlueW1jZS5taW4uanNgO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBEb3RFZGl0YWJsZVRleHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQFZpZXdDaGlsZChFZGl0b3JDb21wb25lbnQpIGVkaXRvckNvbXBvbmVudCE6IEVkaXRvckNvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgdGhlIG1vZGUgb2YgdGhlIGVkaXRvciB3aGljaCBjYW4gYmUgYHBsYWluYCwgYG1pbmltYWxgLCBvciBgZnVsbGBcbiAgICAgKlxuICAgICAqIEB0eXBlIHtET1RfRURJVEFCTEVfVEVYVF9NT0RFfVxuICAgICAqIEBtZW1iZXJvZiBEb3RFZGl0YWJsZVRleHRDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtb2RlOiBET1RfRURJVEFCTEVfVEVYVF9NT0RFID0gJ3BsYWluJztcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBmb3JtYXQgb2YgdGhlIGVkaXRvciB3aGljaCBjYW4gYmUgYHRleHRgIG9yIGBodG1sYFxuICAgICAqXG4gICAgICogQHR5cGUge0RPVF9FRElUQUJMRV9URVhUX0ZPUk1BVH1cbiAgICAgKiBAbWVtYmVyb2YgRG90RWRpdGFibGVUZXh0Q29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgZm9ybWF0OiBET1RfRURJVEFCTEVfVEVYVF9GT1JNQVQgPSAndGV4dCc7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgYGNvbnRlbnRsZXRgIHRoYXQgY2FuIGJlIGlubGluZSBlZGl0ZWRcbiAgICAgKlxuICAgICAqIEB0eXBlIHtEb3RDTVNDb250ZW50bGV0fVxuICAgICAqIEBtZW1iZXJvZiBEb3RFZGl0YWJsZVRleHRDb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBjb250ZW50bGV0ITogRG90Q01TQ29udGVudGxldDtcbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBmaWVsZCBuYW1lIG9mIHRoZSBgY29udGVudGxldGAgdGhhdCBjYW4gYmUgZWRpdGVkXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgRG90RWRpdGFibGVUZXh0Q29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgZmllbGROYW1lID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBSZXByZXNlbnRzIHRoZSBjb250ZW50IG9mIHRoZSBgY29udGVudGxldGAgdGhhdCBjYW4gYmUgZWRpdGVkXG4gICAgICpcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICogQG1lbWJlcm9mIERvdEVkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjb250ZW50ID0gJyc7XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgZWRpdG9yXG4gICAgICpcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICogQHR5cGUge0VkaXRvckNvbXBvbmVudFsnaW5pdCddfVxuICAgICAqIEBtZW1iZXJvZiBEb3RFZGl0YWJsZVRleHRDb21wb25lbnRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaW5pdCE6IEVkaXRvckNvbXBvbmVudFsnaW5pdCddO1xuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgaWYgdGhlIGNvbXBvbmVudCBpcyBpbnNpZGUgdGhlIGVkaXRvclxuICAgICAqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqIEBtZW1iZXJvZiBEb3RFZGl0YWJsZVRleHRDb21wb25lbnRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaXNJbnNpZGVFZGl0b3IhOiBib29sZWFuO1xuXG4gICAgcmVhZG9ubHkgI3Nhbml0aXplciA9IGluamVjdDxEb21TYW5pdGl6ZXI+KERvbVNhbml0aXplcik7XG4gICAgcmVhZG9ubHkgI3JlbmRlcmVyID0gaW5qZWN0PFJlbmRlcmVyMj4oUmVuZGVyZXIyKTtcbiAgICByZWFkb25seSAjZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPihFbGVtZW50UmVmKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBUaW55TUNFIGVkaXRvclxuICAgICAqXG4gICAgICogQHJlYWRvbmx5XG4gICAgICogQG1lbWJlcm9mIERvdEVkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIGdldCBlZGl0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVkaXRvckNvbXBvbmVudD8uZWRpdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBwYWdlcyB0aGUgY29udGVudGxldCBpcyBvblxuICAgICAqXG4gICAgICogQHJlYWRvbmx5XG4gICAgICogQG1lbWJlcm9mIERvdEVkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIGdldCBvbk51bWJlck9mUGFnZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRsZXRbJ29uTnVtYmVyT2ZQYWdlcyddIHx8IDE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIGNvcHkgY29udGVudGxldCBpbmxpbmUgZWRpdGluZyBzdWNjZXNzIGV2ZW50XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge01lc3NhZ2VFdmVudH0geyBkYXRhIH1cbiAgICAgKiBAcmV0dXJuIHsqfVxuICAgICAqIEBtZW1iZXJvZiBEb3RFZGl0YWJsZVRleHRDb21wb25lbnRcbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bWVzc2FnZScsIFsnJGV2ZW50J10pXG4gICAgb25NZXNzYWdlKHsgZGF0YSB9OiBNZXNzYWdlRXZlbnQpIHtcbiAgICAgICAgY29uc3QgeyBuYW1lLCBwYXlsb2FkIH0gPSBkYXRhO1xuICAgICAgICBpZiAobmFtZSAhPT0gTk9USUZZX0NMSUVOVC5VVkVfQ09QWV9DT05URU5UTEVUX0lOTElORV9FRElUSU5HX1NVQ0NFU1MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgb2xkSW5vZGUsIGlub2RlIH0gPSBwYXlsb2FkO1xuICAgICAgICBjb25zdCBjdXJyZW50SW5vZGUgPSB0aGlzLmNvbnRlbnRsZXQuaW5vZGU7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRJbm9kZSA9PT0gb2xkSW5vZGUgfHwgY3VycmVudElub2RlID09PSBpbm9kZSkge1xuICAgICAgICAgICAgdGhpcy5lZGl0b3JDb21wb25lbnQuZWRpdG9yLmZvY3VzKCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmlzSW5zaWRlRWRpdG9yID0gaXNJbnNpZGVFZGl0b3IoKTtcblxuICAgICAgICBpZiAoIXRoaXMuaXNJbnNpZGVFZGl0b3IpIHtcbiAgICAgICAgICAgIHRoaXMuaW5uZXJIVE1MVG9FbGVtZW50KCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5pdCA9IHtcbiAgICAgICAgICAgIC4uLlRJTllNQ0VfQ09ORklHW3RoaXMubW9kZV0sXG4gICAgICAgICAgICBiYXNlX3VybDogYCR7RG90Q21zQ2xpZW50LmRvdGNtc1VybH0vZXh0L3RpbnltY2V2N2BcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgdGhpcy5jb250ZW50ID0gdGhpcy5jb250ZW50bGV0W3RoaXMuZmllbGROYW1lXSB8fCAnJztcbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yKSB7XG4gICAgICAgICAgICB0aGlzLmVkaXRvci5zZXRDb250ZW50KHRoaXMuY29udGVudCwgeyBmb3JtYXQ6IHRoaXMuZm9ybWF0IH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIG1vdXNlIGRvd24gZXZlbnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RXZlbnRPYmo8TW91c2VFdmVudD59IHsgZXZlbnQgfVxuICAgICAqIEByZXR1cm4geyp9XG4gICAgICogQG1lbWJlcm9mIERvdEVkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIG9uTW91c2VEb3duKHsgZXZlbnQgfTogRXZlbnRPYmo8TW91c2VFdmVudD4pIHtcbiAgICAgICAgaWYgKHRoaXMub25OdW1iZXJPZlBhZ2VzIDw9IDEgfHwgdGhpcy5lZGl0b3JDb21wb25lbnQuZWRpdG9yLmhhc0ZvY3VzKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgaW5vZGUsIGxhbmd1YWdlSWQ6IGxhbmd1YWdlIH0gPSB0aGlzLmNvbnRlbnRsZXQ7XG5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHBvc3RNZXNzYWdlVG9FZGl0b3Ioe1xuICAgICAgICAgICAgICAgIGFjdGlvbjogQ0xJRU5UX0FDVElPTlMuQ09QWV9DT05URU5UTEVUX0lOTElORV9FRElUSU5HLFxuICAgICAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YXNldDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZTogdGhpcy5maWVsZE5hbWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHBvc3QgbWVzc2FnZSB0byBlZGl0b3I6JywgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBmb2N1cyBvdXQgZXZlbnRcbiAgICAgKlxuICAgICAqIEByZXR1cm4geyp9XG4gICAgICogQG1lbWJlcm9mIERvdEVkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIG9uRm9jdXNPdXQoKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmVkaXRvci5nZXRDb250ZW50KHsgZm9ybWF0OiB0aGlzLmZvcm1hdCB9KTtcblxuICAgICAgICBpZiAoIXRoaXMuZWRpdG9yLmlzRGlydHkoKSB8fCAhdGhpcy5kaWRDb250ZW50Q2hhbmdlKGNvbnRlbnQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IGlub2RlLCBsYW5ndWFnZUlkOiBsYW5nSWQgfSA9IHRoaXMuY29udGVudGxldDtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcG9zdE1lc3NhZ2VUb0VkaXRvcih7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiBDTElFTlRfQUNUSU9OUy5VUERBVEVfQ09OVEVOVExFVF9JTkxJTkVfRURJVElORyxcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFzZXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlub2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ0lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lOiB0aGlzLmZpZWxkTmFtZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gcG9zdCBtZXNzYWdlIHRvIGVkaXRvcjonLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpbm5lciBIVE1MIHRvIGVsZW1lbnRcbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGVkaXRlZENvbnRlbnRcbiAgICAgKiBAcmV0dXJuIHsqfVxuICAgICAqIEBtZW1iZXJvZiBEb3RFZGl0YWJsZVRleHRDb21wb25lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIGlubmVySFRNTFRvRWxlbWVudCgpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3Qgc2FmZUh0bWwgPSB0aGlzLiNzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodGhpcy5jb250ZW50KTtcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMuI3Nhbml0aXplci5zYW5pdGl6ZShTZWN1cml0eUNvbnRleHQuSFRNTCwgc2FmZUh0bWwpIHx8ICcnO1xuXG4gICAgICAgIHRoaXMuI3JlbmRlcmVyLnNldFByb3BlcnR5KGVsZW1lbnQsICdpbm5lckhUTUwnLCBjb250ZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgY29udGVudCBoYXMgY2hhbmdlZFxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZWRpdGVkQ29udGVudFxuICAgICAqIEByZXR1cm4geyp9XG4gICAgICogQG1lbWJlcm9mIERvdEVkaXRhYmxlVGV4dENvbXBvbmVudFxuICAgICAqL1xuICAgIHByaXZhdGUgZGlkQ29udGVudENoYW5nZShlZGl0ZWRDb250ZW50OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudCAhPT0gZWRpdGVkQ29udGVudDtcbiAgICB9XG59XG4iLCJAaWYgKGlzSW5zaWRlRWRpdG9yKSB7XG4gICAgPGVkaXRvclxuICAgICAgICAjdGlueUVkaXRvclxuICAgICAgICBbaW5pdF09XCJpbml0XCJcbiAgICAgICAgW2luaXRpYWxWYWx1ZV09XCJjb250ZW50XCJcbiAgICAgICAgKG9uTW91c2VEb3duKT1cIm9uTW91c2VEb3duKCRldmVudClcIlxuICAgICAgICAob25Gb2N1c091dCk9XCJvbkZvY3VzT3V0KClcIiAvPlxufVxuIl19
|