@cloudscape-design/components-themeable 3.0.777 → 3.0.778

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 (407) hide show
  1. package/lib/internal/manifest.json +1 -1
  2. package/lib/internal/template/alert/actions-wrapper/styles.css.js +1 -1
  3. package/lib/internal/template/alert/actions-wrapper/styles.scoped.css +3 -3
  4. package/lib/internal/template/alert/actions-wrapper/styles.selectors.js +1 -1
  5. package/lib/internal/template/alert/styles.css.js +27 -27
  6. package/lib/internal/template/alert/styles.scoped.css +93 -93
  7. package/lib/internal/template/alert/styles.selectors.js +27 -27
  8. package/lib/internal/template/anchor-navigation/styles.css.js +8 -8
  9. package/lib/internal/template/anchor-navigation/styles.scoped.css +61 -61
  10. package/lib/internal/template/anchor-navigation/styles.selectors.js +8 -8
  11. package/lib/internal/template/annotation-context/annotation/styles.css.js +24 -24
  12. package/lib/internal/template/annotation-context/annotation/styles.scoped.css +50 -50
  13. package/lib/internal/template/annotation-context/annotation/styles.selectors.js +24 -24
  14. package/lib/internal/template/app-layout/content-wrapper/styles.css.js +3 -3
  15. package/lib/internal/template/app-layout/content-wrapper/styles.scoped.css +10 -10
  16. package/lib/internal/template/app-layout/content-wrapper/styles.selectors.js +3 -3
  17. package/lib/internal/template/app-layout/drawer/index.d.ts.map +1 -1
  18. package/lib/internal/template/app-layout/drawer/index.js +2 -1
  19. package/lib/internal/template/app-layout/drawer/index.js.map +1 -1
  20. package/lib/internal/template/app-layout/drawer/styles.css.js +13 -13
  21. package/lib/internal/template/app-layout/drawer/styles.scoped.css +33 -33
  22. package/lib/internal/template/app-layout/drawer/styles.selectors.js +13 -13
  23. package/lib/internal/template/app-layout/mobile-toolbar/styles.css.js +8 -8
  24. package/lib/internal/template/app-layout/mobile-toolbar/styles.scoped.css +18 -18
  25. package/lib/internal/template/app-layout/mobile-toolbar/styles.selectors.js +8 -8
  26. package/lib/internal/template/app-layout/notifications/styles.css.js +3 -3
  27. package/lib/internal/template/app-layout/notifications/styles.scoped.css +7 -7
  28. package/lib/internal/template/app-layout/notifications/styles.selectors.js +3 -3
  29. package/lib/internal/template/app-layout/resize/styles.css.js +4 -4
  30. package/lib/internal/template/app-layout/resize/styles.scoped.css +9 -9
  31. package/lib/internal/template/app-layout/resize/styles.selectors.js +4 -4
  32. package/lib/internal/template/app-layout/styles.css.js +12 -12
  33. package/lib/internal/template/app-layout/styles.scoped.css +21 -21
  34. package/lib/internal/template/app-layout/styles.selectors.js +12 -12
  35. package/lib/internal/template/app-layout/toggles/styles.css.js +2 -2
  36. package/lib/internal/template/app-layout/toggles/styles.scoped.css +20 -20
  37. package/lib/internal/template/app-layout/toggles/styles.selectors.js +2 -2
  38. package/lib/internal/template/app-layout/visual-refresh/styles.css.js +85 -85
  39. package/lib/internal/template/app-layout/visual-refresh/styles.scoped.css +262 -262
  40. package/lib/internal/template/app-layout/visual-refresh/styles.selectors.js +85 -85
  41. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.css.js +6 -6
  42. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.scoped.css +9 -9
  43. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.selectors.js +6 -6
  44. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.css.js +4 -4
  45. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.scoped.css +7 -7
  46. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.selectors.js +4 -4
  47. package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.css.js +16 -16
  48. package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.scoped.css +46 -46
  49. package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.selectors.js +16 -16
  50. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/styles.css.js +13 -13
  51. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/styles.scoped.css +28 -28
  52. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/styles.selectors.js +13 -13
  53. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/styles.css.js +9 -9
  54. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/styles.scoped.css +40 -40
  55. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/styles.selectors.js +9 -9
  56. package/lib/internal/template/area-chart/styles.css.js +6 -6
  57. package/lib/internal/template/area-chart/styles.scoped.css +16 -16
  58. package/lib/internal/template/area-chart/styles.selectors.js +6 -6
  59. package/lib/internal/template/attribute-editor/styles.css.js +14 -14
  60. package/lib/internal/template/attribute-editor/styles.scoped.css +43 -43
  61. package/lib/internal/template/attribute-editor/styles.selectors.js +14 -14
  62. package/lib/internal/template/badge/styles.css.js +10 -10
  63. package/lib/internal/template/badge/styles.scoped.css +38 -38
  64. package/lib/internal/template/badge/styles.selectors.js +10 -10
  65. package/lib/internal/template/box/styles.css.js +191 -191
  66. package/lib/internal/template/box/styles.scoped.css +445 -445
  67. package/lib/internal/template/box/styles.selectors.js +191 -191
  68. package/lib/internal/template/breadcrumb-group/item/styles.css.js +8 -8
  69. package/lib/internal/template/breadcrumb-group/item/styles.scoped.css +40 -40
  70. package/lib/internal/template/breadcrumb-group/item/styles.selectors.js +8 -8
  71. package/lib/internal/template/breadcrumb-group/styles.css.js +9 -9
  72. package/lib/internal/template/breadcrumb-group/styles.scoped.css +16 -16
  73. package/lib/internal/template/breadcrumb-group/styles.selectors.js +9 -9
  74. package/lib/internal/template/button/styles.css.js +20 -20
  75. package/lib/internal/template/button/styles.scoped.css +573 -573
  76. package/lib/internal/template/button/styles.selectors.js +20 -20
  77. package/lib/internal/template/button-dropdown/category-elements/styles.css.js +14 -14
  78. package/lib/internal/template/button-dropdown/category-elements/styles.scoped.css +51 -51
  79. package/lib/internal/template/button-dropdown/category-elements/styles.selectors.js +14 -14
  80. package/lib/internal/template/button-dropdown/item-element/styles.css.js +13 -13
  81. package/lib/internal/template/button-dropdown/item-element/styles.scoped.css +53 -53
  82. package/lib/internal/template/button-dropdown/item-element/styles.selectors.js +13 -13
  83. package/lib/internal/template/button-dropdown/mobile-expandable-group/styles.css.js +5 -5
  84. package/lib/internal/template/button-dropdown/mobile-expandable-group/styles.scoped.css +10 -10
  85. package/lib/internal/template/button-dropdown/mobile-expandable-group/styles.selectors.js +5 -5
  86. package/lib/internal/template/button-dropdown/styles.css.js +17 -17
  87. package/lib/internal/template/button-dropdown/styles.scoped.css +41 -41
  88. package/lib/internal/template/button-dropdown/styles.selectors.js +17 -17
  89. package/lib/internal/template/button-group/styles.css.js +4 -4
  90. package/lib/internal/template/button-group/styles.scoped.css +12 -12
  91. package/lib/internal/template/button-group/styles.selectors.js +4 -4
  92. package/lib/internal/template/calendar/styles.css.js +21 -21
  93. package/lib/internal/template/calendar/styles.scoped.css +128 -128
  94. package/lib/internal/template/calendar/styles.selectors.js +21 -21
  95. package/lib/internal/template/cards/styles.css.js +39 -39
  96. package/lib/internal/template/cards/styles.scoped.css +112 -112
  97. package/lib/internal/template/cards/styles.selectors.js +39 -39
  98. package/lib/internal/template/checkbox/styles.css.js +3 -3
  99. package/lib/internal/template/checkbox/styles.scoped.css +19 -19
  100. package/lib/internal/template/checkbox/styles.selectors.js +3 -3
  101. package/lib/internal/template/code-editor/resizable-box/styles.css.js +3 -3
  102. package/lib/internal/template/code-editor/resizable-box/styles.scoped.css +12 -12
  103. package/lib/internal/template/code-editor/resizable-box/styles.selectors.js +3 -3
  104. package/lib/internal/template/code-editor/styles.css.js +33 -33
  105. package/lib/internal/template/code-editor/styles.scoped.css +303 -303
  106. package/lib/internal/template/code-editor/styles.selectors.js +33 -33
  107. package/lib/internal/template/collection-preferences/content-display/styles.css.js +11 -11
  108. package/lib/internal/template/collection-preferences/content-display/styles.scoped.css +55 -55
  109. package/lib/internal/template/collection-preferences/content-display/styles.selectors.js +11 -11
  110. package/lib/internal/template/collection-preferences/styles.css.js +37 -37
  111. package/lib/internal/template/collection-preferences/styles.scoped.css +95 -95
  112. package/lib/internal/template/collection-preferences/styles.selectors.js +37 -37
  113. package/lib/internal/template/column-layout/flexible-column-layout/styles.css.js +5 -5
  114. package/lib/internal/template/column-layout/flexible-column-layout/styles.scoped.css +8 -8
  115. package/lib/internal/template/column-layout/flexible-column-layout/styles.selectors.js +5 -5
  116. package/lib/internal/template/column-layout/styles.css.js +13 -13
  117. package/lib/internal/template/column-layout/styles.scoped.css +58 -58
  118. package/lib/internal/template/column-layout/styles.selectors.js +13 -13
  119. package/lib/internal/template/container/styles.css.js +30 -30
  120. package/lib/internal/template/container/styles.scoped.css +125 -125
  121. package/lib/internal/template/container/styles.selectors.js +30 -30
  122. package/lib/internal/template/content-layout/styles.css.js +14 -14
  123. package/lib/internal/template/content-layout/styles.scoped.css +27 -27
  124. package/lib/internal/template/content-layout/styles.selectors.js +14 -14
  125. package/lib/internal/template/copy-to-clipboard/styles.css.js +4 -4
  126. package/lib/internal/template/copy-to-clipboard/styles.scoped.css +5 -5
  127. package/lib/internal/template/copy-to-clipboard/styles.selectors.js +4 -4
  128. package/lib/internal/template/date-picker/styles.css.js +7 -7
  129. package/lib/internal/template/date-picker/styles.scoped.css +19 -19
  130. package/lib/internal/template/date-picker/styles.selectors.js +7 -7
  131. package/lib/internal/template/date-range-picker/calendar/grids/styles.css.js +28 -28
  132. package/lib/internal/template/date-range-picker/calendar/grids/styles.scoped.css +111 -111
  133. package/lib/internal/template/date-range-picker/calendar/grids/styles.selectors.js +28 -28
  134. package/lib/internal/template/date-range-picker/relative-range/styles.css.js +9 -9
  135. package/lib/internal/template/date-range-picker/relative-range/styles.scoped.css +16 -16
  136. package/lib/internal/template/date-range-picker/relative-range/styles.selectors.js +9 -9
  137. package/lib/internal/template/date-range-picker/styles.css.js +39 -39
  138. package/lib/internal/template/date-range-picker/styles.scoped.css +87 -87
  139. package/lib/internal/template/date-range-picker/styles.selectors.js +39 -39
  140. package/lib/internal/template/drawer/styles.css.js +4 -4
  141. package/lib/internal/template/drawer/styles.scoped.css +37 -37
  142. package/lib/internal/template/drawer/styles.selectors.js +4 -4
  143. package/lib/internal/template/expandable-section/styles.css.js +34 -34
  144. package/lib/internal/template/expandable-section/styles.scoped.css +127 -127
  145. package/lib/internal/template/expandable-section/styles.selectors.js +34 -34
  146. package/lib/internal/template/file-upload/dropzone/styles.css.js +2 -2
  147. package/lib/internal/template/file-upload/dropzone/styles.scoped.css +13 -13
  148. package/lib/internal/template/file-upload/dropzone/styles.selectors.js +2 -2
  149. package/lib/internal/template/file-upload/file-input/styles.css.js +4 -4
  150. package/lib/internal/template/file-upload/file-input/styles.scoped.css +17 -17
  151. package/lib/internal/template/file-upload/file-input/styles.selectors.js +4 -4
  152. package/lib/internal/template/file-upload/file-option/styles.css.js +7 -7
  153. package/lib/internal/template/file-upload/file-option/styles.scoped.css +10 -10
  154. package/lib/internal/template/file-upload/file-option/styles.selectors.js +7 -7
  155. package/lib/internal/template/file-upload/styles.css.js +2 -2
  156. package/lib/internal/template/file-upload/styles.scoped.css +4 -4
  157. package/lib/internal/template/file-upload/styles.selectors.js +2 -2
  158. package/lib/internal/template/flashbar/styles.css.js +50 -50
  159. package/lib/internal/template/flashbar/styles.scoped.css +259 -259
  160. package/lib/internal/template/flashbar/styles.selectors.js +50 -50
  161. package/lib/internal/template/form/styles.css.js +8 -8
  162. package/lib/internal/template/form/styles.scoped.css +20 -20
  163. package/lib/internal/template/form/styles.selectors.js +8 -8
  164. package/lib/internal/template/form-field/styles.css.js +24 -24
  165. package/lib/internal/template/form-field/styles.scoped.css +65 -65
  166. package/lib/internal/template/form-field/styles.selectors.js +24 -24
  167. package/lib/internal/template/grid/styles.css.js +53 -53
  168. package/lib/internal/template/grid/styles.scoped.css +62 -62
  169. package/lib/internal/template/grid/styles.selectors.js +53 -53
  170. package/lib/internal/template/header/styles.css.js +34 -34
  171. package/lib/internal/template/header/styles.scoped.css +126 -126
  172. package/lib/internal/template/header/styles.selectors.js +34 -34
  173. package/lib/internal/template/help-panel/styles.css.js +5 -5
  174. package/lib/internal/template/help-panel/styles.scoped.css +177 -177
  175. package/lib/internal/template/help-panel/styles.selectors.js +5 -5
  176. package/lib/internal/template/hotspot/styles.css.js +7 -7
  177. package/lib/internal/template/hotspot/styles.scoped.css +10 -10
  178. package/lib/internal/template/hotspot/styles.selectors.js +7 -7
  179. package/lib/internal/template/icon/styles.css.js +38 -38
  180. package/lib/internal/template/icon/styles.scoped.css +123 -123
  181. package/lib/internal/template/icon/styles.selectors.js +38 -38
  182. package/lib/internal/template/input/styles.css.js +13 -13
  183. package/lib/internal/template/input/styles.scoped.css +95 -95
  184. package/lib/internal/template/input/styles.selectors.js +13 -13
  185. package/lib/internal/template/internal/analytics/components/analytics-funnel.d.ts.map +1 -1
  186. package/lib/internal/template/internal/analytics/components/analytics-funnel.js +25 -5
  187. package/lib/internal/template/internal/analytics/components/analytics-funnel.js.map +1 -1
  188. package/lib/internal/template/internal/analytics/index.d.ts.map +1 -1
  189. package/lib/internal/template/internal/analytics/index.js +1 -0
  190. package/lib/internal/template/internal/analytics/index.js.map +1 -1
  191. package/lib/internal/template/internal/analytics/interfaces.d.ts +10 -0
  192. package/lib/internal/template/internal/analytics/interfaces.d.ts.map +1 -1
  193. package/lib/internal/template/internal/analytics/interfaces.js.map +1 -1
  194. package/lib/internal/template/internal/base-component/styles.scoped.css +3482 -3462
  195. package/lib/internal/template/internal/components/abstract-switch/styles.css.js +13 -13
  196. package/lib/internal/template/internal/components/abstract-switch/styles.scoped.css +28 -28
  197. package/lib/internal/template/internal/components/abstract-switch/styles.selectors.js +13 -13
  198. package/lib/internal/template/internal/components/button-trigger/styles.css.js +13 -13
  199. package/lib/internal/template/internal/components/button-trigger/styles.scoped.css +89 -89
  200. package/lib/internal/template/internal/components/button-trigger/styles.selectors.js +13 -13
  201. package/lib/internal/template/internal/components/cartesian-chart/styles.css.js +27 -27
  202. package/lib/internal/template/internal/components/cartesian-chart/styles.scoped.css +41 -41
  203. package/lib/internal/template/internal/components/cartesian-chart/styles.selectors.js +27 -27
  204. package/lib/internal/template/internal/components/chart-filter/styles.css.js +3 -3
  205. package/lib/internal/template/internal/components/chart-filter/styles.scoped.css +7 -7
  206. package/lib/internal/template/internal/components/chart-filter/styles.selectors.js +3 -3
  207. package/lib/internal/template/internal/components/chart-legend/styles.css.js +6 -6
  208. package/lib/internal/template/internal/components/chart-legend/styles.scoped.css +26 -26
  209. package/lib/internal/template/internal/components/chart-legend/styles.selectors.js +6 -6
  210. package/lib/internal/template/internal/components/chart-plot/styles.css.js +5 -5
  211. package/lib/internal/template/internal/components/chart-plot/styles.scoped.css +6 -6
  212. package/lib/internal/template/internal/components/chart-plot/styles.selectors.js +5 -5
  213. package/lib/internal/template/internal/components/chart-popover/styles.css.js +3 -3
  214. package/lib/internal/template/internal/components/chart-popover/styles.scoped.css +11 -11
  215. package/lib/internal/template/internal/components/chart-popover/styles.selectors.js +3 -3
  216. package/lib/internal/template/internal/components/chart-popover-footer/styles.css.js +1 -1
  217. package/lib/internal/template/internal/components/chart-popover-footer/styles.scoped.css +5 -5
  218. package/lib/internal/template/internal/components/chart-popover-footer/styles.selectors.js +1 -1
  219. package/lib/internal/template/internal/components/chart-series-details/styles.css.js +20 -20
  220. package/lib/internal/template/internal/components/chart-series-details/styles.scoped.css +56 -56
  221. package/lib/internal/template/internal/components/chart-series-details/styles.selectors.js +20 -20
  222. package/lib/internal/template/internal/components/chart-series-marker/styles.css.js +5 -5
  223. package/lib/internal/template/internal/components/chart-series-marker/styles.scoped.css +14 -14
  224. package/lib/internal/template/internal/components/chart-series-marker/styles.selectors.js +5 -5
  225. package/lib/internal/template/internal/components/chart-status-container/styles.css.js +2 -2
  226. package/lib/internal/template/internal/components/chart-status-container/styles.scoped.css +3 -3
  227. package/lib/internal/template/internal/components/chart-status-container/styles.selectors.js +2 -2
  228. package/lib/internal/template/internal/components/chart-wrapper/styles.css.js +9 -9
  229. package/lib/internal/template/internal/components/chart-wrapper/styles.scoped.css +15 -15
  230. package/lib/internal/template/internal/components/chart-wrapper/styles.selectors.js +9 -9
  231. package/lib/internal/template/internal/components/checkbox-icon/styles.css.js +9 -9
  232. package/lib/internal/template/internal/components/checkbox-icon/styles.scoped.css +20 -20
  233. package/lib/internal/template/internal/components/checkbox-icon/styles.selectors.js +9 -9
  234. package/lib/internal/template/internal/components/dropdown/styles.css.js +20 -20
  235. package/lib/internal/template/internal/components/dropdown/styles.scoped.css +60 -60
  236. package/lib/internal/template/internal/components/dropdown/styles.selectors.js +20 -20
  237. package/lib/internal/template/internal/components/dropdown-footer/styles.css.js +3 -3
  238. package/lib/internal/template/internal/components/dropdown-footer/styles.scoped.css +9 -9
  239. package/lib/internal/template/internal/components/dropdown-footer/styles.selectors.js +3 -3
  240. package/lib/internal/template/internal/components/dropdown-status/styles.css.js +2 -2
  241. package/lib/internal/template/internal/components/dropdown-status/styles.scoped.css +10 -10
  242. package/lib/internal/template/internal/components/dropdown-status/styles.selectors.js +2 -2
  243. package/lib/internal/template/internal/components/handle/styles.css.js +2 -2
  244. package/lib/internal/template/internal/components/handle/styles.scoped.css +15 -15
  245. package/lib/internal/template/internal/components/handle/styles.selectors.js +2 -2
  246. package/lib/internal/template/internal/components/menu-dropdown/styles.css.js +7 -7
  247. package/lib/internal/template/internal/components/menu-dropdown/styles.scoped.css +34 -34
  248. package/lib/internal/template/internal/components/menu-dropdown/styles.selectors.js +7 -7
  249. package/lib/internal/template/internal/components/option/styles.css.js +17 -17
  250. package/lib/internal/template/internal/components/option/styles.scoped.css +47 -47
  251. package/lib/internal/template/internal/components/option/styles.selectors.js +17 -17
  252. package/lib/internal/template/internal/components/options-list/styles.css.js +2 -2
  253. package/lib/internal/template/internal/components/options-list/styles.scoped.css +10 -10
  254. package/lib/internal/template/internal/components/options-list/styles.selectors.js +2 -2
  255. package/lib/internal/template/internal/components/panel-resize-handle/styles.css.js +5 -5
  256. package/lib/internal/template/internal/components/panel-resize-handle/styles.scoped.css +17 -17
  257. package/lib/internal/template/internal/components/panel-resize-handle/styles.selectors.js +5 -5
  258. package/lib/internal/template/internal/components/selectable-item/styles.css.js +16 -16
  259. package/lib/internal/template/internal/components/selectable-item/styles.scoped.css +79 -79
  260. package/lib/internal/template/internal/components/selectable-item/styles.selectors.js +16 -16
  261. package/lib/internal/template/internal/components/token-list/styles.css.js +9 -9
  262. package/lib/internal/template/internal/components/token-list/styles.scoped.css +45 -45
  263. package/lib/internal/template/internal/components/token-list/styles.selectors.js +9 -9
  264. package/lib/internal/template/internal/environment.js +1 -1
  265. package/lib/internal/template/internal/environment.json +1 -1
  266. package/lib/internal/template/key-value-pairs/styles.css.js +8 -8
  267. package/lib/internal/template/key-value-pairs/styles.scoped.css +27 -27
  268. package/lib/internal/template/key-value-pairs/styles.selectors.js +8 -8
  269. package/lib/internal/template/link/styles.css.js +20 -20
  270. package/lib/internal/template/link/styles.scoped.css +153 -153
  271. package/lib/internal/template/link/styles.selectors.js +20 -20
  272. package/lib/internal/template/mixed-line-bar-chart/styles.css.js +11 -11
  273. package/lib/internal/template/mixed-line-bar-chart/styles.scoped.css +22 -22
  274. package/lib/internal/template/mixed-line-bar-chart/styles.selectors.js +11 -11
  275. package/lib/internal/template/modal/styles.css.js +23 -23
  276. package/lib/internal/template/modal/styles.scoped.css +77 -77
  277. package/lib/internal/template/modal/styles.selectors.js +23 -23
  278. package/lib/internal/template/multiselect/styles.css.js +2 -2
  279. package/lib/internal/template/multiselect/styles.scoped.css +7 -7
  280. package/lib/internal/template/multiselect/styles.selectors.js +2 -2
  281. package/lib/internal/template/pagination/styles.css.js +9 -9
  282. package/lib/internal/template/pagination/styles.scoped.css +53 -53
  283. package/lib/internal/template/pagination/styles.selectors.js +9 -9
  284. package/lib/internal/template/pie-chart/styles.css.js +27 -27
  285. package/lib/internal/template/pie-chart/styles.scoped.css +72 -72
  286. package/lib/internal/template/pie-chart/styles.selectors.js +27 -27
  287. package/lib/internal/template/popover/styles.css.js +52 -52
  288. package/lib/internal/template/popover/styles.scoped.css +119 -119
  289. package/lib/internal/template/popover/styles.selectors.js +52 -52
  290. package/lib/internal/template/progress-bar/styles.css.js +19 -19
  291. package/lib/internal/template/progress-bar/styles.scoped.css +56 -56
  292. package/lib/internal/template/progress-bar/styles.selectors.js +19 -19
  293. package/lib/internal/template/prompt-input/styles.css.js +8 -8
  294. package/lib/internal/template/prompt-input/styles.scoped.css +75 -75
  295. package/lib/internal/template/prompt-input/styles.selectors.js +8 -8
  296. package/lib/internal/template/property-filter/filtering-token/styles.css.js +18 -18
  297. package/lib/internal/template/property-filter/filtering-token/styles.scoped.css +83 -83
  298. package/lib/internal/template/property-filter/filtering-token/styles.selectors.js +18 -18
  299. package/lib/internal/template/property-filter/styles.css.js +38 -38
  300. package/lib/internal/template/property-filter/styles.scoped.css +88 -88
  301. package/lib/internal/template/property-filter/styles.selectors.js +38 -38
  302. package/lib/internal/template/radio-group/styles.css.js +10 -10
  303. package/lib/internal/template/radio-group/styles.scoped.css +43 -43
  304. package/lib/internal/template/radio-group/styles.selectors.js +10 -10
  305. package/lib/internal/template/s3-resource-selector/s3-in-context/styles.css.js +7 -7
  306. package/lib/internal/template/s3-resource-selector/s3-in-context/styles.scoped.css +14 -14
  307. package/lib/internal/template/s3-resource-selector/s3-in-context/styles.selectors.js +7 -7
  308. package/lib/internal/template/s3-resource-selector/s3-modal/styles.css.js +3 -3
  309. package/lib/internal/template/s3-resource-selector/s3-modal/styles.scoped.css +7 -7
  310. package/lib/internal/template/s3-resource-selector/s3-modal/styles.selectors.js +3 -3
  311. package/lib/internal/template/segmented-control/styles.css.js +15 -15
  312. package/lib/internal/template/segmented-control/styles.scoped.css +80 -80
  313. package/lib/internal/template/segmented-control/styles.selectors.js +15 -15
  314. package/lib/internal/template/select/parts/styles.css.js +21 -21
  315. package/lib/internal/template/select/parts/styles.scoped.css +59 -59
  316. package/lib/internal/template/select/parts/styles.selectors.js +21 -21
  317. package/lib/internal/template/select/styles.css.js +1 -1
  318. package/lib/internal/template/select/styles.scoped.css +5 -5
  319. package/lib/internal/template/select/styles.selectors.js +1 -1
  320. package/lib/internal/template/side-navigation/styles.css.js +30 -30
  321. package/lib/internal/template/side-navigation/styles.scoped.css +104 -104
  322. package/lib/internal/template/side-navigation/styles.selectors.js +30 -30
  323. package/lib/internal/template/slider/styles.css.js +26 -26
  324. package/lib/internal/template/slider/styles.scoped.css +198 -198
  325. package/lib/internal/template/slider/styles.selectors.js +26 -26
  326. package/lib/internal/template/space-between/styles.css.js +23 -23
  327. package/lib/internal/template/space-between/styles.scoped.css +40 -40
  328. package/lib/internal/template/space-between/styles.selectors.js +23 -23
  329. package/lib/internal/template/spinner/styles.css.js +13 -13
  330. package/lib/internal/template/spinner/styles.scoped.css +36 -36
  331. package/lib/internal/template/spinner/styles.selectors.js +13 -13
  332. package/lib/internal/template/split-panel/icons/styles.css.js +22 -22
  333. package/lib/internal/template/split-panel/icons/styles.scoped.css +47 -47
  334. package/lib/internal/template/split-panel/icons/styles.selectors.js +22 -22
  335. package/lib/internal/template/split-panel/styles.css.js +26 -26
  336. package/lib/internal/template/split-panel/styles.scoped.css +84 -84
  337. package/lib/internal/template/split-panel/styles.selectors.js +26 -26
  338. package/lib/internal/template/status-indicator/styles.css.js +23 -23
  339. package/lib/internal/template/status-indicator/styles.scoped.css +48 -48
  340. package/lib/internal/template/status-indicator/styles.selectors.js +23 -23
  341. package/lib/internal/template/table/body-cell/styles.css.js +47 -47
  342. package/lib/internal/template/table/body-cell/styles.scoped.css +709 -709
  343. package/lib/internal/template/table/body-cell/styles.selectors.js +47 -47
  344. package/lib/internal/template/table/expandable-rows/styles.css.js +3 -3
  345. package/lib/internal/template/table/expandable-rows/styles.scoped.css +33 -33
  346. package/lib/internal/template/table/expandable-rows/styles.selectors.js +3 -3
  347. package/lib/internal/template/table/header-cell/styles.css.js +26 -26
  348. package/lib/internal/template/table/header-cell/styles.scoped.css +197 -197
  349. package/lib/internal/template/table/header-cell/styles.selectors.js +26 -26
  350. package/lib/internal/template/table/resizer/styles.css.js +8 -8
  351. package/lib/internal/template/table/resizer/styles.scoped.css +38 -38
  352. package/lib/internal/template/table/resizer/styles.selectors.js +8 -8
  353. package/lib/internal/template/table/selection/styles.css.js +3 -3
  354. package/lib/internal/template/table/selection/styles.scoped.css +4 -4
  355. package/lib/internal/template/table/selection/styles.selectors.js +3 -3
  356. package/lib/internal/template/table/sticky-scrollbar/styles.css.js +6 -6
  357. package/lib/internal/template/table/sticky-scrollbar/styles.scoped.css +10 -10
  358. package/lib/internal/template/table/sticky-scrollbar/styles.selectors.js +6 -6
  359. package/lib/internal/template/table/styles.css.js +34 -34
  360. package/lib/internal/template/table/styles.scoped.css +88 -88
  361. package/lib/internal/template/table/styles.selectors.js +34 -34
  362. package/lib/internal/template/tabs/styles.css.js +28 -28
  363. package/lib/internal/template/tabs/styles.scoped.css +119 -119
  364. package/lib/internal/template/tabs/styles.selectors.js +28 -28
  365. package/lib/internal/template/tag-editor/styles.css.js +3 -3
  366. package/lib/internal/template/tag-editor/styles.scoped.css +27 -27
  367. package/lib/internal/template/tag-editor/styles.selectors.js +3 -3
  368. package/lib/internal/template/text-content/styles.css.js +1 -1
  369. package/lib/internal/template/text-content/styles.scoped.css +123 -123
  370. package/lib/internal/template/text-content/styles.selectors.js +1 -1
  371. package/lib/internal/template/text-filter/styles.css.js +3 -3
  372. package/lib/internal/template/text-filter/styles.scoped.css +10 -10
  373. package/lib/internal/template/text-filter/styles.selectors.js +3 -3
  374. package/lib/internal/template/textarea/styles.css.js +5 -5
  375. package/lib/internal/template/textarea/styles.scoped.css +58 -58
  376. package/lib/internal/template/textarea/styles.selectors.js +5 -5
  377. package/lib/internal/template/tiles/styles.css.js +30 -30
  378. package/lib/internal/template/tiles/styles.scoped.css +148 -148
  379. package/lib/internal/template/tiles/styles.selectors.js +30 -30
  380. package/lib/internal/template/toggle/styles.css.js +10 -10
  381. package/lib/internal/template/toggle/styles.scoped.css +36 -36
  382. package/lib/internal/template/toggle/styles.selectors.js +10 -10
  383. package/lib/internal/template/toggle-button/styles.css.js +3 -3
  384. package/lib/internal/template/toggle-button/styles.scoped.css +6 -6
  385. package/lib/internal/template/toggle-button/styles.selectors.js +3 -3
  386. package/lib/internal/template/token-group/styles.css.js +10 -10
  387. package/lib/internal/template/token-group/styles.scoped.css +66 -66
  388. package/lib/internal/template/token-group/styles.selectors.js +10 -10
  389. package/lib/internal/template/top-navigation/1.0-beta/styles.css.js +25 -25
  390. package/lib/internal/template/top-navigation/1.0-beta/styles.scoped.css +86 -86
  391. package/lib/internal/template/top-navigation/1.0-beta/styles.selectors.js +25 -25
  392. package/lib/internal/template/top-navigation/styles.css.js +47 -47
  393. package/lib/internal/template/top-navigation/styles.scoped.css +158 -158
  394. package/lib/internal/template/top-navigation/styles.selectors.js +47 -47
  395. package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/styles.css.js +20 -20
  396. package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/styles.scoped.css +43 -43
  397. package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/styles.selectors.js +20 -20
  398. package/lib/internal/template/tutorial-panel/components/tutorial-list/styles.css.js +18 -18
  399. package/lib/internal/template/tutorial-panel/components/tutorial-list/styles.scoped.css +59 -59
  400. package/lib/internal/template/tutorial-panel/components/tutorial-list/styles.selectors.js +18 -18
  401. package/lib/internal/template/tutorial-panel/styles.css.js +1 -1
  402. package/lib/internal/template/tutorial-panel/styles.scoped.css +7 -7
  403. package/lib/internal/template/tutorial-panel/styles.selectors.js +1 -1
  404. package/lib/internal/template/wizard/styles.css.js +30 -30
  405. package/lib/internal/template/wizard/styles.scoped.css +120 -120
  406. package/lib/internal/template/wizard/styles.selectors.js +30 -30
  407. package/package.json +1 -1
