@cloudscape-design/components-themeable 3.0.358 → 3.0.360

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 (431) hide show
  1. package/lib/internal/manifest.json +1 -1
  2. package/lib/internal/scss/code-editor/ace-editor.scss +1 -1
  3. package/lib/internal/scss/code-editor/styles.scss +20 -9
  4. package/lib/internal/scss/flashbar/styles.scss +6 -2
  5. package/lib/internal/scss/status-indicator/styles.scss +1 -1
  6. package/lib/internal/template/alert/styles.css.js +19 -19
  7. package/lib/internal/template/alert/styles.scoped.css +64 -64
  8. package/lib/internal/template/alert/styles.selectors.js +19 -19
  9. package/lib/internal/template/annotation-context/annotation/styles.css.js +24 -24
  10. package/lib/internal/template/annotation-context/annotation/styles.scoped.css +46 -46
  11. package/lib/internal/template/annotation-context/annotation/styles.selectors.js +24 -24
  12. package/lib/internal/template/app-layout/content-wrapper/styles.css.js +3 -3
  13. package/lib/internal/template/app-layout/content-wrapper/styles.scoped.css +10 -10
  14. package/lib/internal/template/app-layout/content-wrapper/styles.selectors.js +3 -3
  15. package/lib/internal/template/app-layout/drawer/styles.css.js +10 -10
  16. package/lib/internal/template/app-layout/drawer/styles.scoped.css +28 -28
  17. package/lib/internal/template/app-layout/drawer/styles.selectors.js +10 -10
  18. package/lib/internal/template/app-layout/mobile-toolbar/styles.css.js +8 -8
  19. package/lib/internal/template/app-layout/mobile-toolbar/styles.scoped.css +18 -18
  20. package/lib/internal/template/app-layout/mobile-toolbar/styles.selectors.js +8 -8
  21. package/lib/internal/template/app-layout/notifications/styles.css.js +3 -3
  22. package/lib/internal/template/app-layout/notifications/styles.scoped.css +7 -7
  23. package/lib/internal/template/app-layout/notifications/styles.selectors.js +3 -3
  24. package/lib/internal/template/app-layout/styles.css.js +17 -17
  25. package/lib/internal/template/app-layout/styles.scoped.css +30 -30
  26. package/lib/internal/template/app-layout/styles.selectors.js +17 -17
  27. package/lib/internal/template/app-layout/toggles/styles.css.js +2 -2
  28. package/lib/internal/template/app-layout/toggles/styles.scoped.css +16 -16
  29. package/lib/internal/template/app-layout/toggles/styles.selectors.js +2 -2
  30. package/lib/internal/template/app-layout/visual-refresh/styles.css.js +69 -69
  31. package/lib/internal/template/app-layout/visual-refresh/styles.scoped.css +267 -267
  32. package/lib/internal/template/app-layout/visual-refresh/styles.selectors.js +69 -69
  33. package/lib/internal/template/area-chart/styles.css.js +6 -6
  34. package/lib/internal/template/area-chart/styles.scoped.css +16 -16
  35. package/lib/internal/template/area-chart/styles.selectors.js +6 -6
  36. package/lib/internal/template/attribute-editor/styles.css.js +14 -14
  37. package/lib/internal/template/attribute-editor/styles.scoped.css +48 -48
  38. package/lib/internal/template/attribute-editor/styles.selectors.js +14 -14
  39. package/lib/internal/template/badge/styles.css.js +5 -5
  40. package/lib/internal/template/badge/styles.scoped.css +20 -20
  41. package/lib/internal/template/badge/styles.selectors.js +5 -5
  42. package/lib/internal/template/box/styles.css.js +189 -189
  43. package/lib/internal/template/box/styles.scoped.css +418 -418
  44. package/lib/internal/template/box/styles.selectors.js +189 -189
  45. package/lib/internal/template/breadcrumb-group/item/styles.css.js +9 -9
  46. package/lib/internal/template/breadcrumb-group/item/styles.scoped.css +28 -28
  47. package/lib/internal/template/breadcrumb-group/item/styles.selectors.js +9 -9
  48. package/lib/internal/template/breadcrumb-group/styles.css.js +7 -7
  49. package/lib/internal/template/breadcrumb-group/styles.scoped.css +22 -22
  50. package/lib/internal/template/breadcrumb-group/styles.selectors.js +7 -7
  51. package/lib/internal/template/button/styles.css.js +20 -20
  52. package/lib/internal/template/button/styles.scoped.css +472 -472
  53. package/lib/internal/template/button/styles.selectors.js +20 -20
  54. package/lib/internal/template/button-dropdown/category-elements/styles.css.js +13 -13
  55. package/lib/internal/template/button-dropdown/category-elements/styles.scoped.css +50 -50
  56. package/lib/internal/template/button-dropdown/category-elements/styles.selectors.js +13 -13
  57. package/lib/internal/template/button-dropdown/interfaces.d.ts +2 -15
  58. package/lib/internal/template/button-dropdown/interfaces.d.ts.map +1 -1
  59. package/lib/internal/template/button-dropdown/interfaces.js.map +1 -1
  60. package/lib/internal/template/button-dropdown/item-element/styles.css.js +14 -14
  61. package/lib/internal/template/button-dropdown/item-element/styles.scoped.css +42 -42
  62. package/lib/internal/template/button-dropdown/item-element/styles.selectors.js +14 -14
  63. package/lib/internal/template/button-dropdown/mobile-expandable-group/styles.css.js +5 -5
  64. package/lib/internal/template/button-dropdown/mobile-expandable-group/styles.scoped.css +10 -10
  65. package/lib/internal/template/button-dropdown/mobile-expandable-group/styles.selectors.js +5 -5
  66. package/lib/internal/template/button-dropdown/styles.css.js +14 -14
  67. package/lib/internal/template/button-dropdown/styles.scoped.css +32 -32
  68. package/lib/internal/template/button-dropdown/styles.selectors.js +14 -14
  69. package/lib/internal/template/calendar/styles.css.js +18 -18
  70. package/lib/internal/template/calendar/styles.scoped.css +89 -89
  71. package/lib/internal/template/calendar/styles.selectors.js +18 -18
  72. package/lib/internal/template/cards/styles.css.js +38 -38
  73. package/lib/internal/template/cards/styles.scoped.css +99 -99
  74. package/lib/internal/template/cards/styles.selectors.js +38 -38
  75. package/lib/internal/template/checkbox/styles.css.js +3 -3
  76. package/lib/internal/template/checkbox/styles.scoped.css +16 -16
  77. package/lib/internal/template/checkbox/styles.selectors.js +3 -3
  78. package/lib/internal/template/code-editor/resizable-box/styles.css.js +3 -3
  79. package/lib/internal/template/code-editor/resizable-box/styles.scoped.css +11 -11
  80. package/lib/internal/template/code-editor/resizable-box/styles.selectors.js +3 -3
  81. package/lib/internal/template/code-editor/styles.css.js +32 -32
  82. package/lib/internal/template/code-editor/styles.scoped.css +278 -269
  83. package/lib/internal/template/code-editor/styles.selectors.js +32 -32
  84. package/lib/internal/template/collection-preferences/content-display/styles.css.js +11 -11
  85. package/lib/internal/template/collection-preferences/content-display/styles.scoped.css +42 -42
  86. package/lib/internal/template/collection-preferences/content-display/styles.selectors.js +11 -11
  87. package/lib/internal/template/collection-preferences/styles.css.js +37 -37
  88. package/lib/internal/template/collection-preferences/styles.scoped.css +81 -81
  89. package/lib/internal/template/collection-preferences/styles.selectors.js +37 -37
  90. package/lib/internal/template/column-layout/flexible-column-layout/styles.css.js +5 -5
  91. package/lib/internal/template/column-layout/flexible-column-layout/styles.scoped.css +8 -8
  92. package/lib/internal/template/column-layout/flexible-column-layout/styles.selectors.js +5 -5
  93. package/lib/internal/template/column-layout/styles.css.js +13 -13
  94. package/lib/internal/template/column-layout/styles.scoped.css +55 -55
  95. package/lib/internal/template/column-layout/styles.selectors.js +13 -13
  96. package/lib/internal/template/container/styles.css.js +28 -28
  97. package/lib/internal/template/container/styles.scoped.css +94 -94
  98. package/lib/internal/template/container/styles.selectors.js +28 -28
  99. package/lib/internal/template/content-layout/styles.css.js +7 -7
  100. package/lib/internal/template/content-layout/styles.scoped.css +17 -17
  101. package/lib/internal/template/content-layout/styles.selectors.js +7 -7
  102. package/lib/internal/template/date-picker/styles.css.js +7 -7
  103. package/lib/internal/template/date-picker/styles.scoped.css +16 -16
  104. package/lib/internal/template/date-picker/styles.selectors.js +7 -7
  105. package/lib/internal/template/date-range-picker/calendar/grids/styles.css.js +25 -25
  106. package/lib/internal/template/date-range-picker/calendar/grids/styles.scoped.css +95 -95
  107. package/lib/internal/template/date-range-picker/calendar/grids/styles.selectors.js +25 -25
  108. package/lib/internal/template/date-range-picker/relative-range/styles.css.js +9 -9
  109. package/lib/internal/template/date-range-picker/relative-range/styles.scoped.css +16 -16
  110. package/lib/internal/template/date-range-picker/relative-range/styles.selectors.js +9 -9
  111. package/lib/internal/template/date-range-picker/styles.css.js +38 -38
  112. package/lib/internal/template/date-range-picker/styles.scoped.css +76 -76
  113. package/lib/internal/template/date-range-picker/styles.selectors.js +38 -38
  114. package/lib/internal/template/expandable-section/styles.css.js +29 -29
  115. package/lib/internal/template/expandable-section/styles.scoped.css +106 -106
  116. package/lib/internal/template/expandable-section/styles.selectors.js +29 -29
  117. package/lib/internal/template/file-upload/dropzone/styles.css.js +2 -2
  118. package/lib/internal/template/file-upload/dropzone/styles.scoped.css +9 -9
  119. package/lib/internal/template/file-upload/dropzone/styles.selectors.js +2 -2
  120. package/lib/internal/template/file-upload/file-input/styles.css.js +4 -4
  121. package/lib/internal/template/file-upload/file-input/styles.scoped.css +14 -14
  122. package/lib/internal/template/file-upload/file-input/styles.selectors.js +4 -4
  123. package/lib/internal/template/file-upload/file-option/styles.css.js +7 -7
  124. package/lib/internal/template/file-upload/file-option/styles.scoped.css +10 -10
  125. package/lib/internal/template/file-upload/file-option/styles.selectors.js +7 -7
  126. package/lib/internal/template/file-upload/styles.css.js +2 -2
  127. package/lib/internal/template/file-upload/styles.scoped.css +4 -4
  128. package/lib/internal/template/file-upload/styles.selectors.js +2 -2
  129. package/lib/internal/template/flashbar/collapsible-flashbar.d.ts.map +1 -1
  130. package/lib/internal/template/flashbar/collapsible-flashbar.js +8 -5
  131. package/lib/internal/template/flashbar/collapsible-flashbar.js.map +1 -1
  132. package/lib/internal/template/flashbar/flash.d.ts.map +1 -1
  133. package/lib/internal/template/flashbar/flash.js +2 -1
  134. package/lib/internal/template/flashbar/flash.js.map +1 -1
  135. package/lib/internal/template/flashbar/non-collapsible-flashbar.d.ts.map +1 -1
  136. package/lib/internal/template/flashbar/non-collapsible-flashbar.js +1 -2
  137. package/lib/internal/template/flashbar/non-collapsible-flashbar.js.map +1 -1
  138. package/lib/internal/template/flashbar/styles.css.js +46 -46
  139. package/lib/internal/template/flashbar/styles.scoped.css +250 -246
  140. package/lib/internal/template/flashbar/styles.selectors.js +46 -46
  141. package/lib/internal/template/flashbar/utils.js +1 -1
  142. package/lib/internal/template/flashbar/utils.js.map +1 -1
  143. package/lib/internal/template/form/styles.css.js +9 -9
  144. package/lib/internal/template/form/styles.scoped.css +20 -20
  145. package/lib/internal/template/form/styles.selectors.js +9 -9
  146. package/lib/internal/template/form-field/styles.css.js +19 -19
  147. package/lib/internal/template/form-field/styles.scoped.css +52 -52
  148. package/lib/internal/template/form-field/styles.selectors.js +19 -19
  149. package/lib/internal/template/grid/styles.css.js +53 -53
  150. package/lib/internal/template/grid/styles.scoped.css +60 -60
  151. package/lib/internal/template/grid/styles.selectors.js +53 -53
  152. package/lib/internal/template/header/styles.css.js +33 -33
  153. package/lib/internal/template/header/styles.scoped.css +114 -114
  154. package/lib/internal/template/header/styles.selectors.js +33 -33
  155. package/lib/internal/template/help-panel/styles.css.js +4 -4
  156. package/lib/internal/template/help-panel/styles.scoped.css +172 -172
  157. package/lib/internal/template/help-panel/styles.selectors.js +4 -4
  158. package/lib/internal/template/hotspot/styles.css.js +7 -7
  159. package/lib/internal/template/hotspot/styles.scoped.css +10 -10
  160. package/lib/internal/template/hotspot/styles.selectors.js +7 -7
  161. package/lib/internal/template/i18n/index.d.ts +1 -1
  162. package/lib/internal/template/i18n/index.d.ts.map +1 -1
  163. package/lib/internal/template/i18n/index.js +1 -1
  164. package/lib/internal/template/i18n/index.js.map +1 -1
  165. package/lib/internal/template/i18n/provider.d.ts.map +1 -1
  166. package/lib/internal/template/i18n/provider.js +4 -2
  167. package/lib/internal/template/i18n/provider.js.map +1 -1
  168. package/lib/internal/template/i18n/testing.d.ts.map +1 -1
  169. package/lib/internal/template/i18n/testing.js +2 -0
  170. package/lib/internal/template/i18n/testing.js.map +1 -1
  171. package/lib/internal/template/icon/styles.css.js +21 -21
  172. package/lib/internal/template/icon/styles.scoped.css +81 -81
  173. package/lib/internal/template/icon/styles.selectors.js +21 -21
  174. package/lib/internal/template/input/styles.css.js +12 -12
  175. package/lib/internal/template/input/styles.scoped.css +73 -73
  176. package/lib/internal/template/input/styles.selectors.js +12 -12
  177. package/lib/internal/template/internal/analytics/components/analytics-funnel.d.ts.map +1 -1
  178. package/lib/internal/template/internal/analytics/components/analytics-funnel.js +50 -1
  179. package/lib/internal/template/internal/analytics/components/analytics-funnel.js.map +1 -1
  180. package/lib/internal/template/internal/analytics/context/analytics-context.d.ts +13 -0
  181. package/lib/internal/template/internal/analytics/context/analytics-context.d.ts.map +1 -1
  182. package/lib/internal/template/internal/analytics/context/analytics-context.js +4 -0
  183. package/lib/internal/template/internal/analytics/context/analytics-context.js.map +1 -1
  184. package/lib/internal/template/internal/analytics/hooks/use-funnel.d.ts +4 -0
  185. package/lib/internal/template/internal/analytics/hooks/use-funnel.d.ts.map +1 -1
  186. package/lib/internal/template/internal/analytics/hooks/use-funnel.js +73 -20
  187. package/lib/internal/template/internal/analytics/hooks/use-funnel.js.map +1 -1
  188. package/lib/internal/template/internal/base-component/styles.scoped.css +3153 -3005
  189. package/lib/internal/template/internal/components/abstract-switch/styles.css.js +13 -13
  190. package/lib/internal/template/internal/components/abstract-switch/styles.scoped.css +26 -26
  191. package/lib/internal/template/internal/components/abstract-switch/styles.selectors.js +13 -13
  192. package/lib/internal/template/internal/components/button-trigger/styles.css.js +9 -9
  193. package/lib/internal/template/internal/components/button-trigger/styles.scoped.css +63 -63
  194. package/lib/internal/template/internal/components/button-trigger/styles.selectors.js +9 -9
  195. package/lib/internal/template/internal/components/cartesian-chart/styles.css.js +27 -27
  196. package/lib/internal/template/internal/components/cartesian-chart/styles.scoped.css +41 -41
  197. package/lib/internal/template/internal/components/cartesian-chart/styles.selectors.js +27 -27
  198. package/lib/internal/template/internal/components/chart-filter/styles.css.js +3 -3
  199. package/lib/internal/template/internal/components/chart-filter/styles.scoped.css +7 -7
  200. package/lib/internal/template/internal/components/chart-filter/styles.selectors.js +3 -3
  201. package/lib/internal/template/internal/components/chart-legend/styles.css.js +6 -6
  202. package/lib/internal/template/internal/components/chart-legend/styles.scoped.css +23 -23
  203. package/lib/internal/template/internal/components/chart-legend/styles.selectors.js +6 -6
  204. package/lib/internal/template/internal/components/chart-plot/styles.css.js +5 -5
  205. package/lib/internal/template/internal/components/chart-plot/styles.scoped.css +6 -6
  206. package/lib/internal/template/internal/components/chart-plot/styles.selectors.js +5 -5
  207. package/lib/internal/template/internal/components/chart-popover/index.js +1 -1
  208. package/lib/internal/template/internal/components/chart-popover/index.js.map +1 -1
  209. package/lib/internal/template/internal/components/chart-popover/styles.css.js +3 -3
  210. package/lib/internal/template/internal/components/chart-popover/styles.scoped.css +9 -9
  211. package/lib/internal/template/internal/components/chart-popover/styles.selectors.js +3 -3
  212. package/lib/internal/template/internal/components/chart-series-details/styles.css.js +5 -5
  213. package/lib/internal/template/internal/components/chart-series-details/styles.scoped.css +20 -20
  214. package/lib/internal/template/internal/components/chart-series-details/styles.selectors.js +5 -5
  215. package/lib/internal/template/internal/components/chart-series-marker/styles.css.js +5 -5
  216. package/lib/internal/template/internal/components/chart-series-marker/styles.scoped.css +14 -14
  217. package/lib/internal/template/internal/components/chart-series-marker/styles.selectors.js +5 -5
  218. package/lib/internal/template/internal/components/chart-status-container/styles.css.js +2 -2
  219. package/lib/internal/template/internal/components/chart-status-container/styles.scoped.css +3 -3
  220. package/lib/internal/template/internal/components/chart-status-container/styles.selectors.js +2 -2
  221. package/lib/internal/template/internal/components/chart-wrapper/styles.css.js +9 -9
  222. package/lib/internal/template/internal/components/chart-wrapper/styles.scoped.css +15 -15
  223. package/lib/internal/template/internal/components/chart-wrapper/styles.selectors.js +9 -9
  224. package/lib/internal/template/internal/components/checkbox-icon/styles.css.js +7 -7
  225. package/lib/internal/template/internal/components/checkbox-icon/styles.scoped.css +18 -18
  226. package/lib/internal/template/internal/components/checkbox-icon/styles.selectors.js +7 -7
  227. package/lib/internal/template/internal/components/dark-ribbon/styles.css.js +2 -2
  228. package/lib/internal/template/internal/components/dark-ribbon/styles.scoped.css +4 -4
  229. package/lib/internal/template/internal/components/dark-ribbon/styles.selectors.js +2 -2
  230. package/lib/internal/template/internal/components/dropdown/interfaces.d.ts +8 -5
  231. package/lib/internal/template/internal/components/dropdown/interfaces.d.ts.map +1 -1
  232. package/lib/internal/template/internal/components/dropdown/interfaces.js.map +1 -1
  233. package/lib/internal/template/internal/components/dropdown/styles.css.js +20 -20
  234. package/lib/internal/template/internal/components/dropdown/styles.scoped.css +51 -51
  235. package/lib/internal/template/internal/components/dropdown/styles.selectors.js +20 -20
  236. package/lib/internal/template/internal/components/dropdown-footer/styles.css.js +3 -3
  237. package/lib/internal/template/internal/components/dropdown-footer/styles.scoped.css +9 -9
  238. package/lib/internal/template/internal/components/dropdown-footer/styles.selectors.js +3 -3
  239. package/lib/internal/template/internal/components/dropdown-status/styles.css.js +2 -2
  240. package/lib/internal/template/internal/components/dropdown-status/styles.scoped.css +8 -8
  241. package/lib/internal/template/internal/components/dropdown-status/styles.selectors.js +2 -2
  242. package/lib/internal/template/internal/components/filtering-token/styles.css.js +7 -7
  243. package/lib/internal/template/internal/components/filtering-token/styles.scoped.css +34 -34
  244. package/lib/internal/template/internal/components/filtering-token/styles.selectors.js +7 -7
  245. package/lib/internal/template/internal/components/handle/styles.css.js +2 -2
  246. package/lib/internal/template/internal/components/handle/styles.scoped.css +12 -12
  247. package/lib/internal/template/internal/components/handle/styles.selectors.js +2 -2
  248. package/lib/internal/template/internal/components/menu-dropdown/styles.css.js +7 -7
  249. package/lib/internal/template/internal/components/menu-dropdown/styles.scoped.css +32 -32
  250. package/lib/internal/template/internal/components/menu-dropdown/styles.selectors.js +7 -7
  251. package/lib/internal/template/internal/components/option/styles.css.js +17 -17
  252. package/lib/internal/template/internal/components/option/styles.scoped.css +47 -47
  253. package/lib/internal/template/internal/components/option/styles.selectors.js +17 -17
  254. package/lib/internal/template/internal/components/options-list/styles.css.js +2 -2
  255. package/lib/internal/template/internal/components/options-list/styles.scoped.css +7 -7
  256. package/lib/internal/template/internal/components/options-list/styles.selectors.js +2 -2
  257. package/lib/internal/template/internal/components/selectable-item/styles.css.js +16 -16
  258. package/lib/internal/template/internal/components/selectable-item/styles.scoped.css +70 -70
  259. package/lib/internal/template/internal/components/selectable-item/styles.selectors.js +16 -16
  260. package/lib/internal/template/internal/components/token-list/styles.css.js +9 -9
  261. package/lib/internal/template/internal/components/token-list/styles.scoped.css +40 -40
  262. package/lib/internal/template/internal/components/token-list/styles.selectors.js +9 -9
  263. package/lib/internal/template/internal/environment.js +1 -1
  264. package/lib/internal/template/internal/environment.json +1 -1
  265. package/lib/internal/template/internal/generated/styles/tokens.d.ts +1 -0
  266. package/lib/internal/template/internal/generated/styles/tokens.js +306 -305
  267. package/lib/internal/template/internal/generated/theming/index.cjs +1830 -821
  268. package/lib/internal/template/internal/generated/theming/index.cjs.d.ts +192 -0
  269. package/lib/internal/template/internal/generated/theming/index.d.ts +192 -0
  270. package/lib/internal/template/internal/generated/theming/index.js +1830 -821
  271. package/lib/internal/template/internal/utils/dom.d.ts +1 -1
  272. package/lib/internal/template/internal/utils/dom.d.ts.map +1 -1
  273. package/lib/internal/template/internal/utils/dom.js +1 -1
  274. package/lib/internal/template/internal/utils/dom.js.map +1 -1
  275. package/lib/internal/template/link/styles.css.js +20 -20
  276. package/lib/internal/template/link/styles.scoped.css +163 -163
  277. package/lib/internal/template/link/styles.selectors.js +20 -20
  278. package/lib/internal/template/mixed-line-bar-chart/styles.css.js +11 -11
  279. package/lib/internal/template/mixed-line-bar-chart/styles.scoped.css +24 -24
  280. package/lib/internal/template/mixed-line-bar-chart/styles.selectors.js +11 -11
  281. package/lib/internal/template/modal/styles.css.js +23 -23
  282. package/lib/internal/template/modal/styles.scoped.css +67 -67
  283. package/lib/internal/template/modal/styles.selectors.js +23 -23
  284. package/lib/internal/template/multiselect/styles.css.js +1 -1
  285. package/lib/internal/template/multiselect/styles.scoped.css +5 -5
  286. package/lib/internal/template/multiselect/styles.selectors.js +1 -1
  287. package/lib/internal/template/pagination/styles.css.js +9 -9
  288. package/lib/internal/template/pagination/styles.scoped.css +47 -47
  289. package/lib/internal/template/pagination/styles.selectors.js +9 -9
  290. package/lib/internal/template/pie-chart/index.d.ts.map +1 -1
  291. package/lib/internal/template/pie-chart/index.js +1 -2
  292. package/lib/internal/template/pie-chart/index.js.map +1 -1
  293. package/lib/internal/template/pie-chart/pie-chart.d.ts +1 -3
  294. package/lib/internal/template/pie-chart/pie-chart.d.ts.map +1 -1
  295. package/lib/internal/template/pie-chart/pie-chart.js +16 -17
  296. package/lib/internal/template/pie-chart/pie-chart.js.map +1 -1
  297. package/lib/internal/template/pie-chart/segments.d.ts +1 -2
  298. package/lib/internal/template/pie-chart/segments.d.ts.map +1 -1
  299. package/lib/internal/template/pie-chart/segments.js +2 -2
  300. package/lib/internal/template/pie-chart/segments.js.map +1 -1
  301. package/lib/internal/template/pie-chart/styles.css.js +27 -27
  302. package/lib/internal/template/pie-chart/styles.scoped.css +63 -63
  303. package/lib/internal/template/pie-chart/styles.selectors.js +27 -27
  304. package/lib/internal/template/popover/styles.css.js +50 -50
  305. package/lib/internal/template/popover/styles.scoped.css +104 -104
  306. package/lib/internal/template/popover/styles.selectors.js +50 -50
  307. package/lib/internal/template/progress-bar/styles.css.js +18 -18
  308. package/lib/internal/template/progress-bar/styles.scoped.css +58 -58
  309. package/lib/internal/template/progress-bar/styles.selectors.js +18 -18
  310. package/lib/internal/template/property-filter/styles.css.js +29 -29
  311. package/lib/internal/template/property-filter/styles.scoped.css +52 -52
  312. package/lib/internal/template/property-filter/styles.selectors.js +29 -29
  313. package/lib/internal/template/radio-group/styles.css.js +9 -9
  314. package/lib/internal/template/radio-group/styles.scoped.css +37 -37
  315. package/lib/internal/template/radio-group/styles.selectors.js +9 -9
  316. package/lib/internal/template/s3-resource-selector/s3-in-context/styles.css.js +7 -7
  317. package/lib/internal/template/s3-resource-selector/s3-in-context/styles.scoped.css +12 -12
  318. package/lib/internal/template/s3-resource-selector/s3-in-context/styles.selectors.js +7 -7
  319. package/lib/internal/template/segmented-control/styles.css.js +14 -14
  320. package/lib/internal/template/segmented-control/styles.scoped.css +78 -78
  321. package/lib/internal/template/segmented-control/styles.selectors.js +14 -14
  322. package/lib/internal/template/select/parts/styles.css.js +9 -9
  323. package/lib/internal/template/select/parts/styles.scoped.css +17 -17
  324. package/lib/internal/template/select/parts/styles.selectors.js +9 -9
  325. package/lib/internal/template/select/styles.css.js +1 -1
  326. package/lib/internal/template/select/styles.scoped.css +5 -5
  327. package/lib/internal/template/select/styles.selectors.js +1 -1
  328. package/lib/internal/template/side-navigation/styles.css.js +28 -28
  329. package/lib/internal/template/side-navigation/styles.scoped.css +92 -92
  330. package/lib/internal/template/side-navigation/styles.selectors.js +28 -28
  331. package/lib/internal/template/space-between/styles.css.js +23 -23
  332. package/lib/internal/template/space-between/styles.scoped.css +40 -40
  333. package/lib/internal/template/space-between/styles.selectors.js +23 -23
  334. package/lib/internal/template/spinner/styles.css.js +13 -13
  335. package/lib/internal/template/spinner/styles.scoped.css +35 -35
  336. package/lib/internal/template/spinner/styles.selectors.js +13 -13
  337. package/lib/internal/template/split-panel/styles.css.js +56 -56
  338. package/lib/internal/template/split-panel/styles.scoped.css +146 -146
  339. package/lib/internal/template/split-panel/styles.selectors.js +56 -56
  340. package/lib/internal/template/status-indicator/styles.css.js +22 -22
  341. package/lib/internal/template/status-indicator/styles.scoped.css +46 -46
  342. package/lib/internal/template/status-indicator/styles.selectors.js +22 -22
  343. package/lib/internal/template/table/body-cell/styles.css.js +28 -28
  344. package/lib/internal/template/table/body-cell/styles.scoped.css +155 -155
  345. package/lib/internal/template/table/body-cell/styles.selectors.js +28 -28
  346. package/lib/internal/template/table/body-cell/td-element.d.ts +3 -1
  347. package/lib/internal/template/table/body-cell/td-element.d.ts.map +1 -1
  348. package/lib/internal/template/table/body-cell/td-element.js +5 -7
  349. package/lib/internal/template/table/body-cell/td-element.js.map +1 -1
  350. package/lib/internal/template/table/header-cell/index.d.ts +2 -0
  351. package/lib/internal/template/table/header-cell/index.d.ts.map +1 -1
  352. package/lib/internal/template/table/header-cell/index.js +4 -3
  353. package/lib/internal/template/table/header-cell/index.js.map +1 -1
  354. package/lib/internal/template/table/header-cell/styles.css.js +24 -24
  355. package/lib/internal/template/table/header-cell/styles.scoped.css +93 -93
  356. package/lib/internal/template/table/header-cell/styles.selectors.js +24 -24
  357. package/lib/internal/template/table/header-cell/utils.d.ts +0 -1
  358. package/lib/internal/template/table/header-cell/utils.d.ts.map +1 -1
  359. package/lib/internal/template/table/header-cell/utils.js +0 -6
  360. package/lib/internal/template/table/header-cell/utils.js.map +1 -1
  361. package/lib/internal/template/table/internal.d.ts.map +1 -1
  362. package/lib/internal/template/table/internal.js +9 -8
  363. package/lib/internal/template/table/internal.js.map +1 -1
  364. package/lib/internal/template/table/resizer/styles.css.js +6 -6
  365. package/lib/internal/template/table/resizer/styles.scoped.css +27 -27
  366. package/lib/internal/template/table/resizer/styles.selectors.js +6 -6
  367. package/lib/internal/template/table/selection-control/styles.css.js +3 -3
  368. package/lib/internal/template/table/selection-control/styles.scoped.css +4 -4
  369. package/lib/internal/template/table/selection-control/styles.selectors.js +3 -3
  370. package/lib/internal/template/table/sticky-header.d.ts +2 -0
  371. package/lib/internal/template/table/sticky-header.d.ts.map +1 -1
  372. package/lib/internal/template/table/sticky-header.js +3 -2
  373. package/lib/internal/template/table/sticky-header.js.map +1 -1
  374. package/lib/internal/template/table/styles.css.js +34 -34
  375. package/lib/internal/template/table/styles.scoped.css +84 -84
  376. package/lib/internal/template/table/styles.selectors.js +34 -34
  377. package/lib/internal/template/table/table-role/index.d.ts +2 -0
  378. package/lib/internal/template/table/table-role/index.d.ts.map +1 -0
  379. package/lib/internal/template/table/table-role/index.js +4 -0
  380. package/lib/internal/template/table/table-role/index.js.map +1 -0
  381. package/lib/internal/template/table/table-role/table-role-helper.d.ts +22 -0
  382. package/lib/internal/template/table/table-role/table-role-helper.d.ts.map +1 -0
  383. package/lib/internal/template/table/table-role/table-role-helper.js +47 -0
  384. package/lib/internal/template/table/table-role/table-role-helper.js.map +1 -0
  385. package/lib/internal/template/table/thead.d.ts +2 -0
  386. package/lib/internal/template/table/thead.d.ts.map +1 -1
  387. package/lib/internal/template/table/thead.js +4 -3
  388. package/lib/internal/template/table/thead.js.map +1 -1
  389. package/lib/internal/template/tabs/styles.css.js +21 -21
  390. package/lib/internal/template/tabs/styles.scoped.css +86 -86
  391. package/lib/internal/template/tabs/styles.selectors.js +21 -21
  392. package/lib/internal/template/tag-editor/styles.css.js +3 -3
  393. package/lib/internal/template/tag-editor/styles.scoped.css +24 -24
  394. package/lib/internal/template/tag-editor/styles.selectors.js +3 -3
  395. package/lib/internal/template/text-content/styles.css.js +1 -1
  396. package/lib/internal/template/text-content/styles.scoped.css +130 -130
  397. package/lib/internal/template/text-content/styles.selectors.js +1 -1
  398. package/lib/internal/template/text-filter/styles.css.js +3 -3
  399. package/lib/internal/template/text-filter/styles.scoped.css +10 -10
  400. package/lib/internal/template/text-filter/styles.selectors.js +3 -3
  401. package/lib/internal/template/textarea/styles.css.js +4 -4
  402. package/lib/internal/template/textarea/styles.scoped.css +40 -40
  403. package/lib/internal/template/textarea/styles.selectors.js +4 -4
  404. package/lib/internal/template/tiles/styles.css.js +29 -29
  405. package/lib/internal/template/tiles/styles.scoped.css +128 -128
  406. package/lib/internal/template/tiles/styles.selectors.js +29 -29
  407. package/lib/internal/template/toggle/styles.css.js +8 -8
  408. package/lib/internal/template/toggle/styles.scoped.css +27 -27
  409. package/lib/internal/template/toggle/styles.selectors.js +8 -8
  410. package/lib/internal/template/token-group/styles.css.js +7 -7
  411. package/lib/internal/template/token-group/styles.scoped.css +42 -42
  412. package/lib/internal/template/token-group/styles.selectors.js +7 -7
  413. package/lib/internal/template/top-navigation/1.0-beta/styles.css.js +25 -25
  414. package/lib/internal/template/top-navigation/1.0-beta/styles.scoped.css +84 -84
  415. package/lib/internal/template/top-navigation/1.0-beta/styles.selectors.js +25 -25
  416. package/lib/internal/template/top-navigation/styles.css.js +47 -47
  417. package/lib/internal/template/top-navigation/styles.scoped.css +148 -148
  418. package/lib/internal/template/top-navigation/styles.selectors.js +47 -47
  419. package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/styles.css.js +20 -20
  420. package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/styles.scoped.css +43 -43
  421. package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/styles.selectors.js +20 -20
  422. package/lib/internal/template/tutorial-panel/components/tutorial-list/styles.css.js +18 -18
  423. package/lib/internal/template/tutorial-panel/components/tutorial-list/styles.scoped.css +50 -50
  424. package/lib/internal/template/tutorial-panel/components/tutorial-list/styles.selectors.js +18 -18
  425. package/lib/internal/template/tutorial-panel/styles.css.js +1 -1
  426. package/lib/internal/template/tutorial-panel/styles.scoped.css +6 -6
  427. package/lib/internal/template/tutorial-panel/styles.selectors.js +1 -1
  428. package/lib/internal/template/wizard/styles.css.js +31 -31
  429. package/lib/internal/template/wizard/styles.scoped.css +124 -124
  430. package/lib/internal/template/wizard/styles.selectors.js +31 -31
  431. package/package.json +1 -1
