@pie-lib/graphing 4.1.0-beta.7 → 5.0.0-next.36

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 (505) 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 +88 -0
  24. package/dist/graph-with-controls.js +156 -0
  25. package/dist/graph.d.ts +126 -0
  26. package/dist/graph.js +209 -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 +15 -0
  32. package/dist/index.js +7 -0
  33. package/dist/key-legend.d.ts +21 -0
  34. package/dist/key-legend.js +231 -0
  35. package/dist/label-svg-icon.d.ts +18 -0
  36. package/dist/label-svg-icon.js +42 -0
  37. package/dist/labels.d.ts +37 -0
  38. package/dist/labels.js +152 -0
  39. package/dist/mark-label.d.ts +60 -0
  40. package/dist/mark-label.js +222 -0
  41. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/axis/Axis.js +67 -0
  42. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/axis/AxisRenderer.js +66 -0
  43. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/axis/Ticks.js +39 -0
  44. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/constants/orientation.js +9 -0
  45. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/utils/createPoint.js +14 -0
  46. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/utils/getAxisRangePaddingConfig.js +13 -0
  47. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/utils/getLabelTransform.js +16 -0
  48. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/utils/getTickFormatter.js +8 -0
  49. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/utils/getTickPosition.js +14 -0
  50. package/dist/node_modules/.bun/@visx_grid@4.0.0_d84c32d47042070f/node_modules/@visx/grid/esm/grids/Grid.js +43 -0
  51. package/dist/node_modules/.bun/@visx_grid@4.0.0_d84c32d47042070f/node_modules/@visx/grid/esm/grids/GridColumns.js +46 -0
  52. package/dist/node_modules/.bun/@visx_grid@4.0.0_d84c32d47042070f/node_modules/@visx/grid/esm/grids/GridRows.js +46 -0
  53. package/dist/node_modules/.bun/@visx_grid@4.0.0_d84c32d47042070f/node_modules/@visx/grid/esm/utils/getScaleBandwidth.js +6 -0
  54. package/dist/node_modules/.bun/@visx_group@4.0.0_d84c32d47042070f/node_modules/@visx/group/esm/Group.js +17 -0
  55. package/dist/node_modules/.bun/@visx_point@4.0.0/node_modules/@visx/point/esm/Point.js +20 -0
  56. package/dist/node_modules/.bun/@visx_scale@4.0.0/node_modules/@visx/scale/esm/utils/coerceNumber.js +10 -0
  57. package/dist/node_modules/.bun/@visx_scale@4.0.0/node_modules/@visx/scale/esm/utils/getTicks.js +7 -0
  58. package/dist/node_modules/.bun/@visx_scale@4.0.0/node_modules/@visx/scale/esm/utils/toString.js +6 -0
  59. package/dist/node_modules/.bun/@visx_shape@4.0.0_d84c32d47042070f/node_modules/@visx/shape/esm/shapes/Line.js +27 -0
  60. package/dist/node_modules/.bun/@visx_shape@4.0.0_d84c32d47042070f/node_modules/@visx/shape/esm/shapes/LinePath.js +24 -0
  61. package/dist/node_modules/.bun/@visx_shape@4.0.0_d84c32d47042070f/node_modules/@visx/shape/esm/util/D3ShapeFactories.js +9 -0
  62. package/dist/node_modules/.bun/@visx_shape@4.0.0_d84c32d47042070f/node_modules/@visx/shape/esm/util/setNumberOrNumberAccessor.js +6 -0
  63. package/dist/node_modules/.bun/@visx_text@4.0.0_d84c32d47042070f/node_modules/@visx/text/esm/Text.js +27 -0
  64. package/dist/node_modules/.bun/@visx_text@4.0.0_d84c32d47042070f/node_modules/@visx/text/esm/hooks/useText.js +68 -0
  65. package/dist/node_modules/.bun/@visx_text@4.0.0_d84c32d47042070f/node_modules/@visx/text/esm/util/getStringWidth.js +19 -0
  66. package/dist/node_modules/.bun/@visx_text@4.0.0_d84c32d47042070f/node_modules/@visx/text/esm/util/memoize.js +13 -0
  67. package/dist/node_modules/.bun/@visx_vendor@4.0.0/node_modules/@visx/vendor/esm/d3-shape.js +8 -0
  68. package/dist/node_modules/.bun/balanced-match@0.4.2/node_modules/balanced-match/index.js +32 -0
  69. package/dist/node_modules/.bun/balanced-match@1.0.2/node_modules/balanced-match/index.js +33 -0
  70. package/dist/node_modules/.bun/classnames@2.5.1/node_modules/classnames/index.js +32 -0
  71. package/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js +16 -0
  72. package/dist/node_modules/.bun/invariant@2.2.4/node_modules/invariant/browser.js +28 -0
  73. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/formula_evaluator.js +37 -0
  74. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/lexer.js +509 -0
  75. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/math_function.js +108 -0
  76. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/postfix.js +31 -0
  77. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/postfix_evaluator.js +45 -0
  78. package/dist/node_modules/.bun/reduce-css-calc@1.3.0/node_modules/reduce-css-calc/index.js +49 -0
  79. package/dist/node_modules/.bun/reduce-function-call@1.0.3/node_modules/reduce-function-call/index.js +34 -0
  80. package/dist/node_modules/.bun/redux-undo@1.1.0/node_modules/redux-undo/dist/redux-undo.js +185 -0
  81. package/dist/node_modules/.bun/redux@5.0.1/node_modules/redux/dist/redux.js +198 -0
  82. package/dist/toggle-bar.d.ts +40 -0
  83. package/dist/toggle-bar.js +155 -0
  84. package/dist/tool-menu.d.ts +29 -0
  85. package/dist/tool-menu.js +41 -0
  86. package/dist/tools/absolute/component.d.ts +16 -0
  87. package/dist/tools/absolute/component.js +15 -0
  88. package/dist/tools/absolute/index.d.ts +20 -0
  89. package/dist/tools/absolute/index.js +32 -0
  90. package/dist/tools/circle/bg-circle.d.ts +116 -0
  91. package/dist/tools/circle/bg-circle.js +72 -0
  92. package/dist/tools/circle/component.d.ts +88 -0
  93. package/dist/tools/circle/component.js +208 -0
  94. package/dist/tools/circle/index.d.ts +20 -0
  95. package/dist/tools/circle/index.js +22 -0
  96. package/dist/tools/exponential/component.d.ts +16 -0
  97. package/dist/tools/exponential/component.js +14 -0
  98. package/dist/tools/exponential/index.d.ts +20 -0
  99. package/dist/tools/exponential/index.js +32 -0
  100. package/dist/tools/index.d.ts +27 -0
  101. package/dist/tools/index.js +55 -0
  102. package/dist/tools/line/component.d.ts +124 -0
  103. package/dist/tools/line/component.js +72 -0
  104. package/dist/tools/line/index.d.ts +13 -0
  105. package/dist/tools/line/index.js +6 -0
  106. package/dist/tools/parabola/component.d.ts +16 -0
  107. package/dist/tools/parabola/component.js +14 -0
  108. package/dist/tools/parabola/index.d.ts +20 -0
  109. package/dist/tools/parabola/index.js +32 -0
  110. package/dist/tools/point/component.d.ts +52 -0
  111. package/dist/tools/point/component.js +91 -0
  112. package/dist/tools/point/index.d.ts +15 -0
  113. package/dist/tools/point/index.js +13 -0
  114. package/dist/tools/polygon/component.d.ts +125 -0
  115. package/dist/tools/polygon/component.js +271 -0
  116. package/dist/tools/polygon/index.d.ts +19 -0
  117. package/dist/tools/polygon/index.js +55 -0
  118. package/dist/tools/polygon/line.d.ts +125 -0
  119. package/dist/tools/polygon/line.js +63 -0
  120. package/dist/tools/polygon/polygon.d.ts +122 -0
  121. package/dist/tools/polygon/polygon.js +74 -0
  122. package/dist/tools/ray/component.d.ts +101 -0
  123. package/dist/tools/ray/component.js +71 -0
  124. package/dist/tools/ray/index.d.ts +13 -0
  125. package/dist/tools/ray/index.js +6 -0
  126. package/dist/tools/segment/component.d.ts +100 -0
  127. package/dist/tools/segment/component.js +52 -0
  128. package/dist/tools/segment/index.d.ts +13 -0
  129. package/dist/tools/segment/index.js +6 -0
  130. package/dist/tools/shared/arrow-head.d.ts +51 -0
  131. package/dist/tools/shared/arrow-head.js +63 -0
  132. package/dist/tools/shared/icons/CorrectSVG.d.ts +26 -0
  133. package/dist/tools/shared/icons/CorrectSVG.js +29 -0
  134. package/dist/tools/shared/icons/IncorrectSVG.d.ts +26 -0
  135. package/dist/tools/shared/icons/IncorrectSVG.js +27 -0
  136. package/dist/tools/shared/icons/MissingSVG.d.ts +26 -0
  137. package/dist/tools/shared/icons/MissingSVG.js +28 -0
  138. package/dist/tools/shared/line/index.d.ts +251 -0
  139. package/dist/tools/shared/line/index.js +332 -0
  140. package/dist/tools/shared/line/line-path.d.ts +57 -0
  141. package/dist/tools/shared/line/line-path.js +71 -0
  142. package/dist/tools/shared/line/with-root-edge.d.ts +148 -0
  143. package/dist/tools/shared/line/with-root-edge.js +73 -0
  144. package/dist/tools/shared/point/arrow-point.d.ts +56 -0
  145. package/dist/tools/shared/point/arrow-point.js +41 -0
  146. package/dist/tools/shared/point/arrow.d.ts +45 -0
  147. package/dist/tools/shared/point/arrow.js +35 -0
  148. package/dist/tools/shared/point/base-point.d.ts +52 -0
  149. package/dist/tools/shared/point/base-point.js +103 -0
  150. package/dist/tools/shared/point/index.d.ts +216 -0
  151. package/dist/tools/shared/point/index.js +45 -0
  152. package/dist/tools/shared/styles.d.ts +29 -0
  153. package/dist/tools/shared/styles.js +20 -0
  154. package/dist/tools/shared/types.d.ts +21 -0
  155. package/dist/tools/shared/types.js +11 -0
  156. package/dist/tools/sine/component.d.ts +16 -0
  157. package/dist/tools/sine/component.js +22 -0
  158. package/dist/tools/sine/index.d.ts +20 -0
  159. package/dist/tools/sine/index.js +32 -0
  160. package/dist/tools/vector/component.d.ts +100 -0
  161. package/dist/tools/vector/component.js +44 -0
  162. package/dist/tools/vector/index.d.ts +13 -0
  163. package/dist/tools/vector/index.js +6 -0
  164. package/dist/undo-redo.d.ts +22 -0
  165. package/dist/undo-redo.js +47 -0
  166. package/dist/use-debounce.d.ts +9 -0
  167. package/dist/use-debounce.js +13 -0
  168. package/dist/utils.d.ts +61 -0
  169. package/dist/utils.js +75 -0
  170. package/package.json +51 -41
  171. package/CHANGELOG.json +0 -1
  172. package/CHANGELOG.md +0 -1469
  173. package/lib/__tests__/bg.test.js +0 -282
  174. package/lib/__tests__/bg.test.js.map +0 -1
  175. package/lib/__tests__/coordinates-label.test.js +0 -276
  176. package/lib/__tests__/coordinates-label.test.js.map +0 -1
  177. package/lib/__tests__/graph-with-controls.test.js +0 -275
  178. package/lib/__tests__/graph-with-controls.test.js.map +0 -1
  179. package/lib/__tests__/graph.test.js +0 -927
  180. package/lib/__tests__/graph.test.js.map +0 -1
  181. package/lib/__tests__/grid-setup.test.js +0 -729
  182. package/lib/__tests__/grid-setup.test.js.map +0 -1
  183. package/lib/__tests__/grid.test.js +0 -29
  184. package/lib/__tests__/grid.test.js.map +0 -1
  185. package/lib/__tests__/key-legend.test.js +0 -321
  186. package/lib/__tests__/key-legend.test.js.map +0 -1
  187. package/lib/__tests__/label-svg-icon.test.js +0 -373
  188. package/lib/__tests__/label-svg-icon.test.js.map +0 -1
  189. package/lib/__tests__/labels.test.js +0 -61
  190. package/lib/__tests__/labels.test.js.map +0 -1
  191. package/lib/__tests__/mark-label.test.js +0 -133
  192. package/lib/__tests__/mark-label.test.js.map +0 -1
  193. package/lib/__tests__/toggle-bar.test.js +0 -197
  194. package/lib/__tests__/toggle-bar.test.js.map +0 -1
  195. package/lib/__tests__/tool-menu.test.js +0 -151
  196. package/lib/__tests__/tool-menu.test.js.map +0 -1
  197. package/lib/__tests__/undo-redo.test.js +0 -31
  198. package/lib/__tests__/undo-redo.test.js.map +0 -1
  199. package/lib/__tests__/use-debounce.test.js +0 -24
  200. package/lib/__tests__/use-debounce.test.js.map +0 -1
  201. package/lib/__tests__/utils.js +0 -70
  202. package/lib/__tests__/utils.js.map +0 -1
  203. package/lib/__tests__/utils.test.js +0 -123
  204. package/lib/__tests__/utils.test.js.map +0 -1
  205. package/lib/axis/__tests__/arrow.test.js +0 -60
  206. package/lib/axis/__tests__/arrow.test.js.map +0 -1
  207. package/lib/axis/__tests__/axes.test.js +0 -195
  208. package/lib/axis/__tests__/axes.test.js.map +0 -1
  209. package/lib/axis/arrow.js +0 -79
  210. package/lib/axis/arrow.js.map +0 -1
  211. package/lib/axis/axes.js +0 -329
  212. package/lib/axis/axes.js.map +0 -1
  213. package/lib/axis/index.js +0 -21
  214. package/lib/axis/index.js.map +0 -1
  215. package/lib/bg.js +0 -114
  216. package/lib/bg.js.map +0 -1
  217. package/lib/container/__tests__/actions.test.js +0 -108
  218. package/lib/container/__tests__/actions.test.js.map +0 -1
  219. package/lib/container/__tests__/index.test.js +0 -503
  220. package/lib/container/__tests__/index.test.js.map +0 -1
  221. package/lib/container/__tests__/marks.test.js +0 -259
  222. package/lib/container/__tests__/marks.test.js.map +0 -1
  223. package/lib/container/__tests__/middleware.test.js +0 -244
  224. package/lib/container/__tests__/middleware.test.js.map +0 -1
  225. package/lib/container/__tests__/reducer.test.js +0 -450
  226. package/lib/container/__tests__/reducer.test.js.map +0 -1
  227. package/lib/container/actions.js +0 -18
  228. package/lib/container/actions.js.map +0 -1
  229. package/lib/container/index.js +0 -127
  230. package/lib/container/index.js.map +0 -1
  231. package/lib/container/marks.js +0 -22
  232. package/lib/container/marks.js.map +0 -1
  233. package/lib/container/middleware.js +0 -19
  234. package/lib/container/middleware.js.map +0 -1
  235. package/lib/container/reducer.js +0 -18
  236. package/lib/container/reducer.js.map +0 -1
  237. package/lib/coordinates-label.js +0 -79
  238. package/lib/coordinates-label.js.map +0 -1
  239. package/lib/graph-with-controls.js +0 -294
  240. package/lib/graph-with-controls.js.map +0 -1
  241. package/lib/graph.js +0 -327
  242. package/lib/graph.js.map +0 -1
  243. package/lib/grid-setup.js +0 -414
  244. package/lib/grid-setup.js.map +0 -1
  245. package/lib/grid.js +0 -131
  246. package/lib/grid.js.map +0 -1
  247. package/lib/index.js +0 -47
  248. package/lib/index.js.map +0 -1
  249. package/lib/key-legend.js +0 -201
  250. package/lib/key-legend.js.map +0 -1
  251. package/lib/label-svg-icon.js +0 -50
  252. package/lib/label-svg-icon.js.map +0 -1
  253. package/lib/labels.js +0 -243
  254. package/lib/labels.js.map +0 -1
  255. package/lib/mark-label.js +0 -285
  256. package/lib/mark-label.js.map +0 -1
  257. package/lib/toggle-bar.js +0 -252
  258. package/lib/toggle-bar.js.map +0 -1
  259. package/lib/tool-menu.js +0 -78
  260. package/lib/tool-menu.js.map +0 -1
  261. package/lib/tools/absolute/__tests__/component.test.js +0 -65
  262. package/lib/tools/absolute/__tests__/component.test.js.map +0 -1
  263. package/lib/tools/absolute/component.js +0 -29
  264. package/lib/tools/absolute/component.js.map +0 -1
  265. package/lib/tools/absolute/index.js +0 -50
  266. package/lib/tools/absolute/index.js.map +0 -1
  267. package/lib/tools/circle/__tests__/bg-circle.test.js +0 -33
  268. package/lib/tools/circle/__tests__/bg-circle.test.js.map +0 -1
  269. package/lib/tools/circle/__tests__/component.test.js +0 -615
  270. package/lib/tools/circle/__tests__/component.test.js.map +0 -1
  271. package/lib/tools/circle/__tests__/index.test.js +0 -576
  272. package/lib/tools/circle/__tests__/index.test.js.map +0 -1
  273. package/lib/tools/circle/bg-circle.js +0 -123
  274. package/lib/tools/circle/bg-circle.js.map +0 -1
  275. package/lib/tools/circle/component.js +0 -321
  276. package/lib/tools/circle/component.js.map +0 -1
  277. package/lib/tools/circle/index.js +0 -41
  278. package/lib/tools/circle/index.js.map +0 -1
  279. package/lib/tools/exponential/__tests__/component.test.js +0 -64
  280. package/lib/tools/exponential/__tests__/component.test.js.map +0 -1
  281. package/lib/tools/exponential/__tests__/index.test.js +0 -828
  282. package/lib/tools/exponential/__tests__/index.test.js.map +0 -1
  283. package/lib/tools/exponential/component.js +0 -28
  284. package/lib/tools/exponential/component.js.map +0 -1
  285. package/lib/tools/exponential/index.js +0 -56
  286. package/lib/tools/exponential/index.js.map +0 -1
  287. package/lib/tools/index.js +0 -86
  288. package/lib/tools/index.js.map +0 -1
  289. package/lib/tools/line/__tests__/component.test.js +0 -45
  290. package/lib/tools/line/__tests__/component.test.js.map +0 -1
  291. package/lib/tools/line/component.js +0 -97
  292. package/lib/tools/line/component.js.map +0 -1
  293. package/lib/tools/line/index.js +0 -11
  294. package/lib/tools/line/index.js.map +0 -1
  295. package/lib/tools/parabola/__tests__/component.test.js +0 -64
  296. package/lib/tools/parabola/__tests__/component.test.js.map +0 -1
  297. package/lib/tools/parabola/__tests__/index.test.js +0 -564
  298. package/lib/tools/parabola/__tests__/index.test.js.map +0 -1
  299. package/lib/tools/parabola/component.js +0 -28
  300. package/lib/tools/parabola/component.js.map +0 -1
  301. package/lib/tools/parabola/index.js +0 -50
  302. package/lib/tools/parabola/index.js.map +0 -1
  303. package/lib/tools/point/__tests__/component.test.js +0 -434
  304. package/lib/tools/point/__tests__/component.test.js.map +0 -1
  305. package/lib/tools/point/__tests__/index.test.js +0 -262
  306. package/lib/tools/point/__tests__/index.test.js.map +0 -1
  307. package/lib/tools/point/component.js +0 -148
  308. package/lib/tools/point/component.js.map +0 -1
  309. package/lib/tools/point/index.js +0 -24
  310. package/lib/tools/point/index.js.map +0 -1
  311. package/lib/tools/polygon/__tests__/component.test.js +0 -485
  312. package/lib/tools/polygon/__tests__/component.test.js.map +0 -1
  313. package/lib/tools/polygon/__tests__/index.test.js +0 -303
  314. package/lib/tools/polygon/__tests__/index.test.js.map +0 -1
  315. package/lib/tools/polygon/__tests__/line.test.js +0 -50
  316. package/lib/tools/polygon/__tests__/line.test.js.map +0 -1
  317. package/lib/tools/polygon/__tests__/polygon.test.js +0 -85
  318. package/lib/tools/polygon/__tests__/polygon.test.js.map +0 -1
  319. package/lib/tools/polygon/component.js +0 -437
  320. package/lib/tools/polygon/component.js.map +0 -1
  321. package/lib/tools/polygon/index.js +0 -89
  322. package/lib/tools/polygon/index.js.map +0 -1
  323. package/lib/tools/polygon/line.js +0 -112
  324. package/lib/tools/polygon/line.js.map +0 -1
  325. package/lib/tools/polygon/polygon.js +0 -130
  326. package/lib/tools/polygon/polygon.js.map +0 -1
  327. package/lib/tools/ray/__tests__/component.test.js +0 -35
  328. package/lib/tools/ray/__tests__/component.test.js.map +0 -1
  329. package/lib/tools/ray/component.js +0 -95
  330. package/lib/tools/ray/component.js.map +0 -1
  331. package/lib/tools/ray/index.js +0 -11
  332. package/lib/tools/ray/index.js.map +0 -1
  333. package/lib/tools/segment/__tests__/component.test.js +0 -35
  334. package/lib/tools/segment/__tests__/component.test.js.map +0 -1
  335. package/lib/tools/segment/component.js +0 -71
  336. package/lib/tools/segment/component.js.map +0 -1
  337. package/lib/tools/segment/index.js +0 -11
  338. package/lib/tools/segment/index.js.map +0 -1
  339. package/lib/tools/shared/__tests__/arrow-head.test.js +0 -45
  340. package/lib/tools/shared/__tests__/arrow-head.test.js.map +0 -1
  341. package/lib/tools/shared/arrow-head.js +0 -111
  342. package/lib/tools/shared/arrow-head.js.map +0 -1
  343. package/lib/tools/shared/icons/CorrectSVG.js +0 -40
  344. package/lib/tools/shared/icons/CorrectSVG.js.map +0 -1
  345. package/lib/tools/shared/icons/IncorrectSVG.js +0 -40
  346. package/lib/tools/shared/icons/IncorrectSVG.js.map +0 -1
  347. package/lib/tools/shared/icons/MissingSVG.js +0 -39
  348. package/lib/tools/shared/icons/MissingSVG.js.map +0 -1
  349. package/lib/tools/shared/line/__tests__/index.test.js +0 -124
  350. package/lib/tools/shared/line/__tests__/index.test.js.map +0 -1
  351. package/lib/tools/shared/line/__tests__/line-path.test.js +0 -62
  352. package/lib/tools/shared/line/__tests__/line-path.test.js.map +0 -1
  353. package/lib/tools/shared/line/__tests__/with-root-edge.test.js +0 -90
  354. package/lib/tools/shared/line/__tests__/with-root-edge.test.js.map +0 -1
  355. package/lib/tools/shared/line/index.js +0 -550
  356. package/lib/tools/shared/line/index.js.map +0 -1
  357. package/lib/tools/shared/line/line-path.js +0 -118
  358. package/lib/tools/shared/line/line-path.js.map +0 -1
  359. package/lib/tools/shared/line/with-root-edge.js +0 -121
  360. package/lib/tools/shared/line/with-root-edge.js.map +0 -1
  361. package/lib/tools/shared/point/__tests__/arrow-point.test.js +0 -127
  362. package/lib/tools/shared/point/__tests__/arrow-point.test.js.map +0 -1
  363. package/lib/tools/shared/point/__tests__/base-point.test.js +0 -122
  364. package/lib/tools/shared/point/__tests__/base-point.test.js.map +0 -1
  365. package/lib/tools/shared/point/arrow-point.js +0 -72
  366. package/lib/tools/shared/point/arrow-point.js.map +0 -1
  367. package/lib/tools/shared/point/arrow.js +0 -67
  368. package/lib/tools/shared/point/arrow.js.map +0 -1
  369. package/lib/tools/shared/point/base-point.js +0 -157
  370. package/lib/tools/shared/point/base-point.js.map +0 -1
  371. package/lib/tools/shared/point/index.js +0 -68
  372. package/lib/tools/shared/point/index.js.map +0 -1
  373. package/lib/tools/shared/styles.js +0 -33
  374. package/lib/tools/shared/styles.js.map +0 -1
  375. package/lib/tools/shared/types.js +0 -16
  376. package/lib/tools/shared/types.js.map +0 -1
  377. package/lib/tools/sine/__tests__/component.test.js +0 -72
  378. package/lib/tools/sine/__tests__/component.test.js.map +0 -1
  379. package/lib/tools/sine/component.js +0 -40
  380. package/lib/tools/sine/component.js.map +0 -1
  381. package/lib/tools/sine/index.js +0 -50
  382. package/lib/tools/sine/index.js.map +0 -1
  383. package/lib/tools/vector/__tests__/component.test.js +0 -32
  384. package/lib/tools/vector/__tests__/component.test.js.map +0 -1
  385. package/lib/tools/vector/component.js +0 -68
  386. package/lib/tools/vector/component.js.map +0 -1
  387. package/lib/tools/vector/index.js +0 -11
  388. package/lib/tools/vector/index.js.map +0 -1
  389. package/lib/undo-redo.js +0 -86
  390. package/lib/undo-redo.js.map +0 -1
  391. package/lib/use-debounce.js +0 -25
  392. package/lib/use-debounce.js.map +0 -1
  393. package/lib/utils.js +0 -229
  394. package/lib/utils.js.map +0 -1
  395. package/src/__tests__/bg.test.jsx +0 -250
  396. package/src/__tests__/coordinates-label.test.jsx +0 -243
  397. package/src/__tests__/graph-with-controls.test.jsx +0 -198
  398. package/src/__tests__/graph.test.jsx +0 -721
  399. package/src/__tests__/grid-setup.test.jsx +0 -645
  400. package/src/__tests__/grid.test.jsx +0 -22
  401. package/src/__tests__/key-legend.test.jsx +0 -260
  402. package/src/__tests__/label-svg-icon.test.jsx +0 -278
  403. package/src/__tests__/labels.test.jsx +0 -55
  404. package/src/__tests__/mark-label.test.jsx +0 -63
  405. package/src/__tests__/toggle-bar.test.jsx +0 -146
  406. package/src/__tests__/tool-menu.test.jsx +0 -115
  407. package/src/__tests__/undo-redo.test.jsx +0 -24
  408. package/src/__tests__/use-debounce.test.js +0 -21
  409. package/src/__tests__/utils.js +0 -41
  410. package/src/__tests__/utils.test.js +0 -105
  411. package/src/axis/__tests__/arrow.test.jsx +0 -38
  412. package/src/axis/__tests__/axes.test.jsx +0 -216
  413. package/src/axis/arrow.jsx +0 -57
  414. package/src/axis/axes.jsx +0 -285
  415. package/src/axis/index.js +0 -3
  416. package/src/bg.jsx +0 -96
  417. package/src/container/__tests__/actions.test.js +0 -105
  418. package/src/container/__tests__/index.test.jsx +0 -319
  419. package/src/container/__tests__/marks.test.js +0 -172
  420. package/src/container/__tests__/middleware.test.js +0 -235
  421. package/src/container/__tests__/reducer.test.js +0 -324
  422. package/src/container/actions.js +0 -8
  423. package/src/container/index.jsx +0 -91
  424. package/src/container/marks.js +0 -14
  425. package/src/container/middleware.js +0 -7
  426. package/src/container/reducer.js +0 -5
  427. package/src/coordinates-label.jsx +0 -63
  428. package/src/graph-with-controls.jsx +0 -239
  429. package/src/graph.jsx +0 -303
  430. package/src/grid-setup.jsx +0 -432
  431. package/src/grid.jsx +0 -133
  432. package/src/index.js +0 -7
  433. package/src/key-legend.jsx +0 -142
  434. package/src/label-svg-icon.jsx +0 -39
  435. package/src/labels.jsx +0 -207
  436. package/src/mark-label.jsx +0 -244
  437. package/src/toggle-bar.jsx +0 -224
  438. package/src/tool-menu.jsx +0 -49
  439. package/src/tools/absolute/__tests__/component.test.jsx +0 -53
  440. package/src/tools/absolute/component.jsx +0 -23
  441. package/src/tools/absolute/index.js +0 -31
  442. package/src/tools/circle/__tests__/bg-circle.test.jsx +0 -26
  443. package/src/tools/circle/__tests__/component.test.jsx +0 -494
  444. package/src/tools/circle/__tests__/index.test.js +0 -480
  445. package/src/tools/circle/bg-circle.jsx +0 -81
  446. package/src/tools/circle/component.jsx +0 -264
  447. package/src/tools/circle/index.js +0 -25
  448. package/src/tools/exponential/__tests__/component.test.jsx +0 -53
  449. package/src/tools/exponential/__tests__/index.test.js +0 -729
  450. package/src/tools/exponential/component.jsx +0 -23
  451. package/src/tools/exponential/index.js +0 -39
  452. package/src/tools/index.js +0 -48
  453. package/src/tools/line/__tests__/component.test.jsx +0 -37
  454. package/src/tools/line/component.jsx +0 -93
  455. package/src/tools/line/index.js +0 -4
  456. package/src/tools/parabola/__tests__/component.test.jsx +0 -48
  457. package/src/tools/parabola/__tests__/index.test.js +0 -470
  458. package/src/tools/parabola/component.jsx +0 -23
  459. package/src/tools/parabola/index.js +0 -31
  460. package/src/tools/point/__tests__/component.test.jsx +0 -349
  461. package/src/tools/point/__tests__/index.test.js +0 -241
  462. package/src/tools/point/component.jsx +0 -126
  463. package/src/tools/point/index.js +0 -11
  464. package/src/tools/polygon/__tests__/component.test.jsx +0 -471
  465. package/src/tools/polygon/__tests__/index.test.js +0 -294
  466. package/src/tools/polygon/__tests__/line.test.jsx +0 -35
  467. package/src/tools/polygon/__tests__/polygon.test.jsx +0 -61
  468. package/src/tools/polygon/component.jsx +0 -409
  469. package/src/tools/polygon/index.js +0 -52
  470. package/src/tools/polygon/line.jsx +0 -74
  471. package/src/tools/polygon/polygon.jsx +0 -110
  472. package/src/tools/ray/__tests__/component.test.jsx +0 -29
  473. package/src/tools/ray/component.jsx +0 -92
  474. package/src/tools/ray/index.js +0 -4
  475. package/src/tools/segment/__tests__/component.test.jsx +0 -28
  476. package/src/tools/segment/component.jsx +0 -65
  477. package/src/tools/segment/index.js +0 -4
  478. package/src/tools/shared/__tests__/arrow-head.test.jsx +0 -31
  479. package/src/tools/shared/arrow-head.jsx +0 -102
  480. package/src/tools/shared/icons/CorrectSVG.jsx +0 -32
  481. package/src/tools/shared/icons/IncorrectSVG.jsx +0 -30
  482. package/src/tools/shared/icons/MissingSVG.jsx +0 -31
  483. package/src/tools/shared/line/__tests__/index.test.jsx +0 -109
  484. package/src/tools/shared/line/__tests__/line-path.test.jsx +0 -53
  485. package/src/tools/shared/line/__tests__/with-root-edge.test.jsx +0 -73
  486. package/src/tools/shared/line/index.jsx +0 -487
  487. package/src/tools/shared/line/line-path.jsx +0 -80
  488. package/src/tools/shared/line/with-root-edge.jsx +0 -97
  489. package/src/tools/shared/point/__tests__/arrow-point.test.jsx +0 -91
  490. package/src/tools/shared/point/__tests__/base-point.test.jsx +0 -87
  491. package/src/tools/shared/point/arrow-point.jsx +0 -46
  492. package/src/tools/shared/point/arrow.jsx +0 -37
  493. package/src/tools/shared/point/base-point.jsx +0 -121
  494. package/src/tools/shared/point/index.jsx +0 -54
  495. package/src/tools/shared/styles.js +0 -27
  496. package/src/tools/shared/types.js +0 -10
  497. package/src/tools/sine/__tests__/component.test.jsx +0 -51
  498. package/src/tools/sine/component.jsx +0 -32
  499. package/src/tools/sine/index.js +0 -33
  500. package/src/tools/vector/__tests__/component.test.jsx +0 -25
  501. package/src/tools/vector/component.jsx +0 -56
  502. package/src/tools/vector/index.js +0 -4
  503. package/src/undo-redo.jsx +0 -45
  504. package/src/use-debounce.js +0 -13
  505. package/src/utils.js +0 -224
