@edm-sdui/sdui 1.0.31 → 1.0.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/edm-sdui-sdui-1.0.33.tgz +0 -0
  2. package/esm2022/lib/components/uicomponent/button/button.component.mjs +9 -3
  3. package/esm2022/lib/components/uicomponent/column/column.component.mjs +2 -2
  4. package/esm2022/lib/components/uicomponent/image/image.component.mjs +1 -8
  5. package/esm2022/lib/components/uicomponent/label/label.component.mjs +19 -1
  6. package/esm2022/lib/components/uicomponent/row/row.component.mjs +2 -2
  7. package/esm2022/lib/components/uicomponent/tag/tag.component.mjs +137 -10
  8. package/esm2022/lib/components/uicomponent/tags-row/tags-row.component.mjs +84 -0
  9. package/esm2022/lib/core/services/scroll-spy.service.mjs +102 -0
  10. package/esm2022/lib/core/services/ui-action.service.mjs +31 -18
  11. package/esm2022/lib/core/services/uiscreen.service.mjs +3 -2
  12. package/esm2022/lib/core/uicomposition/enums/uicomponent-type.mjs +2 -1
  13. package/esm2022/lib/core/uicomposition/mapping/component-mapping.mjs +2 -1
  14. package/esm2022/lib/core/uicomposition/models/uicomponent.mjs +1 -1
  15. package/esm2022/lib/core/uicomposition/models/uitag.mjs +2 -0
  16. package/esm2022/lib/core/uitheme/enums/uicolor.mjs +10 -1
  17. package/esm2022/lib/core/uitheme/mapping/color-mapping.mjs +10 -1
  18. package/esm2022/lib/core/uitheme/mapping/size-mapping.mjs +9 -9
  19. package/esm2022/lib/directives/uiview.directive.mjs +45 -4
  20. package/esm2022/lib/sdui.module.mjs +4 -1
  21. package/fesm2022/edm-sdui-sdui.mjs +449 -52
  22. package/fesm2022/edm-sdui-sdui.mjs.map +1 -1
  23. package/lib/components/uicomponent/button/button.component.d.ts.map +1 -1
  24. package/lib/components/uicomponent/image/image.component.d.ts.map +1 -1
  25. package/lib/components/uicomponent/label/label.component.d.ts +1 -0
  26. package/lib/components/uicomponent/label/label.component.d.ts.map +1 -1
  27. package/lib/components/uicomponent/tag/tag.component.d.ts +19 -5
  28. package/lib/components/uicomponent/tag/tag.component.d.ts.map +1 -1
  29. package/lib/components/uicomponent/tags-row/tags-row.component.d.ts +27 -0
  30. package/lib/components/uicomponent/tags-row/tags-row.component.d.ts.map +1 -0
  31. package/lib/core/services/scroll-spy.service.d.ts +31 -0
  32. package/lib/core/services/scroll-spy.service.d.ts.map +1 -0
  33. package/lib/core/services/ui-action.service.d.ts +1 -0
  34. package/lib/core/services/ui-action.service.d.ts.map +1 -1
  35. package/lib/core/services/uiscreen.service.d.ts.map +1 -1
  36. package/lib/core/uicomposition/enums/uicomponent-type.d.ts +1 -0
  37. package/lib/core/uicomposition/enums/uicomponent-type.d.ts.map +1 -1
  38. package/lib/core/uicomposition/mapping/component-mapping.d.ts.map +1 -1
  39. package/lib/core/uicomposition/models/uicomponent.d.ts +2 -0
  40. package/lib/core/uicomposition/models/uicomponent.d.ts.map +1 -1
  41. package/lib/core/uicomposition/models/uitag.d.ts +6 -0
  42. package/lib/core/uicomposition/models/uitag.d.ts.map +1 -0
  43. package/lib/core/uitheme/enums/uicolor.d.ts +10 -1
  44. package/lib/core/uitheme/enums/uicolor.d.ts.map +1 -1
  45. package/lib/core/uitheme/mapping/color-mapping.d.ts.map +1 -1
  46. package/lib/directives/uiview.directive.d.ts +6 -0
  47. package/lib/directives/uiview.directive.d.ts.map +1 -1
  48. package/lib/sdui.module.d.ts +16 -15
  49. package/lib/sdui.module.d.ts.map +1 -1
  50. package/package.json +1 -1
  51. package/edm-sdui-sdui-1.0.31.tgz +0 -0
Binary file
@@ -1,6 +1,7 @@
1
1
  import { FontSizeMappingService } from './../../../core/services/font-size-mapping.service';
2
2
  import { Component, ElementRef, Inject, Renderer2, ViewChild, } from '@angular/core';
3
3
  import { colorMapping } from '../../../core/uitheme/mapping/color-mapping';
4
+ import { textStyleMappingFontWeight, textStyleMappingLineHeight, } from '../../../core/uitheme/mapping/text-style-mapping';
4
5
  import { assetMapping } from '../../../core/uitheme/mapping/asset-mapping';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "./../../../core/services/font-size-mapping.service";
@@ -28,18 +29,23 @@ export class ButtonComponent {
28
29
  if (element.textStyle) {
29
30
  const textStyleMappingFontSize = this.fontSizeMappingService.getMapping();
30
31
  const fontSize = textStyleMappingFontSize[element.textStyle];
32
+ const fontWeight = textStyleMappingFontWeight[element.textStyle];
33
+ const lineHeight = textStyleMappingLineHeight[element.textStyle];
34
+ //TODO: Substituir por classe no futuro.
35
+ this.renderer.setStyle(this.buttonElementRef.nativeElement, 'font-weight', fontWeight);
31
36
  this.renderer.setStyle(this.buttonElementRef.nativeElement, 'font-size', fontSize);
37
+ this.renderer.setStyle(this.buttonElementRef.nativeElement, 'line-height', lineHeight);
32
38
  }
33
39
  }
34
40
  getAssetPath(asset) {
35
41
  return assetMapping[asset];
36
42
  }
