nuxeo-development-framework 5.3.3 → 5.3.4

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 (120) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +2674 -289
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/ndf-config-editor/components/config-editor-actions/config-editor-actions.component.js +35 -0
  4. package/esm2015/lib/components/ndf-config-editor/components/editor-mode-switch.component.js +43 -0
  5. package/esm2015/lib/components/ndf-config-editor/components/index.js +4 -0
  6. package/esm2015/lib/components/ndf-config-editor/components/info-dialog/info-dialog.component.js +27 -0
  7. package/esm2015/lib/components/ndf-config-editor/config.token.js +3 -0
  8. package/esm2015/lib/components/ndf-config-editor/constants/index.js +4 -0
  9. package/esm2015/lib/components/ndf-config-editor/constants/mode.js +5 -0
  10. package/esm2015/lib/components/ndf-config-editor/constants/query.js +5 -0
  11. package/esm2015/lib/components/ndf-config-editor/constants/type.js +5 -0
  12. package/esm2015/lib/components/ndf-config-editor/containers/config-preview/config-preview.component.js +28 -0
  13. package/esm2015/lib/components/ndf-config-editor/containers/editor-settings/editor-settings.component.js +73 -0
  14. package/esm2015/lib/components/ndf-config-editor/containers/index.js +5 -0
  15. package/esm2015/lib/components/ndf-config-editor/containers/monaco-editor.component.js +195 -0
  16. package/esm2015/lib/components/ndf-config-editor/containers/ndf-config-editor/ndf-config-editor.component.js +133 -0
  17. package/esm2015/lib/components/ndf-config-editor/index.js +2 -0
  18. package/esm2015/lib/components/ndf-config-editor/models/config.js +2 -0
  19. package/esm2015/lib/components/ndf-config-editor/models/dialog-data.js +2 -0
  20. package/esm2015/lib/components/ndf-config-editor/models/editor-model.js +2 -0
  21. package/esm2015/lib/components/ndf-config-editor/models/index.js +5 -0
  22. package/esm2015/lib/components/ndf-config-editor/models/type-helper.js +2 -0
  23. package/esm2015/lib/components/ndf-config-editor/ndf-config-editor.module.js +118 -0
  24. package/esm2015/lib/components/ndf-config-editor/pipes/index.js +3 -0
  25. package/esm2015/lib/components/ndf-config-editor/pipes/is-valid-json.pipe.js +17 -0
  26. package/esm2015/lib/components/ndf-config-editor/pipes/validate-object.pipe.js +16 -0
  27. package/esm2015/lib/components/ndf-config-editor/public/editor-navigate-button.js +104 -0
  28. package/esm2015/lib/components/ndf-config-editor/public/index.js +2 -0
  29. package/esm2015/lib/components/ndf-config-editor/public-api.js +7 -0
  30. package/esm2015/lib/components/ndf-config-editor/services/data-access.service.js +26 -0
  31. package/esm2015/lib/components/ndf-config-editor/services/data-store.service.js +52 -0
  32. package/esm2015/lib/components/ndf-config-editor/services/dummy-data.js +1321 -0
  33. package/esm2015/lib/components/ndf-config-editor/services/index.js +4 -0
  34. package/esm2015/lib/components/ndf-config-editor/services/monaco.loader.service.js +51 -0
  35. package/esm2015/lib/components/ndf-config-editor/utility/index.js +2 -0
  36. package/esm2015/lib/components/ndf-config-editor/utility/json.js +10 -0
  37. package/esm2015/lib/components/reports/index.js +3 -0
  38. package/esm2015/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.js +19 -12
  39. package/esm2015/lib/components/reports/ndf-reports/ndf-reports.module.js +14 -5
  40. package/esm2015/lib/components/reports/ndf-reports/services/chart-data-transformers.service.js +15 -1
  41. package/esm2015/lib/components/reports/ndf-reports/services/chart-plugins-registry.service.js +9 -1
  42. package/esm2015/lib/components/spell-checker-field/spell-checker-field.module.js +1 -1
  43. package/esm2015/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.js +20 -14
  44. package/esm2015/lib/components/tables/ndf-table/directives/index.js +1 -2
  45. package/esm2015/lib/components/tables/ndf-table/models/table-config.js +1 -1
  46. package/esm2015/lib/components/tables/ndf-table/ndf-table.module.js +15 -7
  47. package/esm2015/lib/core/services/extension/component-register.service.js +4 -1
  48. package/esm2015/lib/core/tokens/index.js +2 -0
  49. package/esm2015/lib/core/tokens/project.token.js +3 -0
  50. package/esm2015/lib/directive/permissions/evaluators.service.js +20 -18
  51. package/esm2015/lib/shared/directives/copy-to-clipboard.directive.js +41 -0
  52. package/esm2015/lib/shared/directives/element-height.directive.js +80 -0
  53. package/esm2015/lib/shared/directives/fluid-height.directive.js +115 -0
  54. package/esm2015/lib/shared/directives/index.js +4 -0
  55. package/esm2015/lib/shared/index.js +6 -0
  56. package/esm2015/lib/shared/libraryShared.module.js +35 -10
  57. package/esm2015/lib/shared/models/index.js +2 -1
  58. package/esm2015/lib/shared/models/ndf-request.model.js +2 -0
  59. package/esm2015/public-api.js +4 -1
  60. package/fesm2015/nuxeo-development-framework.js +2528 -190
  61. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  62. package/lib/components/ndf-config-editor/components/config-editor-actions/config-editor-actions.component.d.ts +14 -0
  63. package/lib/components/ndf-config-editor/components/editor-mode-switch.component.d.ts +17 -0
  64. package/lib/components/ndf-config-editor/components/index.d.ts +3 -0
  65. package/lib/components/ndf-config-editor/components/info-dialog/info-dialog.component.d.ts +11 -0
  66. package/lib/components/ndf-config-editor/config.token.d.ts +9 -0
  67. package/lib/components/ndf-config-editor/constants/index.d.ts +3 -0
  68. package/lib/components/ndf-config-editor/constants/mode.d.ts +4 -0
  69. package/lib/components/ndf-config-editor/constants/query.d.ts +4 -0
  70. package/lib/components/ndf-config-editor/constants/type.d.ts +4 -0
  71. package/lib/components/ndf-config-editor/containers/config-preview/config-preview.component.d.ts +15 -0
  72. package/lib/components/ndf-config-editor/containers/editor-settings/editor-settings.component.d.ts +24 -0
  73. package/lib/components/ndf-config-editor/containers/index.d.ts +4 -0
  74. package/lib/components/ndf-config-editor/containers/monaco-editor.component.d.ts +33 -0
  75. package/lib/components/ndf-config-editor/containers/ndf-config-editor/ndf-config-editor.component.d.ts +48 -0
  76. package/lib/components/ndf-config-editor/index.d.ts +1 -0
  77. package/lib/components/ndf-config-editor/models/config.d.ts +24 -0
  78. package/lib/components/ndf-config-editor/models/dialog-data.d.ts +6 -0
  79. package/lib/components/ndf-config-editor/models/editor-model.d.ts +15 -0
  80. package/lib/components/ndf-config-editor/models/index.d.ts +4 -0
  81. package/lib/components/ndf-config-editor/models/type-helper.d.ts +3 -0
  82. package/lib/components/ndf-config-editor/ndf-config-editor.module.d.ts +36 -0
  83. package/lib/components/ndf-config-editor/pipes/index.d.ts +2 -0
  84. package/lib/components/ndf-config-editor/pipes/is-valid-json.pipe.d.ts +7 -0
  85. package/lib/components/ndf-config-editor/pipes/validate-object.pipe.d.ts +7 -0
  86. package/lib/components/ndf-config-editor/public/editor-navigate-button.d.ts +31 -0
  87. package/lib/components/ndf-config-editor/public/index.d.ts +1 -0
  88. package/lib/components/ndf-config-editor/public-api.d.ts +6 -0
  89. package/lib/components/ndf-config-editor/services/data-access.service.d.ts +8 -0
  90. package/lib/components/ndf-config-editor/services/data-store.service.d.ts +24 -0
  91. package/lib/components/ndf-config-editor/services/dummy-data.d.ts +992 -0
  92. package/lib/components/ndf-config-editor/services/index.d.ts +3 -0
  93. package/lib/components/ndf-config-editor/services/monaco.loader.service.d.ts +14 -0
  94. package/lib/components/ndf-config-editor/utility/index.d.ts +1 -0
  95. package/lib/components/ndf-config-editor/utility/json.d.ts +1 -0
  96. package/lib/components/reports/index.d.ts +2 -0
  97. package/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.d.ts +6 -3
  98. package/lib/components/reports/ndf-reports/ndf-reports.module.d.ts +4 -2
  99. package/lib/components/reports/ndf-reports/services/chart-data-transformers.service.d.ts +10 -0
  100. package/lib/components/reports/ndf-reports/services/chart-plugins-registry.service.d.ts +6 -0
  101. package/lib/components/tables/ndf-table/containers/ndf-table/ndf-table.component.d.ts +3 -1
  102. package/lib/components/tables/ndf-table/directives/index.d.ts +0 -1
  103. package/lib/components/tables/ndf-table/models/table-config.d.ts +1 -0
  104. package/lib/components/tables/ndf-table/ndf-table.module.d.ts +4 -2
  105. package/lib/core/services/extension/component-register.service.d.ts +3 -0
  106. package/lib/core/tokens/index.d.ts +1 -0
  107. package/lib/core/tokens/project.token.d.ts +2 -0
  108. package/lib/directive/permissions/evaluators.service.d.ts +4 -2
  109. package/lib/shared/directives/copy-to-clipboard.directive.d.ts +15 -0
  110. package/lib/shared/directives/element-height.directive.d.ts +28 -0
  111. package/lib/{components/tables/ndf-table → shared}/directives/fluid-height.directive.d.ts +2 -1
  112. package/lib/shared/directives/index.d.ts +3 -0
  113. package/lib/shared/index.d.ts +5 -0
  114. package/lib/shared/libraryShared.module.d.ts +3 -1
  115. package/lib/shared/models/index.d.ts +1 -0
  116. package/lib/shared/models/ndf-request.model.d.ts +7 -0
  117. package/package.json +4 -2
  118. package/public-api.d.ts +3 -0
  119. package/src/docs/ndf-table.doc.md +1433 -0
  120. package/esm2015/lib/components/tables/ndf-table/directives/fluid-height.directive.js +0 -112
