@ajsf/material 18.2.0 → 19.0.0-rc.0

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 (29) hide show
  1. package/fesm2022/ajsf-material.mjs +103 -98
  2. package/fesm2022/ajsf-material.mjs.map +1 -1
  3. package/lib/material-design-framework.module.d.ts +2 -2
  4. package/package.json +7 -9
  5. package/esm2022/ajsf-material.mjs +0 -5
  6. package/esm2022/lib/material-design-framework.component.mjs +0 -101
  7. package/esm2022/lib/material-design-framework.module.mjs +0 -111
  8. package/esm2022/lib/material-design.framework.mjs +0 -57
  9. package/esm2022/lib/widgets/flex-layout-root.component.mjs +0 -98
  10. package/esm2022/lib/widgets/flex-layout-section.component.mjs +0 -357
  11. package/esm2022/lib/widgets/material-add-reference.component.mjs +0 -66
  12. package/esm2022/lib/widgets/material-button-group.component.mjs +0 -90
  13. package/esm2022/lib/widgets/material-button.component.mjs +0 -76
  14. package/esm2022/lib/widgets/material-checkbox.component.mjs +0 -166
  15. package/esm2022/lib/widgets/material-checkboxes.component.mjs +0 -129
  16. package/esm2022/lib/widgets/material-chip-list.component.mjs +0 -35
  17. package/esm2022/lib/widgets/material-datepicker.component.mjs +0 -141
  18. package/esm2022/lib/widgets/material-file.component.mjs +0 -35
  19. package/esm2022/lib/widgets/material-input.component.mjs +0 -149
  20. package/esm2022/lib/widgets/material-number.component.mjs +0 -145
  21. package/esm2022/lib/widgets/material-one-of.component.mjs +0 -35
  22. package/esm2022/lib/widgets/material-radios.component.mjs +0 -122
  23. package/esm2022/lib/widgets/material-select.component.mjs +0 -186
  24. package/esm2022/lib/widgets/material-slider.component.mjs +0 -77
  25. package/esm2022/lib/widgets/material-stepper.component.mjs +0 -35
  26. package/esm2022/lib/widgets/material-tabs.component.mjs +0 -96
  27. package/esm2022/lib/widgets/material-textarea.component.mjs +0 -134
  28. package/esm2022/lib/widgets/public_api.mjs +0 -52
  29. package/esm2022/public_api.mjs +0 -8
