@veloceapps/sdk 7.0.2-2 → 7.0.2-20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. package/cms/cms.actions.d.ts +7 -1
  2. package/cms/components/element-children/element-children.component.d.ts +3 -1
  3. package/cms/components/element-tools-panel/element-tools-panel.component.d.ts +14 -0
  4. package/cms/components/preview/preview.module.d.ts +2 -1
  5. package/cms/components/preview/preview.types.d.ts +4 -0
  6. package/cms/injection-tokens.d.ts +1 -3
  7. package/cms/modules/runtime/services/compilation.service.d.ts +2 -1
  8. package/cms/modules/runtime/services/runtime-editor.service.d.ts +6 -4
  9. package/cms/modules/runtime/types/runtime.actions.d.ts +5 -2
  10. package/cms/plugins/element-hover.plugin.d.ts +32 -0
  11. package/cms/plugins/script.plugin.d.ts +0 -3
  12. package/cms/types/common.types.d.ts +11 -1
  13. package/cms/types/index.d.ts +2 -0
  14. package/cms/types/layouts.types.d.ts +28 -2
  15. package/cms/types/pages.types.d.ts +1 -0
  16. package/cms/utils/elements-resolver.d.ts +5 -1
  17. package/cms/utils/script.utils.d.ts +2 -0
  18. package/cms/vendor-map.d.ts +7 -5
  19. package/core/modules/configuration/services/configuration.service.d.ts +3 -3
  20. package/core/types/ui-definition.types.d.ts +7 -2
  21. package/core/utils/line-item.utils.d.ts +4 -2
  22. package/core/utils/line-item.worker.d.ts +2 -2
  23. package/esm2020/cms/cms.actions.mjs +11 -2
  24. package/esm2020/cms/cms.elements.mjs +14 -3
  25. package/esm2020/cms/cms.layouts.mjs +39 -1
  26. package/esm2020/cms/components/element-children/element-children.component.mjs +11 -6
  27. package/esm2020/cms/components/element-drop-handle/element-drop-handle.component.mjs +2 -2
  28. package/esm2020/cms/components/element-tools-panel/element-tools-panel.component.mjs +35 -0
  29. package/esm2020/cms/components/preview/preview.module.mjs +22 -4
  30. package/esm2020/cms/components/preview/preview.types.mjs +1 -1
  31. package/esm2020/cms/injection-tokens.mjs +1 -2
  32. package/esm2020/cms/modules/runtime/services/compilation.service.mjs +3 -3
  33. package/esm2020/cms/modules/runtime/services/runtime-editor.service.mjs +5 -3
  34. package/esm2020/cms/modules/runtime/services/runtime.service.mjs +2 -2
  35. package/esm2020/cms/modules/runtime/types/runtime.actions.mjs +1 -1
  36. package/esm2020/cms/plugins/element-hover.plugin.mjs +112 -0
  37. package/esm2020/cms/plugins/script.plugin.mjs +6 -40
  38. package/esm2020/cms/services/integration.state.mjs +3 -6
  39. package/esm2020/cms/services/io-provider.service.mjs +7 -5
  40. package/esm2020/cms/types/common.types.mjs +1 -1
  41. package/esm2020/cms/types/index.mjs +3 -1
  42. package/esm2020/cms/types/layouts.types.mjs +70 -1
  43. package/esm2020/cms/types/pages.types.mjs +2 -0
  44. package/esm2020/cms/utils/elements-resolver.mjs +22 -8
  45. package/esm2020/cms/utils/script.utils.mjs +42 -0
  46. package/esm2020/cms/vendor-map.mjs +3 -2
  47. package/esm2020/core/modules/configuration/services/configuration.service.mjs +6 -5
  48. package/esm2020/core/types/ui-definition.types.mjs +1 -1
  49. package/esm2020/core/utils/line-item.utils.mjs +35 -16
  50. package/esm2020/core/utils/line-item.worker.mjs +5 -5
  51. package/esm2020/src/components/header/header.component.mjs +15 -3
  52. package/esm2020/src/flow-routing.module.mjs +1 -1
  53. package/fesm2015/veloceapps-sdk-cms.mjs +343 -108
  54. package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
  55. package/fesm2015/veloceapps-sdk-core.mjs +46 -24
  56. package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
  57. package/fesm2015/veloceapps-sdk.mjs +15 -2
  58. package/fesm2015/veloceapps-sdk.mjs.map +1 -1
  59. package/fesm2020/veloceapps-sdk-cms.mjs +424 -122
  60. package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
  61. package/fesm2020/veloceapps-sdk-core.mjs +46 -24
  62. package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
  63. package/fesm2020/veloceapps-sdk.mjs +14 -2
  64. package/fesm2020/veloceapps-sdk.mjs.map +1 -1
  65. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component } from '@angular/core';
