@softpak/components 0.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 (229) hide show
  1. package/README.md +24 -0
  2. package/esm2022/placeholder.mjs +2 -0
  3. package/esm2022/public_api.mjs +2 -0
  4. package/esm2022/softpak-components.mjs +5 -0
  5. package/esm2022/spx-alert/public-api.mjs +3 -0
  6. package/esm2022/spx-alert/softpak-components-spx-alert.mjs +5 -0
  7. package/esm2022/spx-alert/spx-alert.component.mjs +191 -0
  8. package/esm2022/spx-alert/spx-alert.interface.mjs +3 -0
  9. package/esm2022/spx-app-configuration/public-api.mjs +8 -0
  10. package/esm2022/spx-app-configuration/softpak-components-spx-app-configuration.mjs +5 -0
  11. package/esm2022/spx-app-configuration/spx-app-alert.interface.mjs +2 -0
  12. package/esm2022/spx-app-configuration/spx-app-bundle-set.interface.mjs +2 -0
  13. package/esm2022/spx-app-configuration/spx-app-channel-type.enum.mjs +8 -0
  14. package/esm2022/spx-app-configuration/spx-app-channel.interface.mjs +2 -0
  15. package/esm2022/spx-app-configuration/spx-app-config.interface.mjs +2 -0
  16. package/esm2022/spx-app-configuration/spx-app-id.enum.mjs +8 -0
  17. package/esm2022/spx-app-configuration/spx-app-lang.enum.mjs +6 -0
  18. package/esm2022/spx-app-configuration/spx-app-release-note.interface.mjs +2 -0
  19. package/esm2022/spx-button/public-api.mjs +2 -0
  20. package/esm2022/spx-button/softpak-components-spx-button.mjs +5 -0
  21. package/esm2022/spx-button/spx-button.component.mjs +129 -0
  22. package/esm2022/spx-capitalize/public-api.mjs +2 -0
  23. package/esm2022/spx-capitalize/softpak-components-spx-capitalize.mjs +5 -0
  24. package/esm2022/spx-capitalize/spx-capitalize.pipe.mjs +20 -0
  25. package/esm2022/spx-channel-selection/public-api.mjs +5 -0
  26. package/esm2022/spx-channel-selection/softpak-components-spx-channel-selection.mjs +5 -0
  27. package/esm2022/spx-channel-selection/src/spx-channel-indicator.component.mjs +45 -0
  28. package/esm2022/spx-channel-selection/src/spx-channel-selection.component.mjs +40 -0
  29. package/esm2022/spx-channel-selection/src/spx-company-selection.component.mjs +48 -0
  30. package/esm2022/spx-channel-selection/src/spx-welcome.component.mjs +43 -0
  31. package/esm2022/spx-check-digit/public-api.mjs +2 -0
  32. package/esm2022/spx-check-digit/softpak-components-spx-check-digit.mjs +5 -0
  33. package/esm2022/spx-check-digit/spx-check-digit.component.mjs +85 -0
  34. package/esm2022/spx-form-section/public-api.mjs +2 -0
  35. package/esm2022/spx-form-section/softpak-components-spx-form-section.mjs +5 -0
  36. package/esm2022/spx-form-section/spx-form-section.component.mjs +37 -0
  37. package/esm2022/spx-helpers/calc-check-digit.function.mjs +21 -0
  38. package/esm2022/spx-helpers/public-api.mjs +4 -0
  39. package/esm2022/spx-helpers/softpak-components-spx-helpers.mjs +5 -0
  40. package/esm2022/spx-helpers/spx-severity.enum.mjs +8 -0
  41. package/esm2022/spx-helpers/value-pair-to-value.function.mjs +7 -0
  42. package/esm2022/spx-inputs/public-api.mjs +5 -0
  43. package/esm2022/spx-inputs/softpak-components-spx-inputs.mjs +5 -0
  44. package/esm2022/spx-inputs/spx-input-box.component.mjs +231 -0
  45. package/esm2022/spx-inputs/spx-input-date.component.mjs +294 -0
  46. package/esm2022/spx-inputs/spx-input-float.component.mjs +154 -0
  47. package/esm2022/spx-inputs/spx-input-number.component.mjs +82 -0
  48. package/esm2022/spx-inputs/spx-input-radio.component.mjs +63 -0
  49. package/esm2022/spx-inputs/spx-input-text.component.mjs +156 -0
  50. package/esm2022/spx-inputs/spx-input.component.mjs +380 -0
  51. package/esm2022/spx-inputs/spx-value-interface.mjs +2 -0
  52. package/esm2022/spx-navigation/public-api.mjs +5 -0
  53. package/esm2022/spx-navigation/softpak-components-spx-navigation.mjs +5 -0
  54. package/esm2022/spx-navigation/spx-home-tile.component.mjs +33 -0
  55. package/esm2022/spx-navigation/spx-home-tiles.component.mjs +17 -0
  56. package/esm2022/spx-navigation/spx-navigation-item.interface.mjs +2 -0
  57. package/esm2022/spx-navigation/spx-navigation.component.mjs +42 -0
  58. package/esm2022/spx-patch/patch-check.function.mjs +9 -0
  59. package/esm2022/spx-patch/public-api.mjs +4 -0
  60. package/esm2022/spx-patch/release-check.function.mjs +11 -0
  61. package/esm2022/spx-patch/softpak-components-spx-patch.mjs +5 -0
  62. package/esm2022/spx-patch/spx-patch.component.mjs +46 -0
  63. package/esm2022/spx-progress-bar/public-api.mjs +2 -0
  64. package/esm2022/spx-progress-bar/softpak-components-spx-progress-bar.mjs +5 -0
  65. package/esm2022/spx-progress-bar/spx-progress-bar.component.mjs +29 -0
  66. package/esm2022/spx-spinner/public-api.mjs +2 -0
  67. package/esm2022/spx-spinner/softpak-components-spx-spinner.mjs +5 -0
  68. package/esm2022/spx-spinner/spx-spinner.component.mjs +157 -0
  69. package/esm2022/spx-storage/public-api.mjs +3 -0
  70. package/esm2022/spx-storage/softpak-components-spx-storage.mjs +5 -0
  71. package/esm2022/spx-storage/src/spx-storage-key.enum.mjs +13 -0
  72. package/esm2022/spx-storage/src/spx-storage.class.mjs +45 -0
  73. package/esm2022/spx-suggestion/public-api.mjs +2 -0
  74. package/esm2022/spx-suggestion/softpak-components-spx-suggestion.mjs +5 -0
  75. package/esm2022/spx-suggestion/spx-suggestion.component.mjs +47 -0
  76. package/esm2022/spx-toaster/public-api.mjs +4 -0
  77. package/esm2022/spx-toaster/softpak-components-spx-toaster.mjs +5 -0
  78. package/esm2022/spx-toaster/src/spx-toaster-autoclose-speed.mjs +23 -0
  79. package/esm2022/spx-toaster/src/spx-toaster-message.interface.mjs +3 -0
  80. package/esm2022/spx-toaster/src/spx-toaster.component.mjs +46 -0
  81. package/esm2022/spx-update/public-api.mjs +3 -0
  82. package/esm2022/spx-update/softpak-components-spx-update.mjs +5 -0
  83. package/esm2022/spx-update/src/spx-update-info.component.mjs +88 -0
  84. package/esm2022/spx-update/src/spx-update-progress.component.mjs +46 -0
  85. package/esm2022/spx-validation/max.validator.mjs +17 -0
  86. package/esm2022/spx-validation/maxlength.validator.mjs +20 -0
  87. package/esm2022/spx-validation/min.validator.mjs +17 -0
  88. package/esm2022/spx-validation/minlength.validator.mjs +20 -0
  89. package/esm2022/spx-validation/pattern.validator.mjs +12 -0
  90. package/esm2022/spx-validation/public-api.mjs +10 -0
  91. package/esm2022/spx-validation/required.validator.mjs +12 -0
  92. package/esm2022/spx-validation/softpak-components-spx-validation.mjs +5 -0
  93. package/esm2022/spx-validation/spx-validate-control.component.mjs +63 -0
  94. package/esm2022/spx-validation/spx-validation.module.mjs +28 -0
  95. package/esm2022/spx-validation/year-and-month.validator.mjs +42 -0
  96. package/fesm2022/softpak-components-spx-alert.mjs +201 -0
  97. package/fesm2022/softpak-components-spx-alert.mjs.map +1 -0
  98. package/fesm2022/softpak-components-spx-app-configuration.mjs +28 -0
  99. package/fesm2022/softpak-components-spx-app-configuration.mjs.map +1 -0
  100. package/fesm2022/softpak-components-spx-button.mjs +136 -0
  101. package/fesm2022/softpak-components-spx-button.mjs.map +1 -0
  102. package/fesm2022/softpak-components-spx-capitalize.mjs +27 -0
  103. package/fesm2022/softpak-components-spx-capitalize.mjs.map +1 -0
  104. package/fesm2022/softpak-components-spx-channel-selection.mjs +171 -0
  105. package/fesm2022/softpak-components-spx-channel-selection.mjs.map +1 -0
  106. package/fesm2022/softpak-components-spx-check-digit.mjs +92 -0
  107. package/fesm2022/softpak-components-spx-check-digit.mjs.map +1 -0
  108. package/fesm2022/softpak-components-spx-form-section.mjs +44 -0
  109. package/fesm2022/softpak-components-spx-form-section.mjs.map +1 -0
  110. package/fesm2022/softpak-components-spx-helpers.mjs +42 -0
  111. package/fesm2022/softpak-components-spx-helpers.mjs.map +1 -0
  112. package/fesm2022/softpak-components-spx-inputs.mjs +1340 -0
  113. package/fesm2022/softpak-components-spx-inputs.mjs.map +1 -0
  114. package/fesm2022/softpak-components-spx-navigation.mjs +93 -0
  115. package/fesm2022/softpak-components-spx-navigation.mjs.map +1 -0
  116. package/fesm2022/softpak-components-spx-patch.mjs +72 -0
  117. package/fesm2022/softpak-components-spx-patch.mjs.map +1 -0
  118. package/fesm2022/softpak-components-spx-progress-bar.mjs +36 -0
  119. package/fesm2022/softpak-components-spx-progress-bar.mjs.map +1 -0
  120. package/fesm2022/softpak-components-spx-spinner.mjs +164 -0
  121. package/fesm2022/softpak-components-spx-spinner.mjs.map +1 -0
  122. package/fesm2022/softpak-components-spx-storage.mjs +63 -0
  123. package/fesm2022/softpak-components-spx-storage.mjs.map +1 -0
  124. package/fesm2022/softpak-components-spx-suggestion.mjs +54 -0
  125. package/fesm2022/softpak-components-spx-suggestion.mjs.map +1 -0
  126. package/fesm2022/softpak-components-spx-toaster.mjs +79 -0
  127. package/fesm2022/softpak-components-spx-toaster.mjs.map +1 -0
  128. package/fesm2022/softpak-components-spx-update.mjs +138 -0
  129. package/fesm2022/softpak-components-spx-update.mjs.map +1 -0
  130. package/fesm2022/softpak-components-spx-validation.mjs +223 -0
  131. package/fesm2022/softpak-components-spx-validation.mjs.map +1 -0
  132. package/fesm2022/softpak-components.mjs +8 -0
  133. package/fesm2022/softpak-components.mjs.map +1 -0
  134. package/index.d.ts +5 -0
  135. package/package.json +135 -0
  136. package/placeholder.d.ts +1 -0
  137. package/public_api.d.ts +1 -0
  138. package/spx-alert/index.d.ts +5 -0
  139. package/spx-alert/public-api.d.ts +2 -0
  140. package/spx-alert/spx-alert.component.d.ts +28 -0
  141. package/spx-alert/spx-alert.interface.d.ts +7 -0
  142. package/spx-app-configuration/index.d.ts +5 -0
  143. package/spx-app-configuration/public-api.d.ts +7 -0
  144. package/spx-app-configuration/spx-app-alert.interface.d.ts +7 -0
  145. package/spx-app-configuration/spx-app-bundle-set.interface.d.ts +4 -0
  146. package/spx-app-configuration/spx-app-channel-type.enum.d.ts +6 -0
  147. package/spx-app-configuration/spx-app-channel.interface.d.ts +10 -0
  148. package/spx-app-configuration/spx-app-config.interface.d.ts +19 -0
  149. package/spx-app-configuration/spx-app-id.enum.d.ts +6 -0
  150. package/spx-app-configuration/spx-app-lang.enum.d.ts +4 -0
  151. package/spx-app-configuration/spx-app-release-note.interface.d.ts +8 -0
  152. package/spx-button/index.d.ts +5 -0
  153. package/spx-button/public-api.d.ts +1 -0
  154. package/spx-button/spx-button.component.d.ts +23 -0
  155. package/spx-capitalize/index.d.ts +5 -0
  156. package/spx-capitalize/public-api.d.ts +1 -0
  157. package/spx-capitalize/spx-capitalize.pipe.d.ts +8 -0
  158. package/spx-channel-selection/index.d.ts +5 -0
  159. package/spx-channel-selection/public-api.d.ts +4 -0
  160. package/spx-channel-selection/src/spx-channel-indicator.component.d.ts +13 -0
  161. package/spx-channel-selection/src/spx-channel-selection.component.d.ts +11 -0
  162. package/spx-channel-selection/src/spx-company-selection.component.d.ts +12 -0
  163. package/spx-channel-selection/src/spx-welcome.component.d.ts +12 -0
  164. package/spx-check-digit/index.d.ts +5 -0
  165. package/spx-check-digit/public-api.d.ts +1 -0
  166. package/spx-check-digit/spx-check-digit.component.d.ts +19 -0
  167. package/spx-form-section/index.d.ts +5 -0
  168. package/spx-form-section/public-api.d.ts +1 -0
  169. package/spx-form-section/spx-form-section.component.d.ts +9 -0
  170. package/spx-helpers/calc-check-digit.function.d.ts +1 -0
  171. package/spx-helpers/index.d.ts +5 -0
  172. package/spx-helpers/public-api.d.ts +3 -0
  173. package/spx-helpers/spx-severity.enum.d.ts +6 -0
  174. package/spx-helpers/value-pair-to-value.function.d.ts +1 -0
  175. package/spx-inputs/index.d.ts +5 -0
  176. package/spx-inputs/public-api.d.ts +4 -0
  177. package/spx-inputs/spx-input-box.component.d.ts +33 -0
  178. package/spx-inputs/spx-input-date.component.d.ts +50 -0
  179. package/spx-inputs/spx-input-float.component.d.ts +28 -0
  180. package/spx-inputs/spx-input-number.component.d.ts +22 -0
  181. package/spx-inputs/spx-input-radio.component.d.ts +18 -0
  182. package/spx-inputs/spx-input-text.component.d.ts +29 -0
  183. package/spx-inputs/spx-input.component.d.ts +58 -0
  184. package/spx-inputs/spx-value-interface.d.ts +4 -0
  185. package/spx-navigation/index.d.ts +5 -0
  186. package/spx-navigation/public-api.d.ts +4 -0
  187. package/spx-navigation/spx-home-tile.component.d.ts +6 -0
  188. package/spx-navigation/spx-home-tiles.component.d.ts +5 -0
  189. package/spx-navigation/spx-navigation-item.interface.d.ts +19 -0
  190. package/spx-navigation/spx-navigation.component.d.ts +12 -0
  191. package/spx-patch/index.d.ts +5 -0
  192. package/spx-patch/patch-check.function.d.ts +4 -0
  193. package/spx-patch/public-api.d.ts +3 -0
  194. package/spx-patch/release-check.function.d.ts +1 -0
  195. package/spx-patch/spx-patch.component.d.ts +10 -0
  196. package/spx-progress-bar/index.d.ts +5 -0
  197. package/spx-progress-bar/public-api.d.ts +1 -0
  198. package/spx-progress-bar/spx-progress-bar.component.d.ts +7 -0
  199. package/spx-spinner/index.d.ts +5 -0
  200. package/spx-spinner/public-api.d.ts +1 -0
  201. package/spx-spinner/spx-spinner.component.d.ts +7 -0
  202. package/spx-storage/index.d.ts +5 -0
  203. package/spx-storage/public-api.d.ts +2 -0
  204. package/spx-storage/src/spx-storage-key.enum.d.ts +10 -0
  205. package/spx-storage/src/spx-storage.class.d.ts +9 -0
  206. package/spx-suggestion/index.d.ts +5 -0
  207. package/spx-suggestion/public-api.d.ts +1 -0
  208. package/spx-suggestion/spx-suggestion.component.d.ts +7 -0
  209. package/spx-toaster/index.d.ts +5 -0
  210. package/spx-toaster/public-api.d.ts +3 -0
  211. package/spx-toaster/src/spx-toaster-autoclose-speed.d.ts +11 -0
  212. package/spx-toaster/src/spx-toaster-message.interface.d.ts +9 -0
  213. package/spx-toaster/src/spx-toaster.component.d.ts +11 -0
  214. package/spx-update/index.d.ts +5 -0
  215. package/spx-update/public-api.d.ts +2 -0
  216. package/spx-update/src/spx-update-info.component.d.ts +18 -0
  217. package/spx-update/src/spx-update-progress.component.d.ts +14 -0
  218. package/spx-validation/index.d.ts +5 -0
  219. package/spx-validation/max.validator.d.ts +7 -0
  220. package/spx-validation/maxlength.validator.d.ts +7 -0
  221. package/spx-validation/min.validator.d.ts +7 -0
  222. package/spx-validation/minlength.validator.d.ts +7 -0
  223. package/spx-validation/pattern.validator.d.ts +2 -0
  224. package/spx-validation/public-api.d.ts +9 -0
  225. package/spx-validation/required.validator.d.ts +2 -0
  226. package/spx-validation/spx-validate-control.component.d.ts +24 -0
  227. package/spx-validation/spx-validation.module.d.ts +9 -0
  228. package/spx-validation/year-and-month.validator.d.ts +2 -0
  229. package/tailwind.css +1 -0
