@ajf/material 12.1.5 → 12.1.8

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 (191) hide show
  1. package/bundles/material-barcode.umd.js +3 -7
  2. package/bundles/material-barcode.umd.js.map +1 -1
  3. package/bundles/material-calendar.umd.js +5 -17
  4. package/bundles/material-calendar.umd.js.map +1 -1
  5. package/bundles/material-checkbox-group.umd.js +4 -14
  6. package/bundles/material-checkbox-group.umd.js.map +1 -1
  7. package/bundles/material-form-builder.umd.js +523 -484
  8. package/bundles/material-form-builder.umd.js.map +1 -1
  9. package/bundles/material-forms.umd.js +95 -63
  10. package/bundles/material-forms.umd.js.map +1 -1
  11. package/bundles/material-image.umd.js +3 -10
  12. package/bundles/material-image.umd.js.map +1 -1
  13. package/bundles/material-monaco-editor.umd.js +4 -7
  14. package/bundles/material-monaco-editor.umd.js.map +1 -1
  15. package/bundles/material-node-icon.umd.js +3 -10
  16. package/bundles/material-node-icon.umd.js.map +1 -1
  17. package/bundles/material-page-slider.umd.js +2 -7
  18. package/bundles/material-page-slider.umd.js.map +1 -1
  19. package/bundles/material-reports.umd.js +68 -12
  20. package/bundles/material-reports.umd.js.map +1 -1
  21. package/bundles/material-time.umd.js +4 -12
  22. package/bundles/material-time.umd.js.map +1 -1
  23. package/calendar/index.metadata.json +1 -1
  24. package/checkbox-group/index.metadata.json +1 -1
  25. package/esm2015/barcode/barcode-module.js +3 -7
  26. package/esm2015/barcode/barcode.js +3 -3
  27. package/esm2015/calendar/calendar-module.js +4 -14
  28. package/esm2015/calendar/calendar.js +4 -6
  29. package/esm2015/checkbox-group/checkbox-group-item.js +3 -3
  30. package/esm2015/checkbox-group/checkbox-group-module.js +4 -14
  31. package/esm2015/form-builder/branch-line.js +2 -2
  32. package/esm2015/form-builder/choices-origin-data-source.js +1 -1
  33. package/esm2015/form-builder/choices-origin-editor-dialog.js +7 -4
  34. package/esm2015/form-builder/choices-origin-editor.js +1 -1
  35. package/esm2015/form-builder/condition-editor-dialog.js +1 -1
  36. package/esm2015/form-builder/condition-editor.js +9 -8
  37. package/esm2015/form-builder/form-builder-module.js +29 -14
  38. package/esm2015/form-builder/form-builder-service.js +132 -125
  39. package/esm2015/form-builder/form-builder-utils.js +4 -3
  40. package/esm2015/form-builder/form-builder.js +30 -26
  41. package/esm2015/form-builder/node-entry.js +7 -5
  42. package/esm2015/form-builder/node-properties.js +317 -312
  43. package/esm2015/form-builder/node-type-entry.js +2 -2
  44. package/esm2015/form-builder/string-identifier-dialog.js +5 -7
  45. package/esm2015/form-builder/validation-condition-editor-dialog.js +1 -1
  46. package/esm2015/form-builder/warning-condition-editor-dialog.js +1 -1
  47. package/esm2015/forms/barcode-field.js +3 -3
  48. package/esm2015/forms/boolean-field.js +3 -3
  49. package/esm2015/forms/date-field.js +2 -2
  50. package/esm2015/forms/date-input-field.js +3 -3
  51. package/esm2015/forms/empty-field.js +3 -3
  52. package/esm2015/forms/field-service.js +42 -42
  53. package/esm2015/forms/field-warning-dialog.js +1 -1
  54. package/esm2015/forms/field.js +2 -2
  55. package/esm2015/forms/form.js +2 -2
  56. package/esm2015/forms/forms-module.js +55 -23
  57. package/esm2015/forms/input-field.js +2 -2
  58. package/esm2015/forms/multiple-choice-field.js +3 -3
  59. package/esm2015/forms/range-field.js +3 -3
  60. package/esm2015/forms/single-choice-field.js +3 -3
  61. package/esm2015/forms/table-field.js +3 -3
  62. package/esm2015/forms/text-field.js +2 -2
  63. package/esm2015/forms/time-field.js +3 -3
  64. package/esm2015/forms/video-url-field.js +2 -2
  65. package/esm2015/forms/warning-alert-service.js +1 -1
  66. package/esm2015/image/image-module.js +4 -11
  67. package/esm2015/image/image.js +2 -2
  68. package/esm2015/monaco-editor/autocomplete-singleton-model.js +3 -2
  69. package/esm2015/monaco-editor/editor-options-model.js +1 -1
  70. package/esm2015/monaco-editor/monaco-editor-module.js +3 -7
  71. package/esm2015/monaco-editor/monaco-editor.js +3 -3
  72. package/esm2015/node-icon/node-icon-module.js +4 -11
  73. package/esm2015/node-icon/node-icon.js +1 -1
  74. package/esm2015/page-slider/page-slider-module.js +3 -8
  75. package/esm2015/page-slider/page-slider.js +2 -2
  76. package/esm2015/reports/chart-widget.js +2 -2
  77. package/esm2015/reports/filter-widget.js +78 -0
  78. package/esm2015/reports/formula-widget.js +2 -2
  79. package/esm2015/reports/image-container-widget.js +2 -2
  80. package/esm2015/reports/image-widget.js +2 -2
  81. package/esm2015/reports/map-widget.js +2 -2
  82. package/esm2015/reports/page-break-widget.js +2 -2
  83. package/esm2015/reports/public-api.js +2 -1
  84. package/esm2015/reports/report.js +2 -2
  85. package/esm2015/reports/reports-module.js +7 -6
  86. package/esm2015/reports/table-widget.js +3 -3
  87. package/esm2015/reports/text-widget.js +2 -2
  88. package/esm2015/reports/widget.js +7 -4
  89. package/esm2015/time/time-module.js +4 -12
  90. package/esm2015/time/time.js +3 -3
  91. package/fesm2015/barcode.js +3 -7
  92. package/fesm2015/barcode.js.map +1 -1
  93. package/fesm2015/calendar.js +5 -17
  94. package/fesm2015/calendar.js.map +1 -1
  95. package/fesm2015/checkbox-group.js +4 -14
  96. package/fesm2015/checkbox-group.js.map +1 -1
  97. package/fesm2015/form-builder.js +521 -485
  98. package/fesm2015/form-builder.js.map +1 -1
  99. package/fesm2015/forms.js +95 -63
  100. package/fesm2015/forms.js.map +1 -1
  101. package/fesm2015/image.js +3 -10
  102. package/fesm2015/image.js.map +1 -1
  103. package/fesm2015/monaco-editor.js +5 -8
  104. package/fesm2015/monaco-editor.js.map +1 -1
  105. package/fesm2015/node-icon.js +3 -10
  106. package/fesm2015/node-icon.js.map +1 -1
  107. package/fesm2015/page-slider.js +2 -7
  108. package/fesm2015/page-slider.js.map +1 -1
  109. package/fesm2015/reports.js +89 -13
  110. package/fesm2015/reports.js.map +1 -1
  111. package/fesm2015/time.js +4 -12
  112. package/fesm2015/time.js.map +1 -1
  113. package/form-builder/index.metadata.json +1 -1
  114. package/form-builder/node-properties.d.ts +1 -0
  115. package/forms/index.metadata.json +1 -1
  116. package/image/index.metadata.json +1 -1
  117. package/monaco-editor/index.metadata.json +1 -1
  118. package/node-icon/index.metadata.json +1 -1
  119. package/package.json +2 -4
  120. package/page-slider/index.metadata.json +1 -1
  121. package/{report-builder/widget-toolbar-button.d.ts → reports/filter-widget.d.ts} +11 -5
  122. package/reports/index.metadata.json +1 -1
  123. package/reports/public-api.d.ts +1 -0
  124. package/time/index.metadata.json +1 -1
  125. package/bundles/material-report-builder.umd.js +0 -5814
  126. package/bundles/material-report-builder.umd.js.map +0 -1
  127. package/esm2015/report-builder/column.js +0 -97
  128. package/esm2015/report-builder/condition-editor.js +0 -159
  129. package/esm2015/report-builder/content.js +0 -255
  130. package/esm2015/report-builder/custom-widget-dialog.js +0 -51
  131. package/esm2015/report-builder/custom-widget-toolbar-button.js +0 -70
  132. package/esm2015/report-builder/custom-widgets-toolbar.js +0 -124
  133. package/esm2015/report-builder/forms-analyzer-dialog.js +0 -315
  134. package/esm2015/report-builder/forms-analyzer.js +0 -264
  135. package/esm2015/report-builder/image-filter.js +0 -32
  136. package/esm2015/report-builder/image-group.js +0 -106
  137. package/esm2015/report-builder/index.js +0 -25
  138. package/esm2015/report-builder/models.js +0 -23
  139. package/esm2015/report-builder/operations.js +0 -23
  140. package/esm2015/report-builder/properties.js +0 -765
  141. package/esm2015/report-builder/public-api.js +0 -26
  142. package/esm2015/report-builder/quill-editor.js +0 -299
  143. package/esm2015/report-builder/renderer-widget.js +0 -238
  144. package/esm2015/report-builder/report-builder-drag-data.js +0 -23
  145. package/esm2015/report-builder/report-builder-module.js +0 -114
  146. package/esm2015/report-builder/report-builder-service.js +0 -1685
  147. package/esm2015/report-builder/report-builder.externs.js +0 -6
  148. package/esm2015/report-builder/report-builder.js +0 -69
  149. package/esm2015/report-builder/theme-color-dialog.js +0 -90
  150. package/esm2015/report-builder/theme-color.js +0 -215
  151. package/esm2015/report-builder/tokens.js +0 -24
  152. package/esm2015/report-builder/toolbar-dialog.js +0 -56
  153. package/esm2015/report-builder/toolbar.js +0 -90
  154. package/esm2015/report-builder/utils.js +0 -48
  155. package/esm2015/report-builder/widget-toolbar-button.js +0 -47
  156. package/esm2015/report-builder/widgets-row-buttons.js +0 -133
  157. package/esm2015/report-builder/widgets-toolbar.js +0 -79
  158. package/fesm2015/report-builder.js +0 -5332
  159. package/fesm2015/report-builder.js.map +0 -1
  160. package/report-builder/_report-builder.scss +0 -0
  161. package/report-builder/column.d.ts +0 -63
  162. package/report-builder/condition-editor.d.ts +0 -67
  163. package/report-builder/content.d.ts +0 -142
  164. package/report-builder/custom-widget-dialog.d.ts +0 -31
  165. package/report-builder/custom-widget-toolbar-button.d.ts +0 -45
  166. package/report-builder/custom-widgets-toolbar.d.ts +0 -71
  167. package/report-builder/forms-analyzer-dialog.d.ts +0 -91
  168. package/report-builder/forms-analyzer.d.ts +0 -102
  169. package/report-builder/image-filter.d.ts +0 -25
  170. package/report-builder/image-group.d.ts +0 -69
  171. package/report-builder/index.d.ts +0 -24
  172. package/report-builder/index.metadata.json +0 -1
  173. package/report-builder/models.d.ts +0 -43
  174. package/report-builder/operations.d.ts +0 -45
  175. package/report-builder/package.json +0 -9
  176. package/report-builder/properties.d.ts +0 -365
  177. package/report-builder/public-api.d.ts +0 -26
  178. package/report-builder/quill-editor.d.ts +0 -113
  179. package/report-builder/renderer-widget.d.ts +0 -80
  180. package/report-builder/report-builder-drag-data.d.ts +0 -32
  181. package/report-builder/report-builder-module.d.ts +0 -23
  182. package/report-builder/report-builder-service.d.ts +0 -722
  183. package/report-builder/report-builder.d.ts +0 -36
  184. package/report-builder/theme-color-dialog.d.ts +0 -42
  185. package/report-builder/theme-color.d.ts +0 -108
  186. package/report-builder/tokens.d.ts +0 -24
  187. package/report-builder/toolbar-dialog.d.ts +0 -30
  188. package/report-builder/toolbar.d.ts +0 -48
  189. package/report-builder/utils.d.ts +0 -29
  190. package/report-builder/widgets-row-buttons.d.ts +0 -57
  191. package/report-builder/widgets-toolbar.d.ts +0 -44
