@cloudscape-design/components 3.0.26 → 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 (230) hide show
  1. package/alert/internal.d.ts.map +1 -1
  2. package/alert/internal.js +3 -4
  3. package/alert/internal.js.map +1 -1
  4. package/app-layout/index.js +1 -1
  5. package/app-layout/index.js.map +1 -1
  6. package/breadcrumb-group/internal.d.ts.map +1 -1
  7. package/breadcrumb-group/internal.js +4 -4
  8. package/breadcrumb-group/internal.js.map +1 -1
  9. package/button-dropdown/interfaces.d.ts +1 -1
  10. package/button-dropdown/interfaces.d.ts.map +1 -1
  11. package/button-dropdown/interfaces.js.map +1 -1
  12. package/button-dropdown/internal.js +1 -1
  13. package/button-dropdown/internal.js.map +1 -1
  14. package/cards/index.js +1 -1
  15. package/cards/index.js.map +1 -1
  16. package/code-editor/index.d.ts.map +1 -1
  17. package/code-editor/index.js +2 -3
  18. package/code-editor/index.js.map +1 -1
  19. package/container/internal.js +1 -1
  20. package/container/internal.js.map +1 -1
  21. package/container/use-sticky-header.js +1 -1
  22. package/container/use-sticky-header.js.map +1 -1
  23. package/date-picker/calendar/index.d.ts.map +1 -1
  24. package/date-picker/calendar/index.js +2 -1
  25. package/date-picker/calendar/index.js.map +1 -1
  26. package/date-picker/calendar/utils/memoized-date.d.ts +2 -0
  27. package/date-picker/calendar/utils/memoized-date.d.ts.map +1 -0
  28. package/date-picker/calendar/utils/memoized-date.js +13 -0
  29. package/date-picker/calendar/utils/memoized-date.js.map +1 -0
  30. package/date-picker/embedded.js +1 -1
  31. package/date-picker/embedded.js.map +1 -1
  32. package/date-picker/index.d.ts.map +1 -1
  33. package/date-picker/index.js +3 -4
  34. package/date-picker/index.js.map +1 -1
  35. package/date-picker/use-date-picker.d.ts.map +1 -1
  36. package/date-picker/use-date-picker.js +1 -1
  37. package/date-picker/use-date-picker.js.map +1 -1
  38. package/date-range-picker/calendar/grids/day/index.js +1 -1
  39. package/date-range-picker/calendar/grids/day/index.js.map +1 -1
  40. package/date-range-picker/calendar/index.d.ts.map +1 -1
  41. package/date-range-picker/calendar/index.js +9 -11
  42. package/date-range-picker/calendar/index.js.map +1 -1
  43. package/date-range-picker/index.d.ts.map +1 -1
  44. package/date-range-picker/index.js +4 -4
  45. package/date-range-picker/index.js.map +1 -1
  46. package/date-range-picker/time-offset.d.ts +0 -7
  47. package/date-range-picker/time-offset.d.ts.map +1 -1
  48. package/date-range-picker/time-offset.js +4 -60
  49. package/date-range-picker/time-offset.js.map +1 -1
  50. package/flashbar/index.js +1 -1
  51. package/flashbar/index.js.map +1 -1
  52. package/form-field/internal.d.ts.map +1 -1
  53. package/form-field/internal.js +3 -6
  54. package/form-field/internal.js.map +1 -1
  55. package/header/internal.d.ts.map +1 -1
  56. package/header/internal.js +3 -6
  57. package/header/internal.js.map +1 -1
  58. package/icon/icons.js +1 -1
  59. package/icon/interfaces.d.ts +1 -1
  60. package/icon/interfaces.d.ts.map +1 -1
  61. package/icon/interfaces.js.map +1 -1
  62. package/icon/internal.js +1 -1
  63. package/icon/internal.js.map +1 -1
  64. package/input/styles.css.js +13 -13
  65. package/input/styles.scoped.css +35 -37
  66. package/input/styles.selectors.js +13 -13
  67. package/internal/components/checkbox-icon/index.d.ts.map +1 -1
  68. package/internal/components/checkbox-icon/index.js +3 -4
  69. package/internal/components/checkbox-icon/index.js.map +1 -1
  70. package/internal/components/content-layout/index.d.ts.map +1 -1
  71. package/internal/components/content-layout/index.js +3 -4
  72. package/internal/components/content-layout/index.js.map +1 -1
  73. package/internal/components/date-input/index.d.ts +1 -1
  74. package/internal/components/date-input/index.d.ts.map +1 -1
  75. package/internal/components/date-input/index.js +6 -4
  76. package/internal/components/date-input/index.js.map +1 -1
  77. package/internal/components/dropdown/index.js +1 -1
  78. package/internal/components/dropdown/index.js.map +1 -1
  79. package/internal/components/masked-input/utils/mask-format.d.ts.map +1 -1
  80. package/internal/components/masked-input/utils/mask-format.js +2 -1
  81. package/internal/components/masked-input/utils/mask-format.js.map +1 -1
  82. package/internal/components/masked-input/utils/strings.d.ts +0 -1
  83. package/internal/components/masked-input/utils/strings.d.ts.map +1 -1
  84. package/internal/components/masked-input/utils/strings.js +0 -6
  85. package/internal/components/masked-input/utils/strings.js.map +1 -1
  86. package/internal/environment.js +1 -1
  87. package/internal/hooks/use-mutation-observer/index.d.ts +5 -0
  88. package/internal/hooks/use-mutation-observer/index.d.ts.map +1 -1
  89. package/internal/hooks/use-mutation-observer/index.js +5 -0
  90. package/internal/hooks/use-mutation-observer/index.js.map +1 -1
  91. package/internal/hooks/use-portal-mode-classes/index.js +1 -1
  92. package/internal/hooks/use-portal-mode-classes/index.js.map +1 -1
  93. package/internal/hooks/use-singleton-handler/index.d.ts +2 -1
  94. package/internal/hooks/use-singleton-handler/index.d.ts.map +1 -1
  95. package/internal/hooks/use-singleton-handler/index.js.map +1 -1
  96. package/internal/hooks/use-visual-mode/index.d.ts +1 -1
  97. package/internal/hooks/use-visual-mode/index.d.ts.map +1 -1
  98. package/internal/hooks/use-visual-mode/index.js +16 -11
  99. package/internal/hooks/use-visual-mode/index.js.map +1 -1
  100. package/internal/utils/date-time/display-format.d.ts +9 -0
  101. package/internal/utils/date-time/display-format.d.ts.map +1 -0
  102. package/internal/utils/date-time/display-format.js +15 -0
  103. package/internal/utils/date-time/display-format.js.map +1 -0
  104. package/internal/utils/date-time/format-date.d.ts +7 -0
  105. package/internal/utils/date-time/format-date.d.ts.map +1 -0
  106. package/internal/utils/date-time/format-date.js +15 -0
  107. package/internal/utils/date-time/format-date.js.map +1 -0
  108. package/internal/utils/date-time/format-time.d.ts +5 -0
  109. package/internal/utils/date-time/format-time.d.ts.map +1 -0
  110. package/internal/utils/date-time/format-time.js +13 -0
  111. package/internal/utils/date-time/format-time.js.map +1 -0
  112. package/internal/utils/date-time/format-timezone-offset.d.ts +2 -0
  113. package/internal/utils/date-time/format-timezone-offset.d.ts.map +1 -0
  114. package/internal/utils/date-time/format-timezone-offset.js +11 -0
  115. package/internal/utils/date-time/format-timezone-offset.js.map +1 -0
  116. package/internal/utils/date-time/get-browser-timezone-offset.d.ts +7 -0
  117. package/internal/utils/date-time/get-browser-timezone-offset.d.ts.map +1 -0
  118. package/internal/utils/date-time/get-browser-timezone-offset.js +11 -0
  119. package/internal/utils/date-time/get-browser-timezone-offset.js.map +1 -0
  120. package/internal/utils/date-time/index.d.ts +11 -0
  121. package/internal/utils/date-time/index.d.ts.map +1 -0
  122. package/internal/utils/date-time/index.js +13 -0
  123. package/internal/utils/date-time/index.js.map +1 -0
  124. package/internal/utils/date-time/is-iso-date-only.d.ts +5 -0
  125. package/internal/utils/date-time/is-iso-date-only.d.ts.map +1 -0
  126. package/internal/utils/date-time/is-iso-date-only.js +10 -0
  127. package/internal/utils/date-time/is-iso-date-only.js.map +1 -0
  128. package/internal/utils/date-time/join-date-time.d.ts +2 -0
  129. package/internal/utils/date-time/join-date-time.d.ts.map +1 -0
  130. package/internal/utils/date-time/join-date-time.js +6 -0
  131. package/internal/utils/date-time/join-date-time.js.map +1 -0
  132. package/internal/utils/date-time/parse-date.d.ts +8 -0
  133. package/internal/utils/date-time/parse-date.d.ts.map +1 -0
  134. package/internal/utils/date-time/parse-date.js +16 -0
  135. package/internal/utils/date-time/parse-date.js.map +1 -0
  136. package/internal/utils/date-time/parse-timezone-offset.d.ts +5 -0
  137. package/internal/utils/date-time/parse-timezone-offset.d.ts.map +1 -0
  138. package/internal/utils/date-time/parse-timezone-offset.js +20 -0
  139. package/internal/utils/date-time/parse-timezone-offset.js.map +1 -0
  140. package/internal/utils/date-time/shift-timezone-offset.d.ts +12 -0
  141. package/internal/utils/date-time/shift-timezone-offset.d.ts.map +1 -0
  142. package/internal/utils/date-time/shift-timezone-offset.js +27 -0
  143. package/internal/utils/date-time/shift-timezone-offset.js.map +1 -0
  144. package/internal/utils/strings/index.d.ts +3 -0
  145. package/internal/utils/strings/index.d.ts.map +1 -0
  146. package/internal/utils/strings/index.js +5 -0
  147. package/internal/utils/strings/index.js.map +1 -0
  148. package/internal/utils/strings/join-strings.d.ts +5 -0
  149. package/internal/utils/strings/join-strings.d.ts.map +1 -0
  150. package/internal/utils/{strings.js → strings/join-strings.js} +7 -6
  151. package/internal/utils/strings/join-strings.js.map +1 -0
  152. package/internal/utils/strings/pad-left-zeros.d.ts +5 -0
  153. package/internal/utils/strings/pad-left-zeros.d.ts.map +1 -0
  154. package/internal/utils/strings/pad-left-zeros.js +12 -0
  155. package/internal/utils/strings/pad-left-zeros.js.map +1 -0
  156. package/link/internal.js +3 -3
  157. package/link/internal.js.map +1 -1
  158. package/link/styles.css.js +19 -18
  159. package/link/styles.scoped.css +73 -69
  160. package/link/styles.selectors.js +19 -18
  161. package/mixed-line-bar-chart/bar-series.d.ts.map +1 -1
  162. package/mixed-line-bar-chart/bar-series.js +3 -4
  163. package/mixed-line-bar-chart/bar-series.js.map +1 -1
  164. package/mixed-line-bar-chart/chart-container.js +1 -1
  165. package/mixed-line-bar-chart/chart-container.js.map +1 -1
  166. package/mixed-line-bar-chart/interfaces.d.ts +5 -4
  167. package/mixed-line-bar-chart/interfaces.d.ts.map +1 -1
  168. package/mixed-line-bar-chart/interfaces.js.map +1 -1
  169. package/modal/internal.js +1 -1
  170. package/modal/internal.js.map +1 -1
  171. package/package.json +1 -1
  172. package/pie-chart/pie-chart.d.ts.map +1 -1
  173. package/pie-chart/pie-chart.js +2 -2
  174. package/pie-chart/pie-chart.js.map +1 -1
  175. package/pie-chart/segments.d.ts +1 -2
  176. package/pie-chart/segments.d.ts.map +1 -1
  177. package/pie-chart/segments.js +2 -2
  178. package/pie-chart/segments.js.map +1 -1
  179. package/popover/container.js +1 -1
  180. package/popover/container.js.map +1 -1
  181. package/popover/styles.css.js +48 -48
  182. package/popover/styles.scoped.css +65 -60
  183. package/popover/styles.selectors.js +48 -48
  184. package/property-filter/index.d.ts.map +1 -1
  185. package/property-filter/index.js +10 -2
  186. package/property-filter/index.js.map +1 -1
  187. package/radio-group/radio-button.d.ts.map +1 -1
  188. package/radio-group/radio-button.js +3 -4
  189. package/radio-group/radio-button.js.map +1 -1
  190. package/s3-resource-selector/s3-modal/index.d.ts.map +1 -1
  191. package/s3-resource-selector/s3-modal/index.js +2 -3
  192. package/s3-resource-selector/s3-modal/index.js.map +1 -1
  193. package/split-panel/index.d.ts.map +1 -1
  194. package/split-panel/index.js +2 -2
  195. package/split-panel/index.js.map +1 -1
  196. package/table/internal.js +1 -1
  197. package/table/internal.js.map +1 -1
  198. package/table/sticky-scrollbar.js +1 -1
  199. package/table/sticky-scrollbar.js.map +1 -1
  200. package/table/styles.css.js +32 -32
  201. package/table/styles.scoped.css +40 -43
  202. package/table/styles.selectors.js +32 -32
  203. package/tabs/styles.css.js +21 -21
  204. package/tabs/styles.scoped.css +40 -43
  205. package/tabs/styles.selectors.js +21 -21
  206. package/tabs/tab-header-bar.js +1 -1
  207. package/tabs/tab-header-bar.js.map +1 -1
  208. package/textarea/styles.css.js +4 -4
  209. package/textarea/styles.scoped.css +13 -14
  210. package/textarea/styles.selectors.js +4 -4
  211. package/tutorial-panel/components/tutorial-detail-view/index.d.ts.map +1 -1
  212. package/tutorial-panel/components/tutorial-detail-view/index.js +3 -4
  213. package/tutorial-panel/components/tutorial-detail-view/index.js.map +1 -1
  214. package/tutorial-panel/components/tutorial-list/index.d.ts.map +1 -1
  215. package/tutorial-panel/components/tutorial-list/index.js +5 -7
  216. package/tutorial-panel/components/tutorial-list/index.js.map +1 -1
  217. package/wizard/index.d.ts.map +1 -1
  218. package/wizard/index.js +2 -3
  219. package/wizard/index.js.map +1 -1
  220. package/date-picker/calendar/utils/date.d.ts +0 -10
  221. package/date-picker/calendar/utils/date.d.ts.map +0 -1
  222. package/date-picker/calendar/utils/date.js +0 -50
  223. package/date-picker/calendar/utils/date.js.map +0 -1
  224. package/internal/components/date-input/utils/date.d.ts +0 -5
  225. package/internal/components/date-input/utils/date.d.ts.map +0 -1
  226. package/internal/components/date-input/utils/date.js +0 -11
  227. package/internal/components/date-input/utils/date.js.map +0 -1
  228. package/internal/utils/strings.d.ts +0 -2
  229. package/internal/utils/strings.d.ts.map +0 -1
  230. package/internal/utils/strings.js.map +0 -1
