@protonradio/proton-ui 0.13.0 → 0.13.1

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 (607) hide show
  1. package/dist/components/ActionMenu/ActionMenu.cjs.js +1 -1
  2. package/dist/components/ActionMenu/ActionMenu.cjs.js.map +1 -1
  3. package/dist/components/ActionMenu/ActionMenu.es.js +139 -139
  4. package/dist/components/ActionMenu/ActionMenu.es.js.map +1 -1
  5. package/dist/components/Badge/Badge.cjs.js +1 -1
  6. package/dist/components/Badge/Badge.cjs.js.map +1 -1
  7. package/dist/components/Badge/Badge.es.js +6 -6
  8. package/dist/components/Badge/Badge.es.js.map +1 -1
  9. package/dist/components/Banner/Banner.cjs.js +1 -1
  10. package/dist/components/Banner/Banner.cjs.js.map +1 -1
  11. package/dist/components/Banner/Banner.es.js +34 -34
  12. package/dist/components/Banner/Banner.es.js.map +1 -1
  13. package/dist/components/Button/Button.cjs.js +1 -1
  14. package/dist/components/Button/Button.cjs.js.map +1 -1
  15. package/dist/components/Button/Button.es.js +36 -36
  16. package/dist/components/Button/Button.es.js.map +1 -1
  17. package/dist/components/ButtonGroup/ButtonGroup.cjs.js +1 -1
  18. package/dist/components/ButtonGroup/ButtonGroup.cjs.js.map +1 -1
  19. package/dist/components/ButtonGroup/ButtonGroup.es.js +15 -15
  20. package/dist/components/ButtonGroup/ButtonGroup.es.js.map +1 -1
  21. package/dist/components/ButtonWithSelect/ButtonWithSelect.cjs.js +1 -1
  22. package/dist/components/ButtonWithSelect/ButtonWithSelect.cjs.js.map +1 -1
  23. package/dist/components/ButtonWithSelect/ButtonWithSelect.es.js +26 -26
  24. package/dist/components/ButtonWithSelect/ButtonWithSelect.es.js.map +1 -1
  25. package/dist/components/Checkbox/CheckboxIndicator.cjs.js +1 -1
  26. package/dist/components/Checkbox/CheckboxIndicator.cjs.js.map +1 -1
  27. package/dist/components/Checkbox/CheckboxIndicator.es.js +5 -5
  28. package/dist/components/Checkbox/CheckboxIndicator.es.js.map +1 -1
  29. package/dist/components/Checkbox/CheckboxInput/CheckboxInput.cjs.js +1 -1
  30. package/dist/components/Checkbox/CheckboxInput/CheckboxInput.cjs.js.map +1 -1
  31. package/dist/components/Checkbox/CheckboxInput/CheckboxInput.es.js +59 -59
  32. package/dist/components/Checkbox/CheckboxInput/CheckboxInput.es.js.map +1 -1
  33. package/dist/components/Checkbox/CheckboxRadioGroup/CheckboxRadioGroup.cjs.js +1 -1
  34. package/dist/components/Checkbox/CheckboxRadioGroup/CheckboxRadioGroup.cjs.js.map +1 -1
  35. package/dist/components/Checkbox/CheckboxRadioGroup/CheckboxRadioGroup.es.js +51 -51
  36. package/dist/components/Checkbox/CheckboxRadioGroup/CheckboxRadioGroup.es.js.map +1 -1
  37. package/dist/components/Elevation/Elevation.cjs.js +1 -1
  38. package/dist/components/Elevation/Elevation.cjs.js.map +1 -1
  39. package/dist/components/Elevation/Elevation.es.js +6 -6
  40. package/dist/components/Elevation/Elevation.es.js.map +1 -1
  41. package/dist/components/Icon/IconComponents/AlertCircle.cjs.js +1 -1
  42. package/dist/components/Icon/IconComponents/AlertCircle.cjs.js.map +1 -1
  43. package/dist/components/Icon/IconComponents/AlertCircle.es.js +10 -10
  44. package/dist/components/Icon/IconComponents/AlertCircle.es.js.map +1 -1
  45. package/dist/components/Icon/IconComponents/AmazonMusicLogo.cjs.js +1 -1
  46. package/dist/components/Icon/IconComponents/AmazonMusicLogo.cjs.js.map +1 -1
  47. package/dist/components/Icon/IconComponents/AmazonMusicLogo.es.js +8 -8
  48. package/dist/components/Icon/IconComponents/AmazonMusicLogo.es.js.map +1 -1
  49. package/dist/components/Icon/IconComponents/AppleLogo.cjs.js +1 -1
  50. package/dist/components/Icon/IconComponents/AppleLogo.cjs.js.map +1 -1
  51. package/dist/components/Icon/IconComponents/AppleLogo.es.js +12 -12
  52. package/dist/components/Icon/IconComponents/AppleLogo.es.js.map +1 -1
  53. package/dist/components/Icon/IconComponents/AppleMusicLogo.cjs.js +1 -1
  54. package/dist/components/Icon/IconComponents/AppleMusicLogo.cjs.js.map +1 -1
  55. package/dist/components/Icon/IconComponents/AppleMusicLogo.es.js +17 -17
  56. package/dist/components/Icon/IconComponents/AppleMusicLogo.es.js.map +1 -1
  57. package/dist/components/Icon/IconComponents/Archive.cjs.js +1 -1
  58. package/dist/components/Icon/IconComponents/Archive.cjs.js.map +1 -1
  59. package/dist/components/Icon/IconComponents/Archive.es.js +8 -8
  60. package/dist/components/Icon/IconComponents/Archive.es.js.map +1 -1
  61. package/dist/components/Icon/IconComponents/ArrowLeft.cjs.js +1 -1
  62. package/dist/components/Icon/IconComponents/ArrowLeft.cjs.js.map +1 -1
  63. package/dist/components/Icon/IconComponents/ArrowLeft.es.js +11 -11
  64. package/dist/components/Icon/IconComponents/ArrowLeft.es.js.map +1 -1
  65. package/dist/components/Icon/IconComponents/ArrowRight.cjs.js +1 -1
  66. package/dist/components/Icon/IconComponents/ArrowRight.cjs.js.map +1 -1
  67. package/dist/components/Icon/IconComponents/ArrowRight.es.js +11 -11
  68. package/dist/components/Icon/IconComponents/ArrowRight.es.js.map +1 -1
  69. package/dist/components/Icon/IconComponents/BandcampLogo.cjs.js +1 -1
  70. package/dist/components/Icon/IconComponents/BandcampLogo.cjs.js.map +1 -1
  71. package/dist/components/Icon/IconComponents/BandcampLogo.es.js +10 -10
  72. package/dist/components/Icon/IconComponents/BandcampLogo.es.js.map +1 -1
  73. package/dist/components/Icon/IconComponents/Bank.cjs.js +1 -1
  74. package/dist/components/Icon/IconComponents/Bank.cjs.js.map +1 -1
  75. package/dist/components/Icon/IconComponents/Bank.es.js +8 -8
  76. package/dist/components/Icon/IconComponents/Bank.es.js.map +1 -1
  77. package/dist/components/Icon/IconComponents/BeatportLogo.cjs.js +1 -1
  78. package/dist/components/Icon/IconComponents/BeatportLogo.cjs.js.map +1 -1
  79. package/dist/components/Icon/IconComponents/BeatportLogo.es.js +7 -7
  80. package/dist/components/Icon/IconComponents/BeatportLogo.es.js.map +1 -1
  81. package/dist/components/Icon/IconComponents/Bell.cjs.js +1 -1
  82. package/dist/components/Icon/IconComponents/Bell.cjs.js.map +1 -1
  83. package/dist/components/Icon/IconComponents/Bell.es.js +6 -6
  84. package/dist/components/Icon/IconComponents/Bell.es.js.map +1 -1
  85. package/dist/components/Icon/IconComponents/Box.cjs.js +1 -1
  86. package/dist/components/Icon/IconComponents/Box.cjs.js.map +1 -1
  87. package/dist/components/Icon/IconComponents/Box.es.js +10 -10
  88. package/dist/components/Icon/IconComponents/Box.es.js.map +1 -1
  89. package/dist/components/Icon/IconComponents/Calendar.cjs.js +1 -1
  90. package/dist/components/Icon/IconComponents/Calendar.cjs.js.map +1 -1
  91. package/dist/components/Icon/IconComponents/Calendar.es.js +22 -22
  92. package/dist/components/Icon/IconComponents/Calendar.es.js.map +1 -1
  93. package/dist/components/Icon/IconComponents/Camera.cjs.js +1 -1
  94. package/dist/components/Icon/IconComponents/Camera.cjs.js.map +1 -1
  95. package/dist/components/Icon/IconComponents/Camera.es.js +14 -14
  96. package/dist/components/Icon/IconComponents/Camera.es.js.map +1 -1
  97. package/dist/components/Icon/IconComponents/CaretDown.cjs.js +1 -1
  98. package/dist/components/Icon/IconComponents/CaretDown.cjs.js.map +1 -1
  99. package/dist/components/Icon/IconComponents/CaretDown.es.js +9 -9
  100. package/dist/components/Icon/IconComponents/CaretDown.es.js.map +1 -1
  101. package/dist/components/Icon/IconComponents/CaretRight.cjs.js +1 -1
  102. package/dist/components/Icon/IconComponents/CaretRight.cjs.js.map +1 -1
  103. package/dist/components/Icon/IconComponents/CaretRight.es.js +9 -9
  104. package/dist/components/Icon/IconComponents/CaretRight.es.js.map +1 -1
  105. package/dist/components/Icon/IconComponents/Chart.cjs.js +1 -1
  106. package/dist/components/Icon/IconComponents/Chart.cjs.js.map +1 -1
  107. package/dist/components/Icon/IconComponents/Chart.es.js +9 -9
  108. package/dist/components/Icon/IconComponents/Chart.es.js.map +1 -1
  109. package/dist/components/Icon/IconComponents/Chatboxes.cjs.js +1 -1
  110. package/dist/components/Icon/IconComponents/Chatboxes.cjs.js.map +1 -1
  111. package/dist/components/Icon/IconComponents/Chatboxes.es.js +15 -15
  112. package/dist/components/Icon/IconComponents/Chatboxes.es.js.map +1 -1
  113. package/dist/components/Icon/IconComponents/CheckCircle.cjs.js +1 -1
  114. package/dist/components/Icon/IconComponents/CheckCircle.cjs.js.map +1 -1
  115. package/dist/components/Icon/IconComponents/CheckCircle.es.js +8 -8
  116. package/dist/components/Icon/IconComponents/CheckCircle.es.js.map +1 -1
  117. package/dist/components/Icon/IconComponents/Checkmark.cjs.js +1 -1
  118. package/dist/components/Icon/IconComponents/Checkmark.cjs.js.map +1 -1
  119. package/dist/components/Icon/IconComponents/Checkmark.es.js +9 -9
  120. package/dist/components/Icon/IconComponents/Checkmark.es.js.map +1 -1
  121. package/dist/components/Icon/IconComponents/CheckmarkThick.cjs.js +1 -1
  122. package/dist/components/Icon/IconComponents/CheckmarkThick.cjs.js.map +1 -1
  123. package/dist/components/Icon/IconComponents/CheckmarkThick.es.js +6 -6
  124. package/dist/components/Icon/IconComponents/CheckmarkThick.es.js.map +1 -1
  125. package/dist/components/Icon/IconComponents/ChevronDown.cjs.js +1 -1
  126. package/dist/components/Icon/IconComponents/ChevronDown.cjs.js.map +1 -1
  127. package/dist/components/Icon/IconComponents/ChevronDown.es.js +9 -9
  128. package/dist/components/Icon/IconComponents/ChevronDown.es.js.map +1 -1
  129. package/dist/components/Icon/IconComponents/ChevronLeft.cjs.js +1 -1
  130. package/dist/components/Icon/IconComponents/ChevronLeft.cjs.js.map +1 -1
  131. package/dist/components/Icon/IconComponents/ChevronLeft.es.js +6 -6
  132. package/dist/components/Icon/IconComponents/ChevronLeft.es.js.map +1 -1
  133. package/dist/components/Icon/IconComponents/ChevronRight.cjs.js +1 -1
  134. package/dist/components/Icon/IconComponents/ChevronRight.cjs.js.map +1 -1
  135. package/dist/components/Icon/IconComponents/ChevronRight.es.js +6 -6
  136. package/dist/components/Icon/IconComponents/ChevronRight.es.js.map +1 -1
  137. package/dist/components/Icon/IconComponents/ChevronSquareDown.cjs.js +1 -1
  138. package/dist/components/Icon/IconComponents/ChevronSquareDown.cjs.js.map +1 -1
  139. package/dist/components/Icon/IconComponents/ChevronSquareDown.es.js +11 -11
  140. package/dist/components/Icon/IconComponents/ChevronSquareDown.es.js.map +1 -1
  141. package/dist/components/Icon/IconComponents/ChevronUp.cjs.js +1 -1
  142. package/dist/components/Icon/IconComponents/ChevronUp.cjs.js.map +1 -1
  143. package/dist/components/Icon/IconComponents/ChevronUp.es.js +8 -8
  144. package/dist/components/Icon/IconComponents/ChevronUp.es.js.map +1 -1
  145. package/dist/components/Icon/IconComponents/Close.cjs.js +1 -1
  146. package/dist/components/Icon/IconComponents/Close.cjs.js.map +1 -1
  147. package/dist/components/Icon/IconComponents/Close.es.js +7 -7
  148. package/dist/components/Icon/IconComponents/Close.es.js.map +1 -1
  149. package/dist/components/Icon/IconComponents/Cog.cjs.js +1 -1
  150. package/dist/components/Icon/IconComponents/Cog.cjs.js.map +1 -1
  151. package/dist/components/Icon/IconComponents/Cog.es.js +5 -5
  152. package/dist/components/Icon/IconComponents/Cog.es.js.map +1 -1
  153. package/dist/components/Icon/IconComponents/Comment.cjs.js +1 -1
  154. package/dist/components/Icon/IconComponents/Comment.cjs.js.map +1 -1
  155. package/dist/components/Icon/IconComponents/Comment.es.js +10 -10
  156. package/dist/components/Icon/IconComponents/Comment.es.js.map +1 -1
  157. package/dist/components/Icon/IconComponents/Connections.cjs.js +1 -1
  158. package/dist/components/Icon/IconComponents/Connections.cjs.js.map +1 -1
  159. package/dist/components/Icon/IconComponents/Connections.es.js +10 -10
  160. package/dist/components/Icon/IconComponents/Connections.es.js.map +1 -1
  161. package/dist/components/Icon/IconComponents/Copy.cjs.js +1 -1
  162. package/dist/components/Icon/IconComponents/Copy.cjs.js.map +1 -1
  163. package/dist/components/Icon/IconComponents/Copy.es.js +14 -14
  164. package/dist/components/Icon/IconComponents/Copy.es.js.map +1 -1
  165. package/dist/components/Icon/IconComponents/DangerCircle.cjs.js +1 -1
  166. package/dist/components/Icon/IconComponents/DangerCircle.cjs.js.map +1 -1
  167. package/dist/components/Icon/IconComponents/DangerCircle.es.js +3 -3
  168. package/dist/components/Icon/IconComponents/DangerCircle.es.js.map +1 -1
  169. package/dist/components/Icon/IconComponents/Dashboard.cjs.js +1 -1
  170. package/dist/components/Icon/IconComponents/Dashboard.cjs.js.map +1 -1
  171. package/dist/components/Icon/IconComponents/Dashboard.es.js +10 -10
  172. package/dist/components/Icon/IconComponents/Dashboard.es.js.map +1 -1
  173. package/dist/components/Icon/IconComponents/DeezerLogo.cjs.js +1 -1
  174. package/dist/components/Icon/IconComponents/DeezerLogo.cjs.js.map +1 -1
  175. package/dist/components/Icon/IconComponents/DeezerLogo.es.js +6 -6
  176. package/dist/components/Icon/IconComponents/DeezerLogo.es.js.map +1 -1
  177. package/dist/components/Icon/IconComponents/Download.cjs.js +1 -1
  178. package/dist/components/Icon/IconComponents/Download.cjs.js.map +1 -1
  179. package/dist/components/Icon/IconComponents/Download.es.js +6 -6
  180. package/dist/components/Icon/IconComponents/Download.es.js.map +1 -1
  181. package/dist/components/Icon/IconComponents/DragHandle.cjs.js +1 -1
  182. package/dist/components/Icon/IconComponents/DragHandle.cjs.js.map +1 -1
  183. package/dist/components/Icon/IconComponents/DragHandle.es.js +7 -7
  184. package/dist/components/Icon/IconComponents/DragHandle.es.js.map +1 -1
  185. package/dist/components/Icon/IconComponents/DropboxLogo.cjs.js +1 -1
  186. package/dist/components/Icon/IconComponents/DropboxLogo.cjs.js.map +1 -1
  187. package/dist/components/Icon/IconComponents/DropboxLogo.es.js +13 -13
  188. package/dist/components/Icon/IconComponents/DropboxLogo.es.js.map +1 -1
  189. package/dist/components/Icon/IconComponents/Edit.cjs.js +1 -1
  190. package/dist/components/Icon/IconComponents/Edit.cjs.js.map +1 -1
  191. package/dist/components/Icon/IconComponents/Edit.es.js +12 -12
  192. package/dist/components/Icon/IconComponents/Edit.es.js.map +1 -1
  193. package/dist/components/Icon/IconComponents/Ellipsis.cjs.js +1 -1
  194. package/dist/components/Icon/IconComponents/Ellipsis.cjs.js.map +1 -1
  195. package/dist/components/Icon/IconComponents/Ellipsis.es.js +19 -19
  196. package/dist/components/Icon/IconComponents/Ellipsis.es.js.map +1 -1
  197. package/dist/components/Icon/IconComponents/EmailThick.cjs.js +1 -1
  198. package/dist/components/Icon/IconComponents/EmailThick.cjs.js.map +1 -1
  199. package/dist/components/Icon/IconComponents/EmailThick.es.js +11 -11
  200. package/dist/components/Icon/IconComponents/EmailThick.es.js.map +1 -1
  201. package/dist/components/Icon/IconComponents/EmailThin.cjs.js +1 -1
  202. package/dist/components/Icon/IconComponents/EmailThin.cjs.js.map +1 -1
  203. package/dist/components/Icon/IconComponents/EmailThin.es.js +12 -12
  204. package/dist/components/Icon/IconComponents/EmailThin.es.js.map +1 -1
  205. package/dist/components/Icon/IconComponents/ExternalLink.cjs.js +1 -1
  206. package/dist/components/Icon/IconComponents/ExternalLink.cjs.js.map +1 -1
  207. package/dist/components/Icon/IconComponents/ExternalLink.es.js +9 -9
  208. package/dist/components/Icon/IconComponents/ExternalLink.es.js.map +1 -1
  209. package/dist/components/Icon/IconComponents/FacebookLogo.cjs.js +1 -1
  210. package/dist/components/Icon/IconComponents/FacebookLogo.cjs.js.map +1 -1
  211. package/dist/components/Icon/IconComponents/FacebookLogo.es.js +11 -11
  212. package/dist/components/Icon/IconComponents/FacebookLogo.es.js.map +1 -1
  213. package/dist/components/Icon/IconComponents/Filter.cjs.js +1 -1
  214. package/dist/components/Icon/IconComponents/Filter.cjs.js.map +1 -1
  215. package/dist/components/Icon/IconComponents/Filter.es.js +9 -9
  216. package/dist/components/Icon/IconComponents/Filter.es.js.map +1 -1
  217. package/dist/components/Icon/IconComponents/GitHubLogo.cjs.js +1 -1
  218. package/dist/components/Icon/IconComponents/GitHubLogo.cjs.js.map +1 -1
  219. package/dist/components/Icon/IconComponents/GitHubLogo.es.js +10 -10
  220. package/dist/components/Icon/IconComponents/GitHubLogo.es.js.map +1 -1
  221. package/dist/components/Icon/IconComponents/Globe.cjs.js +1 -1
  222. package/dist/components/Icon/IconComponents/Globe.cjs.js.map +1 -1
  223. package/dist/components/Icon/IconComponents/Globe.es.js +3 -3
  224. package/dist/components/Icon/IconComponents/Globe.es.js.map +1 -1
  225. package/dist/components/Icon/IconComponents/GoogleDriveLogo.cjs.js +1 -1
  226. package/dist/components/Icon/IconComponents/GoogleDriveLogo.cjs.js.map +1 -1
  227. package/dist/components/Icon/IconComponents/GoogleDriveLogo.es.js +24 -24
  228. package/dist/components/Icon/IconComponents/GoogleDriveLogo.es.js.map +1 -1
  229. package/dist/components/Icon/IconComponents/Hamburger.cjs.js +1 -1
  230. package/dist/components/Icon/IconComponents/Hamburger.cjs.js.map +1 -1
  231. package/dist/components/Icon/IconComponents/Hamburger.es.js +10 -10
  232. package/dist/components/Icon/IconComponents/Hamburger.es.js.map +1 -1
  233. package/dist/components/Icon/IconComponents/Heartbeat.cjs.js +1 -1
  234. package/dist/components/Icon/IconComponents/Heartbeat.cjs.js.map +1 -1
  235. package/dist/components/Icon/IconComponents/Heartbeat.es.js +11 -11
  236. package/dist/components/Icon/IconComponents/Heartbeat.es.js.map +1 -1
  237. package/dist/components/Icon/IconComponents/Info.cjs.js +1 -1
  238. package/dist/components/Icon/IconComponents/Info.cjs.js.map +1 -1
  239. package/dist/components/Icon/IconComponents/Info.es.js +9 -9
  240. package/dist/components/Icon/IconComponents/Info.es.js.map +1 -1
  241. package/dist/components/Icon/IconComponents/InfoOutline.cjs.js +1 -1
  242. package/dist/components/Icon/IconComponents/InfoOutline.cjs.js.map +1 -1
  243. package/dist/components/Icon/IconComponents/InfoOutline.es.js +13 -13
  244. package/dist/components/Icon/IconComponents/InfoOutline.es.js.map +1 -1
  245. package/dist/components/Icon/IconComponents/InstagramLogo.cjs.js +1 -1
  246. package/dist/components/Icon/IconComponents/InstagramLogo.cjs.js.map +1 -1
  247. package/dist/components/Icon/IconComponents/InstagramLogo.es.js +16 -16
  248. package/dist/components/Icon/IconComponents/InstagramLogo.es.js.map +1 -1
  249. package/dist/components/Icon/IconComponents/IntercomLogo.cjs.js +1 -1
  250. package/dist/components/Icon/IconComponents/IntercomLogo.cjs.js.map +1 -1
  251. package/dist/components/Icon/IconComponents/IntercomLogo.es.js +15 -15
  252. package/dist/components/Icon/IconComponents/IntercomLogo.es.js.map +1 -1
  253. package/dist/components/Icon/IconComponents/Keyboard.cjs.js +1 -1
  254. package/dist/components/Icon/IconComponents/Keyboard.cjs.js.map +1 -1
  255. package/dist/components/Icon/IconComponents/Keyboard.es.js +9 -9
  256. package/dist/components/Icon/IconComponents/Keyboard.es.js.map +1 -1
  257. package/dist/components/Icon/IconComponents/Label.cjs.js +1 -1
  258. package/dist/components/Icon/IconComponents/Label.cjs.js.map +1 -1
  259. package/dist/components/Icon/IconComponents/Label.es.js +14 -14
  260. package/dist/components/Icon/IconComponents/Label.es.js.map +1 -1
  261. package/dist/components/Icon/IconComponents/Lightning.cjs.js +1 -1
  262. package/dist/components/Icon/IconComponents/Lightning.cjs.js.map +1 -1
  263. package/dist/components/Icon/IconComponents/Lightning.es.js +9 -9
  264. package/dist/components/Icon/IconComponents/Lightning.es.js.map +1 -1
  265. package/dist/components/Icon/IconComponents/Link.cjs.js +1 -1
  266. package/dist/components/Icon/IconComponents/Link.cjs.js.map +1 -1
  267. package/dist/components/Icon/IconComponents/Link.es.js +6 -6
  268. package/dist/components/Icon/IconComponents/Link.es.js.map +1 -1
  269. package/dist/components/Icon/IconComponents/List.cjs.js +1 -1
  270. package/dist/components/Icon/IconComponents/List.cjs.js.map +1 -1
  271. package/dist/components/Icon/IconComponents/List.es.js +13 -13
  272. package/dist/components/Icon/IconComponents/List.es.js.map +1 -1
  273. package/dist/components/Icon/IconComponents/Lock.cjs.js +1 -1
  274. package/dist/components/Icon/IconComponents/Lock.cjs.js.map +1 -1
  275. package/dist/components/Icon/IconComponents/Lock.es.js +5 -5
  276. package/dist/components/Icon/IconComponents/Lock.es.js.map +1 -1
  277. package/dist/components/Icon/IconComponents/MessengerLogo.cjs.js +1 -1
  278. package/dist/components/Icon/IconComponents/MessengerLogo.cjs.js.map +1 -1
  279. package/dist/components/Icon/IconComponents/MessengerLogo.es.js +11 -11
  280. package/dist/components/Icon/IconComponents/MessengerLogo.es.js.map +1 -1
  281. package/dist/components/Icon/IconComponents/Money.cjs.js +1 -1
  282. package/dist/components/Icon/IconComponents/Money.cjs.js.map +1 -1
  283. package/dist/components/Icon/IconComponents/Money.es.js +13 -13
  284. package/dist/components/Icon/IconComponents/Money.es.js.map +1 -1
  285. package/dist/components/Icon/IconComponents/MoneyOutline.cjs.js +1 -1
  286. package/dist/components/Icon/IconComponents/MoneyOutline.cjs.js.map +1 -1
  287. package/dist/components/Icon/IconComponents/MoneyOutline.es.js +13 -13
  288. package/dist/components/Icon/IconComponents/MoneyOutline.es.js.map +1 -1
  289. package/dist/components/Icon/IconComponents/MusicNote.cjs.js +1 -1
  290. package/dist/components/Icon/IconComponents/MusicNote.cjs.js.map +1 -1
  291. package/dist/components/Icon/IconComponents/MusicNote.es.js +12 -12
  292. package/dist/components/Icon/IconComponents/MusicNote.es.js.map +1 -1
  293. package/dist/components/Icon/IconComponents/PacmanLoader.cjs.js +1 -1
  294. package/dist/components/Icon/IconComponents/PacmanLoader.cjs.js.map +1 -1
  295. package/dist/components/Icon/IconComponents/PacmanLoader.es.js +11 -11
  296. package/dist/components/Icon/IconComponents/PacmanLoader.es.js.map +1 -1
  297. package/dist/components/Icon/IconComponents/Pause.cjs.js +1 -1
  298. package/dist/components/Icon/IconComponents/Pause.cjs.js.map +1 -1
  299. package/dist/components/Icon/IconComponents/Pause.es.js +12 -12
  300. package/dist/components/Icon/IconComponents/Pause.es.js.map +1 -1
  301. package/dist/components/Icon/IconComponents/PayPalLogo.cjs.js +1 -1
  302. package/dist/components/Icon/IconComponents/PayPalLogo.cjs.js.map +1 -1
  303. package/dist/components/Icon/IconComponents/PayPalLogo.es.js +12 -12
  304. package/dist/components/Icon/IconComponents/PayPalLogo.es.js.map +1 -1
  305. package/dist/components/Icon/IconComponents/Pencil.cjs.js +1 -1
  306. package/dist/components/Icon/IconComponents/Pencil.cjs.js.map +1 -1
  307. package/dist/components/Icon/IconComponents/Pencil.es.js +9 -9
  308. package/dist/components/Icon/IconComponents/Pencil.es.js.map +1 -1
  309. package/dist/components/Icon/IconComponents/PhoneThick.cjs.js +1 -1
  310. package/dist/components/Icon/IconComponents/PhoneThick.cjs.js.map +1 -1
  311. package/dist/components/Icon/IconComponents/PhoneThick.es.js +6 -6
  312. package/dist/components/Icon/IconComponents/PhoneThick.es.js.map +1 -1
  313. package/dist/components/Icon/IconComponents/PhoneThin.cjs.js +1 -1
  314. package/dist/components/Icon/IconComponents/PhoneThin.cjs.js.map +1 -1
  315. package/dist/components/Icon/IconComponents/PhoneThin.es.js +6 -6
  316. package/dist/components/Icon/IconComponents/PhoneThin.es.js.map +1 -1
  317. package/dist/components/Icon/IconComponents/PiggyBank.cjs.js +1 -1
  318. package/dist/components/Icon/IconComponents/PiggyBank.cjs.js.map +1 -1
  319. package/dist/components/Icon/IconComponents/PiggyBank.es.js +3 -3
  320. package/dist/components/Icon/IconComponents/PiggyBank.es.js.map +1 -1
  321. package/dist/components/Icon/IconComponents/Play.cjs.js +1 -1
  322. package/dist/components/Icon/IconComponents/Play.cjs.js.map +1 -1
  323. package/dist/components/Icon/IconComponents/Play.es.js +10 -10
  324. package/dist/components/Icon/IconComponents/Play.es.js.map +1 -1
  325. package/dist/components/Icon/IconComponents/ProtonLogo.cjs.js +1 -1
  326. package/dist/components/Icon/IconComponents/ProtonLogo.cjs.js.map +1 -1
  327. package/dist/components/Icon/IconComponents/ProtonLogo.es.js +13 -13
  328. package/dist/components/Icon/IconComponents/ProtonLogo.es.js.map +1 -1
  329. package/dist/components/Icon/IconComponents/Quote.cjs.js +1 -1
  330. package/dist/components/Icon/IconComponents/Quote.cjs.js.map +1 -1
  331. package/dist/components/Icon/IconComponents/Quote.es.js +8 -8
  332. package/dist/components/Icon/IconComponents/Quote.es.js.map +1 -1
  333. package/dist/components/Icon/IconComponents/Radio.cjs.js +1 -1
  334. package/dist/components/Icon/IconComponents/Radio.cjs.js.map +1 -1
  335. package/dist/components/Icon/IconComponents/Radio.es.js +16 -16
  336. package/dist/components/Icon/IconComponents/Radio.es.js.map +1 -1
  337. package/dist/components/Icon/IconComponents/RemoveCircle.cjs.js +1 -1
  338. package/dist/components/Icon/IconComponents/RemoveCircle.cjs.js.map +1 -1
  339. package/dist/components/Icon/IconComponents/RemoveCircle.es.js +10 -10
  340. package/dist/components/Icon/IconComponents/RemoveCircle.es.js.map +1 -1
  341. package/dist/components/Icon/IconComponents/Rocket.cjs.js +1 -1
  342. package/dist/components/Icon/IconComponents/Rocket.cjs.js.map +1 -1
  343. package/dist/components/Icon/IconComponents/Rocket.es.js +15 -15
  344. package/dist/components/Icon/IconComponents/Rocket.es.js.map +1 -1
  345. package/dist/components/Icon/IconComponents/Search.cjs.js +1 -1
  346. package/dist/components/Icon/IconComponents/Search.cjs.js.map +1 -1
  347. package/dist/components/Icon/IconComponents/Search.es.js +9 -9
  348. package/dist/components/Icon/IconComponents/Search.es.js.map +1 -1
  349. package/dist/components/Icon/IconComponents/Share.cjs.js +1 -1
  350. package/dist/components/Icon/IconComponents/Share.cjs.js.map +1 -1
  351. package/dist/components/Icon/IconComponents/Share.es.js +8 -8
  352. package/dist/components/Icon/IconComponents/Share.es.js.map +1 -1
  353. package/dist/components/Icon/IconComponents/SignOut.cjs.js +1 -1
  354. package/dist/components/Icon/IconComponents/SignOut.cjs.js.map +1 -1
  355. package/dist/components/Icon/IconComponents/SignOut.es.js +14 -14
  356. package/dist/components/Icon/IconComponents/SignOut.es.js.map +1 -1
  357. package/dist/components/Icon/IconComponents/SoundcloudLogo.cjs.js +1 -1
  358. package/dist/components/Icon/IconComponents/SoundcloudLogo.cjs.js.map +1 -1
  359. package/dist/components/Icon/IconComponents/SoundcloudLogo.es.js +3 -3
  360. package/dist/components/Icon/IconComponents/SoundcloudLogo.es.js.map +1 -1
  361. package/dist/components/Icon/IconComponents/SpotifyLogo.cjs.js +1 -1
  362. package/dist/components/Icon/IconComponents/SpotifyLogo.cjs.js.map +1 -1
  363. package/dist/components/Icon/IconComponents/SpotifyLogo.es.js +13 -13
  364. package/dist/components/Icon/IconComponents/SpotifyLogo.es.js.map +1 -1
  365. package/dist/components/Icon/IconComponents/Spy.cjs.js +1 -1
  366. package/dist/components/Icon/IconComponents/Spy.cjs.js.map +1 -1
  367. package/dist/components/Icon/IconComponents/Spy.es.js +7 -7
  368. package/dist/components/Icon/IconComponents/Spy.es.js.map +1 -1
  369. package/dist/components/Icon/IconComponents/Star.cjs.js +1 -1
  370. package/dist/components/Icon/IconComponents/Star.cjs.js.map +1 -1
  371. package/dist/components/Icon/IconComponents/Star.es.js +8 -8
  372. package/dist/components/Icon/IconComponents/Star.es.js.map +1 -1
  373. package/dist/components/Icon/IconComponents/StarCircle.cjs.js +1 -1
  374. package/dist/components/Icon/IconComponents/StarCircle.cjs.js.map +1 -1
  375. package/dist/components/Icon/IconComponents/StarCircle.es.js +10 -10
  376. package/dist/components/Icon/IconComponents/StarCircle.es.js.map +1 -1
  377. package/dist/components/Icon/IconComponents/SuccessCircle.cjs.js +1 -1
  378. package/dist/components/Icon/IconComponents/SuccessCircle.cjs.js.map +1 -1
  379. package/dist/components/Icon/IconComponents/SuccessCircle.es.js +10 -10
  380. package/dist/components/Icon/IconComponents/SuccessCircle.es.js.map +1 -1
  381. package/dist/components/Icon/IconComponents/TelegramLogo.cjs.js +1 -1
  382. package/dist/components/Icon/IconComponents/TelegramLogo.cjs.js.map +1 -1
  383. package/dist/components/Icon/IconComponents/TelegramLogo.es.js +9 -9
  384. package/dist/components/Icon/IconComponents/TelegramLogo.es.js.map +1 -1
  385. package/dist/components/Icon/IconComponents/TiktokLogo.cjs.js +1 -1
  386. package/dist/components/Icon/IconComponents/TiktokLogo.cjs.js.map +1 -1
  387. package/dist/components/Icon/IconComponents/TiktokLogo.es.js +10 -10
  388. package/dist/components/Icon/IconComponents/TiktokLogo.es.js.map +1 -1
  389. package/dist/components/Icon/IconComponents/Tracklist.cjs.js +1 -1
  390. package/dist/components/Icon/IconComponents/Tracklist.cjs.js.map +1 -1
  391. package/dist/components/Icon/IconComponents/Tracklist.es.js +6 -6
  392. package/dist/components/Icon/IconComponents/Tracklist.es.js.map +1 -1
  393. package/dist/components/Icon/IconComponents/TrashCan.cjs.js +1 -1
  394. package/dist/components/Icon/IconComponents/TrashCan.cjs.js.map +1 -1
  395. package/dist/components/Icon/IconComponents/TrashCan.es.js +8 -8
  396. package/dist/components/Icon/IconComponents/TrashCan.es.js.map +1 -1
  397. package/dist/components/Icon/IconComponents/TraxsourceLogo.cjs.js +1 -1
  398. package/dist/components/Icon/IconComponents/TraxsourceLogo.cjs.js.map +1 -1
  399. package/dist/components/Icon/IconComponents/TraxsourceLogo.es.js +15 -15
  400. package/dist/components/Icon/IconComponents/TraxsourceLogo.es.js.map +1 -1
  401. package/dist/components/Icon/IconComponents/USDCLogo.cjs.js +1 -1
  402. package/dist/components/Icon/IconComponents/USDCLogo.cjs.js.map +1 -1
  403. package/dist/components/Icon/IconComponents/USDCLogo.es.js +16 -16
  404. package/dist/components/Icon/IconComponents/USDCLogo.es.js.map +1 -1
  405. package/dist/components/Icon/IconComponents/User.cjs.js +1 -1
  406. package/dist/components/Icon/IconComponents/User.cjs.js.map +1 -1
  407. package/dist/components/Icon/IconComponents/User.es.js +12 -12
  408. package/dist/components/Icon/IconComponents/User.es.js.map +1 -1
  409. package/dist/components/Icon/IconComponents/UserAdd.cjs.js +1 -1
  410. package/dist/components/Icon/IconComponents/UserAdd.cjs.js.map +1 -1
  411. package/dist/components/Icon/IconComponents/UserAdd.es.js +10 -10
  412. package/dist/components/Icon/IconComponents/UserAdd.es.js.map +1 -1
  413. package/dist/components/Icon/IconComponents/Users.cjs.js +1 -1
  414. package/dist/components/Icon/IconComponents/Users.cjs.js.map +1 -1
  415. package/dist/components/Icon/IconComponents/Users.es.js +8 -8
  416. package/dist/components/Icon/IconComponents/Users.es.js.map +1 -1
  417. package/dist/components/Icon/IconComponents/Verified.cjs.js +1 -1
  418. package/dist/components/Icon/IconComponents/Verified.cjs.js.map +1 -1
  419. package/dist/components/Icon/IconComponents/Verified.es.js +9 -9
  420. package/dist/components/Icon/IconComponents/Verified.es.js.map +1 -1
  421. package/dist/components/Icon/IconComponents/WarningTriangle.cjs.js +1 -1
  422. package/dist/components/Icon/IconComponents/WarningTriangle.cjs.js.map +1 -1
  423. package/dist/components/Icon/IconComponents/WarningTriangle.es.js +11 -11
  424. package/dist/components/Icon/IconComponents/WarningTriangle.es.js.map +1 -1
  425. package/dist/components/Icon/IconComponents/WesternUnionLogo.cjs.js +1 -1
  426. package/dist/components/Icon/IconComponents/WesternUnionLogo.cjs.js.map +1 -1
  427. package/dist/components/Icon/IconComponents/WesternUnionLogo.es.js +13 -13
  428. package/dist/components/Icon/IconComponents/WesternUnionLogo.es.js.map +1 -1
  429. package/dist/components/Icon/IconComponents/WhatsappLogo.cjs.js +1 -1
  430. package/dist/components/Icon/IconComponents/WhatsappLogo.cjs.js.map +1 -1
  431. package/dist/components/Icon/IconComponents/WhatsappLogo.es.js +15 -15
  432. package/dist/components/Icon/IconComponents/WhatsappLogo.es.js.map +1 -1
  433. package/dist/components/Icon/IconComponents/WhatsappLogoThin.cjs.js +1 -1
  434. package/dist/components/Icon/IconComponents/WhatsappLogoThin.cjs.js.map +1 -1
  435. package/dist/components/Icon/IconComponents/WhatsappLogoThin.es.js +19 -19
  436. package/dist/components/Icon/IconComponents/WhatsappLogoThin.es.js.map +1 -1
  437. package/dist/components/Icon/IconComponents/XTwitterLogo.cjs.js +1 -1
  438. package/dist/components/Icon/IconComponents/XTwitterLogo.cjs.js.map +1 -1
  439. package/dist/components/Icon/IconComponents/XTwitterLogo.es.js +10 -10
  440. package/dist/components/Icon/IconComponents/XTwitterLogo.es.js.map +1 -1
  441. package/dist/components/Icon/IconComponents/YandexLogo.cjs.js +1 -1
  442. package/dist/components/Icon/IconComponents/YandexLogo.cjs.js.map +1 -1
  443. package/dist/components/Icon/IconComponents/YandexLogo.es.js +9 -9
  444. package/dist/components/Icon/IconComponents/YandexLogo.es.js.map +1 -1
  445. package/dist/components/Icon/IconComponents/YoutubeLogo.cjs.js +1 -1
  446. package/dist/components/Icon/IconComponents/YoutubeLogo.cjs.js.map +1 -1
  447. package/dist/components/Icon/IconComponents/YoutubeLogo.es.js +14 -14
  448. package/dist/components/Icon/IconComponents/YoutubeLogo.es.js.map +1 -1
  449. package/dist/components/ImageBackground/ImageBackground.cjs.js +1 -1
  450. package/dist/components/ImageBackground/ImageBackground.cjs.js.map +1 -1
  451. package/dist/components/ImageBackground/ImageBackground.es.js +18 -18
  452. package/dist/components/ImageBackground/ImageBackground.es.js.map +1 -1
  453. package/dist/components/Input/BaseInput/Input.cjs.js +1 -1
  454. package/dist/components/Input/BaseInput/Input.cjs.js.map +1 -1
  455. package/dist/components/Input/BaseInput/Input.es.js +73 -73
  456. package/dist/components/Input/BaseInput/Input.es.js.map +1 -1
  457. package/dist/components/Input/CopyInput/CopyInput.cjs.js +1 -1
  458. package/dist/components/Input/CopyInput/CopyInput.cjs.js.map +1 -1
  459. package/dist/components/Input/CopyInput/CopyInput.es.js +23 -23
  460. package/dist/components/Input/CopyInput/CopyInput.es.js.map +1 -1
  461. package/dist/components/Input/OTPInput/OTPInput.cjs.js +1 -1
  462. package/dist/components/Input/OTPInput/OTPInput.cjs.js.map +1 -1
  463. package/dist/components/Input/OTPInput/OTPInput.es.js +58 -58
  464. package/dist/components/Input/OTPInput/OTPInput.es.js.map +1 -1
  465. package/dist/components/Input/SearchInput/SearchInput.cjs.js +1 -1
  466. package/dist/components/Input/SearchInput/SearchInput.cjs.js.map +1 -1
  467. package/dist/components/Input/SearchInput/SearchInput.es.js +45 -45
  468. package/dist/components/Input/SearchInput/SearchInput.es.js.map +1 -1
  469. package/dist/components/Menu/MenuTrigger.cjs.js +1 -1
  470. package/dist/components/Menu/MenuTrigger.cjs.js.map +1 -1
  471. package/dist/components/Menu/MenuTrigger.es.js +31 -31
  472. package/dist/components/Menu/MenuTrigger.es.js.map +1 -1
  473. package/dist/components/Menu/PopoverMenu.cjs.js +1 -1
  474. package/dist/components/Menu/PopoverMenu.cjs.js.map +1 -1
  475. package/dist/components/Menu/PopoverMenu.es.js +53 -53
  476. package/dist/components/Menu/PopoverMenu.es.js.map +1 -1
  477. package/dist/components/Modal/Modal.cjs.js +1 -1
  478. package/dist/components/Modal/Modal.cjs.js.map +1 -1
  479. package/dist/components/Modal/Modal.es.js +49 -49
  480. package/dist/components/Modal/Modal.es.js.map +1 -1
  481. package/dist/components/Overlay/Overlay.cjs.js +1 -1
  482. package/dist/components/Overlay/Overlay.cjs.js.map +1 -1
  483. package/dist/components/Overlay/Overlay.es.js +9 -9
  484. package/dist/components/Overlay/Overlay.es.js.map +1 -1
  485. package/dist/components/Popover/Popover.cjs.js +1 -1
  486. package/dist/components/Popover/Popover.cjs.js.map +1 -1
  487. package/dist/components/Popover/Popover.es.js +29 -29
  488. package/dist/components/Popover/Popover.es.js.map +1 -1
  489. package/dist/components/ScreenOverlay/ScreenOverlay.cjs.js +1 -1
  490. package/dist/components/ScreenOverlay/ScreenOverlay.cjs.js.map +1 -1
  491. package/dist/components/ScreenOverlay/ScreenOverlay.es.js +7 -7
  492. package/dist/components/ScreenOverlay/ScreenOverlay.es.js.map +1 -1
  493. package/dist/components/Select/Select.cjs.js +1 -1
  494. package/dist/components/Select/Select.cjs.js.map +1 -1
  495. package/dist/components/Select/Select.es.js +83 -83
  496. package/dist/components/Select/Select.es.js.map +1 -1
  497. package/dist/components/Switch/Switch.cjs.js +1 -1
  498. package/dist/components/Switch/Switch.cjs.js.map +1 -1
  499. package/dist/components/Switch/Switch.es.js +26 -26
  500. package/dist/components/Switch/Switch.es.js.map +1 -1
  501. package/dist/components/Table/BaseTable/Collection/collectionParser.cjs.js +1 -1
  502. package/dist/components/Table/BaseTable/Collection/useTableCollection.cjs.js +1 -1
  503. package/dist/components/Table/BaseTable/Table.cjs.js +1 -1
  504. package/dist/components/Table/BaseTable/Table.cjs.js.map +1 -1
  505. package/dist/components/Table/BaseTable/Table.es.js +37 -37
  506. package/dist/components/Table/BaseTable/Table.es.js.map +1 -1
  507. package/dist/components/Table/BaseTable/elements/TableBody.cjs.js +1 -1
  508. package/dist/components/Table/BaseTable/elements/TableBody.cjs.js.map +1 -1
  509. package/dist/components/Table/BaseTable/elements/TableBody.es.js +2 -2
  510. package/dist/components/Table/BaseTable/elements/TableBody.es.js.map +1 -1
  511. package/dist/components/Table/BaseTable/elements/TableCell.cjs.js +1 -1
  512. package/dist/components/Table/BaseTable/elements/TableCell.cjs.js.map +1 -1
  513. package/dist/components/Table/BaseTable/elements/TableCell.es.js +7 -7
  514. package/dist/components/Table/BaseTable/elements/TableCell.es.js.map +1 -1
  515. package/dist/components/Table/BaseTable/elements/TableHeader.cjs.js +1 -1
  516. package/dist/components/Table/BaseTable/elements/TableHeader.cjs.js.map +1 -1
  517. package/dist/components/Table/BaseTable/elements/TableHeader.es.js +2 -2
  518. package/dist/components/Table/BaseTable/elements/TableHeader.es.js.map +1 -1
  519. package/dist/components/Table/BaseTable/elements/TableHeaderCell.cjs.js +1 -1
  520. package/dist/components/Table/BaseTable/elements/TableHeaderCell.cjs.js.map +1 -1
  521. package/dist/components/Table/BaseTable/elements/TableHeaderCell.es.js +4 -4
  522. package/dist/components/Table/BaseTable/elements/TableHeaderCell.es.js.map +1 -1
  523. package/dist/components/Table/BaseTable/elements/TableHeaderRow.cjs.js +1 -1
  524. package/dist/components/Table/BaseTable/elements/TableHeaderRow.cjs.js.map +1 -1
  525. package/dist/components/Table/BaseTable/elements/TableHeaderRow.es.js +2 -2
  526. package/dist/components/Table/BaseTable/elements/TableHeaderRow.es.js.map +1 -1
  527. package/dist/components/Table/BaseTable/elements/TableRoot.cjs.js +1 -1
  528. package/dist/components/Table/BaseTable/elements/TableRoot.cjs.js.map +1 -1
  529. package/dist/components/Table/BaseTable/elements/TableRoot.es.js +7 -7
  530. package/dist/components/Table/BaseTable/elements/TableRoot.es.js.map +1 -1
  531. package/dist/components/Table/BaseTable/elements/TableRow.cjs.js +1 -1
  532. package/dist/components/Table/BaseTable/elements/TableRow.cjs.js.map +1 -1
  533. package/dist/components/Table/BaseTable/elements/TableRow.es.js +2 -2
  534. package/dist/components/Table/BaseTable/elements/TableRow.es.js.map +1 -1
  535. package/dist/components/Table/DataTable/DataTable.cjs.js +1 -1
  536. package/dist/components/Table/DataTable/DataTable.cjs.js.map +1 -1
  537. package/dist/components/Table/DataTable/DataTable.es.js +70 -70
  538. package/dist/components/Table/DataTable/DataTable.es.js.map +1 -1
  539. package/dist/components/Table/DataTable/DataTableRow.cjs.js +1 -1
  540. package/dist/components/Table/DataTable/DataTableRow.cjs.js.map +1 -1
  541. package/dist/components/Table/DataTable/DataTableRow.es.js +15 -21
  542. package/dist/components/Table/DataTable/DataTableRow.es.js.map +1 -1
  543. package/dist/components/Text/TextCountdown/TextCountdown.cjs.js +1 -1
  544. package/dist/components/Text/TextCountdown/TextCountdown.cjs.js.map +1 -1
  545. package/dist/components/Text/TextCountdown/TextCountdown.es.js +12 -12
  546. package/dist/components/Text/TextCountdown/TextCountdown.es.js.map +1 -1
  547. package/dist/components/Text/TextEllipsis/TextEllipsis.cjs.js +1 -1
  548. package/dist/components/Text/TextEllipsis/TextEllipsis.cjs.js.map +1 -1
  549. package/dist/components/Text/TextEllipsis/TextEllipsis.es.js +8 -8
  550. package/dist/components/Text/TextEllipsis/TextEllipsis.es.js.map +1 -1
  551. package/dist/components/Text/TextEmphasis/TextEmphasis.cjs.js +1 -1
  552. package/dist/components/Text/TextEmphasis/TextEmphasis.cjs.js.map +1 -1
  553. package/dist/components/Text/TextEmphasis/TextEmphasis.es.js +17 -17
  554. package/dist/components/Text/TextEmphasis/TextEmphasis.es.js.map +1 -1
  555. package/dist/components/ThemeProvider.cjs.js +1 -1
  556. package/dist/components/ThemeProvider.cjs.js.map +1 -1
  557. package/dist/components/ThemeProvider.es.js +17 -17
  558. package/dist/components/ThemeProvider.es.js.map +1 -1
  559. package/dist/components/Tombstone/Tombstone.cjs.js +1 -1
  560. package/dist/components/Tombstone/Tombstone.cjs.js.map +1 -1
  561. package/dist/components/Tombstone/Tombstone.es.js +12 -12
  562. package/dist/components/Tombstone/Tombstone.es.js.map +1 -1
  563. package/dist/components/Tooltip/ResponsiveTooltip.cjs.js +1 -1
  564. package/dist/components/Tooltip/ResponsiveTooltip.cjs.js.map +1 -1
  565. package/dist/components/Tooltip/ResponsiveTooltip.es.js +34 -34
  566. package/dist/components/Tooltip/ResponsiveTooltip.es.js.map +1 -1
  567. package/dist/components/Tooltip/Tooltip.cjs.js +1 -1
  568. package/dist/components/Tooltip/Tooltip.cjs.js.map +1 -1
  569. package/dist/components/Tooltip/Tooltip.es.js +30 -30
  570. package/dist/components/Tooltip/Tooltip.es.js.map +1 -1
  571. package/dist/components/Waveform/Waveform.cjs.js +1 -1
  572. package/dist/components/Waveform/Waveform.cjs.js.map +1 -1
  573. package/dist/components/Waveform/Waveform.es.js +77 -77
  574. package/dist/components/Waveform/Waveform.es.js.map +1 -1
  575. package/dist/components/Waveform/WaveformBar.cjs.js +1 -1
  576. package/dist/components/Waveform/WaveformBar.cjs.js.map +1 -1
  577. package/dist/components/Waveform/WaveformBar.es.js +22 -22
  578. package/dist/components/Waveform/WaveformBar.es.js.map +1 -1
  579. package/dist/hooks/useBreakpoint.cjs.js +1 -1
  580. package/dist/hooks/useIsClosing.cjs.js +1 -1
  581. package/dist/hooks/useMergedRef.cjs.js +1 -1
  582. package/dist/hooks/usePalette.cjs.js +1 -1
  583. package/package.json +1 -1
  584. package/dist/_virtual/jsx-runtime.cjs.js +0 -2
  585. package/dist/_virtual/jsx-runtime.cjs.js.map +0 -1
  586. package/dist/_virtual/jsx-runtime.es.js +0 -5
  587. package/dist/_virtual/jsx-runtime.es.js.map +0 -1
  588. package/dist/_virtual/react-jsx-runtime.development.cjs.js +0 -2
  589. package/dist/_virtual/react-jsx-runtime.development.cjs.js.map +0 -1
  590. package/dist/_virtual/react-jsx-runtime.development.es.js +0 -5
  591. package/dist/_virtual/react-jsx-runtime.development.es.js.map +0 -1
  592. package/dist/_virtual/react-jsx-runtime.production.cjs.js +0 -2
  593. package/dist/_virtual/react-jsx-runtime.production.cjs.js.map +0 -1
  594. package/dist/_virtual/react-jsx-runtime.production.es.js +0 -5
  595. package/dist/_virtual/react-jsx-runtime.production.es.js.map +0 -1
  596. package/dist/node_modules/react/cjs/react-jsx-runtime.development.cjs.js +0 -15
  597. package/dist/node_modules/react/cjs/react-jsx-runtime.development.cjs.js.map +0 -1
  598. package/dist/node_modules/react/cjs/react-jsx-runtime.development.es.js +0 -245
  599. package/dist/node_modules/react/cjs/react-jsx-runtime.development.es.js.map +0 -1
  600. package/dist/node_modules/react/cjs/react-jsx-runtime.production.cjs.js +0 -10
  601. package/dist/node_modules/react/cjs/react-jsx-runtime.production.cjs.js.map +0 -1
  602. package/dist/node_modules/react/cjs/react-jsx-runtime.production.es.js +0 -36
  603. package/dist/node_modules/react/cjs/react-jsx-runtime.production.es.js.map +0 -1
  604. package/dist/node_modules/react/jsx-runtime.cjs.js +0 -2
  605. package/dist/node_modules/react/jsx-runtime.cjs.js.map +0 -1
  606. package/dist/node_modules/react/jsx-runtime.es.js +0 -9
  607. package/dist/node_modules/react/jsx-runtime.es.js.map +0 -1