2
- import { combineLatest, map, of, Subject, takeUntil } from 'rxjs';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';
2
+ import { Subject, combineLatest, map, of, takeUntil } from 'rxjs';
3
3
  import { RuntimeEditorService } from '../../modules/runtime/services/runtime-editor.service';
4
4
  import { RuntimeService } from '../../modules/runtime/services/runtime.service';
5
5
  import { ElementContextService } from '../../services/element-context.service';
@@ -26,11 +26,16 @@ export class ElementChildrenComponent {
26
26
  this.destroyed$.next();
27
27
  this.destroyed$.complete();
28
28
  }
29
+ getFilteredChildren(elements) {
30
+ return this.filter ? this.filter(elements) : elements;
31
+ }
29
32
  }
30
33
  ElementChildrenComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ElementChildrenComponent, deps: [{ token: i1.ElementContextService }, { token: i2.RuntimeService }, { token: i3.RuntimeEditorService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
31
- ElementChildrenComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: ElementChildrenComponent, selector: "element-children", ngImport: i0, template: "<ng-container *ngIf=\"metadata$ | async as metadata\">\n <vl-element-drop-handle *ngIf=\"dragMode$ | async\" [index]=\"0\" [parentPath]=\"metadata.path\"></vl-element-drop-handle>\n <ng-container *ngFor=\"let child of metadata.children; let i = index\">\n <vl-cms-element-renderer [meta]=\"child\"></vl-cms-element-renderer>\n <vl-element-drop-handle\n *ngIf=\"dragMode$ | async\"\n [index]=\"i + 1\"\n [parentPath]=\"metadata.path\"\n ></vl-element-drop-handle>\n </ng-container>\n</ng-container>\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ElementRendererComponent, selector: "vl-cms-element-renderer", inputs: ["meta"] }, { kind: "component", type: i6.ElementDropHandleComponent, selector: "vl-element-drop-handle", inputs: ["index", "parentPath"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
34
+ ElementChildrenComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: ElementChildrenComponent, selector: "element-children", inputs: { filter: "filter" }, ngImport: i0, template: "<ng-container *ngIf=\"metadata$ | async as metadata\">\n <vl-element-drop-handle *ngIf=\"dragMode$ | async\" [index]=\"0\" [parentPath]=\"metadata.path\"></vl-element-drop-handle>\n <ng-container *ngFor=\"let child of getFilteredChildren(metadata.children); let i = index\">\n <vl-cms-element-renderer [meta]=\"child\"></vl-cms-element-renderer>\n <vl-element-drop-handle\n *ngIf=\"dragMode$ | async\"\n [index]=\"i + 1\"\n [parentPath]=\"metadata.path\"\n ></vl-element-drop-handle>\n </ng-container>\n</ng-container>\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ElementRendererComponent, selector: "vl-cms-element-renderer", inputs: ["meta"] }, { kind: "component", type: i6.ElementDropHandleComponent, selector: "vl-element-drop-handle", inputs: ["index", "parentPath"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
32
35
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: ElementChildrenComponent, decorators: [{
33
36
  type: Component,
34
- args: [{ selector: 'element-children', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"metadata$ | async as metadata\">\n <vl-element-drop-handle *ngIf=\"dragMode$ | async\" [index]=\"0\" [parentPath]=\"metadata.path\"></vl-element-drop-handle>\n <ng-container *ngFor=\"let child of metadata.children; let i = index\">\n <vl-cms-element-renderer [meta]=\"child\"></vl-cms-element-renderer>\n <vl-element-drop-handle\n *ngIf=\"dragMode$ | async\"\n [index]=\"i + 1\"\n [parentPath]=\"metadata.path\"\n ></vl-element-drop-handle>\n </ng-container>\n</ng-container>\n", styles: [":host{display:contents}\n"] }]
35
- }], ctorParameters: function () { return [{ type: i1.ElementContextService }, { type: i2.RuntimeService }, { type: i3.RuntimeEditorService }, { type: i0.ChangeDetectorRef }]; } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1jaGlsZHJlbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvY29tcG9uZW50cy9lbGVtZW50LWNoaWxkcmVuL2VsZW1lbnQtY2hpbGRyZW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY21zL2NvbXBvbmVudHMvZWxlbWVudC1jaGlsZHJlbi9lbGVtZW50LWNoaWxkcmVuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDN0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7OztBQVUvRSxNQUFNLE9BQU8sd0JBQXdCO0lBTW5DLFlBQ1UsY0FBcUMsRUFDckMsY0FBOEIsRUFDOUIsb0JBQTBDLEVBQzFDLEdBQXNCO1FBSHRCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUNyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQU54QixlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVF2QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUM7UUFDakQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV0RixJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMvRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQ25DLENBQUM7UUFDRixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7O3FIQXhCVSx3QkFBd0I7eUdBQXhCLHdCQUF3Qix3RENkckMsZ2hCQVdBOzJGREdhLHdCQUF3QjtrQkFQcEMsU0FBUzsrQkFFRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUnVudGltZUVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9tb2R1bGVzL3J1bnRpbWUvc2VydmljZXMvcnVudGltZS1lZGl0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBSdW50aW1lU2VydmljZSB9IGZyb20gJy4uLy4uL21vZHVsZXMvcnVudGltZS9zZXJ2aWNlcy9ydW50aW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWxlbWVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZWxlbWVudC1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRWxlbWVudE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vdHlwZXMvY29tbW9uLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnZWxlbWVudC1jaGlsZHJlbicsXG4gIHRlbXBsYXRlVXJsOiAnZWxlbWVudC1jaGlsZHJlbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VsZW1lbnQtY2hpbGRyZW4uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEVsZW1lbnRDaGlsZHJlbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBtZXRhZGF0YSQ6IE9ic2VydmFibGU8RWxlbWVudE1ldGFkYXRhIHwgdW5kZWZpbmVkPjtcbiAgcHVibGljIGRyYWdNb2RlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBwcml2YXRlIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudENvbnRleHQ6IEVsZW1lbnRDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIHJ1bnRpbWVTZXJ2aWNlOiBSdW50aW1lU2VydmljZSxcbiAgICBwcml2YXRlIHJ1bnRpbWVFZGl0b3JTZXJ2aWNlOiBSdW50aW1lRWRpdG9yU2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmVsZW1lbnRDb250ZXh0Py5tZXRhZGF0YT8ucGF0aDtcbiAgICB0aGlzLm1ldGFkYXRhJCA9IHBhdGggPyB0aGlzLnJ1bnRpbWVTZXJ2aWNlLmdldENvbXBpbGVkRWxlbWVudCQocGF0aCkgOiBvZih1bmRlZmluZWQpO1xuXG4gICAgdGhpcy5kcmFnTW9kZSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnJ1bnRpbWVFZGl0b3JTZXJ2aWNlLmVkaXRvck1vZGUkLCB0aGlzLnJ1bnRpbWVFZGl0b3JTZXJ2aWNlLmRyYWdNb2RlJF0pLnBpcGUoXG4gICAgICBtYXAoZmxhZ3MgPT4gZmxhZ3MuZXZlcnkoQm9vbGVhbikpLFxuICAgICk7XG4gICAgdGhpcy5ydW50aW1lU2VydmljZS51cGRhdGVkJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibWV0YWRhdGEkIHwgYXN5bmMgYXMgbWV0YWRhdGFcIj5cbiAgPHZsLWVsZW1lbnQtZHJvcC1oYW5kbGUgKm5nSWY9XCJkcmFnTW9kZSQgfCBhc3luY1wiIFtpbmRleF09XCIwXCIgW3BhcmVudFBhdGhdPVwibWV0YWRhdGEucGF0aFwiPjwvdmwtZWxlbWVudC1kcm9wLWhhbmRsZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgbWV0YWRhdGEuY2hpbGRyZW47IGxldCBpID0gaW5kZXhcIj5cbiAgICA8dmwtY21zLWVsZW1lbnQtcmVuZGVyZXIgW21ldGFdPVwiY2hpbGRcIj48L3ZsLWNtcy1lbGVtZW50LXJlbmRlcmVyPlxuICAgIDx2bC1lbGVtZW50LWRyb3AtaGFuZGxlXG4gICAgICAqbmdJZj1cImRyYWdNb2RlJCB8IGFzeW5jXCJcbiAgICAgIFtpbmRleF09XCJpICsgMVwiXG4gICAgICBbcGFyZW50UGF0aF09XCJtZXRhZGF0YS5wYXRoXCJcbiAgICA+PC92bC1lbGVtZW50LWRyb3AtaGFuZGxlPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19
37
+ args: [{ selector: 'element-children', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"metadata$ | async as metadata\">\n <vl-element-drop-handle *ngIf=\"dragMode$ | async\" [index]=\"0\" [parentPath]=\"metadata.path\"></vl-element-drop-handle>\n <ng-container *ngFor=\"let child of getFilteredChildren(metadata.children); let i = index\">\n <vl-cms-element-renderer [meta]=\"child\"></vl-cms-element-renderer>\n <vl-element-drop-handle\n *ngIf=\"dragMode$ | async\"\n [index]=\"i + 1\"\n [parentPath]=\"metadata.path\"\n ></vl-element-drop-handle>\n </ng-container>\n</ng-container>\n", styles: [":host{display:contents}\n"] }]
38
+ }], ctorParameters: function () { return [{ type: i1.ElementContextService }, { type: i2.RuntimeService }, { type: i3.RuntimeEditorService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { filter: [{
39
+ type: Input
40
+ }] } });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1jaGlsZHJlbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvY29tcG9uZW50cy9lbGVtZW50LWNoaWxkcmVuL2VsZW1lbnQtY2hpbGRyZW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY21zL2NvbXBvbmVudHMvZWxlbWVudC1jaGlsZHJlbi9lbGVtZW50LWNoaWxkcmVuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBYyxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7Ozs7QUFVL0UsTUFBTSxPQUFPLHdCQUF3QjtJQVFuQyxZQUNVLGNBQXFDLEVBQ3JDLGNBQThCLEVBQzlCLG9CQUEwQyxFQUMxQyxHQUFzQjtRQUh0QixtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDckMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFOeEIsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFRdkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDO1FBQ2pELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFdEYsSUFBSSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDL0csR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUNuQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sbUJBQW1CLENBQUMsUUFBMkI7UUFDcEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDeEQsQ0FBQzs7cUhBOUJVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLHNGQ2RyQyxxaUJBV0E7MkZER2Esd0JBQXdCO2tCQVBwQyxTQUFTOytCQUVFLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNOzRNQUcvQixNQUFNO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgb2YsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUnVudGltZUVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9tb2R1bGVzL3J1bnRpbWUvc2VydmljZXMvcnVudGltZS1lZGl0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBSdW50aW1lU2VydmljZSB9IGZyb20gJy4uLy4uL21vZHVsZXMvcnVudGltZS9zZXJ2aWNlcy9ydW50aW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWxlbWVudENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZWxlbWVudC1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRWxlbWVudE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vdHlwZXMvY29tbW9uLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnZWxlbWVudC1jaGlsZHJlbicsXG4gIHRlbXBsYXRlVXJsOiAnZWxlbWVudC1jaGlsZHJlbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VsZW1lbnQtY2hpbGRyZW4uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEVsZW1lbnRDaGlsZHJlbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWx0ZXI/OiAoZWxlbWVudHM6IEVsZW1lbnRNZXRhZGF0YVtdKSA9PiBFbGVtZW50TWV0YWRhdGFbXTtcblxuICBwdWJsaWMgbWV0YWRhdGEkOiBPYnNlcnZhYmxlPEVsZW1lbnRNZXRhZGF0YSB8IHVuZGVmaW5lZD47XG4gIHB1YmxpYyBkcmFnTW9kZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgcHJpdmF0ZSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRDb250ZXh0OiBFbGVtZW50Q29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBydW50aW1lU2VydmljZTogUnVudGltZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBydW50aW1lRWRpdG9yU2VydmljZTogUnVudGltZUVkaXRvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICBjb25zdCBwYXRoID0gdGhpcy5lbGVtZW50Q29udGV4dD8ubWV0YWRhdGE/LnBhdGg7XG4gICAgdGhpcy5tZXRhZGF0YSQgPSBwYXRoID8gdGhpcy5ydW50aW1lU2VydmljZS5nZXRDb21waWxlZEVsZW1lbnQkKHBhdGgpIDogb2YodW5kZWZpbmVkKTtcblxuICAgIHRoaXMuZHJhZ01vZGUkID0gY29tYmluZUxhdGVzdChbdGhpcy5ydW50aW1lRWRpdG9yU2VydmljZS5lZGl0b3JNb2RlJCwgdGhpcy5ydW50aW1lRWRpdG9yU2VydmljZS5kcmFnTW9kZSRdKS5waXBlKFxuICAgICAgbWFwKGZsYWdzID0+IGZsYWdzLmV2ZXJ5KEJvb2xlYW4pKSxcbiAgICApO1xuICAgIHRoaXMucnVudGltZVNlcnZpY2UudXBkYXRlZCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGaWx0ZXJlZENoaWxkcmVuKGVsZW1lbnRzOiBFbGVtZW50TWV0YWRhdGFbXSk6IEVsZW1lbnRNZXRhZGF0YVtdIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXIgPyB0aGlzLmZpbHRlcihlbGVtZW50cykgOiBlbGVtZW50cztcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1ldGFkYXRhJCB8IGFzeW5jIGFzIG1ldGFkYXRhXCI+XG4gIDx2bC1lbGVtZW50LWRyb3AtaGFuZGxlICpuZ0lmPVwiZHJhZ01vZGUkIHwgYXN5bmNcIiBbaW5kZXhdPVwiMFwiIFtwYXJlbnRQYXRoXT1cIm1ldGFkYXRhLnBhdGhcIj48L3ZsLWVsZW1lbnQtZHJvcC1oYW5kbGU+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGdldEZpbHRlcmVkQ2hpbGRyZW4obWV0YWRhdGEuY2hpbGRyZW4pOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgPHZsLWNtcy1lbGVtZW50LXJlbmRlcmVyIFttZXRhXT1cImNoaWxkXCI+PC92bC1jbXMtZWxlbWVudC1yZW5kZXJlcj5cbiAgICA8dmwtZWxlbWVudC1kcm9wLWhhbmRsZVxuICAgICAgKm5nSWY9XCJkcmFnTW9kZSQgfCBhc3luY1wiXG4gICAgICBbaW5kZXhdPVwiaSArIDFcIlxuICAgICAgW3BhcmVudFBhdGhdPVwibWV0YWRhdGEucGF0aFwiXG4gICAgPjwvdmwtZWxlbWVudC1kcm9wLWhhbmRsZT5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -8,7 +8,7 @@ export class ElementDropHandleComponent {
8
8
  this.runtimeService = runtimeService;
9
9
  }
10
10
  handleDrop(e) {
11
- this.runtimeService.elementDropped$.next({
11
+ this.runtimeService.onElementDropped$.next({
12
12
  element: e.data,
13
13
  index: this.index,
14
14
  path: this.parentPath,
@@ -25,4 +25,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
25
25
  }], parentPath: [{
26
26
  type: Input
27
27
  }] } });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1kcm9wLWhhbmRsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvY29tcG9uZW50cy9lbGVtZW50LWRyb3AtaGFuZGxlL2VsZW1lbnQtZHJvcC1oYW5kbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY21zL2NvbXBvbmVudHMvZWxlbWVudC1kcm9wLWhhbmRsZS9lbGVtZW50LWRyb3AtaGFuZGxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDOzs7O0FBUzdGLE1BQU0sT0FBTywwQkFBMEI7SUFJckMsWUFBb0IsY0FBb0M7UUFBcEMsbUJBQWMsR0FBZCxjQUFjLENBQXNCO0lBQUcsQ0FBQztJQUVyRCxVQUFVLENBQUMsQ0FBZTtRQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7WUFDdkMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUF1QjtZQUNsQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVO1NBQ3RCLENBQUMsQ0FBQztJQUNMLENBQUM7O3VIQVpVLDBCQUEwQjsyR0FBMUIsMEJBQTBCLG9IQ1h2QyxrSEFHQTsyRkRRYSwwQkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0Usd0JBQXdCLG1CQUdqQix1QkFBdUIsQ0FBQyxNQUFNOzJHQUcvQixLQUFLO3NCQUFwQixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG5kRHJvcEV2ZW50IH0gZnJvbSAnbmd4LWRyYWctZHJvcCc7XG5pbXBvcnQgeyBSdW50aW1lRWRpdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL21vZHVsZXMvcnVudGltZS9zZXJ2aWNlcy9ydW50aW1lLWVkaXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IEVsZW1lbnRNZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzL2NvbW1vbi50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZsLWVsZW1lbnQtZHJvcC1oYW5kbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZWxlbWVudC1kcm9wLWhhbmRsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VsZW1lbnQtZHJvcC1oYW5kbGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEVsZW1lbnREcm9wSGFuZGxlQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcHVibGljIGluZGV4ITogbnVtYmVyO1xuICBASW5wdXQoKSBwdWJsaWMgcGFyZW50UGF0aCE6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJ1bnRpbWVTZXJ2aWNlOiBSdW50aW1lRWRpdG9yU2VydmljZSkge31cblxuICBwdWJsaWMgaGFuZGxlRHJvcChlOiBEbmREcm9wRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnJ1bnRpbWVTZXJ2aWNlLmVsZW1lbnREcm9wcGVkJC5uZXh0KHtcbiAgICAgIGVsZW1lbnQ6IGUuZGF0YSBhcyBFbGVtZW50TWV0YWRhdGEsXG4gICAgICBpbmRleDogdGhpcy5pbmRleCxcbiAgICAgIHBhdGg6IHRoaXMucGFyZW50UGF0aCxcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIGRuZERyb3B6b25lIChkbmREcm9wKT1cImhhbmRsZURyb3AoJGV2ZW50KVwiPlxuICA8ZGl2IGNsYXNzPVwiaGFuZGxlXCI+PC9kaXY+XG48L2Rpdj5cbiJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1kcm9wLWhhbmRsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvY29tcG9uZW50cy9lbGVtZW50LWRyb3AtaGFuZGxlL2VsZW1lbnQtZHJvcC1oYW5kbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY21zL2NvbXBvbmVudHMvZWxlbWVudC1kcm9wLWhhbmRsZS9lbGVtZW50LWRyb3AtaGFuZGxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDOzs7O0FBUzdGLE1BQU0sT0FBTywwQkFBMEI7SUFJckMsWUFBb0IsY0FBb0M7UUFBcEMsbUJBQWMsR0FBZCxjQUFjLENBQXNCO0lBQUcsQ0FBQztJQUVyRCxVQUFVLENBQUMsQ0FBZTtRQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQztZQUN6QyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQXVCO1lBQ2xDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDdEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7dUhBWlUsMEJBQTBCOzJHQUExQiwwQkFBMEIsb0hDWHZDLGtIQUdBOzJGRFFhLDBCQUEwQjtrQkFOdEMsU0FBUzsrQkFDRSx3QkFBd0IsbUJBR2pCLHVCQUF1QixDQUFDLE1BQU07MkdBRy9CLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEbmREcm9wRXZlbnQgfSBmcm9tICduZ3gtZHJhZy1kcm9wJztcbmltcG9ydCB7IFJ1bnRpbWVFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbW9kdWxlcy9ydW50aW1lL3NlcnZpY2VzL3J1bnRpbWUtZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWxlbWVudE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vdHlwZXMvY29tbW9uLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmwtZWxlbWVudC1kcm9wLWhhbmRsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbGVtZW50LWRyb3AtaGFuZGxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWxlbWVudC1kcm9wLWhhbmRsZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRWxlbWVudERyb3BIYW5kbGVDb21wb25lbnQge1xuICBASW5wdXQoKSBwdWJsaWMgaW5kZXghOiBudW1iZXI7XG4gIEBJbnB1dCgpIHB1YmxpYyBwYXJlbnRQYXRoITogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcnVudGltZVNlcnZpY2U6IFJ1bnRpbWVFZGl0b3JTZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBoYW5kbGVEcm9wKGU6IERuZERyb3BFdmVudCk6IHZvaWQge1xuICAgIHRoaXMucnVudGltZVNlcnZpY2Uub25FbGVtZW50RHJvcHBlZCQubmV4dCh7XG4gICAgICBlbGVtZW50OiBlLmRhdGEgYXMgRWxlbWVudE1ldGFkYXRhLFxuICAgICAgaW5kZXg6IHRoaXMuaW5kZXgsXG4gICAgICBwYXRoOiB0aGlzLnBhcmVudFBhdGgsXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBkbmREcm9wem9uZSAoZG5kRHJvcCk9XCJoYW5kbGVEcm9wKCRldmVudClcIj5cbiAgPGRpdiBjbGFzcz1cImhhbmRsZVwiPjwvZGl2PlxuPC9kaXY+XG4iXX0=