@@ -2,7 +2,7 @@ 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
4
  import clsx from 'clsx';
5
- import React, { useRef } from 'react';
5
+ import React from 'react';
6
6
  import { getBaseProps } from '../../base-component';
7
7
  import { useVisualRefresh } from '../../hooks/use-visual-mode';
8
8
  import styles from './styles.css.js';
@@ -29,10 +29,9 @@ var CheckboxIcon = function (_a) {
29
29
  var _b, _c;
30
30
  var checked = _a.checked, indeterminate = _a.indeterminate, _d = _a.disabled, disabled = _d === void 0 ? false : _d, restProps = __rest(_a, ["checked", "indeterminate", "disabled"]);
31
31
  var baseProps = getBaseProps(restProps);
32
- var checkboxRef = useRef(null);
33
- var theme = useVisualRefresh(checkboxRef) ? 'refresh' : 'default';
32
+ var theme = useVisualRefresh() ? 'refresh' : 'default';
34
33
  var dimensions = dimensionsByTheme[theme];
35
- return (React.createElement("svg", __assign({ className: styles.root, viewBox: dimensions.viewBox, "aria-hidden": "true", focusable: "false", ref: checkboxRef }, baseProps),
34
+ return (React.createElement("svg", __assign({ className: styles.root, viewBox: dimensions.viewBox, "aria-hidden": "true", focusable: "false" }, baseProps),
36
35
  React.createElement("rect", { className: clsx(styles['styled-box'], (_b = {},
37
36
  _b[styles['styled-box-checked']] = checked,
38
37
  _b[styles['styled-box-indeterminate']] = indeterminate,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/components/checkbox-icon/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAsB,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAgBrC,6CAA6C;AAC7C,MAAM,CAAC,IAAM,iBAAiB,GAA0D;IACtF,SAAO,EAAE;QACP,OAAO,EAAE,WAAW;QACpB,aAAa,EAAE,cAAc;QAC7B,OAAO,EAAE,iBAAiB;QAC1B,EAAE,EAAE,GAAG;QACP,CAAC,EAAE,GAAG;QACN,IAAI,EAAE,EAAE;KACT;IACD,OAAO,EAAE;QACP,OAAO,EAAE,WAAW;QACpB,aAAa,EAAE,cAAc;QAC7B,OAAO,EAAE,iBAAiB;QAC1B,EAAE,EAAE,CAAC;QACL,CAAC,EAAE,CAAC;QACJ,IAAI,EAAE,EAAE;KACT;CACF,CAAC;AAEF,IAAM,YAAY,GAAG,UAAC,EAA6E;;IAA3E,IAAA,OAAO,aAAA,EAAE,aAAa,mBAAA,EAAE,gBAAgB,EAAhB,QAAQ,mBAAG,KAAK,KAAA,EAAK,SAAS,cAAxD,wCAA0D,CAAF;IAC5E,IAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACjC,IAAM,KAAK,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,IAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC5C,OAAO,CACL,sCACE,SAAS,EAAE,MAAM,CAAC,IAAI,EACtB,OAAO,EAAE,UAAU,CAAC,OAAO,iBACf,MAAM,EAClB,SAAS,EAAC,OAAO,EACjB,GAAG,EAAE,WAAW,IACZ,SAAS;QAEb,8BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;gBAClC,GAAC,MAAM,CAAC,oBAAoB,CAAC,IAAG,OAAO;gBACvC,GAAC,MAAM,CAAC,0BAA0B,CAAC,IAAG,aAAa;gBACnD,GAAC,MAAM,CAAC,qBAAqB,CAAC,IAAG,QAAQ;oBACzC,EACF,CAAC,EAAE,UAAU,CAAC,EAAE,EAChB,CAAC,EAAE,UAAU,CAAC,EAAE,EAChB,EAAE,EAAE,UAAU,CAAC,CAAC,EAChB,EAAE,EAAE,UAAU,CAAC,CAAC,EAChB,KAAK,EAAE,UAAU,CAAC,IAAI,EACtB,MAAM,EAAE,UAAU,CAAC,IAAI,GACvB;QACD,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC,CAC1B,kCACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAI,GAAC,MAAM,CAAC,sBAAsB,CAAC,IAAG,QAAQ,MAAG,EACtF,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,GACrE,CACH,CAAC,CAAC,CAAC,IAAI,CACJ,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useRef } from 'react';\nimport { BaseComponentProps, getBaseProps } from '../../base-component';\nimport { useVisualRefresh } from '../../hooks/use-visual-mode';\nimport styles from './styles.css.js';\n\nexport interface CheckboxIconProps extends BaseComponentProps {\n checked?: boolean;\n indeterminate?: boolean;\n disabled?: boolean;\n}\nexport interface Dimension {\n viewBox: string;\n indeterminate: string;\n checked: string;\n xy: number;\n r: number;\n size: number;\n}\n\n// Can't use css variables for svg attributes\nexport const dimensionsByTheme: Record<NonNullable<'default' | 'refresh'>, Dimension> = {\n default: {\n viewBox: '0 0 14 14',\n indeterminate: '2.5,7 11.5,7',\n checked: '2.5,7 6,10 11,3',\n xy: 0.5,\n r: 1.5,\n size: 13,\n },\n refresh: {\n viewBox: '0 0 16 16',\n indeterminate: '3.5,8 12.5,8',\n checked: '3.5,8 7,11 12,4',\n xy: 1,\n r: 2,\n size: 14,\n },\n};\n\nconst CheckboxIcon = ({ checked, indeterminate, disabled = false, ...restProps }: CheckboxIconProps) => {\n const baseProps = getBaseProps(restProps);\n const checkboxRef = useRef(null);\n const theme = useVisualRefresh(checkboxRef) ? 'refresh' : 'default';\n const dimensions = dimensionsByTheme[theme];\n return (\n <svg\n className={styles.root}\n viewBox={dimensions.viewBox}\n aria-hidden=\"true\"\n focusable=\"false\"\n ref={checkboxRef}\n {...baseProps}\n >\n <rect\n className={clsx(styles['styled-box'], {\n [styles['styled-box-checked']]: checked,\n [styles['styled-box-indeterminate']]: indeterminate,\n [styles['styled-box-disabled']]: disabled,\n })}\n x={dimensions.xy}\n y={dimensions.xy}\n rx={dimensions.r}\n ry={dimensions.r}\n width={dimensions.size}\n height={dimensions.size}\n />\n {checked || indeterminate ? (\n <polyline\n className={clsx(styles['styled-line'], { [styles['styled-line-disabled']]: disabled })}\n points={indeterminate ? dimensions.indeterminate : dimensions.checked}\n />\n ) : null}\n </svg>\n );\n};\n\nexport default CheckboxIcon;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/components/checkbox-icon/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAsB,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAgBrC,6CAA6C;AAC7C,MAAM,CAAC,IAAM,iBAAiB,GAA0D;IACtF,SAAO,EAAE;QACP,OAAO,EAAE,WAAW;QACpB,aAAa,EAAE,cAAc;QAC7B,OAAO,EAAE,iBAAiB;QAC1B,EAAE,EAAE,GAAG;QACP,CAAC,EAAE,GAAG;QACN,IAAI,EAAE,EAAE;KACT;IACD,OAAO,EAAE;QACP,OAAO,EAAE,WAAW;QACpB,aAAa,EAAE,cAAc;QAC7B,OAAO,EAAE,iBAAiB;QAC1B,EAAE,EAAE,CAAC;QACL,CAAC,EAAE,CAAC;QACJ,IAAI,EAAE,EAAE;KACT;CACF,CAAC;AAEF,IAAM,YAAY,GAAG,UAAC,EAA6E;;IAA3E,IAAA,OAAO,aAAA,EAAE,aAAa,mBAAA,EAAE,gBAAgB,EAAhB,QAAQ,mBAAG,KAAK,KAAA,EAAK,SAAS,cAAxD,wCAA0D,CAAF;IAC5E,IAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,IAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC5C,OAAO,CACL,sCAAK,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,iBAAc,MAAM,EAAC,SAAS,EAAC,OAAO,IAAK,SAAS;QAC1G,8BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;gBAClC,GAAC,MAAM,CAAC,oBAAoB,CAAC,IAAG,OAAO;gBACvC,GAAC,MAAM,CAAC,0BAA0B,CAAC,IAAG,aAAa;gBACnD,GAAC,MAAM,CAAC,qBAAqB,CAAC,IAAG,QAAQ;oBACzC,EACF,CAAC,EAAE,UAAU,CAAC,EAAE,EAChB,CAAC,EAAE,UAAU,CAAC,EAAE,EAChB,EAAE,EAAE,UAAU,CAAC,CAAC,EAChB,EAAE,EAAE,UAAU,CAAC,CAAC,EAChB,KAAK,EAAE,UAAU,CAAC,IAAI,EACtB,MAAM,EAAE,UAAU,CAAC,IAAI,GACvB;QACD,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC,CAC1B,kCACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAI,GAAC,MAAM,CAAC,sBAAsB,CAAC,IAAG,QAAQ,MAAG,EACtF,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,GACrE,CACH,CAAC,CAAC,CAAC,IAAI,CACJ,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React from 'react';\nimport { BaseComponentProps, getBaseProps } from '../../base-component';\nimport { useVisualRefresh } from '../../hooks/use-visual-mode';\nimport styles from './styles.css.js';\n\nexport interface CheckboxIconProps extends BaseComponentProps {\n checked?: boolean;\n indeterminate?: boolean;\n disabled?: boolean;\n}\nexport interface Dimension {\n viewBox: string;\n indeterminate: string;\n checked: string;\n xy: number;\n r: number;\n size: number;\n}\n\n// Can't use css variables for svg attributes\nexport const dimensionsByTheme: Record<NonNullable<'default' | 'refresh'>, Dimension> = {\n default: {\n viewBox: '0 0 14 14',\n indeterminate: '2.5,7 11.5,7',\n checked: '2.5,7 6,10 11,3',\n xy: 0.5,\n r: 1.5,\n size: 13,\n },\n refresh: {\n viewBox: '0 0 16 16',\n indeterminate: '3.5,8 12.5,8',\n checked: '3.5,8 7,11 12,4',\n xy: 1,\n r: 2,\n size: 14,\n },\n};\n\nconst CheckboxIcon = ({ checked, indeterminate, disabled = false, ...restProps }: CheckboxIconProps) => {\n const baseProps = getBaseProps(restProps);\n const theme = useVisualRefresh() ? 'refresh' : 'default';\n const dimensions = dimensionsByTheme[theme];\n return (\n <svg className={styles.root} viewBox={dimensions.viewBox} aria-hidden=\"true\" focusable=\"false\" {...baseProps}>\n <rect\n className={clsx(styles['styled-box'], {\n [styles['styled-box-checked']]: checked,\n [styles['styled-box-indeterminate']]: indeterminate,\n [styles['styled-box-disabled']]: disabled,\n })}\n x={dimensions.xy}\n y={dimensions.xy}\n rx={dimensions.r}\n ry={dimensions.r}\n width={dimensions.size}\n height={dimensions.size}\n />\n {checked || indeterminate ? (\n <polyline\n className={clsx(styles['styled-line'], { [styles['styled-line-disabled']]: disabled })}\n points={indeterminate ? dimensions.indeterminate : dimensions.checked}\n />\n ) : null}\n </svg>\n );\n};\n\nexport default CheckboxIcon;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/content-layout/index.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAKlD,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,kBAAkB,eAoC7F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/content-layout/index.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAKlD,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,kBAAkB,eAkC7F"}
@@ -1,6 +1,6 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
- import React, { useContext, useRef } from 'react';
3
+ import React, { useContext } from 'react';
4
4
  import clsx from 'clsx';
5
5
  import { AppLayoutContext } from '../../../app-layout/visual-refresh/context';
6
6
  import { useVisualRefresh } from '../../hooks/use-visual-mode';
@@ -10,14 +10,13 @@ export default function ContentLayout(_a) {
10
10
  var _b, _c, _d;
11
11
  var children = _a.children, disableOverlap = _a.disableOverlap, header = _a.header;
12
12
  var breadcrumbs = useContext(AppLayoutContext).breadcrumbs;
13
- var rootElement = useRef(null);
14
- var isVisualRefresh = useVisualRefresh(rootElement);
13
+ var isVisualRefresh = useVisualRefresh();
15
14
  var isOverlapDisabled = !children || !header || disableOverlap;
16
15
  var overlapElement = useDynamicOverlap();
17
16
  return (React.createElement("div", { className: clsx(styles.layout, (_b = {},
18
17
  _b[styles['is-overlap-disabled']] = isOverlapDisabled,
19
18
  _b[styles['is-visual-refresh']] = isVisualRefresh,
20
- _b)), ref: rootElement },
19
+ _b)) },
21
20
  React.createElement("div", { className: clsx(styles.background, (_c = {}, _c[styles['is-overlap-disabled']] = isOverlapDisabled, _c), 'awsui-context-content-header'), ref: overlapElement }),
22
21
  header && (React.createElement("div", { className: clsx(styles.header, (_d = {}, _d[styles['has-breadcrumbs']] = breadcrumbs, _d), 'awsui-context-content-header') }, header)),
23
22
  children && React.createElement("div", { className: styles.content }, children)));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/components/content-layout/index.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAE9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8DAA8D,CAAC;AAIjG,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAwD;;QAAtD,QAAQ,cAAA,EAAE,cAAc,oBAAA,EAAE,MAAM,YAAA;IAC9D,IAAA,WAAW,GAAK,UAAU,CAAC,gBAAgB,CAAC,YAAjC,CAAkC;IACrD,IAAM,WAAW,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACjD,IAAM,eAAe,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACtD,IAAM,iBAAiB,GAAG,CAAC,QAAQ,IAAI,CAAC,MAAM,IAAI,cAAc,CAAC;IAEjE,IAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAE3C,OAAO,CACL,6BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC3B,GAAC,MAAM,CAAC,qBAAqB,CAAC,IAAG,iBAAiB;YAClD,GAAC,MAAM,CAAC,mBAAmB,CAAC,IAAG,eAAe;gBAC9C,EACF,GAAG,EAAE,WAAW;QAEhB,6BACE,SAAS,EAAE,IAAI,CACb,MAAM,CAAC,UAAU,YACf,GAAC,MAAM,CAAC,qBAAqB,CAAC,IAAG,iBAAiB,OACpD,8BAA8B,CAC/B,EACD,GAAG,EAAE,cAAc,GACnB;QAED,MAAM,IAAI,CACT,6BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,YAAI,GAAC,MAAM,CAAC,iBAAiB,CAAC,IAAG,WAAW,OAAI,8BAA8B,CAAC,IAE3G,MAAM,CACH,CACP;QAEA,QAAQ,IAAI,6BAAK,SAAS,EAAE,MAAM,CAAC,OAAO,IAAG,QAAQ,CAAO,CACzD,CACP,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useContext, useRef } from 'react';\nimport clsx from 'clsx';\nimport { AppLayoutContext } from '../../../app-layout/visual-refresh/context';\nimport { ContentLayoutProps } from './interfaces';\nimport { useVisualRefresh } from '../../hooks/use-visual-mode';\nimport styles from './styles.css.js';\nimport { useDynamicOverlap } from '../../../app-layout/visual-refresh/hooks/use-dynamic-overlap';\n\nexport { ContentLayoutProps };\n\nexport default function ContentLayout({ children, disableOverlap, header }: ContentLayoutProps) {\n const { breadcrumbs } = useContext(AppLayoutContext);\n const rootElement = useRef<HTMLDivElement>(null);\n const isVisualRefresh = useVisualRefresh(rootElement);\n const isOverlapDisabled = !children || !header || disableOverlap;\n\n const overlapElement = useDynamicOverlap();\n\n return (\n <div\n className={clsx(styles.layout, {\n [styles['is-overlap-disabled']]: isOverlapDisabled,\n [styles['is-visual-refresh']]: isVisualRefresh,\n })}\n ref={rootElement}\n >\n <div\n className={clsx(\n styles.background,\n { [styles['is-overlap-disabled']]: isOverlapDisabled },\n 'awsui-context-content-header'\n )}\n ref={overlapElement}\n />\n\n {header && (\n <div\n className={clsx(styles.header, { [styles['has-breadcrumbs']]: breadcrumbs }, 'awsui-context-content-header')}\n >\n {header}\n </div>\n )}\n\n {children && <div className={styles.content}>{children}</div>}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/components/content-layout/index.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAE9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8DAA8D,CAAC;AAIjG,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAwD;;QAAtD,QAAQ,cAAA,EAAE,cAAc,oBAAA,EAAE,MAAM,YAAA;IAC9D,IAAA,WAAW,GAAK,UAAU,CAAC,gBAAgB,CAAC,YAAjC,CAAkC;IACrD,IAAM,eAAe,GAAG,gBAAgB,EAAE,CAAC;IAC3C,IAAM,iBAAiB,GAAG,CAAC,QAAQ,IAAI,CAAC,MAAM,IAAI,cAAc,CAAC;IAEjE,IAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAE3C,OAAO,CACL,6BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC3B,GAAC,MAAM,CAAC,qBAAqB,CAAC,IAAG,iBAAiB;YAClD,GAAC,MAAM,CAAC,mBAAmB,CAAC,IAAG,eAAe;gBAC9C;QAEF,6BACE,SAAS,EAAE,IAAI,CACb,MAAM,CAAC,UAAU,YACf,GAAC,MAAM,CAAC,qBAAqB,CAAC,IAAG,iBAAiB,OACpD,8BAA8B,CAC/B,EACD,GAAG,EAAE,cAAc,GACnB;QAED,MAAM,IAAI,CACT,6BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,YAAI,GAAC,MAAM,CAAC,iBAAiB,CAAC,IAAG,WAAW,OAAI,8BAA8B,CAAC,IAE3G,MAAM,CACH,CACP;QAEA,QAAQ,IAAI,6BAAK,SAAS,EAAE,MAAM,CAAC,OAAO,IAAG,QAAQ,CAAO,CACzD,CACP,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useContext } from 'react';\nimport clsx from 'clsx';\nimport { AppLayoutContext } from '../../../app-layout/visual-refresh/context';\nimport { ContentLayoutProps } from './interfaces';\nimport { useVisualRefresh } from '../../hooks/use-visual-mode';\nimport styles from './styles.css.js';\nimport { useDynamicOverlap } from '../../../app-layout/visual-refresh/hooks/use-dynamic-overlap';\n\nexport { ContentLayoutProps };\n\nexport default function ContentLayout({ children, disableOverlap, header }: ContentLayoutProps) {\n const { breadcrumbs } = useContext(AppLayoutContext);\n const isVisualRefresh = useVisualRefresh();\n const isOverlapDisabled = !children || !header || disableOverlap;\n\n const overlapElement = useDynamicOverlap();\n\n return (\n <div\n className={clsx(styles.layout, {\n [styles['is-overlap-disabled']]: isOverlapDisabled,\n [styles['is-visual-refresh']]: isVisualRefresh,\n })}\n >\n <div\n className={clsx(\n styles.background,\n { [styles['is-overlap-disabled']]: isOverlapDisabled },\n 'awsui-context-content-header'\n )}\n ref={overlapElement}\n />\n\n {header && (\n <div\n className={clsx(styles.header, { [styles['has-breadcrumbs']]: breadcrumbs }, 'awsui-context-content-header')}\n >\n {header}\n </div>\n )}\n\n {children && <div className={styles.content}>{children}</div>}\n </div>\n );\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { DateInputProps } from './interfaces';
3
- declare const DateInput: React.ForwardRefExoticComponent<DateInputProps & React.RefAttributes<DateInputProps.Ref>>;
4
3
  export { DateInputProps };
4
+ declare const DateInput: React.ForwardRefExoticComponent<DateInputProps & React.RefAttributes<DateInputProps.Ref>>;
5
5
  export default DateInput;
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -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;AAKnC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAoB9C,QAAA,MAAM,SAAS,2FAad,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,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,13 +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';
6
+ import { fireNonCancelableEvent } from '../../events';
7
+ import { displayToIso, isoToDisplay, parseDate } from '../../utils/date-time';
5
8
  import MaskedInput from '../masked-input';
6
- import { daysInMonth, parseDate, displayToIso } from './utils/date';
7
9
  function daysMax(value) {
8
10
  // force to first day in month, as new Date('2018-02-30') -> March 2nd 2018
9
11
  var baseDate = displayToIso(value).substring(0, 7);
10
- return daysInMonth(parseDate(baseDate));
12
+ return getDaysInMonth(parseDate(baseDate));
11
13
  }
12
14
  var maskArgs = {
13
15
  separator: '/',
@@ -19,8 +21,8 @@ var maskArgs = {
19
21
  ]
20
22
  };
21
23
  var DateInput = React.forwardRef(function (_a, ref) {
22
- var _b = _a.__internalRootRef, __internalRootRef = _b === void 0 ? null : _b, props = __rest(_a, ["__internalRootRef"]);
23
- return (React.createElement(MaskedInput, __assign({}, props, { ref: ref, disableBrowserAutocorrect: true, mask: maskArgs, autofix: true, __internalRootRef: __internalRootRef })));
24
+ var _b = _a.__internalRootRef, __internalRootRef = _b === void 0 ? null : _b, value = _a.value, onChange = _a.onChange, props = __rest(_a, ["__internalRootRef", "value", "onChange"]);
25
+ return (React.createElement(MaskedInput, __assign({ value: isoToDisplay(value), onChange: function (event) { return fireNonCancelableEvent(onChange, { value: displayToIso(event.detail.value) }); } }, props, { ref: ref, disableBrowserAutocorrect: true, mask: maskArgs, autofix: true, __internalRootRef: __internalRootRef })));
24
26
  });
25
27
  export default DateInput;
26
28
  //# sourceMappingURL=index.js.map
@@ -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;AAEnC,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAK1C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEpE,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,EAAsD,EAAE,GAA4B;IAAlF,IAAA,yBAAwB,EAAxB,iBAAiB,mBAAG,IAAI,KAAA,EAAK,KAAK,cAApC,qBAAsC,CAAF;IACnC,OAAO,CACL,oBAAC,WAAW,eACN,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;AAGF,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';\n\nimport MaskedInput from '../masked-input';\nimport { MaskArgs } from '../masked-input/utils/mask-format';\n\nimport { DateInputProps } from './interfaces';\n\nimport { daysInMonth, parseDate, displayToIso } from './utils/date';\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, ...props }: DateInputProps, ref: Ref<DateInputProps.Ref>) => {\n return (\n <MaskedInput\n {...props}\n ref={ref}\n disableBrowserAutocorrect={true}\n mask={maskArgs}\n autofix={true}\n __internalRootRef={__internalRootRef}\n />\n );\n }\n);\n\nexport { DateInputProps };\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"]}
@@ -59,7 +59,7 @@ var Dropdown = function (_a) {
59
59
  var verticalContainerRef = useRef(null);
60
60
  // To keep track of the initial position (drop up/down) which is kept the same during fixed repositioning
61
61
  var fixedPosition = useRef(null);
62
- var isRefresh = useVisualRefresh(triggerRef);
62
+ var isRefresh = useVisualRefresh();
63
63
  var dropdownClasses = usePortalModeClasses(triggerRef);
64
64
  var _m = useState('bottom-right'), position = _m[0], setPosition = _m[1];
65
65
  var isMobile = useMobile();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/components/dropdown/index.tsx"],"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 styles from './styles.css.js';\nimport clsx from 'clsx';\nimport { useMergeRefs } from '../../hooks/use-merge-refs';\nimport React, { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { fireNonCancelableEvent } from '../../events';\nimport { DropdownProps } from './interfaces';\nimport { DropdownPosition, InteriorDropdownPosition, calculatePosition } from './dropdown-fit-handler';\nimport { Transition, TransitionStatus } from '../transition';\nimport { useVisualRefresh } from '../../hooks/use-visual-mode';\nimport { usePortalModeClasses } from '../../hooks/use-portal-mode-classes';\nimport { DropdownContextProvider, DropdownContextProviderProps } from './context';\nimport { useMobile } from '../../hooks/use-mobile';\nimport TabTrap from '../tab-trap/index.js';\nimport { getFirstFocusable, getLastFocusable } from '../focus-lock/utils.js';\n\ninterface DropdownContainerProps {\n children?: React.ReactNode;\n renderWithPortal?: boolean;\n id?: string;\n open?: boolean;\n}\n\nconst DropdownContainer = ({ children, renderWithPortal = false, id, open }: DropdownContainerProps) => {\n if (renderWithPortal) {\n if (open) {\n return createPortal(<div id={id}>{children}</div>, document.body);\n } else {\n return null;\n }\n } else {\n return <>{children}</>;\n }\n};\n\ninterface TransitionContentProps {\n state: TransitionStatus;\n transitionRef: React.MutableRefObject<any>;\n dropdownClasses: string;\n stretchWidth: boolean;\n interior: boolean;\n hasContent: boolean;\n isRefresh: boolean;\n dropdownRef: React.RefObject<HTMLDivElement>;\n verticalContainerRef: React.RefObject<HTMLDivElement>;\n expandToViewport?: boolean;\n header?: React.ReactNode;\n children?: React.ReactNode;\n footer?: React.ReactNode;\n position?: DropdownContextProviderProps['position'];\n open?: boolean;\n onMouseDown?: React.MouseEventHandler<Element>;\n}\n\nconst TransitionContent = ({\n state,\n transitionRef,\n dropdownClasses,\n stretchWidth,\n interior,\n hasContent,\n isRefresh,\n dropdownRef,\n verticalContainerRef,\n expandToViewport,\n header,\n children,\n footer,\n position,\n open,\n onMouseDown,\n}: TransitionContentProps) => {\n const contentRef = useMergeRefs(dropdownRef, transitionRef);\n return (\n <div\n className={clsx(styles.dropdown, dropdownClasses, {\n [styles.open]: open,\n [styles['with-limited-width']]: !stretchWidth,\n [styles['hide-upper-border']]: stretchWidth,\n [styles.interior]: interior,\n [styles['is-empty']]: !header && !hasContent,\n [styles.refresh]: isRefresh,\n [styles['use-portal']]: expandToViewport && !interior,\n })}\n ref={contentRef}\n data-open={open}\n data-animating={state !== 'exited'}\n onMouseDown={onMouseDown}\n >\n <div className={clsx(styles['dropdown-content-wrapper'], isRefresh && styles.refresh)}>\n <div className={styles['ie11-wrapper']}>\n <div ref={verticalContainerRef} className={styles['dropdown-content']}>\n <DropdownContextProvider position={position}>\n {header}\n {children}\n {footer}\n </DropdownContextProvider>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nconst Dropdown = ({\n children,\n trigger,\n open,\n onDropdownClose,\n onMouseDown,\n header,\n footer,\n dropdownId,\n stretchTriggerHeight = false,\n stretchWidth = true,\n stretchHeight = false,\n stretchToTriggerWidth = true,\n expandToViewport = false,\n preferCenter = false,\n interior = false,\n minWidth,\n hasContent = true,\n scrollable = true,\n trapFocus = false,\n}: DropdownProps) => {\n const triggerRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n // This container is only needed to apply max-height to. We can't move max-height to it's parent\n // because of an IE11 issue with flexbox. https://github.com/philipwalton/flexbugs/issues/216\n const verticalContainerRef = useRef<HTMLDivElement>(null);\n // To keep track of the initial position (drop up/down) which is kept the same during fixed repositioning\n const fixedPosition = useRef<DropdownPosition | null>(null);\n\n const isRefresh = useVisualRefresh(triggerRef);\n\n const dropdownClasses = usePortalModeClasses(triggerRef);\n const [position, setPosition] = useState<DropdownContextProviderProps['position']>('bottom-right');\n\n const isMobile = useMobile();\n\n const setDropdownPosition = (\n position: DropdownPosition | InteriorDropdownPosition,\n triggerBox: DOMRect,\n target: HTMLDivElement,\n verticalContainer: HTMLDivElement\n ) => {\n const entireWidth = !interior && stretchWidth;\n if (!stretchWidth) {\n // 1px offset for dropdowns where the dropdown itself needs a border, rather than on the items\n verticalContainer.style.maxHeight = `${parseInt(position.height) + 1}px`;\n } else {\n verticalContainer.style.maxHeight = position.height;\n }\n\n if (entireWidth && !expandToViewport) {\n if (stretchToTriggerWidth) {\n target.classList.add(styles['occupy-entire-width']);\n }\n } else {\n target.style.width = position.width;\n }\n // Using styles for main dropdown to adjust its position as preferred alternative\n if (position.dropUp && !interior) {\n target.classList.add(styles['dropdown-drop-up']);\n if (!expandToViewport) {\n target.style.bottom = '100%';\n }\n } else {\n target.classList.remove(styles['dropdown-drop-up']);\n }\n target.classList.add(position.dropLeft ? styles['dropdown-drop-left'] : styles['dropdown-drop-right']);\n\n if (position.left && position.left !== 'auto') {\n target.style.left = position.left;\n }\n\n // Position normal overflow dropdowns with fixed positioning relative to viewport\n if (expandToViewport && !interior) {\n target.style.position = 'fixed';\n if (position.dropUp) {\n target.style.bottom = `calc(100% - ${triggerBox.top}px)`;\n } else {\n target.style.top = `${triggerBox.bottom}px`;\n }\n if (position.dropLeft) {\n target.style.left = `calc(${triggerBox.right}px - ${position.width})`;\n } else {\n target.style.left = `${triggerBox.left}px`;\n }\n // Keep track of the initial dropdown position and direction.\n // Dropdown direction doesn't need to change as the user scrolls, just needs to stay attached to the trigger.\n fixedPosition.current = position;\n return;\n }\n\n // For an interior dropdown (the fly out) we need exact values for positioning\n // and classes are not enough\n // usage of relative position is impossible due to overwrite of overflow-x\n if (interior && isInteriorPosition(position)) {\n if (position.dropUp) {\n target.style.bottom = position.bottom;\n } else {\n target.style.top = position.top;\n }\n target.style.left = position.left;\n }\n\n if (position.dropUp && position.dropLeft) {\n setPosition('top-left');\n } else if (position.dropUp) {\n setPosition('top-right');\n } else if (position.dropLeft) {\n setPosition('bottom-left');\n } else {\n setPosition('bottom-right');\n }\n };\n\n useLayoutEffect(() => {\n const onDropdownOpen = () => {\n if (open && dropdownRef.current && triggerRef.current && verticalContainerRef.current) {\n // calculate scroll width only for dropdowns that has a scrollbar and ignore it for date picker components\n if (scrollable) {\n dropdownRef.current.classList.add(styles.nowrap);\n }\n setDropdownPosition(\n ...calculatePosition(\n dropdownRef.current,\n triggerRef.current,\n verticalContainerRef.current,\n interior,\n expandToViewport,\n preferCenter,\n stretchWidth,\n stretchHeight,\n isMobile,\n minWidth\n ),\n dropdownRef.current,\n verticalContainerRef.current\n );\n if (scrollable) {\n dropdownRef.current.classList.remove(styles.nowrap);\n }\n }\n };\n onDropdownOpen();\n\n if (open) {\n // window may scroll when dropdown opens, for example when soft keyboard shows up\n window.addEventListener('scroll', onDropdownOpen);\n // only listen to window scroll within very short time after the dropdown opens\n // do not want to interfere dropdown position on scroll afterwards\n const timeoutId = setTimeout(() => {\n window.removeEventListener('scroll', onDropdownOpen);\n }, 500);\n\n return () => {\n clearTimeout(timeoutId);\n window.removeEventListener('scroll', onDropdownOpen);\n };\n }\n // See AWSUI-13040\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, dropdownRef, triggerRef, verticalContainerRef, interior, stretchWidth, isMobile]);\n\n // subscribe to outside click\n useEffect(() => {\n if (!open) {\n return;\n }\n const clickListener = (e: MouseEvent) => {\n if (!dropdownRef.current?.contains(e.target as Node)) {\n fireNonCancelableEvent(onDropdownClose);\n }\n };\n\n /*\n * This small delay allows the event that opened the dropdown to\n * finish bubbling, so that it is not immediately captured here.\n */\n const timeout = setTimeout(() => {\n window.addEventListener('click', clickListener);\n }, 0);\n\n return () => {\n clearTimeout(timeout);\n window.removeEventListener('click', clickListener);\n };\n }, [open, onDropdownClose]);\n\n // sync dropdown position on scroll and resize\n useLayoutEffect(() => {\n if (!expandToViewport || !open) {\n return;\n }\n const updateDropdownPosition = () => {\n if (triggerRef.current && dropdownRef.current && verticalContainerRef.current) {\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const target = dropdownRef.current;\n if (fixedPosition.current) {\n if (fixedPosition.current.dropUp) {\n dropdownRef.current.style.bottom = `calc(100% - ${triggerRect.top}px)`;\n } else {\n target.style.top = `${triggerRect.bottom}px`;\n }\n if (fixedPosition.current.dropLeft) {\n target.style.left = `calc(${triggerRect.right}px - ${fixedPosition.current.width})`;\n } else {\n target.style.left = `${triggerRect.left}px`;\n }\n }\n }\n };\n\n updateDropdownPosition();\n\n window.addEventListener('scroll', updateDropdownPosition, true);\n window.addEventListener('resize', updateDropdownPosition, true);\n return () => {\n window.removeEventListener('scroll', updateDropdownPosition, true);\n window.removeEventListener('resize', updateDropdownPosition, true);\n };\n }, [open, expandToViewport]);\n\n return (\n <div\n className={clsx(\n styles.root,\n interior && styles.interior,\n stretchTriggerHeight && styles['stretch-trigger-height']\n )}\n >\n <div className={clsx(stretchTriggerHeight && styles['stretch-trigger-height'])} ref={triggerRef}>\n {trigger}\n </div>\n\n <TabTrap\n focusNextCallback={() => dropdownRef.current && getFirstFocusable(dropdownRef.current)?.focus()}\n disabled={!open || !trapFocus}\n />\n\n <DropdownContainer renderWithPortal={expandToViewport && !interior} id={dropdownId} open={open}>\n <Transition in={open ?? false} exit={false}>\n {(state, ref) => (\n <div onBlur={event => trapFocus && event.stopPropagation()}>\n <TabTrap\n focusNextCallback={() => triggerRef.current && getLastFocusable(triggerRef.current)?.focus()}\n disabled={!open || !trapFocus}\n />\n\n <TransitionContent\n state={state}\n transitionRef={ref}\n dropdownClasses={dropdownClasses}\n open={open}\n stretchWidth={stretchWidth}\n interior={interior}\n header={header}\n hasContent={hasContent}\n expandToViewport={expandToViewport}\n footer={footer}\n onMouseDown={onMouseDown}\n isRefresh={isRefresh}\n dropdownRef={dropdownRef}\n verticalContainerRef={verticalContainerRef}\n position={position}\n >\n {children}\n </TransitionContent>\n\n <TabTrap\n focusNextCallback={() => triggerRef.current && getFirstFocusable(triggerRef.current)?.focus()}\n disabled={!open || !trapFocus}\n />\n </div>\n )}\n </Transition>\n </DropdownContainer>\n </div>\n );\n};\n\nconst isInteriorPosition = (\n position: DropdownPosition | InteriorDropdownPosition\n): position is InteriorDropdownPosition => (position as InteriorDropdownPosition).bottom !== undefined;\n\nexport default Dropdown;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/components/dropdown/index.tsx"],"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 styles from './styles.css.js';\nimport clsx from 'clsx';\nimport { useMergeRefs } from '../../hooks/use-merge-refs';\nimport React, { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { fireNonCancelableEvent } from '../../events';\nimport { DropdownProps } from './interfaces';\nimport { DropdownPosition, InteriorDropdownPosition, calculatePosition } from './dropdown-fit-handler';\nimport { Transition, TransitionStatus } from '../transition';\nimport { useVisualRefresh } from '../../hooks/use-visual-mode';\nimport { usePortalModeClasses } from '../../hooks/use-portal-mode-classes';\nimport { DropdownContextProvider, DropdownContextProviderProps } from './context';\nimport { useMobile } from '../../hooks/use-mobile';\nimport TabTrap from '../tab-trap/index.js';\nimport { getFirstFocusable, getLastFocusable } from '../focus-lock/utils.js';\n\ninterface DropdownContainerProps {\n children?: React.ReactNode;\n renderWithPortal?: boolean;\n id?: string;\n open?: boolean;\n}\n\nconst DropdownContainer = ({ children, renderWithPortal = false, id, open }: DropdownContainerProps) => {\n if (renderWithPortal) {\n if (open) {\n return createPortal(<div id={id}>{children}</div>, document.body);\n } else {\n return null;\n }\n } else {\n return <>{children}</>;\n }\n};\n\ninterface TransitionContentProps {\n state: TransitionStatus;\n transitionRef: React.MutableRefObject<any>;\n dropdownClasses: string;\n stretchWidth: boolean;\n interior: boolean;\n hasContent: boolean;\n isRefresh: boolean;\n dropdownRef: React.RefObject<HTMLDivElement>;\n verticalContainerRef: React.RefObject<HTMLDivElement>;\n expandToViewport?: boolean;\n header?: React.ReactNode;\n children?: React.ReactNode;\n footer?: React.ReactNode;\n position?: DropdownContextProviderProps['position'];\n open?: boolean;\n onMouseDown?: React.MouseEventHandler<Element>;\n}\n\nconst TransitionContent = ({\n state,\n transitionRef,\n dropdownClasses,\n stretchWidth,\n interior,\n hasContent,\n isRefresh,\n dropdownRef,\n verticalContainerRef,\n expandToViewport,\n header,\n children,\n footer,\n position,\n open,\n onMouseDown,\n}: TransitionContentProps) => {\n const contentRef = useMergeRefs(dropdownRef, transitionRef);\n return (\n <div\n className={clsx(styles.dropdown, dropdownClasses, {\n [styles.open]: open,\n [styles['with-limited-width']]: !stretchWidth,\n [styles['hide-upper-border']]: stretchWidth,\n [styles.interior]: interior,\n [styles['is-empty']]: !header && !hasContent,\n [styles.refresh]: isRefresh,\n [styles['use-portal']]: expandToViewport && !interior,\n })}\n ref={contentRef}\n data-open={open}\n data-animating={state !== 'exited'}\n onMouseDown={onMouseDown}\n >\n <div className={clsx(styles['dropdown-content-wrapper'], isRefresh && styles.refresh)}>\n <div className={styles['ie11-wrapper']}>\n <div ref={verticalContainerRef} className={styles['dropdown-content']}>\n <DropdownContextProvider position={position}>\n {header}\n {children}\n {footer}\n </DropdownContextProvider>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nconst Dropdown = ({\n children,\n trigger,\n open,\n onDropdownClose,\n onMouseDown,\n header,\n footer,\n dropdownId,\n stretchTriggerHeight = false,\n stretchWidth = true,\n stretchHeight = false,\n stretchToTriggerWidth = true,\n expandToViewport = false,\n preferCenter = false,\n interior = false,\n minWidth,\n hasContent = true,\n scrollable = true,\n trapFocus = false,\n}: DropdownProps) => {\n const triggerRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n // This container is only needed to apply max-height to. We can't move max-height to it's parent\n // because of an IE11 issue with flexbox. https://github.com/philipwalton/flexbugs/issues/216\n const verticalContainerRef = useRef<HTMLDivElement>(null);\n // To keep track of the initial position (drop up/down) which is kept the same during fixed repositioning\n const fixedPosition = useRef<DropdownPosition | null>(null);\n\n const isRefresh = useVisualRefresh();\n\n const dropdownClasses = usePortalModeClasses(triggerRef);\n const [position, setPosition] = useState<DropdownContextProviderProps['position']>('bottom-right');\n\n const isMobile = useMobile();\n\n const setDropdownPosition = (\n position: DropdownPosition | InteriorDropdownPosition,\n triggerBox: DOMRect,\n target: HTMLDivElement,\n verticalContainer: HTMLDivElement\n ) => {\n const entireWidth = !interior && stretchWidth;\n if (!stretchWidth) {\n // 1px offset for dropdowns where the dropdown itself needs a border, rather than on the items\n verticalContainer.style.maxHeight = `${parseInt(position.height) + 1}px`;\n } else {\n verticalContainer.style.maxHeight = position.height;\n }\n\n if (entireWidth && !expandToViewport) {\n if (stretchToTriggerWidth) {\n target.classList.add(styles['occupy-entire-width']);\n }\n } else {\n target.style.width = position.width;\n }\n // Using styles for main dropdown to adjust its position as preferred alternative\n if (position.dropUp && !interior) {\n target.classList.add(styles['dropdown-drop-up']);\n if (!expandToViewport) {\n target.style.bottom = '100%';\n }\n } else {\n target.classList.remove(styles['dropdown-drop-up']);\n }\n target.classList.add(position.dropLeft ? styles['dropdown-drop-left'] : styles['dropdown-drop-right']);\n\n if (position.left && position.left !== 'auto') {\n target.style.left = position.left;\n }\n\n // Position normal overflow dropdowns with fixed positioning relative to viewport\n if (expandToViewport && !interior) {\n target.style.position = 'fixed';\n if (position.dropUp) {\n target.style.bottom = `calc(100% - ${triggerBox.top}px)`;\n } else {\n target.style.top = `${triggerBox.bottom}px`;\n }\n if (position.dropLeft) {\n target.style.left = `calc(${triggerBox.right}px - ${position.width})`;\n } else {\n target.style.left = `${triggerBox.left}px`;\n }\n // Keep track of the initial dropdown position and direction.\n // Dropdown direction doesn't need to change as the user scrolls, just needs to stay attached to the trigger.\n fixedPosition.current = position;\n return;\n }\n\n // For an interior dropdown (the fly out) we need exact values for positioning\n // and classes are not enough\n // usage of relative position is impossible due to overwrite of overflow-x\n if (interior && isInteriorPosition(position)) {\n if (position.dropUp) {\n target.style.bottom = position.bottom;\n } else {\n target.style.top = position.top;\n }\n target.style.left = position.left;\n }\n\n if (position.dropUp && position.dropLeft) {\n setPosition('top-left');\n } else if (position.dropUp) {\n setPosition('top-right');\n } else if (position.dropLeft) {\n setPosition('bottom-left');\n } else {\n setPosition('bottom-right');\n }\n };\n\n useLayoutEffect(() => {\n const onDropdownOpen = () => {\n if (open && dropdownRef.current && triggerRef.current && verticalContainerRef.current) {\n // calculate scroll width only for dropdowns that has a scrollbar and ignore it for date picker components\n if (scrollable) {\n dropdownRef.current.classList.add(styles.nowrap);\n }\n setDropdownPosition(\n ...calculatePosition(\n dropdownRef.current,\n triggerRef.current,\n verticalContainerRef.current,\n interior,\n expandToViewport,\n preferCenter,\n stretchWidth,\n stretchHeight,\n isMobile,\n minWidth\n ),\n dropdownRef.current,\n verticalContainerRef.current\n );\n if (scrollable) {\n dropdownRef.current.classList.remove(styles.nowrap);\n }\n }\n };\n onDropdownOpen();\n\n if (open) {\n // window may scroll when dropdown opens, for example when soft keyboard shows up\n window.addEventListener('scroll', onDropdownOpen);\n // only listen to window scroll within very short time after the dropdown opens\n // do not want to interfere dropdown position on scroll afterwards\n const timeoutId = setTimeout(() => {\n window.removeEventListener('scroll', onDropdownOpen);\n }, 500);\n\n return () => {\n clearTimeout(timeoutId);\n window.removeEventListener('scroll', onDropdownOpen);\n };\n }\n // See AWSUI-13040\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, dropdownRef, triggerRef, verticalContainerRef, interior, stretchWidth, isMobile]);\n\n // subscribe to outside click\n useEffect(() => {\n if (!open) {\n return;\n }\n const clickListener = (e: MouseEvent) => {\n if (!dropdownRef.current?.contains(e.target as Node)) {\n fireNonCancelableEvent(onDropdownClose);\n }\n };\n\n /*\n * This small delay allows the event that opened the dropdown to\n * finish bubbling, so that it is not immediately captured here.\n */\n const timeout = setTimeout(() => {\n window.addEventListener('click', clickListener);\n }, 0);\n\n return () => {\n clearTimeout(timeout);\n window.removeEventListener('click', clickListener);\n };\n }, [open, onDropdownClose]);\n\n // sync dropdown position on scroll and resize\n useLayoutEffect(() => {\n if (!expandToViewport || !open) {\n return;\n }\n const updateDropdownPosition = () => {\n if (triggerRef.current && dropdownRef.current && verticalContainerRef.current) {\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const target = dropdownRef.current;\n if (fixedPosition.current) {\n if (fixedPosition.current.dropUp) {\n dropdownRef.current.style.bottom = `calc(100% - ${triggerRect.top}px)`;\n } else {\n target.style.top = `${triggerRect.bottom}px`;\n }\n if (fixedPosition.current.dropLeft) {\n target.style.left = `calc(${triggerRect.right}px - ${fixedPosition.current.width})`;\n } else {\n target.style.left = `${triggerRect.left}px`;\n }\n }\n }\n };\n\n updateDropdownPosition();\n\n window.addEventListener('scroll', updateDropdownPosition, true);\n window.addEventListener('resize', updateDropdownPosition, true);\n return () => {\n window.removeEventListener('scroll', updateDropdownPosition, true);\n window.removeEventListener('resize', updateDropdownPosition, true);\n };\n }, [open, expandToViewport]);\n\n return (\n <div\n className={clsx(\n styles.root,\n interior && styles.interior,\n stretchTriggerHeight && styles['stretch-trigger-height']\n )}\n >\n <div className={clsx(stretchTriggerHeight && styles['stretch-trigger-height'])} ref={triggerRef}>\n {trigger}\n </div>\n\n <TabTrap\n focusNextCallback={() => dropdownRef.current && getFirstFocusable(dropdownRef.current)?.focus()}\n disabled={!open || !trapFocus}\n />\n\n <DropdownContainer renderWithPortal={expandToViewport && !interior} id={dropdownId} open={open}>\n <Transition in={open ?? false} exit={false}>\n {(state, ref) => (\n <div onBlur={event => trapFocus && event.stopPropagation()}>\n <TabTrap\n focusNextCallback={() => triggerRef.current && getLastFocusable(triggerRef.current)?.focus()}\n disabled={!open || !trapFocus}\n />\n\n <TransitionContent\n state={state}\n transitionRef={ref}\n dropdownClasses={dropdownClasses}\n open={open}\n stretchWidth={stretchWidth}\n interior={interior}\n header={header}\n hasContent={hasContent}\n expandToViewport={expandToViewport}\n footer={footer}\n onMouseDown={onMouseDown}\n isRefresh={isRefresh}\n dropdownRef={dropdownRef}\n verticalContainerRef={verticalContainerRef}\n position={position}\n >\n {children}\n </TransitionContent>\n\n <TabTrap\n focusNextCallback={() => triggerRef.current && getFirstFocusable(triggerRef.current)?.focus()}\n disabled={!open || !trapFocus}\n />\n </div>\n )}\n </Transition>\n </DropdownContainer>\n </div>\n );\n};\n\nconst isInteriorPosition = (\n position: DropdownPosition | InteriorDropdownPosition\n): position is InteriorDropdownPosition => (position as InteriorDropdownPosition).bottom !== undefined;\n\nexport default Dropdown;\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 (4013f51)';
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
 
@@ -1,3 +1,8 @@
1
1
  import React from 'react';
2
+ /**
3
+ * Fires onChange with the given target element as an argument every time any DOM node attribute changes.
4
+ *
5
+ * @deprecated The hook has performance implications. Consider alternatives.
6
+ */
2
7
  export declare function useMutationObserver(elementRef: React.RefObject<HTMLElement>, onChange: (element: HTMLElement) => void): void;
3
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/internal/hooks/use-mutation-observer/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAUzC,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,EACxC,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,QAYzC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/internal/hooks/use-mutation-observer/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAUzC;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,EACxC,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,QAYzC"}
@@ -8,6 +8,11 @@ var useMutationSingleton = createSingletonHandler(function (handler) {
8
8
  observer.observe(document.body, { attributes: true, subtree: true });
9
9
  return function () { return observer.disconnect(); };
10
10
  });
11
+ /**
12
+ * Fires onChange with the given target element as an argument every time any DOM node attribute changes.
13
+ *
14
+ * @deprecated The hook has performance implications. Consider alternatives.
15
+ */
11
16
  export function useMutationObserver(elementRef, onChange) {
12
17
  var handler = useStableEventHandler(function () {
13
18
  if (elementRef.current) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/hooks/use-mutation-observer/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,IAAM,oBAAoB,GAAG,sBAAsB,CAAO,UAAA,OAAO;IAC/D,IAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,cAAM,OAAA,OAAO,EAAE,EAAT,CAAS,CAAC,CAAC;IACvD,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,OAAO,cAAM,OAAA,QAAQ,CAAC,UAAU,EAAE,EAArB,CAAqB,CAAC;AACrC,CAAC,CAAC,CAAC;AAEH,MAAM,UAAU,mBAAmB,CACjC,UAAwC,EACxC,QAAwC;IAExC,IAAM,OAAO,GAAG,qBAAqB,CAAC;QACpC,IAAI,UAAU,CAAC,OAAO,EAAE;YACtB,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SAC9B;IACH,CAAC,CAAC,CAAC;IACH,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAE9B,SAAS,CAAC;QACR,OAAO,EAAE,CAAC;IACZ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAChB,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect } from 'react';\nimport { useStableEventHandler } from '../use-stable-event-handler';\nimport { createSingletonHandler } from '../use-singleton-handler';\n\nconst useMutationSingleton = createSingletonHandler<void>(handler => {\n const observer = new MutationObserver(() => handler());\n observer.observe(document.body, { attributes: true, subtree: true });\n return () => observer.disconnect();\n});\n\nexport function useMutationObserver(\n elementRef: React.RefObject<HTMLElement>,\n onChange: (element: HTMLElement) => void\n) {\n const handler = useStableEventHandler(() => {\n if (elementRef.current) {\n onChange(elementRef.current);\n }\n });\n useMutationSingleton(handler);\n\n useEffect(() => {\n handler();\n }, [handler]);\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/hooks/use-mutation-observer/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,IAAM,oBAAoB,GAAG,sBAAsB,CAAO,UAAA,OAAO;IAC/D,IAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,cAAM,OAAA,OAAO,EAAE,EAAT,CAAS,CAAC,CAAC;IACvD,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,OAAO,cAAM,OAAA,QAAQ,CAAC,UAAU,EAAE,EAArB,CAAqB,CAAC;AACrC,CAAC,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,UAAwC,EACxC,QAAwC;IAExC,IAAM,OAAO,GAAG,qBAAqB,CAAC;QACpC,IAAI,UAAU,CAAC,OAAO,EAAE;YACtB,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SAC9B;IACH,CAAC,CAAC,CAAC;IACH,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAE9B,SAAS,CAAC;QACR,OAAO,EAAE,CAAC;IACZ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAChB,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect } from 'react';\nimport { useStableEventHandler } from '../use-stable-event-handler';\nimport { createSingletonHandler } from '../use-singleton-handler';\n\nconst useMutationSingleton = createSingletonHandler<void>(handler => {\n const observer = new MutationObserver(() => handler());\n observer.observe(document.body, { attributes: true, subtree: true });\n return () => observer.disconnect();\n});\n\n/**\n * Fires onChange with the given target element as an argument every time any DOM node attribute changes.\n *\n * @deprecated The hook has performance implications. Consider alternatives.\n */\nexport function useMutationObserver(\n elementRef: React.RefObject<HTMLElement>,\n onChange: (element: HTMLElement) => void\n) {\n const handler = useStableEventHandler(() => {\n if (elementRef.current) {\n onChange(elementRef.current);\n }\n });\n useMutationSingleton(handler);\n\n useEffect(() => {\n handler();\n }, [handler]);\n}\n"]}
@@ -8,7 +8,7 @@ export function usePortalModeClasses(ref) {
8
8
  var colorMode = useCurrentMode(ref);
9
9
  var densityMode = useDensityMode(ref);
10
10
  var context = useVisualContext(ref);
11
- var visualRefresh = useVisualRefresh(ref);
11
+ var visualRefresh = useVisualRefresh();
12
12
  return clsx((_a = {
13
13
  'awsui-polaris-dark-mode awsui-dark-mode': colorMode === 'dark',
14
14
  'awsui-polaris-compact-mode awsui-compact-mode': densityMode === 'compact',
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/hooks/use-portal-mode-classes/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtF,MAAM,UAAU,oBAAoB,CAAC,GAAiC;;IACpE,IAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACtC,IAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACxC,IAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACtC,IAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC5C,OAAO,IAAI;YACT,yCAAyC,EAAE,SAAS,KAAK,MAAM;YAC/D,+CAA+C,EAAE,WAAW,KAAK,SAAS;YAC1E,sBAAsB,EAAE,aAAa;;QACrC,GAAC,wBAAiB,OAAO,CAAE,IAAG,OAAO;YACrC,CAAC;AACL,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React from 'react';\nimport { useVisualContext } from '../../components/visual-context';\nimport { useCurrentMode, useDensityMode, useVisualRefresh } from '../use-visual-mode';\n\nexport function usePortalModeClasses(ref: React.RefObject<HTMLElement>) {\n const colorMode = useCurrentMode(ref);\n const densityMode = useDensityMode(ref);\n const context = useVisualContext(ref);\n const visualRefresh = useVisualRefresh(ref);\n return clsx({\n 'awsui-polaris-dark-mode awsui-dark-mode': colorMode === 'dark',\n 'awsui-polaris-compact-mode awsui-compact-mode': densityMode === 'compact',\n 'awsui-visual-refresh': visualRefresh,\n [`awsui-context-${context}`]: context,\n });\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/hooks/use-portal-mode-classes/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtF,MAAM,UAAU,oBAAoB,CAAC,GAAiC;;IACpE,IAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACtC,IAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACxC,IAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACtC,IAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IACzC,OAAO,IAAI;YACT,yCAAyC,EAAE,SAAS,KAAK,MAAM;YAC/D,+CAA+C,EAAE,WAAW,KAAK,SAAS;YAC1E,sBAAsB,EAAE,aAAa;;QACrC,GAAC,wBAAiB,OAAO,CAAE,IAAG,OAAO;YACrC,CAAC;AACL,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React from 'react';\nimport { useVisualContext } from '../../components/visual-context';\nimport { useCurrentMode, useDensityMode, useVisualRefresh } from '../use-visual-mode';\n\nexport function usePortalModeClasses(ref: React.RefObject<HTMLElement>) {\n const colorMode = useCurrentMode(ref);\n const densityMode = useDensityMode(ref);\n const context = useVisualContext(ref);\n const visualRefresh = useVisualRefresh();\n return clsx({\n 'awsui-polaris-dark-mode awsui-dark-mode': colorMode === 'dark',\n 'awsui-polaris-compact-mode awsui-compact-mode': densityMode === 'compact',\n 'awsui-visual-refresh': visualRefresh,\n [`awsui-context-${context}`]: context,\n });\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  declare type ValueCallback<T> = (value: T) => void;
2
2
  declare type CleanupCallback = () => void;
3
- export declare function createSingletonHandler<T>(factory: (handler: ValueCallback<T>) => CleanupCallback): (listener: ValueCallback<T>) => void;
3
+ export declare type UseSingleton<T> = (listener: ValueCallback<T>) => void;
4
+ export declare function createSingletonHandler<T>(factory: (handler: ValueCallback<T>) => CleanupCallback): UseSingleton<T>;
4
5
  interface SingletonStateOptions<T> {
5
6
  factory: (handler: ValueCallback<T>) => CleanupCallback;
6
7
  initialState: T | (() => T);
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/internal/hooks/use-singleton-handler/index.ts"],"names":[],"mappings":"AAKA,aAAK,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAC3C,aAAK,eAAe,GAAG,MAAM,IAAI,CAAC;AAElC,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,eAAe,cAWxD,cAAc,CAAC,CAAC,UAkBxD;AAED,UAAU,qBAAqB,CAAC,CAAC;IAC/B,OAAO,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC;IACxD,YAAY,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CAC7B;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC,WAW1F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/internal/hooks/use-singleton-handler/index.ts"],"names":[],"mappings":"AAKA,aAAK,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAC3C,aAAK,eAAe,GAAG,MAAM,IAAI,CAAC;AAClC,oBAAY,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAEnE,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC,CA6BlH;AAED,UAAU,qBAAqB,CAAC,CAAC;IAC/B,OAAO,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC;IACxD,YAAY,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CAC7B;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC,WAW1F"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/hooks/use-singleton-handler/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAKpD,MAAM,UAAU,sBAAsB,CAAI,OAAuD;IAC/F,IAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,IAAM,QAAQ,GAAqB,UAAA,KAAK;QACtC,uBAAuB,CAAC;YACtB,KAAuB,UAAS,EAAT,uBAAS,EAAT,uBAAS,EAAT,IAAS,EAAE;gBAA7B,IAAM,QAAQ,kBAAA;gBACjB,QAAQ,CAAC,KAAK,CAAC,CAAC;aACjB;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,IAAI,OAAiC,CAAC;IAEtC,OAAO,SAAS,YAAY,CAAC,QAA0B;QACrD,SAAS,CAAC;YACR,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC1B,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;aAC7B;YACD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEzB,OAAO;gBACL,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC1B,OAAQ,EAAE,CAAC;oBACX,OAAO,GAAG,SAAS,CAAC;iBACrB;YACH,CAAC,CAAC;YACF,kCAAkC;YAClC,uDAAuD;QACzD,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,oBAAoB,CAAI,EAAmD;QAAjD,OAAO,aAAA,EAAE,YAAY,kBAAA;IAC7D,IAAM,YAAY,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,KAAK,GAAG,YAAY,CAAC;IACzB,OAAO,SAAS,iBAAiB;QACzB,IAAA,KAAoB,QAAQ,CAAI,KAAK,CAAC,EAArC,KAAK,QAAA,EAAE,QAAQ,QAAsB,CAAC;QAC7C,YAAY,CAAC,UAAA,QAAQ;YACnB,KAAK,GAAG,QAAQ,CAAC;YACjB,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useEffect, useState } from 'react';\nimport { unstable_batchedUpdates } from 'react-dom';\n\ntype ValueCallback<T> = (value: T) => void;\ntype CleanupCallback = () => void;\n\nexport function createSingletonHandler<T>(factory: (handler: ValueCallback<T>) => CleanupCallback) {\n const listeners: Array<ValueCallback<T>> = [];\n const callback: ValueCallback<T> = value => {\n unstable_batchedUpdates(() => {\n for (const listener of listeners) {\n listener(value);\n }\n });\n };\n let cleanup: (() => void) | undefined;\n\n return function useSingleton(listener: ValueCallback<T>) {\n useEffect(() => {\n if (listeners.length === 0) {\n cleanup = factory(callback);\n }\n listeners.push(listener);\n\n return () => {\n listeners.splice(listeners.indexOf(listener), 1);\n if (listeners.length === 0) {\n cleanup!();\n cleanup = undefined;\n }\n };\n // register handlers only on mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n };\n}\n\ninterface SingletonStateOptions<T> {\n factory: (handler: ValueCallback<T>) => CleanupCallback;\n initialState: T | (() => T); // useState signature\n}\n\nexport function createSingletonState<T>({ factory, initialState }: SingletonStateOptions<T>) {\n const useSingleton = createSingletonHandler(factory);\n let value = initialState;\n return function useSingletonState() {\n const [state, setState] = useState<T>(value);\n useSingleton(newValue => {\n value = newValue;\n setState(newValue);\n });\n return state;\n };\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/hooks/use-singleton-handler/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAMpD,MAAM,UAAU,sBAAsB,CAAI,OAAuD;IAC/F,IAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,IAAM,QAAQ,GAAqB,UAAA,KAAK;QACtC,uBAAuB,CAAC;YACtB,KAAuB,UAAS,EAAT,uBAAS,EAAT,uBAAS,EAAT,IAAS,EAAE;gBAA7B,IAAM,QAAQ,kBAAA;gBACjB,QAAQ,CAAC,KAAK,CAAC,CAAC;aACjB;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,IAAI,OAAiC,CAAC;IAEtC,OAAO,SAAS,YAAY,CAAC,QAA0B;QACrD,SAAS,CAAC;YACR,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC1B,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;aAC7B;YACD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEzB,OAAO;gBACL,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC1B,OAAQ,EAAE,CAAC;oBACX,OAAO,GAAG,SAAS,CAAC;iBACrB;YACH,CAAC,CAAC;YACF,kCAAkC;YAClC,uDAAuD;QACzD,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,oBAAoB,CAAI,EAAmD;QAAjD,OAAO,aAAA,EAAE,YAAY,kBAAA;IAC7D,IAAM,YAAY,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,KAAK,GAAG,YAAY,CAAC;IACzB,OAAO,SAAS,iBAAiB;QACzB,IAAA,KAAoB,QAAQ,CAAI,KAAK,CAAC,EAArC,KAAK,QAAA,EAAE,QAAQ,QAAsB,CAAC;QAC7C,YAAY,CAAC,UAAA,QAAQ;YACnB,KAAK,GAAG,QAAQ,CAAC;YACjB,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useEffect, useState } from 'react';\nimport { unstable_batchedUpdates } from 'react-dom';\n\ntype ValueCallback<T> = (value: T) => void;\ntype CleanupCallback = () => void;\nexport type UseSingleton<T> = (listener: ValueCallback<T>) => void;\n\nexport function createSingletonHandler<T>(factory: (handler: ValueCallback<T>) => CleanupCallback): UseSingleton<T> {\n const listeners: Array<ValueCallback<T>> = [];\n const callback: ValueCallback<T> = value => {\n unstable_batchedUpdates(() => {\n for (const listener of listeners) {\n listener(value);\n }\n });\n };\n let cleanup: (() => void) | undefined;\n\n return function useSingleton(listener: ValueCallback<T>) {\n useEffect(() => {\n if (listeners.length === 0) {\n cleanup = factory(callback);\n }\n listeners.push(listener);\n\n return () => {\n listeners.splice(listeners.indexOf(listener), 1);\n if (listeners.length === 0) {\n cleanup!();\n cleanup = undefined;\n }\n };\n // register handlers only on mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n };\n}\n\ninterface SingletonStateOptions<T> {\n factory: (handler: ValueCallback<T>) => CleanupCallback;\n initialState: T | (() => T); // useState signature\n}\n\nexport function createSingletonState<T>({ factory, initialState }: SingletonStateOptions<T>) {\n const useSingleton = createSingletonHandler(factory);\n let value = initialState;\n return function useSingletonState() {\n const [state, setState] = useState<T>(value);\n useSingleton(newValue => {\n value = newValue;\n setState(newValue);\n });\n return state;\n };\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  export declare function useCurrentMode(elementRef: React.RefObject<HTMLElement>): "dark" | "light";
3
3
  export declare function useDensityMode(elementRef: React.RefObject<HTMLElement>): "compact" | "comfortable";
4
- export declare function useVisualRefresh(elementRef: React.RefObject<HTMLElement>): boolean;
4
+ export declare function useVisualRefresh(): boolean;
5
5
  export declare function useReducedMotion(elementRef: React.RefObject<HTMLElement>): boolean;
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/internal/hooks/use-visual-mode/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAMxC,wBAAgB,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,oBAUtE;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,6BAUtE;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,WAWxE;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,WAMxE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/internal/hooks/use-visual-mode/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAMxC,wBAAgB,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,oBAUtE;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,6BAUtE;AAKD,wBAAgB,gBAAgB,YAa/B;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,WAMxE"}