@eqproject/eqp-dynamic-module 2.8.5 → 2.8.7

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 (37) hide show
  1. package/esm2020/lib/components/private/dynamic-module-field-fix/dynamic-module-field.component.mjs +5 -4
  2. package/esm2020/lib/components/private/field-templates/date-field-template/date-field-template.component.mjs +6 -4
  3. package/esm2020/lib/components/private/field-templates/label-field-template/label-field-template.component.mjs +6 -14
  4. package/esm2020/lib/components/private/field-templates/text-field-template/text-field-template.component.mjs +12 -49
  5. package/esm2020/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.mjs +12 -49
  6. package/esm2020/lib/components/private/form-records/add-form-record/add-form-record.component.mjs +40 -12
  7. package/esm2020/lib/components/private/form-statistics/filter-templates/text-filter-template/text-filter-template.component.mjs +13 -45
  8. package/esm2020/lib/components/private/form-statistics/filter-templates/textarea-filter-template/textarea-filter-template.component.mjs +13 -45
  9. package/esm2020/lib/components/private/trigger-creator/trigger-templates/text-trigger-template/text-trigger-template.component.mjs +13 -45
  10. package/esm2020/lib/components/private/trigger-creator/trigger-templates/textarea-trigger-template/textarea-trigger-template.component.mjs +13 -45
  11. package/esm2020/lib/directives/speech-to-text/speech-to-text.directive.mjs +186 -0
  12. package/esm2020/lib/eqp-dynamic-module.module.mjs +6 -6
  13. package/esm2020/lib/models/fields/dateField.model.mjs +5 -1
  14. package/esm2020/lib/services/global.service.mjs +4 -1
  15. package/esm2020/public-api.mjs +3 -2
  16. package/fesm2015/eqproject-eqp-dynamic-module.mjs +311 -491
  17. package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
  18. package/fesm2020/eqproject-eqp-dynamic-module.mjs +311 -491
  19. package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
  20. package/lib/components/private/field-templates/date-field-template/date-field-template.component.d.ts +1 -1
  21. package/lib/components/private/field-templates/label-field-template/label-field-template.component.d.ts +1 -3
  22. package/lib/components/private/field-templates/text-field-template/text-field-template.component.d.ts +1 -6
  23. package/lib/components/private/field-templates/textarea-field-template/textarea-field-template.component.d.ts +1 -6
  24. package/lib/components/private/form-records/add-form-record/add-form-record.component.d.ts +4 -1
  25. package/lib/components/private/form-statistics/filter-templates/text-filter-template/text-filter-template.component.d.ts +1 -6
  26. package/lib/components/private/form-statistics/filter-templates/textarea-filter-template/textarea-filter-template.component.d.ts +1 -6
  27. package/lib/components/private/trigger-creator/trigger-templates/text-trigger-template/text-trigger-template.component.d.ts +1 -6
  28. package/lib/components/private/trigger-creator/trigger-templates/textarea-trigger-template/textarea-trigger-template.component.d.ts +1 -6
  29. package/lib/directives/speech-to-text/speech-to-text.directive.d.ts +31 -0
  30. package/lib/eqp-dynamic-module.module.d.ts +37 -37
  31. package/lib/services/global.service.d.ts +3 -0
  32. package/package.json +1 -1
  33. package/public-api.d.ts +2 -1
  34. package/esm2020/lib/components/private/dynamic-module-field/dynamic-module-field.component.mjs +0 -136
  35. package/esm2020/lib/services/voice-recognition.service.mjs +0 -75
  36. package/lib/components/private/dynamic-module-field/dynamic-module-field.component.d.ts +0 -60
  37. package/lib/services/voice-recognition.service.d.ts +0 -18
@@ -24,7 +24,7 @@ export declare class DateFieldTemplateComponent implements OnInit, OnChanges, IB
24
24
  /**
25
25
  * Metodo per emettere l'evento che il valore del record è cambiato.
26
26
  */
27
- onRecordValueChange(): void;
27
+ onRecordValueChange(ev: any): void;
28
28
  setOutputFormat(): void;
29
29
  /**
30
30
  * In base al formato della data richiesta nel DateField (solo data, solo orario o data e ora)
@@ -1,12 +1,10 @@
1
1
  import { EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';
2
2
  import { Record } from '../../../../models/record.model';
3
3
  import { IBaseFieldComponent } from '../../../../interfaces/iBaseFieldComponent.interface';
4
- import { VoiceRecognitionService } from '../../../../services/voice-recognition.service';
5
4
  import { Subscription } from 'rxjs';
6
5
  import { LabelField } from '../../../../models/fields/labelField.model';
7
6
  import * as i0 from "@angular/core";
8
7
  export declare class LabelFieldTemplateComponent implements OnInit, OnChanges, IBaseFieldComponent {
9
- voiceservice: VoiceRecognitionService;
10
8
  isStillRecoginze: boolean;
11
9
  source: import("rxjs").Observable<number>;
12
10
  newtext: string;
@@ -18,7 +16,7 @@ export declare class LabelFieldTemplateComponent implements OnInit, OnChanges, I
18
16
  FieldstyleObj: any;
19
17
  LabelstyleObj: any;
20
18
  recordChange: EventEmitter<Record>;
21
- constructor(voiceservice: VoiceRecognitionService);
19
+ constructor();
22
20
  ngOnInit(): void;
23
21
  initStyles(): void;
24
22
  ngOnChanges(changes: SimpleChanges): void;
@@ -2,11 +2,9 @@ import { EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';
2
2
  import { Record } from '../../../../models/record.model';
3
3
  import { TextMaskEnum, TextField } from '../../../../models/fields/textField.model';
4
4
  import { IBaseFieldComponent } from '../../../../interfaces/iBaseFieldComponent.interface';
5
- import { VoiceRecognitionService } from '../../../../services/voice-recognition.service';
6
5
  import { Subscription } from 'rxjs';
7
6
  import * as i0 from "@angular/core";
8
7
  export declare class TextFieldTemplateComponent implements OnInit, OnChanges, IBaseFieldComponent {
9
- voiceservice: VoiceRecognitionService;
10
8
  isStillRecoginze: boolean;
11
9
  source: import("rxjs").Observable<number>;
12
10
  newtext: string;
@@ -19,14 +17,11 @@ export declare class TextFieldTemplateComponent implements OnInit, OnChanges, IB
19
17
  LabelstyleObj: any;
20
18
  recordChange: EventEmitter<Record>;
21
19
  InputMaskEnum: typeof TextMaskEnum;
22
- constructor(voiceservice: VoiceRecognitionService);
20
+ constructor();
23
21
  ngOnInit(): void;
24
22
  initStyles(): void;
25
23
  ngOnChanges(changes: SimpleChanges): void;
26
- ttsClick(): void;
27
24
  getInputType(): "text" | "email" | "password" | "tel" | "url";
28
- updateRTVoiceField(): void;
29
- updateVoiceField(): void;
30
25
  /**
31
26
  * Metodo per aggiornare il valore del campo quando questo è rappresentato da una formula.
32
27
  */
