@cloudscape-design/components 3.0.347 → 3.0.349

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 (427) hide show
  1. package/alert/styles.css.js +19 -19
  2. package/alert/styles.scoped.css +64 -64
  3. package/alert/styles.selectors.js +19 -19
  4. package/annotation-context/annotation/styles.css.js +24 -24
  5. package/annotation-context/annotation/styles.scoped.css +46 -46
  6. package/annotation-context/annotation/styles.selectors.js +24 -24
  7. package/app-layout/content-wrapper/styles.css.js +3 -3
  8. package/app-layout/content-wrapper/styles.scoped.css +10 -10
  9. package/app-layout/content-wrapper/styles.selectors.js +3 -3
  10. package/app-layout/drawer/styles.css.js +10 -10
  11. package/app-layout/drawer/styles.scoped.css +28 -28
  12. package/app-layout/drawer/styles.selectors.js +10 -10
  13. package/app-layout/mobile-toolbar/styles.css.js +8 -8
  14. package/app-layout/mobile-toolbar/styles.scoped.css +18 -18
  15. package/app-layout/mobile-toolbar/styles.selectors.js +8 -8
  16. package/app-layout/notifications/styles.css.js +3 -3
  17. package/app-layout/notifications/styles.scoped.css +7 -7
  18. package/app-layout/notifications/styles.selectors.js +3 -3
  19. package/app-layout/styles.css.js +17 -17
  20. package/app-layout/styles.scoped.css +30 -30
  21. package/app-layout/styles.selectors.js +17 -17
  22. package/app-layout/toggles/styles.css.js +2 -2
  23. package/app-layout/toggles/styles.scoped.css +16 -16
  24. package/app-layout/toggles/styles.selectors.js +2 -2
  25. package/app-layout/visual-refresh/styles.css.js +69 -69
  26. package/app-layout/visual-refresh/styles.scoped.css +267 -267
  27. package/app-layout/visual-refresh/styles.selectors.js +69 -69
  28. package/area-chart/styles.css.js +6 -6
  29. package/area-chart/styles.scoped.css +16 -16
  30. package/area-chart/styles.selectors.js +6 -6
  31. package/attribute-editor/styles.css.js +14 -14
  32. package/attribute-editor/styles.scoped.css +48 -48
  33. package/attribute-editor/styles.selectors.js +14 -14
  34. package/badge/styles.css.js +5 -5
  35. package/badge/styles.scoped.css +20 -20
  36. package/badge/styles.selectors.js +5 -5
  37. package/box/styles.css.js +189 -189
  38. package/box/styles.scoped.css +418 -418
  39. package/box/styles.selectors.js +189 -189
  40. package/breadcrumb-group/item/styles.css.js +9 -9
  41. package/breadcrumb-group/item/styles.scoped.css +28 -28
  42. package/breadcrumb-group/item/styles.selectors.js +9 -9
  43. package/breadcrumb-group/styles.css.js +7 -7
  44. package/breadcrumb-group/styles.scoped.css +22 -22
  45. package/breadcrumb-group/styles.selectors.js +7 -7
  46. package/button/styles.css.js +20 -20
  47. package/button/styles.scoped.css +472 -472
  48. package/button/styles.selectors.js +20 -20
  49. package/button-dropdown/category-elements/styles.css.js +13 -13
  50. package/button-dropdown/category-elements/styles.scoped.css +50 -50
  51. package/button-dropdown/category-elements/styles.selectors.js +13 -13
  52. package/button-dropdown/interfaces.d.ts +2 -15
  53. package/button-dropdown/interfaces.d.ts.map +1 -1
  54. package/button-dropdown/interfaces.js.map +1 -1
  55. package/button-dropdown/item-element/styles.css.js +14 -14
  56. package/button-dropdown/item-element/styles.scoped.css +42 -42
  57. package/button-dropdown/item-element/styles.selectors.js +14 -14
  58. package/button-dropdown/mobile-expandable-group/styles.css.js +5 -5
  59. package/button-dropdown/mobile-expandable-group/styles.scoped.css +10 -10
  60. package/button-dropdown/mobile-expandable-group/styles.selectors.js +5 -5
  61. package/button-dropdown/styles.css.js +14 -14
  62. package/button-dropdown/styles.scoped.css +32 -32
  63. package/button-dropdown/styles.selectors.js +14 -14
  64. package/calendar/styles.css.js +18 -18
  65. package/calendar/styles.scoped.css +89 -89
  66. package/calendar/styles.selectors.js +18 -18
  67. package/cards/styles.css.js +38 -38
  68. package/cards/styles.scoped.css +99 -99
  69. package/cards/styles.selectors.js +38 -38
  70. package/checkbox/styles.css.js +3 -3
  71. package/checkbox/styles.scoped.css +16 -16
  72. package/checkbox/styles.selectors.js +3 -3
  73. package/code-editor/resizable-box/styles.css.js +3 -3
  74. package/code-editor/resizable-box/styles.scoped.css +8 -8
  75. package/code-editor/resizable-box/styles.selectors.js +3 -3
  76. package/code-editor/styles.css.js +32 -32
  77. package/code-editor/styles.scoped.css +228 -219
  78. package/code-editor/styles.selectors.js +32 -32
  79. package/collection-preferences/content-display/styles.css.js +11 -11
  80. package/collection-preferences/content-display/styles.scoped.css +42 -42
  81. package/collection-preferences/content-display/styles.selectors.js +11 -11
  82. package/collection-preferences/styles.css.js +37 -37
  83. package/collection-preferences/styles.scoped.css +81 -81
  84. package/collection-preferences/styles.selectors.js +37 -37
  85. package/column-layout/flexible-column-layout/styles.css.js +5 -5
  86. package/column-layout/flexible-column-layout/styles.scoped.css +8 -8
  87. package/column-layout/flexible-column-layout/styles.selectors.js +5 -5
  88. package/column-layout/styles.css.js +13 -13
  89. package/column-layout/styles.scoped.css +55 -55
  90. package/column-layout/styles.selectors.js +13 -13
  91. package/container/styles.css.js +28 -28
  92. package/container/styles.scoped.css +94 -94
  93. package/container/styles.selectors.js +28 -28
  94. package/content-layout/styles.css.js +7 -7
  95. package/content-layout/styles.scoped.css +17 -17
  96. package/content-layout/styles.selectors.js +7 -7
  97. package/date-picker/styles.css.js +7 -7
  98. package/date-picker/styles.scoped.css +16 -16
  99. package/date-picker/styles.selectors.js +7 -7
  100. package/date-range-picker/calendar/grids/styles.css.js +25 -25
  101. package/date-range-picker/calendar/grids/styles.scoped.css +95 -95
  102. package/date-range-picker/calendar/grids/styles.selectors.js +25 -25
  103. package/date-range-picker/relative-range/styles.css.js +9 -9
  104. package/date-range-picker/relative-range/styles.scoped.css +16 -16
  105. package/date-range-picker/relative-range/styles.selectors.js +9 -9
  106. package/date-range-picker/styles.css.js +38 -38
  107. package/date-range-picker/styles.scoped.css +76 -76
  108. package/date-range-picker/styles.selectors.js +38 -38
  109. package/expandable-section/styles.css.js +29 -29
  110. package/expandable-section/styles.scoped.css +106 -106
  111. package/expandable-section/styles.selectors.js +29 -29
  112. package/file-upload/dropzone/styles.css.js +2 -2
  113. package/file-upload/dropzone/styles.scoped.css +9 -9
  114. package/file-upload/dropzone/styles.selectors.js +2 -2
  115. package/file-upload/file-input/styles.css.js +4 -4
  116. package/file-upload/file-input/styles.scoped.css +14 -14
  117. package/file-upload/file-input/styles.selectors.js +4 -4
  118. package/file-upload/file-option/styles.css.js +7 -7
  119. package/file-upload/file-option/styles.scoped.css +10 -10
  120. package/file-upload/file-option/styles.selectors.js +7 -7
  121. package/file-upload/styles.css.js +2 -2
  122. package/file-upload/styles.scoped.css +4 -4
  123. package/file-upload/styles.selectors.js +2 -2
  124. package/flashbar/collapsible-flashbar.d.ts.map +1 -1
  125. package/flashbar/collapsible-flashbar.js +8 -5
  126. package/flashbar/collapsible-flashbar.js.map +1 -1
  127. package/flashbar/flash.d.ts.map +1 -1
  128. package/flashbar/flash.js +2 -1
  129. package/flashbar/flash.js.map +1 -1
  130. package/flashbar/non-collapsible-flashbar.d.ts.map +1 -1
  131. package/flashbar/non-collapsible-flashbar.js +1 -2
  132. package/flashbar/non-collapsible-flashbar.js.map +1 -1
  133. package/flashbar/styles.css.js +46 -46
  134. package/flashbar/styles.scoped.css +250 -246
  135. package/flashbar/styles.selectors.js +46 -46
  136. package/flashbar/utils.js +1 -1
  137. package/flashbar/utils.js.map +1 -1
  138. package/form/styles.css.js +9 -9
  139. package/form/styles.scoped.css +20 -20
  140. package/form/styles.selectors.js +9 -9
  141. package/form-field/styles.css.js +19 -19
  142. package/form-field/styles.scoped.css +52 -52
  143. package/form-field/styles.selectors.js +19 -19
  144. package/grid/styles.css.js +53 -53
  145. package/grid/styles.scoped.css +60 -60
  146. package/grid/styles.selectors.js +53 -53
  147. package/header/styles.css.js +33 -33
  148. package/header/styles.scoped.css +114 -114
  149. package/header/styles.selectors.js +33 -33
  150. package/help-panel/styles.css.js +4 -4
  151. package/help-panel/styles.scoped.css +172 -172
  152. package/help-panel/styles.selectors.js +4 -4
  153. package/hotspot/styles.css.js +7 -7
  154. package/hotspot/styles.scoped.css +10 -10
  155. package/hotspot/styles.selectors.js +7 -7
  156. package/i18n/index.d.ts +1 -1
  157. package/i18n/index.d.ts.map +1 -1
  158. package/i18n/index.js +1 -1
  159. package/i18n/index.js.map +1 -1
  160. package/i18n/provider.d.ts.map +1 -1
  161. package/i18n/provider.js +4 -2
  162. package/i18n/provider.js.map +1 -1
  163. package/i18n/testing.d.ts.map +1 -1
  164. package/i18n/testing.js +2 -0
  165. package/i18n/testing.js.map +1 -1
  166. package/icon/styles.css.js +21 -21
  167. package/icon/styles.scoped.css +81 -81
  168. package/icon/styles.selectors.js +21 -21
  169. package/input/styles.css.js +12 -12
  170. package/input/styles.scoped.css +73 -73
  171. package/input/styles.selectors.js +12 -12
  172. package/internal/analytics/components/analytics-funnel.d.ts.map +1 -1
  173. package/internal/analytics/components/analytics-funnel.js +50 -1
  174. package/internal/analytics/components/analytics-funnel.js.map +1 -1
  175. package/internal/analytics/context/analytics-context.d.ts +13 -0
  176. package/internal/analytics/context/analytics-context.d.ts.map +1 -1
  177. package/internal/analytics/context/analytics-context.js +4 -0
  178. package/internal/analytics/context/analytics-context.js.map +1 -1
  179. package/internal/analytics/hooks/use-funnel.d.ts +4 -0
  180. package/internal/analytics/hooks/use-funnel.d.ts.map +1 -1
  181. package/internal/analytics/hooks/use-funnel.js +73 -20
  182. package/internal/analytics/hooks/use-funnel.js.map +1 -1
  183. package/internal/base-component/styles.scoped.css +1696 -1635
  184. package/internal/components/abstract-switch/styles.css.js +13 -13
  185. package/internal/components/abstract-switch/styles.scoped.css +26 -26
  186. package/internal/components/abstract-switch/styles.selectors.js +13 -13
  187. package/internal/components/button-trigger/styles.css.js +9 -9
  188. package/internal/components/button-trigger/styles.scoped.css +63 -63
  189. package/internal/components/button-trigger/styles.selectors.js +9 -9
  190. package/internal/components/cartesian-chart/styles.css.js +27 -27
  191. package/internal/components/cartesian-chart/styles.scoped.css +41 -41
  192. package/internal/components/cartesian-chart/styles.selectors.js +27 -27
  193. package/internal/components/chart-filter/styles.css.js +3 -3
  194. package/internal/components/chart-filter/styles.scoped.css +7 -7
  195. package/internal/components/chart-filter/styles.selectors.js +3 -3
  196. package/internal/components/chart-legend/styles.css.js +6 -6
  197. package/internal/components/chart-legend/styles.scoped.css +23 -23
  198. package/internal/components/chart-legend/styles.selectors.js +6 -6
  199. package/internal/components/chart-plot/styles.css.js +5 -5
  200. package/internal/components/chart-plot/styles.scoped.css +6 -6
  201. package/internal/components/chart-plot/styles.selectors.js +5 -5
  202. package/internal/components/chart-popover/index.js +1 -1
  203. package/internal/components/chart-popover/index.js.map +1 -1
  204. package/internal/components/chart-popover/styles.css.js +3 -3
  205. package/internal/components/chart-popover/styles.scoped.css +9 -9
  206. package/internal/components/chart-popover/styles.selectors.js +3 -3
  207. package/internal/components/chart-series-details/styles.css.js +5 -5
  208. package/internal/components/chart-series-details/styles.scoped.css +20 -20
  209. package/internal/components/chart-series-details/styles.selectors.js +5 -5
  210. package/internal/components/chart-series-marker/styles.css.js +5 -5
  211. package/internal/components/chart-series-marker/styles.scoped.css +14 -14
  212. package/internal/components/chart-series-marker/styles.selectors.js +5 -5
  213. package/internal/components/chart-status-container/styles.css.js +2 -2
  214. package/internal/components/chart-status-container/styles.scoped.css +3 -3
  215. package/internal/components/chart-status-container/styles.selectors.js +2 -2
  216. package/internal/components/chart-wrapper/styles.css.js +9 -9
  217. package/internal/components/chart-wrapper/styles.scoped.css +15 -15
  218. package/internal/components/chart-wrapper/styles.selectors.js +9 -9
  219. package/internal/components/checkbox-icon/styles.css.js +7 -7
  220. package/internal/components/checkbox-icon/styles.scoped.css +18 -18
  221. package/internal/components/checkbox-icon/styles.selectors.js +7 -7
  222. package/internal/components/dark-ribbon/styles.css.js +2 -2
  223. package/internal/components/dark-ribbon/styles.scoped.css +4 -4
  224. package/internal/components/dark-ribbon/styles.selectors.js +2 -2
  225. package/internal/components/dropdown/interfaces.d.ts +8 -5
  226. package/internal/components/dropdown/interfaces.d.ts.map +1 -1
  227. package/internal/components/dropdown/interfaces.js.map +1 -1
  228. package/internal/components/dropdown/styles.css.js +20 -20
  229. package/internal/components/dropdown/styles.scoped.css +51 -51
  230. package/internal/components/dropdown/styles.selectors.js +20 -20
  231. package/internal/components/dropdown-footer/styles.css.js +3 -3
  232. package/internal/components/dropdown-footer/styles.scoped.css +9 -9
  233. package/internal/components/dropdown-footer/styles.selectors.js +3 -3
  234. package/internal/components/dropdown-status/styles.css.js +2 -2
  235. package/internal/components/dropdown-status/styles.scoped.css +8 -8
  236. package/internal/components/dropdown-status/styles.selectors.js +2 -2
  237. package/internal/components/filtering-token/styles.css.js +7 -7
  238. package/internal/components/filtering-token/styles.scoped.css +34 -34
  239. package/internal/components/filtering-token/styles.selectors.js +7 -7
  240. package/internal/components/handle/styles.css.js +2 -2
  241. package/internal/components/handle/styles.scoped.css +12 -12
  242. package/internal/components/handle/styles.selectors.js +2 -2
  243. package/internal/components/menu-dropdown/styles.css.js +7 -7
  244. package/internal/components/menu-dropdown/styles.scoped.css +32 -32
  245. package/internal/components/menu-dropdown/styles.selectors.js +7 -7
  246. package/internal/components/option/styles.css.js +17 -17
  247. package/internal/components/option/styles.scoped.css +47 -47
  248. package/internal/components/option/styles.selectors.js +17 -17
  249. package/internal/components/options-list/styles.css.js +2 -2
  250. package/internal/components/options-list/styles.scoped.css +7 -7
  251. package/internal/components/options-list/styles.selectors.js +2 -2
  252. package/internal/components/selectable-item/styles.css.js +16 -16
  253. package/internal/components/selectable-item/styles.scoped.css +70 -70
  254. package/internal/components/selectable-item/styles.selectors.js +16 -16
  255. package/internal/components/token-list/styles.css.js +9 -9
  256. package/internal/components/token-list/styles.scoped.css +40 -40
  257. package/internal/components/token-list/styles.selectors.js +9 -9
  258. package/internal/environment.js +1 -1
  259. package/internal/environment.json +1 -1
  260. package/internal/generated/styles/tokens.d.ts +1 -0
  261. package/internal/generated/styles/tokens.js +306 -305
  262. package/internal/generated/theming/index.cjs +1830 -821
  263. package/internal/generated/theming/index.cjs.d.ts +192 -0
  264. package/internal/generated/theming/index.d.ts +192 -0
  265. package/internal/generated/theming/index.js +1830 -821
  266. package/internal/manifest.json +1 -1
  267. package/internal/utils/dom.d.ts +1 -1
  268. package/internal/utils/dom.d.ts.map +1 -1
  269. package/internal/utils/dom.js +1 -1
  270. package/internal/utils/dom.js.map +1 -1
  271. package/link/styles.css.js +20 -20
  272. package/link/styles.scoped.css +163 -163
  273. package/link/styles.selectors.js +20 -20
  274. package/mixed-line-bar-chart/styles.css.js +11 -11
  275. package/mixed-line-bar-chart/styles.scoped.css +24 -24
  276. package/mixed-line-bar-chart/styles.selectors.js +11 -11
  277. package/modal/styles.css.js +23 -23
  278. package/modal/styles.scoped.css +67 -67
  279. package/modal/styles.selectors.js +23 -23
  280. package/multiselect/styles.css.js +1 -1
  281. package/multiselect/styles.scoped.css +5 -5
  282. package/multiselect/styles.selectors.js +1 -1
  283. package/package.json +1 -1
  284. package/pagination/styles.css.js +9 -9
  285. package/pagination/styles.scoped.css +47 -47
  286. package/pagination/styles.selectors.js +9 -9
  287. package/pie-chart/index.d.ts.map +1 -1
  288. package/pie-chart/index.js +1 -2
  289. package/pie-chart/index.js.map +1 -1
  290. package/pie-chart/pie-chart.d.ts +1 -3
  291. package/pie-chart/pie-chart.d.ts.map +1 -1
  292. package/pie-chart/pie-chart.js +16 -17
  293. package/pie-chart/pie-chart.js.map +1 -1
  294. package/pie-chart/segments.d.ts +1 -2
  295. package/pie-chart/segments.d.ts.map +1 -1
  296. package/pie-chart/segments.js +2 -2
  297. package/pie-chart/segments.js.map +1 -1
  298. package/pie-chart/styles.css.js +27 -27
  299. package/pie-chart/styles.scoped.css +63 -63
  300. package/pie-chart/styles.selectors.js +27 -27
  301. package/popover/styles.css.js +50 -50
  302. package/popover/styles.scoped.css +104 -104
  303. package/popover/styles.selectors.js +50 -50
  304. package/progress-bar/styles.css.js +18 -18
  305. package/progress-bar/styles.scoped.css +58 -58
  306. package/progress-bar/styles.selectors.js +18 -18
  307. package/property-filter/styles.css.js +29 -29
  308. package/property-filter/styles.scoped.css +52 -52
  309. package/property-filter/styles.selectors.js +29 -29
  310. package/radio-group/styles.css.js +9 -9
  311. package/radio-group/styles.scoped.css +37 -37
  312. package/radio-group/styles.selectors.js +9 -9
  313. package/s3-resource-selector/s3-in-context/styles.css.js +7 -7
  314. package/s3-resource-selector/s3-in-context/styles.scoped.css +12 -12
  315. package/s3-resource-selector/s3-in-context/styles.selectors.js +7 -7
  316. package/segmented-control/styles.css.js +14 -14
  317. package/segmented-control/styles.scoped.css +78 -78
  318. package/segmented-control/styles.selectors.js +14 -14
  319. package/select/parts/styles.css.js +9 -9
  320. package/select/parts/styles.scoped.css +17 -17
  321. package/select/parts/styles.selectors.js +9 -9
  322. package/select/styles.css.js +1 -1
  323. package/select/styles.scoped.css +5 -5
  324. package/select/styles.selectors.js +1 -1
  325. package/side-navigation/styles.css.js +28 -28
  326. package/side-navigation/styles.scoped.css +92 -92
  327. package/side-navigation/styles.selectors.js +28 -28
  328. package/space-between/styles.css.js +23 -23
  329. package/space-between/styles.scoped.css +40 -40
  330. package/space-between/styles.selectors.js +23 -23
  331. package/spinner/styles.css.js +13 -13
  332. package/spinner/styles.scoped.css +35 -35
  333. package/spinner/styles.selectors.js +13 -13
  334. package/split-panel/styles.css.js +56 -56
  335. package/split-panel/styles.scoped.css +146 -146
  336. package/split-panel/styles.selectors.js +56 -56
  337. package/status-indicator/styles.css.js +22 -22
  338. package/status-indicator/styles.scoped.css +46 -46
  339. package/status-indicator/styles.selectors.js +22 -22
  340. package/table/body-cell/styles.css.js +28 -28
  341. package/table/body-cell/styles.scoped.css +155 -155
  342. package/table/body-cell/styles.selectors.js +28 -28
  343. package/table/body-cell/td-element.d.ts +3 -1
  344. package/table/body-cell/td-element.d.ts.map +1 -1
  345. package/table/body-cell/td-element.js +5 -7
  346. package/table/body-cell/td-element.js.map +1 -1
  347. package/table/header-cell/index.d.ts +2 -0
  348. package/table/header-cell/index.d.ts.map +1 -1
  349. package/table/header-cell/index.js +4 -3
  350. package/table/header-cell/index.js.map +1 -1
  351. package/table/header-cell/styles.css.js +24 -24
  352. package/table/header-cell/styles.scoped.css +93 -93
  353. package/table/header-cell/styles.selectors.js +24 -24
  354. package/table/header-cell/utils.d.ts +0 -1
  355. package/table/header-cell/utils.d.ts.map +1 -1
  356. package/table/header-cell/utils.js +0 -6
  357. package/table/header-cell/utils.js.map +1 -1
  358. package/table/internal.d.ts.map +1 -1
  359. package/table/internal.js +9 -8
  360. package/table/internal.js.map +1 -1
  361. package/table/resizer/styles.css.js +6 -6
  362. package/table/resizer/styles.scoped.css +27 -27
  363. package/table/resizer/styles.selectors.js +6 -6
  364. package/table/selection-control/styles.css.js +3 -3
  365. package/table/selection-control/styles.scoped.css +4 -4
  366. package/table/selection-control/styles.selectors.js +3 -3
  367. package/table/sticky-header.d.ts +2 -0
  368. package/table/sticky-header.d.ts.map +1 -1
  369. package/table/sticky-header.js +3 -2
  370. package/table/sticky-header.js.map +1 -1
  371. package/table/styles.css.js +34 -34
  372. package/table/styles.scoped.css +84 -84
  373. package/table/styles.selectors.js +34 -34
  374. package/table/table-role/index.d.ts +2 -0
  375. package/table/table-role/index.d.ts.map +1 -0
  376. package/table/table-role/index.js +4 -0
  377. package/table/table-role/index.js.map +1 -0
  378. package/table/table-role/table-role-helper.d.ts +22 -0
  379. package/table/table-role/table-role-helper.d.ts.map +1 -0
  380. package/table/table-role/table-role-helper.js +47 -0
  381. package/table/table-role/table-role-helper.js.map +1 -0
  382. package/table/thead.d.ts +2 -0
  383. package/table/thead.d.ts.map +1 -1
  384. package/table/thead.js +4 -3
  385. package/table/thead.js.map +1 -1
  386. package/tabs/styles.css.js +21 -21
  387. package/tabs/styles.scoped.css +86 -86
  388. package/tabs/styles.selectors.js +21 -21
  389. package/tag-editor/styles.css.js +3 -3
  390. package/tag-editor/styles.scoped.css +24 -24
  391. package/tag-editor/styles.selectors.js +3 -3
  392. package/text-content/styles.css.js +1 -1
  393. package/text-content/styles.scoped.css +130 -130
  394. package/text-content/styles.selectors.js +1 -1
  395. package/text-filter/styles.css.js +3 -3
  396. package/text-filter/styles.scoped.css +10 -10
  397. package/text-filter/styles.selectors.js +3 -3
  398. package/textarea/styles.css.js +4 -4
  399. package/textarea/styles.scoped.css +40 -40
  400. package/textarea/styles.selectors.js +4 -4
  401. package/tiles/styles.css.js +29 -29
  402. package/tiles/styles.scoped.css +128 -128
  403. package/tiles/styles.selectors.js +29 -29
  404. package/toggle/styles.css.js +8 -8
  405. package/toggle/styles.scoped.css +27 -27
  406. package/toggle/styles.selectors.js +8 -8
  407. package/token-group/styles.css.js +7 -7
  408. package/token-group/styles.scoped.css +42 -42
  409. package/token-group/styles.selectors.js +7 -7
  410. package/top-navigation/1.0-beta/styles.css.js +25 -25
  411. package/top-navigation/1.0-beta/styles.scoped.css +84 -84
  412. package/top-navigation/1.0-beta/styles.selectors.js +25 -25
  413. package/top-navigation/styles.css.js +47 -47
  414. package/top-navigation/styles.scoped.css +148 -148
  415. package/top-navigation/styles.selectors.js +47 -47
  416. package/tutorial-panel/components/tutorial-detail-view/styles.css.js +20 -20
  417. package/tutorial-panel/components/tutorial-detail-view/styles.scoped.css +43 -43
  418. package/tutorial-panel/components/tutorial-detail-view/styles.selectors.js +20 -20
  419. package/tutorial-panel/components/tutorial-list/styles.css.js +18 -18
  420. package/tutorial-panel/components/tutorial-list/styles.scoped.css +50 -50
  421. package/tutorial-panel/components/tutorial-list/styles.selectors.js +18 -18
  422. package/tutorial-panel/styles.css.js +1 -1
  423. package/tutorial-panel/styles.scoped.css +6 -6
  424. package/tutorial-panel/styles.selectors.js +1 -1
  425. package/wizard/styles.css.js +31 -31
  426. package/wizard/styles.scoped.css +124 -124
  427. package/wizard/styles.selectors.js +31 -31
