@ng-formworks/material 18.5.2 → 19.5.1

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 (31) hide show
  1. package/assets/material-design-themes.scss +10 -5
  2. package/fesm2022/ng-formworks-material.mjs +94 -88
  3. package/fesm2022/ng-formworks-material.mjs.map +1 -1
  4. package/lib/widgets/public_api.d.ts +1 -1
  5. package/package.json +3 -5
  6. package/esm2022/lib/material-design-cssframework.mjs +0 -23
  7. package/esm2022/lib/material-design-framework.component.mjs +0 -119
  8. package/esm2022/lib/material-design-framework.module.mjs +0 -117
  9. package/esm2022/lib/material-design.framework.mjs +0 -62
  10. package/esm2022/lib/widgets/flex-layout-root.component.mjs +0 -71
  11. package/esm2022/lib/widgets/flex-layout-section.component.mjs +0 -344
  12. package/esm2022/lib/widgets/material-add-reference.component.mjs +0 -63
  13. package/esm2022/lib/widgets/material-button-group.component.mjs +0 -86
  14. package/esm2022/lib/widgets/material-button.component.mjs +0 -76
  15. package/esm2022/lib/widgets/material-checkbox.component.mjs +0 -164
  16. package/esm2022/lib/widgets/material-checkboxes.component.mjs +0 -126
  17. package/esm2022/lib/widgets/material-chip-list.component.mjs +0 -32
  18. package/esm2022/lib/widgets/material-datepicker.component.mjs +0 -133
  19. package/esm2022/lib/widgets/material-file.component.mjs +0 -32
  20. package/esm2022/lib/widgets/material-input.component.mjs +0 -146
  21. package/esm2022/lib/widgets/material-number.component.mjs +0 -137
  22. package/esm2022/lib/widgets/material-one-of.component.mjs +0 -32
  23. package/esm2022/lib/widgets/material-radios.component.mjs +0 -118
  24. package/esm2022/lib/widgets/material-select.component.mjs +0 -177
  25. package/esm2022/lib/widgets/material-slider.component.mjs +0 -88
  26. package/esm2022/lib/widgets/material-stepper.component.mjs +0 -32
  27. package/esm2022/lib/widgets/material-tabs.component.mjs +0 -91
  28. package/esm2022/lib/widgets/material-textarea.component.mjs +0 -126
  29. package/esm2022/lib/widgets/public_api.mjs +0 -52
  30. package/esm2022/ng-formworks-material.mjs +0 -5
  31. package/esm2022/public_api.mjs +0 -8
