@softpak/components 0.3.2 → 19.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/fesm2022/softpak-components-spx-alert.mjs +4 -5
  2. package/fesm2022/softpak-components-spx-alert.mjs.map +1 -1
  3. package/fesm2022/softpak-components-spx-app-configuration.mjs.map +1 -1
  4. package/fesm2022/softpak-components-spx-app-expiry.mjs +4 -5
  5. package/fesm2022/softpak-components-spx-app-expiry.mjs.map +1 -1
  6. package/fesm2022/softpak-components-spx-app-update.mjs +10 -9
  7. package/fesm2022/softpak-components-spx-app-update.mjs.map +1 -1
  8. package/fesm2022/softpak-components-spx-button.mjs +4 -5
  9. package/fesm2022/softpak-components-spx-button.mjs.map +1 -1
  10. package/fesm2022/softpak-components-spx-capitalize.mjs +3 -3
  11. package/fesm2022/softpak-components-spx-capitalize.mjs.map +1 -1
  12. package/fesm2022/softpak-components-spx-card.mjs +15 -18
  13. package/fesm2022/softpak-components-spx-card.mjs.map +1 -1
  14. package/fesm2022/softpak-components-spx-change-details.mjs +4 -4
  15. package/fesm2022/softpak-components-spx-change-details.mjs.map +1 -1
  16. package/fesm2022/softpak-components-spx-channel-selection.mjs +7 -9
  17. package/fesm2022/softpak-components-spx-channel-selection.mjs.map +1 -1
  18. package/fesm2022/softpak-components-spx-check-digit.mjs +4 -4
  19. package/fesm2022/softpak-components-spx-check-digit.mjs.map +1 -1
  20. package/fesm2022/softpak-components-spx-form-section.mjs +4 -4
  21. package/fesm2022/softpak-components-spx-form-section.mjs.map +1 -1
  22. package/fesm2022/softpak-components-spx-form-view.mjs +8 -9
  23. package/fesm2022/softpak-components-spx-form-view.mjs.map +1 -1
  24. package/fesm2022/softpak-components-spx-helpers.mjs.map +1 -1
  25. package/fesm2022/softpak-components-spx-inputs.mjs +50 -52
  26. package/fesm2022/softpak-components-spx-inputs.mjs.map +1 -1
  27. package/fesm2022/softpak-components-spx-navigation.mjs +11 -12
  28. package/fesm2022/softpak-components-spx-navigation.mjs.map +1 -1
  29. package/fesm2022/softpak-components-spx-number-check.mjs +4 -5
  30. package/fesm2022/softpak-components-spx-number-check.mjs.map +1 -1
  31. package/fesm2022/softpak-components-spx-pagination.mjs +4 -4
  32. package/fesm2022/softpak-components-spx-pagination.mjs.map +1 -1
  33. package/fesm2022/softpak-components-spx-patch.mjs +4 -5
  34. package/fesm2022/softpak-components-spx-patch.mjs.map +1 -1
  35. package/fesm2022/softpak-components-spx-progress-bar.mjs +3 -3
  36. package/fesm2022/softpak-components-spx-progress-bar.mjs.map +1 -1
  37. package/fesm2022/softpak-components-spx-spinner.mjs +4 -4
  38. package/fesm2022/softpak-components-spx-spinner.mjs.map +1 -1
  39. package/fesm2022/softpak-components-spx-stock-info.mjs +4 -4
  40. package/fesm2022/softpak-components-spx-stock-info.mjs.map +1 -1
  41. package/fesm2022/softpak-components-spx-storage.mjs.map +1 -1
  42. package/fesm2022/softpak-components-spx-suggestion.mjs +3 -3
  43. package/fesm2022/softpak-components-spx-suggestion.mjs.map +1 -1
  44. package/fesm2022/softpak-components-spx-toaster.mjs +5 -6
  45. package/fesm2022/softpak-components-spx-toaster.mjs.map +1 -1
  46. package/fesm2022/softpak-components-spx-update.mjs +7 -9
  47. package/fesm2022/softpak-components-spx-update.mjs.map +1 -1
  48. package/fesm2022/softpak-components-spx-validation.mjs +4 -4
  49. package/fesm2022/softpak-components-spx-validation.mjs.map +1 -1
  50. package/package.json +15 -68
  51. package/spx-inputs/spx-input-time-modal.component.d.ts +1 -1
  52. package/spx-inputs/spx-input-time.component.d.ts +1 -1
  53. package/esm2022/placeholder.mjs +0 -2
  54. package/esm2022/public_api.mjs +0 -2
  55. package/esm2022/softpak-components.mjs +0 -5
  56. package/esm2022/spx-alert/public-api.mjs +0 -3
  57. package/esm2022/spx-alert/softpak-components-spx-alert.mjs +0 -5
  58. package/esm2022/spx-alert/spx-alert.component.mjs +0 -193
  59. package/esm2022/spx-alert/spx-alert.interface.mjs +0 -3
  60. package/esm2022/spx-app-configuration/public-api.mjs +0 -8
  61. package/esm2022/spx-app-configuration/softpak-components-spx-app-configuration.mjs +0 -5
  62. package/esm2022/spx-app-configuration/spx-app-alert.interface.mjs +0 -2
  63. package/esm2022/spx-app-configuration/spx-app-bundle-set.interface.mjs +0 -2
  64. package/esm2022/spx-app-configuration/spx-app-channel-type.enum.mjs +0 -8
  65. package/esm2022/spx-app-configuration/spx-app-channel.interface.mjs +0 -2
  66. package/esm2022/spx-app-configuration/spx-app-config.interface.mjs +0 -2
  67. package/esm2022/spx-app-configuration/spx-app-id.enum.mjs +0 -8
  68. package/esm2022/spx-app-configuration/spx-app-lang.enum.mjs +0 -6
  69. package/esm2022/spx-app-configuration/spx-app-release-note.interface.mjs +0 -2
  70. package/esm2022/spx-app-expiry/public-api.mjs +0 -6
  71. package/esm2022/spx-app-expiry/softpak-components-spx-app-expiry.mjs +0 -5
  72. package/esm2022/spx-app-expiry/spx-app-expiry.component.mjs +0 -90
  73. package/esm2022/spx-app-expiry/spx-app-expiry.interface.mjs +0 -2
  74. package/esm2022/spx-app-expiry/spx-check-expiry-final-warning.interface.mjs +0 -5
  75. package/esm2022/spx-app-expiry/spx-check-expiry-happened.interface.mjs +0 -5
  76. package/esm2022/spx-app-expiry/spx-check-expiry-warning.interface.mjs +0 -5
  77. package/esm2022/spx-app-update/public-api.mjs +0 -2
  78. package/esm2022/spx-app-update/softpak-components-spx-app-update.mjs +0 -5
  79. package/esm2022/spx-app-update/spx-app-update.component.mjs +0 -316
  80. package/esm2022/spx-button/public-api.mjs +0 -2
  81. package/esm2022/spx-button/softpak-components-spx-button.mjs +0 -5
  82. package/esm2022/spx-button/spx-button.component.mjs +0 -142
  83. package/esm2022/spx-capitalize/public-api.mjs +0 -2
  84. package/esm2022/spx-capitalize/softpak-components-spx-capitalize.mjs +0 -5
  85. package/esm2022/spx-capitalize/spx-capitalize.pipe.mjs +0 -20
  86. package/esm2022/spx-card/public-api.mjs +0 -5
  87. package/esm2022/spx-card/softpak-components-spx-card.mjs +0 -5
  88. package/esm2022/spx-card/spx-card-grid.component.mjs +0 -46
  89. package/esm2022/spx-card/spx-card-item.component.mjs +0 -111
  90. package/esm2022/spx-card/spx-card-line.component.mjs +0 -101
  91. package/esm2022/spx-card/spx-card.component.mjs +0 -93
  92. package/esm2022/spx-change-details/public-api.mjs +0 -2
  93. package/esm2022/spx-change-details/softpak-components-spx-change-details.mjs +0 -5
  94. package/esm2022/spx-change-details/spx-change-details-value.interface.mjs +0 -2
  95. package/esm2022/spx-change-details/spx-change-details.component.mjs +0 -199
  96. package/esm2022/spx-channel-selection/public-api.mjs +0 -3
  97. package/esm2022/spx-channel-selection/softpak-components-spx-channel-selection.mjs +0 -5
  98. package/esm2022/spx-channel-selection/src/spx-channel-indicator.component.mjs +0 -45
  99. package/esm2022/spx-channel-selection/src/spx-welcome.component.mjs +0 -135
  100. package/esm2022/spx-check-digit/public-api.mjs +0 -2
  101. package/esm2022/spx-check-digit/softpak-components-spx-check-digit.mjs +0 -5
  102. package/esm2022/spx-check-digit/spx-check-digit.component.mjs +0 -94
  103. package/esm2022/spx-form-section/public-api.mjs +0 -2
  104. package/esm2022/spx-form-section/softpak-components-spx-form-section.mjs +0 -5
  105. package/esm2022/spx-form-section/spx-form-section.component.mjs +0 -37
  106. package/esm2022/spx-form-view/public-api.mjs +0 -7
  107. package/esm2022/spx-form-view/softpak-components-spx-form-view.mjs +0 -5
  108. package/esm2022/spx-form-view/spx-autocomplete-search.component.mjs +0 -119
  109. package/esm2022/spx-form-view/spx-form-button-type.enum.mjs +0 -6
  110. package/esm2022/spx-form-view/spx-form-button.interface.mjs +0 -2
  111. package/esm2022/spx-form-view/spx-form-field.interface.mjs +0 -2
  112. package/esm2022/spx-form-view/spx-form-section.interface.mjs +0 -2
  113. package/esm2022/spx-form-view/spx-form-view.component.mjs +0 -289
  114. package/esm2022/spx-form-view/spx-form.interface.mjs +0 -2
  115. package/esm2022/spx-helpers/calc-check-digit.function.mjs +0 -21
  116. package/esm2022/spx-helpers/public-api.mjs +0 -4
  117. package/esm2022/spx-helpers/softpak-components-spx-helpers.mjs +0 -5
  118. package/esm2022/spx-helpers/spx-severity.enum.mjs +0 -9
  119. package/esm2022/spx-helpers/value-pair-to-value.function.mjs +0 -7
  120. package/esm2022/spx-inputs/public-api.mjs +0 -6
  121. package/esm2022/spx-inputs/softpak-components-spx-inputs.mjs +0 -5
  122. package/esm2022/spx-inputs/spx-dropdown.component.mjs +0 -94
  123. package/esm2022/spx-inputs/spx-input-box.component.mjs +0 -255
  124. package/esm2022/spx-inputs/spx-input-date.component.mjs +0 -294
  125. package/esm2022/spx-inputs/spx-input-float.component.mjs +0 -159
  126. package/esm2022/spx-inputs/spx-input-number.component.mjs +0 -87
  127. package/esm2022/spx-inputs/spx-input-radio.component.mjs +0 -129
  128. package/esm2022/spx-inputs/spx-input-text.component.mjs +0 -155
  129. package/esm2022/spx-inputs/spx-input-time-modal.component.mjs +0 -116
  130. package/esm2022/spx-inputs/spx-input-time.component.mjs +0 -166
  131. package/esm2022/spx-inputs/spx-input-type.enum.mjs +0 -17
  132. package/esm2022/spx-inputs/spx-input.component.mjs +0 -445
  133. package/esm2022/spx-inputs/spx-value-interface.mjs +0 -2
  134. package/esm2022/spx-navigation/public-api.mjs +0 -5
  135. package/esm2022/spx-navigation/softpak-components-spx-navigation.mjs +0 -5
  136. package/esm2022/spx-navigation/spx-home-tile.component.mjs +0 -68
  137. package/esm2022/spx-navigation/spx-home-tiles.component.mjs +0 -24
  138. package/esm2022/spx-navigation/spx-navigation-item.interface.mjs +0 -2
  139. package/esm2022/spx-navigation/spx-navigation.component.mjs +0 -51
  140. package/esm2022/spx-number-check/public-api.mjs +0 -2
  141. package/esm2022/spx-number-check/softpak-components-spx-number-check.mjs +0 -5
  142. package/esm2022/spx-number-check/spx-number-check.component.mjs +0 -259
  143. package/esm2022/spx-pagination/public-api.mjs +0 -2
  144. package/esm2022/spx-pagination/softpak-components-spx-pagination.mjs +0 -5
  145. package/esm2022/spx-pagination/spx-pagination.component.mjs +0 -44
  146. package/esm2022/spx-patch/patch-check.function.mjs +0 -9
  147. package/esm2022/spx-patch/public-api.mjs +0 -4
  148. package/esm2022/spx-patch/release-check.function.mjs +0 -14
  149. package/esm2022/spx-patch/softpak-components-spx-patch.mjs +0 -5
  150. package/esm2022/spx-patch/spx-patch.component.mjs +0 -48
  151. package/esm2022/spx-progress-bar/public-api.mjs +0 -2
  152. package/esm2022/spx-progress-bar/softpak-components-spx-progress-bar.mjs +0 -5
  153. package/esm2022/spx-progress-bar/spx-progress-bar.component.mjs +0 -29
  154. package/esm2022/spx-spinner/public-api.mjs +0 -2
  155. package/esm2022/spx-spinner/softpak-components-spx-spinner.mjs +0 -5
  156. package/esm2022/spx-spinner/spx-spinner.component.mjs +0 -159
  157. package/esm2022/spx-stock-info/public-api.mjs +0 -3
  158. package/esm2022/spx-stock-info/softpak-components-spx-stock-info.mjs +0 -5
  159. package/esm2022/spx-stock-info/spx-stock-info-value.interface.mjs +0 -2
  160. package/esm2022/spx-stock-info/spx-stock-info.component.mjs +0 -327
  161. package/esm2022/spx-storage/public-api.mjs +0 -3
  162. package/esm2022/spx-storage/softpak-components-spx-storage.mjs +0 -5
  163. package/esm2022/spx-storage/src/spx-storage-key.enum.mjs +0 -13
  164. package/esm2022/spx-storage/src/spx-storage.class.mjs +0 -45
  165. package/esm2022/spx-suggestion/public-api.mjs +0 -2
  166. package/esm2022/spx-suggestion/softpak-components-spx-suggestion.mjs +0 -5
  167. package/esm2022/spx-suggestion/spx-suggestion.component.mjs +0 -69
  168. package/esm2022/spx-toaster/public-api.mjs +0 -4
  169. package/esm2022/spx-toaster/softpak-components-spx-toaster.mjs +0 -5
  170. package/esm2022/spx-toaster/src/spx-toaster-autoclose-speed.mjs +0 -23
  171. package/esm2022/spx-toaster/src/spx-toaster-message.interface.mjs +0 -3
  172. package/esm2022/spx-toaster/src/spx-toaster.component.mjs +0 -173
  173. package/esm2022/spx-update/public-api.mjs +0 -3
  174. package/esm2022/spx-update/softpak-components-spx-update.mjs +0 -5
  175. package/esm2022/spx-update/src/spx-update-info.component.mjs +0 -88
  176. package/esm2022/spx-update/src/spx-update-progress.component.mjs +0 -46
  177. package/esm2022/spx-validation/max.validator.mjs +0 -17
  178. package/esm2022/spx-validation/maxlength.validator.mjs +0 -20
  179. package/esm2022/spx-validation/min.validator.mjs +0 -17
  180. package/esm2022/spx-validation/minlength.validator.mjs +0 -20
  181. package/esm2022/spx-validation/pattern.validator.mjs +0 -12
  182. package/esm2022/spx-validation/public-api.mjs +0 -9
  183. package/esm2022/spx-validation/required.validator.mjs +0 -12
  184. package/esm2022/spx-validation/softpak-components-spx-validation.mjs +0 -5
  185. package/esm2022/spx-validation/spx-validate-control.component.mjs +0 -68
  186. package/esm2022/spx-validation/year-and-month.validator.mjs +0 -42
