@cloudscape-design/components 3.0.28 → 3.0.29

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 (135) hide show
  1. package/breadcrumb-group/internal.d.ts.map +1 -1
  2. package/breadcrumb-group/internal.js +4 -4
  3. package/breadcrumb-group/internal.js.map +1 -1
  4. package/button-dropdown/interfaces.d.ts +1 -1
  5. package/button-dropdown/interfaces.d.ts.map +1 -1
  6. package/button-dropdown/interfaces.js.map +1 -1
  7. package/button-dropdown/internal.js +1 -1
  8. package/button-dropdown/internal.js.map +1 -1
  9. package/date-picker/calendar/index.d.ts.map +1 -1
  10. package/date-picker/calendar/index.js +2 -1
  11. package/date-picker/calendar/index.js.map +1 -1
  12. package/date-picker/calendar/utils/memoized-date.d.ts +2 -0
  13. package/date-picker/calendar/utils/memoized-date.d.ts.map +1 -0
  14. package/date-picker/calendar/utils/memoized-date.js +13 -0
  15. package/date-picker/calendar/utils/memoized-date.js.map +1 -0
  16. package/date-picker/embedded.js +1 -1
  17. package/date-picker/embedded.js.map +1 -1
  18. package/date-picker/index.js +1 -1
  19. package/date-picker/index.js.map +1 -1
  20. package/date-picker/use-date-picker.d.ts.map +1 -1
  21. package/date-picker/use-date-picker.js +1 -1
  22. package/date-picker/use-date-picker.js.map +1 -1
  23. package/date-range-picker/calendar/grids/day/index.js +1 -1
  24. package/date-range-picker/calendar/grids/day/index.js.map +1 -1
  25. package/date-range-picker/calendar/index.d.ts.map +1 -1
  26. package/date-range-picker/calendar/index.js +3 -3
  27. package/date-range-picker/calendar/index.js.map +1 -1
  28. package/date-range-picker/index.d.ts.map +1 -1
  29. package/date-range-picker/index.js +4 -4
  30. package/date-range-picker/index.js.map +1 -1
  31. package/date-range-picker/time-offset.d.ts +0 -7
  32. package/date-range-picker/time-offset.d.ts.map +1 -1
  33. package/date-range-picker/time-offset.js +4 -60
  34. package/date-range-picker/time-offset.js.map +1 -1
  35. package/icon/icons.js +1 -1
  36. package/icon/interfaces.d.ts +1 -1
  37. package/icon/interfaces.d.ts.map +1 -1
  38. package/icon/interfaces.js.map +1 -1
  39. package/input/styles.css.js +13 -13
  40. package/input/styles.scoped.css +35 -37
  41. package/input/styles.selectors.js +13 -13
  42. package/internal/components/date-input/index.d.ts.map +1 -1
  43. package/internal/components/date-input/index.js +3 -2
  44. package/internal/components/date-input/index.js.map +1 -1
  45. package/internal/components/masked-input/utils/mask-format.d.ts.map +1 -1
  46. package/internal/components/masked-input/utils/mask-format.js +2 -1
  47. package/internal/components/masked-input/utils/mask-format.js.map +1 -1
  48. package/internal/components/masked-input/utils/strings.d.ts +0 -1
  49. package/internal/components/masked-input/utils/strings.d.ts.map +1 -1
  50. package/internal/components/masked-input/utils/strings.js +0 -6
  51. package/internal/components/masked-input/utils/strings.js.map +1 -1
  52. package/internal/environment.js +1 -1
  53. package/internal/utils/date-time/display-format.d.ts +9 -0
  54. package/internal/utils/date-time/display-format.d.ts.map +1 -0
  55. package/internal/utils/date-time/display-format.js +15 -0
  56. package/internal/utils/date-time/display-format.js.map +1 -0
  57. package/internal/utils/date-time/format-date.d.ts +7 -0
  58. package/internal/utils/date-time/format-date.d.ts.map +1 -0
  59. package/internal/utils/date-time/format-date.js +15 -0
  60. package/internal/utils/date-time/format-date.js.map +1 -0
  61. package/internal/utils/date-time/format-time.d.ts +5 -0
  62. package/internal/utils/date-time/format-time.d.ts.map +1 -0
  63. package/internal/utils/date-time/format-time.js +13 -0
  64. package/internal/utils/date-time/format-time.js.map +1 -0
  65. package/internal/utils/date-time/format-timezone-offset.d.ts +2 -0
  66. package/internal/utils/date-time/format-timezone-offset.d.ts.map +1 -0
  67. package/internal/utils/date-time/format-timezone-offset.js +11 -0
  68. package/internal/utils/date-time/format-timezone-offset.js.map +1 -0
  69. package/internal/utils/date-time/get-browser-timezone-offset.d.ts +7 -0
  70. package/internal/utils/date-time/get-browser-timezone-offset.d.ts.map +1 -0
  71. package/internal/utils/date-time/get-browser-timezone-offset.js +11 -0
  72. package/internal/utils/date-time/get-browser-timezone-offset.js.map +1 -0
  73. package/internal/utils/date-time/index.d.ts +11 -0
  74. package/internal/utils/date-time/index.d.ts.map +1 -0
  75. package/internal/utils/date-time/index.js +13 -0
  76. package/internal/utils/date-time/index.js.map +1 -0
  77. package/internal/utils/date-time/is-iso-date-only.d.ts +5 -0
  78. package/internal/utils/date-time/is-iso-date-only.d.ts.map +1 -0
  79. package/internal/utils/date-time/is-iso-date-only.js +10 -0
  80. package/internal/utils/date-time/is-iso-date-only.js.map +1 -0
  81. package/internal/utils/date-time/join-date-time.d.ts +2 -0
  82. package/internal/utils/date-time/join-date-time.d.ts.map +1 -0
  83. package/internal/utils/date-time/join-date-time.js +6 -0
  84. package/internal/utils/date-time/join-date-time.js.map +1 -0
  85. package/internal/utils/date-time/parse-date.d.ts +8 -0
  86. package/internal/utils/date-time/parse-date.d.ts.map +1 -0
  87. package/internal/utils/date-time/parse-date.js +16 -0
  88. package/internal/utils/date-time/parse-date.js.map +1 -0
  89. package/internal/utils/date-time/parse-timezone-offset.d.ts +5 -0
  90. package/internal/utils/date-time/parse-timezone-offset.d.ts.map +1 -0
  91. package/internal/utils/date-time/parse-timezone-offset.js +20 -0
  92. package/internal/utils/date-time/parse-timezone-offset.js.map +1 -0
  93. package/internal/utils/date-time/shift-timezone-offset.d.ts +12 -0
  94. package/internal/utils/date-time/shift-timezone-offset.d.ts.map +1 -0
  95. package/internal/utils/date-time/shift-timezone-offset.js +27 -0
  96. package/internal/utils/date-time/shift-timezone-offset.js.map +1 -0
  97. package/internal/utils/strings/index.d.ts +3 -0
  98. package/internal/utils/strings/index.d.ts.map +1 -0
  99. package/internal/utils/strings/index.js +5 -0
  100. package/internal/utils/strings/index.js.map +1 -0
  101. package/internal/utils/strings/join-strings.d.ts +5 -0
  102. package/internal/utils/strings/join-strings.d.ts.map +1 -0
  103. package/internal/utils/{strings.js → strings/join-strings.js} +7 -6
  104. package/internal/utils/strings/join-strings.js.map +1 -0
  105. package/internal/utils/strings/pad-left-zeros.d.ts +5 -0
  106. package/internal/utils/strings/pad-left-zeros.d.ts.map +1 -0
  107. package/internal/utils/strings/pad-left-zeros.js +12 -0
  108. package/internal/utils/strings/pad-left-zeros.js.map +1 -0
  109. package/package.json +1 -1
  110. package/popover/styles.css.js +48 -48
  111. package/popover/styles.scoped.css +65 -60
  112. package/popover/styles.selectors.js +48 -48
  113. package/split-panel/index.d.ts.map +1 -1
  114. package/split-panel/index.js +2 -2
  115. package/split-panel/index.js.map +1 -1
  116. package/table/styles.css.js +32 -32
  117. package/table/styles.scoped.css +40 -43
  118. package/table/styles.selectors.js +32 -32
  119. package/tabs/styles.css.js +21 -21
  120. package/tabs/styles.scoped.css +40 -43
  121. package/tabs/styles.selectors.js +21 -21
  122. package/textarea/styles.css.js +4 -4
  123. package/textarea/styles.scoped.css +13 -14
  124. package/textarea/styles.selectors.js +4 -4
  125. package/date-picker/calendar/utils/date.d.ts +0 -10
  126. package/date-picker/calendar/utils/date.d.ts.map +0 -1
  127. package/date-picker/calendar/utils/date.js +0 -50
  128. package/date-picker/calendar/utils/date.js.map +0 -1
  129. package/internal/components/date-input/utils/date.d.ts +0 -5
  130. package/internal/components/date-input/utils/date.d.ts.map +0 -1
  131. package/internal/components/date-input/utils/date.js +0 -11
  132. package/internal/components/date-input/utils/date.js.map +0 -1
  133. package/internal/utils/strings.d.ts +0 -2
  134. package/internal/utils/strings.d.ts.map +0 -1
  135. package/internal/utils/strings.js.map +0 -1
