@bnsights/bbsf-controls 1.0.111 → 1.0.112

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 (149) hide show
  1. package/README.md +4 -0
  2. package/esm2022/lib/Shared/Components/app-base-component.mjs +7 -7
  3. package/esm2022/lib/Shared/Enums/StartView.mjs +1 -1
  4. package/esm2022/lib/Shared/Enums/map-enums.mjs +7 -7
  5. package/esm2022/lib/Shared/Models/AutocompleteOptions.mjs +9 -9
  6. package/esm2022/lib/Shared/Models/CalendarOptions.mjs +7 -7
  7. package/esm2022/lib/Shared/Models/CheckBoxOptions.mjs +3 -3
  8. package/esm2022/lib/Shared/Models/ConfirmationModalOptions.mjs +16 -16
  9. package/esm2022/lib/Shared/Models/ControlOptionsBase.mjs +5 -5
  10. package/esm2022/lib/Shared/Models/DatePickerOptions.mjs +24 -0
  11. package/esm2022/lib/Shared/Models/DropdownOptions.mjs +6 -6
  12. package/esm2022/lib/Shared/Models/EnglishArabicDTO.mjs +3 -3
  13. package/esm2022/lib/Shared/Models/FileUploadModel.mjs +1 -1
  14. package/esm2022/lib/Shared/Models/FileUploadOptions.mjs +3 -3
  15. package/esm2022/lib/Shared/Models/FormOptions.mjs +13 -13
  16. package/esm2022/lib/Shared/Models/HtmlEditorOptions.mjs +3 -3
  17. package/esm2022/lib/Shared/Models/ImageUploadOptions.mjs +4 -4
  18. package/esm2022/lib/Shared/Models/MapAutoCompleteOptions.mjs +1 -3
  19. package/esm2022/lib/Shared/Models/MapAutocompleteDTO.mjs +2 -2
  20. package/esm2022/lib/Shared/Models/MultiLingualHtmlEditorOptions.mjs +2 -2
  21. package/esm2022/lib/Shared/Models/MultiLingualTextAreaOptions.mjs +2 -2
  22. package/esm2022/lib/Shared/Models/{MultilingualTextBoxOptions.mjs → MultiLingualTextBoxOptions.mjs} +5 -5
  23. package/esm2022/lib/Shared/Models/MultilingualControlOptionsBase.mjs +6 -6
  24. package/esm2022/lib/Shared/Models/MultipleFileUploadModel.mjs +5 -5
  25. package/esm2022/lib/Shared/Models/PagingOptions.mjs +22 -22
  26. package/esm2022/lib/Shared/Models/PhoneOptions.mjs +4 -4
  27. package/esm2022/lib/Shared/Models/ProfileImageUploadOptions.mjs +3 -3
  28. package/esm2022/lib/Shared/Models/ProfilePictureDTO.mjs +1 -1
  29. package/esm2022/lib/Shared/Models/RadioButtonItem.mjs +1 -1
  30. package/esm2022/lib/Shared/Models/RadioButtonOptions.mjs +1 -1
  31. package/esm2022/lib/Shared/Models/RangeNumber.mjs +1 -1
  32. package/esm2022/lib/Shared/Models/Recaptcha.mjs +2 -2
  33. package/esm2022/lib/Shared/Models/RecaptchaOptions.mjs +9 -9
  34. package/esm2022/lib/Shared/Models/RepeaterField.mjs +1 -1
  35. package/esm2022/lib/Shared/Models/RepeaterOptions.mjs +9 -9
  36. package/esm2022/lib/Shared/Models/TagsInputDTO.mjs +1 -1
  37. package/esm2022/lib/Shared/Models/TagsInputOptions.mjs +19 -19
  38. package/esm2022/lib/Shared/Models/TextAreaOptions.mjs +1 -1
  39. package/esm2022/lib/Shared/Models/TextBoxOptions.mjs +9 -9
  40. package/esm2022/lib/Shared/Models/{ToggleslideOptions.mjs → ToggleSlideOptions.mjs} +2 -2
  41. package/esm2022/lib/Shared/Models/filter-options.mjs +5 -5
  42. package/esm2022/lib/Shared/Models/page-header-options.mjs +32 -32
  43. package/esm2022/lib/Shared/services/ControlUtility.mjs +37 -37
  44. package/esm2022/lib/Shared/services/GlobalSettings.service.mjs +9 -9
  45. package/esm2022/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +81 -81
  46. package/esm2022/lib/controls/Calendar/Calendar.component.mjs +40 -40
  47. package/esm2022/lib/controls/CheckBox/CheckBox.component.mjs +35 -35
  48. package/esm2022/lib/controls/ConfirmationModal/ConfirmationModal.component.mjs +30 -30
  49. package/esm2022/lib/controls/DateTimePicker/DateTimePicker.component.mjs +90 -97
  50. package/esm2022/lib/controls/DropdownList/DropdownList.component.mjs +74 -74
  51. package/esm2022/lib/controls/FileUplaod/FileUplaod.component.mjs +155 -155
  52. package/esm2022/lib/controls/Form/Form.component.mjs +24 -24
  53. package/esm2022/lib/controls/HtmlEditor/HtmlEditor.component.mjs +55 -55
  54. package/esm2022/lib/controls/ImageUpload/ImageUpload.component.mjs +113 -113
  55. package/esm2022/lib/controls/MapAutoComplete/MapAutoComplete.component.mjs +62 -66
  56. package/esm2022/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.mjs +163 -163
  57. package/esm2022/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.mjs +193 -193
  58. package/esm2022/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +210 -210
  59. package/esm2022/lib/controls/Paging/Paging.component.mjs +85 -85
  60. package/esm2022/lib/controls/Phone/Phone.component.mjs +42 -42
  61. package/esm2022/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +112 -112
  62. package/esm2022/lib/controls/RadioButton/RadioButton.component.mjs +38 -38
  63. package/esm2022/lib/controls/Recaptcha/Recaptcha.component.mjs +46 -46
  64. package/esm2022/lib/controls/Repeater/repeater/repeater.component.mjs +12 -12
  65. package/esm2022/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.mjs +556 -556
  66. package/esm2022/lib/controls/Repeater/repeater-table/repeater-table.component.mjs +15 -15
  67. package/esm2022/lib/controls/TagsInput/TagsInput.component.mjs +100 -100
  68. package/esm2022/lib/controls/TextArea/TextArea.component.mjs +71 -71
  69. package/esm2022/lib/controls/TextBox/TextBox.component.mjs +116 -116
  70. package/esm2022/lib/controls/Toggleslide/Toggleslide.component.mjs +90 -0
  71. package/esm2022/lib/controls/bbsf-controls.module.mjs +2 -2
  72. package/esm2022/lib/controls/page-header-component/page-header-component.component.mjs +4 -4
  73. package/esm2022/public-api.mjs +7 -7
  74. package/fesm2022/bnsights-bbsf-controls.mjs +2801 -2813
  75. package/fesm2022/bnsights-bbsf-controls.mjs.map +1 -1
  76. package/lib/Shared/Enums/map-enums.d.ts +1 -1
  77. package/lib/Shared/Models/AutocompleteOptions.d.ts +20 -20
  78. package/lib/Shared/Models/CalendarOptions.d.ts +10 -10
  79. package/lib/Shared/Models/CheckBoxOptions.d.ts +2 -2
  80. package/lib/Shared/Models/ConfirmationModalOptions.d.ts +14 -14
  81. package/lib/Shared/Models/ControlOptionsBase.d.ts +17 -17
  82. package/lib/Shared/Models/{datePickerOptions.d.ts → DatePickerOptions.d.ts} +12 -13
  83. package/lib/Shared/Models/DropdownOptions.d.ts +15 -15
  84. package/lib/Shared/Models/EnglishArabicDTO.d.ts +2 -2
  85. package/lib/Shared/Models/FileUploadModel.d.ts +1 -1
  86. package/lib/Shared/Models/FileUploadOptions.d.ts +8 -8
  87. package/lib/Shared/Models/FormOptions.d.ts +11 -11
  88. package/lib/Shared/Models/HtmlEditorOptions.d.ts +11 -11
  89. package/lib/Shared/Models/ImageUploadOptions.d.ts +9 -9
  90. package/lib/Shared/Models/MapAutoCompleteOptions.d.ts +1 -2
  91. package/lib/Shared/Models/MapAutocompleteDTO.d.ts +5 -5
  92. package/lib/Shared/Models/MultiLingualHtmlEditorOptions.d.ts +7 -7
  93. package/lib/Shared/Models/MultiLingualTextAreaOptions.d.ts +5 -5
  94. package/lib/Shared/Models/{MultilingualTextBoxOptions.d.ts → MultiLingualTextBoxOptions.d.ts} +6 -6
  95. package/lib/Shared/Models/MultilingualControlOptionsBase.d.ts +34 -34
  96. package/lib/Shared/Models/MultipleFileUploadModel.d.ts +4 -4
  97. package/lib/Shared/Models/PagingOptions.d.ts +25 -25
  98. package/lib/Shared/Models/PhoneOptions.d.ts +9 -9
  99. package/lib/Shared/Models/ProfileImageUploadOptions.d.ts +10 -10
  100. package/lib/Shared/Models/ProfilePictureDTO.d.ts +9 -9
  101. package/lib/Shared/Models/RadioButtonItem.d.ts +2 -2
  102. package/lib/Shared/Models/RadioButtonOptions.d.ts +2 -2
  103. package/lib/Shared/Models/RangeNumber.d.ts +2 -2
  104. package/lib/Shared/Models/Recaptcha.d.ts +4 -4
  105. package/lib/Shared/Models/RecaptchaOptions.d.ts +10 -10
  106. package/lib/Shared/Models/RepeaterField.d.ts +4 -4
  107. package/lib/Shared/Models/RepeaterOptions.d.ts +16 -16
  108. package/lib/Shared/Models/TagsInputDTO.d.ts +4 -4
  109. package/lib/Shared/Models/TagsInputOptions.d.ts +29 -29
  110. package/lib/Shared/Models/TextAreaOptions.d.ts +11 -11
  111. package/lib/Shared/Models/TextBoxOptions.d.ts +18 -18
  112. package/lib/Shared/Models/{ToggleslideOptions.d.ts → ToggleSlideOptions.d.ts} +3 -3
  113. package/lib/Shared/Models/filter-options.d.ts +4 -4
  114. package/lib/Shared/Models/page-header-options.d.ts +43 -43
  115. package/lib/Shared/services/ControlUtility.d.ts +8 -8
  116. package/lib/Shared/services/GlobalSettings.service.d.ts +8 -8
  117. package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +11 -11
  118. package/lib/controls/Calendar/Calendar.component.d.ts +7 -7
  119. package/lib/controls/CheckBox/CheckBox.component.d.ts +10 -10
  120. package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +20 -24
  121. package/lib/controls/DropdownList/DropdownList.component.d.ts +13 -13
  122. package/lib/controls/FileUplaod/FileUplaod.component.d.ts +11 -11
  123. package/lib/controls/Form/Form.component.d.ts +2 -2
  124. package/lib/controls/HtmlEditor/HtmlEditor.component.d.ts +12 -12
  125. package/lib/controls/ImageUpload/ImageUpload.component.d.ts +16 -16
  126. package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +6 -9
  127. package/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.d.ts +25 -25
  128. package/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.d.ts +24 -24
  129. package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +32 -32
  130. package/lib/controls/Paging/Paging.component.d.ts +9 -9
  131. package/lib/controls/Phone/Phone.component.d.ts +12 -12
  132. package/lib/controls/ProfileImageUploader/ProfileImageUploader.component.d.ts +18 -18
  133. package/lib/controls/RadioButton/RadioButton.component.d.ts +11 -11
  134. package/lib/controls/Recaptcha/Recaptcha.component.d.ts +10 -10
  135. package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +5 -5
  136. package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +1 -1
  137. package/lib/controls/TagsInput/TagsInput.component.d.ts +17 -17
  138. package/lib/controls/TextArea/TextArea.component.d.ts +14 -14
  139. package/lib/controls/TextBox/TextBox.component.d.ts +25 -25
  140. package/lib/controls/Toggleslide/{toggleslide.component.d.ts → Toggleslide.component.d.ts} +10 -10
  141. package/lib/controls/bbsf-controls.module.d.ts +1 -1
  142. package/package.json +3 -2
  143. package/public-api.d.ts +4 -4
  144. package/src/lib/assets/images/marker-pin.svg +4 -4
  145. package/esm2022/bnsights-test-test-controls.mjs +0 -5
  146. package/esm2022/lib/Shared/Models/datePickerOptions.mjs +0 -23
  147. package/esm2022/lib/controls/Toggleslide/toggleslide.component.mjs +0 -90
  148. package/fesm2022/bnsights-test-test-controls.mjs +0 -9164
  149. package/fesm2022/bnsights-test-test-controls.mjs.map +0 -1