@@ -1,344 +0,0 @@
1
- import { Component, inject, input } from '@angular/core';
2
- import { JsonSchemaFormService } from '@ng-formworks/core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@angular/material/card";
6
- import * as i3 from "@angular/material/expansion";
7
- import * as i4 from "@angular/material/form-field";
8
- import * as i5 from "./flex-layout-root.component";
9
- export class FlexLayoutSectionComponent {
10
- constructor() {
11
- this.jsf = inject(JsonSchemaFormService);
12
- this.controlDisabled = false;
13
- this.boundControl = false;
14
- this.expanded = true;
15
- this.containerType = 'div';
16
- this.layoutNode = input(undefined);
17
- this.layoutIndex = input(undefined);
18
- this.dataIndex = input(undefined);
19
- }
20
- get sectionTitle() {
21
- return this.options.notitle ? null : this.jsf.setItemTitle(this);
22
- }
23
- ngOnInit() {
24
- this.jsf.initializeControl(this);
25
- this.options = this.layoutNode().options || {};
26
- this.expanded = typeof this.options.expanded === 'boolean' ?
27
- this.options.expanded : !this.options.expandable;
28
- switch (this.layoutNode().type) {
29
- case 'section':
30
- case 'array':
31
- case 'fieldset':
32
- case 'advancedfieldset':
33
- case 'authfieldset':
34
- case 'optionfieldset':
35
- case 'selectfieldset':
36
- this.containerType = 'fieldset';
37
- break;
38
- case 'card':
39
- this.containerType = 'card';
40
- break;
41
- case 'expansion-panel':
42
- this.containerType = 'expansion-panel';
43
- break;
44
- default: // 'div', 'flex', 'tab', 'conditional', 'actions'
45
- this.containerType = 'div';
46
- }
47
- }
48
- toggleExpanded() {
49
- if (this.options.expandable) {
50
- this.expanded = !this.expanded;
51
- }
52
- }
53
- // Set attributes for flexbox container
54
- // (child attributes are set in flex-layout-root.component)
55
- getFlexAttribute(attribute) {
56
- const flexActive = this.layoutNode().type === 'flex' ||
57
- !!this.options.displayFlex ||
58
- this.options.display === 'flex';
59
- // if (attribute !== 'flex' && !flexActive) { return null; }
60
- switch (attribute) {
61
- case 'is-flex':
62
- return flexActive;
63
- case 'display':
64
- return flexActive ? 'flex' : 'initial';
65
- case 'flex-direction':
66
- case 'flex-wrap':
67
- const index = ['flex-direction', 'flex-wrap'].indexOf(attribute);
68
- return (this.options['flex-flow'] || '').split(/\s+/)[index] ||
69
- this.options[attribute] || ['column', 'nowrap'][index];
70
- case 'justify-content':
71
- case 'align-items':
72
- case 'align-content':
73
- return this.options[attribute];
74
- case 'layout':
75
- return (this.options.fxLayout || 'row') +
76
- this.options.fxLayoutWrap ? ' ' + this.options.fxLayoutWrap : '';
77
- }
78
- }
79
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlexLayoutSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
80
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: FlexLayoutSectionComponent, selector: "flex-layout-section-widget", inputs: { layoutNode: { classPropertyName: "layoutNode", publicName: "layoutNode", isSignal: true, isRequired: false, transformFunction: null }, layoutIndex: { classPropertyName: "layoutIndex", publicName: "layoutIndex", isSignal: true, isRequired: false, transformFunction: null }, dataIndex: { classPropertyName: "dataIndex", publicName: "dataIndex", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
81
- <div *ngIf="containerType === 'div'"
82
- [class]="options?.htmlClass || ''"
83
- [class.expandable]="options?.expandable && !expanded"
84
- [class.expanded]="options?.expandable && expanded">
85
- <label *ngIf="sectionTitle"
86
- [class]="'legend ' + (options?.labelHtmlClass || '')"
87
- [innerHTML]="sectionTitle"
88
- (click)="toggleExpanded()"></label>
89
- <flex-layout-root-widget *ngIf="expanded"
90
- [layout]="layoutNode().items"
91
- [dataIndex]="dataIndex()"
92
- [layoutIndex]="layoutIndex()"
93
- [isFlexItem]="getFlexAttribute('is-flex')"
94
- [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
95
- [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
96
- [style.display]="getFlexAttribute('display')"
97
- [style.flex-direction]="getFlexAttribute('flex-direction')"
98
- [style.flex-wrap]="getFlexAttribute('flex-wrap')"
99
- [style.justify-content]="getFlexAttribute('justify-content')"
100
- [style.align-items]="getFlexAttribute('align-items')"
101
- [style.align-content]="getFlexAttribute('align-content')"
102
- [attr.fxLayout]="getFlexAttribute('layout')"
103
- [attr.fxLayoutGap]="options?.fxLayoutGap"
104
- [attr.fxLayoutAlign]="options?.fxLayoutAlign"
105
- [attr.fxFlexFill]="options?.fxLayoutAlign"></flex-layout-root-widget>
106
- <mat-error *ngIf="options?.showErrors && options?.errorMessage"
107
- [innerHTML]="options?.errorMessage"></mat-error>
108
- </div>
109
-
110
- <fieldset *ngIf="containerType === 'fieldset'"
111
- [class]="options?.htmlClass || ''"
112
- [class.expandable]="options?.expandable && !expanded"
113
- [class.expanded]="options?.expandable && expanded"
114
- [disabled]="options?.readonly">
115
- <legend *ngIf="sectionTitle"
116
- [class]="'legend ' + (options?.labelHtmlClass || '')"
117
- [innerHTML]="sectionTitle"
118
- (click)="toggleExpanded()"></legend>
119
- <flex-layout-root-widget *ngIf="expanded"
120
- [layout]="layoutNode().items"
121
- [dataIndex]="dataIndex()"
122
- [layoutIndex]="layoutIndex()"
123
- [isFlexItem]="getFlexAttribute('is-flex')"
124
- [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
125
- [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
126
- [style.display]="getFlexAttribute('display')"
127
- [style.flex-direction]="getFlexAttribute('flex-direction')"
128
- [style.flex-wrap]="getFlexAttribute('flex-wrap')"
129
- [style.justify-content]="getFlexAttribute('justify-content')"
130
- [style.align-items]="getFlexAttribute('align-items')"
131
- [style.align-content]="getFlexAttribute('align-content')"
132
- [attr.fxLayout]="getFlexAttribute('layout')"
133
- [attr.fxLayoutGap]="options?.fxLayoutGap"
134
- [attr.fxLayoutAlign]="options?.fxLayoutAlign"
135
- [attr.attr.fxFlexFill]="options?.fxLayoutAlign"></flex-layout-root-widget>
136
- <mat-error *ngIf="options?.showErrors && options?.errorMessage"
137
- [innerHTML]="options?.errorMessage"></mat-error>
138
- </fieldset>
139
-
140
- <mat-card appearance="outlined" *ngIf="containerType === 'card'"
141
- [ngClass]="options?.htmlClass || ''"
142
- [class.expandable]="options?.expandable && !expanded"
143
- [class.expanded]="options?.expandable && expanded">
144
- <mat-card-header *ngIf="sectionTitle">
145
- <legend
146
- [class]="'legend ' + (options?.labelHtmlClass || '')"
147
- [innerHTML]="sectionTitle"
148
- (click)="toggleExpanded()"></legend>
149
- </mat-card-header>
150
- <mat-card-content *ngIf="expanded">
151
- <fieldset [disabled]="options?.readonly">
152
- <flex-layout-root-widget *ngIf="expanded"
153
- [layout]="layoutNode().items"
154
- [dataIndex]="dataIndex()"
155
- [layoutIndex]="layoutIndex()"
156
- [isFlexItem]="getFlexAttribute('is-flex')"
157
- [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
158
- [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
159
- [style.display]="getFlexAttribute('display')"
160
- [style.flex-direction]="getFlexAttribute('flex-direction')"
161
- [style.flex-wrap]="getFlexAttribute('flex-wrap')"
162
- [style.justify-content]="getFlexAttribute('justify-content')"
163
- [style.align-items]="getFlexAttribute('align-items')"
164
- [style.align-content]="getFlexAttribute('align-content')"
165
- [attr.fxLayout]="getFlexAttribute('layout')"
166
- [attr.fxLayoutGap]="options?.fxLayoutGap"
167
- [attr.fxLayoutAlign]="options?.fxLayoutAlign"
168
- [attr.fxFlexFill]="options?.fxLayoutAlign"></flex-layout-root-widget>
169
- </fieldset>
170
- </mat-card-content>
171
- <mat-card-footer>
172
- <mat-error *ngIf="options?.showErrors && options?.errorMessage"
173
- [innerHTML]="options?.errorMessage"></mat-error>
174
- </mat-card-footer>
175
- </mat-card>
176
-
177
- <mat-expansion-panel *ngIf="containerType === 'expansion-panel'"
178
- [expanded]="expanded"
179
- [hideToggle]="!options?.expandable">
180
- <mat-expansion-panel-header>
181
- <mat-panel-title>
182
- <legend *ngIf="sectionTitle"
183
- [class]="options?.labelHtmlClass"
184
- [innerHTML]="sectionTitle"
185
- (click)="toggleExpanded()"></legend>
186
- </mat-panel-title>
187
- </mat-expansion-panel-header>
188
- <fieldset [disabled]="options?.readonly">
189
- <flex-layout-root-widget *ngIf="expanded"
190
- [layout]="layoutNode().items"
191
- [dataIndex]="dataIndex()"
192
- [layoutIndex]="layoutIndex()"
193
- [isFlexItem]="getFlexAttribute('is-flex')"
194
- [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
195
- [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
196
- [style.display]="getFlexAttribute('display')"
197
- [style.flex-direction]="getFlexAttribute('flex-direction')"
198
- [style.flex-wrap]="getFlexAttribute('flex-wrap')"
199
- [style.justify-content]="getFlexAttribute('justify-content')"
200
- [style.align-items]="getFlexAttribute('align-items')"
201
- [style.align-content]="getFlexAttribute('align-content')"
202
- [attr.fxLayout]="getFlexAttribute('layout')"
203
- [attr.fxLayoutGap]="options?.fxLayoutGap"
204
- [attr.fxLayoutAlign]="options?.fxLayoutAlign"
205
- [attr.fxFlexFill]="options?.fxLayoutAlign"></flex-layout-root-widget>
206
- </fieldset>
207
- <mat-error *ngIf="options?.showErrors && options?.errorMessage"
208
- [innerHTML]="options?.errorMessage"></mat-error>
209
- </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;font-family:auto}.expanded>.legend:before{content:\"\\25bc\";padding-right:.2em}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i2.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i2.MatCardFooter, selector: "mat-card-footer" }, { kind: "component", type: i2.MatCardHeader, selector: "mat-card-header" }, { kind: "component", type: i3.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i3.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i3.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i5.FlexLayoutRootComponent, selector: "flex-layout-root-widget", inputs: ["dataIndex", "layoutIndex", "layout", "isFlexItem"] }] }); }
210
- }
211
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FlexLayoutSectionComponent, decorators: [{
212
- type: Component,
213
- args: [{ selector: 'flex-layout-section-widget', template: `
214
- <div *ngIf="containerType === 'div'"
215
- [class]="options?.htmlClass || ''"
216
- [class.expandable]="options?.expandable && !expanded"
217
- [class.expanded]="options?.expandable && expanded">
218
- <label *ngIf="sectionTitle"
219
- [class]="'legend ' + (options?.labelHtmlClass || '')"
220
- [innerHTML]="sectionTitle"
221
- (click)="toggleExpanded()"></label>
222
- <flex-layout-root-widget *ngIf="expanded"
223
- [layout]="layoutNode().items"
224
- [dataIndex]="dataIndex()"
225
- [layoutIndex]="layoutIndex()"
226
- [isFlexItem]="getFlexAttribute('is-flex')"
227
- [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
228
- [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
229
- [style.display]="getFlexAttribute('display')"
230
- [style.flex-direction]="getFlexAttribute('flex-direction')"
231
- [style.flex-wrap]="getFlexAttribute('flex-wrap')"
232
- [style.justify-content]="getFlexAttribute('justify-content')"
233
- [style.align-items]="getFlexAttribute('align-items')"
234
- [style.align-content]="getFlexAttribute('align-content')"
235
- [attr.fxLayout]="getFlexAttribute('layout')"
236
- [attr.fxLayoutGap]="options?.fxLayoutGap"
237
- [attr.fxLayoutAlign]="options?.fxLayoutAlign"
238
- [attr.fxFlexFill]="options?.fxLayoutAlign"></flex-layout-root-widget>
239
- <mat-error *ngIf="options?.showErrors && options?.errorMessage"
240
- [innerHTML]="options?.errorMessage"></mat-error>
241
- </div>
242
-
243
- <fieldset *ngIf="containerType === 'fieldset'"
244
- [class]="options?.htmlClass || ''"
245
- [class.expandable]="options?.expandable && !expanded"
246
- [class.expanded]="options?.expandable && expanded"
247
- [disabled]="options?.readonly">
248
- <legend *ngIf="sectionTitle"
249
- [class]="'legend ' + (options?.labelHtmlClass || '')"
250
- [innerHTML]="sectionTitle"
251
- (click)="toggleExpanded()"></legend>
252
- <flex-layout-root-widget *ngIf="expanded"
253
- [layout]="layoutNode().items"
254
- [dataIndex]="dataIndex()"
255
- [layoutIndex]="layoutIndex()"
256
- [isFlexItem]="getFlexAttribute('is-flex')"
257
- [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
258
- [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
259
- [style.display]="getFlexAttribute('display')"
260
- [style.flex-direction]="getFlexAttribute('flex-direction')"
261
- [style.flex-wrap]="getFlexAttribute('flex-wrap')"
262
- [style.justify-content]="getFlexAttribute('justify-content')"
263
- [style.align-items]="getFlexAttribute('align-items')"
264
- [style.align-content]="getFlexAttribute('align-content')"
265
- [attr.fxLayout]="getFlexAttribute('layout')"
266
- [attr.fxLayoutGap]="options?.fxLayoutGap"
267
- [attr.fxLayoutAlign]="options?.fxLayoutAlign"
268
- [attr.attr.fxFlexFill]="options?.fxLayoutAlign"></flex-layout-root-widget>
269
- <mat-error *ngIf="options?.showErrors && options?.errorMessage"
270
- [innerHTML]="options?.errorMessage"></mat-error>
271
- </fieldset>
272
-
273
- <mat-card appearance="outlined" *ngIf="containerType === 'card'"
274
- [ngClass]="options?.htmlClass || ''"
275
- [class.expandable]="options?.expandable && !expanded"
276
- [class.expanded]="options?.expandable && expanded">
277
- <mat-card-header *ngIf="sectionTitle">
278
- <legend
279
- [class]="'legend ' + (options?.labelHtmlClass || '')"
280
- [innerHTML]="sectionTitle"
281
- (click)="toggleExpanded()"></legend>
282
- </mat-card-header>
283
- <mat-card-content *ngIf="expanded">
284
- <fieldset [disabled]="options?.readonly">
285
- <flex-layout-root-widget *ngIf="expanded"
286
- [layout]="layoutNode().items"
287
- [dataIndex]="dataIndex()"
288
- [layoutIndex]="layoutIndex()"
289
- [isFlexItem]="getFlexAttribute('is-flex')"
290
- [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
291
- [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
292
- [style.display]="getFlexAttribute('display')"
293
- [style.flex-direction]="getFlexAttribute('flex-direction')"
294
- [style.flex-wrap]="getFlexAttribute('flex-wrap')"
295
- [style.justify-content]="getFlexAttribute('justify-content')"
296
- [style.align-items]="getFlexAttribute('align-items')"
297
- [style.align-content]="getFlexAttribute('align-content')"
298
- [attr.fxLayout]="getFlexAttribute('layout')"
299
- [attr.fxLayoutGap]="options?.fxLayoutGap"
300
- [attr.fxLayoutAlign]="options?.fxLayoutAlign"
301
- [attr.fxFlexFill]="options?.fxLayoutAlign"></flex-layout-root-widget>
302
- </fieldset>
303
- </mat-card-content>
304
- <mat-card-footer>
305
- <mat-error *ngIf="options?.showErrors && options?.errorMessage"
306
- [innerHTML]="options?.errorMessage"></mat-error>
307
- </mat-card-footer>
308
- </mat-card>
309
-
310
- <mat-expansion-panel *ngIf="containerType === 'expansion-panel'"
311
- [expanded]="expanded"
312
- [hideToggle]="!options?.expandable">
313
- <mat-expansion-panel-header>
314
- <mat-panel-title>
315
- <legend *ngIf="sectionTitle"
316
- [class]="options?.labelHtmlClass"
317
- [innerHTML]="sectionTitle"
318
- (click)="toggleExpanded()"></legend>
319
- </mat-panel-title>
320
- </mat-expansion-panel-header>
321
- <fieldset [disabled]="options?.readonly">
322
- <flex-layout-root-widget *ngIf="expanded"
323
- [layout]="layoutNode().items"
324
- [dataIndex]="dataIndex()"
325
- [layoutIndex]="layoutIndex()"
326
- [isFlexItem]="getFlexAttribute('is-flex')"
327
- [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
328
- [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
329
- [style.display]="getFlexAttribute('display')"
330
- [style.flex-direction]="getFlexAttribute('flex-direction')"
331
- [style.flex-wrap]="getFlexAttribute('flex-wrap')"
332
- [style.justify-content]="getFlexAttribute('justify-content')"
333
- [style.align-items]="getFlexAttribute('align-items')"
334
- [style.align-content]="getFlexAttribute('align-content')"
335
- [attr.fxLayout]="getFlexAttribute('layout')"
336
- [attr.fxLayoutGap]="options?.fxLayoutGap"
337
- [attr.fxLayoutAlign]="options?.fxLayoutAlign"
338
- [attr.fxFlexFill]="options?.fxLayoutAlign"></flex-layout-root-widget>
339
- </fieldset>
340
- <mat-error *ngIf="options?.showErrors && options?.errorMessage"
341
- [innerHTML]="options?.errorMessage"></mat-error>
342
- </mat-expansion-panel>`, styles: ["fieldset{border:0;margin:0;padding:0}.legend{font-weight:700}.expandable>.legend:before{content:\"\\25b6\";padding-right:.3em;font-family:auto}.expanded>.legend:before{content:\"\\25bc\";padding-right:.2em}\n"] }]
343
- }] });
344
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1sYXlvdXQtc2VjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1mb3Jtd29ya3MtbWF0ZXJpYWwvc3JjL2xpYi93aWRnZXRzL2ZsZXgtbGF5b3V0LXNlY3Rpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7OztBQThJM0QsTUFBTSxPQUFPLDBCQUEwQjtJQTVJdkM7UUE2SVUsUUFBRyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBSzVDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDYixlQUFVLEdBQUcsS0FBSyxDQUFNLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLGdCQUFXLEdBQUcsS0FBSyxDQUFXLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDLGNBQVMsR0FBRyxLQUFLLENBQVcsU0FBUyxDQUFDLENBQUM7S0F3RGpEO0lBdERDLElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sSUFBSSxFQUFFLENB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkJBaUllOzs0RkFRZCwwQkFBMEI7a0JBNUl0QyxTQUFTOytCQUVFLDRCQUE0QixZQUM1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzJCQWlJZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSnNvblNjaGVtYUZvcm1TZXJ2aWNlIH0gZnJvbSAnQG5nLWZvcm13b3Jrcy9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ2ZsZXgtbGF5b3V0LXNlY3Rpb24td2lkZ2V0JyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiAqbmdJZj1cImNvbnRhaW5lclR5cGUgPT09ICdkaXYnXCJcclxuICAgICAgW2NsYXNzXT1cIm9wdGlvbnM/Lmh0bWxDbGFzcyB8fCAnJ1wiXHJcbiAgICAgIFtjbGFzcy5leHBhbmRhYmxlXT1cIm9wdGlvbnM/LmV4cGFuZGFibGUgJiYgIWV4cGFuZGVkXCJcclxuICAgICAgW2NsYXNzLmV4cGFuZGVkXT1cIm9wdGlvbnM/LmV4cGFuZGFibGUgJiYgZXhwYW5kZWRcIj5cclxuICAgICAgPGxhYmVsICpuZ0lmPVwic2VjdGlvblRpdGxlXCJcclxuICAgICAgICBbY2xhc3NdPVwiJ2xlZ2VuZCAnICsgKG9wdGlvbnM/LmxhYmVsSHRtbENsYXNzIHx8ICcnKVwiXHJcbiAgICAgICAgW2lubmVySFRNTF09XCJzZWN0aW9uVGl0bGVcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVFeHBhbmRlZCgpXCI+PC9sYWJlbD5cclxuICAgICAgPGZsZXgtbGF5b3V0LXJvb3Qtd2lkZ2V0ICpuZ0lmPVwiZXhwYW5kZWRcIlxyXG4gICAgICAgIFtsYXlvdXRdPVwibGF5b3V0Tm9kZSgpLml0ZW1zXCJcclxuICAgICAgICBbZGF0YUluZGV4XT1cImRhdGFJbmRleCgpXCJcclxuICAgICAgICBbbGF5b3V0SW5kZXhdPVwibGF5b3V0SW5kZXgoKVwiXHJcbiAgICAgICAgW2lzRmxleEl0ZW1dPVwiZ2V0RmxleEF0dHJpYnV0ZSgnaXMtZmxleCcpXCJcclxuICAgICAgICBbY2xhc3MuZm9ybS1mbGV4LWNvbHVtbl09XCJnZXRGbGV4QXR0cmlidXRlKCdmbGV4LWRpcmVjdGlvbicpID09PSAnY29sdW1uJ1wiXHJcbiAgICAgICAgW2NsYXNzLmZvcm0tZmxleC1yb3ddPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZmxleC1kaXJlY3Rpb24nKSA9PT0gJ3JvdydcIlxyXG4gICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cImdldEZsZXhBdHRyaWJ1dGUoJ2Rpc3BsYXknKVwiXHJcbiAgICAgICAgW3N0eWxlLmZsZXgtZGlyZWN0aW9uXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtZGlyZWN0aW9uJylcIlxyXG4gICAgICAgIFtzdHlsZS5mbGV4LXdyYXBdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZmxleC13cmFwJylcIlxyXG4gICAgICAgIFtzdHlsZS5qdXN0aWZ5LWNvbnRlbnRdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnanVzdGlmeS1jb250ZW50JylcIlxyXG4gICAgICAgIFtzdHlsZS5hbGlnbi1pdGVtc109XCJnZXRGbGV4QXR0cmlidXRlKCdhbGlnbi1pdGVtcycpXCJcclxuICAgICAgICBbc3R5bGUuYWxpZ24tY29udGVudF09XCJnZXRGbGV4QXR0cmlidXRlKCdhbGlnbi1jb250ZW50JylcIlxyXG4gICAgICAgIFthdHRyLmZ4TGF5b3V0XT1cImdldEZsZXhBdHRyaWJ1dGUoJ2xheW91dCcpXCJcclxuICAgICAgICBbYXR0ci5meExheW91dEdhcF09XCJvcHRpb25zPy5meExheW91dEdhcFwiXHJcbiAgICAgICAgW2F0dHIuZnhMYXlvdXRBbGlnbl09XCJvcHRpb25zPy5meExheW91dEFsaWduXCJcclxuICAgICAgICBbYXR0ci5meEZsZXhGaWxsXT1cIm9wdGlvbnM/LmZ4TGF5b3V0QWxpZ25cIj48L2ZsZXgtbGF5b3V0LXJvb3Qtd2lkZ2V0PlxyXG4gICAgICA8bWF0LWVycm9yICpuZ0lmPVwib3B0aW9ucz8uc2hvd0Vycm9ycyAmJiBvcHRpb25zPy5lcnJvck1lc3NhZ2VcIlxyXG4gICAgICAgIFtpbm5lckhUTUxdPVwib3B0aW9ucz8uZXJyb3JNZXNzYWdlXCI+PC9tYXQtZXJyb3I+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZmllbGRzZXQgKm5nSWY9XCJjb250YWluZXJUeXBlID09PSAnZmllbGRzZXQnXCJcclxuICAgICAgW2NsYXNzXT1cIm9wdGlvbnM/Lmh0bWxDbGFzcyB8fCAnJ1wiXHJcbiAgICAgIFtjbGFzcy5leHBhbmRhYmxlXT1cIm9wdGlvbnM/LmV4cGFuZGFibGUgJiYgIWV4cGFuZGVkXCJcclxuICAgICAgW2NsYXNzLmV4cGFuZGVkXT1cIm9wdGlvbnM/LmV4cGFuZGFibGUgJiYgZXhwYW5kZWRcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwib3B0aW9ucz8ucmVhZG9ubHlcIj5cclxuICAgICAgPGxlZ2VuZCAqbmdJZj1cInNlY3Rpb25UaXRsZVwiXHJcbiAgICAgICAgW2NsYXNzXT1cIidsZWdlbmQgJyArIChvcHRpb25zPy5sYWJlbEh0bWxDbGFzcyB8fCAnJylcIlxyXG4gICAgICAgIFtpbm5lckhUTUxdPVwic2VjdGlvblRpdGxlXCJcclxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlRXhwYW5kZWQoKVwiPjwvbGVnZW5kPlxyXG4gICAgICA8ZmxleC1sYXlvdXQtcm9vdC13aWRnZXQgKm5nSWY9XCJleHBhbmRlZFwiXHJcbiAgICAgICAgW2xheW91dF09XCJsYXlvdXROb2RlKCkuaXRlbXNcIlxyXG4gICAgICAgIFtkYXRhSW5kZXhdPVwiZGF0YUluZGV4KClcIlxyXG4gICAgICAgIFtsYXlvdXRJbmRleF09XCJsYXlvdXRJbmRleCgpXCJcclxuICAgICAgICBbaXNGbGV4SXRlbV09XCJnZXRGbGV4QXR0cmlidXRlKCdpcy1mbGV4JylcIlxyXG4gICAgICAgIFtjbGFzcy5mb3JtLWZsZXgtY29sdW1uXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtZGlyZWN0aW9uJykgPT09ICdjb2x1bW4nXCJcclxuICAgICAgICBbY2xhc3MuZm9ybS1mbGV4LXJvd109XCJnZXRGbGV4QXR0cmlidXRlKCdmbGV4LWRpcmVjdGlvbicpID09PSAncm93J1wiXHJcbiAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZGlzcGxheScpXCJcclxuICAgICAgICBbc3R5bGUuZmxleC1kaXJlY3Rpb25dPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZmxleC1kaXJlY3Rpb24nKVwiXHJcbiAgICAgICAgW3N0eWxlLmZsZXgtd3JhcF09XCJnZXRGbGV4QXR0cmlidXRlKCdmbGV4LXdyYXAnKVwiXHJcbiAgICAgICAgW3N0eWxlLmp1c3RpZnktY29udGVudF09XCJnZXRGbGV4QXR0cmlidXRlKCdqdXN0aWZ5LWNvbnRlbnQnKVwiXHJcbiAgICAgICAgW3N0eWxlLmFsaWduLWl0ZW1zXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2FsaWduLWl0ZW1zJylcIlxyXG4gICAgICAgIFtzdHlsZS5hbGlnbi1jb250ZW50XT1cImdldEZsZXhBdHRyaWJ1dGUoJ2FsaWduLWNvbnRlbnQnKVwiXHJcbiAgICAgICAgW2F0dHIuZnhMYXlvdXRdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnbGF5b3V0JylcIlxyXG4gICAgICAgIFthdHRyLmZ4TGF5b3V0R2FwXT1cIm9wdGlvbnM/LmZ4TGF5b3V0R2FwXCJcclxuICAgICAgICBbYXR0ci5meExheW91dEFsaWduXT1cIm9wdGlvbnM/LmZ4TGF5b3V0QWxpZ25cIlxyXG4gICAgICAgIFthdHRyLmF0dHIuZnhGbGV4RmlsbF09XCJvcHRpb25zPy5meExheW91dEFsaWduXCI+PC9mbGV4LWxheW91dC1yb290LXdpZGdldD5cclxuICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIm9wdGlvbnM/LnNob3dFcnJvcnMgJiYgb3B0aW9ucz8uZXJyb3JNZXNzYWdlXCJcclxuICAgICAgICBbaW5uZXJIVE1MXT1cIm9wdGlvbnM/LmVycm9yTWVzc2FnZVwiPjwvbWF0LWVycm9yPlxyXG4gICAgPC9maWVsZHNldD5cclxuXHJcbiAgICA8bWF0LWNhcmQgYXBwZWFyYW5jZT1cIm91dGxpbmVkXCIgKm5nSWY9XCJjb250YWluZXJUeXBlID09PSAnY2FyZCdcIlxyXG4gICAgICBbbmdDbGFzc109XCJvcHRpb25zPy5odG1sQ2xhc3MgfHwgJydcIlxyXG4gICAgICBbY2xhc3MuZXhwYW5kYWJsZV09XCJvcHRpb25zPy5leHBhbmRhYmxlICYmICFleHBhbmRlZFwiXHJcbiAgICAgIFtjbGFzcy5leHBhbmRlZF09XCJvcHRpb25zPy5leHBhbmRhYmxlICYmIGV4cGFuZGVkXCI+XHJcbiAgICAgIDxtYXQtY2FyZC1oZWFkZXIgKm5nSWY9XCJzZWN0aW9uVGl0bGVcIj5cclxuICAgICAgICA8bGVnZW5kXHJcbiAgICAgICAgICBbY2xhc3NdPVwiJ2xlZ2VuZCAnICsgKG9wdGlvbnM/LmxhYmVsSHRtbENsYXNzIHx8ICcnKVwiXHJcbiAgICAgICAgICBbaW5uZXJIVE1MXT1cInNlY3Rpb25UaXRsZVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRXhwYW5kZWQoKVwiPjwvbGVnZW5kPlxyXG4gICAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgKm5nSWY9XCJleHBhbmRlZFwiPlxyXG4gICAgICAgIDxmaWVsZHNldCBbZGlzYWJsZWRdPVwib3B0aW9ucz8ucmVhZG9ubHlcIj5cclxuICAgICAgICAgIDxmbGV4LWxheW91dC1yb290LXdpZGdldCAqbmdJZj1cImV4cGFuZGVkXCJcclxuICAgICAgICAgICAgW2xheW91dF09XCJsYXlvdXROb2RlKCkuaXRlbXNcIlxyXG4gICAgICAgICAgICBbZGF0YUluZGV4XT1cImRhdGFJbmRleCgpXCJcclxuICAgICAgICAgICAgW2xheW91dEluZGV4XT1cImxheW91dEluZGV4KClcIlxyXG4gICAgICAgICAgICBbaXNGbGV4SXRlbV09XCJnZXRGbGV4QXR0cmlidXRlKCdpcy1mbGV4JylcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZm9ybS1mbGV4LWNvbHVtbl09XCJnZXRGbGV4QXR0cmlidXRlKCdmbGV4LWRpcmVjdGlvbicpID09PSAnY29sdW1uJ1wiXHJcbiAgICAgICAgICAgIFtjbGFzcy5mb3JtLWZsZXgtcm93XT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtZGlyZWN0aW9uJykgPT09ICdyb3cnXCJcclxuICAgICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZGlzcGxheScpXCJcclxuICAgICAgICAgICAgW3N0eWxlLmZsZXgtZGlyZWN0aW9uXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtZGlyZWN0aW9uJylcIlxyXG4gICAgICAgICAgICBbc3R5bGUuZmxleC13cmFwXT1cImdldEZsZXhBdHRyaWJ1dGUoJ2ZsZXgtd3JhcCcpXCJcclxuICAgICAgICAgICAgW3N0eWxlLmp1c3RpZnktY29udGVudF09XCJnZXRGbGV4QXR0cmlidXRlKCdqdXN0aWZ5LWNvbnRlbnQnKVwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5hbGlnbi1pdGVtc109XCJnZXRGbGV4QXR0cmlidXRlKCdhbGlnbi1pdGVtcycpXCJcclxuICAgICAgICAgICAgW3N0eWxlLmFsaWduLWNvbnRlbnRdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnYWxpZ24tY29udGVudCcpXCJcclxuICAgICAgICAgICAgW2F0dHIuZnhMYXlvdXRdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnbGF5b3V0JylcIlxyXG4gICAgICAgICAgICBbYXR0ci5meExheW91dEdhcF09XCJvcHRpb25zPy5meExheW91dEdhcFwiXHJcbiAgICAgICAgICAgIFthdHRyLmZ4TGF5b3V0QWxpZ25dPVwib3B0aW9ucz8uZnhMYXlvdXRBbGlnblwiXHJcbiAgICAgICAgICAgIFthdHRyLmZ4RmxleEZpbGxdPVwib3B0aW9ucz8uZnhMYXlvdXRBbGlnblwiPjwvZmxleC1sYXlvdXQtcm9vdC13aWRnZXQ+XHJcbiAgICAgICAgICA8L2ZpZWxkc2V0PlxyXG4gICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgIDxtYXQtY2FyZC1mb290ZXI+XHJcbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIm9wdGlvbnM/LnNob3dFcnJvcnMgJiYgb3B0aW9ucz8uZXJyb3JNZXNzYWdlXCJcclxuICAgICAgICAgIFtpbm5lckhUTUxdPVwib3B0aW9ucz8uZXJyb3JNZXNzYWdlXCI+PC9tYXQtZXJyb3I+XHJcbiAgICAgIDwvbWF0LWNhcmQtZm9vdGVyPlxyXG4gICAgPC9tYXQtY2FyZD5cclxuXHJcbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCAqbmdJZj1cImNvbnRhaW5lclR5cGUgPT09ICdleHBhbnNpb24tcGFuZWwnXCJcclxuICAgICAgW2V4cGFuZGVkXT1cImV4cGFuZGVkXCJcclxuICAgICAgW2hpZGVUb2dnbGVdPVwiIW9wdGlvbnM/LmV4cGFuZGFibGVcIj5cclxuICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XHJcbiAgICAgICAgICA8bGVnZW5kICpuZ0lmPVwic2VjdGlvblRpdGxlXCJcclxuICAgICAgICAgICAgW2NsYXNzXT1cIm9wdGlvbnM/LmxhYmVsSHRtbENsYXNzXCJcclxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJzZWN0aW9uVGl0bGVcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRXhwYW5kZWQoKVwiPjwvbGVnZW5kPlxyXG4gICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICA8ZmllbGRzZXQgW2Rpc2FibGVkXT1cIm9wdGlvbnM/LnJlYWRvbmx5XCI+XHJcbiAgICAgICAgPGZsZXgtbGF5b3V0LXJvb3Qtd2lkZ2V0ICpuZ0lmPVwiZXhwYW5kZWRcIlxyXG4gICAgICAgICAgW2xheW91dF09XCJsYXlvdXROb2RlKCkuaXRlbXNcIlxyXG4gICAgICAgICAgW2RhdGFJbmRleF09XCJkYXRhSW5kZXgoKVwiXHJcbiAgICAgICAgICBbbGF5b3V0SW5kZXhdPVwibGF5b3V0SW5kZXgoKVwiXHJcbiAgICAgICAgICBbaXNGbGV4SXRlbV09XCJnZXRGbGV4QXR0cmlidXRlKCdpcy1mbGV4JylcIlxyXG4gICAgICAgICAgW2NsYXNzLmZvcm0tZmxleC1jb2x1bW5dPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZmxleC1kaXJlY3Rpb24nKSA9PT0gJ2NvbHVtbidcIlxyXG4gICAgICAgICAgW2NsYXNzLmZvcm0tZmxleC1yb3ddPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZmxleC1kaXJlY3Rpb24nKSA9PT0gJ3JvdydcIlxyXG4gICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZGlzcGxheScpXCJcclxuICAgICAgICAgIFtzdHlsZS5mbGV4LWRpcmVjdGlvbl09XCJnZXRGbGV4QXR0cmlidXRlKCdmbGV4LWRpcmVjdGlvbicpXCJcclxuICAgICAgICAgIFtzdHlsZS5mbGV4LXdyYXBdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnZmxleC13cmFwJylcIlxyXG4gICAgICAgICAgW3N0eWxlLmp1c3RpZnktY29udGVudF09XCJnZXRGbGV4QXR0cmlidXRlKCdqdXN0aWZ5LWNvbnRlbnQnKVwiXHJcbiAgICAgICAgICBbc3R5bGUuYWxpZ24taXRlbXNdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnYWxpZ24taXRlbXMnKVwiXHJcbiAgICAgICAgICBbc3R5bGUuYWxpZ24tY29udGVudF09XCJnZXRGbGV4QXR0cmlidXRlKCdhbGlnbi1jb250ZW50JylcIlxyXG4gICAgICAgICAgW2F0dHIuZnhMYXlvdXRdPVwiZ2V0RmxleEF0dHJpYnV0ZSgnbGF5b3V0JylcIlxyXG4gICAgICAgICAgW2F0dHIuZnhMYXlvdXRHYXBdPVwib3B0aW9ucz8uZnhMYXlvdXRHYXBcIlxyXG4gICAgICAgICAgW2F0dHIuZnhMYXlvdXRBbGlnbl09XCJvcHRpb25zPy5meExheW91dEFsaWduXCJcclxuICAgICAgICAgIFthdHRyLmZ4RmxleEZpbGxdPVwib3B0aW9ucz8uZnhMYXlvdXRBbGlnblwiPjwvZmxleC1sYXlvdXQtcm9vdC13aWRnZXQ+XHJcbiAgICAgIDwvZmllbGRzZXQ+XHJcbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJvcHRpb25zPy5zaG93RXJyb3JzICYmIG9wdGlvbnM/LmVycm9yTWVzc2FnZVwiXHJcbiAgICAgICAgW2lubmVySFRNTF09XCJvcHRpb25zPy5lcnJvck1lc3NhZ2VcIj48L21hdC1lcnJvcj5cclxuICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5gLFxyXG4gIHN0eWxlczogW2BcclxuICAgIGZpZWxkc2V0IHsgYm9yZGVyOiAwOyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IH1cclxuICAgIC5sZWdlbmQgeyBmb250LXdlaWdodDogYm9sZDsgfVxyXG4gICAgLmV4cGFuZGFibGUgPiAubGVnZW5kOmJlZm9yZSB7IGNvbnRlbnQ6ICfilrYnOyBwYWRkaW5nLXJpZ2h0OiAuM2VtOyBmb250LWZhbWlseTphdXRvIH1cclxuICAgIC5leHBhbmRlZCA+IC5sZWdlbmQ6YmVmb3JlIHsgY29udGVudDogJ+KWvCc7IHBhZGRpbmctcmlnaHQ6IC4yZW07IH1cclxuICBgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZsZXhMYXlvdXRTZWN0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwcml2YXRlIGpzZiA9IGluamVjdChKc29uU2NoZW1hRm9ybVNlcnZpY2UpO1xyXG5cclxuICBmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIGNvbnRyb2xOYW1lOiBzdHJpbmc7XHJcbiAgY29udHJvbFZhbHVlOiBhbnk7XHJcbiAgY29udHJvbERpc2FibGVkID0gZmFsc2U7XHJcbiAgYm91bmRDb250cm9sID0gZmFsc2U7XHJcbiAgb3B0aW9uczogYW55O1xyXG4gIGV4cGFuZGVkID0gdHJ1ZTtcclxuICBjb250YWluZXJUeXBlID0gJ2Rpdic7XHJcbiAgcmVhZG9ubHkgbGF5b3V0Tm9kZSA9IGlucHV0PGFueT4odW5kZWZpbmVkKTtcclxuICByZWFkb25seSBsYXlvdXRJbmRleCA9IGlucHV0PG51bWJlcltdPih1bmRlZmluZWQpO1xyXG4gIHJlYWRvbmx5IGRhdGFJbmRleCA9IGlucHV0PG51bWJlcltdPih1bmRlZmluZWQpO1xyXG5cclxuICBnZXQgc2VjdGlvblRpdGxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5ub3RpdGxlID8gbnVsbCA6IHRoaXMuanNmLnNldEl0ZW1UaXRsZSh0aGlzKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5qc2YuaW5pdGlhbGl6ZUNvbnRyb2wodGhpcyk7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLmxheW91dE5vZGUoKS5vcHRpb25zIHx8IHt9O1xyXG4gICAgdGhpcy5leHBhbmRlZCA9IHR5cGVvZiB0aGlzLm9wdGlvbnMuZXhwYW5kZWQgPT09ICdib29sZWFuJyA/XHJcbiAgICAgIHRoaXMub3B0aW9ucy5leHBhbmRlZCA6ICF0aGlzLm9wdGlvbnMuZXhwYW5kYWJsZTtcclxuICAgIHN3aXRjaCAodGhpcy5sYXlvdXROb2RlKCkudHlwZSkge1xyXG4gICAgICBjYXNlICdzZWN0aW9uJzogY2FzZSAnYXJyYXknOiBjYXNlICdmaWVsZHNldCc6IGNhc2UgJ2FkdmFuY2VkZmllbGRzZXQnOlxyXG4gICAgICBjYXNlICdhdXRoZmllbGRzZXQnOiBjYXNlICdvcHRpb25maWVsZHNldCc6IGNhc2UgJ3NlbGVjdGZpZWxkc2V0JzpcclxuICAgICAgICB0aGlzLmNvbnRhaW5lclR5cGUgPSAnZmllbGRzZXQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjYXJkJzpcclxuICAgICAgICB0aGlzLmNvbnRhaW5lclR5cGUgPSAnY2FyZCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2V4cGFuc2lvbi1wYW5lbCc6XHJcbiAgICAgICAgdGhpcy5jb250YWluZXJUeXBlID0gJ2V4cGFuc2lvbi1wYW5lbCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6IC8vICdkaXYnLCAnZmxleCcsICd0YWInLCAnY29uZGl0aW9uYWwnLCAnYWN0aW9ucydcclxuICAgICAgICB0aGlzLmNvbnRhaW5lclR5cGUgPSAnZGl2JztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvZ2dsZUV4cGFuZGVkKCkge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5leHBhbmRhYmxlKSB7IHRoaXMuZXhwYW5kZWQgPSAhdGhpcy5leHBhbmRlZDsgfVxyXG4gIH1cclxuXHJcbiAgLy8gU2V0IGF0dHJpYnV0ZXMgZm9yIGZsZXhib3ggY29udGFpbmVyXHJcbiAgLy8gKGNoaWxkIGF0dHJpYnV0ZXMgYXJlIHNldCBpbiBmbGV4LWxheW91dC1yb290LmNvbXBvbmVudClcclxuICBnZXRGbGV4QXR0cmlidXRlKGF0dHJpYnV0ZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBmbGV4QWN0aXZlOiBib29sZWFuID1cclxuICAgICAgdGhpcy5sYXlvdXROb2RlKCkudHlwZSA9PT0gJ2ZsZXgnIHx8XHJcbiAgICAgICEhdGhpcy5vcHRpb25zLmRpc3BsYXlGbGV4IHx8XHJcbiAgICAgIHRoaXMub3B0aW9ucy5kaXNwbGF5ID09PSAnZmxleCc7XHJcbiAgICAvLyBpZiAoYXR0cmlidXRlICE9PSAnZmxleCcgJiYgIWZsZXhBY3RpdmUpIHsgcmV0dXJuIG51bGw7IH1cclxuICAgIHN3aXRjaCAoYXR0cmlidXRlKSB7XHJcbiAgICAgIGNhc2UgJ2lzLWZsZXgnOlxyXG4gICAgICAgIHJldHVybiBmbGV4QWN0aXZlO1xyXG4gICAgICBjYXNlICdkaXNwbGF5JzpcclxuICAgICAgICByZXR1cm4gZmxleEFjdGl2ZSA/ICdmbGV4JyA6ICdpbml0aWFsJztcclxuICAgICAgY2FzZSAnZmxleC1kaXJlY3Rpb24nOiBjYXNlICdmbGV4LXdyYXAnOlxyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gWydmbGV4LWRpcmVjdGlvbicsICdmbGV4LXdyYXAnXS5pbmRleE9mKGF0dHJpYnV0ZSk7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLm9wdGlvbnNbJ2ZsZXgtZmxvdyddIHx8ICcnKS5zcGxpdCgvXFxzKy8pW2luZGV4XSB8fFxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zW2F0dHJpYnV0ZV0gfHwgWydjb2x1bW4nLCAnbm93cmFwJ11baW5kZXhdO1xyXG4gICAgICBjYXNlICdqdXN0aWZ5LWNvbnRlbnQnOiBjYXNlICdhbGlnbi1pdGVtcyc6IGNhc2UgJ2FsaWduLWNvbnRlbnQnOlxyXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNbYXR0cmlidXRlXTtcclxuICAgICAgY2FzZSAnbGF5b3V0JzpcclxuICAgICAgICByZXR1cm4gKHRoaXMub3B0aW9ucy5meExheW91dCB8fCAncm93JykgK1xyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmZ4TGF5b3V0V3JhcCA/ICcgJyArIHRoaXMub3B0aW9ucy5meExheW91dFdyYXAgOiAnJztcclxuXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,63 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, input, inject } from '@angular/core';
2
- import { JsonSchemaFormService } from '@ng-formworks/core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@angular/material/button";
6
- export class MaterialAddReferenceComponent {
7
- constructor() {
8
- this.jsf = inject(JsonSchemaFormService);
9
- this.layoutNode = input(undefined);
10
- this.layoutIndex = input(undefined);
11
- this.dataIndex = input(undefined);
12
- }
13
- ngOnInit() {
14
- this.options = this.layoutNode().options || {};
15
- }
16
- get showAddButton() {
17
- return !this.layoutNode().arrayItem ||
18
- this.layoutIndex()[this.layoutIndex().length - 1] < this.options.maxItems;
19
- }
20
- addItem(event) {
21
- event.preventDefault();
22
- this.jsf.addItem(this);
23
- }
24
- get buttonText() {
25
- const parent = {
26
- dataIndex: this.dataIndex().slice(0, -1),
27
- layoutIndex: this.layoutIndex().slice(0, -1),
28
- layoutNode: this.jsf.getParentNode(this),
29
- };
30
- return parent.layoutNode.add ||
31
- this.jsf.setArrayItemTitle(parent, this.layoutNode(), this.itemCount);
32
- }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaterialAddReferenceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: MaterialAddReferenceComponent, selector: "material-add-reference-widget", inputs: { layoutNode: { classPropertyName: "layoutNode", publicName: "layoutNode", isSignal: true, isRequired: false, transformFunction: null }, layoutIndex: { classPropertyName: "layoutIndex", publicName: "layoutIndex", isSignal: true, isRequired: false, transformFunction: null }, dataIndex: { classPropertyName: "dataIndex", publicName: "dataIndex", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
35
- <section [class]="options?.htmlClass || ''" align="end">
36
- <button mat-raised-button *ngIf="showAddButton"
37
- [color]="options?.color || 'accent'"
38
- [disabled]="options?.readonly"
39
- (click)="addItem($event)">
40
- <span *ngIf="options?.icon" [class]="options?.icon"></span>
41
- <span *ngIf="options?.title" [innerHTML]="buttonText"></span>
42
- </button>
43
- </section>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
44
- }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaterialAddReferenceComponent, decorators: [{
46
- type: Component,
47
- args: [{
48
- // tslint:disable-next-line:component-selector
49
- selector: 'material-add-reference-widget',
50
- template: `
51
- <section [class]="options?.htmlClass || ''" align="end">
52
- <button mat-raised-button *ngIf="showAddButton"
53
- [color]="options?.color || 'accent'"
54
- [disabled]="options?.readonly"
55
- (click)="addItem($event)">
56
- <span *ngIf="options?.icon" [class]="options?.icon"></span>
57
- <span *ngIf="options?.title" [innerHTML]="buttonText"></span>
58
- </button>
59
- </section>`,
60
- changeDetection: ChangeDetectionStrategy.Default,
61
- }]
62
- }] });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtYWRkLXJlZmVyZW5jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1mb3Jtd29ya3MtbWF0ZXJpYWwvc3JjL2xpYi93aWRnZXRzL21hdGVyaWFsLWFkZC1yZWZlcmVuY2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQWtCM0QsTUFBTSxPQUFPLDZCQUE2QjtJQWYxQztRQWdCVSxRQUFHLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFNbkMsZUFBVSxHQUFHLEtBQUssQ0FBTSxTQUFTLENBQUMsQ0FBQztRQUNuQyxnQkFBVyxHQUFHLEtBQUssQ0FBVyxTQUFTLENBQUMsQ0FBQztRQUN6QyxjQUFTLEdBQUcsS0FBSyxDQUFXLFNBQVMsQ0FBQyxDQUFDO0tBeUJqRDtJQXZCQyxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTO1lBQ2pDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQzlFLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBSztRQUNYLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osTUFBTSxNQUFNLEdBQVE7WUFDbEIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM1QyxVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1NBQ3pDLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRztZQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7K0dBakNVLDZCQUE2QjttR0FBN0IsNkJBQTZCLHNlQVo5Qjs7Ozs7Ozs7O2VBU0c7OzRGQUdGLDZCQUE2QjtrQkFmekMsU0FBUzttQkFBQztvQkFDVCw4Q0FBOEM7b0JBQzlDLFFBQVEsRUFBRSwrQkFBK0I7b0JBQ3pDLFFBQVEsRUFBRTs7Ozs7Ozs7O2VBU0c7b0JBQ2IsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE9BQU87aUJBQ2pEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0LCBpbnB1dCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEpzb25TY2hlbWFGb3JtU2VydmljZSB9IGZyb20gJ0BuZy1mb3Jtd29ya3MvY29yZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnbWF0ZXJpYWwtYWRkLXJlZmVyZW5jZS13aWRnZXQnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8c2VjdGlvbiBbY2xhc3NdPVwib3B0aW9ucz8uaHRtbENsYXNzIHx8ICcnXCIgYWxpZ249XCJlbmRcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAqbmdJZj1cInNob3dBZGRCdXR0b25cIlxyXG4gICAgICAgIFtjb2xvcl09XCJvcHRpb25zPy5jb2xvciB8fCAnYWNjZW50J1wiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cIm9wdGlvbnM/LnJlYWRvbmx5XCJcclxuICAgICAgICAoY2xpY2spPVwiYWRkSXRlbSgkZXZlbnQpXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJvcHRpb25zPy5pY29uXCIgW2NsYXNzXT1cIm9wdGlvbnM/Lmljb25cIj48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJvcHRpb25zPy50aXRsZVwiIFtpbm5lckhUTUxdPVwiYnV0dG9uVGV4dFwiPjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L3NlY3Rpb24+YCxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXRlcmlhbEFkZFJlZmVyZW5jZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSBqc2YgPSBpbmplY3QoSnNvblNjaGVtYUZvcm1TZXJ2aWNlKTtcclxuXHJcbiAgb3B0aW9uczogYW55O1xyXG4gIGl0ZW1Db3VudDogbnVtYmVyO1xyXG4gIHByZXZpb3VzTGF5b3V0SW5kZXg6IG51bWJlcltdO1xyXG4gIHByZXZpb3VzRGF0YUluZGV4OiBudW1iZXJbXTtcclxuICByZWFkb25seSBsYXlvdXROb2RlID0gaW5wdXQ8YW55Pih1bmRlZmluZWQpO1xyXG4gIHJlYWRvbmx5IGxheW91dEluZGV4ID0gaW5wdXQ8bnVtYmVyW10+KHVuZGVmaW5lZCk7XHJcbiAgcmVhZG9ubHkgZGF0YUluZGV4ID0gaW5wdXQ8bnVtYmVyW10+KHVuZGVmaW5lZCk7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5sYXlvdXROb2RlKCkub3B0aW9ucyB8fCB7fTtcclxuICB9XHJcblxyXG4gIGdldCBzaG93QWRkQnV0dG9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLmxheW91dE5vZGUoKS5hcnJheUl0ZW0gfHxcclxuICAgICAgdGhpcy5sYXlvdXRJbmRleCgpW3RoaXMubGF5b3V0SW5kZXgoKS5sZW5ndGggLSAxXSA8IHRoaXMub3B0aW9ucy5tYXhJdGVtcztcclxuICB9XHJcblxyXG4gIGFkZEl0ZW0oZXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLmpzZi5hZGRJdGVtKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGJ1dHRvblRleHQoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHBhcmVudDogYW55ID0ge1xyXG4gICAgICBkYXRhSW5kZXg6IHRoaXMuZGF0YUluZGV4KCkuc2xpY2UoMCwgLTEpLFxyXG4gICAgICBsYXlvdXRJbmRleDogdGhpcy5sYXlvdXRJbmRleCgpLnNsaWNlKDAsIC0xKSxcclxuICAgICAgbGF5b3V0Tm9kZTogdGhpcy5qc2YuZ2V0UGFyZW50Tm9kZSh0aGlzKSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gcGFyZW50LmxheW91dE5vZGUuYWRkIHx8XHJcbiAgICAgIHRoaXMuanNmLnNldEFycmF5SXRlbVRpdGxlKHBhcmVudCwgdGhpcy5sYXlvdXROb2RlKCksIHRoaXMuaXRlbUNvdW50KTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,86 +0,0 @@
1
- import { Component, input, inject } from '@angular/core';
2
- import { JsonSchemaFormService, buildTitleMap } from '@ng-formworks/core';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@angular/material/button-toggle";
6
- import * as i3 from "@angular/material/form-field";
7
- export class MaterialButtonGroupComponent {
8
- constructor() {
9
- this.jsf = inject(JsonSchemaFormService);
10
- this.controlDisabled = false;
11
- this.boundControl = false;
12
- this.radiosList = [];
13
- this.vertical = false;
14
- this.layoutNode = input(undefined);
15
- this.layoutIndex = input(undefined);
16
- this.dataIndex = input(undefined);
17
- }
18
- ngOnInit() {
19
- this.options = this.layoutNode().options || {};
20
- this.radiosList = buildTitleMap(this.options.titleMap || this.options.enumNames, this.options.enum, true);
21
- this.jsf.initializeControl(this);
22
- }
23
- updateValue(value) {
24
- this.options.showErrors = true;
25
- this.jsf.updateValue(this, value);
26
- }
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaterialButtonGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: MaterialButtonGroupComponent, selector: "material-button-group-widget", inputs: { layoutNode: { classPropertyName: "layoutNode", publicName: "layoutNode", isSignal: true, isRequired: false, transformFunction: null }, layoutIndex: { classPropertyName: "layoutIndex", publicName: "layoutIndex", isSignal: true, isRequired: false, transformFunction: null }, dataIndex: { classPropertyName: "dataIndex", publicName: "dataIndex", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
29
- <div>
30
- <div *ngIf="options?.title">
31
- <label
32
- [attr.for]="'control' + layoutNode()?._id"
33
- [class]="options?.labelHtmlClass || ''"
34
- [style.display]="options?.notitle ? 'none' : ''"
35
- [innerHTML]="options?.title"></label>
36
- </div>
37
- <mat-button-toggle-group
38
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
39
- [attr.readonly]="options?.readonly ? 'readonly' : null"
40
- [attr.required]="options?.required"
41
- [disabled]="controlDisabled || options?.readonly"
42
- [name]="controlName"
43
- [value]="controlValue"
44
- [vertical]="!!options.vertical">
45
- <mat-button-toggle *ngFor="let radioItem of radiosList"
46
- [id]="'control' + layoutNode()?._id + '/' + radioItem?.name"
47
- [value]="radioItem?.value"
48
- (click)="updateValue(radioItem?.value)">
49
- <span [innerHTML]="radioItem?.name"></span>
50
- </mat-button-toggle>
51
- </mat-button-toggle-group>
52
- <mat-error *ngIf="options?.showErrors && options?.errorMessage"
53
- [innerHTML]="options?.errorMessage"></mat-error>
54
- </div>`, isInline: true, styles: ["mat-error{font-size:75%}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i2.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: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }] }); }
55
- }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaterialButtonGroupComponent, decorators: [{
57
- type: Component,
58
- args: [{ selector: 'material-button-group-widget', template: `
59
- <div>
60
- <div *ngIf="options?.title">
61
- <label
62
- [attr.for]="'control' + layoutNode()?._id"
63
- [class]="options?.labelHtmlClass || ''"
64
- [style.display]="options?.notitle ? 'none' : ''"
65
- [innerHTML]="options?.title"></label>
66
- </div>
67
- <mat-button-toggle-group
68
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
69
- [attr.readonly]="options?.readonly ? 'readonly' : null"
70
- [attr.required]="options?.required"
71
- [disabled]="controlDisabled || options?.readonly"
72
- [name]="controlName"
73
- [value]="controlValue"
74
- [vertical]="!!options.vertical">
75
- <mat-button-toggle *ngFor="let radioItem of radiosList"
76
- [id]="'control' + layoutNode()?._id + '/' + radioItem?.name"
77
- [value]="radioItem?.value"
78
- (click)="updateValue(radioItem?.value)">
79
- <span [innerHTML]="radioItem?.name"></span>
80
- </mat-button-toggle>
81
- </mat-button-toggle-group>
82
- <mat-error *ngIf="options?.showErrors && options?.errorMessage"
83
- [innerHTML]="options?.errorMessage"></mat-error>
84
- </div>`, styles: ["mat-error{font-size:75%}\n"] }]
85
- }] });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtYnV0dG9uLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWZvcm13b3Jrcy1tYXRlcmlhbC9zcmMvbGliL3dpZGdldHMvbWF0ZXJpYWwtYnV0dG9uLWdyb3VwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQW1DMUUsTUFBTSxPQUFPLDRCQUE0QjtJQWhDekM7UUFpQ1UsUUFBRyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBSzVDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFDdkIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNSLGVBQVUsR0FBRyxLQUFLLENBQU0sU0FBUyxDQUFDLENBQUM7UUFDbkMsZ0JBQVcsR0FBRyxLQUFLLENBQVcsU0FBUyxDQUFDLENBQUM7UUFDekMsY0FBUyxHQUFHLEtBQUssQ0FBVyxTQUFTLENBQUMsQ0FBQztLQWVqRDtJQWJDLFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUN4QixDQUFDO1FBQ0YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7K0dBM0JVLDRCQUE0QjttR0FBNUIsNEJBQTRCLHFlQTdCN0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBMEJEOzs0RkFHRSw0QkFBNEI7a0JBaEN4QyxTQUFTOytCQUVFLDhCQUE4QixZQUM5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7V0EwQkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgaW5wdXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEpzb25TY2hlbWFGb3JtU2VydmljZSwgYnVpbGRUaXRsZU1hcCB9IGZyb20gJ0BuZy1mb3Jtd29ya3MvY29yZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnbWF0ZXJpYWwtYnV0dG9uLWdyb3VwLXdpZGdldCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJvcHRpb25zPy50aXRsZVwiPlxyXG4gICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgW2F0dHIuZm9yXT1cIidjb250cm9sJyArIGxheW91dE5vZGUoKT8uX2lkXCJcclxuICAgICAgICAgIFtjbGFzc109XCJvcHRpb25zPy5sYWJlbEh0bWxDbGFzcyB8fCAnJ1wiXHJcbiAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJvcHRpb25zPy5ub3RpdGxlID8gJ25vbmUnIDogJydcIlxyXG4gICAgICAgICAgW2lubmVySFRNTF09XCJvcHRpb25zPy50aXRsZVwiPjwvbGFiZWw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBcclxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIidjb250cm9sJyArIGxheW91dE5vZGUoKT8uX2lkICsgJ1N0YXR1cydcIlxyXG4gICAgICAgIFthdHRyLnJlYWRvbmx5XT1cIm9wdGlvbnM/LnJlYWRvbmx5ID8gJ3JlYWRvbmx5JyA6IG51bGxcIlxyXG4gICAgICAgIFthdHRyLnJlcXVpcmVkXT1cIm9wdGlvbnM/LnJlcXVpcmVkXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiY29udHJvbERpc2FibGVkIHx8IG9wdGlvbnM/LnJlYWRvbmx5XCJcclxuICAgICAgICBbbmFtZV09XCJjb250cm9sTmFtZVwiXHJcbiAgICAgICAgW3ZhbHVlXT1cImNvbnRyb2xWYWx1ZVwiXHJcbiAgICAgICAgW3ZlcnRpY2FsXT1cIiEhb3B0aW9ucy52ZXJ0aWNhbFwiPlxyXG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSAqbmdGb3I9XCJsZXQgcmFkaW9JdGVtIG9mIHJhZGlvc0xpc3RcIlxyXG4gICAgICAgICAgW2lkXT1cIidjb250cm9sJyArIGxheW91dE5vZGUoKT8uX2lkICsgJy8nICsgcmFkaW9JdGVtPy5uYW1lXCJcclxuICAgICAgICAgIFt2YWx1ZV09XCJyYWRpb0l0ZW0/LnZhbHVlXCJcclxuICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVWYWx1ZShyYWRpb0l0ZW0/LnZhbHVlKVwiPlxyXG4gICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJyYWRpb0l0ZW0/Lm5hbWVcIj48L3NwYW4+XHJcbiAgICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cclxuICAgICAgPC9tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cD5cclxuICAgICAgPG1hdC1lcnJvciAqbmdJZj1cIm9wdGlvbnM/LnNob3dFcnJvcnMgJiYgb3B0aW9ucz8uZXJyb3JNZXNzYWdlXCJcclxuICAgICAgICBbaW5uZXJIVE1MXT1cIm9wdGlvbnM/LmVycm9yTWVzc2FnZVwiPjwvbWF0LWVycm9yPlxyXG4gICAgPC9kaXY+YCxcclxuICAgIHN0eWxlczogW2AgbWF0LWVycm9yIHsgZm9udC1zaXplOiA3NSU7IH0gYF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXRlcmlhbEJ1dHRvbkdyb3VwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwcml2YXRlIGpzZiA9IGluamVjdChKc29uU2NoZW1hRm9ybVNlcnZpY2UpO1xyXG5cclxuICBmb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIGNvbnRyb2xOYW1lOiBzdHJpbmc7XHJcbiAgY29udHJvbFZhbHVlOiBhbnk7XHJcbiAgY29udHJvbERpc2FibGVkID0gZmFsc2U7XHJcbiAgYm91bmRDb250cm9sID0gZmFsc2U7XHJcbiAgb3B0aW9uczogYW55O1xyXG4gIHJhZGlvc0xpc3Q6IGFueVtdID0gW107XHJcbiAgdmVydGljYWwgPSBmYWxzZTtcclxuICByZWFkb25seSBsYXlvdXROb2RlID0gaW5wdXQ8YW55Pih1bmRlZmluZWQpO1xyXG4gIHJlYWRvbmx5IGxheW91dEluZGV4ID0gaW5wdXQ8bnVtYmVyW10+KHVuZGVmaW5lZCk7XHJcbiAgcmVhZG9ubHkgZGF0YUluZGV4ID0gaW5wdXQ8bnVtYmVyW10+KHVuZGVmaW5lZCk7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5sYXlvdXROb2RlKCkub3B0aW9ucyB8fCB7fTtcclxuICAgIHRoaXMucmFkaW9zTGlzdCA9IGJ1aWxkVGl0bGVNYXAoXHJcbiAgICAgIHRoaXMub3B0aW9ucy50aXRsZU1hcCB8fCB0aGlzLm9wdGlvbnMuZW51bU5hbWVzLFxyXG4gICAgICB0aGlzLm9wdGlvbnMuZW51bSwgdHJ1ZVxyXG4gICAgKTtcclxuICAgIHRoaXMuanNmLmluaXRpYWxpemVDb250cm9sKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVmFsdWUodmFsdWUpIHtcclxuICAgIHRoaXMub3B0aW9ucy5zaG93RXJyb3JzID0gdHJ1ZTtcclxuICAgIHRoaXMuanNmLnVwZGF0ZVZhbHVlKHRoaXMsIHZhbHVlKTtcclxuICB9XHJcbn1cclxuIl19