@rangertechnologies/ngnxt 2.1.253 → 2.1.255-beta

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 (89) hide show
  1. package/fesm2022/rangertechnologies-ngnxt.mjs +258 -433
  2. package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
  3. package/lib/components/datatable/datatable.component.d.ts +0 -1
  4. package/lib/components/pick-location/pick-location.component.d.ts +0 -1
  5. package/lib/model/bookletWrapper.d.ts +0 -1
  6. package/lib/pages/booklet/booklet.component.d.ts +0 -2
  7. package/lib/pages/builder/element/element.component.d.ts +0 -3
  8. package/lib/pages/builder/properties/properties.component.d.ts +6 -2
  9. package/lib/pages/pdfDesigner/pdf-designer/pdf-designer.component.d.ts +0 -3
  10. package/lib/pages/questionbook/questionbook.component.d.ts +0 -1
  11. package/lib/pages/questionnaire/questionnaire.component.d.ts +0 -1
  12. package/lib/pipe/custom-translate.pipe.d.ts +1 -1
  13. package/lib/pipe/svg/svg.pipe.d.ts +10 -0
  14. package/lib/services/form-builder/form-builder.service.d.ts +1 -0
  15. package/lib/services/translation/translation.service.d.ts +1 -1
  16. package/package.json +4 -6
  17. package/rangertechnologies-ngnxt-2.1.255-beta.tgz +0 -0
  18. package/esm2022/environments/version.mjs +0 -15
  19. package/esm2022/lib/components/button/nxt-button.component.mjs +0 -154
  20. package/esm2022/lib/components/custom-calendar/custom-calendar.component.mjs +0 -360
  21. package/esm2022/lib/components/custom-dropdown/custom-dropdown.component.mjs +0 -263
  22. package/esm2022/lib/components/custom-model/custom-model.component.mjs +0 -53
  23. package/esm2022/lib/components/custom-radio/custom-radio.component.mjs +0 -156
  24. package/esm2022/lib/components/datatable/datatable.component.mjs +0 -1757
  25. package/esm2022/lib/components/file-upload/file-upload.component.mjs +0 -292
  26. package/esm2022/lib/components/icon-selector/icon-selector.component.mjs +0 -105
  27. package/esm2022/lib/components/image-cropper/component/cropper.state.mjs +0 -208
  28. package/esm2022/lib/components/image-cropper/component/image-cropper.component.mjs +0 -562
  29. package/esm2022/lib/components/image-cropper/interfaces/basic-event.interface.mjs +0 -2
  30. package/esm2022/lib/components/image-cropper/interfaces/cropper-options.interface.mjs +0 -2
  31. package/esm2022/lib/components/image-cropper/interfaces/cropper-position.interface.mjs +0 -2
  32. package/esm2022/lib/components/image-cropper/interfaces/dimensions.interface.mjs +0 -2
  33. package/esm2022/lib/components/image-cropper/interfaces/exif-transform.interface.mjs +0 -2
  34. package/esm2022/lib/components/image-cropper/interfaces/image-cropped-event.interface.mjs +0 -2
  35. package/esm2022/lib/components/image-cropper/interfaces/image-transform.interface.mjs +0 -2
  36. package/esm2022/lib/components/image-cropper/interfaces/index.mjs +0 -2
  37. package/esm2022/lib/components/image-cropper/interfaces/loaded-image.interface.mjs +0 -2
  38. package/esm2022/lib/components/image-cropper/interfaces/move-start.interface.mjs +0 -8
  39. package/esm2022/lib/components/image-cropper/services/crop.service.mjs +0 -139
  40. package/esm2022/lib/components/image-cropper/services/load-image.service.mjs +0 -194
  41. package/esm2022/lib/components/image-cropper/utils/cropper-position.utils.mjs +0 -239
  42. package/esm2022/lib/components/image-cropper/utils/exif.utils.mjs +0 -79
  43. package/esm2022/lib/components/image-cropper/utils/keyboard.utils.mjs +0 -40
  44. package/esm2022/lib/components/image-cropper/utils/percentage.utils.mjs +0 -4
  45. package/esm2022/lib/components/image-cropper/utils/resize.utils.mjs +0 -75
  46. package/esm2022/lib/components/list-view-filter/list-view-filter.component.mjs +0 -392
  47. package/esm2022/lib/components/nxt-input/nxt-input.component.mjs +0 -2972
  48. package/esm2022/lib/components/pagination/pagination.component.mjs +0 -105
  49. package/esm2022/lib/components/pick-location/pick-location.component.mjs +0 -220
  50. package/esm2022/lib/components/search-box/search-box.component.mjs +0 -470
  51. package/esm2022/lib/country.json +0 -43237
  52. package/esm2022/lib/interfaces/actionMeta.mjs +0 -2
  53. package/esm2022/lib/interfaces/dependencyMeta.mjs +0 -2
  54. package/esm2022/lib/model/bookletWrapper.mjs +0 -9
  55. package/esm2022/lib/model/changeWrapper.mjs +0 -10
  56. package/esm2022/lib/model/errorWrapper.mjs +0 -6
  57. package/esm2022/lib/nxt-app.component.mjs +0 -22
  58. package/esm2022/lib/nxt-app.module.mjs +0 -115
  59. package/esm2022/lib/nxt-app.service.mjs +0 -14
  60. package/esm2022/lib/pages/booklet/booklet.component.mjs +0 -658
  61. package/esm2022/lib/pages/builder/element/element.component.mjs +0 -508
  62. package/esm2022/lib/pages/builder/form/form.component.mjs +0 -48
  63. package/esm2022/lib/pages/builder/properties/common-fields.constants.mjs +0 -97
  64. package/esm2022/lib/pages/builder/properties/properties.component.mjs +0 -1089
  65. package/esm2022/lib/pages/builder/templates/templates.component.mjs +0 -35
  66. package/esm2022/lib/pages/pdfDesigner/pdf-designer/pdf-designer.component.mjs +0 -681
  67. package/esm2022/lib/pages/pdfDesigner/pdf-properties/pdf-properties.component.mjs +0 -1118
  68. package/esm2022/lib/pages/questionbook/questionbook.component.mjs +0 -801
  69. package/esm2022/lib/pages/questionnaire/questionnaire.component.mjs +0 -2219
  70. package/esm2022/lib/pipe/button-styles.pipe.mjs +0 -26
  71. package/esm2022/lib/pipe/custom-translate.pipe.mjs +0 -36
  72. package/esm2022/lib/pipe/get-value.pipe.mjs +0 -54
  73. package/esm2022/lib/pipe/question-by-row.pipe.mjs +0 -51
  74. package/esm2022/lib/pipe/search-filter/search-filter.pipe.mjs +0 -40
  75. package/esm2022/lib/sample.mjs +0 -3715
  76. package/esm2022/lib/services/change/change.service.mjs +0 -46
  77. package/esm2022/lib/services/country/country.service.mjs +0 -135
  78. package/esm2022/lib/services/data/data.service.mjs +0 -100
  79. package/esm2022/lib/services/form-builder/form-builder.service.mjs +0 -500
  80. package/esm2022/lib/services/pdf-designer/pdf-designer.service.mjs +0 -398
  81. package/esm2022/lib/services/salesforce/salesforce.service.mjs +0 -41
  82. package/esm2022/lib/services/shared/shared.service.mjs +0 -100
  83. package/esm2022/lib/services/storage/storage.service.mjs +0 -59
  84. package/esm2022/lib/services/template/template.service.mjs +0 -351
  85. package/esm2022/lib/services/translation/translation.service.mjs +0 -121
  86. package/esm2022/lib/wrapper.mjs +0 -175
  87. package/esm2022/public-api.mjs +0 -22
  88. package/esm2022/rangertechnologies-ngnxt.mjs +0 -5
  89. package/rangertechnologies-ngnxt-2.1.253.tgz +0 -0
