@razorpay/blade 12.110.0 → 12.119.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 (444) hide show
  1. package/assets/spark/colorama-center-gradient-map-dark.jpg +0 -0
  2. package/assets/spark/colorama-gradient-map-dark.png +0 -0
  3. package/build/lib/native/components/AnimateInteractions/AnimateInteractions.native.js +5 -5
  4. package/build/lib/native/components/AnimateInteractions/AnimateInteractions.native.js.map +1 -1
  5. package/build/lib/native/components/AnimateInteractions/AnimateInteractionsProvider.js +6 -0
  6. package/build/lib/native/components/AnimateInteractions/AnimateInteractionsProvider.js.map +1 -0
  7. package/build/lib/native/components/BaseMotion/BaseMotion.native.js +22 -0
  8. package/build/lib/native/components/BaseMotion/BaseMotion.native.js.map +1 -0
  9. package/build/lib/native/components/BaseMotion/baseMotionInterpreter.native.js +11 -0
  10. package/build/lib/native/components/BaseMotion/baseMotionInterpreter.native.js.map +1 -0
  11. package/build/lib/native/components/BaseMotion/baseMotionUtils.js +4 -0
  12. package/build/lib/native/components/BaseMotion/baseMotionUtils.js.map +1 -0
  13. package/build/lib/native/components/BaseMotion/index.js +3 -0
  14. package/build/lib/native/components/BaseMotion/index.js.map +1 -0
  15. package/build/lib/native/components/BaseMotion/types.js +2 -0
  16. package/build/lib/native/components/BaseMotion/types.js.map +1 -0
  17. package/build/lib/native/components/Button/BaseButton/BaseButton.js +3 -3
  18. package/build/lib/native/components/Button/BaseButton/BaseButton.js.map +1 -1
  19. package/build/lib/native/components/Button/BaseButton/buttonTokens.js +1 -1
  20. package/build/lib/native/components/Button/BaseButton/buttonTokens.js.map +1 -1
  21. package/build/lib/native/components/Charts/AreaChart/AreaChart.native.js +2 -1
  22. package/build/lib/native/components/Charts/AreaChart/AreaChart.native.js.map +1 -1
  23. package/build/lib/native/components/Charts/CommonChartComponents/CommonChartComponents.native.js +2 -2
  24. package/build/lib/native/components/Charts/CommonChartComponents/CommonChartComponents.native.js.map +1 -1
  25. package/build/lib/native/components/Charts/CommonChartComponents/index.js +1 -1
  26. package/build/lib/native/components/Charts/CommonChartComponents/tokens.js +2 -2
  27. package/build/lib/native/components/Charts/CommonChartComponents/tokens.js.map +1 -1
  28. package/build/lib/native/components/Charts/LineChart/LineChart.native.js +4 -2
  29. package/build/lib/native/components/Charts/LineChart/LineChart.native.js.map +1 -1
  30. package/build/lib/native/components/Charts/utils/nullBridgeUtils.js +4 -0
  31. package/build/lib/native/components/Charts/utils/nullBridgeUtils.js.map +1 -0
  32. package/build/lib/native/components/Charts/utils/referenceBandUtils.js +6 -0
  33. package/build/lib/native/components/Charts/utils/referenceBandUtils.js.map +1 -0
  34. package/build/lib/native/components/CounterInput/CounterInput.native.js +3 -2
  35. package/build/lib/native/components/CounterInput/CounterInput.native.js.map +1 -1
  36. package/build/lib/native/components/CounterInput/token.js +2 -2
  37. package/build/lib/native/components/CounterInput/token.js.map +1 -1
  38. package/build/lib/native/components/DatePicker/Calendar.native.js +2 -2
  39. package/build/lib/native/components/DatePicker/Calendar.native.js.map +1 -1
  40. package/build/lib/native/components/DatePicker/utils.js +2 -2
  41. package/build/lib/native/components/DatePicker/utils.js.map +1 -1
  42. package/build/lib/native/components/Dropdown/Dropdown.js +1 -1
  43. package/build/lib/native/components/Dropdown/Dropdown.js.map +1 -1
  44. package/build/lib/native/components/Dropdown/FilterChipSelectInput.native.js +2 -1
  45. package/build/lib/native/components/Dropdown/FilterChipSelectInput.native.js.map +1 -1
  46. package/build/lib/native/components/Dropdown/dropdownUtils.js +1 -1
  47. package/build/lib/native/components/Dropdown/dropdownUtils.js.map +1 -1
  48. package/build/lib/native/components/Dropdown/filterChipSelectInputUtils.js +4 -0
  49. package/build/lib/native/components/Dropdown/filterChipSelectInputUtils.js.map +1 -0
  50. package/build/lib/native/components/Dropdown/useDropdown.js +1 -1
  51. package/build/lib/native/components/Dropdown/useDropdown.js.map +1 -1
  52. package/build/lib/native/components/Fade/Fade.native.js +7 -5
  53. package/build/lib/native/components/Fade/Fade.native.js.map +1 -1
  54. package/build/lib/native/components/FilterChip/BaseFilterChip.native.js +2 -2
  55. package/build/lib/native/components/FilterChip/BaseFilterChip.native.js.map +1 -1
  56. package/build/lib/native/components/FloatingActionButton/FloatingActionButton.js +14 -0
  57. package/build/lib/native/components/FloatingActionButton/FloatingActionButton.js.map +1 -0
  58. package/build/lib/native/components/FloatingActionButton/FloatingActionButtonContainer.native.js +20 -0
  59. package/build/lib/native/components/FloatingActionButton/FloatingActionButtonContainer.native.js.map +1 -0
  60. package/build/lib/native/components/FloatingActionButton/index.js +2 -0
  61. package/build/lib/native/components/FloatingActionButton/index.js.map +1 -0
  62. package/build/lib/native/components/GenUI/GenUIContext.native.js +2 -2
  63. package/build/lib/native/components/GenUI/GenUIContext.native.js.map +1 -1
  64. package/build/lib/native/components/GenUI/index.js +1 -1
  65. package/build/lib/native/components/Icons/BookmarkFilledIcon/BookmarkFilledIcon.js +14 -0
  66. package/build/lib/native/components/Icons/BookmarkFilledIcon/BookmarkFilledIcon.js.map +1 -0
  67. package/build/lib/native/components/Icons/BookmarkFilledIcon/index.js +2 -0
  68. package/build/lib/native/components/Icons/BookmarkFilledIcon/index.js.map +1 -0
  69. package/build/lib/native/components/Icons/index.js +1 -0
  70. package/build/lib/native/components/Icons/index.js.map +1 -1
  71. package/build/lib/native/components/Input/BaseInput/StyledBaseInput.native.js +1 -1
  72. package/build/lib/native/components/Input/BaseInput/StyledBaseInput.native.js.map +1 -1
  73. package/build/lib/native/components/Input/OTPInput/OTPInput.js +1 -1
  74. package/build/lib/native/components/Input/OTPInput/OTPInput.js.map +1 -1
  75. package/build/lib/native/components/Morph/Morph.native.js +9 -5
  76. package/build/lib/native/components/Morph/Morph.native.js.map +1 -1
  77. package/build/lib/native/components/Move/Move.native.js +8 -5
  78. package/build/lib/native/components/Move/Move.native.js.map +1 -1
  79. package/build/lib/native/components/Scale/Scale.native.js +7 -5
  80. package/build/lib/native/components/Scale/Scale.native.js.map +1 -1
  81. package/build/lib/native/components/SegmentedControl/SegmentedControl.native.js +27 -0
  82. package/build/lib/native/components/SegmentedControl/SegmentedControl.native.js.map +1 -0
  83. package/build/lib/native/components/SegmentedControl/SegmentedControlContext.js +8 -0
  84. package/build/lib/native/components/SegmentedControl/SegmentedControlContext.js.map +1 -0
  85. package/build/lib/native/components/SegmentedControl/SegmentedControlItem.native.js +18 -0
  86. package/build/lib/native/components/SegmentedControl/SegmentedControlItem.native.js.map +1 -0
  87. package/build/lib/native/components/SegmentedControl/index.js +3 -0
  88. package/build/lib/native/components/SegmentedControl/index.js.map +1 -0
  89. package/build/lib/native/components/SegmentedControl/segmentedControlTokens.js +4 -0
  90. package/build/lib/native/components/SegmentedControl/segmentedControlTokens.js.map +1 -0
  91. package/build/lib/native/components/Slide/Slide.native.js +7 -5
  92. package/build/lib/native/components/Slide/Slide.native.js.map +1 -1
  93. package/build/lib/native/components/Spark/RzpGlass/utils.native.js +1 -1
  94. package/build/lib/native/components/Spark/RzpGlass/utils.native.js.map +1 -1
  95. package/build/lib/native/components/Stagger/Stagger.native.js +10 -5
  96. package/build/lib/native/components/Stagger/Stagger.native.js.map +1 -1
  97. package/build/lib/native/components/Stagger/StaggerProvider.js +6 -0
  98. package/build/lib/native/components/Stagger/StaggerProvider.js.map +1 -0
  99. package/build/lib/native/components/TreeView/TreeView.native.js +4 -0
  100. package/build/lib/native/components/TreeView/TreeView.native.js.map +1 -0
  101. package/build/lib/native/components/TreeView/index.native.js +2 -0
  102. package/build/lib/native/components/TreeView/index.native.js.map +1 -0
  103. package/build/lib/native/components/index.js +10 -2
  104. package/build/lib/native/components/index.js.map +1 -1
  105. package/build/lib/native/tokens/global/colors.js +1 -1
  106. package/build/lib/native/tokens/global/colors.js.map +1 -1
  107. package/build/lib/native/tokens/index.js +1 -0
  108. package/build/lib/native/tokens/index.js.map +1 -1
  109. package/build/lib/native/tokens/theme/bladeNeutralTheme.js +15 -0
  110. package/build/lib/native/tokens/theme/bladeNeutralTheme.js.map +1 -0
  111. package/build/lib/native/tokens/theme/bladeTheme.js +1 -1
  112. package/build/lib/native/tokens/theme/bladeTheme.js.map +1 -1
  113. package/build/lib/native/tokens/theme/index.js +1 -0
  114. package/build/lib/native/tokens/theme/index.js.map +1 -1
  115. package/build/lib/native/tokens/theme/theme.js.map +1 -1
  116. package/build/lib/native/utils/componentZIndices.js +1 -1
  117. package/build/lib/native/utils/componentZIndices.js.map +1 -1
  118. package/build/lib/native/utils/metaAttribute/metaConstants.js +1 -1
  119. package/build/lib/native/utils/metaAttribute/metaConstants.js.map +1 -1
  120. package/build/lib/native/utils/msToSeconds.js +4 -0
  121. package/build/lib/native/utils/msToSeconds.js.map +1 -0
  122. package/build/lib/native/utils/useControlledDropdownInput/useControlledDropdownInput.js +1 -1
  123. package/build/lib/native/utils/useControlledDropdownInput/useControlledDropdownInput.js.map +1 -1
  124. package/build/lib/web/development/_virtual/flatten.js +1 -1
  125. package/build/lib/web/development/_virtual/flatten3.js +1 -1
  126. package/build/lib/web/development/components/AnimateInteractions/AnimateInteractions.web.js +1 -1
  127. package/build/lib/web/development/components/AnimateInteractions/AnimateInteractionsProvider.js +2 -1
  128. package/build/lib/web/development/components/AnimateInteractions/AnimateInteractionsProvider.js.map +1 -1
  129. package/build/lib/web/development/components/AnimateInteractions/{useFocusWithin.js → useFocusWithin.web.js} +1 -1
  130. package/build/lib/web/development/components/AnimateInteractions/useFocusWithin.web.js.map +1 -0
  131. package/build/lib/web/development/components/Button/BaseButton/BaseButton.js +124 -73
  132. package/build/lib/web/development/components/Button/BaseButton/BaseButton.js.map +1 -1
  133. package/build/lib/web/development/components/Button/BaseButton/buttonTokens.js +68 -2
  134. package/build/lib/web/development/components/Button/BaseButton/buttonTokens.js.map +1 -1
  135. package/build/lib/web/development/components/Charts/AreaChart/AreaChart.web.js +206 -18
  136. package/build/lib/web/development/components/Charts/AreaChart/AreaChart.web.js.map +1 -1
  137. package/build/lib/web/development/components/Charts/CommonChartComponents/CommonChartComponents.web.js +159 -43
  138. package/build/lib/web/development/components/Charts/CommonChartComponents/CommonChartComponents.web.js.map +1 -1
  139. package/build/lib/web/development/components/Charts/CommonChartComponents/index.js +1 -1
  140. package/build/lib/web/development/components/Charts/CommonChartComponents/tokens.js +15 -2
  141. package/build/lib/web/development/components/Charts/CommonChartComponents/tokens.js.map +1 -1
  142. package/build/lib/web/development/components/Charts/LineChart/LineChart.web.js +272 -15
  143. package/build/lib/web/development/components/Charts/LineChart/LineChart.web.js.map +1 -1
  144. package/build/lib/web/development/components/Charts/LineChart/useReferenceBand.js +195 -0
  145. package/build/lib/web/development/components/Charts/LineChart/useReferenceBand.js.map +1 -0
  146. package/build/lib/web/development/components/Charts/utils/nullBridgeUtils.js +175 -0
  147. package/build/lib/web/development/components/Charts/utils/nullBridgeUtils.js.map +1 -0
  148. package/build/lib/web/development/components/Charts/utils/referenceBandUtils.js +66 -0
  149. package/build/lib/web/development/components/Charts/utils/referenceBandUtils.js.map +1 -0
  150. package/build/lib/web/development/components/CounterInput/CounterInput.web.js +29 -5
  151. package/build/lib/web/development/components/CounterInput/CounterInput.web.js.map +1 -1
  152. package/build/lib/web/development/components/CounterInput/StyledCounterInput.js +20 -4
  153. package/build/lib/web/development/components/CounterInput/StyledCounterInput.js.map +1 -1
  154. package/build/lib/web/development/components/CounterInput/token.js +6 -1
  155. package/build/lib/web/development/components/CounterInput/token.js.map +1 -1
  156. package/build/lib/web/development/components/DatePicker/BaseDatePicker.web.js +28 -1
  157. package/build/lib/web/development/components/DatePicker/BaseDatePicker.web.js.map +1 -1
  158. package/build/lib/web/development/components/DatePicker/Calendar.web.js +9 -2
  159. package/build/lib/web/development/components/DatePicker/Calendar.web.js.map +1 -1
  160. package/build/lib/web/development/components/DatePicker/FilterChipDatePicker/DatePickerFilterChip.web.js +4 -1
  161. package/build/lib/web/development/components/DatePicker/FilterChipDatePicker/DatePickerFilterChip.web.js.map +1 -1
  162. package/build/lib/web/development/components/DatePicker/utils.js +21 -1
  163. package/build/lib/web/development/components/DatePicker/utils.js.map +1 -1
  164. package/build/lib/web/development/components/Dropdown/Dropdown.js +4 -1
  165. package/build/lib/web/development/components/Dropdown/Dropdown.js.map +1 -1
  166. package/build/lib/web/development/components/Dropdown/FilterChipGroup.web.js +40 -5
  167. package/build/lib/web/development/components/Dropdown/FilterChipGroup.web.js.map +1 -1
  168. package/build/lib/web/development/components/Dropdown/FilterChipSelectInput.web.js +30 -32
  169. package/build/lib/web/development/components/Dropdown/FilterChipSelectInput.web.js.map +1 -1
  170. package/build/lib/web/development/components/Dropdown/dropdownUtils.js +28 -2
  171. package/build/lib/web/development/components/Dropdown/dropdownUtils.js.map +1 -1
  172. package/build/lib/web/development/components/Dropdown/filterChipSelectInputUtils.js +60 -0
  173. package/build/lib/web/development/components/Dropdown/filterChipSelectInputUtils.js.map +1 -0
  174. package/build/lib/web/development/components/Dropdown/useDropdown.js +91 -5
  175. package/build/lib/web/development/components/Dropdown/useDropdown.js.map +1 -1
  176. package/build/lib/web/development/components/FilterChip/BaseFilterChip.web.js +35 -11
  177. package/build/lib/web/development/components/FilterChip/BaseFilterChip.web.js.map +1 -1
  178. package/build/lib/web/development/components/FloatingActionButton/FloatingActionButton.js +126 -0
  179. package/build/lib/web/development/components/FloatingActionButton/FloatingActionButton.js.map +1 -0
  180. package/build/lib/web/development/components/FloatingActionButton/FloatingActionButtonContainer.web.js +45 -0
  181. package/build/lib/web/development/components/FloatingActionButton/FloatingActionButtonContainer.web.js.map +1 -0
  182. package/build/lib/web/development/components/FloatingActionButton/index.js +2 -0
  183. package/build/lib/web/development/components/FloatingActionButton/index.js.map +1 -0
  184. package/build/lib/web/development/components/GenUI/GenUIComponents.web.js.map +1 -1
  185. package/build/lib/web/development/components/GenUI/GenUIContext.web.js +9 -1
  186. package/build/lib/web/development/components/GenUI/GenUIContext.web.js.map +1 -1
  187. package/build/lib/web/development/components/GenUI/GenUIProvider.web.js +17 -0
  188. package/build/lib/web/development/components/GenUI/GenUIProvider.web.js.map +1 -1
  189. package/build/lib/web/development/components/GenUI/GenUISchemaRenderer.web.js +31 -6
  190. package/build/lib/web/development/components/GenUI/GenUISchemaRenderer.web.js.map +1 -1
  191. package/build/lib/web/development/components/GenUI/index.js +1 -1
  192. package/build/lib/web/development/components/Icons/BookmarkFilledIcon/BookmarkFilledIcon.js +44 -0
  193. package/build/lib/web/development/components/Icons/BookmarkFilledIcon/BookmarkFilledIcon.js.map +1 -0
  194. package/build/lib/web/development/components/Icons/BookmarkFilledIcon/index.js +2 -0
  195. package/build/lib/web/development/components/Icons/BookmarkFilledIcon/index.js.map +1 -0
  196. package/build/lib/web/development/components/Icons/index.js +1 -0
  197. package/build/lib/web/development/components/Icons/index.js.map +1 -1
  198. package/build/lib/web/development/components/Input/OTPInput/OTPInput.js +3 -0
  199. package/build/lib/web/development/components/Input/OTPInput/OTPInput.js.map +1 -1
  200. package/build/lib/web/development/components/PopupArrow/PopupArrow.web.js +7 -1
  201. package/build/lib/web/development/components/PopupArrow/PopupArrow.web.js.map +1 -1
  202. package/build/lib/web/development/components/RollingText/RollingText.web.js +27 -20
  203. package/build/lib/web/development/components/RollingText/RollingText.web.js.map +1 -1
  204. package/build/lib/web/development/components/SegmentedControl/SegmentedControl.web.js +196 -0
  205. package/build/lib/web/development/components/SegmentedControl/SegmentedControl.web.js.map +1 -0
  206. package/build/lib/web/development/components/SegmentedControl/SegmentedControlContext.js +18 -0
  207. package/build/lib/web/development/components/SegmentedControl/SegmentedControlContext.js.map +1 -0
  208. package/build/lib/web/development/components/SegmentedControl/SegmentedControlIndicator.web.js +109 -0
  209. package/build/lib/web/development/components/SegmentedControl/SegmentedControlIndicator.web.js.map +1 -0
  210. package/build/lib/web/development/components/SegmentedControl/SegmentedControlItem.web.js +170 -0
  211. package/build/lib/web/development/components/SegmentedControl/SegmentedControlItem.web.js.map +1 -0
  212. package/build/lib/web/development/components/SegmentedControl/index.js +3 -0
  213. package/build/lib/web/development/components/SegmentedControl/index.js.map +1 -0
  214. package/build/lib/web/development/components/SegmentedControl/segmentedControlTokens.js +53 -0
  215. package/build/lib/web/development/components/SegmentedControl/segmentedControlTokens.js.map +1 -0
  216. package/build/lib/web/development/components/Spark/RzpGlass/RzpGlass.js +16 -7
  217. package/build/lib/web/development/components/Spark/RzpGlass/RzpGlass.js.map +1 -1
  218. package/build/lib/web/development/components/Spark/RzpGlass/RzpGlassMount.js +24 -6
  219. package/build/lib/web/development/components/Spark/RzpGlass/RzpGlassMount.js.map +1 -1
  220. package/build/lib/web/development/components/Spark/RzpGlass/presets.js +30 -1
  221. package/build/lib/web/development/components/Spark/RzpGlass/presets.js.map +1 -1
  222. package/build/lib/web/development/components/Spark/RzpGlass/rzpGlassShader.js +1 -1
  223. package/build/lib/web/development/components/Spark/RzpGlass/rzpGlassShader.js.map +1 -1
  224. package/build/lib/web/development/components/Spark/RzpGlass/utils.js +26 -10
  225. package/build/lib/web/development/components/Spark/RzpGlass/utils.js.map +1 -1
  226. package/build/lib/web/development/components/SpotlightPopoverTour/Tour.web.js +31 -18
  227. package/build/lib/web/development/components/SpotlightPopoverTour/Tour.web.js.map +1 -1
  228. package/build/lib/web/development/components/SpotlightPopoverTour/TourMask.web.js +14 -3
  229. package/build/lib/web/development/components/SpotlightPopoverTour/TourMask.web.js.map +1 -1
  230. package/build/lib/web/development/components/SpotlightPopoverTour/TourPopover.web.js +23 -4
  231. package/build/lib/web/development/components/SpotlightPopoverTour/TourPopover.web.js.map +1 -1
  232. package/build/lib/web/development/components/SpotlightPopoverTour/utils.js +58 -1
  233. package/build/lib/web/development/components/SpotlightPopoverTour/utils.js.map +1 -1
  234. package/build/lib/web/development/components/Stagger/StaggerProvider.js.map +1 -1
  235. package/build/lib/web/development/components/TreeView/StyledTreeViewRow.web.js +41 -0
  236. package/build/lib/web/development/components/TreeView/StyledTreeViewRow.web.js.map +1 -0
  237. package/build/lib/web/development/components/TreeView/TreeView.web.js +696 -0
  238. package/build/lib/web/development/components/TreeView/TreeView.web.js.map +1 -0
  239. package/build/lib/web/development/components/TreeView/TreeViewAnimator.web.js +184 -0
  240. package/build/lib/web/development/components/TreeView/TreeViewAnimator.web.js.map +1 -0
  241. package/build/lib/web/development/components/TreeView/TreeViewChevron.web.js +73 -0
  242. package/build/lib/web/development/components/TreeView/TreeViewChevron.web.js.map +1 -0
  243. package/build/lib/web/development/components/TreeView/TreeViewItem.web.js +295 -0
  244. package/build/lib/web/development/components/TreeView/TreeViewItem.web.js.map +1 -0
  245. package/build/lib/web/development/components/TreeView/TreeViewLoadMore.web.js +173 -0
  246. package/build/lib/web/development/components/TreeView/TreeViewLoadMore.web.js.map +1 -0
  247. package/build/lib/web/development/components/TreeView/componentIds.js +8 -0
  248. package/build/lib/web/development/components/TreeView/componentIds.js.map +1 -0
  249. package/build/lib/web/development/components/TreeView/index.web.js +4 -0
  250. package/build/lib/web/development/components/TreeView/index.web.js.map +1 -0
  251. package/build/lib/web/development/components/TreeView/treeViewUtils.js +475 -0
  252. package/build/lib/web/development/components/TreeView/treeViewUtils.js.map +1 -0
  253. package/build/lib/web/development/components/TreeView/useTreeView.js +24 -0
  254. package/build/lib/web/development/components/TreeView/useTreeView.js.map +1 -0
  255. package/build/lib/web/development/components/index.js +12 -2
  256. package/build/lib/web/development/components/index.js.map +1 -1
  257. package/build/lib/web/development/node_modules/es-toolkit/dist/array/flatten.js +1 -1
  258. package/build/lib/web/development/node_modules/es-toolkit/dist/compat/array/flatten.js +1 -1
  259. package/build/lib/web/development/node_modules/es-toolkit/dist/compat/array/sortBy.js +2 -2
  260. package/build/lib/web/development/node_modules/es-toolkit/dist/compat/object/omit.js +2 -2
  261. package/build/lib/web/development/tokens/global/colors.js +2 -2
  262. package/build/lib/web/development/tokens/global/colors.js.map +1 -1
  263. package/build/lib/web/development/tokens/index.js +1 -0
  264. package/build/lib/web/development/tokens/index.js.map +1 -1
  265. package/build/lib/web/development/tokens/theme/bladeNeutralTheme.js +1439 -0
  266. package/build/lib/web/development/tokens/theme/bladeNeutralTheme.js.map +1 -0
  267. package/build/lib/web/development/tokens/theme/bladeTheme.js +48 -12
  268. package/build/lib/web/development/tokens/theme/bladeTheme.js.map +1 -1
  269. package/build/lib/web/development/tokens/theme/index.js +1 -0
  270. package/build/lib/web/development/tokens/theme/index.js.map +1 -1
  271. package/build/lib/web/development/tokens/theme/theme.js.map +1 -1
  272. package/build/lib/web/development/utils/componentZIndices.js +2 -0
  273. package/build/lib/web/development/utils/componentZIndices.js.map +1 -1
  274. package/build/lib/web/development/utils/metaAttribute/metaConstants.js +7 -1
  275. package/build/lib/web/development/utils/metaAttribute/metaConstants.js.map +1 -1
  276. package/build/lib/web/development/utils/useControlledDropdownInput/useControlledDropdownInput.js +12 -4
  277. package/build/lib/web/development/utils/useControlledDropdownInput/useControlledDropdownInput.js.map +1 -1
  278. package/build/lib/web/development/utils/useTruncationTitle/useTruncationTitle.web.js +2 -2
  279. package/build/lib/web/development/utils/useTruncationTitle/useTruncationTitle.web.js.map +1 -1
  280. package/build/lib/web/production/_virtual/flatten.js +1 -1
  281. package/build/lib/web/production/_virtual/flatten3.js +1 -1
  282. package/build/lib/web/production/components/AnimateInteractions/AnimateInteractions.web.js +1 -1
  283. package/build/lib/web/production/components/AnimateInteractions/AnimateInteractionsProvider.js +2 -1
  284. package/build/lib/web/production/components/AnimateInteractions/AnimateInteractionsProvider.js.map +1 -1
  285. package/build/lib/web/production/components/AnimateInteractions/{useFocusWithin.js → useFocusWithin.web.js} +1 -1
  286. package/build/lib/web/production/components/AnimateInteractions/useFocusWithin.web.js.map +1 -0
  287. package/build/lib/web/production/components/Button/BaseButton/BaseButton.js +124 -73
  288. package/build/lib/web/production/components/Button/BaseButton/BaseButton.js.map +1 -1
  289. package/build/lib/web/production/components/Button/BaseButton/buttonTokens.js +68 -2
  290. package/build/lib/web/production/components/Button/BaseButton/buttonTokens.js.map +1 -1
  291. package/build/lib/web/production/components/Charts/AreaChart/AreaChart.web.js +206 -18
  292. package/build/lib/web/production/components/Charts/AreaChart/AreaChart.web.js.map +1 -1
  293. package/build/lib/web/production/components/Charts/CommonChartComponents/CommonChartComponents.web.js +159 -43
  294. package/build/lib/web/production/components/Charts/CommonChartComponents/CommonChartComponents.web.js.map +1 -1
  295. package/build/lib/web/production/components/Charts/CommonChartComponents/index.js +1 -1
  296. package/build/lib/web/production/components/Charts/CommonChartComponents/tokens.js +15 -2
  297. package/build/lib/web/production/components/Charts/CommonChartComponents/tokens.js.map +1 -1
  298. package/build/lib/web/production/components/Charts/LineChart/LineChart.web.js +272 -15
  299. package/build/lib/web/production/components/Charts/LineChart/LineChart.web.js.map +1 -1
  300. package/build/lib/web/production/components/Charts/LineChart/useReferenceBand.js +195 -0
  301. package/build/lib/web/production/components/Charts/LineChart/useReferenceBand.js.map +1 -0
  302. package/build/lib/web/production/components/Charts/utils/nullBridgeUtils.js +175 -0
  303. package/build/lib/web/production/components/Charts/utils/nullBridgeUtils.js.map +1 -0
  304. package/build/lib/web/production/components/Charts/utils/referenceBandUtils.js +66 -0
  305. package/build/lib/web/production/components/Charts/utils/referenceBandUtils.js.map +1 -0
  306. package/build/lib/web/production/components/CounterInput/CounterInput.web.js +29 -5
  307. package/build/lib/web/production/components/CounterInput/CounterInput.web.js.map +1 -1
  308. package/build/lib/web/production/components/CounterInput/StyledCounterInput.js +20 -4
  309. package/build/lib/web/production/components/CounterInput/StyledCounterInput.js.map +1 -1
  310. package/build/lib/web/production/components/CounterInput/token.js +6 -1
  311. package/build/lib/web/production/components/CounterInput/token.js.map +1 -1
  312. package/build/lib/web/production/components/DatePicker/BaseDatePicker.web.js +28 -1
  313. package/build/lib/web/production/components/DatePicker/BaseDatePicker.web.js.map +1 -1
  314. package/build/lib/web/production/components/DatePicker/Calendar.web.js +9 -2
  315. package/build/lib/web/production/components/DatePicker/Calendar.web.js.map +1 -1
  316. package/build/lib/web/production/components/DatePicker/FilterChipDatePicker/DatePickerFilterChip.web.js +4 -1
  317. package/build/lib/web/production/components/DatePicker/FilterChipDatePicker/DatePickerFilterChip.web.js.map +1 -1
  318. package/build/lib/web/production/components/DatePicker/utils.js +21 -1
  319. package/build/lib/web/production/components/DatePicker/utils.js.map +1 -1
  320. package/build/lib/web/production/components/Dropdown/Dropdown.js +4 -1
  321. package/build/lib/web/production/components/Dropdown/Dropdown.js.map +1 -1
  322. package/build/lib/web/production/components/Dropdown/FilterChipGroup.web.js +40 -5
  323. package/build/lib/web/production/components/Dropdown/FilterChipGroup.web.js.map +1 -1
  324. package/build/lib/web/production/components/Dropdown/FilterChipSelectInput.web.js +30 -32
  325. package/build/lib/web/production/components/Dropdown/FilterChipSelectInput.web.js.map +1 -1
  326. package/build/lib/web/production/components/Dropdown/dropdownUtils.js +28 -2
  327. package/build/lib/web/production/components/Dropdown/dropdownUtils.js.map +1 -1
  328. package/build/lib/web/production/components/Dropdown/filterChipSelectInputUtils.js +60 -0
  329. package/build/lib/web/production/components/Dropdown/filterChipSelectInputUtils.js.map +1 -0
  330. package/build/lib/web/production/components/Dropdown/useDropdown.js +91 -5
  331. package/build/lib/web/production/components/Dropdown/useDropdown.js.map +1 -1
  332. package/build/lib/web/production/components/FilterChip/BaseFilterChip.web.js +35 -11
  333. package/build/lib/web/production/components/FilterChip/BaseFilterChip.web.js.map +1 -1
  334. package/build/lib/web/production/components/FloatingActionButton/FloatingActionButton.js +126 -0
  335. package/build/lib/web/production/components/FloatingActionButton/FloatingActionButton.js.map +1 -0
  336. package/build/lib/web/production/components/FloatingActionButton/FloatingActionButtonContainer.web.js +45 -0
  337. package/build/lib/web/production/components/FloatingActionButton/FloatingActionButtonContainer.web.js.map +1 -0
  338. package/build/lib/web/production/components/FloatingActionButton/index.js +2 -0
  339. package/build/lib/web/production/components/FloatingActionButton/index.js.map +1 -0
  340. package/build/lib/web/production/components/GenUI/GenUIComponents.web.js.map +1 -1
  341. package/build/lib/web/production/components/GenUI/GenUIContext.web.js +9 -1
  342. package/build/lib/web/production/components/GenUI/GenUIContext.web.js.map +1 -1
  343. package/build/lib/web/production/components/GenUI/GenUIProvider.web.js +17 -0
  344. package/build/lib/web/production/components/GenUI/GenUIProvider.web.js.map +1 -1
  345. package/build/lib/web/production/components/GenUI/GenUISchemaRenderer.web.js +31 -6
  346. package/build/lib/web/production/components/GenUI/GenUISchemaRenderer.web.js.map +1 -1
  347. package/build/lib/web/production/components/GenUI/index.js +1 -1
  348. package/build/lib/web/production/components/Icons/BookmarkFilledIcon/BookmarkFilledIcon.js +44 -0
  349. package/build/lib/web/production/components/Icons/BookmarkFilledIcon/BookmarkFilledIcon.js.map +1 -0
  350. package/build/lib/web/production/components/Icons/BookmarkFilledIcon/index.js +2 -0
  351. package/build/lib/web/production/components/Icons/BookmarkFilledIcon/index.js.map +1 -0
  352. package/build/lib/web/production/components/Icons/index.js +1 -0
  353. package/build/lib/web/production/components/Icons/index.js.map +1 -1
  354. package/build/lib/web/production/components/Input/OTPInput/OTPInput.js +3 -0
  355. package/build/lib/web/production/components/Input/OTPInput/OTPInput.js.map +1 -1
  356. package/build/lib/web/production/components/PopupArrow/PopupArrow.web.js +7 -1
  357. package/build/lib/web/production/components/PopupArrow/PopupArrow.web.js.map +1 -1
  358. package/build/lib/web/production/components/RollingText/RollingText.web.js +27 -20
  359. package/build/lib/web/production/components/RollingText/RollingText.web.js.map +1 -1
  360. package/build/lib/web/production/components/SegmentedControl/SegmentedControl.web.js +196 -0
  361. package/build/lib/web/production/components/SegmentedControl/SegmentedControl.web.js.map +1 -0
  362. package/build/lib/web/production/components/SegmentedControl/SegmentedControlContext.js +18 -0
  363. package/build/lib/web/production/components/SegmentedControl/SegmentedControlContext.js.map +1 -0
  364. package/build/lib/web/production/components/SegmentedControl/SegmentedControlIndicator.web.js +109 -0
  365. package/build/lib/web/production/components/SegmentedControl/SegmentedControlIndicator.web.js.map +1 -0
  366. package/build/lib/web/production/components/SegmentedControl/SegmentedControlItem.web.js +170 -0
  367. package/build/lib/web/production/components/SegmentedControl/SegmentedControlItem.web.js.map +1 -0
  368. package/build/lib/web/production/components/SegmentedControl/index.js +3 -0
  369. package/build/lib/web/production/components/SegmentedControl/index.js.map +1 -0
  370. package/build/lib/web/production/components/SegmentedControl/segmentedControlTokens.js +53 -0
  371. package/build/lib/web/production/components/SegmentedControl/segmentedControlTokens.js.map +1 -0
  372. package/build/lib/web/production/components/Spark/RzpGlass/RzpGlass.js +16 -7
  373. package/build/lib/web/production/components/Spark/RzpGlass/RzpGlass.js.map +1 -1
  374. package/build/lib/web/production/components/Spark/RzpGlass/RzpGlassMount.js +24 -6
  375. package/build/lib/web/production/components/Spark/RzpGlass/RzpGlassMount.js.map +1 -1
  376. package/build/lib/web/production/components/Spark/RzpGlass/presets.js +30 -1
  377. package/build/lib/web/production/components/Spark/RzpGlass/presets.js.map +1 -1
  378. package/build/lib/web/production/components/Spark/RzpGlass/rzpGlassShader.js +1 -1
  379. package/build/lib/web/production/components/Spark/RzpGlass/rzpGlassShader.js.map +1 -1
  380. package/build/lib/web/production/components/Spark/RzpGlass/utils.js +26 -10
  381. package/build/lib/web/production/components/Spark/RzpGlass/utils.js.map +1 -1
  382. package/build/lib/web/production/components/SpotlightPopoverTour/Tour.web.js +31 -18
  383. package/build/lib/web/production/components/SpotlightPopoverTour/Tour.web.js.map +1 -1
  384. package/build/lib/web/production/components/SpotlightPopoverTour/TourMask.web.js +14 -3
  385. package/build/lib/web/production/components/SpotlightPopoverTour/TourMask.web.js.map +1 -1
  386. package/build/lib/web/production/components/SpotlightPopoverTour/TourPopover.web.js +23 -4
  387. package/build/lib/web/production/components/SpotlightPopoverTour/TourPopover.web.js.map +1 -1
  388. package/build/lib/web/production/components/SpotlightPopoverTour/utils.js +58 -1
  389. package/build/lib/web/production/components/SpotlightPopoverTour/utils.js.map +1 -1
  390. package/build/lib/web/production/components/Stagger/StaggerProvider.js.map +1 -1
  391. package/build/lib/web/production/components/TreeView/StyledTreeViewRow.web.js +41 -0
  392. package/build/lib/web/production/components/TreeView/StyledTreeViewRow.web.js.map +1 -0
  393. package/build/lib/web/production/components/TreeView/TreeView.web.js +696 -0
  394. package/build/lib/web/production/components/TreeView/TreeView.web.js.map +1 -0
  395. package/build/lib/web/production/components/TreeView/TreeViewAnimator.web.js +184 -0
  396. package/build/lib/web/production/components/TreeView/TreeViewAnimator.web.js.map +1 -0
  397. package/build/lib/web/production/components/TreeView/TreeViewChevron.web.js +73 -0
  398. package/build/lib/web/production/components/TreeView/TreeViewChevron.web.js.map +1 -0
  399. package/build/lib/web/production/components/TreeView/TreeViewItem.web.js +295 -0
  400. package/build/lib/web/production/components/TreeView/TreeViewItem.web.js.map +1 -0
  401. package/build/lib/web/production/components/TreeView/TreeViewLoadMore.web.js +173 -0
  402. package/build/lib/web/production/components/TreeView/TreeViewLoadMore.web.js.map +1 -0
  403. package/build/lib/web/production/components/TreeView/componentIds.js +8 -0
  404. package/build/lib/web/production/components/TreeView/componentIds.js.map +1 -0
  405. package/build/lib/web/production/components/TreeView/index.web.js +4 -0
  406. package/build/lib/web/production/components/TreeView/index.web.js.map +1 -0
  407. package/build/lib/web/production/components/TreeView/treeViewUtils.js +475 -0
  408. package/build/lib/web/production/components/TreeView/treeViewUtils.js.map +1 -0
  409. package/build/lib/web/production/components/TreeView/useTreeView.js +24 -0
  410. package/build/lib/web/production/components/TreeView/useTreeView.js.map +1 -0
  411. package/build/lib/web/production/components/index.js +12 -2
  412. package/build/lib/web/production/components/index.js.map +1 -1
  413. package/build/lib/web/production/node_modules/es-toolkit/dist/array/flatten.js +1 -1
  414. package/build/lib/web/production/node_modules/es-toolkit/dist/compat/array/flatten.js +1 -1
  415. package/build/lib/web/production/node_modules/es-toolkit/dist/compat/array/sortBy.js +2 -2
  416. package/build/lib/web/production/node_modules/es-toolkit/dist/compat/object/omit.js +2 -2
  417. package/build/lib/web/production/tokens/global/colors.js +2 -2
  418. package/build/lib/web/production/tokens/global/colors.js.map +1 -1
  419. package/build/lib/web/production/tokens/index.js +1 -0
  420. package/build/lib/web/production/tokens/index.js.map +1 -1
  421. package/build/lib/web/production/tokens/theme/bladeNeutralTheme.js +1439 -0
  422. package/build/lib/web/production/tokens/theme/bladeNeutralTheme.js.map +1 -0
  423. package/build/lib/web/production/tokens/theme/bladeTheme.js +48 -12
  424. package/build/lib/web/production/tokens/theme/bladeTheme.js.map +1 -1
  425. package/build/lib/web/production/tokens/theme/index.js +1 -0
  426. package/build/lib/web/production/tokens/theme/index.js.map +1 -1
  427. package/build/lib/web/production/tokens/theme/theme.js.map +1 -1
  428. package/build/lib/web/production/utils/componentZIndices.js +2 -0
  429. package/build/lib/web/production/utils/componentZIndices.js.map +1 -1
  430. package/build/lib/web/production/utils/metaAttribute/metaConstants.js +7 -1
  431. package/build/lib/web/production/utils/metaAttribute/metaConstants.js.map +1 -1
  432. package/build/lib/web/production/utils/useControlledDropdownInput/useControlledDropdownInput.js +12 -4
  433. package/build/lib/web/production/utils/useControlledDropdownInput/useControlledDropdownInput.js.map +1 -1
  434. package/build/lib/web/production/utils/useTruncationTitle/useTruncationTitle.web.js +2 -2
  435. package/build/lib/web/production/utils/useTruncationTitle/useTruncationTitle.web.js.map +1 -1
  436. package/build/types/components/index.d.ts +794 -25
  437. package/build/types/components/index.native.d.ts +872 -29
  438. package/build/types/tokens/index.d.ts +11 -4
  439. package/build/types/tokens/index.native.d.ts +11 -4
  440. package/build/types/utils/index.d.ts +8 -3
  441. package/build/types/utils/index.native.d.ts +8 -3
  442. package/package.json +2 -2
  443. package/build/lib/web/development/components/AnimateInteractions/useFocusWithin.js.map +0 -1
  444. package/build/lib/web/production/components/AnimateInteractions/useFocusWithin.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"LineChart.native.js","sources":["../../../../../../src/components/Charts/LineChart/LineChart.native.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport {\n Svg,\n Path,\n Line,\n Circle,\n Rect,\n Text as SvgText,\n G,\n ClipPath,\n Defs,\n} from 'react-native-svg';\nimport { Pressable, View } from 'react-native';\nimport type { GestureResponderEvent, LayoutChangeEvent } from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedProps,\n withTiming,\n withDelay,\n Easing,\n} from 'react-native-reanimated';\nimport { useChartsColorTheme, assignDataColorMapping } from '../utils';\nimport {\n CommonChartComponentsContext,\n componentId as commonComponentIds,\n} from '../CommonChartComponents';\nimport type {\n ChartXAxisProps,\n ChartYAxisProps,\n ChartReferenceLineProps,\n ChartTooltipProps,\n ChartLegendProps,\n DataColorMapping,\n} from '../CommonChartComponents';\nimport type {\n ChartsCategoricalColorToken,\n ChartSequentialColorToken,\n} from '../CommonChartComponents/types';\nimport { componentIds } from './componentIds';\nimport { LineChartContext } from './LineChartContext';\nimport type { ChartLineProps, ChartLineWrapperProps } from './types';\nimport { useTheme } from '~components/BladeProvider';\nimport { Text } from '~components/Typography';\nimport BaseBox from '~components/Box/BaseBox';\nimport { Box } from '~components/Box';\nimport { assignWithoutSideEffects } from '~utils/assignWithoutSideEffects';\nimport { getComponentId } from '~utils/isValidAllowedChildren';\nimport getIn from '~utils/lodashButBetter/get';\nimport isNumber from '~utils/lodashButBetter/isNumber';\nimport { logger } from '~utils/logger';\nimport type { TestID, DataAnalyticsAttribute } from '~utils/types';\nimport { makeAnalyticsAttribute } from '~utils/makeAnalyticsAttribute';\nimport { metaAttribute } from '~utils/metaAttribute';\nimport { useControllableState } from '~utils/useControllable';\n\n// Animated SVG primitives — reanimated drives the draw-in reveal (clip width)\n// and the active/inactive dimming (strokeOpacity).\nconst AnimatedPath = Animated.createAnimatedComponent(Path);\nconst AnimatedRect = Animated.createAnimatedComponent(Rect);\n\n// Module-level counter yields stable, collision-free ids for clip defs\n// across multiple chart instances on the same screen without relying on the\n// async `useId` (which is null on the first native render).\nlet uniqueChartCounter = 0;\n\n// Plot padding is in raw SVG pixels because react-native-svg works in pixel\n// space; it does not consume Blade's spacing tokens directly.\nconst PLOT_PADDING = { top: 16, right: 16, bottom: 32, left: 40 };\nconst Y_TICK_COUNT = 4;\nconst LEGEND_DOT_SIZE = 10;\nconst TICK_FONT_SIZE = 10;\nconst AXIS_LABEL_FONT_SIZE = 11;\nconst SECONDARY_LABEL_FONT_SIZE = 10;\nconst X_AXIS_TITLE_GAP = 6;\n// Gap between primary tick baseline and secondary tick baseline (own vertical row).\nconst PRIMARY_TO_SECONDARY_GAP = 8;\nconst X_TICK_LABEL_GAP = 8;\n// Line height between wrapped x-label rows.\nconst TICK_LINE_HEIGHT = TICK_FONT_SIZE + 2;\n// Cap wrapped label rows so a very long label can't consume the whole chart.\nconst MAX_TICK_LABEL_LINES = 3;\nconst LINE_STROKE_WIDTH = 1.5;\nconst DOT_RADIUS = 3;\nconst ACTIVE_DOT_OUTER_RADIUS = 6;\nconst ACTIVE_DOT_INNER_RADIUS = 3.5;\n// Opacity applied to non-hovered lines — matches web hover dim (0.2).\nconst DIM_OPACITY = 0.2;\n\n/** Fixed tooltip width so wrapped labels are measured in the first layout pass. */\nconst TOOLTIP_WIDTH = 160;\n/** Right-aligned value column so all numbers line up in a column. */\nconst TOOLTIP_VALUE_WIDTH = 44;\n\n/** Rough width of a rendered string (no gap) — used for wrapping decisions. */\nconst estimateTextWidth = (label: string, fontSize: number): number =>\n Math.max(1, label.length) * fontSize * 0.6;\n\n/** Estimate rendered label width; slightly aggressive so long mobile ticks thin early. */\nconst estimateTickLabelWidth = (label: string, fontSize: number): number =>\n Math.max(1, label.length) * fontSize * 0.72 + X_TICK_LABEL_GAP;\n\n/**\n * Word-wrap a label into lines that each fit `maxWidth`, so every category can be\n * shown without dropping labels (mirrors web wrapping). A word longer than a line\n * is hard-broken so it can never overflow its column and overlap a neighbour.\n * Beyond `MAX_TICK_LABEL_LINES` the last line is ellipsised to bound height.\n */\nconst wrapLabelToLines = (label: string, maxWidth: number, fontSize: number): string[] => {\n const text = String(label).trim();\n if (!text) return [''];\n if (maxWidth <= 0) return [text];\n\n const maxChars = Math.max(1, Math.floor(maxWidth / (fontSize * 0.6)));\n const words = text.split(/\\s+/);\n const lines: string[] = [];\n let current = '';\n const flush = (): void => {\n if (current) {\n lines.push(current);\n current = '';\n }\n };\n\n words.forEach((word) => {\n let remaining = word;\n // Hard-break words wider than a full line.\n while (remaining.length > maxChars) {\n flush();\n lines.push(remaining.slice(0, maxChars));\n remaining = remaining.slice(maxChars);\n }\n if (!current) {\n current = remaining;\n } else if (current.length + 1 + remaining.length <= maxChars) {\n current = `${current} ${remaining}`;\n } else {\n flush();\n current = remaining;\n }\n });\n flush();\n\n if (lines.length > MAX_TICK_LABEL_LINES) {\n const kept = lines.slice(0, MAX_TICK_LABEL_LINES);\n const lastIndex = MAX_TICK_LABEL_LINES - 1;\n const last = kept[lastIndex];\n kept[lastIndex] = `${last.slice(0, Math.max(1, maxChars - 1))}…`;\n return kept;\n }\n return lines;\n};\n\n/**\n * Pick x-tick indices that do not overlap under middle-anchoring.\n * Prefers keeping first + last when both fit, then greedily fills the middle.\n */\nconst selectNonOverlappingXTickIndices = (\n pointCount: number,\n widths: number[],\n xForIndex: (index: number) => number,\n forcedStep?: number,\n): number[] => {\n if (pointCount <= 0) return [];\n if (pointCount === 1) return [0];\n\n const rightExtent = (i: number): number => xForIndex(i) + (i === 0 ? widths[i] : widths[i] / 2);\n const leftExtent = (i: number): number =>\n xForIndex(i) - (i === pointCount - 1 ? widths[i] : widths[i] / 2);\n const fitsAfter = (prev: number, next: number): boolean => leftExtent(next) >= rightExtent(prev);\n\n if (forcedStep !== undefined) {\n const step = Math.max(1, forcedStep);\n const indices: number[] = [];\n for (let i = 0; i < pointCount; i += step) {\n indices.push(i);\n }\n const last = pointCount - 1;\n if (indices[indices.length - 1] !== last && fitsAfter(indices[indices.length - 1], last)) {\n indices.push(last);\n }\n return indices;\n }\n\n const first = 0;\n const last = pointCount - 1;\n const firstLastFit = fitsAfter(first, last);\n const selected: number[] = [first];\n\n if (firstLastFit) {\n let prev = first;\n for (let i = 1; i < last; i++) {\n // Leave room for the reserved last tick.\n if (fitsAfter(prev, i) && fitsAfter(i, last)) {\n selected.push(i);\n prev = i;\n }\n }\n selected.push(last);\n return selected;\n }\n\n // First+last cannot both fit — keep first and greedily pack the rest.\n let prev = first;\n for (let i = 1; i < pointCount; i++) {\n if (fitsAfter(prev, i)) {\n selected.push(i);\n prev = i;\n }\n }\n return selected;\n};\n\ntype LineType = NonNullable<ChartLineProps['type']>;\ntype StrokeStyle = NonNullable<ChartLineProps['strokeStyle']>;\n\ntype LineSlot = {\n dataKey: string;\n name?: string;\n color?: ChartsCategoricalColorToken | ChartSequentialColorToken;\n strokeStyle: StrokeStyle;\n type: LineType;\n dot: boolean;\n activeDot: boolean;\n connectNulls: boolean;\n showLegend: boolean;\n hide?: boolean;\n};\n\ntype ReferenceLineSlot = {\n y?: number;\n x?: string | number;\n label?: string;\n};\n\ntype TooltipFormatter = NonNullable<ChartTooltipProps['formatter']>;\n\ntype LegendSlot = {\n layout?: ChartLegendProps['layout'];\n align?: ChartLegendProps['align'];\n selectedDataKeys?: string[];\n defaultSelectedDataKeys?: string[];\n onSelectedDataKeysChange?: ChartLegendProps['onSelectedDataKeysChange'];\n};\n\ntype ChildSlots = {\n lines: LineSlot[];\n hasXAxis: boolean;\n xDataKey?: string;\n xSecondaryDataKey?: string;\n xTickFormatter?: (value: string, index: number) => string;\n xInterval?: number;\n xLabel?: string;\n hasYAxis: boolean;\n yLabel?: string;\n yTickFormatter?: ChartYAxisProps['tickFormatter'];\n yDomain?: [number | string, number | string];\n yTickCount?: number;\n hasLegend: boolean;\n legend: LegendSlot;\n hasGrid: boolean;\n referenceLines: ReferenceLineSlot[];\n hasTooltip: boolean;\n tooltipFormatter?: TooltipFormatter;\n /** Recharts Tooltip `filterNull` — defaults to true (omit null/undefined rows). */\n tooltipFilterNull: boolean;\n};\n\nconst readChildSlots = (children: React.ReactNode): ChildSlots => {\n const slots: ChildSlots = {\n lines: [],\n hasXAxis: false,\n hasYAxis: false,\n hasLegend: false,\n legend: {},\n hasGrid: false,\n referenceLines: [],\n hasTooltip: false,\n // Match Recharts Tooltip default: null/undefined payload entries are omitted.\n tooltipFilterNull: true,\n };\n\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) return;\n const id = getComponentId(child);\n if (id === componentIds.ChartLine) {\n const props = child.props as ChartLineProps;\n slots.lines.push({\n dataKey: props.dataKey as string,\n name: props.name,\n color: props.color,\n strokeStyle: props.strokeStyle ?? 'solid',\n type: props.type ?? 'monotone',\n dot: Boolean(props.dot),\n activeDot: props.activeDot !== false,\n connectNulls: Boolean(props.connectNulls),\n showLegend: props.showLegend ?? true,\n hide: props.hide,\n });\n } else if (id === commonComponentIds.chartXAxis) {\n const props = child.props as ChartXAxisProps;\n slots.hasXAxis = true;\n slots.xDataKey = props.dataKey;\n slots.xSecondaryDataKey = props.secondaryDataKey;\n slots.xTickFormatter = props.tickFormatter;\n slots.xInterval = props.interval;\n slots.xLabel = props.label;\n } else if (id === commonComponentIds.chartYAxis) {\n const props = child.props as ChartYAxisProps;\n slots.hasYAxis = true;\n slots.yLabel = props.label;\n if (Array.isArray(props.domain) && props.domain.length === 2) {\n slots.yDomain = [props.domain[0], props.domain[1]];\n }\n slots.yTickFormatter = props.tickFormatter;\n if (typeof props.tickCount === 'number') {\n slots.yTickCount = props.tickCount;\n }\n } else if (id === commonComponentIds.chartLegend) {\n const props = child.props as ChartLegendProps;\n slots.hasLegend = true;\n slots.legend = {\n layout: props.layout,\n align: props.align,\n selectedDataKeys: props.selectedDataKeys,\n defaultSelectedDataKeys: props.defaultSelectedDataKeys,\n onSelectedDataKeysChange: props.onSelectedDataKeysChange,\n };\n } else if (id === commonComponentIds.chartCartesianGrid) {\n slots.hasGrid = true;\n } else if (id === commonComponentIds.chartTooltip) {\n slots.hasTooltip = true;\n const props = child.props as ChartTooltipProps;\n if (typeof props.formatter === 'function') {\n slots.tooltipFormatter = props.formatter;\n }\n if (props.filterNull !== undefined) {\n slots.tooltipFilterNull = Boolean(props.filterNull);\n }\n } else if (id === commonComponentIds.chartReferenceLine) {\n const props = child.props as ChartReferenceLineProps;\n // Native supports BOTH horizontal (numeric `y`) and vertical (`x`)\n // reference lines — full web parity.\n slots.referenceLines.push({\n y: typeof props.y === 'number' ? props.y : undefined,\n x: props.x,\n label: typeof props.label === 'string' ? props.label : undefined,\n });\n }\n });\n\n return slots;\n};\n\nconst niceCeil = (raw: number): number => {\n if (raw <= 0) return 1;\n const exponent = Math.floor(Math.log10(raw));\n const fraction = raw / 10 ** exponent;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * 10 ** exponent;\n};\n\nconst niceFloor = (raw: number): number => {\n if (raw >= 0) return 0;\n return -niceCeil(-raw);\n};\n\n/** Parse a chart cell to a finite number, or null when the value is missing/invalid. */\nconst toNullableNumber = (raw: unknown): number | null => {\n if (raw === null || raw === undefined) return null;\n const value = Number(raw);\n return Number.isNaN(value) || !isFinite(value) ? null : value;\n};\n\n/**\n * Resolve a (possibly nested) dataKey from a row — matches Recharts/lodash-get\n * semantics so keys like `metrics.sales` work on native.\n */\nconst getRowValue = (row: Record<string, unknown>, dataKey: string): unknown =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getIn(row as any, dataKey as any);\n\nconst getSeriesNumber = (row: Record<string, unknown>, dataKey: string): number | null =>\n toNullableNumber(getRowValue(row, dataKey));\n\n/** Y-domain max: nice-ceil positives; clamp all-negative/zero-max to 0; keep 1 for all-zero. */\nconst resolveYMax = (dataMax: number): number => {\n if (dataMax > 0) return niceCeil(dataMax);\n if (dataMax < 0) return 0;\n return 1;\n};\n\nconst MISSING_TOOLTIP_VALUE = '—';\n\nconst formatYTick = (value: number): string => {\n const abs = Math.abs(value);\n if (abs >= 1_000_000) return `${(value / 1_000_000).toFixed(abs >= 10_000_000 ? 0 : 1)}M`;\n if (abs >= 1_000) return `${(value / 1_000).toFixed(abs >= 10_000 ? 0 : 1)}K`;\n return String(value);\n};\n\ntype Point = { x: number; y: number };\n\nconst buildLinearPath = (points: Point[]): string => {\n if (points.length === 0) return '';\n return `M ${points[0].x} ${points[0].y}${points\n .slice(1)\n .map((p) => ` L ${p.x} ${p.y}`)\n .join('')}`;\n};\n\nconst buildStepPath = (points: Point[], variant: 'step' | 'stepAfter' | 'stepBefore'): string => {\n if (points.length === 0) return '';\n let d = `M ${points[0].x} ${points[0].y}`;\n for (let i = 1; i < points.length; i++) {\n const prev = points[i - 1];\n const cur = points[i];\n if (variant === 'stepBefore') {\n d += ` L ${prev.x} ${cur.y} L ${cur.x} ${cur.y}`;\n } else if (variant === 'stepAfter') {\n d += ` L ${cur.x} ${prev.y} L ${cur.x} ${cur.y}`;\n } else {\n // `step` — step at the midpoint between points (d3 curveStep behavior).\n const midX = (prev.x + cur.x) / 2;\n d += ` L ${midX} ${prev.y} L ${midX} ${cur.y} L ${cur.x} ${cur.y}`;\n }\n }\n return d;\n};\n\n// Monotone cubic interpolation (d3 monotoneX algorithm) — matches recharts'\n// default `type=\"monotone\"` curve.\nconst buildMonotonePath = (points: Point[]): string => {\n const n = points.length;\n if (n === 0) return '';\n if (n === 1) return `M ${points[0].x} ${points[0].y}`;\n if (n === 2) return `M ${points[0].x} ${points[0].y} L ${points[1].x} ${points[1].y}`;\n\n const dxs: number[] = [];\n const ms: number[] = [];\n for (let i = 0; i < n - 1; i++) {\n const dx = points[i + 1].x - points[i].x;\n const dy = points[i + 1].y - points[i].y;\n dxs.push(dx);\n ms.push(dx === 0 ? 0 : dy / dx);\n }\n\n const tangents: number[] = [ms[0]];\n for (let i = 0; i < dxs.length - 1; i++) {\n const m = ms[i];\n const mNext = ms[i + 1];\n if (m * mNext <= 0) {\n tangents.push(0);\n } else {\n const dx = dxs[i];\n const dxNext = dxs[i + 1];\n const common = dx + dxNext;\n tangents.push((3 * common) / ((common + dxNext) / m + (common + dx) / mNext));\n }\n }\n tangents.push(ms[ms.length - 1]);\n\n let d = `M ${points[0].x} ${points[0].y}`;\n for (let i = 0; i < n - 1; i++) {\n const p0 = points[i];\n const p1 = points[i + 1];\n const dx = (p1.x - p0.x) / 3;\n d += ` C ${p0.x + dx} ${p0.y + dx * tangents[i]} ${p1.x - dx} ${p1.y - dx * tangents[i + 1]} ${\n p1.x\n } ${p1.y}`;\n }\n return d;\n};\n\nconst buildPath = (points: Point[], type: LineType): string => {\n switch (type) {\n case 'linear':\n return buildLinearPath(points);\n case 'step':\n case 'stepAfter':\n case 'stepBefore':\n return buildStepPath(points, type);\n case 'monotone':\n default:\n return buildMonotonePath(points);\n }\n};\n\nconst getStrokeDasharray = (strokeStyle: StrokeStyle): string | undefined =>\n strokeStyle === 'dashed' ? '5 5' : strokeStyle === 'dotted' ? '2 2' : undefined;\n\ntype LinePoint = { x: number; y: number; value: number | null };\n\n// Split a line's points into contiguous non-null segments. When `connectNulls`\n// is true all non-null points bridge into a single segment; otherwise gaps\n// break the line into multiple sub-paths (never drawn across nulls).\nconst buildSegments = (points: LinePoint[], connectNulls: boolean): Point[][] => {\n const definedPoints = points.filter((p): p is Point & { value: number } => p.value !== null);\n if (connectNulls) {\n return definedPoints.length > 0 ? [definedPoints.map(({ x, y }) => ({ x, y }))] : [];\n }\n const segments: Point[][] = [];\n let current: Point[] = [];\n points.forEach((p) => {\n if (p.value === null) {\n if (current.length > 0) {\n segments.push(current);\n current = [];\n }\n } else {\n current.push({ x: p.x, y: p.y });\n }\n });\n if (current.length > 0) segments.push(current);\n return segments;\n};\n\ntype LineGeometry = {\n line: LineSlot;\n color: string;\n points: LinePoint[];\n};\n\ntype LineSeriesProps = {\n geometry: LineGeometry;\n index: number;\n plotWidth: number;\n plotHeight: number;\n hoveredKey: string | null;\n dataSignature: string;\n chartId: string;\n};\n\n/**\n * Renders a single line series with its own reanimated draw-in reveal and\n * active/inactive dimming. Extracted so per-line hooks (`useSharedValue`,\n * `useAnimatedProps`, `useEffect`) are always called at a stable top level and\n * never inside a `.map()` loop.\n */\nconst LineSeries = ({\n geometry,\n index,\n plotWidth,\n plotHeight,\n hoveredKey,\n dataSignature,\n chartId,\n}: LineSeriesProps): React.ReactElement => {\n const { theme } = useTheme();\n const { line, color, points } = geometry;\n\n const draw = useSharedValue(0);\n const dim = useSharedValue(1);\n\n const duration = getIn(theme.motion, 'duration.xgentle');\n const baseDelay = getIn(theme.motion, 'delay.gentle');\n // Web: dashed/dotted lines begin later (LineChart.web.tsx:64-67).\n const beginDelay = line.strokeStyle === 'dashed' ? baseDelay + duration : baseDelay;\n const drawEasing = getIn(theme.motion, 'easing.standard');\n const dimDuration = getIn(theme.motion, 'duration.gentle');\n\n useEffect(() => {\n draw.value = 0;\n draw.value = withDelay(beginDelay, withTiming(1, { duration, easing: drawEasing }));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [duration, beginDelay, dataSignature]);\n\n useEffect(() => {\n const isOther = hoveredKey !== null && hoveredKey !== line.dataKey;\n dim.value = withTiming(isOther ? DIM_OPACITY : 1, {\n duration: dimDuration,\n // Parity with framer-motion 'easeInOut'.\n easing: Easing.bezier(0.42, 0, 0.58, 1),\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hoveredKey, line.dataKey, dimDuration]);\n\n const clipProps = useAnimatedProps(() => ({ width: Math.max(0, plotWidth * draw.value) }));\n const dimProps = useAnimatedProps(() => ({ strokeOpacity: dim.value }));\n\n const segments = useMemo(() => buildSegments(points, line.connectNulls), [\n points,\n line.connectNulls,\n ]);\n const dash = getStrokeDasharray(line.strokeStyle);\n const clipId = `line-${chartId}-reveal-${index}`;\n\n return (\n <G>\n <Defs>\n <ClipPath id={clipId}>\n <AnimatedRect x={0} y={0} height={plotHeight} animatedProps={clipProps} />\n </ClipPath>\n </Defs>\n <G clipPath={`url(#${clipId})`}>\n {segments.map((segment, segmentIndex) => (\n <AnimatedPath\n key={`segment-${segmentIndex}`}\n testID={`line-path-${line.dataKey}`}\n d={buildPath(segment, line.type)}\n stroke={color}\n strokeWidth={LINE_STROKE_WIDTH}\n strokeDasharray={dash}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n animatedProps={dimProps}\n />\n ))}\n {line.dot\n ? points.map((p, pointIndex) =>\n p.value === null ? null : (\n <Circle key={`dot-${pointIndex}`} cx={p.x} cy={p.y} r={DOT_RADIUS} fill={color} />\n ),\n )\n : null}\n </G>\n </G>\n );\n};\n\nconst _ChartLine = (_props: ChartLineProps): React.ReactElement | null => {\n return null;\n};\n\n/**\n * ChartLine\n *\n * Marker component declaring a line series inside ChartLineWrapper.\n * On native this renders nothing on its own — ChartLineWrapper reads its props\n * (`dataKey`, `name`, `color`, `type`, `strokeStyle`, ...) and renders the line.\n */\nconst ChartLine = assignWithoutSideEffects(_ChartLine, {\n componentId: componentIds.ChartLine,\n});\n\nconst ChartLineWrapper: React.FC<ChartLineWrapperProps & TestID & DataAnalyticsAttribute> = ({\n children,\n colorTheme = 'categorical',\n testID,\n data = [],\n ...restProps\n}) => {\n const { theme } = useTheme();\n const [size, setSize] = useState<{ width: number; height: number }>({ width: 0, height: 0 });\n const [activeIndex, setActiveIndex] = useState<number | undefined>(undefined);\n const [hoveredKey, setHoveredKey] = useState<string | null>(null);\n const chartIdRef = useRef<string | undefined>(undefined);\n if (chartIdRef.current === undefined) {\n chartIdRef.current = `line-${uniqueChartCounter++}`;\n }\n const chartId = chartIdRef.current;\n\n const onLayout = (e: LayoutChangeEvent): void => {\n const { width, height } = e.nativeEvent.layout;\n if (width !== size.width || height !== size.height) {\n setSize({ width, height });\n }\n };\n\n const slots = useMemo(() => readChildSlots(children), [children]);\n const allLines = slots.lines;\n\n const yAxisWarnedRef = useRef(false);\n useEffect(() => {\n if (!__DEV__) return;\n if (slots.hasYAxis && !yAxisWarnedRef.current) {\n const unsupported: string[] = [];\n if (slots.yDomain && !slots.yDomain.every((v) => isNumber(Number(v)))) {\n unsupported.push('domain (non-numeric)');\n }\n if (unsupported.length > 0) {\n yAxisWarnedRef.current = true;\n logger({\n type: 'warn',\n moduleName: 'ChartLineWrapper',\n message: `ChartYAxis prop(s) [${unsupported.join(\n ', ',\n )}] are not fully supported on native. Supported: label, domain (numeric), tickFormatter, tickCount.`,\n });\n }\n }\n }, [slots.hasYAxis, slots.yDomain]);\n\n const themeColors = useChartsColorTheme({\n colorTheme,\n chartName: 'line',\n chartDataIndicators: allLines.length,\n });\n\n // Build the color mapping from ALL lines (not just visible) so hidden lines\n // keep their color/legend entry while toggled off (web parity).\n const dataColorMapping = useMemo<DataColorMapping>(() => {\n const mapping: Record<\n string,\n {\n colorToken?: ChartsCategoricalColorToken | ChartSequentialColorToken;\n isCustomColor: boolean;\n }\n > = {};\n allLines.forEach((line) => {\n mapping[line.dataKey] = {\n colorToken: line.color,\n isCustomColor: Boolean(line.color),\n };\n });\n assignDataColorMapping(mapping, themeColors);\n return mapping as DataColorMapping;\n }, [allLines, themeColors]);\n\n const allDataKeys = useMemo(() => Object.keys(dataColorMapping), [dataColorMapping]);\n\n // Mirror web legend selection semantics exactly (controlled + uncontrolled).\n const [selectedKeys, setSelectedKeys] = useControllableState<string[]>({\n value: slots.legend.selectedDataKeys,\n defaultValue: slots.legend.defaultSelectedDataKeys ?? allDataKeys,\n });\n\n const hasUserInteractedRef = React.useRef(false);\n const isControlled = slots.legend.selectedDataKeys !== undefined;\n const shouldAutoSelectAllDataKeys =\n !isControlled && slots.legend.defaultSelectedDataKeys === undefined;\n\n // Uncontrolled auto-select-all — port of CommonChartComponents.web.tsx:712-724.\n useEffect(() => {\n if (!shouldAutoSelectAllDataKeys || hasUserInteractedRef.current || allDataKeys.length === 0) {\n return;\n }\n const isInSync =\n selectedKeys.length === allDataKeys.length &&\n allDataKeys.every((dataKey) => selectedKeys.includes(dataKey));\n if (!isInSync) {\n setSelectedKeys(() => [...allDataKeys], true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allDataKeys, selectedKeys, shouldAutoSelectAllDataKeys]);\n\n // Reset selection when the data keys fully change — port of web:728-736.\n useEffect(() => {\n if (allDataKeys.length > 0 && selectedKeys.length > 0) {\n const hasOverlap = selectedKeys.some((key) => allDataKeys.includes(key));\n if (!hasOverlap) {\n setSelectedKeys(() => [...allDataKeys]);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allDataKeys, selectedKeys]);\n\n const isVisible = (dataKey: string): boolean => selectedKeys.includes(dataKey);\n\n const toggleLegend = (dataKey: string): void => {\n hasUserInteractedRef.current = true;\n const next = selectedKeys.includes(dataKey)\n ? selectedKeys.filter((k) => k !== dataKey)\n : [...selectedKeys, dataKey];\n setSelectedKeys(() => next);\n slots.legend.onSelectedDataKeysChange?.({ dataKey, selectedKeysArray: next });\n };\n\n const visibleLines = useMemo(() => allLines.filter((l) => isVisible(l.dataKey) && !l.hide), [\n allLines,\n selectedKeys,\n ]);\n\n const secondaryLabelMap = useMemo(() => {\n if (!slots.xSecondaryDataKey || !data?.length) return undefined;\n const map: Record<number, string | number | undefined> = {};\n data.forEach((row, index) => {\n map[index] = getRowValue(row, slots.xSecondaryDataKey!) as string | number | undefined;\n });\n return map;\n }, [data, slots.xSecondaryDataKey]);\n\n const { dataMin, dataMax } = useMemo(() => {\n if (!data.length) return { dataMin: 0, dataMax: 0 };\n const linesForDomain = visibleLines.length ? visibleLines : allLines;\n let min = Infinity;\n let max = -Infinity;\n data.forEach((row) => {\n linesForDomain.forEach((line) => {\n // Skip null/undefined cells — Number(null) === 0 would otherwise pull the\n // domain to 0 and flatten sparse / connectNulls charts. Use path-aware\n // get so nested dataKeys like `metrics.sales` resolve (Recharts parity).\n const value = getSeriesNumber(row, line.dataKey);\n if (value === null) return;\n if (value < min) min = value;\n if (value > max) max = value;\n });\n });\n if (min === Infinity) min = 0;\n if (max === -Infinity) max = 0;\n return { dataMin: min, dataMax: max };\n }, [data, visibleLines, allLines]);\n\n // Honor ChartYAxis domain/tickCount when provided (AreaChart.native parity).\n const yMax = slots.yDomain ? Number(slots.yDomain[1]) : resolveYMax(dataMax);\n const yMin = slots.yDomain ? Number(slots.yDomain[0]) : dataMin < 0 ? niceFloor(dataMin) : 0;\n const yRange = yMax - yMin;\n const yTickCount = slots.yTickCount ?? Y_TICK_COUNT;\n const yTicks = useMemo(() => {\n const ticks: number[] = [];\n for (let i = 0; i <= yTickCount; i++) {\n ticks.push(yMin + (yRange / yTickCount) * i);\n }\n return ticks;\n }, [yMin, yRange, yTickCount]);\n\n const showAxes = slots.hasXAxis || slots.hasYAxis;\n const hasSecondaryXLabels = Boolean(slots.xSecondaryDataKey);\n // Secondary labels need their own row even when there is no axis title.\n const secondaryRowHeight = hasSecondaryXLabels\n ? SECONDARY_LABEL_FONT_SIZE + PRIMARY_TO_SECONDARY_GAP\n : 0;\n const xAxisTitleHeight = slots.xLabel ? AXIS_LABEL_FONT_SIZE + X_AXIS_TITLE_GAP : 0;\n\n // Width available under one x-tick before it collides with its neighbour.\n // Left/right padding is fixed (PLOT_PADDING), so this is stable regardless of\n // the wrap-driven bottom padding computed just below.\n const plotWidthForLabels = Math.max(0, size.width - PLOT_PADDING.left - PLOT_PADDING.right);\n const pointCount = data.length;\n const columnWidth = pointCount > 1 ? plotWidthForLabels / (pointCount - 1) : plotWidthForLabels;\n\n // Resolve every x-label up front so we can measure density and (mobile) wrap\n // long labels across lines instead of dropping them — matches web.\n const xLabels = useMemo(() => {\n return data.map((row, index) => {\n const rawLabel = slots.xDataKey\n ? String(getRowValue(row, slots.xDataKey) ?? '')\n : String(index);\n return slots.xTickFormatter ? slots.xTickFormatter(rawLabel, index) : rawLabel;\n });\n }, [data, slots.xDataKey, slots.xTickFormatter]);\n\n // Wrap each label to fit its column so all categories can be shown at once.\n const xLabelLines = useMemo(() => {\n // Leave a small gutter so adjacent wrapped labels don't kiss.\n const maxWidth = Math.max(0, columnWidth * 0.6 - X_TICK_LABEL_GAP);\n return xLabels.map((label) => wrapLabelToLines(label, maxWidth, TICK_FONT_SIZE));\n }, [xLabels, columnWidth]);\n\n const maxXLabelLines = useMemo(\n () => xLabelLines.reduce((max, lines) => Math.max(max, lines.length), 1),\n [xLabelLines],\n );\n\n const primaryLabelRowHeight = maxXLabelLines * TICK_LINE_HEIGHT;\n const padding = showAxes\n ? {\n ...PLOT_PADDING,\n bottom: Math.max(\n PLOT_PADDING.bottom,\n primaryLabelRowHeight + 4 + secondaryRowHeight + xAxisTitleHeight + 4,\n ),\n }\n : { top: 0, right: 0, bottom: 0, left: 0 };\n\n const plotWidth = Math.max(0, size.width - padding.left - padding.right);\n const plotHeight = Math.max(0, size.height - padding.top - padding.bottom);\n\n // Line points span the plot width over `n-1` intervals (NOT bar-style slots).\n const pointSpacing = pointCount > 1 ? plotWidth / (pointCount - 1) : 0;\n const xForIndex = (index: number): number =>\n pointCount > 1 ? index * pointSpacing : plotWidth / 2;\n\n // Visible tick indices: after wrapping, each label's effective width is its\n // widest line (<= column), so all fit and are shown. Thinning only kicks in\n // when even a single word overflows the column. Explicit `interval` still wins.\n const visibleXTickIndices = useMemo(() => {\n if (pointCount <= 0) return [] as number[];\n\n const widths = xLabelLines.map((lines, index) => {\n const primaryWidth = lines.reduce(\n (max, line) => Math.max(max, estimateTextWidth(line, TICK_FONT_SIZE)),\n 0,\n );\n const secondary = secondaryLabelMap?.[index];\n const secondaryWidth =\n secondary !== undefined && secondary !== null\n ? estimateTickLabelWidth(String(secondary), SECONDARY_LABEL_FONT_SIZE)\n : 0;\n return Math.max(primaryWidth, secondaryWidth);\n });\n\n const forcedStep = slots.xInterval !== undefined ? Math.max(1, slots.xInterval + 1) : undefined;\n\n return selectNonOverlappingXTickIndices(pointCount, widths, xForIndex, forcedStep);\n }, [pointCount, pointSpacing, plotWidth, xLabelLines, secondaryLabelMap, slots.xInterval]);\n\n const visibleXTickIndexSet = useMemo(() => new Set(visibleXTickIndices), [visibleXTickIndices]);\n\n const tickColor = getIn(theme.colors, 'surface.text.gray.muted');\n const axisLineColor = getIn(theme.colors, 'surface.border.gray.muted');\n const gridColor = getIn(theme.colors, 'surface.border.gray.subtle');\n\n const resolveColor = (\n dataKey: string,\n fallback?: ChartsCategoricalColorToken | ChartSequentialColorToken,\n ): string => {\n const token = dataColorMapping[dataKey]?.colorToken ?? fallback;\n return token ? getIn(theme.colors, token) : tickColor;\n };\n\n // Pixel geometry per visible line — shared by the line paths, the activeDot,\n // the scrub nearest-line lookup, and the tooltip.\n const lineGeometries = useMemo<LineGeometry[]>(() => {\n return visibleLines.map((line) => {\n const points: LinePoint[] = data.map((row, index) => {\n const value = getSeriesNumber(row, line.dataKey);\n return {\n x: xForIndex(index),\n y: value === null ? 0 : plotHeight - ((value - yMin) / yRange) * plotHeight,\n value,\n };\n });\n return { line, color: resolveColor(line.dataKey, line.color), points };\n });\n }, [visibleLines, data, plotWidth, plotHeight, yMin, yRange, dataColorMapping, theme.colors]);\n\n const dataSignature = useMemo(() => `${data.length}:${allDataKeys.join(',')}`, [\n data.length,\n allDataKeys,\n ]);\n\n // Map a touch's local coordinate to the nearest data index + line. Reproduces\n // every web hover side-effect (dim others + activeDot + tooltip + hoveredKey).\n // Map a touch to the nearest index + line and apply it. Returns the index so the\n // tap/scrub handlers can decide whether a release should toggle the selection off.\n const indexAtTouchX = (locationX: number): number | undefined => {\n if (pointCount === 0 || plotWidth <= 0) return undefined;\n const localX = locationX - padding.left;\n return pointCount > 1\n ? Math.min(pointCount - 1, Math.max(0, Math.round(localX / pointSpacing)))\n : 0;\n };\n\n const applyScrub = (e: GestureResponderEvent): number | undefined => {\n if (pointCount === 0 || plotWidth <= 0) return undefined;\n const localX = e.nativeEvent.locationX - padding.left;\n const localY = e.nativeEvent.locationY - padding.top;\n const index =\n pointCount > 1 ? Math.min(pointCount - 1, Math.max(0, Math.round(localX / pointSpacing))) : 0;\n setActiveIndex(index);\n\n // Nearest visible line at this index by vertical distance to the touch.\n let nearestKey: string | null = null;\n let nearestDist = Infinity;\n lineGeometries.forEach((geometry) => {\n const point = geometry.points[index];\n if (!point || point.value === null) return;\n const dist = Math.abs(point.y - localY);\n if (dist < nearestDist) {\n nearestDist = dist;\n nearestKey = geometry.line.dataKey;\n }\n });\n setHoveredKey(nearestKey);\n return index;\n };\n\n // Touch model (mirrors AreaChart.native.tsx):\n // - Do NOT claim responder on touch start, so parent ScrollViews can keep vertical scroll.\n // - Claim on move only after a clearly horizontal scrub past SCRUB_MOVE_THRESHOLD.\n // - Taps are handled via onTouchEnd (never become responder) — show/toggle tooltip.\n // Selection persists after the finger lifts (parity with DonutChart): a tap on\n // the already-active index toggles it off, a tap/scrub elsewhere moves it.\n const touchStartActiveRef = React.useRef<number | undefined>(undefined);\n const touchStartIndexRef = React.useRef<number | undefined>(undefined);\n const touchMovedRef = React.useRef(false);\n const becameResponderRef = React.useRef(false);\n const touchStartLocationRef = React.useRef<{ x: number; y: number } | undefined>(undefined);\n const SCRUB_MOVE_THRESHOLD = 8;\n\n const handleTouchStart = (e: GestureResponderEvent): void => {\n if (data.length === 0) return;\n touchStartActiveRef.current = activeIndex;\n touchStartIndexRef.current = indexAtTouchX(e.nativeEvent.locationX);\n touchMovedRef.current = false;\n becameResponderRef.current = false;\n touchStartLocationRef.current = {\n x: e.nativeEvent.locationX,\n y: e.nativeEvent.locationY,\n };\n };\n\n const handleScrubStart = (e: GestureResponderEvent): void => {\n if (data.length === 0) return;\n becameResponderRef.current = true;\n touchMovedRef.current = true;\n applyScrub(e);\n };\n\n const handleScrubMove = (e: GestureResponderEvent): void => {\n touchMovedRef.current = true;\n applyScrub(e);\n };\n\n const handleTouchEnd = (): void => {\n if (becameResponderRef.current || touchMovedRef.current) return;\n if (data.length === 0) return;\n if (touchStartActiveRef.current === touchStartIndexRef.current) {\n setActiveIndex(undefined);\n setHoveredKey(null);\n } else if (touchStartIndexRef.current !== undefined) {\n setActiveIndex(touchStartIndexRef.current);\n const tapIndex = touchStartIndexRef.current;\n const tapY = touchStartLocationRef.current?.y;\n if (tapY !== undefined) {\n const localY = tapY - padding.top;\n let nearestKey: string | null = null;\n let nearestDist = Infinity;\n lineGeometries.forEach((geometry) => {\n const point = geometry.points[tapIndex];\n if (!point || point.value === null) return;\n const dist = Math.abs(point.y - localY);\n if (dist < nearestDist) {\n nearestDist = dist;\n nearestKey = geometry.line.dataKey;\n }\n });\n setHoveredKey(nearestKey);\n }\n }\n };\n\n const handleScrubTerminate = (): void => {\n becameResponderRef.current = false;\n };\n\n const activeRow = activeIndex !== undefined ? data[activeIndex] : undefined;\n const activeLabelRaw =\n activeRow && slots.xDataKey\n ? String(getRowValue(activeRow, slots.xDataKey) ?? activeIndex)\n : undefined;\n const activeLabel = activeLabelRaw\n ? slots.xTickFormatter\n ? slots.xTickFormatter(activeLabelRaw, activeIndex ?? 0)\n : activeLabelRaw\n : undefined;\n\n const tooltipRows = useMemo(() => {\n if (!activeRow) return [];\n const rows: Array<{ key: string; color: string; displayValue: string; label: string }> = [];\n visibleLines.forEach((line) => {\n const rawValue = getSeriesNumber(activeRow, line.dataKey);\n // Match Recharts Tooltip `filterNull` default (true): omit missing values.\n if (rawValue === null && slots.tooltipFilterNull) return;\n\n const color = resolveColor(line.dataKey, line.color);\n let displayValue = rawValue === null ? MISSING_TOOLTIP_VALUE : String(rawValue);\n let label = line.name ?? line.dataKey;\n const formatter = slots.tooltipFormatter;\n if (formatter) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const formatted = (formatter as any)(\n rawValue ?? undefined,\n line.dataKey,\n undefined,\n activeIndex,\n activeRow,\n );\n if (Array.isArray(formatted)) {\n if (formatted[0] !== undefined && formatted[0] !== null) {\n displayValue = String(formatted[0]);\n }\n if (formatted[1] !== undefined && formatted[1] !== null) {\n label = String(formatted[1]);\n }\n } else if (formatted !== undefined && formatted !== null) {\n displayValue = String(formatted);\n }\n } catch {\n // Formatter threw — fall back to the raw value silently.\n }\n }\n rows.push({ key: line.dataKey, color, displayValue, label });\n });\n return rows;\n }, [\n activeRow,\n visibleLines,\n dataColorMapping,\n theme.colors,\n slots.tooltipFormatter,\n slots.tooltipFilterNull,\n activeIndex,\n ]);\n\n // Lines eligible for a legend entry — include hidden ones so they can be\n // toggled back on (web parity).\n const legendLines = allLines.filter((line) => line.showLegend);\n\n const lineChartContextValue = useMemo(\n () => ({ hoveredDataKey: hoveredKey, setHoveredDataKey: setHoveredKey }),\n [hoveredKey],\n );\n\n const commonChartContextValue = useMemo(\n () => ({\n chartName: 'line' as const,\n dataColorMapping,\n selectedDataKeys: selectedKeys,\n setSelectedDataKeys: (keys: string[]) => setSelectedKeys(() => keys),\n secondaryLabelMap,\n dataLength: data?.length,\n }),\n [dataColorMapping, selectedKeys, secondaryLabelMap, data?.length],\n );\n\n const layoutTestID = testID ? `${testID}-layout` : undefined;\n\n return (\n <LineChartContext.Provider value={lineChartContextValue}>\n <CommonChartComponentsContext.Provider value={commonChartContextValue}>\n <BaseBox\n {...metaAttribute({ name: 'line-chart', testID })}\n {...makeAnalyticsAttribute(restProps)}\n width=\"100%\"\n height=\"100%\"\n display=\"flex\"\n flexDirection=\"column\"\n {...restProps}\n >\n {/* Single press-and-scrub surface — owns BOTH onLayout AND the touch\n responder, with the <Svg> as a DIRECT child (mirrors AreaChart). A\n nested responder view does not reliably receive touches on a real\n device, so layout + responder MUST live on the same view. */}\n <View\n testID={layoutTestID}\n // Absolute tooltip can grow taller than the plot; keep overflow visible\n // so the bubble is not clipped by the flex:1 scrub surface.\n style={{ flex: 1, width: '100%', overflow: 'visible' }}\n onLayout={onLayout}\n onTouchStart={handleTouchStart}\n onTouchEnd={handleTouchEnd}\n // Intentionally omit onStartShouldSetResponder (same as returning false): claiming\n // on start blocks parent ScrollViews. Capture horizontal scrubs on move instead.\n onMoveShouldSetResponder={(e) => {\n if (data.length === 0) return false;\n const start = touchStartLocationRef.current;\n if (!start || !e?.nativeEvent) return false;\n const dx = Math.abs(e.nativeEvent.locationX - start.x);\n const dy = Math.abs(e.nativeEvent.locationY - start.y);\n return dx >= SCRUB_MOVE_THRESHOLD && dx > dy;\n }}\n onResponderGrant={handleScrubStart}\n onResponderMove={handleScrubMove}\n onResponderTerminationRequest={() => true}\n onResponderTerminate={handleScrubTerminate}\n >\n {data.length === 0 ? (\n <Box\n flex={1}\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n padding=\"spacing.6\"\n >\n <Text size=\"small\" color=\"surface.text.gray.muted\">\n No data to display\n </Text>\n </Box>\n ) : size.width > 0 && size.height > 0 ? (\n // `pointerEvents=\"none\"` lets the touch fall through the SVG to the\n // single parent responder View so press-and-scrub reliably grants\n // on a real device (activeDot + tooltip + dimming).\n <Svg width={size.width} height={size.height} pointerEvents=\"none\">\n <G x={padding.left} y={padding.top}>\n {slots.hasGrid &&\n yTicks.map((tick, idx) => {\n const y = plotHeight - ((tick - yMin) / yRange) * plotHeight;\n return (\n <Line\n key={`grid-${idx}`}\n x1={0}\n x2={plotWidth}\n y1={y}\n y2={y}\n stroke={gridColor}\n strokeWidth={1}\n />\n );\n })}\n\n {slots.hasYAxis && (\n <>\n <Line\n x1={0}\n x2={0}\n y1={0}\n y2={plotHeight}\n stroke={axisLineColor}\n strokeWidth={1}\n />\n {yTicks.map((tick, idx) => {\n const y = plotHeight - ((tick - yMin) / yRange) * plotHeight;\n return (\n <SvgText\n key={`ytick-${idx}`}\n x={-6}\n y={y + TICK_FONT_SIZE / 3}\n fontSize={TICK_FONT_SIZE}\n fill={tickColor}\n textAnchor=\"end\"\n >\n {slots.yTickFormatter\n ? slots.yTickFormatter(tick, idx)\n : formatYTick(tick)}\n </SvgText>\n );\n })}\n {slots.yLabel ? (\n <SvgText\n x={-(PLOT_PADDING.left - AXIS_LABEL_FONT_SIZE - 2)}\n y={plotHeight / 2}\n fontSize={AXIS_LABEL_FONT_SIZE}\n fill={tickColor}\n textAnchor=\"middle\"\n transform={`rotate(-90 ${-(\n PLOT_PADDING.left -\n AXIS_LABEL_FONT_SIZE -\n 2\n )} ${plotHeight / 2})`}\n >\n {slots.yLabel}\n </SvgText>\n ) : null}\n </>\n )}\n\n {lineGeometries.map((geometry, idx) => (\n <LineSeries\n key={`line-${geometry.line.dataKey}`}\n geometry={geometry}\n index={idx}\n plotWidth={plotWidth}\n plotHeight={plotHeight}\n hoveredKey={hoveredKey}\n dataSignature={dataSignature}\n chartId={chartId}\n />\n ))}\n\n {/* activeDot for the scrubbed line (recharts `activeDot`). */}\n {activeIndex !== undefined && hoveredKey !== null\n ? lineGeometries.map((geometry) => {\n if (geometry.line.dataKey !== hoveredKey) return null;\n if (!geometry.line.activeDot) return null;\n const point = geometry.points[activeIndex];\n if (!point || point.value === null) return null;\n return (\n <G key={`active-dot-${geometry.line.dataKey}`}>\n <Circle\n cx={point.x}\n cy={point.y}\n r={ACTIVE_DOT_OUTER_RADIUS}\n fill={geometry.color}\n fillOpacity={0.2}\n />\n <Circle\n cx={point.x}\n cy={point.y}\n r={ACTIVE_DOT_INNER_RADIUS}\n fill={geometry.color}\n stroke={getIn(theme.colors, 'surface.background.gray.intense')}\n strokeWidth={1.5}\n />\n </G>\n );\n })\n : null}\n\n {slots.referenceLines.map((refLine, idx) => {\n const isVertical = refLine.x !== undefined && refLine.x !== null;\n const stroke = getIn(theme.colors, 'data.background.categorical.gray.intense');\n const chipFill = getIn(theme.colors, 'surface.background.gray.subtle');\n const chipStroke = getIn(theme.colors, 'surface.border.gray.muted');\n const chipTextColor = getIn(theme.colors, 'surface.text.gray.normal');\n const chipWidth = refLine.label\n ? Math.max(40, refLine.label.length * 6 + 16)\n : 0;\n const chipHeight = 20;\n\n if (isVertical) {\n // Resolve the x value to an index.\n let index = -1;\n if (slots.xDataKey) {\n index = data.findIndex(\n (row) => String(getRowValue(row, slots.xDataKey!)) === String(refLine.x),\n );\n }\n if (index < 0 && isNumber(Number(refLine.x))) {\n index = Number(refLine.x);\n }\n if (index < 0 || index > pointCount - 1) return null;\n const x = xForIndex(index);\n return (\n <G key={`refline-${idx}`}>\n <Line\n x1={x}\n x2={x}\n y1={0}\n y2={plotHeight}\n stroke={stroke}\n strokeWidth={2}\n strokeDasharray=\"4 4\"\n />\n {refLine.label ? (\n <G>\n <Rect\n x={x - chipWidth / 2}\n y={0}\n width={chipWidth}\n height={chipHeight}\n rx={theme.border.radius.medium}\n fill={chipFill}\n stroke={chipStroke}\n strokeWidth={1}\n />\n <SvgText\n x={x}\n y={chipHeight / 2 + TICK_FONT_SIZE / 3}\n fontSize={TICK_FONT_SIZE}\n fill={chipTextColor}\n textAnchor=\"middle\"\n >\n {refLine.label}\n </SvgText>\n </G>\n ) : null}\n </G>\n );\n }\n\n // Horizontal (numeric y).\n if (refLine.y === undefined || refLine.y > yMax || refLine.y < yMin)\n return null;\n const y = plotHeight - ((refLine.y - yMin) / yRange) * plotHeight;\n return (\n <G key={`refline-${idx}`}>\n <Line\n x1={0}\n x2={plotWidth}\n y1={y}\n y2={y}\n stroke={stroke}\n strokeWidth={2}\n strokeDasharray=\"4 4\"\n />\n {refLine.label ? (\n <G>\n {/* Pill sits at the END of the line (right edge flush)\n and is vertically centered on the line — matches web. */}\n <Rect\n x={plotWidth - chipWidth}\n y={y - chipHeight / 2}\n width={chipWidth}\n height={chipHeight}\n rx={theme.border.radius.medium}\n fill={chipFill}\n stroke={chipStroke}\n strokeWidth={1}\n />\n <SvgText\n x={plotWidth - chipWidth / 2}\n y={y + TICK_FONT_SIZE / 3}\n fontSize={TICK_FONT_SIZE}\n fill={chipTextColor}\n textAnchor=\"middle\"\n >\n {refLine.label}\n </SvgText>\n </G>\n ) : null}\n </G>\n );\n })}\n\n {slots.hasXAxis && (\n <>\n <Line\n x1={0}\n x2={plotWidth}\n y1={plotHeight}\n y2={plotHeight}\n stroke={axisLineColor}\n strokeWidth={1}\n />\n {data.map((row, index) => {\n if (!visibleXTickIndexSet.has(index)) return null;\n const cx = xForIndex(index);\n const lines = xLabelLines[index] ?? [''];\n const secondary = secondaryLabelMap?.[index];\n const primaryY = plotHeight + TICK_FONT_SIZE + 4;\n // First/last anchor to their inner edge so wide wrapped\n // labels don't spill off the canvas; inner ticks center.\n const anchor =\n index === 0 ? 'start' : index === pointCount - 1 ? 'end' : 'middle';\n // Secondary sits below the tallest possible primary block\n // so it stays on one row across all ticks.\n const secondaryY =\n primaryY +\n (maxXLabelLines - 1) * TICK_LINE_HEIGHT +\n SECONDARY_LABEL_FONT_SIZE +\n PRIMARY_TO_SECONDARY_GAP;\n return (\n <G key={`xtick-${index}`}>\n {lines.map((line, lineIndex) => (\n <SvgText\n key={`xtick-${index}-line-${lineIndex}`}\n x={cx}\n y={primaryY + lineIndex * TICK_LINE_HEIGHT}\n fontSize={TICK_FONT_SIZE}\n fill={tickColor}\n textAnchor={anchor}\n >\n {line}\n </SvgText>\n ))}\n {secondary !== undefined && secondary !== null ? (\n <SvgText\n x={cx}\n y={secondaryY}\n fontSize={SECONDARY_LABEL_FONT_SIZE}\n fill={tickColor}\n textAnchor={anchor}\n >\n {String(secondary)}\n </SvgText>\n ) : null}\n </G>\n );\n })}\n </>\n )}\n\n {slots.xLabel ? (\n <SvgText\n x={plotWidth / 2}\n y={plotHeight + padding.bottom - 4}\n fontSize={AXIS_LABEL_FONT_SIZE}\n fill={tickColor}\n textAnchor=\"middle\"\n >\n {slots.xLabel}\n </SvgText>\n ) : null}\n </G>\n </Svg>\n ) : null}\n\n {slots.hasTooltip &&\n activeIndex !== undefined &&\n tooltipRows.length > 0 &&\n size.width > 0 ? (\n <View\n pointerEvents=\"none\"\n style={{\n position: 'absolute',\n top: padding.top,\n left: Math.max(\n padding.left,\n Math.min(\n size.width - TOOLTIP_WIDTH - padding.right,\n padding.left + xForIndex(activeIndex) - TOOLTIP_WIDTH / 2,\n ),\n ),\n width: TOOLTIP_WIDTH,\n backgroundColor: getIn(theme.colors, 'surface.icon.staticBlack.normal'),\n borderRadius: theme.border.radius.large,\n borderWidth: 1,\n borderColor: getIn(theme.colors, 'surface.border.gray.muted'),\n paddingHorizontal: theme.spacing[4],\n paddingVertical: theme.spacing[4],\n shadowColor: getIn(theme.colors, 'surface.icon.staticBlack.normal'),\n shadowOpacity: 0.2,\n shadowRadius: 4,\n shadowOffset: { width: 0, height: 2 },\n elevation: 4,\n }}\n >\n {activeLabel ? (\n <Box paddingBottom=\"spacing.2\">\n <Text size=\"small\" weight=\"semibold\" color=\"surface.text.staticWhite.normal\">\n {activeLabel}\n </Text>\n </Box>\n ) : null}\n {tooltipRows.map((row) => (\n <View\n key={row.key}\n style={{\n flexDirection: 'row',\n // flex-start: wrapped labels must grow the row (center clipped them).\n alignItems: 'flex-start',\n paddingVertical: theme.spacing[1],\n }}\n >\n <View\n style={{\n width: 8,\n height: 8,\n borderRadius: 2,\n backgroundColor: row.color,\n marginRight: theme.spacing[2],\n marginTop: 3,\n }}\n />\n <View style={{ flex: 1, marginRight: theme.spacing[2] }}>\n <Text size=\"xsmall\" color=\"surface.text.staticWhite.normal\">\n {row.label}\n </Text>\n </View>\n <View style={{ width: TOOLTIP_VALUE_WIDTH }}>\n <Text\n size=\"xsmall\"\n weight=\"semibold\"\n color=\"surface.text.staticWhite.normal\"\n textAlign=\"right\"\n >\n {row.displayValue}\n </Text>\n </View>\n </View>\n ))}\n </View>\n ) : null}\n </View>\n\n {/* Interactive legend — native Pressables (functionally identical to\n the web SVG legend: toggle show/hide, controllable, callback). */}\n {slots.hasLegend && legendLines.length > 0 ? (\n <View\n style={{\n flexDirection: slots.legend.layout === 'vertical' ? 'column' : 'row',\n flexWrap: slots.legend.layout === 'vertical' ? 'nowrap' : 'wrap',\n alignItems: slots.legend.layout === 'vertical' ? 'flex-start' : 'center',\n justifyContent:\n slots.legend.align === 'left'\n ? 'flex-start'\n : slots.legend.align === 'right'\n ? 'flex-end'\n : 'center',\n paddingTop: theme.spacing[3],\n paddingHorizontal: theme.spacing[3],\n }}\n >\n {legendLines.map((line) => {\n const selected = isVisible(line.dataKey);\n const swatchColor = selected\n ? resolveColor(line.dataKey, line.color)\n : getIn(theme.colors, 'surface.text.gray.muted');\n return (\n <Pressable\n key={`legend-${line.dataKey}`}\n testID={`legend-${line.dataKey}`}\n onPress={() => toggleLegend(line.dataKey)}\n accessibilityRole=\"button\"\n accessibilityLabel={`${line.name ?? line.dataKey}, ${\n selected ? 'selected' : 'deselected'\n }`}\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n opacity: selected ? 1 : 0.5,\n paddingVertical: theme.spacing[1],\n paddingHorizontal: theme.spacing[2],\n }}\n {...metaAttribute({ name: `chart-legend-item-${line.dataKey}` })}\n >\n <View\n style={{\n width: LEGEND_DOT_SIZE,\n height: LEGEND_DOT_SIZE,\n borderRadius: theme.border.radius['2xsmall'],\n backgroundColor: swatchColor,\n marginRight: theme.spacing[2],\n }}\n />\n <Text size=\"small\" color=\"surface.text.gray.muted\">\n {line.name ?? line.dataKey}\n </Text>\n </Pressable>\n );\n })}\n </View>\n ) : null}\n </BaseBox>\n </CommonChartComponentsContext.Provider>\n </LineChartContext.Provider>\n );\n};\n\nexport type { ChartLineProps, ChartLineWrapperProps };\nexport { ChartLineWrapper, ChartLine };\n"],"names":["this","AnimatedPath","Animated","createAnimatedComponent","Path","AnimatedRect","Rect","uniqueChartCounter","PLOT_PADDING","top","right","bottom","left","Y_TICK_COUNT","LEGEND_DOT_SIZE","TICK_FONT_SIZE","AXIS_LABEL_FONT_SIZE","SECONDARY_LABEL_FONT_SIZE","X_AXIS_TITLE_GAP","PRIMARY_TO_SECONDARY_GAP","X_TICK_LABEL_GAP","TICK_LINE_HEIGHT","MAX_TICK_LABEL_LINES","LINE_STROKE_WIDTH","DOT_RADIUS","ACTIVE_DOT_OUTER_RADIUS","ACTIVE_DOT_INNER_RADIUS","DIM_OPACITY","TOOLTIP_WIDTH","TOOLTIP_VALUE_WIDTH","estimateTextWidth","label","fontSize","Math","max","length","estimateTickLabelWidth","wrapLabelToLines","maxWidth","text","String","trim","maxChars","floor","words","split","lines","current","flush","push","forEach","word","remaining","slice","kept","lastIndex","last","selectNonOverlappingXTickIndices","pointCount","widths","xForIndex","forcedStep","rightExtent","i","leftExtent","fitsAfter","prev","next","undefined","step","indices","first","firstLastFit","selected","readChildSlots","children","slots","hasXAxis","hasYAxis","hasLegend","legend","hasGrid","referenceLines","hasTooltip","tooltipFilterNull","React","Children","child","isValidElement","id","getComponentId","componentIds","ChartLine","_props$strokeStyle","_props$type","_props$showLegend","props","dataKey","name","color","strokeStyle","type","dot","Boolean","activeDot","connectNulls","showLegend","hide","commonComponentIds","chartXAxis","xDataKey","xSecondaryDataKey","secondaryDataKey","xTickFormatter","tickFormatter","xInterval","interval","xLabel","chartYAxis","yLabel","Array","isArray","domain","yDomain","yTickFormatter","tickCount","yTickCount","chartLegend","layout","align","selectedDataKeys","defaultSelectedDataKeys","onSelectedDataKeysChange","chartCartesianGrid","chartTooltip","formatter","tooltipFormatter","filterNull","chartReferenceLine","y","x","niceCeil","raw","exponent","log10","fraction","niceFraction","niceFloor","toNullableNumber","value","Number","isNaN","isFinite","getRowValue","row","getIn","getSeriesNumber","resolveYMax","dataMax","MISSING_TOOLTIP_VALUE","formatYTick","abs","toFixed","buildLinearPath","points","map","p","join","buildStepPath","variant","d","cur","midX","buildMonotonePath","n","dxs","ms","dx","dy","tangents","m","mNext","dxNext","common","p0","p1","buildPath","getStrokeDasharray","buildSegments","definedPoints","filter","_ref","segments","LineSeries","_ref2","geometry","index","plotWidth","plotHeight","hoveredKey","dataSignature","chartId","_useTheme","useTheme","theme","line","draw","useSharedValue","dim","duration","motion","baseDelay","beginDelay","drawEasing","dimDuration","useEffect","withDelay","withTiming","easing","isOther","Easing","bezier","clipProps","useAnimatedProps","width","dimProps","strokeOpacity","useMemo","dash","clipId","_jsxs","G","_jsx","Defs","ClipPath","height","animatedProps","clipPath","segment","segmentIndex","testID","stroke","strokeWidth","strokeDasharray","strokeLinecap","strokeLinejoin","fill","pointIndex","Circle","cx","cy","r","_ChartLine","_props","assignWithoutSideEffects","componentId","ChartLineWrapper","_ref3","_slots$legend$default","_slots$yTickCount","_getRowValue2","_ref3$colorTheme","colorTheme","_ref3$data","data","restProps","_objectWithoutProperties","_excluded","_useTheme2","_useState","useState","_useState2","_slicedToArray","size","setSize","_useState3","_useState4","activeIndex","setActiveIndex","_useState5","_useState6","setHoveredKey","chartIdRef","useRef","onLayout","e","_e$nativeEvent$layout","nativeEvent","allLines","yAxisWarnedRef","__DEV__","unsupported","every","v","isNumber","logger","moduleName","message","themeColors","useChartsColorTheme","chartName","chartDataIndicators","dataColorMapping","mapping","colorToken","isCustomColor","assignDataColorMapping","allDataKeys","Object","keys","_useControllableState","useControllableState","defaultValue","_useControllableState2","selectedKeys","setSelectedKeys","hasUserInteractedRef","isControlled","shouldAutoSelectAllDataKeys","isInSync","includes","_toConsumableArray","hasOverlap","some","key","isVisible","toggleLegend","k","concat","selectedKeysArray","visibleLines","l","secondaryLabelMap","_useMemo","dataMin","linesForDomain","min","Infinity","yMax","yMin","yRange","yTicks","ticks","showAxes","hasSecondaryXLabels","secondaryRowHeight","xAxisTitleHeight","plotWidthForLabels","columnWidth","xLabels","_getRowValue","rawLabel","xLabelLines","maxXLabelLines","reduce","primaryLabelRowHeight","padding","assign","pointSpacing","visibleXTickIndices","primaryWidth","secondary","secondaryWidth","visibleXTickIndexSet","Set","tickColor","colors","axisLineColor","gridColor","resolveColor","fallback","_dataColorMapping$dat","_dataColorMapping$dat2","token","lineGeometries","indexAtTouchX","locationX","localX","round","applyScrub","localY","locationY","nearestKey","nearestDist","point","dist","touchStartActiveRef","touchStartIndexRef","touchMovedRef","becameResponderRef","touchStartLocationRef","SCRUB_MOVE_THRESHOLD","handleTouchStart","handleScrubStart","handleScrubMove","handleTouchEnd","_touchStartLocationRe","tapIndex","tapY","handleScrubTerminate","activeRow","activeLabelRaw","activeLabel","tooltipRows","rows","_line$name","rawValue","displayValue","formatted","_unused","legendLines","lineChartContextValue","hoveredDataKey","setHoveredDataKey","commonChartContextValue","setSelectedDataKeys","dataLength","layoutTestID","LineChartContext","Provider","CommonChartComponentsContext","BaseBox","metaAttribute","makeAnalyticsAttribute","display","flexDirection","View","style","flex","overflow","onTouchStart","onTouchEnd","onMoveShouldSetResponder","start","onResponderGrant","onResponderMove","onResponderTerminationRequest","onResponderTerminate","Box","alignItems","justifyContent","Text","Svg","pointerEvents","tick","idx","Line","x1","x2","y1","y2","_Fragment","SvgText","textAnchor","transform","fillOpacity","refLine","isVertical","chipFill","chipStroke","chipTextColor","chipWidth","chipHeight","findIndex","rx","border","radius","medium","_xLabelLines$index","has","primaryY","anchor","secondaryY","lineIndex","position","backgroundColor","borderRadius","large","borderWidth","borderColor","paddingHorizontal","spacing","paddingVertical","shadowColor","shadowOpacity","shadowRadius","shadowOffset","elevation","paddingBottom","weight","marginRight","marginTop","textAlign","flexWrap","paddingTop","_line$name2","_line$name3","swatchColor","Pressable","onPress","accessibilityRole","accessibilityLabel","opacity"],"mappings":"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"}