@@ -1,721 +0,0 @@
1
- import React from 'react';
2
- import { render } from '@pie-lib/test-utils';
3
- import { graphProps } from './utils';
4
- import Graph, { removeBuildingToolIfCurrentToolDiffers } from '../graph';
5
- import { toolsArr } from '../tools';
6
-
7
- describe('removeBuildingToolIfCurrentToolDiffers', () => {
8
- let marks = [
9
- {
10
- type: 'point',
11
- x: 2,
12
- y: 2,
13
- label: 'Point',
14
- showLabel: true,
15
- },
16
- {
17
- type: 'line',
18
- from: { x: 0, y: 0 },
19
- to: { x: 1, y: 1 },
20
- label: 'Line',
21
- building: true,
22
- },
23
- ];
24
-
25
- it('keeps all marks if currentTool is the same', () => {
26
- expect(removeBuildingToolIfCurrentToolDiffers({ marks, currentTool: { type: 'line' } })).toEqual(marks);
27
- });
28
-
29
- it('removes building marks if currentTool is different', () => {
30
- expect(removeBuildingToolIfCurrentToolDiffers({ marks, currentTool: { type: 'different' } })).toEqual([marks[0]]);
31
- });
32
- });
33
-
34
- describe('Graph', () => {
35
- let onChangeMarks = jest.fn();
36
-
37
- const defaultProps = {
38
- className: 'className',
39
- onChangeMarks,
40
- tools: toolsArr,
41
- domain: { min: 0, max: 1, step: 1 },
42
- range: { min: 0, max: 1, step: 1 },
43
- size: { width: 400, height: 400 },
44
- marks: [
45
- {
46
- type: 'point',
47
- x: 2,
48
- y: 2,
49
- label: 'Point',
50
- showLabel: true,
51
- },
52
- {
53
- type: 'line',
54
- from: { x: 0, y: 0 },
55
- to: { x: 1, y: 1 },
56
- label: 'Line',
57
- },
58
- ],
59
- ...graphProps(),
60
- };
61
-
62
- beforeEach(() => {
63
- onChangeMarks.mockClear();
64
- });
65
-
66
- describe('rendering', () => {
67
- it('renders without crashing', () => {
68
- const { container } = render(<Graph {...defaultProps} />);
69
- expect(container.firstChild).toBeInTheDocument();
70
- });
71
-
72
- it('renders with currentTool', () => {
73
- const props = {
74
- ...defaultProps,
75
- currentTool: toolsArr[0],
76
- };
77
- const { container } = render(<Graph {...props} />);
78
- expect(container.firstChild).toBeInTheDocument();
79
- });
80
-
81
- it('renders with marks', () => {
82
- const { container } = render(<Graph {...defaultProps} />);
83
- expect(container.firstChild).toBeInTheDocument();
84
- });
85
-
86
- it('renders with empty marks array', () => {
87
- const props = {
88
- ...defaultProps,
89
- marks: [],
90
- };
91
- const { container } = render(<Graph {...props} />);
92
- expect(container.firstChild).toBeInTheDocument();
93
- });
94
-
95
- it('renders with labelModeEnabled', () => {
96
- const props = {
97
- ...defaultProps,
98
- labelModeEnabled: true,
99
- };
100
- const { container } = render(<Graph {...props} />);
101
- expect(container.firstChild).toBeInTheDocument();
102
- });
103
- });
104
-
105
- describe('props handling', () => {
106
- it('calls onChangeMarks when marks prop changes', () => {
107
- const { rerender } = render(<Graph {...defaultProps} />);
108
-
109
- const newMarks = [
110
- {
111
- type: 'point',
112
- x: 3,
113
- y: 3,
114
- label: 'New Point',
115
- showLabel: true,
116
- },
117
- ];
118
-
119
- rerender(<Graph {...defaultProps} marks={newMarks} />);
120
-
121
- // Component should render with new marks
122
- // Note: onChangeMarks is called internally when marks are changed through user interaction,
123
- // not when props change, so we just verify the component renders correctly
124
- expect(onChangeMarks).not.toHaveBeenCalled();
125
- });
126
-
127
- it('handles undefined onChangeMarks gracefully', () => {
128
- const props = {
129
- ...defaultProps,
130
- onChangeMarks: undefined,
131
- };
132
- const { container } = render(<Graph {...props} />);
133
- expect(container.firstChild).toBeInTheDocument();
134
- });
135
- });
136
-
137
- describe('removeBuildingToolIfCurrentToolDiffers integration', () => {
138
- it('removes building marks when currentTool changes', () => {
139
- const marksWithBuilding = [
140
- {
141
- type: 'point',
142
- x: 2,
143
- y: 2,
144
- label: 'Point',
145
- showLabel: true,
146
- },
147
- {
148
- type: 'line',
149
- from: { x: 0, y: 0 },
150
- to: { x: 1, y: 1 },
151
- building: true,
152
- },
153
- ];
154
-
155
- const props = {
156
- ...defaultProps,
157
- marks: marksWithBuilding,
158
- currentTool: { type: 'point' }, // Different from building mark type
159
- };
160
-
161
- const { container } = render(<Graph {...props} />);
162
- expect(container.firstChild).toBeInTheDocument();
163
- });
164
- });
165
-
166
- describe('updateMarks method', () => {
167
- it('updates an existing mark', () => {
168
- const wrapper = render(<Graph {...defaultProps} />);
169
-
170
- const { rerender } = wrapper;
171
-
172
- const updatedMarks = [
173
- {
174
- type: 'point',
175
- x: 3,
176
- y: 3,
177
- label: 'Updated Point',
178
- showLabel: true,
179
- },
180
- {
181
- type: 'line',
182
- from: { x: 0, y: 0 },
183
- to: { x: 1, y: 1 },
184
- label: 'Line',
185
- },
186
- ];
187
-
188
- rerender(<Graph {...defaultProps} marks={updatedMarks} />);
189
-
190
- // Component should render with updated marks
191
- expect(wrapper.container.firstChild).toBeInTheDocument();
192
- });
193
-
194
- it('does not update if mark is duplicated', () => {
195
- const duplicatedMarks = [
196
- {
197
- type: 'point',
198
- x: 2,
199
- y: 2,
200
- label: 'Point',
201
- showLabel: true,
202
- },
203
- {
204
- type: 'point',
205
- x: 2,
206
- y: 2,
207
- label: 'Point',
208
- showLabel: true,
209
- },
210
- ];
211
-
212
- const { container } = render(<Graph {...defaultProps} marks={duplicatedMarks} />);
213
- expect(container.firstChild).toBeInTheDocument();
214
- });
215
-
216
- it('adds mark if addIfMissing is true and mark does not exist', () => {
217
- const { container } = render(<Graph {...defaultProps} />);
218
-
219
- // The component should handle adding new marks through user interaction
220
- expect(container.firstChild).toBeInTheDocument();
221
- });
222
-
223
- it('does not update if mark has no building flag and is duplicated', () => {
224
- const marks = [
225
- {
226
- type: 'point',
227
- x: 2,
228
- y: 2,
229
- label: 'Point',
230
- showLabel: true,
231
- },
232
- ];
233
-
234
- const { container } = render(<Graph {...defaultProps} marks={marks} />);
235
- expect(container.firstChild).toBeInTheDocument();
236
- });
237
-
238
- it('handles building marks correctly', () => {
239
- const marksWithBuilding = [
240
- {
241
- type: 'line',
242
- from: { x: 0, y: 0 },
243
- building: true,
244
- },
245
- ];
246
-
247
- const { container } = render(<Graph {...defaultProps} marks={marksWithBuilding} />);
248
- expect(container.firstChild).toBeInTheDocument();
249
- });
250
-
251
- it('updates building mark to completed mark', () => {
252
- const marksWithBuilding = [
253
- {
254
- type: 'line',
255
- from: { x: 0, y: 0 },
256
- building: true,
257
- },
258
- ];
259
-
260
- const { rerender, container } = render(<Graph {...defaultProps} marks={marksWithBuilding} />);
261
-
262
- const completedMarks = [
263
- {
264
- type: 'line',
265
- from: { x: 0, y: 0 },
266
- to: { x: 1, y: 1 },
267
- building: false,
268
- },
269
- ];
270
-
271
- rerender(<Graph {...defaultProps} marks={completedMarks} />);
272
- expect(container.firstChild).toBeInTheDocument();
273
- });
274
-
275
- it('does not call onChangeMarks if update is undefined', () => {
276
- const { container } = render(<Graph {...defaultProps} />);
277
-
278
- // If update is undefined, onChangeMarks should not be called
279
- // This is handled internally by the component
280
- expect(container.firstChild).toBeInTheDocument();
281
- });
282
-
283
- it('does not add mark if existing is not found and addIfMissing is false', () => {
284
- const { container } = render(<Graph {...defaultProps} />);
285
-
286
- // By default, marks are not added if they don't exist and addIfMissing is false
287
- expect(container.firstChild).toBeInTheDocument();
288
- });
289
-
290
- it('calls onChangeMarks with correct marks when updating', () => {
291
- const marks = [
292
- {
293
- type: 'point',
294
- x: 2,
295
- y: 2,
296
- label: 'Point',
297
- showLabel: true,
298
- },
299
- ];
300
-
301
- const { rerender } = render(<Graph {...defaultProps} marks={marks} />);
302
-
303
- const updatedMarks = [
304
- {
305
- type: 'point',
306
- x: 3,
307
- y: 3,
308
- label: 'Updated Point',
309
- showLabel: true,
310
- },
311
- ];
312
-
313
- rerender(<Graph {...defaultProps} marks={updatedMarks} />);
314
-
315
- // The component handles mark updates internally
316
- // onChangeMarks is called through user interactions
317
- });
318
-
319
- it('preserves other marks when updating a specific mark', () => {
320
- const marks = [
321
- {
322
- type: 'point',
323
- x: 2,
324
- y: 2,
325
- label: 'Point 1',
326
- showLabel: true,
327
- },
328
- {
329
- type: 'point',
330
- x: 3,
331
- y: 3,
332
- label: 'Point 2',
333
- showLabel: true,
334
- },
335
- ];
336
-
337
- const { container } = render(<Graph {...defaultProps} marks={marks} />);
338
- expect(container.firstChild).toBeInTheDocument();
339
- });
340
- });
341
-
342
- describe('getComponent method', () => {
343
- it('returns null if mark is null', () => {
344
- const { container } = render(<Graph {...defaultProps} />);
345
-
346
- // getComponent returns null for null marks
347
- // This is tested by rendering with undefined marks
348
- const propsWithoutMarks = { ...defaultProps, marks: [] };
349
- const { container: emptyContainer } = render(<Graph {...propsWithoutMarks} />);
350
- expect(emptyContainer.firstChild).toBeInTheDocument();
351
- });
352
-
353
- it('returns null if mark is undefined', () => {
354
- const { container } = render(<Graph {...defaultProps} />);
355
- expect(container.firstChild).toBeInTheDocument();
356
- });
357
-
358
- it('returns null if tools is undefined', () => {
359
- const propsWithUndefinedTools = { ...defaultProps, tools: undefined };
360
- const graphInstance = new Graph(propsWithUndefinedTools);
361
- const mark = { type: 'point', x: 1, y: 1 };
362
- const component = graphInstance.getComponent(mark);
363
- expect(component).toBeNull();
364
- });
365
-
366
- it('returns null if tools is empty array', () => {
367
- const propsWithEmptyTools = { ...defaultProps, tools: [] };
368
- const graphInstance = new Graph(propsWithEmptyTools);
369
- const mark = { type: 'point', x: 1, y: 1 };
370
- const component = graphInstance.getComponent(mark);
371
- expect(component).toBeNull();
372
- });
373
-
374
- it('returns null if mark type is not found in tools', () => {
375
- const graphInstance = new Graph(defaultProps);
376
- const mark = { type: 'nonexistent-type', x: 1, y: 1 };
377
- const component = graphInstance.getComponent(mark);
378
- expect(component).toBeNull();
379
- });
380
-
381
- it('returns component if tool has no Component property', () => {
382
- const toolWithoutComponent = [{ type: 'custom', label: 'Custom' }];
383
- const propsWithCustomTool = { ...defaultProps, tools: toolWithoutComponent };
384
- const graphInstance = new Graph(propsWithCustomTool);
385
- const mark = { type: 'custom', x: 1, y: 1 };
386
- const component = graphInstance.getComponent(mark);
387
- expect(component).toBeNull();
388
- });
389
-
390
- it('returns correct component for point mark', () => {
391
- const graphInstance = new Graph(defaultProps);
392
- const mark = { type: 'point', x: 1, y: 1 };
393
- const component = graphInstance.getComponent(mark);
394
- expect(component).toBeTruthy();
395
- });
396
-
397
- it('returns correct component for line mark', () => {
398
- const graphInstance = new Graph(defaultProps);
399
- const mark = { type: 'line', from: { x: 0, y: 0 }, to: { x: 1, y: 1 } };
400
- const component = graphInstance.getComponent(mark);
401
- expect(component).toBeTruthy();
402
- });
403
-
404
- it('returns correct component for different mark types', () => {
405
- const graphInstance = new Graph(defaultProps);
406
-
407
- const pointMark = { type: 'point', x: 1, y: 1 };
408
- const lineMark = { type: 'line', from: { x: 0, y: 0 }, to: { x: 1, y: 1 } };
409
- const circleMark = { type: 'circle', center: { x: 0, y: 0 }, edge: { x: 1, y: 1 } };
410
-
411
- const pointComponent = graphInstance.getComponent(pointMark);
412
- const lineComponent = graphInstance.getComponent(lineMark);
413
- const circleComponent = graphInstance.getComponent(circleMark);
414
-
415
- expect(pointComponent).toBeTruthy();
416
- expect(lineComponent).toBeTruthy();
417
- expect(circleComponent).toBeTruthy();
418
- });
419
- });
420
-
421
- describe('getComponent method - unit tests', () => {
422
- it('returns null if mark is null', () => {
423
- const graphInstance = new Graph(defaultProps);
424
- const component = graphInstance.getComponent(null);
425
- expect(component).toBeNull();
426
- });
427
-
428
- it('returns null if mark is undefined', () => {
429
- const graphInstance = new Graph(defaultProps);
430
- const component = graphInstance.getComponent(undefined);
431
- expect(component).toBeNull();
432
- });
433
-
434
- it('returns null if tools is undefined', () => {
435
- const propsWithUndefinedTools = { ...defaultProps, tools: undefined };
436
- const graphInstance = new Graph(propsWithUndefinedTools);
437
- const mark = { type: 'point', x: 1, y: 1 };
438
- const component = graphInstance.getComponent(mark);
439
- expect(component).toBeNull();
440
- });
441
-
442
- it('returns null if tools is empty array', () => {
443
- const propsWithEmptyTools = { ...defaultProps, tools: [] };
444
- const graphInstance = new Graph(propsWithEmptyTools);
445
- const mark = { type: 'point', x: 1, y: 1 };
446
- const component = graphInstance.getComponent(mark);
447
- expect(component).toBeNull();
448
- });
449
-
450
- it('returns null if mark type is not found in tools', () => {
451
- const graphInstance = new Graph(defaultProps);
452
- const mark = { type: 'nonexistent-type', x: 1, y: 1 };
453
- const component = graphInstance.getComponent(mark);
454
- expect(component).toBeNull();
455
- });
456
-
457
- it('returns component if tool has no Component property', () => {
458
- const toolWithoutComponent = [{ type: 'custom', label: 'Custom' }];
459
- const propsWithCustomTool = { ...defaultProps, tools: toolWithoutComponent };
460
- const graphInstance = new Graph(propsWithCustomTool);
461
- const mark = { type: 'custom', x: 1, y: 1 };
462
- const component = graphInstance.getComponent(mark);
463
- expect(component).toBeNull();
464
- });
465
-
466
- it('returns correct component for point mark', () => {
467
- const graphInstance = new Graph(defaultProps);
468
- const mark = { type: 'point', x: 1, y: 1 };
469
- const component = graphInstance.getComponent(mark);
470
- expect(component).toBeTruthy();
471
- });
472
-
473
- it('returns correct component for line mark', () => {
474
- const graphInstance = new Graph(defaultProps);
475
- const mark = { type: 'line', from: { x: 0, y: 0 }, to: { x: 1, y: 1 } };
476
- const component = graphInstance.getComponent(mark);
477
- expect(component).toBeTruthy();
478
- });
479
-
480
- it('returns correct component for different mark types', () => {
481
- const graphInstance = new Graph(defaultProps);
482
-
483
- const pointMark = { type: 'point', x: 1, y: 1 };
484
- const lineMark = { type: 'line', from: { x: 0, y: 0 }, to: { x: 1, y: 1 } };
485
- const circleMark = { type: 'circle', center: { x: 0, y: 0 }, edge: { x: 1, y: 1 } };
486
-
487
- const pointComponent = graphInstance.getComponent(pointMark);
488
- const lineComponent = graphInstance.getComponent(lineMark);
489
- const circleComponent = graphInstance.getComponent(circleMark);
490
-
491
- expect(pointComponent).toBeTruthy();
492
- expect(lineComponent).toBeTruthy();
493
- expect(circleComponent).toBeTruthy();
494
- });
495
- });
496
-
497
- describe('updateMarks method - unit tests', () => {
498
- it('does not update if update parameter is null', () => {
499
- const onChangeMarks = jest.fn();
500
- const marks = [{ type: 'point', x: 1, y: 1 }];
501
- const props = { ...defaultProps, onChangeMarks, marks };
502
- const graphInstance = new Graph(props);
503
-
504
- const existing = marks[0];
505
- graphInstance.updateMarks(existing, null);
506
-
507
- expect(onChangeMarks).not.toHaveBeenCalled();
508
- });
509
-
510
- it('does not update if update parameter is undefined', () => {
511
- const onChangeMarks = jest.fn();
512
- const marks = [{ type: 'point', x: 1, y: 1 }];
513
- const props = { ...defaultProps, onChangeMarks, marks };
514
- const graphInstance = new Graph(props);
515
-
516
- const existing = marks[0];
517
- graphInstance.updateMarks(existing, undefined);
518
-
519
- expect(onChangeMarks).not.toHaveBeenCalled();
520
- });
521
-
522
- it('updates existing mark when found', () => {
523
- const onChangeMarks = jest.fn();
524
- const marks = [
525
- { type: 'point', x: 1, y: 1 },
526
- { type: 'point', x: 2, y: 2 },
527
- ];
528
- const props = { ...defaultProps, onChangeMarks, marks };
529
- const graphInstance = new Graph(props);
530
-
531
- const existing = marks[0];
532
- const updated = { type: 'point', x: 1, y: 3 };
533
-
534
- graphInstance.updateMarks(existing, updated);
535
-
536
- expect(onChangeMarks).toHaveBeenCalledTimes(1);
537
- const updatedMarks = onChangeMarks.mock.calls[0][0];
538
- expect(updatedMarks[0]).toEqual(updated);
539
- expect(updatedMarks[1]).toEqual(marks[1]);
540
- });
541
-
542
- it('adds mark if addIfMissing is true and mark not found', () => {
543
- const onChangeMarks = jest.fn();
544
- const marks = [{ type: 'point', x: 1, y: 1 }];
545
- const props = { ...defaultProps, onChangeMarks, marks };
546
- const graphInstance = new Graph(props);
547
-
548
- const existing = { type: 'point', x: 5, y: 5 };
549
- const updated = { type: 'point', x: 2, y: 2 };
550
-
551
- graphInstance.updateMarks(existing, updated, true);
552
-
553
- expect(onChangeMarks).toHaveBeenCalledTimes(1);
554
- const updatedMarks = onChangeMarks.mock.calls[0][0];
555
- expect(updatedMarks.length).toBe(2);
556
- expect(updatedMarks[1]).toEqual(updated);
557
- });
558
-
559
- it('does not add mark if addIfMissing is false and mark not found', () => {
560
- const onChangeMarks = jest.fn();
561
- const marks = [{ type: 'point', x: 1, y: 1 }];
562
- const props = { ...defaultProps, onChangeMarks, marks };
563
- const graphInstance = new Graph(props);
564
-
565
- const existing = { type: 'point', x: 5, y: 5 };
566
- const updated = { type: 'point', x: 2, y: 2 };
567
-
568
- graphInstance.updateMarks(existing, updated, false);
569
-
570
- expect(onChangeMarks).not.toHaveBeenCalled();
571
- });
572
-
573
- it('does not update if mark is still building', () => {
574
- const onChangeMarks = jest.fn();
575
- const marks = [{ type: 'point', x: 1, y: 1, building: true }];
576
- const props = { ...defaultProps, onChangeMarks, marks };
577
- const graphInstance = new Graph(props);
578
-
579
- const existing = marks[0];
580
- const updated = { type: 'point', x: 2, y: 2 };
581
-
582
- graphInstance.updateMarks(existing, updated);
583
-
584
- expect(onChangeMarks).toHaveBeenCalled();
585
- });
586
-
587
- it('preserves mark order when updating', () => {
588
- const onChangeMarks = jest.fn();
589
- const marks = [
590
- { type: 'point', x: 1, y: 1 },
591
- { type: 'point', x: 2, y: 2 },
592
- { type: 'point', x: 3, y: 3 },
593
- ];
594
- const props = { ...defaultProps, onChangeMarks, marks };
595
- const graphInstance = new Graph(props);
596
-
597
- const existing = marks[1];
598
- const updated = { type: 'point', x: 2, y: 5 };
599
-
600
- graphInstance.updateMarks(existing, updated);
601
-
602
- const updatedMarks = onChangeMarks.mock.calls[0][0];
603
- expect(updatedMarks[0]).toEqual(marks[0]);
604
- expect(updatedMarks[1]).toEqual(updated);
605
- expect(updatedMarks[2]).toEqual(marks[2]);
606
- });
607
-
608
- it('handles empty marks array', () => {
609
- const onChangeMarks = jest.fn();
610
- const props = { ...defaultProps, onChangeMarks, marks: [] };
611
- const graphInstance = new Graph(props);
612
-
613
- const existing = { type: 'point', x: 1, y: 1 };
614
- const updated = { type: 'point', x: 2, y: 2 };
615
-
616
- graphInstance.updateMarks(existing, updated, true);
617
-
618
- expect(onChangeMarks).toHaveBeenCalledTimes(1);
619
- const updatedMarks = onChangeMarks.mock.calls[0][0];
620
- expect(updatedMarks.length).toBe(1);
621
- expect(updatedMarks[0]).toEqual(updated);
622
- });
623
- });
624
-
625
- describe('updateMarks and getComponent integration', () => {
626
- it('updates marks and renders with correct components', () => {
627
- const initialMarks = [
628
- {
629
- type: 'point',
630
- x: 2,
631
- y: 2,
632
- label: 'Point',
633
- showLabel: true,
634
- },
635
- ];
636
-
637
- const { rerender, container } = render(<Graph {...defaultProps} marks={initialMarks} />);
638
-
639
- const updatedMarks = [
640
- {
641
- type: 'line',
642
- from: { x: 0, y: 0 },
643
- to: { x: 1, y: 1 },
644
- label: 'Line',
645
- },
646
- ];
647
-
648
- rerender(<Graph {...defaultProps} marks={updatedMarks} />);
649
-
650
- expect(container.querySelector('#marks')).toBeInTheDocument();
651
- });
652
-
653
- it('handles adding new marks with different types', () => {
654
- const initialMarks = [
655
- {
656
- type: 'point',
657
- x: 2,
658
- y: 2,
659
- label: 'Point',
660
- showLabel: true,
661
- },
662
- ];
663
-
664
- const { rerender, container } = render(<Graph {...defaultProps} marks={initialMarks} />);
665
-
666
- const updatedMarks = [
667
- {
668
- type: 'point',
669
- x: 2,
670
- y: 2,
671
- label: 'Point',
672
- showLabel: true,
673
- },
674
- {
675
- type: 'line',
676
- from: { x: 0, y: 0 },
677
- to: { x: 1, y: 1 },
678
- label: 'Line',
679
- },
680
- ];
681
-
682
- rerender(<Graph {...defaultProps} marks={updatedMarks} />);
683
-
684
- expect(container.querySelector('#marks')).toBeInTheDocument();
685
- });
686
-
687
- it('handles removing marks', () => {
688
- const initialMarks = [
689
- {
690
- type: 'point',
691
- x: 2,
692
- y: 2,
693
- label: 'Point',
694
- showLabel: true,
695
- },
696
- {
697
- type: 'line',
698
- from: { x: 0, y: 0 },
699
- to: { x: 1, y: 1 },
700
- label: 'Line',
701
- },
702
- ];
703
-
704
- const { rerender, container } = render(<Graph {...defaultProps} marks={initialMarks} />);
705
-
706
- const updatedMarks = [
707
- {
708
- type: 'point',
709
- x: 2,
710
- y: 2,
711
- label: 'Point',
712
- showLabel: true,
713
- },
714
- ];
715
-
716
- rerender(<Graph {...defaultProps} marks={updatedMarks} />);
717
-
718
- expect(container.querySelector('#marks')).toBeInTheDocument();
719
- });
720
- });
721
- });