@@ -1,8 +1,9 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
+ import { __awaiter } from "tslib";
3
4
  import { useContext } from 'react';
4
5
  import { FunnelContext, FunnelStepContext, FunnelSubStepContext } from '../context/analytics-context';
5
- import { DATA_ATTR_FUNNEL_INTERACTION_ID, DATA_ATTR_FUNNEL_SUBSTEP, getSubStepAllSelector } from '../selectors';
6
+ import { DATA_ATTR_FUNNEL_INTERACTION_ID, DATA_ATTR_FUNNEL_SUBSTEP, getNameFromSelector, getSubStepAllSelector, } from '../selectors';
6
7
  import { FunnelMetrics } from '../';
7
8
  /**
8
9
  * Custom React Hook to manage and interact with FunnelSubStep.
@@ -16,39 +17,91 @@ import { FunnelMetrics } from '../';
16
17
  */
17
18
  export const useFunnelSubStep = () => {
18
19
  const context = useContext(FunnelSubStepContext);
19
- const { funnelInteractionId, funnelState } = useFunnel();
20
+ const { funnelInteractionId, funnelState, latestFocusCleanupFunction } = useFunnel();
20
21
  const { stepNumber, stepNameSelector } = useFunnelStep();
21
- const { subStepId, subStepSelector, subStepNameSelector, subStepRef, isNestedSubStep } = context;
22
+ const { subStepId, subStepSelector, subStepNameSelector, subStepRef, isNestedSubStep, mousePressed, isFocusedSubStep, focusCleanupFunction, } = context;
22
23
  if (isNestedSubStep) {
23
24
  return context;
24
25
  }
25
- const onFocus = (event) => {
26
- if (funnelInteractionId &&
27
- subStepRef.current &&
28
- (!event.relatedTarget || !subStepRef.current.contains(event.relatedTarget))) {
26
+ const onFocus = (event) => __awaiter(void 0, void 0, void 0, function* () {
27
+ var _a;
28
+ const element = event.target;
29
+ // Ignore spurious focus events, such as when the browser window is focused again.
30
+ yield new Promise(r => setTimeout(r, 1));
31
+ if (document.activeElement !== element) {
32
+ return;
33
+ }
34
+ if (isFocusedSubStep.current) {
35
+ return;
36
+ }
37
+ isFocusedSubStep.current = true;
38
+ if (funnelInteractionId && subStepId) {
39
+ /*
40
+ If the previously focused substep has provided a cleanup function, we
41
+ call it here on behalf of the previously focused substep.
42
+ */
43
+ (_a = latestFocusCleanupFunction.current) === null || _a === void 0 ? void 0 : _a.call(latestFocusCleanupFunction);
29
44
  FunnelMetrics.funnelSubStepStart({
30
45
  funnelInteractionId,
31
46
  subStepSelector,
32
47
  subStepNameSelector,
48
+ subStepName: getNameFromSelector(subStepNameSelector),
33
49
  stepNumber,
34
50
  stepNameSelector,
35
51
  subStepAllSelector: getSubStepAllSelector(),
36
52
  });
53
+ /*
54
+ This cleanup function will be called when the user leaves this substep.
55
+ The function might be called either:
56
+
57
+ - by the next focused substep as `latestFocusCleanupFunction`
58
+ (through a separate instance of the function we're currently in), or
59
+
60
+ - by the same substep as `focusCleanupFunction`
61
+ (through the `onMouseUp` handler or the `onBlur` handler).
62
+ */
63
+ let cleanupFunctionHasBeenRun = false;
64
+ focusCleanupFunction.current = () => {
65
+ if (cleanupFunctionHasBeenRun) {
66
+ return;
67
+ }
68
+ cleanupFunctionHasBeenRun = true;
69
+ if (funnelState.current !== 'cancelled') {
70
+ FunnelMetrics.funnelSubStepComplete({
71
+ funnelInteractionId,
72
+ subStepSelector,
73
+ subStepNameSelector,
74
+ subStepName: getNameFromSelector(subStepNameSelector),
75
+ stepNumber,
76
+ stepNameSelector,
77
+ subStepAllSelector: getSubStepAllSelector(),
78
+ });
79
+ }
80
+ };
81
+ latestFocusCleanupFunction.current = focusCleanupFunction.current;
37
82
  }
38
- };
83
+ });
39
84
  const onBlur = (event) => {
40
- if (funnelInteractionId &&
41
- subStepRef.current &&
42
- !subStepRef.current.contains(event.relatedTarget) &&
43
- funnelState.current !== 'cancelled') {
44
- FunnelMetrics.funnelSubStepComplete({
45
- funnelInteractionId,
46
- subStepSelector,
47
- subStepNameSelector,
48
- stepNumber,
49
- stepNameSelector,
50
- subStepAllSelector: getSubStepAllSelector(),
51
- });
85
+ var _a;
86
+ if (mousePressed.current) {
87
+ /*
88
+ Ignore blur events that are caused by mouse interaction, because these events don't
89
+ always reflect user intention. For example, clicking the label of an interactive form
90
+ element will briefly blur it.
91
+ The mouse-caused events are handled in the global `onMouseUp` handler of the substep
92
+ context instead.
93
+ */
94
+ return;
95
+ }
96
+ if (!subStepRef.current || !subStepRef.current.contains(event.relatedTarget) || !event.relatedTarget) {
97
+ isFocusedSubStep.current = false;
98
+ if (funnelInteractionId && subStepId && funnelState.current !== 'cancelled') {
99
+ /*
100
+ Run this substep's own focus cleanup function if another substep
101
+ hasn't already done it for us.
102
+ */
103
+ (_a = focusCleanupFunction.current) === null || _a === void 0 ? void 0 : _a.call(focusCleanupFunction);
104
+ }
52
105
  }
53
106
  };
54
107
  const funnelSubStepProps = funnelInteractionId
@@ -1 +1 @@
1
- {"version":3,"file":"use-funnel.js","sourceRoot":"lib/default/","sources":["internal/analytics/hooks/use-funnel.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACtG,OAAO,EAAE,+BAA+B,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAChH,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,OAAO,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IACjD,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,CAAC;IACzD,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,aAAa,EAAE,CAAC;IAEzD,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;IAEjG,IAAI,eAAe,EAAE;QACnB,OAAO,OAAO,CAAC;KAChB;IAED,MAAM,OAAO,GAAG,CAAC,KAAuC,EAAE,EAAE;QAC1D,IACE,mBAAmB;YACnB,UAAU,CAAC,OAAO;YAClB,CAAC,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAqB,CAAC,CAAC,EACnF;YACA,aAAa,CAAC,kBAAkB,CAAC;gBAC/B,mBAAmB;gBACnB,eAAe;gBACf,mBAAmB;gBACnB,UAAU;gBACV,gBAAgB;gBAChB,kBAAkB,EAAE,qBAAqB,EAAE;aAC5C,CAAC,CAAC;SACJ;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,KAAuC,EAAE,EAAE;QACzD,IACE,mBAAmB;YACnB,UAAU,CAAC,OAAO;YAClB,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC;YACjD,WAAW,CAAC,OAAO,KAAK,WAAW,EACnC;YACA,aAAa,CAAC,qBAAqB,CAAC;gBAClC,mBAAmB;gBACnB,eAAe;gBACf,mBAAmB;gBACnB,UAAU;gBACV,gBAAgB;gBAChB,kBAAkB,EAAE,qBAAqB,EAAE;aAC5C,CAAC,CAAC;SACJ;IACH,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAwB,mBAAmB;QACjE,CAAC,CAAC;YACE,CAAC,wBAAwB,CAAC,EAAE,SAAS;YACrC,OAAO;YACP,MAAM;SACP;QACH,CAAC,CAAC,EAAE,CAAC;IAEP,uBAAS,kBAAkB,IAAK,OAAO,EAAG;AAC5C,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,MAAM,OAAO,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC9C,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE;IAC5B,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAC1C,MAAM,WAAW,GAA0D,OAAO,CAAC,mBAAmB;QACpG,CAAC,CAAC;YACE,CAAC,+BAA+B,CAAC,EAAE,OAAO,CAAC,mBAAmB;SAC/D;QACH,CAAC,CAAC,EAAE,CAAC;IAEP,uBAAS,WAAW,IAAK,OAAO,EAAG;AACrC,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useContext } from 'react';\nimport { FunnelContext, FunnelStepContext, FunnelSubStepContext } from '../context/analytics-context';\nimport { DATA_ATTR_FUNNEL_INTERACTION_ID, DATA_ATTR_FUNNEL_SUBSTEP, getSubStepAllSelector } from '../selectors';\nimport { FunnelMetrics } from '../';\n\n/**\n * Custom React Hook to manage and interact with FunnelSubStep.\n * This hook will provide necessary properties and methods required\n * to track and manage interactions with a FunnelSubStep component.\n *\n * The `onFocus` method is used to track the beginning of interaction with the FunnelSubStep.\n * The `onBlur` method is used to track the completion of interaction with the FunnelSubStep.\n * The subStepId is a unique identifier for the funnel sub-step.\n * The subStepRef is a reference to the DOM element of the funnel sub-step.\n */\nexport const useFunnelSubStep = () => {\n const context = useContext(FunnelSubStepContext);\n const { funnelInteractionId, funnelState } = useFunnel();\n const { stepNumber, stepNameSelector } = useFunnelStep();\n\n const { subStepId, subStepSelector, subStepNameSelector, subStepRef, isNestedSubStep } = context;\n\n if (isNestedSubStep) {\n return context;\n }\n\n const onFocus = (event: React.FocusEvent<HTMLDivElement>) => {\n if (\n funnelInteractionId &&\n subStepRef.current &&\n (!event.relatedTarget || !subStepRef.current.contains(event.relatedTarget as Node))\n ) {\n FunnelMetrics.funnelSubStepStart({\n funnelInteractionId,\n subStepSelector,\n subStepNameSelector,\n stepNumber,\n stepNameSelector,\n subStepAllSelector: getSubStepAllSelector(),\n });\n }\n };\n\n const onBlur = (event: React.FocusEvent<HTMLDivElement>) => {\n if (\n funnelInteractionId &&\n subStepRef.current &&\n !subStepRef.current.contains(event.relatedTarget) &&\n funnelState.current !== 'cancelled'\n ) {\n FunnelMetrics.funnelSubStepComplete({\n funnelInteractionId,\n subStepSelector,\n subStepNameSelector,\n stepNumber,\n stepNameSelector,\n subStepAllSelector: getSubStepAllSelector(),\n });\n }\n };\n\n const funnelSubStepProps: Record<string, any> = funnelInteractionId\n ? {\n [DATA_ATTR_FUNNEL_SUBSTEP]: subStepId,\n onFocus,\n onBlur,\n }\n : {};\n\n return { funnelSubStepProps, ...context };\n};\n\n/**\n * Custom React Hook to manage and interact with FunnelStep.\n * This hook will provide necessary properties required to track\n * and manage interactions with a FunnelStep component.\n *\n * The 'data-analytics-funnel-step' property of funnelStepProps is used to track the index of the current step in the funnel.\n * The context contains additional properties of the FunnelStep.\n */\nexport const useFunnelStep = () => {\n const context = useContext(FunnelStepContext);\n return context;\n};\n\n/**\n * Custom React Hook to manage and interact with Funnel.\n * This hook will provide necessary properties required to track\n * and manage interactions with a Funnel component.\n *\n * The 'data-analytics-funnel-interaction-id' property of funnelProps is used to track the unique identifier of the current interaction with the funnel.\n */\nexport const useFunnel = () => {\n const context = useContext(FunnelContext);\n const funnelProps: Record<string, string | number | boolean | undefined> = context.funnelInteractionId\n ? {\n [DATA_ATTR_FUNNEL_INTERACTION_ID]: context.funnelInteractionId,\n }\n : {};\n\n return { funnelProps, ...context };\n};\n"]}
1
+ {"version":3,"file":"use-funnel.js","sourceRoot":"lib/default/","sources":["internal/analytics/hooks/use-funnel.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useContext } from 'react';\nimport { FunnelContext, FunnelStepContext, FunnelSubStepContext } from '../context/analytics-context';\nimport {\n DATA_ATTR_FUNNEL_INTERACTION_ID,\n DATA_ATTR_FUNNEL_SUBSTEP,\n getNameFromSelector,\n getSubStepAllSelector,\n} from '../selectors';\nimport { FunnelMetrics } from '../';\n\n/**\n * Custom React Hook to manage and interact with FunnelSubStep.\n * This hook will provide necessary properties and methods required\n * to track and manage interactions with a FunnelSubStep component.\n *\n * The `onFocus` method is used to track the beginning of interaction with the FunnelSubStep.\n * The `onBlur` method is used to track the completion of interaction with the FunnelSubStep.\n * The subStepId is a unique identifier for the funnel sub-step.\n * The subStepRef is a reference to the DOM element of the funnel sub-step.\n */\nexport const useFunnelSubStep = () => {\n const context = useContext(FunnelSubStepContext);\n const { funnelInteractionId, funnelState, latestFocusCleanupFunction } = useFunnel();\n const { stepNumber, stepNameSelector } = useFunnelStep();\n\n const {\n subStepId,\n subStepSelector,\n subStepNameSelector,\n subStepRef,\n isNestedSubStep,\n mousePressed,\n isFocusedSubStep,\n focusCleanupFunction,\n } = context;\n\n if (isNestedSubStep) {\n return context;\n }\n\n const onFocus = async (event: React.FocusEvent<HTMLDivElement>) => {\n const element = event.target;\n // Ignore spurious focus events, such as when the browser window is focused again.\n await new Promise(r => setTimeout(r, 1));\n if (document.activeElement !== element) {\n return;\n }\n\n if (isFocusedSubStep.current) {\n return;\n }\n isFocusedSubStep.current = true;\n\n if (funnelInteractionId && subStepId) {\n /*\n If the previously focused substep has provided a cleanup function, we\n call it here on behalf of the previously focused substep.\n */\n latestFocusCleanupFunction.current?.();\n\n FunnelMetrics.funnelSubStepStart({\n funnelInteractionId,\n subStepSelector,\n subStepNameSelector,\n subStepName: getNameFromSelector(subStepNameSelector),\n stepNumber,\n stepNameSelector,\n subStepAllSelector: getSubStepAllSelector(),\n });\n\n /*\n This cleanup function will be called when the user leaves this substep.\n The function might be called either:\n\n - by the next focused substep as `latestFocusCleanupFunction`\n (through a separate instance of the function we're currently in), or\n\n - by the same substep as `focusCleanupFunction`\n (through the `onMouseUp` handler or the `onBlur` handler).\n */\n let cleanupFunctionHasBeenRun = false;\n focusCleanupFunction.current = () => {\n if (cleanupFunctionHasBeenRun) {\n return;\n }\n cleanupFunctionHasBeenRun = true;\n\n if (funnelState.current !== 'cancelled') {\n FunnelMetrics.funnelSubStepComplete({\n funnelInteractionId,\n subStepSelector,\n subStepNameSelector,\n subStepName: getNameFromSelector(subStepNameSelector),\n stepNumber,\n stepNameSelector,\n subStepAllSelector: getSubStepAllSelector(),\n });\n }\n };\n latestFocusCleanupFunction.current = focusCleanupFunction.current;\n }\n };\n\n const onBlur = (event: React.FocusEvent<HTMLDivElement>) => {\n if (mousePressed.current) {\n /*\n Ignore blur events that are caused by mouse interaction, because these events don't\n always reflect user intention. For example, clicking the label of an interactive form\n element will briefly blur it.\n The mouse-caused events are handled in the global `onMouseUp` handler of the substep\n context instead.\n */\n return;\n }\n\n if (!subStepRef.current || !subStepRef.current.contains(event.relatedTarget) || !event.relatedTarget) {\n isFocusedSubStep.current = false;\n\n if (funnelInteractionId && subStepId && funnelState.current !== 'cancelled') {\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 };\n\n const funnelSubStepProps: Record<string, any> = funnelInteractionId\n ? {\n [DATA_ATTR_FUNNEL_SUBSTEP]: subStepId,\n onFocus,\n onBlur,\n }\n : {};\n\n return { funnelSubStepProps, ...context };\n};\n\n/**\n * Custom React Hook to manage and interact with FunnelStep.\n * This hook will provide necessary properties required to track\n * and manage interactions with a FunnelStep component.\n *\n * The 'data-analytics-funnel-step' property of funnelStepProps is used to track the index of the current step in the funnel.\n * The context contains additional properties of the FunnelStep.\n */\nexport const useFunnelStep = () => {\n const context = useContext(FunnelStepContext);\n return context;\n};\n\n/**\n * Custom React Hook to manage and interact with Funnel.\n * This hook will provide necessary properties required to track\n * and manage interactions with a Funnel component.\n *\n * The 'data-analytics-funnel-interaction-id' property of funnelProps is used to track the unique identifier of the current interaction with the funnel.\n */\nexport const useFunnel = () => {\n const context = useContext(FunnelContext);\n const funnelProps: Record<string, string | number | boolean | undefined> = context.funnelInteractionId\n ? {\n [DATA_ATTR_FUNNEL_INTERACTION_ID]: context.funnelInteractionId,\n }\n : {};\n\n return { funnelProps, ...context };\n};\n"]}