@kubit-ui-web/react-charts 1.5.1 → 1.7.0

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 (274) hide show
  1. package/dist/cjs/charts/lineChart/context/buildLineContextValue.d.ts +1 -3
  2. package/dist/cjs/charts/lineChart/context/buildLineContextValue.d.ts.map +1 -1
  3. package/dist/cjs/charts/lineChart/context/buildLineContextValue.js +64 -128
  4. package/dist/cjs/charts/lineChart/fragments/fixture/contextData.d.ts +2 -43
  5. package/dist/cjs/charts/lineChart/fragments/fixture/contextData.d.ts.map +1 -1
  6. package/dist/cjs/charts/lineChart/fragments/fixture/contextData.js +8 -6
  7. package/dist/cjs/charts/lineChart/fragments/lineChartPath.js +3 -3
  8. package/dist/cjs/charts/lineChart/fragments/lineChartXAxis.d.ts.map +1 -1
  9. package/dist/cjs/charts/lineChart/fragments/lineChartXAxis.js +3 -8
  10. package/dist/cjs/charts/lineChart/fragments/lineChartYAxis.d.ts.map +1 -1
  11. package/dist/cjs/charts/lineChart/fragments/lineChartYAxis.js +9 -9
  12. package/dist/cjs/charts/lineChart/lineChart.type.d.ts +12 -7
  13. package/dist/cjs/charts/lineChart/lineChart.type.d.ts.map +1 -1
  14. package/dist/cjs/charts/lineChart/lineChartStructure.js +11 -10
  15. package/dist/cjs/charts/lineChart/utils/getCoordinates.d.ts +25 -0
  16. package/dist/cjs/charts/lineChart/utils/getCoordinates.d.ts.map +1 -0
  17. package/dist/cjs/charts/lineChart/utils/getCoordinates.js +55 -0
  18. package/dist/cjs/charts/lineChart/utils/getExtraSpacing.d.ts +1 -3
  19. package/dist/cjs/charts/lineChart/utils/getExtraSpacing.d.ts.map +1 -1
  20. package/dist/cjs/charts/lineChart/utils/getExtraSpacing.js +68 -51
  21. package/dist/cjs/charts/lineChart/utils/getTicks.d.ts +21 -0
  22. package/dist/cjs/charts/lineChart/utils/getTicks.d.ts.map +1 -0
  23. package/dist/cjs/charts/lineChart/utils/getTicks.js +36 -0
  24. package/dist/cjs/charts/lineChart/utils/handleNodesFocus.d.ts.map +1 -1
  25. package/dist/cjs/charts/lineChart/utils/handleNodesFocus.js +14 -25
  26. package/dist/cjs/charts/lineChart/utils/tickTextPosition.d.ts +33 -0
  27. package/dist/cjs/charts/lineChart/utils/tickTextPosition.d.ts.map +1 -0
  28. package/dist/cjs/charts/lineChart/utils/tickTextPosition.js +109 -0
  29. package/dist/cjs/charts/lineChart/utils/validations.d.ts +54 -0
  30. package/dist/cjs/charts/lineChart/utils/validations.d.ts.map +1 -0
  31. package/dist/cjs/charts/lineChart/utils/validations.js +117 -0
  32. package/dist/cjs/components/chartText/chartText.d.ts.map +1 -1
  33. package/dist/cjs/components/chartText/chartText.js +2 -2
  34. package/dist/cjs/components/focusRing/components/FocusRingInline.d.ts +25 -0
  35. package/dist/cjs/components/focusRing/components/FocusRingInline.d.ts.map +1 -0
  36. package/dist/cjs/components/focusRing/components/FocusRingInline.js +37 -0
  37. package/dist/cjs/components/focusRing/components/FocusRingRenderer.d.ts +13 -0
  38. package/dist/cjs/components/focusRing/components/FocusRingRenderer.d.ts.map +1 -0
  39. package/dist/cjs/components/focusRing/components/FocusRingRenderer.js +25 -0
  40. package/dist/cjs/components/focusRing/components/FocusRingSeparate.d.ts +40 -0
  41. package/dist/cjs/components/focusRing/components/FocusRingSeparate.d.ts.map +1 -0
  42. package/dist/cjs/components/focusRing/components/FocusRingSeparate.js +45 -0
  43. package/dist/cjs/components/focusRing/focusRing.css +14 -0
  44. package/dist/cjs/components/focusRing/focusRing.d.ts +35 -0
  45. package/dist/cjs/components/focusRing/focusRing.d.ts.map +1 -0
  46. package/dist/cjs/components/focusRing/focusRing.js +44 -0
  47. package/dist/cjs/components/focusRing/focusRing.types.d.ts +40 -0
  48. package/dist/cjs/components/focusRing/focusRing.types.d.ts.map +1 -0
  49. package/dist/cjs/components/focusRing/focusRing.types.js +1 -0
  50. package/dist/cjs/components/focusRing/hooks/useFocusRingData.d.ts +27 -0
  51. package/dist/cjs/components/focusRing/hooks/useFocusRingData.d.ts.map +1 -0
  52. package/dist/cjs/components/focusRing/hooks/useFocusRingData.js +67 -0
  53. package/dist/cjs/components/focusRing/index.d.ts +3 -0
  54. package/dist/cjs/components/focusRing/index.d.ts.map +1 -0
  55. package/dist/cjs/components/focusRing/index.js +1 -0
  56. package/dist/cjs/components/focusRing/utils/composeRefs.d.ts +7 -0
  57. package/dist/cjs/components/focusRing/utils/composeRefs.d.ts.map +1 -0
  58. package/dist/cjs/components/focusRing/utils/composeRefs.js +16 -0
  59. package/dist/cjs/components/focusRing/utils/createAdaptiveFocusRings.d.ts +24 -0
  60. package/dist/cjs/components/focusRing/utils/createAdaptiveFocusRings.d.ts.map +1 -0
  61. package/dist/cjs/components/focusRing/utils/createAdaptiveFocusRings.js +141 -0
  62. package/dist/cjs/components/focusRing/utils/createBoundingBoxFocusRings.d.ts +33 -0
  63. package/dist/cjs/components/focusRing/utils/createBoundingBoxFocusRings.d.ts.map +1 -0
  64. package/dist/cjs/components/focusRing/utils/createBoundingBoxFocusRings.js +126 -0
  65. package/dist/cjs/components/focusRing/utils/utils.types.d.ts +52 -0
  66. package/dist/cjs/components/focusRing/utils/utils.types.d.ts.map +1 -0
  67. package/dist/cjs/components/focusRing/utils/utils.types.js +1 -0
  68. package/dist/cjs/components/index.d.ts +1 -0
  69. package/dist/cjs/components/index.d.ts.map +1 -1
  70. package/dist/cjs/components/index.js +1 -0
  71. package/dist/cjs/components/line/line.d.ts.map +1 -1
  72. package/dist/cjs/components/line/line.js +2 -2
  73. package/dist/cjs/components/line/line.types.d.ts +2 -0
  74. package/dist/cjs/components/line/line.types.d.ts.map +1 -1
  75. package/dist/cjs/components/node/node.d.ts.map +1 -1
  76. package/dist/cjs/components/node/node.js +1 -1
  77. package/dist/cjs/components/node/node.types.d.ts +2 -0
  78. package/dist/cjs/components/node/node.types.d.ts.map +1 -1
  79. package/dist/cjs/components/path/path.js +1 -1
  80. package/dist/cjs/components/plot/plot.d.ts.map +1 -1
  81. package/dist/cjs/components/plot/plot.js +7 -19
  82. package/dist/cjs/components/zoomArea/components/SelectionArea.d.ts +3 -23
  83. package/dist/cjs/components/zoomArea/components/SelectionArea.d.ts.map +1 -1
  84. package/dist/cjs/components/zoomArea/components/SelectionArea.js +7 -39
  85. package/dist/cjs/components/zoomArea/components/ZoomHandler.d.ts +3 -3
  86. package/dist/cjs/components/zoomArea/components/ZoomHandler.d.ts.map +1 -1
  87. package/dist/cjs/components/zoomArea/components/ZoomHandler.js +2 -15
  88. package/dist/cjs/components/zoomArea/components/index.d.ts +1 -1
  89. package/dist/cjs/components/zoomArea/components/index.d.ts.map +1 -1
  90. package/dist/cjs/components/zoomArea/components/index.js +1 -1
  91. package/dist/cjs/components/zoomArea/zoomArea.js +6 -6
  92. package/dist/cjs/components/zoomArea/zoomArea.type.d.ts +1 -1
  93. package/dist/cjs/components/zoomArea/zoomArea.type.d.ts.map +1 -1
  94. package/dist/cjs/types/focusConfig.type.d.ts +15 -3
  95. package/dist/cjs/types/focusConfig.type.d.ts.map +1 -1
  96. package/dist/cjs/types/focusConfig.type.js +14 -1
  97. package/dist/cjs/utils/pickCustomAttributes/pickCustomAttributes.d.ts +7 -6
  98. package/dist/cjs/utils/pickCustomAttributes/pickCustomAttributes.d.ts.map +1 -1
  99. package/dist/cjs/utils/pickCustomAttributes/pickCustomAttributes.js +8 -7
  100. package/dist/esm/charts/lineChart/context/buildLineContextValue.d.ts +1 -3
  101. package/dist/esm/charts/lineChart/context/buildLineContextValue.d.ts.map +1 -1
  102. package/dist/esm/charts/lineChart/context/buildLineContextValue.js +64 -128
  103. package/dist/esm/charts/lineChart/fragments/fixture/contextData.d.ts +2 -43
  104. package/dist/esm/charts/lineChart/fragments/fixture/contextData.d.ts.map +1 -1
  105. package/dist/esm/charts/lineChart/fragments/fixture/contextData.js +8 -6
  106. package/dist/esm/charts/lineChart/fragments/lineChartPath.js +3 -3
  107. package/dist/esm/charts/lineChart/fragments/lineChartXAxis.d.ts.map +1 -1
  108. package/dist/esm/charts/lineChart/fragments/lineChartXAxis.js +3 -8
  109. package/dist/esm/charts/lineChart/fragments/lineChartYAxis.d.ts.map +1 -1
  110. package/dist/esm/charts/lineChart/fragments/lineChartYAxis.js +9 -9
  111. package/dist/esm/charts/lineChart/lineChart.type.d.ts +12 -7
  112. package/dist/esm/charts/lineChart/lineChart.type.d.ts.map +1 -1
  113. package/dist/esm/charts/lineChart/lineChartStructure.js +11 -10
  114. package/dist/esm/charts/lineChart/utils/getCoordinates.d.ts +25 -0
  115. package/dist/esm/charts/lineChart/utils/getCoordinates.d.ts.map +1 -0
  116. package/dist/esm/charts/lineChart/utils/getCoordinates.js +55 -0
  117. package/dist/esm/charts/lineChart/utils/getExtraSpacing.d.ts +1 -3
  118. package/dist/esm/charts/lineChart/utils/getExtraSpacing.d.ts.map +1 -1
  119. package/dist/esm/charts/lineChart/utils/getExtraSpacing.js +68 -51
  120. package/dist/esm/charts/lineChart/utils/getTicks.d.ts +21 -0
  121. package/dist/esm/charts/lineChart/utils/getTicks.d.ts.map +1 -0
  122. package/dist/esm/charts/lineChart/utils/getTicks.js +36 -0
  123. package/dist/esm/charts/lineChart/utils/handleNodesFocus.d.ts.map +1 -1
  124. package/dist/esm/charts/lineChart/utils/handleNodesFocus.js +14 -25
  125. package/dist/esm/charts/lineChart/utils/tickTextPosition.d.ts +33 -0
  126. package/dist/esm/charts/lineChart/utils/tickTextPosition.d.ts.map +1 -0
  127. package/dist/esm/charts/lineChart/utils/tickTextPosition.js +109 -0
  128. package/dist/esm/charts/lineChart/utils/validations.d.ts +54 -0
  129. package/dist/esm/charts/lineChart/utils/validations.d.ts.map +1 -0
  130. package/dist/esm/charts/lineChart/utils/validations.js +117 -0
  131. package/dist/esm/components/chartText/chartText.d.ts.map +1 -1
  132. package/dist/esm/components/chartText/chartText.js +2 -2
  133. package/dist/esm/components/focusRing/components/FocusRingInline.d.ts +25 -0
  134. package/dist/esm/components/focusRing/components/FocusRingInline.d.ts.map +1 -0
  135. package/dist/esm/components/focusRing/components/FocusRingInline.js +37 -0
  136. package/dist/esm/components/focusRing/components/FocusRingRenderer.d.ts +13 -0
  137. package/dist/esm/components/focusRing/components/FocusRingRenderer.d.ts.map +1 -0
  138. package/dist/esm/components/focusRing/components/FocusRingRenderer.js +25 -0
  139. package/dist/esm/components/focusRing/components/FocusRingSeparate.d.ts +40 -0
  140. package/dist/esm/components/focusRing/components/FocusRingSeparate.d.ts.map +1 -0
  141. package/dist/esm/components/focusRing/components/FocusRingSeparate.js +45 -0
  142. package/dist/esm/components/focusRing/focusRing.css +14 -0
  143. package/dist/esm/components/focusRing/focusRing.d.ts +35 -0
  144. package/dist/esm/components/focusRing/focusRing.d.ts.map +1 -0
  145. package/dist/esm/components/focusRing/focusRing.js +44 -0
  146. package/dist/esm/components/focusRing/focusRing.types.d.ts +40 -0
  147. package/dist/esm/components/focusRing/focusRing.types.d.ts.map +1 -0
  148. package/dist/esm/components/focusRing/focusRing.types.js +1 -0
  149. package/dist/esm/components/focusRing/hooks/useFocusRingData.d.ts +27 -0
  150. package/dist/esm/components/focusRing/hooks/useFocusRingData.d.ts.map +1 -0
  151. package/dist/esm/components/focusRing/hooks/useFocusRingData.js +67 -0
  152. package/dist/esm/components/focusRing/index.d.ts +3 -0
  153. package/dist/esm/components/focusRing/index.d.ts.map +1 -0
  154. package/dist/esm/components/focusRing/index.js +1 -0
  155. package/dist/esm/components/focusRing/utils/composeRefs.d.ts +7 -0
  156. package/dist/esm/components/focusRing/utils/composeRefs.d.ts.map +1 -0
  157. package/dist/esm/components/focusRing/utils/composeRefs.js +16 -0
  158. package/dist/esm/components/focusRing/utils/createAdaptiveFocusRings.d.ts +24 -0
  159. package/dist/esm/components/focusRing/utils/createAdaptiveFocusRings.d.ts.map +1 -0
  160. package/dist/esm/components/focusRing/utils/createAdaptiveFocusRings.js +141 -0
  161. package/dist/esm/components/focusRing/utils/createBoundingBoxFocusRings.d.ts +33 -0
  162. package/dist/esm/components/focusRing/utils/createBoundingBoxFocusRings.d.ts.map +1 -0
  163. package/dist/esm/components/focusRing/utils/createBoundingBoxFocusRings.js +126 -0
  164. package/dist/esm/components/focusRing/utils/utils.types.d.ts +52 -0
  165. package/dist/esm/components/focusRing/utils/utils.types.d.ts.map +1 -0
  166. package/dist/esm/components/focusRing/utils/utils.types.js +1 -0
  167. package/dist/esm/components/index.d.ts +1 -0
  168. package/dist/esm/components/index.d.ts.map +1 -1
  169. package/dist/esm/components/index.js +1 -0
  170. package/dist/esm/components/line/line.d.ts.map +1 -1
  171. package/dist/esm/components/line/line.js +2 -2
  172. package/dist/esm/components/line/line.types.d.ts +2 -0
  173. package/dist/esm/components/line/line.types.d.ts.map +1 -1
  174. package/dist/esm/components/node/node.d.ts.map +1 -1
  175. package/dist/esm/components/node/node.js +1 -1
  176. package/dist/esm/components/node/node.types.d.ts +2 -0
  177. package/dist/esm/components/node/node.types.d.ts.map +1 -1
  178. package/dist/esm/components/path/path.js +1 -1
  179. package/dist/esm/components/plot/plot.d.ts.map +1 -1
  180. package/dist/esm/components/plot/plot.js +7 -19
  181. package/dist/esm/components/zoomArea/components/SelectionArea.d.ts +3 -23
  182. package/dist/esm/components/zoomArea/components/SelectionArea.d.ts.map +1 -1
  183. package/dist/esm/components/zoomArea/components/SelectionArea.js +7 -39
  184. package/dist/esm/components/zoomArea/components/ZoomHandler.d.ts +3 -3
  185. package/dist/esm/components/zoomArea/components/ZoomHandler.d.ts.map +1 -1
  186. package/dist/esm/components/zoomArea/components/ZoomHandler.js +2 -15
  187. package/dist/esm/components/zoomArea/components/index.d.ts +1 -1
  188. package/dist/esm/components/zoomArea/components/index.d.ts.map +1 -1
  189. package/dist/esm/components/zoomArea/components/index.js +1 -1
  190. package/dist/esm/components/zoomArea/zoomArea.js +6 -6
  191. package/dist/esm/components/zoomArea/zoomArea.type.d.ts +1 -1
  192. package/dist/esm/components/zoomArea/zoomArea.type.d.ts.map +1 -1
  193. package/dist/esm/types/focusConfig.type.d.ts +15 -3
  194. package/dist/esm/types/focusConfig.type.d.ts.map +1 -1
  195. package/dist/esm/types/focusConfig.type.js +14 -1
  196. package/dist/esm/utils/pickCustomAttributes/pickCustomAttributes.d.ts +7 -6
  197. package/dist/esm/utils/pickCustomAttributes/pickCustomAttributes.d.ts.map +1 -1
  198. package/dist/esm/utils/pickCustomAttributes/pickCustomAttributes.js +8 -7
  199. package/dist/kubit-ui-web-react-charts.cjs.js +1 -1
  200. package/dist/kubit-ui-web-react-charts.es.js +1 -1
  201. package/dist/kubit-ui-web-react-charts.umd.js +1 -1
  202. package/dist/react-charts.css +1 -1
  203. package/dist/types/charts/lineChart/context/buildLineContextValue.d.ts +1 -3
  204. package/dist/types/charts/lineChart/context/buildLineContextValue.d.ts.map +1 -1
  205. package/dist/types/charts/lineChart/fragments/fixture/contextData.d.ts +2 -43
  206. package/dist/types/charts/lineChart/fragments/fixture/contextData.d.ts.map +1 -1
  207. package/dist/types/charts/lineChart/fragments/lineChartXAxis.d.ts.map +1 -1
  208. package/dist/types/charts/lineChart/fragments/lineChartYAxis.d.ts.map +1 -1
  209. package/dist/types/charts/lineChart/lineChart.type.d.ts +12 -7
  210. package/dist/types/charts/lineChart/lineChart.type.d.ts.map +1 -1
  211. package/dist/types/charts/lineChart/utils/getCoordinates.d.ts +25 -0
  212. package/dist/types/charts/lineChart/utils/getCoordinates.d.ts.map +1 -0
  213. package/dist/types/charts/lineChart/utils/getExtraSpacing.d.ts +1 -3
  214. package/dist/types/charts/lineChart/utils/getExtraSpacing.d.ts.map +1 -1
  215. package/dist/types/charts/lineChart/utils/getTicks.d.ts +21 -0
  216. package/dist/types/charts/lineChart/utils/getTicks.d.ts.map +1 -0
  217. package/dist/types/charts/lineChart/utils/handleNodesFocus.d.ts.map +1 -1
  218. package/dist/types/charts/lineChart/utils/tickTextPosition.d.ts +33 -0
  219. package/dist/types/charts/lineChart/utils/tickTextPosition.d.ts.map +1 -0
  220. package/dist/types/charts/lineChart/utils/validations.d.ts +54 -0
  221. package/dist/types/charts/lineChart/utils/validations.d.ts.map +1 -0
  222. package/dist/types/components/chartText/chartText.d.ts.map +1 -1
  223. package/dist/types/components/focusRing/components/FocusRingInline.d.ts +25 -0
  224. package/dist/types/components/focusRing/components/FocusRingInline.d.ts.map +1 -0
  225. package/dist/types/components/focusRing/components/FocusRingRenderer.d.ts +13 -0
  226. package/dist/types/components/focusRing/components/FocusRingRenderer.d.ts.map +1 -0
  227. package/dist/types/components/focusRing/components/FocusRingSeparate.d.ts +40 -0
  228. package/dist/types/components/focusRing/components/FocusRingSeparate.d.ts.map +1 -0
  229. package/dist/types/components/focusRing/focusRing.d.ts +34 -0
  230. package/dist/types/components/focusRing/focusRing.d.ts.map +1 -0
  231. package/dist/types/components/focusRing/focusRing.types.d.ts +40 -0
  232. package/dist/types/components/focusRing/focusRing.types.d.ts.map +1 -0
  233. package/dist/types/components/focusRing/hooks/useFocusRingData.d.ts +27 -0
  234. package/dist/types/components/focusRing/hooks/useFocusRingData.d.ts.map +1 -0
  235. package/dist/types/components/focusRing/index.d.ts +3 -0
  236. package/dist/types/components/focusRing/index.d.ts.map +1 -0
  237. package/dist/types/components/focusRing/utils/composeRefs.d.ts +7 -0
  238. package/dist/types/components/focusRing/utils/composeRefs.d.ts.map +1 -0
  239. package/dist/types/components/focusRing/utils/createAdaptiveFocusRings.d.ts +24 -0
  240. package/dist/types/components/focusRing/utils/createAdaptiveFocusRings.d.ts.map +1 -0
  241. package/dist/types/components/focusRing/utils/createBoundingBoxFocusRings.d.ts +33 -0
  242. package/dist/types/components/focusRing/utils/createBoundingBoxFocusRings.d.ts.map +1 -0
  243. package/dist/types/components/focusRing/utils/utils.types.d.ts +52 -0
  244. package/dist/types/components/focusRing/utils/utils.types.d.ts.map +1 -0
  245. package/dist/types/components/index.d.ts +1 -0
  246. package/dist/types/components/index.d.ts.map +1 -1
  247. package/dist/types/components/line/line.d.ts.map +1 -1
  248. package/dist/types/components/line/line.types.d.ts +2 -0
  249. package/dist/types/components/line/line.types.d.ts.map +1 -1
  250. package/dist/types/components/node/node.d.ts.map +1 -1
  251. package/dist/types/components/node/node.types.d.ts +2 -0
  252. package/dist/types/components/node/node.types.d.ts.map +1 -1
  253. package/dist/types/components/plot/plot.d.ts.map +1 -1
  254. package/dist/types/components/zoomArea/components/SelectionArea.d.ts +3 -23
  255. package/dist/types/components/zoomArea/components/SelectionArea.d.ts.map +1 -1
  256. package/dist/types/components/zoomArea/components/ZoomHandler.d.ts +3 -3
  257. package/dist/types/components/zoomArea/components/ZoomHandler.d.ts.map +1 -1
  258. package/dist/types/components/zoomArea/components/index.d.ts +1 -1
  259. package/dist/types/components/zoomArea/components/index.d.ts.map +1 -1
  260. package/dist/types/components/zoomArea/zoomArea.type.d.ts +1 -1
  261. package/dist/types/components/zoomArea/zoomArea.type.d.ts.map +1 -1
  262. package/dist/types/types/focusConfig.type.d.ts +15 -3
  263. package/dist/types/types/focusConfig.type.d.ts.map +1 -1
  264. package/dist/types/utils/pickCustomAttributes/pickCustomAttributes.d.ts +7 -6
  265. package/dist/types/utils/pickCustomAttributes/pickCustomAttributes.d.ts.map +1 -1
  266. package/package.json +1 -1
  267. package/dist/cjs/utils/calculateFocusOutline/calculateFocusOutline.d.ts +0 -73
  268. package/dist/cjs/utils/calculateFocusOutline/calculateFocusOutline.d.ts.map +0 -1
  269. package/dist/cjs/utils/calculateFocusOutline/calculateFocusOutline.js +0 -80
  270. package/dist/esm/utils/calculateFocusOutline/calculateFocusOutline.d.ts +0 -73
  271. package/dist/esm/utils/calculateFocusOutline/calculateFocusOutline.d.ts.map +0 -1
  272. package/dist/esm/utils/calculateFocusOutline/calculateFocusOutline.js +0 -80
  273. package/dist/types/utils/calculateFocusOutline/calculateFocusOutline.d.ts +0 -73
  274. package/dist/types/utils/calculateFocusOutline/calculateFocusOutline.d.ts.map +0 -1