@@ -2,11 +2,9 @@ import { EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';
2
2
  import { IBaseFieldComponent } from '../../../../interfaces/iBaseFieldComponent.interface';
3
3
  import { Record } from '../../../../models/record.model';
4
4
  import { TextareaField } from '../../../../models/fields/textareaField.model';
5
- import { VoiceRecognitionService } from '../../../../services/voice-recognition.service';
6
5
  import { Subscription } from 'rxjs';
7
6
  import * as i0 from "@angular/core";
8
7
  export declare class TextareaFieldTemplateComponent implements OnInit, OnChanges, IBaseFieldComponent {
9
- voiceservice: VoiceRecognitionService;
10
8
  isStillRecoginze: boolean;
11
9
  field: TextareaField;
12
10
  record: Record;
@@ -16,17 +14,14 @@ export declare class TextareaFieldTemplateComponent implements OnInit, OnChanges
16
14
  subscription: Subscription;
17
15
  FieldstyleObj: any;
18
16
  LabelstyleObj: any;
19
- constructor(voiceservice: VoiceRecognitionService);
17
+ constructor();
20
18
  ngOnInit(): void;
21
19
  initStyles(): void;
22
20
  ngOnChanges(changes: SimpleChanges): void;
23
- ttsClick(): void;
24
21
  /**
25
22
  * Metodo per aggiornare il valore del campo quando questo è rappresentato da una formula.
26
23
  */
27
24
  updateField(): void;
28
- updateRTVoiceField(): void;
29
- updateVoiceField(): void;
30
25
  /**
31
26
  * Metodo per emettere l'evento che il valore del record è cambiato.
32
27
  */
@@ -9,10 +9,12 @@ import { DynamicModuleFieldFixComponent } from '../../dynamic-module-field-fix/d
9
9
  import { EndPointConfiguration } from './../../../../models/endPointConfiguration.model';
10
10
  import { DynamicLoaderDirectiveData, eventOut } from "../../../../directives/dynamic-loader/dynamic-loader.directive";
11
11
  import { FireTrigger } from '../../../../models/trigger.model';
12
+ import { DatePipe } from '@angular/common';
12
13
  import * as i0 from "@angular/core";
13
14
  export declare class AddFormRecordComponent implements OnInit {
14
15
  private cdr;
15
16
  utilityService: UtilityHelperService;
17
+ private datepipe;
16
18
  configurations: DynamicModuleCompileConfig;
17
19
  endPointConfiguration: EndPointConfiguration;
18
20
  userID: string;
@@ -42,8 +44,9 @@ export declare class AddFormRecordComponent implements OnInit {
42
44
  FormScalarTypeEnum: typeof FormScalarTypeEnum;
43
45
  FieldTypeEnum: typeof FieldTypeEnum;
44
46
  fieldTemplate: QueryList<DynamicModuleFieldFixComponent>;
45
- constructor(cdr: ChangeDetectorRef, utilityService: UtilityHelperService);
47
+ constructor(cdr: ChangeDetectorRef, utilityService: UtilityHelperService, datepipe: DatePipe);
46
48
  ngOnInit(): void;
49
+ onStepChange(event: any): void;
47
50
  /**
48
51
  * Metodo invocato al cambio del valore di ogni proprietà dell'oggetto record.
49
52
  * Serve ad aggiornare il valore di tutti i campi che hanno una formula.
@@ -1,13 +1,11 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { Record } from '../../../../../models/record.model';
3
3
  import { TextMaskEnum, TextField } from '../../../../../models/fields/textField.model';
4
- import { VoiceRecognitionService } from '../../../../../services/voice-recognition.service';
5
4
  import { Subscription } from 'rxjs';
6
5
  import { LogicOperatorText } from '../../../../../models/logicOperator.model';
7
6
  import { Statistic } from '../../../../../models/statistic.model';
8
7
  import * as i0 from "@angular/core";
9
8
  export declare class TextFilterTemplateComponent {
10
- voiceservice: VoiceRecognitionService;
11
9
  isStillRecoginze: boolean;
12
10
  source: import("rxjs").Observable<number>;
13
11
  newtext: string;
@@ -23,13 +21,10 @@ export declare class TextFilterTemplateComponent {
23
21
  logicOperatorText: typeof LogicOperatorText;
24
22
  selectedLogicOperator: LogicOperatorText;
25
23
  activeCondition: boolean;
26
- constructor(voiceservice: VoiceRecognitionService);
24
+ constructor();
27
25
  ngOnInit(): void;
28
26
  initStyles(): void;
29
- ttsClick(): void;
30
27
  getInputType(): "text" | "email" | "password" | "tel" | "url";
31
- updateRTVoiceField(): void;
32
- updateVoiceField(): void;
33
28
  /**
34
29
  * Metodo per emettere l'evento che il valore del record è cambiato.
35
30
  */
@@ -1,13 +1,11 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { Record } from '../../../../../models/record.model';
3
3
  import { TextMaskEnum, TextField } from '../../../../../models/fields/textField.model';
4
- import { VoiceRecognitionService } from '../../../../../services/voice-recognition.service';
5
4
  import { Subscription } from 'rxjs';
6
5
  import { LogicOperatorText } from '../../../../../models/logicOperator.model';
7
6
  import { Statistic } from '../../../../../models/statistic.model';
8
7
  import * as i0 from "@angular/core";
9
8
  export declare class TextareaFilterTemplateComponent {
10
- voiceservice: VoiceRecognitionService;
11
9
  isStillRecoginze: boolean;
12
10
  source: import("rxjs").Observable<number>;
13
11
  newtext: string;
@@ -23,13 +21,10 @@ export declare class TextareaFilterTemplateComponent {
23
21
  logicOperatorText: typeof LogicOperatorText;
24
22
  selectedLogicOperator: LogicOperatorText;
25
23
  activeCondition: boolean;
26
- constructor(voiceservice: VoiceRecognitionService);
24
+ constructor();
27
25
  ngOnInit(): void;
28
26
  initStyles(): void;
29
- ttsClick(): void;
30
27
  getInputType(): "text" | "email" | "password" | "tel" | "url";
31
- updateRTVoiceField(): void;
32
- updateVoiceField(): void;
33
28
  /**
34
29
  * Metodo per emettere l'evento che il valore del record è cambiato.
35
30
  */
@@ -1,13 +1,11 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { Record } from '../../../../../models/record.model';
3
3
  import { TextMaskEnum, TextField } from '../../../../../models/fields/textField.model';
4
- import { VoiceRecognitionService } from '../../../../../services/voice-recognition.service';
5
4
  import { Subscription } from 'rxjs';
6
5
  import { LogicOperatorText } from '../../../../../models/logicOperator.model';
7
6
  import { BooleanLogicOperatorType, TriggerCondition } from '../../../../../models/trigger.model';
8
7
  import * as i0 from "@angular/core";
9
8
  export declare class TextTriggerTemplateComponent {
10
- voiceservice: VoiceRecognitionService;
11
9
  condition: TriggerCondition;
12
10
  recordChange: EventEmitter<Record>;
13
11
  triggerChange: EventEmitter<any>;
@@ -25,13 +23,10 @@ export declare class TextTriggerTemplateComponent {
25
23
  booleanLogicOperatorType: typeof BooleanLogicOperatorType;
26
24
  selectedBooleanLogicOperator: BooleanLogicOperatorType;
27
25
  field: TextField;
28
- constructor(voiceservice: VoiceRecognitionService);
26
+ constructor();
29
27
  ngOnInit(): void;
30
28
  initStyles(): void;
31
- ttsClick(): void;
32
29
  getInputType(): "text" | "email" | "password" | "tel" | "url";
33
- updateRTVoiceField(): void;
34
- updateVoiceField(): void;
35
30
  /**
36
31
  * Metodo per emettere l'evento che il valore del record è cambiato.
37
32
  */
@@ -1,13 +1,11 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { Record } from '../../../../../models/record.model';
3
3
  import { TextMaskEnum, TextField } from '../../../../../models/fields/textField.model';
4
- import { VoiceRecognitionService } from '../../../../../services/voice-recognition.service';
5
4
  import { Subscription } from 'rxjs';
6
5
  import { LogicOperatorText } from '../../../../../models/logicOperator.model';
7
6
  import { TriggerCondition, BooleanLogicOperatorType } from '../../../../../models/trigger.model';
8
7
  import * as i0 from "@angular/core";
9
8
  export declare class TextareaTriggerTemplateComponent {
10
- voiceservice: VoiceRecognitionService;
11
9
  condition: TriggerCondition;
12
10
  recordChange: EventEmitter<Record>;
13
11
  triggerChange: EventEmitter<any>;
@@ -25,13 +23,10 @@ export declare class TextareaTriggerTemplateComponent {
25
23
  activeCondition: boolean;
26
24
  booleanLogicOperatorType: typeof BooleanLogicOperatorType;
27
25
  selectedBooleanLogicOperator: BooleanLogicOperatorType;
28
- constructor(voiceservice: VoiceRecognitionService);
26
+ constructor();
29
27
  ngOnInit(): void;
30
28
  initStyles(): void;
31
- ttsClick(): void;
32
29
  getInputType(): "text" | "email" | "password" | "tel" | "url";
33
- updateRTVoiceField(): void;
34
- updateVoiceField(): void;
35
30
  /**
36
31
  * Metodo per emettere l'evento che il valore del record è cambiato.
37
32
  */
@@ -0,0 +1,31 @@
1
+ import { ElementRef, EventEmitter, OnDestroy } from "@angular/core";
2
+ import { Subscription } from "rxjs";
3
+ import * as i0 from "@angular/core";
4
+ export declare class SpeechToTextDirective implements OnDestroy {
5
+ private elementRef;
6
+ debug: boolean;
7
+ bindedText: string;
8
+ bindedTextChange: EventEmitter<string>;
9
+ beginSentence: string;
10
+ private domElement;
11
+ pausedClass: string;
12
+ speakingClass: string;
13
+ recognition: any;
14
+ tempWords: any;
15
+ transcript_arr: any[];
16
+ confidence_arr: any[];
17
+ isStoppedSpeechRecog: boolean;
18
+ isStoppedAutomatically: boolean;
19
+ timeInterval: import("rxjs").Observable<number>;
20
+ subscription: Subscription;
21
+ SpeechToggle(): void;
22
+ constructor(elementRef: ElementRef);
23
+ ngOnDestroy(): void;
24
+ SpeechToTextToggler(): void;
25
+ private start;
26
+ private stop;
27
+ private wordConcat;
28
+ private printDebug;
29
+ static ɵfac: i0.ɵɵFactoryDeclaration<SpeechToTextDirective, never>;
30
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SpeechToTextDirective, "[SpeechToText]", never, { "bindedText": "bindedText"; }, { "bindedTextChange": "bindedTextChange"; }, never, never, false, never>;
31
+ }
@@ -15,42 +15,42 @@ import * as i12 from "./components/private/form-records/list-form-record/list-fo
15
15
  import * as i13 from "./components/private/form-records/list-view-form-record/list-view-form-record.component";
16
16
  import * as i14 from "./components/private/form-records/add-form-record/add-form-record.component";
17
17
  import * as i15 from "./components/private/form-records/view-form-record/view-form-record.component";
18
- import * as i16 from "./components/private/dynamic-module-field/dynamic-module-field.component";
19
- import * as i17 from "./components/private/dynamic-module-field-fix/dynamic-module-field.component";
20
- import * as i18 from "./components/private/spinner/spinner.component";
21
- import * as i19 from "./components/private/add-formula-field/add-formula-field.component";
22
- import * as i20 from "./components/private/form-records/repair-form-fields/repair-form-fields.component";
23
- import * as i21 from "./components/private/form-records/list-view-form-record/single-record/single-record.component";
24
- import * as i22 from "./components/private/form-statistics/filter-form-statistic/filter-form-statistic.component";
25
- import * as i23 from "./components/private/form-statistics/dynamic-module-filter-fix/dynamic-module-filter-fix.component";
26
- import * as i24 from "./components/private/trigger-creator/dynamic-module-trigger-fix/dynamic-module-trigger-fix.component";
27
- import * as i25 from "./components/private/form-statistics/filter-templates/text-filter-template/text-filter-template.component";
28
- import * as i26 from "./components/private/form-statistics/filter-templates/numeric-filter-template/numeric-filter-template.component";
29
- import * as i27 from "./components/private/form-statistics/filter-templates/boolean-filter-template/boolean-filter-template.component";
30
- import * as i28 from "./components/private/form-statistics/filter-templates/date-filter-template/date-filter-template.component";
31
- import * as i29 from "./components/private/form-statistics/filter-templates/list-value-filter-template/list-value-filter-template.component";
32
- import * as i30 from "./components/private/form-statistics/filter-templates/textarea-filter-template/textarea-filter-template.component";
33
- import * as i31 from "./components/private/form-statistics/filter-templates/attachment-filter-template/attachment-filter-template.component";
34
- import * as i32 from "./components/private/form-statistics/filter-templates/image-filter-template/image-filter-template.component";
35
- import * as i33 from "./components/private/form-statistics/filter-templates/list-form-record-filter-template/list-form-record-filter-template.component";
36
- import * as i34 from "./components/private/graphs/graphs.component";
37
- import * as i35 from "./components/private/graphs/graph/graph.component";
38
- import * as i36 from "./components/private/field-templates/image-field-selector-template/image-field-selector-template.component";
39
- import * as i37 from "./components/private/field-templates/label-field-template/label-field-template.component";
40
- import * as i38 from "./components/private/form-statistics/filter-templates/image-selector-filter-template/image-selector-filter-template.component";
41
- import * as i39 from "./components/private/tmw-image-drawer/tmw-image-drawer.component";
42
- import * as i40 from "./components/private/field-templates/image-with-markers-field-template/image-with-markers-field-template.component";
43
- import * as i41 from "./components/private/tmw-image-marker/tmw-image-marker.component";
44
- import * as i42 from "./directives/dynamic-loader/dynamic-loader.directive";
45
- import * as i43 from "./components/private/dbgetter/dbgetter.component";
46
- import * as i44 from "./components/private/trigger-creator/trigger-creator.component";
47
- import * as i45 from "./components/private/trigger-creator/trigger-templates/text-trigger-template/text-trigger-template.component";
48
- import * as i46 from "./components/private/trigger-creator/trigger-templates/numeric-trigger-template/numeric-trigger-template.component";
49
- import * as i47 from "./components/private/trigger-creator/trigger-templates/boolean-trigger-template/boolean-trigger-template.component";
50
- import * as i48 from "./components/private/trigger-creator/trigger-templates/date-trigger-template/date-trigger-template.component";
51
- import * as i49 from "./components/private/trigger-creator/trigger-templates/list-value-trigger-template/list-value-trigger-template.component";
52
- import * as i50 from "./components/private/trigger-creator/trigger-templates/textarea-trigger-template/textarea-trigger-template.component";
53
- import * as i51 from "./components/private/trigger-creator/trigger-templates/list-form-record-trigger-template/list-form-record-trigger-template.component";
18
+ import * as i16 from "./components/private/dynamic-module-field-fix/dynamic-module-field.component";
19
+ import * as i17 from "./components/private/spinner/spinner.component";
20
+ import * as i18 from "./components/private/add-formula-field/add-formula-field.component";
21
+ import * as i19 from "./components/private/form-records/repair-form-fields/repair-form-fields.component";
22
+ import * as i20 from "./components/private/form-records/list-view-form-record/single-record/single-record.component";
23
+ import * as i21 from "./components/private/form-statistics/filter-form-statistic/filter-form-statistic.component";
24
+ import * as i22 from "./components/private/form-statistics/dynamic-module-filter-fix/dynamic-module-filter-fix.component";
25
+ import * as i23 from "./components/private/trigger-creator/dynamic-module-trigger-fix/dynamic-module-trigger-fix.component";
26
+ import * as i24 from "./components/private/form-statistics/filter-templates/text-filter-template/text-filter-template.component";
27
+ import * as i25 from "./components/private/form-statistics/filter-templates/numeric-filter-template/numeric-filter-template.component";
28
+ import * as i26 from "./components/private/form-statistics/filter-templates/boolean-filter-template/boolean-filter-template.component";
29
+ import * as i27 from "./components/private/form-statistics/filter-templates/date-filter-template/date-filter-template.component";
30
+ import * as i28 from "./components/private/form-statistics/filter-templates/list-value-filter-template/list-value-filter-template.component";
31
+ import * as i29 from "./components/private/form-statistics/filter-templates/textarea-filter-template/textarea-filter-template.component";
32
+ import * as i30 from "./components/private/form-statistics/filter-templates/attachment-filter-template/attachment-filter-template.component";
33
+ import * as i31 from "./components/private/form-statistics/filter-templates/image-filter-template/image-filter-template.component";
34
+ import * as i32 from "./components/private/form-statistics/filter-templates/list-form-record-filter-template/list-form-record-filter-template.component";
35
+ import * as i33 from "./components/private/graphs/graphs.component";
36
+ import * as i34 from "./components/private/graphs/graph/graph.component";
37
+ import * as i35 from "./components/private/field-templates/image-field-selector-template/image-field-selector-template.component";
38
+ import * as i36 from "./components/private/field-templates/label-field-template/label-field-template.component";
39
+ import * as i37 from "./components/private/form-statistics/filter-templates/image-selector-filter-template/image-selector-filter-template.component";
40
+ import * as i38 from "./components/private/tmw-image-drawer/tmw-image-drawer.component";
41
+ import * as i39 from "./components/private/field-templates/image-with-markers-field-template/image-with-markers-field-template.component";
42
+ import * as i40 from "./components/private/tmw-image-marker/tmw-image-marker.component";
43
+ import * as i41 from "./directives/dynamic-loader/dynamic-loader.directive";
44
+ import * as i42 from "./components/private/dbgetter/dbgetter.component";
45
+ import * as i43 from "./components/private/trigger-creator/trigger-creator.component";
46
+ import * as i44 from "./components/private/trigger-creator/trigger-templates/text-trigger-template/text-trigger-template.component";
47
+ import * as i45 from "./components/private/trigger-creator/trigger-templates/numeric-trigger-template/numeric-trigger-template.component";
48
+ import * as i46 from "./components/private/trigger-creator/trigger-templates/boolean-trigger-template/boolean-trigger-template.component";
49
+ import * as i47 from "./components/private/trigger-creator/trigger-templates/date-trigger-template/date-trigger-template.component";
50
+ import * as i48 from "./components/private/trigger-creator/trigger-templates/list-value-trigger-template/list-value-trigger-template.component";
51
+ import * as i49 from "./components/private/trigger-creator/trigger-templates/textarea-trigger-template/textarea-trigger-template.component";
52
+ import * as i50 from "./components/private/trigger-creator/trigger-templates/list-form-record-trigger-template/list-form-record-trigger-template.component";
53
+ import * as i51 from "./directives/speech-to-text/speech-to-text.directive";
54
54
  import * as i52 from "./modules/material.module";
55
55
  import * as i53 from "@angular/forms";
56
56
  import * as i54 from "@angular/common";
@@ -80,6 +80,6 @@ export declare const customNumericMaskConfig: {
80
80
  };
81
81
  export declare class EqpDynamicModuleModule {
82
82
  static ɵfac: i0.ɵɵFactoryDeclaration<EqpDynamicModuleModule, never>;
83
- static ɵmod: i0.ɵɵNgModuleDeclaration<EqpDynamicModuleModule, [typeof i1.EqpDynamicModuleComponent, typeof i2.EqpDynamicModuleConfiguratorComponent, typeof i3.AddFormFieldComponent, typeof i4.TextFieldTemplateComponent, typeof i5.BooleanFieldTemplateComponent, typeof i6.DateFieldTemplateComponent, typeof i7.TextareaFieldTemplateComponent, typeof i8.NumericFieldTemplateComponent, typeof i9.ListValueFieldTemplateComponent, typeof i10.AttachmentFieldTemplateComponent, typeof i11.ImageFieldTemplateComponent, typeof i12.ListFormRecordComponent, typeof i13.ListViewFormRecordComponent, typeof i14.AddFormRecordComponent, typeof i15.ViewFormRecordComponent, typeof i16.DynamicModuleFieldComponent, typeof i17.DynamicModuleFieldFixComponent, typeof i18.SpinnerComponent, typeof i19.AddFormulaComponent, typeof i19.DialogDataExampleDialog, typeof i20.RepairFormFieldsComponent, typeof i21.SingleRecordComponent, typeof i22.FilterFormStatisticComponent, typeof i23.DynamicModuleFilterFixComponent, typeof i24.DynamicModuleTriggerFixComponent, typeof i25.TextFilterTemplateComponent, typeof i26.NumericFilterTemplateComponent, typeof i27.BooleanFilterTemplateComponent, typeof i28.DateFilterTemplateComponent, typeof i29.ListValueFilterTemplateComponent, typeof i30.TextareaFilterTemplateComponent, typeof i31.AttachmentFilterTemplateComponent, typeof i32.ImageFilterTemplateComponent, typeof i33.ListFormRecordFilterTemplateComponent, typeof i34.GraphsComponent, typeof i35.GraphComponent, typeof i36.ImageFieldSelectorTemplateComponent, typeof i37.LabelFieldTemplateComponent, typeof i38.ImageSelectorFilterTemplateComponent, typeof i39.TmwImageDrawerComponent, typeof i40.ImageWithMarkersFieldTemplateComponent, typeof i41.TmwImageMarkerComponent, typeof i42.DynamicLoaderDirective, typeof i43.DbgetterComponent, typeof i44.TriggerCreatorComponent, typeof i45.TextTriggerTemplateComponent, typeof i46.NumericTriggerTemplateComponent, typeof i47.BooleanTriggerTemplateComponent, typeof i48.DateTriggerTemplateComponent, typeof i49.ListValueTriggerTemplateComponent, typeof i50.TextareaTriggerTemplateComponent, typeof i51.ListFormRecordTriggerTemplateComponent], [typeof i52.MaterialModule, typeof i53.FormsModule, typeof i54.CommonModule, typeof i53.ReactiveFormsModule, typeof i55.EqpTableModule, typeof i56.EqpAttachmentsModule, typeof i57.EqpSelectModule, typeof i58.EqpDatetimepickerModule, typeof i59.EqpFiltersModule, typeof i60.EqpImgDrawingModule, typeof i61.DragDropModule, typeof i62.EqpNumericModule, typeof i63.CanvasJSAngularStockChartsModule, typeof i64.TmwPickerModule], [typeof i1.EqpDynamicModuleComponent, typeof i2.EqpDynamicModuleConfiguratorComponent, typeof i61.DragDropModule, typeof i63.CanvasJSChart, typeof i63.CanvasJSStockChart, typeof i42.DynamicLoaderDirective, typeof i64.TmwPickerModule]>;
83
+ static ɵmod: i0.ɵɵNgModuleDeclaration<EqpDynamicModuleModule, [typeof i1.EqpDynamicModuleComponent, typeof i2.EqpDynamicModuleConfiguratorComponent, typeof i3.AddFormFieldComponent, typeof i4.TextFieldTemplateComponent, typeof i5.BooleanFieldTemplateComponent, typeof i6.DateFieldTemplateComponent, typeof i7.TextareaFieldTemplateComponent, typeof i8.NumericFieldTemplateComponent, typeof i9.ListValueFieldTemplateComponent, typeof i10.AttachmentFieldTemplateComponent, typeof i11.ImageFieldTemplateComponent, typeof i12.ListFormRecordComponent, typeof i13.ListViewFormRecordComponent, typeof i14.AddFormRecordComponent, typeof i15.ViewFormRecordComponent, typeof i16.DynamicModuleFieldFixComponent, typeof i17.SpinnerComponent, typeof i18.AddFormulaComponent, typeof i18.DialogDataExampleDialog, typeof i19.RepairFormFieldsComponent, typeof i20.SingleRecordComponent, typeof i21.FilterFormStatisticComponent, typeof i22.DynamicModuleFilterFixComponent, typeof i23.DynamicModuleTriggerFixComponent, typeof i24.TextFilterTemplateComponent, typeof i25.NumericFilterTemplateComponent, typeof i26.BooleanFilterTemplateComponent, typeof i27.DateFilterTemplateComponent, typeof i28.ListValueFilterTemplateComponent, typeof i29.TextareaFilterTemplateComponent, typeof i30.AttachmentFilterTemplateComponent, typeof i31.ImageFilterTemplateComponent, typeof i32.ListFormRecordFilterTemplateComponent, typeof i33.GraphsComponent, typeof i34.GraphComponent, typeof i35.ImageFieldSelectorTemplateComponent, typeof i36.LabelFieldTemplateComponent, typeof i37.ImageSelectorFilterTemplateComponent, typeof i38.TmwImageDrawerComponent, typeof i39.ImageWithMarkersFieldTemplateComponent, typeof i40.TmwImageMarkerComponent, typeof i41.DynamicLoaderDirective, typeof i42.DbgetterComponent, typeof i43.TriggerCreatorComponent, typeof i44.TextTriggerTemplateComponent, typeof i45.NumericTriggerTemplateComponent, typeof i46.BooleanTriggerTemplateComponent, typeof i47.DateTriggerTemplateComponent, typeof i48.ListValueTriggerTemplateComponent, typeof i49.TextareaTriggerTemplateComponent, typeof i50.ListFormRecordTriggerTemplateComponent, typeof i51.SpeechToTextDirective], [typeof i52.MaterialModule, typeof i53.FormsModule, typeof i54.CommonModule, typeof i53.ReactiveFormsModule, typeof i55.EqpTableModule, typeof i56.EqpAttachmentsModule, typeof i57.EqpSelectModule, typeof i58.EqpDatetimepickerModule, typeof i59.EqpFiltersModule, typeof i60.EqpImgDrawingModule, typeof i61.DragDropModule, typeof i62.EqpNumericModule, typeof i63.CanvasJSAngularStockChartsModule, typeof i64.TmwPickerModule], [typeof i1.EqpDynamicModuleComponent, typeof i2.EqpDynamicModuleConfiguratorComponent, typeof i61.DragDropModule, typeof i63.CanvasJSChart, typeof i63.CanvasJSStockChart, typeof i41.DynamicLoaderDirective, typeof i64.TmwPickerModule]>;
84
84
  static ɵinj: i0.ɵɵInjectorDeclaration<EqpDynamicModuleModule>;
85
85
  }
@@ -1,8 +1,11 @@
1
1
  import { HttpClient } from "@angular/common/http";
2
+ import { SpeechToTextDirective } from "../../lib/directives/speech-to-text/speech-to-text.directive";
2
3
  import * as i0 from "@angular/core";
3
4
  export declare class GlobalService {
4
5
  private http;
5
6
  static debugMode: boolean;
7
+ static isSpeechToTextStarted: boolean;
8
+ static speechDirective: SpeechToTextDirective;
6
9
  constructor(http: HttpClient);
7
10
  static debugLog(message: string, element?: any): void;
8
11
  static stringToValuePairs(valueString: string): {
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "author": {
5
5
  "name": "EqProject"
6
6
  },
7
- "version": "2.8.5",
7
+ "version": "2.8.7",
8
8
  "peerDependencies": {
9
9
  "@angular-material-components/datetime-picker": "^15.0.0",
10
10
  "@angular-material-components/moment-adapter": "^15.0.0",
package/public-api.d.ts CHANGED
@@ -2,7 +2,7 @@ export * from './lib/eqp-dynamic-module.module';
2
2
  export * from './lib/components/exported/eqp-dynamic-module/eqp-dynamic-module.component';
3
3
  export * from './lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component';
4
4
  export * from './lib/components/private/add-form-field/add-form-field.component';
5
- export * from './lib/components/private/dynamic-module-field/dynamic-module-field.component';
5
+ export * from './lib/components/private/dynamic-module-field-fix/dynamic-module-field.component';
6
6
  export * from './lib/components/private/field-templates/attachment-field-template/attachment-field-template.component';
7
7
  export * from './lib/components/private/field-templates/boolean-field-template/boolean-field-template.component';
8
8
  export * from './lib/components/private/field-templates/date-field-template/date-field-template.component';
@@ -50,3 +50,4 @@ export * from './lib/services/spinner.service';
50
50
  export * from './lib/services/utilityHelper.services';
51
51
  export * from './lib/models/graph.model';
52
52
  export * from './lib/directives/dynamic-loader/dynamic-loader.directive';
53
+ export * from './lib/directives/speech-to-text/speech-to-text.directive';
@@ -1,136 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild, ViewChildren } from '@angular/core';
2
- import { FieldTypeEnum } from '../../../models/baseField.model';
3
- import { DynamicModuleListConfig } from '../../../models/dynamicModuleListConfig.model';
4
- import { DynamicModuleListFormRecordActionsDefault } from '../../../models/dynamicModuleListFormRecordActionsDefault';
5
- import { Record } from '../../../models/record.model';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/material/dialog";
8
- import * as i2 from "@angular/material/tooltip";
9
- import * as i3 from "@angular/common";
10
- import * as i4 from "../field-templates/text-field-template/text-field-template.component";
11
- import * as i5 from "../field-templates/boolean-field-template/boolean-field-template.component";
12
- import * as i6 from "../field-templates/date-field-template/date-field-template.component";
13
- import * as i7 from "../field-templates/textarea-field-template/textarea-field-template.component";
14
- import * as i8 from "../field-templates/numeric-field-template/numeric-field-template.component";
15
- import * as i9 from "../field-templates/list-value-field-template/list-value-field-template.component";
16
- import * as i10 from "../field-templates/attachment-field-template/attachment-field-template.component";
17
- import * as i11 from "../field-templates/image-field-template/image-field-template.component";
18
- import * as i12 from "../form-records/list-form-record/list-form-record.component";
19
- import * as i13 from "../form-records/add-form-record/add-form-record.component";
20
- export class DynamicModuleFieldComponent {
21
- constructor(dialog) {
22
- this.dialog = dialog;
23
- this.recordChange = new EventEmitter();
24
- this.configList = new DynamicModuleListConfig();
25
- this.FieldTypeEnum = FieldTypeEnum;
26
- this.onlyViewInnerFormRecord = false;
27
- }
28
- updateField() {
29
- if (this.fieldTemplate && this.fieldTemplate.length > 0) {
30
- this.fieldTemplate.forEach(f => f.updateField());
31
- }
32
- }
33
- ngOnInit() {
34
- this.configList.values = this.record[this.field.Name];
35
- this.configList.showTitle = true;
36
- this.configList.defaultListActions = new DynamicModuleListFormRecordActionsDefault();
37
- }
38
- /**
39
- * Metodo invocato al cambio del valore di ogni proprietà dell'oggetto record.
40
- * Serve ad aggiornare il valore di tutti i campi che hanno una formula.
41
- */
42
- onRecordChange() {
43
- this.recordChange.emit(this.record);
44
- }
45
- /**
46
- * Metodo per recuperare una InnerForm a partire dal Field che la rappresenta.
47
- * @param field Campo a partire dal quale si vuole recuperare la InnerForm.
48
- * @returns Restituisce un oggetto di tipo Form.
49
- */
50
- getInnerFormFromField(field) {
51
- if (this.form.InnerForms && this.form.InnerForms.find(f => f.Name == field.Label)) {
52
- return this.form.InnerForms.find(f => f.Name == field.Label);
53
- }
54
- else {
55
- return null;
56
- }
57
- }
58
- /**
59
- * Metodo per aprire un dialog in cui aggiungere/modificare/visualizzare un record appartenente
60
- * a una form di dettaglio.
61
- * @param record Evento di output del componente list-form-record, contiene il record selezionato e un booleno che indica
62
- * se l'utente vuole modificare o visualizzare l'elemento selezionato.
63
- * @param innerForm Contiene la Form di dettaglio dalla quale è stato richiesto il record.
64
- */
65
- onAddViewEditInnerFormRecord(record, field) {
66
- this.selectedInnerForm = this.getInnerFormFromField(field);
67
- if (record == null) {
68
- this.selectedInnerFormRecord = new Record();
69
- this.indexInnerFormRecord = null;
70
- this.onlyViewInnerFormRecord = false;
71
- }
72
- else {
73
- this.selectedInnerFormRecord = JSON.parse(JSON.stringify(record.record));
74
- this.indexInnerFormRecord = this.record[field.Name].indexOf(record);
75
- this.onlyViewInnerFormRecord = record.onlyView;
76
- }
77
- this.dialogInnerFormRecordRef = this.dialog.open(this.dialogInnerFormRecord, {
78
- disableClose: true,
79
- hasBackdrop: true,
80
- width: '75%'
81
- });
82
- }
83
- /**
84
- * Metodo invocato al salvataggio o alla chiusura del dialog di aggiunta/modifica/visualizzazione
85
- * di un record di una form di dettaglio.
86
- * @param record Oggetto restituito dal componente add-form-field (questo qui) contenente il Record
87
- * aggiornato dall'utente. Se null allora l'utente non ha modificato nulla e ha chiuso il dialog.
88
- */
89
- onSaveInnerFormRecord(record) {
90
- if (record != null) {
91
- const arrayName = this.selectedInnerForm.Name.split(' ').join('_');
92
- if (this.indexInnerFormRecord != null && this.indexInnerFormRecord >= 0) {
93
- this.record[arrayName][this.indexInnerFormRecord] = record;
94
- }
95
- else {
96
- if (!this.record[arrayName]) {
97
- this.record[arrayName] = [];
98
- }
99
- this.record[arrayName].push(record);
100
- }
101
- }
102
- this.dialogInnerFormRecordRef.close();
103
- // Ricarico la tabella dei record per visualizzare le modifiche fatte dall'utente.
104
- if (this.listInnerFormRecords && this.listInnerFormRecords.length > 0) {
105
- this.listInnerFormRecords.forEach(list => {
106
- if (list && list.tableRecords) {
107
- list.tableRecords.reloadDatatable();
108
- }
109
- });
110
- }
111
- }
112
- }
113
- DynamicModuleFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DynamicModuleFieldComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
114
- DynamicModuleFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DynamicModuleFieldComponent, selector: "dynamic-module-field", inputs: { field: "field", form: "form", record: "record" }, outputs: { recordChange: "recordChange" }, viewQueries: [{ propertyName: "dialogInnerFormRecord", first: true, predicate: ["dialogInnerFormRecord"], descendants: true, static: true }, { propertyName: "fieldTemplate", predicate: ["fieldTemplate"], descendants: true }, { propertyName: "listInnerFormRecords", predicate: ["listInnerFormRecords"], descendants: true }], ngImport: i0, template: "<text-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Campo di testo']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n</text-field-template>\r\n\r\n<textarea-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Area di testo']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n</textarea-field-template>\r\n\r\n<boolean-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Booleano']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n</boolean-field-template>\r\n\r\n<date-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Data e/o ora']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n</date-field-template>\r\n\r\n<numeric-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Campo numerico']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n</numeric-field-template>\r\n\r\n<list-value-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Elenco generico']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n</list-value-field-template>\r\n\r\n<attachment-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Allegato']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n</attachment-field-template>\r\n\r\n<image-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Immagine']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n</image-field-template>\r\n\r\n<list-form-record #listInnerFormRecords *ngIf=\"field.FieldType == FieldTypeEnum['Form di dettaglio']\"\r\n [form]=\"getInnerFormFromField(field)\" [configurations]=\"configList\"\r\n (onAddViewEditRecord)=\"onAddViewEditInnerFormRecord($event, field)\">\r\n</list-form-record>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE/VISUALIZZARE UN RECORD IN UNA FORM DI DETTAGLIO -->\r\n<ng-template #dialogInnerFormRecord>\r\n <add-form-record [form]=\"selectedInnerForm\" [record]=\"selectedInnerFormRecord\" [onlyView]=\"onlyViewInnerFormRecord\"\r\n (saveRecordEvent)=\"onSaveInnerFormRecord($event)\"></add-form-record>\r\n</ng-template>", styles: [""], dependencies: [{ kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.TextFieldTemplateComponent, selector: "text-field-template", inputs: ["field", "record", "inConfig"], outputs: ["recordChange"] }, { kind: "component", type: i5.BooleanFieldTemplateComponent, selector: "boolean-field-template", inputs: ["field", "record"], outputs: ["recordChange"] }, { kind: "component", type: i6.DateFieldTemplateComponent, selector: "date-field-template", inputs: ["field", "record", "inConfig"], outputs: ["recordChange"] }, { kind: "component", type: i7.TextareaFieldTemplateComponent, selector: "textarea-field-template", inputs: ["field", "record"], outputs: ["recordChange"] }, { kind: "component", type: i8.NumericFieldTemplateComponent, selector: "numeric-field-template", inputs: ["field", "record", "inConfig"], outputs: ["recordChange"] }, { kind: "component", type: i9.ListValueFieldTemplateComponent, selector: "list-value-field-template", inputs: ["field", "record", "inConfig"], outputs: ["recordChange"] }, { kind: "component", type: i10.AttachmentFieldTemplateComponent, selector: "attachment-field-template", inputs: ["onlyImages", "field", "record", "inConfig"], outputs: ["recordChange", "onAttachmentsChange"] }, { kind: "component", type: i11.ImageFieldTemplateComponent, selector: "image-field-template", inputs: ["endPointConfiguration", "record", "field", "inConfig"], outputs: ["recordChange", "imageDraw"] }, { kind: "component", type: i12.ListFormRecordComponent, selector: "list-form-record", inputs: ["configurations", "endPointConfiguration", "formID", "form", "externalButtons"], outputs: ["onViewRecord", "onAddViewEditRecord", "onDeleteRecord", "onAfterDeleteRecord"] }, { kind: "component", type: i13.AddFormRecordComponent, selector: "add-form-record", inputs: ["configurations", "endPointConfiguration", "userID", "orgaID", "formID", "form", "record", "onlyView", "isDuplicate", "inConfig", "showAllFields", "QueryEditorComponent"], outputs: ["saveRecordEvent", "afterSaveRecordEvent", "out", "fireTrigger"] }] });
115
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DynamicModuleFieldComponent, decorators: [{
116
- type: Component,
117
- args: [{ selector: 'dynamic-module-field', template: "<text-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Campo di testo']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n</text-field-template>\r\n\r\n<textarea-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Area di testo']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n</textarea-field-template>\r\n\r\n<boolean-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Booleano']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n</boolean-field-template>\r\n\r\n<date-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Data e/o ora']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n</date-field-template>\r\n\r\n<numeric-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Campo numerico']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n</numeric-field-template>\r\n\r\n<list-value-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Elenco generico']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n</list-value-field-template>\r\n\r\n<attachment-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Allegato']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n</attachment-field-template>\r\n\r\n<image-field-template #fieldTemplate *ngIf=\"field.FieldType == FieldTypeEnum['Immagine']\"\r\n [matTooltip]=\"field.Description\" [(record)]=\"record\" [field]=\"field\" (recordChange)=\"onRecordChange()\">\r\n</image-field-template>\r\n\r\n<list-form-record #listInnerFormRecords *ngIf=\"field.FieldType == FieldTypeEnum['Form di dettaglio']\"\r\n [form]=\"getInnerFormFromField(field)\" [configurations]=\"configList\"\r\n (onAddViewEditRecord)=\"onAddViewEditInnerFormRecord($event, field)\">\r\n</list-form-record>\r\n\r\n<!-- DIALOG PER AGGIUNGERE/MODIFICARE/VISUALIZZARE UN RECORD IN UNA FORM DI DETTAGLIO -->\r\n<ng-template #dialogInnerFormRecord>\r\n <add-form-record [form]=\"selectedInnerForm\" [record]=\"selectedInnerFormRecord\" [onlyView]=\"onlyViewInnerFormRecord\"\r\n (saveRecordEvent)=\"onSaveInnerFormRecord($event)\"></add-form-record>\r\n</ng-template>" }]
118
- }], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { field: [{
119
- type: Input
120
- }], form: [{
121
- type: Input
122
- }], record: [{
123
- type: Input
124
- }], recordChange: [{
125
- type: Output
126
- }], dialogInnerFormRecord: [{
127
- type: ViewChild,
128
- args: ['dialogInnerFormRecord', { static: true }]
129
- }], fieldTemplate: [{
130
- type: ViewChildren,
131
- args: ["fieldTemplate"]
132
- }], listInnerFormRecords: [{
133
- type: ViewChildren,
134
- args: ['listInnerFormRecords']
135
- }] } });
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1tb2R1bGUtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2R5bmFtaWMtbW9kdWxlLWZpZWxkL2R5bmFtaWMtbW9kdWxlLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9keW5hbWljLW1vZHVsZS1maWVsZC9keW5hbWljLW1vZHVsZS1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUEwQixTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2hJLE9BQU8sRUFBYSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUV4RixPQUFPLEVBQUUseUNBQXlDLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUN0SCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVF0RCxNQUFNLE9BQU8sMkJBQTJCO0lBc0J0QyxZQUNVLE1BQWlCO1FBQWpCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFsQmpCLGlCQUFZLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFFMUUsZUFBVSxHQUE0QixJQUFJLHVCQUF1QixFQUFFLENBQUM7UUFDcEUsa0JBQWEsR0FBRyxhQUFhLENBQUM7UUFNOUIsNEJBQXVCLEdBQVksS0FBSyxDQUFDO0lBVXJDLENBQUM7SUFHTCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsYUFB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SW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IElCYXNlRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2lCYXNlRmllbGRDb21wb25lbnQuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQmFzZUZpZWxkLCBGaWVsZFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Jhc2VGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IER5bmFtaWNNb2R1bGVMaXN0Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2R5bmFtaWNNb2R1bGVMaXN0Q29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9mb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgRHluYW1pY01vZHVsZUxpc3RGb3JtUmVjb3JkQWN0aW9uc0RlZmF1bHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZHluYW1pY01vZHVsZUxpc3RGb3JtUmVjb3JkQWN0aW9uc0RlZmF1bHQnO1xyXG5pbXBvcnQgeyBSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVjb3JkLm1vZGVsJztcclxuaW1wb3J0IHsgTGlzdEZvcm1SZWNvcmRDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLXJlY29yZHMvbGlzdC1mb3JtLXJlY29yZC9saXN0LWZvcm0tcmVjb3JkLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2R5bmFtaWMtbW9kdWxlLWZpZWxkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1tb2R1bGUtZmllbGQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2R5bmFtaWMtbW9kdWxlLWZpZWxkLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNNb2R1bGVGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgSUJhc2VGaWVsZENvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIGZpZWxkOiBCYXNlRmllbGQ7XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybTtcclxuICBASW5wdXQoKSByZWNvcmQ6IFJlY29yZDtcclxuICBAT3V0cHV0KCkgcmVjb3JkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8UmVjb3JkPiA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjb3JkPigpO1xyXG5cclxuICBjb25maWdMaXN0OiBEeW5hbWljTW9kdWxlTGlzdENvbmZpZyA9IG5ldyBEeW5hbWljTW9kdWxlTGlzdENvbmZpZygpO1xyXG4gIEZpZWxkVHlwZUVudW0gPSBGaWVsZFR5cGVFbnVtO1xyXG5cclxuICAvLyNyZWdpb24gUHJvcHJpZXTDoCBwZXIgYWdnaXVuZ2VyZS9tb2RpZmljYXJlIGkgcmVjb3JkIGRpIHVuYSBmb3JtIGRpIGRldHRhZ2xpb1xyXG4gIHNlbGVjdGVkSW5uZXJGb3JtOiBGb3JtO1xyXG4gIHNlbGVjdGVkSW5uZXJGb3JtUmVjb3JkOiBSZWNvcmQ7XHJcbiAgaW5kZXhJbm5lckZvcm1SZWNvcmQ6IG51bWJlcjtcclxuICBvbmx5Vmlld0lubmVyRm9ybVJlY29yZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGRpYWxvZ0lubmVyRm9ybVJlY29yZFJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIEBWaWV3Q2hpbGQoJ2RpYWxvZ0lubmVyRm9ybVJlY29yZCcsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ0lubmVyRm9ybVJlY29yZDogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgQFZpZXdDaGlsZHJlbihcImZpZWxkVGVtcGxhdGVcIikgZmllbGRUZW1wbGF0ZTogUXVlcnlMaXN0PER5bmFtaWNNb2R1bGVGaWVsZENvbXBvbmVudD47XHJcbiAgQFZpZXdDaGlsZHJlbignbGlzdElubmVyRm9ybVJlY29yZHMnKSBsaXN0SW5uZXJGb3JtUmVjb3JkczogUXVlcnlMaXN0PExpc3RGb3JtUmVjb3JkQ29tcG9uZW50PjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nXHJcbiAgKSB7IH1cclxuXHJcblxyXG4gIHVwZGF0ZUZpZWxkKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZmllbGRUZW1wbGF0ZSAmJiB0aGlzLmZpZWxkVGVtcGxhdGUubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmZpZWxkVGVtcGxhdGUuZm9yRWFjaChmID0+IGYudXBkYXRlRmllbGQoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uZmlnTGlzdC52YWx1ZXMgPSB0aGlzLnJlY29yZFt0aGlzLmZpZWxkLk5hbWVdXHJcbiAgICB0aGlzLmNvbmZpZ0xpc3Quc2hvd1RpdGxlID0gdHJ1ZTtcclxuICAgIHRoaXMuY29uZmlnTGlzdC5kZWZhdWx0TGlzdEFjdGlvbnMgPSBuZXcgRHluYW1pY01vZHVsZUxpc3RGb3JtUmVjb3JkQWN0aW9uc0RlZmF1bHQoKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGludm9jYXRvIGFsIGNhbWJpbyBkZWwgdmFsb3JlIGRpIG9nbmkgcHJvcHJpZXTDoCBkZWxsJ29nZ2V0dG8gcmVjb3JkLlxyXG4gICAqIFNlcnZlIGFkIGFnZ2lvcm5hcmUgaWwgdmFsb3JlIGRpIHR1dHRpIGkgY2FtcGkgY2hlIGhhbm5vIHVuYSBmb3JtdWxhLlxyXG4gICAqL1xyXG4gIG9uUmVjb3JkQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5yZWNvcmRDaGFuZ2UuZW1pdCh0aGlzLnJlY29yZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHJlY3VwZXJhcmUgdW5hIElubmVyRm9ybSBhIHBhcnRpcmUgZGFsIEZpZWxkIGNoZSBsYSByYXBwcmVzZW50YS5cclxuICAgKiBAcGFyYW0gZmllbGQgQ2FtcG8gYSBwYXJ0aXJlIGRhbCBxdWFsZSBzaSB2dW9sZSByZWN1cGVyYXJlIGxhIElubmVyRm9ybS5cclxuICAgKiBAcmV0dXJucyBSZXN0aXR1aXNjZSB1biBvZ2dldHRvIGRpIHRpcG8gRm9ybS5cclxuICAgKi9cclxuICBnZXRJbm5lckZvcm1Gcm9tRmllbGQoZmllbGQ6IEJhc2VGaWVsZCk6IEZvcm0ge1xyXG4gICAgaWYgKHRoaXMuZm9ybS5Jbm5lckZvcm1zICYmIHRoaXMuZm9ybS5Jbm5lckZvcm1zLmZpbmQoZiA9PiBmLk5hbWUgPT0gZmllbGQuTGFiZWwpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZvcm0uSW5uZXJGb3Jtcy5maW5kKGYgPT4gZi5OYW1lID09IGZpZWxkLkxhYmVsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIE1ldG9kbyBwZXIgYXByaXJlIHVuIGRpYWxvZyBpbiBjdWkgYWdnaXVuZ2VyZS9tb2RpZmljYXJlL3Zpc3VhbGl6emFyZSB1biByZWNvcmQgYXBwYXJ0ZW5lbnRlXHJcbiAqIGEgdW5hIGZvcm0gZGkgZGV0dGFnbGlvLlxyXG4gKiBAcGFyYW0gcmVjb3JkIEV2ZW50byBkaSBvdXRwdXQgZGVsIGNvbXBvbmVudGUgbGlzdC1mb3JtLXJlY29yZCwgY29udGllbmUgaWwgcmVjb3JkIHNlbGV6aW9uYXRvIGUgdW4gYm9vbGVubyBjaGUgaW5kaWNhIFxyXG4gKiBzZSBsJ3V0ZW50ZSB2dW9sZSBtb2RpZmljYXJlIG8gdmlzdWFsaXp6YXJlIGwnZWxlbWVudG8gc2VsZXppb25hdG8uXHJcbiAqIEBwYXJhbSBpbm5lckZvcm0gQ29udGllbmUgbGEgRm9ybSBkaSBkZXR0YWdsaW8gZGFsbGEgcXVhbGUgw6ggc3RhdG8gcmljaGllc3RvIGlsIHJlY29yZC5cclxuICovXHJcbiAgb25BZGRWaWV3RWRpdElubmVyRm9ybVJlY29yZChyZWNvcmQ6IHsgcmVjb3JkOiBSZWNvcmQsIG9ubHlWaWV3OiBib29sZWFuIH0sIGZpZWxkOiBCYXNlRmllbGQpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJbm5lckZvcm0gPSB0aGlzLmdldElubmVyRm9ybUZyb21GaWVsZChmaWVsZCk7XHJcbiAgICBpZiAocmVjb3JkID09IG51bGwpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZElubmVyRm9ybVJlY29yZCA9IG5ldyBSZWNvcmQoKTtcclxuICAgICAgdGhpcy5pbmRleElubmVyRm9ybVJlY29yZCA9IG51bGw7XHJcbiAgICAgIHRoaXMub25seVZpZXdJbm5lckZvcm1SZWNvcmQgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbm5lckZvcm1SZWNvcmQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlY29yZC5yZWNvcmQpKTtcclxuICAgICAgdGhpcy5pbmRleElubmVyRm9ybVJlY29yZCA9IHRoaXMucmVjb3JkW2ZpZWxkLk5hbWVdLmluZGV4T2YocmVjb3JkKTtcclxuICAgICAgdGhpcy5vbmx5Vmlld0lubmVyRm9ybVJlY29yZCA9IHJlY29yZC5vbmx5VmlldztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRpYWxvZ0lubmVyRm9ybVJlY29yZFJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dJbm5lckZvcm1SZWNvcmQsIHtcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6ICc3NSUnXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBpbnZvY2F0byBhbCBzYWx2YXRhZ2dpbyBvIGFsbGEgY2hpdXN1cmEgZGVsIGRpYWxvZyBkaSBhZ2dpdW50YS9tb2RpZmljYS92aXN1YWxpenphemlvbmVcclxuICAgKiBkaSB1biByZWNvcmQgZGkgdW5hIGZvcm0gZGkgZGV0dGFnbGlvLlxyXG4gICAqIEBwYXJhbSByZWNvcmQgT2dnZXR0byByZXN0aXR1aXRvIGRhbCBjb21wb25lbnRlIGFkZC1mb3JtLWZpZWxkIChxdWVzdG8gcXVpKSBjb250ZW5lbnRlIGlsIFJlY29yZCBcclxuICAgKiBhZ2dpb3JuYXRvIGRhbGwndXRlbnRlLiBTZSBudWxsIGFsbG9yYSBsJ3V0ZW50ZSBub24gaGEgbW9kaWZpY2F0byBudWxsYSBlIGhhIGNoaXVzbyBpbCBkaWFsb2cuXHJcbiAgICovXHJcbiAgb25TYXZlSW5uZXJGb3JtUmVjb3JkKHJlY29yZDogUmVjb3JkKSB7XHJcbiAgICBpZiAocmVjb3JkICE9IG51bGwpIHtcclxuICAgICAgY29uc3QgYXJyYXlOYW1lOiBzdHJpbmcgPSB0aGlzLnNlbGVjdGVkSW5uZXJGb3JtLk5hbWUuc3BsaXQoJyAnKS5qb2luKCdfJyk7XHJcbiAgICAgIGlmICh0aGlzLmluZGV4SW5uZXJGb3JtUmVjb3JkICE9IG51bGwgJiYgdGhpcy5pbmRleElubmVyRm9ybVJlY29yZCA+PSAwKSB7XHJcbiAgICAgICAgdGhpcy5yZWNvcmRbYXJyYXlOYW1lXVt0aGlzLmluZGV4SW5uZXJGb3JtUmVjb3JkXSA9IHJlY29yZDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoIXRoaXMucmVjb3JkW2FycmF5TmFtZV0pIHtcclxuICAgICAgICAgIHRoaXMucmVjb3JkW2FycmF5TmFtZV0gPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZWNvcmRbYXJyYXlOYW1lXS5wdXNoKHJlY29yZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZGlhbG9nSW5uZXJGb3JtUmVjb3JkUmVmLmNsb3NlKCk7XHJcblxyXG4gICAgLy8gUmljYXJpY28gbGEgdGFiZWxsYSBkZWkgcmVjb3JkIHBlciB2aXN1YWxpenphcmUgbGUgbW9kaWZpY2hlIGZhdHRlIGRhbGwndXRlbnRlLlxyXG4gICAgaWYgKHRoaXMubGlzdElubmVyRm9ybVJlY29yZHMgJiYgdGhpcy5saXN0SW5uZXJGb3JtUmVjb3Jkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMubGlzdElubmVyRm9ybVJlY29yZHMuZm9yRWFjaChsaXN0ID0+IHtcclxuICAgICAgICBpZiAobGlzdCAmJiBsaXN0LnRhYmxlUmVjb3Jkcykge1xyXG4gICAgICAgICAgbGlzdC50YWJsZVJlY29yZHMucmVsb2FkRGF0YXRhYmxlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPHRleHQtZmllbGQtdGVtcGxhdGUgI2ZpZWxkVGVtcGxhdGUgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnQ2FtcG8gZGkgdGVzdG8nXVwiXHJcbiAgICBbbWF0VG9vbHRpcF09XCJmaWVsZC5EZXNjcmlwdGlvblwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZmllbGRdPVwiZmllbGRcIiAocmVjb3JkQ2hhbmdlKT1cIm9uUmVjb3JkQ2hhbmdlKClcIj5cclxuPC90ZXh0LWZpZWxkLXRlbXBsYXRlPlxyXG5cclxuPHRleHRhcmVhLWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0FyZWEgZGkgdGVzdG8nXVwiXHJcbiAgICBbbWF0VG9vbHRpcF09XCJmaWVsZC5EZXNjcmlwdGlvblwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZmllbGRdPVwiZmllbGRcIiAocmVjb3JkQ2hhbmdlKT1cIm9uUmVjb3JkQ2hhbmdlKClcIj5cclxuPC90ZXh0YXJlYS1maWVsZC10ZW1wbGF0ZT5cclxuXHJcbjxib29sZWFuLWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0Jvb2xlYW5vJ11cIlxyXG4gICAgW21hdFRvb2x0aXBdPVwiZmllbGQuRGVzY3JpcHRpb25cIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCI+XHJcbjwvYm9vbGVhbi1maWVsZC10ZW1wbGF0ZT5cclxuXHJcbjxkYXRlLWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0RhdGEgZS9vIG9yYSddXCJcclxuICAgIFttYXRUb29sdGlwXT1cImZpZWxkLkRlc2NyaXB0aW9uXCIgWyhyZWNvcmQpXT1cInJlY29yZFwiIFtmaWVsZF09XCJmaWVsZFwiIChyZWNvcmRDaGFuZ2UpPVwib25SZWNvcmRDaGFuZ2UoKVwiPlxyXG48L2RhdGUtZmllbGQtdGVtcGxhdGU+XHJcblxyXG48bnVtZXJpYy1maWVsZC10ZW1wbGF0ZSAjZmllbGRUZW1wbGF0ZSAqbmdJZj1cImZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydDYW1wbyBudW1lcmljbyddXCJcclxuICAgIFttYXRUb29sdGlwXT1cImZpZWxkLkRlc2NyaXB0aW9uXCIgWyhyZWNvcmQpXT1cInJlY29yZFwiIFtmaWVsZF09XCJmaWVsZFwiIChyZWNvcmRDaGFuZ2UpPVwib25SZWNvcmRDaGFuZ2UoKVwiPlxyXG48L251bWVyaWMtZmllbGQtdGVtcGxhdGU+XHJcblxyXG48bGlzdC12YWx1ZS1maWVsZC10ZW1wbGF0ZSAjZmllbGRUZW1wbGF0ZSAqbmdJZj1cImZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydFbGVuY28gZ2VuZXJpY28nXVwiXHJcbiAgICBbbWF0VG9vbHRpcF09XCJmaWVsZC5EZXNjcmlwdGlvblwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZmllbGRdPVwiZmllbGRcIiAocmVjb3JkQ2hhbmdlKT1cIm9uUmVjb3JkQ2hhbmdlKClcIj5cclxuPC9saXN0LXZhbHVlLWZpZWxkLXRlbXBsYXRlPlxyXG5cclxuPGF0dGFjaG1lbnQtZmllbGQtdGVtcGxhdGUgI2ZpZWxkVGVtcGxhdGUgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnQWxsZWdhdG8nXVwiXHJcbiAgICBbbWF0VG9vbHRpcF09XCJmaWVsZC5EZXNjcmlwdGlvblwiIFsocmVjb3JkKV09XCJyZWNvcmRcIiBbZmllbGRdPVwiZmllbGRcIiAocmVjb3JkQ2hhbmdlKT1cIm9uUmVjb3JkQ2hhbmdlKClcIj5cclxuPC9hdHRhY2htZW50LWZpZWxkLXRlbXBsYXRlPlxyXG5cclxuPGltYWdlLWZpZWxkLXRlbXBsYXRlICNmaWVsZFRlbXBsYXRlICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bJ0ltbWFnaW5lJ11cIlxyXG4gICAgW21hdFRvb2x0aXBdPVwiZmllbGQuRGVzY3JpcHRpb25cIiBbKHJlY29yZCldPVwicmVjb3JkXCIgW2ZpZWxkXT1cImZpZWxkXCIgKHJlY29yZENoYW5nZSk9XCJvblJlY29yZENoYW5nZSgpXCI+XHJcbjwvaW1hZ2UtZmllbGQtdGVtcGxhdGU+XHJcblxyXG48bGlzdC1mb3JtLXJlY29yZCAjbGlzdElubmVyRm9ybVJlY29yZHMgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVsnRm9ybSBkaSBkZXR0YWdsaW8nXVwiXHJcbiAgICBbZm9ybV09XCJnZXRJbm5lckZvcm1Gcm9tRmllbGQoZmllbGQpXCIgW2NvbmZpZ3VyYXRpb25zXT1cImNvbmZpZ0xpc3RcIlxyXG4gICAgKG9uQWRkVmlld0VkaXRSZWNvcmQpPVwib25BZGRWaWV3RWRpdElubmVyRm9ybVJlY29yZCgkZXZlbnQsIGZpZWxkKVwiPlxyXG48L2xpc3QtZm9ybS1yZWNvcmQ+XHJcblxyXG48IS0tIERJQUxPRyBQRVIgQUdHSVVOR0VSRS9NT0RJRklDQVJFL1ZJU1VBTElaWkFSRSBVTiBSRUNPUkQgSU4gVU5BIEZPUk0gREkgREVUVEFHTElPIC0tPlxyXG48bmctdGVtcGxhdGUgI2RpYWxvZ0lubmVyRm9ybVJlY29yZD5cclxuICAgIDxhZGQtZm9ybS1yZWNvcmQgW2Zvcm1dPVwic2VsZWN0ZWRJbm5lckZvcm1cIiBbcmVjb3JkXT1cInNlbGVjdGVkSW5uZXJGb3JtUmVjb3JkXCIgW29ubHlWaWV3XT1cIm9ubHlWaWV3SW5uZXJGb3JtUmVjb3JkXCJcclxuICAgICAgICAoc2F2ZVJlY29yZEV2ZW50KT1cIm9uU2F2ZUlubmVyRm9ybVJlY29yZCgkZXZlbnQpXCI+PC9hZGQtZm9ybS1yZWNvcmQ+XHJcbjwvbmctdGVtcGxhdGU+Il19