1
+ {"version":3,"file":"LineChart.native.js","sources":["../../../../../../src/components/Charts/LineChart/LineChart.native.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport {\n Svg,\n Path,\n Line,\n Circle,\n Rect,\n Text as SvgText,\n G,\n ClipPath,\n Defs,\n} from 'react-native-svg';\nimport { Pressable, View } from 'react-native';\nimport type { GestureResponderEvent, LayoutChangeEvent } from 'react-native';\nimport Animated, {\n useSharedValue,\n useAnimatedProps,\n withTiming,\n withDelay,\n Easing,\n} from 'react-native-reanimated';\nimport { useChartsColorTheme, assignDataColorMapping } from '../utils';\nimport {\n CommonChartComponentsContext,\n componentId as commonComponentIds,\n} from '../CommonChartComponents';\nimport type {\n ChartXAxisProps,\n ChartYAxisProps,\n ChartReferenceLineProps,\n ChartReferenceBandProps,\n ChartTooltipProps,\n ChartLegendProps,\n DataColorMapping,\n} from '../CommonChartComponents';\nimport type {\n ChartsCategoricalColorToken,\n ChartSequentialColorToken,\n} from '../CommonChartComponents/types';\nimport {\n REFERENCE_BAND_DEFAULT_COLOR,\n REFERENCE_BAND_FILL_OPACITY,\n} from '../CommonChartComponents/tokens';\nimport { componentIds } from './componentIds';\nimport { LineChartContext } from './LineChartContext';\nimport { monotoneInterpolate } from '../utils/nullBridgeUtils';\nimport { buildBandAreaPath } from '../utils/referenceBandUtils';\nimport type { ChartLineProps, ChartLineWrapperProps } from './types';\nimport { useTheme } from '~components/BladeProvider';\nimport { Text } from '~components/Typography';\nimport BaseBox from '~components/Box/BaseBox';\nimport { Box } from '~components/Box';\nimport { assignWithoutSideEffects } from '~utils/assignWithoutSideEffects';\nimport { getComponentId } from '~utils/isValidAllowedChildren';\nimport getIn from '~utils/lodashButBetter/get';\nimport isNumber from '~utils/lodashButBetter/isNumber';\nimport { logger } from '~utils/logger';\nimport type { TestID, DataAnalyticsAttribute } from '~utils/types';\nimport { makeAnalyticsAttribute } from '~utils/makeAnalyticsAttribute';\nimport { metaAttribute } from '~utils/metaAttribute';\nimport { useControllableState } from '~utils/useControllable';\n\n// Animated SVG primitives — reanimated drives the draw-in reveal (clip width)\n// and the active/inactive dimming (strokeOpacity).\nconst AnimatedPath = Animated.createAnimatedComponent(Path);\nconst AnimatedRect = Animated.createAnimatedComponent(Rect);\n\n// Module-level counter yields stable, collision-free ids for clip defs\n// across multiple chart instances on the same screen without relying on the\n// async `useId` (which is null on the first native render).\nlet uniqueChartCounter = 0;\n\n// Plot padding is in raw SVG pixels because react-native-svg works in pixel\n// space; it does not consume Blade's spacing tokens directly.\nconst PLOT_PADDING = { top: 16, right: 16, bottom: 32, left: 40 };\nconst Y_TICK_COUNT = 4;\nconst LEGEND_DOT_SIZE = 10;\nconst TICK_FONT_SIZE = 10;\nconst AXIS_LABEL_FONT_SIZE = 11;\nconst SECONDARY_LABEL_FONT_SIZE = 10;\nconst X_AXIS_TITLE_GAP = 6;\n// Gap between primary tick baseline and secondary tick baseline (own vertical row).\nconst PRIMARY_TO_SECONDARY_GAP = 8;\nconst X_TICK_LABEL_GAP = 8;\n// Line height between wrapped x-label rows.\nconst TICK_LINE_HEIGHT = TICK_FONT_SIZE + 2;\n// Cap wrapped label rows so a very long label can't consume the whole chart.\nconst MAX_TICK_LABEL_LINES = 3;\nconst LINE_STROKE_WIDTH = 1.5;\nconst DOT_RADIUS = 3;\nconst ACTIVE_DOT_OUTER_RADIUS = 6;\nconst ACTIVE_DOT_INNER_RADIUS = 3.5;\n// Opacity applied to non-hovered lines — matches web hover dim (0.2).\nconst DIM_OPACITY = 0.2;\n\n/** Fixed tooltip width so wrapped labels are measured in the first layout pass. */\nconst TOOLTIP_WIDTH = 160;\n/** Right-aligned value column so all numbers line up in a column. */\nconst TOOLTIP_VALUE_WIDTH = 44;\n\n/** Rough width of a rendered string (no gap) — used for wrapping decisions. */\nconst estimateTextWidth = (label: string, fontSize: number): number =>\n Math.max(1, label.length) * fontSize * 0.6;\n\n/** Estimate rendered label width; slightly aggressive so long mobile ticks thin early. */\nconst estimateTickLabelWidth = (label: string, fontSize: number): number =>\n Math.max(1, label.length) * fontSize * 0.72 + X_TICK_LABEL_GAP;\n\n/**\n * Word-wrap a label into lines that each fit `maxWidth`, so every category can be\n * shown without dropping labels (mirrors web wrapping). A word longer than a line\n * is hard-broken so it can never overflow its column and overlap a neighbour.\n * Beyond `MAX_TICK_LABEL_LINES` the last line is ellipsised to bound height.\n */\nconst wrapLabelToLines = (label: string, maxWidth: number, fontSize: number): string[] => {\n const text = String(label).trim();\n if (!text) return [''];\n if (maxWidth <= 0) return [text];\n\n const maxChars = Math.max(1, Math.floor(maxWidth / (fontSize * 0.6)));\n const words = text.split(/\\s+/);\n const lines: string[] = [];\n let current = '';\n const flush = (): void => {\n if (current) {\n lines.push(current);\n current = '';\n }\n };\n\n words.forEach((word) => {\n let remaining = word;\n // Hard-break words wider than a full line.\n while (remaining.length > maxChars) {\n flush();\n lines.push(remaining.slice(0, maxChars));\n remaining = remaining.slice(maxChars);\n }\n if (!current) {\n current = remaining;\n } else if (current.length + 1 + remaining.length <= maxChars) {\n current = `${current} ${remaining}`;\n } else {\n flush();\n current = remaining;\n }\n });\n flush();\n\n if (lines.length > MAX_TICK_LABEL_LINES) {\n const kept = lines.slice(0, MAX_TICK_LABEL_LINES);\n const lastIndex = MAX_TICK_LABEL_LINES - 1;\n const last = kept[lastIndex];\n kept[lastIndex] = `${last.slice(0, Math.max(1, maxChars - 1))}…`;\n return kept;\n }\n return lines;\n};\n\n/**\n * Pick x-tick indices that do not overlap under middle-anchoring.\n * Prefers keeping first + last when both fit, then greedily fills the middle.\n */\nconst selectNonOverlappingXTickIndices = (\n pointCount: number,\n widths: number[],\n xForIndex: (index: number) => number,\n forcedStep?: number,\n): number[] => {\n if (pointCount <= 0) return [];\n if (pointCount === 1) return [0];\n\n const rightExtent = (i: number): number => xForIndex(i) + (i === 0 ? widths[i] : widths[i] / 2);\n const leftExtent = (i: number): number =>\n xForIndex(i) - (i === pointCount - 1 ? widths[i] : widths[i] / 2);\n const fitsAfter = (prev: number, next: number): boolean => leftExtent(next) >= rightExtent(prev);\n\n if (forcedStep !== undefined) {\n const step = Math.max(1, forcedStep);\n const indices: number[] = [];\n for (let i = 0; i < pointCount; i += step) {\n indices.push(i);\n }\n const last = pointCount - 1;\n if (indices[indices.length - 1] !== last && fitsAfter(indices[indices.length - 1], last)) {\n indices.push(last);\n }\n return indices;\n }\n\n const first = 0;\n const last = pointCount - 1;\n const firstLastFit = fitsAfter(first, last);\n const selected: number[] = [first];\n\n if (firstLastFit) {\n let prev = first;\n for (let i = 1; i < last; i++) {\n // Leave room for the reserved last tick.\n if (fitsAfter(prev, i) && fitsAfter(i, last)) {\n selected.push(i);\n prev = i;\n }\n }\n selected.push(last);\n return selected;\n }\n\n // First+last cannot both fit — keep first and greedily pack the rest.\n let prev = first;\n for (let i = 1; i < pointCount; i++) {\n if (fitsAfter(prev, i)) {\n selected.push(i);\n prev = i;\n }\n }\n return selected;\n};\n\ntype LineType = NonNullable<ChartLineProps['type']>;\ntype StrokeStyle = NonNullable<ChartLineProps['strokeStyle']>;\n\ntype LineSlot = {\n dataKey: string;\n name?: string;\n color?: ChartsCategoricalColorToken | ChartSequentialColorToken;\n strokeStyle: StrokeStyle;\n type: LineType;\n dot: boolean;\n activeDot: boolean;\n connectNulls: boolean;\n connectNullsStyle: 'solid' | 'dashed';\n showLegend: boolean;\n hide?: boolean;\n // Per-line reference band (industry range for this metric).\n rangeLowerDataKey?: string;\n rangeUpperDataKey?: string;\n rangeName?: string;\n rangeColor?: ChartsCategoricalColorToken | ChartSequentialColorToken;\n showRangeLegend?: boolean;\n};\n\ntype ReferenceLineSlot = {\n y?: number;\n x?: string | number;\n label?: string;\n};\n\ntype ReferenceBandSlot = {\n lowerDataKey: string;\n upperDataKey: string;\n name: string;\n color: ChartsCategoricalColorToken | ChartSequentialColorToken;\n showLegend: boolean;\n};\n\n// A band resolved for rendering — one per line with a range, plus the standalone band. `fillColor`\n// is the already-resolved hex (line color-matched or the band's own token).\ntype ResolvedBand = {\n id: string;\n lowerDataKey: string;\n upperDataKey: string;\n name: string;\n fillColor: string;\n showLegend: boolean;\n};\n\ntype BandGeometryNative = {\n id: string;\n d: string;\n color: string;\n};\n\ntype TooltipFormatter = NonNullable<ChartTooltipProps['formatter']>;\n\ntype LegendSlot = {\n layout?: ChartLegendProps['layout'];\n align?: ChartLegendProps['align'];\n selectedDataKeys?: string[];\n defaultSelectedDataKeys?: string[];\n onSelectedDataKeysChange?: ChartLegendProps['onSelectedDataKeysChange'];\n};\n\ntype ChildSlots = {\n lines: LineSlot[];\n hasXAxis: boolean;\n xDataKey?: string;\n xSecondaryDataKey?: string;\n xTickFormatter?: (value: string, index: number) => string;\n xInterval?: number;\n xLabel?: string;\n hasYAxis: boolean;\n yLabel?: string;\n yTickFormatter?: ChartYAxisProps['tickFormatter'];\n yDomain?: [number | string, number | string];\n yTickCount?: number;\n hasLegend: boolean;\n legend: LegendSlot;\n hasGrid: boolean;\n referenceLines: ReferenceLineSlot[];\n referenceBand?: ReferenceBandSlot;\n hasTooltip: boolean;\n tooltipFormatter?: TooltipFormatter;\n /** Recharts Tooltip `filterNull` — defaults to true (omit null/undefined rows). */\n tooltipFilterNull: boolean;\n};\n\nconst readChildSlots = (children: React.ReactNode): ChildSlots => {\n const slots: ChildSlots = {\n lines: [],\n hasXAxis: false,\n hasYAxis: false,\n hasLegend: false,\n legend: {},\n hasGrid: false,\n referenceLines: [],\n hasTooltip: false,\n // Match Recharts Tooltip default: null/undefined payload entries are omitted.\n tooltipFilterNull: true,\n };\n\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) return;\n const id = getComponentId(child);\n if (id === componentIds.ChartLine) {\n const props = child.props as ChartLineProps;\n slots.lines.push({\n dataKey: props.dataKey as string,\n name: props.name,\n color: props.color,\n strokeStyle: props.strokeStyle ?? 'solid',\n type: props.type ?? 'monotone',\n dot: Boolean(props.dot),\n activeDot: props.activeDot !== false,\n connectNulls: Boolean(props.connectNulls),\n connectNullsStyle: props.connectNullsStyle ?? 'solid',\n showLegend: props.showLegend ?? true,\n hide: props.hide,\n rangeLowerDataKey: props.rangeLowerDataKey,\n rangeUpperDataKey: props.rangeUpperDataKey,\n rangeName: props.rangeName,\n rangeColor: props.rangeColor,\n showRangeLegend: props.showRangeLegend,\n });\n } else if (id === commonComponentIds.chartXAxis) {\n const props = child.props as ChartXAxisProps;\n slots.hasXAxis = true;\n slots.xDataKey = props.dataKey;\n slots.xSecondaryDataKey = props.secondaryDataKey;\n slots.xTickFormatter = props.tickFormatter;\n slots.xInterval = props.interval;\n slots.xLabel = props.label;\n } else if (id === commonComponentIds.chartYAxis) {\n const props = child.props as ChartYAxisProps;\n slots.hasYAxis = true;\n slots.yLabel = props.label;\n if (Array.isArray(props.domain) && props.domain.length === 2) {\n slots.yDomain = [props.domain[0], props.domain[1]];\n }\n slots.yTickFormatter = props.tickFormatter;\n if (typeof props.tickCount === 'number') {\n slots.yTickCount = props.tickCount;\n }\n } else if (id === commonComponentIds.chartLegend) {\n const props = child.props as ChartLegendProps;\n slots.hasLegend = true;\n slots.legend = {\n layout: props.layout,\n align: props.align,\n selectedDataKeys: props.selectedDataKeys,\n defaultSelectedDataKeys: props.defaultSelectedDataKeys,\n onSelectedDataKeysChange: props.onSelectedDataKeysChange,\n };\n } else if (id === commonComponentIds.chartCartesianGrid) {\n slots.hasGrid = true;\n } else if (id === commonComponentIds.chartTooltip) {\n slots.hasTooltip = true;\n const props = child.props as ChartTooltipProps;\n if (typeof props.formatter === 'function') {\n slots.tooltipFormatter = props.formatter;\n }\n if (props.filterNull !== undefined) {\n slots.tooltipFilterNull = Boolean(props.filterNull);\n }\n } else if (id === commonComponentIds.chartReferenceLine) {\n const props = child.props as ChartReferenceLineProps;\n // Native supports BOTH horizontal (numeric `y`) and vertical (`x`)\n // reference lines — full web parity.\n slots.referenceLines.push({\n y: typeof props.y === 'number' ? props.y : undefined,\n x: props.x,\n label: typeof props.label === 'string' ? props.label : undefined,\n });\n } else if (id === commonComponentIds.chartReferenceBand) {\n const props = child.props as ChartReferenceBandProps;\n slots.referenceBand = {\n lowerDataKey: props.lowerDataKey,\n upperDataKey: props.upperDataKey,\n name: props.name ?? 'Reference band',\n color: props.color ?? (REFERENCE_BAND_DEFAULT_COLOR as ReferenceBandSlot['color']),\n showLegend: props.showLegend ?? true,\n };\n }\n });\n\n return slots;\n};\n\nconst niceCeil = (raw: number): number => {\n if (raw <= 0) return 1;\n const exponent = Math.floor(Math.log10(raw));\n const fraction = raw / 10 ** exponent;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * 10 ** exponent;\n};\n\nconst niceFloor = (raw: number): number => {\n if (raw >= 0) return 0;\n return -niceCeil(-raw);\n};\n\n/** Parse a chart cell to a finite number, or null when the value is missing/invalid. */\nconst toNullableNumber = (raw: unknown): number | null => {\n if (raw === null || raw === undefined) return null;\n const value = Number(raw);\n return Number.isNaN(value) || !isFinite(value) ? null : value;\n};\n\n/**\n * Resolve a (possibly nested) dataKey from a row — matches Recharts/lodash-get\n * semantics so keys like `metrics.sales` work on native.\n */\nconst getRowValue = (row: Record<string, unknown>, dataKey: string): unknown =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getIn(row as any, dataKey as any);\n\nconst getSeriesNumber = (row: Record<string, unknown>, dataKey: string): number | null =>\n toNullableNumber(getRowValue(row, dataKey));\n\n/** Y-domain max: nice-ceil positives; clamp all-negative/zero-max to 0; keep 1 for all-zero. */\nconst resolveYMax = (dataMax: number): number => {\n if (dataMax > 0) return niceCeil(dataMax);\n if (dataMax < 0) return 0;\n return 1;\n};\n\nconst MISSING_TOOLTIP_VALUE = '—';\n\nconst formatYTick = (value: number): string => {\n const abs = Math.abs(value);\n if (abs >= 1_000_000) return `${(value / 1_000_000).toFixed(abs >= 10_000_000 ? 0 : 1)}M`;\n if (abs >= 1_000) return `${(value / 1_000).toFixed(abs >= 10_000 ? 0 : 1)}K`;\n return String(value);\n};\n\ntype Point = { x: number; y: number };\n\nconst buildLinearPath = (points: Point[]): string => {\n if (points.length === 0) return '';\n return `M ${points[0].x} ${points[0].y}${points\n .slice(1)\n .map((p) => ` L ${p.x} ${p.y}`)\n .join('')}`;\n};\n\nconst buildStepPath = (points: Point[], variant: 'step' | 'stepAfter' | 'stepBefore'): string => {\n if (points.length === 0) return '';\n let d = `M ${points[0].x} ${points[0].y}`;\n for (let i = 1; i < points.length; i++) {\n const prev = points[i - 1];\n const cur = points[i];\n if (variant === 'stepBefore') {\n d += ` L ${prev.x} ${cur.y} L ${cur.x} ${cur.y}`;\n } else if (variant === 'stepAfter') {\n d += ` L ${cur.x} ${prev.y} L ${cur.x} ${cur.y}`;\n } else {\n // `step` — step at the midpoint between points (d3 curveStep behavior).\n const midX = (prev.x + cur.x) / 2;\n d += ` L ${midX} ${prev.y} L ${midX} ${cur.y} L ${cur.x} ${cur.y}`;\n }\n }\n return d;\n};\n\n// Monotone cubic interpolation using a weighted-harmonic tangent formula. This approximates\n// (but is not pixel-identical to) d3-shape's `curveMonotoneX` that Recharts uses on web. The\n// null-bridge (`monotoneInterpolate`) shares this exact formula, so the dashed bridge follows\n// the same curve as this solid line on native LineChart.\nconst buildMonotonePath = (points: Point[]): string => {\n const n = points.length;\n if (n === 0) return '';\n if (n === 1) return `M ${points[0].x} ${points[0].y}`;\n if (n === 2) return `M ${points[0].x} ${points[0].y} L ${points[1].x} ${points[1].y}`;\n\n const dxs: number[] = [];\n const ms: number[] = [];\n for (let i = 0; i < n - 1; i++) {\n const dx = points[i + 1].x - points[i].x;\n const dy = points[i + 1].y - points[i].y;\n dxs.push(dx);\n ms.push(dx === 0 ? 0 : dy / dx);\n }\n\n const tangents: number[] = [ms[0]];\n for (let i = 0; i < dxs.length - 1; i++) {\n const m = ms[i];\n const mNext = ms[i + 1];\n if (m * mNext <= 0) {\n tangents.push(0);\n } else {\n const dx = dxs[i];\n const dxNext = dxs[i + 1];\n const common = dx + dxNext;\n tangents.push((3 * common) / ((common + dxNext) / m + (common + dx) / mNext));\n }\n }\n tangents.push(ms[ms.length - 1]);\n\n let d = `M ${points[0].x} ${points[0].y}`;\n for (let i = 0; i < n - 1; i++) {\n const p0 = points[i];\n const p1 = points[i + 1];\n const dx = (p1.x - p0.x) / 3;\n d += ` C ${p0.x + dx} ${p0.y + dx * tangents[i]} ${p1.x - dx} ${p1.y - dx * tangents[i + 1]} ${\n p1.x\n } ${p1.y}`;\n }\n return d;\n};\n\nconst buildPath = (points: Point[], type: LineType): string => {\n switch (type) {\n case 'linear':\n return buildLinearPath(points);\n case 'step':\n case 'stepAfter':\n case 'stepBefore':\n return buildStepPath(points, type);\n case 'monotone':\n default:\n return buildMonotonePath(points);\n }\n};\n\nconst getStrokeDasharray = (strokeStyle: StrokeStyle): string | undefined =>\n strokeStyle === 'dashed' ? '5 5' : strokeStyle === 'dotted' ? '2 2' : undefined;\n\ntype LinePoint = { x: number; y: number; value: number | null };\n\n// A sub-path of a line. `isNullBridge` marks the stretch drawn across null points, which is styled\n// with a dashed stroke when `connectNullsStyle` is 'dashed'.\ntype LineSegment = { points: Point[]; isNullBridge: boolean };\n\n// Split a line's points into drawable sub-paths based on `connectNulls` / `connectNullsStyle`:\n// - connectNulls `false`: gaps break the line into multiple solid sub-paths (never across nulls).\n// - connectNulls `true` + 'solid': all non-null points bridge into a single solid segment.\n// - connectNulls `true` + 'dashed': solid sub-paths for real data, plus dashed bridge segments\n// that follow the monotone curve across each null run (gap points sampled onto the real curve so\n// the bridge is curved rather than a straight line).\n//\n// **Note:** The dashed bridge is always sampled using `monotoneInterpolate`, regardless of the\n// line's `type` prop. For `type=\"step\"`/`\"stepBefore\"`/`\"stepAfter\"`, the solid data segments\n// use `buildStepPath` but the bridge points follow a smooth monotone cubic curve. The bridge\n// shape will not match the stepped line for step-type curves. This matches the web behaviour,\n// where `connectNullsStyle=\"dashed\"` is only supported for `type=\"monotone\"` and `type=\"linear\"`\n// (see `parsePathAnchors` in `nullBridgeUtils.ts`).\nconst buildSegments = (\n points: LinePoint[],\n connectNulls: boolean,\n connectNullsStyle: 'solid' | 'dashed',\n): LineSegment[] => {\n if (connectNulls && connectNullsStyle === 'solid') {\n const definedPoints = points.filter((p): p is Point & { value: number } => p.value !== null);\n return definedPoints.length > 0\n ? [{ points: definedPoints.map(({ x, y }) => ({ x, y })), isNullBridge: false }]\n : [];\n }\n\n // Defined (non-null) points, in pixel space, used to sample the gap onto the monotone curve.\n const definedXs: number[] = [];\n const definedYs: number[] = [];\n points.forEach((p) => {\n if (p.value !== null) {\n definedXs.push(p.x);\n definedYs.push(p.y);\n }\n });\n\n // Contiguous non-null runs, tracking their positions so we know the null indices between them.\n const dataSegments: Array<{ pts: Point[]; startPos: number; endPos: number }> = [];\n let current: Point[] = [];\n let currentStart = -1;\n points.forEach((p, pos) => {\n if (p.value === null) {\n if (current.length > 0) {\n dataSegments.push({ pts: current, startPos: currentStart, endPos: pos - 1 });\n current = [];\n currentStart = -1;\n }\n } else {\n if (current.length === 0) currentStart = pos;\n current.push({ x: p.x, y: p.y });\n }\n });\n if (current.length > 0) {\n dataSegments.push({ pts: current, startPos: currentStart, endPos: points.length - 1 });\n }\n\n const segments: LineSegment[] = [];\n dataSegments.forEach((segment, index) => {\n segments.push({ points: segment.pts, isNullBridge: false });\n if (connectNulls && index < dataSegments.length - 1) {\n const nextSegment = dataSegments[index + 1];\n const from = segment.pts[segment.pts.length - 1];\n const to = nextSegment.pts[0];\n // Densely sample the monotone spline across the gap (not just at the null data indices) so\n // the dashed bridge reads as a smooth curve even when a single point is missing.\n const sampleCount = Math.max(2, Math.round(Math.abs(to.x - from.x) / 3));\n const bridgePoints: Point[] = [];\n for (let step = 0; step <= sampleCount; step++) {\n const t = step / sampleCount;\n const x = from.x + (to.x - from.x) * t;\n bridgePoints.push({ x, y: monotoneInterpolate(definedXs, definedYs, x) });\n }\n segments.push({ points: bridgePoints, isNullBridge: true });\n }\n });\n return segments;\n};\n\ntype LineGeometry = {\n line: LineSlot;\n color: string;\n points: LinePoint[];\n};\n\ntype LineSeriesProps = {\n geometry: LineGeometry;\n index: number;\n plotWidth: number;\n plotHeight: number;\n hoveredKey: string | null;\n dataSignature: string;\n chartId: string;\n};\n\n/**\n * Renders a single line series with its own reanimated draw-in reveal and\n * active/inactive dimming. Extracted so per-line hooks (`useSharedValue`,\n * `useAnimatedProps`, `useEffect`) are always called at a stable top level and\n * never inside a `.map()` loop.\n */\nconst LineSeries = ({\n geometry,\n index,\n plotWidth,\n plotHeight,\n hoveredKey,\n dataSignature,\n chartId,\n}: LineSeriesProps): React.ReactElement => {\n const { theme } = useTheme();\n const { line, color, points } = geometry;\n\n const draw = useSharedValue(0);\n const dim = useSharedValue(1);\n\n const duration = getIn(theme.motion, 'duration.xgentle');\n const baseDelay = getIn(theme.motion, 'delay.gentle');\n // Web: dashed/dotted lines begin later (LineChart.web.tsx:64-67).\n const beginDelay = line.strokeStyle === 'dashed' ? baseDelay + duration : baseDelay;\n const drawEasing = getIn(theme.motion, 'easing.standard');\n const dimDuration = getIn(theme.motion, 'duration.gentle');\n\n useEffect(() => {\n draw.value = 0;\n draw.value = withDelay(beginDelay, withTiming(1, { duration, easing: drawEasing }));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [duration, beginDelay, dataSignature]);\n\n useEffect(() => {\n const isOther = hoveredKey !== null && hoveredKey !== line.dataKey;\n dim.value = withTiming(isOther ? DIM_OPACITY : 1, {\n duration: dimDuration,\n // Parity with framer-motion 'easeInOut'.\n easing: Easing.bezier(0.42, 0, 0.58, 1),\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hoveredKey, line.dataKey, dimDuration]);\n\n const clipProps = useAnimatedProps(() => ({ width: Math.max(0, plotWidth * draw.value) }));\n const dimProps = useAnimatedProps(() => ({ strokeOpacity: dim.value }));\n\n const segments = useMemo(() => buildSegments(points, line.connectNulls, line.connectNullsStyle), [\n points,\n line.connectNulls,\n line.connectNullsStyle,\n ]);\n const dash = getStrokeDasharray(line.strokeStyle);\n // Dash pattern for the stretch drawn across null points (only present for dashed bridges).\n const nullBridgeDash = '5 5';\n const clipId = `line-${chartId}-reveal-${index}`;\n\n return (\n <G>\n <Defs>\n <ClipPath id={clipId}>\n <AnimatedRect x={0} y={0} height={plotHeight} animatedProps={clipProps} />\n </ClipPath>\n </Defs>\n <G clipPath={`url(#${clipId})`}>\n {segments.map((segment, segmentIndex) => (\n <AnimatedPath\n key={`segment-${segmentIndex}`}\n testID={`line-path-${line.dataKey}`}\n d={buildPath(segment.points, line.type)}\n stroke={color}\n strokeWidth={LINE_STROKE_WIDTH}\n strokeDasharray={segment.isNullBridge ? nullBridgeDash : dash}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n animatedProps={dimProps}\n />\n ))}\n {line.dot\n ? points.map((p, pointIndex) =>\n p.value === null ? null : (\n <Circle key={`dot-${pointIndex}`} cx={p.x} cy={p.y} r={DOT_RADIUS} fill={color} />\n ),\n )\n : null}\n </G>\n </G>\n );\n};\n\nconst _ChartLine = (_props: ChartLineProps): React.ReactElement | null => {\n return null;\n};\n\n/**\n * ChartLine\n *\n * Marker component declaring a line series inside ChartLineWrapper.\n * On native this renders nothing on its own — ChartLineWrapper reads its props\n * (`dataKey`, `name`, `color`, `type`, `strokeStyle`, ...) and renders the line.\n */\nconst ChartLine = assignWithoutSideEffects(_ChartLine, {\n componentId: componentIds.ChartLine,\n});\n\nconst ChartLineWrapper: React.FC<ChartLineWrapperProps & TestID & DataAnalyticsAttribute> = ({\n children,\n colorTheme = 'categorical',\n testID,\n data = [],\n ...restProps\n}) => {\n const { theme } = useTheme();\n const [size, setSize] = useState<{ width: number; height: number }>({ width: 0, height: 0 });\n const [activeIndex, setActiveIndex] = useState<number | undefined>(undefined);\n const [hoveredKey, setHoveredKey] = useState<string | null>(null);\n const chartIdRef = useRef<string | undefined>(undefined);\n if (chartIdRef.current === undefined) {\n chartIdRef.current = `line-${uniqueChartCounter++}`;\n }\n const chartId = chartIdRef.current;\n\n const onLayout = (e: LayoutChangeEvent): void => {\n const { width, height } = e.nativeEvent.layout;\n if (width !== size.width || height !== size.height) {\n setSize({ width, height });\n }\n };\n\n const slots = useMemo(() => readChildSlots(children), [children]);\n const allLines = slots.lines;\n\n const yAxisWarnedRef = useRef(false);\n useEffect(() => {\n if (!__DEV__) return;\n if (slots.hasYAxis && !yAxisWarnedRef.current) {\n const unsupported: string[] = [];\n if (slots.yDomain && !slots.yDomain.every((v) => isNumber(Number(v)))) {\n unsupported.push('domain (non-numeric)');\n }\n if (unsupported.length > 0) {\n yAxisWarnedRef.current = true;\n logger({\n type: 'warn',\n moduleName: 'ChartLineWrapper',\n message: `ChartYAxis prop(s) [${unsupported.join(\n ', ',\n )}] are not fully supported on native. Supported: label, domain (numeric), tickFormatter, tickCount.`,\n });\n }\n }\n }, [slots.hasYAxis, slots.yDomain]);\n\n const themeColors = useChartsColorTheme({\n colorTheme,\n chartName: 'line',\n chartDataIndicators: allLines.length,\n });\n\n // Build the color mapping from ALL lines (not just visible) so hidden lines\n // keep their color/legend entry while toggled off (web parity).\n const dataColorMapping = useMemo<DataColorMapping>(() => {\n const mapping: Record<\n string,\n {\n colorToken?: ChartsCategoricalColorToken | ChartSequentialColorToken;\n isCustomColor: boolean;\n }\n > = {};\n allLines.forEach((line) => {\n mapping[line.dataKey] = {\n colorToken: line.color,\n isCustomColor: Boolean(line.color),\n };\n });\n assignDataColorMapping(mapping, themeColors);\n return mapping as DataColorMapping;\n }, [allLines, themeColors]);\n\n const allDataKeys = useMemo(() => Object.keys(dataColorMapping), [dataColorMapping]);\n\n // Mirror web legend selection semantics exactly (controlled + uncontrolled).\n const [selectedKeys, setSelectedKeys] = useControllableState<string[]>({\n value: slots.legend.selectedDataKeys,\n defaultValue: slots.legend.defaultSelectedDataKeys ?? allDataKeys,\n });\n\n const hasUserInteractedRef = React.useRef(false);\n const isControlled = slots.legend.selectedDataKeys !== undefined;\n const shouldAutoSelectAllDataKeys =\n !isControlled && slots.legend.defaultSelectedDataKeys === undefined;\n\n // Uncontrolled auto-select-all — port of CommonChartComponents.web.tsx:712-724.\n useEffect(() => {\n if (!shouldAutoSelectAllDataKeys || hasUserInteractedRef.current || allDataKeys.length === 0) {\n return;\n }\n const isInSync =\n selectedKeys.length === allDataKeys.length &&\n allDataKeys.every((dataKey) => selectedKeys.includes(dataKey));\n if (!isInSync) {\n setSelectedKeys(() => [...allDataKeys], true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allDataKeys, selectedKeys, shouldAutoSelectAllDataKeys]);\n\n // Reset selection when the data keys fully change — port of web:728-736.\n useEffect(() => {\n if (allDataKeys.length > 0 && selectedKeys.length > 0) {\n const hasOverlap = selectedKeys.some((key) => allDataKeys.includes(key));\n if (!hasOverlap) {\n setSelectedKeys(() => [...allDataKeys]);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allDataKeys, selectedKeys]);\n\n const isVisible = (dataKey: string): boolean => selectedKeys.includes(dataKey);\n\n const toggleLegend = (dataKey: string): void => {\n hasUserInteractedRef.current = true;\n const next = selectedKeys.includes(dataKey)\n ? selectedKeys.filter((k) => k !== dataKey)\n : [...selectedKeys, dataKey];\n setSelectedKeys(() => next);\n slots.legend.onSelectedDataKeysChange?.({ dataKey, selectedKeysArray: next });\n };\n\n const visibleLines = useMemo(() => allLines.filter((l) => isVisible(l.dataKey) && !l.hide), [\n allLines,\n selectedKeys,\n ]);\n\n const secondaryLabelMap = useMemo(() => {\n if (!slots.xSecondaryDataKey || !data?.length) return undefined;\n const map: Record<number, string | number | undefined> = {};\n data.forEach((row, index) => {\n map[index] = getRowValue(row, slots.xSecondaryDataKey!) as string | number | undefined;\n });\n return map;\n }, [data, slots.xSecondaryDataKey]);\n\n const { dataMin, dataMax } = useMemo(() => {\n if (!data.length) return { dataMin: 0, dataMax: 0 };\n const linesForDomain = visibleLines.length ? visibleLines : allLines;\n // Every band's bound keys (per-line ranges + the standalone band) fold into the domain so the\n // bands stay fully in view (mirrors web, where Recharts auto-includes the invisible bounds).\n const rangeKeyPairs: Array<{ lower: string; upper: string }> = [];\n linesForDomain.forEach((line) => {\n if (line.rangeLowerDataKey && line.rangeUpperDataKey) {\n rangeKeyPairs.push({ lower: line.rangeLowerDataKey, upper: line.rangeUpperDataKey });\n }\n });\n if (slots.referenceBand) {\n rangeKeyPairs.push({\n lower: slots.referenceBand.lowerDataKey,\n upper: slots.referenceBand.upperDataKey,\n });\n }\n let min = Infinity;\n let max = -Infinity;\n data.forEach((row) => {\n linesForDomain.forEach((line) => {\n // Skip null/undefined cells — Number(null) === 0 would otherwise pull the\n // domain to 0 and flatten sparse / connectNulls charts. Use path-aware\n // get so nested dataKeys like `metrics.sales` resolve (Recharts parity).\n const value = getSeriesNumber(row, line.dataKey);\n if (value === null) return;\n if (value < min) min = value;\n if (value > max) max = value;\n });\n rangeKeyPairs.forEach(({ lower: lowerKey, upper: upperKey }) => {\n const lower = getSeriesNumber(row, lowerKey);\n const upper = getSeriesNumber(row, upperKey);\n if (lower !== null) {\n if (lower < min) min = lower;\n if (lower > max) max = lower;\n }\n if (upper !== null) {\n if (upper < min) min = upper;\n if (upper > max) max = upper;\n }\n });\n });\n if (min === Infinity) min = 0;\n if (max === -Infinity) max = 0;\n return { dataMin: min, dataMax: max };\n }, [data, visibleLines, allLines, slots.referenceBand]);\n\n // Honor ChartYAxis domain/tickCount when provided (AreaChart.native parity).\n const yMax = slots.yDomain ? Number(slots.yDomain[1]) : resolveYMax(dataMax);\n const yMin = slots.yDomain ? Number(slots.yDomain[0]) : dataMin < 0 ? niceFloor(dataMin) : 0;\n const yRange = yMax - yMin;\n const yTickCount = slots.yTickCount ?? Y_TICK_COUNT;\n const yTicks = useMemo(() => {\n const ticks: number[] = [];\n for (let i = 0; i <= yTickCount; i++) {\n ticks.push(yMin + (yRange / yTickCount) * i);\n }\n return ticks;\n }, [yMin, yRange, yTickCount]);\n\n const showAxes = slots.hasXAxis || slots.hasYAxis;\n const hasSecondaryXLabels = Boolean(slots.xSecondaryDataKey);\n // Secondary labels need their own row even when there is no axis title.\n const secondaryRowHeight = hasSecondaryXLabels\n ? SECONDARY_LABEL_FONT_SIZE + PRIMARY_TO_SECONDARY_GAP\n : 0;\n const xAxisTitleHeight = slots.xLabel ? AXIS_LABEL_FONT_SIZE + X_AXIS_TITLE_GAP : 0;\n\n // Width available under one x-tick before it collides with its neighbour.\n // Left/right padding is fixed (PLOT_PADDING), so this is stable regardless of\n // the wrap-driven bottom padding computed just below.\n const plotWidthForLabels = Math.max(0, size.width - PLOT_PADDING.left - PLOT_PADDING.right);\n const pointCount = data.length;\n const columnWidth = pointCount > 1 ? plotWidthForLabels / (pointCount - 1) : plotWidthForLabels;\n\n // Resolve every x-label up front so we can measure density and (mobile) wrap\n // long labels across lines instead of dropping them — matches web.\n const xLabels = useMemo(() => {\n return data.map((row, index) => {\n const rawLabel = slots.xDataKey\n ? String(getRowValue(row, slots.xDataKey) ?? '')\n : String(index);\n return slots.xTickFormatter ? slots.xTickFormatter(rawLabel, index) : rawLabel;\n });\n }, [data, slots.xDataKey, slots.xTickFormatter]);\n\n // Wrap each label to fit its column so all categories can be shown at once.\n const xLabelLines = useMemo(() => {\n // Leave a small gutter so adjacent wrapped labels don't kiss.\n const maxWidth = Math.max(0, columnWidth * 0.6 - X_TICK_LABEL_GAP);\n return xLabels.map((label) => wrapLabelToLines(label, maxWidth, TICK_FONT_SIZE));\n }, [xLabels, columnWidth]);\n\n const maxXLabelLines = useMemo(\n () => xLabelLines.reduce((max, lines) => Math.max(max, lines.length), 1),\n [xLabelLines],\n );\n\n const primaryLabelRowHeight = maxXLabelLines * TICK_LINE_HEIGHT;\n const padding = showAxes\n ? {\n ...PLOT_PADDING,\n bottom: Math.max(\n PLOT_PADDING.bottom,\n primaryLabelRowHeight + 4 + secondaryRowHeight + xAxisTitleHeight + 4,\n ),\n }\n : { top: 0, right: 0, bottom: 0, left: 0 };\n\n const plotWidth = Math.max(0, size.width - padding.left - padding.right);\n const plotHeight = Math.max(0, size.height - padding.top - padding.bottom);\n\n // Line points span the plot width over `n-1` intervals (NOT bar-style slots).\n const pointSpacing = pointCount > 1 ? plotWidth / (pointCount - 1) : 0;\n const xForIndex = (index: number): number =>\n pointCount > 1 ? index * pointSpacing : plotWidth / 2;\n\n // Visible tick indices: after wrapping, each label's effective width is its\n // widest line (<= column), so all fit and are shown. Thinning only kicks in\n // when even a single word overflows the column. Explicit `interval` still wins.\n const visibleXTickIndices = useMemo(() => {\n if (pointCount <= 0) return [] as number[];\n\n const widths = xLabelLines.map((lines, index) => {\n const primaryWidth = lines.reduce(\n (max, line) => Math.max(max, estimateTextWidth(line, TICK_FONT_SIZE)),\n 0,\n );\n const secondary = secondaryLabelMap?.[index];\n const secondaryWidth =\n secondary !== undefined && secondary !== null\n ? estimateTickLabelWidth(String(secondary), SECONDARY_LABEL_FONT_SIZE)\n : 0;\n return Math.max(primaryWidth, secondaryWidth);\n });\n\n const forcedStep = slots.xInterval !== undefined ? Math.max(1, slots.xInterval + 1) : undefined;\n\n return selectNonOverlappingXTickIndices(pointCount, widths, xForIndex, forcedStep);\n }, [pointCount, pointSpacing, plotWidth, xLabelLines, secondaryLabelMap, slots.xInterval]);\n\n const visibleXTickIndexSet = useMemo(() => new Set(visibleXTickIndices), [visibleXTickIndices]);\n\n const tickColor = getIn(theme.colors, 'surface.text.gray.muted');\n const axisLineColor = getIn(theme.colors, 'surface.border.gray.muted');\n const gridColor = getIn(theme.colors, 'surface.border.gray.subtle');\n\n const resolveColor = (\n dataKey: string,\n fallback?: ChartsCategoricalColorToken | ChartSequentialColorToken,\n ): string => {\n const token = dataColorMapping[dataKey]?.colorToken ?? fallback;\n return token ? getIn(theme.colors, token) : tickColor;\n };\n\n // Pixel geometry per visible line — shared by the line paths, the activeDot,\n // the scrub nearest-line lookup, and the tooltip.\n const lineGeometries = useMemo<LineGeometry[]>(() => {\n return visibleLines.map((line) => {\n const points: LinePoint[] = data.map((row, index) => {\n const value = getSeriesNumber(row, line.dataKey);\n return {\n x: xForIndex(index),\n y: value === null ? 0 : plotHeight - ((value - yMin) / yRange) * plotHeight,\n value,\n };\n });\n return { line, color: resolveColor(line.dataKey, line.color), points };\n });\n }, [visibleLines, data, plotWidth, plotHeight, yMin, yRange, dataColorMapping, theme.colors]);\n\n // Resolved bands: one per visible line that declares a range, color-matched to the line, plus the\n // standalone <ChartReferenceBand> if present. Used for rendering, labels and the legend.\n const resolvedBands = useMemo<ResolvedBand[]>(() => {\n const bands: ResolvedBand[] = [];\n visibleLines.forEach((line) => {\n if (line.rangeLowerDataKey && line.rangeUpperDataKey) {\n bands.push({\n id: line.dataKey,\n lowerDataKey: line.rangeLowerDataKey,\n upperDataKey: line.rangeUpperDataKey,\n name: line.rangeName ?? 'Industry range',\n fillColor: line.rangeColor\n ? (getIn(theme.colors, line.rangeColor) as string)\n : resolveColor(line.dataKey, line.color),\n showLegend: line.showRangeLegend ?? line.showLegend,\n });\n }\n });\n if (slots.referenceBand) {\n bands.push({\n id: 'standalone',\n lowerDataKey: slots.referenceBand.lowerDataKey,\n upperDataKey: slots.referenceBand.upperDataKey,\n name: slots.referenceBand.name,\n fillColor: getIn(theme.colors, slots.referenceBand.color) as string,\n showLegend: slots.referenceBand.showLegend,\n });\n }\n return bands;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [visibleLines, slots.referenceBand, dataColorMapping, theme.colors]);\n\n // Filled reference bands, built from the same scales as the lines and painted behind them.\n // Uses the shared `buildBandAreaPath` so the band curve matches web.\n const bandGeometries = useMemo<BandGeometryNative[]>(() => {\n if (data.length === 0 || plotWidth <= 0 || plotHeight <= 0 || yRange <= 0) return [];\n const toY = (value: number): number => plotHeight - ((value - yMin) / yRange) * plotHeight;\n return resolvedBands\n .map((band): BandGeometryNative | null => {\n const upper: Point[] = [];\n const lower: Point[] = [];\n data.forEach((row, index) => {\n const x = xForIndex(index);\n const upperValue = getSeriesNumber(row, band.upperDataKey);\n const lowerValue = getSeriesNumber(row, band.lowerDataKey);\n if (upperValue !== null) upper.push({ x, y: toY(upperValue) });\n if (lowerValue !== null) lower.push({ x, y: toY(lowerValue) });\n });\n const d = buildBandAreaPath(upper, lower);\n if (!d) return null;\n return {\n id: band.id,\n d,\n color: band.fillColor,\n };\n })\n .filter((band): band is BandGeometryNative => band !== null);\n }, [resolvedBands, data, plotWidth, plotHeight, yMin, yRange]);\n\n const dataSignature = useMemo(() => `${data.length}:${allDataKeys.join(',')}`, [\n data.length,\n allDataKeys,\n ]);\n\n // Map a touch's local coordinate to the nearest data index + line. Reproduces\n // every web hover side-effect (dim others + activeDot + tooltip + hoveredKey).\n // Map a touch to the nearest index + line and apply it. Returns the index so the\n // tap/scrub handlers can decide whether a release should toggle the selection off.\n const indexAtTouchX = (locationX: number): number | undefined => {\n if (pointCount === 0 || plotWidth <= 0) return undefined;\n const localX = locationX - padding.left;\n return pointCount > 1\n ? Math.min(pointCount - 1, Math.max(0, Math.round(localX / pointSpacing)))\n : 0;\n };\n\n const applyScrub = (e: GestureResponderEvent): number | undefined => {\n if (pointCount === 0 || plotWidth <= 0) return undefined;\n const localX = e.nativeEvent.locationX - padding.left;\n const localY = e.nativeEvent.locationY - padding.top;\n const index =\n pointCount > 1 ? Math.min(pointCount - 1, Math.max(0, Math.round(localX / pointSpacing))) : 0;\n setActiveIndex(index);\n\n // Nearest visible line at this index by vertical distance to the touch.\n let nearestKey: string | null = null;\n let nearestDist = Infinity;\n lineGeometries.forEach((geometry) => {\n const point = geometry.points[index];\n if (!point || point.value === null) return;\n const dist = Math.abs(point.y - localY);\n if (dist < nearestDist) {\n nearestDist = dist;\n nearestKey = geometry.line.dataKey;\n }\n });\n setHoveredKey(nearestKey);\n return index;\n };\n\n // Touch model (mirrors AreaChart.native.tsx):\n // - Do NOT claim responder on touch start, so parent ScrollViews can keep vertical scroll.\n // - Claim on move only after a clearly horizontal scrub past SCRUB_MOVE_THRESHOLD.\n // - Taps are handled via onTouchEnd (never become responder) — show/toggle tooltip.\n // Selection persists after the finger lifts (parity with DonutChart): a tap on\n // the already-active index toggles it off, a tap/scrub elsewhere moves it.\n const touchStartActiveRef = React.useRef<number | undefined>(undefined);\n const touchStartIndexRef = React.useRef<number | undefined>(undefined);\n const touchMovedRef = React.useRef(false);\n const becameResponderRef = React.useRef(false);\n const touchStartLocationRef = React.useRef<{ x: number; y: number } | undefined>(undefined);\n const SCRUB_MOVE_THRESHOLD = 8;\n\n const handleTouchStart = (e: GestureResponderEvent): void => {\n if (data.length === 0) return;\n touchStartActiveRef.current = activeIndex;\n touchStartIndexRef.current = indexAtTouchX(e.nativeEvent.locationX);\n touchMovedRef.current = false;\n becameResponderRef.current = false;\n touchStartLocationRef.current = {\n x: e.nativeEvent.locationX,\n y: e.nativeEvent.locationY,\n };\n };\n\n const handleScrubStart = (e: GestureResponderEvent): void => {\n if (data.length === 0) return;\n becameResponderRef.current = true;\n touchMovedRef.current = true;\n applyScrub(e);\n };\n\n const handleScrubMove = (e: GestureResponderEvent): void => {\n touchMovedRef.current = true;\n applyScrub(e);\n };\n\n const handleTouchEnd = (): void => {\n if (becameResponderRef.current || touchMovedRef.current) return;\n if (data.length === 0) return;\n if (touchStartActiveRef.current === touchStartIndexRef.current) {\n setActiveIndex(undefined);\n setHoveredKey(null);\n } else if (touchStartIndexRef.current !== undefined) {\n setActiveIndex(touchStartIndexRef.current);\n const tapIndex = touchStartIndexRef.current;\n const tapY = touchStartLocationRef.current?.y;\n if (tapY !== undefined) {\n const localY = tapY - padding.top;\n let nearestKey: string | null = null;\n let nearestDist = Infinity;\n lineGeometries.forEach((geometry) => {\n const point = geometry.points[tapIndex];\n if (!point || point.value === null) return;\n const dist = Math.abs(point.y - localY);\n if (dist < nearestDist) {\n nearestDist = dist;\n nearestKey = geometry.line.dataKey;\n }\n });\n setHoveredKey(nearestKey);\n }\n }\n };\n\n const handleScrubTerminate = (): void => {\n becameResponderRef.current = false;\n };\n\n const activeRow = activeIndex !== undefined ? data[activeIndex] : undefined;\n const activeLabelRaw =\n activeRow && slots.xDataKey\n ? String(getRowValue(activeRow, slots.xDataKey) ?? activeIndex)\n : undefined;\n const activeLabel = activeLabelRaw\n ? slots.xTickFormatter\n ? slots.xTickFormatter(activeLabelRaw, activeIndex ?? 0)\n : activeLabelRaw\n : undefined;\n\n const tooltipRows = useMemo(() => {\n if (!activeRow) return [];\n const rows: Array<{\n key: string;\n color: string;\n displayValue: string;\n label: string;\n range?: { name: string; text: string };\n }> = [];\n visibleLines.forEach((line) => {\n const rawValue = getSeriesNumber(activeRow, line.dataKey);\n // Match Recharts Tooltip `filterNull` default (true): omit missing values.\n if (rawValue === null && slots.tooltipFilterNull) return;\n\n const color = resolveColor(line.dataKey, line.color);\n let displayValue = rawValue === null ? MISSING_TOOLTIP_VALUE : String(rawValue);\n let label = line.name ?? line.dataKey;\n const formatter = slots.tooltipFormatter;\n if (formatter) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const formatted = (formatter as any)(\n rawValue ?? undefined,\n line.dataKey,\n undefined,\n activeIndex,\n activeRow,\n );\n if (Array.isArray(formatted)) {\n if (formatted[0] !== undefined && formatted[0] !== null) {\n displayValue = String(formatted[0]);\n }\n if (formatted[1] !== undefined && formatted[1] !== null) {\n label = String(formatted[1]);\n }\n } else if (formatted !== undefined && formatted !== null) {\n displayValue = String(formatted);\n }\n } catch {\n // Formatter threw — fall back to the raw value silently.\n }\n }\n\n // If this line has a reference band, show its industry range (low–high) beneath the value.\n let range: { name: string; text: string } | undefined;\n if (line.rangeLowerDataKey && line.rangeUpperDataKey) {\n const lower = getSeriesNumber(activeRow, line.rangeLowerDataKey);\n const upper = getSeriesNumber(activeRow, line.rangeUpperDataKey);\n if (lower !== null && upper !== null) {\n range = { name: line.rangeName ?? 'Industry', text: `${String(lower)}–${String(upper)}` };\n }\n }\n rows.push({ key: line.dataKey, color, displayValue, label, range });\n });\n return rows;\n }, [\n activeRow,\n visibleLines,\n dataColorMapping,\n theme.colors,\n slots.tooltipFormatter,\n slots.tooltipFilterNull,\n activeIndex,\n ]);\n\n // Lines eligible for a legend entry — include hidden ones so they can be\n // toggled back on (web parity).\n const legendLines = allLines.filter((line) => line.showLegend);\n\n // Reference bands eligible for a legend swatch — one per line with a range, plus the standalone\n // band. Based on all lines (not just visible) so entries persist when a line is toggled off.\n const legendBands = useMemo<Array<{ id: string; name: string; fillColor: string }>>(() => {\n const bands: Array<{ id: string; name: string; fillColor: string }> = [];\n allLines.forEach((line) => {\n if (\n (line.showRangeLegend ?? line.showLegend) &&\n line.rangeLowerDataKey &&\n line.rangeUpperDataKey\n ) {\n bands.push({\n id: line.dataKey,\n name: line.rangeName ?? 'Industry range',\n fillColor: line.rangeColor\n ? (getIn(theme.colors, line.rangeColor) as string)\n : resolveColor(line.dataKey, line.color),\n });\n }\n });\n if (slots.referenceBand?.showLegend) {\n bands.push({\n id: 'standalone',\n name: slots.referenceBand.name,\n fillColor: getIn(theme.colors, slots.referenceBand.color) as string,\n });\n }\n return bands;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allLines, slots.referenceBand, dataColorMapping, theme.colors]);\n\n const lineChartContextValue = useMemo(\n () => ({ hoveredDataKey: hoveredKey, setHoveredDataKey: setHoveredKey }),\n [hoveredKey],\n );\n\n const commonChartContextValue = useMemo(\n () => ({\n chartName: 'line' as const,\n dataColorMapping,\n selectedDataKeys: selectedKeys,\n setSelectedDataKeys: (keys: string[]) => setSelectedKeys(() => keys),\n secondaryLabelMap,\n dataLength: data?.length,\n }),\n [dataColorMapping, selectedKeys, secondaryLabelMap, data?.length],\n );\n\n const layoutTestID = testID ? `${testID}-layout` : undefined;\n\n return (\n <LineChartContext.Provider value={lineChartContextValue}>\n <CommonChartComponentsContext.Provider value={commonChartContextValue}>\n <BaseBox\n {...metaAttribute({ name: 'line-chart', testID })}\n {...makeAnalyticsAttribute(restProps)}\n width=\"100%\"\n height=\"100%\"\n display=\"flex\"\n flexDirection=\"column\"\n {...restProps}\n >\n {/* Single press-and-scrub surface — owns BOTH onLayout AND the touch\n responder, with the <Svg> as a DIRECT child (mirrors AreaChart). A\n nested responder view does not reliably receive touches on a real\n device, so layout + responder MUST live on the same view. */}\n <View\n testID={layoutTestID}\n // Absolute tooltip can grow taller than the plot; keep overflow visible\n // so the bubble is not clipped by the flex:1 scrub surface.\n style={{ flex: 1, width: '100%', overflow: 'visible' }}\n onLayout={onLayout}\n onTouchStart={handleTouchStart}\n onTouchEnd={handleTouchEnd}\n // Intentionally omit onStartShouldSetResponder (same as returning false): claiming\n // on start blocks parent ScrollViews. Capture horizontal scrubs on move instead.\n onMoveShouldSetResponder={(e) => {\n if (data.length === 0) return false;\n const start = touchStartLocationRef.current;\n if (!start || !e?.nativeEvent) return false;\n const dx = Math.abs(e.nativeEvent.locationX - start.x);\n const dy = Math.abs(e.nativeEvent.locationY - start.y);\n return dx >= SCRUB_MOVE_THRESHOLD && dx > dy;\n }}\n onResponderGrant={handleScrubStart}\n onResponderMove={handleScrubMove}\n onResponderTerminationRequest={() => true}\n onResponderTerminate={handleScrubTerminate}\n >\n {data.length === 0 ? (\n <Box\n flex={1}\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n padding=\"spacing.6\"\n >\n <Text size=\"small\" color=\"surface.text.gray.muted\">\n No data to display\n </Text>\n </Box>\n ) : size.width > 0 && size.height > 0 ? (\n // `pointerEvents=\"none\"` lets the touch fall through the SVG to the\n // single parent responder View so press-and-scrub reliably grants\n // on a real device (activeDot + tooltip + dimming).\n <Svg width={size.width} height={size.height} pointerEvents=\"none\">\n <G x={padding.left} y={padding.top}>\n {slots.hasGrid &&\n yTicks.map((tick, idx) => {\n const y = plotHeight - ((tick - yMin) / yRange) * plotHeight;\n return (\n <Line\n key={`grid-${idx}`}\n x1={0}\n x2={plotWidth}\n y1={y}\n y2={y}\n stroke={gridColor}\n strokeWidth={1}\n />\n );\n })}\n\n {slots.hasYAxis && (\n <>\n <Line\n x1={0}\n x2={0}\n y1={0}\n y2={plotHeight}\n stroke={axisLineColor}\n strokeWidth={1}\n />\n {yTicks.map((tick, idx) => {\n const y = plotHeight - ((tick - yMin) / yRange) * plotHeight;\n return (\n <SvgText\n key={`ytick-${idx}`}\n x={-6}\n y={y + TICK_FONT_SIZE / 3}\n fontSize={TICK_FONT_SIZE}\n fill={tickColor}\n textAnchor=\"end\"\n >\n {slots.yTickFormatter\n ? slots.yTickFormatter(tick, idx)\n : formatYTick(tick)}\n </SvgText>\n );\n })}\n {slots.yLabel ? (\n <SvgText\n x={-(PLOT_PADDING.left - AXIS_LABEL_FONT_SIZE - 2)}\n y={plotHeight / 2}\n fontSize={AXIS_LABEL_FONT_SIZE}\n fill={tickColor}\n textAnchor=\"middle\"\n transform={`rotate(-90 ${-(\n PLOT_PADDING.left -\n AXIS_LABEL_FONT_SIZE -\n 2\n )} ${plotHeight / 2})`}\n >\n {slots.yLabel}\n </SvgText>\n ) : null}\n </>\n )}\n\n {/* Reference bands — painted before the lines so they sit behind them. One per\n line with a range (color-matched), plus the standalone band. */}\n {bandGeometries.map((band) => (\n <Path\n key={`reference-band-${band.id}`}\n d={band.d}\n fill={band.color}\n fillOpacity={REFERENCE_BAND_FILL_OPACITY}\n stroke=\"none\"\n />\n ))}\n\n {lineGeometries.map((geometry, idx) => (\n <LineSeries\n key={`line-${geometry.line.dataKey}`}\n geometry={geometry}\n index={idx}\n plotWidth={plotWidth}\n plotHeight={plotHeight}\n hoveredKey={hoveredKey}\n dataSignature={dataSignature}\n chartId={chartId}\n />\n ))}\n\n {/* activeDot for the scrubbed line (recharts `activeDot`). */}\n {activeIndex !== undefined && hoveredKey !== null\n ? lineGeometries.map((geometry) => {\n if (geometry.line.dataKey !== hoveredKey) return null;\n if (!geometry.line.activeDot) return null;\n const point = geometry.points[activeIndex];\n if (!point || point.value === null) return null;\n return (\n <G key={`active-dot-${geometry.line.dataKey}`}>\n <Circle\n cx={point.x}\n cy={point.y}\n r={ACTIVE_DOT_OUTER_RADIUS}\n fill={geometry.color}\n fillOpacity={0.2}\n />\n <Circle\n cx={point.x}\n cy={point.y}\n r={ACTIVE_DOT_INNER_RADIUS}\n fill={geometry.color}\n stroke={getIn(theme.colors, 'surface.background.gray.intense')}\n strokeWidth={1.5}\n />\n </G>\n );\n })\n : null}\n\n {slots.referenceLines.map((refLine, idx) => {\n const isVertical = refLine.x !== undefined && refLine.x !== null;\n const stroke = getIn(theme.colors, 'data.background.categorical.gray.intense');\n const chipFill = getIn(theme.colors, 'surface.background.gray.subtle');\n const chipStroke = getIn(theme.colors, 'surface.border.gray.muted');\n const chipTextColor = getIn(theme.colors, 'surface.text.gray.normal');\n const chipWidth = refLine.label\n ? Math.max(40, refLine.label.length * 6 + 16)\n : 0;\n const chipHeight = 20;\n\n if (isVertical) {\n // Resolve the x value to an index.\n let index = -1;\n if (slots.xDataKey) {\n index = data.findIndex(\n (row) => String(getRowValue(row, slots.xDataKey!)) === String(refLine.x),\n );\n }\n if (index < 0 && isNumber(Number(refLine.x))) {\n index = Number(refLine.x);\n }\n if (index < 0 || index > pointCount - 1) return null;\n const x = xForIndex(index);\n return (\n <G key={`refline-${idx}`}>\n <Line\n x1={x}\n x2={x}\n y1={0}\n y2={plotHeight}\n stroke={stroke}\n strokeWidth={2}\n strokeDasharray=\"4 4\"\n />\n {refLine.label ? (\n <G>\n <Rect\n x={x - chipWidth / 2}\n y={0}\n width={chipWidth}\n height={chipHeight}\n rx={theme.border.radius.medium}\n fill={chipFill}\n stroke={chipStroke}\n strokeWidth={1}\n />\n <SvgText\n x={x}\n y={chipHeight / 2 + TICK_FONT_SIZE / 3}\n fontSize={TICK_FONT_SIZE}\n fill={chipTextColor}\n textAnchor=\"middle\"\n >\n {refLine.label}\n </SvgText>\n </G>\n ) : null}\n </G>\n );\n }\n\n // Horizontal (numeric y).\n if (refLine.y === undefined || refLine.y > yMax || refLine.y < yMin)\n return null;\n const y = plotHeight - ((refLine.y - yMin) / yRange) * plotHeight;\n return (\n <G key={`refline-${idx}`}>\n <Line\n x1={0}\n x2={plotWidth}\n y1={y}\n y2={y}\n stroke={stroke}\n strokeWidth={2}\n strokeDasharray=\"4 4\"\n />\n {refLine.label ? (\n <G>\n {/* Pill sits at the END of the line (right edge flush)\n and is vertically centered on the line — matches web. */}\n <Rect\n x={plotWidth - chipWidth}\n y={y - chipHeight / 2}\n width={chipWidth}\n height={chipHeight}\n rx={theme.border.radius.medium}\n fill={chipFill}\n stroke={chipStroke}\n strokeWidth={1}\n />\n <SvgText\n x={plotWidth - chipWidth / 2}\n y={y + TICK_FONT_SIZE / 3}\n fontSize={TICK_FONT_SIZE}\n fill={chipTextColor}\n textAnchor=\"middle\"\n >\n {refLine.label}\n </SvgText>\n </G>\n ) : null}\n </G>\n );\n })}\n\n {slots.hasXAxis && (\n <>\n <Line\n x1={0}\n x2={plotWidth}\n y1={plotHeight}\n y2={plotHeight}\n stroke={axisLineColor}\n strokeWidth={1}\n />\n {data.map((row, index) => {\n if (!visibleXTickIndexSet.has(index)) return null;\n const cx = xForIndex(index);\n const lines = xLabelLines[index] ?? [''];\n const secondary = secondaryLabelMap?.[index];\n const primaryY = plotHeight + TICK_FONT_SIZE + 4;\n // First/last anchor to their inner edge so wide wrapped\n // labels don't spill off the canvas; inner ticks center.\n const anchor =\n index === 0 ? 'start' : index === pointCount - 1 ? 'end' : 'middle';\n // Secondary sits below the tallest possible primary block\n // so it stays on one row across all ticks.\n const secondaryY =\n primaryY +\n (maxXLabelLines - 1) * TICK_LINE_HEIGHT +\n SECONDARY_LABEL_FONT_SIZE +\n PRIMARY_TO_SECONDARY_GAP;\n return (\n <G key={`xtick-${index}`}>\n {lines.map((line, lineIndex) => (\n <SvgText\n key={`xtick-${index}-line-${lineIndex}`}\n x={cx}\n y={primaryY + lineIndex * TICK_LINE_HEIGHT}\n fontSize={TICK_FONT_SIZE}\n fill={tickColor}\n textAnchor={anchor}\n >\n {line}\n </SvgText>\n ))}\n {secondary !== undefined && secondary !== null ? (\n <SvgText\n x={cx}\n y={secondaryY}\n fontSize={SECONDARY_LABEL_FONT_SIZE}\n fill={tickColor}\n textAnchor={anchor}\n >\n {String(secondary)}\n </SvgText>\n ) : null}\n </G>\n );\n })}\n </>\n )}\n\n {slots.xLabel ? (\n <SvgText\n x={plotWidth / 2}\n y={plotHeight + padding.bottom - 4}\n fontSize={AXIS_LABEL_FONT_SIZE}\n fill={tickColor}\n textAnchor=\"middle\"\n >\n {slots.xLabel}\n </SvgText>\n ) : null}\n </G>\n </Svg>\n ) : null}\n\n {slots.hasTooltip &&\n activeIndex !== undefined &&\n tooltipRows.length > 0 &&\n size.width > 0 ? (\n <View\n pointerEvents=\"none\"\n style={{\n position: 'absolute',\n top: padding.top,\n left: Math.max(\n padding.left,\n Math.min(\n size.width - TOOLTIP_WIDTH - padding.right,\n padding.left + xForIndex(activeIndex) - TOOLTIP_WIDTH / 2,\n ),\n ),\n width: TOOLTIP_WIDTH,\n backgroundColor: getIn(theme.colors, 'surface.icon.staticBlack.normal'),\n borderRadius: theme.border.radius.large,\n borderWidth: 1,\n borderColor: getIn(theme.colors, 'surface.border.gray.muted'),\n paddingHorizontal: theme.spacing[4],\n paddingVertical: theme.spacing[4],\n shadowColor: getIn(theme.colors, 'surface.icon.staticBlack.normal'),\n shadowOpacity: 0.2,\n shadowRadius: 4,\n shadowOffset: { width: 0, height: 2 },\n elevation: 4,\n }}\n >\n {activeLabel ? (\n <Box paddingBottom=\"spacing.2\">\n <Text size=\"small\" weight=\"semibold\" color=\"surface.text.staticWhite.normal\">\n {activeLabel}\n </Text>\n </Box>\n ) : null}\n {tooltipRows.map((row) => (\n <View\n key={row.key}\n style={{\n flexDirection: 'row',\n // flex-start: wrapped labels must grow the row (center clipped them).\n alignItems: 'flex-start',\n paddingVertical: theme.spacing[1],\n }}\n >\n <View\n style={{\n width: 8,\n height: 8,\n borderRadius: 2,\n backgroundColor: row.color,\n marginRight: theme.spacing[2],\n marginTop: 3,\n }}\n />\n <View style={{ flex: 1, marginRight: theme.spacing[2] }}>\n <Text size=\"xsmall\" color=\"surface.text.staticWhite.normal\">\n {row.label}\n </Text>\n {row.range ? (\n <Text size=\"xsmall\" color=\"surface.text.staticWhite.muted\">\n {row.range.name}\n </Text>\n ) : null}\n </View>\n <View style={{ width: TOOLTIP_VALUE_WIDTH }}>\n <Text\n size=\"xsmall\"\n weight=\"semibold\"\n color=\"surface.text.staticWhite.normal\"\n textAlign=\"right\"\n >\n {row.displayValue}\n </Text>\n {row.range ? (\n <Text\n size=\"xsmall\"\n color=\"surface.text.staticWhite.muted\"\n textAlign=\"right\"\n >\n {row.range.text}\n </Text>\n ) : null}\n </View>\n </View>\n ))}\n </View>\n ) : null}\n </View>\n\n {/* Interactive legend — native Pressables (functionally identical to\n the web SVG legend: toggle show/hide, controllable, callback). */}\n {slots.hasLegend && (legendLines.length > 0 || legendBands.length > 0) ? (\n <View\n style={{\n flexDirection: slots.legend.layout === 'vertical' ? 'column' : 'row',\n flexWrap: slots.legend.layout === 'vertical' ? 'nowrap' : 'wrap',\n alignItems: slots.legend.layout === 'vertical' ? 'flex-start' : 'center',\n justifyContent:\n slots.legend.align === 'left'\n ? 'flex-start'\n : slots.legend.align === 'right'\n ? 'flex-end'\n : 'center',\n paddingTop: theme.spacing[3],\n paddingHorizontal: theme.spacing[3],\n }}\n >\n {legendLines.map((line) => {\n const selected = isVisible(line.dataKey);\n const swatchColor = selected\n ? resolveColor(line.dataKey, line.color)\n : getIn(theme.colors, 'surface.text.gray.muted');\n return (\n <Pressable\n key={`legend-${line.dataKey}`}\n testID={`legend-${line.dataKey}`}\n onPress={() => toggleLegend(line.dataKey)}\n accessibilityRole=\"button\"\n accessibilityLabel={`${line.name ?? line.dataKey}, ${\n selected ? 'selected' : 'deselected'\n }`}\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n opacity: selected ? 1 : 0.5,\n paddingVertical: theme.spacing[1],\n paddingHorizontal: theme.spacing[2],\n }}\n {...metaAttribute({ name: `chart-legend-item-${line.dataKey}` })}\n >\n <View\n style={{\n width: LEGEND_DOT_SIZE,\n height: LEGEND_DOT_SIZE,\n borderRadius: theme.border.radius['2xsmall'],\n backgroundColor: swatchColor,\n marginRight: theme.spacing[2],\n }}\n />\n <Text size=\"small\" color=\"surface.text.gray.muted\">\n {line.name ?? line.dataKey}\n </Text>\n </Pressable>\n );\n })}\n {/* Static (non-toggleable) swatch per reference band (one per line with a range,\n plus the standalone band). */}\n {legendBands.map((band) => (\n <View\n key={`legend-reference-band-${band.id}`}\n testID={`legend-reference-band-${band.id}`}\n style={{\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: theme.spacing[1],\n paddingHorizontal: theme.spacing[2],\n }}\n {...metaAttribute({ name: `chart-legend-item-reference-band-${band.id}` })}\n >\n <View\n style={{\n width: LEGEND_DOT_SIZE,\n height: LEGEND_DOT_SIZE,\n borderRadius: theme.border.radius['2xsmall'],\n backgroundColor: band.fillColor,\n opacity: REFERENCE_BAND_FILL_OPACITY,\n marginRight: theme.spacing[2],\n }}\n />\n <Text size=\"small\" color=\"surface.text.gray.muted\">\n {band.name}\n </Text>\n </View>\n ))}\n </View>\n ) : null}\n </BaseBox>\n </CommonChartComponentsContext.Provider>\n </LineChartContext.Provider>\n );\n};\n\nexport type { ChartLineProps, ChartLineWrapperProps };\nexport { ChartLineWrapper, ChartLine };\n"],"names":["this","AnimatedPath","Animated","createAnimatedComponent","Path","AnimatedRect","Rect","uniqueChartCounter","PLOT_PADDING","top","right","bottom","left","Y_TICK_COUNT","LEGEND_DOT_SIZE","TICK_FONT_SIZE","AXIS_LABEL_FONT_SIZE","SECONDARY_LABEL_FONT_SIZE","X_AXIS_TITLE_GAP","PRIMARY_TO_SECONDARY_GAP","X_TICK_LABEL_GAP","TICK_LINE_HEIGHT","MAX_TICK_LABEL_LINES","LINE_STROKE_WIDTH","DOT_RADIUS","ACTIVE_DOT_OUTER_RADIUS","ACTIVE_DOT_INNER_RADIUS","DIM_OPACITY","TOOLTIP_WIDTH","TOOLTIP_VALUE_WIDTH","estimateTextWidth","label","fontSize","Math","max","length","estimateTickLabelWidth","wrapLabelToLines","maxWidth","text","String","trim","maxChars","floor","words","split","lines","current","flush","push","forEach","word","remaining","slice","kept","lastIndex","last","selectNonOverlappingXTickIndices","pointCount","widths","xForIndex","forcedStep","rightExtent","i","leftExtent","fitsAfter","prev","next","undefined","step","indices","first","firstLastFit","selected","readChildSlots","children","slots","hasXAxis","hasYAxis","hasLegend","legend","hasGrid","referenceLines","hasTooltip","tooltipFilterNull","React","Children","child","isValidElement","id","getComponentId","componentIds","ChartLine","_props$strokeStyle","_props$type","_props$connectNullsSt","_props$showLegend","props","dataKey","name","color","strokeStyle","type","dot","Boolean","activeDot","connectNulls","connectNullsStyle","showLegend","hide","rangeLowerDataKey","rangeUpperDataKey","rangeName","rangeColor","showRangeLegend","commonComponentIds","chartXAxis","xDataKey","xSecondaryDataKey","secondaryDataKey","xTickFormatter","tickFormatter","xInterval","interval","xLabel","chartYAxis","yLabel","Array","isArray","domain","yDomain","yTickFormatter","tickCount","yTickCount","chartLegend","layout","align","selectedDataKeys","defaultSelectedDataKeys","onSelectedDataKeysChange","chartCartesianGrid","chartTooltip","formatter","tooltipFormatter","filterNull","chartReferenceLine","y","x","chartReferenceBand","_props7$name","_props7$color","_props7$showLegend","referenceBand","lowerDataKey","upperDataKey","REFERENCE_BAND_DEFAULT_COLOR","niceCeil","raw","exponent","log10","fraction","niceFraction","niceFloor","toNullableNumber","value","Number","isNaN","isFinite","getRowValue","row","getIn","getSeriesNumber","resolveYMax","dataMax","MISSING_TOOLTIP_VALUE","formatYTick","abs","toFixed","buildLinearPath","points","map","p","join","buildStepPath","variant","d","cur","midX","buildMonotonePath","n","dxs","ms","dx","dy","tangents","m","mNext","dxNext","common","p0","p1","buildPath","getStrokeDasharray","buildSegments","definedPoints","filter","_ref","isNullBridge","definedXs","definedYs","dataSegments","currentStart","pos","pts","startPos","endPos","segments","segment","index","nextSegment","from","to","sampleCount","round","bridgePoints","t","monotoneInterpolate","LineSeries","_ref2","geometry","plotWidth","plotHeight","hoveredKey","dataSignature","chartId","_useTheme","useTheme","theme","line","draw","useSharedValue","dim","duration","motion","baseDelay","beginDelay","drawEasing","dimDuration","useEffect","withDelay","withTiming","easing","isOther","Easing","bezier","clipProps","useAnimatedProps","width","dimProps","strokeOpacity","useMemo","dash","nullBridgeDash","clipId","_jsxs","G","_jsx","Defs","ClipPath","height","animatedProps","clipPath","segmentIndex","testID","stroke","strokeWidth","strokeDasharray","strokeLinecap","strokeLinejoin","fill","pointIndex","Circle","cx","cy","r","_ChartLine","_props","assignWithoutSideEffects","componentId","ChartLineWrapper","_ref3","_slots$legend$default","_slots$yTickCount","_getRowValue2","_ref3$colorTheme","colorTheme","_ref3$data","data","restProps","_objectWithoutProperties","_excluded","_useTheme2","_useState","useState","_useState2","_slicedToArray","size","setSize","_useState3","_useState4","activeIndex","setActiveIndex","_useState5","_useState6","setHoveredKey","chartIdRef","useRef","onLayout","e","_e$nativeEvent$layout","nativeEvent","allLines","yAxisWarnedRef","__DEV__","unsupported","every","v","isNumber","logger","moduleName","message","themeColors","useChartsColorTheme","chartName","chartDataIndicators","dataColorMapping","mapping","colorToken","isCustomColor","assignDataColorMapping","allDataKeys","Object","keys","_useControllableState","useControllableState","defaultValue","_useControllableState2","selectedKeys","setSelectedKeys","hasUserInteractedRef","isControlled","shouldAutoSelectAllDataKeys","isInSync","includes","_toConsumableArray","hasOverlap","some","key","isVisible","toggleLegend","k","concat","selectedKeysArray","visibleLines","l","secondaryLabelMap","_useMemo","dataMin","linesForDomain","rangeKeyPairs","lower","upper","min","Infinity","_ref4","lowerKey","upperKey","yMax","yMin","yRange","yTicks","ticks","showAxes","hasSecondaryXLabels","secondaryRowHeight","xAxisTitleHeight","plotWidthForLabels","columnWidth","xLabels","_getRowValue","rawLabel","xLabelLines","maxXLabelLines","reduce","primaryLabelRowHeight","padding","assign","pointSpacing","visibleXTickIndices","primaryWidth","secondary","secondaryWidth","visibleXTickIndexSet","Set","tickColor","colors","axisLineColor","gridColor","resolveColor","fallback","_dataColorMapping$dat","_dataColorMapping$dat2","token","lineGeometries","resolvedBands","bands","_line$rangeName","_line$showRangeLegend","fillColor","bandGeometries","toY","band","upperValue","lowerValue","buildBandAreaPath","indexAtTouchX","locationX","localX","applyScrub","localY","locationY","nearestKey","nearestDist","point","dist","touchStartActiveRef","touchStartIndexRef","touchMovedRef","becameResponderRef","touchStartLocationRef","SCRUB_MOVE_THRESHOLD","handleTouchStart","handleScrubStart","handleScrubMove","handleTouchEnd","_touchStartLocationRe","tapIndex","tapY","handleScrubTerminate","activeRow","activeLabelRaw","activeLabel","tooltipRows","rows","_line$name","rawValue","displayValue","formatted","_unused","range","_line$rangeName2","legendLines","legendBands","_slots$referenceBand","_line$showRangeLegend2","_line$rangeName3","lineChartContextValue","hoveredDataKey","setHoveredDataKey","commonChartContextValue","setSelectedDataKeys","dataLength","layoutTestID","LineChartContext","Provider","CommonChartComponentsContext","BaseBox","metaAttribute","makeAnalyticsAttribute","display","flexDirection","View","style","flex","overflow","onTouchStart","onTouchEnd","onMoveShouldSetResponder","start","onResponderGrant","onResponderMove","onResponderTerminationRequest","onResponderTerminate","Box","alignItems","justifyContent","Text","Svg","pointerEvents","tick","idx","Line","x1","x2","y1","y2","_Fragment","SvgText","textAnchor","transform","fillOpacity","REFERENCE_BAND_FILL_OPACITY","refLine","isVertical","chipFill","chipStroke","chipTextColor","chipWidth","chipHeight","findIndex","rx","border","radius","medium","_xLabelLines$index","has","primaryY","anchor","secondaryY","lineIndex","position","backgroundColor","borderRadius","large","borderWidth","borderColor","paddingHorizontal","spacing","paddingVertical","shadowColor","shadowOpacity","shadowRadius","shadowOffset","elevation","paddingBottom","weight","marginRight","marginTop","textAlign","flexWrap","paddingTop","_line$name2","_line$name3","swatchColor","Pressable","onPress","accessibilityRole","accessibilityLabel","opacity"],"mappings":"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"}