@@ -1,48 +1,16 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { calculateFocusOutline } from '../../../utils/calculateFocusOutline/calculateFocusOutline';
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { forwardRef } from 'react';
3
3
  import { isFullRange } from '../utils/rangeAndPositions';
4
4
  /**
5
- * Focus ring for the selection area - rendered separately to control z-order
5
+ * Selection area overlay - the interactive rectangle that users can drag and focus
6
6
  */
7
- export const SelectionAreaFocusRing = ({ endX, focusConfig, height, isFocused, startX, }) => {
8
- if (!isFocused) {
9
- return null;
10
- }
11
- // Calculate selection area dimensions
12
- const selectionWidth = endX - startX;
13
- const selectionHeight = height;
14
- const centerX = startX + selectionWidth / 2;
15
- const centerY = height / 2;
16
- // Calculate focus ring dimensions using the new util
17
- const focusOutline = calculateFocusOutline({
18
- elementHeight: selectionHeight,
19
- elementPosition: { x: centerX, y: centerY },
20
- elementStrokeWidth: 0, // Selection area typically has no border
21
- elementType: 'rectangle',
22
- elementWidth: selectionWidth,
23
- gap: focusConfig.gap,
24
- innerStrokeWidth: focusConfig.innerStrokeWidth,
25
- outlineStrokeWidth: focusConfig.outlineStrokeWidth,
26
- });
27
- // Use resolved configuration values directly
28
- const outlineColor = focusConfig.outlineColor;
29
- const innerColor = focusConfig.innerColor;
30
- const outlineStrokeWidth = focusConfig.outlineStrokeWidth;
31
- const innerStrokeWidth = focusConfig.innerStrokeWidth;
32
- if (focusOutline.type !== 'rectangle') {
33
- return null;
34
- }
35
- return (_jsxs("g", { pointerEvents: "none", children: [_jsx("rect", { fill: "none", height: focusOutline.outer.height, stroke: outlineColor, strokeWidth: outlineStrokeWidth, width: focusOutline.outer.width, x: focusOutline.outer.x, y: focusOutline.outer.y }), _jsx("rect", { fill: "none", height: focusOutline.inner.height, stroke: innerColor, strokeWidth: innerStrokeWidth, width: focusOutline.inner.width, x: focusOutline.inner.x, y: focusOutline.inner.y })] }));
36
- };
37
- /**
38
- * Selection area overlay
39
- */
40
- export const SelectionArea = ({ currentRange, dataLength, dataTestId, endX, height, onBlur, onFocus, onKeyDown, onMouseDown, onTouchStart, screenReaderText, selectionConfig, startX, }) => {
7
+ export const SelectionArea = forwardRef(({ currentRange, dataLength, dataTestId, endX, height, onBlur, onFocus, onKeyDown, onMouseDown, onTouchStart, screenReaderText, selectionConfig, startX, }, ref) => {
41
8
  // Check if overlay should be hidden based on design specs:
42
9
  // "Only visible when a range is defined"
43
10
  const shouldHideOverlay = selectionConfig.hideOverlayOnFullRange && isFullRange(currentRange, dataLength);
44
- return (_jsx(_Fragment, { children: _jsx("rect", { "aria-label": screenReaderText, "aria-valuemax": dataLength - 1, "aria-valuemin": 0, "aria-valuetext": screenReaderText, cursor: "grab", "data-testid": dataTestId, fill: selectionConfig.fill, fillOpacity: selectionConfig.fillOpacity, height: height, role: "slider", stroke: selectionConfig.stroke, strokeWidth: selectionConfig.strokeWidth, style: {
11
+ return (_jsx(_Fragment, { children: _jsx("rect", { ref: ref, "aria-label": screenReaderText, "aria-valuemax": dataLength - 1, "aria-valuemin": 0, "aria-valuetext": screenReaderText, cursor: "grab", "data-testid": dataTestId, fill: selectionConfig.fill, fillOpacity: selectionConfig.fillOpacity, height: height, role: "slider", stroke: selectionConfig.stroke, strokeWidth: selectionConfig.strokeWidth, style: {
45
12
  outline: 'none',
46
13
  visibility: shouldHideOverlay ? 'hidden' : 'visible',
47
14
  }, tabIndex: 0, width: endX - startX, x: startX, y: 0, onBlur: onBlur, onFocus: onFocus, onKeyDown: onKeyDown, onMouseDown: onMouseDown, onTouchStart: onTouchStart }) }));
48
- };
15
+ });
16
+ SelectionArea.displayName = 'SelectionArea';
@@ -17,12 +17,12 @@ interface ZoomHandlerProps {
17
17
  min: number;
18
18
  /** Maximum allowed value */
19
19
  max: number;
20
- /** Whether this handler is focused */
20
+ /** Whether the handler is focused (controlled mode) */
21
21
  isFocused: boolean;
22
22
  /** Custom handler configuration */
23
23
  handlerConfig?: ZoomAreaHandlerConfig;
24
- /** Custom focus configuration (already resolved) */
25
- focusConfig: Required<FocusConfig>;
24
+ /** Focus ring configuration */
25
+ focusConfig?: FocusConfig;
26
26
  /** Text announced by screen readers */
27
27
  screenReaderText?: string;
28
28
  /** Data test ID */
@@ -1 +1 @@
1
- {"version":3,"file":"ZoomHandler.d.ts","sourceRoot":"","sources":["../../../../../src/components/zoomArea/components/ZoomHandler.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAyBhF;;GAEG;AACH,UAAU,gBAAgB;IACxB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,OAAO,gBAAgB,CAAC;IACpC,iBAAiB;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,4BAA4B;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,sCAAsC;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,mCAAmC;IACnC,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,oDAAoD;IACpD,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IACnC,uCAAuC;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACzC,YAAY,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,SAAS,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAmBD;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAoGlD,CAAC"}
1
+ {"version":3,"file":"ZoomHandler.d.ts","sourceRoot":"","sources":["../../../../../src/components/zoomArea/components/ZoomHandler.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAyBhF;;GAEG;AACH,UAAU,gBAAgB;IACxB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,OAAO,gBAAgB,CAAC;IACpC,iBAAiB;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,4BAA4B;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,uDAAuD;IACvD,SAAS,EAAE,OAAO,CAAC;IACnB,mCAAmC;IACnC,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,+BAA+B;IAC/B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,uCAAuC;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACzC,YAAY,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,SAAS,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAmBD;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA+DlD,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { calculateFocusOutline } from '../../../utils/calculateFocusOutline/calculateFocusOutline';
2
+ import { FocusRing } from '../../../components/focusRing/focusRing';
3
3
  import { HandlerIcon } from './HandlerIcon';
4
4
  /**
5
5
  * Default colors for zoom handlers
@@ -42,18 +42,5 @@ const getHandlerStyles = (handlerConfig) => ({
42
42
  export const ZoomHandler = ({ dataTestId, focusConfig, handlerConfig, height, isFocused, max, min, onBlur, onFocus, onKeyDown, onMouseDown, onTouchStart, screenReaderText, x, }) => {
43
43
  const centerY = height / 2;
44
44
  const styles = getHandlerStyles(handlerConfig);
45
- // Calculate focus ring dimensions using the new util
46
- const focusOutline = calculateFocusOutline({
47
- elementHeight: styles.radius * 2,
48
- elementPosition: { x, y: centerY },
49
- elementStrokeWidth: typeof styles.strokeWidth === 'number'
50
- ? styles.strokeWidth
51
- : parseFloat(styles.strokeWidth.toString()),
52
- elementType: 'circle',
53
- elementWidth: styles.radius * 2,
54
- gap: focusConfig.gap,
55
- innerStrokeWidth: focusConfig.innerStrokeWidth,
56
- outlineStrokeWidth: focusConfig.outlineStrokeWidth,
57
- });
58
- return (_jsxs("g", { "data-testid": `${dataTestId}-group`, children: [_jsx("line", { pointerEvents: "none", stroke: styles.verticalLineStroke, strokeWidth: styles.verticalLineStrokeWidth, x1: x, x2: x, y1: 0, y2: height }), _jsx("circle", { "aria-label": screenReaderText, "aria-valuemax": max, "aria-valuemin": min, "aria-valuetext": screenReaderText, cursor: "ew-resize", cx: x, cy: centerY, "data-testid": dataTestId, fill: styles.fill, r: styles.radius, role: "slider", stroke: styles.stroke, strokeWidth: styles.strokeWidth, style: { outline: 'none' }, tabIndex: 0, onBlur: onBlur, onFocus: onFocus, onKeyDown: onKeyDown, onMouseDown: onMouseDown, onTouchStart: onTouchStart }), _jsx(HandlerIcon, { fill: styles.iconColor, x: x, y: centerY }), isFocused && focusOutline.type === 'circle' && (_jsxs("g", { pointerEvents: "none", children: [_jsx("circle", { cx: focusOutline.outer.cx, cy: focusOutline.outer.cy, fill: "none", r: focusOutline.outer.r, stroke: focusConfig.outlineColor, strokeWidth: focusConfig.outlineStrokeWidth }), _jsx("circle", { cx: focusOutline.inner.cx, cy: focusOutline.inner.cy, fill: "none", r: focusOutline.inner.r, stroke: focusConfig.innerColor, strokeWidth: focusConfig.innerStrokeWidth })] }))] }));
45
+ return (_jsxs("g", { "data-testid": `${dataTestId}-group`, children: [_jsx("line", { pointerEvents: "none", stroke: styles.verticalLineStroke, strokeWidth: styles.verticalLineStrokeWidth, x1: x, x2: x, y1: 0, y2: height }), _jsx(FocusRing, { dataTestId: dataTestId, focusConfig: focusConfig, isFocused: isFocused, children: _jsx("circle", { "aria-label": screenReaderText, "aria-valuemax": max, "aria-valuemin": min, "aria-valuetext": screenReaderText, cursor: "ew-resize", cx: x, cy: centerY, "data-testid": dataTestId, fill: styles.fill, r: styles.radius, role: "slider", stroke: styles.stroke, strokeWidth: styles.strokeWidth, style: { outline: 'none' }, tabIndex: 0, onBlur: onBlur, onFocus: onFocus, onKeyDown: onKeyDown, onMouseDown: onMouseDown, onTouchStart: onTouchStart }) }), _jsx(HandlerIcon, { fill: styles.iconColor, x: x, y: centerY })] }));
59
46
  };
@@ -1,5 +1,5 @@
1
1
  export { HandlerIcon } from './HandlerIcon';
2
2
  export { LineRenderer } from './LineRenderer';
3
- export { SelectionArea, SelectionAreaFocusRing } from './SelectionArea';
3
+ export { SelectionArea } from './SelectionArea';
4
4
  export { ZoomHandler } from './ZoomHandler';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/zoomArea/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/zoomArea/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -1,4 +1,4 @@
1
1
  export { HandlerIcon } from './HandlerIcon';
2
2
  export { LineRenderer } from './LineRenderer';
3
- export { SelectionArea, SelectionAreaFocusRing } from './SelectionArea';
3
+ export { SelectionArea } from './SelectionArea';
4
4
  export { ZoomHandler } from './ZoomHandler';
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useMemo } from 'react';
2
+ import { useMemo, useRef } from 'react';
3
3
  import { SvgContainer } from '../../components/svgContainer/svgContainer';
4
- import { getFocusConfig } from '../../utils/calculateFocusOutline/calculateFocusOutline';
5
4
  import { getDataFingerprint } from '../../utils/getDataFingerprint/getDataFingerprint';
5
+ import { FocusRing } from '../focusRing/focusRing';
6
6
  import { LineRenderer } from './components/LineRenderer';
7
- import { SelectionArea, SelectionAreaFocusRing } from './components/SelectionArea';
7
+ import { SelectionArea } from './components/SelectionArea';
8
8
  import { ZoomHandler } from './components/ZoomHandler';
9
9
  import { useDragInteraction } from './hooks/useDragInteraction';
10
10
  import { useKeyboardNavigation } from './hooks/useKeyboardNavigation';
@@ -34,8 +34,6 @@ initialRange, interactionConfig, lines, onDataChange, role, screenReaderTextConf
34
34
  const resolvedInteractionConfig = getInteractionConfig(interactionConfig);
35
35
  // Resolve selection config with defaults
36
36
  const resolvedSelectionConfig = getSelectionConfig(selectionConfig);
37
- // Resolve focus config with defaults
38
- const resolvedFocusConfig = getFocusConfig(focusConfig);
39
37
  // Hook for core data filtering functionality
40
38
  const { currentRange, handleRangeChange } = useZoomData({
41
39
  data,
@@ -52,6 +50,8 @@ initialRange, interactionConfig, lines, onDataChange, role, screenReaderTextConf
52
50
  // Create a fingerprint of the data/lines to avoid unnecessary updates
53
51
  const dataFingerprint = getDataFingerprint(data);
54
52
  const linesFingerprint = JSON.stringify(lines);
53
+ // Create ref for SelectionArea to enable separate focus ring rendering
54
+ const selectionAreaRef = useRef(null);
55
55
  const accessibilityLabels = generateAccessibilityLabels(data, xKey, currentRange, screenReaderTextConfig);
56
56
  // Memoize expensive line calculations
57
57
  const linesData = useMemo(() => {
@@ -76,5 +76,5 @@ initialRange, interactionConfig, lines, onDataChange, role, screenReaderTextConf
76
76
  });
77
77
  return (_jsxs(SvgContainer, { ref: groupRef, ariaHidden: ariaHidden, ariaLabel: ariaLabel, backgroundColor: backgroundColor, caption: caption, className: classNames, "data-testid": dataTestId, height: height,
78
78
  // set overflow visible so handlers and focus rings are visible always
79
- overflow: "visible", role: role, viewBox: viewBox, width: width, ...eventHandlers, children: [_jsx(LineRenderer, { linesData: linesData }), _jsx(SelectionArea, { currentRange: currentRange, dataLength: data.length, dataTestId: `${dataTestId}-selection-area`, endX: endX, height: parsedCanvas.height, screenReaderText: accessibilityLabels.selectionArea, selectionConfig: resolvedSelectionConfig, startX: startX, onBlur: handleBlur, onFocus: handleFocus(ZoomAreaElements.SELECTION_AREA), onKeyDown: handleKeyDown(ZoomAreaElements.SELECTION_AREA), onMouseDown: handleMouseDown(ZoomAreaElements.SELECTION_AREA), onTouchStart: handleTouchStart(ZoomAreaElements.SELECTION_AREA) }), _jsx(ZoomHandler, { dataTestId: `${dataTestId}-start-handler`, focusConfig: resolvedFocusConfig, handlerConfig: handlerConfig, height: parsedCanvas.height, isFocused: isFocused(ZoomAreaElements.START_HANDLER), max: currentRange.end - resolvedInteractionConfig.minHandlerDistance, min: 0, screenReaderText: accessibilityLabels.startHandler, type: ZoomAreaElements.START_HANDLER, value: currentRange.start, x: startX, onBlur: handleBlur, onFocus: handleFocus(ZoomAreaElements.START_HANDLER), onKeyDown: handleKeyDown(ZoomAreaElements.START_HANDLER), onMouseDown: handleMouseDown(ZoomAreaElements.START_HANDLER), onTouchStart: handleTouchStart(ZoomAreaElements.START_HANDLER) }), _jsx(ZoomHandler, { dataTestId: `${dataTestId}-end-handler`, focusConfig: resolvedFocusConfig, handlerConfig: handlerConfig, height: parsedCanvas.height, isFocused: isFocused(ZoomAreaElements.END_HANDLER), max: data.length - 1, min: currentRange.start + resolvedInteractionConfig.minHandlerDistance, screenReaderText: accessibilityLabels.endHandler, type: ZoomAreaElements.END_HANDLER, value: currentRange.end, x: endX, onBlur: handleBlur, onFocus: handleFocus(ZoomAreaElements.END_HANDLER), onKeyDown: handleKeyDown(ZoomAreaElements.END_HANDLER), onMouseDown: handleMouseDown(ZoomAreaElements.END_HANDLER), onTouchStart: handleTouchStart(ZoomAreaElements.END_HANDLER) }), _jsx(SelectionAreaFocusRing, { endX: endX, focusConfig: resolvedFocusConfig, height: parsedCanvas.height, isFocused: isFocused(ZoomAreaElements.SELECTION_AREA), startX: startX })] }));
79
+ overflow: "visible", role: role, viewBox: viewBox, width: width, ...eventHandlers, children: [_jsx(LineRenderer, { linesData: linesData }), _jsx(SelectionArea, { ref: selectionAreaRef, currentRange: currentRange, dataLength: data.length, dataTestId: `${dataTestId}-selection-area`, endX: endX, height: parsedCanvas.height, screenReaderText: accessibilityLabels.selectionArea, selectionConfig: resolvedSelectionConfig, startX: startX, onBlur: handleBlur, onFocus: handleFocus(ZoomAreaElements.SELECTION_AREA), onKeyDown: handleKeyDown(ZoomAreaElements.SELECTION_AREA), onMouseDown: handleMouseDown(ZoomAreaElements.SELECTION_AREA), onTouchStart: handleTouchStart(ZoomAreaElements.SELECTION_AREA) }), _jsx(ZoomHandler, { dataTestId: `${dataTestId}-start-handler`, focusConfig: focusConfig, handlerConfig: handlerConfig, height: parsedCanvas.height, isFocused: isFocused(ZoomAreaElements.START_HANDLER), max: currentRange.end - resolvedInteractionConfig.minHandlerDistance, min: 0, screenReaderText: accessibilityLabels.startHandler, type: ZoomAreaElements.START_HANDLER, value: currentRange.start, x: startX, onBlur: handleBlur, onFocus: handleFocus(ZoomAreaElements.START_HANDLER), onKeyDown: handleKeyDown(ZoomAreaElements.START_HANDLER), onMouseDown: handleMouseDown(ZoomAreaElements.START_HANDLER), onTouchStart: handleTouchStart(ZoomAreaElements.START_HANDLER) }), _jsx(ZoomHandler, { dataTestId: `${dataTestId}-end-handler`, focusConfig: focusConfig, handlerConfig: handlerConfig, height: parsedCanvas.height, isFocused: isFocused(ZoomAreaElements.END_HANDLER), max: data.length - 1, min: currentRange.start + resolvedInteractionConfig.minHandlerDistance, screenReaderText: accessibilityLabels.endHandler, type: ZoomAreaElements.END_HANDLER, value: currentRange.end, x: endX, onBlur: handleBlur, onFocus: handleFocus(ZoomAreaElements.END_HANDLER), onKeyDown: handleKeyDown(ZoomAreaElements.END_HANDLER), onMouseDown: handleMouseDown(ZoomAreaElements.END_HANDLER), onTouchStart: handleTouchStart(ZoomAreaElements.END_HANDLER) }), _jsx(FocusRing, { dataTestId: "selection-area-focus", focusConfig: { ...focusConfig, variant: 'bounding-box' }, isFocused: isFocused(ZoomAreaElements.SELECTION_AREA), targetRef: selectionAreaRef })] }));
80
80
  };
@@ -121,7 +121,7 @@ export interface ZoomAreaProps {
121
121
  /** Custom selection area configuration */
122
122
  selectionConfig?: ZoomAreaSelectionConfig;
123
123
  /** Custom focus configuration applied to all focusable elements */
124
- focusConfig?: FocusConfig;
124
+ focusConfig?: Omit<FocusConfig, 'variant'>;
125
125
  /** Configuration for interaction behavior (keyboard navigation, handler distances) */
126
126
  interactionConfig?: ZoomAreaInteractionConfig;
127
127
  /** Configuration for accessibility label templates */
@@ -1 +1 @@
1
- {"version":3,"file":"zoomArea.type.d.ts","sourceRoot":"","sources":["../../../../src/components/zoomArea/zoomArea.type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zoomArea.type.d.ts","sourceRoot":"","sources":["../../../../src/components/zoomArea/zoomArea.type.ts"],"names":[],"mappings":"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"}
@@ -3,16 +3,22 @@
3
3
  *
4
4
  * - `outlineColor` - Color of the outer outline when focused. Defaults to #0078D7.
5
5
  * - `outlineStrokeWidth` - Stroke width of the outer outline. Defaults to 2.
6
- * - `innerStrokeColor` - Color of the inner outline when focused. Defaults to #FFFFFF.
6
+ * - `innerColor` - Color of the inner outline when focused. Defaults to #FFFFFF.
7
7
  * - `innerStrokeWidth` - Stroke width of the inner outline. Defaults to 2.
8
- * - `gap` - Gap between the inner and outer outline. Defaults to 0.
8
+ * - `gap` - Gap between the element and the focus rings. Defaults to 0.
9
+ * Note: Only applies when variant is 'bounding-box'. Ignored in 'adaptive' mode.
10
+ * - `variant` - Focus ring rendering mode. Defaults to 'adaptive'.
11
+ * - 'adaptive': Ring follows the exact shape of the element (circle → circular ring, path → path ring)
12
+ * - 'bounding-box': Ring is always rectangular, wrapping the element's bounding box
9
13
  */
10
14
  export interface FocusConfig {
11
15
  outlineColor?: string;
12
16
  outlineStrokeWidth?: number;
13
17
  innerColor?: string;
14
18
  innerStrokeWidth?: number;
19
+ /** Only applicable when variant is 'bounding-box' */
15
20
  gap?: number;
21
+ variant?: 'adaptive' | 'bounding-box';
16
22
  }
17
23
  export declare const FOCUS_DEFAULT: {
18
24
  /** Focus ring color */
@@ -23,7 +29,13 @@ export declare const FOCUS_DEFAULT: {
23
29
  readonly INNER_FOCUS_STROKE_WIDTH: 2;
24
30
  /** Focus ring outer stroke width */
25
31
  readonly OUTER_FOCUS_STROKE_WIDTH: 2;
26
- /** Gap between element and outlines */
32
+ /** Gap between element and outlines (only applies in bounding-box variant) */
27
33
  readonly OUTLINES_GAP: 0;
34
+ /** Focus ring rendering variant */
35
+ readonly VARIANT: "adaptive";
28
36
  };
37
+ /**
38
+ * Helper function to get complete focus config with defaults applied
39
+ */
40
+ export declare const getFocusConfig: (focusConfig?: FocusConfig) => Required<FocusConfig>;
29
41
  //# sourceMappingURL=focusConfig.type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"focusConfig.type.d.ts","sourceRoot":"","sources":["../../../src/types/focusConfig.type.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,aAAa;IACxB,uBAAuB;;IAEvB,8BAA8B;;IAE9B,oCAAoC;;IAEpC,oCAAoC;;IAEpC,uCAAuC;;CAE/B,CAAC"}
1
+ {"version":3,"file":"focusConfig.type.d.ts","sourceRoot":"","sources":["../../../src/types/focusConfig.type.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,UAAU,GAAG,cAAc,CAAC;CACvC;AAED,eAAO,MAAM,aAAa;IACxB,uBAAuB;;IAEvB,8BAA8B;;IAE9B,oCAAoC;;IAEpC,oCAAoC;;IAEpC,8EAA8E;;IAE9E,mCAAmC;;CAE3B,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,cAAc,WAAW,KAAG,QAAQ,CAAC,WAAW,CAO7E,CAAC"}
@@ -7,6 +7,19 @@ export const FOCUS_DEFAULT = {
7
7
  INNER_FOCUS_STROKE_WIDTH: 2,
8
8
  /** Focus ring outer stroke width */
9
9
  OUTER_FOCUS_STROKE_WIDTH: 2,
10
- /** Gap between element and outlines */
10
+ /** Gap between element and outlines (only applies in bounding-box variant) */
11
11
  OUTLINES_GAP: 0,
12
+ /** Focus ring rendering variant */
13
+ VARIANT: 'adaptive',
12
14
  };
15
+ /**
16
+ * Helper function to get complete focus config with defaults applied
17
+ */
18
+ export const getFocusConfig = (focusConfig) => ({
19
+ gap: focusConfig?.gap ?? FOCUS_DEFAULT.OUTLINES_GAP,
20
+ innerColor: focusConfig?.innerColor ?? FOCUS_DEFAULT.FOCUS_INNER,
21
+ innerStrokeWidth: focusConfig?.innerStrokeWidth ?? FOCUS_DEFAULT.INNER_FOCUS_STROKE_WIDTH,
22
+ outlineColor: focusConfig?.outlineColor ?? FOCUS_DEFAULT.FOCUS_COLOR,
23
+ outlineStrokeWidth: focusConfig?.outlineStrokeWidth ?? FOCUS_DEFAULT.OUTER_FOCUS_STROKE_WIDTH,
24
+ variant: focusConfig?.variant ?? FOCUS_DEFAULT.VARIANT,
25
+ });
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Filters and extracts only aria-* and data-* attributes from a given object,
2
+ * Filters and extracts only aria-*, data-* and role attributes from a given object,
3
3
  * converting all values to strings for HTML compatibility.
4
4
  *
5
5
  * This function is useful for extracting accessibility and data attributes
@@ -10,8 +10,8 @@
10
10
  * - Keys can be strings representing attribute names.
11
11
  * - Values can be strings, booleans, numbers, or any other type.
12
12
  *
13
- * @returns A new object containing only aria-* and data-* attributes:
14
- * - Only includes attributes that start with `aria-` or `data-`.
13
+ * @returns A new object containing only aria-*, data-* and role attributes:
14
+ * - Only includes attributes that start with `aria-` or `data-` or are exactly `role`.
15
15
  * - All values are converted to strings for HTML compatibility.
16
16
  * - Null and undefined values are excluded.
17
17
  *
@@ -20,13 +20,14 @@
20
20
  * const props = {
21
21
  * 'aria-label': 'Button',
22
22
  * 'data-testid': 'my-button',
23
- * 'onClick': () => {},
23
+ * 'onClick': () => {},g
24
24
  * 'className': 'btn',
25
- * 'aria-hidden': true
25
+ * 'aria-hidden': true,
26
+ * 'role': 'button',
26
27
  * };
27
28
  *
28
29
  * const result = pickCustomAttributes(props);
29
- * // Result: { 'aria-label': 'Button', 'data-testid': 'my-button', 'aria-hidden': 'true' }
30
+ * // Result: { 'aria-label': 'Button', 'data-testid': 'my-button', 'aria-hidden': 'true', 'role': 'button' }
30
31
  * ```
31
32
  */
32
33
  export declare const pickCustomAttributes: (attributes?: Record<string, any>) => Record<string, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"pickCustomAttributes.d.ts","sourceRoot":"","sources":["../../../../src/utils/pickCustomAttributes/pickCustomAttributes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,oBAAoB,GAE/B,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC/B,MAAM,CAAC,MAAM,EAAE,MAAM,CAkBvB,CAAC"}
1
+ {"version":3,"file":"pickCustomAttributes.d.ts","sourceRoot":"","sources":["../../../../src/utils/pickCustomAttributes/pickCustomAttributes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,oBAAoB,GAE/B,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC/B,MAAM,CAAC,MAAM,EAAE,MAAM,CAkBvB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Filters and extracts only aria-* and data-* attributes from a given object,
2
+ * Filters and extracts only aria-*, data-* and role attributes from a given object,
3
3
  * converting all values to strings for HTML compatibility.
4
4
  *
5
5
  * This function is useful for extracting accessibility and data attributes
@@ -10,8 +10,8 @@
10
10
  * - Keys can be strings representing attribute names.
11
11
  * - Values can be strings, booleans, numbers, or any other type.
12
12
  *
13
- * @returns A new object containing only aria-* and data-* attributes:
14
- * - Only includes attributes that start with `aria-` or `data-`.
13
+ * @returns A new object containing only aria-*, data-* and role attributes:
14
+ * - Only includes attributes that start with `aria-` or `data-` or are exactly `role`.
15
15
  * - All values are converted to strings for HTML compatibility.
16
16
  * - Null and undefined values are excluded.
17
17
  *
@@ -20,13 +20,14 @@
20
20
  * const props = {
21
21
  * 'aria-label': 'Button',
22
22
  * 'data-testid': 'my-button',
23
- * 'onClick': () => {},
23
+ * 'onClick': () => {},g
24
24
  * 'className': 'btn',
25
- * 'aria-hidden': true
25
+ * 'aria-hidden': true,
26
+ * 'role': 'button',
26
27
  * };
27
28
  *
28
29
  * const result = pickCustomAttributes(props);
29
- * // Result: { 'aria-label': 'Button', 'data-testid': 'my-button', 'aria-hidden': 'true' }
30
+ * // Result: { 'aria-label': 'Button', 'data-testid': 'my-button', 'aria-hidden': 'true', 'role': 'button' }
30
31
  * ```
31
32
  */
32
33
  export const pickCustomAttributes = (
@@ -36,7 +37,7 @@ attributes) => {
36
37
  return {};
37
38
  }
38
39
  return Object.entries(attributes).reduce((acc, [key, value]) => {
39
- if ((key.startsWith('aria-') || key.startsWith('data-')) &&
40
+ if ((key.startsWith('aria-') || key.startsWith('data-') || key === 'role') &&
40
41
  value !== null &&
41
42
  value !== undefined) {
42
43
  acc[key] = String(value);