@@ -15,15 +15,15 @@ export class RepeaterComponent {
15
15
  ngOnInit() {
16
16
  this.currentTemplate = this.initialTemplate;
17
17
  this.repeaterGroup = new FormGroup({});
18
- this.group.addControl(this.options.Name, this.repeaterGroup);
19
- if (this.options.RepeaterValue.length > 0) {
20
- this.originalItems = this.options.RepeaterValue;
21
- for (let index = 0; index < this.options.RepeaterValue.length; index++) {
18
+ this.group.addControl(this.options.name, this.repeaterGroup);
19
+ if (this.options.repeaterValue.length > 0) {
20
+ this.originalItems = this.options.repeaterValue;
21
+ for (let index = 0; index < this.options.repeaterValue.length; index++) {
22
22
  this.items.push(index + 1);
23
23
  }
24
24
  }
25
25
  else
26
- for (let index = 0; index < this.options.MinRequiredItems; index++) {
26
+ for (let index = 0; index < this.options.minRequiredItems; index++) {
27
27
  this.items.push(index);
28
28
  }
29
29
  this.repeaterGroup.valueChanges.subscribe((res) => {
@@ -34,7 +34,7 @@ export class RepeaterComponent {
34
34
  if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {
35
35
  const keySplitArr = key.split('.');
36
36
  let item = {
37
- [keySplitArr[1]]: { [keySplitArr[0]]: this.group.controls[this.options.Name].value[key] }
37
+ [keySplitArr[1]]: { [keySplitArr[0]]: this.group.controls[this.options.name].value[key] }
38
38
  };
39
39
  addItems.push(item);
40
40
  if (!rowNumber.includes(keySplitArr[1]))
@@ -61,14 +61,14 @@ export class RepeaterComponent {
61
61
  }
62
62
  result.push(addObject);
63
63
  }
64
- this.options.RepeaterValue = result;
64
+ this.options.repeaterValue = result;
65
65
  });
66
66
  }
67
67
  deleteItem(Index) {
68
- if (this.items.length == this.options.MinRequiredItems && this.options.IsRequired)
68
+ if (this.items.length == this.options.minRequiredItems && this.options.isRequired)
69
69
  return;
70
70
  let deletedControls = [];
71
- let controlNames = this.options.RepeaterStructure.map(e => e.ControlOptions.Name);
71
+ let controlNames = this.options.repeaterStructure.map(e => e.controlOptions.Name);
72
72
  for (const key in this.repeaterGroup.controls) {
73
73
  if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {
74
74
  for (let index = 0; index < controlNames.length; index++) {
@@ -104,11 +104,11 @@ export class RepeaterComponent {
104
104
  this.repeaterContext.index = i;
105
105
  }
106
106
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: RepeaterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
107
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: RepeaterComponent, selector: "BBSF-repeater", inputs: { group: "group", options: "options", initialTemplate: "initialTemplate" }, viewQueries: [{ propertyName: "delete", first: true, predicate: ["delete"], descendants: true }, { propertyName: "_templates", predicate: NgTemplateNameDirective, descendants: true }], ngImport: i0, template: "<ng-container *ngFor='let item of items ; index as i'>\r\n {{setCurrentIndex(i)}}\r\n <ng-container *ngTemplateOutlet=\"currentTemplate; context: repeaterContext\">\r\n </ng-container>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngTemplateOutlet=\"add\" >\r\n</ng-container>\r\n\r\n<ng-template *ngFor=\"let RepeaterField of options.RepeaterStructure ; index as i\" name=\"R{{i}}\" let-Index=\"itemIndex\"\r\n let-control=\"controlIndex\">\r\n <repeater-field-builder *ngIf=\"RepeaterField\" [RepeaterField]=\"RepeaterField\" [itemNumber]=\"Index\"\r\n [itemsValue]=\"originalItems\" [controlNumber]=\"control\" [group]=\"repeaterGroup\">\r\n </repeater-field-builder>\r\n</ng-template>\r\n\r\n<ng-template #delete let-item=\"itemIndex\">\r\n <button *ngIf=\"!options.IsReadonly\" class=\"{{options.DeleteButtonExtraClasses}}\" type=\"button\" (click)=\"deleteItem(item)\"\r\n [disabled]=\"items.length ==options.MinRequiredItems&&options.IsRequired\">\r\n <span [innerHTML]=\"options.DeleteButtonText\"></span>\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #add >\r\n <button *ngIf=\"!options.IsReadonly\" class=\"{{options.AddButtonExtraClasses}}\" type=\"button\" (click)=\"addItem()\">\r\n <span [innerHTML]=\"options.AddButtonText\"></span>\r\n </button>\r\n</ng-template>\r\n\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.RepeaterFieldBuilderComponent, selector: "repeater-field-builder", inputs: ["group", "itemNumber", "controlNumber", "RepeaterField", "itemsValue"] }, { kind: "directive", type: i3.NgTemplateNameDirective, selector: "ng-template[name]", inputs: ["name"] }] }); }
107
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: RepeaterComponent, selector: "BBSF-repeater", inputs: { group: "group", options: "options", initialTemplate: "initialTemplate" }, viewQueries: [{ propertyName: "delete", first: true, predicate: ["delete"], descendants: true }, { propertyName: "_templates", predicate: NgTemplateNameDirective, descendants: true }], ngImport: i0, template: "<ng-container *ngFor='let item of items ; index as i'>\r\n {{setCurrentIndex(i)}}\r\n <ng-container *ngTemplateOutlet=\"currentTemplate; context: repeaterContext\">\r\n </ng-container>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngTemplateOutlet=\"add\">\r\n</ng-container>\r\n\r\n<ng-template *ngFor=\"let repeaterField of options.repeaterStructure ; index as i\" name=\"R{{i}}\" let-Index=\"itemIndex\"\r\n let-control=\"controlIndex\">\r\n <repeater-field-builder *ngIf=\"repeaterField\" [repeaterField]=\"repeaterField\" [itemNumber]=\"Index\"\r\n [itemsValue]=\"originalItems\" [controlNumber]=\"control\" [group]=\"repeaterGroup\">\r\n </repeater-field-builder>\r\n</ng-template>\r\n\r\n<ng-template #delete let-item=\"itemIndex\">\r\n <button *ngIf=\"!options.isReadonly\" class=\"{{options.deleteButtonExtraClasses}}\" type=\"button\"\r\n (click)=\"deleteItem(item)\" [disabled]=\"items.length ==options.minRequiredItems&&options.isRequired\">\r\n <span [innerHTML]=\"options.deleteButtonText\"></span>\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #add>\r\n <button *ngIf=\"!options.isReadonly\" class=\"{{options.addButtonExtraClasses}}\" type=\"button\" (click)=\"addItem()\">\r\n <span [innerHTML]=\"options.addButtonText\"></span>\r\n </button>\r\n</ng-template>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.RepeaterFieldBuilderComponent, selector: "repeater-field-builder", inputs: ["group", "itemNumber", "controlNumber", "repeaterField", "itemsValue"] }, { kind: "directive", type: i3.NgTemplateNameDirective, selector: "ng-template[name]", inputs: ["name"] }] }); }
108
108
  }
109
109
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: RepeaterComponent, decorators: [{
110
110
  type: Component,
111
- args: [{ selector: 'BBSF-repeater', template: "<ng-container *ngFor='let item of items ; index as i'>\r\n {{setCurrentIndex(i)}}\r\n <ng-container *ngTemplateOutlet=\"currentTemplate; context: repeaterContext\">\r\n </ng-container>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngTemplateOutlet=\"add\" >\r\n</ng-container>\r\n\r\n<ng-template *ngFor=\"let RepeaterField of options.RepeaterStructure ; index as i\" name=\"R{{i}}\" let-Index=\"itemIndex\"\r\n let-control=\"controlIndex\">\r\n <repeater-field-builder *ngIf=\"RepeaterField\" [RepeaterField]=\"RepeaterField\" [itemNumber]=\"Index\"\r\n [itemsValue]=\"originalItems\" [controlNumber]=\"control\" [group]=\"repeaterGroup\">\r\n </repeater-field-builder>\r\n</ng-template>\r\n\r\n<ng-template #delete let-item=\"itemIndex\">\r\n <button *ngIf=\"!options.IsReadonly\" class=\"{{options.DeleteButtonExtraClasses}}\" type=\"button\" (click)=\"deleteItem(item)\"\r\n [disabled]=\"items.length ==options.MinRequiredItems&&options.IsRequired\">\r\n <span [innerHTML]=\"options.DeleteButtonText\"></span>\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #add >\r\n <button *ngIf=\"!options.IsReadonly\" class=\"{{options.AddButtonExtraClasses}}\" type=\"button\" (click)=\"addItem()\">\r\n <span [innerHTML]=\"options.AddButtonText\"></span>\r\n </button>\r\n</ng-template>\r\n\r\n" }]
111
+ args: [{ selector: 'BBSF-repeater', template: "<ng-container *ngFor='let item of items ; index as i'>\r\n {{setCurrentIndex(i)}}\r\n <ng-container *ngTemplateOutlet=\"currentTemplate; context: repeaterContext\">\r\n </ng-container>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngTemplateOutlet=\"add\">\r\n</ng-container>\r\n\r\n<ng-template *ngFor=\"let repeaterField of options.repeaterStructure ; index as i\" name=\"R{{i}}\" let-Index=\"itemIndex\"\r\n let-control=\"controlIndex\">\r\n <repeater-field-builder *ngIf=\"repeaterField\" [repeaterField]=\"repeaterField\" [itemNumber]=\"Index\"\r\n [itemsValue]=\"originalItems\" [controlNumber]=\"control\" [group]=\"repeaterGroup\">\r\n </repeater-field-builder>\r\n</ng-template>\r\n\r\n<ng-template #delete let-item=\"itemIndex\">\r\n <button *ngIf=\"!options.isReadonly\" class=\"{{options.deleteButtonExtraClasses}}\" type=\"button\"\r\n (click)=\"deleteItem(item)\" [disabled]=\"items.length ==options.minRequiredItems&&options.isRequired\">\r\n <span [innerHTML]=\"options.deleteButtonText\"></span>\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #add>\r\n <button *ngIf=\"!options.isReadonly\" class=\"{{options.addButtonExtraClasses}}\" type=\"button\" (click)=\"addItem()\">\r\n <span [innerHTML]=\"options.addButtonText\"></span>\r\n </button>\r\n</ng-template>" }]
112
112
  }], ctorParameters: () => [], propDecorators: { group: [{
113
113
  type: Input
114
114
  }], options: [{
@@ -122,4 +122,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImpor
122
122
  type: ViewChild,
123
123
  args: ['delete', { static: false }]
124
124
  }] } });
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL1JlcGVhdGVyL3JlcGVhdGVyL3JlcGVhdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9SZXBlYXRlci9yZXBlYXRlci9yZXBlYXRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBa0MsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7O0FBTzdGLE1BQU0sT0FBTyxpQkFBaUI7SUFhNUI7UUFQQSxpQkFBWSxHQUE0QixFQUFFLENBQUM7UUFDM0MsVUFBSyxHQUFhLEVBQUUsQ0FBQTtRQUNwQixrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUcxQixvQkFBZSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUU3QyxDQUFDO0lBRWpCLFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0QsSUFBSSxJQUFJLENBQUMsT0FB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Q0FBQTtRQUN6RixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQTtRQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFBO1FBQ2pELElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUE7SUFFM0MsQ0FBQztJQUVELGVBQWUsQ0FBQyxDQUFTO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDOzhHQWpIVSxpQkFBaUI7a0dBQWpCLGlCQUFpQiwyUEFJZCx1QkFBdUIsZ0RDZHZDLDQwQ0E4QkE7OzJGRHBCYSxpQkFBaUI7a0JBSjdCLFNBQVM7K0JBQ0UsZUFBZTt3REFJaEIsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUN5QyxVQUFVO3NCQUF4RCxZQUFZO3VCQUFDLHVCQUF1QjtnQkFDRyxNQUFNO3NCQUE3QyxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUmVwZWF0ZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9SZXBlYXRlck9wdGlvbnMnO1xyXG5pbXBvcnQgeyBOZ1RlbXBsYXRlTmFtZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9EaXJlY3RpdmVzL3RlbXBsYXRlLW5hbWUuZGlyZWN0aXZlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ0JCU0YtcmVwZWF0ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXBlYXRlci5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlcGVhdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IFJlcGVhdGVyT3B0aW9ucztcclxuICBASW5wdXQoKSBpbml0aWFsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZHJlbihOZ1RlbXBsYXRlTmFtZURpcmVjdGl2ZSkgcHJpdmF0ZSBfdGVtcGxhdGVzOiBRdWVyeUxpc3Q8TmdUZW1wbGF0ZU5hbWVEaXJlY3RpdmU+O1xyXG4gIEBWaWV3Q2hpbGQoJ2RlbGV0ZScsIHsgc3RhdGljOiBmYWxzZSB9KSBkZWxldGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgdGVtcGxhdGVSZWZzOiBBcnJheTxUZW1wbGF0ZVJlZjxhbnk+PiA9IFtdO1xyXG4gIGl0ZW1zOiBudW1iZXJbXSA9IFtdXHJcbiAgb3JpZ2luYWxJdGVtczogYW55W10gPSBbXTtcclxuICByZXBlYXRlckdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgY3VycmVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIHJlcGVhdGVyQ29udGV4dCA9IHsgaW5kZXg6IDAsIGRlbGV0ZTogbnVsbCwgZWxlbWVudHM6IG51bGwgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRUZW1wbGF0ZSA9IHRoaXMuaW5pdGlhbFRlbXBsYXRlO1xyXG4gICAgdGhpcy5yZXBlYXRlckdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICB0aGlzLmdyb3VwLmFkZENvbnRyb2wodGhpcy5vcHRpb25zLk5hbWUsIHRoaXMucmVwZWF0ZXJHcm91cCk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLlJlcGVhdGVyVmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLm9yaWdpbmFsSXRlbXMgPSB0aGlzLm9wdGlvbnMuUmVwZWF0ZXJWYWx1ZTtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9ucy5SZXBlYXRlclZhbHVlLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIHRoaXMuaXRlbXMucHVzaChpbmRleCArIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMuTWluUmVxdWlyZWRJdGVtczsgaW5kZXgrKykge1xyXG4gICAgICAgIHRoaXMuaXRlbXMucHVzaChpbmRleCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB0aGlzLnJlcGVhdGVyR3JvdXAudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHQgPSBbXTtcclxuICAgICAgbGV0IHJvd051bWJlciA9IFtdO1xyXG4gICAgICBsZXQgYWRkSXRlbXMgPSBbXTtcclxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5yZXBlYXRlckdyb3VwLmNvbnRyb2xzKSB7XHJcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnJlcGVhdGVyR3JvdXAuY29udHJvbHMsIGtleSkpIHtcclxuICAgICAgICAgIGNvbnN0IGtleVNwbGl0QXJyID0ga2V5LnNwbGl0KCcuJylcclxuICAgICAgICAgIGxldCBpdGVtID0ge1xyXG4gICAgICAgICAgICBba2V5U3BsaXRBcnJbMV1dOiB7IFtrZXlTcGxpdEFyclswXV06IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5vcHRpb25zLk5hbWVdLnZhbHVlW2tleV0gfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYWRkSXRlbXMucHVzaChpdGVtKVxyXG4gICAgICAgICAgaWYgKCFyb3dOdW1iZXIuaW5jbHVkZXMoa2V5U3BsaXRBcnJbMV0pKVxyXG4gICAgICAgICAgICByb3dOdW1iZXIucHVzaChrZXlTcGxpdEFyclsxXSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHJvd051bWJlci5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCByb3cgPSByb3dOdW1iZXJbaW5kZXhdO1xyXG4gICAgICAgIGxldCBhZGRPYmplY3QgPSB7fVxyXG4gICAgICAgIGxldCBmaWx0ZXJlZEVsZW1lbnRzID0gYWRkSXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbVtyb3ddKVxyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmaWx0ZXJlZEVsZW1lbnRzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgY29uc3QgZmlsdGVyZWRFbGVtZW50ID0gZmlsdGVyZWRFbGVtZW50c1tpbmRleF07XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBmaWx0ZXJlZEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmaWx0ZXJlZEVsZW1lbnQsIGtleSkpIHtcclxuICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZmlsdGVyZWRFbGVtZW50W2tleV07XHJcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlbGVtZW50LCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZWxlbWVudFtrZXldO1xyXG4gICAgICAgICAgICAgICAgICBhZGRPYmplY3Rba2V5XSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlc3VsdC5wdXNoKGFkZE9iamVjdClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9wdGlvbnMuUmVwZWF0ZXJWYWx1ZSA9IHJlc3VsdDtcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgZGVsZXRlSXRlbShJbmRleCkge1xyXG4gICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoID09IHRoaXMub3B0aW9ucy5NaW5SZXF1aXJlZEl0ZW1zICYmIHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBsZXQgZGVsZXRlZENvbnRyb2xzOiBhbnlbXSA9IFtdXHJcbiAgICBsZXQgY29udHJvbE5hbWVzID0gdGhpcy5vcHRpb25zLlJlcGVhdGVyU3RydWN0dXJlLm1hcChlID0+IGUuQ29udHJvbE9wdGlvbnMuTmFtZSlcclxuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMucmVwZWF0ZXJHcm91cC5jb250cm9scykge1xyXG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMucmVwZWF0ZXJHcm91cC5jb250cm9scywga2V5KSkge1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjb250cm9sTmFtZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgICBjb25zdCBlbGVtZW50ID0gY29udHJvbE5hbWVzW2luZGV4XTtcclxuICAgICAgICAgIGNvbnN0IGtleVNwbGl0QXJyID0ga2V5LnNwbGl0KCcuJylcclxuICAgICAgICAgIGlmIChrZXlTcGxpdEFyclswXSArIGtleVNwbGl0QXJyWzFdID09IGAke2VsZW1lbnR9JHtJbmRleH1gKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnJlcGVhdGVyR3JvdXAuY29udHJvbHNba2V5XTtcclxuICAgICAgICAgICAgZGVsZXRlZENvbnRyb2xzLnB1c2goeyBba2V5XTogZWxlbWVudCB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGRlbGV0ZWRDb250cm9scy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgY29uc3QgZWxlbWVudCA9IGRlbGV0ZWRDb250cm9sc1tpbmRleF07XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGVsZW1lbnQpIHtcclxuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGVsZW1lbnQsIGtleSkpIHtcclxuICAgICAgICAgIHRoaXMucmVwZWF0ZXJHcm91cC5yZW1vdmVDb250cm9sKGtleSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuaXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcigocmVzKSA9PiByZXMgIT0gdGhpcy5pdGVtc1tJbmRleF0pXHJcbiAgfVxyXG5cclxuXHJcbiAgYWRkSXRlbSgpIHtcclxuICAgIHRoaXMuaXRlbXMucHVzaCh0aGlzLml0ZW1zLmxlbmd0aCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBsZXQgdGVtcGxhdGVSZWZzID0gKHRoaXMuX3RlbXBsYXRlc1tcIl9yZXN1bHRzXCJdIGFzIGFueVtdKS5tYXAoKGl0ZW0pID0+IGl0ZW1bXCJ0ZW1wbGF0ZVwiXSlcclxuICAgIHRoaXMudGVtcGxhdGVSZWZzID0gdGVtcGxhdGVSZWZzXHJcbiAgICB0aGlzLnJlcGVhdGVyQ29udGV4dC5lbGVtZW50cyA9IHRoaXMudGVtcGxhdGVSZWZzXHJcbiAgICB0aGlzLnJlcGVhdGVyQ29udGV4dC5kZWxldGUgPSB0aGlzLmRlbGV0ZVxyXG5cclxuICB9XHJcblxyXG4gIHNldEN1cnJlbnRJbmRleChpOiBudW1iZXIpIHtcclxuICAgIHRoaXMucmVwZWF0ZXJDb250ZXh0LmluZGV4ID0gaTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nRm9yPSdsZXQgaXRlbSBvZiBpdGVtcyA7IGluZGV4IGFzIGknPlxyXG4gIHt7c2V0Q3VycmVudEluZGV4KGkpfX1cclxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VycmVudFRlbXBsYXRlOyBjb250ZXh0OiByZXBlYXRlckNvbnRleHRcIj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFkZFwiICA+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLXRlbXBsYXRlICpuZ0Zvcj1cImxldCBSZXBlYXRlckZpZWxkIG9mIG9wdGlvbnMuUmVwZWF0ZXJTdHJ1Y3R1cmUgOyBpbmRleCBhcyBpXCIgbmFtZT1cIlJ7e2l9fVwiIGxldC1JbmRleD1cIml0ZW1JbmRleFwiXHJcbiAgICAgICAgICAgICBsZXQtY29udHJvbD1cImNvbnRyb2xJbmRleFwiPlxyXG4gIDxyZXBlYXRlci1maWVsZC1idWlsZGVyICpuZ0lmPVwiUmVwZWF0ZXJGaWVsZFwiIFtSZXBlYXRlckZpZWxkXT1cIlJlcGVhdGVyRmllbGRcIiBbaXRlbU51bWJlcl09XCJJbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zVmFsdWVdPVwib3JpZ2luYWxJdGVtc1wiIFtjb250cm9sTnVtYmVyXT1cImNvbnRyb2xcIiBbZ3JvdXBdPVwicmVwZWF0ZXJHcm91cFwiPlxyXG4gIDwvcmVwZWF0ZXItZmllbGQtYnVpbGRlcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGVsZXRlIGxldC1pdGVtPVwiaXRlbUluZGV4XCI+XHJcbiAgPGJ1dHRvbiAqbmdJZj1cIiFvcHRpb25zLklzUmVhZG9ubHlcIiBjbGFzcz1cInt7b3B0aW9ucy5EZWxldGVCdXR0b25FeHRyYUNsYXNzZXN9fVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZGVsZXRlSXRlbShpdGVtKVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbXMubGVuZ3RoID09b3B0aW9ucy5NaW5SZXF1aXJlZEl0ZW1zJiZvcHRpb25zLklzUmVxdWlyZWRcIj5cclxuICAgIDxzcGFuIFtpbm5lckhUTUxdPVwib3B0aW9ucy5EZWxldGVCdXR0b25UZXh0XCI+PC9zcGFuPlxyXG4gIDwvYnV0dG9uPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNhZGQgPlxyXG4gIDxidXR0b24gKm5nSWY9XCIhb3B0aW9ucy5Jc1JlYWRvbmx5XCIgY2xhc3M9XCJ7e29wdGlvbnMuQWRkQnV0dG9uRXh0cmFDbGFzc2VzfX1cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFkZEl0ZW0oKVwiPlxyXG4gICAgPHNwYW4gW2lubmVySFRNTF09XCJvcHRpb25zLkFkZEJ1dHRvblRleHRcIj48L3NwYW4+XHJcbiAgPC9idXR0b24+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG4iXX0=
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL1JlcGVhdGVyL3JlcGVhdGVyL3JlcGVhdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9SZXBlYXRlci9yZXBlYXRlci9yZXBlYXRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBa0MsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7O0FBTzdGLE1BQU0sT0FBTyxpQkFBaUI7SUFhNUI7UUFQQSxpQkFBWSxHQUE0QixFQUFFLENBQUM7UUFDM0MsVUFBSyxHQUFhLEVBQUUsQ0FBQTtRQUNwQixrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUcxQixvQkFBZSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUU3QyxDQUFDO0lBRWpCLFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0QsSUFBSSxJQUFJLENBQUMsT0FB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Q0FBQTtRQUN6RixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQTtRQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFBO1FBQ2pELElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUE7SUFFM0MsQ0FBQztJQUVELGVBQWUsQ0FBQyxDQUFTO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDOzhHQWpIVSxpQkFBaUI7a0dBQWpCLGlCQUFpQiwyUEFJZCx1QkFBdUIsZ0RDZHZDLDB4Q0E0QmM7OzJGRGxCRCxpQkFBaUI7a0JBSjdCLFNBQVM7K0JBQ0UsZUFBZTt3REFJaEIsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUN5QyxVQUFVO3NCQUF4RCxZQUFZO3VCQUFDLHVCQUF1QjtnQkFDRyxNQUFNO3NCQUE3QyxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUmVwZWF0ZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9SZXBlYXRlck9wdGlvbnMnO1xyXG5pbXBvcnQgeyBOZ1RlbXBsYXRlTmFtZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9EaXJlY3RpdmVzL3RlbXBsYXRlLW5hbWUuZGlyZWN0aXZlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ0JCU0YtcmVwZWF0ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXBlYXRlci5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlcGVhdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IFJlcGVhdGVyT3B0aW9ucztcclxuICBASW5wdXQoKSBpbml0aWFsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZHJlbihOZ1RlbXBsYXRlTmFtZURpcmVjdGl2ZSkgcHJpdmF0ZSBfdGVtcGxhdGVzOiBRdWVyeUxpc3Q8TmdUZW1wbGF0ZU5hbWVEaXJlY3RpdmU+O1xyXG4gIEBWaWV3Q2hpbGQoJ2RlbGV0ZScsIHsgc3RhdGljOiBmYWxzZSB9KSBkZWxldGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgdGVtcGxhdGVSZWZzOiBBcnJheTxUZW1wbGF0ZVJlZjxhbnk+PiA9IFtdO1xyXG4gIGl0ZW1zOiBudW1iZXJbXSA9IFtdXHJcbiAgb3JpZ2luYWxJdGVtczogYW55W10gPSBbXTtcclxuICByZXBlYXRlckdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgY3VycmVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIHJlcGVhdGVyQ29udGV4dCA9IHsgaW5kZXg6IDAsIGRlbGV0ZTogbnVsbCwgZWxlbWVudHM6IG51bGwgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRUZW1wbGF0ZSA9IHRoaXMuaW5pdGlhbFRlbXBsYXRlO1xyXG4gICAgdGhpcy5yZXBlYXRlckdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICB0aGlzLmdyb3VwLmFkZENvbnRyb2wodGhpcy5vcHRpb25zLm5hbWUsIHRoaXMucmVwZWF0ZXJHcm91cCk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLnJlcGVhdGVyVmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLm9yaWdpbmFsSXRlbXMgPSB0aGlzLm9wdGlvbnMucmVwZWF0ZXJWYWx1ZTtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9ucy5yZXBlYXRlclZhbHVlLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIHRoaXMuaXRlbXMucHVzaChpbmRleCArIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMubWluUmVxdWlyZWRJdGVtczsgaW5kZXgrKykge1xyXG4gICAgICAgIHRoaXMuaXRlbXMucHVzaChpbmRleCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB0aGlzLnJlcGVhdGVyR3JvdXAudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHQgPSBbXTtcclxuICAgICAgbGV0IHJvd051bWJlciA9IFtdO1xyXG4gICAgICBsZXQgYWRkSXRlbXMgPSBbXTtcclxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5yZXBlYXRlckdyb3VwLmNvbnRyb2xzKSB7XHJcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnJlcGVhdGVyR3JvdXAuY29udHJvbHMsIGtleSkpIHtcclxuICAgICAgICAgIGNvbnN0IGtleVNwbGl0QXJyID0ga2V5LnNwbGl0KCcuJylcclxuICAgICAgICAgIGxldCBpdGVtID0ge1xyXG4gICAgICAgICAgICBba2V5U3BsaXRBcnJbMV1dOiB7IFtrZXlTcGxpdEFyclswXV06IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5vcHRpb25zLm5hbWVdLnZhbHVlW2tleV0gfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYWRkSXRlbXMucHVzaChpdGVtKVxyXG4gICAgICAgICAgaWYgKCFyb3dOdW1iZXIuaW5jbHVkZXMoa2V5U3BsaXRBcnJbMV0pKVxyXG4gICAgICAgICAgICByb3dOdW1iZXIucHVzaChrZXlTcGxpdEFyclsxXSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHJvd051bWJlci5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCByb3cgPSByb3dOdW1iZXJbaW5kZXhdO1xyXG4gICAgICAgIGxldCBhZGRPYmplY3QgPSB7fVxyXG4gICAgICAgIGxldCBmaWx0ZXJlZEVsZW1lbnRzID0gYWRkSXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbVtyb3ddKVxyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmaWx0ZXJlZEVsZW1lbnRzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgY29uc3QgZmlsdGVyZWRFbGVtZW50ID0gZmlsdGVyZWRFbGVtZW50c1tpbmRleF07XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBmaWx0ZXJlZEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmaWx0ZXJlZEVsZW1lbnQsIGtleSkpIHtcclxuICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZmlsdGVyZWRFbGVtZW50W2tleV07XHJcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlbGVtZW50LCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZWxlbWVudFtrZXldO1xyXG4gICAgICAgICAgICAgICAgICBhZGRPYmplY3Rba2V5XSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlc3VsdC5wdXNoKGFkZE9iamVjdClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9wdGlvbnMucmVwZWF0ZXJWYWx1ZSA9IHJlc3VsdDtcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgZGVsZXRlSXRlbShJbmRleCkge1xyXG4gICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoID09IHRoaXMub3B0aW9ucy5taW5SZXF1aXJlZEl0ZW1zICYmIHRoaXMub3B0aW9ucy5pc1JlcXVpcmVkKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBsZXQgZGVsZXRlZENvbnRyb2xzOiBhbnlbXSA9IFtdXHJcbiAgICBsZXQgY29udHJvbE5hbWVzID0gdGhpcy5vcHRpb25zLnJlcGVhdGVyU3RydWN0dXJlLm1hcChlID0+IGUuY29udHJvbE9wdGlvbnMuTmFtZSlcclxuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMucmVwZWF0ZXJHcm91cC5jb250cm9scykge1xyXG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMucmVwZWF0ZXJHcm91cC5jb250cm9scywga2V5KSkge1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjb250cm9sTmFtZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgICBjb25zdCBlbGVtZW50ID0gY29udHJvbE5hbWVzW2luZGV4XTtcclxuICAgICAgICAgIGNvbnN0IGtleVNwbGl0QXJyID0ga2V5LnNwbGl0KCcuJylcclxuICAgICAgICAgIGlmIChrZXlTcGxpdEFyclswXSArIGtleVNwbGl0QXJyWzFdID09IGAke2VsZW1lbnR9JHtJbmRleH1gKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnJlcGVhdGVyR3JvdXAuY29udHJvbHNba2V5XTtcclxuICAgICAgICAgICAgZGVsZXRlZENvbnRyb2xzLnB1c2goeyBba2V5XTogZWxlbWVudCB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGRlbGV0ZWRDb250cm9scy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgY29uc3QgZWxlbWVudCA9IGRlbGV0ZWRDb250cm9sc1tpbmRleF07XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGVsZW1lbnQpIHtcclxuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGVsZW1lbnQsIGtleSkpIHtcclxuICAgICAgICAgIHRoaXMucmVwZWF0ZXJHcm91cC5yZW1vdmVDb250cm9sKGtleSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuaXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcigocmVzKSA9PiByZXMgIT0gdGhpcy5pdGVtc1tJbmRleF0pXHJcbiAgfVxyXG5cclxuXHJcbiAgYWRkSXRlbSgpIHtcclxuICAgIHRoaXMuaXRlbXMucHVzaCh0aGlzLml0ZW1zLmxlbmd0aCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBsZXQgdGVtcGxhdGVSZWZzID0gKHRoaXMuX3RlbXBsYXRlc1tcIl9yZXN1bHRzXCJdIGFzIGFueVtdKS5tYXAoKGl0ZW0pID0+IGl0ZW1bXCJ0ZW1wbGF0ZVwiXSlcclxuICAgIHRoaXMudGVtcGxhdGVSZWZzID0gdGVtcGxhdGVSZWZzXHJcbiAgICB0aGlzLnJlcGVhdGVyQ29udGV4dC5lbGVtZW50cyA9IHRoaXMudGVtcGxhdGVSZWZzXHJcbiAgICB0aGlzLnJlcGVhdGVyQ29udGV4dC5kZWxldGUgPSB0aGlzLmRlbGV0ZVxyXG5cclxuICB9XHJcblxyXG4gIHNldEN1cnJlbnRJbmRleChpOiBudW1iZXIpIHtcclxuICAgIHRoaXMucmVwZWF0ZXJDb250ZXh0LmluZGV4ID0gaTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nRm9yPSdsZXQgaXRlbSBvZiBpdGVtcyA7IGluZGV4IGFzIGknPlxyXG4gIHt7c2V0Q3VycmVudEluZGV4KGkpfX1cclxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VycmVudFRlbXBsYXRlOyBjb250ZXh0OiByZXBlYXRlckNvbnRleHRcIj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFkZFwiPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAqbmdGb3I9XCJsZXQgcmVwZWF0ZXJGaWVsZCBvZiBvcHRpb25zLnJlcGVhdGVyU3RydWN0dXJlIDsgaW5kZXggYXMgaVwiIG5hbWU9XCJSe3tpfX1cIiBsZXQtSW5kZXg9XCJpdGVtSW5kZXhcIlxyXG4gIGxldC1jb250cm9sPVwiY29udHJvbEluZGV4XCI+XHJcbiAgPHJlcGVhdGVyLWZpZWxkLWJ1aWxkZXIgKm5nSWY9XCJyZXBlYXRlckZpZWxkXCIgW3JlcGVhdGVyRmllbGRdPVwicmVwZWF0ZXJGaWVsZFwiIFtpdGVtTnVtYmVyXT1cIkluZGV4XCJcclxuICAgIFtpdGVtc1ZhbHVlXT1cIm9yaWdpbmFsSXRlbXNcIiBbY29udHJvbE51bWJlcl09XCJjb250cm9sXCIgW2dyb3VwXT1cInJlcGVhdGVyR3JvdXBcIj5cclxuICA8L3JlcGVhdGVyLWZpZWxkLWJ1aWxkZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlbGV0ZSBsZXQtaXRlbT1cIml0ZW1JbmRleFwiPlxyXG4gIDxidXR0b24gKm5nSWY9XCIhb3B0aW9ucy5pc1JlYWRvbmx5XCIgY2xhc3M9XCJ7e29wdGlvbnMuZGVsZXRlQnV0dG9uRXh0cmFDbGFzc2VzfX1cIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgIChjbGljayk9XCJkZWxldGVJdGVtKGl0ZW0pXCIgW2Rpc2FibGVkXT1cIml0ZW1zLmxlbmd0aCA9PW9wdGlvbnMubWluUmVxdWlyZWRJdGVtcyYmb3B0aW9ucy5pc1JlcXVpcmVkXCI+XHJcbiAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIm9wdGlvbnMuZGVsZXRlQnV0dG9uVGV4dFwiPjwvc3Bhbj5cclxuICA8L2J1dHRvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYWRkPlxyXG4gIDxidXR0b24gKm5nSWY9XCIhb3B0aW9ucy5pc1JlYWRvbmx5XCIgY2xhc3M9XCJ7e29wdGlvbnMuYWRkQnV0dG9uRXh0cmFDbGFzc2VzfX1cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFkZEl0ZW0oKVwiPlxyXG4gICAgPHNwYW4gW2lubmVySFRNTF09XCJvcHRpb25zLmFkZEJ1dHRvblRleHRcIj48L3NwYW4+XHJcbiAgPC9idXR0b24+XHJcbjwvbmctdGVtcGxhdGU+Il19