@pie-lib/graphing-solution-set 4.1.0-beta.7 → 5.0.0-next.35

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 (332) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +20 -0
  2. package/dist/autosize-input.d.ts +10 -0
  3. package/dist/autosize-input.js +66 -0
  4. package/dist/axis/arrow.d.ts +13 -0
  5. package/dist/axis/arrow.js +34 -0
  6. package/dist/axis/axes.d.ts +132 -0
  7. package/dist/axis/axes.js +214 -0
  8. package/dist/axis/index.d.ts +10 -0
  9. package/dist/bg.d.ts +51 -0
  10. package/dist/bg.js +44 -0
  11. package/dist/container/actions.d.ts +15 -0
  12. package/dist/container/actions.js +7 -0
  13. package/dist/container/index.d.ts +58 -0
  14. package/dist/container/index.js +48 -0
  15. package/dist/container/marks.d.ts +10 -0
  16. package/dist/container/marks.js +11 -0
  17. package/dist/container/middleware.d.ts +10 -0
  18. package/dist/container/middleware.js +4 -0
  19. package/dist/container/reducer.d.ts +14 -0
  20. package/dist/container/reducer.js +7 -0
  21. package/dist/coordinates-label.d.ts +50 -0
  22. package/dist/coordinates-label.js +46 -0
  23. package/dist/graph-with-controls.d.ts +85 -0
  24. package/dist/graph-with-controls.js +155 -0
  25. package/dist/graph.d.ts +119 -0
  26. package/dist/graph.js +221 -0
  27. package/dist/grid-setup.d.ts +27 -0
  28. package/dist/grid-setup.js +307 -0
  29. package/dist/grid.d.ts +43 -0
  30. package/dist/grid.js +59 -0
  31. package/dist/index.d.ts +14 -0
  32. package/dist/index.js +6 -0
  33. package/dist/labels.d.ts +73 -0
  34. package/dist/labels.js +134 -0
  35. package/dist/mark-label.d.ts +50 -0
  36. package/dist/mark-label.js +84 -0
  37. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/axis/Axis.js +67 -0
  38. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/axis/AxisRenderer.js +66 -0
  39. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/axis/Ticks.js +39 -0
  40. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/constants/orientation.js +9 -0
  41. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/utils/createPoint.js +14 -0
  42. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/utils/getAxisRangePaddingConfig.js +13 -0
  43. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/utils/getLabelTransform.js +16 -0
  44. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/utils/getTickFormatter.js +8 -0
  45. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/utils/getTickPosition.js +14 -0
  46. package/dist/node_modules/.bun/@visx_grid@4.0.0_d84c32d47042070f/node_modules/@visx/grid/esm/grids/Grid.js +43 -0
  47. package/dist/node_modules/.bun/@visx_grid@4.0.0_d84c32d47042070f/node_modules/@visx/grid/esm/grids/GridColumns.js +46 -0
  48. package/dist/node_modules/.bun/@visx_grid@4.0.0_d84c32d47042070f/node_modules/@visx/grid/esm/grids/GridRows.js +46 -0
  49. package/dist/node_modules/.bun/@visx_grid@4.0.0_d84c32d47042070f/node_modules/@visx/grid/esm/utils/getScaleBandwidth.js +6 -0
  50. package/dist/node_modules/.bun/@visx_group@4.0.0_d84c32d47042070f/node_modules/@visx/group/esm/Group.js +17 -0
  51. package/dist/node_modules/.bun/@visx_point@4.0.0/node_modules/@visx/point/esm/Point.js +20 -0
  52. package/dist/node_modules/.bun/@visx_scale@4.0.0/node_modules/@visx/scale/esm/utils/coerceNumber.js +10 -0
  53. package/dist/node_modules/.bun/@visx_scale@4.0.0/node_modules/@visx/scale/esm/utils/getTicks.js +7 -0
  54. package/dist/node_modules/.bun/@visx_scale@4.0.0/node_modules/@visx/scale/esm/utils/toString.js +6 -0
  55. package/dist/node_modules/.bun/@visx_shape@4.0.0_d84c32d47042070f/node_modules/@visx/shape/esm/shapes/Line.js +27 -0
  56. package/dist/node_modules/.bun/@visx_text@4.0.0_d84c32d47042070f/node_modules/@visx/text/esm/Text.js +27 -0
  57. package/dist/node_modules/.bun/@visx_text@4.0.0_d84c32d47042070f/node_modules/@visx/text/esm/hooks/useText.js +68 -0
  58. package/dist/node_modules/.bun/@visx_text@4.0.0_d84c32d47042070f/node_modules/@visx/text/esm/util/getStringWidth.js +19 -0
  59. package/dist/node_modules/.bun/@visx_text@4.0.0_d84c32d47042070f/node_modules/@visx/text/esm/util/memoize.js +13 -0
  60. package/dist/node_modules/.bun/balanced-match@0.4.2/node_modules/balanced-match/index.js +32 -0
  61. package/dist/node_modules/.bun/balanced-match@1.0.2/node_modules/balanced-match/index.js +33 -0
  62. package/dist/node_modules/.bun/classnames@2.5.1/node_modules/classnames/index.js +32 -0
  63. package/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js +16 -0
  64. package/dist/node_modules/.bun/invariant@2.2.4/node_modules/invariant/browser.js +28 -0
  65. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/formula_evaluator.js +37 -0
  66. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/lexer.js +509 -0
  67. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/math_function.js +108 -0
  68. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/postfix.js +31 -0
  69. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/postfix_evaluator.js +45 -0
  70. package/dist/node_modules/.bun/reduce-css-calc@1.3.0/node_modules/reduce-css-calc/index.js +49 -0
  71. package/dist/node_modules/.bun/reduce-function-call@1.0.3/node_modules/reduce-function-call/index.js +34 -0
  72. package/dist/node_modules/.bun/redux-undo@1.1.0/node_modules/redux-undo/dist/redux-undo.js +185 -0
  73. package/dist/node_modules/.bun/redux@5.0.1/node_modules/redux/dist/redux.js +198 -0
  74. package/dist/toggle-bar.d.ts +40 -0
  75. package/dist/tool-menu.d.ts +21 -0
  76. package/dist/tool-menu.js +188 -0
  77. package/dist/tools/index.d.ts +17 -0
  78. package/dist/tools/index.js +12 -0
  79. package/dist/tools/line/component.d.ts +113 -0
  80. package/dist/tools/line/component.js +58 -0
  81. package/dist/tools/line/index.d.ts +13 -0
  82. package/dist/tools/line/index.js +6 -0
  83. package/dist/tools/polygon/component.d.ts +117 -0
  84. package/dist/tools/polygon/component.js +194 -0
  85. package/dist/tools/polygon/index.d.ts +19 -0
  86. package/dist/tools/polygon/index.js +55 -0
  87. package/dist/tools/polygon/line.d.ts +125 -0
  88. package/dist/tools/polygon/polygon.d.ts +122 -0
  89. package/dist/tools/polygon/polygon.js +62 -0
  90. package/dist/tools/shared/arrow-head.d.ts +43 -0
  91. package/dist/tools/shared/arrow-head.js +37 -0
  92. package/dist/tools/shared/line/index.d.ts +240 -0
  93. package/dist/tools/shared/line/index.js +320 -0
  94. package/dist/tools/shared/line/line-path.d.ts +57 -0
  95. package/dist/tools/shared/line/with-root-edge.d.ts +143 -0
  96. package/dist/tools/shared/point/arrow-point.d.ts +57 -0
  97. package/dist/tools/shared/point/arrow-point.js +47 -0
  98. package/dist/tools/shared/point/arrow.d.ts +46 -0
  99. package/dist/tools/shared/point/arrow.js +36 -0
  100. package/dist/tools/shared/point/base-point.d.ts +50 -0
  101. package/dist/tools/shared/point/base-point.js +88 -0
  102. package/dist/tools/shared/point/index.d.ts +217 -0
  103. package/dist/tools/shared/point/index.js +51 -0
  104. package/dist/tools/shared/styles.d.ts +24 -0
  105. package/dist/tools/shared/styles.js +17 -0
  106. package/dist/tools/shared/types.d.ts +15 -0
  107. package/dist/tools/shared/types.js +10 -0
  108. package/dist/undo-redo.d.ts +20 -0
  109. package/dist/undo-redo.js +33 -0
  110. package/dist/use-debounce.d.ts +9 -0
  111. package/dist/use-debounce.js +13 -0
  112. package/dist/utils.d.ts +58 -0
  113. package/dist/utils.js +72 -0
  114. package/package.json +52 -42
  115. package/CHANGELOG.json +0 -1
  116. package/CHANGELOG.md +0 -449
  117. package/lib/__tests__/bg.test.js +0 -282
  118. package/lib/__tests__/bg.test.js.map +0 -1
  119. package/lib/__tests__/coordinates-label.test.js +0 -276
  120. package/lib/__tests__/coordinates-label.test.js.map +0 -1
  121. package/lib/__tests__/graph-with-controls.test.js +0 -256
  122. package/lib/__tests__/graph-with-controls.test.js.map +0 -1
  123. package/lib/__tests__/graph.test.js +0 -113
  124. package/lib/__tests__/graph.test.js.map +0 -1
  125. package/lib/__tests__/grid-setup.test.js +0 -729
  126. package/lib/__tests__/grid-setup.test.js.map +0 -1
  127. package/lib/__tests__/grid.test.js +0 -29
  128. package/lib/__tests__/grid.test.js.map +0 -1
  129. package/lib/__tests__/labels.test.js +0 -45
  130. package/lib/__tests__/labels.test.js.map +0 -1
  131. package/lib/__tests__/mark-label.test.js +0 -133
  132. package/lib/__tests__/mark-label.test.js.map +0 -1
  133. package/lib/__tests__/toggle-bar.test.js +0 -146
  134. package/lib/__tests__/toggle-bar.test.js.map +0 -1
  135. package/lib/__tests__/tool-menu.test.js +0 -540
  136. package/lib/__tests__/tool-menu.test.js.map +0 -1
  137. package/lib/__tests__/undo-redo.test.js +0 -31
  138. package/lib/__tests__/undo-redo.test.js.map +0 -1
  139. package/lib/__tests__/use-debounce.test.js +0 -24
  140. package/lib/__tests__/use-debounce.test.js.map +0 -1
  141. package/lib/__tests__/utils.js +0 -70
  142. package/lib/__tests__/utils.js.map +0 -1
  143. package/lib/__tests__/utils.test.js +0 -123
  144. package/lib/__tests__/utils.test.js.map +0 -1
  145. package/lib/axis/__tests__/arrow.test.js +0 -60
  146. package/lib/axis/__tests__/arrow.test.js.map +0 -1
  147. package/lib/axis/__tests__/axes.test.js +0 -160
  148. package/lib/axis/__tests__/axes.test.js.map +0 -1
  149. package/lib/axis/arrow.js +0 -79
  150. package/lib/axis/arrow.js.map +0 -1
  151. package/lib/axis/axes.js +0 -327
  152. package/lib/axis/axes.js.map +0 -1
  153. package/lib/axis/index.js +0 -21
  154. package/lib/axis/index.js.map +0 -1
  155. package/lib/bg.js +0 -114
  156. package/lib/bg.js.map +0 -1
  157. package/lib/container/__tests__/actions.test.js +0 -108
  158. package/lib/container/__tests__/actions.test.js.map +0 -1
  159. package/lib/container/__tests__/index.test.js +0 -346
  160. package/lib/container/__tests__/index.test.js.map +0 -1
  161. package/lib/container/__tests__/marks.test.js +0 -259
  162. package/lib/container/__tests__/marks.test.js.map +0 -1
  163. package/lib/container/__tests__/middleware.test.js +0 -244
  164. package/lib/container/__tests__/middleware.test.js.map +0 -1
  165. package/lib/container/__tests__/reducer.test.js +0 -450
  166. package/lib/container/__tests__/reducer.test.js.map +0 -1
  167. package/lib/container/actions.js +0 -18
  168. package/lib/container/actions.js.map +0 -1
  169. package/lib/container/index.js +0 -129
  170. package/lib/container/index.js.map +0 -1
  171. package/lib/container/marks.js +0 -22
  172. package/lib/container/marks.js.map +0 -1
  173. package/lib/container/middleware.js +0 -19
  174. package/lib/container/middleware.js.map +0 -1
  175. package/lib/container/reducer.js +0 -18
  176. package/lib/container/reducer.js.map +0 -1
  177. package/lib/coordinates-label.js +0 -77
  178. package/lib/coordinates-label.js.map +0 -1
  179. package/lib/graph-with-controls.js +0 -297
  180. package/lib/graph-with-controls.js.map +0 -1
  181. package/lib/graph.js +0 -353
  182. package/lib/graph.js.map +0 -1
  183. package/lib/grid-setup.js +0 -414
  184. package/lib/grid-setup.js.map +0 -1
  185. package/lib/grid.js +0 -131
  186. package/lib/grid.js.map +0 -1
  187. package/lib/index.js +0 -40
  188. package/lib/index.js.map +0 -1
  189. package/lib/labels.js +0 -199
  190. package/lib/labels.js.map +0 -1
  191. package/lib/mark-label.js +0 -159
  192. package/lib/mark-label.js.map +0 -1
  193. package/lib/toggle-bar.js +0 -248
  194. package/lib/toggle-bar.js.map +0 -1
  195. package/lib/tool-menu.js +0 -218
  196. package/lib/tool-menu.js.map +0 -1
  197. package/lib/tools/index.js +0 -24
  198. package/lib/tools/index.js.map +0 -1
  199. package/lib/tools/line/__tests__/component.test.js +0 -45
  200. package/lib/tools/line/__tests__/component.test.js.map +0 -1
  201. package/lib/tools/line/component.js +0 -92
  202. package/lib/tools/line/component.js.map +0 -1
  203. package/lib/tools/line/index.js +0 -11
  204. package/lib/tools/line/index.js.map +0 -1
  205. package/lib/tools/polygon/__tests__/component.test.js +0 -501
  206. package/lib/tools/polygon/__tests__/component.test.js.map +0 -1
  207. package/lib/tools/polygon/__tests__/index.test.js +0 -92
  208. package/lib/tools/polygon/__tests__/index.test.js.map +0 -1
  209. package/lib/tools/polygon/__tests__/line.test.js +0 -30
  210. package/lib/tools/polygon/__tests__/line.test.js.map +0 -1
  211. package/lib/tools/polygon/__tests__/polygon.test.js +0 -61
  212. package/lib/tools/polygon/__tests__/polygon.test.js.map +0 -1
  213. package/lib/tools/polygon/component.js +0 -358
  214. package/lib/tools/polygon/component.js.map +0 -1
  215. package/lib/tools/polygon/index.js +0 -89
  216. package/lib/tools/polygon/index.js.map +0 -1
  217. package/lib/tools/polygon/line.js +0 -114
  218. package/lib/tools/polygon/line.js.map +0 -1
  219. package/lib/tools/polygon/polygon.js +0 -128
  220. package/lib/tools/polygon/polygon.js.map +0 -1
  221. package/lib/tools/shared/__tests__/arrow-head.test.js +0 -45
  222. package/lib/tools/shared/__tests__/arrow-head.test.js.map +0 -1
  223. package/lib/tools/shared/arrow-head.js +0 -62
  224. package/lib/tools/shared/arrow-head.js.map +0 -1
  225. package/lib/tools/shared/line/__tests__/index.test.js +0 -725
  226. package/lib/tools/shared/line/__tests__/index.test.js.map +0 -1
  227. package/lib/tools/shared/line/__tests__/line-path.test.js +0 -64
  228. package/lib/tools/shared/line/__tests__/line-path.test.js.map +0 -1
  229. package/lib/tools/shared/line/__tests__/with-root-edge.test.js +0 -618
  230. package/lib/tools/shared/line/__tests__/with-root-edge.test.js.map +0 -1
  231. package/lib/tools/shared/line/index.js +0 -539
  232. package/lib/tools/shared/line/index.js.map +0 -1
  233. package/lib/tools/shared/line/line-path.js +0 -121
  234. package/lib/tools/shared/line/line-path.js.map +0 -1
  235. package/lib/tools/shared/line/with-root-edge.js +0 -121
  236. package/lib/tools/shared/line/with-root-edge.js.map +0 -1
  237. package/lib/tools/shared/point/__tests__/arrow-point.test.js +0 -127
  238. package/lib/tools/shared/point/__tests__/arrow-point.test.js.map +0 -1
  239. package/lib/tools/shared/point/__tests__/arrow.test.js +0 -619
  240. package/lib/tools/shared/point/__tests__/arrow.test.js.map +0 -1
  241. package/lib/tools/shared/point/__tests__/base-point.test.js +0 -122
  242. package/lib/tools/shared/point/__tests__/base-point.test.js.map +0 -1
  243. package/lib/tools/shared/point/arrow-point.js +0 -86
  244. package/lib/tools/shared/point/arrow-point.js.map +0 -1
  245. package/lib/tools/shared/point/arrow.js +0 -70
  246. package/lib/tools/shared/point/arrow.js.map +0 -1
  247. package/lib/tools/shared/point/base-point.js +0 -137
  248. package/lib/tools/shared/point/base-point.js.map +0 -1
  249. package/lib/tools/shared/point/index.js +0 -80
  250. package/lib/tools/shared/point/index.js.map +0 -1
  251. package/lib/tools/shared/styles.js +0 -26
  252. package/lib/tools/shared/styles.js.map +0 -1
  253. package/lib/tools/shared/types.js +0 -15
  254. package/lib/tools/shared/types.js.map +0 -1
  255. package/lib/undo-redo.js +0 -67
  256. package/lib/undo-redo.js.map +0 -1
  257. package/lib/use-debounce.js +0 -25
  258. package/lib/use-debounce.js.map +0 -1
  259. package/lib/utils.js +0 -235
  260. package/lib/utils.js.map +0 -1
  261. package/src/__tests__/bg.test.jsx +0 -250
  262. package/src/__tests__/coordinates-label.test.jsx +0 -243
  263. package/src/__tests__/graph-with-controls.test.jsx +0 -184
  264. package/src/__tests__/graph.test.jsx +0 -93
  265. package/src/__tests__/grid-setup.test.jsx +0 -645
  266. package/src/__tests__/grid.test.jsx +0 -23
  267. package/src/__tests__/labels.test.jsx +0 -41
  268. package/src/__tests__/mark-label.test.jsx +0 -66
  269. package/src/__tests__/toggle-bar.test.jsx +0 -106
  270. package/src/__tests__/tool-menu.test.jsx +0 -453
  271. package/src/__tests__/undo-redo.test.jsx +0 -26
  272. package/src/__tests__/use-debounce.test.js +0 -21
  273. package/src/__tests__/utils.js +0 -41
  274. package/src/__tests__/utils.test.js +0 -105
  275. package/src/axis/__tests__/arrow.test.jsx +0 -43
  276. package/src/axis/__tests__/axes.test.jsx +0 -182
  277. package/src/axis/arrow.jsx +0 -57
  278. package/src/axis/axes.jsx +0 -284
  279. package/src/axis/index.js +0 -3
  280. package/src/bg.jsx +0 -96
  281. package/src/container/__tests__/actions.test.js +0 -105
  282. package/src/container/__tests__/index.test.jsx +0 -227
  283. package/src/container/__tests__/marks.test.js +0 -172
  284. package/src/container/__tests__/middleware.test.js +0 -235
  285. package/src/container/__tests__/reducer.test.js +0 -324
  286. package/src/container/actions.js +0 -8
  287. package/src/container/index.jsx +0 -93
  288. package/src/container/marks.js +0 -14
  289. package/src/container/middleware.js +0 -7
  290. package/src/container/reducer.js +0 -5
  291. package/src/coordinates-label.jsx +0 -62
  292. package/src/graph-with-controls.jsx +0 -242
  293. package/src/graph.jsx +0 -333
  294. package/src/grid-setup.jsx +0 -432
  295. package/src/grid.jsx +0 -133
  296. package/src/index.js +0 -7
  297. package/src/labels.jsx +0 -173
  298. package/src/mark-label.jsx +0 -125
  299. package/src/toggle-bar.jsx +0 -221
  300. package/src/tool-menu.jsx +0 -235
  301. package/src/tools/index.js +0 -8
  302. package/src/tools/line/__tests__/component.test.jsx +0 -37
  303. package/src/tools/line/component.jsx +0 -77
  304. package/src/tools/line/index.js +0 -4
  305. package/src/tools/polygon/__tests__/component.test.jsx +0 -487
  306. package/src/tools/polygon/__tests__/index.test.js +0 -65
  307. package/src/tools/polygon/__tests__/line.test.jsx +0 -23
  308. package/src/tools/polygon/__tests__/polygon.test.jsx +0 -44
  309. package/src/tools/polygon/component.jsx +0 -324
  310. package/src/tools/polygon/index.js +0 -52
  311. package/src/tools/polygon/line.jsx +0 -80
  312. package/src/tools/polygon/polygon.jsx +0 -93
  313. package/src/tools/shared/__tests__/arrow-head.test.jsx +0 -33
  314. package/src/tools/shared/arrow-head.jsx +0 -46
  315. package/src/tools/shared/line/__tests__/index.test.jsx +0 -553
  316. package/src/tools/shared/line/__tests__/line-path.test.jsx +0 -56
  317. package/src/tools/shared/line/__tests__/with-root-edge.test.jsx +0 -488
  318. package/src/tools/shared/line/index.jsx +0 -471
  319. package/src/tools/shared/line/line-path.jsx +0 -85
  320. package/src/tools/shared/line/with-root-edge.jsx +0 -97
  321. package/src/tools/shared/point/__tests__/arrow-point.test.jsx +0 -91
  322. package/src/tools/shared/point/__tests__/arrow.test.jsx +0 -469
  323. package/src/tools/shared/point/__tests__/base-point.test.jsx +0 -87
  324. package/src/tools/shared/point/arrow-point.jsx +0 -60
  325. package/src/tools/shared/point/arrow.jsx +0 -40
  326. package/src/tools/shared/point/base-point.jsx +0 -113
  327. package/src/tools/shared/point/index.jsx +0 -58
  328. package/src/tools/shared/styles.js +0 -20
  329. package/src/tools/shared/types.js +0 -8
  330. package/src/undo-redo.jsx +0 -37
  331. package/src/use-debounce.js +0 -13
  332. package/src/utils.js +0 -230