@@ -1,18 +1,18 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "root": "awsui_root_2rhyz_1wtgy_93",
5
- "input": "awsui_input_2rhyz_1wtgy_97",
6
- "input-readonly": "awsui_input-readonly_2rhyz_1wtgy_118",
7
- "input-invalid": "awsui_input-invalid_2rhyz_1wtgy_179",
8
- "input-has-icon-left": "awsui_input-has-icon-left_2rhyz_1wtgy_190",
9
- "input-type-search": "awsui_input-type-search_2rhyz_1wtgy_195",
10
- "input-has-icon-right": "awsui_input-has-icon-right_2rhyz_1wtgy_213",
11
- "input-has-no-border-radius": "awsui_input-has-no-border-radius_2rhyz_1wtgy_216",
12
- "input-container": "awsui_input-container_2rhyz_1wtgy_220",
13
- "input-icon": "awsui_input-icon_2rhyz_1wtgy_225",
14
- "input-icon-hoverable": "awsui_input-icon-hoverable_2rhyz_1wtgy_228",
15
- "input-icon-left": "awsui_input-icon-left_2rhyz_1wtgy_232",
16
- "input-icon-right": "awsui_input-icon-right_2rhyz_1wtgy_237"
4
+ "root": "awsui_root_2rhyz_1g8vz_93",
5
+ "input": "awsui_input_2rhyz_1g8vz_97",
6
+ "input-readonly": "awsui_input-readonly_2rhyz_1g8vz_118",
7
+ "input-invalid": "awsui_input-invalid_2rhyz_1g8vz_179",
8
+ "input-has-icon-left": "awsui_input-has-icon-left_2rhyz_1g8vz_190",
9
+ "input-type-search": "awsui_input-type-search_2rhyz_1g8vz_195",
10
+ "input-has-icon-right": "awsui_input-has-icon-right_2rhyz_1g8vz_211",
11
+ "input-has-no-border-radius": "awsui_input-has-no-border-radius_2rhyz_1g8vz_214",
12
+ "input-container": "awsui_input-container_2rhyz_1g8vz_218",
13
+ "input-icon": "awsui_input-icon_2rhyz_1g8vz_223",
14
+ "input-icon-hoverable": "awsui_input-icon-hoverable_2rhyz_1g8vz_226",
15
+ "input-icon-left": "awsui_input-icon-left_2rhyz_1g8vz_230",
16
+ "input-icon-right": "awsui_input-icon-right_2rhyz_1g8vz_235"
17
17
  };
18
18
 
@@ -90,11 +90,11 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
90
90
  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
91
91
  SPDX-License-Identifier: Apache-2.0
92
92
  */