@@ -0,0 +1,154 @@
1
+ import { NgFor, NgIf } from '@angular/common';
2
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
3
+ import { SpxButtonComponent } from '@softpak/components/spx-button';
4
+ import * as i0 from "@angular/core";
5
+ export class SpxInputFloatComponent {
6
+ constructor() {
7
+ // private elFirstInput?: HTMLElement;
8
+ // private elSecondInput?: HTMLElement;
9
+ this.internalValue = {
10
+ first: null,
11
+ second: null,
12
+ };
13
+ this.spxAutofocus = false;
14
+ this.spxReadonly = false;
15
+ this.spxFocused = true;
16
+ this.spxChange = new EventEmitter();
17
+ this.spxFocus = new EventEmitter();
18
+ this.spxWasInternalUpdate = false;
19
+ this.tick = {};
20
+ }
21
+ async spxSetFocus() {
22
+ // this.elFirstInput.focus();
23
+ }
24
+ // @Watch('value') onValueChanged(newValue: SpxValuePair<any>, _oldValue: SpxValuePair<any>) {
25
+ // this.handleSetValue(newValue);
26
+ // }
27
+ componentDidLoad() {
28
+ if (this.spxAutofocus) {
29
+ this.spxFocus.emit();
30
+ this.spxSetFocus();
31
+ }
32
+ this.handleSetValue(this.value);
33
+ }
34
+ handleFocus() {
35
+ this.spxFocus.emit();
36
+ }
37
+ handleSetValue(newValue) {
38
+ if (this.isNumeric(newValue?.value)) {
39
+ this.internalValue = {
40
+ first: Math.floor(parseFloat(newValue?.value)),
41
+ second: newValue?.value?.split ? newValue?.value.split('.')[1] : 0,
42
+ };
43
+ }
44
+ else {
45
+ this.internalValue = {
46
+ first: null,
47
+ second: null,
48
+ };
49
+ }
50
+ this.tick = {};
51
+ }
52
+ handleInput(event, position) {
53
+ this.internalValue = {
54
+ first: position === 1 ? (event.target ? event.target.value : null) : this.internalValue.first,
55
+ second: position === 2 ? (event.target ? event.target.value : null) : this.internalValue.second,
56
+ };
57
+ let result;
58
+ if (this.internalValue.first === null && this.internalValue.second === null) {
59
+ result = null;
60
+ }
61
+ else {
62
+ result = `${this.internalValue.first ? this.internalValue.first : 0}.${this.internalValue.second ? this.internalValue.second : 0}`;
63
+ }
64
+ this.value = {
65
+ description: result,
66
+ value: result,
67
+ };
68
+ this.spxChange.emit(this.value);
69
+ }
70
+ isNumeric(value) {
71
+ return /^[+-]?\d+(\.\d+)?$/.test(value);
72
+ }
73
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxInputFloatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
74
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: SpxInputFloatComponent, isStandalone: true, selector: "spx-input-float", inputs: { spxName: "spxName", spxAutofocus: "spxAutofocus", spxReadonly: "spxReadonly", spxValidators: "spxValidators", spxFocused: "spxFocused", spxStep: "spxStep", value: "value", spxWasInternalUpdate: "spxWasInternalUpdate", tick: "tick" }, outputs: { spxChange: "spxChange", spxFocus: "spxFocus" }, ngImport: i0, template: `<div class="flex items-end">
75
+ <input
76
+ class="spx-input-float__input"
77
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
78
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
79
+ [attr.pattern]="'[0-9]*'"
80
+ [attr.step]="1"
81
+ [attr.type]="'text'"
82
+ [attr.value]="this.internalValue?.first ? this.internalValue?.first : undefined"
83
+ [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
84
+ (focus)="this.handleFocus()"
85
+ (input)="this.handleInput($event, 1)" />
86
+ <span class="text-black font-bold text-2xl mx-4">,</span>
87
+ <input
88
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
89
+ class="spx-input-float__input"
90
+ [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
91
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
92
+ [attr.value]="this.internalValue?.second ? this.internalValue?.second : undefined"
93
+ (focus)="this.handleFocus()"
94
+ (input)="this.handleInput($event, 2)"
95
+ [attr.step]="1"
96
+ [attr.type]="'text'"
97
+ [attr.pattern]="'[0-9]*'" />
98
+ </div>`, isInline: true, styles: [":host{display:block}.spx-input-float__input{border:1px solid #333333;border-radius:8px;background-color:transparent;box-sizing:border-box;color:var(--spx-input--color, rgba(0, 0, 0, .9));flex:1;font-size:20px;font-weight:700;padding:8px;width:100%}.spx-input-float__input:focus{outline:none}\n"] }); }
99
+ }
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxInputFloatComponent, decorators: [{
101
+ type: Component,
102
+ args: [{ selector: 'spx-input-float', standalone: true, imports: [
103
+ NgIf,
104
+ NgFor,
105
+ SpxButtonComponent,
106
+ ], template: `<div class="flex items-end">
107
+ <input
108
+ class="spx-input-float__input"
109
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
110
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
111
+ [attr.pattern]="'[0-9]*'"
112
+ [attr.step]="1"
113
+ [attr.type]="'text'"
114
+ [attr.value]="this.internalValue?.first ? this.internalValue?.first : undefined"
115
+ [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
116
+ (focus)="this.handleFocus()"
117
+ (input)="this.handleInput($event, 1)" />
118
+ <span class="text-black font-bold text-2xl mx-4">,</span>
119
+ <input
120
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
121
+ class="spx-input-float__input"
122
+ [class.spx-input-float--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
123
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
124
+ [attr.value]="this.internalValue?.second ? this.internalValue?.second : undefined"
125
+ (focus)="this.handleFocus()"
126
+ (input)="this.handleInput($event, 2)"
127
+ [attr.step]="1"
128
+ [attr.type]="'text'"
129
+ [attr.pattern]="'[0-9]*'" />
130
+ </div>`, styles: [":host{display:block}.spx-input-float__input{border:1px solid #333333;border-radius:8px;background-color:transparent;box-sizing:border-box;color:var(--spx-input--color, rgba(0, 0, 0, .9));flex:1;font-size:20px;font-weight:700;padding:8px;width:100%}.spx-input-float__input:focus{outline:none}\n"] }]
131
+ }], propDecorators: { spxName: [{
132
+ type: Input
133
+ }], spxAutofocus: [{
134
+ type: Input
135
+ }], spxReadonly: [{
136
+ type: Input
137
+ }], spxValidators: [{
138
+ type: Input
139
+ }], spxFocused: [{
140
+ type: Input
141
+ }], spxStep: [{
142
+ type: Input
143
+ }], value: [{
144
+ type: Input
145
+ }], spxChange: [{
146
+ type: Output
147
+ }], spxFocus: [{
148
+ type: Output
149
+ }], spxWasInternalUpdate: [{
150
+ type: Input
151
+ }], tick: [{
152
+ type: Input
153
+ }] } });
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWlucHV0LWZsb2F0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtaW5wdXRzL3NweC1pbnB1dC1mbG9hdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQTBEcEUsTUFBTSxPQUFPLHNCQUFzQjtJQXhEbkM7UUF5REUsc0NBQXNDO1FBQ3RDLHVDQUF1QztRQUM3QixrQkFBYSxHQUduQjtZQUNGLEtBQUssRUFBRSxJQUFJO1lBQ1gsTUFBTSxFQUFFLElBQUk7U0FDYixDQUFDO1FBR08saUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFcEIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUdqQixjQUFTLEdBQW9DLElBQUksWUFBWSxFQUFxQixDQUFDO1FBQ25GLGFBQVEsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN6RCx5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDN0IsU0FBSSxHQUFHLEVBQUUsQ0FBQztLQTBEcEI7SUF4REMsS0FBSyxDQUFDLFdBQVc7UUFDZiw2QkFBNkI7SUFDL0IsQ0FBQztJQUVELDhGQUE4RjtJQUM5RixtQ0FBbUM7SUFDbkMsSUFBSTtJQUVKLGdCQUFnQjtRQUNkLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUEyQjtRQUN4QyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGFBQWEsR0FBRztnQkFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDOUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNuRSxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsYUFBYSxHQUFHO2dCQUNuQixLQUFLLEVBQUUsSUFBSTtnQkFDWCxNQUFNLEVBQUUsSUFBSTthQUNiLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFVLEVBQUUsUUFBZTtRQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHO1lBQ25CLEtBQUssRUFBRSxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLO1lBQzdGLE1BQU0sRUFBRSxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNO1NBQ2hHLENBQUM7UUFDRixJQUFJLE1BQU0sQ0FBQztRQUNYLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzVFLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDaEIsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JJLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHO1lBQ1gsV0FBVyxFQUFFLE1BQU07WUFDbkIsS0FBSyxFQUFFLE1BQU07U0FDZCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBYTtRQUNyQixPQUFPLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDOzhHQTlFVSxzQkFBc0I7a0dBQXRCLHNCQUFzQiwwWEFoRHZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F3Qkw7OzJGQXdCTSxzQkFBc0I7a0JBeERsQyxTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUDt3QkFDUCxJQUFJO3dCQUNKLEtBQUs7d0JBQ0wsa0JBQWtCO3FCQUNuQixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F3Qkw7OEJBbUNJLE9BQU87c0JBQWYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNFLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3B4VmFsdWVQYWlyIH0gZnJvbSAnLi9zcHgtdmFsdWUtaW50ZXJmYWNlJztcbmltcG9ydCB7IFNweEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWJ1dHRvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NweC1pbnB1dC1mbG9hdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0lmLFxuICAgIE5nRm9yLFxuICAgIFNweEJ1dHRvbkNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1lbmRcIj5cbiAgPGlucHV0XG4gICAgY2xhc3M9XCJzcHgtaW5wdXQtZmxvYXRfX2lucHV0XCJcbiAgICBbYXR0ci5hdXRvZm9jdXNdPVwidGhpcy5zcHhBdXRvZm9jdXMgPyB0aGlzLnNweEF1dG9mb2N1cyA6IHVuZGVmaW5lZFwiXG4gICAgW2F0dHIuZGlzYWJsZWRdPVwidGhpcy5zcHhSZWFkb25seSA/IHRoaXMuc3B4UmVhZG9ubHkgOiB1bmRlZmluZWRcIlxuICAgIFthdHRyLnBhdHRlcm5dPVwiJ1swLTldKidcIlxuICAgIFthdHRyLnN0ZXBdPVwiMVwiXG4gICAgW2F0dHIudHlwZV09XCIndGV4dCdcIlxuICAgIFthdHRyLnZhbHVlXT1cInRoaXMuaW50ZXJuYWxWYWx1ZT8uZmlyc3QgPyB0aGlzLmludGVybmFsVmFsdWU/LmZpcnN0IDogdW5kZWZpbmVkXCJcbiAgICBbY2xhc3Muc3B4LWlucHV0LWZsb2F0LS1yZWFkb25seV09XCJ0aGlzLnNweFJlYWRvbmx5ID8gdGhpcy5zcHhSZWFkb25seSA6IHVuZGVmaW5lZFwiXG4gICAgKGZvY3VzKT1cInRoaXMuaGFuZGxlRm9jdXMoKVwiXG4gICAgKGlucHV0KT1cInRoaXMuaGFuZGxlSW5wdXQoJGV2ZW50LCAxKVwiIC8+XG4gIDxzcGFuIGNsYXNzPVwidGV4dC1ibGFjayBmb250LWJvbGQgdGV4dC0yeGwgbXgtNFwiPiw8L3NwYW4+XG4gIDxpbnB1dFxuICAgIFthdHRyLmF1dG9mb2N1c109XCJ0aGlzLnNweEF1dG9mb2N1cyA/IHRoaXMuc3B4QXV0b2ZvY3VzIDogdW5kZWZpbmVkXCJcbiAgICBjbGFzcz1cInNweC1pbnB1dC1mbG9hdF9faW5wdXRcIlxuICAgIFtjbGFzcy5zcHgtaW5wdXQtZmxvYXQtLXJlYWRvbmx5XT1cInRoaXMuc3B4UmVhZG9ubHkgPyB0aGlzLnNweFJlYWRvbmx5IDogdW5kZWZpbmVkXCJcbiAgICBbYXR0ci5kaXNhYmxlZF09XCJ0aGlzLnNweFJlYWRvbmx5ID8gdGhpcy5zcHhSZWFkb25seSA6IHVuZGVmaW5lZFwiXG4gICAgW2F0dHIudmFsdWVdPVwidGhpcy5pbnRlcm5hbFZhbHVlPy5zZWNvbmQgPyB0aGlzLmludGVybmFsVmFsdWU/LnNlY29uZCA6IHVuZGVmaW5lZFwiXG4gICAgKGZvY3VzKT1cInRoaXMuaGFuZGxlRm9jdXMoKVwiXG4gICAgKGlucHV0KT1cInRoaXMuaGFuZGxlSW5wdXQoJGV2ZW50LCAyKVwiXG4gICAgW2F0dHIuc3RlcF09XCIxXCJcbiAgICBbYXR0ci50eXBlXT1cIid0ZXh0J1wiXG4gICAgW2F0dHIucGF0dGVybl09XCInWzAtOV0qJ1wiIC8+XG48L2Rpdj5gLFxuICBzdHlsZXM6IGBcbiAgOmhvc3Qge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLnNweC1pbnB1dC1mbG9hdF9faW5wdXQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjMzMzMzMzO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBjb2xvcjogdmFyKC0tc3B4LWlucHV0LS1jb2xvciwgcmdiYSgwLCAwLCAwLCAuOSkpO1xuICBmbGV4OiAxO1xuICBmb250LXNpemU6IDIwcHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBwYWRkaW5nOiA4cHg7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uc3B4LWlucHV0LWZsb2F0X19pbnB1dDpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmU7XG59XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIFNweElucHV0RmxvYXRDb21wb25lbnQge1xuICAvLyBwcml2YXRlIGVsRmlyc3RJbnB1dD86IEhUTUxFbGVtZW50O1xuICAvLyBwcml2YXRlIGVsU2Vjb25kSW5wdXQ/OiBIVE1MRWxlbWVudDtcbiAgcHJvdGVjdGVkIGludGVybmFsVmFsdWU6IHtcbiAgICBmaXJzdDogbnVtYmVyIHwgbnVsbDtcbiAgICBzZWNvbmQ6IG51bWJlciB8IG51bGw7XG4gIH0gPSB7XG4gICAgZmlyc3Q6IG51bGwsXG4gICAgc2Vjb25kOiBudWxsLFxuICB9O1xuICAvLyBARWxlbWVudCgpIGVsITogSFRNTFN0ZW5jaWxFbGVtZW50O1xuICBASW5wdXQoKSBzcHhOYW1lITogc3RyaW5nO1xuICBASW5wdXQoKSBzcHhBdXRvZm9jdXMgPSBmYWxzZTtcbiAgQElucHV0KCkgc3B4UmVhZG9ubHkgPSBmYWxzZTtcbiAgQElucHV0KCkgc3B4VmFsaWRhdG9ycyE6IGFueVtdO1xuICBASW5wdXQoKSBzcHhGb2N1c2VkID0gdHJ1ZTtcbiAgQElucHV0KCkgc3B4U3RlcD86IG51bWJlcjtcbiAgQElucHV0KCkgdmFsdWUhOiBTcHhWYWx1ZVBhaXI8YW55PjtcbiAgQE91dHB1dCgpIHNweENoYW5nZTogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxhbnk+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPGFueT4+KCk7XG4gIEBPdXRwdXQoKSBzcHhGb2N1czogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBASW5wdXQoKSBzcHhXYXNJbnRlcm5hbFVwZGF0ZSA9IGZhbHNlO1xuICBASW5wdXQoKSB0aWNrID0ge307XG4gIFxuICBhc3luYyBzcHhTZXRGb2N1cygpIHtcbiAgICAvLyB0aGlzLmVsRmlyc3RJbnB1dC5mb2N1cygpO1xuICB9XG5cbiAgLy8gQFdhdGNoKCd2YWx1ZScpIG9uVmFsdWVDaGFuZ2VkKG5ld1ZhbHVlOiBTcHhWYWx1ZVBhaXI8YW55PiwgX29sZFZhbHVlOiBTcHhWYWx1ZVBhaXI8YW55Pikge1xuICAvLyAgIHRoaXMuaGFuZGxlU2V0VmFsdWUobmV3VmFsdWUpO1xuICAvLyB9XG5cbiAgY29tcG9uZW50RGlkTG9hZCgpIHtcbiAgICBpZiAodGhpcy5zcHhBdXRvZm9jdXMpIHtcbiAgICAgIHRoaXMuc3B4Rm9jdXMuZW1pdCgpO1xuICAgICAgdGhpcy5zcHhTZXRGb2N1cygpO1xuICAgIH1cbiAgICB0aGlzLmhhbmRsZVNldFZhbHVlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgaGFuZGxlRm9jdXMoKSB7XG4gICAgdGhpcy5zcHhGb2N1cy5lbWl0KCk7XG4gIH1cblxuICBoYW5kbGVTZXRWYWx1ZShuZXdWYWx1ZTogU3B4VmFsdWVQYWlyPGFueT4pIHtcbiAgICBpZiAodGhpcy5pc051bWVyaWMobmV3VmFsdWU/LnZhbHVlKSkge1xuICAgICAgdGhpcy5pbnRlcm5hbFZhbHVlID0ge1xuICAgICAgICBmaXJzdDogTWF0aC5mbG9vcihwYXJzZUZsb2F0KG5ld1ZhbHVlPy52YWx1ZSkpLFxuICAgICAgICBzZWNvbmQ6IG5ld1ZhbHVlPy52YWx1ZT8uc3BsaXQgPyBuZXdWYWx1ZT8udmFsdWUuc3BsaXQoJy4nKVsxXSA6IDAsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmludGVybmFsVmFsdWUgPSB7XG4gICAgICAgIGZpcnN0OiBudWxsLFxuICAgICAgICBzZWNvbmQ6IG51bGwsXG4gICAgICB9O1xuICAgIH1cbiAgICB0aGlzLnRpY2sgPSB7fTtcbiAgfVxuXG4gIGhhbmRsZUlucHV0KGV2ZW50OiBhbnksIHBvc2l0aW9uOiAxIHwgMikge1xuICAgIHRoaXMuaW50ZXJuYWxWYWx1ZSA9IHtcbiAgICAgIGZpcnN0OiBwb3NpdGlvbiA9PT0gMSA/IChldmVudC50YXJnZXQgPyBldmVudC50YXJnZXQudmFsdWUgOiBudWxsKSA6IHRoaXMuaW50ZXJuYWxWYWx1ZS5maXJzdCxcbiAgICAgIHNlY29uZDogcG9zaXRpb24gPT09IDIgPyAoZXZlbnQudGFyZ2V0ID8gZXZlbnQudGFyZ2V0LnZhbHVlIDogbnVsbCkgOiB0aGlzLmludGVybmFsVmFsdWUuc2Vjb25kLFxuICAgIH07XG4gICAgbGV0IHJlc3VsdDtcbiAgICBpZiAodGhpcy5pbnRlcm5hbFZhbHVlLmZpcnN0ID09PSBudWxsICYmIHRoaXMuaW50ZXJuYWxWYWx1ZS5zZWNvbmQgPT09IG51bGwpIHtcbiAgICAgIHJlc3VsdCA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IGAke3RoaXMuaW50ZXJuYWxWYWx1ZS5maXJzdCA/IHRoaXMuaW50ZXJuYWxWYWx1ZS5maXJzdCA6IDB9LiR7dGhpcy5pbnRlcm5hbFZhbHVlLnNlY29uZCA/IHRoaXMuaW50ZXJuYWxWYWx1ZS5zZWNvbmQgOiAwfWA7XG4gICAgfVxuICAgIHRoaXMudmFsdWUgPSB7XG4gICAgICBkZXNjcmlwdGlvbjogcmVzdWx0LFxuICAgICAgdmFsdWU6IHJlc3VsdCxcbiAgICB9O1xuICAgIHRoaXMuc3B4Q2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cblxuICBpc051bWVyaWModmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiAvXlsrLV0/XFxkKyhcXC5cXGQrKT8kLy50ZXN0KHZhbHVlKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,82 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class SpxInputNumberComponent {
4
+ constructor() {
5
+ this.spxAutofocus = false;
6
+ this.spxReadonly = false;
7
+ this.spxFocused = true;
8
+ this.spxChange = new EventEmitter();
9
+ this.spxFocus = new EventEmitter();
10
+ this.spxWasInternalUpdate = false;
11
+ }
12
+ async spxSetFocus() {
13
+ // this.elInput.focus();
14
+ }
15
+ componentDidLoad() {
16
+ if (this.spxAutofocus) {
17
+ this.spxFocus.emit();
18
+ this.spxSetFocus();
19
+ }
20
+ }
21
+ handleFocus() {
22
+ this.spxFocus.emit();
23
+ }
24
+ handleInput(event) {
25
+ this.value = {
26
+ description: event.target ? event.target.value : null,
27
+ value: event.target ? event.target.value : null,
28
+ };
29
+ this.spxChange.emit(this.value);
30
+ }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxInputNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
32
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: SpxInputNumberComponent, isStandalone: true, selector: "spx-input-number", inputs: { spxName: "spxName", spxAutofocus: "spxAutofocus", spxInputMode: "spxInputMode", spxReadonly: "spxReadonly", spxValidators: "spxValidators", spxFocused: "spxFocused", spxStep: "spxStep", value: "value" }, outputs: { spxChange: "spxChange", spxFocus: "spxFocus" }, ngImport: i0, template: `<div class="spx-input-number__controls">
33
+ <input
34
+ class="spx-input-number__input"
35
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
36
+ [class.spx-input-number--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
37
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
38
+ [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
39
+ [attr.value]="this.value?.value ? this.value?.value : undefined"
40
+ [attr.step]="this.spxStep ? this.spxStep : undefined"
41
+ [attr.type]="'number'"
42
+ (focus)="this.handleFocus()"
43
+ (input)="this.handleInput($event)" />
44
+ </div>`, isInline: true, styles: [":host{display:block}.spx-input-number__input{border:0;background-color:transparent;box-sizing:border-box;color:var(--spx-input--color, rgba(0, 0, 0, .9));font-size:20px;font-weight:700;margin-right:10px;padding:0;width:100%}.spx-input-number__input:focus{outline:none}.spx-input-number__value{color:#0009;font-size:14px}\n"] }); }
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxInputNumberComponent, decorators: [{
47
+ type: Component,
48
+ args: [{ selector: 'spx-input-number', standalone: true, imports: [], template: `<div class="spx-input-number__controls">
49
+ <input
50
+ class="spx-input-number__input"
51
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
52
+ [class.spx-input-number--readonly]="this.spxReadonly ? this.spxReadonly : undefined"
53
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
54
+ [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
55
+ [attr.value]="this.value?.value ? this.value?.value : undefined"
56
+ [attr.step]="this.spxStep ? this.spxStep : undefined"
57
+ [attr.type]="'number'"
58
+ (focus)="this.handleFocus()"
59
+ (input)="this.handleInput($event)" />
60
+ </div>`, styles: [":host{display:block}.spx-input-number__input{border:0;background-color:transparent;box-sizing:border-box;color:var(--spx-input--color, rgba(0, 0, 0, .9));font-size:20px;font-weight:700;margin-right:10px;padding:0;width:100%}.spx-input-number__input:focus{outline:none}.spx-input-number__value{color:#0009;font-size:14px}\n"] }]
61
+ }], propDecorators: { spxName: [{
62
+ type: Input
63
+ }], spxAutofocus: [{
64
+ type: Input
65
+ }], spxInputMode: [{
66
+ type: Input
67
+ }], spxReadonly: [{
68
+ type: Input
69
+ }], spxValidators: [{
70
+ type: Input
71
+ }], spxFocused: [{
72
+ type: Input
73
+ }], spxStep: [{
74
+ type: Input
75
+ }], value: [{
76
+ type: Input
77
+ }], spxChange: [{
78
+ type: Output
79
+ }], spxFocus: [{
80
+ type: Output
81
+ }] } });
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWlucHV0LW51bWJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zb2Z0cGFrL2NvbXBvbmVudHMvc3B4LWlucHV0cy9zcHgtaW5wdXQtbnVtYmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQStDdkUsTUFBTSxPQUFPLHVCQUF1QjtJQTVDcEM7UUFnRFcsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFcEIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUdqQixjQUFTLEdBQW9DLElBQUksWUFBWSxFQUFxQixDQUFDO1FBQ25GLGFBQVEsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNsRSx5QkFBb0IsR0FBRyxLQUFLLENBQUM7S0F3QjlCO0lBdEJDLEtBQUssQ0FBQyxXQUFXO1FBQ2Ysd0JBQXdCO0lBQzFCLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVTtRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHO1lBQ1gsV0FBVyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQ3JELEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtTQUNoRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7OEdBcENVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLDZWQXhDeEI7Ozs7Ozs7Ozs7OztPQVlMOzsyRkE0Qk0sdUJBQXVCO2tCQTVDbkMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLEVBQUUsWUFDRDs7Ozs7Ozs7Ozs7O09BWUw7OEJBK0JJLE9BQU87c0JBQWYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3B4VmFsdWVQYWlyIH0gZnJvbSAnLi9zcHgtdmFsdWUtaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3B4LWlucHV0LW51bWJlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtdLFxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJzcHgtaW5wdXQtbnVtYmVyX19jb250cm9sc1wiPlxuICA8aW5wdXRcbiAgICBjbGFzcz1cInNweC1pbnB1dC1udW1iZXJfX2lucHV0XCJcbiAgICBbYXR0ci5hdXRvZm9jdXNdPVwidGhpcy5zcHhBdXRvZm9jdXMgPyB0aGlzLnNweEF1dG9mb2N1cyA6IHVuZGVmaW5lZFwiXG4gICAgW2NsYXNzLnNweC1pbnB1dC1udW1iZXItLXJlYWRvbmx5XT1cInRoaXMuc3B4UmVhZG9ubHkgPyB0aGlzLnNweFJlYWRvbmx5IDogdW5kZWZpbmVkXCJcbiAgICBbYXR0ci5kaXNhYmxlZF09XCJ0aGlzLnNweFJlYWRvbmx5ID8gdGhpcy5zcHhSZWFkb25seSA6IHVuZGVmaW5lZFwiXG4gICAgW2F0dHIuaW5wdXRNb2RlXT1cInRoaXMuc3B4SW5wdXRNb2RlID8gdGhpcy5zcHhJbnB1dE1vZGUgOiB1bmRlZmluZWRcIlxuICAgIFthdHRyLnZhbHVlXT1cInRoaXMudmFsdWU/LnZhbHVlID8gdGhpcy52YWx1ZT8udmFsdWUgOiB1bmRlZmluZWRcIlxuICAgIFthdHRyLnN0ZXBdPVwidGhpcy5zcHhTdGVwID8gdGhpcy5zcHhTdGVwIDogdW5kZWZpbmVkXCJcbiAgICBbYXR0ci50eXBlXT1cIidudW1iZXInXCJcbiAgICAoZm9jdXMpPVwidGhpcy5oYW5kbGVGb2N1cygpXCJcbiAgICAoaW5wdXQpPVwidGhpcy5oYW5kbGVJbnB1dCgkZXZlbnQpXCIgLz5cbjwvZGl2PmAsXG4gIHN0eWxlczogYFxuOmhvc3Qge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLnNweC1pbnB1dC1udW1iZXJfX2lucHV0IHtcbiAgYm9yZGVyOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgY29sb3I6IHZhcigtLXNweC1pbnB1dC0tY29sb3IsIHJnYmEoMCwgMCwgMCwgLjkpKTtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICBwYWRkaW5nOiAwO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnNweC1pbnB1dC1udW1iZXJfX2lucHV0OmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTtcbn1cblxuLnNweC1pbnB1dC1udW1iZXJfX3ZhbHVlIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgLjYpO1xuICBmb250LXNpemU6IDE0cHg7XG59XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIFNweElucHV0TnVtYmVyQ29tcG9uZW50IHtcbiAgLy8gcHJpdmF0ZSBlbElucHV0PzogSFRNTEVsZW1lbnQ7XG4gIC8vIEBFbGVtZW50KCkgZWwhOiBIVE1MRWxlbWVudDtcbiAgQElucHV0KCkgc3B4TmFtZSE6IHN0cmluZztcbiAgQElucHV0KCkgc3B4QXV0b2ZvY3VzID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNweElucHV0TW9kZT86IHN0cmluZztcbiAgQElucHV0KCkgc3B4UmVhZG9ubHkgPSBmYWxzZTtcbiAgQElucHV0KCkgc3B4VmFsaWRhdG9ycyE6IGFueVtdO1xuICBASW5wdXQoKSBzcHhGb2N1c2VkID0gdHJ1ZTtcbiAgQElucHV0KCkgc3B4U3RlcD86IG51bWJlcjtcbiAgQElucHV0KCkgdmFsdWU/OiBTcHhWYWx1ZVBhaXI8YW55PjtcbiAgQE91dHB1dCgpIHNweENoYW5nZTogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxhbnk+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPGFueT4+KCk7XG4gIEBPdXRwdXQoKSBzcHhGb2N1czogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBzcHhXYXNJbnRlcm5hbFVwZGF0ZSA9IGZhbHNlO1xuICBcbiAgYXN5bmMgc3B4U2V0Rm9jdXMoKSB7XG4gICAgLy8gdGhpcy5lbElucHV0LmZvY3VzKCk7XG4gIH1cblxuICBjb21wb25lbnREaWRMb2FkKCkge1xuICAgIGlmICh0aGlzLnNweEF1dG9mb2N1cykge1xuICAgICAgdGhpcy5zcHhGb2N1cy5lbWl0KCk7XG4gICAgICB0aGlzLnNweFNldEZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRm9jdXMoKSB7XG4gICAgdGhpcy5zcHhGb2N1cy5lbWl0KCk7XG4gIH1cblxuICBoYW5kbGVJbnB1dChldmVudDogYW55KSB7XG4gICAgdGhpcy52YWx1ZSA9IHtcbiAgICAgIGRlc2NyaXB0aW9uOiBldmVudC50YXJnZXQgPyBldmVudC50YXJnZXQudmFsdWUgOiBudWxsLFxuICAgICAgdmFsdWU6IGV2ZW50LnRhcmdldCA/IGV2ZW50LnRhcmdldC52YWx1ZSA6IG51bGwsXG4gICAgfTtcbiAgICB0aGlzLnNweENoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG59Il19
@@ -0,0 +1,63 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { NgFor } from '@angular/common';
3
+ import { SpxSuggestionComponent } from '@softpak/components/spx-suggestion';
4
+ import * as i0 from "@angular/core";
5
+ export class SpxInputRadioComponent {
6
+ constructor() {
7
+ this.spxFocused = true;
8
+ this.spxReadonly = false;
9
+ this.spxSuggestions = [];
10
+ this.spxChange = new EventEmitter();
11
+ this.spxFocus = new EventEmitter();
12
+ this.spxWasInternalUpdate = false;
13
+ }
14
+ async spxSetFocus() {
15
+ // this.elYear.focus();
16
+ }
17
+ handleSuggestionClick(value) {
18
+ this.value = value;
19
+ this.spxChange.emit(this.value);
20
+ }
21
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxInputRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
22
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: SpxInputRadioComponent, isStandalone: true, selector: "spx-input-radio", inputs: { spxName: "spxName", spxValidators: "spxValidators", spxFocused: "spxFocused", spxReadonly: "spxReadonly", spxSuggestions: "spxSuggestions", value: "value" }, outputs: { spxChange: "spxChange", spxFocus: "spxFocus" }, ngImport: i0, template: `<div class="spx-input-radio__suggestions">
23
+ <spx-suggestion
24
+ *ngFor="let valuePair of this.spxSuggestions"
25
+ [spxDisabled]="this.spxReadonly"
26
+ [spxSelected]="this.value?.value === this.valuePair?.value"
27
+ (click)="this.spxReadonly ? undefined : this.handleSuggestionClick(valuePair)">
28
+ {{this.valuePair?.description}}
29
+ </spx-suggestion>
30
+ </div>`, isInline: true, styles: [":host{display:block}.spx-input-radio__suggestions{display:grid;grid-gap:8px;grid-template-columns:repeat(2,1fr);margin-top:8px}.spx-input-radio--readonly{background-color:transparent;border:0;box-sizing:border-box;font-size:20px;font-weight:700;margin-right:10px;padding:0;width:100%}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: SpxSuggestionComponent, selector: "spx-suggestion", inputs: ["spxDisabled", "spxSelected"] }] }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxInputRadioComponent, decorators: [{
33
+ type: Component,
34
+ args: [{ selector: 'spx-input-radio', standalone: true, imports: [
35
+ NgFor,
36
+ SpxSuggestionComponent,
37
+ ], template: `<div class="spx-input-radio__suggestions">
38
+ <spx-suggestion
39
+ *ngFor="let valuePair of this.spxSuggestions"
40
+ [spxDisabled]="this.spxReadonly"
41
+ [spxSelected]="this.value?.value === this.valuePair?.value"
42
+ (click)="this.spxReadonly ? undefined : this.handleSuggestionClick(valuePair)">
43
+ {{this.valuePair?.description}}
44
+ </spx-suggestion>
45
+ </div>`, styles: [":host{display:block}.spx-input-radio__suggestions{display:grid;grid-gap:8px;grid-template-columns:repeat(2,1fr);margin-top:8px}.spx-input-radio--readonly{background-color:transparent;border:0;box-sizing:border-box;font-size:20px;font-weight:700;margin-right:10px;padding:0;width:100%}\n"] }]
46
+ }], propDecorators: { spxName: [{
47
+ type: Input
48
+ }], spxValidators: [{
49
+ type: Input
50
+ }], spxFocused: [{
51
+ type: Input
52
+ }], spxReadonly: [{
53
+ type: Input
54
+ }], spxSuggestions: [{
55
+ type: Input
56
+ }], value: [{
57
+ type: Input
58
+ }], spxChange: [{
59
+ type: Output
60
+ }], spxFocus: [{
61
+ type: Output
62
+ }] } });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWlucHV0LXJhZGlvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NvZnRwYWsvY29tcG9uZW50cy9zcHgtaW5wdXRzL3NweC1pbnB1dC1yYWRpby5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBMkM1RSxNQUFNLE9BQU8sc0JBQXNCO0lBekNuQztRQTZDVyxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLG1CQUFjLEdBQXdCLEVBQUUsQ0FBQztRQUV4QyxjQUFTLEdBQW9DLElBQUksWUFBWSxFQUFxQixDQUFDO1FBQ25GLGFBQVEsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNsRSx5QkFBb0IsR0FBRyxLQUFLLENBQUM7S0FTOUI7SUFSQyxLQUFLLENBQUMsV0FBVztRQUNmLHVCQUF1QjtJQUN6QixDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBd0I7UUFDNUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7OEdBbEJVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDhTQWxDdkI7Ozs7Ozs7O09BUUwsd1dBWEgsS0FBSyxtSEFDTCxzQkFBc0I7OzJGQW9DYixzQkFBc0I7a0JBekNsQyxTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUDt3QkFDUCxLQUFLO3dCQUNMLHNCQUFzQjtxQkFDdkIsWUFDUzs7Ozs7Ozs7T0FRTDs4QkE0QkksT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTcHhWYWx1ZVBhaXIgfSBmcm9tICcuL3NweC12YWx1ZS1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTmdGb3IgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3B4U3VnZ2VzdGlvbkNvbXBvbmVudCB9IGZyb20gJ0Bzb2Z0cGFrL2NvbXBvbmVudHMvc3B4LXN1Z2dlc3Rpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcHgtaW5wdXQtcmFkaW8nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdGb3IsXG4gICAgU3B4U3VnZ2VzdGlvbkNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwic3B4LWlucHV0LXJhZGlvX19zdWdnZXN0aW9uc1wiPlxuICAgIDxzcHgtc3VnZ2VzdGlvblxuICAgICAgKm5nRm9yPVwibGV0IHZhbHVlUGFpciBvZiB0aGlzLnNweFN1Z2dlc3Rpb25zXCJcbiAgICAgIFtzcHhEaXNhYmxlZF09XCJ0aGlzLnNweFJlYWRvbmx5XCJcbiAgICAgIFtzcHhTZWxlY3RlZF09XCJ0aGlzLnZhbHVlPy52YWx1ZSA9PT0gdGhpcy52YWx1ZVBhaXI/LnZhbHVlXCJcbiAgICAgIChjbGljayk9XCJ0aGlzLnNweFJlYWRvbmx5ID8gdW5kZWZpbmVkIDogdGhpcy5oYW5kbGVTdWdnZXN0aW9uQ2xpY2sodmFsdWVQYWlyKVwiPlxuICAgICAge3t0aGlzLnZhbHVlUGFpcj8uZGVzY3JpcHRpb259fVxuICAgIDwvc3B4LXN1Z2dlc3Rpb24+XG48L2Rpdj5gLFxuICBzdHlsZXM6IGBcbiAgOmhvc3Qge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLnNweC1pbnB1dC1yYWRpb19fc3VnZ2VzdGlvbnMge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLWdhcDogOHB4O1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICBtYXJnaW4tdG9wOiA4cHg7XG59XG5cbi5zcHgtaW5wdXQtcmFkaW8tLXJlYWRvbmx5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICBwYWRkaW5nOiAwO1xuICB3aWR0aDogMTAwJTtcbn1cblxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBTcHhJbnB1dFJhZGlvQ29tcG9uZW50IHtcbiAgLy8gQEVsZW1lbnQoKSBlbCE6IEhUTUxFbGVtZW50O1xuICBASW5wdXQoKSBzcHhOYW1lPzogc3RyaW5nO1xuICBASW5wdXQoKSBzcHhWYWxpZGF0b3JzITogYW55W107XG4gIEBJbnB1dCgpIHNweEZvY3VzZWQgPSB0cnVlO1xuICBASW5wdXQoKSBzcHhSZWFkb25seSA9IGZhbHNlO1xuICBASW5wdXQoKSBzcHhTdWdnZXN0aW9uczogU3B4VmFsdWVQYWlyPGFueT5bXSA9IFtdO1xuICBASW5wdXQoKSB2YWx1ZT86IFNweFZhbHVlUGFpcjxhbnk+O1xuICBAT3V0cHV0KCkgc3B4Q2hhbmdlOiBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPGFueT4+ID0gbmV3IEV2ZW50RW1pdHRlcjxTcHhWYWx1ZVBhaXI8YW55Pj4oKTtcbiAgQE91dHB1dCgpIHNweEZvY3VzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIHNweFdhc0ludGVybmFsVXBkYXRlID0gZmFsc2U7XG4gIGFzeW5jIHNweFNldEZvY3VzKCkge1xuICAgIC8vIHRoaXMuZWxZZWFyLmZvY3VzKCk7XG4gIH1cblxuICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2sodmFsdWU6IFNweFZhbHVlUGFpcjxhbnk+KSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuc3B4Q2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cbn0iXX0=
@@ -0,0 +1,156 @@
1
+ import { NgFor, NgIf } from '@angular/common';
2
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
3
+ import { SpxButtonComponent } from '@softpak/components/spx-button';
4
+ import * as i0 from "@angular/core";
5
+ export class SpxInputTextComponent {
6
+ constructor() {
7
+ this.spxAutofocus = false;
8
+ this.spxSuggestions = [];
9
+ this.spxReadonly = false;
10
+ this.spxCapitalize = false;
11
+ this.spxFocused = true;
12
+ this.spxType = 'text';
13
+ this.spxBlurFromChild = new EventEmitter();
14
+ this.spxChange = new EventEmitter();
15
+ this.spxFocus = new EventEmitter();
16
+ this.spxWasInternalUpdate = false;
17
+ }
18
+ async spxSetFocus() {
19
+ // this.elInput.focus();
20
+ }
21
+ componentDidLoad() {
22
+ if (this.spxAutofocus) {
23
+ this.spxFocus.emit();
24
+ this.spxSetFocus();
25
+ }
26
+ }
27
+ handleBlur() {
28
+ this.spxBlurFromChild.emit();
29
+ }
30
+ handleFocus() {
31
+ this.spxFocus.emit();
32
+ }
33
+ handleDescriptionInput(event) {
34
+ this.value = {
35
+ description: event.target ? event.target.value : null,
36
+ value: event.target ? event.target.value : null,
37
+ };
38
+ this.spxChange.emit(this.value);
39
+ }
40
+ handleSuggestionClick(value) {
41
+ if (!this.spxReadonly) {
42
+ this.value = value;
43
+ this.spxChange.emit(this.value);
44
+ this.spxFocused = false;
45
+ }
46
+ }
47
+ handleKeyUp() {
48
+ this.spxFocused = true;
49
+ }
50
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxInputTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
51
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: SpxInputTextComponent, isStandalone: true, selector: "spx-input-text", inputs: { spxName: "spxName", spxAutofocus: "spxAutofocus", spxInputMode: "spxInputMode", spxPattern: "spxPattern", spxSuggestions: "spxSuggestions", spxReadonly: "spxReadonly", spxValidators: "spxValidators", spxCapitalize: "spxCapitalize", spxFocused: "spxFocused", spxType: "spxType", value: "value", spxWasInternalUpdate: "spxWasInternalUpdate" }, outputs: { spxBlurFromChild: "spxBlurFromChild", spxChange: "spxChange", spxFocus: "spxFocus" }, ngImport: i0, template: `<div class="relative">
52
+ <input
53
+ class="font-bold text-lg w-full outline-none"
54
+ [class.uppercase]="this.spxCapitalize"
55
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
56
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
57
+ [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
58
+ [attr.pattern]="this.spxPattern ? this.spxPattern : undefined"
59
+ [attr.name]="this.spxName"
60
+ [attr.type]="this.spxType"
61
+ [attr.value]="this.value?.description ? this.value?.description : this.value?.value"
62
+ (blur)="this.handleBlur()"
63
+ (keyUp)="this.handleKeyUp()"
64
+ (focus)="this.handleFocus()"
65
+ (input)="this.handleDescriptionInput($event)"
66
+ />
67
+ <span *ngIf="this.value?.description && this.value?.value && this.value?.description?.valueOf() !== this.value?.value?.valueOf()">{{this.value?.value}}</span>
68
+ <div
69
+ *ngIf="this.spxFocused && (this.spxType === 'overlay' || this.spxType === 'overlaynumber')"
70
+ class="absolute bg-gray-100 left-0 right-0 z-20">
71
+ <div
72
+ *ngFor="let valuePair of this.spxSuggestions"
73
+ class="text-black block w-full p-2 bg-white border border-gray-200 rounded-lg shadow hover:bg-gray-100 flex items-center"
74
+ (click)="this.handleSuggestionClick($event)"
75
+ [attr.tabindex]="0"
76
+ >
77
+ <div class="flex-1 p-1 font-bold text-lg">{{valuePair?.description}}</div>
78
+ <spx-button spxType="button">Select</spx-button>
79
+ </div>
80
+ </div>
81
+ </div>`, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: SpxButtonComponent, selector: "spx-button", inputs: ["spxDisabled", "spxClass", "spxClassObject", "spxForm", "spxFullHeight", "spxFullWidth", "spxSeverity", "spxSize", "spxTabIndex", "spxType"], outputs: ["spxClick"] }] }); }
82
+ }
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: SpxInputTextComponent, decorators: [{
84
+ type: Component,
85
+ args: [{
86
+ selector: 'spx-input-text',
87
+ standalone: true,
88
+ imports: [
89
+ NgIf,
90
+ NgFor,
91
+ SpxButtonComponent,
92
+ ],
93
+ template: `<div class="relative">
94
+ <input
95
+ class="font-bold text-lg w-full outline-none"
96
+ [class.uppercase]="this.spxCapitalize"
97
+ [attr.autofocus]="this.spxAutofocus ? this.spxAutofocus : undefined"
98
+ [attr.disabled]="this.spxReadonly ? this.spxReadonly : undefined"
99
+ [attr.inputMode]="this.spxInputMode ? this.spxInputMode : undefined"
100
+ [attr.pattern]="this.spxPattern ? this.spxPattern : undefined"
101
+ [attr.name]="this.spxName"
102
+ [attr.type]="this.spxType"
103
+ [attr.value]="this.value?.description ? this.value?.description : this.value?.value"
104
+ (blur)="this.handleBlur()"
105
+ (keyUp)="this.handleKeyUp()"
106
+ (focus)="this.handleFocus()"
107
+ (input)="this.handleDescriptionInput($event)"
108
+ />
109
+ <span *ngIf="this.value?.description && this.value?.value && this.value?.description?.valueOf() !== this.value?.value?.valueOf()">{{this.value?.value}}</span>
110
+ <div
111
+ *ngIf="this.spxFocused && (this.spxType === 'overlay' || this.spxType === 'overlaynumber')"
112
+ class="absolute bg-gray-100 left-0 right-0 z-20">
113
+ <div
114
+ *ngFor="let valuePair of this.spxSuggestions"
115
+ class="text-black block w-full p-2 bg-white border border-gray-200 rounded-lg shadow hover:bg-gray-100 flex items-center"
116
+ (click)="this.handleSuggestionClick($event)"
117
+ [attr.tabindex]="0"
118
+ >
119
+ <div class="flex-1 p-1 font-bold text-lg">{{valuePair?.description}}</div>
120
+ <spx-button spxType="button">Select</spx-button>
121
+ </div>
122
+ </div>
123
+ </div>`,
124
+ }]
125
+ }], propDecorators: { spxName: [{
126
+ type: Input
127
+ }], spxAutofocus: [{
128
+ type: Input
129
+ }], spxInputMode: [{
130
+ type: Input
131
+ }], spxPattern: [{
132
+ type: Input
133
+ }], spxSuggestions: [{
134
+ type: Input
135
+ }], spxReadonly: [{
136
+ type: Input
137
+ }], spxValidators: [{
138
+ type: Input
139
+ }], spxCapitalize: [{
140
+ type: Input
141
+ }], spxFocused: [{
142
+ type: Input
143
+ }], spxType: [{
144
+ type: Input
145
+ }], value: [{
146
+ type: Input
147
+ }], spxBlurFromChild: [{
148
+ type: Output
149
+ }], spxChange: [{
150
+ type: Output
151
+ }], spxFocus: [{
152
+ type: Output
153
+ }], spxWasInternalUpdate: [{
154
+ type: Input
155
+ }] } });
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B4LWlucHV0LXRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc29mdHBhay9jb21wb25lbnRzL3NweC1pbnB1dHMvc3B4LWlucHV0LXRleHQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUEwQ3BFLE1BQU0sT0FBTyxxQkFBcUI7SUF4Q2xDO1FBNENXLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBR3JCLG1CQUFjLEdBQThDLEVBQUUsQ0FBQztRQUMvRCxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLFlBQU8sR0FBdUUsTUFBTSxDQUFDO1FBRXBGLHFCQUFnQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2hFLGNBQVMsR0FBb0MsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFDbkYsYUFBUSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3pELHlCQUFvQixHQUFHLEtBQUssQ0FBQztLQXlDdkM7SUF0Q0MsS0FBSyxDQUFDLFdBQVc7UUFDZix3QkFBd0I7SUFDMUIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELHNCQUFzQixDQUFDLEtBQVU7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRztZQUNYLFdBQVcsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUNyRCxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7U0FDaEQsQ0FBQztRQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBVTtRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUN6QixDQUFDOzhHQXpEVSxxQkFBcUI7a0dBQXJCLHFCQUFxQiwyZ0JBaEN0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BOEJMLDREQWxDSCxJQUFJLDZGQUNKLEtBQUssbUhBQ0wsa0JBQWtCOzsyRkFrQ1QscUJBQXFCO2tCQXhDakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNQLElBQUk7d0JBQ0osS0FBSzt3QkFDTCxrQkFBa0I7cUJBQ25CO29CQUNELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BOEJMO2lCQUNOOzhCQUlVLE9BQU87c0JBQWYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNFLG9CQUFvQjtzQkFBNUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTcHhWYWx1ZVBhaXIgfSBmcm9tICcuL3NweC12YWx1ZS1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU3B4QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQHNvZnRwYWsvY29tcG9uZW50cy9zcHgtYnV0dG9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3B4LWlucHV0LXRleHQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBOZ0ZvcixcbiAgICBTcHhCdXR0b25Db21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cInJlbGF0aXZlXCI+XG4gIDxpbnB1dFxuICAgIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtbGcgdy1mdWxsIG91dGxpbmUtbm9uZVwiXG4gICAgW2NsYXNzLnVwcGVyY2FzZV09XCJ0aGlzLnNweENhcGl0YWxpemVcIlxuICAgIFthdHRyLmF1dG9mb2N1c109XCJ0aGlzLnNweEF1dG9mb2N1cyA/IHRoaXMuc3B4QXV0b2ZvY3VzIDogdW5kZWZpbmVkXCJcbiAgICBbYXR0ci5kaXNhYmxlZF09XCJ0aGlzLnNweFJlYWRvbmx5ID8gdGhpcy5zcHhSZWFkb25seSA6IHVuZGVmaW5lZFwiXG4gICAgW2F0dHIuaW5wdXRNb2RlXT1cInRoaXMuc3B4SW5wdXRNb2RlID8gdGhpcy5zcHhJbnB1dE1vZGUgOiB1bmRlZmluZWRcIlxuICAgIFthdHRyLnBhdHRlcm5dPVwidGhpcy5zcHhQYXR0ZXJuID8gdGhpcy5zcHhQYXR0ZXJuIDogdW5kZWZpbmVkXCJcbiAgICBbYXR0ci5uYW1lXT1cInRoaXMuc3B4TmFtZVwiXG4gICAgW2F0dHIudHlwZV09XCJ0aGlzLnNweFR5cGVcIlxuICAgIFthdHRyLnZhbHVlXT1cInRoaXMudmFsdWU/LmRlc2NyaXB0aW9uID8gdGhpcy52YWx1ZT8uZGVzY3JpcHRpb24gOiB0aGlzLnZhbHVlPy52YWx1ZVwiXG4gICAgKGJsdXIpPVwidGhpcy5oYW5kbGVCbHVyKClcIlxuICAgIChrZXlVcCk9XCJ0aGlzLmhhbmRsZUtleVVwKClcIlxuICAgIChmb2N1cyk9XCJ0aGlzLmhhbmRsZUZvY3VzKClcIlxuICAgIChpbnB1dCk9XCJ0aGlzLmhhbmRsZURlc2NyaXB0aW9uSW5wdXQoJGV2ZW50KVwiXG4gIC8+XG4gIDxzcGFuICpuZ0lmPVwidGhpcy52YWx1ZT8uZGVzY3JpcHRpb24gJiYgdGhpcy52YWx1ZT8udmFsdWUgJiYgdGhpcy52YWx1ZT8uZGVzY3JpcHRpb24/LnZhbHVlT2YoKSAhPT0gdGhpcy52YWx1ZT8udmFsdWU/LnZhbHVlT2YoKVwiPnt7dGhpcy52YWx1ZT8udmFsdWV9fTwvc3Bhbj5cbiAgPGRpdlxuICAgICpuZ0lmPVwidGhpcy5zcHhGb2N1c2VkICYmICh0aGlzLnNweFR5cGUgPT09ICdvdmVybGF5JyB8fCB0aGlzLnNweFR5cGUgPT09ICdvdmVybGF5bnVtYmVyJylcIlxuICAgIGNsYXNzPVwiYWJzb2x1dGUgYmctZ3JheS0xMDAgbGVmdC0wIHJpZ2h0LTAgei0yMFwiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdGb3I9XCJsZXQgdmFsdWVQYWlyIG9mIHRoaXMuc3B4U3VnZ2VzdGlvbnNcIlxuICAgICAgICBjbGFzcz1cInRleHQtYmxhY2sgYmxvY2sgdy1mdWxsIHAtMiBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtbGcgc2hhZG93IGhvdmVyOmJnLWdyYXktMTAwIGZsZXggaXRlbXMtY2VudGVyXCJcbiAgICAgICAgKGNsaWNrKT1cInRoaXMuaGFuZGxlU3VnZ2VzdGlvbkNsaWNrKCRldmVudClcIlxuICAgICAgICBbYXR0ci50YWJpbmRleF09XCIwXCJcbiAgICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LTEgcC0xIGZvbnQtYm9sZCB0ZXh0LWxnXCI+e3t2YWx1ZVBhaXI/LmRlc2NyaXB0aW9ufX08L2Rpdj5cbiAgICAgICAgPHNweC1idXR0b24gc3B4VHlwZT1cImJ1dHRvblwiPlNlbGVjdDwvc3B4LWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PmAsXG59KVxuZXhwb3J0IGNsYXNzIFNweElucHV0VGV4dENvbXBvbmVudCB7XG4gIC8vIHByaXZhdGUgZWxJbnB1dD86IEhUTUxFbGVtZW50O1xuICAvLyBARWxlbWVudCgpIGVsITogSFRNTEVsZW1lbnQ7XG4gIEBJbnB1dCgpIHNweE5hbWU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNweEF1dG9mb2N1cyA9IGZhbHNlO1xuICBASW5wdXQoKSBzcHhJbnB1dE1vZGU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNweFBhdHRlcm4/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNweFN1Z2dlc3Rpb25zOiBTcHhWYWx1ZVBhaXI8Ym9vbGVhbiB8IG51bWJlciB8IHN0cmluZz5bXSA9IFtdO1xuICBASW5wdXQoKSBzcHhSZWFkb25seSA9IGZhbHNlO1xuICBASW5wdXQoKSBzcHhWYWxpZGF0b3JzPzogYW55W107XG4gIEBJbnB1dCgpIHNweENhcGl0YWxpemUgPSBmYWxzZTtcbiAgQElucHV0KCkgc3B4Rm9jdXNlZCA9IHRydWU7XG4gIEBJbnB1dCgpIHNweFR5cGU6ICdhdXRvY29tcGxldGUnIHwgJ292ZXJsYXknIHwgJ292ZXJsYXludW1iZXInIHwgJ3RleHQnIHwgJ3Bhc3N3b3JkJyA9ICd0ZXh0JztcbiAgQElucHV0KCkgdmFsdWU/OiBTcHhWYWx1ZVBhaXI8YW55PjtcbiAgQE91dHB1dCgpIHNweEJsdXJGcm9tQ2hpbGQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHNweENoYW5nZTogRXZlbnRFbWl0dGVyPFNweFZhbHVlUGFpcjxhbnk+PiA9IG5ldyBFdmVudEVtaXR0ZXI8U3B4VmFsdWVQYWlyPGFueT4+KCk7XG4gIEBPdXRwdXQoKSBzcHhGb2N1czogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBASW5wdXQoKSBzcHhXYXNJbnRlcm5hbFVwZGF0ZSA9IGZhbHNlO1xuICBcbiAgXG4gIGFzeW5jIHNweFNldEZvY3VzKCkge1xuICAgIC8vIHRoaXMuZWxJbnB1dC5mb2N1cygpO1xuICB9XG5cbiAgY29tcG9uZW50RGlkTG9hZCgpIHtcbiAgICBpZiAodGhpcy5zcHhBdXRvZm9jdXMpIHtcbiAgICAgIHRoaXMuc3B4Rm9jdXMuZW1pdCgpO1xuICAgICAgdGhpcy5zcHhTZXRGb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUJsdXIoKSB7XG4gICAgdGhpcy5zcHhCbHVyRnJvbUNoaWxkLmVtaXQoKTtcbiAgfVxuXG4gIGhhbmRsZUZvY3VzKCkge1xuICAgIHRoaXMuc3B4Rm9jdXMuZW1pdCgpO1xuICB9XG5cbiAgaGFuZGxlRGVzY3JpcHRpb25JbnB1dChldmVudDogYW55KSB7XG4gICAgdGhpcy52YWx1ZSA9IHtcbiAgICAgIGRlc2NyaXB0aW9uOiBldmVudC50YXJnZXQgPyBldmVudC50YXJnZXQudmFsdWUgOiBudWxsLFxuICAgICAgdmFsdWU6IGV2ZW50LnRhcmdldCA/IGV2ZW50LnRhcmdldC52YWx1ZSA6IG51bGwsXG4gICAgfTtcbiAgICB0aGlzLnNweENoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuc3B4UmVhZG9ubHkpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuc3B4Q2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICB0aGlzLnNweEZvY3VzZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVLZXlVcCgpIHtcbiAgICB0aGlzLnNweEZvY3VzZWQgPSB0cnVlO1xuICB9XG59XG4iXX0=