@@ -90,11 +90,11 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
90
90
  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
91
91
  SPDX-License-Identifier: Apache-2.0
92
92
  */
93
- .awsui_root_2rhyz_w519p_93:not(#\9) {
93
+ .awsui_root_2rhyz_1ru9f_93:not(#\9) {
94
94
  /* used in test-utils for component to distinguish input from other input-like components, for example autosuggest */
95
95
  }
96
96
 
97
- .awsui_input_2rhyz_w519p_97:not(#\9) {
97
+ .awsui_input_2rhyz_1ru9f_97:not(#\9) {
98
98
  /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
99
99
  border-collapse: separate;
100
100
  border-spacing: 0;
@@ -124,145 +124,145 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
124
124
  widows: 2;
125
125
  word-spacing: normal;
126
126
  box-sizing: border-box;
127
- font-size: var(--font-body-m-size-7dign1, 14px);
128
- line-height: var(--font-body-m-line-height-ghizru, 20px);
129
- color: var(--color-text-body-default-su7kuo, #000716);
127
+ font-size: var(--font-body-m-size-dhtyxm, 14px);
128
+ line-height: var(--font-body-m-line-height-5wv9x1, 20px);
129
+ color: var(--color-text-body-default-2sxhhn, #000716);
130
130
  font-weight: 400;
131
- font-family: var(--font-family-base-wn913o, "Open Sans", "Helvetica Neue", Roboto, Arial, sans-serif);
131
+ font-family: var(--font-family-base-dnvic8, "Open Sans", "Helvetica Neue", Roboto, Arial, sans-serif);
132
132
  -webkit-font-smoothing: auto;
133
133
  -moz-osx-font-smoothing: auto;
134
- padding: var(--space-scaled-xxs-t2t62i, 4px) var(--space-field-horizontal-8qo3uw, 12px);
135
- color: var(--color-text-body-default-su7kuo, #000716);
134
+ padding: var(--space-scaled-xxs-7597g1, 4px) var(--space-field-horizontal-gg19kw, 12px);
135
+ color: var(--color-text-body-default-2sxhhn, #000716);
136
136
  width: 100%;
137
137
  cursor: text;
138
138
  box-sizing: border-box;
139
- background-color: var(--color-background-input-default-y2omd4, #ffffff);
140
- border-radius: var(--border-radius-input-g1eef0, 8px);
141
- border: var(--border-field-width-riro62, 2px) solid var(--color-border-input-default-zb6g42, #7d8998);
142
- font-size: var(--font-body-m-size-7dign1, 14px);
143
- line-height: var(--font-body-m-line-height-ghizru, 20px);
144
- height: var(--size-vertical-input-pta06y, 32px);
139
+ background-color: var(--color-background-input-default-igdh5e, #ffffff);
140
+ border-radius: var(--border-radius-input-plgbrq, 8px);
141
+ border: var(--border-field-width-09w7vk, 2px) solid var(--color-border-input-default-1zl7hq, #7d8998);
142
+ font-size: var(--font-body-m-size-dhtyxm, 14px);
143
+ line-height: var(--font-body-m-line-height-5wv9x1, 20px);
144
+ height: var(--size-vertical-input-v5iwwf, 32px);
145
145
  }
146
- .awsui_input_2rhyz_w519p_97.awsui_input-readonly_2rhyz_w519p_120:not(#\9) {
147
- background-color: var(--color-background-input-default-y2omd4, #ffffff);
148
- border: var(--border-field-width-riro62, 2px) solid var(--color-border-input-disabled-06dcc0, #e9ebed);
146
+ .awsui_input_2rhyz_1ru9f_97.awsui_input-readonly_2rhyz_1ru9f_120:not(#\9) {
147
+ background-color: var(--color-background-input-default-igdh5e, #ffffff);
148
+ border: var(--border-field-width-09w7vk, 2px) solid var(--color-border-input-disabled-rx2aau, #e9ebed);
149
149
  }
150
- .awsui_input_2rhyz_w519p_97:not(#\9)::-webkit-input-placeholder {
151
- color: var(--color-text-input-placeholder-3y98yw, #5f6b7a);
150
+ .awsui_input_2rhyz_1ru9f_97:not(#\9)::-webkit-input-placeholder {
151
+ color: var(--color-text-input-placeholder-qrb8p3, #5f6b7a);
152
152
  font-style: italic;
153
153
  -webkit-user-select: none;
154
154
  user-select: none;
155
155
  }
156
- .awsui_input_2rhyz_w519p_97:not(#\9)::-ms-input-placeholder {
157
- color: var(--color-text-input-placeholder-3y98yw, #5f6b7a);
156
+ .awsui_input_2rhyz_1ru9f_97:not(#\9)::-ms-input-placeholder {
157
+ color: var(--color-text-input-placeholder-qrb8p3, #5f6b7a);
158
158
  font-style: italic;
159
159
  }
160
- .awsui_input_2rhyz_w519p_97:not(#\9)::-moz-placeholder {
161
- color: var(--color-text-input-placeholder-3y98yw, #5f6b7a);
160
+ .awsui_input_2rhyz_1ru9f_97:not(#\9)::-moz-placeholder {
161
+ color: var(--color-text-input-placeholder-qrb8p3, #5f6b7a);
162
162
  font-style: italic;
163
163
  opacity: 1;
164
164
  }
165
- .awsui_input_2rhyz_w519p_97:not(#\9):-ms-input-placeholder {
166
- color: var(--color-text-input-placeholder-3y98yw, #5f6b7a);
165
+ .awsui_input_2rhyz_1ru9f_97:not(#\9):-ms-input-placeholder {
166
+ color: var(--color-text-input-placeholder-qrb8p3, #5f6b7a);
167
167
  font-style: italic;
168
168
  }
169
- .awsui_input_2rhyz_w519p_97:not(#\9):-moz-placeholder {
170
- color: var(--color-text-input-placeholder-3y98yw, #5f6b7a);
169
+ .awsui_input_2rhyz_1ru9f_97:not(#\9):-moz-placeholder {
170
+ color: var(--color-text-input-placeholder-qrb8p3, #5f6b7a);
171
171
  font-style: italic;
172
172
  opacity: 1;
173
173
  }
174
- .awsui_input_2rhyz_w519p_97:not(#\9):focus {
174
+ .awsui_input_2rhyz_1ru9f_97:not(#\9):focus {
175
175
  outline: 2px dotted transparent;
176
- border: var(--border-field-width-riro62, 2px) solid var(--color-border-item-focused-4t19h5, #0972d3);
177
- border-radius: var(--border-radius-input-g1eef0, 8px);
178
- box-shadow: 0 0 0 var(--border-control-focus-ring-shadow-spread-cwek11, 0px) var(--color-border-item-focused-4t19h5, #0972d3);
176
+ border: var(--border-field-width-09w7vk, 2px) solid var(--color-border-item-focused-b2ntyl, #0972d3);
177
+ border-radius: var(--border-radius-input-plgbrq, 8px);
178
+ box-shadow: 0 0 0 var(--border-control-focus-ring-shadow-spread-0ctpjf, 0px) var(--color-border-item-focused-b2ntyl, #0972d3);
179
179
  }
180
- .awsui_input_2rhyz_w519p_97:not(#\9):disabled {
181
- background-color: var(--color-background-input-disabled-nvrgh4, #e9ebed);
182
- border: var(--border-field-width-riro62, 2px) solid var(--color-border-input-disabled-06dcc0, #e9ebed);
183
- color: var(--color-text-input-disabled-dmotcr, #9ba7b6);
180
+ .awsui_input_2rhyz_1ru9f_97:not(#\9):disabled {
181
+ background-color: var(--color-background-input-disabled-ab59a3, #e9ebed);
182
+ border: var(--border-field-width-09w7vk, 2px) solid var(--color-border-input-disabled-rx2aau, #e9ebed);
183
+ color: var(--color-text-input-disabled-f8pjm5, #9ba7b6);
184
184
  cursor: auto;
185
185
  cursor: default;
186
186
  }
187
- .awsui_input_2rhyz_w519p_97:not(#\9):disabled::-webkit-input-placeholder {
188
- color: var(--color-text-input-placeholder-disabled-kxks79, #9ba7b6);
187
+ .awsui_input_2rhyz_1ru9f_97:not(#\9):disabled::-webkit-input-placeholder {
188
+ color: var(--color-text-input-placeholder-disabled-abhb0d, #9ba7b6);
189
189
  -webkit-user-select: none;
190
190
  user-select: none;
191
191
  }
192
- .awsui_input_2rhyz_w519p_97:not(#\9):disabled::-ms-input-placeholder {
193
- color: var(--color-text-input-placeholder-disabled-kxks79, #9ba7b6);
192
+ .awsui_input_2rhyz_1ru9f_97:not(#\9):disabled::-ms-input-placeholder {
193
+ color: var(--color-text-input-placeholder-disabled-abhb0d, #9ba7b6);
194
194
  }
195
- .awsui_input_2rhyz_w519p_97:not(#\9):disabled::-moz-placeholder {
196
- color: var(--color-text-input-placeholder-disabled-kxks79, #9ba7b6);
195
+ .awsui_input_2rhyz_1ru9f_97:not(#\9):disabled::-moz-placeholder {
196
+ color: var(--color-text-input-placeholder-disabled-abhb0d, #9ba7b6);
197
197
  opacity: 1;
198
198
  }
199
- .awsui_input_2rhyz_w519p_97:not(#\9):disabled:-ms-input-placeholder {
200
- color: var(--color-text-input-placeholder-disabled-kxks79, #9ba7b6);
199
+ .awsui_input_2rhyz_1ru9f_97:not(#\9):disabled:-ms-input-placeholder {
200
+ color: var(--color-text-input-placeholder-disabled-abhb0d, #9ba7b6);
201
201
  }
202
- .awsui_input_2rhyz_w519p_97:not(#\9):disabled:-moz-placeholder {
203
- color: var(--color-text-input-placeholder-disabled-kxks79, #9ba7b6);
202
+ .awsui_input_2rhyz_1ru9f_97:not(#\9):disabled:-moz-placeholder {
203
+ color: var(--color-text-input-placeholder-disabled-abhb0d, #9ba7b6);
204
204
  opacity: 1;
205
205
  }
206
- .awsui_input_2rhyz_w519p_97:not(#\9):invalid {
206
+ .awsui_input_2rhyz_1ru9f_97:not(#\9):invalid {
207
207
  box-shadow: none;
208
208
  }
209
- .awsui_input_2rhyz_w519p_97.awsui_input-invalid_2rhyz_w519p_181:not(#\9) {
210
- color: var(--color-text-status-error-p6dh5n, #d91515);
211
- border-color: var(--color-text-status-error-p6dh5n, #d91515);
209
+ .awsui_input_2rhyz_1ru9f_97.awsui_input-invalid_2rhyz_1ru9f_181:not(#\9) {
210
+ color: var(--color-text-status-error-wdvepn, #d91515);
211
+ border-color: var(--color-text-status-error-wdvepn, #d91515);
212
212
  padding-left: calc(
213
- var(--space-field-horizontal-8qo3uw, 12px) - (var(--border-invalid-width-u1caet, 8px) - var(--border-field-width-riro62, 2px))
213
+ var(--space-field-horizontal-gg19kw, 12px) - (var(--border-invalid-width-5ktjp2, 8px) - var(--border-field-width-09w7vk, 2px))
214
214
  );
215
- border-left-width: var(--border-invalid-width-u1caet, 8px);
215
+ border-left-width: var(--border-invalid-width-5ktjp2, 8px);
216
216
  }
217
- .awsui_input_2rhyz_w519p_97.awsui_input-invalid_2rhyz_w519p_181:not(#\9):focus {
218
- box-shadow: 0 0 0 var(--border-control-invalid-focus-ring-shadow-spread-yfz0fs, 2px) var(--color-border-item-focused-4t19h5, #0972d3);
217
+ .awsui_input_2rhyz_1ru9f_97.awsui_input-invalid_2rhyz_1ru9f_181:not(#\9):focus {
218
+ box-shadow: 0 0 0 var(--border-control-invalid-focus-ring-shadow-spread-fhmbjn, 2px) var(--color-border-item-focused-b2ntyl, #0972d3);
219
219
  }
220
- .awsui_input_2rhyz_w519p_97.awsui_input-invalid_2rhyz_w519p_181.awsui_input-has-icon-left_2rhyz_w519p_192:not(#\9) {
220
+ .awsui_input_2rhyz_1ru9f_97.awsui_input-invalid_2rhyz_1ru9f_181.awsui_input-has-icon-left_2rhyz_1ru9f_192:not(#\9) {
221
221
  padding-left: calc(
222
- var(--space-field-icon-offset-o8qwwh, 36px) - (var(--border-invalid-width-u1caet, 8px) - var(--border-field-width-riro62, 2px))
222
+ var(--space-field-icon-offset-csk9vw, 36px) - (var(--border-invalid-width-5ktjp2, 8px) - var(--border-field-width-09w7vk, 2px))
223
223
  );
224
224
  }
225
- .awsui_input_2rhyz_w519p_97.awsui_input-type-search_2rhyz_w519p_197:not(#\9) {
225
+ .awsui_input_2rhyz_1ru9f_97.awsui_input-type-search_2rhyz_1ru9f_197:not(#\9) {
226
226
  box-sizing: border-box;
227
227
  -webkit-appearance: none; /* stylelint-disable-line plugin/no-unsupported-browser-features */
228
228
  }
229
- .awsui_input_2rhyz_w519p_97.awsui_input-type-search_2rhyz_w519p_197:not(#\9)::-ms-clear {
229
+ .awsui_input_2rhyz_1ru9f_97.awsui_input-type-search_2rhyz_1ru9f_197:not(#\9)::-ms-clear {
230
230
  display: none;
231
231
  }
232
- .awsui_input_2rhyz_w519p_97.awsui_input-type-search_2rhyz_w519p_197:not(#\9)::-webkit-search-decoration {
232
+ .awsui_input_2rhyz_1ru9f_97.awsui_input-type-search_2rhyz_1ru9f_197:not(#\9)::-webkit-search-decoration {
233
233
  -webkit-appearance: none; /* stylelint-disable-line plugin/no-unsupported-browser-features */
234
234
  }
235
- .awsui_input_2rhyz_w519p_97.awsui_input-type-search_2rhyz_w519p_197:not(#\9)::-webkit-search-cancel-button {
235
+ .awsui_input_2rhyz_1ru9f_97.awsui_input-type-search_2rhyz_1ru9f_197:not(#\9)::-webkit-search-cancel-button {
236
236
  display: none;
237
237
  }
238
- .awsui_input_2rhyz_w519p_97.awsui_input-has-icon-left_2rhyz_w519p_192:not(#\9) {
239
- padding-left: var(--space-field-icon-offset-o8qwwh, 36px);
238
+ .awsui_input_2rhyz_1ru9f_97.awsui_input-has-icon-left_2rhyz_1ru9f_192:not(#\9) {
239
+ padding-left: var(--space-field-icon-offset-csk9vw, 36px);
240
240
  }
241
- .awsui_input_2rhyz_w519p_97.awsui_input-has-icon-right_2rhyz_w519p_213:not(#\9) {
242
- padding-right: var(--space-field-icon-offset-o8qwwh, 36px);
241
+ .awsui_input_2rhyz_1ru9f_97.awsui_input-has-icon-right_2rhyz_1ru9f_213:not(#\9) {
242
+ padding-right: var(--space-field-icon-offset-csk9vw, 36px);
243
243
  }
244
- .awsui_input_2rhyz_w519p_97.awsui_input-has-no-border-radius_2rhyz_w519p_216:not(#\9) {
245
- border-radius: var(--border-radius-dropdown-re1k6b, 8px);
244
+ .awsui_input_2rhyz_1ru9f_97.awsui_input-has-no-border-radius_2rhyz_1ru9f_216:not(#\9) {
245
+ border-radius: var(--border-radius-dropdown-0dhh79, 8px);
246
246
  }
247
247
 
248
- .awsui_input-container_2rhyz_w519p_220:not(#\9) {
248
+ .awsui_input-container_2rhyz_1ru9f_220:not(#\9) {
249
249
  display: flex;
250
250
  position: relative;
251
251
  }
252
252
 
253
- .awsui_input-icon-left_2rhyz_w519p_225:not(#\9) {
253
+ .awsui_input-icon-left_2rhyz_1ru9f_225:not(#\9) {
254
254
  position: absolute;
255
255
  pointer-events: none;
256
- left: var(--space-field-horizontal-8qo3uw, 12px);
257
- top: calc(50% - var(--font-body-m-line-height-ghizru, 20px) / 2);
256
+ left: var(--space-field-horizontal-gg19kw, 12px);
257
+ top: calc(50% - var(--font-body-m-line-height-5wv9x1, 20px) / 2);
258
258
  }
259
259
 
260
- .awsui_input-icon-right_2rhyz_w519p_232:not(#\9) {
260
+ .awsui_input-icon-right_2rhyz_1ru9f_232:not(#\9) {
261
261
  position: absolute;
262
- top: calc(50% - var(--font-body-m-line-height-ghizru, 20px) / 2);
263
- right: calc(var(--space-field-horizontal-8qo3uw, 12px) - var(--space-xxs-ja5cp8, 4px));
262
+ top: calc(50% - var(--font-body-m-line-height-5wv9x1, 20px) / 2);
263
+ right: calc(var(--space-field-horizontal-gg19kw, 12px) - var(--space-xxs-p8yyaw, 4px));
264
264
  }
265
265
 
266
- .awsui_input-button-right_2rhyz_w519p_238:not(#\9) {
266
+ .awsui_input-button-right_2rhyz_1ru9f_238:not(#\9) {
267
267
  /* used in test-utils */
268
268
  }
@@ -2,17 +2,17 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "root": "awsui_root_2rhyz_w519p_93",
6
- "input": "awsui_input_2rhyz_w519p_97",
7
- "input-readonly": "awsui_input-readonly_2rhyz_w519p_120",
8
- "input-invalid": "awsui_input-invalid_2rhyz_w519p_181",
9
- "input-has-icon-left": "awsui_input-has-icon-left_2rhyz_w519p_192",
10
- "input-type-search": "awsui_input-type-search_2rhyz_w519p_197",
11
- "input-has-icon-right": "awsui_input-has-icon-right_2rhyz_w519p_213",
12
- "input-has-no-border-radius": "awsui_input-has-no-border-radius_2rhyz_w519p_216",
13
- "input-container": "awsui_input-container_2rhyz_w519p_220",
14
- "input-icon-left": "awsui_input-icon-left_2rhyz_w519p_225",
15
- "input-icon-right": "awsui_input-icon-right_2rhyz_w519p_232",
16
- "input-button-right": "awsui_input-button-right_2rhyz_w519p_238"
5
+ "root": "awsui_root_2rhyz_1ru9f_93",
6
+ "input": "awsui_input_2rhyz_1ru9f_97",
7
+ "input-readonly": "awsui_input-readonly_2rhyz_1ru9f_120",
8
+ "input-invalid": "awsui_input-invalid_2rhyz_1ru9f_181",
9
+ "input-has-icon-left": "awsui_input-has-icon-left_2rhyz_1ru9f_192",
10
+ "input-type-search": "awsui_input-type-search_2rhyz_1ru9f_197",
11
+ "input-has-icon-right": "awsui_input-has-icon-right_2rhyz_1ru9f_213",
12
+ "input-has-no-border-radius": "awsui_input-has-no-border-radius_2rhyz_1ru9f_216",
13
+ "input-container": "awsui_input-container_2rhyz_1ru9f_220",
14
+ "input-icon-left": "awsui_input-icon-left_2rhyz_1ru9f_225",
15
+ "input-icon-right": "awsui_input-icon-right_2rhyz_1ru9f_232",
16
+ "input-button-right": "awsui_input-button-right_2rhyz_1ru9f_238"
17
17
  };
18
18
 
@@ -1 +1 @@
1
- {"version":3,"file":"analytics-funnel.d.ts","sourceRoot":"lib/default/","sources":["internal/analytics/components/analytics-funnel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,OAAO,EAKL,sBAAsB,EAGvB,MAAM,8BAA8B,CAAC;AAQtC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAW7D,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC,KAAK,oBAAoB,GAAG;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,GAAG,IAAI,CAC/D,WAAW,EACX,YAAY,GAAG,qBAAqB,GAAG,kBAAkB,CAC1D,CAAC;AAEF,eAAO,MAAM,eAAe,2BAA4B,oBAAoB,gBAkH3E,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,sBAAsB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;CACnF,GAAG,IAAI,CAAC,eAAe,EAAE,YAAY,GAAG,kBAAkB,CAAC,CAAC;AAE7D,eAAO,MAAM,mBAAmB,UAAW,wBAAwB,gBAMlE,CAAC;AAmDF,UAAU,2BAA2B;IACnC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,eAAO,MAAM,sBAAsB,iBAAkB,2BAA2B,gBA+B/E,CAAC"}
1
+ {"version":3,"file":"analytics-funnel.d.ts","sourceRoot":"lib/default/","sources":["internal/analytics/components/analytics-funnel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,OAAO,EAKL,sBAAsB,EAGvB,MAAM,8BAA8B,CAAC;AAQtC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAW7D,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC,KAAK,oBAAoB,GAAG;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,GAAG,IAAI,CAC/D,WAAW,EACX,YAAY,GAAG,qBAAqB,GAAG,kBAAkB,CAC1D,CAAC;AAEF,eAAO,MAAM,eAAe,2BAA4B,oBAAoB,gBAoH3E,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,sBAAsB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;CACnF,GAAG,IAAI,CAAC,eAAe,EAAE,YAAY,GAAG,kBAAkB,CAAC,CAAC;AAE7D,eAAO,MAAM,mBAAmB,UAAW,wBAAwB,gBAMlE,CAAC;AAmDF,UAAU,2BAA2B;IACnC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,eAAO,MAAM,sBAAsB,iBAAkB,2BAA2B,gBAmF/E,CAAC"}
@@ -1,4 +1,4 @@
1
- import { __rest } from "tslib";
1
+ import { __awaiter, __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 React, { useContext, useEffect, useRef, useState } from 'react';
@@ -18,6 +18,7 @@ export const AnalyticsFunnel = (_a) => {
18
18
  const funnelState = useRef('default');
19
19
  const errorCount = useRef(0);
20
20
  const loadingButtonCount = useRef(0);
21
+ const latestFocusCleanupFunction = useRef(undefined);
21
22
  // This useEffect hook is run once on component mount to initiate the funnel analytics.
22
23
  // It first calls the 'funnelStart' method from FunnelMetrics, providing all necessary details
23
24
  // about the funnel, and receives a unique interaction id.
@@ -110,6 +111,7 @@ export const AnalyticsFunnel = (_a) => {
110
111
  funnelState,
111
112
  errorCount,
112
113
  loadingButtonCount,
114
+ latestFocusCleanupFunction,
113
115
  };
114
116
  return React.createElement(FunnelContext.Provider, { value: funnelContextValue }, children);
115
117
  };
@@ -164,11 +166,19 @@ export const AnalyticsFunnelSubStep = ({ children }) => {
164
166
  const subStepNameSelector = getSubStepNameSelector(subStepId);
165
167
  const subStepRef = useRef(null);
166
168
  const { subStepCount } = useFunnelStep();
169
+ const mousePressed = useRef(false);
170
+ const isFocusedSubStep = useRef(false);
171
+ const focusCleanupFunction = useRef(undefined);
172
+ const { funnelState, funnelInteractionId } = useFunnel();
173
+ const { stepNumber, stepNameSelector } = useFunnelStep();
167
174
  const newContext = {
168
175
  subStepSelector,
169
176
  subStepNameSelector,
170
177
  subStepId,
171
178
  subStepRef,
179
+ mousePressed,
180
+ isFocusedSubStep,
181
+ focusCleanupFunction,
172
182
  isNestedSubStep: false,
173
183
  };
174
184
  const inheritedContext = Object.assign(Object.assign({}, useContext(FunnelSubStepContext)), { isNestedSubStep: true });
@@ -181,6 +191,45 @@ export const AnalyticsFunnelSubStep = ({ children }) => {
181
191
  }
182
192
  }, [isNested, subStepCount]);
183
193
  const context = isNested ? inheritedContext : newContext;
194
+ useEffect(() => {
195
+ const onMouseDown = () => (mousePressed.current = true);
196
+ const onMouseUp = () => __awaiter(void 0, void 0, void 0, function* () {
197
+ var _a;
198
+ mousePressed.current = false;
199
+ if (!isFocusedSubStep.current) {
200
+ return;
201
+ }
202
+ /*
203
+ Some mouse events result in an element being focused. However,
204
+ this happens only _after_ the onMouseUp event. We yield the
205
+ event loop here, so that `document.activeElement` has the
206
+ correct new value.
207
+ */
208
+ yield new Promise(r => setTimeout(r, 1));
209
+ if (!subStepRef.current || !subStepRef.current.contains(document.activeElement)) {
210
+ isFocusedSubStep.current = false;
211
+ /*
212
+ Run this substep's own focus cleanup function if another substep
213
+ hasn't already done it for us.
214
+ */
215
+ (_a = focusCleanupFunction.current) === null || _a === void 0 ? void 0 : _a.call(focusCleanupFunction);
216
+ }
217
+ });
218
+ window.addEventListener('mousedown', onMouseDown);
219
+ window.addEventListener('mouseup', onMouseUp);
220
+ return () => {
221
+ window.removeEventListener('mousedown', onMouseDown);
222
+ window.removeEventListener('mouseup', onMouseUp);
223
+ };
224
+ }, [
225
+ funnelInteractionId,
226
+ funnelState,
227
+ stepNameSelector,
228
+ stepNumber,
229
+ subStepNameSelector,
230
+ subStepSelector,
231
+ focusCleanupFunction,
232
+ ]);
184
233
  return React.createElement(FunnelSubStepContext.Provider, { value: context }, children);
185
234
  };
186
235
  //# sourceMappingURL=analytics-funnel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analytics-funnel.js","sourceRoot":"lib/default/","sources":["internal/analytics/components/analytics-funnel.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 React, { useContext, useEffect, useRef, useState } from 'react';\n\nimport {\n FunnelStepContext,\n FunnelSubStepContext,\n FunnelContext,\n FunnelContextValue,\n FunnelStepContextValue,\n FunnelState,\n FunnelSubStepContextValue,\n} from '../context/analytics-context';\nimport { useFunnel, useFunnelStep } from '../hooks/use-funnel';\nimport { useUniqueId } from '../../hooks/use-unique-id';\nimport { useVisualRefresh } from '../../hooks/use-visual-mode';\n\nimport { PACKAGE_VERSION } from '../../environment';\n\nimport { FunnelMetrics } from '../';\nimport { FunnelProps, FunnelStepProps } from '../interfaces';\n\nimport {\n DATA_ATTR_FUNNEL_STEP,\n getFunnelNameSelector,\n getNameFromSelector,\n getSubStepAllSelector,\n getSubStepNameSelector,\n getSubStepSelector,\n} from '../selectors';\n\nexport const FUNNEL_VERSION = '1.0';\n\ntype AnalyticsFunnelProps = { children?: React.ReactNode } & Pick<\n FunnelProps,\n 'funnelType' | 'optionalStepNumbers' | 'totalFunnelSteps'\n>;\n\nexport const AnalyticsFunnel = ({ children, ...props }: AnalyticsFunnelProps) => {\n const [funnelInteractionId, setFunnelInteractionId] = useState<string>('');\n const [submissionAttempt, setSubmissionAttempt] = useState(0);\n const isVisualRefresh = useVisualRefresh();\n const funnelState = useRef<FunnelState>('default');\n const errorCount = useRef<number>(0);\n const loadingButtonCount = useRef<number>(0);\n\n // This useEffect hook is run once on component mount to initiate the funnel analytics.\n // It first calls the 'funnelStart' method from FunnelMetrics, providing all necessary details\n // about the funnel, and receives a unique interaction id.\n // This unique interaction id is then stored in the state for further use.\n //\n // On component unmount, it checks whether the funnel was successfully completed.\n // Based on this, it either calls 'funnelComplete' or 'funnelCancelled' method from FunnelMetrics.\n //\n // The eslint-disable is required as we deliberately want this effect to run only once on mount and unmount,\n // hence we do not provide any dependencies.\n useEffect(() => {\n // Reset the state, in case the component was re-mounted.\n funnelState.current = 'default';\n\n const funnelInteractionId = FunnelMetrics.funnelStart({\n funnelNameSelector: getFunnelNameSelector(),\n optionalStepNumbers: props.optionalStepNumbers,\n funnelType: props.funnelType,\n totalFunnelSteps: props.totalFunnelSteps,\n componentVersion: PACKAGE_VERSION,\n theme: isVisualRefresh ? 'vr' : 'classic',\n funnelVersion: FUNNEL_VERSION,\n });\n\n setFunnelInteractionId(funnelInteractionId);\n\n /*\n A funnel counts as \"successful\" if it is unmounted after being \"complete\".\n */\n /* eslint-disable react-hooks/exhaustive-deps */\n return () => {\n if (funnelState.current === 'validating') {\n // Finish the validation phase early.\n FunnelMetrics.funnelComplete({ funnelInteractionId });\n funnelState.current = 'complete';\n }\n\n if (funnelState.current === 'complete') {\n FunnelMetrics.funnelSuccessful({ funnelInteractionId });\n } else {\n FunnelMetrics.funnelCancelled({ funnelInteractionId });\n funnelState.current = 'cancelled';\n }\n };\n }, []);\n /* eslint-enable react-hooks/exhaustive-deps */\n\n const funnelSubmit = () => {\n funnelState.current = 'validating';\n\n /*\n When the user attempts to submit the form, we wait for 50 milliseconds before checking\n if any form validation errors are present. This value was chosen to give enough time\n for validation and rerendering to occur, but be low enough that the user will not\n be able to take further action in the meantime.\n */\n const VALIDATION_WAIT_DELAY = 50;\n /*\n Loading is expected to take longer than validation, so we can keep the pressure on the CPU low.\n */\n const LOADING_WAIT_DELAY = 100;\n\n const checkForCompleteness = () => {\n if (funnelState.current === 'complete') {\n return;\n }\n\n if (loadingButtonCount.current > 0) {\n setTimeout(checkForCompleteness, LOADING_WAIT_DELAY);\n return;\n }\n\n if (errorCount.current === 0) {\n /*\n If no validation errors are rendered, we treat the funnel as complete.\n */\n FunnelMetrics.funnelComplete({ funnelInteractionId });\n funnelState.current = 'complete';\n } else {\n funnelState.current = 'default';\n }\n };\n\n setTimeout(checkForCompleteness, VALIDATION_WAIT_DELAY);\n };\n\n const funnelNextOrSubmitAttempt = () => setSubmissionAttempt(i => i + 1);\n\n const funnelCancel = () => {};\n\n const funnelContextValue: FunnelContextValue = {\n funnelInteractionId,\n setFunnelInteractionId,\n funnelType: props.funnelType,\n optionalStepNumbers: props.optionalStepNumbers,\n totalFunnelSteps: props.totalFunnelSteps,\n funnelSubmit,\n funnelCancel,\n submissionAttempt,\n funnelNextOrSubmitAttempt,\n funnelState,\n errorCount,\n loadingButtonCount,\n };\n\n return <FunnelContext.Provider value={funnelContextValue}>{children}</FunnelContext.Provider>;\n};\n\ntype AnalyticsFunnelStepProps = {\n children?: React.ReactNode | ((props: FunnelStepContextValue) => React.ReactNode);\n} & Pick<FunnelStepProps, 'stepNumber' | 'stepNameSelector'>;\n\nexport const AnalyticsFunnelStep = (props: AnalyticsFunnelStepProps) => (\n /*\n This wrapper is used to apply a `key` property to the actual (inner) AnalyticsFunnelStep\n element. This allows us to keep the state and effects separate per step.\n */\n <InnerAnalyticsFunnelStep {...props} key={props.stepNumber} />\n);\n\nconst InnerAnalyticsFunnelStep = ({ children, stepNumber, stepNameSelector }: AnalyticsFunnelStepProps) => {\n const { funnelInteractionId, funnelState } = useFunnel();\n\n const funnelStepProps = { [DATA_ATTR_FUNNEL_STEP]: stepNumber };\n\n const subStepCount = useRef<number>(0);\n\n // This useEffect hook is used to track the start and completion of interaction with the step.\n // On mount, if there is a valid funnel interaction id, it calls the 'funnelStepStart' method from FunnelMetrics\n // to record the beginning of the interaction with the current step.\n // On unmount, it does a similar thing but this time calling 'funnelStepComplete' to record the completion of the interaction.\n useEffect(() => {\n const stepName = getNameFromSelector(stepNameSelector);\n\n if (funnelInteractionId && funnelState.current === 'default') {\n FunnelMetrics.funnelStepStart({\n funnelInteractionId,\n stepNumber,\n stepName,\n stepNameSelector,\n subStepAllSelector: getSubStepAllSelector(),\n totalSubSteps: subStepCount.current,\n });\n }\n\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n if (funnelInteractionId && funnelState.current !== 'cancelled') {\n FunnelMetrics.funnelStepComplete({\n funnelInteractionId,\n stepNumber,\n stepName,\n stepNameSelector,\n subStepAllSelector: getSubStepAllSelector(),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n totalSubSteps: subStepCount.current,\n });\n }\n };\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [funnelInteractionId, stepNumber, stepNameSelector]);\n\n const contextValue: FunnelStepContextValue = { stepNumber, stepNameSelector, funnelStepProps, subStepCount };\n return (\n <FunnelStepContext.Provider value={contextValue}>\n {typeof children === 'function' ? children(contextValue) : children}\n </FunnelStepContext.Provider>\n );\n};\ninterface AnalyticsFunnelSubStepProps {\n children?: React.ReactNode;\n}\n\nexport const AnalyticsFunnelSubStep = ({ children }: AnalyticsFunnelSubStepProps) => {\n const subStepId = useUniqueId('substep');\n const subStepSelector = getSubStepSelector(subStepId);\n const subStepNameSelector = getSubStepNameSelector(subStepId);\n const subStepRef = useRef<HTMLDivElement | null>(null);\n const { subStepCount } = useFunnelStep();\n\n const newContext: FunnelSubStepContextValue = {\n subStepSelector,\n subStepNameSelector,\n subStepId,\n subStepRef,\n isNestedSubStep: false,\n };\n\n const inheritedContext = { ...useContext(FunnelSubStepContext), isNestedSubStep: true };\n\n const isNested = Boolean(inheritedContext.subStepId);\n\n useEffect(() => {\n if (!isNested) {\n subStepCount.current++;\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return () => void subStepCount.current--;\n }\n }, [isNested, subStepCount]);\n\n const context = isNested ? inheritedContext : newContext;\n\n return <FunnelSubStepContext.Provider value={context}>{children}</FunnelSubStepContext.Provider>;\n};\n"]}
1
+ {"version":3,"file":"analytics-funnel.js","sourceRoot":"lib/default/","sources":["internal/analytics/components/analytics-funnel.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 React, { useContext, useEffect, useRef, useState } from 'react';\n\nimport {\n FunnelStepContext,\n FunnelSubStepContext,\n FunnelContext,\n FunnelContextValue,\n FunnelStepContextValue,\n FunnelState,\n FunnelSubStepContextValue,\n} from '../context/analytics-context';\nimport { useFunnel, useFunnelStep } from '../hooks/use-funnel';\nimport { useUniqueId } from '../../hooks/use-unique-id';\nimport { useVisualRefresh } from '../../hooks/use-visual-mode';\n\nimport { PACKAGE_VERSION } from '../../environment';\n\nimport { FunnelMetrics } from '../';\nimport { FunnelProps, FunnelStepProps } from '../interfaces';\n\nimport {\n DATA_ATTR_FUNNEL_STEP,\n getFunnelNameSelector,\n getNameFromSelector,\n getSubStepAllSelector,\n getSubStepNameSelector,\n getSubStepSelector,\n} from '../selectors';\n\nexport const FUNNEL_VERSION = '1.0';\n\ntype AnalyticsFunnelProps = { children?: React.ReactNode } & Pick<\n FunnelProps,\n 'funnelType' | 'optionalStepNumbers' | 'totalFunnelSteps'\n>;\n\nexport const AnalyticsFunnel = ({ children, ...props }: AnalyticsFunnelProps) => {\n const [funnelInteractionId, setFunnelInteractionId] = useState<string>('');\n const [submissionAttempt, setSubmissionAttempt] = useState(0);\n const isVisualRefresh = useVisualRefresh();\n const funnelState = useRef<FunnelState>('default');\n const errorCount = useRef<number>(0);\n const loadingButtonCount = useRef<number>(0);\n const latestFocusCleanupFunction = useRef<undefined | (() => void)>(undefined);\n\n // This useEffect hook is run once on component mount to initiate the funnel analytics.\n // It first calls the 'funnelStart' method from FunnelMetrics, providing all necessary details\n // about the funnel, and receives a unique interaction id.\n // This unique interaction id is then stored in the state for further use.\n //\n // On component unmount, it checks whether the funnel was successfully completed.\n // Based on this, it either calls 'funnelComplete' or 'funnelCancelled' method from FunnelMetrics.\n //\n // The eslint-disable is required as we deliberately want this effect to run only once on mount and unmount,\n // hence we do not provide any dependencies.\n useEffect(() => {\n // Reset the state, in case the component was re-mounted.\n funnelState.current = 'default';\n\n const funnelInteractionId = FunnelMetrics.funnelStart({\n funnelNameSelector: getFunnelNameSelector(),\n optionalStepNumbers: props.optionalStepNumbers,\n funnelType: props.funnelType,\n totalFunnelSteps: props.totalFunnelSteps,\n componentVersion: PACKAGE_VERSION,\n theme: isVisualRefresh ? 'vr' : 'classic',\n funnelVersion: FUNNEL_VERSION,\n });\n\n setFunnelInteractionId(funnelInteractionId);\n\n /*\n A funnel counts as \"successful\" if it is unmounted after being \"complete\".\n */\n /* eslint-disable react-hooks/exhaustive-deps */\n return () => {\n if (funnelState.current === 'validating') {\n // Finish the validation phase early.\n FunnelMetrics.funnelComplete({ funnelInteractionId });\n funnelState.current = 'complete';\n }\n\n if (funnelState.current === 'complete') {\n FunnelMetrics.funnelSuccessful({ funnelInteractionId });\n } else {\n FunnelMetrics.funnelCancelled({ funnelInteractionId });\n funnelState.current = 'cancelled';\n }\n };\n }, []);\n /* eslint-enable react-hooks/exhaustive-deps */\n\n const funnelSubmit = () => {\n funnelState.current = 'validating';\n\n /*\n When the user attempts to submit the form, we wait for 50 milliseconds before checking\n if any form validation errors are present. This value was chosen to give enough time\n for validation and rerendering to occur, but be low enough that the user will not\n be able to take further action in the meantime.\n */\n const VALIDATION_WAIT_DELAY = 50;\n /*\n Loading is expected to take longer than validation, so we can keep the pressure on the CPU low.\n */\n const LOADING_WAIT_DELAY = 100;\n\n const checkForCompleteness = () => {\n if (funnelState.current === 'complete') {\n return;\n }\n\n if (loadingButtonCount.current > 0) {\n setTimeout(checkForCompleteness, LOADING_WAIT_DELAY);\n return;\n }\n\n if (errorCount.current === 0) {\n /*\n If no validation errors are rendered, we treat the funnel as complete.\n */\n FunnelMetrics.funnelComplete({ funnelInteractionId });\n funnelState.current = 'complete';\n } else {\n funnelState.current = 'default';\n }\n };\n\n setTimeout(checkForCompleteness, VALIDATION_WAIT_DELAY);\n };\n\n const funnelNextOrSubmitAttempt = () => setSubmissionAttempt(i => i + 1);\n\n const funnelCancel = () => {};\n\n const funnelContextValue: FunnelContextValue = {\n funnelInteractionId,\n setFunnelInteractionId,\n funnelType: props.funnelType,\n optionalStepNumbers: props.optionalStepNumbers,\n totalFunnelSteps: props.totalFunnelSteps,\n funnelSubmit,\n funnelCancel,\n submissionAttempt,\n funnelNextOrSubmitAttempt,\n funnelState,\n errorCount,\n loadingButtonCount,\n latestFocusCleanupFunction,\n };\n\n return <FunnelContext.Provider value={funnelContextValue}>{children}</FunnelContext.Provider>;\n};\n\ntype AnalyticsFunnelStepProps = {\n children?: React.ReactNode | ((props: FunnelStepContextValue) => React.ReactNode);\n} & Pick<FunnelStepProps, 'stepNumber' | 'stepNameSelector'>;\n\nexport const AnalyticsFunnelStep = (props: AnalyticsFunnelStepProps) => (\n /*\n This wrapper is used to apply a `key` property to the actual (inner) AnalyticsFunnelStep\n element. This allows us to keep the state and effects separate per step.\n */\n <InnerAnalyticsFunnelStep {...props} key={props.stepNumber} />\n);\n\nconst InnerAnalyticsFunnelStep = ({ children, stepNumber, stepNameSelector }: AnalyticsFunnelStepProps) => {\n const { funnelInteractionId, funnelState } = useFunnel();\n\n const funnelStepProps = { [DATA_ATTR_FUNNEL_STEP]: stepNumber };\n\n const subStepCount = useRef<number>(0);\n\n // This useEffect hook is used to track the start and completion of interaction with the step.\n // On mount, if there is a valid funnel interaction id, it calls the 'funnelStepStart' method from FunnelMetrics\n // to record the beginning of the interaction with the current step.\n // On unmount, it does a similar thing but this time calling 'funnelStepComplete' to record the completion of the interaction.\n useEffect(() => {\n const stepName = getNameFromSelector(stepNameSelector);\n\n if (funnelInteractionId && funnelState.current === 'default') {\n FunnelMetrics.funnelStepStart({\n funnelInteractionId,\n stepNumber,\n stepName,\n stepNameSelector,\n subStepAllSelector: getSubStepAllSelector(),\n totalSubSteps: subStepCount.current,\n });\n }\n\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n if (funnelInteractionId && funnelState.current !== 'cancelled') {\n FunnelMetrics.funnelStepComplete({\n funnelInteractionId,\n stepNumber,\n stepName,\n stepNameSelector,\n subStepAllSelector: getSubStepAllSelector(),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n totalSubSteps: subStepCount.current,\n });\n }\n };\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [funnelInteractionId, stepNumber, stepNameSelector]);\n\n const contextValue: FunnelStepContextValue = { stepNumber, stepNameSelector, funnelStepProps, subStepCount };\n return (\n <FunnelStepContext.Provider value={contextValue}>\n {typeof children === 'function' ? children(contextValue) : children}\n </FunnelStepContext.Provider>\n );\n};\ninterface AnalyticsFunnelSubStepProps {\n children?: React.ReactNode;\n}\n\nexport const AnalyticsFunnelSubStep = ({ children }: AnalyticsFunnelSubStepProps) => {\n const subStepId = useUniqueId('substep');\n const subStepSelector = getSubStepSelector(subStepId);\n const subStepNameSelector = getSubStepNameSelector(subStepId);\n const subStepRef = useRef<HTMLDivElement | null>(null);\n const { subStepCount } = useFunnelStep();\n const mousePressed = useRef<boolean>(false);\n const isFocusedSubStep = useRef<boolean>(false);\n const focusCleanupFunction = useRef<undefined | (() => void)>(undefined);\n const { funnelState, funnelInteractionId } = useFunnel();\n const { stepNumber, stepNameSelector } = useFunnelStep();\n\n const newContext: FunnelSubStepContextValue = {\n subStepSelector,\n subStepNameSelector,\n subStepId,\n subStepRef,\n mousePressed,\n isFocusedSubStep,\n focusCleanupFunction,\n isNestedSubStep: false,\n };\n\n const inheritedContext = { ...useContext(FunnelSubStepContext), isNestedSubStep: true };\n\n const isNested = Boolean(inheritedContext.subStepId);\n\n useEffect(() => {\n if (!isNested) {\n subStepCount.current++;\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return () => void subStepCount.current--;\n }\n }, [isNested, subStepCount]);\n\n const context = isNested ? inheritedContext : newContext;\n\n useEffect(() => {\n const onMouseDown = () => (mousePressed.current = true);\n\n const onMouseUp = async () => {\n mousePressed.current = false;\n\n if (!isFocusedSubStep.current) {\n return;\n }\n\n /*\n Some mouse events result in an element being focused. However,\n this happens only _after_ the onMouseUp event. We yield the\n event loop here, so that `document.activeElement` has the\n correct new value. \n */\n await new Promise(r => setTimeout(r, 1));\n\n if (!subStepRef.current || !subStepRef.current.contains(document.activeElement)) {\n isFocusedSubStep.current = false;\n\n /*\n Run this substep's own focus cleanup function if another substep\n hasn't already done it for us.\n */\n focusCleanupFunction.current?.();\n }\n };\n window.addEventListener('mousedown', onMouseDown);\n window.addEventListener('mouseup', onMouseUp);\n return () => {\n window.removeEventListener('mousedown', onMouseDown);\n window.removeEventListener('mouseup', onMouseUp);\n };\n }, [\n funnelInteractionId,\n funnelState,\n stepNameSelector,\n stepNumber,\n subStepNameSelector,\n subStepSelector,\n focusCleanupFunction,\n ]);\n\n return <FunnelSubStepContext.Provider value={context}>{children}</FunnelSubStepContext.Provider>;\n};\n"]}
@@ -14,6 +14,7 @@ export interface FunnelContextValue {
14
14
  funnelState: RefObject<FunnelState>;
15
15
  errorCount: MutableRefObject<number>;
16
16
  loadingButtonCount: MutableRefObject<number>;
17
+ latestFocusCleanupFunction: MutableRefObject<undefined | (() => void)>;
17
18
  }
18
19
  export interface FunnelStepContextValue {
19
20
  stepNameSelector: string;
@@ -26,6 +27,18 @@ export interface FunnelSubStepContextValue {
26
27
  subStepSelector: string;
27
28
  subStepNameSelector: string;
28
29
  subStepRef: MutableRefObject<HTMLDivElement | null>;
30
+ mousePressed: MutableRefObject<boolean>;
31
+ /**
32
+ * `isFocusedSubStep` is almost the same as checking if document.activeElement
33
+ * is a child of the curren substep. However, `isFocusedSubStep` stays true
34
+ * while the mouse button is pressed down, even though some browsers move the focus
35
+ * to the body element during that time.
36
+ */
37
+ isFocusedSubStep: MutableRefObject<boolean>;
38
+ /**
39
+ * The focus cleanup function should be run when the user leaves the substep.
40
+ */
41
+ focusCleanupFunction: MutableRefObject<undefined | (() => void)>;
29
42
  isNestedSubStep: boolean;
30
43
  funnelSubStepProps?: Record<string, string | number | boolean | undefined>;
31
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"analytics-context.d.ts","sourceRoot":"lib/default/","sources":["internal/analytics/context/analytics-context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAiB,MAAM,OAAO,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,WAAW,CAAC;AAE9E,MAAM,WAAW,kBAAkB;IACjC,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,UAAU,EAAE,UAAU,CAAC;IACvB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,sBAAsB,EAAE,CAAC,mBAAmB,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yBAAyB,EAAE,MAAM,IAAI,CAAC;IACtC,WAAW,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IACpC,UAAU,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACrC,kBAAkB,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,sBAAsB;IACrC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IACxE,YAAY,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACpD,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;CAC5E;AAGD,eAAO,MAAM,aAAa,6CAaxB,CAAC;AAEH,eAAO,MAAM,iBAAiB,iDAI5B,CAAC;AAEH,eAAO,MAAM,oBAAoB,oDAM/B,CAAC"}
1
+ {"version":3,"file":"analytics-context.d.ts","sourceRoot":"lib/default/","sources":["internal/analytics/context/analytics-context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAiB,MAAM,OAAO,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,WAAW,CAAC;AAE9E,MAAM,WAAW,kBAAkB;IACjC,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,UAAU,EAAE,UAAU,CAAC;IACvB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,sBAAsB,EAAE,CAAC,mBAAmB,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yBAAyB,EAAE,MAAM,IAAI,CAAC;IACtC,WAAW,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IACpC,UAAU,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACrC,kBAAkB,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC7C,0BAA0B,EAAE,gBAAgB,CAAC,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;CACxE;AAED,MAAM,WAAW,sBAAsB;IACrC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IACxE,YAAY,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACpD,YAAY,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACxC;;;;;OAKG;IACH,gBAAgB,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE5C;;OAEG;IACH,oBAAoB,EAAE,gBAAgB,CAAC,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IACjE,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;CAC5E;AAGD,eAAO,MAAM,aAAa,6CAcxB,CAAC;AAEH,eAAO,MAAM,iBAAiB,iDAI5B,CAAC;AAEH,eAAO,MAAM,oBAAoB,oDAS/B,CAAC"}
@@ -15,6 +15,7 @@ export const FunnelContext = createContext({
15
15
  funnelState: { current: 'default' },
16
16
  errorCount: { current: 0 },
17
17
  loadingButtonCount: { current: 0 },
18
+ latestFocusCleanupFunction: { current: undefined },
18
19
  });
19
20
  export const FunnelStepContext = createContext({
20
21
  stepNameSelector: '',
@@ -27,5 +28,8 @@ export const FunnelSubStepContext = createContext({
27
28
  subStepNameSelector: '',
28
29
  subStepRef: { current: null },
29
30
  isNestedSubStep: false,
31
+ mousePressed: { current: false },
32
+ isFocusedSubStep: { current: false },
33
+ focusCleanupFunction: { current: undefined },
30
34
  });
31
35
  //# sourceMappingURL=analytics-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analytics-context.js","sourceRoot":"lib/default/","sources":["internal/analytics/context/analytics-context.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAA+B,aAAa,EAAE,MAAM,OAAO,CAAC;AAoCnE,0BAA0B;AAC1B,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAqB;IAC7D,mBAAmB,EAAE,SAAS;IAC9B,sBAAsB,EAAE,GAAG,EAAE,GAAE,CAAC;IAChC,UAAU,EAAE,aAAa;IACzB,mBAAmB,EAAE,EAAE;IACvB,gBAAgB,EAAE,CAAC;IACnB,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;IACtB,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;IACtB,iBAAiB,EAAE,CAAC;IACpB,yBAAyB,EAAE,GAAG,EAAE,GAAE,CAAC;IACnC,WAAW,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;IACnC,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;IAC1B,kBAAkB,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;CACnC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAyB;IACrE,gBAAgB,EAAE,EAAE;IACpB,UAAU,EAAE,CAAC;IACb,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;CAC7B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAA4B;IAC3E,SAAS,EAAE,EAAE;IACb,eAAe,EAAE,EAAE;IACnB,mBAAmB,EAAE,EAAE;IACvB,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IAC7B,eAAe,EAAE,KAAK;CACvB,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { MutableRefObject, RefObject, createContext } from 'react';\nimport { FunnelType } from '../interfaces';\n\nexport type FunnelState = 'default' | 'validating' | 'complete' | 'cancelled';\n\nexport interface FunnelContextValue {\n funnelInteractionId: string | undefined;\n funnelType: FunnelType;\n optionalStepNumbers: number[];\n totalFunnelSteps: number;\n funnelSubmit: () => void;\n funnelCancel: () => void;\n setFunnelInteractionId: (funnelInteractionId: string) => void;\n submissionAttempt: number;\n funnelNextOrSubmitAttempt: () => void;\n funnelState: RefObject<FunnelState>;\n errorCount: MutableRefObject<number>;\n loadingButtonCount: MutableRefObject<number>;\n}\n\nexport interface FunnelStepContextValue {\n stepNameSelector: string;\n stepNumber: number;\n funnelStepProps?: Record<string, string | number | boolean | undefined>;\n subStepCount: MutableRefObject<number>;\n}\n\nexport interface FunnelSubStepContextValue {\n subStepId: string;\n subStepSelector: string;\n subStepNameSelector: string;\n subStepRef: MutableRefObject<HTMLDivElement | null>;\n isNestedSubStep: boolean;\n funnelSubStepProps?: Record<string, string | number | boolean | undefined>;\n}\n\n/* istanbul ignore next */\nexport const FunnelContext = createContext<FunnelContextValue>({\n funnelInteractionId: undefined,\n setFunnelInteractionId: () => {},\n funnelType: 'single-page',\n optionalStepNumbers: [],\n totalFunnelSteps: 0,\n funnelSubmit: () => {},\n funnelCancel: () => {},\n submissionAttempt: 0,\n funnelNextOrSubmitAttempt: () => {},\n funnelState: { current: 'default' },\n errorCount: { current: 0 },\n loadingButtonCount: { current: 0 },\n});\n\nexport const FunnelStepContext = createContext<FunnelStepContextValue>({\n stepNameSelector: '',\n stepNumber: 0,\n subStepCount: { current: 0 },\n});\n\nexport const FunnelSubStepContext = createContext<FunnelSubStepContextValue>({\n subStepId: '',\n subStepSelector: '',\n subStepNameSelector: '',\n subStepRef: { current: null },\n isNestedSubStep: false,\n});\n"]}
1
+ {"version":3,"file":"analytics-context.js","sourceRoot":"lib/default/","sources":["internal/analytics/context/analytics-context.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAA+B,aAAa,EAAE,MAAM,OAAO,CAAC;AAkDnE,0BAA0B;AAC1B,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAqB;IAC7D,mBAAmB,EAAE,SAAS;IAC9B,sBAAsB,EAAE,GAAG,EAAE,GAAE,CAAC;IAChC,UAAU,EAAE,aAAa;IACzB,mBAAmB,EAAE,EAAE;IACvB,gBAAgB,EAAE,CAAC;IACnB,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;IACtB,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;IACtB,iBAAiB,EAAE,CAAC;IACpB,yBAAyB,EAAE,GAAG,EAAE,GAAE,CAAC;IACnC,WAAW,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;IACnC,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;IAC1B,kBAAkB,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;IAClC,0BAA0B,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;CACnD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAyB;IACrE,gBAAgB,EAAE,EAAE;IACpB,UAAU,EAAE,CAAC;IACb,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;CAC7B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAA4B;IAC3E,SAAS,EAAE,EAAE;IACb,eAAe,EAAE,EAAE;IACnB,mBAAmB,EAAE,EAAE;IACvB,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IAC7B,eAAe,EAAE,KAAK;IACtB,YAAY,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;IAChC,gBAAgB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;IACpC,oBAAoB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;CAC7C,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { MutableRefObject, RefObject, createContext } from 'react';\nimport { FunnelType } from '../interfaces';\n\nexport type FunnelState = 'default' | 'validating' | 'complete' | 'cancelled';\n\nexport interface FunnelContextValue {\n funnelInteractionId: string | undefined;\n funnelType: FunnelType;\n optionalStepNumbers: number[];\n totalFunnelSteps: number;\n funnelSubmit: () => void;\n funnelCancel: () => void;\n setFunnelInteractionId: (funnelInteractionId: string) => void;\n submissionAttempt: number;\n funnelNextOrSubmitAttempt: () => void;\n funnelState: RefObject<FunnelState>;\n errorCount: MutableRefObject<number>;\n loadingButtonCount: MutableRefObject<number>;\n latestFocusCleanupFunction: MutableRefObject<undefined | (() => void)>;\n}\n\nexport interface FunnelStepContextValue {\n stepNameSelector: string;\n stepNumber: number;\n funnelStepProps?: Record<string, string | number | boolean | undefined>;\n subStepCount: MutableRefObject<number>;\n}\n\nexport interface FunnelSubStepContextValue {\n subStepId: string;\n subStepSelector: string;\n subStepNameSelector: string;\n subStepRef: MutableRefObject<HTMLDivElement | null>;\n mousePressed: MutableRefObject<boolean>;\n /**\n * `isFocusedSubStep` is almost the same as checking if document.activeElement\n * is a child of the curren substep. However, `isFocusedSubStep` stays true\n * while the mouse button is pressed down, even though some browsers move the focus\n * to the body element during that time.\n */\n isFocusedSubStep: MutableRefObject<boolean>;\n\n /**\n * The focus cleanup function should be run when the user leaves the substep.\n */\n focusCleanupFunction: MutableRefObject<undefined | (() => void)>;\n isNestedSubStep: boolean;\n funnelSubStepProps?: Record<string, string | number | boolean | undefined>;\n}\n\n/* istanbul ignore next */\nexport const FunnelContext = createContext<FunnelContextValue>({\n funnelInteractionId: undefined,\n setFunnelInteractionId: () => {},\n funnelType: 'single-page',\n optionalStepNumbers: [],\n totalFunnelSteps: 0,\n funnelSubmit: () => {},\n funnelCancel: () => {},\n submissionAttempt: 0,\n funnelNextOrSubmitAttempt: () => {},\n funnelState: { current: 'default' },\n errorCount: { current: 0 },\n loadingButtonCount: { current: 0 },\n latestFocusCleanupFunction: { current: undefined },\n});\n\nexport const FunnelStepContext = createContext<FunnelStepContextValue>({\n stepNameSelector: '',\n stepNumber: 0,\n subStepCount: { current: 0 },\n});\n\nexport const FunnelSubStepContext = createContext<FunnelSubStepContextValue>({\n subStepId: '',\n subStepSelector: '',\n subStepNameSelector: '',\n subStepRef: { current: null },\n isNestedSubStep: false,\n mousePressed: { current: false },\n isFocusedSubStep: { current: false },\n focusCleanupFunction: { current: undefined },\n});\n"]}
@@ -14,6 +14,9 @@ export declare const useFunnelSubStep: () => import("../context/analytics-contex
14
14
  subStepSelector: string;
15
15
  subStepNameSelector: string;
16
16
  subStepRef: import("react").MutableRefObject<HTMLDivElement | null>;
17
+ mousePressed: import("react").MutableRefObject<boolean>;
18
+ isFocusedSubStep: import("react").MutableRefObject<boolean>;
19
+ focusCleanupFunction: import("react").MutableRefObject<(() => void) | undefined>;
17
20
  isNestedSubStep: boolean;
18
21
  funnelSubStepProps: Record<string, any>;
19
22
  };
@@ -46,6 +49,7 @@ export declare const useFunnel: () => {
46
49
  funnelState: import("react").RefObject<import("../context/analytics-context").FunnelState>;
47
50
  errorCount: import("react").MutableRefObject<number>;
48
51
  loadingButtonCount: import("react").MutableRefObject<number>;
52
+ latestFocusCleanupFunction: import("react").MutableRefObject<(() => void) | undefined>;
49
53
  funnelProps: Record<string, string | number | boolean | undefined>;
50
54
  };
51
55
  //# sourceMappingURL=use-funnel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-funnel.d.ts","sourceRoot":"lib/default/","sources":["internal/analytics/hooks/use-funnel.ts"],"names":[],"mappings":";AAQA;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB;;;;;;;CAuD5B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,qEAGzB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;CASrB,CAAC"}
1
+ {"version":3,"file":"use-funnel.d.ts","sourceRoot":"lib/default/","sources":["internal/analytics/hooks/use-funnel.ts"],"names":[],"mappings":";AAaA;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;CAqH5B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,qEAGzB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;CASrB,CAAC"}