37
43
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ButtonComponent, deps: [{ token: 'uiComponent' }, { token: i0.Renderer2 }, { token: i1.FontSizeMappingService }], target: i0.ɵɵFactoryTarget.Component }); }
38
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ButtonComponent, isStandalone: false, selector: "edm-sdui-button", viewQueries: [{ propertyName: "buttonElementRef", first: true, predicate: ["buttonElement"], descendants: true }], ngImport: i0, template: "<button #buttonElement [edmSduiView]=\"uiComponent.element\" *ngIf=\"uiComponent\">\n <img *ngIf=\"uiComponent.element.asset\" [src]=\"getAssetPath(uiComponent.element.asset)\" alt=\"\">\n {{ uiComponent.element.label }}\n</button>\n", styles: [":host{display:contents}button{border:none;white-space:nowrap;background-color:unset}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
44
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ButtonComponent, isStandalone: false, selector: "edm-sdui-button", viewQueries: [{ propertyName: "buttonElementRef", first: true, predicate: ["buttonElement"], descendants: true }], ngImport: i0, template: "<button #buttonElement [edmSduiView]=\"uiComponent.element\" *ngIf=\"uiComponent\">\n <img *ngIf=\"uiComponent.element.asset\" [src]=\"getAssetPath(uiComponent.element.asset)\" alt=\"\">\n {{ uiComponent.element.label }}\n</button>\n", styles: [":host{display:contents}button{border:none;white-space:nowrap;background-color:unset;width:fit-content}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
39
45
  }
40
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ButtonComponent, decorators: [{
41
47
  type: Component,
42
- args: [{ selector: 'edm-sdui-button', standalone: false, template: "<button #buttonElement [edmSduiView]=\"uiComponent.element\" *ngIf=\"uiComponent\">\n <img *ngIf=\"uiComponent.element.asset\" [src]=\"getAssetPath(uiComponent.element.asset)\" alt=\"\">\n {{ uiComponent.element.label }}\n</button>\n", styles: [":host{display:contents}button{border:none;white-space:nowrap;background-color:unset}\n"] }]
48
+ args: [{ selector: 'edm-sdui-button', standalone: false, template: "<button #buttonElement [edmSduiView]=\"uiComponent.element\" *ngIf=\"uiComponent\">\n <img *ngIf=\"uiComponent.element.asset\" [src]=\"getAssetPath(uiComponent.element.asset)\" alt=\"\">\n {{ uiComponent.element.label }}\n</button>\n", styles: [":host{display:contents}button{border:none;white-space:nowrap;background-color:unset;width:fit-content}\n"] }]
43
49
  }], ctorParameters: () => [{ type: undefined, decorators: [{
44
50
  type: Inject,
45
51
  args: ['uiComponent']
@@ -47,4 +53,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
47
53
  type: ViewChild,
48
54
  args: ['buttonElement']
49
55
  }] } });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2R1aS9zcmMvbGliL2NvbXBvbmVudHMvdWljb21wb25lbnQvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NkdWkvc3JjL2xpYi9jb21wb25lbnRzL3VpY29tcG9uZW50L2J1dHRvbi9idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDNUYsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUVOLFNBQVMsRUFDVCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7QUFTM0UsTUFBTSxPQUFPLGVBQWU7SUFHMUIsWUFDZ0MsV0FBd0IsRUFDOUMsUUFBbUIsRUFDbkIsc0JBQThDO1FBRnhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQzlDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtJQUNyRCxDQUFDO0lBRUosUUFBUTtRQUNOLDJEQUEyRDtJQUM3RCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsT0FBa0I7UUFDckMsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEIsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FDcEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFDbkMsT0FBTyxFQUNQLEtBQUssQ0FDTixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzFFLE1BQU0sUUFBUSxHQUFHLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FDcEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFDbkMsV0FBVyxFQUNYLFFBQVEsQ0FDVCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYztRQUN6QixPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDOytHQTFDVSxlQUFlLGtCQUloQixhQUFhO21HQUpaLGVBQWUsK0xDdkI1Qiw2T0FJQTs7NEZEbUJhLGVBQWU7a0JBTjNCLFNBQVM7K0JBQ0UsaUJBQWlCLGNBR2YsS0FBSzs7MEJBTWQsTUFBTTsyQkFBQyxhQUFhO3NHQUhLLGdCQUFnQjtzQkFBM0MsU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9udFNpemVNYXBwaW5nU2VydmljZSB9IGZyb20gJy4vLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9mb250LXNpemUtbWFwcGluZy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVJQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS91aWNvbXBvc2l0aW9uL21vZGVscy91aWNvbXBvbmVudCc7XG5pbXBvcnQgeyBVSUVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3VpY29tcG9zaXRpb24vbW9kZWxzL3VpZWxlbWVudCc7XG5pbXBvcnQgeyBjb2xvck1hcHBpbmcgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3VpdGhlbWUvbWFwcGluZy9jb2xvci1tYXBwaW5nJztcbmltcG9ydCB7IGdldFRleHRTdHlsZU1hcHBpbmdGb250U2l6ZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdWl0aGVtZS9tYXBwaW5nL3RleHQtc3R5bGUtbWFwcGluZyc7XG5pbXBvcnQgeyBhc3NldE1hcHBpbmcgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3VpdGhlbWUvbWFwcGluZy9hc3NldC1tYXBwaW5nJztcbmltcG9ydCB7IFVJQXNzZXQgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3VpdGhlbWUvZW51bXMvdWlhc3NldCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VkbS1zZHVpLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYnV0dG9uLmNvbXBvbmVudC5zY3NzJyxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2J1dHRvbkVsZW1lbnQnKSBidXR0b25FbGVtZW50UmVmITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCgndWlDb21wb25lbnQnKSBwdWJsaWMgdWlDb21wb25lbnQ6IFVJQ29tcG9uZW50LFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGZvbnRTaXplTWFwcGluZ1NlcnZpY2U6IEZvbnRTaXplTWFwcGluZ1NlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIGNvbnNvbGUuZGVidWcoJ2J1dHRvbi51aUNvbXBvbmVudDogJywgdGhpcy51aUNvbXBvbmVudCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudWlDb21wb25lbnQuZWxlbWVudCkge1xuICAgICAgdGhpcy5hcHBseUVsZW1lbnQodGhpcy51aUNvbXBvbmVudC5lbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RWxlbWVudChlbGVtZW50OiBVSUVsZW1lbnQpIHtcbiAgICBpZiAoZWxlbWVudC50ZXh0Q29sb3IpIHtcbiAgICAgIGNvbnN0IGNvbG9yID0gY29sb3JNYXBwaW5nW2VsZW1lbnQudGV4dENvbG9yXTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuYnV0dG9uRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnY29sb3InLFxuICAgICAgICBjb2xvclxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudC50ZXh0U3R5bGUpIHtcbiAgICAgIGNvbnN0IHRleHRTdHlsZU1hcHBpbmdGb250U2l6ZSA9IHRoaXMuZm9udFNpemVNYXBwaW5nU2VydmljZS5nZXRNYXBwaW5nKCk7XG4gICAgICBjb25zdCBmb250U2l6ZSA9IHRleHRTdHlsZU1hcHBpbmdGb250U2l6ZVtlbGVtZW50LnRleHRTdHlsZV07XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmJ1dHRvbkVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2ZvbnQtc2l6ZScsXG4gICAgICAgIGZvbnRTaXplXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGdldEFzc2V0UGF0aChhc3NldDogVUlBc3NldCkge1xuICAgIHJldHVybiBhc3NldE1hcHBpbmdbYXNzZXRdO1xuICB9XG59XG4iLCI8YnV0dG9uICNidXR0b25FbGVtZW50IFtlZG1TZHVpVmlld109XCJ1aUNvbXBvbmVudC5lbGVtZW50XCIgKm5nSWY9XCJ1aUNvbXBvbmVudFwiPlxuICA8aW1nICpuZ0lmPVwidWlDb21wb25lbnQuZWxlbWVudC5hc3NldFwiIFtzcmNdPVwiZ2V0QXNzZXRQYXRoKHVpQ29tcG9uZW50LmVsZW1lbnQuYXNzZXQpXCIgYWx0PVwiXCI+XG4gIHt7IHVpQ29tcG9uZW50LmVsZW1lbnQubGFiZWwgfX1cbjwvYnV0dG9uPlxuIl19
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2R1aS9zcmMvbGliL2NvbXBvbmVudHMvdWljb21wb25lbnQvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NkdWkvc3JjL2xpYi9jb21wb25lbnRzL3VpY29tcG9uZW50L2J1dHRvbi9idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDNUYsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUVOLFNBQVMsRUFDVCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzNFLE9BQU8sRUFFTCwwQkFBMEIsRUFDMUIsMEJBQTBCLEdBQzNCLE1BQU0sa0RBQWtELENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7OztBQVMzRSxNQUFNLE9BQU8sZUFBZTtJQUcxQixZQUNnQyxXQUF3QixFQUM5QyxRQUFtQixFQUNuQixzQkFBOEM7UUFGeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDOUMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO0lBQ3JELENBQUM7SUFFSixRQUFRO1FBQ04sMkRBQTJEO0lBQzdELENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FBQyxPQUFrQjtRQUNyQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QixNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUNwQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUNuQyxPQUFPLEVBQ1AsS0FBSyxDQUNOLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEIsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDMUUsTUFBTSxRQUFRLEdBQUcsd0JBQXdCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzdELE1BQU0sVUFBVSxHQUFHLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNqRSxNQUFNLFVBQVUsR0FBRywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFakUsd0NBQXdDO1lBRXhDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUNwQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUNuQyxhQUFhLEVBQ2IsVUFBVSxDQUNYLENBQUM7WUFFRixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FDcEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFDbkMsV0FBVyxFQUNYLFFBQVEsQ0FDVCxDQUFDO1lBRUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQ25DLGFBQWEsRUFDYixVQUFVLENBQ1gsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWM7UUFDekIsT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQzsrR0EzRFUsZUFBZSxrQkFJaEIsYUFBYTttR0FKWixlQUFlLCtMQzNCNUIsNk9BSUE7OzRGRHVCYSxlQUFlO2tCQU4zQixTQUFTOytCQUNFLGlCQUFpQixjQUdmLEtBQUs7OzBCQU1kLE1BQU07MkJBQUMsYUFBYTtzR0FISyxnQkFBZ0I7c0JBQTNDLFNBQVM7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvbnRTaXplTWFwcGluZ1NlcnZpY2UgfSBmcm9tICcuLy4uLy4uLy4uL2NvcmUvc2VydmljZXMvZm9udC1zaXplLW1hcHBpbmcuc2VydmljZSc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVSUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdWljb21wb3NpdGlvbi9tb2RlbHMvdWljb21wb25lbnQnO1xuaW1wb3J0IHsgVUlFbGVtZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS91aWNvbXBvc2l0aW9uL21vZGVscy91aWVsZW1lbnQnO1xuaW1wb3J0IHsgY29sb3JNYXBwaW5nIH0gZnJvbSAnLi4vLi4vLi4vY29yZS91aXRoZW1lL21hcHBpbmcvY29sb3ItbWFwcGluZyc7XG5pbXBvcnQge1xuICBnZXRUZXh0U3R5bGVNYXBwaW5nRm9udFNpemUsXG4gIHRleHRTdHlsZU1hcHBpbmdGb250V2VpZ2h0LFxuICB0ZXh0U3R5bGVNYXBwaW5nTGluZUhlaWdodCxcbn0gZnJvbSAnLi4vLi4vLi4vY29yZS91aXRoZW1lL21hcHBpbmcvdGV4dC1zdHlsZS1tYXBwaW5nJztcbmltcG9ydCB7IGFzc2V0TWFwcGluZyB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdWl0aGVtZS9tYXBwaW5nL2Fzc2V0LW1hcHBpbmcnO1xuaW1wb3J0IHsgVUlBc3NldCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdWl0aGVtZS9lbnVtcy91aWFzc2V0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZWRtLXNkdWktYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9idXR0b24uY29tcG9uZW50LnNjc3MnLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgnYnV0dG9uRWxlbWVudCcpIGJ1dHRvbkVsZW1lbnRSZWYhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCd1aUNvbXBvbmVudCcpIHB1YmxpYyB1aUNvbXBvbmVudDogVUlDb21wb25lbnQsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZm9udFNpemVNYXBwaW5nU2VydmljZTogRm9udFNpemVNYXBwaW5nU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gY29uc29sZS5kZWJ1ZygnYnV0dG9uLnVpQ29tcG9uZW50OiAnLCB0aGlzLnVpQ29tcG9uZW50KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy51aUNvbXBvbmVudC5lbGVtZW50KSB7XG4gICAgICB0aGlzLmFwcGx5RWxlbWVudCh0aGlzLnVpQ29tcG9uZW50LmVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlFbGVtZW50KGVsZW1lbnQ6IFVJRWxlbWVudCkge1xuICAgIGlmIChlbGVtZW50LnRleHRDb2xvcikge1xuICAgICAgY29uc3QgY29sb3IgPSBjb2xvck1hcHBpbmdbZWxlbWVudC50ZXh0Q29sb3JdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5idXR0b25FbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdjb2xvcicsXG4gICAgICAgIGNvbG9yXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChlbGVtZW50LnRleHRTdHlsZSkge1xuICAgICAgY29uc3QgdGV4dFN0eWxlTWFwcGluZ0ZvbnRTaXplID0gdGhpcy5mb250U2l6ZU1hcHBpbmdTZXJ2aWNlLmdldE1hcHBpbmcoKTtcbiAgICAgIGNvbnN0IGZvbnRTaXplID0gdGV4dFN0eWxlTWFwcGluZ0ZvbnRTaXplW2VsZW1lbnQudGV4dFN0eWxlXTtcbiAgICAgIGNvbnN0IGZvbnRXZWlnaHQgPSB0ZXh0U3R5bGVNYXBwaW5nRm9udFdlaWdodFtlbGVtZW50LnRleHRTdHlsZV07XG4gICAgICBjb25zdCBsaW5lSGVpZ2h0ID0gdGV4dFN0eWxlTWFwcGluZ0xpbmVIZWlnaHRbZWxlbWVudC50ZXh0U3R5bGVdO1xuXG4gICAgICAvL1RPRE86IFN1YnN0aXR1aXIgcG9yIGNsYXNzZSBubyBmdXR1cm8uXG5cbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuYnV0dG9uRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnZm9udC13ZWlnaHQnLFxuICAgICAgICBmb250V2VpZ2h0XG4gICAgICApO1xuXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmJ1dHRvbkVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2ZvbnQtc2l6ZScsXG4gICAgICAgIGZvbnRTaXplXG4gICAgICApO1xuXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmJ1dHRvbkVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2xpbmUtaGVpZ2h0JyxcbiAgICAgICAgbGluZUhlaWdodFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBnZXRBc3NldFBhdGgoYXNzZXQ6IFVJQXNzZXQpIHtcbiAgICByZXR1cm4gYXNzZXRNYXBwaW5nW2Fzc2V0XTtcbiAgfVxufVxuIiwiPGJ1dHRvbiAjYnV0dG9uRWxlbWVudCBbZWRtU2R1aVZpZXddPVwidWlDb21wb25lbnQuZWxlbWVudFwiICpuZ0lmPVwidWlDb21wb25lbnRcIj5cbiAgPGltZyAqbmdJZj1cInVpQ29tcG9uZW50LmVsZW1lbnQuYXNzZXRcIiBbc3JjXT1cImdldEFzc2V0UGF0aCh1aUNvbXBvbmVudC5lbGVtZW50LmFzc2V0KVwiIGFsdD1cIlwiPlxuICB7eyB1aUNvbXBvbmVudC5lbGVtZW50LmxhYmVsIH19XG48L2J1dHRvbj5cbiJdfQ==
@@ -11,11 +11,11 @@ export class ColumnComponent {
11
11
  // console.debug('column.uiComponent: ', this.uiComponent);
12
12
  }