93
- .awsui_root_2rhyz_1wtgy_93:not(#\9) {
93
+ .awsui_root_2rhyz_1g8vz_93:not(#\9) {
94
94
  /* used in test-utils for component to distinguish input from other input-like components, for example autosuggest */
95
95
  }
96
96
 
97
- .awsui_input_2rhyz_1wtgy_97:not(#\9) {
97
+ .awsui_input_2rhyz_1g8vz_97:not(#\9) {
98
98
  /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
99
99
  border-collapse: separate;
100
100
  border-spacing: 0;
@@ -141,70 +141,70 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
141
141
  line-height: var(--font-body-m-line-height-i7xxvv, 22px);
142
142
  height: var(--size-vertical-input-js5hfh, 34px);
143
143
  }
144
- .awsui_input_2rhyz_1wtgy_97.awsui_input-readonly_2rhyz_1wtgy_118:not(#\9) {
144
+ .awsui_input_2rhyz_1g8vz_97.awsui_input-readonly_2rhyz_1g8vz_118:not(#\9) {
145
145
  background-color: var(--color-background-input-default-u57378, #ffffff);
146
146
  border: var(--border-field-width-idlekx, 2px) solid var(--color-border-input-disabled-x2lopj, #e9ebed);
147
147
  }
148
- .awsui_input_2rhyz_1wtgy_97:not(#\9)::-webkit-input-placeholder {
148
+ .awsui_input_2rhyz_1g8vz_97:not(#\9)::-webkit-input-placeholder {
149
149
  color: var(--color-text-input-placeholder-j53j3c, #5f6b7a);
150
150
  font-style: italic;
151
151
  -webkit-user-select: none;
152
152
  user-select: none;
153
153
  }
154
- .awsui_input_2rhyz_1wtgy_97:not(#\9)::-ms-input-placeholder {
154
+ .awsui_input_2rhyz_1g8vz_97:not(#\9)::-ms-input-placeholder {
155
155
  color: var(--color-text-input-placeholder-j53j3c, #5f6b7a);
156
156
  font-style: italic;
157
157
  }
158
- .awsui_input_2rhyz_1wtgy_97:not(#\9)::-moz-placeholder {
158
+ .awsui_input_2rhyz_1g8vz_97:not(#\9)::-moz-placeholder {
159
159
  color: var(--color-text-input-placeholder-j53j3c, #5f6b7a);
160
160
  font-style: italic;
161
161
  opacity: 1;
162
162
  }
163
- .awsui_input_2rhyz_1wtgy_97:not(#\9):-ms-input-placeholder {
163
+ .awsui_input_2rhyz_1g8vz_97:not(#\9):-ms-input-placeholder {
164
164
  color: var(--color-text-input-placeholder-j53j3c, #5f6b7a);
165
165
  font-style: italic;
166
166
  }
167
- .awsui_input_2rhyz_1wtgy_97:not(#\9):-moz-placeholder {
167
+ .awsui_input_2rhyz_1g8vz_97:not(#\9):-moz-placeholder {
168
168
  color: var(--color-text-input-placeholder-j53j3c, #5f6b7a);
169
169
  font-style: italic;
170
170
  opacity: 1;
171
171
  }
172
- .awsui_input_2rhyz_1wtgy_97:not(#\9):focus {
172
+ .awsui_input_2rhyz_1g8vz_97:not(#\9):focus {
173
173
  outline: 2px dotted transparent;
174
174
  border: var(--border-field-width-idlekx, 2px) solid var(--color-border-item-focused-ap3b6s, #0972d3);
175
175
  border-radius: var(--border-radius-input-txq8zy, 8px);
176
176
  box-shadow: 0 0 0 var(--border-control-focus-ring-shadow-spread-srzyiu, 0px) var(--color-border-item-focused-ap3b6s, #0972d3);
177
177
  }
178
- .awsui_input_2rhyz_1wtgy_97:not(#\9):disabled {
178
+ .awsui_input_2rhyz_1g8vz_97:not(#\9):disabled {
179
179
  background-color: var(--color-background-input-disabled-wu9j6u, #e9ebed);
180
180
  border: var(--border-field-width-idlekx, 2px) solid var(--color-border-input-disabled-x2lopj, #e9ebed);
181
181
  color: var(--color-text-input-disabled-oawyzo, #9ba7b6);
182
182
  cursor: auto;
183
183
  cursor: default;
184
184
  }
185
- .awsui_input_2rhyz_1wtgy_97:not(#\9):disabled::-webkit-input-placeholder {
185
+ .awsui_input_2rhyz_1g8vz_97:not(#\9):disabled::-webkit-input-placeholder {
186
186
  color: var(--color-text-input-placeholder-disabled-6928j8, #9ba7b6);
187
187
  -webkit-user-select: none;
188
188
  user-select: none;
189
189
  }
190
- .awsui_input_2rhyz_1wtgy_97:not(#\9):disabled::-ms-input-placeholder {
190
+ .awsui_input_2rhyz_1g8vz_97:not(#\9):disabled::-ms-input-placeholder {
191
191
  color: var(--color-text-input-placeholder-disabled-6928j8, #9ba7b6);
192
192
  }
193
- .awsui_input_2rhyz_1wtgy_97:not(#\9):disabled::-moz-placeholder {
193
+ .awsui_input_2rhyz_1g8vz_97:not(#\9):disabled::-moz-placeholder {
194
194
  color: var(--color-text-input-placeholder-disabled-6928j8, #9ba7b6);
195
195
  opacity: 1;
196
196
  }
197
- .awsui_input_2rhyz_1wtgy_97:not(#\9):disabled:-ms-input-placeholder {
197
+ .awsui_input_2rhyz_1g8vz_97:not(#\9):disabled:-ms-input-placeholder {
198
198
  color: var(--color-text-input-placeholder-disabled-6928j8, #9ba7b6);
199
199
  }
200
- .awsui_input_2rhyz_1wtgy_97:not(#\9):disabled:-moz-placeholder {
200
+ .awsui_input_2rhyz_1g8vz_97:not(#\9):disabled:-moz-placeholder {
201
201
  color: var(--color-text-input-placeholder-disabled-6928j8, #9ba7b6);
202
202
  opacity: 1;
203
203
  }
204
- .awsui_input_2rhyz_1wtgy_97:not(#\9):invalid {
204
+ .awsui_input_2rhyz_1g8vz_97:not(#\9):invalid {
205
205
  box-shadow: none;
206
206
  }
207
- .awsui_input_2rhyz_1wtgy_97.awsui_input-invalid_2rhyz_1wtgy_179:not(#\9) {
207
+ .awsui_input_2rhyz_1g8vz_97.awsui_input-invalid_2rhyz_1g8vz_179:not(#\9) {
208
208
  color: var(--color-text-status-error-5sesl6, #d91515);
209
209
  border-color: var(--color-text-status-error-5sesl6, #d91515);
210
210
  padding-left: calc(
@@ -212,65 +212,63 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
212
212
  );
213
213
  border-left-width: var(--border-invalid-width-5jpdqn, 8px);
214
214
  }
215
- .awsui_input_2rhyz_1wtgy_97.awsui_input-invalid_2rhyz_1wtgy_179:not(#\9):focus {
215
+ .awsui_input_2rhyz_1g8vz_97.awsui_input-invalid_2rhyz_1g8vz_179:not(#\9):focus {
216
216
  box-shadow: 0 0 0 var(--border-control-invalid-focus-ring-shadow-spread-omt6il, 2px) var(--color-border-item-focused-ap3b6s, #0972d3);
217
217
  }
218
- .awsui_input_2rhyz_1wtgy_97.awsui_input-invalid_2rhyz_1wtgy_179.awsui_input-has-icon-left_2rhyz_1wtgy_190:not(#\9) {
218
+ .awsui_input_2rhyz_1g8vz_97.awsui_input-invalid_2rhyz_1g8vz_179.awsui_input-has-icon-left_2rhyz_1g8vz_190:not(#\9) {
219
219
  padding-left: calc(
220
220
  var(--space-field-icon-offset-25xih0, 36px) - (var(--border-invalid-width-5jpdqn, 8px) - var(--border-field-width-idlekx, 2px))
221
221
  );
222
222
  }
223
- .awsui_input_2rhyz_1wtgy_97.awsui_input-type-search_2rhyz_1wtgy_195:not(#\9) {
223
+ .awsui_input_2rhyz_1g8vz_97.awsui_input-type-search_2rhyz_1g8vz_195:not(#\9) {
224
224
  box-sizing: border-box;
225
- -webkit-appearance: none;
226
- /* stylelint-disable-line plugin/no-unsupported-browser-features */
225
+ -webkit-appearance: none; /* stylelint-disable-line plugin/no-unsupported-browser-features */
227
226
  }
228
- .awsui_input_2rhyz_1wtgy_97.awsui_input-type-search_2rhyz_1wtgy_195:not(#\9)::-ms-clear {
227
+ .awsui_input_2rhyz_1g8vz_97.awsui_input-type-search_2rhyz_1g8vz_195:not(#\9)::-ms-clear {
229
228
  display: none;
230
229
  }
231
- .awsui_input_2rhyz_1wtgy_97.awsui_input-type-search_2rhyz_1wtgy_195:not(#\9)::-webkit-search-decoration {
232
- -webkit-appearance: none;
233
- /* stylelint-disable-line plugin/no-unsupported-browser-features */
230
+ .awsui_input_2rhyz_1g8vz_97.awsui_input-type-search_2rhyz_1g8vz_195:not(#\9)::-webkit-search-decoration {
231
+ -webkit-appearance: none; /* stylelint-disable-line plugin/no-unsupported-browser-features */
234
232
  }
235
- .awsui_input_2rhyz_1wtgy_97.awsui_input-type-search_2rhyz_1wtgy_195:not(#\9)::-webkit-search-cancel-button {
233
+ .awsui_input_2rhyz_1g8vz_97.awsui_input-type-search_2rhyz_1g8vz_195:not(#\9)::-webkit-search-cancel-button {
236
234
  display: none;
237
235
  }
238
- .awsui_input_2rhyz_1wtgy_97.awsui_input-has-icon-left_2rhyz_1wtgy_190:not(#\9) {
236
+ .awsui_input_2rhyz_1g8vz_97.awsui_input-has-icon-left_2rhyz_1g8vz_190:not(#\9) {
239
237
  padding-left: var(--space-field-icon-offset-25xih0, 36px);
240
238
  }
241
- .awsui_input_2rhyz_1wtgy_97.awsui_input-has-icon-right_2rhyz_1wtgy_213:not(#\9) {
239
+ .awsui_input_2rhyz_1g8vz_97.awsui_input-has-icon-right_2rhyz_1g8vz_211:not(#\9) {
242
240
  padding-right: var(--space-field-icon-offset-25xih0, 36px);
243
241
  }
244
- .awsui_input_2rhyz_1wtgy_97.awsui_input-has-no-border-radius_2rhyz_1wtgy_216:not(#\9) {
242
+ .awsui_input_2rhyz_1g8vz_97.awsui_input-has-no-border-radius_2rhyz_1g8vz_214:not(#\9) {
245
243
  border-radius: var(--border-radius-dropdown-ujknaf, 8px);
246
244
  }
247
245
 
248
- .awsui_input-container_2rhyz_1wtgy_220:not(#\9) {
246
+ .awsui_input-container_2rhyz_1g8vz_218:not(#\9) {
249
247
  display: flex;
250
248
  position: relative;
251
249
  }
252
250
 
253
- .awsui_input-icon_2rhyz_1wtgy_225:not(#\9) {
251
+ .awsui_input-icon_2rhyz_1g8vz_223:not(#\9) {
254
252
  position: absolute;
255
253
  }
256
- .awsui_input-icon_2rhyz_1wtgy_225:not(#\9):not(.awsui_input-icon-hoverable_2rhyz_1wtgy_228) {
254
+ .awsui_input-icon_2rhyz_1g8vz_223:not(#\9):not(.awsui_input-icon-hoverable_2rhyz_1g8vz_226) {
257
255
  pointer-events: none;
258
256
  }
259
257
 
260
- .awsui_input-icon-left_2rhyz_1wtgy_232:not(#\9) {
258
+ .awsui_input-icon-left_2rhyz_1g8vz_230:not(#\9) {
261
259
  left: var(--space-field-horizontal-89h2yr, 12px);
262
260
  top: calc(50% - var(--font-body-m-line-height-i7xxvv, 22px) / 2);
263
261
  }
264
262
 
265
- .awsui_input-icon-right_2rhyz_1wtgy_237:not(#\9) {
263
+ .awsui_input-icon-right_2rhyz_1g8vz_235:not(#\9) {
266
264
  right: var(--space-field-horizontal-89h2yr, 12px);
267
265
  top: calc(50% - var(--font-body-m-line-height-i7xxvv, 22px) / 2);
268
266
  color: var(--color-text-button-inline-icon-default-w65lqn, #0972d3);
269
267
  }
270
268
 
271
- .awsui_input-icon-hoverable_2rhyz_1wtgy_228:not(#\9) {
269
+ .awsui_input-icon-hoverable_2rhyz_1g8vz_226:not(#\9) {
272
270
  cursor: pointer;
273
271
  }
274
- .awsui_input-icon-hoverable_2rhyz_1wtgy_228:not(#\9):hover {
272
+ .awsui_input-icon-hoverable_2rhyz_1g8vz_226:not(#\9):hover {
275
273
  color: var(--color-text-button-inline-icon-hover-wd5icp, #033160);
276
274
  }
@@ -2,18 +2,18 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "root": "awsui_root_2rhyz_1wtgy_93",
6
- "input": "awsui_input_2rhyz_1wtgy_97",
7
- "input-readonly": "awsui_input-readonly_2rhyz_1wtgy_118",
8
- "input-invalid": "awsui_input-invalid_2rhyz_1wtgy_179",
9
- "input-has-icon-left": "awsui_input-has-icon-left_2rhyz_1wtgy_190",
10
- "input-type-search": "awsui_input-type-search_2rhyz_1wtgy_195",
11
- "input-has-icon-right": "awsui_input-has-icon-right_2rhyz_1wtgy_213",
12
- "input-has-no-border-radius": "awsui_input-has-no-border-radius_2rhyz_1wtgy_216",
13
- "input-container": "awsui_input-container_2rhyz_1wtgy_220",
14
- "input-icon": "awsui_input-icon_2rhyz_1wtgy_225",
15
- "input-icon-hoverable": "awsui_input-icon-hoverable_2rhyz_1wtgy_228",
16
- "input-icon-left": "awsui_input-icon-left_2rhyz_1wtgy_232",
17
- "input-icon-right": "awsui_input-icon-right_2rhyz_1wtgy_237"
5
+ "root": "awsui_root_2rhyz_1g8vz_93",
6
+ "input": "awsui_input_2rhyz_1g8vz_97",
7
+ "input-readonly": "awsui_input-readonly_2rhyz_1g8vz_118",
8
+ "input-invalid": "awsui_input-invalid_2rhyz_1g8vz_179",
9
+ "input-has-icon-left": "awsui_input-has-icon-left_2rhyz_1g8vz_190",
10
+ "input-type-search": "awsui_input-type-search_2rhyz_1g8vz_195",
11
+ "input-has-icon-right": "awsui_input-has-icon-right_2rhyz_1g8vz_211",
12
+ "input-has-no-border-radius": "awsui_input-has-no-border-radius_2rhyz_1g8vz_214",
13
+ "input-container": "awsui_input-container_2rhyz_1g8vz_218",
14
+ "input-icon": "awsui_input-icon_2rhyz_1g8vz_223",
15
+ "input-icon-hoverable": "awsui_input-icon-hoverable_2rhyz_1g8vz_226",
16
+ "input-icon-left": "awsui_input-icon-left_2rhyz_1g8vz_230",
17
+ "input-icon-right": "awsui_input-icon-right_2rhyz_1g8vz_235"
18
18
  };
19
19
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/date-input/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAc,MAAM,OAAO,CAAC;AAMnC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAI9C,OAAO,EAAE,cAAc,EAAE,CAAC;AAkB1B,QAAA,MAAM,SAAS,2FAed,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/date-input/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAc,MAAM,OAAO,CAAC;AAOnC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,CAAC;AAkB1B,QAAA,MAAM,SAAS,2FAed,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -1,14 +1,15 @@
1
1
  import { __assign, __rest } from "tslib";
2
2
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  // SPDX-License-Identifier: Apache-2.0
4
+ import { getDaysInMonth } from 'date-fns';
4
5
  import React from 'react';
5
6
  import { fireNonCancelableEvent } from '../../events';
7
+ import { displayToIso, isoToDisplay, parseDate } from '../../utils/date-time';
6
8
  import MaskedInput from '../masked-input';
7
- import { daysInMonth, parseDate, displayToIso, isoToDisplay } from './utils/date';
8
9
  function daysMax(value) {
9
10
  // force to first day in month, as new Date('2018-02-30') -> March 2nd 2018
10
11
  var baseDate = displayToIso(value).substring(0, 7);
11
- return daysInMonth(parseDate(baseDate));
12
+ return getDaysInMonth(parseDate(baseDate));
12
13
  }
13
14
  var maskArgs = {
14
15
  separator: '/',
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/components/date-input/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAc,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAK1C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIlF,SAAS,OAAO,CAAC,KAAa;IAC5B,2EAA2E;IAC3E,IAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,OAAO,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,IAAM,QAAQ,GAAa;IACzB,SAAS,EAAE,GAAG;IACd,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAChC,QAAQ,EAAE;QACR,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,SAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE;QAC/C,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;QAC9B,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE;KACpC;CACF,CAAC;AAEF,IAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAChC,UAAC,EAAuE,EAAE,GAA4B;IAAnG,IAAA,yBAAwB,EAAxB,iBAAiB,mBAAG,IAAI,KAAA,EAAE,KAAK,WAAA,EAAE,QAAQ,cAAA,EAAK,KAAK,cAArD,0CAAuD,CAAF;IACpD,OAAO,CACL,oBAAC,WAAW,aACV,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAC1B,QAAQ,EAAE,UAAA,KAAK,IAAI,OAAA,sBAAsB,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAA7E,CAA6E,IAC5F,KAAK,IACT,GAAG,EAAE,GAAG,EACR,yBAAyB,EAAE,IAAI,EAC/B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,IAAI,EACb,iBAAiB,EAAE,iBAAiB,IACpC,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,SAAS,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { Ref } from 'react';\nimport { fireNonCancelableEvent } from '../../events';\n\nimport MaskedInput from '../masked-input';\nimport { MaskArgs } from '../masked-input/utils/mask-format';\n\nimport { DateInputProps } from './interfaces';\n\nimport { daysInMonth, parseDate, displayToIso, isoToDisplay } from './utils/date';\n\nexport { DateInputProps };\n\nfunction daysMax(value: string): number {\n // force to first day in month, as new Date('2018-02-30') -> March 2nd 2018\n const baseDate = displayToIso(value).substring(0, 7);\n return daysInMonth(parseDate(baseDate));\n}\n\nconst maskArgs: MaskArgs = {\n separator: '/',\n inputSeparators: ['-', '.', ' '],\n segments: [\n { min: 0, max: 9999, default: 2000, length: 4 },\n { min: 1, max: 12, length: 2 },\n { min: 1, max: daysMax, length: 2 },\n ],\n};\n\nconst DateInput = React.forwardRef(\n ({ __internalRootRef = null, value, onChange, ...props }: DateInputProps, ref: Ref<DateInputProps.Ref>) => {\n return (\n <MaskedInput\n value={isoToDisplay(value)}\n onChange={event => fireNonCancelableEvent(onChange, { value: displayToIso(event.detail.value) })}\n {...props}\n ref={ref}\n disableBrowserAutocorrect={true}\n mask={maskArgs}\n autofix={true}\n __internalRootRef={__internalRootRef}\n />\n );\n }\n);\n\nexport default DateInput;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/components/date-input/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAc,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAE9E,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAO1C,SAAS,OAAO,CAAC,KAAa;IAC5B,2EAA2E;IAC3E,IAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,OAAO,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,IAAM,QAAQ,GAAa;IACzB,SAAS,EAAE,GAAG;IACd,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAChC,QAAQ,EAAE;QACR,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,SAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE;QAC/C,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE;QAC9B,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE;KACpC;CACF,CAAC;AAEF,IAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAChC,UAAC,EAAuE,EAAE,GAA4B;IAAnG,IAAA,yBAAwB,EAAxB,iBAAiB,mBAAG,IAAI,KAAA,EAAE,KAAK,WAAA,EAAE,QAAQ,cAAA,EAAK,KAAK,cAArD,0CAAuD,CAAF;IACpD,OAAO,CACL,oBAAC,WAAW,aACV,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAC1B,QAAQ,EAAE,UAAA,KAAK,IAAI,OAAA,sBAAsB,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAA7E,CAA6E,IAC5F,KAAK,IACT,GAAG,EAAE,GAAG,EACR,yBAAyB,EAAE,IAAI,EAC/B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,IAAI,EACb,iBAAiB,EAAE,iBAAiB,IACpC,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,SAAS,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getDaysInMonth } from 'date-fns';\nimport React, { Ref } from 'react';\nimport { fireNonCancelableEvent } from '../../events';\nimport { displayToIso, isoToDisplay, parseDate } from '../../utils/date-time';\n\nimport MaskedInput from '../masked-input';\nimport { MaskArgs } from '../masked-input/utils/mask-format';\n\nimport { DateInputProps } from './interfaces';\n\nexport { DateInputProps };\n\nfunction daysMax(value: string): number {\n // force to first day in month, as new Date('2018-02-30') -> March 2nd 2018\n const baseDate = displayToIso(value).substring(0, 7);\n return getDaysInMonth(parseDate(baseDate));\n}\n\nconst maskArgs: MaskArgs = {\n separator: '/',\n inputSeparators: ['-', '.', ' '],\n segments: [\n { min: 0, max: 9999, default: 2000, length: 4 },\n { min: 1, max: 12, length: 2 },\n { min: 1, max: daysMax, length: 2 },\n ],\n};\n\nconst DateInput = React.forwardRef(\n ({ __internalRootRef = null, value, onChange, ...props }: DateInputProps, ref: Ref<DateInputProps.Ref>) => {\n return (\n <MaskedInput\n value={isoToDisplay(value)}\n onChange={event => fireNonCancelableEvent(onChange, { value: displayToIso(event.detail.value) })}\n {...props}\n ref={ref}\n disableBrowserAutocorrect={true}\n mask={maskArgs}\n autofix={true}\n __internalRootRef={__internalRootRef}\n />\n );\n }\n);\n\nexport default DateInput;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mask-format.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/components/masked-input/utils/mask-format.ts"],"names":[],"mappings":"AAIA,UAAU,aAAa;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAQD,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,cAAM,UAAU;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,eAAe,CAAqC;gBAEhD,EAAE,SAAS,EAAE,eAAoB,EAAE,QAAQ,EAAE,EAAE,QAAQ;IASnE,kBAAkB,CAAC,KAAK,EAAE,MAAM;IAKhC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIjC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IA8C/B,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAcpC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAsBnC,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAQjF,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY;IAoC5F,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAc1E,mBAAmB,CAAC,QAAQ,EAAE,MAAM;IAIpC,cAAc,CAAC,QAAQ,EAAE,MAAM;IAI/B,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI3D,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI3D,YAAY;IAKZ,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY;IAS9D,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY;IAe1D,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAkB1C,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAyB7F,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM;;;;IAqDrE,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,wBAAwB;CAqBjC;AAED,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"mask-format.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/components/masked-input/utils/mask-format.ts"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAQD,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,cAAM,UAAU;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,eAAe,CAAqC;gBAEhD,EAAE,SAAS,EAAE,eAAoB,EAAE,QAAQ,EAAE,EAAE,QAAQ;IASnE,kBAAkB,CAAC,KAAK,EAAE,MAAM;IAKhC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIjC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IA8C/B,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAcpC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAsBnC,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAQjF,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY;IAoC5F,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAc1E,mBAAmB,CAAC,QAAQ,EAAE,MAAM;IAIpC,cAAc,CAAC,QAAQ,EAAE,MAAM;IAI/B,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI3D,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI3D,YAAY;IAKZ,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY;IAS9D,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY;IAe1D,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAkB1C,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAyB7F,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM;;;;IAqDrE,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,wBAAwB;CAqBjC;AAED,eAAe,UAAU,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import { __assign, __spreadArray } from "tslib";
2
2
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  // SPDX-License-Identifier: Apache-2.0
4
- import { padLeftZeros, insertAt } from './strings';
4
+ import { padLeftZeros } from '../../../utils/strings';
5
+ import { insertAt } from './strings';
5
6
  var MaskFormat = /** @class */ (function () {
6
7
  function MaskFormat(_a) {
7
8
  var separator = _a.separator, _b = _a.inputSeparators, inputSeparators = _b === void 0 ? [] : _b, segments = _a.segments;
@@ -1 +1 @@
1
- {"version":3,"file":"mask-format.js","sourceRoot":"","sources":["../../../../../../src/internal/components/masked-input/utils/mask-format.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { padLeftZeros, insertAt } from './strings';\n\ninterface FormatSegment {\n min: number;\n max: number | ((value: string) => number);\n length: number;\n default?: number;\n}\n\ninterface FormatSegmentFull extends FormatSegment {\n start: number;\n max(value: string): number;\n end: number;\n}\n\nexport interface MaskArgs {\n separator: string;\n inputSeparators?: Array<string>;\n segments: Array<FormatSegment>;\n}\n\nexport interface ChangeResult {\n value: string;\n position: number;\n}\n\nclass MaskFormat {\n separator: string;\n private inputSeparators: Array<string>;\n private segments: Array<FormatSegmentFull>;\n private positionFormats: { [x: number]: FormatSegmentFull };\n\n constructor({ separator, inputSeparators = [], segments }: MaskArgs) {\n this.positionFormats = {};\n this.segments = [];\n this.separator = separator;\n\n this.inputSeparators = [...inputSeparators, separator];\n this.enrichSegmentDefinitions(segments);\n }\n\n tryAppendSeparator(value: string) {\n const withSeparator = `${value}${this.separator}`;\n return this.isValid(withSeparator) ? withSeparator : value;\n }\n\n isSeparator(key: string): boolean {\n return this.inputSeparators.indexOf(key) !== -1;\n }\n\n isValid(value: string): boolean {\n const inputSegments = value.split(this.separator);\n\n if (inputSegments.length > this.segments.length) {\n return false;\n }\n\n return inputSegments.every((segmentValue, i) => {\n const segment = this.segments[i];\n\n // disallow empty segments\n if (segmentValue === '') {\n // except empty last segment (e.g. trailing separator \"12:\")\n if (i === inputSegments.length - 1) {\n return true;\n } else {\n return false;\n }\n }\n // only allow numerals\n if (!segmentValue.match(/^\\d+$/)) {\n return false;\n }\n // disallow incomplete segments, except at end\n if (segmentValue.length < segment.length && i !== inputSegments.length - 1) {\n return false;\n }\n // limit numerical value\n const intValue = parseInt(segmentValue, 10);\n\n // Handles values padded with 0s that are lost during parsing\n if (segmentValue.length > segment.length) {\n return false;\n }\n\n if (intValue < segment.min || intValue > segment.max(value)) {\n // allow incomplete segments in final position\n if (i === inputSegments.length - 1 && segmentValue.length < segment.length) {\n return true;\n }\n return false;\n }\n return true;\n });\n }\n\n getValidValue(value: string): string {\n let validValue = value;\n\n do {\n if (this.isValid(validValue)) {\n return this.tryAppendSeparator(validValue);\n }\n\n validValue = validValue.substring(0, validValue.length - 1);\n } while (validValue.length > 0);\n\n return '';\n }\n\n autoComplete(value: string): string {\n // aka [...completeSegments, lastSegment] = value.split(':')\n // but that's not valid :/\n const [lastSegmentValue, ...completeSegmentValues] = value.split(this.separator).reverse();\n const lastSegment = this.segments[completeSegmentValues.length];\n\n // if the last segment isn't complete, pad it with a preceding 0\n // e.g. 10:1 -> 10:01\n const paddedLastSegmentValue = this.padWithDefaultValue(lastSegmentValue, lastSegment);\n\n // recombine, and pad with extra segments for the full format\n const partial = [...completeSegmentValues.reverse(), paddedLastSegmentValue];\n while (partial.length < this.segments.length) {\n const nextSegment = this.segments[partial.length];\n const segmentValue = this.padWithDefaultValue('', nextSegment);\n partial.push(segmentValue);\n }\n value = partial.join(this.separator);\n value = this.correctMinMaxValues(value);\n return value;\n }\n\n getSegmentValueWithAddition(position: number, value: string, enteredDigit: string) {\n const segment = this.positionFormats[position];\n const segmentValue = value.substr(segment.start, segment.length);\n const segmentPosition = position - segment.start;\n const newValue = insertAt(segmentValue, enteredDigit, segmentPosition, segmentPosition + 1);\n return parseInt(newValue, 10);\n }\n\n replaceDigitsWithZeroes(value: string, cursorStart: number, cursorEnd: number): ChangeResult {\n const position = this.isCursorAtSeparator(cursorStart) ? cursorStart + 1 : cursorStart;\n\n // move selection forwards if it starts with a separator\n if (this.isCursorAtSeparator(cursorStart)) {\n cursorStart++;\n }\n\n // first, insert zeros in a partial segment at beginning of selection\n if (!this.isSegmentStart(cursorStart)) {\n const segment = this.positionFormats[cursorStart];\n value = insertAt(value, padLeftZeros('', segment.end - cursorStart), cursorStart, segment.end);\n cursorStart = segment.end + 1;\n }\n\n // then loop through remaining segments, filling with zeros\n let currentSegment: FormatSegmentFull;\n while (cursorStart < cursorEnd && (currentSegment = this.positionFormats[cursorStart + 1])) {\n const insertionEnd = Math.min(cursorEnd, currentSegment.end);\n value = insertAt(\n value,\n padLeftZeros('', insertionEnd - currentSegment.start),\n currentSegment.start,\n insertionEnd\n );\n cursorStart = insertionEnd + 1;\n }\n\n value = this.correctMinMaxValues(value);\n\n return {\n value,\n position,\n };\n }\n\n handleSeparatorInput(value: string, position: number): ChangeResult | void {\n if (position === value.length && !this.isSegmentStart(position)) {\n const segment = this.positionFormats[position];\n let segmentValue = value.substr(segment.start, segment.length);\n segmentValue = this.padWithDefaultValue(segmentValue, segment);\n value = insertAt(value, segmentValue, segment.start, segment.end);\n value = this.correctMinMaxValues(value);\n return {\n value,\n position: value.length,\n };\n }\n }\n\n isCursorAtSeparator(position: number) {\n return 0 < position && position < this.getMaxLength() && this.positionFormats[position] === undefined;\n }\n\n isSegmentStart(position: number) {\n return position === 0 || this.isCursorAtSeparator(position - 1);\n }\n\n getSegmentMaxValue(value: string, position: number): number {\n return this.positionFormats[position].max(value);\n }\n\n getSegmentMinValue(value: string, position: number): number {\n return this.positionFormats[position].min;\n }\n\n getMaxLength() {\n const last = this.segments[this.segments.length - 1];\n return last.start + last.length;\n }\n\n deleteSeparator(value: string, position: number): ChangeResult {\n value = insertAt(value, '0', position - 2, position - 1);\n\n return {\n value: this.correctMinMaxValues(value),\n position: position - 2,\n };\n }\n\n deleteDigit(value: string, position: number): ChangeResult {\n value = insertAt(value, '0', position - 1, position);\n\n // 23:59|: => backspace => 23:5|\n const length = value.length;\n if (value.slice(length - 2) === '0:') {\n value = value.slice(0, length - 2);\n }\n\n return {\n value: this.correctMinMaxValues(value),\n position: position - 1,\n };\n }\n\n correctMinMaxValues(value: string): string {\n let segment = this.positionFormats[0];\n while (segment && value.length >= segment.end) {\n const segmentValue = parseInt(value.substr(segment.start, segment.length), 10);\n const segmentMax = segment.max(value);\n if (segmentValue < segment.min) {\n let toInsert = segment.min.toFixed();\n toInsert = padLeftZeros(toInsert, segment.length);\n value = insertAt(value, toInsert, segment.start, segment.end);\n }\n if (segmentValue > segmentMax) {\n value = insertAt(value, segmentMax.toFixed(), segment.start, segment.end);\n }\n segment = this.positionFormats[segment.end + 1];\n }\n return value.substr(0, this.segments[this.segments.length - 1].end);\n }\n\n formatPastedText(text: string, value: string, cursorStart: number, cursorEnd: number): string {\n const keyArr = text.trim().split('');\n\n let position = cursorStart;\n\n let formattedValue = value;\n // if a selection range captures the end of the current value\n // we replace it with the value in buffer even if the value in buffer is shorter\n if (cursorEnd > cursorStart && cursorEnd === value.length) {\n formattedValue = value.slice(0, cursorStart);\n }\n\n for (const key of keyArr) {\n if (position >= this.getMaxLength()) {\n break;\n }\n\n const result = this.processKey(formattedValue, key, position);\n formattedValue = result.value;\n position = result.position;\n }\n\n return this.tryAppendSeparator(formattedValue);\n }\n\n processKey(initialValue: string, key: string, initialPosition: number) {\n let value = initialValue;\n let position = initialPosition;\n\n if (this.isSeparator(key)) {\n const result = this.handleSeparatorInput(value, position);\n if (result) {\n value = result.value;\n position = result.position;\n }\n } else {\n const isCursorAtEnd = position === value.length;\n const segmentValue = this.getSegmentValueWithAddition(position, value, key);\n const segmentMaxValue = this.getSegmentMaxValue(value, position);\n const segmentMinValue = this.getSegmentMinValue(value, position);\n const firstDigitGreater = parseInt(key, 10) > parseInt(segmentMaxValue.toFixed()[0], 10);\n const isValidPosition = isCursorAtEnd || segmentValue.toFixed().length === 1;\n const exceedsMaxAtSegmentStart = this.isSegmentStart(position) && isValidPosition && firstDigitGreater;\n\n if (exceedsMaxAtSegmentStart) {\n // 22:| => Enter '9' => 22:09|\n // |1 => Enter '9' => 09|\n value = insertAt(value, `0${key}`, position, position + 2);\n position += 2;\n } else if (segmentValue > segmentMaxValue && this.isSegmentStart(position)) {\n // 22:|22 => Enter '9' => 22:59|\n value = insertAt(value, segmentMaxValue.toFixed(), position, position + segmentMaxValue.toFixed().length);\n position += segmentMaxValue.toFixed().length;\n } else if (segmentValue > segmentMaxValue) {\n // 2|2:22 => Enter '9' => 23:|22\n value = insertAt(value, segmentMaxValue.toFixed(), position - 1, position + 1);\n position += 1;\n } else if (segmentValue < segmentMinValue && !this.isSegmentStart(position)) {\n // 0| => enter '0' => 01:\n value = insertAt(value, segmentMinValue.toFixed(), position, position + 1);\n position += 1;\n } else {\n // 22:| => Enter '5' => 23:5|\n value = insertAt(value, key, position, position + 1);\n position += 1;\n }\n }\n\n value = this.tryAppendSeparator(value);\n\n // Move cursor in front of separator if behind after overwriting a character\n if (this.isCursorAtSeparator(position)) {\n position++;\n }\n\n return { value, position };\n }\n\n private padWithDefaultValue(segmentValue: string, segment: FormatSegmentFull) {\n let defaultValue = (segment.default || segment.min).toFixed();\n defaultValue = padLeftZeros(defaultValue, segment.length);\n return insertAt(defaultValue, segmentValue, segment.length - segmentValue.length, segment.length);\n }\n\n private enrichSegmentDefinitions(segments: FormatSegment[]) {\n this.positionFormats = {};\n this.segments = [];\n let position = 0;\n for (const segment of segments) {\n const max = segment.max;\n const fullSegment: FormatSegmentFull = {\n ...segment,\n max: typeof max === 'number' ? () => max : max,\n start: position,\n end: position + segment.length,\n };\n this.segments.push(fullSegment);\n // insert this format segment for every char in the max value\n for (let j = 0; j < fullSegment.length; j++) {\n this.positionFormats[position++] = fullSegment;\n }\n // skip a position for separator\n position++;\n }\n }\n}\n\nexport default MaskFormat;\n"]}
1
+ {"version":3,"file":"mask-format.js","sourceRoot":"","sources":["../../../../../../src/internal/components/masked-input/utils/mask-format.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { padLeftZeros } from '../../../utils/strings';\nimport { insertAt } from './strings';\n\ninterface FormatSegment {\n min: number;\n max: number | ((value: string) => number);\n length: number;\n default?: number;\n}\n\ninterface FormatSegmentFull extends FormatSegment {\n start: number;\n max(value: string): number;\n end: number;\n}\n\nexport interface MaskArgs {\n separator: string;\n inputSeparators?: Array<string>;\n segments: Array<FormatSegment>;\n}\n\nexport interface ChangeResult {\n value: string;\n position: number;\n}\n\nclass MaskFormat {\n separator: string;\n private inputSeparators: Array<string>;\n private segments: Array<FormatSegmentFull>;\n private positionFormats: { [x: number]: FormatSegmentFull };\n\n constructor({ separator, inputSeparators = [], segments }: MaskArgs) {\n this.positionFormats = {};\n this.segments = [];\n this.separator = separator;\n\n this.inputSeparators = [...inputSeparators, separator];\n this.enrichSegmentDefinitions(segments);\n }\n\n tryAppendSeparator(value: string) {\n const withSeparator = `${value}${this.separator}`;\n return this.isValid(withSeparator) ? withSeparator : value;\n }\n\n isSeparator(key: string): boolean {\n return this.inputSeparators.indexOf(key) !== -1;\n }\n\n isValid(value: string): boolean {\n const inputSegments = value.split(this.separator);\n\n if (inputSegments.length > this.segments.length) {\n return false;\n }\n\n return inputSegments.every((segmentValue, i) => {\n const segment = this.segments[i];\n\n // disallow empty segments\n if (segmentValue === '') {\n // except empty last segment (e.g. trailing separator \"12:\")\n if (i === inputSegments.length - 1) {\n return true;\n } else {\n return false;\n }\n }\n // only allow numerals\n if (!segmentValue.match(/^\\d+$/)) {\n return false;\n }\n // disallow incomplete segments, except at end\n if (segmentValue.length < segment.length && i !== inputSegments.length - 1) {\n return false;\n }\n // limit numerical value\n const intValue = parseInt(segmentValue, 10);\n\n // Handles values padded with 0s that are lost during parsing\n if (segmentValue.length > segment.length) {\n return false;\n }\n\n if (intValue < segment.min || intValue > segment.max(value)) {\n // allow incomplete segments in final position\n if (i === inputSegments.length - 1 && segmentValue.length < segment.length) {\n return true;\n }\n return false;\n }\n return true;\n });\n }\n\n getValidValue(value: string): string {\n let validValue = value;\n\n do {\n if (this.isValid(validValue)) {\n return this.tryAppendSeparator(validValue);\n }\n\n validValue = validValue.substring(0, validValue.length - 1);\n } while (validValue.length > 0);\n\n return '';\n }\n\n autoComplete(value: string): string {\n // aka [...completeSegments, lastSegment] = value.split(':')\n // but that's not valid :/\n const [lastSegmentValue, ...completeSegmentValues] = value.split(this.separator).reverse();\n const lastSegment = this.segments[completeSegmentValues.length];\n\n // if the last segment isn't complete, pad it with a preceding 0\n // e.g. 10:1 -> 10:01\n const paddedLastSegmentValue = this.padWithDefaultValue(lastSegmentValue, lastSegment);\n\n // recombine, and pad with extra segments for the full format\n const partial = [...completeSegmentValues.reverse(), paddedLastSegmentValue];\n while (partial.length < this.segments.length) {\n const nextSegment = this.segments[partial.length];\n const segmentValue = this.padWithDefaultValue('', nextSegment);\n partial.push(segmentValue);\n }\n value = partial.join(this.separator);\n value = this.correctMinMaxValues(value);\n return value;\n }\n\n getSegmentValueWithAddition(position: number, value: string, enteredDigit: string) {\n const segment = this.positionFormats[position];\n const segmentValue = value.substr(segment.start, segment.length);\n const segmentPosition = position - segment.start;\n const newValue = insertAt(segmentValue, enteredDigit, segmentPosition, segmentPosition + 1);\n return parseInt(newValue, 10);\n }\n\n replaceDigitsWithZeroes(value: string, cursorStart: number, cursorEnd: number): ChangeResult {\n const position = this.isCursorAtSeparator(cursorStart) ? cursorStart + 1 : cursorStart;\n\n // move selection forwards if it starts with a separator\n if (this.isCursorAtSeparator(cursorStart)) {\n cursorStart++;\n }\n\n // first, insert zeros in a partial segment at beginning of selection\n if (!this.isSegmentStart(cursorStart)) {\n const segment = this.positionFormats[cursorStart];\n value = insertAt(value, padLeftZeros('', segment.end - cursorStart), cursorStart, segment.end);\n cursorStart = segment.end + 1;\n }\n\n // then loop through remaining segments, filling with zeros\n let currentSegment: FormatSegmentFull;\n while (cursorStart < cursorEnd && (currentSegment = this.positionFormats[cursorStart + 1])) {\n const insertionEnd = Math.min(cursorEnd, currentSegment.end);\n value = insertAt(\n value,\n padLeftZeros('', insertionEnd - currentSegment.start),\n currentSegment.start,\n insertionEnd\n );\n cursorStart = insertionEnd + 1;\n }\n\n value = this.correctMinMaxValues(value);\n\n return {\n value,\n position,\n };\n }\n\n handleSeparatorInput(value: string, position: number): ChangeResult | void {\n if (position === value.length && !this.isSegmentStart(position)) {\n const segment = this.positionFormats[position];\n let segmentValue = value.substr(segment.start, segment.length);\n segmentValue = this.padWithDefaultValue(segmentValue, segment);\n value = insertAt(value, segmentValue, segment.start, segment.end);\n value = this.correctMinMaxValues(value);\n return {\n value,\n position: value.length,\n };\n }\n }\n\n isCursorAtSeparator(position: number) {\n return 0 < position && position < this.getMaxLength() && this.positionFormats[position] === undefined;\n }\n\n isSegmentStart(position: number) {\n return position === 0 || this.isCursorAtSeparator(position - 1);\n }\n\n getSegmentMaxValue(value: string, position: number): number {\n return this.positionFormats[position].max(value);\n }\n\n getSegmentMinValue(value: string, position: number): number {\n return this.positionFormats[position].min;\n }\n\n getMaxLength() {\n const last = this.segments[this.segments.length - 1];\n return last.start + last.length;\n }\n\n deleteSeparator(value: string, position: number): ChangeResult {\n value = insertAt(value, '0', position - 2, position - 1);\n\n return {\n value: this.correctMinMaxValues(value),\n position: position - 2,\n };\n }\n\n deleteDigit(value: string, position: number): ChangeResult {\n value = insertAt(value, '0', position - 1, position);\n\n // 23:59|: => backspace => 23:5|\n const length = value.length;\n if (value.slice(length - 2) === '0:') {\n value = value.slice(0, length - 2);\n }\n\n return {\n value: this.correctMinMaxValues(value),\n position: position - 1,\n };\n }\n\n correctMinMaxValues(value: string): string {\n let segment = this.positionFormats[0];\n while (segment && value.length >= segment.end) {\n const segmentValue = parseInt(value.substr(segment.start, segment.length), 10);\n const segmentMax = segment.max(value);\n if (segmentValue < segment.min) {\n let toInsert = segment.min.toFixed();\n toInsert = padLeftZeros(toInsert, segment.length);\n value = insertAt(value, toInsert, segment.start, segment.end);\n }\n if (segmentValue > segmentMax) {\n value = insertAt(value, segmentMax.toFixed(), segment.start, segment.end);\n }\n segment = this.positionFormats[segment.end + 1];\n }\n return value.substr(0, this.segments[this.segments.length - 1].end);\n }\n\n formatPastedText(text: string, value: string, cursorStart: number, cursorEnd: number): string {\n const keyArr = text.trim().split('');\n\n let position = cursorStart;\n\n let formattedValue = value;\n // if a selection range captures the end of the current value\n // we replace it with the value in buffer even if the value in buffer is shorter\n if (cursorEnd > cursorStart && cursorEnd === value.length) {\n formattedValue = value.slice(0, cursorStart);\n }\n\n for (const key of keyArr) {\n if (position >= this.getMaxLength()) {\n break;\n }\n\n const result = this.processKey(formattedValue, key, position);\n formattedValue = result.value;\n position = result.position;\n }\n\n return this.tryAppendSeparator(formattedValue);\n }\n\n processKey(initialValue: string, key: string, initialPosition: number) {\n let value = initialValue;\n let position = initialPosition;\n\n if (this.isSeparator(key)) {\n const result = this.handleSeparatorInput(value, position);\n if (result) {\n value = result.value;\n position = result.position;\n }\n } else {\n const isCursorAtEnd = position === value.length;\n const segmentValue = this.getSegmentValueWithAddition(position, value, key);\n const segmentMaxValue = this.getSegmentMaxValue(value, position);\n const segmentMinValue = this.getSegmentMinValue(value, position);\n const firstDigitGreater = parseInt(key, 10) > parseInt(segmentMaxValue.toFixed()[0], 10);\n const isValidPosition = isCursorAtEnd || segmentValue.toFixed().length === 1;\n const exceedsMaxAtSegmentStart = this.isSegmentStart(position) && isValidPosition && firstDigitGreater;\n\n if (exceedsMaxAtSegmentStart) {\n // 22:| => Enter '9' => 22:09|\n // |1 => Enter '9' => 09|\n value = insertAt(value, `0${key}`, position, position + 2);\n position += 2;\n } else if (segmentValue > segmentMaxValue && this.isSegmentStart(position)) {\n // 22:|22 => Enter '9' => 22:59|\n value = insertAt(value, segmentMaxValue.toFixed(), position, position + segmentMaxValue.toFixed().length);\n position += segmentMaxValue.toFixed().length;\n } else if (segmentValue > segmentMaxValue) {\n // 2|2:22 => Enter '9' => 23:|22\n value = insertAt(value, segmentMaxValue.toFixed(), position - 1, position + 1);\n position += 1;\n } else if (segmentValue < segmentMinValue && !this.isSegmentStart(position)) {\n // 0| => enter '0' => 01:\n value = insertAt(value, segmentMinValue.toFixed(), position, position + 1);\n position += 1;\n } else {\n // 22:| => Enter '5' => 23:5|\n value = insertAt(value, key, position, position + 1);\n position += 1;\n }\n }\n\n value = this.tryAppendSeparator(value);\n\n // Move cursor in front of separator if behind after overwriting a character\n if (this.isCursorAtSeparator(position)) {\n position++;\n }\n\n return { value, position };\n }\n\n private padWithDefaultValue(segmentValue: string, segment: FormatSegmentFull) {\n let defaultValue = (segment.default || segment.min).toFixed();\n defaultValue = padLeftZeros(defaultValue, segment.length);\n return insertAt(defaultValue, segmentValue, segment.length - segmentValue.length, segment.length);\n }\n\n private enrichSegmentDefinitions(segments: FormatSegment[]) {\n this.positionFormats = {};\n this.segments = [];\n let position = 0;\n for (const segment of segments) {\n const max = segment.max;\n const fullSegment: FormatSegmentFull = {\n ...segment,\n max: typeof max === 'number' ? () => max : max,\n start: position,\n end: position + segment.length,\n };\n this.segments.push(fullSegment);\n // insert this format segment for every char in the max value\n for (let j = 0; j < fullSegment.length; j++) {\n this.positionFormats[position++] = fullSegment;\n }\n // skip a position for separator\n position++;\n }\n }\n}\n\nexport default MaskFormat;\n"]}
@@ -1,3 +1,2 @@
1
1
  export declare const insertAt: (text: string, toInsert: string, start: number, end?: number) => string;
2
- export declare const padLeftZeros: (value: string, length: number) => string;
3
2
  //# sourceMappingURL=strings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/components/masked-input/utils/strings.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,SAAU,MAAM,YAAY,MAAM,SAAS,MAAM,QAAO,MAAM,KAAW,MAC3C,CAAC;AAEpD,eAAO,MAAM,YAAY,UAAW,MAAM,UAAU,MAAM,WAKzD,CAAC"}
1
+ {"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/components/masked-input/utils/strings.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,QAAQ,SAAU,MAAM,YAAY,MAAM,SAAS,MAAM,QAAO,MAAM,KAAW,MAC3C,CAAC"}
@@ -4,10 +4,4 @@ export var insertAt = function (text, toInsert, start, end) {
4
4
  if (end === void 0) { end = start; }
5
5
  return text.slice(0, start) + toInsert + text.slice(end);
6
6
  };
7
- export var padLeftZeros = function (value, length) {
8
- while (value.length < length) {
9
- value = "0".concat(value);
10
- }
11
- return value;
12
- };
13
7
  //# sourceMappingURL=strings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"strings.js","sourceRoot":"","sources":["../../../../../../src/internal/components/masked-input/utils/strings.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,MAAM,CAAC,IAAM,QAAQ,GAAG,UAAC,IAAY,EAAE,QAAgB,EAAE,KAAa,EAAE,GAAmB;IAAnB,oBAAA,EAAA,WAAmB;IACzF,OAAA,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAAjD,CAAiD,CAAC;AAEpD,MAAM,CAAC,IAAM,YAAY,GAAG,UAAC,KAAa,EAAE,MAAc;IACxD,OAAO,KAAK,CAAC,MAAM,GAAG,MAAM,EAAE;QAC5B,KAAK,GAAG,WAAI,KAAK,CAAE,CAAC;KACrB;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport const insertAt = (text: string, toInsert: string, start: number, end: number = start): string =>\n text.slice(0, start) + toInsert + text.slice(end);\n\nexport const padLeftZeros = (value: string, length: number) => {\n while (value.length < length) {\n value = `0${value}`;\n }\n return value;\n};\n"]}
1
+ {"version":3,"file":"strings.js","sourceRoot":"","sources":["../../../../../../src/internal/components/masked-input/utils/strings.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,MAAM,CAAC,IAAM,QAAQ,GAAG,UAAC,IAAY,EAAE,QAAgB,EAAE,KAAa,EAAE,GAAmB;IAAnB,oBAAA,EAAA,WAAmB;IACzF,OAAA,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAAjD,CAAiD,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport const insertAt = (text: string, toInsert: string, start: number, end: number = start): string =>\n text.slice(0, start) + toInsert + text.slice(end);\n"]}
@@ -1,5 +1,5 @@
1
1
 
2
- export var PACKAGE_VERSION = '3.0.0 (a9f2fd1)';
2
+ export var PACKAGE_VERSION = '3.0.0 (f8e5715)';
3
3
  export var THEME = 'open-source-visual-refresh';
4
4
  export var ALWAYS_VISUAL_REFRESH = true;
5
5
 
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Converts ISO date to display format, e.g. 2020-01-01 -> 2020/01/01.
3
+ */
4
+ export declare function isoToDisplay(value: string): string;
5
+ /**
6
+ * Converts display date to ISO format, e.g. 2020/01/01 -> 2020-01-01.
7
+ */
8
+ export declare function displayToIso(value: string): string;
9
+ //# sourceMappingURL=display-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display-format.d.ts","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/display-format.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,UAEzC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,UAEzC"}
@@ -0,0 +1,15 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Converts ISO date to display format, e.g. 2020-01-01 -> 2020/01/01.
5
+ */
6
+ export function isoToDisplay(value) {
7
+ return value.replace(/-/g, '/');
8
+ }
9
+ /**
10
+ * Converts display date to ISO format, e.g. 2020/01/01 -> 2020-01-01.
11
+ */
12
+ export function displayToIso(value) {
13
+ return value.replace(/\//g, '-');
14
+ }
15
+ //# sourceMappingURL=display-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display-format.js","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/display-format.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Converts ISO date to display format, e.g. 2020-01-01 -> 2020/01/01.\n */\nexport function isoToDisplay(value: string) {\n return value.replace(/-/g, '/');\n}\n\n/**\n * Converts display date to ISO format, e.g. 2020/01/01 -> 2020-01-01.\n */\nexport function displayToIso(value: string) {\n return value.replace(/\\//g, '-');\n}\n"]}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Transforms Date's object date part to a string.
3
+ *
4
+ * We cannot use Date.toISOString because it produces GMT time where the date can be different than local.
5
+ */
6
+ export declare function formatDate(value: Date): string;
7
+ //# sourceMappingURL=format-date.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-date.d.ts","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/format-date.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAK9C"}
@@ -0,0 +1,15 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { padLeftZeros } from '../strings';
4
+ /**
5
+ * Transforms Date's object date part to a string.
6
+ *
7
+ * We cannot use Date.toISOString because it produces GMT time where the date can be different than local.
8
+ */
9
+ export function formatDate(value) {
10
+ var year = value.getFullYear();
11
+ var month = padLeftZeros("".concat(value.getMonth() + 1), 2);
12
+ var date = padLeftZeros("".concat(value.getDate()), 2);
13
+ return "".concat(year, "-").concat(month, "-").concat(date);
14
+ }
15
+ //# sourceMappingURL=format-date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-date.js","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/format-date.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAW;IACpC,IAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACjC,IAAM,KAAK,GAAG,YAAY,CAAC,UAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC;IACzD,IAAM,IAAI,GAAG,YAAY,CAAC,UAAG,KAAK,CAAC,OAAO,EAAE,CAAE,EAAE,CAAC,CAAC,CAAC;IACnD,OAAO,UAAG,IAAI,cAAI,KAAK,cAAI,IAAI,CAAE,CAAC;AACpC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { padLeftZeros } from '../strings';\n\n/**\n * Transforms Date's object date part to a string.\n *\n * We cannot use Date.toISOString because it produces GMT time where the date can be different than local.\n */\nexport function formatDate(value: Date): string {\n const year = value.getFullYear();\n const month = padLeftZeros(`${value.getMonth() + 1}`, 2);\n const date = padLeftZeros(`${value.getDate()}`, 2);\n return `${year}-${month}-${date}`;\n}\n"]}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Transforms Date's object time part to a string.
3
+ */
4
+ export declare const formatTime: (value: Date) => string;
5
+ //# sourceMappingURL=format-time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-time.d.ts","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/format-time.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,UAAU,UAAW,IAAI,KAAG,MAKxC,CAAC"}
@@ -0,0 +1,13 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { padLeftZeros } from '../strings';
4
+ /**
5
+ * Transforms Date's object time part to a string.
6
+ */
7
+ export var formatTime = function (value) {
8
+ var hours = padLeftZeros("".concat(value.getHours()), 2);
9
+ var minutes = padLeftZeros("".concat(value.getMinutes()), 2);
10
+ var seconds = padLeftZeros("".concat(value.getSeconds()), 2);
11
+ return "".concat(hours, ":").concat(minutes, ":").concat(seconds);
12
+ };
13
+ //# sourceMappingURL=format-time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-time.js","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/format-time.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C;;GAEG;AACH,MAAM,CAAC,IAAM,UAAU,GAAG,UAAC,KAAW;IACpC,IAAM,KAAK,GAAG,YAAY,CAAC,UAAG,KAAK,CAAC,QAAQ,EAAE,CAAE,EAAE,CAAC,CAAC,CAAC;IACrD,IAAM,OAAO,GAAG,YAAY,CAAC,UAAG,KAAK,CAAC,UAAU,EAAE,CAAE,EAAE,CAAC,CAAC,CAAC;IACzD,IAAM,OAAO,GAAG,YAAY,CAAC,UAAG,KAAK,CAAC,UAAU,EAAE,CAAE,EAAE,CAAC,CAAC,CAAC;IACzD,OAAO,UAAG,KAAK,cAAI,OAAO,cAAI,OAAO,CAAE,CAAC;AAC1C,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { padLeftZeros } from '../strings';\n\n/**\n * Transforms Date's object time part to a string.\n */\nexport const formatTime = (value: Date): string => {\n const hours = padLeftZeros(`${value.getHours()}`, 2);\n const minutes = padLeftZeros(`${value.getMinutes()}`, 2);\n const seconds = padLeftZeros(`${value.getSeconds()}`, 2);\n return `${hours}:${minutes}:${seconds}`;\n};\n"]}
@@ -0,0 +1,2 @@
1
+ export declare function formatTimezoneOffset(offsetInMinutes: number): string;
2
+ //# sourceMappingURL=format-timezone-offset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-timezone-offset.d.ts","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/format-timezone-offset.ts"],"names":[],"mappings":"AAKA,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,MAAM,UAQ3D"}
@@ -0,0 +1,11 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { padLeftZeros } from '../strings';
4
+ export function formatTimezoneOffset(offsetInMinutes) {
5
+ var hoursOffset = padLeftZeros(Math.floor(Math.abs(offsetInMinutes) / 60).toFixed(0), 2);
6
+ var minuteOffset = padLeftZeros(Math.abs(offsetInMinutes % 60).toFixed(0), 2);
7
+ var sign = offsetInMinutes < 0 ? '-' : '+';
8
+ var formattedOffset = "".concat(sign).concat(hoursOffset, ":").concat(minuteOffset);
9
+ return formattedOffset;
10
+ }
11
+ //# sourceMappingURL=format-timezone-offset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-timezone-offset.js","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/format-timezone-offset.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,UAAU,oBAAoB,CAAC,eAAuB;IAC1D,IAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3F,IAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhF,IAAM,IAAI,GAAG,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC7C,IAAM,eAAe,GAAG,UAAG,IAAI,SAAG,WAAW,cAAI,YAAY,CAAE,CAAC;IAEhE,OAAO,eAAe,CAAC;AACzB,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { padLeftZeros } from '../strings';\n\nexport function formatTimezoneOffset(offsetInMinutes: number) {\n const hoursOffset = padLeftZeros(Math.floor(Math.abs(offsetInMinutes) / 60).toFixed(0), 2);\n const minuteOffset = padLeftZeros(Math.abs(offsetInMinutes % 60).toFixed(0), 2);\n\n const sign = offsetInMinutes < 0 ? '-' : '+';\n const formattedOffset = `${sign}${hoursOffset}:${minuteOffset}`;\n\n return formattedOffset;\n}\n"]}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Returns the time offset of the browser.
3
+ *
4
+ * I.e. determines the `x` in `current offset = UTC + x`
5
+ */
6
+ export declare function getBrowserTimezoneOffset(): number;
7
+ //# sourceMappingURL=get-browser-timezone-offset.d.ts.map