@@ -138,11 +138,11 @@
138
138
  */
139
139
  /* Style used for links in slots/components that are text heavy, to help links stand out among
140
140
  surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F73#description */
141
- .awsui_root_2rhyz_wjb7a_141:not(#\9) {
141
+ .awsui_root_2rhyz_yvk9t_141:not(#\9) {
142
142
  /* used in test-utils for component to distinguish input from other input-like components, for example autosuggest */
143
143
  }
144
144
 
145
- .awsui_input_2rhyz_wjb7a_145:not(#\9) {
145
+ .awsui_input_2rhyz_yvk9t_145:not(#\9) {
146
146
  border-collapse: separate;
147
147
  border-spacing: 0;
148
148
  box-sizing: border-box;
@@ -169,164 +169,164 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
169
169
  visibility: visible;
170
170
  white-space: normal;
171
171
  word-spacing: normal;
172
- font-size: var(--font-size-body-m-pa3mqb, 14px);
173
- line-height: var(--line-height-body-m-2zx78l, 22px);
174
- color: var(--color-text-body-default-bvmavx, #16191f);
172
+ font-size: var(--font-size-body-m-6wxxs5, 14px);
173
+ line-height: var(--line-height-body-m-gw0130, 22px);
174
+ color: var(--color-text-body-default-agk00h, #16191f);
175
175
  font-weight: 400;
176
- font-family: var(--font-family-base-0nmw8v, "Noto Sans", "Helvetica Neue", Roboto, Arial, sans-serif);
176
+ font-family: var(--font-family-base-pxn2ad, "Noto Sans", "Helvetica Neue", Roboto, Arial, sans-serif);
177
177
  -webkit-font-smoothing: auto;
178
178
  -moz-osx-font-smoothing: auto;
179
- padding-block: var(--space-scaled-xxs-t7ij38, 4px);
180
- padding-inline: var(--space-field-horizontal-cy5q05, 8px);
181
- color: var(--color-text-body-default-bvmavx, #16191f);
179
+ padding-block: var(--space-scaled-xxs-krq5fq, 4px);
180
+ padding-inline: var(--space-field-horizontal-cxdor9, 8px);
181
+ color: var(--color-text-body-default-agk00h, #16191f);
182
182
  inline-size: 100%;
183
183
  cursor: text;
184
184
  box-sizing: border-box;
185
- background-color: var(--color-background-input-default-m1182s, #ffffff);
186
- border-start-start-radius: var(--border-radius-input-hy50dp, 2px);
187
- border-start-end-radius: var(--border-radius-input-hy50dp, 2px);
188
- border-end-start-radius: var(--border-radius-input-hy50dp, 2px);
189
- border-end-end-radius: var(--border-radius-input-hy50dp, 2px);
190
- border-block: var(--border-field-width-yoy972, 1px) solid var(--color-border-input-default-iefrgj, #687078);
191
- border-inline: var(--border-field-width-yoy972, 1px) solid var(--color-border-input-default-iefrgj, #687078);
192
- font-size: var(--font-size-body-m-pa3mqb, 14px);
193
- line-height: var(--line-height-body-m-2zx78l, 22px);
194
- block-size: var(--size-vertical-input-ubbp77, 32px);
185
+ background-color: var(--color-background-input-default-refava, #ffffff);
186
+ border-start-start-radius: var(--border-radius-input-bx26um, 2px);
187
+ border-start-end-radius: var(--border-radius-input-bx26um, 2px);
188
+ border-end-start-radius: var(--border-radius-input-bx26um, 2px);
189
+ border-end-end-radius: var(--border-radius-input-bx26um, 2px);
190
+ border-block: var(--border-field-width-fjuzc5, 1px) solid var(--color-border-input-default-2868kh, #687078);
191
+ border-inline: var(--border-field-width-fjuzc5, 1px) solid var(--color-border-input-default-2868kh, #687078);
192
+ font-size: var(--font-size-body-m-6wxxs5, 14px);
193
+ line-height: var(--line-height-body-m-gw0130, 22px);
194
+ block-size: var(--size-vertical-input-t2p4dg, 32px);
195
195
  }
196
- .awsui_input_2rhyz_wjb7a_145.awsui_input-readonly_2rhyz_wjb7a_195:not(#\9) {
197
- background-color: var(--color-background-input-default-m1182s, #ffffff);
198
- border-block: var(--border-field-width-yoy972, 1px) solid var(--color-border-input-disabled-k23dfh, #eaeded);
199
- border-inline: var(--border-field-width-yoy972, 1px) solid var(--color-border-input-disabled-k23dfh, #eaeded);
196
+ .awsui_input_2rhyz_yvk9t_145.awsui_input-readonly_2rhyz_yvk9t_195:not(#\9) {
197
+ background-color: var(--color-background-input-default-refava, #ffffff);
198
+ border-block: var(--border-field-width-fjuzc5, 1px) solid var(--color-border-input-disabled-vjmitr, #eaeded);
199
+ border-inline: var(--border-field-width-fjuzc5, 1px) solid var(--color-border-input-disabled-vjmitr, #eaeded);
200
200
  }
201
- .awsui_input_2rhyz_wjb7a_145:not(#\9)::-webkit-input-placeholder {
202
- color: var(--color-text-input-placeholder-zd3pu1, #687078);
201
+ .awsui_input_2rhyz_yvk9t_145:not(#\9)::-webkit-input-placeholder {
202
+ color: var(--color-text-input-placeholder-od847j, #687078);
203
203
  font-style: italic;
204
204
  -webkit-user-select: none;
205
205
  user-select: none;
206
206
  }
207
- .awsui_input_2rhyz_wjb7a_145:not(#\9)::-ms-input-placeholder {
208
- color: var(--color-text-input-placeholder-zd3pu1, #687078);
207
+ .awsui_input_2rhyz_yvk9t_145:not(#\9)::-ms-input-placeholder {
208
+ color: var(--color-text-input-placeholder-od847j, #687078);
209
209
  font-style: italic;
210
210
  }
211
- .awsui_input_2rhyz_wjb7a_145:not(#\9)::-moz-placeholder {
212
- color: var(--color-text-input-placeholder-zd3pu1, #687078);
211
+ .awsui_input_2rhyz_yvk9t_145:not(#\9)::-moz-placeholder {
212
+ color: var(--color-text-input-placeholder-od847j, #687078);
213
213
  font-style: italic;
214
214
  opacity: 1;
215
215
  }
216
- .awsui_input_2rhyz_wjb7a_145:not(#\9):-ms-input-placeholder {
217
- color: var(--color-text-input-placeholder-zd3pu1, #687078);
216
+ .awsui_input_2rhyz_yvk9t_145:not(#\9):-ms-input-placeholder {
217
+ color: var(--color-text-input-placeholder-od847j, #687078);
218
218
  font-style: italic;
219
219
  }
220
- .awsui_input_2rhyz_wjb7a_145:not(#\9):-moz-placeholder {
221
- color: var(--color-text-input-placeholder-zd3pu1, #687078);
220
+ .awsui_input_2rhyz_yvk9t_145:not(#\9):-moz-placeholder {
221
+ color: var(--color-text-input-placeholder-od847j, #687078);
222
222
  font-style: italic;
223
223
  opacity: 1;
224
224
  }
225
- .awsui_input_2rhyz_wjb7a_145:not(#\9):focus {
225
+ .awsui_input_2rhyz_yvk9t_145:not(#\9):focus {
226
226
  outline: 2px dotted transparent;
227
- border-block: var(--border-field-width-yoy972, 1px) solid var(--color-border-input-focused-oykww6, #0073bb);
228
- border-inline: var(--border-field-width-yoy972, 1px) solid var(--color-border-input-focused-oykww6, #0073bb);
229
- border-start-start-radius: var(--border-radius-input-hy50dp, 2px);
230
- border-start-end-radius: var(--border-radius-input-hy50dp, 2px);
231
- border-end-start-radius: var(--border-radius-input-hy50dp, 2px);
232
- border-end-end-radius: var(--border-radius-input-hy50dp, 2px);
233
- box-shadow: 0 0 0 var(--border-control-focus-ring-shadow-spread-0k725q, 1px) var(--color-border-item-focused-7jb69s, #0073bb);
227
+ border-block: var(--border-field-width-fjuzc5, 1px) solid var(--color-border-input-focused-rg4ms2, #0073bb);
228
+ border-inline: var(--border-field-width-fjuzc5, 1px) solid var(--color-border-input-focused-rg4ms2, #0073bb);
229
+ border-start-start-radius: var(--border-radius-input-bx26um, 2px);
230
+ border-start-end-radius: var(--border-radius-input-bx26um, 2px);
231
+ border-end-start-radius: var(--border-radius-input-bx26um, 2px);
232
+ border-end-end-radius: var(--border-radius-input-bx26um, 2px);
233
+ box-shadow: 0 0 0 var(--border-control-focus-ring-shadow-spread-kvz439, 1px) var(--color-border-item-focused-q68bgg, #0073bb);
234
234
  }
235
- .awsui_input_2rhyz_wjb7a_145:not(#\9):disabled {
236
- background-color: var(--color-background-input-disabled-x30rdp, #eaeded);
237
- border-block: var(--border-field-width-yoy972, 1px) solid var(--color-border-input-disabled-k23dfh, #eaeded);
238
- border-inline: var(--border-field-width-yoy972, 1px) solid var(--color-border-input-disabled-k23dfh, #eaeded);
239
- color: var(--color-text-input-disabled-k2fbx1, #879596);
235
+ .awsui_input_2rhyz_yvk9t_145:not(#\9):disabled {
236
+ background-color: var(--color-background-input-disabled-fxvqfu, #eaeded);
237
+ border-block: var(--border-field-width-fjuzc5, 1px) solid var(--color-border-input-disabled-vjmitr, #eaeded);
238
+ border-inline: var(--border-field-width-fjuzc5, 1px) solid var(--color-border-input-disabled-vjmitr, #eaeded);
239
+ color: var(--color-text-input-disabled-uyphto, #879596);
240
240
  cursor: auto;
241
241
  cursor: default;
242
242
  }
243
- .awsui_input_2rhyz_wjb7a_145:not(#\9):disabled::-webkit-input-placeholder {
244
- color: var(--color-text-input-placeholder-disabled-k12yul, #687078);
243
+ .awsui_input_2rhyz_yvk9t_145:not(#\9):disabled::-webkit-input-placeholder {
244
+ color: var(--color-text-input-placeholder-disabled-kh03qh, #687078);
245
245
  -webkit-user-select: none;
246
246
  user-select: none;
247
247
  }
248
- .awsui_input_2rhyz_wjb7a_145:not(#\9):disabled::-ms-input-placeholder {
249
- color: var(--color-text-input-placeholder-disabled-k12yul, #687078);
248
+ .awsui_input_2rhyz_yvk9t_145:not(#\9):disabled::-ms-input-placeholder {
249
+ color: var(--color-text-input-placeholder-disabled-kh03qh, #687078);
250
250
  }
251
- .awsui_input_2rhyz_wjb7a_145:not(#\9):disabled::-moz-placeholder {
252
- color: var(--color-text-input-placeholder-disabled-k12yul, #687078);
251
+ .awsui_input_2rhyz_yvk9t_145:not(#\9):disabled::-moz-placeholder {
252
+ color: var(--color-text-input-placeholder-disabled-kh03qh, #687078);
253
253
  opacity: 1;
254
254
  }
255
- .awsui_input_2rhyz_wjb7a_145:not(#\9):disabled:-ms-input-placeholder {
256
- color: var(--color-text-input-placeholder-disabled-k12yul, #687078);
255
+ .awsui_input_2rhyz_yvk9t_145:not(#\9):disabled:-ms-input-placeholder {
256
+ color: var(--color-text-input-placeholder-disabled-kh03qh, #687078);
257
257
  }
258
- .awsui_input_2rhyz_wjb7a_145:not(#\9):disabled:-moz-placeholder {
259
- color: var(--color-text-input-placeholder-disabled-k12yul, #687078);
258
+ .awsui_input_2rhyz_yvk9t_145:not(#\9):disabled:-moz-placeholder {
259
+ color: var(--color-text-input-placeholder-disabled-kh03qh, #687078);
260
260
  opacity: 1;
261
261
  }
262
- .awsui_input_2rhyz_wjb7a_145:not(#\9):invalid {
262
+ .awsui_input_2rhyz_yvk9t_145:not(#\9):invalid {
263
263
  box-shadow: none;
264
264
  }
265
- .awsui_input_2rhyz_wjb7a_145.awsui_input-invalid_2rhyz_wjb7a_262:not(#\9) {
266
- color: var(--color-text-status-error-94vsqp, #d13212);
267
- border-color: var(--color-text-status-error-94vsqp, #d13212);
268
- padding-inline-start: calc(var(--space-field-horizontal-cy5q05, 8px) - (var(--border-invalid-width-hp6noi, 4px) - var(--border-field-width-yoy972, 1px)));
269
- border-inline-start-width: var(--border-invalid-width-hp6noi, 4px);
265
+ .awsui_input_2rhyz_yvk9t_145.awsui_input-invalid_2rhyz_yvk9t_262:not(#\9) {
266
+ color: var(--color-text-status-error-p5bdwa, #d13212);
267
+ border-color: var(--color-text-status-error-p5bdwa, #d13212);
268
+ padding-inline-start: calc(var(--space-field-horizontal-cxdor9, 8px) - (var(--border-invalid-width-bkxihb, 4px) - var(--border-field-width-fjuzc5, 1px)));
269
+ border-inline-start-width: var(--border-invalid-width-bkxihb, 4px);
270
270
  }
271
- .awsui_input_2rhyz_wjb7a_145.awsui_input-invalid_2rhyz_wjb7a_262:not(#\9):focus {
272
- box-shadow: 0 0 0 var(--border-control-invalid-focus-ring-shadow-spread-v3635w, 1px) var(--color-border-item-focused-7jb69s, #0073bb);
271
+ .awsui_input_2rhyz_yvk9t_145.awsui_input-invalid_2rhyz_yvk9t_262:not(#\9):focus {
272
+ box-shadow: 0 0 0 var(--border-control-invalid-focus-ring-shadow-spread-rdec9x, 1px) var(--color-border-item-focused-q68bgg, #0073bb);
273
273
  }
274
- .awsui_input_2rhyz_wjb7a_145.awsui_input-invalid_2rhyz_wjb7a_262.awsui_input-has-icon-left_2rhyz_wjb7a_271:not(#\9) {
275
- padding-inline-start: calc(var(--space-field-icon-offset-llp3ak, 32px) - (var(--border-invalid-width-hp6noi, 4px) - var(--border-field-width-yoy972, 1px)));
274
+ .awsui_input_2rhyz_yvk9t_145.awsui_input-invalid_2rhyz_yvk9t_262.awsui_input-has-icon-left_2rhyz_yvk9t_271:not(#\9) {
275
+ padding-inline-start: calc(var(--space-field-icon-offset-0lab0t, 32px) - (var(--border-invalid-width-bkxihb, 4px) - var(--border-field-width-fjuzc5, 1px)));
276
276
  }
277
- .awsui_input_2rhyz_wjb7a_145.awsui_input-warning_2rhyz_wjb7a_274:not(#\9) {
278
- color: var(--color-text-status-warning-pynggy, #906806);
279
- border-color: var(--color-text-status-warning-pynggy, #906806);
280
- padding-inline-start: calc(var(--space-field-horizontal-cy5q05, 8px) - (var(--border-invalid-width-hp6noi, 4px) - var(--border-field-width-yoy972, 1px)));
281
- border-inline-start-width: var(--border-invalid-width-hp6noi, 4px);
277
+ .awsui_input_2rhyz_yvk9t_145.awsui_input-warning_2rhyz_yvk9t_274:not(#\9) {
278
+ color: var(--color-text-status-warning-3hbtsc, #906806);
279
+ border-color: var(--color-text-status-warning-3hbtsc, #906806);
280
+ padding-inline-start: calc(var(--space-field-horizontal-cxdor9, 8px) - (var(--border-invalid-width-bkxihb, 4px) - var(--border-field-width-fjuzc5, 1px)));
281
+ border-inline-start-width: var(--border-invalid-width-bkxihb, 4px);
282
282
  }
283
- .awsui_input_2rhyz_wjb7a_145.awsui_input-warning_2rhyz_wjb7a_274:not(#\9):focus {
284
- box-shadow: 0 0 0 var(--border-control-invalid-focus-ring-shadow-spread-v3635w, 1px) var(--color-border-item-focused-7jb69s, #0073bb);
283
+ .awsui_input_2rhyz_yvk9t_145.awsui_input-warning_2rhyz_yvk9t_274:not(#\9):focus {
284
+ box-shadow: 0 0 0 var(--border-control-invalid-focus-ring-shadow-spread-rdec9x, 1px) var(--color-border-item-focused-q68bgg, #0073bb);
285
285
  }
286
- .awsui_input_2rhyz_wjb7a_145.awsui_input-warning_2rhyz_wjb7a_274.awsui_input-has-icon-left_2rhyz_wjb7a_271:not(#\9) {
287
- padding-inline-start: calc(var(--space-field-icon-offset-llp3ak, 32px) - (var(--border-invalid-width-hp6noi, 4px) - var(--border-field-width-yoy972, 1px)));
286
+ .awsui_input_2rhyz_yvk9t_145.awsui_input-warning_2rhyz_yvk9t_274.awsui_input-has-icon-left_2rhyz_yvk9t_271:not(#\9) {
287
+ padding-inline-start: calc(var(--space-field-icon-offset-0lab0t, 32px) - (var(--border-invalid-width-bkxihb, 4px) - var(--border-field-width-fjuzc5, 1px)));
288
288
  }
289
- .awsui_input_2rhyz_wjb7a_145.awsui_input-type-search_2rhyz_wjb7a_286:not(#\9) {
289
+ .awsui_input_2rhyz_yvk9t_145.awsui_input-type-search_2rhyz_yvk9t_286:not(#\9) {
290
290
  box-sizing: border-box;
291
291
  -webkit-appearance: none;
292
292
  }
293
- .awsui_input_2rhyz_wjb7a_145.awsui_input-type-search_2rhyz_wjb7a_286:not(#\9)::-webkit-search-decoration {
293
+ .awsui_input_2rhyz_yvk9t_145.awsui_input-type-search_2rhyz_yvk9t_286:not(#\9)::-webkit-search-decoration {
294
294
  -webkit-appearance: none;
295
295
  }
296
- .awsui_input_2rhyz_wjb7a_145.awsui_input-type-search_2rhyz_wjb7a_286:not(#\9)::-webkit-search-cancel-button {
296
+ .awsui_input_2rhyz_yvk9t_145.awsui_input-type-search_2rhyz_yvk9t_286:not(#\9)::-webkit-search-cancel-button {
297
297
  display: none;
298
298
  }
299
- .awsui_input_2rhyz_wjb7a_145.awsui_input-has-icon-left_2rhyz_wjb7a_271:not(#\9) {
300
- padding-inline-start: var(--space-field-icon-offset-llp3ak, 32px);
299
+ .awsui_input_2rhyz_yvk9t_145.awsui_input-has-icon-left_2rhyz_yvk9t_271:not(#\9) {
300
+ padding-inline-start: var(--space-field-icon-offset-0lab0t, 32px);
301
301
  }
302
- .awsui_input_2rhyz_wjb7a_145.awsui_input-has-icon-right_2rhyz_wjb7a_299:not(#\9) {
303
- padding-inline-end: var(--space-field-icon-offset-llp3ak, 32px);
302
+ .awsui_input_2rhyz_yvk9t_145.awsui_input-has-icon-right_2rhyz_yvk9t_299:not(#\9) {
303
+ padding-inline-end: var(--space-field-icon-offset-0lab0t, 32px);
304
304
  }
305
- .awsui_input_2rhyz_wjb7a_145.awsui_input-has-no-border-radius_2rhyz_wjb7a_302:not(#\9) {
306
- border-start-start-radius: var(--border-radius-dropdown-cw0ldi, 0px);
307
- border-start-end-radius: var(--border-radius-dropdown-cw0ldi, 0px);
308
- border-end-start-radius: var(--border-radius-dropdown-cw0ldi, 0px);
309
- border-end-end-radius: var(--border-radius-dropdown-cw0ldi, 0px);
305
+ .awsui_input_2rhyz_yvk9t_145.awsui_input-has-no-border-radius_2rhyz_yvk9t_302:not(#\9) {
306
+ border-start-start-radius: var(--border-radius-dropdown-knc5ce, 0px);
307
+ border-start-end-radius: var(--border-radius-dropdown-knc5ce, 0px);
308
+ border-end-start-radius: var(--border-radius-dropdown-knc5ce, 0px);
309
+ border-end-end-radius: var(--border-radius-dropdown-knc5ce, 0px);
310
310
  }
311
311
 
312
- .awsui_input-container_2rhyz_wjb7a_309:not(#\9) {
312
+ .awsui_input-container_2rhyz_yvk9t_309:not(#\9) {
313
313
  display: flex;
314
314
  position: relative;
315
315
  }
316
316
 
317
- .awsui_input-icon-left_2rhyz_wjb7a_314:not(#\9) {
317
+ .awsui_input-icon-left_2rhyz_yvk9t_314:not(#\9) {
318
318
  position: absolute;
319
319
  pointer-events: none;
320
- inset-inline-start: var(--space-field-horizontal-cy5q05, 8px);
321
- inset-block-start: calc(50% - var(--line-height-body-m-2zx78l, 22px) / 2);
320
+ inset-inline-start: var(--space-field-horizontal-cxdor9, 8px);
321
+ inset-block-start: calc(50% - var(--line-height-body-m-gw0130, 22px) / 2);
322
322
  }
323
323
 
324
- .awsui_input-icon-right_2rhyz_wjb7a_321:not(#\9) {
324
+ .awsui_input-icon-right_2rhyz_yvk9t_321:not(#\9) {
325
325
  position: absolute;
326
- inset-block-start: calc(50% - var(--line-height-body-m-2zx78l, 22px) / 2);
327
- inset-inline-end: calc(var(--space-field-horizontal-cy5q05, 8px) - var(--space-xxs-9rrxti, 4px));
326
+ inset-block-start: calc(50% - var(--line-height-body-m-gw0130, 22px) / 2);
327
+ inset-inline-end: calc(var(--space-field-horizontal-cxdor9, 8px) - var(--space-xxs-y2432o, 4px));
328
328
  }
329
329
 
330
- .awsui_input-button-right_2rhyz_wjb7a_327:not(#\9) {
330
+ .awsui_input-button-right_2rhyz_yvk9t_327:not(#\9) {
331
331
  /* used in test-utils */
332
332
  }
@@ -2,18 +2,18 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "root": "awsui_root_2rhyz_wjb7a_141",
6
- "input": "awsui_input_2rhyz_wjb7a_145",
7
- "input-readonly": "awsui_input-readonly_2rhyz_wjb7a_195",
8
- "input-invalid": "awsui_input-invalid_2rhyz_wjb7a_262",
9
- "input-has-icon-left": "awsui_input-has-icon-left_2rhyz_wjb7a_271",
10
- "input-warning": "awsui_input-warning_2rhyz_wjb7a_274",
11
- "input-type-search": "awsui_input-type-search_2rhyz_wjb7a_286",
12
- "input-has-icon-right": "awsui_input-has-icon-right_2rhyz_wjb7a_299",
13
- "input-has-no-border-radius": "awsui_input-has-no-border-radius_2rhyz_wjb7a_302",
14
- "input-container": "awsui_input-container_2rhyz_wjb7a_309",
15
- "input-icon-left": "awsui_input-icon-left_2rhyz_wjb7a_314",
16
- "input-icon-right": "awsui_input-icon-right_2rhyz_wjb7a_321",
17
- "input-button-right": "awsui_input-button-right_2rhyz_wjb7a_327"
5
+ "root": "awsui_root_2rhyz_yvk9t_141",
6
+ "input": "awsui_input_2rhyz_yvk9t_145",
7
+ "input-readonly": "awsui_input-readonly_2rhyz_yvk9t_195",
8
+ "input-invalid": "awsui_input-invalid_2rhyz_yvk9t_262",
9
+ "input-has-icon-left": "awsui_input-has-icon-left_2rhyz_yvk9t_271",
10
+ "input-warning": "awsui_input-warning_2rhyz_yvk9t_274",
11
+ "input-type-search": "awsui_input-type-search_2rhyz_yvk9t_286",
12
+ "input-has-icon-right": "awsui_input-has-icon-right_2rhyz_yvk9t_299",
13
+ "input-has-no-border-radius": "awsui_input-has-no-border-radius_2rhyz_yvk9t_302",
14
+ "input-container": "awsui_input-container_2rhyz_yvk9t_309",
15
+ "input-icon-left": "awsui_input-icon-left_2rhyz_yvk9t_314",
16
+ "input-icon-right": "awsui_input-icon-right_2rhyz_yvk9t_321",
17
+ "input-button-right": "awsui_input-button-right_2rhyz_yvk9t_327"
18
18
  };
19
19
 
@@ -1 +1 @@
1
- {"version":3,"file":"analytics-funnel.d.ts","sourceRoot":"","sources":["../../../../../src/internal/analytics/components/analytics-funnel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAOvE,OAAO,EAKL,sBAAsB,EAEtB,yBAAyB,EAC1B,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EAElB,MAAM,eAAe,CAAC;AAUvB,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,UAAU,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC3C,mBAAmB,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;IAC7D,gBAAgB,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IACvD,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;IAC3D,cAAc,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC/C,kBAAkB,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACvD,kBAAkB,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;CACxD;AAED,eAAO,MAAM,eAAe,UAAW,oBAAoB,gBAa1D,CAAC;AACF,eAAO,MAAM,kCAAkC,kCAAkC,CAAC;AAsMlF,UAAU,wBAAwB;IAChC,cAAc,CAAC,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;IACzD,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACrD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,sBAAsB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAClF,gBAAgB,CAAC,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACvD,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;CAC3C;AAED,eAAO,MAAM,mBAAmB,UAAW,wBAAwB,gBAMlE,CAAC;AAyLF,UAAU,2BAA2B;IACnC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;IAC5D,mBAAmB,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACxD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,yBAAyB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;CACtF;AAED,eAAO,MAAM,sBAAsB,0DAIhC,2BAA2B,gBAmG7B,CAAC"}
1
+ {"version":3,"file":"analytics-funnel.d.ts","sourceRoot":"","sources":["../../../../../src/internal/analytics/components/analytics-funnel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAOvE,OAAO,EAKL,sBAAsB,EAEtB,yBAAyB,EAC1B,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EAGlB,MAAM,eAAe,CAAC;AAUvB,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACxC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,UAAU,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC3C,mBAAmB,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;IAC7D,gBAAgB,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IACvD,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;IAC3D,cAAc,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC/C,kBAAkB,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACvD,kBAAkB,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;CACxD;AAED,eAAO,MAAM,eAAe,UAAW,oBAAoB,gBAa1D,CAAC;AACF,eAAO,MAAM,kCAAkC,kCAAkC,CAAC;AA+MlF,UAAU,wBAAwB;IAChC,cAAc,CAAC,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;IACzD,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACrD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,sBAAsB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAClF,gBAAgB,CAAC,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACvD,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;CAC3C;AAED,eAAO,MAAM,mBAAmB,UAAW,wBAAwB,gBAMlE,CAAC;AAyLF,UAAU,2BAA2B;IACnC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;IAC5D,mBAAmB,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACxD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,yBAAyB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;CACtF;AAED,eAAO,MAAM,sBAAsB,0DAIhC,2BAA2B,gBAmG7B,CAAC"}
@@ -9,7 +9,7 @@ import { useVisualRefresh } from '../../hooks/use-visual-mode';
9
9
  import { nodeBelongs } from '../../utils/node-belongs';
10
10
  import { FunnelContext, FunnelStepContext, FunnelSubStepContext, } from '../context/analytics-context';
11
11
  import { useFunnel, useFunnelStep } from '../hooks/use-funnel';
12
- import { FunnelMetrics } from '../index';
12
+ import { FunnelMetrics, PerformanceMetrics } from '../index';
13
13
  import { DATA_ATTR_FUNNEL_STEP, getFunnelNameSelector, getNameFromSelector, getSubStepAllSelector, getSubStepNameSelector, getSubStepSelector, } from '../selectors';
14
14
  export const FUNNEL_VERSION = '1.4';
15
15
  export const AnalyticsFunnel = (props) => {
@@ -38,8 +38,12 @@ const dispatchCreateEditFlowDoneEvent = () => {
38
38
  const onFunnelCancelled = ({ funnelInteractionId, funnelIdentifier, }) => {
39
39
  FunnelMetrics.funnelCancelled({ funnelInteractionId, funnelIdentifier });
40
40
  };
41
- const onFunnelComplete = ({ funnelInteractionId, funnelIdentifier, }) => {
42
- FunnelMetrics.funnelComplete({ funnelInteractionId, funnelIdentifier });
41
+ const onFunnelComplete = (taskCompletionDataProps) => {
42
+ FunnelMetrics.funnelComplete({
43
+ funnelInteractionId: taskCompletionDataProps.taskInteractionId,
44
+ funnelIdentifier: taskCompletionDataProps.taskIdentifier,
45
+ });
46
+ PerformanceMetrics.taskCompletionData(taskCompletionDataProps);
43
47
  dispatchCreateEditFlowDoneEvent();
44
48
  };
45
49
  function evaluateSelectors(selectors, defaultSelector) {
@@ -62,6 +66,7 @@ const InnerAnalyticsFunnel = (_a) => {
62
66
  const loadingButtonCount = useRef(0);
63
67
  const wizardCount = useRef(0);
64
68
  const latestFocusCleanupFunction = useRef(undefined);
69
+ const formSubmitStartTime = useRef(0);
65
70
  // This useEffect hook is run once on component mount to initiate the funnel analytics.
66
71
  // It first calls the 'funnelStart' method from FunnelMetrics, providing all necessary details
67
72
  // about the funnel, and receives a unique interaction id.
@@ -120,7 +125,14 @@ const InnerAnalyticsFunnel = (_a) => {
120
125
  }
121
126
  if (funnelState.current === 'validating') {
122
127
  // Finish the validation phase early.
123
- onFunnelComplete({ funnelInteractionId, funnelIdentifier: props.funnelIdentifier });
128
+ const taskCompletionDataProps = {
129
+ taskIdentifier: props.funnelIdentifier,
130
+ taskType: props.funnelType,
131
+ timeToRespondAfterFormSubmit: performance.now() - formSubmitStartTime.current,
132
+ taskInteractionId: funnelInteractionId,
133
+ taskFlowType: props.funnelFlowType,
134
+ };
135
+ onFunnelComplete(taskCompletionDataProps);
124
136
  funnelState.current = 'complete';
125
137
  }
126
138
  if (funnelState.current === 'complete') {
@@ -135,6 +147,7 @@ const InnerAnalyticsFunnel = (_a) => {
135
147
  /* eslint-enable react-hooks/exhaustive-deps */
136
148
  const funnelSubmit = () => {
137
149
  funnelState.current = 'validating';
150
+ formSubmitStartTime.current = performance.now();
138
151
  /*
139
152
  When the user attempts to submit the form, we wait for 50 milliseconds before checking
140
153
  if any form validation errors are present. This value was chosen to give enough time
@@ -158,7 +171,14 @@ const InnerAnalyticsFunnel = (_a) => {
158
171
  /*
159
172
  If no validation errors are rendered, we treat the funnel as complete.
160
173
  */
161
- onFunnelComplete({ funnelInteractionId });
174
+ const taskCompletionDataProps = {
175
+ taskIdentifier: props.funnelIdentifier,
176
+ taskType: props.funnelType,
177
+ timeToRespondAfterFormSubmit: performance.now() - formSubmitStartTime.current,
178
+ taskInteractionId: funnelInteractionId,
179
+ taskFlowType: props.funnelFlowType,
180
+ };
181
+ onFunnelComplete(taskCompletionDataProps);
162
182
  funnelState.current = 'complete';
163
183
  }
164
184
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"analytics-funnel.js","sourceRoot":"","sources":["../../../../../src/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 { PACKAGE_VERSION } from '../../environment';\nimport { useDebounceCallback } from '../../hooks/use-debounce-callback';\nimport { useUniqueId } from '../../hooks/use-unique-id';\nimport { useVisualRefresh } from '../../hooks/use-visual-mode';\nimport { nodeBelongs } from '../../utils/node-belongs';\nimport {\n FunnelContext,\n FunnelContextValue,\n FunnelState,\n FunnelStepContext,\n FunnelStepContextValue,\n FunnelSubStepContext,\n FunnelSubStepContextValue,\n} from '../context/analytics-context';\nimport { useFunnel, useFunnelStep } from '../hooks/use-funnel';\nimport { FunnelMetrics } from '../index';\nimport {\n AnalyticsMetadata,\n FunnelStartProps,\n FunnelStepProps,\n StepConfiguration,\n SubStepConfiguration,\n} from '../interfaces';\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.4';\n\ninterface AnalyticsFunnelProps {\n children?: React.ReactNode;\n stepConfiguration?: StepConfiguration[];\n funnelNameSelectors?: string[];\n funnelType: FunnelStartProps['funnelType'];\n optionalStepNumbers: FunnelStartProps['optionalStepNumbers'];\n totalFunnelSteps: FunnelStartProps['totalFunnelSteps'];\n funnelIdentifier?: AnalyticsMetadata['instanceIdentifier'];\n funnelFlowType?: AnalyticsMetadata['flowType'];\n funnelErrorContext?: AnalyticsMetadata['errorContext'];\n funnelResourceType?: AnalyticsMetadata['resourceType'];\n}\n\nexport const AnalyticsFunnel = (props: AnalyticsFunnelProps) => {\n const { isInFunnel } = useFunnel();\n /*\n If the current funnel component is a Form (i.e. single-page funnel), it should\n defer its funnel-handling to a parent Form element, if present.\n Wizards (i.e. multi-page funnels) always take highest precedence for handling funnels,\n and do not defer to any other element.\n */\n if (isInFunnel && props.funnelType === 'single-page') {\n return <>{props.children}</>;\n }\n\n return <InnerAnalyticsFunnel {...props} />;\n};\nexport const CREATION_EDIT_FLOW_DONE_EVENT_NAME = 'awsui-creation-edit-flow-done';\nconst dispatchCreateEditFlowDoneEvent = () => {\n try {\n window.top?.document.dispatchEvent(new Event(CREATION_EDIT_FLOW_DONE_EVENT_NAME));\n } catch {\n // probably because of cross-origin error, then do not dispatch the event\n }\n};\n\nconst onFunnelCancelled = ({\n funnelInteractionId,\n funnelIdentifier,\n}: {\n funnelInteractionId: string;\n funnelIdentifier?: string;\n}) => {\n FunnelMetrics.funnelCancelled({ funnelInteractionId, funnelIdentifier });\n};\n\nconst onFunnelComplete = ({\n funnelInteractionId,\n funnelIdentifier,\n}: {\n funnelInteractionId: string;\n funnelIdentifier?: string;\n}) => {\n FunnelMetrics.funnelComplete({ funnelInteractionId, funnelIdentifier });\n dispatchCreateEditFlowDoneEvent();\n};\n\nfunction evaluateSelectors(selectors: string[], defaultSelector: string) {\n for (const selector of selectors) {\n const element = document.querySelector(selector);\n if (element) {\n return selector;\n }\n }\n\n return defaultSelector;\n}\n\nconst InnerAnalyticsFunnel = ({ children, stepConfiguration, ...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 funnelNameSelector = useRef<string>(getFunnelNameSelector());\n const errorCount = useRef<number>(0);\n const loadingButtonCount = useRef<number>(0);\n const wizardCount = 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 /*\n We run this effect with a delay, in order to detect whether this funnel contains a Wizard.\n If it does contain a Wizard, that Wizard should take precedence for handling the funnel, and\n this current funnel component should do nothing.\n */\n let funnelInteractionId: string;\n const handle = setTimeout(() => {\n funnelNameSelector.current = evaluateSelectors(props.funnelNameSelectors || [], getFunnelNameSelector());\n\n if (props.funnelType === 'single-page' && wizardCount.current > 0) {\n return;\n }\n\n // Reset the state, in case the component was re-mounted.\n funnelState.current = 'default';\n\n const singleStepFlowStepConfiguration = [\n {\n number: 1,\n isOptional: false,\n name: getNameFromSelector(funnelNameSelector.current) ?? '',\n stepIdentifier: props.funnelIdentifier,\n },\n ];\n\n funnelInteractionId = FunnelMetrics.funnelStart({\n funnelIdentifier: props.funnelIdentifier,\n flowType: props.funnelFlowType,\n funnelNameSelector: funnelNameSelector.current,\n optionalStepNumbers: props.optionalStepNumbers,\n funnelType: props.funnelType,\n totalFunnelSteps: props.totalFunnelSteps,\n componentVersion: PACKAGE_VERSION,\n componentTheme: isVisualRefresh ? 'vr' : 'classic',\n funnelVersion: FUNNEL_VERSION,\n stepConfiguration: stepConfiguration ?? singleStepFlowStepConfiguration,\n });\n\n setFunnelInteractionId(funnelInteractionId);\n }, 1);\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 clearTimeout(handle);\n if (props.funnelType === 'single-page' && wizardCount.current > 0) {\n return;\n }\n\n if (funnelState.current === 'validating') {\n // Finish the validation phase early.\n onFunnelComplete({ funnelInteractionId, funnelIdentifier: props.funnelIdentifier });\n funnelState.current = 'complete';\n }\n\n if (funnelState.current === 'complete') {\n FunnelMetrics.funnelSuccessful({ funnelInteractionId, funnelIdentifier: props.funnelIdentifier });\n } else {\n onFunnelCancelled({ funnelInteractionId, funnelIdentifier: props.funnelIdentifier });\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 onFunnelComplete({ 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 funnelIdentifier: props.funnelIdentifier,\n funnelFlowType: props.funnelFlowType,\n funnelErrorContext: props.funnelErrorContext,\n setFunnelInteractionId,\n funnelType: props.funnelType,\n optionalStepNumbers: props.optionalStepNumbers,\n totalFunnelSteps: props.totalFunnelSteps,\n funnelNameSelector: funnelNameSelector.current,\n funnelSubmit,\n funnelCancel,\n submissionAttempt,\n funnelNextOrSubmitAttempt,\n funnelState,\n errorCount,\n loadingButtonCount,\n latestFocusCleanupFunction,\n isInFunnel: true,\n wizardCount,\n };\n\n return <FunnelContext.Provider value={funnelContextValue}>{children}</FunnelContext.Provider>;\n};\n\ninterface AnalyticsFunnelStepProps {\n stepIdentifier?: AnalyticsMetadata['instanceIdentifier'];\n stepErrorContext?: AnalyticsMetadata['errorContext'];\n children?: React.ReactNode | ((props: FunnelStepContextValue) => React.ReactNode);\n stepNameSelector?: FunnelStepProps['stepNameSelector'];\n stepNumber: FunnelStepProps['stepNumber'];\n}\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 return <InnerAnalyticsFunnelStep {...props} key={props.stepNumber} />;\n};\n\nfunction getSubStepConfiguration(): SubStepConfiguration[] {\n const subSteps = Array.from(document.querySelectorAll<HTMLElement>(getSubStepAllSelector()));\n\n const subStepConfiguration = subSteps.map((substep, index) => {\n const subStepIdentifier = (substep as any)?.__awsuiMetadata__?.analytics?.instanceIdentifier;\n\n const name = substep.querySelector<HTMLElement>(getSubStepNameSelector())?.innerText?.trim() ?? '';\n\n return {\n name,\n number: index + 1,\n subStepIdentifier,\n };\n });\n return subStepConfiguration;\n}\n\nfunction useStepChangeListener(stepNumber: number, handler: (stepConfiguration: SubStepConfiguration[]) => void) {\n const subStepConfiguration = useRef(new Map<number, SubStepConfiguration[] | undefined>());\n /*\n Chosen so that it's hopefully shorter than a user interaction, but gives enough time for the\n amount of containers to stabilise.\n */\n const SUBSTEP_CHANGE_DEBOUNCE = 50;\n\n const listenForSubStepChanges = useRef(false);\n useEffect(() => {\n // We prevent emitting the event on the first render.\n const handle = setTimeout(() => (listenForSubStepChanges.current = true), SUBSTEP_CHANGE_DEBOUNCE);\n\n return () => {\n clearTimeout(handle);\n listenForSubStepChanges.current = false;\n };\n }, []);\n\n useEffect(() => {\n const handle = setTimeout(\n () => subStepConfiguration.current.set(stepNumber, getSubStepConfiguration()),\n SUBSTEP_CHANGE_DEBOUNCE\n );\n return () => {\n clearTimeout(handle);\n };\n }, [stepNumber]);\n\n /* We debounce this handler, so that multiple containers can change at once without causing \n too many events. */\n const stepChangeCallback = useDebounceCallback(() => {\n // We don't want to emit the event after the component has been unmounted.\n if (!listenForSubStepChanges.current) {\n return;\n }\n\n subStepConfiguration.current.set(stepNumber, getSubStepConfiguration());\n handler(subStepConfiguration.current.get(stepNumber)!);\n }, SUBSTEP_CHANGE_DEBOUNCE);\n\n return { onStepChange: stepChangeCallback, subStepConfiguration };\n}\n\nconst InnerAnalyticsFunnelStep = ({\n children,\n stepNumber,\n stepIdentifier,\n stepErrorContext,\n ...rest\n}: AnalyticsFunnelStepProps) => {\n const { funnelInteractionId, funnelIdentifier, funnelNameSelector, funnelState, funnelType } = useFunnel();\n const parentStep = useFunnelStep();\n const parentStepExists = parentStep.isInStep;\n const parentStepFunnelInteractionId = parentStep.funnelInteractionId;\n\n const funnelStepProps = { [DATA_ATTR_FUNNEL_STEP]: stepNumber };\n\n const subStepCount = useRef<number>(0);\n\n const stepNameSelector = rest.stepNameSelector || funnelNameSelector;\n const { onStepChange, subStepConfiguration } = useStepChangeListener(stepNumber, subStepConfiguration => {\n if (!funnelInteractionId) {\n return;\n }\n\n FunnelMetrics.funnelStepChange({\n stepIdentifier,\n funnelIdentifier,\n funnelInteractionId,\n stepNumber,\n stepNameSelector,\n subStepAllSelector: getSubStepAllSelector(),\n totalSubSteps: subStepCount.current,\n subStepConfiguration,\n });\n });\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 if (!funnelInteractionId) {\n // This step is not inside an active funnel.\n return;\n }\n if (parentStepExists && parentStepFunnelInteractionId) {\n /*\n This step is inside another step, which already reports events as\n part of an active funnel (i.e. that step is not a parent of a Wizard).\n Thus, this current step does not need to report any events.\n */\n return;\n }\n\n const stepName = getNameFromSelector(stepNameSelector);\n\n if (funnelState.current === 'default') {\n FunnelMetrics.funnelStepStart({\n stepIdentifier,\n funnelIdentifier,\n funnelInteractionId,\n stepNumber,\n stepName,\n stepNameSelector,\n subStepAllSelector: getSubStepAllSelector(),\n totalSubSteps: subStepCount.current,\n subStepConfiguration: getSubStepConfiguration(),\n });\n }\n\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n if (funnelState.current !== 'cancelled') {\n FunnelMetrics.funnelStepComplete({\n funnelIdentifier,\n funnelInteractionId,\n stepIdentifier,\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 }, [\n stepIdentifier,\n funnelIdentifier,\n funnelInteractionId,\n stepNumber,\n stepNameSelector,\n funnelState,\n parentStepExists,\n funnelType,\n parentStepFunnelInteractionId,\n ]);\n\n const contextValue: FunnelStepContextValue = {\n stepIdentifier,\n stepNumber,\n stepNameSelector,\n funnelStepProps,\n subStepCount,\n isInStep: true,\n funnelInteractionId,\n onStepChange,\n subStepConfiguration,\n stepErrorContext,\n };\n\n /*\n If this step is inside another step which already reports events as part of an active\n funnel (i.e. that step is not a parent of a Wizard), the current step becomes invisible\n in the hierarchy by passing the context of its parent through.\n */\n const effectiveContextValue = parentStepExists && parentStepFunnelInteractionId ? parentStep : contextValue;\n\n return (\n <FunnelStepContext.Provider value={effectiveContextValue}>\n {typeof children === 'function' ? children(effectiveContextValue) : children}\n </FunnelStepContext.Provider>\n );\n};\ninterface AnalyticsFunnelSubStepProps {\n subStepIdentifier?: AnalyticsMetadata['instanceIdentifier'];\n subStepErrorContext?: AnalyticsMetadata['errorContext'];\n children?: React.ReactNode | ((props: FunnelSubStepContextValue) => React.ReactNode);\n}\n\nexport const AnalyticsFunnelSubStep = ({\n children,\n subStepIdentifier,\n subStepErrorContext,\n}: 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, onStepChange } = 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 subStepIdentifier,\n subStepErrorContext,\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 onStepChange();\n\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n subStepCount.current--;\n onStepChange();\n };\n }\n }, [isNested, subStepCount, onStepChange]);\n\n const context = isNested ? inheritedContext : newContext;\n\n useEffect(() => {\n if (isNested || !subStepRef.current) {\n return;\n }\n\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 || !document.activeElement || !nodeBelongs(subStepRef.current, 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 isNested,\n subStepRef,\n ]);\n\n return (\n <FunnelSubStepContext.Provider value={context}>\n {typeof children === 'function' ? children(context) : children}\n </FunnelSubStepContext.Provider>\n );\n};\n"]}
1
+ {"version":3,"file":"analytics-funnel.js","sourceRoot":"","sources":["../../../../../src/internal/analytics/components/analytics-funnel.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEvE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EACL,aAAa,EAGb,iBAAiB,EAEjB,oBAAoB,GAErB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAS7D,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAEtB,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC;AAepC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAA2B,EAAE,EAAE;IAC7D,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,EAAE,CAAC;IACnC;;;;;MAKE;IACF,IAAI,UAAU,IAAI,KAAK,CAAC,UAAU,KAAK,aAAa,EAAE;QACpD,OAAO,0CAAG,KAAK,CAAC,QAAQ,CAAI,CAAC;KAC9B;IAED,OAAO,oBAAC,oBAAoB,oBAAK,KAAK,EAAI,CAAC;AAC7C,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,kCAAkC,GAAG,+BAA+B,CAAC;AAClF,MAAM,+BAA+B,GAAG,GAAG,EAAE;;IAC3C,IAAI;QACF,MAAA,MAAM,CAAC,GAAG,0CAAE,QAAQ,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;KACnF;IAAC,WAAM;QACN,yEAAyE;KAC1E;AACH,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,EACzB,mBAAmB,EACnB,gBAAgB,GAIjB,EAAE,EAAE;IACH,aAAa,CAAC,eAAe,CAAC,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAC3E,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,uBAAgD,EAAE,EAAE;IAC5E,aAAa,CAAC,cAAc,CAAC;QAC3B,mBAAmB,EAAE,uBAAuB,CAAC,iBAAiB;QAC9D,gBAAgB,EAAE,uBAAuB,CAAC,cAAc;KACzD,CAAC,CAAC;IACH,kBAAkB,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,CAAC;IAC/D,+BAA+B,EAAE,CAAC;AACpC,CAAC,CAAC;AAEF,SAAS,iBAAiB,CAAC,SAAmB,EAAE,eAAuB;IACrE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;QAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,OAAO,EAAE;YACX,OAAO,QAAQ,CAAC;SACjB;KACF;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,oBAAoB,GAAG,CAAC,EAA+D,EAAE,EAAE;QAAnE,EAAE,QAAQ,EAAE,iBAAiB,OAAkC,EAA7B,KAAK,cAAvC,iCAAyC,CAAF;IACnE,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,CAAC;IAC3E,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,eAAe,GAAG,gBAAgB,EAAE,CAAC;IAC3C,MAAM,WAAW,GAAG,MAAM,CAAc,SAAS,CAAC,CAAC;IACnD,MAAM,kBAAkB,GAAG,MAAM,CAAS,qBAAqB,EAAE,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;IACrC,MAAM,kBAAkB,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;IACtC,MAAM,0BAA0B,GAAG,MAAM,CAA2B,SAAS,CAAC,CAAC;IAC/E,MAAM,mBAAmB,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;IAC9C,uFAAuF;IACvF,8FAA8F;IAC9F,0DAA0D;IAC1D,0EAA0E;IAC1E,EAAE;IACF,iFAAiF;IACjF,kGAAkG;IAClG,EAAE;IACF,4GAA4G;IAC5G,4CAA4C;IAC5C,SAAS,CAAC,GAAG,EAAE;QACb;;;;UAIE;QACF,IAAI,mBAA2B,CAAC;QAChC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE;;YAC7B,kBAAkB,CAAC,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,mBAAmB,IAAI,EAAE,EAAE,qBAAqB,EAAE,CAAC,CAAC;YACzG,IAAI,KAAK,CAAC,UAAU,KAAK,aAAa,IAAI,WAAW,CAAC,OAAO,GAAG,CAAC,EAAE;gBACjE,OAAO;aACR;YAED,yDAAyD;YACzD,WAAW,CAAC,OAAO,GAAG,SAAS,CAAC;YAEhC,MAAM,+BAA+B,GAAG;gBACtC;oBACE,MAAM,EAAE,CAAC;oBACT,UAAU,EAAE,KAAK;oBACjB,IAAI,EAAE,MAAA,mBAAmB,CAAC,kBAAkB,CAAC,OAAO,CAAC,mCAAI,EAAE;oBAC3D,cAAc,EAAE,KAAK,CAAC,gBAAgB;iBACvC;aACF,CAAC;YAEF,mBAAmB,GAAG,aAAa,CAAC,WAAW,CAAC;gBAC9C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;gBACxC,QAAQ,EAAE,KAAK,CAAC,cAAc;gBAC9B,kBAAkB,EAAE,kBAAkB,CAAC,OAAO;gBAC9C,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;gBAC9C,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;gBACxC,gBAAgB,EAAE,eAAe;gBACjC,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBAClD,aAAa,EAAE,cAAc;gBAC7B,iBAAiB,EAAE,iBAAiB,aAAjB,iBAAiB,cAAjB,iBAAiB,GAAI,+BAA+B;aACxE,CAAC,CAAC;YAEH,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;QAC9C,CAAC,EAAE,CAAC,CAAC,CAAC;QAEN;;UAEE;QACF,gDAAgD;QAChD,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,MAAM,CAAC,CAAC;YACrB,IAAI,KAAK,CAAC,UAAU,KAAK,aAAa,IAAI,WAAW,CAAC,OAAO,GAAG,CAAC,EAAE;gBACjE,OAAO;aACR;YACD,IAAI,WAAW,CAAC,OAAO,KAAK,YAAY,EAAE;gBACxC,qCAAqC;gBACrC,MAAM,uBAAuB,GAA4B;oBACvD,cAAc,EAAE,KAAK,CAAC,gBAAgB;oBACtC,QAAQ,EAAE,KAAK,CAAC,UAAU;oBAC1B,4BAA4B,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,mBAAmB,CAAC,OAAO;oBAC7E,iBAAiB,EAAE,mBAAmB;oBACtC,YAAY,EAAE,KAAK,CAAC,cAAc;iBACnC,CAAC;gBACF,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;gBAC1C,WAAW,CAAC,OAAO,GAAG,UAAU,CAAC;aAClC;YAED,IAAI,WAAW,CAAC,OAAO,KAAK,UAAU,EAAE;gBACtC,aAAa,CAAC,gBAAgB,CAAC,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC;aACnG;iBAAM;gBACL,iBAAiB,CAAC,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC;gBACrF,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC;aACnC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,+CAA+C;IAE/C,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,WAAW,CAAC,OAAO,GAAG,YAAY,CAAC;QACnC,mBAAmB,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAChD;;;;;UAKE;QACF,MAAM,qBAAqB,GAAG,EAAE,CAAC;QACjC;;WAEG;QACH,MAAM,kBAAkB,GAAG,GAAG,CAAC;QAE/B,MAAM,oBAAoB,GAAG,GAAG,EAAE;YAChC,IAAI,WAAW,CAAC,OAAO,KAAK,UAAU,EAAE;gBACtC,OAAO;aACR;YAED,IAAI,kBAAkB,CAAC,OAAO,GAAG,CAAC,EAAE;gBAClC,UAAU,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;gBACrD,OAAO;aACR;YAED,IAAI,UAAU,CAAC,OAAO,KAAK,CAAC,EAAE;gBAC5B;;kBAEE;gBACF,MAAM,uBAAuB,GAA4B;oBACvD,cAAc,EAAE,KAAK,CAAC,gBAAgB;oBACtC,QAAQ,EAAE,KAAK,CAAC,UAAU;oBAC1B,4BAA4B,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,mBAAmB,CAAC,OAAO;oBAC7E,iBAAiB,EAAE,mBAAmB;oBACtC,YAAY,EAAE,KAAK,CAAC,cAAc;iBACnC,CAAC;gBACF,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;gBAC1C,WAAW,CAAC,OAAO,GAAG,UAAU,CAAC;aAClC;iBAAM;gBACL,WAAW,CAAC,OAAO,GAAG,SAAS,CAAC;aACjC;QACH,CAAC,CAAC;QACF,UAAU,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;IAC1D,CAAC,CAAC;IAEF,MAAM,yBAAyB,GAAG,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAEzE,MAAM,YAAY,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IAE9B,MAAM,kBAAkB,GAAuB;QAC7C,mBAAmB;QACnB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;QAC5C,sBAAsB;QACtB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;QAC9C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,kBAAkB,EAAE,kBAAkB,CAAC,OAAO;QAC9C,YAAY;QACZ,YAAY;QACZ,iBAAiB;QACjB,yBAAyB;QACzB,WAAW;QACX,UAAU;QACV,kBAAkB;QAClB,0BAA0B;QAC1B,UAAU,EAAE,IAAI;QAChB,WAAW;KACZ,CAAC;IAEF,OAAO,oBAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,kBAAkB,IAAG,QAAQ,CAA0B,CAAC;AAChG,CAAC,CAAC;AAUF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAA+B,EAAE,EAAE;IACrE;;;OAGG;IACH,OAAO,oBAAC,wBAAwB,oBAAK,KAAK,IAAE,GAAG,EAAE,KAAK,CAAC,UAAU,IAAI,CAAC;AACxE,CAAC,CAAC;AAEF,SAAS,uBAAuB;IAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAc,qBAAqB,EAAE,CAAC,CAAC,CAAC;IAE7F,MAAM,oBAAoB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;;QAC3D,MAAM,iBAAiB,GAAG,MAAA,MAAC,OAAe,aAAf,OAAO,uBAAP,OAAO,CAAU,iBAAiB,0CAAE,SAAS,0CAAE,kBAAkB,CAAC;QAE7F,MAAM,IAAI,GAAG,MAAA,MAAA,MAAA,OAAO,CAAC,aAAa,CAAc,sBAAsB,EAAE,CAAC,0CAAE,SAAS,0CAAE,IAAI,EAAE,mCAAI,EAAE,CAAC;QAEnG,OAAO;YACL,IAAI;YACJ,MAAM,EAAE,KAAK,GAAG,CAAC;YACjB,iBAAiB;SAClB,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,SAAS,qBAAqB,CAAC,UAAkB,EAAE,OAA4D;IAC7G,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,GAAG,EAA8C,CAAC,CAAC;IAC3F;;;MAGE;IACF,MAAM,uBAAuB,GAAG,EAAE,CAAC;IAEnC,MAAM,uBAAuB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9C,SAAS,CAAC,GAAG,EAAE;QACb,qDAAqD;QACrD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,uBAAuB,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,uBAAuB,CAAC,CAAC;QAEnG,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,MAAM,CAAC,CAAC;YACrB,uBAAuB,CAAC,OAAO,GAAG,KAAK,CAAC;QAC1C,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,UAAU,CACvB,GAAG,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,uBAAuB,EAAE,CAAC,EAC7E,uBAAuB,CACxB,CAAC;QACF,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB;uBACmB;IACnB,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,GAAG,EAAE;QAClD,0EAA0E;QAC1E,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE;YACpC,OAAO;SACR;QAED,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,uBAAuB,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,CAAC;IACzD,CAAC,EAAE,uBAAuB,CAAC,CAAC;IAE5B,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,CAAC;AACpE,CAAC;AAED,MAAM,wBAAwB,GAAG,CAAC,EAMP,EAAE,EAAE;QANG,EAChC,QAAQ,EACR,UAAU,EACV,cAAc,EACd,gBAAgB,OAES,EADtB,IAAI,cALyB,gEAMjC,CADQ;IAEP,MAAM,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,SAAS,EAAE,CAAC;IAC3G,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC;IAC7C,MAAM,6BAA6B,GAAG,UAAU,CAAC,mBAAmB,CAAC;IAErE,MAAM,eAAe,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,CAAC;IAEhE,MAAM,YAAY,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;IAEvC,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,kBAAkB,CAAC;IACrE,MAAM,EAAE,YAAY,EAAE,oBAAoB,EAAE,GAAG,qBAAqB,CAAC,UAAU,EAAE,oBAAoB,CAAC,EAAE;QACtG,IAAI,CAAC,mBAAmB,EAAE;YACxB,OAAO;SACR;QAED,aAAa,CAAC,gBAAgB,CAAC;YAC7B,cAAc;YACd,gBAAgB;YAChB,mBAAmB;YACnB,UAAU;YACV,gBAAgB;YAChB,kBAAkB,EAAE,qBAAqB,EAAE;YAC3C,aAAa,EAAE,YAAY,CAAC,OAAO;YACnC,oBAAoB;SACrB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,8FAA8F;IAC9F,gHAAgH;IAChH,oEAAoE;IACpE,8HAA8H;IAC9H,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,mBAAmB,EAAE;YACxB,4CAA4C;YAC5C,OAAO;SACR;QACD,IAAI,gBAAgB,IAAI,6BAA6B,EAAE;YACrD;;;;eAIG;YACH,OAAO;SACR;QAED,MAAM,QAAQ,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QAEvD,IAAI,WAAW,CAAC,OAAO,KAAK,SAAS,EAAE;YACrC,aAAa,CAAC,eAAe,CAAC;gBAC5B,cAAc;gBACd,gBAAgB;gBAChB,mBAAmB;gBACnB,UAAU;gBACV,QAAQ;gBACR,gBAAgB;gBAChB,kBAAkB,EAAE,qBAAqB,EAAE;gBAC3C,aAAa,EAAE,YAAY,CAAC,OAAO;gBACnC,oBAAoB,EAAE,uBAAuB,EAAE;aAChD,CAAC,CAAC;SACJ;QAED,OAAO,GAAG,EAAE;YACV,uDAAuD;YACvD,IAAI,WAAW,CAAC,OAAO,KAAK,WAAW,EAAE;gBACvC,aAAa,CAAC,kBAAkB,CAAC;oBAC/B,gBAAgB;oBAChB,mBAAmB;oBACnB,cAAc;oBACd,UAAU;oBACV,QAAQ;oBACR,gBAAgB;oBAChB,kBAAkB,EAAE,qBAAqB,EAAE;oBAC3C,uDAAuD;oBACvD,aAAa,EAAE,YAAY,CAAC,OAAO;iBACpC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC;IACJ,CAAC,EAAE;QACD,cAAc;QACd,gBAAgB;QAChB,mBAAmB;QACnB,UAAU;QACV,gBAAgB;QAChB,WAAW;QACX,gBAAgB;QAChB,UAAU;QACV,6BAA6B;KAC9B,CAAC,CAAC;IAEH,MAAM,YAAY,GAA2B;QAC3C,cAAc;QACd,UAAU;QACV,gBAAgB;QAChB,eAAe;QACf,YAAY;QACZ,QAAQ,EAAE,IAAI;QACd,mBAAmB;QACnB,YAAY;QACZ,oBAAoB;QACpB,gBAAgB;KACjB,CAAC;IAEF;;;;MAIE;IACF,MAAM,qBAAqB,GAAG,gBAAgB,IAAI,6BAA6B,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC;IAE5G,OAAO,CACL,oBAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,qBAAqB,IACrD,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,QAAQ,CACjD,CAC9B,CAAC;AACJ,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACrC,QAAQ,EACR,iBAAiB,EACjB,mBAAmB,GACS,EAAE,EAAE;IAChC,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,eAAe,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACvD,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,aAAa,EAAE,CAAC;IACvD,MAAM,YAAY,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;IAC5C,MAAM,gBAAgB,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;IAChD,MAAM,oBAAoB,GAAG,MAAM,CAA2B,SAAS,CAAC,CAAC;IACzE,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,GAAG,SAAS,EAAE,CAAC;IACzD,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,aAAa,EAAE,CAAC;IAEzD,MAAM,UAAU,GAA8B;QAC5C,iBAAiB;QACjB,mBAAmB;QACnB,eAAe;QACf,mBAAmB;QACnB,SAAS;QACT,UAAU;QACV,YAAY;QACZ,gBAAgB;QAChB,oBAAoB;QACpB,eAAe,EAAE,KAAK;KACvB,CAAC;IAEF,MAAM,gBAAgB,mCAAQ,UAAU,CAAC,oBAAoB,CAAC,KAAE,eAAe,EAAE,IAAI,GAAE,CAAC;IAExF,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAErD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ,EAAE;YACb,YAAY,CAAC,OAAO,EAAE,CAAC;YACvB,YAAY,EAAE,CAAC;YAEf,OAAO,GAAG,EAAE;gBACV,uDAAuD;gBACvD,YAAY,CAAC,OAAO,EAAE,CAAC;gBACvB,YAAY,EAAE,CAAC;YACjB,CAAC,CAAC;SACH;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;IAE3C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC;IAEzD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;YACnC,OAAO;SACR;QAED,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QAExD,MAAM,SAAS,GAAG,GAAS,EAAE;;YAC3B,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;YAE7B,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;gBAC7B,OAAO;aACR;YAED;;;;;cAKE;YACF,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAEzC,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE;gBAC9G,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC;gBAEjC;;;mBAGG;gBACH,MAAA,oBAAoB,CAAC,OAAO,oEAAI,CAAC;aAClC;QACH,CAAC,CAAA,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAClD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC9C,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACrD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACnD,CAAC,CAAC;IACJ,CAAC,EAAE;QACD,mBAAmB;QACnB,WAAW;QACX,gBAAgB;QAChB,UAAU;QACV,mBAAmB;QACnB,eAAe;QACf,oBAAoB;QACpB,QAAQ;QACR,UAAU;KACX,CAAC,CAAC;IAEH,OAAO,CACL,oBAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,IAC1C,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAChC,CACjC,CAAC;AACJ,CAAC,CAAC","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 { PACKAGE_VERSION } from '../../environment';\nimport { useDebounceCallback } from '../../hooks/use-debounce-callback';\nimport { useUniqueId } from '../../hooks/use-unique-id';\nimport { useVisualRefresh } from '../../hooks/use-visual-mode';\nimport { nodeBelongs } from '../../utils/node-belongs';\nimport {\n FunnelContext,\n FunnelContextValue,\n FunnelState,\n FunnelStepContext,\n FunnelStepContextValue,\n FunnelSubStepContext,\n FunnelSubStepContextValue,\n} from '../context/analytics-context';\nimport { useFunnel, useFunnelStep } from '../hooks/use-funnel';\nimport { FunnelMetrics, PerformanceMetrics } from '../index';\nimport {\n AnalyticsMetadata,\n FunnelStartProps,\n FunnelStepProps,\n StepConfiguration,\n SubStepConfiguration,\n TaskCompletionDataProps,\n} from '../interfaces';\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.4';\n\ninterface AnalyticsFunnelProps {\n children?: React.ReactNode;\n stepConfiguration?: StepConfiguration[];\n funnelNameSelectors?: string[];\n funnelType: FunnelStartProps['funnelType'];\n optionalStepNumbers: FunnelStartProps['optionalStepNumbers'];\n totalFunnelSteps: FunnelStartProps['totalFunnelSteps'];\n funnelIdentifier?: AnalyticsMetadata['instanceIdentifier'];\n funnelFlowType?: AnalyticsMetadata['flowType'];\n funnelErrorContext?: AnalyticsMetadata['errorContext'];\n funnelResourceType?: AnalyticsMetadata['resourceType'];\n}\n\nexport const AnalyticsFunnel = (props: AnalyticsFunnelProps) => {\n const { isInFunnel } = useFunnel();\n /*\n If the current funnel component is a Form (i.e. single-page funnel), it should\n defer its funnel-handling to a parent Form element, if present.\n Wizards (i.e. multi-page funnels) always take highest precedence for handling funnels,\n and do not defer to any other element.\n */\n if (isInFunnel && props.funnelType === 'single-page') {\n return <>{props.children}</>;\n }\n\n return <InnerAnalyticsFunnel {...props} />;\n};\nexport const CREATION_EDIT_FLOW_DONE_EVENT_NAME = 'awsui-creation-edit-flow-done';\nconst dispatchCreateEditFlowDoneEvent = () => {\n try {\n window.top?.document.dispatchEvent(new Event(CREATION_EDIT_FLOW_DONE_EVENT_NAME));\n } catch {\n // probably because of cross-origin error, then do not dispatch the event\n }\n};\n\nconst onFunnelCancelled = ({\n funnelInteractionId,\n funnelIdentifier,\n}: {\n funnelInteractionId: string;\n funnelIdentifier?: string;\n}) => {\n FunnelMetrics.funnelCancelled({ funnelInteractionId, funnelIdentifier });\n};\n\nconst onFunnelComplete = (taskCompletionDataProps: TaskCompletionDataProps) => {\n FunnelMetrics.funnelComplete({\n funnelInteractionId: taskCompletionDataProps.taskInteractionId,\n funnelIdentifier: taskCompletionDataProps.taskIdentifier,\n });\n PerformanceMetrics.taskCompletionData(taskCompletionDataProps);\n dispatchCreateEditFlowDoneEvent();\n};\n\nfunction evaluateSelectors(selectors: string[], defaultSelector: string) {\n for (const selector of selectors) {\n const element = document.querySelector(selector);\n if (element) {\n return selector;\n }\n }\n\n return defaultSelector;\n}\n\nconst InnerAnalyticsFunnel = ({ children, stepConfiguration, ...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 funnelNameSelector = useRef<string>(getFunnelNameSelector());\n const errorCount = useRef<number>(0);\n const loadingButtonCount = useRef<number>(0);\n const wizardCount = useRef<number>(0);\n const latestFocusCleanupFunction = useRef<undefined | (() => void)>(undefined);\n const formSubmitStartTime = useRef<number>(0);\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 /*\n We run this effect with a delay, in order to detect whether this funnel contains a Wizard.\n If it does contain a Wizard, that Wizard should take precedence for handling the funnel, and\n this current funnel component should do nothing.\n */\n let funnelInteractionId: string;\n const handle = setTimeout(() => {\n funnelNameSelector.current = evaluateSelectors(props.funnelNameSelectors || [], getFunnelNameSelector());\n if (props.funnelType === 'single-page' && wizardCount.current > 0) {\n return;\n }\n\n // Reset the state, in case the component was re-mounted.\n funnelState.current = 'default';\n\n const singleStepFlowStepConfiguration = [\n {\n number: 1,\n isOptional: false,\n name: getNameFromSelector(funnelNameSelector.current) ?? '',\n stepIdentifier: props.funnelIdentifier,\n },\n ];\n\n funnelInteractionId = FunnelMetrics.funnelStart({\n funnelIdentifier: props.funnelIdentifier,\n flowType: props.funnelFlowType,\n funnelNameSelector: funnelNameSelector.current,\n optionalStepNumbers: props.optionalStepNumbers,\n funnelType: props.funnelType,\n totalFunnelSteps: props.totalFunnelSteps,\n componentVersion: PACKAGE_VERSION,\n componentTheme: isVisualRefresh ? 'vr' : 'classic',\n funnelVersion: FUNNEL_VERSION,\n stepConfiguration: stepConfiguration ?? singleStepFlowStepConfiguration,\n });\n\n setFunnelInteractionId(funnelInteractionId);\n }, 1);\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 clearTimeout(handle);\n if (props.funnelType === 'single-page' && wizardCount.current > 0) {\n return;\n }\n if (funnelState.current === 'validating') {\n // Finish the validation phase early.\n const taskCompletionDataProps: TaskCompletionDataProps = {\n taskIdentifier: props.funnelIdentifier,\n taskType: props.funnelType,\n timeToRespondAfterFormSubmit: performance.now() - formSubmitStartTime.current,\n taskInteractionId: funnelInteractionId,\n taskFlowType: props.funnelFlowType,\n };\n onFunnelComplete(taskCompletionDataProps);\n funnelState.current = 'complete';\n }\n\n if (funnelState.current === 'complete') {\n FunnelMetrics.funnelSuccessful({ funnelInteractionId, funnelIdentifier: props.funnelIdentifier });\n } else {\n onFunnelCancelled({ funnelInteractionId, funnelIdentifier: props.funnelIdentifier });\n funnelState.current = 'cancelled';\n }\n };\n }, []);\n /* eslint-enable react-hooks/exhaustive-deps */\n\n const funnelSubmit = () => {\n funnelState.current = 'validating';\n formSubmitStartTime.current = performance.now();\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 const taskCompletionDataProps: TaskCompletionDataProps = {\n taskIdentifier: props.funnelIdentifier,\n taskType: props.funnelType,\n timeToRespondAfterFormSubmit: performance.now() - formSubmitStartTime.current,\n taskInteractionId: funnelInteractionId,\n taskFlowType: props.funnelFlowType,\n };\n onFunnelComplete(taskCompletionDataProps);\n funnelState.current = 'complete';\n } else {\n funnelState.current = 'default';\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 funnelIdentifier: props.funnelIdentifier,\n funnelFlowType: props.funnelFlowType,\n funnelErrorContext: props.funnelErrorContext,\n setFunnelInteractionId,\n funnelType: props.funnelType,\n optionalStepNumbers: props.optionalStepNumbers,\n totalFunnelSteps: props.totalFunnelSteps,\n funnelNameSelector: funnelNameSelector.current,\n funnelSubmit,\n funnelCancel,\n submissionAttempt,\n funnelNextOrSubmitAttempt,\n funnelState,\n errorCount,\n loadingButtonCount,\n latestFocusCleanupFunction,\n isInFunnel: true,\n wizardCount,\n };\n\n return <FunnelContext.Provider value={funnelContextValue}>{children}</FunnelContext.Provider>;\n};\n\ninterface AnalyticsFunnelStepProps {\n stepIdentifier?: AnalyticsMetadata['instanceIdentifier'];\n stepErrorContext?: AnalyticsMetadata['errorContext'];\n children?: React.ReactNode | ((props: FunnelStepContextValue) => React.ReactNode);\n stepNameSelector?: FunnelStepProps['stepNameSelector'];\n stepNumber: FunnelStepProps['stepNumber'];\n}\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 return <InnerAnalyticsFunnelStep {...props} key={props.stepNumber} />;\n};\n\nfunction getSubStepConfiguration(): SubStepConfiguration[] {\n const subSteps = Array.from(document.querySelectorAll<HTMLElement>(getSubStepAllSelector()));\n\n const subStepConfiguration = subSteps.map((substep, index) => {\n const subStepIdentifier = (substep as any)?.__awsuiMetadata__?.analytics?.instanceIdentifier;\n\n const name = substep.querySelector<HTMLElement>(getSubStepNameSelector())?.innerText?.trim() ?? '';\n\n return {\n name,\n number: index + 1,\n subStepIdentifier,\n };\n });\n return subStepConfiguration;\n}\n\nfunction useStepChangeListener(stepNumber: number, handler: (stepConfiguration: SubStepConfiguration[]) => void) {\n const subStepConfiguration = useRef(new Map<number, SubStepConfiguration[] | undefined>());\n /*\n Chosen so that it's hopefully shorter than a user interaction, but gives enough time for the\n amount of containers to stabilise.\n */\n const SUBSTEP_CHANGE_DEBOUNCE = 50;\n\n const listenForSubStepChanges = useRef(false);\n useEffect(() => {\n // We prevent emitting the event on the first render.\n const handle = setTimeout(() => (listenForSubStepChanges.current = true), SUBSTEP_CHANGE_DEBOUNCE);\n\n return () => {\n clearTimeout(handle);\n listenForSubStepChanges.current = false;\n };\n }, []);\n\n useEffect(() => {\n const handle = setTimeout(\n () => subStepConfiguration.current.set(stepNumber, getSubStepConfiguration()),\n SUBSTEP_CHANGE_DEBOUNCE\n );\n return () => {\n clearTimeout(handle);\n };\n }, [stepNumber]);\n\n /* We debounce this handler, so that multiple containers can change at once without causing \n too many events. */\n const stepChangeCallback = useDebounceCallback(() => {\n // We don't want to emit the event after the component has been unmounted.\n if (!listenForSubStepChanges.current) {\n return;\n }\n\n subStepConfiguration.current.set(stepNumber, getSubStepConfiguration());\n handler(subStepConfiguration.current.get(stepNumber)!);\n }, SUBSTEP_CHANGE_DEBOUNCE);\n\n return { onStepChange: stepChangeCallback, subStepConfiguration };\n}\n\nconst InnerAnalyticsFunnelStep = ({\n children,\n stepNumber,\n stepIdentifier,\n stepErrorContext,\n ...rest\n}: AnalyticsFunnelStepProps) => {\n const { funnelInteractionId, funnelIdentifier, funnelNameSelector, funnelState, funnelType } = useFunnel();\n const parentStep = useFunnelStep();\n const parentStepExists = parentStep.isInStep;\n const parentStepFunnelInteractionId = parentStep.funnelInteractionId;\n\n const funnelStepProps = { [DATA_ATTR_FUNNEL_STEP]: stepNumber };\n\n const subStepCount = useRef<number>(0);\n\n const stepNameSelector = rest.stepNameSelector || funnelNameSelector;\n const { onStepChange, subStepConfiguration } = useStepChangeListener(stepNumber, subStepConfiguration => {\n if (!funnelInteractionId) {\n return;\n }\n\n FunnelMetrics.funnelStepChange({\n stepIdentifier,\n funnelIdentifier,\n funnelInteractionId,\n stepNumber,\n stepNameSelector,\n subStepAllSelector: getSubStepAllSelector(),\n totalSubSteps: subStepCount.current,\n subStepConfiguration,\n });\n });\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 if (!funnelInteractionId) {\n // This step is not inside an active funnel.\n return;\n }\n if (parentStepExists && parentStepFunnelInteractionId) {\n /*\n This step is inside another step, which already reports events as\n part of an active funnel (i.e. that step is not a parent of a Wizard).\n Thus, this current step does not need to report any events.\n */\n return;\n }\n\n const stepName = getNameFromSelector(stepNameSelector);\n\n if (funnelState.current === 'default') {\n FunnelMetrics.funnelStepStart({\n stepIdentifier,\n funnelIdentifier,\n funnelInteractionId,\n stepNumber,\n stepName,\n stepNameSelector,\n subStepAllSelector: getSubStepAllSelector(),\n totalSubSteps: subStepCount.current,\n subStepConfiguration: getSubStepConfiguration(),\n });\n }\n\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n if (funnelState.current !== 'cancelled') {\n FunnelMetrics.funnelStepComplete({\n funnelIdentifier,\n funnelInteractionId,\n stepIdentifier,\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 }, [\n stepIdentifier,\n funnelIdentifier,\n funnelInteractionId,\n stepNumber,\n stepNameSelector,\n funnelState,\n parentStepExists,\n funnelType,\n parentStepFunnelInteractionId,\n ]);\n\n const contextValue: FunnelStepContextValue = {\n stepIdentifier,\n stepNumber,\n stepNameSelector,\n funnelStepProps,\n subStepCount,\n isInStep: true,\n funnelInteractionId,\n onStepChange,\n subStepConfiguration,\n stepErrorContext,\n };\n\n /*\n If this step is inside another step which already reports events as part of an active\n funnel (i.e. that step is not a parent of a Wizard), the current step becomes invisible\n in the hierarchy by passing the context of its parent through.\n */\n const effectiveContextValue = parentStepExists && parentStepFunnelInteractionId ? parentStep : contextValue;\n\n return (\n <FunnelStepContext.Provider value={effectiveContextValue}>\n {typeof children === 'function' ? children(effectiveContextValue) : children}\n </FunnelStepContext.Provider>\n );\n};\ninterface AnalyticsFunnelSubStepProps {\n subStepIdentifier?: AnalyticsMetadata['instanceIdentifier'];\n subStepErrorContext?: AnalyticsMetadata['errorContext'];\n children?: React.ReactNode | ((props: FunnelSubStepContextValue) => React.ReactNode);\n}\n\nexport const AnalyticsFunnelSubStep = ({\n children,\n subStepIdentifier,\n subStepErrorContext,\n}: 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, onStepChange } = 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 subStepIdentifier,\n subStepErrorContext,\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 onStepChange();\n\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n subStepCount.current--;\n onStepChange();\n };\n }\n }, [isNested, subStepCount, onStepChange]);\n\n const context = isNested ? inheritedContext : newContext;\n\n useEffect(() => {\n if (isNested || !subStepRef.current) {\n return;\n }\n\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 || !document.activeElement || !nodeBelongs(subStepRef.current, 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 isNested,\n subStepRef,\n ]);\n\n return (\n <FunnelSubStepContext.Provider value={context}>\n {typeof children === 'function' ? children(context) : children}\n </FunnelSubStepContext.Provider>\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/internal/analytics/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEtF,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,cAAc,QAE7D;AACD,wBAAgB,qBAAqB,CAAC,kBAAkB,EAAE,mBAAmB,QAE5E;AACD,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE,iBAAiB,QAEtE;AAED;;;GAGG;AACH,eAAO,IAAI,aAAa,EAAE,cAoBzB,CAAC;AAEF;;;GAGG;AACH,eAAO,IAAI,kBAAkB,EAAE,mBAE9B,CAAC;AAEF,eAAO,IAAI,gBAAgB,EAAE,iBAI5B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/internal/analytics/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEtF,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,cAAc,QAE7D;AACD,wBAAgB,qBAAqB,CAAC,kBAAkB,EAAE,mBAAmB,QAE5E;AACD,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE,iBAAiB,QAEtE;AAED;;;GAGG;AACH,eAAO,IAAI,aAAa,EAAE,cAoBzB,CAAC;AAEF;;;GAGG;AACH,eAAO,IAAI,kBAAkB,EAAE,mBAG9B,CAAC;AAEF,eAAO,IAAI,gBAAgB,EAAE,iBAI5B,CAAC"}
@@ -40,6 +40,7 @@ export let FunnelMetrics = {
40
40
  */
41
41
  export let PerformanceMetrics = {
42
42
  tableInteraction() { },
43
+ taskCompletionData() { },
43
44
  };
44
45
  export let ComponentMetrics = {
45
46
  componentMounted() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/internal/analytics/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,0BAA0B;AAI1B,MAAM,UAAU,gBAAgB,CAAC,aAA6B;IAC5D,aAAa,GAAG,aAAa,CAAC;AAChC,CAAC;AACD,MAAM,UAAU,qBAAqB,CAAC,kBAAuC;IAC3E,kBAAkB,GAAG,kBAAkB,CAAC;AAC1C,CAAC;AACD,MAAM,UAAU,mBAAmB,CAAC,gBAAmC;IACrE,gBAAgB,GAAG,gBAAgB,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,IAAI,aAAa,GAAmB;IACzC,WAAW;QACT,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,WAAW,KAAU,CAAC;IACtB,cAAc,KAAU,CAAC;IACzB,gBAAgB,KAAU,CAAC;IAC3B,eAAe,KAAU,CAAC;IAC1B,YAAY,KAAU,CAAC;IACvB,eAAe,KAAU,CAAC;IAC1B,kBAAkB,KAAU,CAAC;IAC7B,oBAAoB,KAAU,CAAC;IAC/B,eAAe,KAAU,CAAC;IAC1B,gBAAgB,KAAU,CAAC;IAC3B,kBAAkB,KAAU,CAAC;IAC7B,qBAAqB,KAAU,CAAC;IAChC,kBAAkB,KAAU,CAAC;IAC7B,mBAAmB,KAAU,CAAC;IAC9B,sBAAsB,KAAU,CAAC;CAClC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,IAAI,kBAAkB,GAAwB;IACnD,gBAAgB,KAAU,CAAC;CAC5B,CAAC;AAEF,MAAM,CAAC,IAAI,gBAAgB,GAAsB;IAC/C,gBAAgB;QACd,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/* istanbul ignore file */\n\nimport { IComponentMetrics, IFunnelMetrics, IPerformanceMetrics } from './interfaces';\n\nexport function setFunnelMetrics(funnelMetrics: IFunnelMetrics) {\n FunnelMetrics = funnelMetrics;\n}\nexport function setPerformanceMetrics(performanceMetrics: IPerformanceMetrics) {\n PerformanceMetrics = performanceMetrics;\n}\nexport function setComponentMetrics(componentMetrics: IComponentMetrics) {\n ComponentMetrics = componentMetrics;\n}\n\n/**\n * This is a stub implementation of the FunnelMetrics interface and will be replaced during\n * build time with the actual implementation.\n */\nexport let FunnelMetrics: IFunnelMetrics = {\n funnelStart(): string {\n return '';\n },\n\n funnelError(): void {},\n funnelComplete(): void {},\n funnelSuccessful(): void {},\n funnelCancelled(): void {},\n funnelChange(): void {},\n funnelStepStart(): void {},\n funnelStepComplete(): void {},\n funnelStepNavigation(): void {},\n funnelStepError(): void {},\n funnelStepChange(): void {},\n funnelSubStepStart(): void {},\n funnelSubStepComplete(): void {},\n funnelSubStepError(): void {},\n helpPanelInteracted(): void {},\n externalLinkInteracted(): void {},\n};\n\n/**\n * This is a stub implementation of the PerformanceMetrics interface and will be replaced during\n * build time with the actual implementation.\n */\nexport let PerformanceMetrics: IPerformanceMetrics = {\n tableInteraction(): void {},\n};\n\nexport let ComponentMetrics: IComponentMetrics = {\n componentMounted(): string {\n return '';\n },\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/internal/analytics/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,0BAA0B;AAI1B,MAAM,UAAU,gBAAgB,CAAC,aAA6B;IAC5D,aAAa,GAAG,aAAa,CAAC;AAChC,CAAC;AACD,MAAM,UAAU,qBAAqB,CAAC,kBAAuC;IAC3E,kBAAkB,GAAG,kBAAkB,CAAC;AAC1C,CAAC;AACD,MAAM,UAAU,mBAAmB,CAAC,gBAAmC;IACrE,gBAAgB,GAAG,gBAAgB,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,IAAI,aAAa,GAAmB;IACzC,WAAW;QACT,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,WAAW,KAAU,CAAC;IACtB,cAAc,KAAU,CAAC;IACzB,gBAAgB,KAAU,CAAC;IAC3B,eAAe,KAAU,CAAC;IAC1B,YAAY,KAAU,CAAC;IACvB,eAAe,KAAU,CAAC;IAC1B,kBAAkB,KAAU,CAAC;IAC7B,oBAAoB,KAAU,CAAC;IAC/B,eAAe,KAAU,CAAC;IAC1B,gBAAgB,KAAU,CAAC;IAC3B,kBAAkB,KAAU,CAAC;IAC7B,qBAAqB,KAAU,CAAC;IAChC,kBAAkB,KAAU,CAAC;IAC7B,mBAAmB,KAAU,CAAC;IAC9B,sBAAsB,KAAU,CAAC;CAClC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,IAAI,kBAAkB,GAAwB;IACnD,gBAAgB,KAAU,CAAC;IAC3B,kBAAkB,KAAU,CAAC;CAC9B,CAAC;AAEF,MAAM,CAAC,IAAI,gBAAgB,GAAsB;IAC/C,gBAAgB;QACd,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/* istanbul ignore file */\n\nimport { IComponentMetrics, IFunnelMetrics, IPerformanceMetrics } from './interfaces';\n\nexport function setFunnelMetrics(funnelMetrics: IFunnelMetrics) {\n FunnelMetrics = funnelMetrics;\n}\nexport function setPerformanceMetrics(performanceMetrics: IPerformanceMetrics) {\n PerformanceMetrics = performanceMetrics;\n}\nexport function setComponentMetrics(componentMetrics: IComponentMetrics) {\n ComponentMetrics = componentMetrics;\n}\n\n/**\n * This is a stub implementation of the FunnelMetrics interface and will be replaced during\n * build time with the actual implementation.\n */\nexport let FunnelMetrics: IFunnelMetrics = {\n funnelStart(): string {\n return '';\n },\n\n funnelError(): void {},\n funnelComplete(): void {},\n funnelSuccessful(): void {},\n funnelCancelled(): void {},\n funnelChange(): void {},\n funnelStepStart(): void {},\n funnelStepComplete(): void {},\n funnelStepNavigation(): void {},\n funnelStepError(): void {},\n funnelStepChange(): void {},\n funnelSubStepStart(): void {},\n funnelSubStepComplete(): void {},\n funnelSubStepError(): void {},\n helpPanelInteracted(): void {},\n externalLinkInteracted(): void {},\n};\n\n/**\n * This is a stub implementation of the PerformanceMetrics interface and will be replaced during\n * build time with the actual implementation.\n */\nexport let PerformanceMetrics: IPerformanceMetrics = {\n tableInteraction(): void {},\n taskCompletionData(): void {},\n};\n\nexport let ComponentMetrics: IComponentMetrics = {\n componentMounted(): string {\n return '';\n },\n};\n"]}
@@ -111,8 +111,18 @@ export interface IFunnelMetrics {
111
111
  helpPanelInteracted: FunnelMethod<FunnelLinkInteractionProps>;
112
112
  externalLinkInteracted: FunnelMethod<FunnelLinkInteractionProps>;
113
113
  }
114
+ export interface TaskCompletionDataProps {
115
+ timeToRespondAfterFormSubmit: number;
116
+ taskInteractionId: string;
117
+ taskIdentifier?: string;
118
+ taskFlowType?: string;
119
+ taskType?: FunnelType;
120
+ completionMetadata?: string;
121
+ }
122
+ export type TaskCompletionDataMethod = (props: TaskCompletionDataProps) => void;
114
123
  export interface IPerformanceMetrics {
115
124
  tableInteraction: TableInteractionMethod;
125
+ taskCompletionData: TaskCompletionDataMethod;
116
126
  }
117
127
  export interface ComponentMountedProps {
118
128
  componentName: string;