keevo-components 2.0.27 → 2.0.29

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 (164) hide show
  1. package/fesm2022/keevo-components.mjs +53 -8
  2. package/fesm2022/keevo-components.mjs.map +1 -1
  3. package/lib/api/base-components/base-component-dropdown.d.ts +1 -1
  4. package/lib/components/keevo-components.module.d.ts +3 -2
  5. package/lib/components/kv-button/kv-button.component.d.ts +1 -1
  6. package/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.d.ts +1 -1
  7. package/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.d.ts +2 -1
  8. package/lib/components/kv-stepper/kv-stepper.component.d.ts +1 -1
  9. package/lib/components/kv-table/kv-table.component.d.ts +1 -1
  10. package/lib/components/kv-table-expandable/kv-table-expandable.component.d.ts +1 -1
  11. package/lib/components/kv-tag/kv-tag.component.d.ts +7 -0
  12. package/lib/components/kv-tag/kv-tag.module.d.ts +8 -0
  13. package/package.json +1 -3
  14. package/public-api.d.ts +5 -0
  15. package/esm2022/keevo-components.mjs +0 -5
  16. package/esm2022/lib/api/base-components/base-component-button.mjs +0 -39
  17. package/esm2022/lib/api/base-components/base-component-chart.mjs +0 -104
  18. package/esm2022/lib/api/base-components/base-component-crud-form.mjs +0 -302
  19. package/esm2022/lib/api/base-components/base-component-crud-list.mjs +0 -91
  20. package/esm2022/lib/api/base-components/base-component-crud.mjs +0 -80
  21. package/esm2022/lib/api/base-components/base-component-dropdown-external.mjs +0 -31
  22. package/esm2022/lib/api/base-components/base-component-dropdown.mjs +0 -238
  23. package/esm2022/lib/api/base-components/base-component-input.mjs +0 -101
  24. package/esm2022/lib/api/base-components/base-component-multi-select.mjs +0 -174
  25. package/esm2022/lib/api/base-components/base-component-table.mjs +0 -354
  26. package/esm2022/lib/api/base-components/base-component.mjs +0 -51
  27. package/esm2022/lib/api/components/chart/chart.config.mjs +0 -2
  28. package/esm2022/lib/api/components/chart/chart.model.mjs +0 -2
  29. package/esm2022/lib/api/components/chart/orchart.config.mjs +0 -2
  30. package/esm2022/lib/api/components/chart/orchartnode.mjs +0 -2
  31. package/esm2022/lib/api/components/dropdown/filtro.combo.mjs +0 -2
  32. package/esm2022/lib/api/components/stepper/kv-stepperpanel.mjs +0 -2
  33. package/esm2022/lib/api/components/table/action-item.mjs +0 -2
  34. package/esm2022/lib/api/components/table/kv-menuitem.mjs +0 -46
  35. package/esm2022/lib/api/components/table/table-dropdown-control.mjs +0 -2
  36. package/esm2022/lib/api/components/table/table.config.column.mjs +0 -2
  37. package/esm2022/lib/api/components/table/table.config.mjs +0 -2
  38. package/esm2022/lib/api/components/table/table.paginate.mjs +0 -10
  39. package/esm2022/lib/api/components/table/tabledit.config.mjs +0 -2
  40. package/esm2022/lib/api/components/table/tableedit.config.column.mjs +0 -2
  41. package/esm2022/lib/api/components/tree-table/tree-table-keys.mjs +0 -2
  42. package/esm2022/lib/api/components/tree-table/tree-table.config.mjs +0 -3
  43. package/esm2022/lib/api/directives/directives.module.mjs +0 -30
  44. package/esm2022/lib/api/directives/drag/drag.directive.mjs +0 -52
  45. package/esm2022/lib/api/directives/stepper/dynamicinput.directive.mjs +0 -31
  46. package/esm2022/lib/api/directives/template/template.directive.mjs +0 -24
  47. package/esm2022/lib/api/helpers/component-providers.mjs +0 -16
  48. package/esm2022/lib/api/helpers/keevo-validators.mjs +0 -131
  49. package/esm2022/lib/api/helpers/translate-primeng.mjs +0 -23
  50. package/esm2022/lib/api/modules/primeng.module.mjs +0 -275
  51. package/esm2022/lib/api/pipes/capitalize.pipe.mjs +0 -47
  52. package/esm2022/lib/api/pipes/cpfcnpj.pipe.mjs +0 -25
  53. package/esm2022/lib/api/pipes/mask.pipe.mjs +0 -29
  54. package/esm2022/lib/api/pipes/pipes.module.mjs +0 -39
  55. package/esm2022/lib/api/pipes/telefone.pipe.mjs +0 -45
  56. package/esm2022/lib/api/services/base.api.service.mjs +0 -74
  57. package/esm2022/lib/api/services/breadcrumbs.service.mjs +0 -62
  58. package/esm2022/lib/api/services/chat.service.mjs +0 -37
  59. package/esm2022/lib/api/services/component.service.mjs +0 -37
  60. package/esm2022/lib/api/services/docs.service.mjs +0 -129
  61. package/esm2022/lib/api/services/form.service.mjs +0 -95
  62. package/esm2022/lib/api/services/image.cutter.service.mjs +0 -191
  63. package/esm2022/lib/api/services/imagens.service.mjs +0 -28
  64. package/esm2022/lib/api/services/notification.service.mjs +0 -69
  65. package/esm2022/lib/api/services/object.service.mjs +0 -39
  66. package/esm2022/lib/api/services/orgchart.service.mjs +0 -64
  67. package/esm2022/lib/api/types/breadcrumb.model.mjs +0 -2
  68. package/esm2022/lib/components/keevo-components.module.mjs +0 -207
  69. package/esm2022/lib/components/kv-avatar/kv-avatar.component.mjs +0 -133
  70. package/esm2022/lib/components/kv-avatar/kv-avatar.module.mjs +0 -55
  71. package/esm2022/lib/components/kv-button/kv-button.component.mjs +0 -51
  72. package/esm2022/lib/components/kv-button/kv-button.module.mjs +0 -28
  73. package/esm2022/lib/components/kv-buttons/kv-button-personalize/kv-button-personalize.component.mjs +0 -25
  74. package/esm2022/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.mjs +0 -39
  75. package/esm2022/lib/components/kv-buttons/kv-button-secondary/kv-button-secondary.component.mjs +0 -17
  76. package/esm2022/lib/components/kv-buttons/kv-button-success/kv-button-success.component.mjs +0 -17
  77. package/esm2022/lib/components/kv-buttons/kv-button.module.mjs +0 -39
  78. package/esm2022/lib/components/kv-card-selection/kv-card-selection.component.mjs +0 -60
  79. package/esm2022/lib/components/kv-card-selection/kv-card-selection.module.mjs +0 -31
  80. package/esm2022/lib/components/kv-carousel/kv-carousel.component.mjs +0 -34
  81. package/esm2022/lib/components/kv-carousel/kv-carousel.module.mjs +0 -28
  82. package/esm2022/lib/components/kv-chart/kv-chart.component.mjs +0 -166
  83. package/esm2022/lib/components/kv-chart/kv-chart.module.mjs +0 -32
  84. package/esm2022/lib/components/kv-content-viewer/kv-content-viewer.component.mjs +0 -183
  85. package/esm2022/lib/components/kv-content-viewer/kv-content-viewer.module.mjs +0 -44
  86. package/esm2022/lib/components/kv-error/kv-error.component.mjs +0 -26
  87. package/esm2022/lib/components/kv-error/kv-error.module.mjs +0 -35
  88. package/esm2022/lib/components/kv-file-upload/kv-file-upload.component.mjs +0 -162
  89. package/esm2022/lib/components/kv-file-upload/kv-file-upload.module.mjs +0 -18
  90. package/esm2022/lib/components/kv-file-viewer/kv-file-viewer.component.mjs +0 -46
  91. package/esm2022/lib/components/kv-file-viewer/kv-file-viewer.module.mjs +0 -20
  92. package/esm2022/lib/components/kv-file-viewer-novo/kv-file-viewer-novo.component.mjs +0 -68
  93. package/esm2022/lib/components/kv-file-viewer-novo/kv-file-viewer-novo.module.mjs +0 -24
  94. package/esm2022/lib/components/kv-filter-card/kv-filter-card.component.mjs +0 -29
  95. package/esm2022/lib/components/kv-filter-card/kv-filter-card.module.mjs +0 -34
  96. package/esm2022/lib/components/kv-filter-fieldset/kv-filter-fieldset.component.mjs +0 -26
  97. package/esm2022/lib/components/kv-filter-fieldset/kv-filter-fieldset.module.mjs +0 -28
  98. package/esm2022/lib/components/kv-g-icon/kv-g-icon.component.mjs +0 -11
  99. package/esm2022/lib/components/kv-g-icon/kv-g-icon.module.mjs +0 -19
  100. package/esm2022/lib/components/kv-home-card/kv-home-card.component.mjs +0 -27
  101. package/esm2022/lib/components/kv-home-card/kv-home-card.module.mjs +0 -32
  102. package/esm2022/lib/components/kv-image-upload/kv-image-upload.component.mjs +0 -135
  103. package/esm2022/lib/components/kv-image-upload/kv-image-upload.module.mjs +0 -18
  104. package/esm2022/lib/components/kv-inputs/kv-check/kv-check.component.mjs +0 -29
  105. package/esm2022/lib/components/kv-inputs/kv-dropdown/kv-dropdown.component.mjs +0 -102
  106. package/esm2022/lib/components/kv-inputs/kv-editor/kv-editor.component.mjs +0 -150
  107. package/esm2022/lib/components/kv-inputs/kv-input-calendar/kv-input-calendar.component.mjs +0 -168
  108. package/esm2022/lib/components/kv-inputs/kv-input-mask/kv-input-mask.component.mjs +0 -30
  109. package/esm2022/lib/components/kv-inputs/kv-input-number/kv-input-number.component.mjs +0 -59
  110. package/esm2022/lib/components/kv-inputs/kv-input-password/kv-input-password.component.mjs +0 -33
  111. package/esm2022/lib/components/kv-inputs/kv-input-text/kv-input-text.component.mjs +0 -38
  112. package/esm2022/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.mjs +0 -47
  113. package/esm2022/lib/components/kv-inputs/kv-input-textarea/kv-input-textarea.component.mjs +0 -43
  114. package/esm2022/lib/components/kv-inputs/kv-input-time/kv-input-time.component.mjs +0 -24
  115. package/esm2022/lib/components/kv-inputs/kv-inputs.module.mjs +0 -131
  116. package/esm2022/lib/components/kv-inputs/kv-multi-select/kv-multi-select.component.mjs +0 -60
  117. package/esm2022/lib/components/kv-inputs/kv-radio-group/kv-radio-group.component.mjs +0 -60
  118. package/esm2022/lib/components/kv-inputs/kv-select-button/kv-select-button.component.mjs +0 -46
  119. package/esm2022/lib/components/kv-inputs/kv-select-buttons/kv-select-buttons.component.mjs +0 -36
  120. package/esm2022/lib/components/kv-inputs/kv-switch/kv-switch.component.mjs +0 -42
  121. package/esm2022/lib/components/kv-inputs/kv-tree-multi-select/kv-tree-multi-select.component.mjs +0 -58
  122. package/esm2022/lib/components/kv-label/kv-label.component.mjs +0 -15
  123. package/esm2022/lib/components/kv-label/kv-label.module.mjs +0 -24
  124. package/esm2022/lib/components/kv-layout/dropdown-master/dropdown-master.component.mjs +0 -28
  125. package/esm2022/lib/components/kv-layout/kv-layout.module.mjs +0 -72
  126. package/esm2022/lib/components/kv-layout/layout/kv-layout.component.mjs +0 -430
  127. package/esm2022/lib/components/kv-layout/top-icons/top-icons.component.mjs +0 -15
  128. package/esm2022/lib/components/kv-loader/kv-loader.component.mjs +0 -16
  129. package/esm2022/lib/components/kv-loader/kv-loader.module.mjs +0 -28
  130. package/esm2022/lib/components/kv-loader/kv-loader.service.mjs +0 -29
  131. package/esm2022/lib/components/kv-login/kv-login.component.mjs +0 -62
  132. package/esm2022/lib/components/kv-login/kv-login.module.mjs +0 -47
  133. package/esm2022/lib/components/kv-modal/kv-modal.component.mjs +0 -98
  134. package/esm2022/lib/components/kv-modal/kv-modal.module.mjs +0 -20
  135. package/esm2022/lib/components/kv-orgchart/kv-orgchart.component.mjs +0 -225
  136. package/esm2022/lib/components/kv-orgchart/kv-orgchart.module.mjs +0 -59
  137. package/esm2022/lib/components/kv-page-form/kv-page-form.component.mjs +0 -215
  138. package/esm2022/lib/components/kv-page-form/kv-page-form.module.mjs +0 -41
  139. package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.component.mjs +0 -205
  140. package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.module.mjs +0 -51
  141. package/esm2022/lib/components/kv-pick-list/kv-pick-list.component.mjs +0 -144
  142. package/esm2022/lib/components/kv-pick-list/kv-pick-list.module.mjs +0 -39
  143. package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.component.mjs +0 -62
  144. package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.module.mjs +0 -28
  145. package/esm2022/lib/components/kv-report/kv-report.component.mjs +0 -44
  146. package/esm2022/lib/components/kv-report/kv-report.module.mjs +0 -24
  147. package/esm2022/lib/components/kv-stepper/kv-stepper.component.mjs +0 -74
  148. package/esm2022/lib/components/kv-stepper/kv-stepper.module.mjs +0 -47
  149. package/esm2022/lib/components/kv-table/kv-table.component.mjs +0 -673
  150. package/esm2022/lib/components/kv-table/kv-table.module.mjs +0 -40
  151. package/esm2022/lib/components/kv-table-edit/kv-table-edit.component.mjs +0 -323
  152. package/esm2022/lib/components/kv-table-edit/kv-table-edit.module.mjs +0 -45
  153. package/esm2022/lib/components/kv-table-expandable/kv-table-expandable.component.mjs +0 -516
  154. package/esm2022/lib/components/kv-table-expandable/kv-table-expandable.module.mjs +0 -40
  155. package/esm2022/lib/components/kv-tree-table/kv-tree-table.component.mjs +0 -331
  156. package/esm2022/lib/components/kv-tree-table/kv-tree-table.module.mjs +0 -39
  157. package/esm2022/lib/components/kv-tree-view/kv-tree-view.component.mjs +0 -70
  158. package/esm2022/lib/components/kv-tree-view/kv-tree-view.module.mjs +0 -28
  159. package/esm2022/lib/components/kv-workspace/empresa/kv-workspace-empresa.component.mjs +0 -40
  160. package/esm2022/lib/components/kv-workspace/kv-workspace.module.mjs +0 -68
  161. package/esm2022/lib/components/kv-workspace/logo/kv-workspace-logo.component.mjs +0 -22
  162. package/esm2022/lib/components/kv-workspace/master/kv-workspace-master.component.mjs +0 -78
  163. package/esm2022/lib/components/kv-workspace/workspace/kv-workspace.component.mjs +0 -87
  164. package/esm2022/public-api.mjs +0 -256