@@ -1,89 +1,89 @@
1
- import { j as t } from "../../node_modules/react/jsx-runtime.es.js";
2
- import { useState as w, useRef as j, forwardRef as C } from "react";
1
+ import { jsx as t, jsxs as N } from "react/jsx-runtime";
2
+ import { useState as _, useRef as T, forwardRef as x } from "react";
3
3
  import { Tooltip as r } from "radix-ui";
4
- import { useTheme as N } from "../ThemeProvider.es.js";
5
- import { csx as _ } from "../../utils/string.es.js";
6
- import { Overlay as y } from "../Overlay/Overlay.es.js";
4
+ import { useTheme as y } from "../ThemeProvider.es.js";
5
+ import { csx as O } from "../../utils/string.es.js";
6
+ import { Overlay as P } from "../Overlay/Overlay.es.js";
7
7
  /* empty css */
8
8
  /* empty css */
9
- const g = C(
9
+ const v = x(
10
10
  ({
11
- content: a,
11
+ content: s,
12
12
  arrow: o,
13
13
  placement: e = "top",
14
14
  align: l = "center",
15
15
  "data-testid": p
16
16
  }, d) => {
17
- const { style: i, className: s } = N();
18
- return /* @__PURE__ */ t.jsx(
17
+ const { style: i, className: n } = y();
18
+ return /* @__PURE__ */ t(
19
19
  r.Content,
20
20
  {
21
21
  ref: d,
22
22
  side: e,
23
23
  align: l,
24
- className: _("proton__Tooltip", "proton-Elevation--glass", s),
24
+ className: O("proton__Tooltip", "proton-Elevation--glass", n),
25
25
  style: i,
26
26
  sideOffset: 8,
27
27
  "data-testid": p,
28
- children: /* @__PURE__ */ t.jsx(
29
- y,
28
+ children: /* @__PURE__ */ t(
29
+ P,
30
30
  {
31
- arrow: o && /* @__PURE__ */ t.jsx(r.Arrow, { width: 8, height: 8, children: /* @__PURE__ */ t.jsx("svg", { width: 8, height: 8, viewBox: "0 0 8 8", children: /* @__PURE__ */ t.jsx("path", { d: "M0 0 L4 4 L8 0" }) }) }),
32
- children: a
31
+ arrow: o && /* @__PURE__ */ t(r.Arrow, { width: 8, height: 8, children: /* @__PURE__ */ t("svg", { width: 8, height: 8, viewBox: "0 0 8 8", children: /* @__PURE__ */ t("path", { d: "M0 0 L4 4 L8 0" }) }) }),
32
+ children: s
33
33
  }
34
34
  )
35
35
  }
36
36
  );
37
37
  }
38
38
  );
39
- g.displayName = "ProtonUITooltipContent";
39
+ v.displayName = "ProtonUITooltipContent";
40
40
  function R({
41
- arrow: a = !0,
41
+ arrow: s = !0,
42
42
  children: o,
43
43
  content: e,
44
44
  delay: l = 100,
45
45
  placement: p = "top",
46
46
  align: d = "center",
47
47
  isDisabled: i,
48
- defaultOpen: s = !1,
48
+ defaultOpen: n = !1,
49
49
  onOpenChange: h,
50
50
  disableTriggerClick: m,
51
- "data-testid": T
51
+ "data-testid": w
52
52
  }) {
53
- const [c, u] = w(s), n = j(!1), x = j(!1);
53
+ const [c, u] = _(n), a = T(!1), g = T(!1);
54
54
  if (e === "") return null;
55
- const v = (f) => {
56
- f && !n.current && (x.current = !0), h && h(f), n.current || u(f), n.current = !1;
55
+ const C = (f) => {
56
+ f && !a.current && (g.current = !0), h && h(f), a.current || u(f), a.current = !1;
57
57
  };
58
- return /* @__PURE__ */ t.jsx(r.Provider, { children: /* @__PURE__ */ t.jsxs(
58
+ return /* @__PURE__ */ t(r.Provider, { children: /* @__PURE__ */ N(
59
59
  r.Root,
60
60
  {
61
61
  open: c,
62
- defaultOpen: s,
63
- onOpenChange: v,
62
+ defaultOpen: n,
63
+ onOpenChange: C,
64
64
  delayDuration: l,
65
65
  children: [
66
- /* @__PURE__ */ t.jsx(r.Trigger, { asChild: !0, children: m ? /* @__PURE__ */ t.jsx("span", { "aria-label": "Show tooltip", className: "proton__Tooltip-trigger", children: o }) : /* @__PURE__ */ t.jsx(
66
+ /* @__PURE__ */ t(r.Trigger, { asChild: !0, children: m ? /* @__PURE__ */ t("span", { "aria-label": "Show tooltip", className: "proton__Tooltip-trigger", children: o }) : /* @__PURE__ */ t(
67
67
  "div",
68
68
  {
69
69
  role: "button",
70
70
  "aria-label": "Show tooltip",
71
71
  "data-hovered": c,
72
72
  onClick: () => {
73
- m || i || x.current || (n.current = !0, u(!c));
73
+ m || i || g.current || (a.current = !0, u(!c));
74
74
  },
75
75
  className: "proton__Tooltip-trigger",
76
76
  children: o
77
77
  }
78
78
  ) }),
79
- !i && /* @__PURE__ */ t.jsx(r.Portal, { children: /* @__PURE__ */ t.jsx(
80
- g,
79
+ !i && /* @__PURE__ */ t(r.Portal, { children: /* @__PURE__ */ t(
80
+ v,
81
81
  {
82
82
  content: e,
83
83
  placement: p,
84
84
  align: d,
85
- arrow: a,
86
- "data-testid": T
85
+ arrow: s,
86
+ "data-testid": w
87
87
  }
88
88
  ) })
89
89
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.es.js","sources":["../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["\"use client\";\n\nimport { CSSProperties, forwardRef, ReactNode, useRef, useState } from \"react\";\nimport { Tooltip as RadixTooltip } from \"radix-ui\";\nimport { useTheme } from \"../ThemeProvider\";\nimport { csx } from \"../../utils/string\";\nimport type { RadixAlign, RadixSide } from \"../../constants/placement\";\n\nimport { Overlay } from \"../Overlay/Overlay\";\nimport \"./Tooltip.css\";\nimport \"../Elevation/Elevation.css\";\n\ntype TooltipContentProps = Pick<\n TooltipProps,\n \"content\" | \"arrow\" | \"placement\" | \"align\" | \"data-testid\"\n>;\n\nconst TooltipContent = forwardRef<HTMLDivElement, TooltipContentProps>(\n (\n {\n content,\n arrow,\n placement = \"top\",\n align = \"center\",\n \"data-testid\": testId,\n },\n ref,\n ) => {\n const { style, className } = useTheme();\n\n return (\n <RadixTooltip.Content\n ref={ref}\n side={placement}\n align={align}\n className={csx(\"proton__Tooltip\", \"proton-Elevation--glass\", className)}\n style={style as CSSProperties}\n sideOffset={8}\n data-testid={testId}\n >\n <Overlay\n arrow={\n arrow && (\n <RadixTooltip.Arrow width={8} height={8}>\n <svg width={8} height={8} viewBox=\"0 0 8 8\">\n <path d=\"M0 0 L4 4 L8 0\" />\n </svg>\n </RadixTooltip.Arrow>\n )\n }\n >\n {content}\n </Overlay>\n </RadixTooltip.Content>\n );\n },\n);\n\nTooltipContent.displayName = \"ProtonUITooltipContent\";\n\n/** Radix `Tooltip.Content` `side` */\nexport type TooltipPlacement = RadixSide;\n/** Radix `Tooltip.Content` `align` */\nexport type TooltipAlign = RadixAlign;\n\nexport interface TooltipProps {\n /**\n * Whether to show an arrow pointing to the tooltip.\n * @default true\n */\n arrow?: boolean;\n /**\n * The children to display in the tooltip.\n */\n children: ReactNode;\n /**\n * The content to display in the tooltip. Zero-length titles string are never displayed.\n */\n content: string | ReactNode;\n /**\n * A test ID.\n */\n \"data-testid\"?: string;\n /**\n * Side of the trigger to place the tooltip.\n * @see {@link TooltipPlacement}\n * @default \"top\"\n */\n placement?: TooltipPlacement;\n /**\n * Alignment along the side.\n * @see {@link TooltipAlign}\n * @default \"center\"\n */\n align?: TooltipAlign;\n /**\n * Whether to disable the trigger click feature.\n * This is useful when using an info only Tooltip that might wrap a clickable element.\n */\n disableTriggerClick?: boolean;\n /**\n * Whether the tooltip is disabled.\n */\n isDisabled?: boolean;\n /**\n * Delay before showing the tooltip (in milliseconds).\n * @default 100\n */\n delay?: number;\n /**\n * Whether the tooltip is open by default.\n * @default false\n */\n defaultOpen?: boolean;\n /**\n * The callback function to call when the tooltip is opened or closed.\n */\n onOpenChange?: (open: boolean) => void;\n}\n\n/**\n * A component that displays a tooltip when the user hovers over the trigger.\n * For mobile, use Popover instead.\n * API:\n * - {@link TooltipProps}\n *\n * @example\n * ```tsx\n <Tooltipcontent={...} placement=\"top\" arrow isDisabled={disabled}>\n {children}\n </Tooltip>\n * ```\n */\nexport function Tooltip({\n arrow = true,\n children,\n content,\n delay = 100,\n placement = \"top\",\n align = \"center\",\n isDisabled,\n defaultOpen = false,\n onOpenChange,\n disableTriggerClick,\n \"data-testid\": testId,\n}: TooltipProps) {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n const triggerClickRef = useRef<boolean>(false);\n const hasHovered = useRef<boolean>(false);\n\n if (content === \"\") return null;\n\n const handleOpenChange = (openState: boolean) => {\n // When opened via hover, we want to disable the trigger click feature as it causes\n // the tooltip state to get out of sync with the trigger state.\n if (openState && !triggerClickRef.current) hasHovered.current = true;\n\n if (onOpenChange) onOpenChange(openState);\n\n // If the tooltip is clicked, it manually calls setIsOpen, so we don't want to call\n // it again here.\n if (!triggerClickRef.current) setIsOpen(openState);\n triggerClickRef.current = false;\n };\n\n return (\n <RadixTooltip.Provider>\n <RadixTooltip.Root\n open={isOpen}\n defaultOpen={defaultOpen}\n onOpenChange={handleOpenChange}\n delayDuration={delay}\n >\n <RadixTooltip.Trigger asChild>\n {disableTriggerClick ? (\n <span aria-label=\"Show tooltip\" className=\"proton__Tooltip-trigger\">\n {children}\n </span>\n ) : (\n <div\n role=\"button\"\n aria-label=\"Show tooltip\"\n data-hovered={isOpen}\n onClick={() => {\n if (disableTriggerClick || isDisabled) return;\n\n // Once hovered it's safe to assume the user isn't trying to use via a touch device,\n // so we can safely disable the trigger click feature.\n if (hasHovered.current) return;\n\n triggerClickRef.current = true;\n setIsOpen(!isOpen);\n }}\n className=\"proton__Tooltip-trigger\"\n >\n {children}\n </div>\n )}\n </RadixTooltip.Trigger>\n {!isDisabled && (\n <RadixTooltip.Portal>\n <TooltipContent\n content={content}\n placement={placement}\n align={align}\n arrow={arrow}\n data-testid={testId}\n />\n </RadixTooltip.Portal>\n )}\n </RadixTooltip.Root>\n </RadixTooltip.Provider>\n );\n}\n\nTooltip.displayName = \"ProtonUITooltip\";\n"],"names":["TooltipContent","forwardRef","content","arrow","placement","align","testId","ref","style","className","useTheme","jsx","RadixTooltip","csx","Overlay","Tooltip","children","delay","isDisabled","defaultOpen","onOpenChange","disableTriggerClick","isOpen","setIsOpen","useState","triggerClickRef","useRef","hasHovered","handleOpenChange","openState","jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"Tooltip.es.js","sources":["../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["\"use client\";\n\nimport { CSSProperties, forwardRef, ReactNode, useRef, useState } from \"react\";\nimport { Tooltip as RadixTooltip } from \"radix-ui\";\nimport { useTheme } from \"../ThemeProvider\";\nimport { csx } from \"../../utils/string\";\nimport type { RadixAlign, RadixSide } from \"../../constants/placement\";\n\nimport { Overlay } from \"../Overlay/Overlay\";\nimport \"./Tooltip.css\";\nimport \"../Elevation/Elevation.css\";\n\ntype TooltipContentProps = Pick<\n TooltipProps,\n \"content\" | \"arrow\" | \"placement\" | \"align\" | \"data-testid\"\n>;\n\nconst TooltipContent = forwardRef<HTMLDivElement, TooltipContentProps>(\n (\n {\n content,\n arrow,\n placement = \"top\",\n align = \"center\",\n \"data-testid\": testId,\n },\n ref,\n ) => {\n const { style, className } = useTheme();\n\n return (\n <RadixTooltip.Content\n ref={ref}\n side={placement}\n align={align}\n className={csx(\"proton__Tooltip\", \"proton-Elevation--glass\", className)}\n style={style as CSSProperties}\n sideOffset={8}\n data-testid={testId}\n >\n <Overlay\n arrow={\n arrow && (\n <RadixTooltip.Arrow width={8} height={8}>\n <svg width={8} height={8} viewBox=\"0 0 8 8\">\n <path d=\"M0 0 L4 4 L8 0\" />\n </svg>\n </RadixTooltip.Arrow>\n )\n }\n >\n {content}\n </Overlay>\n </RadixTooltip.Content>\n );\n },\n);\n\nTooltipContent.displayName = \"ProtonUITooltipContent\";\n\n/** Radix `Tooltip.Content` `side` */\nexport type TooltipPlacement = RadixSide;\n/** Radix `Tooltip.Content` `align` */\nexport type TooltipAlign = RadixAlign;\n\nexport interface TooltipProps {\n /**\n * Whether to show an arrow pointing to the tooltip.\n * @default true\n */\n arrow?: boolean;\n /**\n * The children to display in the tooltip.\n */\n children: ReactNode;\n /**\n * The content to display in the tooltip. Zero-length titles string are never displayed.\n */\n content: string | ReactNode;\n /**\n * A test ID.\n */\n \"data-testid\"?: string;\n /**\n * Side of the trigger to place the tooltip.\n * @see {@link TooltipPlacement}\n * @default \"top\"\n */\n placement?: TooltipPlacement;\n /**\n * Alignment along the side.\n * @see {@link TooltipAlign}\n * @default \"center\"\n */\n align?: TooltipAlign;\n /**\n * Whether to disable the trigger click feature.\n * This is useful when using an info only Tooltip that might wrap a clickable element.\n */\n disableTriggerClick?: boolean;\n /**\n * Whether the tooltip is disabled.\n */\n isDisabled?: boolean;\n /**\n * Delay before showing the tooltip (in milliseconds).\n * @default 100\n */\n delay?: number;\n /**\n * Whether the tooltip is open by default.\n * @default false\n */\n defaultOpen?: boolean;\n /**\n * The callback function to call when the tooltip is opened or closed.\n */\n onOpenChange?: (open: boolean) => void;\n}\n\n/**\n * A component that displays a tooltip when the user hovers over the trigger.\n * For mobile, use Popover instead.\n * API:\n * - {@link TooltipProps}\n *\n * @example\n * ```tsx\n <Tooltipcontent={...} placement=\"top\" arrow isDisabled={disabled}>\n {children}\n </Tooltip>\n * ```\n */\nexport function Tooltip({\n arrow = true,\n children,\n content,\n delay = 100,\n placement = \"top\",\n align = \"center\",\n isDisabled,\n defaultOpen = false,\n onOpenChange,\n disableTriggerClick,\n \"data-testid\": testId,\n}: TooltipProps) {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n const triggerClickRef = useRef<boolean>(false);\n const hasHovered = useRef<boolean>(false);\n\n if (content === \"\") return null;\n\n const handleOpenChange = (openState: boolean) => {\n // When opened via hover, we want to disable the trigger click feature as it causes\n // the tooltip state to get out of sync with the trigger state.\n if (openState && !triggerClickRef.current) hasHovered.current = true;\n\n if (onOpenChange) onOpenChange(openState);\n\n // If the tooltip is clicked, it manually calls setIsOpen, so we don't want to call\n // it again here.\n if (!triggerClickRef.current) setIsOpen(openState);\n triggerClickRef.current = false;\n };\n\n return (\n <RadixTooltip.Provider>\n <RadixTooltip.Root\n open={isOpen}\n defaultOpen={defaultOpen}\n onOpenChange={handleOpenChange}\n delayDuration={delay}\n >\n <RadixTooltip.Trigger asChild>\n {disableTriggerClick ? (\n <span aria-label=\"Show tooltip\" className=\"proton__Tooltip-trigger\">\n {children}\n </span>\n ) : (\n <div\n role=\"button\"\n aria-label=\"Show tooltip\"\n data-hovered={isOpen}\n onClick={() => {\n if (disableTriggerClick || isDisabled) return;\n\n // Once hovered it's safe to assume the user isn't trying to use via a touch device,\n // so we can safely disable the trigger click feature.\n if (hasHovered.current) return;\n\n triggerClickRef.current = true;\n setIsOpen(!isOpen);\n }}\n className=\"proton__Tooltip-trigger\"\n >\n {children}\n </div>\n )}\n </RadixTooltip.Trigger>\n {!isDisabled && (\n <RadixTooltip.Portal>\n <TooltipContent\n content={content}\n placement={placement}\n align={align}\n arrow={arrow}\n data-testid={testId}\n />\n </RadixTooltip.Portal>\n )}\n </RadixTooltip.Root>\n </RadixTooltip.Provider>\n );\n}\n\nTooltip.displayName = \"ProtonUITooltip\";\n"],"names":["TooltipContent","forwardRef","content","arrow","placement","align","testId","ref","style","className","useTheme","jsx","RadixTooltip","csx","Overlay","Tooltip","children","delay","isDisabled","defaultOpen","onOpenChange","disableTriggerClick","isOpen","setIsOpen","useState","triggerClickRef","useRef","hasHovered","handleOpenChange","openState","jsxs"],"mappings":";;;;;;;;AAiBA,MAAMA,IAAiBC;AAAA,EACrB,CACE;AAAA,IACE,SAAAC;AAAA,IACA,OAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,OAAAC,IAAQ;AAAA,IACR,eAAeC;AAAA,EAAA,GAEjBC,MACG;AACH,UAAM,EAAE,OAAAC,GAAO,WAAAC,EAAA,IAAcC,EAAA;AAE7B,WACE,gBAAAC;AAAA,MAACC,EAAa;AAAA,MAAb;AAAA,QACC,KAAAL;AAAA,QACA,MAAMH;AAAA,QACN,OAAAC;AAAA,QACA,WAAWQ,EAAI,mBAAmB,2BAA2BJ,CAAS;AAAA,QACtE,OAAAD;AAAA,QACA,YAAY;AAAA,QACZ,eAAaF;AAAA,QAEb,UAAA,gBAAAK;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,OACEX,KACE,gBAAAQ,EAACC,EAAa,OAAb,EAAmB,OAAO,GAAG,QAAQ,GACpC,UAAA,gBAAAD,EAAC,SAAI,OAAO,GAAG,QAAQ,GAAG,SAAQ,WAChC,4BAAC,QAAA,EAAK,GAAE,iBAAA,CAAiB,EAAA,CAC3B,EAAA,CACF;AAAA,YAIH,UAAAT;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAGN;AACF;AAEAF,EAAe,cAAc;AA2EtB,SAASe,EAAQ;AAAA,EACtB,OAAAZ,IAAQ;AAAA,EACR,UAAAa;AAAA,EACA,SAAAd;AAAA,EACA,OAAAe,IAAQ;AAAA,EACR,WAAAb,IAAY;AAAA,EACZ,OAAAC,IAAQ;AAAA,EACR,YAAAa;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,cAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,eAAef;AACjB,GAAiB;AACf,QAAM,CAACgB,GAAQC,CAAS,IAAIC,EAASL,CAAW,GAC1CM,IAAkBC,EAAgB,EAAK,GACvCC,IAAaD,EAAgB,EAAK;AAExC,MAAIxB,MAAY,GAAI,QAAO;AAE3B,QAAM0B,IAAmB,CAACC,MAAuB;AAG/C,IAAIA,KAAa,CAACJ,EAAgB,cAAoB,UAAU,KAE5DL,OAA2BS,CAAS,GAInCJ,EAAgB,WAASF,EAAUM,CAAS,GACjDJ,EAAgB,UAAU;AAAA,EAC5B;AAEA,SACE,gBAAAd,EAACC,EAAa,UAAb,EACC,UAAA,gBAAAkB;AAAA,IAAClB,EAAa;AAAA,IAAb;AAAA,MACC,MAAMU;AAAA,MACN,aAAAH;AAAA,MACA,cAAcS;AAAA,MACd,eAAeX;AAAA,MAEf,UAAA;AAAA,QAAA,gBAAAN,EAACC,EAAa,SAAb,EAAqB,SAAO,IAC1B,UAAAS,IACC,gBAAAV,EAAC,QAAA,EAAK,cAAW,gBAAe,WAAU,2BACvC,UAAAK,GACH,IAEA,gBAAAL;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAW;AAAA,YACX,gBAAcW;AAAA,YACd,SAAS,MAAM;AACb,cAAID,KAAuBH,KAIvBS,EAAW,YAEfF,EAAgB,UAAU,IAC1BF,EAAU,CAACD,CAAM;AAAA,YACnB;AAAA,YACA,WAAU;AAAA,YAET,UAAAN;AAAA,UAAA;AAAA,QAAA,GAGP;AAAA,QACC,CAACE,KACA,gBAAAP,EAACC,EAAa,QAAb,EACC,UAAA,gBAAAD;AAAA,UAACX;AAAA,UAAA;AAAA,YACC,SAAAE;AAAA,YACA,WAAAE;AAAA,YACA,OAAAC;AAAA,YACA,OAAAF;AAAA,YACA,eAAaG;AAAA,UAAA;AAAA,QAAA,EACf,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAGN;AAEJ;AAEAS,EAAQ,cAAc;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../../node_modules/react/jsx-runtime.cjs.js"),v=require("react"),H=require("../ThemeProvider.cjs.js");;/* empty css */const L=require("./WaveformBar.cjs.js"),$=require("../../utils/string.cjs.js"),X=K(100);function F({data:e,resolution:t=2,startDuration:s,endDuration:a,currentTime:m=0,showTimestamps:g=!1,totalDuration:l,disabled:f,disabledMessage:d,onClick:h,"data-testid":p}){var S;const{className:_}=H.useTheme(),o=v.useRef(null),[W,B]=v.useState([]),[j,y]=v.useState(null),[q,w]=v.useState(!1),[I,N]=v.useState(!1),E=e||X,M=t;v.useEffect(()=>{if(!o.current)return;const r=i=>{const x=Math.floor(i/(t+M)),R=G(E,x);B(R)},n=o.current.clientWidth;r(n);const c=new ResizeObserver(i=>{i&&i[0]&&r(i[0].contentRect.width)});return c.observe(o.current),()=>c.disconnect()},[E,t,M]),v.useEffect(()=>{const r=setTimeout(()=>w(!0),50),n=setTimeout(()=>N(!0),500);return()=>{clearTimeout(r),clearTimeout(n)}},[]);const A=r=>{if(!o.current)return;const n=o.current.getBoundingClientRect(),i=(r.clientX-n.left)/n.width*l;y(i)},z=()=>{y(null)},O=t+M,b=(r,n)=>{var x;const c=r/l*100;return(n==="start"?Math.floor(c/100*W.length):Math.ceil(c/100*W.length))*O/((x=o.current)==null?void 0:x.clientWidth)*100},V=((S=o.current)==null?void 0:S.clientWidth)||0,P=v.useMemo(()=>f&&d?d:e?null:"Waveform Unavailable",[f,d,e]);return u.jsxRuntimeExports.jsxs("div",{className:$.csx("proton-Waveform",_),"data-testid":p,children:[g&&u.jsxRuntimeExports.jsx(T,{direction:"left",seconds:m}),u.jsxRuntimeExports.jsxs("div",{ref:o,className:"proton-Waveform__container",onMouseMove:A,onMouseLeave:z,onClick:r=>{if(!o.current||f)return;const n=o.current.getBoundingClientRect(),i=(r.clientX-n.left)/n.width*l;h==null||h(i,r)},"data-disabled":f,"data-testid":"waveform-container",children:[s!==void 0&&a!==void 0&&u.jsxRuntimeExports.jsx("div",{className:"proton-Waveform__active-region",style:{left:o.current?`calc(${b(s,"start")}%`:"0%",right:o.current?`calc(${100-b(a,"end")}% - 2px)`:"0%"}}),j!==null&&u.jsxRuntimeExports.jsx("div",{className:"proton-Waveform__hover-line",style:{left:`${j/l*100}%`}}),W.map((r,n)=>{const c=n/W.length*l,i=s!==void 0&&a!==void 0&&(c<s||c>a),x=m===0?!1:c<=m,R=j!==null&&c<=j;return u.jsxRuntimeExports.jsx(L.WaveformBar,{amplitude:r,isDisabled:f||i,isPlayed:x,isHovered:R,isVisible:q,hasAnimated:I,resolution:t,spacing:M,index:n},n)})]}),P&&u.jsxRuntimeExports.jsx("div",{className:"proton-Waveform__bar-unavailable",style:{fontSize:V<325?"0.85rem":"1rem"},children:P}),g&&u.jsxRuntimeExports.jsx(T,{direction:"right",seconds:l})]})}function T({direction:e,seconds:t}){return u.jsxRuntimeExports.jsx("div",{className:$.csx("proton-Waveform__timestamp",`proton-Waveform__timestamp--${e}`),children:U(t)})}function U(e){const t=Math.floor(e/60),s=Math.floor(e%60);return`${t}:${s<10?"0":""}${s.toFixed(0)}`}function G(e,t){const s=e.length,a=s/t,m=new Array(t).fill(0).map((g,l)=>{const f=l*a,d=Math.floor(f),h=Math.min(d+1,s-1),p=f-d;return e[d]*(1-p)+e[h]*p});return J(m)}function J(e){const t=Math.min(...e),s=Math.max(...e);return e.map(a=>{const m=(a-t)/(s-t);return Math.max(m*.8+.1,.1)})}function K(e){return Array.from({length:e},(t,s)=>{const m=s/(e-1)*6*2*Math.PI-Math.PI/2;return Math.sin(m)*.5+.5})}exports.Waveform=F;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("react/jsx-runtime"),v=require("react"),E=require("../ThemeProvider.cjs.js");;/* empty css */const L=require("./WaveformBar.cjs.js"),w=require("../../utils/string.cjs.js"),X=K(100);function F({data:e,resolution:t=2,startDuration:s,endDuration:a,currentTime:l=0,showTimestamps:_=!1,totalDuration:u,disabled:f,disabledMessage:d,onClick:p,"data-testid":x}){var T;const{className:y}=E.useTheme(),o=v.useRef(null),[W,I]=v.useState([]),[M,b]=v.useState(null),[N,$]=v.useState(!1),[q,A]=v.useState(!1),P=e||X,g=t;v.useEffect(()=>{if(!o.current)return;const r=i=>{const h=Math.floor(i/(t+g)),j=G(P,h);I(j)},n=o.current.clientWidth;r(n);const c=new ResizeObserver(i=>{i&&i[0]&&r(i[0].contentRect.width)});return c.observe(o.current),()=>c.disconnect()},[P,t,g]),v.useEffect(()=>{const r=setTimeout(()=>$(!0),50),n=setTimeout(()=>A(!0),500);return()=>{clearTimeout(r),clearTimeout(n)}},[]);const z=r=>{if(!o.current)return;const n=o.current.getBoundingClientRect(),i=(r.clientX-n.left)/n.width*u;b(i)},O=()=>{b(null)},V=t+g,R=(r,n)=>{var h;const c=r/u*100;return(n==="start"?Math.floor(c/100*W.length):Math.ceil(c/100*W.length))*V/((h=o.current)==null?void 0:h.clientWidth)*100},H=((T=o.current)==null?void 0:T.clientWidth)||0,S=v.useMemo(()=>f&&d?d:e?null:"Waveform Unavailable",[f,d,e]);return m.jsxs("div",{className:w.csx("proton-Waveform",y),"data-testid":x,children:[_&&m.jsx(B,{direction:"left",seconds:l}),m.jsxs("div",{ref:o,className:"proton-Waveform__container",onMouseMove:z,onMouseLeave:O,onClick:r=>{if(!o.current||f)return;const n=o.current.getBoundingClientRect(),i=(r.clientX-n.left)/n.width*u;p==null||p(i,r)},"data-disabled":f,"data-testid":"waveform-container",children:[s!==void 0&&a!==void 0&&m.jsx("div",{className:"proton-Waveform__active-region",style:{left:o.current?`calc(${R(s,"start")}%`:"0%",right:o.current?`calc(${100-R(a,"end")}% - 2px)`:"0%"}}),M!==null&&m.jsx("div",{className:"proton-Waveform__hover-line",style:{left:`${M/u*100}%`}}),W.map((r,n)=>{const c=n/W.length*u,i=s!==void 0&&a!==void 0&&(c<s||c>a),h=l===0?!1:c<=l,j=M!==null&&c<=M;return m.jsx(L.WaveformBar,{amplitude:r,isDisabled:f||i,isPlayed:h,isHovered:j,isVisible:N,hasAnimated:q,resolution:t,spacing:g,index:n},n)})]}),S&&m.jsx("div",{className:"proton-Waveform__bar-unavailable",style:{fontSize:H<325?"0.85rem":"1rem"},children:S}),_&&m.jsx(B,{direction:"right",seconds:u})]})}function B({direction:e,seconds:t}){return m.jsx("div",{className:w.csx("proton-Waveform__timestamp",`proton-Waveform__timestamp--${e}`),children:U(t)})}function U(e){const t=Math.floor(e/60),s=Math.floor(e%60);return`${t}:${s<10?"0":""}${s.toFixed(0)}`}function G(e,t){const s=e.length,a=s/t,l=new Array(t).fill(0).map((_,u)=>{const f=u*a,d=Math.floor(f),p=Math.min(d+1,s-1),x=f-d;return e[d]*(1-x)+e[p]*x});return J(l)}function J(e){const t=Math.min(...e),s=Math.max(...e);return e.map(a=>{const l=(a-t)/(s-t);return Math.max(l*.8+.1,.1)})}function K(e){return Array.from({length:e},(t,s)=>{const l=s/(e-1)*6*2*Math.PI-Math.PI/2;return Math.sin(l)*.5+.5})}exports.Waveform=F;
2
2
  //# sourceMappingURL=Waveform.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Waveform.cjs.js","sources":["../../../src/components/Waveform/Waveform.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { csx } from \"../../utils\";\nimport { useTheme } from \"../ThemeProvider\";\nimport \"./Waveform.css\";\nimport { WaveformBar } from \"./WaveformBar\";\n\nexport interface WaveformProps {\n /**\n * Array of normalized amplitude values (0-1) representing the waveform.\n * If not provided, uses a sample sine wave.\n */\n data?: number[];\n\n /**\n * Current playback position in seconds.\n */\n currentTime?: number;\n\n /**\n * Test ID for testing purposes.\n */\n \"data-testid\"?: string;\n\n /**\n * Whether the entire waveform is disabled.\n */\n disabled?: boolean;\n\n /**\n * Reason for the waveform being disabled.\n */\n disabledMessage?: string;\n\n /**\n * End time to display until in seconds.\n */\n endDuration?: number;\n\n /**\n * Click handler that receives the clicked position (0-1) and event.\n */\n onClick?: (position: number, e: React.MouseEvent<HTMLDivElement>) => void;\n\n /**\n * Width in pixels of each waveform bar.\n */\n resolution?: number;\n\n /**\n * Whether to show timestamp markers.\n */\n showTimestamps?: boolean;\n\n /**\n * Start time to display from in seconds.\n */\n startDuration?: number;\n\n /**\n * Total duration of the audio in seconds.\n */\n totalDuration: number;\n}\n\nconst sampleWaveform = generateSampleWaveformData(100);\n\n/**\n * A waveform visualization component that displays audio data with interactive features.\n *\n * API:\n * - {@link WaveformProps}\n */\nexport function Waveform({\n data: waveformData,\n resolution = 2,\n startDuration,\n endDuration,\n currentTime = 0,\n showTimestamps = false,\n totalDuration,\n disabled,\n disabledMessage,\n onClick,\n \"data-testid\": testId,\n}: WaveformProps) {\n const { className } = useTheme();\n const containerRef = useRef<HTMLDivElement>(null);\n const [processedWaveform, setProcessedWaveform] = useState<number[]>([]);\n const [hoverPosition, setHoverPosition] = useState<number | null>(null);\n const [isVisible, setIsVisible] = useState(false);\n const [hasAnimated, setHasAnimated] = useState(false);\n\n const waveform = waveformData || sampleWaveform;\n\n const spacing = resolution;\n\n useEffect(() => {\n if (!containerRef.current) return;\n\n const processWaveform = (width: number) => {\n const numBars = Math.floor(width / (resolution + spacing));\n const processed = resampleData(waveform, numBars);\n setProcessedWaveform(processed);\n };\n\n const initialWidth = containerRef.current.clientWidth;\n processWaveform(initialWidth);\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (entries && entries[0]) {\n processWaveform(entries[0].contentRect.width);\n }\n });\n\n resizeObserver.observe(containerRef.current);\n\n return () => resizeObserver.disconnect();\n }, [waveform, resolution, spacing]);\n\n useEffect(() => {\n const visibilityTimer = setTimeout(() => setIsVisible(true), 50);\n const animationTimer = setTimeout(() => setHasAnimated(true), 500);\n\n return () => {\n clearTimeout(visibilityTimer);\n clearTimeout(animationTimer);\n };\n }, []);\n\n const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!containerRef.current) return;\n const rect = containerRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const position = (x / rect.width) * totalDuration;\n setHoverPosition(position);\n };\n\n const handleMouseLeave = () => {\n setHoverPosition(null);\n };\n\n // Calculate the width of a single bar including spacing\n const barTotalWidth = resolution + spacing;\n\n // Find the nearest bar boundaries for start and end durations\n const getBarPosition = (time: number, direction: \"start\" | \"end\") => {\n const position = (time / totalDuration) * 100;\n const barIndex =\n direction === \"start\"\n ? Math.floor((position / 100) * processedWaveform.length)\n : Math.ceil((position / 100) * processedWaveform.length);\n\n return (\n ((barIndex * barTotalWidth) / containerRef.current?.clientWidth!) * 100\n );\n };\n\n const containerWidth = containerRef.current?.clientWidth || 0;\n const waveformMessage = useMemo(() => {\n if (disabled && disabledMessage) return disabledMessage;\n if (!waveformData) return \"Waveform Unavailable\";\n\n return null;\n }, [disabled, disabledMessage, waveformData]);\n\n return (\n <div className={csx(\"proton-Waveform\", className)} data-testid={testId}>\n {showTimestamps && (\n <TimestampBlock direction=\"left\" seconds={currentTime} />\n )}\n <div\n ref={containerRef}\n className=\"proton-Waveform__container\"\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n onClick={(e) => {\n if (!containerRef.current || disabled) return;\n const rect = containerRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const position = (x / rect.width) * totalDuration;\n onClick?.(position, e);\n }}\n data-disabled={disabled}\n data-testid=\"waveform-container\"\n >\n {startDuration !== undefined && endDuration !== undefined && (\n <div\n className=\"proton-Waveform__active-region\"\n style={{\n left: containerRef.current\n ? `calc(${getBarPosition(startDuration, \"start\")}%`\n : \"0%\",\n right: containerRef.current\n ? `calc(${100 - getBarPosition(endDuration, \"end\")}% - 2px)`\n : \"0%\",\n }}\n />\n )}\n {hoverPosition !== null && (\n <div\n className=\"proton-Waveform__hover-line\"\n style={{\n left: `${(hoverPosition / totalDuration) * 100}%`,\n }}\n />\n )}\n {processedWaveform.map((amplitude, index) => {\n const position = (index / processedWaveform.length) * totalDuration;\n const isBarOutsideActiveRegion =\n startDuration !== undefined &&\n endDuration !== undefined &&\n (position < startDuration || position > endDuration);\n const isPlayed = currentTime === 0 ? false : position <= currentTime;\n const isHovered = hoverPosition !== null && position <= hoverPosition;\n\n return (\n <WaveformBar\n key={index}\n amplitude={amplitude}\n isDisabled={disabled || isBarOutsideActiveRegion}\n isPlayed={isPlayed}\n isHovered={isHovered}\n isVisible={isVisible}\n hasAnimated={hasAnimated}\n resolution={resolution}\n spacing={spacing}\n index={index}\n />\n );\n })}\n </div>\n\n {waveformMessage && (\n <div\n className=\"proton-Waveform__bar-unavailable\"\n style={{\n fontSize: containerWidth < 325 ? \"0.85rem\" : \"1rem\",\n }}\n >\n {waveformMessage}\n </div>\n )}\n\n {showTimestamps && (\n <TimestampBlock direction=\"right\" seconds={totalDuration} />\n )}\n </div>\n );\n}\n\nfunction TimestampBlock({\n direction,\n seconds,\n}: {\n direction: \"left\" | \"right\";\n seconds: number;\n}) {\n return (\n <div\n className={csx(\n \"proton-Waveform__timestamp\",\n `proton-Waveform__timestamp--${direction}`,\n )}\n >\n {formatTimestamp(seconds)}\n </div>\n );\n}\n\n/** Formats seconds into MM:SS timestamp string\n * @param {number} seconds - Number of seconds to format\n * @returns {string} Formatted timestamp string in MM:SS format\n */\n\nfunction formatTimestamp(seconds: number) {\n const minutes = Math.floor(seconds / 60);\n const remainingSeconds = Math.floor(seconds % 60);\n return `${minutes}:${\n remainingSeconds < 10 ? \"0\" : \"\"\n }${remainingSeconds.toFixed(0)}`;\n}\n\n/** Takes an array of waveform data and rescales it to any length\n * @param {array} initialData - original waveform data\n * @param {number} finalArrayLength - How long do you want the returned array?\n * @param {number} height - Height of the waveform container\n */\n\nfunction resampleData(initialData: number[], finalArrayLength: number) {\n const initialArrayLength = initialData.length;\n // How many samples from the original data do we skip per new sample?\n const step = initialArrayLength / finalArrayLength;\n\n // Create new array with desired length\n const resampledData = new Array(finalArrayLength)\n .fill(0)\n .map((_, newIndex) => {\n // Calculate position in original array\n const position = newIndex * step;\n const leftIndex = Math.floor(position);\n const rightIndex = Math.min(leftIndex + 1, initialArrayLength - 1);\n\n // Calculate weights for interpolation\n const fraction = position - leftIndex;\n\n // Linear interpolation between adjacent samples\n const newVal =\n initialData[leftIndex] * (1 - fraction) +\n initialData[rightIndex] * fraction;\n\n return newVal;\n });\n\n return scaleData(resampledData);\n}\n\n/** Takes an array of waveform data and scales it based on the desired pixel height\n * @param {array} data – Array of waveform data\n * @param {number} height - Height of the waveform container\n */\nfunction scaleData(data: number[]) {\n const min = Math.min(...data);\n const max = Math.max(...data);\n\n return data.map((item) => {\n // Normalize to 0-1 range first\n const normalized = (item - min) / (max - min);\n // Then scale to desired height (using 0.1 as minimum to ensure visibility)\n return Math.max(normalized * 0.8 + 0.1, 0.1);\n });\n}\n\n/** Generates a sample sine wave waveform data array\n * @param {number} length - Length of the waveform data array\n * @returns {number[]} Array of normalized amplitude values (0-1) representing the waveform\n */\n\nfunction generateSampleWaveformData(length: number) {\n return Array.from({ length }, (_, i) => {\n const cycles = 6;\n // Create 3 complete cycles (6π total) starting at -π/2 (trough)\n const phase = (i / (length - 1)) * cycles * 2 * Math.PI - Math.PI / 2;\n return Math.sin(phase) * 0.5 + 0.5;\n });\n}\n"],"names":["sampleWaveform","generateSampleWaveformData","Waveform","waveformData","resolution","startDuration","endDuration","currentTime","showTimestamps","totalDuration","disabled","disabledMessage","onClick","testId","className","useTheme","containerRef","useRef","processedWaveform","setProcessedWaveform","useState","hoverPosition","setHoverPosition","isVisible","setIsVisible","hasAnimated","setHasAnimated","waveform","spacing","useEffect","processWaveform","width","numBars","processed","resampleData","initialWidth","resizeObserver","entries","visibilityTimer","animationTimer","handleMouseMove","e","rect","position","handleMouseLeave","barTotalWidth","getBarPosition","time","direction","_a","containerWidth","waveformMessage","useMemo","jsxs","csx","jsx","TimestampBlock","amplitude","index","isBarOutsideActiveRegion","isPlayed","isHovered","WaveformBar","seconds","formatTimestamp","minutes","remainingSeconds","initialData","finalArrayLength","initialArrayLength","step","resampledData","_","newIndex","leftIndex","rightIndex","fraction","scaleData","data","min","max","item","normalized","length","i","phase"],"mappings":"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"}
1
+ {"version":3,"file":"Waveform.cjs.js","sources":["../../../src/components/Waveform/Waveform.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { csx } from \"../../utils\";\nimport { useTheme } from \"../ThemeProvider\";\nimport \"./Waveform.css\";\nimport { WaveformBar } from \"./WaveformBar\";\n\nexport interface WaveformProps {\n /**\n * Array of normalized amplitude values (0-1) representing the waveform.\n * If not provided, uses a sample sine wave.\n */\n data?: number[];\n\n /**\n * Current playback position in seconds.\n */\n currentTime?: number;\n\n /**\n * Test ID for testing purposes.\n */\n \"data-testid\"?: string;\n\n /**\n * Whether the entire waveform is disabled.\n */\n disabled?: boolean;\n\n /**\n * Reason for the waveform being disabled.\n */\n disabledMessage?: string;\n\n /**\n * End time to display until in seconds.\n */\n endDuration?: number;\n\n /**\n * Click handler that receives the clicked position (0-1) and event.\n */\n onClick?: (position: number, e: React.MouseEvent<HTMLDivElement>) => void;\n\n /**\n * Width in pixels of each waveform bar.\n */\n resolution?: number;\n\n /**\n * Whether to show timestamp markers.\n */\n showTimestamps?: boolean;\n\n /**\n * Start time to display from in seconds.\n */\n startDuration?: number;\n\n /**\n * Total duration of the audio in seconds.\n */\n totalDuration: number;\n}\n\nconst sampleWaveform = generateSampleWaveformData(100);\n\n/**\n * A waveform visualization component that displays audio data with interactive features.\n *\n * API:\n * - {@link WaveformProps}\n */\nexport function Waveform({\n data: waveformData,\n resolution = 2,\n startDuration,\n endDuration,\n currentTime = 0,\n showTimestamps = false,\n totalDuration,\n disabled,\n disabledMessage,\n onClick,\n \"data-testid\": testId,\n}: WaveformProps) {\n const { className } = useTheme();\n const containerRef = useRef<HTMLDivElement>(null);\n const [processedWaveform, setProcessedWaveform] = useState<number[]>([]);\n const [hoverPosition, setHoverPosition] = useState<number | null>(null);\n const [isVisible, setIsVisible] = useState(false);\n const [hasAnimated, setHasAnimated] = useState(false);\n\n const waveform = waveformData || sampleWaveform;\n\n const spacing = resolution;\n\n useEffect(() => {\n if (!containerRef.current) return;\n\n const processWaveform = (width: number) => {\n const numBars = Math.floor(width / (resolution + spacing));\n const processed = resampleData(waveform, numBars);\n setProcessedWaveform(processed);\n };\n\n const initialWidth = containerRef.current.clientWidth;\n processWaveform(initialWidth);\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (entries && entries[0]) {\n processWaveform(entries[0].contentRect.width);\n }\n });\n\n resizeObserver.observe(containerRef.current);\n\n return () => resizeObserver.disconnect();\n }, [waveform, resolution, spacing]);\n\n useEffect(() => {\n const visibilityTimer = setTimeout(() => setIsVisible(true), 50);\n const animationTimer = setTimeout(() => setHasAnimated(true), 500);\n\n return () => {\n clearTimeout(visibilityTimer);\n clearTimeout(animationTimer);\n };\n }, []);\n\n const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!containerRef.current) return;\n const rect = containerRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const position = (x / rect.width) * totalDuration;\n setHoverPosition(position);\n };\n\n const handleMouseLeave = () => {\n setHoverPosition(null);\n };\n\n // Calculate the width of a single bar including spacing\n const barTotalWidth = resolution + spacing;\n\n // Find the nearest bar boundaries for start and end durations\n const getBarPosition = (time: number, direction: \"start\" | \"end\") => {\n const position = (time / totalDuration) * 100;\n const barIndex =\n direction === \"start\"\n ? Math.floor((position / 100) * processedWaveform.length)\n : Math.ceil((position / 100) * processedWaveform.length);\n\n return (\n ((barIndex * barTotalWidth) / containerRef.current?.clientWidth!) * 100\n );\n };\n\n const containerWidth = containerRef.current?.clientWidth || 0;\n const waveformMessage = useMemo(() => {\n if (disabled && disabledMessage) return disabledMessage;\n if (!waveformData) return \"Waveform Unavailable\";\n\n return null;\n }, [disabled, disabledMessage, waveformData]);\n\n return (\n <div className={csx(\"proton-Waveform\", className)} data-testid={testId}>\n {showTimestamps && (\n <TimestampBlock direction=\"left\" seconds={currentTime} />\n )}\n <div\n ref={containerRef}\n className=\"proton-Waveform__container\"\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n onClick={(e) => {\n if (!containerRef.current || disabled) return;\n const rect = containerRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const position = (x / rect.width) * totalDuration;\n onClick?.(position, e);\n }}\n data-disabled={disabled}\n data-testid=\"waveform-container\"\n >\n {startDuration !== undefined && endDuration !== undefined && (\n <div\n className=\"proton-Waveform__active-region\"\n style={{\n left: containerRef.current\n ? `calc(${getBarPosition(startDuration, \"start\")}%`\n : \"0%\",\n right: containerRef.current\n ? `calc(${100 - getBarPosition(endDuration, \"end\")}% - 2px)`\n : \"0%\",\n }}\n />\n )}\n {hoverPosition !== null && (\n <div\n className=\"proton-Waveform__hover-line\"\n style={{\n left: `${(hoverPosition / totalDuration) * 100}%`,\n }}\n />\n )}\n {processedWaveform.map((amplitude, index) => {\n const position = (index / processedWaveform.length) * totalDuration;\n const isBarOutsideActiveRegion =\n startDuration !== undefined &&\n endDuration !== undefined &&\n (position < startDuration || position > endDuration);\n const isPlayed = currentTime === 0 ? false : position <= currentTime;\n const isHovered = hoverPosition !== null && position <= hoverPosition;\n\n return (\n <WaveformBar\n key={index}\n amplitude={amplitude}\n isDisabled={disabled || isBarOutsideActiveRegion}\n isPlayed={isPlayed}\n isHovered={isHovered}\n isVisible={isVisible}\n hasAnimated={hasAnimated}\n resolution={resolution}\n spacing={spacing}\n index={index}\n />\n );\n })}\n </div>\n\n {waveformMessage && (\n <div\n className=\"proton-Waveform__bar-unavailable\"\n style={{\n fontSize: containerWidth < 325 ? \"0.85rem\" : \"1rem\",\n }}\n >\n {waveformMessage}\n </div>\n )}\n\n {showTimestamps && (\n <TimestampBlock direction=\"right\" seconds={totalDuration} />\n )}\n </div>\n );\n}\n\nfunction TimestampBlock({\n direction,\n seconds,\n}: {\n direction: \"left\" | \"right\";\n seconds: number;\n}) {\n return (\n <div\n className={csx(\n \"proton-Waveform__timestamp\",\n `proton-Waveform__timestamp--${direction}`,\n )}\n >\n {formatTimestamp(seconds)}\n </div>\n );\n}\n\n/** Formats seconds into MM:SS timestamp string\n * @param {number} seconds - Number of seconds to format\n * @returns {string} Formatted timestamp string in MM:SS format\n */\n\nfunction formatTimestamp(seconds: number) {\n const minutes = Math.floor(seconds / 60);\n const remainingSeconds = Math.floor(seconds % 60);\n return `${minutes}:${\n remainingSeconds < 10 ? \"0\" : \"\"\n }${remainingSeconds.toFixed(0)}`;\n}\n\n/** Takes an array of waveform data and rescales it to any length\n * @param {array} initialData - original waveform data\n * @param {number} finalArrayLength - How long do you want the returned array?\n * @param {number} height - Height of the waveform container\n */\n\nfunction resampleData(initialData: number[], finalArrayLength: number) {\n const initialArrayLength = initialData.length;\n // How many samples from the original data do we skip per new sample?\n const step = initialArrayLength / finalArrayLength;\n\n // Create new array with desired length\n const resampledData = new Array(finalArrayLength)\n .fill(0)\n .map((_, newIndex) => {\n // Calculate position in original array\n const position = newIndex * step;\n const leftIndex = Math.floor(position);\n const rightIndex = Math.min(leftIndex + 1, initialArrayLength - 1);\n\n // Calculate weights for interpolation\n const fraction = position - leftIndex;\n\n // Linear interpolation between adjacent samples\n const newVal =\n initialData[leftIndex] * (1 - fraction) +\n initialData[rightIndex] * fraction;\n\n return newVal;\n });\n\n return scaleData(resampledData);\n}\n\n/** Takes an array of waveform data and scales it based on the desired pixel height\n * @param {array} data – Array of waveform data\n * @param {number} height - Height of the waveform container\n */\nfunction scaleData(data: number[]) {\n const min = Math.min(...data);\n const max = Math.max(...data);\n\n return data.map((item) => {\n // Normalize to 0-1 range first\n const normalized = (item - min) / (max - min);\n // Then scale to desired height (using 0.1 as minimum to ensure visibility)\n return Math.max(normalized * 0.8 + 0.1, 0.1);\n });\n}\n\n/** Generates a sample sine wave waveform data array\n * @param {number} length - Length of the waveform data array\n * @returns {number[]} Array of normalized amplitude values (0-1) representing the waveform\n */\n\nfunction generateSampleWaveformData(length: number) {\n return Array.from({ length }, (_, i) => {\n const cycles = 6;\n // Create 3 complete cycles (6π total) starting at -π/2 (trough)\n const phase = (i / (length - 1)) * cycles * 2 * Math.PI - Math.PI / 2;\n return Math.sin(phase) * 0.5 + 0.5;\n });\n}\n"],"names":["sampleWaveform","generateSampleWaveformData","Waveform","waveformData","resolution","startDuration","endDuration","currentTime","showTimestamps","totalDuration","disabled","disabledMessage","onClick","testId","className","useTheme","containerRef","useRef","processedWaveform","setProcessedWaveform","useState","hoverPosition","setHoverPosition","isVisible","setIsVisible","hasAnimated","setHasAnimated","waveform","spacing","useEffect","processWaveform","width","numBars","processed","resampleData","initialWidth","resizeObserver","entries","visibilityTimer","animationTimer","handleMouseMove","e","rect","position","handleMouseLeave","barTotalWidth","getBarPosition","time","direction","_a","containerWidth","waveformMessage","useMemo","jsxs","csx","jsx","TimestampBlock","amplitude","index","isBarOutsideActiveRegion","isPlayed","isHovered","WaveformBar","seconds","formatTimestamp","minutes","remainingSeconds","initialData","finalArrayLength","initialArrayLength","step","resampledData","newIndex","leftIndex","rightIndex","fraction","scaleData","data","min","max","item","normalized","length","_","i","phase"],"mappings":"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"}
@@ -1,102 +1,102 @@
1
- import { j as l } from "../../node_modules/react/jsx-runtime.es.js";
2
- import { useRef as X, useState as g, useEffect as N, useMemo as F } from "react";
3
- import { useTheme as U } from "../ThemeProvider.es.js";
1
+ import { jsxs as R, jsx as v } from "react/jsx-runtime";
2
+ import { useRef as F, useState as x, useEffect as T, useMemo as U } from "react";
3
+ import { useTheme as q } from "../ThemeProvider.es.js";
4
4
  /* empty css */
5
- import { WaveformBar as q } from "./WaveformBar.es.js";
6
- import { csx as T } from "../../utils/string.es.js";
7
- const G = Y(100);
8
- function ne({
5
+ import { WaveformBar as G } from "./WaveformBar.es.js";
6
+ import { csx as A } from "../../utils/string.es.js";
7
+ const J = Z(100);
8
+ function oe({
9
9
  data: e,
10
10
  resolution: t = 2,
11
11
  startDuration: o,
12
12
  endDuration: a,
13
13
  currentTime: m = 0,
14
14
  showTimestamps: _ = !1,
15
- totalDuration: f,
16
- disabled: u,
17
- disabledMessage: v,
15
+ totalDuration: l,
16
+ disabled: f,
17
+ disabledMessage: u,
18
18
  onClick: h,
19
19
  "data-testid": p
20
20
  }) {
21
- var I;
22
- const { className: y } = U(), r = X(null), [x, $] = g([]), [W, b] = g(null), [A, z] = g(!1), [S, V] = g(!1), R = e || G, M = t;
23
- N(() => {
24
- if (!r.current) return;
25
- const s = (i) => {
26
- const d = Math.floor(i / (t + M)), j = K(R, d);
27
- $(j);
28
- }, n = r.current.clientWidth;
29
- s(n);
21
+ var P;
22
+ const { className: b } = q(), s = F(null), [W, z] = x([]), [M, w] = x(null), [S, V] = x(!1), [H, O] = x(!1), B = e || J, g = t;
23
+ T(() => {
24
+ if (!s.current) return;
25
+ const r = (i) => {
26
+ const d = Math.floor(i / (t + g)), y = Q(B, d);
27
+ z(y);
28
+ }, n = s.current.clientWidth;
29
+ r(n);
30
30
  const c = new ResizeObserver((i) => {
31
- i && i[0] && s(i[0].contentRect.width);
31
+ i && i[0] && r(i[0].contentRect.width);
32
32
  });
33
- return c.observe(r.current), () => c.disconnect();
34
- }, [R, t, M]), N(() => {
35
- const s = setTimeout(() => z(!0), 50), n = setTimeout(() => V(!0), 500);
33
+ return c.observe(s.current), () => c.disconnect();
34
+ }, [B, t, g]), T(() => {
35
+ const r = setTimeout(() => V(!0), 50), n = setTimeout(() => O(!0), 500);
36
36
  return () => {
37
- clearTimeout(s), clearTimeout(n);
37
+ clearTimeout(r), clearTimeout(n);
38
38
  };
39
39
  }, []);
40
- const H = (s) => {
41
- if (!r.current) return;
42
- const n = r.current.getBoundingClientRect(), i = (s.clientX - n.left) / n.width * f;
43
- b(i);
44
- }, O = () => {
45
- b(null);
46
- }, E = t + M, w = (s, n) => {
40
+ const j = (r) => {
41
+ if (!s.current) return;
42
+ const n = s.current.getBoundingClientRect(), i = (r.clientX - n.left) / n.width * l;
43
+ w(i);
44
+ }, L = () => {
45
+ w(null);
46
+ }, X = t + g, I = (r, n) => {
47
47
  var d;
48
- const c = s / f * 100;
49
- return (n === "start" ? Math.floor(c / 100 * x.length) : Math.ceil(c / 100 * x.length)) * E / ((d = r.current) == null ? void 0 : d.clientWidth) * 100;
50
- }, L = ((I = r.current) == null ? void 0 : I.clientWidth) || 0, B = F(() => u && v ? v : e ? null : "Waveform Unavailable", [u, v, e]);
51
- return /* @__PURE__ */ l.jsxs("div", { className: T("proton-Waveform", y), "data-testid": p, children: [
52
- _ && /* @__PURE__ */ l.jsx(P, { direction: "left", seconds: m }),
53
- /* @__PURE__ */ l.jsxs(
48
+ const c = r / l * 100;
49
+ return (n === "start" ? Math.floor(c / 100 * W.length) : Math.ceil(c / 100 * W.length)) * X / ((d = s.current) == null ? void 0 : d.clientWidth) * 100;
50
+ }, E = ((P = s.current) == null ? void 0 : P.clientWidth) || 0, N = U(() => f && u ? u : e ? null : "Waveform Unavailable", [f, u, e]);
51
+ return /* @__PURE__ */ R("div", { className: A("proton-Waveform", b), "data-testid": p, children: [
52
+ _ && /* @__PURE__ */ v($, { direction: "left", seconds: m }),
53
+ /* @__PURE__ */ R(
54
54
  "div",
55
55
  {
56
- ref: r,
56
+ ref: s,
57
57
  className: "proton-Waveform__container",
58
- onMouseMove: H,
59
- onMouseLeave: O,
60
- onClick: (s) => {
61
- if (!r.current || u) return;
62
- const n = r.current.getBoundingClientRect(), i = (s.clientX - n.left) / n.width * f;
63
- h == null || h(i, s);
58
+ onMouseMove: j,
59
+ onMouseLeave: L,
60
+ onClick: (r) => {
61
+ if (!s.current || f) return;
62
+ const n = s.current.getBoundingClientRect(), i = (r.clientX - n.left) / n.width * l;
63
+ h == null || h(i, r);
64
64
  },
65
- "data-disabled": u,
65
+ "data-disabled": f,
66
66
  "data-testid": "waveform-container",
67
67
  children: [
68
- o !== void 0 && a !== void 0 && /* @__PURE__ */ l.jsx(
68
+ o !== void 0 && a !== void 0 && /* @__PURE__ */ v(
69
69
  "div",
70
70
  {
71
71
  className: "proton-Waveform__active-region",
72
72
  style: {
73
- left: r.current ? `calc(${w(o, "start")}%` : "0%",
74
- right: r.current ? `calc(${100 - w(a, "end")}% - 2px)` : "0%"
73
+ left: s.current ? `calc(${I(o, "start")}%` : "0%",
74
+ right: s.current ? `calc(${100 - I(a, "end")}% - 2px)` : "0%"
75
75
  }
76
76
  }
77
77
  ),
78
- W !== null && /* @__PURE__ */ l.jsx(
78
+ M !== null && /* @__PURE__ */ v(
79
79
  "div",
80
80
  {
81
81
  className: "proton-Waveform__hover-line",
82
82
  style: {
83
- left: `${W / f * 100}%`
83
+ left: `${M / l * 100}%`
84
84
  }
85
85
  }
86
86
  ),
87
- x.map((s, n) => {
88
- const c = n / x.length * f, i = o !== void 0 && a !== void 0 && (c < o || c > a), d = m === 0 ? !1 : c <= m, j = W !== null && c <= W;
89
- return /* @__PURE__ */ l.jsx(
90
- q,
87
+ W.map((r, n) => {
88
+ const c = n / W.length * l, i = o !== void 0 && a !== void 0 && (c < o || c > a), d = m === 0 ? !1 : c <= m, y = M !== null && c <= M;
89
+ return /* @__PURE__ */ v(
90
+ G,
91
91
  {
92
- amplitude: s,
93
- isDisabled: u || i,
92
+ amplitude: r,
93
+ isDisabled: f || i,
94
94
  isPlayed: d,
95
- isHovered: j,
96
- isVisible: A,
97
- hasAnimated: S,
95
+ isHovered: y,
96
+ isVisible: S,
97
+ hasAnimated: H,
98
98
  resolution: t,
99
- spacing: M,
99
+ spacing: g,
100
100
  index: n
101
101
  },
102
102
  n
@@ -105,59 +105,59 @@ function ne({
105
105
  ]
106
106
  }
107
107
  ),
108
- B && /* @__PURE__ */ l.jsx(
108
+ N && /* @__PURE__ */ v(
109
109
  "div",
110
110
  {
111
111
  className: "proton-Waveform__bar-unavailable",
112
112
  style: {
113
- fontSize: L < 325 ? "0.85rem" : "1rem"
113
+ fontSize: E < 325 ? "0.85rem" : "1rem"
114
114
  },
115
- children: B
115
+ children: N
116
116
  }
117
117
  ),
118
- _ && /* @__PURE__ */ l.jsx(P, { direction: "right", seconds: f })
118
+ _ && /* @__PURE__ */ v($, { direction: "right", seconds: l })
119
119
  ] });
120
120
  }
121
- function P({
121
+ function $({
122
122
  direction: e,
123
123
  seconds: t
124
124
  }) {
125
- return /* @__PURE__ */ l.jsx(
125
+ return /* @__PURE__ */ v(
126
126
  "div",
127
127
  {
128
- className: T(
128
+ className: A(
129
129
  "proton-Waveform__timestamp",
130
130
  `proton-Waveform__timestamp--${e}`
131
131
  ),
132
- children: J(t)
132
+ children: K(t)
133
133
  }
134
134
  );
135
135
  }
136
- function J(e) {
136
+ function K(e) {
137
137
  const t = Math.floor(e / 60), o = Math.floor(e % 60);
138
138
  return `${t}:${o < 10 ? "0" : ""}${o.toFixed(0)}`;
139
139
  }
140
- function K(e, t) {
141
- const o = e.length, a = o / t, m = new Array(t).fill(0).map((_, f) => {
142
- const u = f * a, v = Math.floor(u), h = Math.min(v + 1, o - 1), p = u - v;
143
- return e[v] * (1 - p) + e[h] * p;
140
+ function Q(e, t) {
141
+ const o = e.length, a = o / t, m = new Array(t).fill(0).map((_, l) => {
142
+ const f = l * a, u = Math.floor(f), h = Math.min(u + 1, o - 1), p = f - u;
143
+ return e[u] * (1 - p) + e[h] * p;
144
144
  });
145
- return Q(m);
145
+ return Y(m);
146
146
  }
147
- function Q(e) {
147
+ function Y(e) {
148
148
  const t = Math.min(...e), o = Math.max(...e);
149
149
  return e.map((a) => {
150
150
  const m = (a - t) / (o - t);
151
151
  return Math.max(m * 0.8 + 0.1, 0.1);
152
152
  });
153
153
  }
154
- function Y(e) {
154
+ function Z(e) {
155
155
  return Array.from({ length: e }, (t, o) => {
156
156
  const m = o / (e - 1) * 6 * 2 * Math.PI - Math.PI / 2;
157
157
  return Math.sin(m) * 0.5 + 0.5;
158
158
  });
159
159
  }
160
160
  export {
161
- ne as Waveform
161
+ oe as Waveform
162
162
  };
163
163
  //# sourceMappingURL=Waveform.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Waveform.es.js","sources":["../../../src/components/Waveform/Waveform.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { csx } from \"../../utils\";\nimport { useTheme } from \"../ThemeProvider\";\nimport \"./Waveform.css\";\nimport { WaveformBar } from \"./WaveformBar\";\n\nexport interface WaveformProps {\n /**\n * Array of normalized amplitude values (0-1) representing the waveform.\n * If not provided, uses a sample sine wave.\n */\n data?: number[];\n\n /**\n * Current playback position in seconds.\n */\n currentTime?: number;\n\n /**\n * Test ID for testing purposes.\n */\n \"data-testid\"?: string;\n\n /**\n * Whether the entire waveform is disabled.\n */\n disabled?: boolean;\n\n /**\n * Reason for the waveform being disabled.\n */\n disabledMessage?: string;\n\n /**\n * End time to display until in seconds.\n */\n endDuration?: number;\n\n /**\n * Click handler that receives the clicked position (0-1) and event.\n */\n onClick?: (position: number, e: React.MouseEvent<HTMLDivElement>) => void;\n\n /**\n * Width in pixels of each waveform bar.\n */\n resolution?: number;\n\n /**\n * Whether to show timestamp markers.\n */\n showTimestamps?: boolean;\n\n /**\n * Start time to display from in seconds.\n */\n startDuration?: number;\n\n /**\n * Total duration of the audio in seconds.\n */\n totalDuration: number;\n}\n\nconst sampleWaveform = generateSampleWaveformData(100);\n\n/**\n * A waveform visualization component that displays audio data with interactive features.\n *\n * API:\n * - {@link WaveformProps}\n */\nexport function Waveform({\n data: waveformData,\n resolution = 2,\n startDuration,\n endDuration,\n currentTime = 0,\n showTimestamps = false,\n totalDuration,\n disabled,\n disabledMessage,\n onClick,\n \"data-testid\": testId,\n}: WaveformProps) {\n const { className } = useTheme();\n const containerRef = useRef<HTMLDivElement>(null);\n const [processedWaveform, setProcessedWaveform] = useState<number[]>([]);\n const [hoverPosition, setHoverPosition] = useState<number | null>(null);\n const [isVisible, setIsVisible] = useState(false);\n const [hasAnimated, setHasAnimated] = useState(false);\n\n const waveform = waveformData || sampleWaveform;\n\n const spacing = resolution;\n\n useEffect(() => {\n if (!containerRef.current) return;\n\n const processWaveform = (width: number) => {\n const numBars = Math.floor(width / (resolution + spacing));\n const processed = resampleData(waveform, numBars);\n setProcessedWaveform(processed);\n };\n\n const initialWidth = containerRef.current.clientWidth;\n processWaveform(initialWidth);\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (entries && entries[0]) {\n processWaveform(entries[0].contentRect.width);\n }\n });\n\n resizeObserver.observe(containerRef.current);\n\n return () => resizeObserver.disconnect();\n }, [waveform, resolution, spacing]);\n\n useEffect(() => {\n const visibilityTimer = setTimeout(() => setIsVisible(true), 50);\n const animationTimer = setTimeout(() => setHasAnimated(true), 500);\n\n return () => {\n clearTimeout(visibilityTimer);\n clearTimeout(animationTimer);\n };\n }, []);\n\n const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!containerRef.current) return;\n const rect = containerRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const position = (x / rect.width) * totalDuration;\n setHoverPosition(position);\n };\n\n const handleMouseLeave = () => {\n setHoverPosition(null);\n };\n\n // Calculate the width of a single bar including spacing\n const barTotalWidth = resolution + spacing;\n\n // Find the nearest bar boundaries for start and end durations\n const getBarPosition = (time: number, direction: \"start\" | \"end\") => {\n const position = (time / totalDuration) * 100;\n const barIndex =\n direction === \"start\"\n ? Math.floor((position / 100) * processedWaveform.length)\n : Math.ceil((position / 100) * processedWaveform.length);\n\n return (\n ((barIndex * barTotalWidth) / containerRef.current?.clientWidth!) * 100\n );\n };\n\n const containerWidth = containerRef.current?.clientWidth || 0;\n const waveformMessage = useMemo(() => {\n if (disabled && disabledMessage) return disabledMessage;\n if (!waveformData) return \"Waveform Unavailable\";\n\n return null;\n }, [disabled, disabledMessage, waveformData]);\n\n return (\n <div className={csx(\"proton-Waveform\", className)} data-testid={testId}>\n {showTimestamps && (\n <TimestampBlock direction=\"left\" seconds={currentTime} />\n )}\n <div\n ref={containerRef}\n className=\"proton-Waveform__container\"\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n onClick={(e) => {\n if (!containerRef.current || disabled) return;\n const rect = containerRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const position = (x / rect.width) * totalDuration;\n onClick?.(position, e);\n }}\n data-disabled={disabled}\n data-testid=\"waveform-container\"\n >\n {startDuration !== undefined && endDuration !== undefined && (\n <div\n className=\"proton-Waveform__active-region\"\n style={{\n left: containerRef.current\n ? `calc(${getBarPosition(startDuration, \"start\")}%`\n : \"0%\",\n right: containerRef.current\n ? `calc(${100 - getBarPosition(endDuration, \"end\")}% - 2px)`\n : \"0%\",\n }}\n />\n )}\n {hoverPosition !== null && (\n <div\n className=\"proton-Waveform__hover-line\"\n style={{\n left: `${(hoverPosition / totalDuration) * 100}%`,\n }}\n />\n )}\n {processedWaveform.map((amplitude, index) => {\n const position = (index / processedWaveform.length) * totalDuration;\n const isBarOutsideActiveRegion =\n startDuration !== undefined &&\n endDuration !== undefined &&\n (position < startDuration || position > endDuration);\n const isPlayed = currentTime === 0 ? false : position <= currentTime;\n const isHovered = hoverPosition !== null && position <= hoverPosition;\n\n return (\n <WaveformBar\n key={index}\n amplitude={amplitude}\n isDisabled={disabled || isBarOutsideActiveRegion}\n isPlayed={isPlayed}\n isHovered={isHovered}\n isVisible={isVisible}\n hasAnimated={hasAnimated}\n resolution={resolution}\n spacing={spacing}\n index={index}\n />\n );\n })}\n </div>\n\n {waveformMessage && (\n <div\n className=\"proton-Waveform__bar-unavailable\"\n style={{\n fontSize: containerWidth < 325 ? \"0.85rem\" : \"1rem\",\n }}\n >\n {waveformMessage}\n </div>\n )}\n\n {showTimestamps && (\n <TimestampBlock direction=\"right\" seconds={totalDuration} />\n )}\n </div>\n );\n}\n\nfunction TimestampBlock({\n direction,\n seconds,\n}: {\n direction: \"left\" | \"right\";\n seconds: number;\n}) {\n return (\n <div\n className={csx(\n \"proton-Waveform__timestamp\",\n `proton-Waveform__timestamp--${direction}`,\n )}\n >\n {formatTimestamp(seconds)}\n </div>\n );\n}\n\n/** Formats seconds into MM:SS timestamp string\n * @param {number} seconds - Number of seconds to format\n * @returns {string} Formatted timestamp string in MM:SS format\n */\n\nfunction formatTimestamp(seconds: number) {\n const minutes = Math.floor(seconds / 60);\n const remainingSeconds = Math.floor(seconds % 60);\n return `${minutes}:${\n remainingSeconds < 10 ? \"0\" : \"\"\n }${remainingSeconds.toFixed(0)}`;\n}\n\n/** Takes an array of waveform data and rescales it to any length\n * @param {array} initialData - original waveform data\n * @param {number} finalArrayLength - How long do you want the returned array?\n * @param {number} height - Height of the waveform container\n */\n\nfunction resampleData(initialData: number[], finalArrayLength: number) {\n const initialArrayLength = initialData.length;\n // How many samples from the original data do we skip per new sample?\n const step = initialArrayLength / finalArrayLength;\n\n // Create new array with desired length\n const resampledData = new Array(finalArrayLength)\n .fill(0)\n .map((_, newIndex) => {\n // Calculate position in original array\n const position = newIndex * step;\n const leftIndex = Math.floor(position);\n const rightIndex = Math.min(leftIndex + 1, initialArrayLength - 1);\n\n // Calculate weights for interpolation\n const fraction = position - leftIndex;\n\n // Linear interpolation between adjacent samples\n const newVal =\n initialData[leftIndex] * (1 - fraction) +\n initialData[rightIndex] * fraction;\n\n return newVal;\n });\n\n return scaleData(resampledData);\n}\n\n/** Takes an array of waveform data and scales it based on the desired pixel height\n * @param {array} data – Array of waveform data\n * @param {number} height - Height of the waveform container\n */\nfunction scaleData(data: number[]) {\n const min = Math.min(...data);\n const max = Math.max(...data);\n\n return data.map((item) => {\n // Normalize to 0-1 range first\n const normalized = (item - min) / (max - min);\n // Then scale to desired height (using 0.1 as minimum to ensure visibility)\n return Math.max(normalized * 0.8 + 0.1, 0.1);\n });\n}\n\n/** Generates a sample sine wave waveform data array\n * @param {number} length - Length of the waveform data array\n * @returns {number[]} Array of normalized amplitude values (0-1) representing the waveform\n */\n\nfunction generateSampleWaveformData(length: number) {\n return Array.from({ length }, (_, i) => {\n const cycles = 6;\n // Create 3 complete cycles (6π total) starting at -π/2 (trough)\n const phase = (i / (length - 1)) * cycles * 2 * Math.PI - Math.PI / 2;\n return Math.sin(phase) * 0.5 + 0.5;\n });\n}\n"],"names":["sampleWaveform","generateSampleWaveformData","Waveform","waveformData","resolution","startDuration","endDuration","currentTime","showTimestamps","totalDuration","disabled","disabledMessage","onClick","testId","className","useTheme","containerRef","useRef","processedWaveform","setProcessedWaveform","useState","hoverPosition","setHoverPosition","isVisible","setIsVisible","hasAnimated","setHasAnimated","waveform","spacing","useEffect","processWaveform","width","numBars","processed","resampleData","initialWidth","resizeObserver","entries","visibilityTimer","animationTimer","handleMouseMove","e","rect","position","handleMouseLeave","barTotalWidth","getBarPosition","time","direction","_a","containerWidth","waveformMessage","useMemo","jsxs","csx","jsx","TimestampBlock","amplitude","index","isBarOutsideActiveRegion","isPlayed","isHovered","WaveformBar","seconds","formatTimestamp","minutes","remainingSeconds","initialData","finalArrayLength","initialArrayLength","step","resampledData","newIndex","leftIndex","rightIndex","fraction","scaleData","data","min","max","item","normalized","length","_","i","phase"],"mappings":"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"}
1
+ {"version":3,"file":"Waveform.es.js","sources":["../../../src/components/Waveform/Waveform.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { csx } from \"../../utils\";\nimport { useTheme } from \"../ThemeProvider\";\nimport \"./Waveform.css\";\nimport { WaveformBar } from \"./WaveformBar\";\n\nexport interface WaveformProps {\n /**\n * Array of normalized amplitude values (0-1) representing the waveform.\n * If not provided, uses a sample sine wave.\n */\n data?: number[];\n\n /**\n * Current playback position in seconds.\n */\n currentTime?: number;\n\n /**\n * Test ID for testing purposes.\n */\n \"data-testid\"?: string;\n\n /**\n * Whether the entire waveform is disabled.\n */\n disabled?: boolean;\n\n /**\n * Reason for the waveform being disabled.\n */\n disabledMessage?: string;\n\n /**\n * End time to display until in seconds.\n */\n endDuration?: number;\n\n /**\n * Click handler that receives the clicked position (0-1) and event.\n */\n onClick?: (position: number, e: React.MouseEvent<HTMLDivElement>) => void;\n\n /**\n * Width in pixels of each waveform bar.\n */\n resolution?: number;\n\n /**\n * Whether to show timestamp markers.\n */\n showTimestamps?: boolean;\n\n /**\n * Start time to display from in seconds.\n */\n startDuration?: number;\n\n /**\n * Total duration of the audio in seconds.\n */\n totalDuration: number;\n}\n\nconst sampleWaveform = generateSampleWaveformData(100);\n\n/**\n * A waveform visualization component that displays audio data with interactive features.\n *\n * API:\n * - {@link WaveformProps}\n */\nexport function Waveform({\n data: waveformData,\n resolution = 2,\n startDuration,\n endDuration,\n currentTime = 0,\n showTimestamps = false,\n totalDuration,\n disabled,\n disabledMessage,\n onClick,\n \"data-testid\": testId,\n}: WaveformProps) {\n const { className } = useTheme();\n const containerRef = useRef<HTMLDivElement>(null);\n const [processedWaveform, setProcessedWaveform] = useState<number[]>([]);\n const [hoverPosition, setHoverPosition] = useState<number | null>(null);\n const [isVisible, setIsVisible] = useState(false);\n const [hasAnimated, setHasAnimated] = useState(false);\n\n const waveform = waveformData || sampleWaveform;\n\n const spacing = resolution;\n\n useEffect(() => {\n if (!containerRef.current) return;\n\n const processWaveform = (width: number) => {\n const numBars = Math.floor(width / (resolution + spacing));\n const processed = resampleData(waveform, numBars);\n setProcessedWaveform(processed);\n };\n\n const initialWidth = containerRef.current.clientWidth;\n processWaveform(initialWidth);\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (entries && entries[0]) {\n processWaveform(entries[0].contentRect.width);\n }\n });\n\n resizeObserver.observe(containerRef.current);\n\n return () => resizeObserver.disconnect();\n }, [waveform, resolution, spacing]);\n\n useEffect(() => {\n const visibilityTimer = setTimeout(() => setIsVisible(true), 50);\n const animationTimer = setTimeout(() => setHasAnimated(true), 500);\n\n return () => {\n clearTimeout(visibilityTimer);\n clearTimeout(animationTimer);\n };\n }, []);\n\n const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!containerRef.current) return;\n const rect = containerRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const position = (x / rect.width) * totalDuration;\n setHoverPosition(position);\n };\n\n const handleMouseLeave = () => {\n setHoverPosition(null);\n };\n\n // Calculate the width of a single bar including spacing\n const barTotalWidth = resolution + spacing;\n\n // Find the nearest bar boundaries for start and end durations\n const getBarPosition = (time: number, direction: \"start\" | \"end\") => {\n const position = (time / totalDuration) * 100;\n const barIndex =\n direction === \"start\"\n ? Math.floor((position / 100) * processedWaveform.length)\n : Math.ceil((position / 100) * processedWaveform.length);\n\n return (\n ((barIndex * barTotalWidth) / containerRef.current?.clientWidth!) * 100\n );\n };\n\n const containerWidth = containerRef.current?.clientWidth || 0;\n const waveformMessage = useMemo(() => {\n if (disabled && disabledMessage) return disabledMessage;\n if (!waveformData) return \"Waveform Unavailable\";\n\n return null;\n }, [disabled, disabledMessage, waveformData]);\n\n return (\n <div className={csx(\"proton-Waveform\", className)} data-testid={testId}>\n {showTimestamps && (\n <TimestampBlock direction=\"left\" seconds={currentTime} />\n )}\n <div\n ref={containerRef}\n className=\"proton-Waveform__container\"\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n onClick={(e) => {\n if (!containerRef.current || disabled) return;\n const rect = containerRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const position = (x / rect.width) * totalDuration;\n onClick?.(position, e);\n }}\n data-disabled={disabled}\n data-testid=\"waveform-container\"\n >\n {startDuration !== undefined && endDuration !== undefined && (\n <div\n className=\"proton-Waveform__active-region\"\n style={{\n left: containerRef.current\n ? `calc(${getBarPosition(startDuration, \"start\")}%`\n : \"0%\",\n right: containerRef.current\n ? `calc(${100 - getBarPosition(endDuration, \"end\")}% - 2px)`\n : \"0%\",\n }}\n />\n )}\n {hoverPosition !== null && (\n <div\n className=\"proton-Waveform__hover-line\"\n style={{\n left: `${(hoverPosition / totalDuration) * 100}%`,\n }}\n />\n )}\n {processedWaveform.map((amplitude, index) => {\n const position = (index / processedWaveform.length) * totalDuration;\n const isBarOutsideActiveRegion =\n startDuration !== undefined &&\n endDuration !== undefined &&\n (position < startDuration || position > endDuration);\n const isPlayed = currentTime === 0 ? false : position <= currentTime;\n const isHovered = hoverPosition !== null && position <= hoverPosition;\n\n return (\n <WaveformBar\n key={index}\n amplitude={amplitude}\n isDisabled={disabled || isBarOutsideActiveRegion}\n isPlayed={isPlayed}\n isHovered={isHovered}\n isVisible={isVisible}\n hasAnimated={hasAnimated}\n resolution={resolution}\n spacing={spacing}\n index={index}\n />\n );\n })}\n </div>\n\n {waveformMessage && (\n <div\n className=\"proton-Waveform__bar-unavailable\"\n style={{\n fontSize: containerWidth < 325 ? \"0.85rem\" : \"1rem\",\n }}\n >\n {waveformMessage}\n </div>\n )}\n\n {showTimestamps && (\n <TimestampBlock direction=\"right\" seconds={totalDuration} />\n )}\n </div>\n );\n}\n\nfunction TimestampBlock({\n direction,\n seconds,\n}: {\n direction: \"left\" | \"right\";\n seconds: number;\n}) {\n return (\n <div\n className={csx(\n \"proton-Waveform__timestamp\",\n `proton-Waveform__timestamp--${direction}`,\n )}\n >\n {formatTimestamp(seconds)}\n </div>\n );\n}\n\n/** Formats seconds into MM:SS timestamp string\n * @param {number} seconds - Number of seconds to format\n * @returns {string} Formatted timestamp string in MM:SS format\n */\n\nfunction formatTimestamp(seconds: number) {\n const minutes = Math.floor(seconds / 60);\n const remainingSeconds = Math.floor(seconds % 60);\n return `${minutes}:${\n remainingSeconds < 10 ? \"0\" : \"\"\n }${remainingSeconds.toFixed(0)}`;\n}\n\n/** Takes an array of waveform data and rescales it to any length\n * @param {array} initialData - original waveform data\n * @param {number} finalArrayLength - How long do you want the returned array?\n * @param {number} height - Height of the waveform container\n */\n\nfunction resampleData(initialData: number[], finalArrayLength: number) {\n const initialArrayLength = initialData.length;\n // How many samples from the original data do we skip per new sample?\n const step = initialArrayLength / finalArrayLength;\n\n // Create new array with desired length\n const resampledData = new Array(finalArrayLength)\n .fill(0)\n .map((_, newIndex) => {\n // Calculate position in original array\n const position = newIndex * step;\n const leftIndex = Math.floor(position);\n const rightIndex = Math.min(leftIndex + 1, initialArrayLength - 1);\n\n // Calculate weights for interpolation\n const fraction = position - leftIndex;\n\n // Linear interpolation between adjacent samples\n const newVal =\n initialData[leftIndex] * (1 - fraction) +\n initialData[rightIndex] * fraction;\n\n return newVal;\n });\n\n return scaleData(resampledData);\n}\n\n/** Takes an array of waveform data and scales it based on the desired pixel height\n * @param {array} data – Array of waveform data\n * @param {number} height - Height of the waveform container\n */\nfunction scaleData(data: number[]) {\n const min = Math.min(...data);\n const max = Math.max(...data);\n\n return data.map((item) => {\n // Normalize to 0-1 range first\n const normalized = (item - min) / (max - min);\n // Then scale to desired height (using 0.1 as minimum to ensure visibility)\n return Math.max(normalized * 0.8 + 0.1, 0.1);\n });\n}\n\n/** Generates a sample sine wave waveform data array\n * @param {number} length - Length of the waveform data array\n * @returns {number[]} Array of normalized amplitude values (0-1) representing the waveform\n */\n\nfunction generateSampleWaveformData(length: number) {\n return Array.from({ length }, (_, i) => {\n const cycles = 6;\n // Create 3 complete cycles (6π total) starting at -π/2 (trough)\n const phase = (i / (length - 1)) * cycles * 2 * Math.PI - Math.PI / 2;\n return Math.sin(phase) * 0.5 + 0.5;\n });\n}\n"],"names":["sampleWaveform","generateSampleWaveformData","Waveform","waveformData","resolution","startDuration","endDuration","currentTime","showTimestamps","totalDuration","disabled","disabledMessage","onClick","testId","className","useTheme","containerRef","useRef","processedWaveform","setProcessedWaveform","useState","hoverPosition","setHoverPosition","isVisible","setIsVisible","hasAnimated","setHasAnimated","waveform","spacing","useEffect","processWaveform","width","numBars","processed","resampleData","initialWidth","resizeObserver","entries","visibilityTimer","animationTimer","handleMouseMove","e","rect","position","handleMouseLeave","barTotalWidth","getBarPosition","time","direction","_a","containerWidth","waveformMessage","useMemo","jsxs","csx","jsx","TimestampBlock","amplitude","index","isBarOutsideActiveRegion","isPlayed","isHovered","WaveformBar","seconds","formatTimestamp","minutes","remainingSeconds","initialData","finalArrayLength","initialArrayLength","step","resampledData","newIndex","leftIndex","rightIndex","fraction","scaleData","data","min","max","item","normalized","length","_","i","phase"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../../node_modules/react/jsx-runtime.cjs.js"),n=require("../../utils/string.cjs.js");function x({amplitude:_,isDisabled:o,isPlayed:e,isHovered:p,isVisible:a,hasAnimated:m,resolution:v,spacing:i,index:s}){const t=a?`${Math.max(_*100,4)}%`:"0%";return r.jsxRuntimeExports.jsxs("div",{className:n.csx("proton-Waveform__bar-wrapper"),style:{width:`${v}px`,marginRight:`${i}px`},children:[r.jsxRuntimeExports.jsx("div",{className:n.csx("proton-Waveform__bar","proton-Waveform__bar--upper",o&&"proton-Waveform__bar--disabled",e&&"proton-Waveform__bar--played",a&&"proton-Waveform__bar--visible",m&&"proton-Waveform__bar--animated"),style:{"--target-height":`calc(${t} / 2)`,"--index":s}}),r.jsxRuntimeExports.jsx("div",{className:n.csx("proton-Waveform__bar","proton-Waveform__bar--lower",o&&"proton-Waveform__bar--disabled",e&&"proton-Waveform__bar--played",a&&"proton-Waveform__bar--visible",m&&"proton-Waveform__bar--animated"),style:{"--target-height":`calc(${t} / 2)`,"--index":s}}),p&&!o&&!e&&r.jsxRuntimeExports.jsx("div",{className:"proton-Waveform__bar--hover",style:{"--hover-height":t}})]})}exports.WaveformBar=x;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),n=require("../../utils/string.cjs.js");function f({amplitude:v,isDisabled:o,isPlayed:a,isHovered:p,isVisible:e,hasAnimated:_,resolution:s,spacing:c,index:m}){const t=e?`${Math.max(v*100,4)}%`:"0%";return r.jsxs("div",{className:n.csx("proton-Waveform__bar-wrapper"),style:{width:`${s}px`,marginRight:`${c}px`},children:[r.jsx("div",{className:n.csx("proton-Waveform__bar","proton-Waveform__bar--upper",o&&"proton-Waveform__bar--disabled",a&&"proton-Waveform__bar--played",e&&"proton-Waveform__bar--visible",_&&"proton-Waveform__bar--animated"),style:{"--target-height":`calc(${t} / 2)`,"--index":m}}),r.jsx("div",{className:n.csx("proton-Waveform__bar","proton-Waveform__bar--lower",o&&"proton-Waveform__bar--disabled",a&&"proton-Waveform__bar--played",e&&"proton-Waveform__bar--visible",_&&"proton-Waveform__bar--animated"),style:{"--target-height":`calc(${t} / 2)`,"--index":m}}),p&&!o&&!a&&r.jsx("div",{className:"proton-Waveform__bar--hover",style:{"--hover-height":t}})]})}exports.WaveformBar=f;
2
2
  //# sourceMappingURL=WaveformBar.cjs.js.map