@@ -1,97 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright (C) Gnucoop soc. coop.
4
- *
5
- * This file is part of the Advanced JSON forms (ajf).
6
- *
7
- * Advanced JSON forms (ajf) is free software: you can redistribute it and/or
8
- * modify it under the terms of the GNU Affero General Public License as
9
- * published by the Free Software Foundation, either version 3 of the License,
10
- * or (at your option) any later version.
11
- *
12
- * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,
13
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
15
- * General Public License for more details.
16
- *
17
- * You should have received a copy of the GNU Affero General Public License
18
- * along with Advanced JSON forms (ajf).
19
- * If not, see http://www.gnu.org/licenses/.
20
- *
21
- */
22
- import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';
23
- import { Subscription, timer } from 'rxjs';
24
- import { AjfReportBuilderService } from './report-builder-service';
25
- /**
26
- * this component manages the report text
27
- *
28
- * @export
29
- */
30
- export class AjfReportBuilderColumn {
31
- constructor(_service) {
32
- this._service = _service;
33
- /**
34
- * if true mouse event is on dragged status
35
- *
36
- * @memberOf AjfReportBuilderContent
37
- */
38
- this.showActions = false;
39
- this.layoutShow = false;
40
- // this boolean sign if is dragged a widget
41
- this.onDragged = false;
42
- this._onDraggedSub = Subscription.EMPTY;
43
- }
44
- addToList(event, idx, toColumn) {
45
- this.onDragEndHandler();
46
- if (event.dragData.fromColumn) {
47
- this._service.changePositionOnColumn(event, toColumn, idx);
48
- }
49
- else {
50
- this._service.addToColumn(event, toColumn, idx);
51
- }
52
- }
53
- /**
54
- * sign the start of mouse drag with 200 ms of delay
55
- *
56
- * @memberOf AjfReportBuilderContent
57
- */
58
- onDragStartHandler() {
59
- let s = timer(200).subscribe(() => {
60
- s.unsubscribe();
61
- this._service.dragStarted();
62
- });
63
- }
64
- /**
65
- * sign the end of mouse drag
66
- *
67
- * @memberOf AjfReportBuilderContent
68
- */
69
- onDragEndHandler() {
70
- this._service.dragEnded();
71
- }
72
- ngOnInit() {
73
- // this.widget = changes.widget.currentValue;
74
- this._onDraggedSub = this._service.onDragged.subscribe(x => {
75
- this.onDragged = x;
76
- });
77
- }
78
- ngOnDestroy() {
79
- this._onDraggedSub.unsubscribe();
80
- }
81
- }
82
- AjfReportBuilderColumn.decorators = [
83
- { type: Component, args: [{
84
- selector: 'ajf-column',
85
- template: "<ng-template [ngIf]=\"column.content != null\">\n <div class=\"ajf-column\"\n [ngClass]=\"{'ajf-is-on-over': showActions}\"\n (mouseenter)=\"showActions = true\"\n (mouseleave)=\"showActions = false\">\n <mat-list>\n <ng-template ngFor let-widget let-idx=\"index\" [ngForOf]=\"column.content\">\n\n <ng-template [ngIf]=\"!onDragged\">\n <ajf-report-builder-widgets-row-buttons\n cdkDrag\n [cdkDragData]=\"{fromColumn: column, fromIndex: idx, widget: widget, dropZones: ['widget']}\"\n [from]=\"'column'\"\n [fromWidget]=\"column\"\n [widget]=\"widget\"\n [position]=\"idx\"\n [child]=\"true\"\n (cdkDragStarted)=\"onDragStartHandler()\"\n (cdkDragEnded)=\"onDragEndHandler()\">\n </ajf-report-builder-widgets-row-buttons>\n </ng-template>\n <ajf-report-builder-renderer-widget [widget]=\"widget\"></ajf-report-builder-renderer-widget>\n </ng-template>\n </mat-list>\n </div>\n</ng-template>\n",
86
- encapsulation: ViewEncapsulation.None,
87
- changeDetection: ChangeDetectionStrategy.OnPush,
88
- styles: [".ajf-column{max-width:100%;max-height:100%;background:rgba(0,0,0,0);z-index:100}.ajf-column span{flex-direction:row;width:100%}.ajf-column .mat-list{padding:0}.ajf-column:hover span,.ajf-is-on-over span{visibility:visible !important;display:block !important}.ajf-column-drop-zone{margin:10%;height:50px;background-color:#fff;border:9px solid rgba(66,134,244,.6);border-radius:16px}mat-list{height:100%;padding:0}\n"]
89
- },] }
90
- ];
91
- AjfReportBuilderColumn.ctorParameters = () => [
92
- { type: AjfReportBuilderService }
93
- ];
94
- AjfReportBuilderColumn.propDecorators = {
95
- column: [{ type: Input }]
96
- };
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL3JlcG9ydC1idWlsZGVyL2NvbHVtbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFHSCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBR0wsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXpDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRWpFOzs7O0dBSUc7QUFRSCxNQUFNLE9BQU8sc0JBQXNCO0lBb0RqQyxZQUFvQixRQUFpQztRQUFqQyxhQUFRLEdBQVIsUUFBUSxDQUF5QjtRQW5EckQ7Ozs7V0FJRztRQUNILGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsMkNBQTJDO1FBQzNDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFVVixrQkFBYSxHQUFpQixZQUFZLENBQUMsS0FBSyxDQUFDO0lBK0JELENBQUM7SUE3QnpELFNBQVMsQ0FBQyxLQUFVLEVBQUUsR0FBVyxFQUFFLFFBQXlCO1FBQzFELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzVEO2FBQU07WUFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGdCQUFnQjtRQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUdELFFBQVE7UUFDTiw2Q0FBNkM7UUFFN0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDekQsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7O1lBdkVGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsK2pDQUEwQjtnQkFFMUIsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNoRDs7O1lBYk8sdUJBQXVCOzs7cUJBaUM1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IChDKSBHbnVjb29wIHNvYy4gY29vcC5cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSxcbiAqIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgQWZmZXJvXG4gKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikuXG4gKiBJZiBub3QsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvLlxuICpcbiAqL1xuXG5pbXBvcnQge0FqZkNvbHVtbldpZGdldH0gZnJvbSAnQGFqZi9jb3JlL3JlcG9ydHMnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3Vic2NyaXB0aW9uLCB0aW1lcn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7QWpmUmVwb3J0QnVpbGRlclNlcnZpY2V9IGZyb20gJy4vcmVwb3J0LWJ1aWxkZXItc2VydmljZSc7XG5cbi8qKlxuICogdGhpcyBjb21wb25lbnQgbWFuYWdlcyB0aGUgcmVwb3J0IHRleHRcbiAqXG4gKiBAZXhwb3J0XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FqZi1jb2x1bW4nLFxuICB0ZW1wbGF0ZVVybDogJ2NvbHVtbi5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2NvbHVtbi5jc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQWpmUmVwb3J0QnVpbGRlckNvbHVtbiBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgLyoqXG4gICAqIGlmIHRydWUgbW91c2UgZXZlbnQgaXMgb24gZHJhZ2dlZCBzdGF0dXNcbiAgICpcbiAgICogQG1lbWJlck9mIEFqZlJlcG9ydEJ1aWxkZXJDb250ZW50XG4gICAqL1xuICBzaG93QWN0aW9ucyA9IGZhbHNlO1xuXG4gIGxheW91dFNob3cgPSBmYWxzZTtcblxuICAvLyB0aGlzIGJvb2xlYW4gc2lnbiBpZiBpcyBkcmFnZ2VkIGEgd2lkZ2V0XG4gIG9uRHJhZ2dlZCA9IGZhbHNlO1xuXG5cbiAgLyoqXG4gICAqIGlzIHRoZSBhcnJheSBvZiB2YWx1ZXNcbiAgICpcbiAgICogQG1lbWJlck9mIFRhYmxlQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBjb2x1bW46IEFqZkNvbHVtbldpZGdldDtcblxuICBwcml2YXRlIF9vbkRyYWdnZWRTdWI6IFN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICBhZGRUb0xpc3QoZXZlbnQ6IGFueSwgaWR4OiBudW1iZXIsIHRvQ29sdW1uOiBBamZDb2x1bW5XaWRnZXQpIHtcbiAgICB0aGlzLm9uRHJhZ0VuZEhhbmRsZXIoKTtcbiAgICBpZiAoZXZlbnQuZHJhZ0RhdGEuZnJvbUNvbHVtbikge1xuICAgICAgdGhpcy5fc2VydmljZS5jaGFuZ2VQb3NpdGlvbk9uQ29sdW1uKGV2ZW50LCB0b0NvbHVtbiwgaWR4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc2VydmljZS5hZGRUb0NvbHVtbihldmVudCwgdG9Db2x1bW4sIGlkeCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqICBzaWduIHRoZSBzdGFydCBvZiBtb3VzZSBkcmFnIHdpdGggMjAwIG1zIG9mIGRlbGF5XG4gICAqXG4gICAqIEBtZW1iZXJPZiBBamZSZXBvcnRCdWlsZGVyQ29udGVudFxuICAgKi9cbiAgb25EcmFnU3RhcnRIYW5kbGVyKCk6IHZvaWQge1xuICAgIGxldCBzID0gdGltZXIoMjAwKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgcy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5fc2VydmljZS5kcmFnU3RhcnRlZCgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIHNpZ24gdGhlIGVuZCBvZiBtb3VzZSBkcmFnXG4gICAqXG4gICAqIEBtZW1iZXJPZiBBamZSZXBvcnRCdWlsZGVyQ29udGVudFxuICAgKi9cbiAgb25EcmFnRW5kSGFuZGxlcigpOiB2b2lkIHtcbiAgICB0aGlzLl9zZXJ2aWNlLmRyYWdFbmRlZCgpO1xuICB9XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3NlcnZpY2U6IEFqZlJlcG9ydEJ1aWxkZXJTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIHRoaXMud2lkZ2V0ID0gY2hhbmdlcy53aWRnZXQuY3VycmVudFZhbHVlO1xuXG4gICAgdGhpcy5fb25EcmFnZ2VkU3ViID0gdGhpcy5fc2VydmljZS5vbkRyYWdnZWQuc3Vic2NyaWJlKHggPT4ge1xuICAgICAgdGhpcy5vbkRyYWdnZWQgPSB4O1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fb25EcmFnZ2VkU3ViLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,159 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright (C) Gnucoop soc. coop.
4
- *
5
- * This file is part of the Advanced JSON forms (ajf).
6
- *
7
- * Advanced JSON forms (ajf) is free software: you can redistribute it and/or
8
- * modify it under the terms of the GNU Affero General Public License as
9
- * published by the Free Software Foundation, either version 3 of the License,
10
- * or (at your option) any later version.
11
- *
12
- * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,
13
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
15
- * General Public License for more details.
16
- *
17
- * You should have received a copy of the GNU Affero General Public License
18
- * along with Advanced JSON forms (ajf).
19
- * If not, see http://www.gnu.org/licenses/.
20
- *
21
- */
22
- import { validateExpression } from '@ajf/core/models';
23
- import { ChangeDetectionStrategy, Component, Input, ViewChild, ViewEncapsulation } from '@angular/core';
24
- import { Subscription, timer } from 'rxjs';
25
- import { AjfReportBuilderService } from './report-builder-service';
26
- import { sanitizeConditionString } from './utils';
27
- /**
28
- * This class will define an ajf builder builder condition editor
29
- * @implements : OnDestroy
30
- * @implements : AfterViewInit
31
- */
32
- export class AjfReportBuilderConditionEditor {
33
- /**
34
- * this constructor will init current condition by ajfBuilderservice
35
- * and init condition and availableFieldNames subscriptions
36
- */
37
- constructor(_service) {
38
- this._service = _service;
39
- this.isValid = false;
40
- this.names = [];
41
- // conditionText is a string
42
- this.conditionText = 'true';
43
- // operators is an array of any type that contains all allow operators
44
- this.operators = [
45
- '( )', '\' \'', '<', '<=', '==', '>=', '>', '!=', '!', '&&', '||', '+', '-', '*', '/', '%',
46
- 'true', 'false'
47
- ];
48
- this._conditionNamesSub = Subscription.EMPTY;
49
- }
50
- extractNames(formsVariables) {
51
- this.names.length = 0;
52
- for (let i = 0; i < formsVariables.length; i++) {
53
- this.names = this.names.concat(formsVariables[i].names);
54
- }
55
- }
56
- setCurrent(id, index) {
57
- this.currentId = id;
58
- this.appendText(this.formsVariables[id].names[index]);
59
- this.checkValidation();
60
- }
61
- /**
62
- * this method will return success if the current condtion is valid
63
- * @return boolean
64
- */
65
- validateCondition() {
66
- return validateExpression(this.conditionText, this.names);
67
- }
68
- // TODO complete the comment
69
- /**
70
- * this method will append text to json
71
- * @param text : string -
72
- * @param goBackNum : number -
73
- */
74
- appendText(text, _goBackNum) {
75
- if (text == null || this.conditionTextArea == null) {
76
- return;
77
- }
78
- let el = this.conditionTextArea.nativeElement;
79
- let sStart = Math.min(el.selectionStart, el.selectionEnd);
80
- let sEnd = Math.max(el.selectionStart, el.selectionEnd);
81
- let startingString = this.conditionText.substr(0, sStart);
82
- let endingString = this.conditionText.substr(sEnd);
83
- let initialLenght = startingString.length;
84
- let newStr = '';
85
- startingString = sanitizeConditionString(startingString);
86
- endingString = sanitizeConditionString(endingString);
87
- sStart +=
88
- startingString.length - initialLenght + text.length + (startingString.length > 0 ? 2 : 1);
89
- newStr = startingString.length > 0 ? `${startingString} ` : '';
90
- this.conditionText = `${newStr}${text} ${endingString}`;
91
- const s = timer(0).subscribe(() => {
92
- if (s && !s.closed) {
93
- s.unsubscribe();
94
- }
95
- if (el.createTextRange) {
96
- let range = el.createTextRange();
97
- range.move('character', sStart);
98
- range.select();
99
- }
100
- else {
101
- if (el.selectionStart) {
102
- el.focus();
103
- el.setSelectionRange(sStart, sStart);
104
- }
105
- else {
106
- el.focus();
107
- }
108
- }
109
- });
110
- }
111
- checkValidation() {
112
- this.isValid = this.validateCondition();
113
- if (this.isValid) {
114
- this.saveCondition();
115
- }
116
- }
117
- /**
118
- * this method will save current condition
119
- */
120
- saveCondition() {
121
- this._service.saveCondition(this.conditionText);
122
- }
123
- ngOnInit() {
124
- this.conditionText = this.visibility.condition;
125
- this.isValid = true;
126
- if (this.conditionText == 'true') {
127
- this.conditionText = '';
128
- }
129
- this._conditionNamesSub = this._service.conditionNames.subscribe((x) => {
130
- this.formsVariables = x;
131
- if (x != null) {
132
- this.extractNames(this.formsVariables);
133
- }
134
- });
135
- }
136
- /**
137
- * this method will destroy a conditionSubscriptions
138
- */
139
- ngOnDestroy() {
140
- this._conditionNamesSub.unsubscribe();
141
- }
142
- }
143
- AjfReportBuilderConditionEditor.decorators = [
144
- { type: Component, args: [{
145
- selector: 'ajf-report-builder-condition-editor',
146
- template: "<ng-template [ngIf]=\"formsVariables != null && visibility != null\">\n <mat-card>\n <mat-card-header>\n <mat-card-title>condition of visibility</mat-card-title>\n <mat-card-subtitle>\n <ng-template [ngIf]=\"visibility\">\n {{visibility.condition}}\n </ng-template>\n </mat-card-subtitle>\n </mat-card-header>\n <mat-card-content>\n <br />\n <form>\n <mat-select\n [(ngModel)]=\"a\"\n [ngModelOptions]=\"{standalone: true}\"\n placeholder=\"Select condition\"\n >\n <ng-template ngFor let-form let-id=\"index\" [ngForOf]=\"formsVariables\">\n <mat-option\n *ngFor=\"let label of form.labels;let i = index;\"\n [value]=\"label\"\n (click)=\"setCurrent(id, i)\"\n >\n {{ id}}: {{ label }}\n </mat-option>\n </ng-template>\n </mat-select>\n <mat-select\n [(ngModel)]=\"b\"\n [ngModelOptions]=\"{standalone: true}\"\n placeholder=\"Select operator\"\n >\n <mat-option\n *ngFor=\"let operator of operators\"\n (click)=\"appendText(operator);\"\n >\n {{ operator }}\n </mat-option>\n </mat-select>\n </form>\n </mat-card-content>\n <mat-card-actions>\n <ng-template [ngIf]=\"!isValid\">\n <ng-container\n >{{'Invalid condition! Please check syntax.'|transloco}}</ng-container\n >\n </ng-template>\n <textarea\n #conditionTextArea\n [(ngModel)]=\"conditionText\"\n (keyup)=\"checkValidation()\"\n >\n </textarea>\n </mat-card-actions>\n </mat-card>\n</ng-template>\n",
147
- encapsulation: ViewEncapsulation.None,
148
- changeDetection: ChangeDetectionStrategy.OnPush,
149
- styles: ["ajf-report-builder-condition-editor textarea{width:100%}\n"]
150
- },] }
151
- ];
152
- AjfReportBuilderConditionEditor.ctorParameters = () => [
153
- { type: AjfReportBuilderService }
154
- ];
155
- AjfReportBuilderConditionEditor.propDecorators = {
156
- visibility: [{ type: Input }],
157
- conditionTextArea: [{ type: ViewChild, args: ['conditionTextArea', { static: false },] }]
158
- };
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWVkaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9yZXBvcnQtYnVpbGRlci9jb25kaXRpb24tZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUVILE9BQU8sRUFBZSxrQkFBa0IsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2xFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFHTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxZQUFZLEVBQUUsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBR3pDLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQVVoRDs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLCtCQUErQjtJQXlCMUM7OztPQUdHO0lBQ0gsWUFBb0IsUUFBaUM7UUFBakMsYUFBUSxHQUFSLFFBQVEsQ0FBeUI7UUF6QnJELFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsVUFBSyxHQUFhLEVBQUUsQ0FBQztRQUdyQiw0QkFBNEI7UUFDNUIsa0JBQWEsR0FBRyxNQUFNLENBQUM7UUFRdkIsdUVBQXVFO1FBQ3ZFLGNBQVMsR0FBYTtZQUNwQixLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO1lBQzFGLE1BQU0sRUFBRSxPQUFPO1NBQ2hCLENBQUM7UUFFTSx1QkFBa0IsR0FBaUIsWUFBWSxDQUFDLEtB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QUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNEOztPQUVHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QyxDQUFDOzs7WUE5SUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxxQ0FBcUM7Z0JBQy9DLDR1REFBb0M7Z0JBRXBDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7OztZQVZPLHVCQUF1Qjs7O3lCQWlCNUIsS0FBSztnQ0FjTCxTQUFTLFNBQUMsbUJBQW1CLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IChDKSBHbnVjb29wIHNvYy4gY29vcC5cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSxcbiAqIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgQWZmZXJvXG4gKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikuXG4gKiBJZiBub3QsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvLlxuICpcbiAqL1xuXG5pbXBvcnQge0FqZkNvbmRpdGlvbiwgdmFsaWRhdGVFeHByZXNzaW9ufSBmcm9tICdAYWpmL2NvcmUvbW9kZWxzJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U3Vic2NyaXB0aW9uLCB0aW1lcn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7QWpmRm9ybVZhcmlhYmxlc30gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHtBamZSZXBvcnRCdWlsZGVyU2VydmljZX0gZnJvbSAnLi9yZXBvcnQtYnVpbGRlci1zZXJ2aWNlJztcbmltcG9ydCB7c2FuaXRpemVDb25kaXRpb25TdHJpbmd9IGZyb20gJy4vdXRpbHMnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FqZi1yZXBvcnQtYnVpbGRlci1jb25kaXRpb24tZWRpdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICdjb25kaXRpb24tZWRpdG9yLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnY29uZGl0aW9uLWVkaXRvci5jc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG4vKipcbiAqIFRoaXMgY2xhc3Mgd2lsbCBkZWZpbmUgYW4gYWpmIGJ1aWxkZXIgYnVpbGRlciBjb25kaXRpb24gZWRpdG9yXG4gKiBAaW1wbGVtZW50cyA6IE9uRGVzdHJveVxuICogQGltcGxlbWVudHMgOiBBZnRlclZpZXdJbml0XG4gKi9cbmV4cG9ydCBjbGFzcyBBamZSZXBvcnRCdWlsZGVyQ29uZGl0aW9uRWRpdG9yIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSB2aXNpYmlsaXR5OiBBamZDb25kaXRpb247XG5cbiAgZm9ybXNWYXJpYWJsZXM6IEFqZkZvcm1WYXJpYWJsZXNbXTtcbiAgaXNWYWxpZCA9IGZhbHNlO1xuICBuYW1lczogc3RyaW5nW10gPSBbXTtcbiAgY3VycmVudElkOiBudW1iZXI7XG5cbiAgLy8gY29uZGl0aW9uVGV4dCBpcyBhIHN0cmluZ1xuICBjb25kaXRpb25UZXh0ID0gJ3RydWUnO1xuXG4gIGE6IGFueTtcbiAgYjogYW55O1xuXG5cbiAgQFZpZXdDaGlsZCgnY29uZGl0aW9uVGV4dEFyZWEnLCB7c3RhdGljOiBmYWxzZX0pIGNvbmRpdGlvblRleHRBcmVhOiBhbnk7XG5cbiAgLy8gIG9wZXJhdG9ycyBpcyBhbiBhcnJheSBvZiBhbnkgdHlwZSB0aGF0IGNvbnRhaW5zIGFsbCBhbGxvdyBvcGVyYXRvcnNcbiAgb3BlcmF0b3JzOiBzdHJpbmdbXSA9IFtcbiAgICAnKCApJywgJ1xcJyBcXCcnLCAnPCcsICc8PScsICc9PScsICc+PScsICc+JywgJyE9JywgJyEnLCAnJiYnLCAnfHwnLCAnKycsICctJywgJyonLCAnLycsICclJyxcbiAgICAndHJ1ZScsICdmYWxzZSdcbiAgXTtcblxuICBwcml2YXRlIF9jb25kaXRpb25OYW1lc1N1YjogU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gIC8qKlxuICAgKiB0aGlzIGNvbnN0cnVjdG9yIHdpbGwgaW5pdCBjdXJyZW50IGNvbmRpdGlvbiBieSBhamZCdWlsZGVyc2VydmljZVxuICAgKiBhbmQgaW5pdCBjb25kaXRpb24gYW5kIGF2YWlsYWJsZUZpZWxkTmFtZXMgc3Vic2NyaXB0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc2VydmljZTogQWpmUmVwb3J0QnVpbGRlclNlcnZpY2UpIHt9XG4gIGV4dHJhY3ROYW1lcyhmb3Jtc1ZhcmlhYmxlczogQWpmRm9ybVZhcmlhYmxlc1tdKSB7XG4gICAgdGhpcy5uYW1lcy5sZW5ndGggPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9ybXNWYXJpYWJsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMubmFtZXMgPSB0aGlzLm5hbWVzLmNvbmNhdChmb3Jtc1ZhcmlhYmxlc1tpXS5uYW1lcyk7XG4gICAgfVxuICB9XG5cbiAgc2V0Q3VycmVudChpZDogbnVtYmVyLCBpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5jdXJyZW50SWQgPSBpZDtcbiAgICB0aGlzLmFwcGVuZFRleHQodGhpcy5mb3Jtc1ZhcmlhYmxlc1tpZF0ubmFtZXNbaW5kZXhdKTtcbiAgICB0aGlzLmNoZWNrVmFsaWRhdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIHN1Y2Nlc3MgaWYgdGhlIGN1cnJlbnQgY29uZHRpb24gaXMgdmFsaWRcbiAgICogQHJldHVybiBib29sZWFuXG4gICAqL1xuICB2YWxpZGF0ZUNvbmRpdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsaWRhdGVFeHByZXNzaW9uKHRoaXMuY29uZGl0aW9uVGV4dCwgdGhpcy5uYW1lcyk7XG4gIH1cblxuICAvLyBUT0RPIGNvbXBsZXRlIHRoZSBjb21tZW50XG4gIC8qKlxuICAgKiB0aGlzIG1ldGhvZCB3aWxsIGFwcGVuZCB0ZXh0IHRvIGpzb25cbiAgICogQHBhcmFtIHRleHQgICAgICA6IHN0cmluZyAtXG4gICAqIEBwYXJhbSBnb0JhY2tOdW0gOiBudW1iZXIgLVxuICAgKi9cbiAgYXBwZW5kVGV4dCh0ZXh0OiBzdHJpbmcsIF9nb0JhY2tOdW0/OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGV4dCA9PSBudWxsIHx8IHRoaXMuY29uZGl0aW9uVGV4dEFyZWEgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBlbCA9IHRoaXMuY29uZGl0aW9uVGV4dEFyZWEubmF0aXZlRWxlbWVudDtcbiAgICBsZXQgc1N0YXJ0OiBudW1iZXIgPSBNYXRoLm1pbihlbC5zZWxlY3Rpb25TdGFydCwgZWwuc2VsZWN0aW9uRW5kKTtcbiAgICBsZXQgc0VuZDogbnVtYmVyID0gTWF0aC5tYXgoZWwuc2VsZWN0aW9uU3RhcnQsIGVsLnNlbGVjdGlvbkVuZCk7XG4gICAgbGV0IHN0YXJ0aW5nU3RyaW5nOiBzdHJpbmcgPSB0aGlzLmNvbmRpdGlvblRleHQuc3Vic3RyKDAsIHNTdGFydCk7XG4gICAgbGV0IGVuZGluZ1N0cmluZzogc3RyaW5nID0gdGhpcy5jb25kaXRpb25UZXh0LnN1YnN0cihzRW5kKTtcbiAgICBsZXQgaW5pdGlhbExlbmdodDogbnVtYmVyID0gc3RhcnRpbmdTdHJpbmcubGVuZ3RoO1xuICAgIGxldCBuZXdTdHIgPSAnJztcblxuICAgIHN0YXJ0aW5nU3RyaW5nID0gc2FuaXRpemVDb25kaXRpb25TdHJpbmcoc3RhcnRpbmdTdHJpbmcpO1xuICAgIGVuZGluZ1N0cmluZyA9IHNhbml0aXplQ29uZGl0aW9uU3RyaW5nKGVuZGluZ1N0cmluZyk7XG4gICAgc1N0YXJ0ICs9XG4gICAgICAgIHN0YXJ0aW5nU3RyaW5nLmxlbmd0aCAtIGluaXRpYWxMZW5naHQgKyB0ZXh0Lmxlbmd0aCArIChzdGFydGluZ1N0cmluZy5sZW5ndGggPiAwID8gMiA6IDEpO1xuICAgIG5ld1N0ciA9IHN0YXJ0aW5nU3RyaW5nLmxlbmd0aCA+IDAgPyBgJHtzdGFydGluZ1N0cmluZ30gYCA6ICcnO1xuICAgIHRoaXMuY29uZGl0aW9uVGV4dCA9IGAke25ld1N0cn0ke3RleHR9ICR7ZW5kaW5nU3RyaW5nfWA7XG5cbiAgICBjb25zdCBzID0gdGltZXIoMCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmIChzICYmICFzLmNsb3NlZCkge1xuICAgICAgICBzLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgICBpZiAoZWwuY3JlYXRlVGV4dFJhbmdlKSB7XG4gICAgICAgIGxldCByYW5nZSA9IGVsLmNyZWF0ZVRleHRSYW5nZSgpO1xuICAgICAgICByYW5nZS5tb3ZlKCdjaGFyYWN0ZXInLCBzU3RhcnQpO1xuICAgICAgICByYW5nZS5zZWxlY3QoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChlbC5zZWxlY3Rpb25TdGFydCkge1xuICAgICAgICAgIGVsLmZvY3VzKCk7XG4gICAgICAgICAgZWwuc2V0U2VsZWN0aW9uUmFuZ2Uoc1N0YXJ0LCBzU3RhcnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVsLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNoZWNrVmFsaWRhdGlvbigpIHtcbiAgICB0aGlzLmlzVmFsaWQgPSB0aGlzLnZhbGlkYXRlQ29uZGl0aW9uKCk7XG4gICAgaWYgKHRoaXMuaXNWYWxpZCkge1xuICAgICAgdGhpcy5zYXZlQ29uZGl0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHRoaXMgbWV0aG9kIHdpbGwgc2F2ZSBjdXJyZW50IGNvbmRpdGlvblxuICAgKi9cbiAgc2F2ZUNvbmRpdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zZXJ2aWNlLnNhdmVDb25kaXRpb24odGhpcy5jb25kaXRpb25UZXh0KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY29uZGl0aW9uVGV4dCA9IHRoaXMudmlzaWJpbGl0eS5jb25kaXRpb247XG4gICAgdGhpcy5pc1ZhbGlkID0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLmNvbmRpdGlvblRleHQgPT0gJ3RydWUnKSB7XG4gICAgICB0aGlzLmNvbmRpdGlvblRleHQgPSAnJztcbiAgICB9XG5cbiAgICB0aGlzLl9jb25kaXRpb25OYW1lc1N1YiA9IHRoaXMuX3NlcnZpY2UuY29uZGl0aW9uTmFtZXMuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICB0aGlzLmZvcm1zVmFyaWFibGVzID0geDtcbiAgICAgIGlmICh4ICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5leHRyYWN0TmFtZXModGhpcy5mb3Jtc1ZhcmlhYmxlcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIHRoaXMgbWV0aG9kIHdpbGwgZGVzdHJveSBhIGNvbmRpdGlvblN1YnNjcmlwdGlvbnNcbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2NvbmRpdGlvbk5hbWVzU3ViLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,255 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright (C) Gnucoop soc. coop.
4
- *
5
- * This file is part of the Advanced JSON forms (ajf).
6
- *
7
- * Advanced JSON forms (ajf) is free software: you can redistribute it and/or
8
- * modify it under the terms of the GNU Affero General Public License as
9
- * published by the Free Software Foundation, either version 3 of the License,
10
- * or (at your option) any later version.
11
- *
12
- * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,
13
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
15
- * General Public License for more details.
16
- *
17
- * You should have received a copy of the GNU Affero General Public License
18
- * along with Advanced JSON forms (ajf).
19
- * If not, see http://www.gnu.org/licenses/.
20
- *
21
- */
22
- import { AjfWidgetType } from '@ajf/core/reports';
23
- import { deepCopy } from '@ajf/core/utils';
24
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewEncapsulation } from '@angular/core';
25
- import { Subscription, timer } from 'rxjs';
26
- import { AjfReportBuilderService } from './report-builder-service';
27
- /**
28
- * manage the content page
29
- *
30
- * @export
31
- */
32
- export class AjfReportBuilderContent {
33
- constructor(_service, _cdRef) {
34
- this._service = _service;
35
- this._cdRef = _cdRef;
36
- // this boolean sign if is dragged a widget
37
- this.onDragged = false;
38
- /**
39
- * observe the status of the fixed zoom
40
- *
41
- * @memberOf AjfReportBuilderContent
42
- */
43
- this.fixedZoom = false;
44
- // this boolean sign if widget is in drag enter status
45
- this.onDragEnter = {};
46
- this.show = false;
47
- // this array contains all widget locate in header zone
48
- this.headerWidgets = [];
49
- // this array contains all widget locate in content zone
50
- this.contentWidgets = [];
51
- // this array contains all widget locate in footer zone
52
- this.footerWidgets = [];
53
- this.onOver = false;
54
- // this is the current widget
55
- this.currentWidget = null;
56
- /**
57
- * if true mouse event is on dragged status
58
- *
59
- * @memberOf AjfReportBuilderContent
60
- */
61
- this.showActions = false;
62
- this._onDraggedSub = Subscription.EMPTY;
63
- this._fixedZoomSub = Subscription.EMPTY;
64
- this._onDragEnterSub = Subscription.EMPTY;
65
- this._headerWidgetsSub = Subscription.EMPTY;
66
- this._contentWidgetsSub = Subscription.EMPTY;
67
- this._footerWidgetsSub = Subscription.EMPTY;
68
- this._onOverSub = Subscription.EMPTY;
69
- this._currentWidgetSub = Subscription.EMPTY;
70
- this.headerStyles = this._service.headerStyles;
71
- this.contentStyles = this._service.contentStyles;
72
- this.footerStyles = this._service.footerStyles;
73
- }
74
- onMouseOver() {
75
- this.showActions = true;
76
- this._service.overStarted();
77
- }
78
- onMouseLeave() {
79
- this.showActions = false;
80
- this._service.overEnded();
81
- }
82
- canDropPredicate(dropZones) {
83
- return item => {
84
- for (let i = 0; i < item.data.dropZones.length; i++) {
85
- if (dropZones.indexOf(item.data.dropZones[i]) > -1) {
86
- return true;
87
- }
88
- }
89
- return false;
90
- };
91
- }
92
- isLayout(widget) {
93
- return widget.widgetType === AjfWidgetType.Layout;
94
- }
95
- /**
96
- * sign the start of mouse drag with 200 ms of delay
97
- *
98
- * @memberOf AjfReportBuilderContent
99
- */
100
- onDragStartHandler() {
101
- let s = timer(200).subscribe(() => {
102
- if (s != null) {
103
- s.unsubscribe();
104
- }
105
- this._service.dragStarted();
106
- });
107
- }
108
- /**
109
- * sign the end of mouse drag
110
- *
111
- * @memberOf AjfReportBuilderContent
112
- */
113
- onDragEndHandler() {
114
- this._service.dragEnded();
115
- }
116
- /**
117
- * sign the enter of mouse drag
118
- *
119
- * @memberOf AjfReportBuilderContent
120
- */
121
- onDragEnterHandler(array, index) {
122
- if (index == null) {
123
- return;
124
- }
125
- this._service.dragEnter(array, index);
126
- }
127
- /**
128
- * sign the leave of mouse drag
129
- *
130
- * @memberOf AjfReportBuilderContent
131
- */
132
- onDragLeaveHandler() {
133
- this._service.dragLeave();
134
- }
135
- /**
136
- * return true if array and index is === with array and index of onDragEnter
137
- *
138
- * @param array
139
- * @param index
140
- *
141
- * @memberOf AjfReportBuilderContent
142
- */
143
- onDragEnterCheck(array, index) {
144
- if ((array === this.onDragEnter.array) &&
145
- ((index === this.onDragEnter.index) || (index === -1))) {
146
- return true;
147
- }
148
- else {
149
- return false;
150
- }
151
- }
152
- /**
153
- * remove widget element from type array in idx position
154
- *
155
- * @param type can be header content or footer
156
- * @param idx
157
- *
158
- * @memberOf AjfReportBuilderContent
159
- */
160
- remove(type, idx) {
161
- this._service.remove(type, idx);
162
- }
163
- /**
164
- * add widget element into type array in idx position
165
- *
166
- * @param type
167
- * @param event
168
- *
169
- * @memberOf AjfReportBuilderContent
170
- */
171
- addToList(arrayTo, event, to) {
172
- this.onDragEndHandler();
173
- this._service.setOrigin(arrayTo);
174
- const itemData = event.item.data;
175
- if (itemData.fromColumn != null) {
176
- this._service.removeWidgetToColumn(itemData.fromColumn, itemData.fromIndex);
177
- this.currentWidget = itemData.widget;
178
- }
179
- else if (itemData.widget != null) {
180
- this.remove(itemData.arrayFrom, itemData.from);
181
- this.currentWidget = itemData.widget;
182
- }
183
- else if (itemData.json != null && itemData.json !== '') {
184
- this.currentWidget = deepCopy(itemData.json);
185
- }
186
- else {
187
- let obj = { 'widgetType': AjfWidgetType[itemData.widgetType] };
188
- this.currentWidget = deepCopy(obj);
189
- }
190
- this.onDragEndHandler();
191
- if (this.currentWidget != null) {
192
- switch (arrayTo) {
193
- case 'header':
194
- this._service.addHeaderWidget(this.currentWidget, to);
195
- break;
196
- case 'content':
197
- this._service.addContentWidget(this.currentWidget, to);
198
- break;
199
- case 'footer':
200
- this._service.addfooterWidget(this.currentWidget, to);
201
- break;
202
- }
203
- }
204
- this.onDragLeaveHandler();
205
- }
206
- ngOnInit() {
207
- this._headerWidgetsSub = this._service.headerWidgets.subscribe(x => {
208
- this.headerWidgets = x.widgets;
209
- });
210
- this._contentWidgetsSub = this._service.contentWidgets.subscribe(x => {
211
- this.contentWidgets = x.widgets;
212
- });
213
- this._footerWidgetsSub = this._service.footerWidgets.subscribe(x => {
214
- this.footerWidgets = x.widgets;
215
- });
216
- this._onDraggedSub = this._service.onDragged.subscribe(x => {
217
- this.onDragged = x;
218
- });
219
- this._fixedZoomSub = this._service.fixedZoom.subscribe(bool => {
220
- this.fixedZoom = bool;
221
- });
222
- this._onDragEnterSub = this._service.onDragEnter.subscribe(x => {
223
- this.onDragEnter = x;
224
- });
225
- this._onOverSub = this._service.onOver.subscribe(x => {
226
- this.onOver = x;
227
- });
228
- }
229
- ngAfterViewChecked() {
230
- this._cdRef.detectChanges();
231
- }
232
- ngOnDestroy() {
233
- [this._headerWidgetsSub, this._contentWidgetsSub, this._footerWidgetsSub,
234
- this._currentWidgetSub, this._onDraggedSub, this._fixedZoomSub, this._onOverSub,
235
- this._onDragEnterSub]
236
- .forEach(s => {
237
- s.unsubscribe();
238
- });
239
- }
240
- }
241
- AjfReportBuilderContent.decorators = [
242
- { type: Component, args: [{
243
- selector: 'ajf-report-builder-content',
244
- template: "<div\n class=\"ajf-overlay\"\n [ngClass]=\"{'ajf-drag-mode': onDragged, 'ajf-zoom-mode': fixedZoom}\"\n [applyStyles]=\"reportStyles|async\"\n (mouseenter)=\"show = true\"\n (mouseleave)=\"show = false\"\n>\n <div\n class=\"ajf-header\"\n [ngClass]=\"{'ajf-is-on-over': onDragged || show}\"\n [applyStyles]=\"(headerStyles|async)\"\n >\n <mat-list *ngFor=\"let t of headerWidgets; let i = index\">\n <div\n cdkDropList\n class=\"ajf-drop-zone\"\n [ngClass]=\"{'ajf-show': true}\"\n [cdkDropListEnterPredicate]=\"canDropPredicate(['widget','column'])\"\n (cdkDropListDropped)=\"addToList('header', $event, i);\"\n (dragenter)=\"onDragEnterHandler('header', i)\"\n (dragleave)=\"onDragLeaveHandler()\"\n ></div>\n <ajf-report-builder-widgets-row-buttons\n cdkDrag\n [cdkDragData]=\"{widget: t,fromIndex: i,arrayFrom: 'header', dropZones: ['widget','column']}\"\n [style.display]=\"(showActions || onDragged)? 'block' : 'none'\"\n [from]=\"'header'\"\n [widget]=\"t\"\n [position]=\"i\"\n (cdkDragStarted)=\"onDragStartHandler();\"\n (cdkDragEnded)=\"onDragEndHandler()\"\n >\n </ajf-report-builder-widgets-row-buttons>\n <ajf-report-builder-renderer-widget\n [widget]=\"t\"\n [position]=\"i\"\n [section]=\"'header'\"\n (currentWidget)=\"currentWidget\"\n ></ajf-report-builder-renderer-widget>\n </mat-list>\n <div\n cdkDropList\n class=\"ajf-drop-zone-container\"\n [ngClass]=\"{'ajf-show': true}\"\n [cdkDropListEnterPredicate]=\"canDropPredicate(['header','widget','column'])\"\n (cdkDropListDropped)=\"addToList('header', $event)\"\n (dragenter)=\"onDragEnterHandler('header', headerWidgets?.length)\"\n (dragleave)=\"onDragLeaveHandler()\"\n ></div>\n </div>\n <div\n class=\"ajf-content\"\n [ngClass]=\"{'ajf-is-on-over': onDragged || show}\"\n [applyStyles]=\"contentStyles|async\"\n >\n <mat-list *ngFor=\"let t of contentWidgets; let i = index\">\n <div\n cdkDropList\n class=\"ajf-drop-zone\"\n [ngClass]=\"{'ajf-show': true}\"\n [cdkDropListEnterPredicate]=\"canDropPredicate(['widget','column'])\"\n (cdkDropListDropped)=\"addToList('content', $event, i)\"\n (dragenter)=\"onDragEnterHandler('content', i)\"\n (dragleave)=\"onDragLeaveHandler()\"\n ></div>\n <ajf-report-builder-widgets-row-buttons\n cdkDrag\n [cdkDragData]=\"{widget: t, fromIndex: i, arrayFrom: 'content', dropZones: ['widget','column']}\"\n [style.display]=\"showActions ? 'block' : 'none'\"\n [from]=\"'content'\"\n [widget]=\"t\"\n [position]=\"i\"\n (cdkDragStarted)=\"onDragStartHandler()\"\n (cdkDragEnded)=\"onDragEndHandler();\"\n >\n </ajf-report-builder-widgets-row-buttons>\n <ajf-report-builder-renderer-widget\n [widget]=\"t\"\n [position]=\"i\"\n [section]=\"'content'\"\n (currentWidget)=\"currentWidget\"\n ></ajf-report-builder-renderer-widget>\n </mat-list>\n <div\n cdkDropList\n class=\"ajf-drop-zone-container\"\n [ngClass]=\"{'ajf-show': onDragged}\"\n [cdkDropListEnterPredicate]=\"canDropPredicate(['content','widget','column'])\"\n (cdkDropListDropped)=\"addToList('content', $event)\"\n (dragenter)=\"onDragEnterHandler('content', contentWidgets?.length)\"\n (dragleave)=\"onDragLeaveHandler()\"\n >\n <label>{{'Drop here'|transloco}}</label>\n </div>\n </div>\n <div\n class=\"ajf-footer\"\n [ngClass]=\"{'ajf-is-on-over': onDragged || show}\"\n [applyStyles]=\"footerStyles|async\"\n >\n <mat-list *ngFor=\"let t of footerWidgets; let i = index\">\n <div\n cdkDropList\n class=\"ajf-drop-zone\"\n [ngClass]=\"{'ajf-show': true}\"\n [cdkDropListEnterPredicate]=\"canDropPredicate(['widget','column'])\"\n (cdkDropListDropped)=\"addToList('footer', $event, i)\"\n (dragenter)=\"onDragEnterHandler('footer', i)\"\n (dragleave)=\"onDragLeaveHandler()\"\n ></div>\n <ajf-report-builder-widgets-row-buttons\n cdkDrag\n [cdkDragData]=\"{widget: t, fromIndex: i, arrayFrom: 'footer', dropZones: ['widget','column']}\"\n [style.display]=\"showActions ? 'block' : 'none'\"\n [from]=\"'footer'\"\n [widget]=\"t\"\n [position]=\"i\"\n (cdkDragStarted)=\"onDragStartHandler()\"\n (cdkDragEnded)=\"onDragEndHandler()\"\n >\n </ajf-report-builder-widgets-row-buttons>\n <ajf-report-builder-renderer-widget\n [widget]=\"t\"\n [position]=\"i\"\n [section]=\"'footer'\"\n (currentWidget)=\"currentWidget\"\n ></ajf-report-builder-renderer-widget>\n </mat-list>\n <div\n cdkDropList\n class=\"ajf-drop-zone-container\"\n [ngClass]=\"{'ajf-show': onDragged}\"\n [cdkDropListEnterPredicate]=\"canDropPredicate(['footer','widget','column'])\"\n (cdkDropListDropped)=\"addToList('footer', $event)\"\n (dragenter)=\"onDragEnterHandler('footer', headerWidgets?.length)\"\n (dragleave)=\"onDragLeaveHandler()\"\n >\n <label>{{'Drop here'|transloco}}</label>\n </div>\n </div>\n</div>\n",
245
- encapsulation: ViewEncapsulation.None,
246
- changeDetection: ChangeDetectionStrategy.OnPush,
247
- host: { '(mouseover)': 'onMouseOver()', '(mouseleave)': 'onMouseLeave()' },
248
- styles: ["ajf-report-builder-content{text-align:center;display:block;margin-bottom:300px}ajf-report-builder-content .ajf-overlay.ajf-drag-mode{max-height:700px;margin-top:50px;background-color:beige}ajf-report-builder-content .ajf-drag-mode{overflow:scroll;zoom:50%}ajf-report-builder-content .ajf-drag-mode .ajf-header,ajf-report-builder-content .ajf-drag-mode .ajf-content,ajf-report-builder-content .ajf-drag-mode .ajf-footer{margin-bottom:20px;border:23px solid rgba(66,134,244,.2)}ajf-report-builder-content .ajf-drag-mode .ajf-header .ajf-drop-zone,ajf-report-builder-content .ajf-drag-mode .ajf-content .ajf-drop-zone,ajf-report-builder-content .ajf-drag-mode .ajf-footer .ajf-drop-zone{width:auto;background-color:rgba(66,134,244,.2);border:23px solid #fff;position:relative;min-height:50px !important;z-index:0;opacity:1}ajf-report-builder-content .ajf-drag-mode .ajf-header .ajf-drop-zone-container,ajf-report-builder-content .ajf-drag-mode .ajf-content .ajf-drop-zone-container,ajf-report-builder-content .ajf-drag-mode .ajf-footer .ajf-drop-zone-container{background-color:rgba(66,134,244,.2) !important;border:23px solid #fff !important}ajf-report-builder-content .ajf-drag-mode .ajf-header,ajf-report-builder-content .ajf-drag-mode .ajf-footer{border:23px solid rgba(255,102,102,.4) !important}ajf-report-builder-content .ajf-drag-mode .ajf-header .ajf-drop-zone-container,ajf-report-builder-content .ajf-drag-mode .ajf-footer .ajf-drop-zone-container{background-color:rgba(255,102,102,.4) !important}ajf-report-builder-content .ajf-drag-mode .ajf-header .ajf-drop-zone,ajf-report-builder-content .ajf-drag-mode .ajf-footer .ajf-drop-zone{background-color:rgba(255,102,102,.4) !important}ajf-report-builder-content .ajf-drag-mode .ajf-drop-zone-container{background-color:#000;border:16px solid #fff;position:relative;opacity:0;z-index:0;min-height:50px !important;display:none !important}ajf-report-builder-content .ajf-zoom-mode{zoom:50%}ajf-report-builder-content .ajf-header,ajf-report-builder-content .ajf-content,ajf-report-builder-content .ajf-footer{height:100%;min-height:50px;position:relative;text-align:center;display:block}ajf-report-builder-content .ajf-header .mat-list,ajf-report-builder-content .ajf-content .mat-list,ajf-report-builder-content .ajf-footer .mat-list{padding:0}ajf-report-builder-content .ajf-header .ajf-zoom:hover,ajf-report-builder-content .ajf-content .ajf-zoom:hover,ajf-report-builder-content .ajf-footer .ajf-zoom:hover{padding-bottom:100px;overflow-y:scroll}ajf-report-builder-content .ajf-content:hover{background-color:rgba(66,134,244,.2) !important}ajf-report-builder-content .ajf-header:hover,ajf-report-builder-content .ajf-footer:hover{background-color:rgba(255,102,102,.4)}ajf-report-builder-content .ajf-header:hover,ajf-report-builder-content .ajf-content:hover,ajf-report-builder-content .ajf-footer:hover,ajf-report-builder-content .ajf-is-on-over{border:3px dotted #3a7999}ajf-report-builder-content .ajf-header:hover label,ajf-report-builder-content .ajf-content:hover label,ajf-report-builder-content .ajf-footer:hover label,ajf-report-builder-content .ajf-is-on-over label{visibility:visible !important;opacity:.4;display:block !important}ajf-report-builder-content .ajf-header:hover .ajf-drop-zone-container,ajf-report-builder-content .ajf-content:hover .ajf-drop-zone-container,ajf-report-builder-content .ajf-footer:hover .ajf-drop-zone-container,ajf-report-builder-content .ajf-is-on-over .ajf-drop-zone-container{display:block !important}ajf-report-builder-content .ajf-header:hover mat-list button,ajf-report-builder-content .ajf-content:hover mat-list button,ajf-report-builder-content .ajf-footer:hover mat-list button,ajf-report-builder-content .ajf-is-on-over mat-list button{display:inline}ajf-report-builder-content .ajf-my-content{width:100%;white-space:nowrap;overflow-y:auto}ajf-report-builder-content .ajf-show,ajf-report-builder-content .ajf-on-drag-over{opacity:1 !important;z-index:10}ajf-report-builder-content mat-list{position:relative;display:block}\n"]
249
- },] }
250
- ];
251
- AjfReportBuilderContent.ctorParameters = () => [
252
- { type: AjfReportBuilderService },
253
- { type: ChangeDetectorRef }
254
- ];
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9yZXBvcnQtYnVpbGRlci9jb250ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUVILE9BQU8sRUFBdUIsYUFBYSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDdEUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXpDLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFHVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFhLFlBQVksRUFBRSxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHckQsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFakU7Ozs7R0FJRztBQVNILE1BQU0sT0FBTyx1QkFBdUI7SUE4RmxDLFlBQW9CLFFBQWlDLEVBQVUsTUFBeUI7UUFBcEUsYUFBUSxHQUFSLFFBQVEsQ0FBeUI7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQXRFeEYsMkNBQTJDO1FBQzNDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFHbEI7Ozs7V0FJRztRQUNILGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsc0RBQXNEO1FBQ3RELGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBR3RCLFNBQUksR0FBRyxLQUFLLENBQUM7UUFHYix1REFBdUQ7UUFDdkQsa0JBQWEsR0FBZ0IsRUFBRSxDQUFDO1FBUWhDLHdEQUF3RDtRQUN4RCxtQkFBYyxHQUFnQixFQUFFLENBQUM7UUFTakMsdURBQXVEO1FBQ3ZELGtCQUFhLEdBQWdCLEVBQUUsQ0FBQztRQUdoQyxXQUFNLEdBQVksS0FBSyxDQUFDO1FBU3hCLDZCQUE2QjtRQUM3QixrQkFBYSxHQUFtQixJQUFJLENBQUM7UUFHckM7Ozs7V0FJ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QUMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDL0UsSUFBSSxDQUFDLGVBQWUsQ0FBQzthQUNqQixPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDWCxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFDVCxDQUFDOzs7WUF0UUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSw0QkFBNEI7Z0JBQ3RDLHF3S0FBMkI7Z0JBRTNCLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsSUFBSSxFQUFFLEVBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUM7O2FBQ3pFOzs7WUFkTyx1QkFBdUI7WUFUN0IsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IChDKSBHbnVjb29wIHNvYy4gY29vcC5cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSxcbiAqIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgQWZmZXJvXG4gKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikuXG4gKiBJZiBub3QsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvLlxuICpcbiAqL1xuXG5pbXBvcnQge0FqZlN0eWxlcywgQWpmV2lkZ2V0LCBBamZXaWRnZXRUeXBlfSBmcm9tICdAYWpmL2NvcmUvcmVwb3J0cyc7XG5pbXBvcnQge2RlZXBDb3B5fSBmcm9tICdAYWpmL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHtDZGtEcmFnLCBDZGtEcmFnRHJvcH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIHRpbWVyfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtBamZSZXBvcnRCdWlsZGVyRHJhZ0RhdGF9IGZyb20gJy4vcmVwb3J0LWJ1aWxkZXItZHJhZy1kYXRhJztcbmltcG9ydCB7QWpmUmVwb3J0QnVpbGRlclNlcnZpY2V9IGZyb20gJy4vcmVwb3J0LWJ1aWxkZXItc2VydmljZSc7XG5cbi8qKlxuICogIG1hbmFnZSB0aGUgY29udGVudCBwYWdlXG4gKlxuICogQGV4cG9ydFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhamYtcmVwb3J0LWJ1aWxkZXItY29udGVudCcsXG4gIHRlbXBsYXRlVXJsOiAnY29udGVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2NvbnRlbnQuY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7Jyhtb3VzZW92ZXIpJzogJ29uTW91c2VPdmVyKCknLCAnKG1vdXNlbGVhdmUpJzogJ29uTW91c2VMZWF2ZSgpJ31cbn0pXG5leHBvcnQgY2xhc3MgQWpmUmVwb3J0QnVpbGRlckNvbnRlbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSB7XG4gIG9uTW91c2VPdmVyKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0FjdGlvbnMgPSB0cnVlO1xuICAgIHRoaXMuX3NlcnZpY2Uub3ZlclN0YXJ0ZWQoKTtcbiAgfVxuXG4gIG9uTW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dBY3Rpb25zID0gZmFsc2U7XG4gICAgdGhpcy5fc2VydmljZS5vdmVyRW5kZWQoKTtcbiAgfVxuXG4gIGNhbkRyb3BQcmVkaWNhdGUoZHJvcFpvbmVzOiBzdHJpbmdbXSk6IChpdGVtOiBDZGtEcmFnPEFqZlJlcG9ydEJ1aWxkZXJEcmFnRGF0YT4pID0+IGJvb2xlYW4ge1xuICAgIHJldHVybiBpdGVtID0+IHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS5kYXRhLmRyb3Bab25lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZHJvcFpvbmVzLmluZGV4T2YoaXRlbS5kYXRhLmRyb3Bab25lc1tpXSkgPiAtMSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgfVxuXG4gIHJlcG9ydFN0eWxlczogT2JzZXJ2YWJsZTxBamZTdHlsZXM+O1xuXG4gIC8vIHRoaXMgYm9vbGVhbiBzaWduIGlmIGlzIGRyYWdnZWQgYSB3aWRnZXRcbiAgb25EcmFnZ2VkID0gZmFsc2U7XG5cblxuICAvKipcbiAgICogIG9ic2VydmUgdGhlIHN0YXR1cyBvZiB0aGUgZml4ZWQgem9vbVxuICAgKlxuICAgKiBAbWVtYmVyT2YgQWpmUmVwb3J0QnVpbGRlckNvbnRlbnRcbiAgICovXG4gIGZpeGVkWm9vbSA9IGZhbHNlO1xuXG4gIC8vIHRoaXMgYm9vbGVhbiBzaWduIGlmIHdpZGdldCBpcyBpbiBkcmFnIGVudGVyIHN0YXR1c1xuICBvbkRyYWdFbnRlcjogYW55ID0ge307XG5cblxuICBzaG93ID0gZmFsc2U7XG5cblxuICAvLyB0aGlzIGFycmF5IGNvbnRhaW5zIGFsbCB3aWRnZXQgbG9jYXRlIGluIGhlYWRlciB6b25lXG4gIGhlYWRlcldpZGdldHM6IEFqZldpZGdldFtdID0gW107XG4gIC8qKlxuICAgKiBvYnNlcnZlIHRoZSBjc3Mgc3R5bGUgb2YgaGVhZGVyXG4gICAqXG4gICAqIEBtZW1iZXJPZiBBamZSZXBvcnRCdWlsZGVyQ29udGVudFxuICAgKi9cbiAgaGVhZGVyU3R5bGVzOiBPYnNlcnZhYmxlPEFqZlN0eWxlcz47XG5cbiAgLy8gdGhpcyBhcnJheSBjb250YWlucyBhbGwgd2lkZ2V0IGxvY2F0ZSBpbiBjb250ZW50IHpvbmVcbiAgY29udGVudFdpZGdldHM6IEFqZldpZGdldFtdID0gW107XG5cbiAgLyoqXG4gICAqIG9ic2VydmUgdGhlIGNzcyBzdHlsZSBvZiBjb250ZW50XG4gICAqXG4gICAqIEBtZW1iZXJPZiBBamZSZXBvcnRCdWlsZGVyQ29udGVudFxuICAgKi9cbiAgY29udGVudFN0eWxlczogT2JzZXJ2YWJsZTxBamZTdHlsZXM+O1xuXG4gIC8vIHRoaXMgYXJyYXkgY29udGFpbnMgYWxsIHdpZGdldCBsb2NhdGUgaW4gZm9vdGVyIHpvbmVcbiAgZm9vdGVyV2lkZ2V0czogQWpmV2lkZ2V0W10gPSBbXTtcblxuXG4gIG9uT3ZlcjogYm9vbGVhbiA9IGZhbHNlO1xuICAvKipcbiAgICogb2JzZXJ2ZSB0aGUgY3NzIHN0eWxlIG9mIGZvb3RlclxuICAgKlxuICAgKiBAbWVtYmVyT2YgQWpmUmVwb3J0QnVpbGRlckNvbnRlbnRcbiAgICovXG4gIGZvb3RlclN0eWxlczogT2JzZXJ2YWJsZTxBamZTdHlsZXM+O1xuXG5cbiAgLy8gdGhpcyBpcyB0aGUgY3VycmVudCB3aWRnZXRcbiAgY3VycmVudFdpZGdldDogQWpmV2lkZ2V0fG51bGwgPSBudWxsO1xuXG5cbiAgLyoqXG4gICAqIGlmIHRydWUgbW91c2UgZXZlbnQgaXMgb24gZHJhZ2dlZCBzdGF0dXNcbiAgICpcbiAgICogQG1lbWJlck9mIEFqZlJlcG9ydEJ1aWxkZXJDb250ZW50XG4gICAqL1xuICBzaG93QWN0aW9ucyA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX29uRHJhZ2dlZFN1YjogU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuICBwcml2YXRlIF9maXhlZFpvb21TdWI6IFN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcbiAgcHJpdmF0ZSBfb25EcmFnRW50ZXJTdWI6IFN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcbiAgcHJpdmF0ZSBfaGVhZGVyV2lkZ2V0c1N1YjogU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuICBwcml2YXRlIF9jb250ZW50V2lkZ2V0c1N1YjogU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuICBwcml2YXRlIF9mb290ZXJXaWRnZXRzU3ViOiBTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG4gIHByaXZhdGUgX29uT3ZlclN1YjogU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuICBwcml2YXRlIF9jdXJyZW50V2lkZ2V0U3ViOiBTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc2VydmljZTogQWpmUmVwb3J0QnVpbGRlclNlcnZpY2UsIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHRoaXMuaGVhZGVyU3R5bGVzID0gdGhpcy5fc2VydmljZS5oZWFkZXJTdHlsZXM7XG4gICAgdGhpcy5jb250ZW50U3R5bGVzID0gdGhpcy5fc2VydmljZS5jb250ZW50U3R5bGVzO1xuICAgIHRoaXMuZm9vdGVyU3R5bGVzID0gdGhpcy5fc2VydmljZS5mb290ZXJTdHlsZXM7XG4gIH1cblxuICBpc0xheW91dCh3aWRnZXQ6IEFqZldpZGdldCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB3aWRnZXQud2lkZ2V0VHlwZSA9PT0gQWpmV2lkZ2V0VHlwZS5MYXlvdXQ7XG4gIH1cblxuICAvKipcbiAgICogIHNpZ24gdGhlIHN0YXJ0IG9mIG1vdXNlIGRyYWcgd2l0aCAyMDAgbXMgb2YgZGVsYXlcbiAgICpcbiAgICogQG1lbWJlck9mIEFqZlJlcG9ydEJ1aWxkZXJDb250ZW50XG4gICAqL1xuICBvbkRyYWdTdGFydEhhbmRsZXIoKTogdm9pZCB7XG4gICAgbGV0IHMgPSB0aW1lcigyMDApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAocyAhPSBudWxsKSB7XG4gICAgICAgIHMudW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3NlcnZpY2UuZHJhZ1N0YXJ0ZWQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzaWduIHRoZSBlbmQgb2YgbW91c2UgZHJhZ1xuICAgKlxuICAgKiBAbWVtYmVyT2YgQWpmUmVwb3J0QnVpbGRlckNvbnRlbnRcbiAgICovXG4gIG9uRHJhZ0VuZEhhbmRsZXIoKTogdm9pZCB7XG4gICAgdGhpcy5fc2VydmljZS5kcmFnRW5kZWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgc2lnbiB0aGUgZW50ZXIgb2YgbW91c2UgZHJhZ1xuICAgKlxuICAgKiBAbWVtYmVyT2YgQWpmUmVwb3J0QnVpbGRlckNvbnRlbnRcbiAgICovXG4gIG9uRHJhZ0VudGVySGFuZGxlcihhcnJheTogc3RyaW5nLCBpbmRleDogbnVtYmVyfHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGlmIChpbmRleCA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3NlcnZpY2UuZHJhZ0VudGVyKGFycmF5LCBpbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogc2lnbiB0aGUgbGVhdmUgb2YgbW91c2UgZHJhZ1xuICAgKlxuICAgKiBAbWVtYmVyT2YgQWpmUmVwb3J0QnVpbGRlckNvbnRlbnRcbiAgICovXG4gIG9uRHJhZ0xlYXZlSGFuZGxlcigpOiB2b2lkIHtcbiAgICB0aGlzLl9zZXJ2aWNlLmRyYWdMZWF2ZSgpO1xuICB9XG5cblxuICAvKipcbiAgICogIHJldHVybiB0cnVlIGlmIGFycmF5IGFuZCBpbmRleCBpcyA9PT0gd2l0aCBhcnJheSBhbmQgaW5kZXggb2Ygb25EcmFnRW50ZXJcbiAgICpcbiAgICogQHBhcmFtIGFycmF5XG4gICAqIEBwYXJhbSBpbmRleFxuICAgKlxuICAgKiBAbWVtYmVyT2YgQWpmUmVwb3J0QnVpbGRlckNvbnRlbnRcbiAgICovXG4gIG9uRHJhZ0VudGVyQ2hlY2soYXJyYXk6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmICgoYXJyYXkgPT09IHRoaXMub25EcmFnRW50ZXIuYXJyYXkpICYmXG4gICAgICAgICgoaW5kZXggPT09IHRoaXMub25EcmFnRW50ZXIuaW5kZXgpIHx8IChpbmRleCA9PT0gLTEpKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogcmVtb3ZlIHdpZGdldCBlbGVtZW50IGZyb20gdHlwZSBhcnJheSBpbiBpZHggcG9zaXRpb25cbiAgICpcbiAgICogQHBhcmFtIHR5cGUgY2FuIGJlIGhlYWRlciBjb250ZW50IG9yIGZvb3RlclxuICAgKiBAcGFyYW0gaWR4XG4gICAqXG4gICAqIEBtZW1iZXJPZiBBamZSZXBvcnRCdWlsZGVyQ29udGVudFxuICAgKi9cbiAgcmVtb3ZlKHR5cGU6IHN0cmluZywgaWR4OiBudW1iZXIpIHtcbiAgICB0aGlzLl9zZXJ2aWNlLnJlbW92ZSh0eXBlLCBpZHgpO1xuICB9XG5cbiAgLyoqXG4gICAqIGFkZCB3aWRnZXQgZWxlbWVudCBpbnRvIHR5cGUgYXJyYXkgaW4gaWR4IHBvc2l0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB0eXBlXG4gICAqIEBwYXJhbSBldmVudFxuICAgKlxuICAgKiBAbWVtYmVyT2YgQWpmUmVwb3J0QnVpbGRlckNvbnRlbnRcbiAgICovXG4gIGFkZFRvTGlzdChhcnJheVRvOiBzdHJpbmcsIGV2ZW50OiBDZGtEcmFnRHJvcDxBamZSZXBvcnRCdWlsZGVyRHJhZ0RhdGE+LCB0bz86IG51bWJlcikge1xuICAgIHRoaXMub25EcmFnRW5kSGFuZGxlcigpO1xuICAgIHRoaXMuX3NlcnZpY2Uuc2V0T3JpZ2luKGFycmF5VG8pO1xuICAgIGNvbnN0IGl0ZW1EYXRhID0gZXZlbnQuaXRlbS5kYXRhIGFzIEFqZlJlcG9ydEJ1aWxkZXJEcmFnRGF0YTtcbiAgICBpZiAoaXRlbURhdGEuZnJvbUNvbHVtbiAhPSBudWxsKSB7XG4gICAgICB0aGlzLl9zZXJ2aWNlLnJlbW92ZVdpZGdldFRvQ29sdW1uKGl0ZW1EYXRhLmZyb21Db2x1bW4sIGl0ZW1EYXRhLmZyb21JbmRleCEpO1xuICAgICAgdGhpcy5jdXJyZW50V2lkZ2V0ID0gaXRlbURhdGEud2lkZ2V0ITtcbiAgICB9IGVsc2UgaWYgKGl0ZW1EYXRhLndpZGdldCAhPSBudWxsKSB7XG4gICAgICB0aGlzLnJlbW92ZShpdGVtRGF0YS5hcnJheUZyb20hLCBpdGVtRGF0YS5mcm9tISk7XG4gICAgICB0aGlzLmN1cnJlbnRXaWRnZXQgPSBpdGVtRGF0YS53aWRnZXQ7XG4gICAgfSBlbHNlIGlmIChpdGVtRGF0YS5qc29uICE9IG51bGwgJiYgaXRlbURhdGEuanNvbiAhPT0gJycpIHtcbiAgICAgIHRoaXMuY3VycmVudFdpZGdldCA9IGRlZXBDb3B5KGl0ZW1EYXRhLmpzb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgb2JqID0geyd3aWRnZXRUeXBlJzogKEFqZldpZGdldFR5cGUgYXMgYW55KVtpdGVtRGF0YS53aWRnZXRUeXBlIV19O1xuICAgICAgdGhpcy5jdXJyZW50V2lkZ2V0ID0gZGVlcENvcHkob2JqKTtcbiAgICB9XG4gICAgdGhpcy5vbkRyYWdFbmRIYW5kbGVyKCk7XG4gICAgaWYgKHRoaXMuY3VycmVudFdpZGdldCAhPSBudWxsKSB7XG4gICAgICBzd2l0Y2ggKGFycmF5VG8pIHtcbiAgICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgICAgICB0aGlzLl9zZXJ2aWNlLmFkZEhlYWRlcldpZGdldCh0aGlzLmN1cnJlbnRXaWRnZXQsIHRvKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnY29udGVudCc6XG4gICAgICAgICAgdGhpcy5fc2VydmljZS5hZGRDb250ZW50V2lkZ2V0KHRoaXMuY3VycmVudFdpZGdldCwgdG8pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdmb290ZXInOlxuICAgICAgICAgIHRoaXMuX3NlcnZpY2UuYWRkZm9vdGVyV2lkZ2V0KHRoaXMuY3VycmVudFdpZGdldCwgdG8pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm9uRHJhZ0xlYXZlSGFuZGxlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5faGVhZGVyV2lkZ2V0c1N1YiA9IHRoaXMuX3NlcnZpY2UuaGVhZGVyV2lkZ2V0cy5zdWJzY3JpYmUoeCA9PiB7XG4gICAgICB0aGlzLmhlYWRlcldpZGdldHMgPSB4LndpZGdldHM7XG4gICAgfSk7XG4gICAgdGhpcy5fY29udGVudFdpZGdldHNTdWIgPSB0aGlzLl9zZXJ2aWNlLmNvbnRlbnRXaWRnZXRzLnN1YnNjcmliZSh4ID0+IHtcbiAgICAgIHRoaXMuY29udGVudFdpZGdldHMgPSB4LndpZGdldHM7XG4gICAgfSk7XG4gICAgdGhpcy5fZm9vdGVyV2lkZ2V0c1N1YiA9IHRoaXMuX3NlcnZpY2UuZm9vdGVyV2lkZ2V0cy5zdWJzY3JpYmUoeCA9PiB7XG4gICAgICB0aGlzLmZvb3RlcldpZGdldHMgPSB4LndpZGdldHM7XG4gICAgfSk7XG4gICAgdGhpcy5fb25EcmFnZ2VkU3ViID0gdGhpcy5fc2VydmljZS5vbkRyYWdnZWQuc3Vic2NyaWJlKHggPT4ge1xuICAgICAgdGhpcy5vbkRyYWdnZWQgPSB4O1xuICAgIH0pO1xuICAgIHRoaXMuX2ZpeGVkWm9vbVN1YiA9IHRoaXMuX3NlcnZpY2UuZml4ZWRab29tLnN1YnNjcmliZShib29sID0+IHtcbiAgICAgIHRoaXMuZml4ZWRab29tID0gYm9vbDtcbiAgICB9KTtcbiAgICB0aGlzLl9vbkRyYWdFbnRlclN1YiA9IHRoaXMuX3NlcnZpY2Uub25EcmFnRW50ZXIuc3Vic2NyaWJlKHggPT4ge1xuICAgICAgdGhpcy5vbkRyYWdFbnRlciA9IHg7XG4gICAgfSk7XG4gICAgdGhpcy5fb25PdmVyU3ViID0gdGhpcy5fc2VydmljZS5vbk92ZXIuc3Vic2NyaWJlKHggPT4ge1xuICAgICAgdGhpcy5vbk92ZXIgPSB4O1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIFt0aGlzLl9oZWFkZXJXaWRnZXRzU3ViLCB0aGlzLl9jb250ZW50V2lkZ2V0c1N1YiwgdGhpcy5fZm9vdGVyV2lkZ2V0c1N1YixcbiAgICAgdGhpcy5fY3VycmVudFdpZGdldFN1YiwgdGhpcy5fb25EcmFnZ2VkU3ViLCB0aGlzLl9maXhlZFpvb21TdWIsIHRoaXMuX29uT3ZlclN1YixcbiAgICAgdGhpcy5fb25EcmFnRW50ZXJTdWJdXG4gICAgICAgIC5mb3JFYWNoKHMgPT4ge1xuICAgICAgICAgIHMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==