@@ -1,90 +0,0 @@
1
- import { NgIf } from '@angular/common';
2
- import { Component, Input } from '@angular/core';
3
- import { spxCheckExpiryWarning } from './spx-check-expiry-warning.interface';
4
- import { spxCheckExpiryFinalWarning } from './spx-check-expiry-final-warning.interface';
5
- import { spxCheckExpiryHappened } from './spx-check-expiry-happened.interface';
6
- import * as i0 from "@angular/core";
7
- export class SpxAppExpiryComponent {
8
- constructor() {
9
- this.warning = false;
10
- this.finalWarning = false;
11
- this.expired = false;
12
- }
13
- ngOnChanges() {
14
- if (this.spxExpiry && this.spxVersion) {
15
- this.expired = spxCheckExpiryHappened(this.spxVersion, this.spxExpiry);
16
- this.finalWarning = spxCheckExpiryFinalWarning(this.spxVersion, this.spxExpiry) && !this.expired;
17
- this.warning = spxCheckExpiryWarning(this.spxVersion, this.spxExpiry) && !this.finalWarning && !this.expired;
18
- }
19
- }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SpxAppExpiryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: SpxAppExpiryComponent, isStandalone: true, selector: "spx-app-expiry", inputs: { txtContactHelpdeskOrSoftpak: "txtContactHelpdeskOrSoftpak", txtExpired: "txtExpired", txtLastReminder: "txtLastReminder", txtPleaseOpenTheAppStore: "txtPleaseOpenTheAppStore", txtPleaseUpdate: "txtPleaseUpdate", txtThisVersionWillExpireSoon: "txtThisVersionWillExpireSoon", txtUpdateAvailable: "txtUpdateAvailable", txtUpdateTheAppToTheLatestVersion: "txtUpdateTheAppToTheLatestVersion", spxExpiry: "spxExpiry", spxVersion: "spxVersion" }, usesOnChanges: true, ngImport: i0, template: `
22
- <div class="m-3" *ngIf="warning || finalWarning || expired">
23
- <div
24
- class="p-3 font-bold text-white rounded-t text-xl"
25
- [class.bg-lime-600]="warning"
26
- [class.bg-red-600]="expired"
27
- [class.bg-amber-600]="finalWarning">
28
- <ng-container *ngIf="warning">{{ txtUpdateAvailable }}</ng-container>
29
- <ng-container *ngIf="finalWarning">{{ txtLastReminder }}</ng-container>
30
- <ng-container *ngIf="expired">{{ txtExpired }}</ng-container>
31
- </div>
32
- <div
33
- class="bg-amber-50 p-3 text-black rounded-b mb-3">
34
- <div>{{ txtPleaseOpenTheAppStore }}.</div>
35
- <div>{{ txtUpdateTheAppToTheLatestVersion }}.</div>
36
- <div>{{ txtContactHelpdeskOrSoftpak }}.</div>
37
- <div *ngIf="finalWarning">{{ txtThisVersionWillExpireSoon }}.</div>
38
- </div>
39
- </div>`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
40
- }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SpxAppExpiryComponent, decorators: [{
42
- type: Component,
43
- args: [{
44
- selector: 'spx-app-expiry',
45
- standalone: true,
46
- imports: [
47
- NgIf,
48
- ],
49
- template: `
50
- <div class="m-3" *ngIf="warning || finalWarning || expired">
51
- <div
52
- class="p-3 font-bold text-white rounded-t text-xl"
53
- [class.bg-lime-600]="warning"
54
- [class.bg-red-600]="expired"
55
- [class.bg-amber-600]="finalWarning">
56
- <ng-container *ngIf="warning">{{ txtUpdateAvailable }}</ng-container>
57
- <ng-container *ngIf="finalWarning">{{ txtLastReminder }}</ng-container>
58
- <ng-container *ngIf="expired">{{ txtExpired }}</ng-container>
59
- </div>
60
- <div
61
- class="bg-amber-50 p-3 text-black rounded-b mb-3">
62
- <div>{{ txtPleaseOpenTheAppStore }}.</div>
63
- <div>{{ txtUpdateTheAppToTheLatestVersion }}.</div>
64
- <div>{{ txtContactHelpdeskOrSoftpak }}.</div>
65
- <div *ngIf="finalWarning">{{ txtThisVersionWillExpireSoon }}.</div>
66
- </div>
67
- </div>`,
68
- }]
69
- }], propDecorators: { txtContactHelpdeskOrSoftpak: [{
70
- type: Input
71
- }], txtExpired: [{
72
- type: Input
73
- }], txtLastReminder: [{
74
- type: Input
75
- }], txtPleaseOpenTheAppStore: [{
76
- type: Input
77
- }], txtPleaseUpdate: [{
78
- type: Input
79
- }], txtThisVersionWillExpireSoon: [{
80
- type: Input
81
- }], txtUpdateAvailable: [{
82
- type: Input
83
- }], txtUpdateTheAppToTheLatestVersion: [{
84
- type: Input
85
- }], spxExpiry: [{
86
- type: Input
87
- }], spxVersion: [{
88
- type: Input
89
- }] } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWFwcC1leHBpcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC1hcHAtZXhwaXJ5L3NweC1hcHAtZXhwaXJ5LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFNUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDeEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7O0FBNEIvRSxNQUFNLE9BQU8scUJBQXFCO0lBMUJsQztRQXFDRSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLFlBQU8sR0FBRyxLQUFLLENBQUM7S0FRakI7SUFQQyxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsT0FBTyxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxZQUFZLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ2pHLElBQUksQ0FBQyxPQUFPLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUMvRyxDQUFDO0lBQ0gsQ0FBQzs4R0FwQlUscUJBQXFCO2tHQUFyQixxQkFBcUIsaWlCQXBCdEI7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQWtCSCw0REFwQkwsSUFBSTs7MkZBc0JLLHFCQUFxQjtrQkExQmpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRTt3QkFDUCxJQUFJO3FCQUNMO29CQUNELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBa0JIO2lCQUNSOzhCQUVVLDJCQUEyQjtzQkFBbkMsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxpQ0FBaUM7c0JBQXpDLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNweEFwcEV4cGlyeUkgfSBmcm9tICcuL3NweC1hcHAtZXhwaXJ5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBzcHhDaGVja0V4cGlyeVdhcm5pbmcgfSBmcm9tICcuL3NweC1jaGVjay1leHBpcnktd2FybmluZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgc3B4Q2hlY2tFeHBpcnlGaW5hbFdhcm5pbmcgfSBmcm9tICcuL3NweC1jaGVjay1leHBpcnktZmluYWwtd2FybmluZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgc3B4Q2hlY2tFeHBpcnlIYXBwZW5lZCB9IGZyb20gJy4vc3B4LWNoZWNrLWV4cGlyeS1oYXBwZW5lZC5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcHgtYXBwLWV4cGlyeScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0lmLFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICA8ZGl2IGNsYXNzPVwibS0zXCIgKm5nSWY9XCJ3YXJuaW5nIHx8IGZpbmFsV2FybmluZyB8fCBleHBpcmVkXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwLTMgZm9udC1ib2xkIHRleHQtd2hpdGUgcm91bmRlZC10IHRleHQteGxcIlxuICAgICAgW2NsYXNzLmJnLWxpbWUtNjAwXT1cIndhcm5pbmdcIlxuICAgICAgW2NsYXNzLmJnLXJlZC02MDBdPVwiZXhwaXJlZFwiXG4gICAgICBbY2xhc3MuYmctYW1iZXItNjAwXT1cImZpbmFsV2FybmluZ1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndhcm5pbmdcIj57eyB0eHRVcGRhdGVBdmFpbGFibGUgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaW5hbFdhcm5pbmdcIj57eyB0eHRMYXN0UmVtaW5kZXIgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleHBpcmVkXCI+e3sgdHh0RXhwaXJlZCB9fTwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYmctYW1iZXItNTAgcC0zIHRleHQtYmxhY2sgcm91bmRlZC1iIG1iLTNcIj5cbiAgICAgIDxkaXY+e3sgdHh0UGxlYXNlT3BlblRoZUFwcFN0b3JlIH19LjwvZGl2PlxuICAgICAgPGRpdj57eyB0eHRVcGRhdGVUaGVBcHBUb1RoZUxhdGVzdFZlcnNpb24gfX0uPC9kaXY+XG4gICAgICA8ZGl2Pnt7IHR4dENvbnRhY3RIZWxwZGVza09yU29mdHBhayB9fS48L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmaW5hbFdhcm5pbmdcIj57eyB0eHRUaGlzVmVyc2lvbldpbGxFeHBpcmVTb29uIH19LjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5gLFxufSlcbmV4cG9ydCBjbGFzcyBTcHhBcHBFeHBpcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSB0eHRDb250YWN0SGVscGRlc2tPclNvZnRwYWshOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR4dEV4cGlyZWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR4dExhc3RSZW1pbmRlciE6IHN0cmluZztcbiAgQElucHV0KCkgdHh0UGxlYXNlT3BlblRoZUFwcFN0b3JlITogc3RyaW5nO1xuICBASW5wdXQoKSB0eHRQbGVhc2VVcGRhdGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR4dFRoaXNWZXJzaW9uV2lsbEV4cGlyZVNvb24hOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR4dFVwZGF0ZUF2YWlsYWJsZSE6IHN0cmluZztcbiAgQElucHV0KCkgdHh0VXBkYXRlVGhlQXBwVG9UaGVMYXRlc3RWZXJzaW9uITogc3RyaW5nO1xuICBASW5wdXQoKSBzcHhFeHBpcnkhOiBTcHhBcHBFeHBpcnlJO1xuICBASW5wdXQoKSBzcHhWZXJzaW9uITogc3RyaW5nO1xuICB3YXJuaW5nID0gZmFsc2U7XG4gIGZpbmFsV2FybmluZyA9IGZhbHNlO1xuICBleHBpcmVkID0gZmFsc2U7XG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNweEV4cGlyeSAmJiB0aGlzLnNweFZlcnNpb24pIHtcbiAgICAgIHRoaXMuZXhwaXJlZCA9IHNweENoZWNrRXhwaXJ5SGFwcGVuZWQodGhpcy5zcHhWZXJzaW9uLCB0aGlzLnNweEV4cGlyeSk7XG4gICAgICB0aGlzLmZpbmFsV2FybmluZyA9IHNweENoZWNrRXhwaXJ5RmluYWxXYXJuaW5nKHRoaXMuc3B4VmVyc2lvbiwgdGhpcy5zcHhFeHBpcnkpICYmICF0aGlzLmV4cGlyZWQ7XG4gICAgICB0aGlzLndhcm5pbmcgPSBzcHhDaGVja0V4cGlyeVdhcm5pbmcodGhpcy5zcHhWZXJzaW9uLCB0aGlzLnNweEV4cGlyeSkgJiYgIXRoaXMuZmluYWxXYXJuaW5nICYmICF0aGlzLmV4cGlyZWQ7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWFwcC1leHBpcnkuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC1hcHAtZXhwaXJ5L3NweC1hcHAtZXhwaXJ5LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tIFwibHV4b25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBTcHhBcHBFeHBpcnlJIHtcbiAgcmVxdWlyZWRWZXJzaW9uOiBzdHJpbmc7XG4gIHdhcm5pbmc6IERhdGVUaW1lO1xuICBmaW5hbFdhcm5pbmc6IERhdGVUaW1lO1xuICBleHBpcnk6IERhdGVUaW1lO1xufSJdfQ==
@@ -1,5 +0,0 @@
1
- import { DateTime } from "luxon";
2
- export const spxCheckExpiryFinalWarning = (appStoreVersion, spxAppExpiry) => {
3
- return spxAppExpiry !== undefined && appStoreVersion.substring(0, 3) !== spxAppExpiry.requiredVersion.substring(0, 3) && DateTime.now() > spxAppExpiry.finalWarning;
4
- };
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWNoZWNrLWV4cGlyeS1maW5hbC13YXJuaW5nLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtYXBwLWV4cGlyeS9zcHgtY2hlY2stZXhwaXJ5LWZpbmFsLXdhcm5pbmcuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFHakMsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxlQUF1QixFQUFFLFlBQTRCLEVBQUUsRUFBRTtJQUNsRyxPQUFPLFlBQVksS0FBSyxTQUFTLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEtBQUssWUFBWSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFLLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDO0FBQ3JLLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSBcImx1eG9uXCI7XG5pbXBvcnQgeyBTcHhBcHBFeHBpcnlJIH0gZnJvbSBcIi4vc3B4LWFwcC1leHBpcnkuaW50ZXJmYWNlXCI7XG5cbmV4cG9ydCBjb25zdCBzcHhDaGVja0V4cGlyeUZpbmFsV2FybmluZyA9IChhcHBTdG9yZVZlcnNpb246IHN0cmluZywgc3B4QXBwRXhwaXJ5PzogU3B4QXBwRXhwaXJ5SSkgPT4ge1xuICByZXR1cm4gc3B4QXBwRXhwaXJ5ICE9PSB1bmRlZmluZWQgJiYgYXBwU3RvcmVWZXJzaW9uLnN1YnN0cmluZygwLDMpICE9PSBzcHhBcHBFeHBpcnkucmVxdWlyZWRWZXJzaW9uLnN1YnN0cmluZygwLDMpICYmICBEYXRlVGltZS5ub3coKSA+IHNweEFwcEV4cGlyeS5maW5hbFdhcm5pbmc7XG59Il19
@@ -1,5 +0,0 @@
1
- import { DateTime } from "luxon";
2
- export const spxCheckExpiryHappened = (appStoreVersion, spxAppExpiry) => {
3
- return spxAppExpiry !== undefined && appStoreVersion.substring(0, 3) !== spxAppExpiry.requiredVersion.substring(0, 3) && DateTime.now() > spxAppExpiry.expiry;
4
- };
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWNoZWNrLWV4cGlyeS1oYXBwZW5lZC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWFwcC1leHBpcnkvc3B4LWNoZWNrLWV4cGlyeS1oYXBwZW5lZC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUdqQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLGVBQXVCLEVBQUUsWUFBMkIsRUFBVyxFQUFFO0lBQ3RHLE9BQU8sWUFBWSxLQUFLLFNBQVMsSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsS0FBSyxZQUFZLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7QUFDOUosQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tIFwibHV4b25cIjtcbmltcG9ydCB7IFNweEFwcEV4cGlyeUkgfSBmcm9tIFwiLi9zcHgtYXBwLWV4cGlyeS5pbnRlcmZhY2VcIjtcblxuZXhwb3J0IGNvbnN0IHNweENoZWNrRXhwaXJ5SGFwcGVuZWQgPSAoYXBwU3RvcmVWZXJzaW9uOiBzdHJpbmcsIHNweEFwcEV4cGlyeTogU3B4QXBwRXhwaXJ5SSk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gc3B4QXBwRXhwaXJ5ICE9PSB1bmRlZmluZWQgJiYgYXBwU3RvcmVWZXJzaW9uLnN1YnN0cmluZygwLDMpICE9PSBzcHhBcHBFeHBpcnkucmVxdWlyZWRWZXJzaW9uLnN1YnN0cmluZygwLDMpICYmIERhdGVUaW1lLm5vdygpID4gc3B4QXBwRXhwaXJ5LmV4cGlyeTtcbn0iXX0=
@@ -1,5 +0,0 @@
1
- import { DateTime } from "luxon";
2
- export const spxCheckExpiryWarning = (appStoreVersion, spxAppExpiry) => {
3
- return spxAppExpiry !== undefined && appStoreVersion.substring(0, 3) !== spxAppExpiry.requiredVersion.substring(0, 3) && DateTime.now() > spxAppExpiry.warning;
4
- };
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWNoZWNrLWV4cGlyeS13YXJuaW5nLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtYXBwLWV4cGlyeS9zcHgtY2hlY2stZXhwaXJ5LXdhcm5pbmcuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFHakMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxlQUF1QixFQUFFLFlBQTRCLEVBQVcsRUFBRTtJQUN0RyxPQUFPLFlBQVksS0FBSyxTQUFTLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEtBQUssWUFBWSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDO0FBQy9KLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSBcImx1eG9uXCI7XG5pbXBvcnQgeyBTcHhBcHBFeHBpcnlJIH0gZnJvbSBcIi4vc3B4LWFwcC1leHBpcnkuaW50ZXJmYWNlXCI7XG5cbmV4cG9ydCBjb25zdCBzcHhDaGVja0V4cGlyeVdhcm5pbmcgPSAoYXBwU3RvcmVWZXJzaW9uOiBzdHJpbmcsIHNweEFwcEV4cGlyeT86IFNweEFwcEV4cGlyeUkpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIHNweEFwcEV4cGlyeSAhPT0gdW5kZWZpbmVkICYmIGFwcFN0b3JlVmVyc2lvbi5zdWJzdHJpbmcoMCwzKSAhPT0gc3B4QXBwRXhwaXJ5LnJlcXVpcmVkVmVyc2lvbi5zdWJzdHJpbmcoMCwzKSAmJiBEYXRlVGltZS5ub3coKSA+IHNweEFwcEV4cGlyeS53YXJuaW5nO1xufSJdfQ==
@@ -1,2 +0,0 @@
1
- export * from './spx-app-update.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtYXBwLXVwZGF0ZS9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NweC1hcHAtdXBkYXRlLmNvbXBvbmVudCc7XG4iXX0=
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29mdHBhay1jb21wb25lbnRzLXNweC1hcHAtdXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC1hcHAtdXBkYXRlL3NvZnRwYWstY29tcG9uZW50cy1zcHgtYXBwLXVwZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -1,316 +0,0 @@
1
- import { NgClass, NgIf } from '@angular/common';
2
- import { Component, Input } from '@angular/core';
3
- import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
- import { TranslateModule } from '@ngx-translate/core';
5
- import { SpxCapitalizePipe } from '@softpak/components/spx-capitalize';
6
- import { SpxInputComponent } from '@softpak/components/spx-inputs';
7
- import { SpxProgressBarComponent } from '@softpak/components/spx-progress-bar';
8
- import { SpxStorage, SpxStorageKeyEnum } from '@softpak/components/spx-storage';
9
- import { Device } from '@capacitor/device';
10
- import { getCurrentScope } from '@sentry/angular';
11
- import { IonicModule } from '@ionic/angular';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "cordova-plugin-ionic/dist/ngx";
14
- import * as i2 from "@angular/router";
15
- import * as i3 from "@ngx-translate/core";
16
- import * as i4 from "@angular/forms";
17
- import * as i5 from "@ionic/angular";
18
- const ctrlNextVersionNumber = 'ctrlNextVersionNumber';
19
- const ctrlVersionNumber = 'ctrlVersionNumber';
20
- const ctrlConfiguredChannel = 'ctrlConfiguredChannel';
21
- const ctrlAppStoreVersion = 'ctrlAppStoreVersion';
22
- export class SpxAppUpdateComponent {
23
- constructor(deploy, router, changeDetector, applicationRef, translateService, formBuilder) {
24
- this.deploy = deploy;
25
- this.router = router;
26
- this.changeDetector = changeDetector;
27
- this.applicationRef = applicationRef;
28
- this.translateService = translateService;
29
- this.formBuilder = formBuilder;
30
- this.delayedPercentage = 0;
31
- this.percentage = 0;
32
- this.syncTruckInterval = null;
33
- this.updateStatus = this.textCheckingForUpdates;
34
- this.form = this.formBuilder.group({
35
- [ctrlNextVersionNumber]: [null, []],
36
- [ctrlVersionNumber]: [null, []],
37
- [ctrlConfiguredChannel]: [null, []],
38
- [ctrlAppStoreVersion]: [null, []],
39
- });
40
- }
41
- get ctrlVersionNumber() { return this.form.get(ctrlVersionNumber); }
42
- get ctrlNextVersionNumber() { return this.form.get(ctrlNextVersionNumber); }
43
- get ctrlConfiguredChannel() { return this.form.get(ctrlConfiguredChannel); }
44
- get ctrlAppStoreVersion() { return this.form.get(ctrlAppStoreVersion); }
45
- init() {
46
- this.delayedPercentage = 0;
47
- this.percentage = 0;
48
- this.performAutomaticUpdate().then(() => { });
49
- this.startLoaderSync();
50
- this.changeStatus({
51
- percentage: 0,
52
- text: this.translateService.instant(this.textCheckingForUpdates),
53
- });
54
- }
55
- destroy() {
56
- this.stopLoaderSync();
57
- }
58
- async performAutomaticUpdate() {
59
- const deviceInfo = await Device.getInfo();
60
- if (deviceInfo?.platform === 'web') {
61
- // Local? Skip the update page.
62
- this.closeUpdateScreen();
63
- }
64
- try {
65
- this.updateInfo();
66
- // Start upgrade
67
- const currentVersion = await this.deploy.getCurrentVersion();
68
- if (currentVersion?.binaryVersionName) {
69
- const binaryGroup = currentVersion.binaryVersionName.substring(0, 3); // e.g. "1.4"
70
- const channelGroup = currentVersion.channel.split('-')[1].substring(0, 3); // e.g. "1.4"
71
- const channelType = currentVersion.channel.split('-')[0];
72
- if (binaryGroup != channelGroup) {
73
- await this.deploy.configure({
74
- appId: this.spxAppId,
75
- channel: `${channelType}-${binaryGroup}.x`
76
- }).then(() => {
77
- this.sync().then(() => { });
78
- });
79
- }
80
- else {
81
- this.sync().then(() => { });
82
- }
83
- }
84
- else {
85
- this.sync().then(() => { });
86
- }
87
- // End upgrade
88
- }
89
- catch (error) {
90
- this.changeStatus({
91
- closeScreen: true,
92
- error,
93
- percentage: 100,
94
- text: this.translateService.instant(this.textUnexpectedError)
95
- });
96
- }
97
- }
98
- async sync() {
99
- try {
100
- this.updateInfo();
101
- const updateAvailableInfo = await this.deploy.checkForUpdate();
102
- if (!updateAvailableInfo.available) {
103
- // No update available
104
- this.changeStatus({
105
- closeScreen: true,
106
- percentage: 0,
107
- text: this.translateService.instant(this.textNoUpdatesAvailable),
108
- });
109
- }
110
- else {
111
- // Download update
112
- await this.deploy.sync({ updateMethod: 'auto' }, (percentage) => {
113
- this.changeStatus({
114
- percentage: percentage ?? 0,
115
- text: this.translateService.instant(this.textDownloadingUpdate, { percentage, version: updateAvailableInfo.build }),
116
- });
117
- }).catch((error) => {
118
- this.changeStatus({
119
- closeScreen: true,
120
- error,
121
- percentage: 100,
122
- text: this.translateService.instant(this.textErrorWhileUpdatingApp),
123
- });
124
- });
125
- this.changeStatus({
126
- closeScreen: true,
127
- percentage: 100,
128
- text: this.translateService.instant(this.textFinishedUpdating, { version: updateAvailableInfo.build })
129
- });
130
- }
131
- }
132
- catch (error) {
133
- // Catch unexpected plug-in errors
134
- this.changeStatus({
135
- closeScreen: true,
136
- error,
137
- percentage: 100,
138
- text: this.translateService.instant(this.textUnexpectedError)
139
- });
140
- }
141
- }
142
- async updateInfo() {
143
- const currentVersion = await this.deploy.getCurrentVersion();
144
- const configuration = await this.deploy.getConfiguration();
145
- const updateAvailableInfo = await this.deploy.checkForUpdate();
146
- if (currentVersion) {
147
- this.ctrlVersionNumber.setValue({
148
- value: configuration?.currentBuildId,
149
- });
150
- this.ctrlNextVersionNumber.setValue({
151
- value: updateAvailableInfo?.build
152
- });
153
- this.ctrlConfiguredChannel.setValue({
154
- value: configuration ? configuration.channel : null
155
- });
156
- this.ctrlAppStoreVersion.setValue({
157
- value: configuration ? configuration.binaryVersionName : null
158
- });
159
- {
160
- const scope = getCurrentScope();
161
- scope.setTag('version_binary_code', currentVersion?.binaryVersionCode);
162
- scope.setTag('version_binary_name', currentVersion?.binaryVersionName);
163
- scope.setTag('version_build_id', currentVersion?.buildId);
164
- scope.setTag('channel_type', currentVersion?.channel);
165
- scope.setTag('version_snapshot_id', currentVersion?.versionId);
166
- }
167
- ;
168
- this.changeDetector.markForCheck();
169
- this.applicationRef.tick();
170
- }
171
- }
172
- changeStatus(status) {
173
- this.updateStatus = status.text;
174
- this.percentage = status.percentage;
175
- if (status.closeScreen) {
176
- this.closeUpdateScreen();
177
- }
178
- if (status.error) {
179
- // this.appStore.dispatch(
180
- // sharedToasterActions.CREATE_ERROR({
181
- // messageText: status.error,
182
- // })
183
- // );
184
- }
185
- this.changeDetector.markForCheck();
186
- this.applicationRef.tick();
187
- }
188
- closeUpdateScreen() {
189
- // Allowing some time to make a screenshot of version info
190
- SpxStorage.clearSetting(SpxStorageKeyEnum.updateInProgress);
191
- setTimeout(() => {
192
- if (SpxStorage.getSetting(SpxStorageKeyEnum.afterSignIn) &&
193
- this.spxIsSignedIn) {
194
- this.router.navigate([SpxStorage.getSetting(SpxStorageKeyEnum.afterSignIn)]);
195
- SpxStorage.clearSetting(SpxStorageKeyEnum.afterSignIn);
196
- }
197
- else {
198
- this.router.navigate([this.spxHomeUrl]);
199
- }
200
- }, 0);
201
- }
202
- startLoaderSync() {
203
- SpxStorage.setSetting(SpxStorageKeyEnum.updateInProgress, '1');
204
- if (this.syncTruckInterval === null) {
205
- this.syncTruckInterval = setInterval(() => {
206
- this.delayedPercentage = this.percentage;
207
- }, 200);
208
- }
209
- }
210
- stopLoaderSync() {
211
- if (this.syncTruckInterval !== null) {
212
- clearInterval(this.syncTruckInterval);
213
- this.syncTruckInterval = null;
214
- }
215
- }
216
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SpxAppUpdateComponent, deps: [{ token: i1.Deploy }, { token: i2.Router }, { token: i0.ChangeDetectorRef }, { token: i0.ApplicationRef }, { token: i3.TranslateService }, { token: i4.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
217
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.1", type: SpxAppUpdateComponent, isStandalone: true, selector: "spx-app-update", inputs: { spxHomeUrl: "spxHomeUrl", spxIsSignedIn: "spxIsSignedIn", textCheckingForUpdates: "textCheckingForUpdates", textDownloadingUpdate: "textDownloadingUpdate", textErrorWhileUpdatingApp: "textErrorWhileUpdatingApp", textFinishedUpdating: "textFinishedUpdating", textNoUpdatesAvailable: "textNoUpdatesAvailable", textUnexpectedError: "textUnexpectedError", txtAppStoreVersion: "txtAppStoreVersion", txtChannel: "txtChannel", txtNextVersion: "txtNextVersion", txtUpdate: "txtUpdate", txtVersion: "txtVersion", spxAppId: "spxAppId" }, ngImport: i0, template: `<ion-header>
218
- <ion-toolbar>
219
- <ion-title>
220
- {{ txtUpdate | translate | capitalize }}
221
- </ion-title>
222
- </ion-toolbar>
223
- </ion-header>
224
-
225
- <ion-content class="ion-content--upd" [fullscreen]="true">
226
- <div class="ion-padding">
227
- <spx-progress-bar [spxPercentage]="delayedPercentage" [spxTitle]="updateStatus | capitalize">
228
- </spx-progress-bar>
229
- <form [formGroup]="form" class="mt-3">
230
- <div *ngIf="ctrlAppStoreVersion.value && ctrlAppStoreVersion.value.value" class="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-3">
231
- <spx-input [formControl]="ctrlAppStoreVersion" [spxLabel]="txtAppStoreVersion | translate | capitalize"
232
- [spxReadonly]="true"></spx-input>
233
- <spx-input [formControl]="ctrlConfiguredChannel" [spxLabel]="txtChannel | translate | capitalize"
234
- [spxReadonly]="true"></spx-input>
235
- <spx-input [formControl]="ctrlVersionNumber" [spxLabel]="txtVersion | translate | capitalize"
236
- [spxReadonly]="true"></spx-input>
237
- <spx-input *ngIf="ctrlNextVersionNumber.value && ctrlNextVersionNumber.value.value" [formControl]="ctrlNextVersionNumber" [spxLabel]="txtNextVersion | translate | capitalize"
238
- [spxReadonly]="true"></spx-input>
239
- </div>
240
- </form>
241
- </div>
242
- </ion-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i5.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i5.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i5.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i5.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: SpxCapitalizePipe, name: "capitalize" }, { kind: "component", type: SpxInputComponent, selector: "spx-input", inputs: ["spxLabel", "spxMax", "spxMin", "spxName", "spxReadonly", "spxAutofocus", "spxInputMode", "spxPattern", "spxRequired", "spxSelectMonth", "spxSelectDay", "spxShowEdit", "spxShowHelp", "spxShowLabel", "spxCompact", "spxShowClear", "spxShowSearch", "spxShowValidationMessages", "spxStep", "spxSuggestions", "spxType", "spxValidators", "value", "spxCapitalize", "spxFocused"], outputs: ["spxBlur", "spxClear", "spxChange", "spxFocus", "spxEdit", "spxHelp", "spxSearch"] }, { kind: "component", type: SpxProgressBarComponent, selector: "spx-progress-bar", inputs: ["spxPercentage", "spxTitle"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
243
- }
244
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: SpxAppUpdateComponent, decorators: [{
245
- type: Component,
246
- args: [{
247
- selector: 'spx-app-update',
248
- standalone: true,
249
- imports: [
250
- FormsModule,
251
- IonicModule,
252
- NgClass,
253
- NgIf,
254
- ReactiveFormsModule,
255
- SpxCapitalizePipe,
256
- SpxInputComponent,
257
- SpxProgressBarComponent,
258
- TranslateModule,
259
- ],
260
- template: `<ion-header>
261
- <ion-toolbar>
262
- <ion-title>
263
- {{ txtUpdate | translate | capitalize }}
264
- </ion-title>
265
- </ion-toolbar>
266
- </ion-header>
267
-
268
- <ion-content class="ion-content--upd" [fullscreen]="true">
269
- <div class="ion-padding">
270
- <spx-progress-bar [spxPercentage]="delayedPercentage" [spxTitle]="updateStatus | capitalize">
271
- </spx-progress-bar>
272
- <form [formGroup]="form" class="mt-3">
273
- <div *ngIf="ctrlAppStoreVersion.value && ctrlAppStoreVersion.value.value" class="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-3">
274
- <spx-input [formControl]="ctrlAppStoreVersion" [spxLabel]="txtAppStoreVersion | translate | capitalize"
275
- [spxReadonly]="true"></spx-input>
276
- <spx-input [formControl]="ctrlConfiguredChannel" [spxLabel]="txtChannel | translate | capitalize"
277
- [spxReadonly]="true"></spx-input>
278
- <spx-input [formControl]="ctrlVersionNumber" [spxLabel]="txtVersion | translate | capitalize"
279
- [spxReadonly]="true"></spx-input>
280
- <spx-input *ngIf="ctrlNextVersionNumber.value && ctrlNextVersionNumber.value.value" [formControl]="ctrlNextVersionNumber" [spxLabel]="txtNextVersion | translate | capitalize"
281
- [spxReadonly]="true"></spx-input>
282
- </div>
283
- </form>
284
- </div>
285
- </ion-content>`,
286
- }]
287
- }], ctorParameters: () => [{ type: i1.Deploy }, { type: i2.Router }, { type: i0.ChangeDetectorRef }, { type: i0.ApplicationRef }, { type: i3.TranslateService }, { type: i4.FormBuilder }], propDecorators: { spxHomeUrl: [{
288
- type: Input
289
- }], spxIsSignedIn: [{
290
- type: Input
291
- }], textCheckingForUpdates: [{
292
- type: Input
293
- }], textDownloadingUpdate: [{
294
- type: Input
295
- }], textErrorWhileUpdatingApp: [{
296
- type: Input
297
- }], textFinishedUpdating: [{
298
- type: Input
299
- }], textNoUpdatesAvailable: [{
300
- type: Input
301
- }], textUnexpectedError: [{
302
- type: Input
303
- }], txtAppStoreVersion: [{
304
- type: Input
305
- }], txtChannel: [{
306
- type: Input
307
- }], txtNextVersion: [{
308
- type: Input
309
- }], txtUpdate: [{
310
- type: Input
311
- }], txtVersion: [{
312
- type: Input
313
- }], spxAppId: [{
314
- type: Input
315
- }] } });
316
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWFwcC11cGRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC1hcHAtdXBkYXRlL3NweC1hcHAtdXBkYXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBcUMsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUF1QyxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RyxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQUU3QyxNQUFNLHFCQUFxQixHQUFHLHVCQUF1QixDQUFDO0FBQ3RELE1BQU0saUJBQWlCLEdBQUcsbUJBQW1CLENBQUM7QUFDOUMsTUFBTSxxQkFBcUIsR0FBRyx1QkFBdUIsQ0FBQztBQUN0RCxNQUFNLG1CQUFtQixHQUFHLHFCQUFxQixDQUFDO0FBMkNsRCxNQUFNLE9BQU8scUJBQXFCO0lBdUJoQyxZQUNtQixNQUFj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QUFVO3NCQUFsQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uUmVmLCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFNweENhcGl0YWxpemVQaXBlIH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtY2FwaXRhbGl6ZSc7XG5pbXBvcnQgeyBTcHhJbnB1dENvbXBvbmVudCB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWlucHV0cyc7XG5pbXBvcnQgeyBTcHhQcm9ncmVzc0JhckNvbXBvbmVudCB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LXByb2dyZXNzLWJhcic7XG5pbXBvcnQgeyBTcHhTdG9yYWdlLCBTcHhTdG9yYWdlS2V5RW51bSB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LXN0b3JhZ2UnO1xuaW1wb3J0IHsgRGV2aWNlIH0gZnJvbSAnQGNhcGFjaXRvci9kZXZpY2UnO1xuaW1wb3J0IHsgRGVwbG95IH0gZnJvbSAnY29yZG92YS1wbHVnaW4taW9uaWMvZGlzdC9uZ3gnO1xuaW1wb3J0IHsgZ2V0Q3VycmVudFNjb3BlIH0gZnJvbSAnQHNlbnRyeS9hbmd1bGFyJztcbmltcG9ydCB7IElvbmljTW9kdWxlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuXG5jb25zdCBjdHJsTmV4dFZlcnNpb25OdW1iZXIgPSAnY3RybE5leHRWZXJzaW9uTnVtYmVyJztcbmNvbnN0IGN0cmxWZXJzaW9uTnVtYmVyID0gJ2N0cmxWZXJzaW9uTnVtYmVyJztcbmNvbnN0IGN0cmxDb25maWd1cmVkQ2hhbm5lbCA9ICdjdHJsQ29uZmlndXJlZENoYW5uZWwnO1xuY29uc3QgY3RybEFwcFN0b3JlVmVyc2lvbiA9ICdjdHJsQXBwU3RvcmVWZXJzaW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3B4LWFwcC11cGRhdGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgSW9uaWNNb2R1bGUsXG4gICAgTmdDbGFzcyxcbiAgICBOZ0lmLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgU3B4Q2FwaXRhbGl6ZVBpcGUsXG4gICAgU3B4SW5wdXRDb21wb25lbnQsXG4gICAgU3B4UHJvZ3Jlc3NCYXJDb21wb25lbnQsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZTogYDxpb24taGVhZGVyPlxuICA8aW9uLXRvb2xiYXI+XG4gICAgPGlvbi10aXRsZT5cbiAgICAgIHt7IHR4dFVwZGF0ZSB8IHRyYW5zbGF0ZSB8IGNhcGl0YWxpemUgfX1cbiAgICA8L2lvbi10aXRsZT5cbiAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cblxuPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLWNvbnRlbnQtLXVwZFwiIFtmdWxsc2NyZWVuXT1cInRydWVcIj5cbiAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgPHNweC1wcm9ncmVzcy1iYXIgW3NweFBlcmNlbnRhZ2VdPVwiZGVsYXllZFBlcmNlbnRhZ2VcIiBbc3B4VGl0bGVdPVwidXBkYXRlU3RhdHVzIHwgY2FwaXRhbGl6ZVwiPlxuICAgIDwvc3B4LXByb2dyZXNzLWJhcj5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cIm10LTNcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJjdHJsQXBwU3RvcmVWZXJzaW9uLnZhbHVlICYmIGN0cmxBcHBTdG9yZVZlcnNpb24udmFsdWUudmFsdWVcIiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgeGw6Z3JpZC1jb2xzLTMgZ2FwLTNcIj5cbiAgICAgICAgPHNweC1pbnB1dCBbZm9ybUNvbnRyb2xdPVwiY3RybEFwcFN0b3JlVmVyc2lvblwiIFtzcHhMYWJlbF09XCJ0eHRBcHBTdG9yZVZlcnNpb24gfCB0cmFuc2xhdGUgfCBjYXBpdGFsaXplXCJcbiAgICAgICAgICBbc3B4UmVhZG9ubHldPVwidHJ1ZVwiPjwvc3B4LWlucHV0PlxuICAgICAgICA8c3B4LWlucHV0IFtmb3JtQ29udHJvbF09XCJjdHJsQ29uZmlndXJlZENoYW5uZWxcIiBbc3B4TGFiZWxdPVwidHh0Q2hhbm5lbCB8IHRyYW5zbGF0ZSB8IGNhcGl0YWxpemVcIlxuICAgICAgICAgIFtzcHhSZWFkb25seV09XCJ0cnVlXCI+PC9zcHgtaW5wdXQ+XG4gICAgICAgIDxzcHgtaW5wdXQgW2Zvcm1Db250cm9sXT1cImN0cmxWZXJzaW9uTnVtYmVyXCIgW3NweExhYmVsXT1cInR4dFZlcnNpb24gfCB0cmFuc2xhdGUgfCBjYXBpdGFsaXplXCJcbiAgICAgICAgICBbc3B4UmVhZG9ubHldPVwidHJ1ZVwiPjwvc3B4LWlucHV0PlxuICAgICAgICA8c3B4LWlucHV0ICpuZ0lmPVwiY3RybE5leHRWZXJzaW9uTnVtYmVyLnZhbHVlICYmIGN0cmxOZXh0VmVyc2lvbk51bWJlci52YWx1ZS52YWx1ZVwiIFtmb3JtQ29udHJvbF09XCJjdHJsTmV4dFZlcnNpb25OdW1iZXJcIiBbc3B4TGFiZWxdPVwidHh0TmV4dFZlcnNpb24gfCB0cmFuc2xhdGUgfCBjYXBpdGFsaXplXCJcbiAgICAgICAgICBbc3B4UmVhZG9ubHldPVwidHJ1ZVwiPjwvc3B4LWlucHV0PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICA8L2Rpdj5cbjwvaW9uLWNvbnRlbnQ+YCxcbn0pXG5leHBvcnQgY2xhc3MgU3B4QXBwVXBkYXRlQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc3B4SG9tZVVybCE6IHN0cmluZztcbiAgQElucHV0KCkgc3B4SXNTaWduZWRJbiE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHRleHRDaGVja2luZ0ZvclVwZGF0ZXMhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRleHREb3dubG9hZGluZ1VwZGF0ZSE6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dEVycm9yV2hpbGVVcGRhdGluZ0FwcCE6IHN0cmluZztcbiAgQElucHV0KCkgdGV4dEZpbmlzaGVkVXBkYXRpbmchOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRleHROb1VwZGF0ZXNBdmFpbGFibGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRleHRVbmV4cGVjdGVkRXJyb3IhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR4dEFwcFN0b3JlVmVyc2lvbiE6IHN0cmluZztcbiAgQElucHV0KCkgdHh0Q2hhbm5lbCE6IHN0cmluZztcbiAgQElucHV0KCkgdHh0TmV4dFZlcnNpb24hOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR4dFVwZGF0ZSE6IHN0cmluZztcbiAgQElucHV0KCkgdHh0VmVyc2lvbiE6IHN0cmluZztcbiAgQElucHV0KCkgc3B4QXBwSWQhOiBzdHJpbmc7XG5cbiAgZm9ybTogRm9ybUdyb3VwO1xuXG4gIGRlbGF5ZWRQZXJjZW50YWdlOiBudW1iZXIgPSAwO1xuICBwZXJjZW50YWdlOiBudW1iZXIgPSAwO1xuICBzeW5jVHJ1Y2tJbnRlcnZhbDogYW55IHwgbnVsbCA9IG51bGw7XG4gIHVwZGF0ZVN0YXR1czogc3RyaW5nID0gdGhpcy50ZXh0Q2hlY2tpbmdGb3JVcGRhdGVzO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVwbG95OiBEZXBsb3ksXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwcGxpY2F0aW9uUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICkge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgW2N0cmxOZXh0VmVyc2lvbk51bWJlcl06IFtudWxsLCBbXV0sXG4gICAgICBbY3RybFZlcnNpb25OdW1iZXJdOiBbbnVsbCwgW11dLFxuICAgICAgW2N0cmxDb25maWd1cmVkQ2hhbm5lbF06IFtudWxsLCBbXV0sXG4gICAgICBbY3RybEFwcFN0b3JlVmVyc2lvbl06IFtudWxsLCBbXV0sXG4gICAgfSk7XG4gIH1cblxuICBnZXQgY3RybFZlcnNpb25OdW1iZXIoKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtLmdldChjdHJsVmVyc2lvbk51bWJlcikgYXMgRm9ybUNvbnRyb2w7IH1cbiAgZ2V0IGN0cmxOZXh0VmVyc2lvbk51bWJlcigpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm0uZ2V0KGN0cmxOZXh0VmVyc2lvbk51bWJlcikgYXMgRm9ybUNvbnRyb2w7IH1cbiAgZ2V0IGN0cmxDb25maWd1cmVkQ2hhbm5lbCgpOiBGb3JtQ29udHJvbCB7IHJldHVybiB0aGlzLmZvcm0uZ2V0KGN0cmxDb25maWd1cmVkQ2hhbm5lbCkgYXMgRm9ybUNvbnRyb2w7IH1cbiAgZ2V0IGN0cmxBcHBTdG9yZVZlcnNpb24oKTogRm9ybUNvbnRyb2wgeyByZXR1cm4gdGhpcy5mb3JtLmdldChjdHJsQXBwU3RvcmVWZXJzaW9uKSBhcyBGb3JtQ29udHJvbDsgfVxuXG4gIGluaXQoKSB7XG4gICAgdGhpcy5kZWxheWVkUGVyY2VudGFnZSA9IDA7XG4gICAgdGhpcy5wZXJjZW50YWdlID0gMDtcbiAgICB0aGlzLnBlcmZvcm1BdXRvbWF0aWNVcGRhdGUoKS50aGVuKCgpID0+IHsgfSk7XG4gICAgdGhpcy5zdGFydExvYWRlclN5bmMoKTtcbiAgICB0aGlzLmNoYW5nZVN0YXR1cyh7XG4gICAgICBwZXJjZW50YWdlOiAwLFxuICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy50ZXh0Q2hlY2tpbmdGb3JVcGRhdGVzKSxcbiAgICB9KTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdG9wTG9hZGVyU3luYygpO1xuICB9XG5cbiAgYXN5bmMgcGVyZm9ybUF1dG9tYXRpY1VwZGF0ZSgpIHtcbiAgICBjb25zdCBkZXZpY2VJbmZvID0gYXdhaXQgRGV2aWNlLmdldEluZm8oKTtcblxuICAgIGlmIChkZXZpY2VJbmZvPy5wbGF0Zm9ybSA9PT0gJ3dlYicpIHtcbiAgICAgIC8vIExvY2FsPyBTa2lwIHRoZSB1cGRhdGUgcGFnZS5cbiAgICAgIHRoaXMuY2xvc2VVcGRhdGVTY3JlZW4oKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMudXBkYXRlSW5mbygpO1xuXG4gICAgICAvLyBTdGFydCB1cGdyYWRlXG4gICAgICBjb25zdCBjdXJyZW50VmVyc2lvbiA9IGF3YWl0IHRoaXMuZGVwbG95LmdldEN1cnJlbnRWZXJzaW9uKCk7XG4gICAgICBpZiAoY3VycmVudFZlcnNpb24/LmJpbmFyeVZlcnNpb25OYW1lKSB7XG4gICAgICAgIGNvbnN0IGJpbmFyeUdyb3VwID0gY3VycmVudFZlcnNpb24uYmluYXJ5VmVyc2lvbk5hbWUuc3Vic3RyaW5nKDAsIDMpOyAvLyBlLmcuIFwiMS40XCJcbiAgICAgICAgY29uc3QgY2hhbm5lbEdyb3VwID0gY3VycmVudFZlcnNpb24uY2hhbm5lbC5zcGxpdCgnLScpWzFdLnN1YnN0cmluZygwLCAzKTsgLy8gZS5nLiBcIjEuNFwiXG4gICAgICAgIGNvbnN0IGNoYW5uZWxUeXBlID0gY3VycmVudFZlcnNpb24uY2hhbm5lbC5zcGxpdCgnLScpWzBdO1xuXG4gICAgICAgIGlmIChiaW5hcnlHcm91cCAhPSBjaGFubmVsR3JvdXApIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmRlcGxveS5jb25maWd1cmUoe1xuICAgICAgICAgICAgYXBwSWQ6IHRoaXMuc3B4QXBwSWQsXG4gICAgICAgICAgICBjaGFubmVsOiBgJHtjaGFubmVsVHlwZX0tJHtiaW5hcnlHcm91cH0ueGBcbiAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3luYygpLnRoZW4oKCkgPT4geyB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnN5bmMoKS50aGVuKCgpID0+IHsgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3luYygpLnRoZW4oKCkgPT4geyB9KTtcbiAgICAgIH1cbiAgICAgIC8vIEVuZCB1cGdyYWRlXG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgdGhpcy5jaGFuZ2VTdGF0dXMoe1xuICAgICAgICBjbG9zZVNjcmVlbjogdHJ1ZSxcbiAgICAgICAgZXJyb3IsXG4gICAgICAgIHBlcmNlbnRhZ2U6IDEwMCxcbiAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy50ZXh0VW5leHBlY3RlZEVycm9yKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzeW5jKCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnVwZGF0ZUluZm8oKTtcblxuICAgICAgY29uc3QgdXBkYXRlQXZhaWxhYmxlSW5mbyA9IGF3YWl0IHRoaXMuZGVwbG95LmNoZWNrRm9yVXBkYXRlKCk7XG4gICAgICBpZiAoIXVwZGF0ZUF2YWlsYWJsZUluZm8uYXZhaWxhYmxlKSB7XG4gICAgICAgIC8vIE5vIHVwZGF0ZSBhdmFpbGFibGVcbiAgICAgICAgdGhpcy5jaGFuZ2VTdGF0dXMoe1xuICAgICAgICAgIGNsb3NlU2NyZWVuOiB0cnVlLFxuICAgICAgICAgIHBlcmNlbnRhZ2U6IDAsXG4gICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy50ZXh0Tm9VcGRhdGVzQXZhaWxhYmxlKSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBEb3dubG9hZCB1cGRhdGVcbiAgICAgICAgYXdhaXQgdGhpcy5kZXBsb3kuc3luYyh7IHVwZGF0ZU1ldGhvZDogJ2F1dG8nIH0sIChwZXJjZW50YWdlKSA9PiB7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VTdGF0dXMoe1xuICAgICAgICAgICAgcGVyY2VudGFnZTogcGVyY2VudGFnZSA/PyAwLFxuICAgICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy50ZXh0RG93bmxvYWRpbmdVcGRhdGUsIHsgcGVyY2VudGFnZSwgdmVyc2lvbjogdXBkYXRlQXZhaWxhYmxlSW5mby5idWlsZCB9KSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VTdGF0dXMoe1xuICAgICAgICAgICAgY2xvc2VTY3JlZW46IHRydWUsXG4gICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgIHBlcmNlbnRhZ2U6IDEwMCxcbiAgICAgICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMudGV4dEVycm9yV2hpbGVVcGRhdGluZ0FwcCksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlU3RhdHVzKHtcbiAgICAgICAgICBjbG9zZVNjcmVlbjogdHJ1ZSxcbiAgICAgICAgICBwZXJjZW50YWdlOiAxMDAsXG4gICAgICAgICAgdGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGhpcy50ZXh0RmluaXNoZWRVcGRhdGluZywgeyB2ZXJzaW9uOiB1cGRhdGVBdmFpbGFibGVJbmZvLmJ1aWxkIH0pXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIC8vIENhdGNoIHVuZXhwZWN0ZWQgcGx1Zy1pbiBlcnJvcnNcbiAgICAgIHRoaXMuY2hhbmdlU3RhdHVzKHtcbiAgICAgICAgY2xvc2VTY3JlZW46IHRydWUsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBwZXJjZW50YWdlOiAxMDAsXG4gICAgICAgIHRleHQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMudGV4dFVuZXhwZWN0ZWRFcnJvcilcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlSW5mbygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjdXJyZW50VmVyc2lvbiA9IGF3YWl0IHRoaXMuZGVwbG95LmdldEN1cnJlbnRWZXJzaW9uKCk7XG4gICAgY29uc3QgY29uZmlndXJhdGlvbiA9IGF3YWl0IHRoaXMuZGVwbG95LmdldENvbmZpZ3VyYXRpb24oKTtcbiAgICBjb25zdCB1cGRhdGVBdmFpbGFibGVJbmZvID0gYXdhaXQgdGhpcy5kZXBsb3kuY2hlY2tGb3JVcGRhdGUoKTtcblxuICAgIGlmIChjdXJyZW50VmVyc2lvbikge1xuICAgICAgdGhpcy5jdHJsVmVyc2lvbk51bWJlci5zZXRWYWx1ZSh7XG4gICAgICAgIHZhbHVlOiBjb25maWd1cmF0aW9uPy5jdXJyZW50QnVpbGRJZCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jdHJsTmV4dFZlcnNpb25OdW1iZXIuc2V0VmFsdWUoe1xuICAgICAgICB2YWx1ZTogdXBkYXRlQXZhaWxhYmxlSW5mbz8uYnVpbGRcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jdHJsQ29uZmlndXJlZENoYW5uZWwuc2V0VmFsdWUoe1xuICAgICAgICB2YWx1ZTogY29uZmlndXJhdGlvbiA/IGNvbmZpZ3VyYXRpb24uY2hhbm5lbCA6IG51bGxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jdHJsQXBwU3RvcmVWZXJzaW9uLnNldFZhbHVlKHtcbiAgICAgICAgdmFsdWU6IGNvbmZpZ3VyYXRpb24gPyBjb25maWd1cmF0aW9uLmJpbmFyeVZlcnNpb25OYW1lIDogbnVsbFxuICAgICAgfSk7XG5cbiAgICAgIHtcbiAgICAgICAgY29uc3Qgc2NvcGUgPSBnZXRDdXJyZW50U2NvcGUoKTtcbiAgICAgICAgc2NvcGUuc2V0VGFnKCd2ZXJzaW9uX2JpbmFyeV9jb2RlJywgY3VycmVudFZlcnNpb24/LmJpbmFyeVZlcnNpb25Db2RlKTtcbiAgICAgICAgc2NvcGUuc2V0VGFnKCd2ZXJzaW9uX2JpbmFyeV9uYW1lJywgY3VycmVudFZlcnNpb24/LmJpbmFyeVZlcnNpb25OYW1lKTtcbiAgICAgICAgc2NvcGUuc2V0VGFnKCd2ZXJzaW9uX2J1aWxkX2lkJywgY3VycmVudFZlcnNpb24/LmJ1aWxkSWQpO1xuICAgICAgICBzY29wZS5zZXRUYWcoJ2NoYW5uZWxfdHlwZScsIGN1cnJlbnRWZXJzaW9uPy5jaGFubmVsKTtcbiAgICAgICAgc2NvcGUuc2V0VGFnKCd2ZXJzaW9uX3NuYXBzaG90X2lkJywgY3VycmVudFZlcnNpb24/LnZlcnNpb25JZCk7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5hcHBsaWNhdGlvblJlZi50aWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VTdGF0dXMoc3RhdHVzOiB7XG4gICAgZXJyb3I/OiBzdHJpbmc7XG4gICAgdGV4dDogc3RyaW5nO1xuICAgIGNsb3NlU2NyZWVuPzogYm9vbGVhbjtcbiAgICBwZXJjZW50YWdlOiBudW1iZXI7XG4gIH0pIHtcbiAgICB0aGlzLnVwZGF0ZVN0YXR1cyA9IHN0YXR1cy50ZXh0O1xuICAgIHRoaXMucGVyY2VudGFnZSA9IHN0YXR1cy5wZXJjZW50YWdlO1xuICAgIGlmIChzdGF0dXMuY2xvc2VTY3JlZW4pIHtcbiAgICAgIHRoaXMuY2xvc2VVcGRhdGVTY3JlZW4oKTtcbiAgICB9XG4gICAgaWYgKHN0YXR1cy5lcnJvcikge1xuICAgICAgLy8gdGhpcy5hcHBTdG9yZS5kaXNwYXRjaChcbiAgICAgIC8vICAgc2hhcmVkVG9hc3RlckFjdGlvbnMuQ1JFQVRFX0VSUk9SKHtcbiAgICAgIC8vICAgICBtZXNzYWdlVGV4dDogc3RhdHVzLmVycm9yLFxuICAgICAgLy8gICB9KVxuICAgICAgLy8gKTtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLmFwcGxpY2F0aW9uUmVmLnRpY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VVcGRhdGVTY3JlZW4oKSB7XG4gICAgLy8gQWxsb3dpbmcgc29tZSB0aW1lIHRvIG1ha2UgYSBzY3JlZW5zaG90IG9mIHZlcnNpb24gaW5mb1xuICAgIFNweFN0b3JhZ2UuY2xlYXJTZXR0aW5nPGFueT4oU3B4U3RvcmFnZUtleUVudW0udXBkYXRlSW5Qcm9ncmVzcyk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIFNweFN0b3JhZ2UuZ2V0U2V0dGluZzxhbnk+KFNweFN0b3JhZ2VLZXlFbnVtLmFmdGVyU2lnbkluKSAmJlxuICAgICAgICB0aGlzLnNweElzU2lnbmVkSW5cbiAgICAgICkge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbU3B4U3RvcmFnZS5nZXRTZXR0aW5nPGFueT4oU3B4U3RvcmFnZUtleUVudW0uYWZ0ZXJTaWduSW4pXSk7XG4gICAgICAgIFNweFN0b3JhZ2UuY2xlYXJTZXR0aW5nPGFueT4oU3B4U3RvcmFnZUtleUVudW0uYWZ0ZXJTaWduSW4pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5zcHhIb21lVXJsXSk7XG4gICAgICB9XG4gICAgfSwgMCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0TG9hZGVyU3luYygpIHtcbiAgICBTcHhTdG9yYWdlLnNldFNldHRpbmc8YW55PihTcHhTdG9yYWdlS2V5RW51bS51cGRhdGVJblByb2dyZXNzLCAnMScpO1xuICAgIGlmICh0aGlzLnN5bmNUcnVja0ludGVydmFsID09PSBudWxsKSB7XG4gICAgICB0aGlzLnN5bmNUcnVja0ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICB0aGlzLmRlbGF5ZWRQZXJjZW50YWdlID0gdGhpcy5wZXJjZW50YWdlO1xuICAgICAgfSwgMjAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0b3BMb2FkZXJTeW5jKCkge1xuICAgIGlmICh0aGlzLnN5bmNUcnVja0ludGVydmFsICE9PSBudWxsKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuc3luY1RydWNrSW50ZXJ2YWwpO1xuICAgICAgdGhpcy5zeW5jVHJ1Y2tJbnRlcnZhbCA9IG51bGw7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export * from './spx-button.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtYnV0dG9uL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc3B4LWJ1dHRvbi5jb21wb25lbnQnO1xuIl19
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29mdHBhay1jb21wb25lbnRzLXNweC1idXR0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWJ1dHRvbi9zb2Z0cGFrLWNvbXBvbmVudHMtc3B4LWJ1dHRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19