@@ -198,7 +198,6 @@ export declare class NxtDatatable {
198
198
  onImageDelete(ques: any): Promise<void>;
199
199
  fileChangeEvent(ques: any, event: any): Promise<void>;
200
200
  private readFileAsDataURL;
201
- readQuestions(qbId: any, ques: any): any[];
202
201
  getDropDown(event: any): void;
203
202
  static ɵfac: i0.ɵɵFactoryDeclaration<NxtDatatable, never>;
204
203
  static ɵcmp: i0.ɵɵComponentDeclaration<NxtDatatable, "nxt-datatable", never, { "data": { "alias": "data"; "required": false; }; "tableFilterData": { "alias": "tableFilterData"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "withCheckBox": { "alias": "withCheckBox"; "required": false; }; "searchBar": { "alias": "searchBar"; "required": false; }; "tableSaveButton": { "alias": "tableSaveButton"; "required": false; }; "stickyColumn": { "alias": "stickyColumn"; "required": false; }; "tableWidth": { "alias": "tableWidth"; "required": false; }; "actionColumHeader": { "alias": "actionColumHeader"; "required": false; }; "actionButton": { "alias": "actionButton"; "required": false; }; "title": { "alias": "title"; "required": false; }; "isButtons": { "alias": "isButtons"; "required": false; }; "buttonArray": { "alias": "buttonArray"; "required": false; }; "tableId": { "alias": "tableId"; "required": false; }; "isEditRow": { "alias": "isEditRow"; "required": false; }; "isDeleteRow": { "alias": "isDeleteRow"; "required": false; }; "addInlineRecord": { "alias": "addInlineRecord"; "required": false; }; "searchConfigs": { "alias": "searchConfigs"; "required": false; }; "direction": { "alias": "direction"; "required": false; }; "pagination": { "alias": "pagination"; "required": false; }; "actionButtonArray": { "alias": "actionButtonArray"; "required": false; }; "multipleFilter": { "alias": "multipleFilter"; "required": false; }; "isPagination": { "alias": "isPagination"; "required": false; }; "isNosIndicator": { "alias": "isNosIndicator"; "required": false; }; "isEditable": { "alias": "isEditable"; "required": false; }; "from": { "alias": "from"; "required": false; }; "question": { "alias": "question"; "required": false; }; "rowTextSize": { "alias": "rowTextSize"; "required": false; }; "rowTextColor": { "alias": "rowTextColor"; "required": false; }; "apiMeta": { "alias": "apiMeta"; "required": false; }; "summaryRows": { "alias": "summaryRows"; "required": false; }; "summaryColumns": { "alias": "summaryColumns"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "tableConfig": { "alias": "tableConfig"; "required": false; }; "tableParams": { "alias": "tableParams"; "required": false; }; "listViews": { "alias": "listViews"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "languageCode": { "alias": "languageCode"; "required": false; }; "selectedColumn": { "alias": "selectedColumn"; "required": false; }; "allIcons": { "alias": "allIcons"; "required": false; }; }, { "tableRowClick": "tableRowClick"; "onEditData": "onEditData"; "saveButtonData": "saveButtonData"; "onDeleteData": "onDeleteData"; "buttonEmit": "buttonEmit"; "hyperLinkEmit": "hyperLinkEmit"; "sideNavEmit": "sideNavEmit"; "actionButtonEmit": "actionButtonEmit"; "columnSelected": "columnSelected"; "removeColumn": "removeColumn"; "valueChange": "valueChange"; "selectedValues": "selectedValues"; "fileEmit": "fileEmit"; "NxtTableParamsEmit": "NxtTableParamsEmit"; "NxtTableFilterEmit": "NxtTableFilterEmit"; "hadleDropDownDependent": "hadleDropDownDependent"; "NxtTableEmit": "NxtTableEmit"; }, never, never, true, never>;
@@ -1,4 +1,3 @@
1
- /// <reference types="google.maps" />
2
1
  import { ElementRef, EventEmitter, ChangeDetectorRef, NgZone, OnInit, SimpleChanges, OnChanges } from '@angular/core';
3
2
  import { ChangeWrapper } from '../../model/changeWrapper';
4
3
  import * as i0 from "@angular/core";
@@ -1,5 +1,4 @@
1
1
  export declare class BookletWrapper {
2
2
  booklet: any[];
3
3
  bookQuestionsMap: any;
4
- sqOptions: any;
5
4
  }
@@ -45,7 +45,6 @@ export declare class BookletComponent implements OnInit {
45
45
  abItem: any;
46
46
  actions: ActionMeta[];
47
47
  bookQuestionsMap: any;
48
- private sqOptions;
49
48
  isAnswerFlag: boolean;
50
49
  spinnerName: string;
51
50
  spinnerType: string;
@@ -69,7 +68,6 @@ export declare class BookletComponent implements OnInit {
69
68
  flattenObject(obj: any, parentKey?: string): any[];
70
69
  handleQues(ques: any): void;
71
70
  addEvent(day: any, entryQues: any): void;
72
- readQuestions(qbId: string): any[];
73
71
  getText(value: any): SafeHtml;
74
72
  getDropDown(event: any): void;
75
73
  getCalendarDate(event: any): void;
@@ -52,9 +52,6 @@ export declare class ElementComponent {
52
52
  onDragOver(event: DragEvent, index: number): void;
53
53
  onDrop(event: DragEvent, dropIndex: number): void;
54
54
  toggleBoolean(field: any): void;
55
- getBaseStyles(field: any, includeBorderStyle?: boolean): any;
56
- getFontStyles(field: any): any;
57
- getLineStyles(field: any): any;
58
55
  onClose(): void;
59
56
  addOnTable(): void;
60
57
  updateTableFieldsMeta(elements: any[]): any[];
@@ -1,4 +1,4 @@
1
- import { ElementRef, EventEmitter, OnInit } from '@angular/core';
1
+ import { ElementRef, EventEmitter, OnInit, ChangeDetectorRef } from '@angular/core';
2
2
  import { CropperPosition, Dimensions, ImageTransform } from '../../../components/image-cropper/interfaces';
3
3
  import { PipeTransform } from '@angular/core';
4
4
  import { FormBuilderService } from '../../../services/form-builder/form-builder.service';
@@ -14,6 +14,7 @@ export declare class PropertiesComponent implements OnInit {
14
14
  private formBuilderService;
15
15
  private templateService;
16
16
  private translationService;
17
+ private cdr;
17
18
  templateSelected: boolean;
18
19
  set selectedElementType(value: string);
19
20
  formButtonHandler: EventEmitter<any>;
@@ -371,7 +372,9 @@ export declare class PropertiesComponent implements OnInit {
371
372
  appearance: any[];
372
373
  };
373
374
  }>;
374
- constructor(formBuilderService: FormBuilderService, templateService: TemplateService, translationService: TranslationService);
375
+ formBuilderLanguageCode: any;
376
+ copied: boolean;
377
+ constructor(formBuilderService: FormBuilderService, templateService: TemplateService, translationService: TranslationService, cdr: ChangeDetectorRef);
375
378
  ngOnInit(): void;
376
379
  private createElementProperties;
377
380
  createElementConfig(config?: {
@@ -443,6 +446,7 @@ export declare class PropertiesComponent implements OnInit {
443
446
  updateBookSubtext(key: 'endpoint' | 'variable' | 'defaultField', value: string): void;
444
447
  trackByProp(index: number, item: any): any;
445
448
  getOptimizedSubPropValue(subProp: any): string;
449
+ copyToClipboard(text: string | null): void;
446
450
  static ɵfac: i0.ɵɵFactoryDeclaration<PropertiesComponent, never>;
447
451
  static ɵcmp: i0.ɵɵComponentDeclaration<PropertiesComponent, "app-properties", never, { "templateSelected": { "alias": "templateSelected"; "required": false; }; "selectedElementType": { "alias": "selectedElementType"; "required": false; }; }, { "formButtonHandler": "formButtonHandler"; "templateSaveHandler": "templateSaveHandler"; }, never, never, true, never>;
448
452
  }
@@ -76,8 +76,6 @@ export declare class PdfDesignerComponent {
76
76
  onDragOver(event: DragEvent, index: number): void;
77
77
  onDrop(event: DragEvent, dropIndex: number): void;
78
78
  toggleBoolean(field: any): void;
79
- getFontStyles(field: any): any;
80
- getLineStyles(field: any): any;
81
79
  onClose(): void;
82
80
  addOnTable(): void;
83
81
  addTableData(fieldId: any, fieldName: any): void;
@@ -110,7 +108,6 @@ export declare class PdfDesignerComponent {
110
108
  toggleStyle(style: 'bold' | 'italic'): void;
111
109
  setAlignment(alignment: 'left' | 'center' | 'right'): void;
112
110
  updateContent(): void;
113
- getMarginStyle(margin: number[] | undefined): string;
114
111
  pdfSaveHandler(event: any): void;
115
112
  static ɵfac: i0.ɵɵFactoryDeclaration<PdfDesignerComponent, never>;
116
113
  static ɵcmp: i0.ɵɵComponentDeclaration<PdfDesignerComponent, "app-pdf-designer", never, { "pdfJSON": { "alias": "pdfJSON"; "required": false; }; "bookletId": { "alias": "bookletId"; "required": false; }; "isPreview": { "alias": "isPreview"; "required": false; }; }, { "pdfSaveHandlerEmit": "pdfSaveHandlerEmit"; "templateMode": "templateMode"; "pdfPreviewEmit": "pdfPreviewEmit"; }, never, never, true, never>;
@@ -104,7 +104,6 @@ export declare class QuestionbookComponent implements OnInit, AfterViewInit {
104
104
  cropperReady(sourceImageDimensions: Dimensions): void;
105
105
  convertBlobToBase64(objectUrl: string): Promise<string>;
106
106
  closeModal(): void;
107
- readQuestions(qbId: any, ques: any): any[];
108
107
  static ɵfac: i0.ɵɵFactoryDeclaration<QuestionbookComponent, never>;
109
108
  static ɵcmp: i0.ɵɵComponentDeclaration<QuestionbookComponent, "lib-questionbook", never, { "qbItem": { "alias": "qbItem"; "required": false; }; "questionItem": { "alias": "questionItem"; "required": false; }; "questions": { "alias": "questions"; "required": false; }; "errorFieldId": { "alias": "errorFieldId"; "required": false; }; "labelValue": { "alias": "labelValue"; "required": false; }; "token": { "alias": "token"; "required": false; }; "isEdit": { "alias": "isEdit"; "required": false; }; "dropDownData": { "alias": "dropDownData"; "required": false; }; "dataBind": { "alias": "dataBind"; "required": false; }; "allIcons": { "alias": "allIcons"; "required": false; }; "themeColor": { "alias": "themeColor"; "required": false; }; "cdnIconURL": { "alias": "cdnIconURL"; "required": false; }; "direction": { "alias": "direction"; "required": false; }; }, { "handleDropDown": "handleDropDown"; "handleQuestion": "handleQuestion"; "singleFieldChangeEmit": "singleFieldChangeEmit"; "hadleDropDownDependent": "hadleDropDownDependent"; "handleCalendarDate": "handleCalendarDate"; "handleCalendarEvent": "handleCalendarEvent"; }, never, never, true, never>;
110
109
  }
@@ -62,7 +62,6 @@ export declare class QuestionnaireComponent implements OnInit {
62
62
  selectedhourMap: Map<any, any>;
63
63
  selectedminuteMap: Map<any, any>;
64
64
  attachmentsMap: Map<any, any>;
65
- sqOptions: Map<any, any>;
66
65
  subAnsMap: Map<any, any>;
67
66
  localSubQuestions: LocalQuestion[];
68
67
  questionStack: any[];
@@ -4,7 +4,7 @@ export declare class NxtCustomTranslatePipe implements PipeTransform {
4
4
  private cache;
5
5
  private translationService;
6
6
  constructor();
7
- transform(key: string, fallback: string): string;
7
+ transform(key: string, fallback: string, from?: string): string;
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<NxtCustomTranslatePipe, never>;
9
9
  static ɵpipe: i0.ɵɵPipeDeclaration<NxtCustomTranslatePipe, "nxtCustomTranslate", true>;
10
10
  }
@@ -0,0 +1,10 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
3
+ import * as i0 from "@angular/core";
4
+ export declare class SvgPipe implements PipeTransform {
5
+ private sanitizer;
6
+ constructor(sanitizer: DomSanitizer);
7
+ transform(icon: any): SafeHtml;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<SvgPipe, never>;
9
+ static ɵpipe: i0.ɵɵPipeDeclaration<SvgPipe, "svg", true>;
10
+ }
@@ -48,6 +48,7 @@ interface FormElement {
48
48
  };
49
49
  options?: Array<{
50
50
  value: string;
51
+ label: string;
51
52
  uniqueIdentifier: any;
52
53
  id: any;
53
54
  }>;
@@ -9,7 +9,7 @@ export declare class TranslationService {
9
9
  private formBuilderTranslations;
10
10
  private formBuilderCurrentLang;
11
11
  private formBuilderTranslationsLoaded;
12
- formBuilderTranslationsLoaded$: import("rxjs").Observable<void>;
12
+ formBuilderTranslationsLoaded$: import("rxjs").Observable<string>;
13
13
  constructor(dataService: DataService);
14
14
  load(): Promise<void>;
15
15
  flattenAppTranslations(translations: any): any;
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@rangertechnologies/ngnxt",
3
- "version": "2.1.253",
3
+ "version": "2.1.255-beta",
4
4
  "peerDependencies": {
5
- "@angular/common": "^18.2.13",
6
- "@angular/core": "^18.2.13"
5
+ "@angular/common": "^19.2.14",
6
+ "@angular/core": "^19.2.14"
7
7
  },
8
8
  "dependencies": {
9
- "tslib": "^2.0.0"
9
+ "tslib": "^2.8.1"
10
10
  },
11
11
  "description": "This library was used for creating dymanic UI based on the input JSON/data",
12
12
  "main": "karma.conf.js",
@@ -37,8 +37,6 @@
37
37
  },
38
38
  ".": {
39
39
  "types": "./index.d.ts",
40
- "esm2022": "./esm2022/rangertechnologies-ngnxt.mjs",
41
- "esm": "./esm2022/rangertechnologies-ngnxt.mjs",
42
40
  "default": "./fesm2022/rangertechnologies-ngnxt.mjs"
43
41
  }
44
42
  },
@@ -1,15 +0,0 @@
1
- // IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!
2
- /* tslint:disable */
3
- export const VERSION = {
4
- "dirty": true,
5
- "raw": "78a817f6-dirty",
6
- "hash": "78a817f6",
7
- "distance": null,
8
- "tag": null,
9
- "semver": null,
10
- "suffix": "78a817f6-dirty",
11
- "semverString": null,
12
- "version": "2.1.253"
13
- };
14
- /* tslint:enable */
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2Vudmlyb25tZW50cy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJFQUEyRTtBQUMzRSxvQkFBb0I7QUFDcEIsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ25CLE9BQU8sRUFBRSxJQUFJO0lBQ2IsS0FBSyxFQUFFLGdCQUFnQjtJQUN2QixNQUFNLEVBQUUsVUFBVTtJQUNsQixVQUFVLEVBQUUsSUFBSTtJQUNoQixLQUFLLEVBQUUsSUFBSTtJQUNYLFFBQVEsRUFBRSxJQUFJO0lBQ2QsUUFBUSxFQUFFLGdCQUFnQjtJQUMxQixjQUFjLEVBQUUsSUFBSTtJQUNwQixTQUFTLEVBQUUsU0FBUztDQUN2QixDQUFDO0FBQ0YsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSU1QT1JUQU5UOiBUSElTIEZJTEUgSVMgQVVUTyBHRU5FUkFURUQhIERPIE5PVCBNQU5VQUxMWSBFRElUIE9SIENIRUNLSU4hXG4vKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSB7XG4gICAgXCJkaXJ0eVwiOiB0cnVlLFxuICAgIFwicmF3XCI6IFwiNzhhODE3ZjYtZGlydHlcIixcbiAgICBcImhhc2hcIjogXCI3OGE4MTdmNlwiLFxuICAgIFwiZGlzdGFuY2VcIjogbnVsbCxcbiAgICBcInRhZ1wiOiBudWxsLFxuICAgIFwic2VtdmVyXCI6IG51bGwsXG4gICAgXCJzdWZmaXhcIjogXCI3OGE4MTdmNi1kaXJ0eVwiLFxuICAgIFwic2VtdmVyU3RyaW5nXCI6IG51bGwsXG4gICAgXCJ2ZXJzaW9uXCI6IFwiMi4xLjI1M1wiXG59O1xuLyogdHNsaW50OmVuYWJsZSAqL1xuIl19
@@ -1,154 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';
3
- import { NxtCustomTranslatePipe } from '../../pipe/custom-translate.pipe';
4
- import { ButtonStylesPipe } from '../../pipe/button-styles.pipe';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../../services/translation/translation.service";
7
- import * as i2 from "@angular/common";
8
- export class NxtButtonComponent {
9
- cdRef;
10
- translationService;
11
- elementRef;
12
- buttonValue = ''; //SKS24JAN25 button text
13
- buttonType = 'primary'; //SKS24JAN25 If the button type is 'text-only', it should display only the text without a border or outline. For 'grey-text', the button should have a border and a background color, but the text color should be gray, similar to 'blue-text'
14
- type = 'button'; //SKS24JAN25 The button types are "button," "group," and "dropdown."
15
- buttonDisable = false; //SKS24JAN25 use this input to disable a button when needed.
16
- btnBgColor = ''; // Use this input to set a custom background color for the button.
17
- btnBorder = ''; // Use this input to set a custom border style for the button.
18
- btnTextColor = ''; // Use this input to set a custom text color for the button.
19
- btnHeight = ''; // Use this input to set a custom height for the button.
20
- btnWidth = ''; // Use this input to set a custom width for the button.
21
- btnIconLeftSrc = ''; // Use this input to set the source of the left-side icon for the button.
22
- btnIconRightSrc = ''; // Use this input to set the source of the right-side icon for the button.
23
- btnHoverBgColor = ''; // Use this input to set the background color of the button on hover.
24
- btnHoverTextColor = ''; // Use this input to set the text color of the button on hover.
25
- btnId = 'default'; // Use this input to set a custom ID for the button. Default is 'default'.
26
- dataDismiss = ''; // Use this input to specify the dismiss action for the button (e.g., 'modal' to close a modal).
27
- buttonBorder = '0px'; // Use this input to set the border size of the button. Default is '0px' for no border.
28
- modalToTrigger = ''; // Use this input to specify the ID or target of the modal to be triggered.
29
- isImageSvg = false; // Use this input to determine if the image is an SVG. Default is false (non-SVG).
30
- tabIndex = ''; // Use this input to set the tab index for the element, controlling the focus order.
31
- buttonConfig = ''; // Use this input to pass configuration settings for the group and dropdown buttons (e.g., styles, actions).
32
- mode = 'edit'; // New mode input
33
- languageCode;
34
- buttonClickEmit = new EventEmitter();
35
- iconSrc = ''; // Ensure it's always a string
36
- isDropdownOpen = false;
37
- // SKS24JAN25 dropdown button config
38
- // dropdownButton = {
39
- // btnBgColor: '#007bff',
40
- // btnBorder: '1px solid #0056b3',
41
- // btnTextColor: '#ffffff',
42
- // btnHeight: '40px',
43
- // btnWidth: '150px',
44
- // btnHoverBgColor: '#0056b3',
45
- // btnHoverTextColor: '#ffffff',
46
- // label: 'Dropdown',
47
- // iconSrc: '',
48
- // items: [
49
- // { label: 'Action 1',iconSrc: '', hover: false },
50
- // { label: 'Action 2',iconSrc: '', hover: false },
51
- // { label: 'Action 3',iconSrc: '', hover: false }
52
- // ]
53
- // };
54
- constructor(cdRef, translationService, elementRef) {
55
- this.cdRef = cdRef;
56
- this.translationService = translationService;
57
- this.elementRef = elementRef;
58
- }
59
- ngOnInit() {
60
- // SKS14JUL25 Initialize language settings on component load
61
- // SKS14JUL25 Get the saved language from localStorage (if any)
62
- let lang = this.languageCode || this.translationService.getLanguage() || localStorage.getItem('language') || 'en';
63
- // SKS14JUL25 If languageCode is already set (e.g., from input or config), apply it
64
- if (lang) {
65
- this.translationService.setLanguage(this.languageCode);
66
- this.languageCode = lang;
67
- }
68
- // SKS14JUL25 Subscribe to translation load event to trigger change detection,
69
- //SKS14JUL25 ensuring that translations using pipes get updated properly
70
- this.translationService.translationsLoaded$.subscribe(() => {
71
- this.cdRef.detectChanges(); //SKS14JUL25 Force pipe re-evaluation after language change
72
- });
73
- }
74
- ngOnChanges(changes) {
75
- // SKS14JUL25 Check if there's a change in the input property 'languageCode'
76
- if (changes['languageCode']) {
77
- // SKS14JUL25 If new languageCode is set, update the translation service
78
- if (this.languageCode) {
79
- this.translationService.setLanguage(this.languageCode);
80
- }
81
- }
82
- }
83
- buttonClicked($event) {
84
- this.buttonClickEmit.emit($event);
85
- if (this.isDropdownOpen) {
86
- this.isDropdownOpen = false;
87
- }
88
- }
89
- toggleDropdown() {
90
- this.isDropdownOpen = !this.isDropdownOpen;
91
- }
92
- //SKS24JAN25 Listener for clicks outside the dropdown button to close or manage its state.
93
- onClickOutside(event) {
94
- if (this.isDropdownOpen && !this.elementRef.nativeElement.contains(event.target)) {
95
- this.isDropdownOpen = false;
96
- }
97
- }
98
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NxtButtonComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.TranslationService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
99
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NxtButtonComponent, isStandalone: true, selector: "nxt-button", inputs: { buttonValue: "buttonValue", buttonType: "buttonType", type: "type", buttonDisable: "buttonDisable", btnBgColor: "btnBgColor", btnBorder: "btnBorder", btnTextColor: "btnTextColor", btnHeight: "btnHeight", btnWidth: "btnWidth", btnIconLeftSrc: "btnIconLeftSrc", btnIconRightSrc: "btnIconRightSrc", btnHoverBgColor: "btnHoverBgColor", btnHoverTextColor: "btnHoverTextColor", btnId: "btnId", dataDismiss: "dataDismiss", buttonBorder: "buttonBorder", modalToTrigger: "modalToTrigger", isImageSvg: "isImageSvg", tabIndex: "tabIndex", buttonConfig: "buttonConfig", mode: "mode", languageCode: "languageCode" }, outputs: { buttonClickEmit: "buttonClickEmit" }, host: { listeners: { "document:click": "onClickOutside($event)" } }, usesOnChanges: true, ngImport: i0, template: "<!-- SKS24JAN25 group button -->\n<div *ngIf=\"type === 'group'\" class=\"btn-group\" role=\"group\" aria-label=\"Button Group\">\n <button *ngFor=\"let btn of buttonConfig.buttons\"\n type=\"button\"\n class=\"btn btn-icon {{btn.buttonType}} tooltip-container\"\n [attr.tabindex]=\"btn.tabIndex\"\n [attr.data-bs-toggle]=\"btn.modalToTrigger ? 'modal' : null\"\n [attr.data-bs-target]=\"btn.modalToTrigger ? '#' + btn.modalToTrigger : null\"\n [ngStyle]=\"btn | buttonStyles\"\n [disabled]=\"btn.buttonDisable\"\n [attr.data-bs-dismiss]=\"btn.dataDismiss\"\n (click)=\"buttonClicked(btn)\"\n [attr.id]=\"btn.btnId !== 'default' ? btn.btnId : null\">\n <img *ngIf=\"btn.isImageSvg\" [src]=\"btn.iconSrc\">\n <span class=\"custom-tooltip\" \n style=\"background-color:{{btn.tooltipBcColor}};\n color:{{btn.tooltipColor}};\n font-size:{{btn.tooltipFSize}}\">\n {{ btn.tooltipPath ? (btn.tooltipPath | nxtCustomTranslate : btn.tooltip) : (btn.tooltip | nxtCustomTranslate : btn.tooltip) }}\n <div class=\"tooltip-pointer\" style=\"background-color:{{btn.tooltipBcColor}};\"></div>\n </span>\n </button>\n</div>\n \n<!-- SKS24JAN25 single button -->\n<button type=\"button\" *ngIf=\"type !== 'group' && type !== 'dropdown'\" class=\"btn btn-primary fc-button {{buttonType}}\" [tabindex]=\"tabIndex\"\n [attr.data-bs-toggle]=\"modalToTrigger != '' ? 'modal' : ''\"\n [attr.data-bs-target]=\"modalToTrigger != '' ? '#'+modalToTrigger : ''\"\n style=\"button-custom-bg: {{btnBgColor}};button-custom-border: {{btnBorder}};button-custom-color: {{btnTextColor}};button-custom-height: {{btnHeight}};button-custom-width: {{btnWidth}};button-hover-bg: {{btnHoverBgColor}};button-hover-text-color: {{btnHoverTextColor}};\"\n [disabled]=\"buttonDisable\" [attr.data-bs-dismiss]='dataDismiss' (click)=\"buttonClicked($event)\"\n [attr.id]=\"btnId != 'default' ? btnId : null\">\n <img *ngIf=\"btnIconLeftSrc != '' && isImageSvg\" src=\"{{btnIconLeftSrc}}\"\n class=\"fc-btn-icon left-icon\">\n <img *ngIf=\"btnIconLeftSrc != '' && !isImageSvg\" src=\"{{btnIconLeftSrc}}\" class=\"fc-btn-icon left-icon\">\n <span class=\"fc-btn-text\">{{buttonValue}}</span>\n <img *ngIf=\"btnIconRightSrc != '' && isImageSvg\" src=\"{{btnIconRightSrc}}\"\n class=\"fc-btn-icon right-icon\">\n <img *ngIf=\"btnIconRightSrc != '' && !isImageSvg\" src=\"{{btnIconRightSrc}}\" class=\"fc-btn-icon right-icon\">\n</button>\n\n<!-- SKS24JAN25 dropdown button -->\n<div *ngIf=\"type === 'dropdown'\" class=\"dropdown\">\n <svg class=\"clickable-img\" (click)=\"toggleDropdown()\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"0.3\" y=\"0.3\" width=\"39.4\" height=\"39.4\" rx=\"11.7\" fill=\"#FAFBFD\" stroke=\"#D5D5D5\" stroke-width=\"0.6\"/>\n <path d=\"M19.9999 25.6667C23.6818 25.6667 26.6666 22.6819 26.6666 19C26.6666 15.3181 23.6818 12.3334 19.9999 12.3334C16.318 12.3334 13.3333 15.3181 13.3333 19C13.3333 22.6819 16.318 25.6667 19.9999 25.6667Z\" fill=\"#292D32\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M17.6467 18.16L20.0001 20.5067L22.3534 18.16\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> \n <div class=\"dropdown-menu\" *ngIf=\"isDropdownOpen\">\n <button *ngFor=\"let btn of buttonConfig.buttons\"\n type=\"button\"\n class=\"btn btn-icon {{btn.buttonType}} tooltip-container\"\n [attr.tabindex]=\"btn.tabIndex\"\n [attr.data-bs-toggle]=\"btn.modalToTrigger ? 'modal' : null\"\n [attr.data-bs-target]=\"btn.modalToTrigger ? '#' + btn.modalToTrigger : null\"\n [ngStyle]=\"btn | buttonStyles\"\n [disabled]=\"btn.buttonDisable\"\n [attr.data-bs-dismiss]=\"btn.dataDismiss\"\n (click)=\"buttonClicked(btn)\"\n [attr.id]=\"btn.btnId !== 'default' ? btn.btnId : null\">\n <img *ngIf=\"btn.isImageSvg\" [src]=\"btn.iconSrc\">\n <span class=\"fc-btn-text\" style=\"padding-left: 12px;\">{{btn.name}}</span>\n </button>\n </div>\n</div>\n", styles: [".fc-button,.fc-button:hover,.fc-button:active,.fc-button:focus{outline:none;border:none;box-shadow:none}.fc-button{padding:6.5px}.fc-button:active{transform:scale(1.02)}.text-only{background:transparent;color:var(--fc-primary-color);border:none;outline:none}.grey-text{color:var(--fc-text-color)}.blue-text{color:var(--fc-primary-color)}.grey-border{color:#272525;background:transparent;border:2px solid #dddddd}.grey-border:hover{color:#272525;background:#6a2aff0a;border:2px solid #6a2aff59}.grey-border:active,.grey-border:focus{background-color:#386bf6;border:2px solid #3268ff;color:#fff}.blue-border,.blue-border:hover,.blue-border:active,.blue-border:focus{border:1px solid var(--fc-primary-color)}.bg-transparent{background-color:transparent}.custom-btn{background-color:var(button-custom-bg);border-color:var(button-custom-border);color:var(button-custom-color);height:var(button-custom-height);width:var(button-custom-width)}.custom-btn:hover,.custom-btn:active,.custom-btn:focus{border-color:var(button-custom-border);background-color:var(button-hover-bg);color:var(button-hover-text-color)}.fc-btn-text{display:inline-flex;vertical-align:middle;font-size:14px;font-weight:400;padding-left:5px;padding-right:5px}.right-icon{margin-left:5px}.left-icon{margin-right:5px}.fc-button.side-save-component,.fc-button.side-cancel-component{border:1px solid transparent}.fc-button.side-save-component:focus,.fc-button.side-cancel-component:focus{box-shadow:0 0 0 .25rem #0d6efd40;border:1px solid #86b7fe}.btn-group{background-color:#fdfeff;border:1px solid #dddddd;border-radius:7px}.btn-icon{background-color:#fdfeff;border:1px solid #dddddd}.custom-tooltip{visibility:visible;position:absolute;background-color:#0773ff;color:#fff;text-align:center;padding:5px 10px;border-radius:4px;font-size:12px;white-space:nowrap;bottom:100%;left:50%;transform:translate(-50%);opacity:0;transition:opacity .2s;z-index:10;margin-bottom:10px}.tooltip-pointer{position:absolute;width:0;height:0;bottom:-5px;left:50%;transform:translate(-50%);border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #0773ff}.tooltip-container:hover .custom-tooltip{visibility:visible;opacity:1}.clickable-img{position:relative;cursor:pointer;height:41px;transition:transform .3s ease,box-shadow .3s ease;border:2px solid #dddddd;border-radius:13px}.clickable-img:hover{transform:scale(.95);border:2px solid rgb(31,105,255);border-radius:14px}.dropdown{position:relative;display:inline-block}.dropdown-menu{right:0;top:45px;background-color:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 4px 8px #0000001a;left:unset}.dropdown .dropdown-menu{display:block}.dropdown-menu .btn{display:block;padding:10px;width:100%;text-align:left;background:transparent;border:none;cursor:pointer}.dropdown-menu .btn:hover{background-color:#f1f1f1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: NxtCustomTranslatePipe, name: "nxtCustomTranslate" }, { kind: "pipe", type: ButtonStylesPipe, name: "buttonStyles" }] });
100
- }
101
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NxtButtonComponent, decorators: [{
102
- type: Component,
103
- args: [{ selector: 'nxt-button', standalone: true, imports: [CommonModule, NxtCustomTranslatePipe, ButtonStylesPipe], template: "<!-- SKS24JAN25 group button -->\n<div *ngIf=\"type === 'group'\" class=\"btn-group\" role=\"group\" aria-label=\"Button Group\">\n <button *ngFor=\"let btn of buttonConfig.buttons\"\n type=\"button\"\n class=\"btn btn-icon {{btn.buttonType}} tooltip-container\"\n [attr.tabindex]=\"btn.tabIndex\"\n [attr.data-bs-toggle]=\"btn.modalToTrigger ? 'modal' : null\"\n [attr.data-bs-target]=\"btn.modalToTrigger ? '#' + btn.modalToTrigger : null\"\n [ngStyle]=\"btn | buttonStyles\"\n [disabled]=\"btn.buttonDisable\"\n [attr.data-bs-dismiss]=\"btn.dataDismiss\"\n (click)=\"buttonClicked(btn)\"\n [attr.id]=\"btn.btnId !== 'default' ? btn.btnId : null\">\n <img *ngIf=\"btn.isImageSvg\" [src]=\"btn.iconSrc\">\n <span class=\"custom-tooltip\" \n style=\"background-color:{{btn.tooltipBcColor}};\n color:{{btn.tooltipColor}};\n font-size:{{btn.tooltipFSize}}\">\n {{ btn.tooltipPath ? (btn.tooltipPath | nxtCustomTranslate : btn.tooltip) : (btn.tooltip | nxtCustomTranslate : btn.tooltip) }}\n <div class=\"tooltip-pointer\" style=\"background-color:{{btn.tooltipBcColor}};\"></div>\n </span>\n </button>\n</div>\n \n<!-- SKS24JAN25 single button -->\n<button type=\"button\" *ngIf=\"type !== 'group' && type !== 'dropdown'\" class=\"btn btn-primary fc-button {{buttonType}}\" [tabindex]=\"tabIndex\"\n [attr.data-bs-toggle]=\"modalToTrigger != '' ? 'modal' : ''\"\n [attr.data-bs-target]=\"modalToTrigger != '' ? '#'+modalToTrigger : ''\"\n style=\"button-custom-bg: {{btnBgColor}};button-custom-border: {{btnBorder}};button-custom-color: {{btnTextColor}};button-custom-height: {{btnHeight}};button-custom-width: {{btnWidth}};button-hover-bg: {{btnHoverBgColor}};button-hover-text-color: {{btnHoverTextColor}};\"\n [disabled]=\"buttonDisable\" [attr.data-bs-dismiss]='dataDismiss' (click)=\"buttonClicked($event)\"\n [attr.id]=\"btnId != 'default' ? btnId : null\">\n <img *ngIf=\"btnIconLeftSrc != '' && isImageSvg\" src=\"{{btnIconLeftSrc}}\"\n class=\"fc-btn-icon left-icon\">\n <img *ngIf=\"btnIconLeftSrc != '' && !isImageSvg\" src=\"{{btnIconLeftSrc}}\" class=\"fc-btn-icon left-icon\">\n <span class=\"fc-btn-text\">{{buttonValue}}</span>\n <img *ngIf=\"btnIconRightSrc != '' && isImageSvg\" src=\"{{btnIconRightSrc}}\"\n class=\"fc-btn-icon right-icon\">\n <img *ngIf=\"btnIconRightSrc != '' && !isImageSvg\" src=\"{{btnIconRightSrc}}\" class=\"fc-btn-icon right-icon\">\n</button>\n\n<!-- SKS24JAN25 dropdown button -->\n<div *ngIf=\"type === 'dropdown'\" class=\"dropdown\">\n <svg class=\"clickable-img\" (click)=\"toggleDropdown()\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"0.3\" y=\"0.3\" width=\"39.4\" height=\"39.4\" rx=\"11.7\" fill=\"#FAFBFD\" stroke=\"#D5D5D5\" stroke-width=\"0.6\"/>\n <path d=\"M19.9999 25.6667C23.6818 25.6667 26.6666 22.6819 26.6666 19C26.6666 15.3181 23.6818 12.3334 19.9999 12.3334C16.318 12.3334 13.3333 15.3181 13.3333 19C13.3333 22.6819 16.318 25.6667 19.9999 25.6667Z\" fill=\"#292D32\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M17.6467 18.16L20.0001 20.5067L22.3534 18.16\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg> \n <div class=\"dropdown-menu\" *ngIf=\"isDropdownOpen\">\n <button *ngFor=\"let btn of buttonConfig.buttons\"\n type=\"button\"\n class=\"btn btn-icon {{btn.buttonType}} tooltip-container\"\n [attr.tabindex]=\"btn.tabIndex\"\n [attr.data-bs-toggle]=\"btn.modalToTrigger ? 'modal' : null\"\n [attr.data-bs-target]=\"btn.modalToTrigger ? '#' + btn.modalToTrigger : null\"\n [ngStyle]=\"btn | buttonStyles\"\n [disabled]=\"btn.buttonDisable\"\n [attr.data-bs-dismiss]=\"btn.dataDismiss\"\n (click)=\"buttonClicked(btn)\"\n [attr.id]=\"btn.btnId !== 'default' ? btn.btnId : null\">\n <img *ngIf=\"btn.isImageSvg\" [src]=\"btn.iconSrc\">\n <span class=\"fc-btn-text\" style=\"padding-left: 12px;\">{{btn.name}}</span>\n </button>\n </div>\n</div>\n", styles: [".fc-button,.fc-button:hover,.fc-button:active,.fc-button:focus{outline:none;border:none;box-shadow:none}.fc-button{padding:6.5px}.fc-button:active{transform:scale(1.02)}.text-only{background:transparent;color:var(--fc-primary-color);border:none;outline:none}.grey-text{color:var(--fc-text-color)}.blue-text{color:var(--fc-primary-color)}.grey-border{color:#272525;background:transparent;border:2px solid #dddddd}.grey-border:hover{color:#272525;background:#6a2aff0a;border:2px solid #6a2aff59}.grey-border:active,.grey-border:focus{background-color:#386bf6;border:2px solid #3268ff;color:#fff}.blue-border,.blue-border:hover,.blue-border:active,.blue-border:focus{border:1px solid var(--fc-primary-color)}.bg-transparent{background-color:transparent}.custom-btn{background-color:var(button-custom-bg);border-color:var(button-custom-border);color:var(button-custom-color);height:var(button-custom-height);width:var(button-custom-width)}.custom-btn:hover,.custom-btn:active,.custom-btn:focus{border-color:var(button-custom-border);background-color:var(button-hover-bg);color:var(button-hover-text-color)}.fc-btn-text{display:inline-flex;vertical-align:middle;font-size:14px;font-weight:400;padding-left:5px;padding-right:5px}.right-icon{margin-left:5px}.left-icon{margin-right:5px}.fc-button.side-save-component,.fc-button.side-cancel-component{border:1px solid transparent}.fc-button.side-save-component:focus,.fc-button.side-cancel-component:focus{box-shadow:0 0 0 .25rem #0d6efd40;border:1px solid #86b7fe}.btn-group{background-color:#fdfeff;border:1px solid #dddddd;border-radius:7px}.btn-icon{background-color:#fdfeff;border:1px solid #dddddd}.custom-tooltip{visibility:visible;position:absolute;background-color:#0773ff;color:#fff;text-align:center;padding:5px 10px;border-radius:4px;font-size:12px;white-space:nowrap;bottom:100%;left:50%;transform:translate(-50%);opacity:0;transition:opacity .2s;z-index:10;margin-bottom:10px}.tooltip-pointer{position:absolute;width:0;height:0;bottom:-5px;left:50%;transform:translate(-50%);border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #0773ff}.tooltip-container:hover .custom-tooltip{visibility:visible;opacity:1}.clickable-img{position:relative;cursor:pointer;height:41px;transition:transform .3s ease,box-shadow .3s ease;border:2px solid #dddddd;border-radius:13px}.clickable-img:hover{transform:scale(.95);border:2px solid rgb(31,105,255);border-radius:14px}.dropdown{position:relative;display:inline-block}.dropdown-menu{right:0;top:45px;background-color:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 4px 8px #0000001a;left:unset}.dropdown .dropdown-menu{display:block}.dropdown-menu .btn{display:block;padding:10px;width:100%;text-align:left;background:transparent;border:none;cursor:pointer}.dropdown-menu .btn:hover{background-color:#f1f1f1}\n"] }]
104
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.TranslationService }, { type: i0.ElementRef }], propDecorators: { buttonValue: [{
105
- type: Input
106
- }], buttonType: [{
107
- type: Input
108
- }], type: [{
109
- type: Input
110
- }], buttonDisable: [{
111
- type: Input
112
- }], btnBgColor: [{
113
- type: Input
114
- }], btnBorder: [{
115
- type: Input
116
- }], btnTextColor: [{
117
- type: Input
118
- }], btnHeight: [{
119
- type: Input
120
- }], btnWidth: [{
121
- type: Input
122
- }], btnIconLeftSrc: [{
123
- type: Input
124
- }], btnIconRightSrc: [{
125
- type: Input
126
- }], btnHoverBgColor: [{
127
- type: Input
128
- }], btnHoverTextColor: [{
129
- type: Input
130
- }], btnId: [{
131
- type: Input
132
- }], dataDismiss: [{
133
- type: Input
134
- }], buttonBorder: [{
135
- type: Input
136
- }], modalToTrigger: [{
137
- type: Input
138
- }], isImageSvg: [{
139
- type: Input
140
- }], tabIndex: [{
141
- type: Input
142
- }], buttonConfig: [{
143
- type: Input
144
- }], mode: [{
145
- type: Input
146
- }], languageCode: [{
147
- type: Input
148
- }], buttonClickEmit: [{
149
- type: Output
150
- }], onClickOutside: [{
151
- type: HostListener,
152
- args: ['document:click', ['$event']]
153
- }] } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnh0LWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvY29tcG9uZW50cy9idXR0b24vbnh0LWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvY29tcG9uZW50cy9idXR0b24vbnh0LWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFxQixTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUMzSSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQVNqRSxNQUFNLE9BQU8sa0JBQWtCO0lBaURUO0lBQWtDO0lBQWdEO0lBL0M3RixXQUFXLEdBQVcsRUFBRSxDQUFDLENBQUMseUJBQXlCO0lBQ25ELFVBQVUsR0FBVyxTQUFTLENBQUMsQ0FBQywrT0FBK087SUFDL1EsSUFBSSxHQUFXLFFBQVEsQ0FBQyxDQUFDLG9FQUFvRTtJQUM3RixhQUFhLEdBQVksS0FBSyxDQUFDLENBQUMsNERBQTREO0lBQzVGLFVBQVUsR0FBVyxFQUFFLENBQUMsQ0FBQyxrRUFBa0U7SUFDM0YsU0FBUyxHQUFXLEVBQUUsQ0FBQyxDQUFDLDhEQUE4RDtJQUN0RixZQUFZLEdBQVcsRUFBRSxDQUFDLENBQUMsNERBQTREO0lBQ3ZGLFNBQVMsR0FBVyxFQUFFLENBQUMsQ0FBQyx3REFBd0Q7SUFDaEYsUUFBUSxHQUFXLEVBQUUsQ0FBQyxDQUFDLHVEQUF1RDtJQUM5RSxjQUFjLEdBQVcsRUFBRSxDQUFD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S0FBSztnQkFFSSxlQUFlO3NCQUF4QixNQUFNO2dCQWdFUCxjQUFjO3NCQURiLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnh0Q3VzdG9tVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGUvY3VzdG9tLXRyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IEJ1dHRvblN0eWxlc1BpcGUgfSBmcm9tICcuLi8uLi9waXBlL2J1dHRvbi1zdHlsZXMucGlwZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ254dC1idXR0b24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBOeHRDdXN0b21UcmFuc2xhdGVQaXBlLCBCdXR0b25TdHlsZXNQaXBlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL254dC1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ueHQtYnV0dG9uLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOeHRCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuIFxuICBASW5wdXQoKSBidXR0b25WYWx1ZTogc3RyaW5nID0gJyc7IC8vU0tTMjRKQU4yNSBidXR0b24gdGV4dCBcbiAgQElucHV0KCkgYnV0dG9uVHlwZTogc3RyaW5nID0gJ3ByaW1hcnknOyAvL1NLUzI0SkFOMjUgSWYgdGhlIGJ1dHRvbiB0eXBlIGlzICd0ZXh0LW9ubHknLCBpdCBzaG91bGQgZGlzcGxheSBvbmx5IHRoZSB0ZXh0IHdpdGhvdXQgYSBib3JkZXIgb3Igb3V0bGluZS4gRm9yICdncmV5LXRleHQnLCB0aGUgYnV0dG9uIHNob3VsZCBoYXZlIGEgYm9yZGVyIGFuZCBhIGJhY2tncm91bmQgY29sb3IsIGJ1dCB0aGUgdGV4dCBjb2xvciBzaG91bGQgYmUgZ3JheSwgc2ltaWxhciB0byAnYmx1ZS10ZXh0J1xuICBASW5wdXQoKSB0eXBlOiBzdHJpbmcgPSAnYnV0dG9uJzsgLy9TS1MyNEpBTjI1IFRoZSBidXR0b24gdHlwZXMgYXJlIFwiYnV0dG9uLFwiIFwiZ3JvdXAsXCIgYW5kIFwiZHJvcGRvd24uXCJcbiAgQElucHV0KCkgYnV0dG9uRGlzYWJsZTogYm9vbGVhbiA9IGZhbHNlOyAvL1NLUzI0SkFOMjUgdXNlIHRoaXMgaW5wdXQgdG8gZGlzYWJsZSBhIGJ1dHRvbiB3aGVuIG5lZWRlZC5cbiAgQElucHV0KCkgYnRuQmdDb2xvcjogc3RyaW5nID0gJyc7IC8vIFVzZSB0aGlzIGlucHV0IHRvIHNldCBhIGN1c3RvbSBiYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgYnV0dG9uLlxuICBASW5wdXQoKSBidG5Cb3JkZXI6IHN0cmluZyA9ICcnOyAvLyBVc2UgdGhpcyBpbnB1dCB0byBzZXQgYSBjdXN0b20gYm9yZGVyIHN0eWxlIGZvciB0aGUgYnV0dG9uLlxuICBASW5wdXQoKSBidG5UZXh0Q29sb3I6IHN0cmluZyA9ICcnOyAvLyBVc2UgdGhpcyBpbnB1dCB0byBzZXQgYSBjdXN0b20gdGV4dCBjb2xvciBmb3IgdGhlIGJ1dHRvbi5cbiAgQElucHV0KCkgYnRuSGVpZ2h0OiBzdHJpbmcgPSAnJzsgLy8gVXNlIHRoaXMgaW5wdXQgdG8gc2V0IGEgY3VzdG9tIGhlaWdodCBmb3IgdGhlIGJ1dHRvbi5cbiAgQElucHV0KCkgYnRuV2lkdGg6IHN0cmluZyA9ICcnOyAvLyBVc2UgdGhpcyBpbnB1dCB0byBzZXQgYSBjdXN0b20gd2lkdGggZm9yIHRoZSBidXR0b24uXG4gIEBJbnB1dCgpIGJ0bkljb25MZWZ0U3JjOiBzdHJpbmcgPSAnJzsgLy8gVXNlIHRoaXMgaW5wdXQgdG8gc2V0IHRoZSBzb3VyY2Ugb2YgdGhlIGxlZnQtc2lkZSBpY29uIGZvciB0aGUgYnV0dG9uLlxuICBASW5wdXQoKSBidG5JY29uUmlnaHRTcmM6IHN0cmluZyA9ICcnOyAvLyBVc2UgdGhpcyBpbnB1dCB0byBzZXQgdGhlIHNvdXJjZSBvZiB0aGUgcmlnaHQtc2lkZSBpY29uIGZvciB0aGUgYnV0dG9uLlxuICBASW5wdXQoKSBidG5Ib3ZlckJnQ29sb3I6IHN0cmluZyA9ICcnOyAvLyBVc2UgdGhpcyBpbnB1dCB0byBzZXQgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbiBvbiBob3Zlci5cbiAgQElucHV0KCkgYnRuSG92ZXJUZXh0Q29sb3I6IHN0cmluZyA9ICcnOyAvLyBVc2UgdGhpcyBpbnB1dCB0byBzZXQgdGhlIHRleHQgY29sb3Igb2YgdGhlIGJ1dHRvbiBvbiBob3Zlci5cbiAgQElucHV0KCkgYnRuSWQ6IHN0cmluZyA9ICdkZWZhdWx0JzsgLy8gVXNlIHRoaXMgaW5wdXQgdG8gc2V0IGEgY3VzdG9tIElEIGZvciB0aGUgYnV0dG9uLiBEZWZhdWx0IGlzICdkZWZhdWx0Jy5cbiAgQElucHV0KCkgZGF0YURpc21pc3M6IHN0cmluZyA9ICcnOyAvLyBVc2UgdGhpcyBpbnB1dCB0byBzcGVjaWZ5IHRoZSBkaXNtaXNzIGFjdGlvbiBmb3IgdGhlIGJ1dHRvbiAoZS5nLiwgJ21vZGFsJyB0byBjbG9zZSBhIG1vZGFsKS5cbiAgQElucHV0KCkgYnV0dG9uQm9yZGVyOiBzdHJpbmcgPSAnMHB4JzsgLy8gVXNlIHRoaXMgaW5wdXQgdG8gc2V0IHRoZSBib3JkZXIgc2l6ZSBvZiB0aGUgYnV0dG9uLiBEZWZhdWx0IGlzICcwcHgnIGZvciBubyBib3JkZXIuXG4gIEBJbnB1dCgpIG1vZGFsVG9UcmlnZ2VyOiBzdHJpbmcgPSAnJzsgLy8gVXNlIHRoaXMgaW5wdXQgdG8gc3BlY2lmeSB0aGUgSUQgb3IgdGFyZ2V0IG9mIHRoZSBtb2RhbCB0byBiZSB0cmlnZ2VyZWQuXG4gIEBJbnB1dCgpIGlzSW1hZ2VTdmc6IGJvb2xlYW4gPSBmYWxzZTsgLy8gVXNlIHRoaXMgaW5wdXQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBpbWFnZSBpcyBhbiBTVkcuIERlZmF1bHQgaXMgZmFsc2UgKG5vbi1TVkcpLlxuICBASW5wdXQoKSB0YWJJbmRleDogYW55ID0gJyc7Ly8gVXNlIHRoaXMgaW5wdXQgdG8gc2V0IHRoZSB0YWIgaW5kZXggZm9yIHRoZSBlbGVtZW50LCBjb250cm9sbGluZyB0aGUgZm9jdXMgb3JkZXIuXG4gIEBJbnB1dCgpIGJ1dHRvbkNvbmZpZzogYW55ID0gJyc7IC8vIFVzZSB0aGlzIGlucHV0IHRvIHBhc3MgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBmb3IgdGhlIGdyb3VwIGFuZCBkcm9wZG93biBidXR0b25zIChlLmcuLCBzdHlsZXMsIGFjdGlvbnMpLlxuICBASW5wdXQoKSBtb2RlOiAndmlldycgfCAnZWRpdCcgfCAncHJpbnQnID0gJ2VkaXQnOyAvLyBOZXcgbW9kZSBpbnB1dFxuICBASW5wdXQoKSBsYW5ndWFnZUNvZGU6IGFueSA7XG4gIFxuICBAT3V0cHV0KCkgYnV0dG9uQ2xpY2tFbWl0OkV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIGljb25TcmM6IGFueSA9ICcnOyAvLyBFbnN1cmUgaXQncyBhbHdheXMgYSBzdHJpbmdcbiAgaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcblxuICBcblxuICAvLyBTS1MyNEpBTjI1IGRyb3Bkb3duIGJ1dHRvbiBjb25maWdcblxuICAvLyBkcm9wZG93bkJ1dHRvbiA9IHtcbiAgLy8gICBidG5CZ0NvbG9yOiAnIzAwN2JmZicsXG4gIC8vICAgYnRuQm9yZGVyOiAnMXB4IHNvbGlkICMwMDU2YjMnLFxuICAvLyAgIGJ0blRleHRDb2xvcjogJyNmZmZmZmYnLFxuICAvLyAgIGJ0bkhlaWdodDogJzQwcHgnLFxuICAvLyAgIGJ0bldpZHRoOiAnMTUwcHgnLFxuICAvLyAgIGJ0bkhvdmVyQmdDb2xvcjogJyMwMDU2YjMnLFxuICAvLyAgIGJ0bkhvdmVyVGV4dENvbG9yOiAnI2ZmZmZmZicsXG4gIC8vICAgbGFiZWw6ICdEcm9wZG93bicsXG4gIC8vICAgaWNvblNyYzogJycsXG4gIC8vICAgaXRlbXM6IFtcbiAgLy8gICAgIHsgbGFiZWw6ICdBY3Rpb24gMScsaWNvblNyYzogJycsIGhvdmVyOiBmYWxzZSB9LFxuICAvLyAgICAgeyBsYWJlbDogJ0FjdGlvbiAyJyxpY29uU3JjOiAnJywgaG92ZXI6IGZhbHNlIH0sXG4gIC8vICAgICB7IGxhYmVsOiAnQWN0aW9uIDMnLGljb25TcmM6ICcnLCBob3ZlcjogZmFsc2UgfVxuICAvLyAgIF1cbiAgLy8gfTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgdHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UsIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gU0tTMTRKVUwyNSBJbml0aWFsaXplIGxhbmd1YWdlIHNldHRpbmdzIG9uIGNvbXBvbmVudCBsb2FkXG4gICAgLy8gU0tTMTRKVUwyNSBHZXQgdGhlIHNhdmVkIGxhbmd1YWdlIGZyb20gbG9jYWxTdG9yYWdlIChpZiBhbnkpXG4gICAgbGV0IGxhbmcgPSB0aGlzLmxhbmd1YWdlQ29kZSB8fCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5nZXRMYW5ndWFnZSgpIHx8IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpIHx8ICdlbic7XG4gICAgLy8gU0tTMTRKVUwyNSBJZiBsYW5ndWFnZUNvZGUgaXMgYWxyZWFkeSBzZXQgKGUuZy4sIGZyb20gaW5wdXQgb3IgY29uZmlnKSwgYXBwbHkgaXRcbiAgICBpZiAobGFuZykge1xuICAgICAgdGhpcy50cmFuc2xhdGlvblNlcnZpY2Uuc2V0TGFuZ3VhZ2UodGhpcy5sYW5ndWFnZUNvZGUpO1xuICAgICAgdGhpcy5sYW5ndWFnZUNvZGUgPSBsYW5nO1xuICAgIH1cbiAgICAvLyBTS1MxNEpVTDI1IFN1YnNjcmliZSB0byB0cmFuc2xhdGlvbiBsb2FkIGV2ZW50IHRvIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbixcbiAgICAvL1NLUzE0SlVMMjUgZW5zdXJpbmcgdGhhdCB0cmFuc2xhdGlvbnMgdXNpbmcgcGlwZXMgZ2V0IHVwZGF0ZWQgcHJvcGVybHlcbiAgICB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGlvbnNMb2FkZWQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTsgLy9TS1MxNEpVTDI1IEZvcmNlIHBpcGUgcmUtZXZhbHVhdGlvbiBhZnRlciBsYW5ndWFnZSBjaGFuZ2VcbiAgICB9KTtcbiAgfVxuICBcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIC8vIFNLUzE0SlVMMjUgQ2hlY2sgaWYgdGhlcmUncyBhIGNoYW5nZSBpbiB0aGUgaW5wdXQgcHJvcGVydHkgJ2xhbmd1YWdlQ29kZSdcbiAgICBpZiAoY2hhbmdlc1snbGFuZ3VhZ2VDb2RlJ10pIHtcbiAgICAgIC8vIFNLUzE0SlVMMjUgSWYgbmV3IGxhbmd1YWdlQ29kZSBpcyBzZXQsIHVwZGF0ZSB0aGUgdHJhbnNsYXRpb24gc2VydmljZVxuICAgICAgaWYgKHRoaXMubGFuZ3VhZ2VDb2RlKSB7XG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnNldExhbmd1YWdlKHRoaXMubGFuZ3VhZ2VDb2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gIFxuXG4gIGJ1dHRvbkNsaWNrZWQoJGV2ZW50OmFueSl7XG4gICAgdGhpcy5idXR0b25DbGlja0VtaXQuZW1pdCgkZXZlbnQpO1xuICAgIGlmKHRoaXMuaXNEcm9wZG93bk9wZW4pe1xuICAgICAgdGhpcy5pc0Ryb3Bkb3duT3Blbj1mYWxzZVxuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZURyb3Bkb3duKCkge1xuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSAhdGhpcy5pc0Ryb3Bkb3duT3BlbjtcbiAgfVxuLy9TS1MyNEpBTjI1IExpc3RlbmVyIGZvciBjbGlja3Mgb3V0c2lkZSB0aGUgZHJvcGRvd24gYnV0dG9uIHRvIGNsb3NlIG9yIG1hbmFnZSBpdHMgc3RhdGUuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgb25DbGlja091dHNpZGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc0Ryb3Bkb3duT3BlbiAmJiAhdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIiwiPCEtLSBTS1MyNEpBTjI1IGdyb3VwIGJ1dHRvbiAtLT5cbjxkaXYgKm5nSWY9XCJ0eXBlID09PSAnZ3JvdXAnXCIgY2xhc3M9XCJidG4tZ3JvdXBcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiQnV0dG9uIEdyb3VwXCI+XG4gICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgYnRuIG9mIGJ1dHRvbkNvbmZpZy5idXR0b25zXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWljb24ge3tidG4uYnV0dG9uVHlwZX19IHRvb2x0aXAtY29udGFpbmVyXCJcbiAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImJ0bi50YWJJbmRleFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWJzLXRvZ2dsZV09XCJidG4ubW9kYWxUb1RyaWdnZXIgPyAnbW9kYWwnIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWJzLXRhcmdldF09XCJidG4ubW9kYWxUb1RyaWdnZXIgPyAnIycgKyBidG4ubW9kYWxUb1RyaWdnZXIgOiBudWxsXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cImJ0biB8IGJ1dHRvblN0eWxlc1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnRuLmJ1dHRvbkRpc2FibGVcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1icy1kaXNtaXNzXT1cImJ0bi5kYXRhRGlzbWlzc1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiYnV0dG9uQ2xpY2tlZChidG4pXCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cImJ0bi5idG5JZCAhPT0gJ2RlZmF1bHQnID8gYnRuLmJ0bklkIDogbnVsbFwiPlxuICAgICAgICA8aW1nICpuZ0lmPVwiYnRuLmlzSW1hZ2VTdmdcIiBbc3JjXT1cImJ0bi5pY29uU3JjXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLXRvb2x0aXBcIiBcbiAgICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjp7e2J0bi50b29sdGlwQmNDb2xvcn19O1xuICAgICAgICAgICAgY29sb3I6e3tidG4udG9vbHRpcENvbG9yfX07XG4gICAgICAgICAgICBmb250LXNpemU6e3tidG4udG9vbHRpcEZTaXplfX1cIj5cbiAgICAgICAgICAgIHt7IGJ0bi50b29sdGlwUGF0aCA/IChidG4udG9vbHRpcFBhdGggfCBueHRDdXN0b21UcmFuc2xhdGUgOiBidG4udG9vbHRpcCkgOiAoYnRuLnRvb2x0aXAgfCBueHRDdXN0b21UcmFuc2xhdGUgOiBidG4udG9vbHRpcCkgfX1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29sdGlwLXBvaW50ZXJcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6e3tidG4udG9vbHRpcEJjQ29sb3J9fTtcIj48L2Rpdj5cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuPC9kaXY+XG4gIFxuPCEtLSBTS1MyNEpBTjI1IHNpbmdsZSBidXR0b24gLS0+XG48YnV0dG9uIHR5cGU9XCJidXR0b25cIiAgKm5nSWY9XCJ0eXBlICE9PSAnZ3JvdXAnICYmIHR5cGUgIT09ICdkcm9wZG93bidcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBmYy1idXR0b24ge3tidXR0b25UeXBlfX1cIiBbdGFiaW5kZXhdPVwidGFiSW5kZXhcIlxuICAgIFthdHRyLmRhdGEtYnMtdG9nZ2xlXT1cIm1vZGFsVG9UcmlnZ2VyICE9ICcnID8gJ21vZGFsJyA6ICcnXCJcbiAgICBbYXR0ci5kYXRhLWJzLXRhcmdldF09XCJtb2RhbFRvVHJpZ2dlciAhPSAnJyA/ICcjJyttb2RhbFRvVHJpZ2dlciA6ICcnXCJcbiAgICBzdHlsZT1cImJ1dHRvbi1jdXN0b20tYmc6IHt7YnRuQmdDb2xvcn19O2J1dHRvbi1jdXN0b20tYm9yZGVyOiB7e2J0bkJvcmRlcn19O2J1dHRvbi1jdXN0b20tY29sb3I6IHt7YnRuVGV4dENvbG9yfX07YnV0dG9uLWN1c3RvbS1oZWlnaHQ6IHt7YnRuSGVpZ2h0fX07YnV0dG9uLWN1c3RvbS13aWR0aDoge3tidG5XaWR0aH19O2J1dHRvbi1ob3Zlci1iZzoge3tidG5Ib3ZlckJnQ29sb3J9fTtidXR0b24taG92ZXItdGV4dC1jb2xvcjoge3tidG5Ib3ZlclRleHRDb2xvcn19O1wiXG4gICAgW2Rpc2FibGVkXT1cImJ1dHRvbkRpc2FibGVcIiBbYXR0ci5kYXRhLWJzLWRpc21pc3NdPSdkYXRhRGlzbWlzcycgKGNsaWNrKT1cImJ1dHRvbkNsaWNrZWQoJGV2ZW50KVwiXG4gICAgW2F0dHIuaWRdPVwiYnRuSWQgIT0gJ2RlZmF1bHQnID8gYnRuSWQgOiBudWxsXCI+XG4gICAgPGltZyAqbmdJZj1cImJ0bkljb25MZWZ0U3JjICE9ICcnICYmIGlzSW1hZ2VTdmdcIiBzcmM9XCJ7e2J0bkljb25MZWZ0U3JjfX1cIlxuICAgICAgICBjbGFzcz1cImZjLWJ0bi1pY29uIGxlZnQtaWNvblwiPlxuICAgIDxpbWcgKm5nSWY9XCJidG5JY29uTGVmdFNyYyAhPSAnJyAmJiAhaXNJbWFnZVN2Z1wiIHNyYz1cInt7YnRuSWNvbkxlZnRTcmN9fVwiIGNsYXNzPVwiZmMtYnRuLWljb24gbGVmdC1pY29uXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJmYy1idG4tdGV4dFwiPnt7YnV0dG9uVmFsdWV9fTwvc3Bhbj5cbiAgICA8aW1nICpuZ0lmPVwiYnRuSWNvblJpZ2h0U3JjICE9ICcnICYmIGlzSW1hZ2VTdmdcIiBzcmM9XCJ7e2J0bkljb25SaWdodFNyY319XCJcbiAgICAgICAgY2xhc3M9XCJmYy1idG4taWNvbiByaWdodC1pY29uXCI+XG4gICAgPGltZyAqbmdJZj1cImJ0bkljb25SaWdodFNyYyAhPSAnJyAmJiAhaXNJbWFnZVN2Z1wiIHNyYz1cInt7YnRuSWNvblJpZ2h0U3JjfX1cIiBjbGFzcz1cImZjLWJ0bi1pY29uIHJpZ2h0LWljb25cIj5cbjwvYnV0dG9uPlxuXG48IS0tIFNLUzI0SkFOMjUgZHJvcGRvd24gYnV0dG9uIC0tPlxuPGRpdiAqbmdJZj1cInR5cGUgPT09ICdkcm9wZG93bidcIiBjbGFzcz1cImRyb3Bkb3duXCI+XG4gICAgPHN2ZyBjbGFzcz1cImNsaWNrYWJsZS1pbWdcIiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKVwiICB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiB2aWV3Qm94PVwiMCAwIDQwIDQwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgIDxyZWN0IHg9XCIwLjNcIiB5PVwiMC4zXCIgd2lkdGg9XCIzOS40XCIgaGVpZ2h0PVwiMzkuNFwiIHJ4PVwiMTEuN1wiIGZpbGw9XCIjRkFGQkZEXCIgc3Ryb2tlPVwiI0Q1RDVENVwiIHN0cm9rZS13aWR0aD1cIjAuNlwiLz5cbiAgICAgICAgPHBhdGggZD1cIk0xOS45OTk5IDI1LjY2NjdDMjMuNjgxOCAyNS42NjY3IDI2LjY2NjYgMjIuNjgxOSAyNi42NjY2IDE5QzI2LjY2NjYgMTUuMzE4MSAyMy42ODE4IDEyLjMzMzQgMTkuOTk5OSAxMi4zMzM0QzE2LjMxOCAxMi4zMzM0IDEzLjMzMzMgMTUuMzE4MSAxMy4zMzMzIDE5QzEzLjMzMzMgMjIuNjgxOSAxNi4zMTggMjUuNjY2NyAxOS45OTk5IDI1LjY2NjdaXCIgZmlsbD1cIiMyOTJEMzJcIiBzdHJva2U9XCIjMjkyRDMyXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLW1pdGVybGltaXQ9XCIxMFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgPHBhdGggZD1cIk0xNy42NDY3IDE4LjE2TDIwLjAwMDEgMjAuNTA2N0wyMi4zNTM0IDE4LjE2XCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgPC9zdmc+ICBcbiAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiICAqbmdJZj1cImlzRHJvcGRvd25PcGVuXCI+XG4gICAgICAgIDxidXR0b24gKm5nRm9yPVwibGV0IGJ0biBvZiBidXR0b25Db25maWcuYnV0dG9uc1wiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1pY29uIHt7YnRuLmJ1dHRvblR5cGV9fSB0b29sdGlwLWNvbnRhaW5lclwiXG4gICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJidG4udGFiSW5kZXhcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1icy10b2dnbGVdPVwiYnRuLm1vZGFsVG9UcmlnZ2VyID8gJ21vZGFsJyA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1icy10YXJnZXRdPVwiYnRuLm1vZGFsVG9UcmlnZ2VyID8gJyMnICsgYnRuLm1vZGFsVG9UcmlnZ2VyIDogbnVsbFwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJidG4gfCBidXR0b25TdHlsZXNcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ0bi5idXR0b25EaXNhYmxlXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtYnMtZGlzbWlzc109XCJidG4uZGF0YURpc21pc3NcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImJ1dHRvbkNsaWNrZWQoYnRuKVwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJidG4uYnRuSWQgIT09ICdkZWZhdWx0JyA/IGJ0bi5idG5JZCA6IG51bGxcIj5cbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJidG4uaXNJbWFnZVN2Z1wiIFtzcmNdPVwiYnRuLmljb25TcmNcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmMtYnRuLXRleHRcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMTJweDtcIj57e2J0bi5uYW1lfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=