@@ -1,357 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@ajsf/core";
4
- import * as i2 from "@angular/common";
5
- import * as i3 from "@angular/material/card";
6
- import * as i4 from "@angular/material/expansion";
7
- import * as i5 from "@angular/material/form-field";
8
- import * as i6 from "./flex-layout-root.component";
9
- export class FlexLayoutSectionComponent {
10
- constructor(jsf) {
11
- this.jsf = jsf;
12
- this.controlDisabled = false;
13
- this.boundControl = false;
14
- this.expanded = true;
15
- this.containerType = 'div';
16
- }
17
- get sectionTitle() {
18
- return this.options.notitle ? null : this.jsf.setItemTitle(this);
19
- }
20
- ngOnInit() {
21
- this.jsf.initializeControl(this);
22
- this.options = this.layoutNode.options || {};
23
- this.expanded = typeof this.options.expanded === 'boolean' ?
24
- this.options.expanded : !this.options.expandable;
25
- switch (this.layoutNode.type) {
26
- case 'section':
27
- case 'array':
28
- case 'fieldset':
29
- case 'advancedfieldset':
30
- case 'authfieldset':
31
- case 'optionfieldset':
32
- case 'selectfieldset':
33
- this.containerType = 'fieldset';
34
- break;
35
- case 'card':
36
- this.containerType = 'card';
37
- break;
38
- case 'expansion-panel':
39
- this.containerType = 'expansion-panel';
40
- break;
41
- default: // 'div', 'flex', 'tab', 'conditional', 'actions'
42
- this.containerType = 'div';
43
- }
44
- }
45
- toggleExpanded() {
46
- if (this.options.expandable) {
47
- this.expanded = !this.expanded;
48
- }
49
- }
50
- // fxLayoutAlign="start center" used to come from @angular/flex-layout, which
51
- // is deprecated and has no Angular 16+ release. These map the same option
52
- // values onto justify-content and align-items, so schemas setting
53
- // fxLayoutAlign or fxLayoutGap keep working unchanged. The existing
54
- // [style.display], [style.flex-direction] and [style.flex-wrap] bindings
55
- // already cover what fxLayout did.
56
- static { this.ALIGN = {
57
- start: 'flex-start', end: 'flex-end', center: 'center',
58
- 'space-between': 'space-between', 'space-around': 'space-around',
59
- 'space-evenly': 'space-evenly', stretch: 'stretch', baseline: 'baseline',
60
- }; }
61
- fxAlign(position) {
62
- const value = `${(this.options || {}).fxLayoutAlign || ''}`.trim().split(/\s+/)[position];
63
- return FlexLayoutSectionComponent.ALIGN[value] || null;
64
- }
65
- getJustifyContent() {
66
- return this.getFlexAttribute('justify-content') || this.fxAlign(0);
67
- }
68
- getAlignItems() {
69
- return this.getFlexAttribute('align-items') || this.fxAlign(1);
70
- }
71
- // Set attributes for flexbox container
72
- // (child attributes are set in flex-layout-root.component)
73
- getFlexAttribute(attribute) {
74
- const flexActive = this.layoutNode.type === 'flex' ||
75
- !!this.options.displayFlex ||
76
- this.options.display === 'flex';
77
- // if (attribute !== 'flex' && !flexActive) { return null; }
78
- switch (attribute) {
79
- case 'is-flex':
80
- return flexActive;
81
- case 'display':
82
- return flexActive ? 'flex' : 'initial';
83
- case 'flex-direction':
84
- case 'flex-wrap':
85
- const index = ['flex-direction', 'flex-wrap'].indexOf(attribute);
86
- return (this.options['flex-flow'] || '').split(/\s+/)[index] ||
87
- this.options[attribute] || ['column', 'nowrap'][index];
88
- case 'justify-content':
89
- case 'align-items':
90
- case 'align-content':
91
- return this.options[attribute];
92
- }
93
- }
94
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FlexLayoutSectionComponent, deps: [{ token: i1.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component }); }
95
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FlexLayoutSectionComponent, selector: "flex-layout-section-widget", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: `
96
- <div *ngIf="containerType === 'div'"
97
- [class]="options?.htmlClass || ''"
98
- [class.expandable]="options?.expandable && !expanded"
99
- [class.expanded]="options?.expandable && expanded">
100
- <label *ngIf="sectionTitle"
101
- [class]="'legend ' + (options?.labelHtmlClass || '')"
102
- [innerHTML]="sectionTitle"
103
- (click)="toggleExpanded()"></label>
104
- <flex-layout-root-widget *ngIf="expanded"
105
- [layout]="layoutNode.items"
106
- [dataIndex]="dataIndex"
107
- [layoutIndex]="layoutIndex"
108
- [isFlexItem]="getFlexAttribute('is-flex')"
109
- [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
110
- [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
111
- [style.display]="getFlexAttribute('display')"
112
- [style.flex-direction]="getFlexAttribute('flex-direction')"
113
- [style.flex-wrap]="getFlexAttribute('flex-wrap')"
114
- [style.justify-content]="getFlexAttribute('justify-content')"
115
- [style.align-items]="getFlexAttribute('align-items')"
116
- [style.align-content]="getFlexAttribute('align-content')"
117
- [style.gap]="options?.fxLayoutGap"
118
- [style.justify-content]="getJustifyContent()"
119
- [style.align-items]="getAlignItems()"></flex-layout-root-widget>
120
- <mat-error *ngIf="options?.showErrors && options?.errorMessage"
121
- [innerHTML]="options?.errorMessage"></mat-error>
122
- </div>
123
-
124
- <fieldset *ngIf="containerType === 'fieldset'"
125
- [class]="options?.htmlClass || ''"
126
- [class.expandable]="options?.expandable && !expanded"
127
- [class.expanded]="options?.expandable && expanded"
128
- [disabled]="options?.readonly">
129
- <legend *ngIf="sectionTitle"
130
- [class]="'legend ' + (options?.labelHtmlClass || '')"
131
- [innerHTML]="sectionTitle"
132
- (click)="toggleExpanded()"></legend>
133
- <flex-layout-root-widget *ngIf="expanded"
134
- [layout]="layoutNode.items"
135
- [dataIndex]="dataIndex"
136
- [layoutIndex]="layoutIndex"
137
- [isFlexItem]="getFlexAttribute('is-flex')"
138
- [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
139
- [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
140
- [style.display]="getFlexAttribute('display')"
141
- [style.flex-direction]="getFlexAttribute('flex-direction')"
142
- [style.flex-wrap]="getFlexAttribute('flex-wrap')"
143
- [style.justify-content]="getFlexAttribute('justify-content')"
144
- [style.align-items]="getFlexAttribute('align-items')"
145
- [style.align-content]="getFlexAttribute('align-content')"
146
- [style.gap]="options?.fxLayoutGap"
147
- [style.justify-content]="getJustifyContent()"
148
- [style.align-items]="getAlignItems()"></flex-layout-root-widget>
149
- <mat-error *ngIf="options?.showErrors && options?.errorMessage"
150
- [innerHTML]="options?.errorMessage"></mat-error>
151
- </fieldset>
152
-
153
- <mat-card appearance="outlined" *ngIf="containerType === 'card'"
154
- [ngClass]="options?.htmlClass || ''"
155
- [class.expandable]="options?.expandable && !expanded"
156
- [class.expanded]="options?.expandable && expanded">
157
- <mat-card-header *ngIf="sectionTitle">
158
- <legend
159
- [class]="'legend ' + (options?.labelHtmlClass || '')"
160
- [innerHTML]="sectionTitle"
161
- (click)="toggleExpanded()"></legend>
162
- </mat-card-header>
163
- <mat-card-content *ngIf="expanded">
164
- <fieldset [disabled]="options?.readonly">
165
- <flex-layout-root-widget *ngIf="expanded"
166
- [layout]="layoutNode.items"
167
- [dataIndex]="dataIndex"
168
- [layoutIndex]="layoutIndex"
169
- [isFlexItem]="getFlexAttribute('is-flex')"
170
- [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
171
- [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
172
- [style.display]="getFlexAttribute('display')"
173
- [style.flex-direction]="getFlexAttribute('flex-direction')"
174
- [style.flex-wrap]="getFlexAttribute('flex-wrap')"
175
- [style.justify-content]="getFlexAttribute('justify-content')"
176
- [style.align-items]="getFlexAttribute('align-items')"
177
- [style.align-content]="getFlexAttribute('align-content')"
178
- [style.gap]="options?.fxLayoutGap"
179
- [style.justify-content]="getJustifyContent()"
180
- [style.align-items]="getAlignItems()"></flex-layout-root-widget>
181
- </fieldset>
182
- </mat-card-content>
183
- <mat-card-footer>
184
- <mat-error *ngIf="options?.showErrors && options?.errorMessage"
185
- [innerHTML]="options?.errorMessage"></mat-error>
186
- </mat-card-footer>
187
- </mat-card>
188
-
189
- <mat-expansion-panel *ngIf="containerType === 'expansion-panel'"
190
- [expanded]="expanded"
191
- [hideToggle]="!options?.expandable">
192
- <mat-expansion-panel-header>
193
- <mat-panel-title>
194
- <legend *ngIf="sectionTitle"
195
- [class]="options?.labelHtmlClass"
196
- [innerHTML]="sectionTitle"
197
- (click)="toggleExpanded()"></legend>
198
- </mat-panel-title>
199
- </mat-expansion-panel-header>
200
- <fieldset [disabled]="options?.readonly">
201
- <flex-layout-root-widget *ngIf="expanded"
202
- [layout]="layoutNode.items"
203
- [dataIndex]="dataIndex"
204
- [layoutIndex]="layoutIndex"
205
- [isFlexItem]="getFlexAttribute('is-flex')"
206
- [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
207
- [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
208
- [style.display]="getFlexAttribute('display')"
209
- [style.flex-direction]="getFlexAttribute('flex-direction')"
210
- [style.flex-wrap]="getFlexAttribute('flex-wrap')"
211
- [style.justify-content]="getFlexAttribute('justify-content')"
212
- [style.align-items]="getFlexAttribute('align-items')"
213
- [style.align-content]="getFlexAttribute('align-content')"
214
- [style.gap]="options?.fxLayoutGap"
215
- [style.justify-content]="getJustifyContent()"
216
- [style.align-items]="getAlignItems()"></flex-layout-root-widget>
217
- </fieldset>
218
- <mat-error *ngIf="options?.showErrors && options?.errorMessage"
219
- [innerHTML]="options?.errorMessage"></mat-error>
220
- </mat-expansion-panel>`, isInline: true, styles: ["fieldset{border:0;margin:0;padding:0}.legend{font-weight:700}.expandable>.legend:before{content:\"\\25b6\";padding-right:.3em}.expanded>.legend:before{content:\"\\25bc\";padding-right:.2em}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i3.MatCardFooter, selector: "mat-card-footer" }, { kind: "component", type: i3.MatCardHeader, selector: "mat-card-header" }, { kind: "component", type: i4.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i4.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i4.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i6.FlexLayoutRootComponent, selector: "flex-layout-root-widget", inputs: ["dataIndex", "layoutIndex", "layout", "isFlexItem"] }] }); }
221
- }
222
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FlexLayoutSectionComponent, decorators: [{
223
- type: Component,
224
- args: [{ selector: 'flex-layout-section-widget', template: `
225
- <div *ngIf="containerType === 'div'"
226
- [class]="options?.htmlClass || ''"
227
- [class.expandable]="options?.expandable && !expanded"
228
- [class.expanded]="options?.expandable && expanded">
229
- <label *ngIf="sectionTitle"
230
- [class]="'legend ' + (options?.labelHtmlClass || '')"
231
- [innerHTML]="sectionTitle"
232
- (click)="toggleExpanded()"></label>
233
- <flex-layout-root-widget *ngIf="expanded"
234
- [layout]="layoutNode.items"
235
- [dataIndex]="dataIndex"
236
- [layoutIndex]="layoutIndex"
237
- [isFlexItem]="getFlexAttribute('is-flex')"
238
- [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
239
- [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
240
- [style.display]="getFlexAttribute('display')"
241
- [style.flex-direction]="getFlexAttribute('flex-direction')"
242
- [style.flex-wrap]="getFlexAttribute('flex-wrap')"
243
- [style.justify-content]="getFlexAttribute('justify-content')"
244
- [style.align-items]="getFlexAttribute('align-items')"
245
- [style.align-content]="getFlexAttribute('align-content')"
246
- [style.gap]="options?.fxLayoutGap"
247
- [style.justify-content]="getJustifyContent()"
248
- [style.align-items]="getAlignItems()"></flex-layout-root-widget>
249
- <mat-error *ngIf="options?.showErrors && options?.errorMessage"
250
- [innerHTML]="options?.errorMessage"></mat-error>
251
- </div>
252
-
253
- <fieldset *ngIf="containerType === 'fieldset'"
254
- [class]="options?.htmlClass || ''"
255
- [class.expandable]="options?.expandable && !expanded"
256
- [class.expanded]="options?.expandable && expanded"
257
- [disabled]="options?.readonly">
258
- <legend *ngIf="sectionTitle"
259
- [class]="'legend ' + (options?.labelHtmlClass || '')"
260
- [innerHTML]="sectionTitle"
261
- (click)="toggleExpanded()"></legend>
262
- <flex-layout-root-widget *ngIf="expanded"
263
- [layout]="layoutNode.items"
264
- [dataIndex]="dataIndex"
265
- [layoutIndex]="layoutIndex"
266
- [isFlexItem]="getFlexAttribute('is-flex')"
267
- [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
268
- [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
269
- [style.display]="getFlexAttribute('display')"
270
- [style.flex-direction]="getFlexAttribute('flex-direction')"
271
- [style.flex-wrap]="getFlexAttribute('flex-wrap')"
272
- [style.justify-content]="getFlexAttribute('justify-content')"
273
- [style.align-items]="getFlexAttribute('align-items')"
274
- [style.align-content]="getFlexAttribute('align-content')"
275
- [style.gap]="options?.fxLayoutGap"
276
- [style.justify-content]="getJustifyContent()"
277
- [style.align-items]="getAlignItems()"></flex-layout-root-widget>
278
- <mat-error *ngIf="options?.showErrors && options?.errorMessage"
279
- [innerHTML]="options?.errorMessage"></mat-error>
280
- </fieldset>
281
-
282
- <mat-card appearance="outlined" *ngIf="containerType === 'card'"
283
- [ngClass]="options?.htmlClass || ''"
284
- [class.expandable]="options?.expandable && !expanded"
285
- [class.expanded]="options?.expandable && expanded">
286
- <mat-card-header *ngIf="sectionTitle">
287
- <legend
288
- [class]="'legend ' + (options?.labelHtmlClass || '')"
289
- [innerHTML]="sectionTitle"
290
- (click)="toggleExpanded()"></legend>
291
- </mat-card-header>
292
- <mat-card-content *ngIf="expanded">
293
- <fieldset [disabled]="options?.readonly">
294
- <flex-layout-root-widget *ngIf="expanded"
295
- [layout]="layoutNode.items"
296
- [dataIndex]="dataIndex"
297
- [layoutIndex]="layoutIndex"
298
- [isFlexItem]="getFlexAttribute('is-flex')"
299
- [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
300
- [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
301
- [style.display]="getFlexAttribute('display')"
302
- [style.flex-direction]="getFlexAttribute('flex-direction')"
303
- [style.flex-wrap]="getFlexAttribute('flex-wrap')"
304
- [style.justify-content]="getFlexAttribute('justify-content')"
305
- [style.align-items]="getFlexAttribute('align-items')"
306
- [style.align-content]="getFlexAttribute('align-content')"
307
- [style.gap]="options?.fxLayoutGap"
308
- [style.justify-content]="getJustifyContent()"
309
- [style.align-items]="getAlignItems()"></flex-layout-root-widget>
310
- </fieldset>
311
- </mat-card-content>
312
- <mat-card-footer>
313
- <mat-error *ngIf="options?.showErrors && options?.errorMessage"
314
- [innerHTML]="options?.errorMessage"></mat-error>
315
- </mat-card-footer>
316
- </mat-card>
317
-
318
- <mat-expansion-panel *ngIf="containerType === 'expansion-panel'"
319
- [expanded]="expanded"
320
- [hideToggle]="!options?.expandable">
321
- <mat-expansion-panel-header>
322
- <mat-panel-title>
323
- <legend *ngIf="sectionTitle"
324
- [class]="options?.labelHtmlClass"
325
- [innerHTML]="sectionTitle"
326
- (click)="toggleExpanded()"></legend>
327
- </mat-panel-title>
328
- </mat-expansion-panel-header>
329
- <fieldset [disabled]="options?.readonly">
330
- <flex-layout-root-widget *ngIf="expanded"
331
- [layout]="layoutNode.items"
332
- [dataIndex]="dataIndex"
333
- [layoutIndex]="layoutIndex"
334
- [isFlexItem]="getFlexAttribute('is-flex')"
335
- [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
336
- [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
337
- [style.display]="getFlexAttribute('display')"
338
- [style.flex-direction]="getFlexAttribute('flex-direction')"
339
- [style.flex-wrap]="getFlexAttribute('flex-wrap')"
340
- [style.justify-content]="getFlexAttribute('justify-content')"
341
- [style.align-items]="getFlexAttribute('align-items')"
342
- [style.align-content]="getFlexAttribute('align-content')"
343
- [style.gap]="options?.fxLayoutGap"
344
- [style.justify-content]="getJustifyContent()"
345
- [style.align-items]="getAlignItems()"></flex-layout-root-widget>
346
- </fieldset>
347
- <mat-error *ngIf="options?.showErrors && options?.errorMessage"
348
- [innerHTML]="options?.errorMessage"></mat-error>
349
- </mat-expansion-panel>`, styles: ["fieldset{border:0;margin:0;padding:0}.legend{font-weight:700}.expandable>.legend:before{content:\"\\25b6\";padding-right:.3em}.expanded>.legend:before{content:\"\\25bc\";padding-right:.2em}\n"] }]
350
- }], ctorParameters: () => [{ type: i1.JsonSchemaFormService }], propDecorators: { layoutNode: [{
351
- type: Input
352
- }], layoutIndex: [{
353
- type: Input
354
- }], dataIndex: [{
355
- type: Input
356
- }] } });
357
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1sYXlvdXQtc2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hanNmLW1hdGVyaWFsL3NyYy9saWIvd2lkZ2V0cy9mbGV4LWxheW91dC1zZWN0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7QUEySXpELE1BQU0sT0FBTywwQkFBMEI7SUFhckMsWUFDVSxHQUEwQjtRQUExQixRQUFHLEdBQUgsR0FBRyxDQUF1QjtRQVZwQyxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVyQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO0lBT2xCLENBQUM7SUFFTCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDbkQsUUFBUSxJQUFJLENBQUMsVUFBVSxDQUFDLElB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Q0FBQyxDQUFDLEtBQUssQ0FBQztvQkFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRCxLQUFLLGlCQUFpQixDQUFDO1lBQUMsS0FBSyxhQUFhLENBQUM7WUFBQyxLQUFLLGVBQWU7Z0JBQzlELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQzsrR0EzRlUsMEJBQTBCO21HQUExQiwwQkFBMEIsNEpBckkzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkJBNkhlOzs0RkFRZCwwQkFBMEI7a0JBeEl0QyxTQUFTOytCQUVFLDRCQUE0QixZQUM1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkJBNkhlOzBGQWlCaEIsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEpzb25TY2hlbWFGb3JtU2VydmljZSB9IGZyb20gJ0BhanNmL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2ZsZXgtbGF5b3V0LXNlY3Rpb24td2lkZ2V0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2ICpuZ0lmPVwiY29udGFpbmVyVHlwZSA9PT0gJ2RpdidcIlxuICAgICAgW2NsYXNzXT1cIm9wdGlvbnM/Lmh0bWxDbGFzcyB8fCAnJ1wiXG4gICAgICBbY2xhc3MuZXhwYW5kYWJsZV09XCJvcHRpb25zPy5leHBhbmRhYmxlICYmICFleHBhbmRlZFwiXG4gICAgICBbY2xhc3MuZXhwYW5kZWRdPVwib3B0aW9ucz8uZXhwYW5kYWJsZSAmJiBleHBhbmRlZFwiPlxuICAgICAgPGxhYmVsICpuZ0lmPVwic2VjdGlvblRpdGxlXCJcbiAgICAgICAgW2NsYXNzXT1cIidsZWdlbmQgJyArIChvcHRpb25zPy5sYWJlbEh0bWxDbGFzcyB8fCAnJylcIlxuICAgICAgICBbaW5uZXJIVE1MXT1cInNlY3Rpb25UaXRsZVwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVFeHBhbmRlZCgpXCI+PC9sYWJlbD5cbiAgICAgIDxmbGV4LWxheW91dC1yb290LXdpZGdldCAqbmdJZj1cImV4cGFuZGVkXCJcbiAgICAgICAgW2xheW91dF09XCJsYXlvdXROb2RlLml0ZW1zXCJcbiAgICAgICAgW2RhdGFJbmRleF09XCJkYXRhSW5kZXhcIlxuICAgICAgICBbbGF5b3V0SW5kZXhdPVwibGF5b3V0SW5kZXhcIlxuICAgICAgICBbaXNGbGV4SXRlbV09XCJnZXRGbGV4QXR0cmlidXRlKCdpcy1mbGV4JylcIlxuICAgICAgICBbY2xhc3MuZm9ybS1mbGV4LWNvbHVtbl09XCJnZXRGbGV4QXR0cmlidXRlKCdmbGV4LWRpcmVjdGlvbicpID09PSAnY29sdW1uJ1wiXG4gICAgICAgIFtjbGFzcy5mb3JtLWZsZXgtcm93XT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtZGlyZWN0aW9uJykgPT09ICdyb3cnXCJcbiAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZGlzcGxheScpXCJcbiAgICAgICAgW3N0eWxlLmZsZXgtZGlyZWN0aW9uXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtZGlyZWN0aW9uJylcIlxuICAgICAgICBbc3R5bGUuZmxleC13cmFwXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtd3JhcCcpXCJcbiAgICAgICAgW3N0eWxlLmp1c3RpZnktY29udGVudF09XCJnZXRGbGV4QXR0cmlidXRlKCdqdXN0aWZ5LWNvbnRlbnQnKVwiXG4gICAgICAgIFtzdHlsZS5hbGlnbi1pdGVtc109XCJnZXRGbGV4QXR0cmlidXRlKCdhbGlnbi1pdGVtcycpXCJcbiAgICAgICAgW3N0eWxlLmFsaWduLWNvbnRlbnRdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnYWxpZ24tY29udGVudCcpXCJcbiAgICAgICAgW3N0eWxlLmdhcF09XCJvcHRpb25zPy5meExheW91dEdhcFwiXG4gICAgICAgIFtzdHlsZS5qdXN0aWZ5LWNvbnRlbnRdPVwiZ2V0SnVzdGlmeUNvbnRlbnQoKVwiXG4gICAgICAgIFtzdHlsZS5hbGlnbi1pdGVtc109XCJnZXRBbGlnbkl0ZW1zKClcIj48L2ZsZXgtbGF5b3V0LXJvb3Qtd2lkZ2V0PlxuICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIm9wdGlvbnM/LnNob3dFcnJvcnMgJiYgb3B0aW9ucz8uZXJyb3JNZXNzYWdlXCJcbiAgICAgICAgW2lubmVySFRNTF09XCJvcHRpb25zPy5lcnJvck1lc3NhZ2VcIj48L21hdC1lcnJvcj5cbiAgICA8L2Rpdj5cblxuICAgIDxmaWVsZHNldCAqbmdJZj1cImNvbnRhaW5lclR5cGUgPT09ICdmaWVsZHNldCdcIlxuICAgICAgW2NsYXNzXT1cIm9wdGlvbnM/Lmh0bWxDbGFzcyB8fCAnJ1wiXG4gICAgICBbY2xhc3MuZXhwYW5kYWJsZV09XCJvcHRpb25zPy5leHBhbmRhYmxlICYmICFleHBhbmRlZFwiXG4gICAgICBbY2xhc3MuZXhwYW5kZWRdPVwib3B0aW9ucz8uZXhwYW5kYWJsZSAmJiBleHBhbmRlZFwiXG4gICAgICBbZGlzYWJsZWRdPVwib3B0aW9ucz8ucmVhZG9ubHlcIj5cbiAgICAgIDxsZWdlbmQgKm5nSWY9XCJzZWN0aW9uVGl0bGVcIlxuICAgICAgICBbY2xhc3NdPVwiJ2xlZ2VuZCAnICsgKG9wdGlvbnM/LmxhYmVsSHRtbENsYXNzIHx8ICcnKVwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwic2VjdGlvblRpdGxlXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUV4cGFuZGVkKClcIj48L2xlZ2VuZD5cbiAgICAgIDxmbGV4LWxheW91dC1yb290LXdpZGdldCAqbmdJZj1cImV4cGFuZGVkXCJcbiAgICAgICAgW2xheW91dF09XCJsYXlvdXROb2RlLml0ZW1zXCJcbiAgICAgICAgW2RhdGFJbmRleF09XCJkYXRhSW5kZXhcIlxuICAgICAgICBbbGF5b3V0SW5kZXhdPVwibGF5b3V0SW5kZXhcIlxuICAgICAgICBbaXNGbGV4SXRlbV09XCJnZXRGbGV4QXR0cmlidXRlKCdpcy1mbGV4JylcIlxuICAgICAgICBbY2xhc3MuZm9ybS1mbGV4LWNvbHVtbl09XCJnZXRGbGV4QXR0cmlidXRlKCdmbGV4LWRpcmVjdGlvbicpID09PSAnY29sdW1uJ1wiXG4gICAgICAgIFtjbGFzcy5mb3JtLWZsZXgtcm93XT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtZGlyZWN0aW9uJykgPT09ICdyb3cnXCJcbiAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZGlzcGxheScpXCJcbiAgICAgICAgW3N0eWxlLmZsZXgtZGlyZWN0aW9uXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtZGlyZWN0aW9uJylcIlxuICAgICAgICBbc3R5bGUuZmxleC13cmFwXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtd3JhcCcpXCJcbiAgICAgICAgW3N0eWxlLmp1c3RpZnktY29udGVudF09XCJnZXRGbGV4QXR0cmlidXRlKCdqdXN0aWZ5LWNvbnRlbnQnKVwiXG4gICAgICAgIFtzdHlsZS5hbGlnbi1pdGVtc109XCJnZXRGbGV4QXR0cmlidXRlKCdhbGlnbi1pdGVtcycpXCJcbiAgICAgICAgW3N0eWxlLmFsaWduLWNvbnRlbnRdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnYWxpZ24tY29udGVudCcpXCJcbiAgICAgICAgW3N0eWxlLmdhcF09XCJvcHRpb25zPy5meExheW91dEdhcFwiXG4gICAgICAgIFtzdHlsZS5qdXN0aWZ5LWNvbnRlbnRdPVwiZ2V0SnVzdGlmeUNvbnRlbnQoKVwiXG4gICAgICAgIFtzdHlsZS5hbGlnbi1pdGVtc109XCJnZXRBbGlnbkl0ZW1zKClcIj48L2ZsZXgtbGF5b3V0LXJvb3Qtd2lkZ2V0PlxuICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIm9wdGlvbnM/LnNob3dFcnJvcnMgJiYgb3B0aW9ucz8uZXJyb3JNZXNzYWdlXCJcbiAgICAgICAgW2lubmVySFRNTF09XCJvcHRpb25zPy5lcnJvck1lc3NhZ2VcIj48L21hdC1lcnJvcj5cbiAgICA8L2ZpZWxkc2V0PlxuXG4gICAgPG1hdC1jYXJkIGFwcGVhcmFuY2U9XCJvdXRsaW5lZFwiICpuZ0lmPVwiY29udGFpbmVyVHlwZSA9PT0gJ2NhcmQnXCJcbiAgICAgIFtuZ0NsYXNzXT1cIm9wdGlvbnM/Lmh0bWxDbGFzcyB8fCAnJ1wiXG4gICAgICBbY2xhc3MuZXhwYW5kYWJsZV09XCJvcHRpb25zPy5leHBhbmRhYmxlICYmICFleHBhbmRlZFwiXG4gICAgICBbY2xhc3MuZXhwYW5kZWRdPVwib3B0aW9ucz8uZXhwYW5kYWJsZSAmJiBleHBhbmRlZFwiPlxuICAgICAgPG1hdC1jYXJkLWhlYWRlciAqbmdJZj1cInNlY3Rpb25UaXRsZVwiPlxuICAgICAgICA8bGVnZW5kXG4gICAgICAgICAgW2NsYXNzXT1cIidsZWdlbmQgJyArIChvcHRpb25zPy5sYWJlbEh0bWxDbGFzcyB8fCAnJylcIlxuICAgICAgICAgIFtpbm5lckhUTUxdPVwic2VjdGlvblRpdGxlXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRXhwYW5kZWQoKVwiPjwvbGVnZW5kPlxuICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XG4gICAgICA8bWF0LWNhcmQtY29udGVudCAqbmdJZj1cImV4cGFuZGVkXCI+XG4gICAgICAgIDxmaWVsZHNldCBbZGlzYWJsZWRdPVwib3B0aW9ucz8ucmVhZG9ubHlcIj5cbiAgICAgICAgICA8ZmxleC1sYXlvdXQtcm9vdC13aWRnZXQgKm5nSWY9XCJleHBhbmRlZFwiXG4gICAgICAgICAgICBbbGF5b3V0XT1cImxheW91dE5vZGUuaXRlbXNcIlxuICAgICAgICAgICAgW2RhdGFJbmRleF09XCJkYXRhSW5kZXhcIlxuICAgICAgICAgICAgW2xheW91dEluZGV4XT1cImxheW91dEluZGV4XCJcbiAgICAgICAgICAgIFtpc0ZsZXhJdGVtXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2lzLWZsZXgnKVwiXG4gICAgICAgICAgICBbY2xhc3MuZm9ybS1mbGV4LWNvbHVtbl09XCJnZXRGbGV4QXR0cmlidXRlKCdmbGV4LWRpcmVjdGlvbicpID09PSAnY29sdW1uJ1wiXG4gICAgICAgICAgICBbY2xhc3MuZm9ybS1mbGV4LXJvd109XCJnZXRGbGV4QXR0cmlidXRlKCdmbGV4LWRpcmVjdGlvbicpID09PSAncm93J1wiXG4gICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJnZXRGbGV4QXR0cmlidXRlKCdkaXNwbGF5JylcIlxuICAgICAgICAgICAgW3N0eWxlLmZsZXgtZGlyZWN0aW9uXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtZGlyZWN0aW9uJylcIlxuICAgICAgICAgICAgW3N0eWxlLmZsZXgtd3JhcF09XCJnZXRGbGV4QXR0cmlidXRlKCdmbGV4LXdyYXAnKVwiXG4gICAgICAgICAgICBbc3R5bGUuanVzdGlmeS1jb250ZW50XT1cImdldEZsZXhBdHRyaWJ1dGUoJ2p1c3RpZnktY29udGVudCcpXCJcbiAgICAgICAgICAgIFtzdHlsZS5hbGlnbi1pdGVtc109XCJnZXRGbGV4QXR0cmlidXRlKCdhbGlnbi1pdGVtcycpXCJcbiAgICAgICAgICAgIFtzdHlsZS5hbGlnbi1jb250ZW50XT1cImdldEZsZXhBdHRyaWJ1dGUoJ2FsaWduLWNvbnRlbnQnKVwiXG4gICAgICAgICAgICBbc3R5bGUuZ2FwXT1cIm9wdGlvbnM/LmZ4TGF5b3V0R2FwXCJcbiAgICAgICAgICAgIFtzdHlsZS5qdXN0aWZ5LWNvbnRlbnRdPVwiZ2V0SnVzdGlmeUNvbnRlbnQoKVwiXG4gICAgICAgICAgICBbc3R5bGUuYWxpZ24taXRlbXNdPVwiZ2V0QWxpZ25JdGVtcygpXCI+PC9mbGV4LWxheW91dC1yb290LXdpZGdldD5cbiAgICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgICAgPG1hdC1jYXJkLWZvb3Rlcj5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIm9wdGlvbnM/LnNob3dFcnJvcnMgJiYgb3B0aW9ucz8uZXJyb3JNZXNzYWdlXCJcbiAgICAgICAgICBbaW5uZXJIVE1MXT1cIm9wdGlvbnM/LmVycm9yTWVzc2FnZVwiPjwvbWF0LWVycm9yPlxuICAgICAgPC9tYXQtY2FyZC1mb290ZXI+XG4gICAgPC9tYXQtY2FyZD5cblxuICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsICpuZ0lmPVwiY29udGFpbmVyVHlwZSA9PT0gJ2V4cGFuc2lvbi1wYW5lbCdcIlxuICAgICAgW2V4cGFuZGVkXT1cImV4cGFuZGVkXCJcbiAgICAgIFtoaWRlVG9nZ2xlXT1cIiFvcHRpb25zPy5leHBhbmRhYmxlXCI+XG4gICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgPGxlZ2VuZCAqbmdJZj1cInNlY3Rpb25UaXRsZVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwib3B0aW9ucz8ubGFiZWxIdG1sQ2xhc3NcIlxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJzZWN0aW9uVGl0bGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUV4cGFuZGVkKClcIj48L2xlZ2VuZD5cbiAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XG4gICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgPGZpZWxkc2V0IFtkaXNhYmxlZF09XCJvcHRpb25zPy5yZWFkb25seVwiPlxuICAgICAgICA8ZmxleC1sYXlvdXQtcm9vdC13aWRnZXQgKm5nSWY9XCJleHBhbmRlZFwiXG4gICAgICAgICAgW2xheW91dF09XCJsYXlvdXROb2RlLml0ZW1zXCJcbiAgICAgICAgICBbZGF0YUluZGV4XT1cImRhdGFJbmRleFwiXG4gICAgICAgICAgW2xheW91dEluZGV4XT1cImxheW91dEluZGV4XCJcbiAgICAgICAgICBbaXNGbGV4SXRlbV09XCJnZXRGbGV4QXR0cmlidXRlKCdpcy1mbGV4JylcIlxuICAgICAgICAgIFtjbGFzcy5mb3JtLWZsZXgtY29sdW1uXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtZGlyZWN0aW9uJykgPT09ICdjb2x1bW4nXCJcbiAgICAgICAgICBbY2xhc3MuZm9ybS1mbGV4LXJvd109XCJnZXRGbGV4QXR0cmlidXRlKCdmbGV4LWRpcmVjdGlvbicpID09PSAncm93J1wiXG4gICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZGlzcGxheScpXCJcbiAgICAgICAgICBbc3R5bGUuZmxleC1kaXJlY3Rpb25dPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZmxleC1kaXJlY3Rpb24nKVwiXG4gICAgICAgICAgW3N0eWxlLmZsZXgtd3JhcF09XCJnZXRGbGV4QXR0cmlidXRlKCdmbGV4LXdyYXAnKVwiXG4gICAgICAgICAgW3N0eWxlLmp1c3RpZnktY29udGVudF09XCJnZXRGbGV4QXR0cmlidXRlKCdqdXN0aWZ5LWNvbnRlbnQnKVwiXG4gICAgICAgICAgW3N0eWxlLmFsaWduLWl0ZW1zXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2FsaWduLWl0ZW1zJylcIlxuICAgICAgICAgIFtzdHlsZS5hbGlnbi1jb250ZW50XT1cImdldEZsZXhBdHRyaWJ1dGUoJ2FsaWduLWNvbnRlbnQnKVwiXG4gICAgICAgICAgW3N0eWxlLmdhcF09XCJvcHRpb25zPy5meExheW91dEdhcFwiXG4gICAgICAgICAgW3N0eWxlLmp1c3RpZnktY29udGVudF09XCJnZXRKdXN0aWZ5Q29udGVudCgpXCJcbiAgICAgICAgICBbc3R5bGUuYWxpZ24taXRlbXNdPVwiZ2V0QWxpZ25JdGVtcygpXCI+PC9mbGV4LWxheW91dC1yb290LXdpZGdldD5cbiAgICAgIDwvZmllbGRzZXQ+XG4gICAgICA8bWF0LWVycm9yICpuZ0lmPVwib3B0aW9ucz8uc2hvd0Vycm9ycyAmJiBvcHRpb25zPy5lcnJvck1lc3NhZ2VcIlxuICAgICAgICBbaW5uZXJIVE1MXT1cIm9wdGlvbnM/LmVycm9yTWVzc2FnZVwiPjwvbWF0LWVycm9yPlxuICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5gLFxuICBzdHlsZXM6IFtgXG4gICAgZmllbGRzZXQgeyBib3JkZXI6IDA7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgfVxuICAgIC5sZWdlbmQgeyBmb250LXdlaWdodDogYm9sZDsgfVxuICAgIC5leHBhbmRhYmxlID4gLmxlZ2VuZDpiZWZvcmUgeyBjb250ZW50OiAn4pa2JzsgcGFkZGluZy1yaWdodDogLjNlbTsgfVxuICAgIC5leHBhbmRlZCA+IC5sZWdlbmQ6YmVmb3JlIHsgY29udGVudDogJ+KWvCc7IHBhZGRpbmctcmlnaHQ6IC4yZW07IH1cbiAgYF0sXG59KVxuZXhwb3J0IGNsYXNzIEZsZXhMYXlvdXRTZWN0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcbiAgY29udHJvbE5hbWU6IHN0cmluZztcbiAgY29udHJvbFZhbHVlOiBhbnk7XG4gIGNvbnRyb2xEaXNhYmxlZCA9IGZhbHNlO1xuICBib3VuZENvbnRyb2wgPSBmYWxzZTtcbiAgb3B0aW9uczogYW55O1xuICBleHBhbmRlZCA9IHRydWU7XG4gIGNvbnRhaW5lclR5cGUgPSAnZGl2JztcbiAgQElucHV0KCkgbGF5b3V0Tm9kZTogYW55O1xuICBASW5wdXQoKSBsYXlvdXRJbmRleDogbnVtYmVyW107XG4gIEBJbnB1dCgpIGRhdGFJbmRleDogbnVtYmVyW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBqc2Y6IEpzb25TY2hlbWFGb3JtU2VydmljZVxuICApIHsgfVxuXG4gIGdldCBzZWN0aW9uVGl0bGUoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5ub3RpdGxlID8gbnVsbCA6IHRoaXMuanNmLnNldEl0ZW1UaXRsZSh0aGlzKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuanNmLmluaXRpYWxpemVDb250cm9sKHRoaXMpO1xuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMubGF5b3V0Tm9kZS5vcHRpb25zIHx8IHt9O1xuICAgIHRoaXMuZXhwYW5kZWQgPSB0eXBlb2YgdGhpcy5vcHRpb25zLmV4cGFuZGVkID09PSAnYm9vbGVhbicgP1xuICAgICAgdGhpcy5vcHRpb25zLmV4cGFuZGVkIDogIXRoaXMub3B0aW9ucy5leHBhbmRhYmxlO1xuICAgIHN3aXRjaCAodGhpcy5sYXlvdXROb2RlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3NlY3Rpb24nOiBjYXNlICdhcnJheSc6IGNhc2UgJ2ZpZWxkc2V0JzogY2FzZSAnYWR2YW5jZWRmaWVsZHNldCc6XG4gICAgICBjYXNlICdhdXRoZmllbGRzZXQnOiBjYXNlICdvcHRpb25maWVsZHNldCc6IGNhc2UgJ3NlbGVjdGZpZWxkc2V0JzpcbiAgICAgICAgdGhpcy5jb250YWluZXJUeXBlID0gJ2ZpZWxkc2V0JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjYXJkJzpcbiAgICAgICAgdGhpcy5jb250YWluZXJUeXBlID0gJ2NhcmQnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V4cGFuc2lvbi1wYW5lbCc6XG4gICAgICAgIHRoaXMuY29udGFpbmVyVHlwZSA9ICdleHBhbnNpb24tcGFuZWwnO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6IC8vICdkaXYnLCAnZmxleCcsICd0YWInLCAnY29uZGl0aW9uYWwnLCAnYWN0aW9ucydcbiAgICAgICAgdGhpcy5jb250YWluZXJUeXBlID0gJ2Rpdic7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlRXhwYW5kZWQoKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5leHBhbmRhYmxlKSB7IHRoaXMuZXhwYW5kZWQgPSAhdGhpcy5leHBhbmRlZDsgfVxuICB9XG5cbiAgLy8gZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIHVzZWQgdG8gY29tZSBmcm9tIEBhbmd1bGFyL2ZsZXgtbGF5b3V0LCB3aGljaFxuICAvLyBpcyBkZXByZWNhdGVkIGFuZCBoYXMgbm8gQW5ndWxhciAxNisgcmVsZWFzZS4gVGhlc2UgbWFwIHRoZSBzYW1lIG9wdGlvblxuICAvLyB2YWx1ZXMgb250byBqdXN0aWZ5LWNvbnRlbnQgYW5kIGFsaWduLWl0ZW1zLCBzbyBzY2hlbWFzIHNldHRpbmdcbiAgLy8gZnhMYXlvdXRBbGlnbiBvciBmeExheW91dEdhcCBrZWVwIHdvcmtpbmcgdW5jaGFuZ2VkLiBUaGUgZXhpc3RpbmdcbiAgLy8gW3N0eWxlLmRpc3BsYXldLCBbc3R5bGUuZmxleC1kaXJlY3Rpb25dIGFuZCBbc3R5bGUuZmxleC13cmFwXSBiaW5kaW5nc1xuICAvLyBhbHJlYWR5IGNvdmVyIHdoYXQgZnhMYXlvdXQgZGlkLlxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBTElHTiA9IHtcbiAgICBzdGFydDogJ2ZsZXgtc3RhcnQnLCBlbmQ6ICdmbGV4LWVuZCcsIGNlbnRlcjogJ2NlbnRlcicsXG4gICAgJ3NwYWNlLWJldHdlZW4nOiAnc3BhY2UtYmV0d2VlbicsICdzcGFjZS1hcm91bmQnOiAnc3BhY2UtYXJvdW5kJyxcbiAgICAnc3BhY2UtZXZlbmx5JzogJ3NwYWNlLWV2ZW5seScsIHN0cmV0Y2g6ICdzdHJldGNoJywgYmFzZWxpbmU6ICdiYXNlbGluZScsXG4gIH07XG5cbiAgcHJpdmF0ZSBmeEFsaWduKHBvc2l0aW9uOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbHVlID0gYCR7KHRoaXMub3B0aW9ucyB8fCB7fSkuZnhMYXlvdXRBbGlnbiB8fCAnJ31gLnRyaW0oKS5zcGxpdCgvXFxzKy8pW3Bvc2l0aW9uXTtcbiAgICByZXR1cm4gRmxleExheW91dFNlY3Rpb25Db21wb25lbnQuQUxJR05bdmFsdWVdIHx8IG51bGw7XG4gIH1cblxuICBnZXRKdXN0aWZ5Q29udGVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldEZsZXhBdHRyaWJ1dGUoJ2p1c3RpZnktY29udGVudCcpIHx8IHRoaXMuZnhBbGlnbigwKTtcbiAgfVxuXG4gIGdldEFsaWduSXRlbXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGbGV4QXR0cmlidXRlKCdhbGlnbi1pdGVtcycpIHx8IHRoaXMuZnhBbGlnbigxKTtcbiAgfVxuXG4gIC8vIFNldCBhdHRyaWJ1dGVzIGZvciBmbGV4Ym94IGNvbnRhaW5lclxuICAvLyAoY2hpbGQgYXR0cmlidXRlcyBhcmUgc2V0IGluIGZsZXgtbGF5b3V0LXJvb3QuY29tcG9uZW50KVxuICBnZXRGbGV4QXR0cmlidXRlKGF0dHJpYnV0ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgZmxleEFjdGl2ZTogYm9vbGVhbiA9XG4gICAgICB0aGlzLmxheW91dE5vZGUudHlwZSA9PT0gJ2ZsZXgnIHx8XG4gICAgICAhIXRoaXMub3B0aW9ucy5kaXNwbGF5RmxleCB8fFxuICAgICAgdGhpcy5vcHRpb25zLmRpc3BsYXkgPT09ICdmbGV4JztcbiAgICAvLyBpZiAoYXR0cmlidXRlICE9PSAnZmxleCcgJiYgIWZsZXhBY3RpdmUpIHsgcmV0dXJuIG51bGw7IH1cbiAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkge1xuICAgICAgY2FzZSAnaXMtZmxleCc6XG4gICAgICAgIHJldHVybiBmbGV4QWN0aXZlO1xuICAgICAgY2FzZSAnZGlzcGxheSc6XG4gICAgICAgIHJldHVybiBmbGV4QWN0aXZlID8gJ2ZsZXgnIDogJ2luaXRpYWwnO1xuICAgICAgY2FzZSAnZmxleC1kaXJlY3Rpb24nOiBjYXNlICdmbGV4LXdyYXAnOlxuICAgICAgICBjb25zdCBpbmRleCA9IFsnZmxleC1kaXJlY3Rpb24nLCAnZmxleC13cmFwJ10uaW5kZXhPZihhdHRyaWJ1dGUpO1xuICAgICAgICByZXR1cm4gKHRoaXMub3B0aW9uc1snZmxleC1mbG93J10gfHwgJycpLnNwbGl0KC9cXHMrLylbaW5kZXhdIHx8XG4gICAgICAgICAgdGhpcy5vcHRpb25zW2F0dHJpYnV0ZV0gfHwgWydjb2x1bW4nLCAnbm93cmFwJ11baW5kZXhdO1xuICAgICAgY2FzZSAnanVzdGlmeS1jb250ZW50JzogY2FzZSAnYWxpZ24taXRlbXMnOiBjYXNlICdhbGlnbi1jb250ZW50JzpcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc1thdHRyaWJ1dGVdO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,66 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@ajsf/core";
4
- import * as i2 from "@angular/common";
5
- import * as i3 from "@angular/material/button";
6
- export class MaterialAddReferenceComponent {
7
- constructor(jsf) {
8
- this.jsf = jsf;
9
- }
10
- ngOnInit() {
11
- this.options = this.layoutNode.options || {};
12
- }
13
- get showAddButton() {
14
- return !this.layoutNode.arrayItem ||
15
- this.layoutIndex[this.layoutIndex.length - 1] < this.options.maxItems;
16
- }
17
- addItem(event) {
18
- event.preventDefault();
19
- this.jsf.addItem(this);
20
- }
21
- get buttonText() {
22
- const parent = {
23
- dataIndex: this.dataIndex.slice(0, -1),
24
- layoutIndex: this.layoutIndex.slice(0, -1),
25
- layoutNode: this.jsf.getParentNode(this),
26
- };
27
- return parent.layoutNode.add ||
28
- this.jsf.setArrayItemTitle(parent, this.layoutNode, this.itemCount);
29
- }
30
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MaterialAddReferenceComponent, deps: [{ token: i1.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component }); }
31
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MaterialAddReferenceComponent, selector: "material-add-reference-widget", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: `
32
- <section [class]="options?.htmlClass || ''" align="end">
33
- <button mat-raised-button *ngIf="showAddButton"
34
- [color]="options?.color || 'accent'"
35
- [disabled]="options?.readonly"
36
- (click)="addItem($event)">
37
- <span *ngIf="options?.icon" [class]="options?.icon"></span>
38
- <span *ngIf="options?.title" [innerHTML]="buttonText"></span>
39
- </button>
40
- </section>`, isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
41
- }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MaterialAddReferenceComponent, decorators: [{
43
- type: Component,
44
- args: [{
45
- // tslint:disable-next-line:component-selector
46
- selector: 'material-add-reference-widget',
47
- template: `
48
- <section [class]="options?.htmlClass || ''" align="end">
49
- <button mat-raised-button *ngIf="showAddButton"
50
- [color]="options?.color || 'accent'"
51
- [disabled]="options?.readonly"
52
- (click)="addItem($event)">
53
- <span *ngIf="options?.icon" [class]="options?.icon"></span>
54
- <span *ngIf="options?.title" [innerHTML]="buttonText"></span>
55
- </button>
56
- </section>`,
57
- changeDetection: ChangeDetectionStrategy.Default,
58
- }]
59
- }], ctorParameters: () => [{ type: i1.JsonSchemaFormService }], propDecorators: { layoutNode: [{
60
- type: Input
61
- }], layoutIndex: [{
62
- type: Input
63
- }], dataIndex: [{
64
- type: Input
65
- }] } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtYWRkLXJlZmVyZW5jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hanNmLW1hdGVyaWFsL3NyYy9saWIvd2lkZ2V0cy9tYXRlcmlhbC1hZGQtcmVmZXJlbmNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFtQmxGLE1BQU0sT0FBTyw2QkFBNkI7SUFTeEMsWUFDVSxHQUEwQjtRQUExQixRQUFHLEdBQUgsR0FBRyxDQUF1QjtJQUNoQyxDQUFDO0lBRUwsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTO1lBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDMUUsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFLO1FBQ1gsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixNQUFNLE1BQU0sR0FBUTtZQUNsQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDMUMsVUFBVSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztTQUN6QyxDQUFDO1FBQ0YsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUc7WUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEUsQ0FBQzsrR0FuQ1UsNkJBQTZCO21HQUE3Qiw2QkFBNkIsK0pBWjlCOzs7Ozs7Ozs7ZUFTRzs7NEZBR0YsNkJBQTZCO2tCQWZ6QyxTQUFTO21CQUFDO29CQUNULDhDQUE4QztvQkFDOUMsUUFBUSxFQUFFLCtCQUErQjtvQkFDekMsUUFBUSxFQUFFOzs7Ozs7Ozs7ZUFTRztvQkFDYixlQUFlLEVBQUUsdUJBQXVCLENBQUMsT0FBTztpQkFDakQ7MEZBTVUsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBKc29uU2NoZW1hRm9ybVNlcnZpY2UgfSBmcm9tICdAYWpzZi9jb3JlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ21hdGVyaWFsLWFkZC1yZWZlcmVuY2Utd2lkZ2V0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8c2VjdGlvbiBbY2xhc3NdPVwib3B0aW9ucz8uaHRtbENsYXNzIHx8ICcnXCIgYWxpZ249XCJlbmRcIj5cbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKm5nSWY9XCJzaG93QWRkQnV0dG9uXCJcbiAgICAgICAgW2NvbG9yXT1cIm9wdGlvbnM/LmNvbG9yIHx8ICdhY2NlbnQnXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIm9wdGlvbnM/LnJlYWRvbmx5XCJcbiAgICAgICAgKGNsaWNrKT1cImFkZEl0ZW0oJGV2ZW50KVwiPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIm9wdGlvbnM/Lmljb25cIiBbY2xhc3NdPVwib3B0aW9ucz8uaWNvblwiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJvcHRpb25zPy50aXRsZVwiIFtpbm5lckhUTUxdPVwiYnV0dG9uVGV4dFwiPjwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvc2VjdGlvbj5gLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG59KVxuZXhwb3J0IGNsYXNzIE1hdGVyaWFsQWRkUmVmZXJlbmNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgb3B0aW9uczogYW55O1xuICBpdGVtQ291bnQ6IG51bWJlcjtcbiAgcHJldmlvdXNMYXlvdXRJbmRleDogbnVtYmVyW107XG4gIHByZXZpb3VzRGF0YUluZGV4OiBudW1iZXJbXTtcbiAgQElucHV0KCkgbGF5b3V0Tm9kZTogYW55O1xuICBASW5wdXQoKSBsYXlvdXRJbmRleDogbnVtYmVyW107XG4gIEBJbnB1dCgpIGRhdGFJbmRleDogbnVtYmVyW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBqc2Y6IEpzb25TY2hlbWFGb3JtU2VydmljZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMubGF5b3V0Tm9kZS5vcHRpb25zIHx8IHt9O1xuICB9XG5cbiAgZ2V0IHNob3dBZGRCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmxheW91dE5vZGUuYXJyYXlJdGVtIHx8XG4gICAgICB0aGlzLmxheW91dEluZGV4W3RoaXMubGF5b3V0SW5kZXgubGVuZ3RoIC0gMV0gPCB0aGlzLm9wdGlvbnMubWF4SXRlbXM7XG4gIH1cblxuICBhZGRJdGVtKGV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmpzZi5hZGRJdGVtKHRoaXMpO1xuICB9XG5cbiAgZ2V0IGJ1dHRvblRleHQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJlbnQ6IGFueSA9IHtcbiAgICAgIGRhdGFJbmRleDogdGhpcy5kYXRhSW5kZXguc2xpY2UoMCwgLTEpLFxuICAgICAgbGF5b3V0SW5kZXg6IHRoaXMubGF5b3V0SW5kZXguc2xpY2UoMCwgLTEpLFxuICAgICAgbGF5b3V0Tm9kZTogdGhpcy5qc2YuZ2V0UGFyZW50Tm9kZSh0aGlzKSxcbiAgICB9O1xuICAgIHJldHVybiBwYXJlbnQubGF5b3V0Tm9kZS5hZGQgfHxcbiAgICAgIHRoaXMuanNmLnNldEFycmF5SXRlbVRpdGxlKHBhcmVudCwgdGhpcy5sYXlvdXROb2RlLCB0aGlzLml0ZW1Db3VudCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,90 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { buildTitleMap } from '@ajsf/core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@ajsf/core";
5
- import * as i2 from "@angular/common";
6
- import * as i3 from "@angular/material/button-toggle";
7
- import * as i4 from "@angular/material/form-field";
8
- export class MaterialButtonGroupComponent {
9
- constructor(jsf) {
10
- this.jsf = jsf;
11
- this.controlDisabled = false;
12
- this.boundControl = false;
13
- this.radiosList = [];
14
- this.vertical = false;
15
- }
16
- ngOnInit() {
17
- this.options = this.layoutNode.options || {};
18
- this.radiosList = buildTitleMap(this.options.titleMap || this.options.enumNames, this.options.enum, true);
19
- this.jsf.initializeControl(this);
20
- }
21
- updateValue(value) {
22
- this.options.showErrors = true;
23
- this.jsf.updateValue(this, value);
24
- }
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MaterialButtonGroupComponent, deps: [{ token: i1.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component }); }
26
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MaterialButtonGroupComponent, selector: "material-button-group-widget", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: `
27
- <div>
28
- <div *ngIf="options?.title">
29
- <label
30
- [attr.for]="'control' + layoutNode?._id"
31
- [class]="options?.labelHtmlClass || ''"
32
- [style.display]="options?.notitle ? 'none' : ''"
33
- [innerHTML]="options?.title"></label>
34
- </div>
35
- <mat-button-toggle-group
36
- [attr.aria-describedby]="'control' + layoutNode?._id + 'Status'"
37
- [attr.readonly]="options?.readonly ? 'readonly' : null"
38
- [attr.required]="options?.required"
39
- [disabled]="controlDisabled || options?.readonly"
40
- [name]="controlName"
41
- [value]="controlValue"
42
- [vertical]="!!options.vertical">
43
- <mat-button-toggle *ngFor="let radioItem of radiosList"
44
- [id]="'control' + layoutNode?._id + '/' + radioItem?.name"
45
- [value]="radioItem?.value"
46
- (click)="updateValue(radioItem?.value)">
47
- <span [innerHTML]="radioItem?.name"></span>
48
- </mat-button-toggle>
49
- </mat-button-toggle-group>
50
- <mat-error *ngIf="options?.showErrors && options?.errorMessage"
51
- [innerHTML]="options?.errorMessage"></mat-error>
52
- </div>`, isInline: true, styles: ["mat-error{font-size:75%}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i3.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }] }); }
53
- }
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MaterialButtonGroupComponent, decorators: [{
55
- type: Component,
56
- args: [{ selector: 'material-button-group-widget', template: `
57
- <div>
58
- <div *ngIf="options?.title">
59
- <label
60
- [attr.for]="'control' + layoutNode?._id"
61
- [class]="options?.labelHtmlClass || ''"
62
- [style.display]="options?.notitle ? 'none' : ''"
63
- [innerHTML]="options?.title"></label>
64
- </div>
65
- <mat-button-toggle-group
66
- [attr.aria-describedby]="'control' + layoutNode?._id + 'Status'"
67
- [attr.readonly]="options?.readonly ? 'readonly' : null"
68
- [attr.required]="options?.required"
69
- [disabled]="controlDisabled || options?.readonly"
70
- [name]="controlName"
71
- [value]="controlValue"
72
- [vertical]="!!options.vertical">
73
- <mat-button-toggle *ngFor="let radioItem of radiosList"
74
- [id]="'control' + layoutNode?._id + '/' + radioItem?.name"
75
- [value]="radioItem?.value"
76
- (click)="updateValue(radioItem?.value)">
77
- <span [innerHTML]="radioItem?.name"></span>
78
- </mat-button-toggle>
79
- </mat-button-toggle-group>
80
- <mat-error *ngIf="options?.showErrors && options?.errorMessage"
81
- [innerHTML]="options?.errorMessage"></mat-error>
82
- </div>`, styles: ["mat-error{font-size:75%}\n"] }]
83
- }], ctorParameters: () => [{ type: i1.JsonSchemaFormService }], propDecorators: { layoutNode: [{
84
- type: Input
85
- }], layoutIndex: [{
86
- type: Input
87
- }], dataIndex: [{
88
- type: Input
89
- }] } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtYnV0dG9uLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fqc2YtbWF0ZXJpYWwvc3JjL2xpYi93aWRnZXRzL21hdGVyaWFsLWJ1dHRvbi1ncm91cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUF5QixhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7OztBQW1DbEUsTUFBTSxPQUFPLDRCQUE0QjtJQWF2QyxZQUNVLEdBQTBCO1FBQTFCLFFBQUcsR0FBSCxHQUFHLENBQXVCO1FBVnBDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFDdkIsYUFBUSxHQUFHLEtBQUssQ0FBQztJQU9iLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQ3hCLENBQUM7UUFDRixJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBSztRQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQzsrR0E3QlUsNEJBQTRCO21HQUE1Qiw0QkFBNEIsOEpBN0I3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7V0EwQkQ7OzRGQUdFLDRCQUE0QjtrQkFoQ3hDLFNBQVM7K0JBRUUsOEJBQThCLFlBQzlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQTBCRDswRkFZQSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSnNvblNjaGVtYUZvcm1TZXJ2aWNlLCBidWlsZFRpdGxlTWFwIH0gZnJvbSAnQGFqc2YvY29yZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdtYXRlcmlhbC1idXR0b24tZ3JvdXAtd2lkZ2V0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cIm9wdGlvbnM/LnRpdGxlXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIFthdHRyLmZvcl09XCInY29udHJvbCcgKyBsYXlvdXROb2RlPy5faWRcIlxuICAgICAgICAgIFtjbGFzc109XCJvcHRpb25zPy5sYWJlbEh0bWxDbGFzcyB8fCAnJ1wiXG4gICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwib3B0aW9ucz8ubm90aXRsZSA/ICdub25lJyA6ICcnXCJcbiAgICAgICAgICBbaW5uZXJIVE1MXT1cIm9wdGlvbnM/LnRpdGxlXCI+PC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuICAgICAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ2NvbnRyb2wnICsgbGF5b3V0Tm9kZT8uX2lkICsgJ1N0YXR1cydcIlxuICAgICAgICBbYXR0ci5yZWFkb25seV09XCJvcHRpb25zPy5yZWFkb25seSA/ICdyZWFkb25seScgOiBudWxsXCJcbiAgICAgICAgW2F0dHIucmVxdWlyZWRdPVwib3B0aW9ucz8ucmVxdWlyZWRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiY29udHJvbERpc2FibGVkIHx8IG9wdGlvbnM/LnJlYWRvbmx5XCJcbiAgICAgICAgW25hbWVdPVwiY29udHJvbE5hbWVcIlxuICAgICAgICBbdmFsdWVdPVwiY29udHJvbFZhbHVlXCJcbiAgICAgICAgW3ZlcnRpY2FsXT1cIiEhb3B0aW9ucy52ZXJ0aWNhbFwiPlxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgKm5nRm9yPVwibGV0IHJhZGlvSXRlbSBvZiByYWRpb3NMaXN0XCJcbiAgICAgICAgICBbaWRdPVwiJ2NvbnRyb2wnICsgbGF5b3V0Tm9kZT8uX2lkICsgJy8nICsgcmFkaW9JdGVtPy5uYW1lXCJcbiAgICAgICAgICBbdmFsdWVdPVwicmFkaW9JdGVtPy52YWx1ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVZhbHVlKHJhZGlvSXRlbT8udmFsdWUpXCI+XG4gICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJyYWRpb0l0ZW0/Lm5hbWVcIj48L3NwYW4+XG4gICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIm9wdGlvbnM/LnNob3dFcnJvcnMgJiYgb3B0aW9ucz8uZXJyb3JNZXNzYWdlXCJcbiAgICAgICAgW2lubmVySFRNTF09XCJvcHRpb25zPy5lcnJvck1lc3NhZ2VcIj48L21hdC1lcnJvcj5cbiAgICA8L2Rpdj5gLFxuICAgIHN0eWxlczogW2AgbWF0LWVycm9yIHsgZm9udC1zaXplOiA3NSU7IH0gYF0sXG59KVxuZXhwb3J0IGNsYXNzIE1hdGVyaWFsQnV0dG9uR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuICBjb250cm9sTmFtZTogc3RyaW5nO1xuICBjb250cm9sVmFsdWU6IGFueTtcbiAgY29udHJvbERpc2FibGVkID0gZmFsc2U7XG4gIGJvdW5kQ29udHJvbCA9IGZhbHNlO1xuICBvcHRpb25zOiBhbnk7XG4gIHJhZGlvc0xpc3Q6IGFueVtdID0gW107XG4gIHZlcnRpY2FsID0gZmFsc2U7XG4gIEBJbnB1dCgpIGxheW91dE5vZGU6IGFueTtcbiAgQElucHV0KCkgbGF5b3V0SW5kZXg6IG51bWJlcltdO1xuICBASW5wdXQoKSBkYXRhSW5kZXg6IG51bWJlcltdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUganNmOiBKc29uU2NoZW1hRm9ybVNlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmxheW91dE5vZGUub3B0aW9ucyB8fCB7fTtcbiAgICB0aGlzLnJhZGlvc0xpc3QgPSBidWlsZFRpdGxlTWFwKFxuICAgICAgdGhpcy5vcHRpb25zLnRpdGxlTWFwIHx8IHRoaXMub3B0aW9ucy5lbnVtTmFtZXMsXG4gICAgICB0aGlzLm9wdGlvbnMuZW51bSwgdHJ1ZVxuICAgICk7XG4gICAgdGhpcy5qc2YuaW5pdGlhbGl6ZUNvbnRyb2wodGhpcyk7XG4gIH1cblxuICB1cGRhdGVWYWx1ZSh2YWx1ZSkge1xuICAgIHRoaXMub3B0aW9ucy5zaG93RXJyb3JzID0gdHJ1ZTtcbiAgICB0aGlzLmpzZi51cGRhdGVWYWx1ZSh0aGlzLCB2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==