13
13
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnComponent, deps: [{ token: 'uiComponent' }], target: i0.ɵɵFactoryTarget.Component }); }
14
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ColumnComponent, isStandalone: false, selector: "edm-sdui-column", ngImport: i0, template: "<div class=\"column\" *ngIf=\"uiComponent\" [edmSduiView]=\"uiComponent.element\">\n <edm-sdui-component\n *ngFor=\"let child of uiComponent.components\"\n [uiComponent]=\"child\"\n >\n </edm-sdui-component>\n</div>\n", styles: [":host{display:contents}.column{display:flex;flex-direction:column;overflow:clip;flex:0 0 auto}.row-fixed :host .column,:host-context(.row-fixed) .column{flex:1 1 0%;min-width:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.UIComponentComponent, selector: "edm-sdui-component", inputs: ["uiComponent", "translateLabel"] }, { kind: "directive", type: i3.UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ColumnComponent, isStandalone: false, selector: "edm-sdui-column", ngImport: i0, template: "<div class=\"column\" *ngIf=\"uiComponent\" [edmSduiView]=\"uiComponent.element\">\n <edm-sdui-component\n *ngFor=\"let child of uiComponent.components\"\n [uiComponent]=\"child\"\n >\n </edm-sdui-component>\n</div>\n", styles: [":host{display:contents}.column{display:flex;flex-direction:column;overflow:clip;flex:0 0 auto}.row-fixed :host .column,:host-context(.row-fixed) .column{flex:1 1 0%;min-width:0}@media (max-width: 565px){.row-fixed :host .column,:host-context(.row-fixed) .column{flex:1 1 0%;min-width:0;width:100%;max-width:100%}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.UIComponentComponent, selector: "edm-sdui-component", inputs: ["uiComponent", "translateLabel"] }, { kind: "directive", type: i3.UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
15
15
  }
16
16
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnComponent, decorators: [{
17
17
  type: Component,
18
- args: [{ selector: 'edm-sdui-column', standalone: false, template: "<div class=\"column\" *ngIf=\"uiComponent\" [edmSduiView]=\"uiComponent.element\">\n <edm-sdui-component\n *ngFor=\"let child of uiComponent.components\"\n [uiComponent]=\"child\"\n >\n </edm-sdui-component>\n</div>\n", styles: [":host{display:contents}.column{display:flex;flex-direction:column;overflow:clip;flex:0 0 auto}.row-fixed :host .column,:host-context(.row-fixed) .column{flex:1 1 0%;min-width:0}\n"] }]
18
+ args: [{ selector: 'edm-sdui-column', standalone: false, template: "<div class=\"column\" *ngIf=\"uiComponent\" [edmSduiView]=\"uiComponent.element\">\n <edm-sdui-component\n *ngFor=\"let child of uiComponent.components\"\n [uiComponent]=\"child\"\n >\n </edm-sdui-component>\n</div>\n", styles: [":host{display:contents}.column{display:flex;flex-direction:column;overflow:clip;flex:0 0 auto}.row-fixed :host .column,:host-context(.row-fixed) .column{flex:1 1 0%;min-width:0}@media (max-width: 565px){.row-fixed :host .column,:host-context(.row-fixed) .column{flex:1 1 0%;min-width:0;width:100%;max-width:100%}}\n"] }]
19
19
  }], ctorParameters: () => [{ type: undefined, decorators: [{
20
20
  type: Inject,
21
21
  args: ['uiComponent']
@@ -1,6 +1,5 @@
1
1
  import { Component, ElementRef, Inject, Renderer2, ViewChild, } from '@angular/core';
2
2
  import { assetMapping } from '../../../core/uitheme/mapping/asset-mapping';
3
- import { sizeMappingHeight, sizeMappingWidth, } from '../../../core/uitheme/mapping/size-mapping';
4
3
  import { aspectMapping } from '../../../core/uitheme/mapping/aspect-mapping';
5
4
  import * as i0 from "@angular/core";
6
5
  import * as i1 from "@angular/common";
@@ -27,12 +26,6 @@ export class ImageComponent {
27
26
  else if (element.url) {
28
27
  this.renderer.setAttribute(this.imgElementRef.nativeElement, 'src', element.url);
29
28
  }
30
- if (element.size) {
31
- const height = sizeMappingHeight[element.size];
32
- const width = sizeMappingWidth[element.size];
33
- this.renderer.setStyle(this.imgElementRef.nativeElement, 'height', height);
34
- this.renderer.setStyle(this.imgElementRef.nativeElement, 'width', width);
35
- }
36
29
  if (element.aspect) {
37
30
  this.renderer.setStyle(this.imgElementRef.nativeElement, 'object-fit', aspectMapping[element.aspect]);
38
31
  }
@@ -53,4 +46,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
53
46
  type: ViewChild,
54
47
  args: ['imgElement']
55
48
  }] } });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZHVpL3NyYy9saWIvY29tcG9uZW50cy91aWNvbXBvbmVudC9pbWFnZS9pbWFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NkdWkvc3JjL2xpYi9jb21wb25lbnRzL3VpY29tcG9uZW50L2ltYWdlL2ltYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFFTixTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGdCQUFnQixHQUNqQixNQUFNLDRDQUE0QyxDQUFDO0FBRXBELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7OztBQVE3RSxNQUFNLE9BQU8sY0FBYztJQUd6QixZQUNnQyxXQUF3QixFQUM5QyxRQUFtQjtRQURHLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQzlDLGFBQVEsR0FBUixRQUFRLENBQVc7SUFDekIsQ0FBQztJQUVMLFFBQVEsS0FBVyxDQUFDO0lBRXBCLGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDO0lBRU8sWUFBWSxDQUFDLE9BQWtCO1FBRXJDLElBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2xDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEIsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQ2hDLEtBQUssRUFDTCxLQUFLLENBQ04sQ0FBQztRQUNKLENBQUM7YUFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQ2hDLEtBQUssRUFDTCxPQUFPLENBQUMsR0FBRyxDQUNaLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakIsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9DLE1BQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQ2hDLFFBQVEsRUFDUixNQUFNLENBQ1AsQ0FBQztZQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBRUQsSUFBRyxPQUFPLENBQUMsTUFBTSxFQUFDLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN4RyxDQUFDO1FBRUQsSUFBRyxPQUFPLENBQUMsV0FBVyxFQUFDLENBQUM7WUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRyxDQUFDO0lBQ0gsQ0FBQzsrR0F2RFUsY0FBYyxrQkFJZixhQUFhO21HQUpaLGNBQWMsd0xDekIzQixtRkFDQTs7NEZEd0JhLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBR2QsS0FBSzs7MEJBTWQsTUFBTTsyQkFBQyxhQUFhO2lFQUhFLGFBQWE7c0JBQXJDLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVJQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS91aWNvbXBvc2l0aW9uL21vZGVscy91aWNvbXBvbmVudCc7XG5pbXBvcnQgeyBVSUVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3VpY29tcG9zaXRpb24vbW9kZWxzL3VpZWxlbWVudCc7XG5pbXBvcnQgeyBhc3NldE1hcHBpbmcgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3VpdGhlbWUvbWFwcGluZy9hc3NldC1tYXBwaW5nJztcbmltcG9ydCB7XG4gIHNpemVNYXBwaW5nSGVpZ2h0LFxuICBzaXplTWFwcGluZ1dpZHRoLFxufSBmcm9tICcuLi8uLi8uLi9jb3JlL3VpdGhlbWUvbWFwcGluZy9zaXplLW1hcHBpbmcnO1xuaW1wb3J0IHsgVUlTaXplIH0gZnJvbSAnLi4vLi4vLi4vY29yZS91aXRoZW1lL2VudW1zL3Vpc2l6ZSc7XG5pbXBvcnQgeyBhc3BlY3RNYXBwaW5nIH0gZnJvbSAnLi4vLi4vLi4vY29yZS91aXRoZW1lL21hcHBpbmcvYXNwZWN0LW1hcHBpbmcnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlZG0tc2R1aS1pbWFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9pbWFnZS5jb21wb25lbnQuc2NzcycsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBJbWFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2ltZ0VsZW1lbnQnKSBpbWdFbGVtZW50UmVmITogRWxlbWVudFJlZjxIVE1MSW1hZ2VFbGVtZW50PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCd1aUNvbXBvbmVudCcpIHB1YmxpYyB1aUNvbXBvbmVudDogVUlDb21wb25lbnQsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7IH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudWlDb21wb25lbnQ/LmVsZW1lbnQpIHtcbiAgICAgIHRoaXMuYXBwbHlFbGVtZW50KHRoaXMudWlDb21wb25lbnQuZWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUVsZW1lbnQoZWxlbWVudDogVUlFbGVtZW50KSB7XG5cbiAgICBpZighZWxlbWVudC5hc3NldCAmJiAhZWxlbWVudC51cmwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudC5hc3NldCkge1xuICAgICAgY29uc3QgYXNzZXQgPSBhc3NldE1hcHBpbmdbZWxlbWVudC5hc3NldF07XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShcbiAgICAgICAgdGhpcy5pbWdFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdzcmMnLFxuICAgICAgICBhc3NldFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQudXJsKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShcbiAgICAgICAgdGhpcy5pbWdFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdzcmMnLFxuICAgICAgICBlbGVtZW50LnVybFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudC5zaXplKSB7XG4gICAgICBjb25zdCBoZWlnaHQgPSBzaXplTWFwcGluZ0hlaWdodFtlbGVtZW50LnNpemVdO1xuICAgICAgY29uc3Qgd2lkdGggPSBzaXplTWFwcGluZ1dpZHRoW2VsZW1lbnQuc2l6ZV07XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmltZ0VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2hlaWdodCcsXG4gICAgICAgIGhlaWdodFxuICAgICAgKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbWdFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIHdpZHRoKTtcbiAgICB9XG5cbiAgICBpZihlbGVtZW50LmFzcGVjdCl7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW1nRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnb2JqZWN0LWZpdCcsIGFzcGVjdE1hcHBpbmdbZWxlbWVudC5hc3BlY3RdKTtcbiAgICB9XG5cbiAgICBpZihlbGVtZW50LmFzcGVjdFJhdGlvKXtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbWdFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdhc3BlY3QtcmF0aW8nLCBlbGVtZW50LmFzcGVjdFJhdGlvKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxpbWcgI2ltZ0VsZW1lbnQgW2VkbVNkdWlWaWV3XT1cInVpQ29tcG9uZW50LmVsZW1lbnRcIiAqbmdJZj1cInVpQ29tcG9uZW50XCIgLz5cbiJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZHVpL3NyYy9saWIvY29tcG9uZW50cy91aWNvbXBvbmVudC9pbWFnZS9pbWFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NkdWkvc3JjL2xpYi9jb21wb25lbnRzL3VpY29tcG9uZW50L2ltYWdlL2ltYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFFTixTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7QUFRN0UsTUFBTSxPQUFPLGNBQWM7SUFHekIsWUFDZ0MsV0FBd0IsRUFDOUMsUUFBbUI7UUFERyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUM5QyxhQUFRLEdBQVIsUUFBUSxDQUFXO0lBQ3pCLENBQUM7SUFFTCxRQUFRLEtBQVcsQ0FBQztJQUVwQixlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FBQyxPQUFrQjtRQUVyQyxJQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNsQyxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2xCLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUNoQyxLQUFLLEVBQ0wsS0FBSyxDQUNOLENBQUM7UUFDSixDQUFDO2FBQU0sSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUNoQyxLQUFLLEVBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FDWixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUcsT0FBTyxDQUFDLE1BQU0sRUFBQyxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDeEcsQ0FBQztRQUVELElBQUcsT0FBTyxDQUFDLFdBQVcsRUFBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEcsQ0FBQztJQUNILENBQUM7K0dBNUNVLGNBQWMsa0JBSWYsYUFBYTttR0FKWixjQUFjLHdMQ3BCM0IsbUZBQ0E7OzRGRG1CYSxjQUFjO2tCQU4xQixTQUFTOytCQUNFLGdCQUFnQixjQUdkLEtBQUs7OzBCQU1kLE1BQU07MkJBQUMsYUFBYTtpRUFIRSxhQUFhO3NCQUFyQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVSUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdWljb21wb3NpdGlvbi9tb2RlbHMvdWljb21wb25lbnQnO1xuaW1wb3J0IHsgVUlFbGVtZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS91aWNvbXBvc2l0aW9uL21vZGVscy91aWVsZW1lbnQnO1xuaW1wb3J0IHsgYXNzZXRNYXBwaW5nIH0gZnJvbSAnLi4vLi4vLi4vY29yZS91aXRoZW1lL21hcHBpbmcvYXNzZXQtbWFwcGluZyc7XG5pbXBvcnQgeyBhc3BlY3RNYXBwaW5nIH0gZnJvbSAnLi4vLi4vLi4vY29yZS91aXRoZW1lL21hcHBpbmcvYXNwZWN0LW1hcHBpbmcnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlZG0tc2R1aS1pbWFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9pbWFnZS5jb21wb25lbnQuc2NzcycsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBJbWFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ2ltZ0VsZW1lbnQnKSBpbWdFbGVtZW50UmVmITogRWxlbWVudFJlZjxIVE1MSW1hZ2VFbGVtZW50PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCd1aUNvbXBvbmVudCcpIHB1YmxpYyB1aUNvbXBvbmVudDogVUlDb21wb25lbnQsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7IH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudWlDb21wb25lbnQ/LmVsZW1lbnQpIHtcbiAgICAgIHRoaXMuYXBwbHlFbGVtZW50KHRoaXMudWlDb21wb25lbnQuZWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUVsZW1lbnQoZWxlbWVudDogVUlFbGVtZW50KSB7XG5cbiAgICBpZighZWxlbWVudC5hc3NldCAmJiAhZWxlbWVudC51cmwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudC5hc3NldCkge1xuICAgICAgY29uc3QgYXNzZXQgPSBhc3NldE1hcHBpbmdbZWxlbWVudC5hc3NldF07XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShcbiAgICAgICAgdGhpcy5pbWdFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdzcmMnLFxuICAgICAgICBhc3NldFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQudXJsKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShcbiAgICAgICAgdGhpcy5pbWdFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdzcmMnLFxuICAgICAgICBlbGVtZW50LnVybFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZihlbGVtZW50LmFzcGVjdCl7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW1nRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnb2JqZWN0LWZpdCcsIGFzcGVjdE1hcHBpbmdbZWxlbWVudC5hc3BlY3RdKTtcbiAgICB9XG5cbiAgICBpZihlbGVtZW50LmFzcGVjdFJhdGlvKXtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbWdFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdhc3BlY3QtcmF0aW8nLCBlbGVtZW50LmFzcGVjdFJhdGlvKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxpbWcgI2ltZ0VsZW1lbnQgW2VkbVNkdWlWaWV3XT1cInVpQ29tcG9uZW50LmVsZW1lbnRcIiAqbmdJZj1cInVpQ29tcG9uZW50XCIgLz5cbiJdfQ==
@@ -22,6 +22,7 @@ export class LabelComponent {
22
22
  }
23
23
  }