@@ -1,238 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, } from '@angular/core';
2
- import { debounceTime, finalize, of } from 'rxjs';
3
- import { BaseComponentInput } from './base-component-input';
4
- import { ObjectService } from '../services/object.service';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../services/component.service";
7
- import * as i2 from "primeng/dynamicdialog";
8
- export class BaseComponentDropDown extends BaseComponentInput {
9
- constructor(componentService, dialogService) {
10
- super(componentService);
11
- this.dialogService = dialogService;
12
- this.capitalize = false;
13
- this.filter = true;
14
- this.lazy = false;
15
- this.loading = false;
16
- this.showAddButton = false;
17
- this.showClear = true;
18
- this.onAddClick = new EventEmitter();
19
- this.onClick = new EventEmitter();
20
- this.onLoadCombo = new EventEmitter();
21
- this.onSelectionChange = new EventEmitter();
22
- this.onSelectionValue = new EventEmitter();
23
- this.requestComplete = new EventEmitter();
24
- this.onFilter = new EventEmitter();
25
- this.prepositions = [
26
- 'de',
27
- 'da',
28
- 'do',
29
- 'em',
30
- 'no',
31
- 'na',
32
- 'para',
33
- 'por',
34
- 'com',
35
- 'a',
36
- 'o',
37
- 'e',
38
- ];
39
- this.loadingCombo = () => {
40
- if (!this.lazy) {
41
- return (src) => {
42
- this.loading = true;
43
- return src.pipe(finalize(() => {
44
- this.loading = false;
45
- }));
46
- };
47
- }
48
- };
49
- this.registerOnTouched(() => { });
50
- }
51
- ngOnInit() {
52
- super.ngOnInit();
53
- this.setPlaceHolder('Selecione um valor');
54
- if (!this.lazy)
55
- this.carregarCombo();
56
- }
57
- addClick(event) {
58
- this.onAddClick.emit(event);
59
- }
60
- carregarCombo(filtro) {
61
- if (filtro) {
62
- this.carregarComboObs(this.listarCombo(filtro));
63
- }
64
- else {
65
- this.carregarComboObs(this.listar());
66
- }
67
- }
68
- carregarComboObs(obs) {
69
- if (obs) {
70
- obs
71
- .pipe(debounceTime(450), this.loadingCombo())
72
- .subscribe({
73
- next: (data) => {
74
- this.options = this.capitalizeOptions(data);
75
- this.filteredOptions = this.options;
76
- this.requestComplete.emit(true);
77
- },
78
- error: (error) => {
79
- console.log(error);
80
- },
81
- });
82
- }
83
- }
84
- emptyMessage() {
85
- return (this.lazy ? 'Digite para pesquisar' : 'Nenhum resultado encontrado');
86
- }
87
- filterOptions(field, value) {
88
- if (this.options) {
89
- let lista = ObjectService.filterObject(this.options, field, value);
90
- if (lista?.length > 0) {
91
- of(lista).subscribe((opts) => {
92
- this.filteredOptions = this.capitalizeOptions(opts);
93
- });
94
- }
95
- else
96
- this.filteredOptions = [];
97
- }
98
- }
99
- listar() { }
100
- listarCombo(value) { }
101
- openDialog(componentType, width, height) {
102
- const ref = this.dialogService.open(componentType, {
103
- width: width || '70%',
104
- height: height,
105
- closable: false,
106
- maximizable: true,
107
- data: { popup: true },
108
- });
109
- ref.onClose.subscribe((id) => {
110
- if (id) {
111
- this.listar()
112
- .pipe(this.loadingCombo())
113
- .subscribe((data) => {
114
- this.options = this.capitalizeOptions(data);
115
- this.filteredOptions = this.options;
116
- if (id)
117
- this.formControl?.setValue(id);
118
- });
119
- }
120
- });
121
- }
122
- onInputChange(event) {
123
- this.onSelectionValue.emit(event);
124
- //Em nossas implementações o metodo é chamado 2 vezes, em seua segunda chamada o event se torna o objeto selecionado e não o valor, dessa forma o if abaixo apenas emite o objeto
125
- if (!event?.originalEvent) {
126
- this.onSelectionChange.emit(event);
127
- return;
128
- }
129
- if (this.formControl) {
130
- const controlName = this.getName(this.formControl);
131
- if (controlName) {
132
- let currentItem = ObjectService.findObject(this.options, this.optionValue ?? controlName, event?.value);
133
- this.onSelectionChange.emit(currentItem);
134
- }
135
- }
136
- }
137
- onInputClick(event) {
138
- this.onClick.emit(event);
139
- }
140
- onInputFilter(event) {
141
- if (event) {
142
- this.onFilter.emit(event.filter);
143
- if (event.filter) {
144
- if (event.filter.length > 2) {
145
- let fil = { termoPesquisa: event.filter };
146
- this.carregarCombo(fil);
147
- this.onLoadCombo.emit(fil);
148
- }
149
- }
150
- }
151
- }
152
- writeValue(value) {
153
- if (this.lazy && value) {
154
- let fil = { id: value };
155
- this.carregarCombo(fil);
156
- this.onLoadCombo.emit(fil);
157
- }
158
- this.value = value;
159
- }
160
- transformCapitalize(value) {
161
- if (!value)
162
- return value;
163
- return value
164
- .split(' ')
165
- .map((word, index) => {
166
- if (index !== 0 &&
167
- this.prepositions.includes(word.toLocaleLowerCase())) {
168
- return word.toLocaleLowerCase();
169
- }
170
- return (word.charAt(0).toLocaleUpperCase() + word.slice(1).toLocaleLowerCase());
171
- })
172
- .join(' ');
173
- }
174
- capitalizeOptions(options) {
175
- if (this.capitalize) {
176
- return options?.map((option) => {
177
- option[this.optionLabel] = this.transformCapitalize(option[this.optionLabel]);
178
- return option;
179
- });
180
- }
181
- return options;
182
- }
183
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BaseComponentDropDown, deps: [{ token: i1.ComponentService }, { token: i2.DialogService }], target: i0.ɵɵFactoryTarget.Component }); }
184
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: BaseComponentDropDown, selector: "ng-component", inputs: { filteredOptions: "filteredOptions", options: "options", optionLabel: "optionLabel", optionValue: "optionValue", nameForSelectionChange: "nameForSelectionChange", optionDisabled: "optionDisabled", capitalize: "capitalize", group: "group", optionGroupLabel: "optionGroupLabel", optionGroupChildren: "optionGroupChildren", filter: "filter", lazy: "lazy", loading: "loading", showAddButton: "showAddButton", showClear: "showClear", widthField: "widthField" }, outputs: { onAddClick: "onAddClick", onClick: "onClick", onLoadCombo: "onLoadCombo", onSelectionChange: "onSelectionChange", onSelectionValue: "onSelectionValue", requestComplete: "requestComplete", onFilter: "onFilter" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
185
- }
186
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BaseComponentDropDown, decorators: [{
187
- type: Component,
188
- args: [{
189
- template: '',
190
- }]
191
- }], ctorParameters: () => [{ type: i1.ComponentService }, { type: i2.DialogService }], propDecorators: { filteredOptions: [{
192
- type: Input
193
- }], options: [{
194
- type: Input
195
- }], optionLabel: [{
196
- type: Input
197
- }], optionValue: [{
198
- type: Input
199
- }], nameForSelectionChange: [{
200
- type: Input
201
- }], optionDisabled: [{
202
- type: Input
203
- }], capitalize: [{
204
- type: Input
205
- }], group: [{
206
- type: Input
207
- }], optionGroupLabel: [{
208
- type: Input
209
- }], optionGroupChildren: [{
210
- type: Input
211
- }], filter: [{
212
- type: Input
213
- }], lazy: [{
214
- type: Input
215
- }], loading: [{
216
- type: Input
217
- }], showAddButton: [{
218
- type: Input
219
- }], showClear: [{
220
- type: Input
221
- }], widthField: [{
222
- type: Input
223
- }], onAddClick: [{
224
- type: Output
225
- }], onClick: [{
226
- type: Output
227
- }], onLoadCombo: [{
228
- type: Output
229
- }], onSelectionChange: [{
230
- type: Output
231
- }], onSelectionValue: [{
232
- type: Output
233
- }], requestComplete: [{
234
- type: Output
235
- }], onFilter: [{
236
- type: Output
237
- }] } });
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQtZHJvcGRvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvYXBpL2Jhc2UtY29tcG9uZW50cy9iYXNlLWNvbXBvbmVudC1kcm9wZG93bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBYyxZQUFZLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFNM0QsTUFBTSxPQUFnQixxQkFBc0IsU0FBUSxrQkFBdUI7SUFtRHpFLFlBQ0UsZ0JBQWtDLEVBQzFCLGFBQTRCO1FBRXBDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRmhCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBdkM3QixlQUFVLEdBQVksS0FBSyxDQUFDO1FBTTVCLFdBQU0sR0FBWSxJQUFJLENBQUM7UUFDdkIsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUN0QixZQUFPLEdBQVksS0FBSyxDQUFDO1FBRXpCLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQy9CLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFHekIsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25ELFlBQU8sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoRCxnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3BELHNCQUFpQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzFELHFCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FB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LE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVHlwZSxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBkZWJvdW5jZVRpbWUsIGZpbmFsaXplLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudElucHV0IH0gZnJvbSAnLi9iYXNlLWNvbXBvbmVudC1pbnB1dCc7XHJcbmltcG9ydCB7IENvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb21wb25lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IE9iamVjdFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9vYmplY3Quc2VydmljZSc7XHJcbmltcG9ydCB7IGZpbHRyb0NvbWJvIH0gZnJvbSAnLi4vY29tcG9uZW50cy9kcm9wZG93bi9maWx0cm8uY29tYm8nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGU6ICcnLFxyXG59KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNvbXBvbmVudERyb3BEb3duIGV4dGVuZHMgQmFzZUNvbXBvbmVudElucHV0PGFueT4gaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBmaWx0ZXJlZE9wdGlvbnMhOiBhbnlbXTtcclxuICBASW5wdXQoKSBvcHRpb25zITogYW55W107XHJcbiAgQElucHV0KCkgb3B0aW9uTGFiZWwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgb3B0aW9uVmFsdWUhOiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFN0cmluZyBxdWUgc2Vyw6EgdXRpbGl6YWRhIHBhcmEgYnVzY2FyIGEgb3DDp8OjbyBubyBtw6l0b2RvIG9uU2VsZWN0aW9uQ2hhbmdlXHJcbiAgICogQGlucHV0XHJcbiAgICovXHJcbiAgQElucHV0KCkgbmFtZUZvclNlbGVjdGlvbkNoYW5nZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBvcHRpb25EaXNhYmxlZCE6IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgY2FwaXRhbGl6ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBncm91cCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgb3B0aW9uR3JvdXBMYWJlbCE6IHN0cmluZztcclxuICBASW5wdXQoKSBvcHRpb25Hcm91cENoaWxkcmVuITogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSBmaWx0ZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGxhenk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHNob3dBZGRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93Q2xlYXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHdpZHRoRmllbGQ/OiBzdHJpbmc7XHJcblxyXG4gIEBPdXRwdXQoKSBvbkFkZENsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25DbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uTG9hZENvbWJvOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25TZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblNlbGVjdGlvblZhbHVlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmVxdWVzdENvbXBsZXRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25GaWx0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBwcmVwb3NpdGlvbnM6IHN0cmluZ1tdID0gW1xyXG4gICAgJ2RlJyxcclxuICAgICdkYScsXHJcbiAgICAnZG8nLFxyXG4gICAgJ2VtJyxcclxuICAgICdubycsXHJcbiAgICAnbmEnLFxyXG4gICAgJ3BhcmEnLFxyXG4gICAgJ3BvcicsXHJcbiAgICAnY29tJyxcclxuICAgICdhJyxcclxuICAgICdvJyxcclxuICAgICdlJyxcclxuICBdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGNvbXBvbmVudFNlcnZpY2U6IENvbXBvbmVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKGNvbXBvbmVudFNlcnZpY2UpO1xyXG4gICAgdGhpcy5yZWdpc3Rlck9uVG91Y2hlZCgoKSA9PiB7IH0pO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5zZXRQbGFjZUhvbGRlcignU2VsZWNpb25lIHVtIHZhbG9yJyk7XHJcblxyXG4gICAgaWYgKCF0aGlzLmxhenkpIHRoaXMuY2FycmVnYXJDb21ibygpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFkZENsaWNrKGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5vbkFkZENsaWNrLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhcnJlZ2FyQ29tYm8oZmlsdHJvPzogZmlsdHJvQ29tYm8pOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoZmlsdHJvKSB7XHJcbiAgICAgIHRoaXMuY2FycmVnYXJDb21ib09icyh0aGlzLmxpc3RhckNvbWJvKGZpbHRybykpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuY2FycmVnYXJDb21ib09icyh0aGlzLmxpc3RhcigpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBjYXJyZWdhckNvbWJvT2JzKG9iczogT2JzZXJ2YWJsZTxhbnk+KSB7XHJcbiAgICBpZiAob2JzKSB7XHJcbiAgICAgIG9ic1xyXG4gICAgICAgIC5waXBlXHJcbiAgICAgICAgKFxyXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDQ1MCksXHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmdDb21ibygpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmNhcGl0YWxpemVPcHRpb25zKGRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucztcclxuICAgICAgICAgICAgdGhpcy5yZXF1ZXN0Q29tcGxldGUuZW1pdCh0cnVlKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBlbXB0eU1lc3NhZ2UoKSB7XHJcbiAgICByZXR1cm4gKHRoaXMubGF6eSA/ICdEaWdpdGUgcGFyYSBwZXNxdWlzYXInIDogJ05lbmh1bSByZXN1bHRhZG8gZW5jb250cmFkbycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbHRlck9wdGlvbnMoZmllbGQ6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucykge1xyXG4gICAgICBsZXQgbGlzdGEgPSBPYmplY3RTZXJ2aWNlLmZpbHRlck9iamVjdCh0aGlzLm9wdGlvbnMsIGZpZWxkLCB2YWx1ZSk7XHJcbiAgICAgIGlmIChsaXN0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIG9mKGxpc3RhKS5zdWJzY3JpYmUoKG9wdHM6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMuY2FwaXRhbGl6ZU9wdGlvbnMob3B0cyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGxpc3RhcigpOiBhbnkgeyB9XHJcbiAgcHJvdGVjdGVkIGxpc3RhckNvbWJvKHZhbHVlOiBhbnkpOiBhbnkgeyB9XHJcblxyXG4gIGxvYWRpbmdDb21ibyA9ICgpOiBhbnkgPT4ge1xyXG4gICAgaWYgKCF0aGlzLmxhenkpIHtcclxuICAgICAgcmV0dXJuIChzcmM6IE9ic2VydmFibGU8YW55PikgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIHNyYy5waXBlKGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0pKTtcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBwcm90ZWN0ZWQgb3BlbkRpYWxvZyhcclxuICAgIGNvbXBvbmVudFR5cGU6IFR5cGU8YW55PixcclxuICAgIHdpZHRoPzogc3RyaW5nLFxyXG4gICAgaGVpZ2h0Pzogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBjb25zdCByZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3Blbihjb21wb25lbnRUeXBlLCB7XHJcbiAgICAgIHdpZHRoOiB3aWR0aCB8fCAnNzAlJyxcclxuICAgICAgaGVpZ2h0OiBoZWlnaHQsXHJcbiAgICAgIGNsb3NhYmxlOiBmYWxzZSxcclxuICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICAgIGRhdGE6IHsgcG9wdXA6IHRydWUgfSxcclxuICAgIH0pO1xyXG5cclxuICAgIHJlZi5vbkNsb3NlLnN1YnNjcmliZSgoaWQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaWQpIHtcclxuICAgICAgICB0aGlzLmxpc3RhcigpXHJcbiAgICAgICAgICAucGlwZSh0aGlzLmxvYWRpbmdDb21ibygpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuY2FwaXRhbGl6ZU9wdGlvbnMoZGF0YSk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zO1xyXG4gICAgICAgICAgICBpZiAoaWQpIHRoaXMuZm9ybUNvbnRyb2w/LnNldFZhbHVlKGlkKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvbklucHV0Q2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25TZWxlY3Rpb25WYWx1ZS5lbWl0KGV2ZW50KTtcclxuICAgIC8vRW0gbm9zc2FzIGltcGxlbWVudGHDp8O1ZXMgbyBtZXRvZG8gw6kgY2hhbWFkbyAyIHZlemVzLCBlbSBzZXVhIHNlZ3VuZGEgY2hhbWFkYSBvIGV2ZW50IHNlIHRvcm5hIG8gb2JqZXRvIHNlbGVjaW9uYWRvIGUgbsOjbyBvIHZhbG9yLCBkZXNzYSBmb3JtYSBvIGlmIGFiYWl4byBhcGVuYXMgZW1pdGUgbyBvYmpldG9cclxuICAgIGlmKCFldmVudD8ub3JpZ2luYWxFdmVudCl7XHJcbiAgICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UuZW1pdChldmVudCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbCkge1xyXG4gICAgICBjb25zdCBjb250cm9sTmFtZSA9IHRoaXMuZ2V0TmFtZSh0aGlzLmZvcm1Db250cm9sIGFzIEZvcm1Db250cm9sKTtcclxuICAgICAgaWYgKGNvbnRyb2xOYW1lKSB7XHJcbiAgICAgICAgbGV0IGN1cnJlbnRJdGVtID0gT2JqZWN0U2VydmljZS5maW5kT2JqZWN0KFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25WYWx1ZT8/Y29udHJvbE5hbWUsXHJcbiAgICAgICAgICBldmVudD8udmFsdWVcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UuZW1pdChjdXJyZW50SXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSW5wdXRDbGljayhldmVudDogYW55KSB7XHJcbiAgICB0aGlzLm9uQ2xpY2suZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBvbklucHV0RmlsdGVyKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudCkge1xyXG4gICAgICB0aGlzLm9uRmlsdGVyLmVtaXQoZXZlbnQuZmlsdGVyKVxyXG5cclxuICAgICAgaWYgKGV2ZW50LmZpbHRlcikge1xyXG4gICAgICAgIGlmIChldmVudC5maWx0ZXIubGVuZ3RoID4gMikge1xyXG4gICAgICAgICAgbGV0IGZpbCA9IHsgdGVybW9QZXNxdWlzYTogZXZlbnQuZmlsdGVyIH0gYXMgZmlsdHJvQ29tYm87XHJcbiAgICAgICAgICB0aGlzLmNhcnJlZ2FyQ29tYm8oZmlsKTtcclxuICAgICAgICAgIHRoaXMub25Mb2FkQ29tYm8uZW1pdChmaWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5sYXp5ICYmIHZhbHVlKSB7XHJcbiAgICAgIGxldCBmaWwgPSB7IGlkOiB2YWx1ZSB9IGFzIGZpbHRyb0NvbWJvO1xyXG4gICAgICB0aGlzLmNhcnJlZ2FyQ29tYm8oZmlsKTtcclxuICAgICAgdGhpcy5vbkxvYWRDb21iby5lbWl0KGZpbCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuXHJcbiAgdHJhbnNmb3JtQ2FwaXRhbGl6ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuXHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gdmFsdWU7XHJcblxyXG4gICAgcmV0dXJuIHZhbHVlXHJcbiAgICAgIC5zcGxpdCgnICcpXHJcbiAgICAgIC5tYXAoKHdvcmQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgaW5kZXggIT09IDAgJiZcclxuICAgICAgICAgIHRoaXMucHJlcG9zaXRpb25zLmluY2x1ZGVzKHdvcmQudG9Mb2NhbGVMb3dlckNhc2UoKSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHJldHVybiB3b3JkLnRvTG9jYWxlTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICB3b3JkLmNoYXJBdCgwKS50b0xvY2FsZVVwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKS50b0xvY2FsZUxvd2VyQ2FzZSgpXHJcbiAgICAgICAgKTtcclxuICAgICAgfSlcclxuICAgICAgLmpvaW4oJyAnKTtcclxuICB9XHJcblxyXG4gIGNhcGl0YWxpemVPcHRpb25zKG9wdGlvbnM6IGFueVtdKTogYW55W10ge1xyXG5cclxuICAgIGlmICh0aGlzLmNhcGl0YWxpemUpIHtcclxuICAgICAgcmV0dXJuIG9wdGlvbnM/Lm1hcCgob3B0aW9uOiBhbnkpID0+IHtcclxuICAgICAgICBvcHRpb25bdGhpcy5vcHRpb25MYWJlbF0gPSB0aGlzLnRyYW5zZm9ybUNhcGl0YWxpemUob3B0aW9uW3RoaXMub3B0aW9uTGFiZWxdKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbjtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb3B0aW9ucztcclxuICB9XHJcbn0iXX0=
@@ -1,101 +0,0 @@
1
- import { Component, ContentChildren, EventEmitter, Input, Output, ViewChildren, } from '@angular/core';
2
- import { BaseComponent } from './base-component';
3
- import { KvErrorComponent } from '../../components/kv-error/kv-error.component';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../services/component.service";
6
- export class BaseComponentInput extends BaseComponent {
7
- constructor(componentService) {
8
- super();
9
- this.componentService = componentService;
10
- this.hasError = false;
11
- this.showAsterisk = false;
12
- this.placeholder = '';
13
- this.autocomplete = '';
14
- this.onBlur = new EventEmitter();
15
- this.onInput = new EventEmitter();
16
- this.onClose = new EventEmitter();
17
- }
18
- get baseInputClass() {
19
- return `${this.hasError ? 'ng-invalid ng-dirty' : ''} !important`;
20
- }
21
- erroMessage() {
22
- if (!this.formControl?.errors)
23
- return;
24
- let message = '';
25
- if (this.formControl.errors) {
26
- const objErrors = this.formControl.errors;
27
- if (objErrors.erroMessage)
28
- message = objErrors.erroMessage;
29
- }
30
- return message;
31
- }
32
- getName(control) {
33
- return (Object.entries(control.parent?.controls ?? []).find(([_, value]) => value === control)?.[0] ?? null);
34
- }
35
- hasControlError() {
36
- if (!this.formControl)
37
- return false;
38
- return ((this.formControl.dirty || this.formControl.touched) &&
39
- this.formControl.errors !== null);
40
- }
41
- ngAfterViewInit() {
42
- this.viewErrors.forEach((c) => {
43
- c.emitError.subscribe((res) => {
44
- this.hasError = res;
45
- this.componentService.changeDetectorRef.detectChanges();
46
- });
47
- });
48
- }
49
- ngAfterContentInit() {
50
- this.contentErrors.forEach((c) => {
51
- c.emitError.subscribe((res) => {
52
- this.hasError = res;
53
- });
54
- });
55
- }
56
- ngOnInit() {
57
- this.formControl = this.componentService.getFormControl();
58
- if (this.formControl?.errors)
59
- this.showAsterisk = true;
60
- }
61
- onInputBlur(event) {
62
- if (this.onTouched)
63
- this.onTouched();
64
- this.onBlur.emit(event);
65
- }
66
- onInputClose(event) {
67
- this.onClose.emit(event);
68
- }
69
- onInputInput(event) {
70
- this.onInput.emit(event);
71
- }
72
- setPlaceHolder(p) {
73
- if (!this.placeholder)
74
- this.placeholder = p;
75
- }
76
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BaseComponentInput, deps: [{ token: i1.ComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
77
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: BaseComponentInput, selector: "ng-component", inputs: { placeholder: "placeholder", autocomplete: "autocomplete" }, outputs: { onBlur: "onBlur", onInput: "onInput", onClose: "onClose" }, queries: [{ propertyName: "contentErrors", predicate: KvErrorComponent }], viewQueries: [{ propertyName: "viewErrors", predicate: KvErrorComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
78
- }
79
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BaseComponentInput, decorators: [{
80
- type: Component,
81
- args: [{
82
- template: '',
83
- }]
84
- }], ctorParameters: () => [{ type: i1.ComponentService }], propDecorators: { placeholder: [{
85
- type: Input
86
- }], autocomplete: [{
87
- type: Input
88
- }], onBlur: [{
89
- type: Output
90
- }], onInput: [{
91
- type: Output
92
- }], onClose: [{
93
- type: Output
94
- }], viewErrors: [{
95
- type: ViewChildren,
96
- args: [KvErrorComponent]
97
- }], contentErrors: [{
98
- type: ContentChildren,
99
- args: [KvErrorComponent]
100
- }] } });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQtaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvYXBpL2Jhc2UtY29tcG9uZW50cy9iYXNlLWNvbXBvbmVudC1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7QUFLaEYsTUFBTSxPQUFnQixrQkFDcEIsU0FBUSxhQUFnQjtJQW1CeEIsWUFBK0IsZ0JBQWtDO1FBQy9ELEtBQUssRUFBRSxDQUFDO1FBRHFCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFmdkQsYUFBUSxHQUF3QixLQUFLLENBQUM7UUFDekMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFbkIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsaUJBQVksR0FBVyxFQUFFLENBQUM7UUFHekIsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQy9DLFlBQU8sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoRCxZQUFPLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFRMUQsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDO0lBQ3BFLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTTtZQUFFLE9BQU87UUFFdEMsSUFBSSxPQUFPLEdB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aUJBQ2I7cUZBU1UsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUdJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBRXlCLFVBQVU7c0JBQXpDLFlBQVk7dUJBQUMsZ0JBQWdCO2dCQUU5QixhQUFhO3NCQURaLGVBQWU7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlckNvbnRlbnRJbml0LFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZHJlbixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBRdWVyeUxpc3QsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLWNvbXBvbmVudCc7XHJcblxyXG5pbXBvcnQgeyBDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29tcG9uZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBLdkVycm9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9rdi1lcnJvci9rdi1lcnJvci5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGU6ICcnLFxyXG59KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNvbXBvbmVudElucHV0PFQ+XHJcbiAgZXh0ZW5kcyBCYXNlQ29tcG9uZW50PFQ+XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXRcclxue1xyXG4gIHB1YmxpYyBmb3JtQ29udHJvbDogRm9ybUNvbnRyb2wgfCB1bmRlZmluZWQ7XHJcbiAgcHJvdGVjdGVkIGhhc0Vycm9yOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dBc3RlcmlzayA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgYXV0b2NvbXBsZXRlOiBzdHJpbmcgPSAnJztcclxuICBcclxuXHJcbiAgQE91dHB1dCgpIG9uQmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uSW5wdXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbihLdkVycm9yQ29tcG9uZW50KSB2aWV3RXJyb3JzITogUXVlcnlMaXN0PEt2RXJyb3JDb21wb25lbnQ+O1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oS3ZFcnJvckNvbXBvbmVudClcclxuICBjb250ZW50RXJyb3JzITogUXVlcnlMaXN0PEt2RXJyb3JDb21wb25lbnQ+O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgY29tcG9uZW50U2VydmljZTogQ29tcG9uZW50U2VydmljZSkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgYmFzZUlucHV0Q2xhc3MoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHt0aGlzLmhhc0Vycm9yID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJyd9ICFpbXBvcnRhbnRgO1xyXG4gIH1cclxuXHJcbiAgZXJyb01lc3NhZ2UoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICghdGhpcy5mb3JtQ29udHJvbD8uZXJyb3JzKSByZXR1cm47XHJcblxyXG4gICAgbGV0IG1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgIGlmICh0aGlzLmZvcm1Db250cm9sLmVycm9ycykge1xyXG4gICAgICBjb25zdCBvYmpFcnJvcnMgPSB0aGlzLmZvcm1Db250cm9sLmVycm9ycyBhcyBhbnk7XHJcbiAgICAgIGlmIChvYmpFcnJvcnMuZXJyb01lc3NhZ2UpIG1lc3NhZ2UgPSBvYmpFcnJvcnMuZXJyb01lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG1lc3NhZ2U7XHJcbiAgfVxyXG5cclxuICBnZXROYW1lKGNvbnRyb2w6IEZvcm1Db250cm9sKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBPYmplY3QuZW50cmllcyhjb250cm9sLnBhcmVudD8uY29udHJvbHMgPz8gW10pLmZpbmQoXHJcbiAgICAgICAgKFtfLCB2YWx1ZV0pID0+IHZhbHVlID09PSBjb250cm9sXHJcbiAgICAgICk/LlswXSA/PyBudWxsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaGFzQ29udHJvbEVycm9yKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLmZvcm1Db250cm9sKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAodGhpcy5mb3JtQ29udHJvbC5kaXJ0eSB8fCB0aGlzLmZvcm1Db250cm9sLnRvdWNoZWQpICYmXHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuZXJyb3JzICE9PSBudWxsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy52aWV3RXJyb3JzLmZvckVhY2goKGMpID0+IHtcclxuICAgICAgYy5lbWl0RXJyb3Iuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLmhhc0Vycm9yID0gcmVzO1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50U2VydmljZS5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICB0aGlzLmNvbnRlbnRFcnJvcnMuZm9yRWFjaCgoYykgPT4ge1xyXG4gICAgICBjLmVtaXRFcnJvci5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuaGFzRXJyb3IgPSByZXM7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wgPSB0aGlzLmNvbXBvbmVudFNlcnZpY2UuZ2V0Rm9ybUNvbnRyb2woKTtcclxuXHJcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbD8uZXJyb3JzKSB0aGlzLnNob3dBc3RlcmlzayA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvbklucHV0Qmx1cihldmVudDogRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLm9uVG91Y2hlZCkgdGhpcy5vblRvdWNoZWQoKTtcclxuXHJcbiAgICB0aGlzLm9uQmx1ci5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uSW5wdXRDbG9zZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLm9uQ2xvc2UuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBvbklucHV0SW5wdXQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLm9uSW5wdXQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgc2V0UGxhY2VIb2xkZXIocDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRoaXMucGxhY2Vob2xkZXIpIHRoaXMucGxhY2Vob2xkZXIgPSBwO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,174 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, } from '@angular/core';
2
- import { of } from 'rxjs';
3
- import { BaseComponentInput } from './base-component-input';
4
- import { ObjectService } from '../services/object.service';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../services/component.service";
7
- export class BaseComponentMultiSelect extends BaseComponentInput {
8
- constructor(componentService) {
9
- super(componentService);
10
- this.options = [];
11
- this.filter = false;
12
- this.showClear = false;
13
- this.lazy = false;
14
- this.filteredOptions = [];
15
- this.capitalize = false;
16
- this.onSelectionChange = new EventEmitter();
17
- this.onPanelHide = new EventEmitter();
18
- this.onSelectionValue = new EventEmitter();
19
- this.onClick = new EventEmitter();
20
- this.loadedCombo = false;
21
- this.prepositions = [
22
- 'de',
23
- 'da',
24
- 'do',
25
- 'em',
26
- 'no',
27
- 'na',
28
- 'para',
29
- 'por',
30
- 'com',
31
- 'a',
32
- 'o',
33
- 'e',
34
- ];
35
- this.romanNumerals = [
36
- 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII', 'XIII', 'XIV', 'XV',
37
- 'XVI', 'XVII', 'XVIII', 'XIX', 'XX'
38
- ];
39
- this.registerOnTouched(() => { });
40
- }
41
- ngOnInit() {
42
- super.ngOnInit();
43
- this.setPlaceHolder('Selecione um valor');
44
- if (!this.lazy)
45
- this.carregarCombo();
46
- }
47
- carregarCombo(filtro) {
48
- if (filtro) {
49
- this.carregarComboObs(this.listarCombo(filtro));
50
- }
51
- else {
52
- this.carregarComboObs(this.listar());
53
- }
54
- }
55
- carregarComboObs(obs) {
56
- if (obs) {
57
- obs
58
- .subscribe({
59
- next: (data) => {
60
- console.log(JSON.stringify(data));
61
- this.options = this.capitalizeOptions(data);
62
- this.filteredOptions = this.options;
63
- this.loadedCombo = true;
64
- },
65
- error: (error) => {
66
- console.log(error);
67
- },
68
- });
69
- }
70
- }
71
- filterOptions(field, value) {
72
- if (this.options) {
73
- let lista = ObjectService.filterObject(this.options, field, value);
74
- if (lista?.length > 0) {
75
- of(lista).subscribe((opts) => {
76
- this.filteredOptions = this.capitalizeOptions(opts);
77
- });
78
- }
79
- else
80
- this.filteredOptions = [];
81
- }
82
- }
83
- onInputChange(event) {
84
- this.onSelectionValue.emit(event);
85
- if (this.formControl) {
86
- const controlName = this.getName(this.formControl);
87
- if (controlName) {
88
- let currentItem = ObjectService.findObject(this.options, controlName, event.value);
89
- this.onSelectionChange.emit(currentItem);
90
- }
91
- }
92
- }
93
- onInputClick(event) {
94
- this.onClick.emit(event);
95
- }
96
- onInputFilter(event) {
97
- if (event) {
98
- if (event.filter) {
99
- if (event.filter.length > 2) {
100
- this.carregarCombo({ termoPesquisa: event.filter });
101
- }
102
- }
103
- }
104
- }
105
- listar() { }
106
- listarCombo(value) { }
107
- panelHide(event) {
108
- this.onPanelHide.emit(event);
109
- }
110
- get baseInputClass() {
111
- return `p-multiselect-sm ${this.hasError ? 'ng-invalid ng-dirty' : ''}`;
112
- }
113
- selectionChange(event) {
114
- this.onSelectionChange.emit(event);
115
- }
116
- requestCompleted() {
117
- return this.loadedCombo;
118
- }
119
- transformCapitalize(value) {
120
- if (!value)
121
- return value;
122
- return value.split(' ').map((word, index) => {
123
- if (this.romanNumerals.includes(word.toUpperCase())) {
124
- return word;
125
- }
126
- if (index !== 0 && this.prepositions.includes(word.toLocaleLowerCase())) {
127
- return word.toLocaleLowerCase();
128
- }
129
- return word.charAt(0).toLocaleUpperCase() + word.slice(1).toLocaleLowerCase();
130
- }).join(' ');
131
- }
132
- capitalizeOptions(options) {
133
- if (this.capitalize) {
134
- return options.map((option) => {
135
- option[this.optionLabel] = this.transformCapitalize(option[this.optionLabel]);
136
- return option;
137
- });
138
- }
139
- return options;
140
- }
141
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BaseComponentMultiSelect, deps: [{ token: i1.ComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
142
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: BaseComponentMultiSelect, selector: "ng-component", inputs: { options: "options", optionLabel: "optionLabel", optionValue: "optionValue", filter: "filter", showClear: "showClear", lazy: "lazy", filteredOptions: "filteredOptions", capitalize: "capitalize" }, outputs: { onSelectionChange: "onSelectionChange", onPanelHide: "onPanelHide", onSelectionValue: "onSelectionValue", onClick: "onClick" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
143
- }
144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: BaseComponentMultiSelect, decorators: [{
145
- type: Component,
146
- args: [{
147
- template: '',
148
- }]
149
- }], ctorParameters: () => [{ type: i1.ComponentService }], propDecorators: { options: [{
150
- type: Input
151
- }], optionLabel: [{
152
- type: Input
153
- }], optionValue: [{
154
- type: Input
155
- }], filter: [{
156
- type: Input
157
- }], showClear: [{
158
- type: Input
159
- }], lazy: [{
160
- type: Input
161
- }], filteredOptions: [{
162
- type: Input
163
- }], capitalize: [{
164
- type: Input
165
- }], onSelectionChange: [{
166
- type: Output
167
- }], onPanelHide: [{
168
- type: Output
169
- }], onSelectionValue: [{
170
- type: Output
171
- }], onClick: [{
172
- type: Output
173
- }] } });
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQtbXVsdGktc2VsZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtbXVsdGktc2VsZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQU0zRCxNQUFNLE9BQWdCLHdCQUF5QixTQUFRLGtCQUF1QjtJQXdDNUUsWUFDRSxnQkFBa0M7UUFFbEMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUF6Q2pCLFlBQU8sR0FBUSxFQUFFLENBQUM7UUFHbEIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUN4QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBRTNCLFNBQUksR0FBWSxLQUFLLENBQUM7UUFDdEIsb0JBQWUsR0FBUSxFQUFFLENBQUM7UUFFMUIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUUzQixzQkFBaUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxRCxnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3BELHFCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3pELFlBQU8sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUxRCxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUU3QixpQkFBWSxHQUFhO1lBQ3ZCLElBQUk7WUFDSixJQUFJO1lBQ0osSUFBSTtZQUNKLElBQUk7WUFDSixJ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OEdBdEttQix3QkFBd0I7a0dBQXhCLHdCQUF3QixvYUFGbEMsRUFBRTs7MkZBRVEsd0JBQXdCO2tCQUg3QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxFQUFFO2lCQUNiO3FGQUdVLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFSSxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnRJbnB1dCB9IGZyb20gJy4vYmFzZS1jb21wb25lbnQtaW5wdXQnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29tcG9uZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYmplY3RTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvb2JqZWN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmaWx0cm9Db21ibyB9IGZyb20gJy4uL2NvbXBvbmVudHMvZHJvcGRvd24vZmlsdHJvLmNvbWJvJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlOiAnJyxcclxufSlcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDb21wb25lbnRNdWx0aVNlbGVjdCBleHRlbmRzIEJhc2VDb21wb25lbnRJbnB1dDxhbnk+IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgb3B0aW9uczogYW55ID0gW107XHJcbiAgQElucHV0KCkgb3B0aW9uTGFiZWwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgb3B0aW9uVmFsdWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZmlsdGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0NsZWFyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIGxhenk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBmaWx0ZXJlZE9wdGlvbnM6IGFueSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBjYXBpdGFsaXplOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSBvblNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uUGFuZWxIaWRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25TZWxlY3Rpb25WYWx1ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBsb2FkZWRDb21ibzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcmVwb3NpdGlvbnM6IHN0cmluZ1tdID0gW1xyXG4gICAgJ2RlJyxcclxuICAgICdkYScsXHJcbiAgICAnZG8nLFxyXG4gICAgJ2VtJyxcclxuICAgICdubycsXHJcbiAgICAnbmEnLFxyXG4gICAgJ3BhcmEnLFxyXG4gICAgJ3BvcicsXHJcbiAgICAnY29tJyxcclxuICAgICdhJyxcclxuICAgICdvJyxcclxuICAgICdlJyxcclxuICBdO1xyXG5cclxuICByb21hbk51bWVyYWxzOiBzdHJpbmdbXSA9IFtcclxuICAgICdJJywgJ0lJJywgJ0lJSScsICdJVicsICdWJywgJ1ZJJywgJ1ZJSScsICdWSUlJJywgJ0lYJywgJ1gnLCAnWEknLCAnWElJJywgJ1hJSUknLCAnWElWJywgJ1hWJywgXHJcbiAgICAnWFZJJywgJ1hWSUknLCAnWFZJSUknLCAnWElYJywgJ1hYJ1xyXG4gIF07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgY29tcG9uZW50U2VydmljZTogQ29tcG9uZW50U2VydmljZSxcclxuICApIHtcclxuICAgIHN1cGVyKGNvbXBvbmVudFNlcnZpY2UpO1xyXG4gICAgdGhpcy5yZWdpc3Rlck9uVG91Y2hlZCgoKSA9PiB7IH0pO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5zZXRQbGFjZUhvbGRlcignU2VsZWNpb25lIHVtIHZhbG9yJyk7XHJcblxyXG4gICAgaWYgKCF0aGlzLmxhenkpIHRoaXMuY2FycmVnYXJDb21ibygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhcnJlZ2FyQ29tYm8oZmlsdHJvPzogZmlsdHJvQ29tYm8pOiB2b2lkIHtcclxuICAgIGlmIChmaWx0cm8pIHtcclxuICAgICAgdGhpcy5jYXJyZWdhckNvbWJvT2JzKHRoaXMubGlzdGFyQ29tYm8oZmlsdHJvKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5jYXJyZWdhckNvbWJvT2JzKHRoaXMubGlzdGFyKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYXJyZWdhckNvbWJvT2JzKG9iczogT2JzZXJ2YWJsZTxhbnk+KSB7XHJcblxyXG4gICAgaWYgKG9icykge1xyXG4gICAgICBvYnNcclxuICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZGF0YSkpXHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuY2FwaXRhbGl6ZU9wdGlvbnMoZGF0YSk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRlZENvbWJvID0gdHJ1ZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbHRlck9wdGlvbnMoZmllbGQ6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucykge1xyXG4gICAgICBsZXQgbGlzdGEgPSBPYmplY3RTZXJ2aWNlLmZpbHRlck9iamVjdCh0aGlzLm9wdGlvbnMsIGZpZWxkLCB2YWx1ZSk7XHJcbiAgICAgIGlmIChsaXN0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIG9mKGxpc3RhKS5zdWJzY3JpYmUoKG9wdHM6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMuY2FwaXRhbGl6ZU9wdGlvbnMob3B0cyk7XHJcblxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvbklucHV0Q2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25TZWxlY3Rpb25WYWx1ZS5lbWl0KGV2ZW50KTtcclxuXHJcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbCkge1xyXG4gICAgICBjb25zdCBjb250cm9sTmFtZSA9IHRoaXMuZ2V0TmFtZSh0aGlzLmZvcm1Db250cm9sIGFzIEZvcm1Db250cm9sKTtcclxuICAgICAgaWYgKGNvbnRyb2xOYW1lKSB7XHJcbiAgICAgICAgbGV0IGN1cnJlbnRJdGVtID0gT2JqZWN0U2VydmljZS5maW5kT2JqZWN0KFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLFxyXG4gICAgICAgICAgY29udHJvbE5hbWUsXHJcbiAgICAgICAgICBldmVudC52YWx1ZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZS5lbWl0KGN1cnJlbnRJdGVtKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25JbnB1dENsaWNrKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25DbGljay5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uSW5wdXRGaWx0ZXIoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIGlmIChldmVudC5maWx0ZXIpIHtcclxuICAgICAgICBpZiAoZXZlbnQuZmlsdGVyLmxlbmd0aCA+IDIpIHtcclxuICAgICAgICAgIHRoaXMuY2FycmVnYXJDb21ibyh7IHRlcm1vUGVzcXVpc2E6IGV2ZW50LmZpbHRlciB9IGFzIGZpbHRyb0NvbWJvKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBsaXN0YXIoKTogYW55IHsgfVxyXG4gIHByb3RlY3RlZCBsaXN0YXJDb21ibyh2YWx1ZTogYW55KTogYW55IHsgfVxyXG5cclxuICBwYW5lbEhpZGUoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5vblBhbmVsSGlkZS5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgYmFzZUlucHV0Q2xhc3MoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgcC1tdWx0aXNlbGVjdC1zbSAke3RoaXMuaGFzRXJyb3IgPyAnbmctaW52YWxpZCBuZy1kaXJ0eScgOiAnJ31gO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0aW9uQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVxdWVzdENvbXBsZXRlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmxvYWRlZENvbWJvO1xyXG4gIH1cclxuXHJcbiAgdHJhbnNmb3JtQ2FwaXRhbGl6ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiB2YWx1ZTtcclxuXHJcbiAgICByZXR1cm4gdmFsdWUuc3BsaXQoJyAnKS5tYXAoKHdvcmQsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnJvbWFuTnVtZXJhbHMuaW5jbHVkZXMod29yZC50b1VwcGVyQ2FzZSgpKSkge1xyXG4gICAgICAgIHJldHVybiB3b3JkO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaW5kZXggIT09IDAgJiYgdGhpcy5wcmVwb3NpdGlvbnMuaW5jbHVkZXMod29yZC50b0xvY2FsZUxvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgIHJldHVybiB3b3JkLnRvTG9jYWxlTG93ZXJDYXNlKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB3b3JkLmNoYXJBdCgwKS50b0xvY2FsZVVwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xyXG4gICAgfSkuam9pbignICcpO1xyXG4gIH1cclxuICBjYXBpdGFsaXplT3B0aW9ucyhvcHRpb25zOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIGlmICh0aGlzLmNhcGl0YWxpemUpIHtcclxuICAgICAgcmV0dXJuIG9wdGlvbnMubWFwKChvcHRpb246IGFueSkgPT4ge1xyXG4gICAgICAgIG9wdGlvblt0aGlzLm9wdGlvbkxhYmVsXSA9IHRoaXMudHJhbnNmb3JtQ2FwaXRhbGl6ZShvcHRpb25bdGhpcy5vcHRpb25MYWJlbF0pO1xyXG4gICAgICBcclxuICAgICAgICByZXR1cm4gb3B0aW9uO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBvcHRpb25zO1xyXG4gIH1cclxuXHJcbn1cclxuIl19