@pie-lib/graphing 4.0.5-next.34 → 4.0.5-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 (410) 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 +59 -42
  171. package/CHANGELOG.json +0 -1
  172. package/CHANGELOG.md +0 -1469
  173. package/LICENSE.md +0 -5
  174. package/lib/axis/arrow.js +0 -79
  175. package/lib/axis/arrow.js.map +0 -1
  176. package/lib/axis/axes.js +0 -329
  177. package/lib/axis/axes.js.map +0 -1
  178. package/lib/axis/index.js +0 -21
  179. package/lib/axis/index.js.map +0 -1
  180. package/lib/bg.js +0 -114
  181. package/lib/bg.js.map +0 -1
  182. package/lib/container/actions.js +0 -18
  183. package/lib/container/actions.js.map +0 -1
  184. package/lib/container/index.js +0 -127
  185. package/lib/container/index.js.map +0 -1
  186. package/lib/container/marks.js +0 -22
  187. package/lib/container/marks.js.map +0 -1
  188. package/lib/container/middleware.js +0 -19
  189. package/lib/container/middleware.js.map +0 -1
  190. package/lib/container/reducer.js +0 -18
  191. package/lib/container/reducer.js.map +0 -1
  192. package/lib/coordinates-label.js +0 -79
  193. package/lib/coordinates-label.js.map +0 -1
  194. package/lib/graph-with-controls.js +0 -294
  195. package/lib/graph-with-controls.js.map +0 -1
  196. package/lib/graph.js +0 -327
  197. package/lib/graph.js.map +0 -1
  198. package/lib/grid-setup.js +0 -414
  199. package/lib/grid-setup.js.map +0 -1
  200. package/lib/grid.js +0 -131
  201. package/lib/grid.js.map +0 -1
  202. package/lib/index.js +0 -47
  203. package/lib/index.js.map +0 -1
  204. package/lib/key-legend.js +0 -201
  205. package/lib/key-legend.js.map +0 -1
  206. package/lib/label-svg-icon.js +0 -50
  207. package/lib/label-svg-icon.js.map +0 -1
  208. package/lib/labels.js +0 -243
  209. package/lib/labels.js.map +0 -1
  210. package/lib/mark-label.js +0 -285
  211. package/lib/mark-label.js.map +0 -1
  212. package/lib/toggle-bar.js +0 -252
  213. package/lib/toggle-bar.js.map +0 -1
  214. package/lib/tool-menu.js +0 -78
  215. package/lib/tool-menu.js.map +0 -1
  216. package/lib/tools/absolute/component.js +0 -29
  217. package/lib/tools/absolute/component.js.map +0 -1
  218. package/lib/tools/absolute/index.js +0 -50
  219. package/lib/tools/absolute/index.js.map +0 -1
  220. package/lib/tools/circle/bg-circle.js +0 -123
  221. package/lib/tools/circle/bg-circle.js.map +0 -1
  222. package/lib/tools/circle/component.js +0 -321
  223. package/lib/tools/circle/component.js.map +0 -1
  224. package/lib/tools/circle/index.js +0 -41
  225. package/lib/tools/circle/index.js.map +0 -1
  226. package/lib/tools/exponential/component.js +0 -28
  227. package/lib/tools/exponential/component.js.map +0 -1
  228. package/lib/tools/exponential/index.js +0 -56
  229. package/lib/tools/exponential/index.js.map +0 -1
  230. package/lib/tools/index.js +0 -86
  231. package/lib/tools/index.js.map +0 -1
  232. package/lib/tools/line/component.js +0 -97
  233. package/lib/tools/line/component.js.map +0 -1
  234. package/lib/tools/line/index.js +0 -11
  235. package/lib/tools/line/index.js.map +0 -1
  236. package/lib/tools/parabola/component.js +0 -28
  237. package/lib/tools/parabola/component.js.map +0 -1
  238. package/lib/tools/parabola/index.js +0 -50
  239. package/lib/tools/parabola/index.js.map +0 -1
  240. package/lib/tools/point/component.js +0 -148
  241. package/lib/tools/point/component.js.map +0 -1
  242. package/lib/tools/point/index.js +0 -24
  243. package/lib/tools/point/index.js.map +0 -1
  244. package/lib/tools/polygon/component.js +0 -437
  245. package/lib/tools/polygon/component.js.map +0 -1
  246. package/lib/tools/polygon/index.js +0 -89
  247. package/lib/tools/polygon/index.js.map +0 -1
  248. package/lib/tools/polygon/line.js +0 -112
  249. package/lib/tools/polygon/line.js.map +0 -1
  250. package/lib/tools/polygon/polygon.js +0 -130
  251. package/lib/tools/polygon/polygon.js.map +0 -1
  252. package/lib/tools/ray/component.js +0 -95
  253. package/lib/tools/ray/component.js.map +0 -1
  254. package/lib/tools/ray/index.js +0 -11
  255. package/lib/tools/ray/index.js.map +0 -1
  256. package/lib/tools/segment/component.js +0 -71
  257. package/lib/tools/segment/component.js.map +0 -1
  258. package/lib/tools/segment/index.js +0 -11
  259. package/lib/tools/segment/index.js.map +0 -1
  260. package/lib/tools/shared/arrow-head.js +0 -111
  261. package/lib/tools/shared/arrow-head.js.map +0 -1
  262. package/lib/tools/shared/icons/CorrectSVG.js +0 -40
  263. package/lib/tools/shared/icons/CorrectSVG.js.map +0 -1
  264. package/lib/tools/shared/icons/IncorrectSVG.js +0 -40
  265. package/lib/tools/shared/icons/IncorrectSVG.js.map +0 -1
  266. package/lib/tools/shared/icons/MissingSVG.js +0 -39
  267. package/lib/tools/shared/icons/MissingSVG.js.map +0 -1
  268. package/lib/tools/shared/line/index.js +0 -550
  269. package/lib/tools/shared/line/index.js.map +0 -1
  270. package/lib/tools/shared/line/line-path.js +0 -118
  271. package/lib/tools/shared/line/line-path.js.map +0 -1
  272. package/lib/tools/shared/line/with-root-edge.js +0 -121
  273. package/lib/tools/shared/line/with-root-edge.js.map +0 -1
  274. package/lib/tools/shared/point/arrow-point.js +0 -72
  275. package/lib/tools/shared/point/arrow-point.js.map +0 -1
  276. package/lib/tools/shared/point/arrow.js +0 -67
  277. package/lib/tools/shared/point/arrow.js.map +0 -1
  278. package/lib/tools/shared/point/base-point.js +0 -157
  279. package/lib/tools/shared/point/base-point.js.map +0 -1
  280. package/lib/tools/shared/point/index.js +0 -68
  281. package/lib/tools/shared/point/index.js.map +0 -1
  282. package/lib/tools/shared/styles.js +0 -33
  283. package/lib/tools/shared/styles.js.map +0 -1
  284. package/lib/tools/shared/types.js +0 -16
  285. package/lib/tools/shared/types.js.map +0 -1
  286. package/lib/tools/sine/component.js +0 -40
  287. package/lib/tools/sine/component.js.map +0 -1
  288. package/lib/tools/sine/index.js +0 -50
  289. package/lib/tools/sine/index.js.map +0 -1
  290. package/lib/tools/vector/component.js +0 -68
  291. package/lib/tools/vector/component.js.map +0 -1
  292. package/lib/tools/vector/index.js +0 -11
  293. package/lib/tools/vector/index.js.map +0 -1
  294. package/lib/undo-redo.js +0 -86
  295. package/lib/undo-redo.js.map +0 -1
  296. package/lib/use-debounce.js +0 -25
  297. package/lib/use-debounce.js.map +0 -1
  298. package/lib/utils.js +0 -229
  299. package/lib/utils.js.map +0 -1
  300. package/src/__tests__/bg.test.jsx +0 -250
  301. package/src/__tests__/coordinates-label.test.jsx +0 -243
  302. package/src/__tests__/graph-with-controls.test.jsx +0 -198
  303. package/src/__tests__/graph.test.jsx +0 -721
  304. package/src/__tests__/grid-setup.test.jsx +0 -645
  305. package/src/__tests__/grid.test.jsx +0 -22
  306. package/src/__tests__/key-legend.test.jsx +0 -260
  307. package/src/__tests__/label-svg-icon.test.jsx +0 -278
  308. package/src/__tests__/labels.test.jsx +0 -55
  309. package/src/__tests__/mark-label.test.jsx +0 -63
  310. package/src/__tests__/toggle-bar.test.jsx +0 -146
  311. package/src/__tests__/tool-menu.test.jsx +0 -115
  312. package/src/__tests__/undo-redo.test.jsx +0 -24
  313. package/src/__tests__/use-debounce.test.js +0 -21
  314. package/src/__tests__/utils.js +0 -41
  315. package/src/__tests__/utils.test.js +0 -105
  316. package/src/axis/__tests__/arrow.test.jsx +0 -38
  317. package/src/axis/__tests__/axes.test.jsx +0 -216
  318. package/src/axis/arrow.jsx +0 -57
  319. package/src/axis/axes.jsx +0 -285
  320. package/src/axis/index.js +0 -3
  321. package/src/bg.jsx +0 -96
  322. package/src/container/__tests__/actions.test.js +0 -105
  323. package/src/container/__tests__/index.test.jsx +0 -319
  324. package/src/container/__tests__/marks.test.js +0 -172
  325. package/src/container/__tests__/middleware.test.js +0 -235
  326. package/src/container/__tests__/reducer.test.js +0 -324
  327. package/src/container/actions.js +0 -8
  328. package/src/container/index.jsx +0 -91
  329. package/src/container/marks.js +0 -14
  330. package/src/container/middleware.js +0 -7
  331. package/src/container/reducer.js +0 -5
  332. package/src/coordinates-label.jsx +0 -63
  333. package/src/graph-with-controls.jsx +0 -239
  334. package/src/graph.jsx +0 -303
  335. package/src/grid-setup.jsx +0 -432
  336. package/src/grid.jsx +0 -133
  337. package/src/index.js +0 -7
  338. package/src/key-legend.jsx +0 -142
  339. package/src/label-svg-icon.jsx +0 -39
  340. package/src/labels.jsx +0 -207
  341. package/src/mark-label.jsx +0 -244
  342. package/src/toggle-bar.jsx +0 -224
  343. package/src/tool-menu.jsx +0 -49
  344. package/src/tools/absolute/__tests__/component.test.jsx +0 -53
  345. package/src/tools/absolute/component.jsx +0 -23
  346. package/src/tools/absolute/index.js +0 -31
  347. package/src/tools/circle/__tests__/bg-circle.test.jsx +0 -26
  348. package/src/tools/circle/__tests__/component.test.jsx +0 -494
  349. package/src/tools/circle/__tests__/index.test.js +0 -480
  350. package/src/tools/circle/bg-circle.jsx +0 -81
  351. package/src/tools/circle/component.jsx +0 -264
  352. package/src/tools/circle/index.js +0 -25
  353. package/src/tools/exponential/__tests__/component.test.jsx +0 -53
  354. package/src/tools/exponential/__tests__/index.test.js +0 -729
  355. package/src/tools/exponential/component.jsx +0 -23
  356. package/src/tools/exponential/index.js +0 -39
  357. package/src/tools/index.js +0 -48
  358. package/src/tools/line/__tests__/component.test.jsx +0 -37
  359. package/src/tools/line/component.jsx +0 -93
  360. package/src/tools/line/index.js +0 -4
  361. package/src/tools/parabola/__tests__/component.test.jsx +0 -48
  362. package/src/tools/parabola/__tests__/index.test.js +0 -470
  363. package/src/tools/parabola/component.jsx +0 -23
  364. package/src/tools/parabola/index.js +0 -31
  365. package/src/tools/point/__tests__/component.test.jsx +0 -349
  366. package/src/tools/point/__tests__/index.test.js +0 -241
  367. package/src/tools/point/component.jsx +0 -126
  368. package/src/tools/point/index.js +0 -11
  369. package/src/tools/polygon/__tests__/component.test.jsx +0 -471
  370. package/src/tools/polygon/__tests__/index.test.js +0 -294
  371. package/src/tools/polygon/__tests__/line.test.jsx +0 -35
  372. package/src/tools/polygon/__tests__/polygon.test.jsx +0 -61
  373. package/src/tools/polygon/component.jsx +0 -409
  374. package/src/tools/polygon/index.js +0 -52
  375. package/src/tools/polygon/line.jsx +0 -74
  376. package/src/tools/polygon/polygon.jsx +0 -110
  377. package/src/tools/ray/__tests__/component.test.jsx +0 -29
  378. package/src/tools/ray/component.jsx +0 -92
  379. package/src/tools/ray/index.js +0 -4
  380. package/src/tools/segment/__tests__/component.test.jsx +0 -28
  381. package/src/tools/segment/component.jsx +0 -65
  382. package/src/tools/segment/index.js +0 -4
  383. package/src/tools/shared/__tests__/arrow-head.test.jsx +0 -31
  384. package/src/tools/shared/arrow-head.jsx +0 -102
  385. package/src/tools/shared/icons/CorrectSVG.jsx +0 -32
  386. package/src/tools/shared/icons/IncorrectSVG.jsx +0 -30
  387. package/src/tools/shared/icons/MissingSVG.jsx +0 -31
  388. package/src/tools/shared/line/__tests__/index.test.jsx +0 -109
  389. package/src/tools/shared/line/__tests__/line-path.test.jsx +0 -53
  390. package/src/tools/shared/line/__tests__/with-root-edge.test.jsx +0 -73
  391. package/src/tools/shared/line/index.jsx +0 -487
  392. package/src/tools/shared/line/line-path.jsx +0 -80
  393. package/src/tools/shared/line/with-root-edge.jsx +0 -97
  394. package/src/tools/shared/point/__tests__/arrow-point.test.jsx +0 -91
  395. package/src/tools/shared/point/__tests__/base-point.test.jsx +0 -87
  396. package/src/tools/shared/point/arrow-point.jsx +0 -46
  397. package/src/tools/shared/point/arrow.jsx +0 -37
  398. package/src/tools/shared/point/base-point.jsx +0 -121
  399. package/src/tools/shared/point/index.jsx +0 -54
  400. package/src/tools/shared/styles.js +0 -27
  401. package/src/tools/shared/types.js +0 -10
  402. package/src/tools/sine/__tests__/component.test.jsx +0 -51
  403. package/src/tools/sine/component.jsx +0 -32
  404. package/src/tools/sine/index.js +0 -33
  405. package/src/tools/vector/__tests__/component.test.jsx +0 -25
  406. package/src/tools/vector/component.jsx +0 -56
  407. package/src/tools/vector/index.js +0 -4
  408. package/src/undo-redo.jsx +0 -45
  409. package/src/use-debounce.js +0 -13
  410. package/src/utils.js +0 -224