24
24
  applyElement(element) {
25
+ let resolvedLineHeight = null;
25
26
  if (element.textColor) {
26
27
  const color = colorMapping[element.textColor];
27
28
  this.renderer.setStyle(this.spanElementRef.nativeElement, 'color', color);
@@ -35,6 +36,7 @@ export class LabelComponent {
35
36
  this.renderer.setStyle(this.spanElementRef.nativeElement, 'font-weight', fontWeight);
36
37
  this.renderer.setStyle(this.spanElementRef.nativeElement, 'font-size', fontSize);
37
38
  this.renderer.setStyle(this.spanElementRef.nativeElement, 'line-height', lineHeight);
39
+ resolvedLineHeight = lineHeight;
38
40
  }
39
41
  const normalizedMaxLinesRaw = element.maxLines ?? 1;
40
42
  const normalizedMaxLines = Number(normalizedMaxLinesRaw);
@@ -46,6 +48,12 @@ export class LabelComponent {
46
48
  this.renderer.setStyle(this.spanElementRef.nativeElement, 'white-space', 'normal');
47
49
  this.renderer.setStyle(this.spanElementRef.nativeElement, 'word-break', 'break-word');
48
50
  this.renderer.setStyle(this.spanElementRef.nativeElement, '-webkit-line-clamp', normalizedMaxLines);
51
+ if (resolvedLineHeight) {
52
+ const minHeight = this.getMinHeight(resolvedLineHeight, normalizedMaxLines);
53
+ if (minHeight) {
54
+ this.renderer.setStyle(this.spanElementRef.nativeElement, 'min-height', minHeight);
55
+ }
56
+ }
49
57
  }
50
58
  if (element.opacity) {
51
59
  const opacity = element.opacity;
@@ -69,6 +77,16 @@ export class LabelComponent {
69
77
  }
70
78
  }
71
79
  }
80
+ getMinHeight(lineHeight, lines) {
81
+ if (lines <= 0)
82
+ return null;
83
+ const pxMatch = /^(\d+(?:\.\d+)?)px$/.exec(lineHeight);
84
+ if (pxMatch) {
85
+ const pxValue = parseFloat(pxMatch[1]) * lines;
86
+ return `${pxValue}px`;
87
+ }
88
+ return `calc(${lineHeight} * ${lines})`;
89
+ }
72
90
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: LabelComponent, deps: [{ token: 'uiComponent' }, { token: i0.Renderer2 }, { token: i1.FontSizeMappingService }], target: i0.ɵɵFactoryTarget.Component }); }
73
91
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: LabelComponent, isStandalone: false, selector: "edm-sdui-label", viewQueries: [{ propertyName: "spanElementRef", first: true, predicate: ["spanElement"], descendants: true }], ngImport: i0, template: "<span #spanElement [edmSduiView]=\"uiComponent.element\" *ngIf=\"uiComponent\">{{\n uiComponent.element?.label ?? \"\"\n}}</span>\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
74
92
  }
@@ -82,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
82
100
  type: ViewChild,
83
101
  args: ['spanElement']