@@ -1,112 +0,0 @@
1
- import { Directive, Input, NgModule } from '@angular/core';
2
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
- import * as i0 from "@angular/core";
4
- export class FluidHeightDirective {
5
- constructor(renderer, elementRef, ngZone) {
6
- this.renderer = renderer;
7
- this.elementRef = elementRef;
8
- this.ngZone = ngZone;
9
- this.minHeight = 0;
10
- this.topOffset = 0;
11
- this.subtractItems = [];
12
- this.decrease = 0;
13
- this.delay = 200;
14
- this.calculate = true;
15
- this._inlineStyle = false;
16
- this._domElement = this.elementRef.nativeElement;
17
- this._resizeListener = () => this.onResize();
18
- this.ngZone.runOutsideAngular(() => {
19
- window.addEventListener('resize', this._resizeListener);
20
- });
21
- }
22
- get inlineStyle() {
23
- return this._inlineStyle;
24
- }
25
- set inlineStyle(value) {
26
- this._inlineStyle = coerceBooleanProperty(value);
27
- }
28
- ngAfterViewInit() {
29
- this.scheduleSetHeight();
30
- }
31
- scheduleSetHeight(delay = this.delay) {
32
- setTimeout(() => this.setHeight(), delay);
33
- }
34
- onResize() {
35
- if (this._animationId) {
36
- cancelAnimationFrame(this._animationId);
37
- }
38
- this._animationId = requestAnimationFrame(() => this.setHeight());
39
- }
40
- setHeight() {
41
- if (!this.calculate) {
42
- return;
43
- }
44
- const windowHeight = window.innerHeight;
45
- const topOffset = this.topOffset || this._calcTopOffset();
46
- let height = windowHeight - topOffset;
47
- this.subtractItems.forEach((selector) => {
48
- height -= this._getSelectorHeight(selector);
49
- });
50
- height = Math.max(height - this.decrease, this.minHeight);
51
- if (this.inlineStyle) {
52
- this.renderer.setStyle(this._domElement, 'height', `${height}px`);
53
- }
54
- else {
55
- this.renderer.setAttribute(this._domElement, 'style', `--ndf-table-height : ${height}px`);
56
- }
57
- }
58
- _getSelectorHeight(selector) {
59
- const element = document.querySelector(selector);
60
- return element ? element.clientHeight : 0;
61
- }
62
- _calcTopOffset() {
63
- try {
64
- const rect = this._domElement.getBoundingClientRect();
65
- const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
66
- return rect.top + scrollTop;
67
- }
68
- catch (_a) {
69
- return 0;
70
- }
71
- }
72
- ngOnDestroy() {
73
- window.removeEventListener('resize', this._resizeListener);
74
- }
75
- }
76
- FluidHeightDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FluidHeightDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
77
- FluidHeightDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: FluidHeightDirective, selector: "[ndfFluidHeight]", inputs: { minHeight: "minHeight", topOffset: ["ndfFluidHeight", "topOffset"], subtractItems: "subtractItems", decrease: "decrease", delay: "delay", calculate: "calculate", inlineStyle: "inlineStyle" }, exportAs: ["ndfFluidHeight"], ngImport: i0 });
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FluidHeightDirective, decorators: [{
79
- type: Directive,
80
- args: [{
81
- selector: '[ndfFluidHeight]',
82
- exportAs: 'ndfFluidHeight'
83
- }]
84
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { minHeight: [{
85
- type: Input
86
- }], topOffset: [{
87
- type: Input,
88
- args: ['ndfFluidHeight']
89
- }], subtractItems: [{
90
- type: Input
91
- }], decrease: [{
92
- type: Input
93
- }], delay: [{
94
- type: Input
95
- }], calculate: [{
96
- type: Input
97
- }], inlineStyle: [{
98
- type: Input
99
- }] } });
100
- export class FluidHeightModule {
101
- }
102
- FluidHeightModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FluidHeightModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
103
- FluidHeightModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FluidHeightModule, declarations: [FluidHeightDirective], exports: [FluidHeightDirective] });
104
- FluidHeightModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FluidHeightModule });
105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FluidHeightModule, decorators: [{
106
- type: NgModule,
107
- args: [{
108
- declarations: [FluidHeightDirective],
109
- exports: [FluidHeightDirective]
110
- }]
111
- }] });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmx1aWQtaGVpZ2h0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL25kZi10YWJsZS9kaXJlY3RpdmVzL2ZsdWlkLWhlaWdodC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsS0FBSyxFQUFFLFFBQVEsRUFBZ0MsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQU01RSxNQUFNLE9BQU8sb0JBQW9CO0lBdUJoQyxZQUNTLFFBQW1CLEVBQ25CLFVBQXNCLEVBQ3RCLE1BQWM7UUFGZCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXpCZCxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ0UsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUM5QixrQkFBYSxHQUFhLEVBQUUsQ0FBQztRQUM3QixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsVUFBSyxHQUFHLEdBQUcsQ0FBQztRQUVaLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFbEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFtQjVCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUE0QixDQUFDO1FBRWhFLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTdDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQ2xDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFD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QUMxQjs4SUFFUyxTQUFTO3NCQUFqQixLQUFLO2dCQUNtQixTQUFTO3NCQUFqQyxLQUFLO3VCQUFDLGdCQUFnQjtnQkFDZCxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBSUYsV0FBVztzQkFEZCxLQUFLOztBQXlGUCxNQUFNLE9BQU8saUJBQWlCOzsrR0FBakIsaUJBQWlCO2dIQUFqQixpQkFBaUIsaUJBbkdqQixvQkFBb0IsYUFBcEIsb0JBQW9CO2dIQW1HcEIsaUJBQWlCOzRGQUFqQixpQkFBaUI7a0JBSjdCLFFBQVE7bUJBQUM7b0JBQ1QsWUFBWSxFQUFFLENBQUMsb0JBQW9CLENBQUM7b0JBQ3BDLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE5nTW9kdWxlLCBOZ1pvbmUsIE9uRGVzdHJveSwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG5cdHNlbGVjdG9yOiAnW25kZkZsdWlkSGVpZ2h0XScsXHJcblx0ZXhwb3J0QXM6ICduZGZGbHVpZEhlaWdodCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEZsdWlkSGVpZ2h0RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHRASW5wdXQoKSBtaW5IZWlnaHQgPSAwO1xyXG5cdEBJbnB1dCgnbmRmRmx1aWRIZWlnaHQnKSB0b3BPZmZzZXQgPSAwO1xyXG5cdEBJbnB1dCgpIHN1YnRyYWN0SXRlbXM6IHN0cmluZ1tdID0gW107XHJcblx0QElucHV0KCkgZGVjcmVhc2UgPSAwO1xyXG5cdEBJbnB1dCgpIGRlbGF5ID0gMjAwO1xyXG5cclxuXHRASW5wdXQoKSBjYWxjdWxhdGUgPSB0cnVlO1xyXG5cclxuXHRwcml2YXRlIF9pbmxpbmVTdHlsZSA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IGlubGluZVN0eWxlKCk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2lubGluZVN0eWxlO1xyXG5cdH1cclxuXHJcblx0c2V0IGlubGluZVN0eWxlKHZhbHVlOiBib29sZWFuKSB7XHJcblx0XHR0aGlzLl9pbmxpbmVTdHlsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIF9kb21FbGVtZW50OiBIVE1MRWxlbWVudDtcclxuXHRwcml2YXRlIF9hbmltYXRpb25JZD86IG51bWJlcjtcclxuXHRwcml2YXRlIF9yZXNpemVMaXN0ZW5lcjogKCkgPT4gdm9pZDtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcblx0XHRwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcblx0XHRwcml2YXRlIG5nWm9uZTogTmdab25lXHJcblx0KSB7XHJcblx0XHR0aGlzLl9kb21FbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG5cdFx0dGhpcy5fcmVzaXplTGlzdGVuZXIgPSAoKSA9PiB0aGlzLm9uUmVzaXplKCk7XHJcblxyXG5cdFx0dGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG5cdFx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5fcmVzaXplTGlzdGVuZXIpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLnNjaGVkdWxlU2V0SGVpZ2h0KCk7XHJcblx0fVxyXG5cclxuXHRzY2hlZHVsZVNldEhlaWdodChkZWxheTogbnVtYmVyID0gdGhpcy5kZWxheSk6IHZvaWQge1xyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB0aGlzLnNldEhlaWdodCgpLCBkZWxheSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIG9uUmVzaXplKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuX2FuaW1hdGlvbklkKSB7XHJcblx0XHRcdGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX2FuaW1hdGlvbklkKTtcclxuXHRcdH1cclxuXHRcdHRoaXMuX2FuaW1hdGlvbklkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHRoaXMuc2V0SGVpZ2h0KCkpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzZXRIZWlnaHQoKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuY2FsY3VsYXRlKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHdpbmRvd0hlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcclxuXHRcdGNvbnN0IHRvcE9mZnNldCA9IHRoaXMudG9wT2Zmc2V0IHx8IHRoaXMuX2NhbGNUb3BPZmZzZXQoKTtcclxuXHRcdGxldCBoZWlnaHQgPSB3aW5kb3dIZWlnaHQgLSB0b3BPZmZzZXQ7XHJcblxyXG5cdFx0dGhpcy5zdWJ0cmFjdEl0ZW1zLmZvckVhY2goKHNlbGVjdG9yKSA9PiB7XHJcblx0XHRcdGhlaWdodCAtPSB0aGlzLl9nZXRTZWxlY3RvckhlaWdodChzZWxlY3Rvcik7XHJcblx0XHR9KTtcclxuXHJcblx0XHRoZWlnaHQgPSBNYXRoLm1heChoZWlnaHQgLSB0aGlzLmRlY3JlYXNlLCB0aGlzLm1pbkhlaWdodCk7XHJcblxyXG5cdFx0aWYgKHRoaXMuaW5saW5lU3R5bGUpIHtcclxuXHRcdFx0dGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLl9kb21FbGVtZW50LCAnaGVpZ2h0JywgYCR7aGVpZ2h0fXB4YCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLl9kb21FbGVtZW50LCAnc3R5bGUnLCBgLS1uZGYtdGFibGUtaGVpZ2h0IDogJHtoZWlnaHR9cHhgKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgX2dldFNlbGVjdG9ySGVpZ2h0KHNlbGVjdG9yOiBzdHJpbmcpOiBudW1iZXIge1xyXG5cdFx0Y29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcclxuXHRcdHJldHVybiBlbGVtZW50ID8gZWxlbWVudC5jbGllbnRIZWlnaHQgOiAwO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBfY2FsY1RvcE9mZnNldCgpOiBudW1iZXIge1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0Y29uc3QgcmVjdCA9IHRoaXMuX2RvbUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblx0XHRcdGNvbnN0IHNjcm9sbFRvcCA9IHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wO1xyXG5cdFx0XHRyZXR1cm4gcmVjdC50b3AgKyBzY3JvbGxUb3A7XHJcblx0XHR9IGNhdGNoIHtcclxuXHRcdFx0cmV0dXJuIDA7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfaW5saW5lU3R5bGU6IEJvb2xlYW5JbnB1dDtcclxuXHJcblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcblx0XHR3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5fcmVzaXplTGlzdGVuZXIpO1xyXG5cdH1cclxufVxyXG5cclxuQE5nTW9kdWxlKHtcclxuXHRkZWNsYXJhdGlvbnM6IFtGbHVpZEhlaWdodERpcmVjdGl2ZV0sXHJcblx0ZXhwb3J0czogW0ZsdWlkSGVpZ2h0RGlyZWN0aXZlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmx1aWRIZWlnaHRNb2R1bGUge31cclxuIl19