@@ -1,91 +0,0 @@
1
- import { render } from '@pie-lib/test-utils';
2
- import React from 'react';
3
- import { ArrowPoint } from '../index';
4
- import { graphProps } from '../../../../__tests__/utils';
5
- import { bounds } from '../../../../utils';
6
- import { gridDraggable, utils } from '@pie-lib/plot';
7
-
8
- const { xy } = utils;
9
- jest.mock('../../../../utils', () => {
10
- const { point, getAngleDeg, arrowDimensions } = jest.requireActual('../../../../utils');
11
- return {
12
- bounds: jest.fn(),
13
- point,
14
- getAngleDeg,
15
- arrowDimensions,
16
- };
17
- });
18
-
19
- jest.mock('@pie-lib/plot', () => {
20
- const { types, utils } = jest.requireActual('@pie-lib/plot');
21
- return {
22
- gridDraggable: jest.fn((opts) => (Comp) => Comp),
23
- types,
24
- utils,
25
- };
26
- });
27
-
28
- describe('ArrowPoint', () => {
29
- let onChange = jest.fn();
30
-
31
- const renderComponent = (extras) => {
32
- const defaults = {
33
- classes: {},
34
- className: 'className',
35
- onChange,
36
- graphProps: graphProps(),
37
- from: xy(0, 0),
38
- to: xy(1, 1),
39
- x: 0,
40
- y: 0,
41
- };
42
- const props = { ...defaults, ...extras };
43
- return render(<ArrowPoint {...props} />);
44
- };
45
-
46
- describe('rendering', () => {
47
- it('renders without crashing', () => {
48
- const { container } = renderComponent();
49
- expect(container.firstChild).toBeInTheDocument();
50
- });
51
- });
52
- describe('gridDraggable options', () => {
53
- let opts;
54
- let domain;
55
- let range;
56
- beforeEach(() => {
57
- domain = {
58
- min: 0,
59
- max: 1,
60
- step: 1,
61
- };
62
- range = {
63
- min: 0,
64
- max: 1,
65
- step: 1,
66
- };
67
- renderComponent();
68
- opts = gridDraggable.mock.calls[gridDraggable.mock.calls.length - 1][0];
69
- });
70
-
71
- describe('bounds', () => {
72
- it('calls utils.bounds with area', () => {
73
- const result = opts.bounds({ x: 0, y: 0 }, { domain, range });
74
- expect(bounds).toHaveBeenCalledWith({ left: 0, top: 0, bottom: 0, right: 0 }, domain, range);
75
- });
76
- });
77
- describe('anchorPoint', () => {
78
- it('returns x/y', () => {
79
- const result = opts.anchorPoint({ x: 0, y: 0 });
80
- expect(result).toEqual({ x: 0, y: 0 });
81
- });
82
- });
83
-
84
- describe('fromDelta', () => {
85
- it('returns a new point from the x/y + delta', () => {
86
- const result = opts.fromDelta({ x: -1, y: 0 }, { x: 1, y: 3 });
87
- expect(result).toEqual({ x: 0, y: 3 });
88
- });
89
- });
90
- });
91
- });
@@ -1,469 +0,0 @@
1
- import { render } from '@pie-lib/test-utils';
2
- import React from 'react';
3
- import Arrow from '../arrow';
4
- import { graphProps } from '../../../../__tests__/utils';
5
- import { thinnerShapesNeeded } from '../../../../utils';
6
-
7
- jest.mock('../../../../utils', () => ({
8
- ...jest.requireActual('../../../../utils'),
9
- thinnerShapesNeeded: jest.fn(() => false),
10
- }));
11
-
12
- describe('Arrow', () => {
13
- let onChange = jest.fn();
14
-
15
- const renderComponent = (extras) => {
16
- const defaults = {
17
- classes: {},
18
- className: 'arrow-class',
19
- onChange,
20
- graphProps: graphProps(),
21
- x: 5,
22
- y: 10,
23
- angle: 45,
24
- };
25
- const props = { ...defaults, ...extras };
26
- return render(<Arrow {...props} />);
27
- };
28
-
29
- beforeEach(() => {
30
- onChange = jest.fn();
31
- thinnerShapesNeeded.mockReturnValue(false);
32
- });
33
-
34
- describe('rendering', () => {
35
- it('renders without crashing', () => {
36
- const { container } = renderComponent();
37
- expect(container.firstChild).toBeInTheDocument();
38
- });
39
-
40
- it('renders a g element with correct class names', () => {
41
- const { container } = renderComponent({
42
- classes: { point: 'point-class' },
43
- className: 'custom-class',
44
- });
45
- const gElement = container.querySelector('g');
46
- expect(gElement).toBeInTheDocument();
47
- expect(gElement).toHaveClass('point-class');
48
- expect(gElement).toHaveClass('custom-class');
49
- });
50
-
51
- it('renders ArrowHead component', () => {
52
- const { container } = renderComponent();
53
- const polygon = container.querySelector('polygon');
54
- expect(polygon).toBeInTheDocument();
55
- });
56
-
57
- it('applies disabled class when disabled is true', () => {
58
- const { container } = renderComponent({
59
- classes: { point: 'point-class', disabled: 'disabled-class' },
60
- disabled: true,
61
- });
62
- const gElement = container.querySelector('g');
63
- expect(gElement).toHaveClass('disabled-class');
64
- });
65
-
66
- it('does not apply disabled class when disabled is false', () => {
67
- const { container } = renderComponent({
68
- classes: { point: 'point-class', disabled: 'disabled-class' },
69
- disabled: false,
70
- });
71
- const gElement = container.querySelector('g');
72
- expect(gElement).not.toHaveClass('disabled-class');
73
- });
74
-
75
- it('applies correctness class when provided', () => {
76
- const { container } = renderComponent({
77
- classes: { point: 'point-class', correct: 'correct-class' },
78
- correctness: 'correct',
79
- });
80
- const gElement = container.querySelector('g');
81
- expect(gElement).toHaveClass('correct-class');
82
- });
83
-
84
- it('applies incorrect correctness class', () => {
85
- const { container } = renderComponent({
86
- classes: { point: 'point-class', incorrect: 'incorrect-class' },
87
- correctness: 'incorrect',
88
- });
89
- const gElement = container.querySelector('g');
90
- expect(gElement).toHaveClass('incorrect-class');
91
- });
92
- });
93
-
94
- describe('size calculation', () => {
95
- it('uses size 14 when thinnerShapesNeeded returns false', () => {
96
- thinnerShapesNeeded.mockReturnValue(false);
97
- const { container } = renderComponent({ x: 0, y: 0 });
98
- const polygon = container.querySelector('polygon');
99
-
100
- // Expected points: "0,0 -14,-7 -14,7"
101
- expect(polygon).toHaveAttribute('points');
102
- const points = polygon.getAttribute('points');
103
- expect(points).toContain('-14');
104
- });
105
-
106
- it('uses size 12 when thinnerShapesNeeded returns true', () => {
107
- thinnerShapesNeeded.mockReturnValue(true);
108
- const { container } = renderComponent({ x: 0, y: 0 });
109
- const polygon = container.querySelector('polygon');
110
-
111
- // Expected points: "0,0 -12,-6 -12,6"
112
- expect(polygon).toHaveAttribute('points');
113
- const points = polygon.getAttribute('points');
114
- expect(points).toContain('-12');
115
- });
116
-
117
- it('calls thinnerShapesNeeded with graphProps', () => {
118
- const gp = graphProps();
119
- renderComponent({ graphProps: gp });
120
- expect(thinnerShapesNeeded).toHaveBeenCalledWith(gp);
121
- });
122
- });
123
-
124
- describe('coordinate scaling', () => {
125
- it('scales x and y coordinates using graphProps.scale', () => {
126
- const mockScale = {
127
- x: jest.fn((n) => n * 10),
128
- y: jest.fn((n) => n * 20),
129
- };
130
- const gp = {
131
- ...graphProps(),
132
- scale: mockScale,
133
- };
134
-
135
- renderComponent({ x: 5, y: 10, graphProps: gp });
136
-
137
- expect(mockScale.x).toHaveBeenCalledWith(5);
138
- expect(mockScale.y).toHaveBeenCalledWith(10);
139
- });
140
-
141
- it('renders arrow with scaled coordinates', () => {
142
- const mockScale = {
143
- x: jest.fn((n) => n * 2),
144
- y: jest.fn((n) => n * 3),
145
- };
146
- const gp = {
147
- ...graphProps(),
148
- scale: mockScale,
149
- };
150
-
151
- const { container } = renderComponent({ x: 5, y: 10, graphProps: gp, angle: 0 });
152
- const polygon = container.querySelector('polygon');
153
-
154
- // scaledX = 5 * 2 = 10, scaledY = 10 * 3 = 30
155
- // Expected points: "10,30 -4,23 -4,37" (with size 14)
156
- const points = polygon.getAttribute('points');
157
- expect(points).toContain('10');
158
- expect(points).toContain('30');
159
- });
160
- });
161
-
162
- describe('angle rotation', () => {
163
- it('applies rotation transform with negative angle', () => {
164
- const { container } = renderComponent({ x: 5, y: 10, angle: 45 });
165
- const polygon = container.querySelector('polygon');
166
- const transform = polygon.getAttribute('transform');
167
-
168
- // Angle should be negated: rotate(-45, 5, 10)
169
- expect(transform).toContain('rotate(-45');
170
- expect(transform).toContain('5');
171
- expect(transform).toContain('10');
172
- });
173
-
174
- it('handles zero angle', () => {
175
- const { container } = renderComponent({ x: 3, y: 7, angle: 0 });
176
- const polygon = container.querySelector('polygon');
177
- const transform = polygon.getAttribute('transform');
178
-
179
- // will convert -0 to 0
180
- expect(transform).toMatch(/rotate\((-)?0/);
181
- expect(transform).toContain('3');
182
- expect(transform).toContain('7');
183
- });
184
-
185
- it('handles negative angle', () => {
186
- const { container } = renderComponent({ x: 2, y: 4, angle: -30 });
187
- const polygon = container.querySelector('polygon');
188
- const transform = polygon.getAttribute('transform');
189
-
190
- // -(-30) = 30
191
- expect(transform).toContain('rotate(30');
192
- expect(transform).toContain('2');
193
- expect(transform).toContain('4');
194
- });
195
-
196
- it('handles 360 degree angle', () => {
197
- const { container } = renderComponent({ x: 1, y: 1, angle: 360 });
198
- const polygon = container.querySelector('polygon');
199
- const transform = polygon.getAttribute('transform');
200
-
201
- expect(transform).toContain('rotate(-360');
202
- });
203
- });
204
-
205
- describe('arrow points calculation', () => {
206
- it('calculates correct points for arrow head', () => {
207
- thinnerShapesNeeded.mockReturnValue(false);
208
- const { container } = renderComponent({ x: 0, y: 0, angle: 0 });
209
- const polygon = container.querySelector('polygon');
210
-
211
- // size = 14
212
- // points = "0,0 -14,-7 -14, 7" (note the space after comma in the template literal)
213
- const points = polygon.getAttribute('points');
214
- expect(points).toContain('0,0');
215
- expect(points).toContain('-14,-7');
216
- expect(points).toMatch(/-14,\s*7/);
217
- });
218
-
219
- it('calculates points with scaled coordinates', () => {
220
- thinnerShapesNeeded.mockReturnValue(false);
221
- const mockScale = {
222
- x: jest.fn((n) => n),
223
- y: jest.fn((n) => n),
224
- };
225
- const gp = {
226
- ...graphProps(),
227
- scale: mockScale,
228
- };
229
-
230
- const { container } = renderComponent({ x: 10, y: 20, graphProps: gp });
231
- const polygon = container.querySelector('polygon');
232
-
233
- // scaledX = 10, scaledY = 20, size = 14
234
- // points = "10,20 -4,13 -4, 27" (note the space after comma in the template literal)
235
- const points = polygon.getAttribute('points');
236
- expect(points).toContain('10,20');
237
- expect(points).toContain('-4,13');
238
- expect(points).toMatch(/-4,\s*27/);
239
- });
240
- });
241
-
242
- describe('props handling', () => {
243
- it('passes through additional props to g element', () => {
244
- const { container } = renderComponent({
245
- 'data-test': 'arrow-test',
246
- role: 'graphics-symbol',
247
- });
248
- const gElement = container.querySelector('g');
249
- expect(gElement).toHaveAttribute('data-test', 'arrow-test');
250
- expect(gElement).toHaveAttribute('role', 'graphics-symbol');
251
- });
252
-
253
- it('excludes filtered props from g element', () => {
254
- const { container } = renderComponent({
255
- x: 5,
256
- y: 10,
257
- angle: 45,
258
- disabled: false,
259
- correctness: 'correct',
260
- graphProps: graphProps(),
261
- });
262
- const gElement = container.querySelector('g');
263
-
264
- // These props should not be passed to the g element
265
- expect(gElement).not.toHaveAttribute('x');
266
- expect(gElement).not.toHaveAttribute('y');
267
- expect(gElement).not.toHaveAttribute('angle');
268
- expect(gElement).not.toHaveAttribute('disabled');
269
- expect(gElement).not.toHaveAttribute('correctness');
270
- expect(gElement).not.toHaveAttribute('graphProps');
271
- });
272
- });
273
-
274
- describe('edge cases', () => {
275
- it('handles zero coordinates', () => {
276
- const { container } = renderComponent({ x: 0, y: 0, angle: 0 });
277
- const polygon = container.querySelector('polygon');
278
- expect(polygon).toBeInTheDocument();
279
- expect(polygon.getAttribute('points')).toBeTruthy();
280
- expect(polygon.getAttribute('transform')).toBeTruthy();
281
- });
282
-
283
- it('handles negative coordinates', () => {
284
- const { container } = renderComponent({ x: -5, y: -10, angle: 0 });
285
- const polygon = container.querySelector('polygon');
286
- expect(polygon).toBeInTheDocument();
287
- expect(polygon.getAttribute('points')).toBeTruthy();
288
- expect(polygon.getAttribute('transform')).toBeTruthy();
289
- });
290
-
291
- it('handles large coordinates', () => {
292
- const { container } = renderComponent({ x: 1000, y: 2000, angle: 0 });
293
- const polygon = container.querySelector('polygon');
294
- expect(polygon).toBeInTheDocument();
295
- });
296
-
297
- it('handles fractional coordinates', () => {
298
- const { container } = renderComponent({ x: 3.5, y: 7.25, angle: 22.5 });
299
- const polygon = container.querySelector('polygon');
300
- expect(polygon).toBeInTheDocument();
301
- expect(polygon.getAttribute('transform')).toContain('rotate(-22.5');
302
- });
303
-
304
- it('renders with empty classes prop', () => {
305
- const { container } = render(<Arrow x={5} y={10} angle={45} graphProps={graphProps()} classes={{}} />);
306
- const gElement = container.querySelector('g');
307
- expect(gElement).toBeInTheDocument();
308
- });
309
-
310
- it('renders without className prop', () => {
311
- const { container } = render(<Arrow x={5} y={10} angle={45} graphProps={graphProps()} classes={{}} />);
312
- const gElement = container.querySelector('g');
313
- expect(gElement).toBeInTheDocument();
314
- });
315
- });
316
-
317
- describe('graphProps integration', () => {
318
- it('works with different domain and range values', () => {
319
- const gp = graphProps(-10, 10, -20, 20);
320
- const { container } = renderComponent({ graphProps: gp });
321
- expect(container.querySelector('polygon')).toBeInTheDocument();
322
- expect(thinnerShapesNeeded).toHaveBeenCalledWith(gp);
323
- });
324
-
325
- it('works with custom size in graphProps', () => {
326
- const gp = {
327
- ...graphProps(),
328
- size: {
329
- width: 800,
330
- height: 600,
331
- },
332
- };
333
- const { container } = renderComponent({ graphProps: gp });
334
- expect(container.querySelector('polygon')).toBeInTheDocument();
335
- });
336
-
337
- it('handles graphProps with small step values', () => {
338
- const gp = {
339
- ...graphProps(),
340
- domain: { min: 0, max: 10, step: 0.1 },
341
- range: { min: 0, max: 10, step: 0.1 },
342
- };
343
- thinnerShapesNeeded.mockReturnValue(true);
344
- const { container } = renderComponent({ graphProps: gp });
345
- const polygon = container.querySelector('polygon');
346
-
347
- // Should use size 12 for thinner shapes
348
- expect(polygon).toBeInTheDocument();
349
- expect(thinnerShapesNeeded).toHaveBeenCalledWith(gp);
350
- });
351
- });
352
-
353
- describe('multiple correctness states', () => {
354
- it('handles partial correctness', () => {
355
- const { container } = renderComponent({
356
- classes: { point: 'point-class', partial: 'partial-class' },
357
- correctness: 'partial',
358
- });
359
- const gElement = container.querySelector('g');
360
- expect(gElement).toHaveClass('partial-class');
361
- });
362
-
363
- it('handles undefined correctness', () => {
364
- const { container } = renderComponent({
365
- classes: { point: 'point-class' },
366
- correctness: undefined,
367
- });
368
- const gElement = container.querySelector('g');
369
- expect(gElement).toHaveClass('point-class');
370
- });
371
-
372
- it('handles null correctness', () => {
373
- const { container } = renderComponent({
374
- classes: { point: 'point-class' },
375
- correctness: null,
376
- });
377
- const gElement = container.querySelector('g');
378
- expect(gElement).toHaveClass('point-class');
379
- });
380
- });
381
-
382
- describe('combined states', () => {
383
- it('handles disabled and correct states together', () => {
384
- const { container } = renderComponent({
385
- classes: {
386
- point: 'point-class',
387
- disabled: 'disabled-class',
388
- correct: 'correct-class',
389
- },
390
- disabled: true,
391
- correctness: 'correct',
392
- });
393
- const gElement = container.querySelector('g');
394
- expect(gElement).toHaveClass('point-class');
395
- expect(gElement).toHaveClass('disabled-class');
396
- expect(gElement).toHaveClass('correct-class');
397
- });
398
-
399
- it('handles disabled and incorrect states together', () => {
400
- const { container } = renderComponent({
401
- classes: {
402
- point: 'point-class',
403
- disabled: 'disabled-class',
404
- incorrect: 'incorrect-class',
405
- },
406
- disabled: true,
407
- correctness: 'incorrect',
408
- });
409
- const gElement = container.querySelector('g');
410
- expect(gElement).toHaveClass('point-class');
411
- expect(gElement).toHaveClass('disabled-class');
412
- expect(gElement).toHaveClass('incorrect-class');
413
- });
414
- });
415
-
416
- describe('re-rendering', () => {
417
- it('updates when x coordinate changes', () => {
418
- const { container, rerender } = renderComponent({ x: 5, y: 10, angle: 0 });
419
- let polygon = container.querySelector('polygon');
420
- const initialPoints = polygon.getAttribute('points');
421
-
422
- rerender(<Arrow x={15} y={10} angle={0} graphProps={graphProps()} classes={{}} className="arrow-class" />);
423
-
424
- polygon = container.querySelector('polygon');
425
- const newPoints = polygon.getAttribute('points');
426
- expect(newPoints).not.toBe(initialPoints);
427
- });
428
-
429
- it('updates when y coordinate changes', () => {
430
- const { container, rerender } = renderComponent({ x: 5, y: 10, angle: 0 });
431
- let polygon = container.querySelector('polygon');
432
- const initialPoints = polygon.getAttribute('points');
433
-
434
- rerender(<Arrow x={5} y={20} angle={0} graphProps={graphProps()} classes={{}} className="arrow-class" />);
435
-
436
- polygon = container.querySelector('polygon');
437
- const newPoints = polygon.getAttribute('points');
438
- expect(newPoints).not.toBe(initialPoints);
439
- });
440
-
441
- it('updates when angle changes', () => {
442
- const { container, rerender } = renderComponent({ x: 5, y: 10, angle: 0 });
443
- let polygon = container.querySelector('polygon');
444
- const initialTransform = polygon.getAttribute('transform');
445
-
446
- rerender(<Arrow x={5} y={10} angle={90} graphProps={graphProps()} classes={{}} className="arrow-class" />);
447
-
448
- polygon = container.querySelector('polygon');
449
- const newTransform = polygon.getAttribute('transform');
450
- expect(newTransform).not.toBe(initialTransform);
451
- expect(newTransform).toContain('rotate(-90');
452
- });
453
-
454
- it('updates when thinnerShapesNeeded result changes', () => {
455
- thinnerShapesNeeded.mockReturnValue(false);
456
- const { container, rerender } = renderComponent({ x: 0, y: 0, angle: 0 });
457
- let polygon = container.querySelector('polygon');
458
- const initialPoints = polygon.getAttribute('points');
459
-
460
- thinnerShapesNeeded.mockReturnValue(true);
461
- rerender(<Arrow x={0} y={0} angle={0} graphProps={graphProps()} classes={{}} className="arrow-class" />);
462
-
463
- polygon = container.querySelector('polygon');
464
- const newPoints = polygon.getAttribute('points');
465
- // Points should change due to size change (14 vs 12)
466
- expect(newPoints).not.toBe(initialPoints);
467
- });
468
- });
469
- });
@@ -1,87 +0,0 @@
1
- import { render } from '@pie-lib/test-utils';
2
- import React from 'react';
3
- import { BasePoint } from '../index';
4
- import { gridDraggable } from '@pie-lib/plot';
5
- import { graphProps } from '../../../../__tests__/utils';
6
- import { bounds } from '../../../../utils';
7
-
8
- jest.mock('../../../../utils', () => {
9
- const { point, thinnerShapesNeeded } = jest.requireActual('../../../../utils');
10
- return {
11
- bounds: jest.fn(),
12
- point,
13
- thinnerShapesNeeded,
14
- };
15
- });
16
-
17
- jest.mock('@pie-lib/plot', () => {
18
- const { types, utils } = jest.requireActual('@pie-lib/plot');
19
- return {
20
- gridDraggable: jest.fn((opts) => (Comp) => Comp),
21
- types,
22
- utils,
23
- };
24
- });
25
-
26
- describe('BasePoint', () => {
27
- let onChange = jest.fn();
28
-
29
- const renderComponent = (extras) => {
30
- const defaults = {
31
- classes: {},
32
- className: 'className',
33
- onChange,
34
- graphProps: graphProps(),
35
- x: 0,
36
- y: 0,
37
- };
38
- const props = { ...defaults, ...extras };
39
- return render(<BasePoint {...props} />);
40
- };
41
-
42
- describe('rendering', () => {
43
- it('renders without crashing', () => {
44
- const { container } = renderComponent();
45
- expect(container.firstChild).toBeInTheDocument();
46
- });
47
- });
48
- describe('gridDraggable options', () => {
49
- let opts;
50
- let domain;
51
- let range;
52
- beforeEach(() => {
53
- domain = {
54
- min: 0,
55
- max: 1,
56
- step: 1,
57
- };
58
- range = {
59
- min: 0,
60
- max: 1,
61
- step: 1,
62
- };
63
- renderComponent();
64
- opts = gridDraggable.mock.calls[gridDraggable.mock.calls.length - 1][0];
65
- });
66
-
67
- describe('bounds', () => {
68
- it('calls utils.bounds with area', () => {
69
- const result = opts.bounds({ x: 0, y: 0 }, { domain, range });
70
- expect(bounds).toHaveBeenCalledWith({ left: 0, top: 0, bottom: 0, right: 0 }, domain, range);
71
- });
72
- });
73
- describe('anchorPoint', () => {
74
- it('returns x/y', () => {
75
- const result = opts.anchorPoint({ x: 0, y: 0 });
76
- expect(result).toEqual({ x: 0, y: 0 });
77
- });
78
- });
79
-
80
- describe('fromDelta', () => {
81
- it('returns a new point from the x/y + delta', () => {
82
- const result = opts.fromDelta({ x: -1, y: 0 }, { x: 1, y: 3 });
83
- expect(result).toEqual({ x: 0, y: 3 });
84
- });
85
- });
86
- });
87
- });