84
102
  }] } });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZHVpL3NyYy9saWIvY29tcG9uZW50cy91aWNvbXBvbmVudC9sYWJlbC9sYWJlbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NkdWkvc3JjL2xpYi9jb21wb25lbnRzL3VpY29tcG9uZW50L2xhYmVsL2xhYmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVUsU0FBUyxFQUFFLFNBQVMsR0FBRSxNQUFNLGVBQWUsQ0FBQztBQUcxRyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDekUsT0FBTyxFQUFDLDBCQUEwQixFQUFFLDBCQUEwQixFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDeEgsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDeEYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDhDQUE4QyxDQUFDOzs7OztBQVM3RSxNQUFNLE9BQU8sY0FBYztJQUd6QixZQUNnQyxXQUF3QixFQUM5QyxRQUFtQixFQUNuQixzQkFBOEM7UUFGeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDOUMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO0lBQ3BELENBQUM7SUFFTCxRQUFRO1FBQ04sMERBQTBEO0lBQzVELENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FBQyxPQUFr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T0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO1lBQzlDLFFBQVEsU0FBUyxFQUFFLENBQUM7Z0JBQ2xCLEtBQUssZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFDakMsWUFBWSxFQUNaLE1BQU0sQ0FDUCxDQUFDO29CQUNGLE1BQU07Z0JBQ1IsQ0FBQztnQkFFRCxLQUFLLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQ2pDLFlBQVksRUFDWixRQUFRLENBQ1QsQ0FBQztvQkFDRixNQUFNO2dCQUNSLENBQUM7Z0JBRUQsS0FBSyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUNqQyxZQUFZLEVBQ1osT0FBTyxDQUNSLENBQUM7b0JBQ0YsTUFBTTtnQkFDUixDQUFDO1lBQ0gsQ0FBQztRQUVILENBQUM7SUFDSCxDQUFDOytHQW5JVSxjQUFjLGtCQUlmLGFBQWE7bUdBSlosY0FBYywwTENmM0Isc0lBR0E7OzRGRFlhLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBR2QsS0FBSzs7MEJBTWQsTUFBTTsyQkFBQyxhQUFhO3NHQUhHLGNBQWM7c0JBQXZDLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIE9uSW5pdCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VUlDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uL2NvcmUvdWljb21wb3NpdGlvbi9tb2RlbHMvdWljb21wb25lbnQnO1xuaW1wb3J0IHtVSUVsZW1lbnR9IGZyb20gJy4uLy4uLy4uL2NvcmUvdWljb21wb3NpdGlvbi9tb2RlbHMvdWllbGVtZW50JztcbmltcG9ydCB7Y29sb3JNYXBwaW5nfSBmcm9tICcuLi8uLi8uLi9jb3JlL3VpdGhlbWUvbWFwcGluZy9jb2xvci1tYXBwaW5nJztcbmltcG9ydCB7dGV4dFN0eWxlTWFwcGluZ0ZvbnRXZWlnaHQsIHRleHRTdHlsZU1hcHBpbmdMaW5lSGVpZ2h0fSBmcm9tICcuLi8uLi8uLi9jb3JlL3VpdGhlbWUvbWFwcGluZy90ZXh0LXN0eWxlLW1hcHBpbmcnO1xuaW1wb3J0IHtGb250U2l6ZU1hcHBpbmdTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2ZvbnQtc2l6ZS1tYXBwaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHtVSUFsaWdubWVudFR5cGV9IGZyb20gJy4uLy4uLy4uL2NvcmUvdWl0aGVtZS9lbnVtcy91aWFsaWdubWVudC10eXBlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlZG0tc2R1aS1sYWJlbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9sYWJlbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9sYWJlbC5jb21wb25lbnQuc2NzcycsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBMYWJlbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3NwYW5FbGVtZW50Jykgc3BhbkVsZW1lbnRSZWYhOiBFbGVtZW50UmVmPEhUTUxJbWFnZUVsZW1lbnQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ3VpQ29tcG9uZW50JykgcHVibGljIHVpQ29tcG9uZW50OiBVSUNvbXBvbmVudCxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBmb250U2l6ZU1hcHBpbmdTZXJ2aWNlOiBGb250U2l6ZU1hcHBpbmdTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gY29uc29sZS5kZWJ1ZygnbGFiZWwudWlDb21wb25lbnQ6ICcsIHRoaXMudWlDb21wb25lbnQpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnVpQ29tcG9uZW50LmVsZW1lbnQpIHtcbiAgICAgIHRoaXMuYXBwbHlFbGVtZW50KHRoaXMudWlDb21wb25lbnQuZWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUVsZW1lbnQoZWxlbWVudDogVUlFbGVtZW50KSB7XG4gICAgaWYgKGVsZW1lbnQudGV4dENvbG9yKSB7XG4gICAgICBjb25zdCBjb2xvciA9IGNvbG9yTWFwcGluZ1tlbGVtZW50LnRleHRDb2xvcl07XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3BhbkVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NvbG9yJywgY29sb3IpO1xuICAgIH1cblxuICAgIGlmIChlbGVtZW50LnRleHRTdHlsZSkge1xuICAgICAgY29uc3QgdGV4dFN0eWxlTWFwcGluZ0ZvbnRTaXplID0gdGhpcy5mb250U2l6ZU1hcHBpbmdTZXJ2aWNlLmdldE1hcHBpbmcoKTtcbiAgICAgIGNvbnN0IGZvbnRTaXplID0gdGV4dFN0eWxlTWFwcGluZ0ZvbnRTaXplW2VsZW1lbnQudGV4dFN0eWxlXTtcbiAgICAgIGNvbnN0IGZvbnRXZWlnaHQgPSB0ZXh0U3R5bGVNYXBwaW5nRm9udFdlaWdodFtlbGVtZW50LnRleHRTdHlsZV07XG4gICAgICBjb25zdCBsaW5lSGVpZ2h0ID0gdGV4dFN0eWxlTWFwcGluZ0xpbmVIZWlnaHRbZWxlbWVudC50ZXh0U3R5bGVdO1xuXG4gICAgICAvL1RPRE86IFN1YnN0aXR1aXIgcG9yIGNsYXNzZSBubyBmdXR1cm8uXG5cbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuc3BhbkVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2ZvbnQtd2VpZ2h0JyxcbiAgICAgICAgZm9udFdlaWdodFxuICAgICAgKTtcblxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5zcGFuRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnZm9udC1zaXplJyxcbiAgICAgICAgZm9udFNpemVcbiAgICAgICk7XG5cbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zcGFuRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbGluZS1oZWlnaHQnLCBsaW5lSGVpZ2h0KTtcbiAgICB9XG5cbiAgICBjb25zdCBub3JtYWxpemVkTWF4TGluZXNSYXcgPVxuICAgICAgZWxlbWVudC5tYXhMaW5lcyA/PyAxO1xuXG4gICAgY29uc3Qgbm9ybWFsaXplZE1heExpbmVzID0gTnVtYmVyKG5vcm1hbGl6ZWRNYXhMaW5lc1Jhdyk7XG4gICAgaWYgKCFOdW1iZXIuaXNOYU4obm9ybWFsaXplZE1heExpbmVzKSAmJiBub3JtYWxpemVkTWF4TGluZXMgPiAwKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLnNwYW5FbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdkaXNwbGF5JyxcbiAgICAgICAgJy13ZWJraXQtYm94J1xuICAgICAgKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuc3BhbkVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJy13ZWJraXQtYm94LW9yaWVudCcsXG4gICAgICAgICd2ZXJ0aWNhbCdcbiAgICAgICk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLnNwYW5FbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdvdmVyZmxvdycsXG4gICAgICAgICdoaWRkZW4nXG4gICAgICApO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5zcGFuRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAndGV4dC1vdmVyZmxvdycsXG4gICAgICAgICdlbGxpcHNpcydcbiAgICAgICk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLnNwYW5FbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICd3aGl0ZS1zcGFjZScsXG4gICAgICAgICdub3JtYWwnXG4gICAgICApO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5zcGFuRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnd29yZC1icmVhaycsXG4gICAgICAgICdicmVhay13b3JkJ1xuICAgICAgKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuc3BhbkVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJy13ZWJraXQtbGluZS1jbGFtcCcsXG4gICAgICAgIG5vcm1hbGl6ZWRNYXhMaW5lc1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudC5vcGFjaXR5KSB7XG4gICAgICBjb25zdCBvcGFjaXR5ID0gZWxlbWVudC5vcGFjaXR5O1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5zcGFuRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnb3BhY2l0eScsXG4gICAgICAgIG9wYWNpdHlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGVsZW1lbnQuYWxpZ25tZW50KSB7XG4gICAgICBjb25zdCBhbGlnbm1lbnQgPSBlbGVtZW50LmFsaWdubWVudC5hbGlnbm1lbnQ7XG4gICAgICBzd2l0Y2ggKGFsaWdubWVudCkge1xuICAgICAgICBjYXNlIFVJQWxpZ25tZW50VHlwZS5TVEFSVDoge1xuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgICB0aGlzLnNwYW5FbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAndGV4dC1hbGlnbicsXG4gICAgICAgICAgICAnbGVmdCdcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBVSUFsaWdubWVudFR5cGUuQ0VOVEVSOiB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICAgIHRoaXMuc3BhbkVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICd0ZXh0LWFsaWduJyxcbiAgICAgICAgICAgICdjZW50ZXInXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgVUlBbGlnbm1lbnRUeXBlLkVORDoge1xuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgICB0aGlzLnNwYW5FbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAndGV4dC1hbGlnbicsXG4gICAgICAgICAgICAncmlnaHQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfVxuICB9XG59XG4iLCI8c3BhbiAjc3BhbkVsZW1lbnQgW2VkbVNkdWlWaWV3XT1cInVpQ29tcG9uZW50LmVsZW1lbnRcIiAqbmdJZj1cInVpQ29tcG9uZW50XCI+e3tcbiAgdWlDb21wb25lbnQuZWxlbWVudD8ubGFiZWwgPz8gXCJcIlxufX08L3NwYW4+XG4iXX0=
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZHVpL3NyYy9saWIvY29tcG9uZW50cy91aWNvbXBvbmVudC9sYWJlbC9sYWJlbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NkdWkvc3JjL2xpYi9jb21wb25lbnRzL3VpY29tcG9uZW50L2xhYmVsL2xhYmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVUsU0FBUyxFQUFFLFNBQVMsR0FBRSxNQUFNLGVBQWUsQ0FBQztBQUcxRyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDekUsT0FBTyxFQUFDLDBCQUEwQixFQUFFLDBCQUEwQixFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDeEgsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDeEYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDhDQUE4QyxDQUFDOzs7OztBQVM3RSxNQUFNLE9BQU8sY0FBYztJQUd6QixZQUNnQyxXQUF3QixFQUM5QyxRQUFtQixFQUNuQixzQkFBOEM7UUFGeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDOUMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO0lBQ3BELENBQUM7SUFFTCxRQUFRO1FBQ04sMERBQTBEO0lBQzVELENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FBQyxPQUFr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Q0FBQztJQUVPLFlBQVksQ0FBQyxVQUFrQixFQUFFLEtBQWE7UUFDcEQsSUFBSSxLQUFLLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRTVCLE1BQU0sT0FBTyxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUMvQyxPQUFPLEdBQUcsT0FBTyxJQUFJLENBQUM7UUFDeEIsQ0FBQztRQUVELE9BQU8sUUFBUSxVQUFVLE1BQU0sS0FBSyxHQUFHLENBQUM7SUFDMUMsQ0FBQzsrR0E3SlUsY0FBYyxrQkFJZixhQUFhO21HQUpaLGNBQWMsMExDZjNCLHNJQUdBOzs0RkRZYSxjQUFjO2tCQU4xQixTQUFTOytCQUNFLGdCQUFnQixjQUdkLEtBQUs7OzBCQU1kLE1BQU07MkJBQUMsYUFBYTtzR0FIRyxjQUFjO3NCQUF2QyxTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBPbkluaXQsIFJlbmRlcmVyMiwgVmlld0NoaWxkLH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1VJQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9jb3JlL3VpY29tcG9zaXRpb24vbW9kZWxzL3VpY29tcG9uZW50JztcbmltcG9ydCB7VUlFbGVtZW50fSBmcm9tICcuLi8uLi8uLi9jb3JlL3VpY29tcG9zaXRpb24vbW9kZWxzL3VpZWxlbWVudCc7XG5pbXBvcnQge2NvbG9yTWFwcGluZ30gZnJvbSAnLi4vLi4vLi4vY29yZS91aXRoZW1lL21hcHBpbmcvY29sb3ItbWFwcGluZyc7XG5pbXBvcnQge3RleHRTdHlsZU1hcHBpbmdGb250V2VpZ2h0LCB0ZXh0U3R5bGVNYXBwaW5nTGluZUhlaWdodH0gZnJvbSAnLi4vLi4vLi4vY29yZS91aXRoZW1lL21hcHBpbmcvdGV4dC1zdHlsZS1tYXBwaW5nJztcbmltcG9ydCB7Rm9udFNpemVNYXBwaW5nU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9mb250LXNpemUtbWFwcGluZy5zZXJ2aWNlJztcbmltcG9ydCB7VUlBbGlnbm1lbnRUeXBlfSBmcm9tICcuLi8uLi8uLi9jb3JlL3VpdGhlbWUvZW51bXMvdWlhbGlnbm1lbnQtdHlwZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZWRtLXNkdWktbGFiZWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGFiZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbGFiZWwuY29tcG9uZW50LnNjc3MnLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgTGFiZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBAVmlld0NoaWxkKCdzcGFuRWxlbWVudCcpIHNwYW5FbGVtZW50UmVmITogRWxlbWVudFJlZjxIVE1MSW1hZ2VFbGVtZW50PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCd1aUNvbXBvbmVudCcpIHB1YmxpYyB1aUNvbXBvbmVudDogVUlDb21wb25lbnQsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZm9udFNpemVNYXBwaW5nU2VydmljZTogRm9udFNpemVNYXBwaW5nU2VydmljZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIGNvbnNvbGUuZGVidWcoJ2xhYmVsLnVpQ29tcG9uZW50OiAnLCB0aGlzLnVpQ29tcG9uZW50KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy51aUNvbXBvbmVudC5lbGVtZW50KSB7XG4gICAgICB0aGlzLmFwcGx5RWxlbWVudCh0aGlzLnVpQ29tcG9uZW50LmVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlFbGVtZW50KGVsZW1lbnQ6IFVJRWxlbWVudCkge1xuICAgIGxldCByZXNvbHZlZExpbmVIZWlnaHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKGVsZW1lbnQudGV4dENvbG9yKSB7XG4gICAgICBjb25zdCBjb2xvciA9IGNvbG9yTWFwcGluZ1tlbGVtZW50LnRleHRDb2xvcl07XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc3BhbkVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NvbG9yJywgY29sb3IpO1xuICAgIH1cblxuICAgIGlmIChlbGVtZW50LnRleHRTdHlsZSkge1xuICAgICAgY29uc3QgdGV4dFN0eWxlTWFwcGluZ0ZvbnRTaXplID0gdGhpcy5mb250U2l6ZU1hcHBpbmdTZXJ2aWNlLmdldE1hcHBpbmcoKTtcbiAgICAgIGNvbnN0IGZvbnRTaXplID0gdGV4dFN0eWxlTWFwcGluZ0ZvbnRTaXplW2VsZW1lbnQudGV4dFN0eWxlXTtcbiAgICAgIGNvbnN0IGZvbnRXZWlnaHQgPSB0ZXh0U3R5bGVNYXBwaW5nRm9udFdlaWdodFtlbGVtZW50LnRleHRTdHlsZV07XG4gICAgICBjb25zdCBsaW5lSGVpZ2h0ID0gdGV4dFN0eWxlTWFwcGluZ0xpbmVIZWlnaHRbZWxlbWVudC50ZXh0U3R5bGVdO1xuXG4gICAgICAvL1RPRE86IFN1YnN0aXR1aXIgcG9yIGNsYXNzZSBubyBmdXR1cm8uXG5cbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuc3BhbkVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2ZvbnQtd2VpZ2h0JyxcbiAgICAgICAgZm9udFdlaWdodFxuICAgICAgKTtcblxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5zcGFuRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnZm9udC1zaXplJyxcbiAgICAgICAgZm9udFNpemVcbiAgICAgICk7XG5cbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zcGFuRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbGluZS1oZWlnaHQnLCBsaW5lSGVpZ2h0KTtcbiAgICAgIHJlc29sdmVkTGluZUhlaWdodCA9IGxpbmVIZWlnaHQ7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZE1heExpbmVzUmF3ID1cbiAgICAgIGVsZW1lbnQubWF4TGluZXMgPz8gMTtcblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRNYXhMaW5lcyA9IE51bWJlcihub3JtYWxpemVkTWF4TGluZXNSYXcpO1xuICAgIGlmICghTnVtYmVyLmlzTmFOKG5vcm1hbGl6ZWRNYXhMaW5lcykgJiYgbm9ybWFsaXplZE1heExpbmVzID4gMCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5zcGFuRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnZGlzcGxheScsXG4gICAgICAgICctd2Via2l0LWJveCdcbiAgICAgICk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLnNwYW5FbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICctd2Via2l0LWJveC1vcmllbnQnLFxuICAgICAgICAndmVydGljYWwnXG4gICAgICApO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5zcGFuRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnb3ZlcmZsb3cnLFxuICAgICAgICAnaGlkZGVuJ1xuICAgICAgKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuc3BhbkVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ3RleHQtb3ZlcmZsb3cnLFxuICAgICAgICAnZWxsaXBzaXMnXG4gICAgICApO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5zcGFuRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnd2hpdGUtc3BhY2UnLFxuICAgICAgICAnbm9ybWFsJ1xuICAgICAgKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuc3BhbkVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ3dvcmQtYnJlYWsnLFxuICAgICAgICAnYnJlYWstd29yZCdcbiAgICAgICk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLnNwYW5FbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICctd2Via2l0LWxpbmUtY2xhbXAnLFxuICAgICAgICBub3JtYWxpemVkTWF4TGluZXNcbiAgICAgICk7XG5cbiAgICAgIGlmIChyZXNvbHZlZExpbmVIZWlnaHQpIHtcbiAgICAgICAgY29uc3QgbWluSGVpZ2h0ID0gdGhpcy5nZXRNaW5IZWlnaHQocmVzb2x2ZWRMaW5lSGVpZ2h0LCBub3JtYWxpemVkTWF4TGluZXMpO1xuICAgICAgICBpZiAobWluSGVpZ2h0KSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICAgIHRoaXMuc3BhbkVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICdtaW4taGVpZ2h0JyxcbiAgICAgICAgICAgIG1pbkhlaWdodFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudC5vcGFjaXR5KSB7XG4gICAgICBjb25zdCBvcGFjaXR5ID0gZWxlbWVudC5vcGFjaXR5O1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5zcGFuRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnb3BhY2l0eScsXG4gICAgICAgIG9wYWNpdHlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGVsZW1lbnQuYWxpZ25tZW50KSB7XG4gICAgICBjb25zdCBhbGlnbm1lbnQgPSBlbGVtZW50LmFsaWdubWVudC5hbGlnbm1lbnQ7XG4gICAgICBzd2l0Y2ggKGFsaWdubWVudCkge1xuICAgICAgICBjYXNlIFVJQWxpZ25tZW50VHlwZS5TVEFSVDoge1xuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgICB0aGlzLnNwYW5FbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAndGV4dC1hbGlnbicsXG4gICAgICAgICAgICAnbGVmdCdcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSBVSUFsaWdubWVudFR5cGUuQ0VOVEVSOiB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICAgIHRoaXMuc3BhbkVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICd0ZXh0LWFsaWduJyxcbiAgICAgICAgICAgICdjZW50ZXInXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgVUlBbGlnbm1lbnRUeXBlLkVORDoge1xuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgICB0aGlzLnNwYW5FbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAndGV4dC1hbGlnbicsXG4gICAgICAgICAgICAncmlnaHQnXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRNaW5IZWlnaHQobGluZUhlaWdodDogc3RyaW5nLCBsaW5lczogbnVtYmVyKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKGxpbmVzIDw9IDApIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgcHhNYXRjaCA9IC9eKFxcZCsoPzpcXC5cXGQrKT8pcHgkLy5leGVjKGxpbmVIZWlnaHQpO1xuICAgIGlmIChweE1hdGNoKSB7XG4gICAgICBjb25zdCBweFZhbHVlID0gcGFyc2VGbG9hdChweE1hdGNoWzFdKSAqIGxpbmVzO1xuICAgICAgcmV0dXJuIGAke3B4VmFsdWV9cHhgO1xuICAgIH1cblxuICAgIHJldHVybiBgY2FsYygke2xpbmVIZWlnaHR9ICogJHtsaW5lc30pYDtcbiAgfVxufVxuIiwiPHNwYW4gI3NwYW5FbGVtZW50IFtlZG1TZHVpVmlld109XCJ1aUNvbXBvbmVudC5lbGVtZW50XCIgKm5nSWY9XCJ1aUNvbXBvbmVudFwiPnt7XG4gIHVpQ29tcG9uZW50LmVsZW1lbnQ/LmxhYmVsID8/IFwiXCJcbn19PC9zcGFuPlxuIl19
@@ -10,11 +10,11 @@ export class RowComponent {
10
10
  ngOnInit() {
11
11
  }
12
12
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RowComponent, deps: [{ token: 'uiComponent' }], target: i0.ɵɵFactoryTarget.Component }); }
13
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: RowComponent, isStandalone: false, selector: "edm-sdui-row", ngImport: i0, template: "<div\n class=\"row-1\"\n *ngIf=\"uiComponent\"\n [edmSduiView]=\"uiComponent.element\"\n [class.row-fixed]=\"\n uiComponent.element?.size\"\n>\n <edm-sdui-component\n *ngFor=\"let component of uiComponent.components\"\n [uiComponent]=\"component\"\n >\n </edm-sdui-component>\n</div>\n", styles: [":host{display:contents}.row-1{display:flex;flex-direction:row;align-items:center}.row-fixed{flex:0 0 auto;max-width:100%;box-sizing:border-box}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.UIComponentComponent, selector: "edm-sdui-component", inputs: ["uiComponent", "translateLabel"] }, { kind: "directive", type: i3.UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
13
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: RowComponent, isStandalone: false, selector: "edm-sdui-row", ngImport: i0, template: "<div\n class=\"row-1\"\n *ngIf=\"uiComponent\"\n [edmSduiView]=\"uiComponent.element\"\n [class.row-fixed]=\"\n uiComponent.element?.size\"\n>\n <edm-sdui-component\n *ngFor=\"let component of uiComponent.components\"\n [uiComponent]=\"component\"\n >\n </edm-sdui-component>\n</div>\n", styles: [":host{display:contents}.row-1{display:flex;flex-direction:row;align-items:center}.row-fixed{flex:0 0 auto;max-width:100%;box-sizing:border-box}@media (max-width: 565px){.row-fixed{max-width:none;width:auto}.row-fixed>*{flex-shrink:0;min-width:100%}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.UIComponentComponent, selector: "edm-sdui-component", inputs: ["uiComponent", "translateLabel"] }, { kind: "directive", type: i3.UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
14
14
  }
15
15
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RowComponent, decorators: [{
16
16
  type: Component,
17
- args: [{ selector: 'edm-sdui-row', standalone: false, template: "<div\n class=\"row-1\"\n *ngIf=\"uiComponent\"\n [edmSduiView]=\"uiComponent.element\"\n [class.row-fixed]=\"\n uiComponent.element?.size\"\n>\n <edm-sdui-component\n *ngFor=\"let component of uiComponent.components\"\n [uiComponent]=\"component\"\n >\n </edm-sdui-component>\n</div>\n", styles: [":host{display:contents}.row-1{display:flex;flex-direction:row;align-items:center}.row-fixed{flex:0 0 auto;max-width:100%;box-sizing:border-box}\n"] }]
17
+ args: [{ selector: 'edm-sdui-row', standalone: false, template: "<div\n class=\"row-1\"\n *ngIf=\"uiComponent\"\n [edmSduiView]=\"uiComponent.element\"\n [class.row-fixed]=\"\n uiComponent.element?.size\"\n>\n <edm-sdui-component\n *ngFor=\"let component of uiComponent.components\"\n [uiComponent]=\"component\"\n >\n </edm-sdui-component>\n</div>\n", styles: [":host{display:contents}.row-1{display:flex;flex-direction:row;align-items:center}.row-fixed{flex:0 0 auto;max-width:100%;box-sizing:border-box}@media (max-width: 565px){.row-fixed{max-width:none;width:auto}.row-fixed>*{flex-shrink:0;min-width:100%}}\n"] }]
18
18
  }], ctorParameters: () => [{ type: undefined, decorators: [{
19
19
  type: Inject,
20
20
  args: ['uiComponent']
@@ -4,28 +4,77 @@ import { textStyleMappingLineHeight } from "../../../core/uitheme/mapping/text-s
4
4
  import { FontSizeMappingService } from "../../../core/services/font-size-mapping.service";
5
5
  import { UISize } from "../../../core/uitheme/enums/uisize";
6
6
  import { sizeMappingHeight } from "../../../core/uitheme/mapping/size-mapping";
7
+ import { ScrollSpyService } from "../../../core/services/scroll-spy.service";
8
+ import { Subject } from "rxjs";
7
9
  import * as i0 from "@angular/core";
8
10
  import * as i1 from "../../../core/services/font-size-mapping.service";
9
- import * as i2 from "@angular/common";
10
- import * as i3 from "../../../directives/uiview.directive";
11
+ import * as i2 from "../../../core/services/scroll-spy.service";
12
+ import * as i3 from "@angular/common";
13
+ import * as i4 from "../../../directives/uiview.directive";
11
14
  export class TagComponent {
12
- constructor(uiComponent, renderer, fontSizeMappingService) {
15
+ static { this.scrollSpyInitialized = false; }
16
+ static { this.scrollSpy$ = null; }
17
+ static { this.scrollSpySub = null; }
18
+ static { this.scrollSpyInitTries = 0; }
19
+ static { this.scrollSpyContainer = null; }
20
+ static { this.activeId = null; }
21
+ constructor(uiComponent, renderer, fontSizeMappingService, scrollSpy) {
13
22
  this.uiComponent = uiComponent;
14
23
  this.renderer = renderer;
15
24
  this.fontSizeMappingService = fontSizeMappingService;
25
+ this.scrollSpy = scrollSpy;
26
+ this.destroy$ = new Subject();
16
27
  }
17
28
  ngOnInit() {
18
29
  }
19
30
  ngAfterViewInit() {
20
31
  if (this.uiComponent.element) {
21
32
  this.applyElement(this.uiComponent.element);
22
- }
23
- if (this.uiComponent.element) {
24
33
  this.applyLabelElement(this.uiComponent.element);
34
+ // Map: tag.action.param -> section div id
35
+ const actionParam = this.uiComponent?.element?.action?.param;
36
+ if (actionParam != null && this.tagElementRef?.nativeElement) {
37
+ this.renderer.setAttribute(this.tagElementRef.nativeElement, 'data-tag', String(actionParam));
38
+ }
39
+ else {
40
+ console.warn('[TagComponent] tag without action.param', this.uiComponent?.element);
41
+ }
42
+ // Reaplica seleção se este tag corresponde ao ativo atual.
43
+ this.syncSelectionState();
44
+ // IMPORTANT: TagComponent renders once per tag.
45
+ // We initialize the scroll observer only once, but we MUST NOT tie it to the first instance lifecycle,
46
+ // because the first instance may be destroyed (e.g. rerender) and the subscription would die.
47
+ this.initScrollSpyOnce();
25
48
  }
26
49
  }
27
50
  applyElement(element) {
28
51
  }
52
+ markSelectedTag(id) {
53
+ const tags = Array.from(document.querySelectorAll('.tag'));
54
+ const dataTags = tags.map(t => t.getAttribute('data-tag'));
55
+ console.log('[TagComponent] markSelectedTag', { id, dataTags });
56
+ TagComponent.activeId = id;
57
+ for (const t of tags)
58
+ t.classList.remove('tag--selected');
59
+ const active = document.querySelector(`.tag[data-tag="${CSS.escape(id)}"]`);
60
+ if (!active) {
61
+ console.warn('[TagComponent] active tag not found for id', id);
62
+ return;
63
+ }
64
+ active.classList.add('tag--selected');
65
+ console.log('[TagComponent] tag--selected applied to', active);
66
+ }
67
+ syncSelectionState() {
68
+ const dataTag = this.tagElementRef?.nativeElement?.getAttribute('data-tag');
69
+ if (!dataTag)
70
+ return;
71
+ if (TagComponent.activeId && TagComponent.activeId === dataTag) {
72
+ this.tagElementRef.nativeElement.classList.add('tag--selected');
73
+ }
74
+ else {
75
+ this.tagElementRef.nativeElement.classList.remove('tag--selected');
76
+ }
77
+ }
29
78
  applyLabelElement(element) {
30
79
  if (element.textColor) {
31
80
  const color = colorMapping[element.textColor];
@@ -40,20 +89,98 @@ export class TagComponent {
40
89
  }
41
90
  this.renderer.setStyle(this.tagElementRef.nativeElement, 'height', sizeMappingHeight[UISize.ASSET_8]);
42
91
  }
43
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TagComponent, deps: [{ token: 'uiComponent' }, { token: i0.Renderer2 }, { token: i1.FontSizeMappingService }], target: i0.ɵɵFactoryTarget.Component }); }
44
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: TagComponent, isStandalone: false, selector: "edm-sdui-tag", viewQueries: [{ propertyName: "tagElementRef", first: true, predicate: ["tagElement"], descendants: true }, { propertyName: "tagNameElementRef", first: true, predicate: ["tagNameElement"], descendants: true }], ngImport: i0, template: "<div class=\"tag\" #tagElement *ngIf=\"uiComponent\" [edmSduiView]=\"uiComponent.element\">\n <span class=\"tag-name\" #tagNameElement>{{ uiComponent.element?.label ?? '' }}</span>\n</div>", styles: [":host{display:contents}.tag{padding:4px 8px;display:flex;align-items:center}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
92
+ initScrollSpyOnce() {
93
+ // Already subscribed
94
+ if (TagComponent.scrollSpySub) {
95
+ const currentContainer = this.resolveScrollContainer();
96
+ const stale = !TagComponent.scrollSpyContainer?.isConnected || (currentContainer && TagComponent.scrollSpyContainer !== currentContainer);
97
+ if (!stale)
98
+ return;
99
+ try {
100
+ TagComponent.scrollSpySub.unsubscribe();
101
+ }
102
+ catch { }
103
+ TagComponent.scrollSpySub = null;
104
+ TagComponent.scrollSpy$ = null;
105
+ TagComponent.scrollSpyContainer = null;
106
+ TagComponent.scrollSpyInitialized = false;
107
+ }
108
+ // Ensure container exists; TagComponent can render before the scroll container is in the DOM.
109
+ const containerExists = !!this.resolveScrollContainer();
110
+ if (!containerExists) {
111
+ TagComponent.scrollSpyInitTries++;
112
+ if (TagComponent.scrollSpyInitTries <= 30) {
113
+ requestAnimationFrame(() => this.initScrollSpyOnce());
114
+ }
115
+ else {
116
+ console.warn('[TagComponent] ScrollSpy: .scrollable-container not found after retries');
117
+ }
118
+ return;
119
+ }
120
+ try {
121
+ TagComponent.scrollSpyInitialized = true;
122
+ const currentContainer = this.resolveScrollContainer();
123
+ TagComponent.scrollSpy$ = this.scrollSpy.observeActiveId({
124
+ container: currentContainer,
125
+ anchorSelector: '[data-anchor-target], .column[id]',
126
+ getOffsetTop: () => (document.querySelector('.tags-row--can-fix') ? 140 : 180),
127
+ resolveId: (anchor) => {
128
+ const section = anchor.closest('[data-anchor-target]');
129
+ if (section?.id)
130
+ return section.id;
131
+ if (anchor.id)
132
+ return anchor.id;
133
+ return anchor.closest('[id]')?.id || null;
134
+ },
135
+ debug: false,
136
+ });
137
+ TagComponent.scrollSpyContainer = currentContainer;
138
+ TagComponent.scrollSpySub = TagComponent.scrollSpy$.subscribe({
139
+ next: (activeId) => {
140
+ console.log('[TagComponent] ScrollSpy next', activeId);
141
+ if (!activeId)
142
+ return;
143
+ this.markSelectedTag(activeId);
144
+ },
145
+ error: (err) => {
146
+ console.error('[TagComponent] ScrollSpy subscription error', err);
147
+ },
148
+ });
149
+ }
150
+ catch (e) {
151
+ console.error('[TagComponent] ScrollSpy init failed', e);
152
+ }
153
+ }
154
+ resolveScrollContainer() {
155
+ const explicit = document.querySelector('.scrollable-container');
156
+ if (explicit && explicit.scrollHeight > explicit.clientHeight) {
157
+ return explicit;
158
+ }
159
+ const anchorSample = document.querySelector('.column[id]') ||
160
+ document.querySelector('[data-anchor-target]');
161
+ if (anchorSample) {
162
+ return this.scrollSpy.getScrollParent(anchorSample);
163
+ }
164
+ return document.scrollingElement || document.documentElement;
165
+ }
166
+ ngOnDestroy() {
167
+ this.destroy$.next();
168
+ this.destroy$.complete();
169
+ }
170
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TagComponent, deps: [{ token: 'uiComponent' }, { token: i0.Renderer2 }, { token: i1.FontSizeMappingService }, { token: i2.ScrollSpyService }], target: i0.ɵɵFactoryTarget.Component }); }
171
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: TagComponent, isStandalone: false, selector: "edm-sdui-tag", viewQueries: [{ propertyName: "tagElementRef", first: true, predicate: ["tagElement"], descendants: true }, { propertyName: "tagNameElementRef", first: true, predicate: ["tagNameElement"], descendants: true }], ngImport: i0, template: "<div class=\"tag\" #tagElement *ngIf=\"uiComponent\" [edmSduiView]=\"uiComponent.element\">\n <span class=\"tag-name\" #tagNameElement>{{ uiComponent.element?.label ?? '' }}</span>\n</div>\n", styles: [":host{display:contents}.tag{display:inline-flex;align-items:center;gap:8px;padding:14px 16px;border:.5px solid var(--tag-explorer-aux);cursor:pointer;font-size:16px}.tag--square{border-radius:4px}.tag--rounded{border-radius:999px}.tag--selected{border-color:var(--tag-explorer-highlight);background-color:var(--bt-tag-explorer-on);background-origin:border-box}.tag-name{font-weight:600;color:var(--font-bt-tag-explorer-on);font-size:15px;line-height:17.25px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
45
172
  }
46
173
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TagComponent, decorators: [{
47
174
  type: Component,
48
- args: [{ standalone: false, selector: 'edm-sdui-tag', template: "<div class=\"tag\" #tagElement *ngIf=\"uiComponent\" [edmSduiView]=\"uiComponent.element\">\n <span class=\"tag-name\" #tagNameElement>{{ uiComponent.element?.label ?? '' }}</span>\n</div>", styles: [":host{display:contents}.tag{padding:4px 8px;display:flex;align-items:center}\n"] }]
175
+ args: [{ standalone: false, selector: 'edm-sdui-tag', template: "<div class=\"tag\" #tagElement *ngIf=\"uiComponent\" [edmSduiView]=\"uiComponent.element\">\n <span class=\"tag-name\" #tagNameElement>{{ uiComponent.element?.label ?? '' }}</span>\n</div>\n", styles: [":host{display:contents}.tag{display:inline-flex;align-items:center;gap:8px;padding:14px 16px;border:.5px solid var(--tag-explorer-aux);cursor:pointer;font-size:16px}.tag--square{border-radius:4px}.tag--rounded{border-radius:999px}.tag--selected{border-color:var(--tag-explorer-highlight);background-color:var(--bt-tag-explorer-on);background-origin:border-box}.tag-name{font-weight:600;color:var(--font-bt-tag-explorer-on);font-size:15px;line-height:17.25px}\n"] }]
49
176
  }], ctorParameters: () => [{ type: undefined, decorators: [{
50
177
  type: Inject,
51
178
  args: ['uiComponent']
52
- }] }, { type: i0.Renderer2 }, { type: i1.FontSizeMappingService }], propDecorators: { tagElementRef: [{
179
+ }] }, { type: i0.Renderer2 }, { type: i1.FontSizeMappingService }, { type: i2.ScrollSpyService }], propDecorators: { tagElementRef: [{
53
180
  type: ViewChild,
54
181
  args: ['tagElement']
55
182
  }], tagNameElementRef: [{
56
183
  type: ViewChild,
57
184
  args: ['tagNameElement']
58
185
  }] } });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2R1aS9zcmMvbGliL2NvbXBvbmVudHMvdWljb21wb25lbnQvdGFnL3RhZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NkdWkvc3JjL2xpYi9jb21wb25lbnRzL3VpY29tcG9uZW50L3RhZy90YWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBVSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMzRSxPQUFPLEVBQStCLDBCQUEwQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDM0gsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDMUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7OztBQVEvRSxNQUFNLE9BQU8sWUFBWTtJQUl2QixZQUNnQyxXQUF3QixFQUM5QyxRQUFtQixFQUNuQixzQkFBOEM7UUFGeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDOUMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO0lBQ3BELENBQUM7SUFFTCxRQUFRO0lBRVIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsT0FBa0I7SUFFdkMsQ0FBQztJQUVPLGlCQUFpQixDQUFDLE9BQWtCO1FBQzFDLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUVELE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRTFFLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sUUFBUSxHQUFHLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM3RCxNQUFNLFVBQVUsR0FBRywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQ3BCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQ3BDLFdBQVcsRUFDWCxRQUFRLENBQ1QsQ0FBQztZQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFGLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDeEcsQ0FBQzsrR0FoRFUsWUFBWSxrQkFLYixhQUFhO21HQUxaLFlBQVksNFJDZnpCLGlNQUVNOzs0RkRhTyxZQUFZO2tCQU54QixTQUFTO2lDQUdJLEtBQUssWUFDUCxjQUFjOzswQkFPckIsTUFBTTsyQkFBQyxhQUFhO3NHQUpFLGFBQWE7c0JBQXJDLFNBQVM7dUJBQUMsWUFBWTtnQkFDTSxpQkFBaUI7c0JBQTdDLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIE9uSW5pdCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgVUlDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vLi4vY29yZS91aWNvbXBvc2l0aW9uL21vZGVscy91aWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgVUlFbGVtZW50IH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvdWljb21wb3NpdGlvbi9tb2RlbHMvdWllbGVtZW50XCI7XG5pbXBvcnQgeyBjb2xvck1hcHBpbmcgfSBmcm9tIFwiLi4vLi4vLi4vY29yZS91aXRoZW1lL21hcHBpbmcvY29sb3ItbWFwcGluZ1wiO1xuaW1wb3J0IHsgZ2V0VGV4dFN0eWxlTWFwcGluZ0ZvbnRTaXplLCB0ZXh0U3R5bGVNYXBwaW5nTGluZUhlaWdodCB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3VpdGhlbWUvbWFwcGluZy90ZXh0LXN0eWxlLW1hcHBpbmdcIjtcbmltcG9ydCB7IEZvbnRTaXplTWFwcGluZ1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9mb250LXNpemUtbWFwcGluZy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBVSVNpemUgfSBmcm9tIFwiLi4vLi4vLi4vY29yZS91aXRoZW1lL2VudW1zL3Vpc2l6ZVwiO1xuaW1wb3J0IHsgc2l6ZU1hcHBpbmdIZWlnaHQgfSBmcm9tIFwiLi4vLi4vLi4vY29yZS91aXRoZW1lL21hcHBpbmcvc2l6ZS1tYXBwaW5nXCI7XG5cbkBDb21wb25lbnQoe1xuICBzdHlsZVVybDogJy4vdGFnLmNvbXBvbmVudC5zY3NzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxuICBzZWxlY3RvcjogJ2VkbS1zZHVpLXRhZycsXG59KVxuZXhwb3J0IGNsYXNzIFRhZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3RhZ0VsZW1lbnQnKSB0YWdFbGVtZW50UmVmITogRWxlbWVudFJlZjxIVE1MSW1hZ2VFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgndGFnTmFtZUVsZW1lbnQnKSB0YWdOYW1lRWxlbWVudFJlZiE6IEVsZW1lbnRSZWY8SFRNTEltYWdlRWxlbWVudD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCgndWlDb21wb25lbnQnKSBwdWJsaWMgdWlDb21wb25lbnQ6IFVJQ29tcG9uZW50LFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGZvbnRTaXplTWFwcGluZ1NlcnZpY2U6IEZvbnRTaXplTWFwcGluZ1NlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnVpQ29tcG9uZW50LmVsZW1lbnQpIHtcbiAgICAgIHRoaXMuYXBwbHlFbGVtZW50KHRoaXMudWlDb21wb25lbnQuZWxlbWVudCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudWlDb21wb25lbnQuZWxlbWVudCkge1xuICAgICAgdGhpcy5hcHBseUxhYmVsRWxlbWVudCh0aGlzLnVpQ29tcG9uZW50LmVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlFbGVtZW50KGVsZW1lbnQ6IFVJRWxlbWVudCkge1xuXG4gIH1cblxuICBwcml2YXRlIGFwcGx5TGFiZWxFbGVtZW50KGVsZW1lbnQ6IFVJRWxlbWVudCkge1xuICAgIGlmIChlbGVtZW50LnRleHRDb2xvcikge1xuICAgICAgY29uc3QgY29sb3IgPSBjb2xvck1hcHBpbmdbZWxlbWVudC50ZXh0Q29sb3JdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRhZ05hbWVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjb2xvcicsIGNvbG9yKTtcbiAgICB9XG5cbiAgICBjb25zdCB0ZXh0U3R5bGVNYXBwaW5nRm9udFNpemUgPSB0aGlzLmZvbnRTaXplTWFwcGluZ1NlcnZpY2UuZ2V0TWFwcGluZygpO1xuXG4gICAgaWYgKGVsZW1lbnQudGV4dFN0eWxlKSB7XG4gICAgICBjb25zdCBmb250U2l6ZSA9IHRleHRTdHlsZU1hcHBpbmdGb250U2l6ZVtlbGVtZW50LnRleHRTdHlsZV07XG4gICAgICBjb25zdCBsaW5lSGVpZ2h0ID0gdGV4dFN0eWxlTWFwcGluZ0xpbmVIZWlnaHRbZWxlbWVudC50ZXh0U3R5bGVdO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy50YWdOYW1lRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnZm9udC1zaXplJyxcbiAgICAgICAgZm9udFNpemVcbiAgICAgICk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudGFnTmFtZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2xpbmUtaGVpZ2h0JywgbGluZUhlaWdodCk7XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRhZ0VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2hlaWdodCcsIHNpemVNYXBwaW5nSGVpZ2h0W1VJU2l6ZS5BU1NFVF84XSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YWdcIiAjdGFnRWxlbWVudCAqbmdJZj1cInVpQ29tcG9uZW50XCIgW2VkbVNkdWlWaWV3XT1cInVpQ29tcG9uZW50LmVsZW1lbnRcIj5cbiAgICA8c3BhbiBjbGFzcz1cInRhZy1uYW1lXCIgI3RhZ05hbWVFbGVtZW50Pnt7IHVpQ29tcG9uZW50LmVsZW1lbnQ/LmxhYmVsID8/ICcnIH19PC9zcGFuPlxuPC9kaXY+Il19
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2R1aS9zcmMvbGliL2NvbXBvbmVudHMvdWljb21wb25lbnQvdGFnL3RhZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NkdWkvc3JjL2xpYi9jb21wb25lbnRzL3VpY29tcG9uZW50L3RhZy90YWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBcUIsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd0SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDM0UsT0FBTyxFQUErQiwwQkFBMEIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzNILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQWMsT0FBTyxFQUEyQixNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBUXBFLE1BQU0sT0FBTyxZQUFZO2FBSVIseUJBQW9CLEdBQUcsS0FBSyxBQUFSLENBQVM7YUFDN0IsZUFBVSxHQUFxQyxJQUFJLEFBQXpDLENBQTBDO2FBQ3BELGlCQUFZLEdBQXdCLElBQUksQUFBNUIsQ0FBNkI7YUFDekMsdUJBQWtCLEdBQUcsQ0FBQyxBQUFKLENBQUs7YUFDdkIsdUJBQWtCLEdBQXVCLElBQUksQUFBM0IsQ0FBNEI7YUFDOUMsYUFBUSxHQUFrQixJQUFJLEFBQXRCLENBQXVCO0lBRTlDLFlBQ2dD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QVhFLGFBQWE7c0JBQXJDLFNBQVM7dUJBQUMsWUFBWTtnQkFDTSxpQkFBaUI7c0JBQTdDLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIE9uRGVzdHJveSwgT25Jbml0LCBSZW5kZXJlcjIsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBVSUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3VpY29tcG9zaXRpb24vbW9kZWxzL3VpY29tcG9uZW50XCI7XG5pbXBvcnQgeyBVSUVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vLi4vY29yZS91aWNvbXBvc2l0aW9uL21vZGVscy91aWVsZW1lbnRcIjtcbmltcG9ydCB7IGNvbG9yTWFwcGluZyB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3VpdGhlbWUvbWFwcGluZy9jb2xvci1tYXBwaW5nXCI7XG5pbXBvcnQgeyBnZXRUZXh0U3R5bGVNYXBwaW5nRm9udFNpemUsIHRleHRTdHlsZU1hcHBpbmdMaW5lSGVpZ2h0IH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvdWl0aGVtZS9tYXBwaW5nL3RleHQtc3R5bGUtbWFwcGluZ1wiO1xuaW1wb3J0IHsgRm9udFNpemVNYXBwaW5nU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2ZvbnQtc2l6ZS1tYXBwaW5nLnNlcnZpY2VcIjtcbmltcG9ydCB7IFVJU2l6ZSB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3VpdGhlbWUvZW51bXMvdWlzaXplXCI7XG5pbXBvcnQgeyBzaXplTWFwcGluZ0hlaWdodCB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3VpdGhlbWUvbWFwcGluZy9zaXplLW1hcHBpbmdcIjtcbmltcG9ydCB7IFNjcm9sbFNweVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vY29yZS9zZXJ2aWNlcy9zY3JvbGwtc3B5LnNlcnZpY2VcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcblxuQENvbXBvbmVudCh7XG4gIHN0eWxlVXJsOiAnLi90YWcuY29tcG9uZW50LnNjc3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFnLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG4gIHNlbGVjdG9yOiAnZWRtLXNkdWktdGFnJyxcbn0pXG5leHBvcnQgY2xhc3MgVGFnQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCd0YWdFbGVtZW50JykgdGFnRWxlbWVudFJlZiE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCd0YWdOYW1lRWxlbWVudCcpIHRhZ05hbWVFbGVtZW50UmVmITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHN0YXRpYyBzY3JvbGxTcHlJbml0aWFsaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIHN0YXRpYyBzY3JvbGxTcHkkOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgc3RhdGljIHNjcm9sbFNweVN1YjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgc3RhdGljIHNjcm9sbFNweUluaXRUcmllcyA9IDA7XG4gIHByaXZhdGUgc3RhdGljIHNjcm9sbFNweUNvbnRhaW5lcjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBzdGF0aWMgYWN0aXZlSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ3VpQ29tcG9uZW50JykgcHVibGljIHVpQ29tcG9uZW50OiBVSUNvbXBvbmVudCxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBmb250U2l6ZU1hcHBpbmdTZXJ2aWNlOiBGb250U2l6ZU1hcHBpbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2Nyb2xsU3B5OiBTY3JvbGxTcHlTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG5cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy51aUNvbXBvbmVudC5lbGVtZW50KSB7XG4gICAgICB0aGlzLmFwcGx5RWxlbWVudCh0aGlzLnVpQ29tcG9uZW50LmVsZW1lbnQpO1xuICAgICAgdGhpcy5hcHBseUxhYmVsRWxlbWVudCh0aGlzLnVpQ29tcG9uZW50LmVsZW1lbnQpO1xuXG4gICAgICAvLyBNYXA6IHRhZy5hY3Rpb24ucGFyYW0gLT4gc2VjdGlvbiBkaXYgaWRcbiAgICAgIGNvbnN0IGFjdGlvblBhcmFtID0gKHRoaXMudWlDb21wb25lbnQ/LmVsZW1lbnQgYXMgYW55KT8uYWN0aW9uPy5wYXJhbTtcbiAgICAgIGlmIChhY3Rpb25QYXJhbSAhPSBudWxsICYmIHRoaXMudGFnRWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLnRhZ0VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2RhdGEtdGFnJywgU3RyaW5nKGFjdGlvblBhcmFtKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tUYWdDb21wb25lbnRdIHRhZyB3aXRob3V0IGFjdGlvbi5wYXJhbScsIHRoaXMudWlDb21wb25lbnQ/LmVsZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICAvLyBSZWFwbGljYSBzZWxlw6fDo28gc2UgZXN0ZSB0YWcgY29ycmVzcG9uZGUgYW8gYXRpdm8gYXR1YWwuXG4gICAgICB0aGlzLnN5bmNTZWxlY3Rpb25TdGF0ZSgpO1xuXG4gICAgICAvLyBJTVBPUlRBTlQ6IFRhZ0NvbXBvbmVudCByZW5kZXJzIG9uY2UgcGVyIHRhZy5cbiAgICAgIC8vIFdlIGluaXRpYWxpemUgdGhlIHNjcm9sbCBvYnNlcnZlciBvbmx5IG9uY2UsIGJ1dCB3ZSBNVVNUIE5PVCB0aWUgaXQgdG8gdGhlIGZpcnN0IGluc3RhbmNlIGxpZmVjeWNsZSxcbiAgICAgIC8vIGJlY2F1c2UgdGhlIGZpcnN0IGluc3RhbmNlIG1heSBiZSBkZXN0cm95ZWQgKGUuZy4gcmVyZW5kZXIpIGFuZCB0aGUgc3Vic2NyaXB0aW9uIHdvdWxkIGRpZS5cbiAgICAgIHRoaXMuaW5pdFNjcm9sbFNweU9uY2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RWxlbWVudChlbGVtZW50OiBVSUVsZW1lbnQpIHtcblxuICB9XG5cbiAgcHJpdmF0ZSBtYXJrU2VsZWN0ZWRUYWcoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHRhZ3MgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KCcudGFnJykpO1xuICAgIGNvbnN0IGRhdGFUYWdzID0gdGFncy5tYXAodCA9PiB0LmdldEF0dHJpYnV0ZSgnZGF0YS10YWcnKSk7XG4gICAgY29uc29sZS5sb2coJ1tUYWdDb21wb25lbnRdIG1hcmtTZWxlY3RlZFRhZycsIHsgaWQsIGRhdGFUYWdzIH0pO1xuICAgIFRhZ0NvbXBvbmVudC5hY3RpdmVJZCA9IGlkO1xuICAgIGZvciAoY29uc3QgdCBvZiB0YWdzKSB0LmNsYXNzTGlzdC5yZW1vdmUoJ3RhZy0tc2VsZWN0ZWQnKTtcblxuICAgIGNvbnN0IGFjdGl2ZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KGAudGFnW2RhdGEtdGFnPVwiJHtDU1MuZXNjYXBlKGlkKX1cIl1gKTtcbiAgICBpZiAoIWFjdGl2ZSkge1xuICAgICAgY29uc29sZS53YXJuKCdbVGFnQ29tcG9uZW50XSBhY3RpdmUgdGFnIG5vdCBmb3VuZCBmb3IgaWQnLCBpZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGFjdGl2ZS5jbGFzc0xpc3QuYWRkKCd0YWctLXNlbGVjdGVkJyk7XG4gICAgY29uc29sZS5sb2coJ1tUYWdDb21wb25lbnRdIHRhZy0tc2VsZWN0ZWQgYXBwbGllZCB0bycsIGFjdGl2ZSk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNTZWxlY3Rpb25TdGF0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhVGFnID0gdGhpcy50YWdFbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGFnJyk7XG4gICAgaWYgKCFkYXRhVGFnKSByZXR1cm47XG4gICAgaWYgKFRhZ0NvbXBvbmVudC5hY3RpdmVJZCAmJiBUYWdDb21wb25lbnQuYWN0aXZlSWQgPT09IGRhdGFUYWcpIHtcbiAgICAgIHRoaXMudGFnRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RhZy0tc2VsZWN0ZWQnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50YWdFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndGFnLS1zZWxlY3RlZCcpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlMYWJlbEVsZW1lbnQoZWxlbWVudDogVUlFbGVtZW50KSB7XG4gICAgaWYgKGVsZW1lbnQudGV4dENvbG9yKSB7XG4gICAgICBjb25zdCBjb2xvciA9IGNvbG9yTWFwcGluZ1tlbGVtZW50LnRleHRDb2xvcl07XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudGFnTmFtZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NvbG9yJywgY29sb3IpO1xuICAgIH1cblxuICAgIGNvbnN0IHRleHRTdHlsZU1hcHBpbmdGb250U2l6ZSA9IHRoaXMuZm9udFNpemVNYXBwaW5nU2VydmljZS5nZXRNYXBwaW5nKCk7XG5cbiAgICBpZiAoZWxlbWVudC50ZXh0U3R5bGUpIHtcbiAgICAgIGNvbnN0IGZvbnRTaXplID0gdGV4dFN0eWxlTWFwcGluZ0ZvbnRTaXplW2VsZW1lbnQudGV4dFN0eWxlXTtcbiAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPSB0ZXh0U3R5bGVNYXBwaW5nTGluZUhlaWdodFtlbGVtZW50LnRleHRTdHlsZV07XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLnRhZ05hbWVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdmb250LXNpemUnLFxuICAgICAgICBmb250U2l6ZVxuICAgICAgKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50YWdOYW1lRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbGluZS1oZWlnaHQnLCBsaW5lSGVpZ2h0KTtcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudGFnRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnaGVpZ2h0Jywgc2l6ZU1hcHBpbmdIZWlnaHRbVUlTaXplLkFTU0VUXzhdKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFNjcm9sbFNweU9uY2UoKTogdm9pZCB7XG4gICAgLy8gQWxyZWFkeSBzdWJzY3JpYmVkXG4gICAgaWYgKFRhZ0NvbXBvbmVudC5zY3JvbGxTcHlTdWIpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRDb250YWluZXIgPSB0aGlzLnJlc29sdmVTY3JvbGxDb250YWluZXIoKTtcbiAgICAgIGNvbnN0IHN0YWxlID0gIVRhZ0NvbXBvbmVudC5zY3JvbGxTcHlDb250YWluZXI/LmlzQ29ubmVjdGVkIHx8IChjdXJyZW50Q29udGFpbmVyICYmIFRhZ0NvbXBvbmVudC5zY3JvbGxTcHlDb250YWluZXIgIT09IGN1cnJlbnRDb250YWluZXIpO1xuICAgICAgaWYgKCFzdGFsZSkgcmV0dXJuO1xuXG4gICAgICB0cnkge1xuICAgICAgICBUYWdDb21wb25lbnQuc2Nyb2xsU3B5U3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9IGNhdGNoIHt9XG4gICAgICBUYWdDb21wb25lbnQuc2Nyb2xsU3B5U3ViID0gbnVsbDtcbiAgICAgIFRhZ0NvbXBvbmVudC5zY3JvbGxTcHkkID0gbnVsbDtcbiAgICAgIFRhZ0NvbXBvbmVudC5zY3JvbGxTcHlDb250YWluZXIgPSBudWxsO1xuICAgICAgVGFnQ29tcG9uZW50LnNjcm9sbFNweUluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIGNvbnRhaW5lciBleGlzdHM7IFRhZ0NvbXBvbmVudCBjYW4gcmVuZGVyIGJlZm9yZSB0aGUgc2Nyb2xsIGNvbnRhaW5lciBpcyBpbiB0aGUgRE9NLlxuICAgIGNvbnN0IGNvbnRhaW5lckV4aXN0cyA9ICEhdGhpcy5yZXNvbHZlU2Nyb2xsQ29udGFpbmVyKCk7XG4gICAgaWYgKCFjb250YWluZXJFeGlzdHMpIHtcbiAgICAgIFRhZ0NvbXBvbmVudC5zY3JvbGxTcHlJbml0VHJpZXMrKztcbiAgICAgIGlmIChUYWdDb21wb25lbnQuc2Nyb2xsU3B5SW5pdFRyaWVzIDw9IDMwKSB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB0aGlzLmluaXRTY3JvbGxTcHlPbmNlKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbVGFnQ29tcG9uZW50XSBTY3JvbGxTcHk6IC5zY3JvbGxhYmxlLWNvbnRhaW5lciBub3QgZm91bmQgYWZ0ZXIgcmV0cmllcycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBUYWdDb21wb25lbnQuc2Nyb2xsU3B5SW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICBjb25zdCBjdXJyZW50Q29udGFpbmVyID0gdGhpcy5yZXNvbHZlU2Nyb2xsQ29udGFpbmVyKCkhO1xuXG4gICAgICBUYWdDb21wb25lbnQuc2Nyb2xsU3B5JCA9IHRoaXMuc2Nyb2xsU3B5Lm9ic2VydmVBY3RpdmVJZCh7XG4gICAgICAgIGNvbnRhaW5lcjogY3VycmVudENvbnRhaW5lciEsXG4gICAgICAgIGFuY2hvclNlbGVjdG9yOiAnW2RhdGEtYW5jaG9yLXRhcmdldF0sIC5jb2x1bW5baWRdJyxcbiAgICAgICAgZ2V0T2Zmc2V0VG9wOiAoKSA9PiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnRhZ3Mtcm93LS1jYW4tZml4JykgPyAxNDAgOiAxODApLFxuICAgICAgICByZXNvbHZlSWQ6IChhbmNob3IpID0+IHtcbiAgICAgICAgICBjb25zdCBzZWN0aW9uID0gYW5jaG9yLmNsb3Nlc3Q8SFRNTEVsZW1lbnQ+KCdbZGF0YS1hbmNob3ItdGFyZ2V0XScpO1xuICAgICAgICAgIGlmIChzZWN0aW9uPy5pZCkgcmV0dXJuIHNlY3Rpb24uaWQ7XG4gICAgICAgICAgaWYgKGFuY2hvci5pZCkgcmV0dXJuIGFuY2hvci5pZDtcbiAgICAgICAgICByZXR1cm4gYW5jaG9yLmNsb3Nlc3Q8SFRNTEVsZW1lbnQ+KCdbaWRdJyk/LmlkIHx8IG51bGw7XG4gICAgICAgIH0sXG4gICAgICAgIGRlYnVnOiBmYWxzZSxcbiAgICAgIH0pO1xuXG4gICAgICBUYWdDb21wb25lbnQuc2Nyb2xsU3B5Q29udGFpbmVyID0gY3VycmVudENvbnRhaW5lciE7XG5cbiAgICAgIFRhZ0NvbXBvbmVudC5zY3JvbGxTcHlTdWIgPSBUYWdDb21wb25lbnQuc2Nyb2xsU3B5JC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoYWN0aXZlSWQpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnW1RhZ0NvbXBvbmVudF0gU2Nyb2xsU3B5IG5leHQnLCBhY3RpdmVJZCk7XG4gICAgICAgICAgaWYgKCFhY3RpdmVJZCkgcmV0dXJuO1xuICAgICAgICAgIHRoaXMubWFya1NlbGVjdGVkVGFnKGFjdGl2ZUlkKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbVGFnQ29tcG9uZW50XSBTY3JvbGxTcHkgc3Vic2NyaXB0aW9uIGVycm9yJywgZXJyKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUYWdDb21wb25lbnRdIFNjcm9sbFNweSBpbml0IGZhaWxlZCcsIGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVNjcm9sbENvbnRhaW5lcigpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIGNvbnN0IGV4cGxpY2l0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNjcm9sbGFibGUtY29udGFpbmVyJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIGlmIChleHBsaWNpdCAmJiBleHBsaWNpdC5zY3JvbGxIZWlnaHQgPiBleHBsaWNpdC5jbGllbnRIZWlnaHQpIHtcbiAgICAgIHJldHVybiBleHBsaWNpdDtcbiAgICB9XG5cbiAgICBjb25zdCBhbmNob3JTYW1wbGUgPVxuICAgICAgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jb2x1bW5baWRdJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsKSB8fFxuICAgICAgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWFuY2hvci10YXJnZXRdJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsKTtcblxuICAgIGlmIChhbmNob3JTYW1wbGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnNjcm9sbFNweS5nZXRTY3JvbGxQYXJlbnQoYW5jaG9yU2FtcGxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQgYXMgSFRNTEVsZW1lbnQpIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInRhZ1wiICN0YWdFbGVtZW50ICpuZ0lmPVwidWlDb21wb25lbnRcIiBbZWRtU2R1aVZpZXddPVwidWlDb21wb25lbnQuZWxlbWVudFwiPlxuICAgIDxzcGFuIGNsYXNzPVwidGFnLW5hbWVcIiAjdGFnTmFtZUVsZW1lbnQ+e3sgdWlDb21wb25lbnQuZWxlbWVudD8ubGFiZWwgPz8gJycgfX08L3NwYW4+XG48L2Rpdj5cbiJdfQ==