@@ -1,729 +0,0 @@
1
- import { tool } from '../index';
2
- import { equalPoints, sameAxes } from '../../../utils';
3
-
4
- jest.mock('../../../utils', () => ({
5
- equalPoints: jest.fn(),
6
- sameAxes: jest.fn(),
7
- }));
8
-
9
- jest.mock('debug', () => {
10
- return jest.fn(() => jest.fn());
11
- });
12
-
13
- describe('exponential tool', () => {
14
- let exponentialTool;
15
-
16
- beforeEach(() => {
17
- jest.clearAllMocks();
18
- exponentialTool = tool();
19
- });
20
-
21
- describe('tool configuration', () => {
22
- it('creates a tool object', () => {
23
- expect(exponentialTool).toBeDefined();
24
- expect(typeof exponentialTool).toBe('object');
25
- });
26
-
27
- it('has type exponential', () => {
28
- expect(exponentialTool.type).toBe('exponential');
29
- });
30
-
31
- it('has a Component', () => {
32
- expect(exponentialTool.Component).toBeDefined();
33
- });
34
-
35
- it('has complete function', () => {
36
- expect(typeof exponentialTool.complete).toBe('function');
37
- });
38
-
39
- it('has addPoint function', () => {
40
- expect(typeof exponentialTool.addPoint).toBe('function');
41
- });
42
-
43
- it('does not have hover function', () => {
44
- expect(exponentialTool.hover).toBeUndefined();
45
- });
46
- });
47
-
48
- describe('complete', () => {
49
- it('marks exponential as complete', () => {
50
- const data = { x: 5, y: 10 };
51
- const mark = {
52
- type: 'exponential',
53
- root: { x: 0, y: 1 },
54
- edge: { x: 5, y: 10 },
55
- building: true,
56
- closed: false,
57
- };
58
-
59
- const result = exponentialTool.complete(data, mark);
60
-
61
- expect(result).toEqual({
62
- ...mark,
63
- building: false,
64
- closed: true,
65
- });
66
- });
67
-
68
- it('sets building to false', () => {
69
- const mark = {
70
- type: 'exponential',
71
- root: { x: 0, y: 1 },
72
- building: true,
73
- };
74
-
75
- const result = exponentialTool.complete({}, mark);
76
-
77
- expect(result.building).toBe(false);
78
- });
79
-
80
- it('sets closed to true', () => {
81
- const mark = {
82
- type: 'exponential',
83
- root: { x: 0, y: 1 },
84
- closed: false,
85
- };
86
-
87
- const result = exponentialTool.complete({}, mark);
88
-
89
- expect(result.closed).toBe(true);
90
- });
91
-
92
- it('preserves mark properties', () => {
93
- const mark = {
94
- type: 'exponential',
95
- root: { x: 0, y: 1 },
96
- edge: { x: 5, y: 10 },
97
- label: 'Exp A',
98
- correctness: { value: 'correct' },
99
- };
100
-
101
- const result = exponentialTool.complete({}, mark);
102
-
103
- expect(result.label).toBe('Exp A');
104
- expect(result.correctness).toEqual({ value: 'correct' });
105
- expect(result.root).toEqual(mark.root);
106
- expect(result.edge).toEqual(mark.edge);
107
- });
108
-
109
- it('does not mutate original mark', () => {
110
- const mark = {
111
- type: 'exponential',
112
- root: { x: 0, y: 1 },
113
- building: true,
114
- closed: false,
115
- };
116
- const originalMark = { ...mark };
117
-
118
- exponentialTool.complete({}, mark);
119
-
120
- expect(mark).toEqual(originalMark);
121
- });
122
- });
123
-
124
- describe('addPoint', () => {
125
- describe('first point (creating root)', () => {
126
- it('creates new exponential mark when no mark exists', () => {
127
- const point = { x: 0, y: 5 };
128
- const mark = null;
129
- equalPoints.mockReturnValue(false);
130
- sameAxes.mockReturnValue(false);
131
-
132
- const result = exponentialTool.addPoint(point, mark);
133
-
134
- expect(result).toEqual({
135
- type: 'exponential',
136
- root: point,
137
- edge: undefined,
138
- closed: false,
139
- building: true,
140
- });
141
- });
142
-
143
- it('creates mark with building true', () => {
144
- const point = { x: 2, y: 3 };
145
- equalPoints.mockReturnValue(false);
146
- sameAxes.mockReturnValue(false);
147
-
148
- const result = exponentialTool.addPoint(point, null);
149
-
150
- expect(result.building).toBe(true);
151
- });
152
-
153
- it('creates mark with closed false', () => {
154
- const point = { x: 2, y: 3 };
155
- equalPoints.mockReturnValue(false);
156
- sameAxes.mockReturnValue(false);
157
-
158
- const result = exponentialTool.addPoint(point, null);
159
-
160
- expect(result.closed).toBe(false);
161
- });
162
-
163
- it('creates mark with undefined edge', () => {
164
- const point = { x: 2, y: 3 };
165
- equalPoints.mockReturnValue(false);
166
- sameAxes.mockReturnValue(false);
167
-
168
- const result = exponentialTool.addPoint(point, null);
169
-
170
- expect(result.edge).toBeUndefined();
171
- });
172
-
173
- it('works with positive coordinates', () => {
174
- const point = { x: 5, y: 10 };
175
- equalPoints.mockReturnValue(false);
176
- sameAxes.mockReturnValue(false);
177
-
178
- const result = exponentialTool.addPoint(point, null);
179
-
180
- expect(result.root).toEqual(point);
181
- });
182
-
183
- it('works with negative y coordinate', () => {
184
- const point = { x: 5, y: -10 };
185
- equalPoints.mockReturnValue(false);
186
- sameAxes.mockReturnValue(false);
187
-
188
- const result = exponentialTool.addPoint(point, null);
189
-
190
- expect(result.root).toEqual(point);
191
- });
192
-
193
- it('works with decimal coordinates', () => {
194
- const point = { x: 3.5, y: 7.25 };
195
- equalPoints.mockReturnValue(false);
196
- sameAxes.mockReturnValue(false);
197
-
198
- const result = exponentialTool.addPoint(point, null);
199
-
200
- expect(result.root).toEqual(point);
201
- });
202
- });
203
-
204
- describe('second point (completing exponential)', () => {
205
- it('completes exponential when adding edge point', () => {
206
- const root = { x: 0, y: 1 };
207
- const edge = { x: 5, y: 10 };
208
- const mark = {
209
- type: 'exponential',
210
- root,
211
- edge: undefined,
212
- closed: false,
213
- building: true,
214
- };
215
- equalPoints.mockReturnValue(false);
216
- sameAxes.mockReturnValue(false);
217
-
218
- const result = exponentialTool.addPoint(edge, mark);
219
-
220
- expect(result).toEqual({
221
- ...mark,
222
- edge,
223
- closed: true,
224
- building: false,
225
- });
226
- });
227
-
228
- it('sets building to false', () => {
229
- const mark = {
230
- type: 'exponential',
231
- root: { x: 0, y: 1 },
232
- building: true,
233
- };
234
- const point = { x: 5, y: 10 };
235
- equalPoints.mockReturnValue(false);
236
- sameAxes.mockReturnValue(false);
237
-
238
- const result = exponentialTool.addPoint(point, mark);
239
-
240
- expect(result.building).toBe(false);
241
- });
242
-
243
- it('sets closed to true', () => {
244
- const mark = {
245
- type: 'exponential',
246
- root: { x: 0, y: 1 },
247
- closed: false,
248
- };
249
- const point = { x: 5, y: 10 };
250
- equalPoints.mockReturnValue(false);
251
- sameAxes.mockReturnValue(false);
252
-
253
- const result = exponentialTool.addPoint(point, mark);
254
-
255
- expect(result.closed).toBe(true);
256
- });
257
-
258
- it('preserves root when adding edge', () => {
259
- const root = { x: 1, y: 2 };
260
- const mark = {
261
- type: 'exponential',
262
- root,
263
- building: true,
264
- };
265
- const edge = { x: 5, y: 8 };
266
- equalPoints.mockReturnValue(false);
267
- sameAxes.mockReturnValue(false);
268
-
269
- const result = exponentialTool.addPoint(edge, mark);
270
-
271
- expect(result.root).toEqual(root);
272
- expect(result.edge).toEqual(edge);
273
- });
274
-
275
- it('preserves mark properties', () => {
276
- const mark = {
277
- type: 'exponential',
278
- root: { x: 0, y: 1 },
279
- label: 'Exp 1',
280
- correctness: { value: 'correct' },
281
- };
282
- const point = { x: 5, y: 10 };
283
- equalPoints.mockReturnValue(false);
284
- sameAxes.mockReturnValue(false);
285
-
286
- const result = exponentialTool.addPoint(point, mark);
287
-
288
- expect(result.label).toBe('Exp 1');
289
- expect(result.correctness).toEqual({ value: 'correct' });
290
- });
291
- });
292
-
293
- describe('same point handling', () => {
294
- it('returns same mark when clicking equal point', () => {
295
- const point = { x: 5, y: 10 };
296
- const mark = {
297
- type: 'exponential',
298
- root: point,
299
- building: true,
300
- };
301
- equalPoints.mockReturnValue(true);
302
- sameAxes.mockReturnValue(false);
303
-
304
- const result = exponentialTool.addPoint(point, mark);
305
-
306
- expect(result).toBe(mark);
307
- });
308
-
309
- it('returns same mark when clicking point on same axis', () => {
310
- const mark = {
311
- type: 'exponential',
312
- root: { x: 5, y: 10 },
313
- building: true,
314
- };
315
- const point = { x: 8, y: 10 }; // same y
316
- equalPoints.mockReturnValue(false);
317
- sameAxes.mockReturnValue(true);
318
-
319
- const result = exponentialTool.addPoint(point, mark);
320
-
321
- expect(result).toBe(mark);
322
- });
323
-
324
- it('calls equalPoints with correct arguments', () => {
325
- const point = { x: 5, y: 10 };
326
- const mark = {
327
- type: 'exponential',
328
- root: { x: 5, y: 10 },
329
- building: true,
330
- };
331
- equalPoints.mockReturnValue(true);
332
-
333
- exponentialTool.addPoint(point, mark);
334
-
335
- expect(equalPoints).toHaveBeenCalledWith(mark.root, point);
336
- });
337
-
338
- it('calls sameAxes with correct arguments', () => {
339
- const point = { x: 8, y: 10 };
340
- const mark = {
341
- type: 'exponential',
342
- root: { x: 5, y: 10 },
343
- building: true,
344
- };
345
- equalPoints.mockReturnValue(false);
346
- sameAxes.mockReturnValue(true);
347
-
348
- exponentialTool.addPoint(point, mark);
349
-
350
- expect(sameAxes).toHaveBeenCalledWith(mark.root, point);
351
- });
352
- });
353
-
354
- describe('opposite sign y-coordinates', () => {
355
- it('returns same mark when root and point have opposite sign y', () => {
356
- const mark = {
357
- type: 'exponential',
358
- root: { x: 0, y: 5 }, // positive y
359
- building: true,
360
- };
361
- const point = { x: 5, y: -10 }; // negative y
362
- equalPoints.mockReturnValue(false);
363
- sameAxes.mockReturnValue(false);
364
-
365
- const result = exponentialTool.addPoint(point, mark);
366
-
367
- expect(result).toBe(mark);
368
- });
369
-
370
- it('returns same mark when root is negative and point is positive', () => {
371
- const mark = {
372
- type: 'exponential',
373
- root: { x: 0, y: -5 }, // negative y
374
- building: true,
375
- };
376
- const point = { x: 5, y: 10 }; // positive y
377
- equalPoints.mockReturnValue(false);
378
- sameAxes.mockReturnValue(false);
379
-
380
- const result = exponentialTool.addPoint(point, mark);
381
-
382
- expect(result).toBe(mark);
383
- });
384
-
385
- it('allows points with same sign y (both positive)', () => {
386
- const mark = {
387
- type: 'exponential',
388
- root: { x: 0, y: 5 },
389
- building: true,
390
- };
391
- const point = { x: 5, y: 10 };
392
- equalPoints.mockReturnValue(false);
393
- sameAxes.mockReturnValue(false);
394
-
395
- const result = exponentialTool.addPoint(point, mark);
396
-
397
- expect(result.edge).toEqual(point);
398
- expect(result.building).toBe(false);
399
- });
400
-
401
- it('allows points with same sign y (both negative)', () => {
402
- const mark = {
403
- type: 'exponential',
404
- root: { x: 0, y: -5 },
405
- building: true,
406
- };
407
- const point = { x: 5, y: -10 };
408
- equalPoints.mockReturnValue(false);
409
- sameAxes.mockReturnValue(false);
410
-
411
- const result = exponentialTool.addPoint(point, mark);
412
-
413
- expect(result.edge).toEqual(point);
414
- expect(result.building).toBe(false);
415
- });
416
- });
417
-
418
- describe('zero y-coordinate handling', () => {
419
- it('returns same mark when point has y = 0', () => {
420
- const mark = {
421
- type: 'exponential',
422
- root: { x: 0, y: 5 },
423
- building: true,
424
- };
425
- const point = { x: 5, y: 0 };
426
- equalPoints.mockReturnValue(false);
427
- sameAxes.mockReturnValue(false);
428
-
429
- const result = exponentialTool.addPoint(point, mark);
430
-
431
- expect(result).toBe(mark);
432
- });
433
-
434
- it('prevents adding point with zero y', () => {
435
- const point = { x: 5, y: 0 };
436
- const mark = {
437
- type: 'exponential',
438
- root: { x: 1, y: 2 },
439
- building: true,
440
- };
441
- equalPoints.mockReturnValue(false);
442
- sameAxes.mockReturnValue(false);
443
-
444
- const result = exponentialTool.addPoint(point, mark);
445
-
446
- expect(result).toBe(mark);
447
- expect(result.edge).toBeUndefined();
448
- });
449
-
450
- it('prevents creating root with zero y', () => {
451
- const point = { x: 5, y: 0 };
452
- equalPoints.mockReturnValue(false);
453
- sameAxes.mockReturnValue(false);
454
-
455
- const result = exponentialTool.addPoint(point, null);
456
-
457
- expect(result).toBeNull();
458
- });
459
-
460
- it('allows positive y values close to zero', () => {
461
- const point = { x: 5, y: 0.001 };
462
- equalPoints.mockReturnValue(false);
463
- sameAxes.mockReturnValue(false);
464
-
465
- const result = exponentialTool.addPoint(point, null);
466
-
467
- expect(result.root).toEqual(point);
468
- });
469
-
470
- it('allows negative y values close to zero', () => {
471
- const point = { x: 5, y: -0.001 };
472
- equalPoints.mockReturnValue(false);
473
- sameAxes.mockReturnValue(false);
474
-
475
- const result = exponentialTool.addPoint(point, null);
476
-
477
- expect(result.root).toEqual(point);
478
- });
479
- });
480
-
481
- describe('error handling', () => {
482
- it('throws error when mark has no root', () => {
483
- const mark = {
484
- type: 'exponential',
485
- building: true,
486
- // root is missing
487
- };
488
- const point = { x: 5, y: 10 };
489
- equalPoints.mockReturnValue(false);
490
- sameAxes.mockReturnValue(false);
491
-
492
- expect(() => {
493
- exponentialTool.addPoint(point, mark);
494
- }).toThrow(); // Will throw TypeError when accessing undefined.y
495
- });
496
-
497
- it('throws error when mark root is null', () => {
498
- const mark = {
499
- type: 'exponential',
500
- root: null,
501
- building: true,
502
- };
503
- const point = { x: 5, y: 10 };
504
- equalPoints.mockReturnValue(false);
505
- sameAxes.mockReturnValue(false);
506
-
507
- expect(() => {
508
- exponentialTool.addPoint(point, mark);
509
- }).toThrow(); // Will throw TypeError when accessing null.y
510
- });
511
-
512
- it('throws error when mark root is undefined', () => {
513
- const mark = {
514
- type: 'exponential',
515
- root: undefined,
516
- building: true,
517
- };
518
- const point = { x: 5, y: 10 };
519
- equalPoints.mockReturnValue(false);
520
- sameAxes.mockReturnValue(false);
521
-
522
- expect(() => {
523
- exponentialTool.addPoint(point, mark);
524
- }).toThrow(); // Will throw TypeError when accessing undefined.y
525
- });
526
- });
527
-
528
- describe('edge cases', () => {
529
- it('handles undefined mark on first click', () => {
530
- const point = { x: 5, y: 10 };
531
- equalPoints.mockReturnValue(false);
532
- sameAxes.mockReturnValue(false);
533
-
534
- const result = exponentialTool.addPoint(point, undefined);
535
-
536
- expect(result.type).toBe('exponential');
537
- expect(result.root).toEqual(point);
538
- expect(result.building).toBe(true);
539
- });
540
-
541
- it('handles very large positive y', () => {
542
- const point = { x: 5, y: 10000 };
543
- equalPoints.mockReturnValue(false);
544
- sameAxes.mockReturnValue(false);
545
-
546
- const result = exponentialTool.addPoint(point, null);
547
-
548
- expect(result.root).toEqual(point);
549
- });
550
-
551
- it('handles very large negative y', () => {
552
- const point = { x: 5, y: -10000 };
553
- equalPoints.mockReturnValue(false);
554
- sameAxes.mockReturnValue(false);
555
-
556
- const result = exponentialTool.addPoint(point, null);
557
-
558
- expect(result.root).toEqual(point);
559
- });
560
-
561
- it('handles negative x coordinates', () => {
562
- const point = { x: -5, y: 10 };
563
- equalPoints.mockReturnValue(false);
564
- sameAxes.mockReturnValue(false);
565
-
566
- const result = exponentialTool.addPoint(point, null);
567
-
568
- expect(result.root).toEqual(point);
569
- });
570
-
571
- it('handles mark with existing edge', () => {
572
- const mark = {
573
- type: 'exponential',
574
- root: { x: 0, y: 1 },
575
- edge: { x: 3, y: 3 },
576
- building: false,
577
- closed: true,
578
- };
579
- const newEdge = { x: 5, y: 5 };
580
- equalPoints.mockReturnValue(false);
581
- sameAxes.mockReturnValue(false);
582
-
583
- const result = exponentialTool.addPoint(newEdge, mark);
584
-
585
- expect(result.edge).toEqual(newEdge);
586
- expect(result.closed).toBe(true);
587
- expect(result.building).toBe(false);
588
- });
589
- });
590
-
591
- describe('immutability', () => {
592
- it('does not mutate original mark when adding edge', () => {
593
- const mark = {
594
- type: 'exponential',
595
- root: { x: 0, y: 1 },
596
- building: true,
597
- };
598
- const originalMark = { ...mark };
599
- const point = { x: 5, y: 10 };
600
- equalPoints.mockReturnValue(false);
601
- sameAxes.mockReturnValue(false);
602
-
603
- const result = exponentialTool.addPoint(point, mark);
604
-
605
- expect(mark).toEqual(originalMark);
606
- expect(result).not.toBe(mark);
607
- });
608
-
609
- it('does not mutate original mark when returning same', () => {
610
- const mark = {
611
- type: 'exponential',
612
- root: { x: 5, y: 10 },
613
- building: true,
614
- };
615
- const point = { x: 5, y: 10 };
616
- equalPoints.mockReturnValue(true);
617
-
618
- const result = exponentialTool.addPoint(point, mark);
619
-
620
- expect(result).toBe(mark);
621
- });
622
- });
623
- });
624
-
625
- describe('integration scenarios', () => {
626
- it('handles full exponential creation flow', () => {
627
- equalPoints.mockReturnValue(false);
628
- sameAxes.mockReturnValue(false);
629
-
630
- // First click - create root
631
- const firstPoint = { x: 0, y: 1 };
632
- const mark1 = exponentialTool.addPoint(firstPoint, null);
633
- expect(mark1.root).toEqual(firstPoint);
634
- expect(mark1.building).toBe(true);
635
- expect(mark1.closed).toBe(false);
636
-
637
- // Second click - complete exponential
638
- const secondPoint = { x: 5, y: 10 };
639
- const mark2 = exponentialTool.addPoint(secondPoint, mark1);
640
- expect(mark2.root).toEqual(firstPoint);
641
- expect(mark2.edge).toEqual(secondPoint);
642
- expect(mark2.building).toBe(false);
643
- expect(mark2.closed).toBe(true);
644
-
645
- // Complete
646
- const mark3 = exponentialTool.complete({}, mark2);
647
- expect(mark3.building).toBe(false);
648
- expect(mark3.closed).toBe(true);
649
- });
650
-
651
- it('handles rejected second point (zero y)', () => {
652
- equalPoints.mockReturnValue(false);
653
- sameAxes.mockReturnValue(false);
654
-
655
- const firstPoint = { x: 0, y: 1 };
656
- const mark1 = exponentialTool.addPoint(firstPoint, null);
657
-
658
- const secondPoint = { x: 5, y: 0 };
659
- const mark2 = exponentialTool.addPoint(secondPoint, mark1);
660
-
661
- // Should return unchanged mark
662
- expect(mark2).toBe(mark1);
663
- expect(mark2.edge).toBeUndefined();
664
- });
665
-
666
- it('handles rejected second point (opposite sign)', () => {
667
- equalPoints.mockReturnValue(false);
668
- sameAxes.mockReturnValue(false);
669
-
670
- const firstPoint = { x: 0, y: 5 };
671
- const mark1 = exponentialTool.addPoint(firstPoint, null);
672
-
673
- const secondPoint = { x: 5, y: -10 };
674
- const mark2 = exponentialTool.addPoint(secondPoint, mark1);
675
-
676
- // Should return unchanged mark
677
- expect(mark2).toBe(mark1);
678
- expect(mark2.edge).toBeUndefined();
679
- });
680
-
681
- it('handles rejected second point (same axes)', () => {
682
- equalPoints.mockReturnValue(false);
683
- sameAxes.mockReturnValue(true);
684
-
685
- const firstPoint = { x: 0, y: 5 };
686
- const mark1 = exponentialTool.addPoint(firstPoint, null);
687
-
688
- const secondPoint = { x: 10, y: 5 }; // same y
689
- const mark2 = exponentialTool.addPoint(secondPoint, mark1);
690
-
691
- // Should return unchanged mark
692
- expect(mark2).toBe(mark1);
693
- });
694
-
695
- it('handles exponential with negative y values', () => {
696
- equalPoints.mockReturnValue(false);
697
- sameAxes.mockReturnValue(false);
698
-
699
- const firstPoint = { x: 0, y: -1 };
700
- const mark1 = exponentialTool.addPoint(firstPoint, null);
701
-
702
- const secondPoint = { x: 5, y: -10 };
703
- const mark2 = exponentialTool.addPoint(secondPoint, mark1);
704
-
705
- expect(mark2.root).toEqual(firstPoint);
706
- expect(mark2.edge).toEqual(secondPoint);
707
- expect(mark2.building).toBe(false);
708
- expect(mark2.closed).toBe(true);
709
- });
710
-
711
- it('handles exponential with properties', () => {
712
- equalPoints.mockReturnValue(false);
713
- sameAxes.mockReturnValue(false);
714
-
715
- const firstPoint = { x: 0, y: 1, label: 'Start' };
716
- const mark1 = exponentialTool.addPoint(firstPoint, null);
717
-
718
- // Add properties
719
- mark1.label = 'Exp A';
720
- mark1.correctness = { value: 'correct' };
721
-
722
- const secondPoint = { x: 5, y: 10 };
723
- const mark2 = exponentialTool.addPoint(secondPoint, mark1);
724
-
725
- expect(mark2.label).toBe('Exp A');
726
- expect(mark2.correctness).toEqual({ value: 'correct' });
727
- });
728
- });
729
- });