@pie-lib/graphing 4.1.0-beta.9 → 5.0.0-next.37

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 (361) 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/axis/arrow.js +0 -79
  174. package/lib/axis/arrow.js.map +0 -1
  175. package/lib/axis/axes.js +0 -329
  176. package/lib/axis/axes.js.map +0 -1
  177. package/lib/axis/index.js +0 -21
  178. package/lib/axis/index.js.map +0 -1
  179. package/lib/bg.js +0 -114
  180. package/lib/bg.js.map +0 -1
  181. package/lib/container/actions.js +0 -18
  182. package/lib/container/actions.js.map +0 -1
  183. package/lib/container/index.js +0 -127
  184. package/lib/container/index.js.map +0 -1
  185. package/lib/container/marks.js +0 -22
  186. package/lib/container/marks.js.map +0 -1
  187. package/lib/container/middleware.js +0 -19
  188. package/lib/container/middleware.js.map +0 -1
  189. package/lib/container/reducer.js +0 -18
  190. package/lib/container/reducer.js.map +0 -1
  191. package/lib/coordinates-label.js +0 -79
  192. package/lib/coordinates-label.js.map +0 -1
  193. package/lib/graph-with-controls.js +0 -294
  194. package/lib/graph-with-controls.js.map +0 -1
  195. package/lib/graph.js +0 -327
  196. package/lib/graph.js.map +0 -1
  197. package/lib/grid-setup.js +0 -414
  198. package/lib/grid-setup.js.map +0 -1
  199. package/lib/grid.js +0 -131
  200. package/lib/grid.js.map +0 -1
  201. package/lib/index.js +0 -47
  202. package/lib/index.js.map +0 -1
  203. package/lib/key-legend.js +0 -201
  204. package/lib/key-legend.js.map +0 -1
  205. package/lib/label-svg-icon.js +0 -50
  206. package/lib/label-svg-icon.js.map +0 -1
  207. package/lib/labels.js +0 -243
  208. package/lib/labels.js.map +0 -1
  209. package/lib/mark-label.js +0 -285
  210. package/lib/mark-label.js.map +0 -1
  211. package/lib/toggle-bar.js +0 -252
  212. package/lib/toggle-bar.js.map +0 -1
  213. package/lib/tool-menu.js +0 -78
  214. package/lib/tool-menu.js.map +0 -1
  215. package/lib/tools/absolute/component.js +0 -29
  216. package/lib/tools/absolute/component.js.map +0 -1
  217. package/lib/tools/absolute/index.js +0 -50
  218. package/lib/tools/absolute/index.js.map +0 -1
  219. package/lib/tools/circle/bg-circle.js +0 -123
  220. package/lib/tools/circle/bg-circle.js.map +0 -1
  221. package/lib/tools/circle/component.js +0 -321
  222. package/lib/tools/circle/component.js.map +0 -1
  223. package/lib/tools/circle/index.js +0 -41
  224. package/lib/tools/circle/index.js.map +0 -1
  225. package/lib/tools/exponential/component.js +0 -28
  226. package/lib/tools/exponential/component.js.map +0 -1
  227. package/lib/tools/exponential/index.js +0 -56
  228. package/lib/tools/exponential/index.js.map +0 -1
  229. package/lib/tools/index.js +0 -86
  230. package/lib/tools/index.js.map +0 -1
  231. package/lib/tools/line/component.js +0 -97
  232. package/lib/tools/line/component.js.map +0 -1
  233. package/lib/tools/line/index.js +0 -11
  234. package/lib/tools/line/index.js.map +0 -1
  235. package/lib/tools/parabola/component.js +0 -28
  236. package/lib/tools/parabola/component.js.map +0 -1
  237. package/lib/tools/parabola/index.js +0 -50
  238. package/lib/tools/parabola/index.js.map +0 -1
  239. package/lib/tools/point/component.js +0 -148
  240. package/lib/tools/point/component.js.map +0 -1
  241. package/lib/tools/point/index.js +0 -24
  242. package/lib/tools/point/index.js.map +0 -1
  243. package/lib/tools/polygon/component.js +0 -437
  244. package/lib/tools/polygon/component.js.map +0 -1
  245. package/lib/tools/polygon/index.js +0 -89
  246. package/lib/tools/polygon/index.js.map +0 -1
  247. package/lib/tools/polygon/line.js +0 -112
  248. package/lib/tools/polygon/line.js.map +0 -1
  249. package/lib/tools/polygon/polygon.js +0 -130
  250. package/lib/tools/polygon/polygon.js.map +0 -1
  251. package/lib/tools/ray/component.js +0 -95
  252. package/lib/tools/ray/component.js.map +0 -1
  253. package/lib/tools/ray/index.js +0 -11
  254. package/lib/tools/ray/index.js.map +0 -1
  255. package/lib/tools/segment/component.js +0 -71
  256. package/lib/tools/segment/component.js.map +0 -1
  257. package/lib/tools/segment/index.js +0 -11
  258. package/lib/tools/segment/index.js.map +0 -1
  259. package/lib/tools/shared/arrow-head.js +0 -111
  260. package/lib/tools/shared/arrow-head.js.map +0 -1
  261. package/lib/tools/shared/icons/CorrectSVG.js +0 -40
  262. package/lib/tools/shared/icons/CorrectSVG.js.map +0 -1
  263. package/lib/tools/shared/icons/IncorrectSVG.js +0 -40
  264. package/lib/tools/shared/icons/IncorrectSVG.js.map +0 -1
  265. package/lib/tools/shared/icons/MissingSVG.js +0 -39
  266. package/lib/tools/shared/icons/MissingSVG.js.map +0 -1
  267. package/lib/tools/shared/line/index.js +0 -550
  268. package/lib/tools/shared/line/index.js.map +0 -1
  269. package/lib/tools/shared/line/line-path.js +0 -118
  270. package/lib/tools/shared/line/line-path.js.map +0 -1
  271. package/lib/tools/shared/line/with-root-edge.js +0 -121
  272. package/lib/tools/shared/line/with-root-edge.js.map +0 -1
  273. package/lib/tools/shared/point/arrow-point.js +0 -72
  274. package/lib/tools/shared/point/arrow-point.js.map +0 -1
  275. package/lib/tools/shared/point/arrow.js +0 -67
  276. package/lib/tools/shared/point/arrow.js.map +0 -1
  277. package/lib/tools/shared/point/base-point.js +0 -157
  278. package/lib/tools/shared/point/base-point.js.map +0 -1
  279. package/lib/tools/shared/point/index.js +0 -68
  280. package/lib/tools/shared/point/index.js.map +0 -1
  281. package/lib/tools/shared/styles.js +0 -33
  282. package/lib/tools/shared/styles.js.map +0 -1
  283. package/lib/tools/shared/types.js +0 -16
  284. package/lib/tools/shared/types.js.map +0 -1
  285. package/lib/tools/sine/component.js +0 -40
  286. package/lib/tools/sine/component.js.map +0 -1
  287. package/lib/tools/sine/index.js +0 -50
  288. package/lib/tools/sine/index.js.map +0 -1
  289. package/lib/tools/vector/component.js +0 -68
  290. package/lib/tools/vector/component.js.map +0 -1
  291. package/lib/tools/vector/index.js +0 -11
  292. package/lib/tools/vector/index.js.map +0 -1
  293. package/lib/undo-redo.js +0 -86
  294. package/lib/undo-redo.js.map +0 -1
  295. package/lib/use-debounce.js +0 -25
  296. package/lib/use-debounce.js.map +0 -1
  297. package/lib/utils.js +0 -229
  298. package/lib/utils.js.map +0 -1
  299. package/src/axis/arrow.jsx +0 -57
  300. package/src/axis/axes.jsx +0 -285
  301. package/src/axis/index.js +0 -3
  302. package/src/bg.jsx +0 -96
  303. package/src/container/actions.js +0 -8
  304. package/src/container/index.jsx +0 -91
  305. package/src/container/marks.js +0 -14
  306. package/src/container/middleware.js +0 -7
  307. package/src/container/reducer.js +0 -5
  308. package/src/coordinates-label.jsx +0 -63
  309. package/src/graph-with-controls.jsx +0 -239
  310. package/src/graph.jsx +0 -303
  311. package/src/grid-setup.jsx +0 -432
  312. package/src/grid.jsx +0 -133
  313. package/src/index.js +0 -7
  314. package/src/key-legend.jsx +0 -142
  315. package/src/label-svg-icon.jsx +0 -39
  316. package/src/labels.jsx +0 -207
  317. package/src/mark-label.jsx +0 -244
  318. package/src/toggle-bar.jsx +0 -224
  319. package/src/tool-menu.jsx +0 -49
  320. package/src/tools/absolute/component.jsx +0 -23
  321. package/src/tools/absolute/index.js +0 -31
  322. package/src/tools/circle/bg-circle.jsx +0 -81
  323. package/src/tools/circle/component.jsx +0 -264
  324. package/src/tools/circle/index.js +0 -25
  325. package/src/tools/exponential/component.jsx +0 -23
  326. package/src/tools/exponential/index.js +0 -39
  327. package/src/tools/index.js +0 -48
  328. package/src/tools/line/component.jsx +0 -93
  329. package/src/tools/line/index.js +0 -4
  330. package/src/tools/parabola/component.jsx +0 -23
  331. package/src/tools/parabola/index.js +0 -31
  332. package/src/tools/point/component.jsx +0 -126
  333. package/src/tools/point/index.js +0 -11
  334. package/src/tools/polygon/component.jsx +0 -409
  335. package/src/tools/polygon/index.js +0 -52
  336. package/src/tools/polygon/line.jsx +0 -74
  337. package/src/tools/polygon/polygon.jsx +0 -110
  338. package/src/tools/ray/component.jsx +0 -92
  339. package/src/tools/ray/index.js +0 -4
  340. package/src/tools/segment/component.jsx +0 -65
  341. package/src/tools/segment/index.js +0 -4
  342. package/src/tools/shared/arrow-head.jsx +0 -102
  343. package/src/tools/shared/icons/CorrectSVG.jsx +0 -32
  344. package/src/tools/shared/icons/IncorrectSVG.jsx +0 -30
  345. package/src/tools/shared/icons/MissingSVG.jsx +0 -31
  346. package/src/tools/shared/line/index.jsx +0 -487
  347. package/src/tools/shared/line/line-path.jsx +0 -80
  348. package/src/tools/shared/line/with-root-edge.jsx +0 -97
  349. package/src/tools/shared/point/arrow-point.jsx +0 -46
  350. package/src/tools/shared/point/arrow.jsx +0 -37
  351. package/src/tools/shared/point/base-point.jsx +0 -121
  352. package/src/tools/shared/point/index.jsx +0 -54
  353. package/src/tools/shared/styles.js +0 -27
  354. package/src/tools/shared/types.js +0 -10
  355. package/src/tools/sine/component.jsx +0 -32
  356. package/src/tools/sine/index.js +0 -33
  357. package/src/tools/vector/component.jsx +0 -56
  358. package/src/tools/vector/index.js +0 -4
  359. package/src/undo-redo.jsx +0 -45
  360. package/src/use-debounce.js +0 -13
  361. package/src/utils.js +0 -224
@@ -1,37 +0,0 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import { types } from '@pie-lib/plot';
4
- import { ArrowHead } from '../arrow-head';
5
- import { thinnerShapesNeeded } from '../../../utils';
6
-
7
- export class BaseArrow extends React.Component {
8
- static propTypes = {
9
- className: PropTypes.string,
10
- correctness: PropTypes.string,
11
- disabled: PropTypes.bool,
12
- x: PropTypes.number.isRequired,
13
- y: PropTypes.number.isRequired,
14
- angle: PropTypes.number.isRequired,
15
- graphProps: types.GraphPropsType.isRequired,
16
- };
17
-
18
- render() {
19
- const { className, angle, x, y, correctness, graphProps, ...rest } = this.props;
20
- const size = thinnerShapesNeeded(graphProps) ? 12 : 14;
21
- const { scale } = graphProps;
22
-
23
- const scaledX = scale.x(x);
24
- const scaledY = scale.y(y);
25
-
26
- const transform = `rotate(${-angle}, ${scaledX},${scaledY})`;
27
- const points = `${scaledX},${scaledY}
28
- ${scaledX - size},${scaledY - size / 2}
29
- ${scaledX - size},${scaledY + size / 2}`;
30
-
31
- return (
32
- <g className={className} {...rest}>
33
- <ArrowHead size={size} transform={transform} points={points} correctness={correctness} />
34
- </g>
35
- );
36
- }
37
- }
@@ -1,121 +0,0 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import { types } from '@pie-lib/plot';
4
- import ReactDOM from 'react-dom';
5
- import { styled } from '@mui/material/styles';
6
-
7
- import CoordinatesLabel from '../../../coordinates-label';
8
- import { thinnerShapesNeeded } from '../../../utils';
9
- import MissingSVG from '../icons/MissingSVG';
10
- import CorrectSVG from '../icons/CorrectSVG';
11
- import IncorrectSVG from '../icons/IncorrectSVG';
12
- import * as styles from '../styles';
13
-
14
- const StyledPointGroup = styled('g')(({ disabled, correctness }) => ({
15
- cursor: 'pointer',
16
- '& circle': {
17
- fill: 'currentColor',
18
- },
19
- ...(disabled && {
20
- ...styles.disabled('fill'),
21
- ...styles.disabled('color'),
22
- }),
23
- ...(correctness === 'correct' && {
24
- ...styles.correct('fill'),
25
- ...styles.correct('color'),
26
- }),
27
- ...(correctness === 'incorrect' && {
28
- ...styles.incorrect('fill'),
29
- ...styles.incorrect('color'),
30
- }),
31
- ...(correctness === 'missing' && {
32
- ...styles.missing('fill'),
33
- ...styles.missing('color'),
34
- }),
35
- }));
36
-
37
- export class RawBp extends React.Component {
38
- static propTypes = {
39
- className: PropTypes.string,
40
- coordinatesOnHover: PropTypes.bool,
41
- correctness: PropTypes.string,
42
- disabled: PropTypes.bool,
43
- labelNode: PropTypes.object,
44
- x: PropTypes.number.isRequired,
45
- y: PropTypes.number.isRequired,
46
- graphProps: types.GraphPropsType.isRequired,
47
- onClick: PropTypes.func,
48
- onTouchStart: PropTypes.func,
49
- onTouchEnd: PropTypes.func,
50
- };
51
-
52
- state = { showCoordinates: false };
53
-
54
- render() {
55
- const {
56
- className,
57
- coordinatesOnHover,
58
- x,
59
- y,
60
- disabled,
61
- correctness,
62
- graphProps,
63
- labelNode,
64
- onClick,
65
- onTouchStart,
66
- onTouchEnd,
67
- ...rest
68
- } = this.props;
69
-
70
- const { showCoordinates } = this.state;
71
- const { scale } = graphProps;
72
- const r = thinnerShapesNeeded(graphProps) ? 5 : 7;
73
-
74
- let SvgComponent;
75
- switch (correctness) {
76
- case 'missing':
77
- SvgComponent = MissingSVG;
78
- break;
79
- case 'correct':
80
- SvgComponent = CorrectSVG;
81
- break;
82
- case 'incorrect':
83
- SvgComponent = IncorrectSVG;
84
- break;
85
- default:
86
- SvgComponent = null;
87
- }
88
-
89
- return (
90
- <>
91
- {/* Outer invisible circle for easier touch/click */}
92
- <circle
93
- style={{ fill: 'transparent', cursor: 'pointer', pointerEvents: 'all' }}
94
- r={r * 3}
95
- cx={scale.x(x)}
96
- cy={scale.y(y)}
97
- onMouseEnter={() => this.setState({ showCoordinates: true })}
98
- onMouseLeave={() => this.setState({ showCoordinates: false })}
99
- onTouchStart={onTouchStart}
100
- onTouchEnd={onTouchEnd}
101
- onClick={onClick}
102
- />
103
- {/* Actual point */}
104
- <StyledPointGroup
105
- className={className}
106
- disabled={disabled}
107
- correctness={correctness}
108
- onMouseEnter={() => this.setState({ showCoordinates: true })}
109
- onMouseLeave={() => this.setState({ showCoordinates: false })}
110
- >
111
- <circle {...rest} r={r} cx={scale.x(x)} cy={scale.y(y)} />
112
- {SvgComponent && <SvgComponent scale={scale} x={x} y={y} />}
113
- {labelNode &&
114
- coordinatesOnHover &&
115
- showCoordinates &&
116
- ReactDOM.createPortal(<CoordinatesLabel graphProps={graphProps} x={x} y={y} />, labelNode)}
117
- </StyledPointGroup>
118
- </>
119
- );
120
- }
121
- }
@@ -1,54 +0,0 @@
1
- import React from 'react';
2
- import { styled } from '@mui/material/styles';
3
- import { gridDraggable } from '@pie-lib/plot';
4
- import { color } from '@pie-lib/render-ui';
5
- import * as utils from '../../../utils';
6
- import { RawBp } from './base-point';
7
- import { RawArrow } from './arrow-point';
8
- import { BaseArrow } from './arrow';
9
-
10
- // Drag & bounds options
11
- const opts = {
12
- bounds: (props, { domain, range }) => {
13
- const { x, y } = props;
14
- const area = { left: x, top: y, bottom: y, right: x };
15
- return utils.bounds(area, domain, range);
16
- },
17
- anchorPoint: (props) => {
18
- const { x, y } = props;
19
- return { x, y };
20
- },
21
- fromDelta: (props, delta) => {
22
- return utils.point(props).add(utils.point(delta));
23
- },
24
- };
25
-
26
- // Common styled point
27
- const PointStyle = styled('g')(() => ({
28
- '& circle, & polygon': {
29
- cursor: 'pointer',
30
- },
31
- '&[disabled]': {
32
- '& circle, & polygon': {
33
- fill: color.disabledSecondary(),
34
- },
35
- },
36
- }));
37
-
38
- export const BasePoint = gridDraggable(opts)((props) => (
39
- <PointStyle {...props}>
40
- <RawBp {...props} />
41
- </PointStyle>
42
- ));
43
-
44
- export const ArrowPoint = gridDraggable(opts)((props) => (
45
- <PointStyle {...props}>
46
- <RawArrow {...props} />
47
- </PointStyle>
48
- ));
49
-
50
- export const Arrow = gridDraggable(opts)((props) => (
51
- <PointStyle {...props}>
52
- <BaseArrow {...props} />
53
- </PointStyle>
54
- ));
@@ -1,27 +0,0 @@
1
- import { color } from '@pie-lib/render-ui';
2
-
3
- export const graphingShapeFill = () => color.visualElementsColors.SHAPES_FILL_COLOR;
4
-
5
- export const disabled = (key = 'fill') => ({
6
- [key]: color.disabledSecondary(), // this is needed to match previous disabled color for backward compatibility
7
- pointerEvents: 'none',
8
- });
9
-
10
- export const disabledSecondary = (key = 'fill') => ({
11
- [key]: color.disabledSecondary(),
12
- pointerEvents: 'none',
13
- });
14
-
15
- export const correct = (key = 'fill') => ({
16
- [key]: color.correctWithIcon(),
17
- pointerEvents: 'none',
18
- });
19
- export const incorrect = (key = 'fill') => ({
20
- [key]: color.incorrectWithIcon(),
21
- pointerEvents: 'none',
22
- });
23
-
24
- export const missing = (key = 'fill') => ({
25
- [key]: color.missingWithIcon(),
26
- pointerEvents: 'none',
27
- });
@@ -1,10 +0,0 @@
1
- import PropTypes from 'prop-types';
2
-
3
- export const ToolPropTypeFields = {
4
- mark: PropTypes.any,
5
- onChange: PropTypes.func,
6
- onDragStart: PropTypes.func,
7
- onDragStop: PropTypes.func,
8
- };
9
-
10
- export const ToolPropType = PropTypes.shape(ToolPropTypeFields);
@@ -1,32 +0,0 @@
1
- import debug from 'debug';
2
- import { buildDataPoints, FREQ_DIVIDER, getAmplitudeAndFreq, sinY } from '@pie-lib/graphing-utils';
3
- import { rootEdgeComponent, withRootEdge } from '../shared/line/with-root-edge';
4
-
5
- const log = debug('pie-lib:graphing:sine');
6
-
7
- const Sine = withRootEdge((props) => {
8
- const { root, edge, graphProps } = props;
9
- const { domain, range } = graphProps;
10
-
11
- const { amplitude, freq } = getAmplitudeAndFreq(root, edge);
12
- const interval = freq / FREQ_DIVIDER;
13
-
14
- log('[getPoints] amplitude:', amplitude, 'freq:', freq);
15
-
16
- const dataPoints =
17
- edge && edge.x === root.x
18
- ? []
19
- : buildDataPoints(
20
- { ...domain, step: interval },
21
- range,
22
- root,
23
- edge,
24
- sinY(amplitude, freq, { phase: root.x, vertical: root.y }),
25
- );
26
-
27
- return { root: props.root, edge: props.edge, dataPoints };
28
- });
29
-
30
- const Component = rootEdgeComponent(Sine);
31
-
32
- export default Component;
@@ -1,33 +0,0 @@
1
- import Sine from './component';
2
- import debug from 'debug';
3
- import { equalPoints, sameAxes } from '../../utils';
4
-
5
- const log = debug('pie-lib:graphing:sine');
6
-
7
- export const tool = () => ({
8
- type: 'sine',
9
- Component: Sine,
10
- complete: (data, mark) => {
11
- return { ...mark, building: false, closed: true };
12
- },
13
- addPoint: (point, mark) => {
14
- log('add point to sine model: ', point, 'mark: ', mark);
15
- if (mark && (equalPoints(mark.root, point) || sameAxes(mark.root, point))) {
16
- return mark;
17
- }
18
-
19
- if (!mark) {
20
- return {
21
- type: 'sine',
22
- root: point,
23
- edge: undefined,
24
- closed: false,
25
- building: true,
26
- };
27
- } else if (mark && !mark.root) {
28
- throw new Error('no root - should never happen');
29
- } else {
30
- return { ...mark, edge: point, closed: true, building: false };
31
- }
32
- },
33
- });
@@ -1,56 +0,0 @@
1
- import { lineBase, lineToolComponent, styles } from '../shared/line';
2
- import { Arrow } from '../shared/point';
3
- import React from 'react';
4
- import PropTypes from 'prop-types';
5
- import { types } from '@pie-lib/plot';
6
- import { styled } from '@mui/material/styles';
7
- import { getDistanceBetweenTwoPoints } from '../../utils';
8
-
9
- const StyledLine = styled('line')(({ theme, disabled, correctness }) => ({
10
- ...styles.line(theme),
11
- ...(disabled && styles.disabledSecondary(theme)),
12
- ...(correctness && styles[correctness] && styles[correctness](theme, 'stroke')),
13
- }));
14
-
15
- export const Line = (props) => {
16
- const {
17
- className,
18
- disabled,
19
- correctness,
20
- graphProps: { scale },
21
- from,
22
- to,
23
- ...rest
24
- } = props;
25
- const startPoint = { x: scale.x(from.x), y: scale.y(from.y) };
26
- const endPoint = { x: scale.x(to.x), y: scale.y(to.y) };
27
- const length = getDistanceBetweenTwoPoints(startPoint, endPoint);
28
-
29
- return (
30
- <StyledLine
31
- className={className}
32
- disabled={disabled}
33
- correctness={correctness}
34
- x1={startPoint.x}
35
- y1={startPoint.y}
36
- x2={endPoint.x}
37
- y2={endPoint.y}
38
- strokeDasharray={length - 7}
39
- {...rest}
40
- />
41
- );
42
- };
43
-
44
- Line.propTypes = {
45
- className: PropTypes.string,
46
- disabled: PropTypes.bool,
47
- correctness: PropTypes.string,
48
- graphProps: PropTypes.any,
49
- from: types.PointType,
50
- to: types.PointType,
51
- };
52
-
53
- const Vector = lineBase(Line, { to: Arrow });
54
- const Component = lineToolComponent(Vector);
55
-
56
- export default Component;
@@ -1,4 +0,0 @@
1
- import Vector from './component';
2
- import { lineTool } from '../shared/line';
3
-
4
- export const tool = lineTool('vector', Vector);
package/src/undo-redo.jsx DELETED
@@ -1,45 +0,0 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import classNames from 'classnames';
4
- import Button from '@mui/material/Button';
5
- import { styled } from '@mui/material/styles';
6
- import { color } from '@pie-lib/render-ui';
7
- import Translator from '@pie-lib/translator';
8
-
9
- const { translator } = Translator;
10
-
11
- const StyledButton = styled(Button)(({ theme }) => ({
12
- color: color.text(),
13
- fontWeight: 'bold',
14
- marginBottom: theme.spacing(0.5),
15
- '&:not(:last-of-type)': {
16
- marginRight: theme.spacing(0.5),
17
- },
18
- '&:hover': {
19
- backgroundColor: color.buttonHoverBg(),
20
- },
21
- }));
22
-
23
- export class UndoRedo extends React.Component {
24
- static propTypes = {
25
- className: PropTypes.string,
26
- onUndo: PropTypes.func.isRequired,
27
- onRedo: PropTypes.func.isRequired,
28
- onReset: PropTypes.func.isRequired,
29
- language: PropTypes.string,
30
- };
31
- static defaultProps = {};
32
-
33
- render() {
34
- const { className, onUndo, onRedo, onReset, language } = this.props;
35
- return (
36
- <div className={classNames(className)}>
37
- <StyledButton onClick={() => onUndo(true)}>{translator.t('common:undo', { lng: language })}</StyledButton>
38
- <StyledButton onClick={() => onRedo(true)}>{translator.t('graphing.redo', { lng: language })}</StyledButton>
39
- <StyledButton onClick={() => onReset()}>{translator.t('graphing.reset', { lng: language })}</StyledButton>
40
- </div>
41
- );
42
- }
43
- }
44
-
45
- export default UndoRedo;
@@ -1,13 +0,0 @@
1
- import { useEffect, useState } from 'react';
2
-
3
- export const useDebounce = (value, delay) => {
4
- const [debouncedValue, setDebouncedValue] = useState(value);
5
-
6
- useEffect(() => {
7
- const handler = setTimeout(() => {
8
- setDebouncedValue(value);
9
- }, delay);
10
- return () => clearTimeout(handler);
11
- }, [value]);
12
- return debouncedValue;
13
- };
package/src/utils.js DELETED
@@ -1,224 +0,0 @@
1
- import { utils } from '@pie-lib/plot';
2
- import invariant from 'invariant';
3
- import { cloneDeep, head, isEmpty, isEqual, omit, tail } from 'lodash-es';
4
-
5
- export const stripEmptyLabel = (pt) => (pt?.label === '' ? omit(pt, 'label') : pt);
6
-
7
- export const tickCount = utils.tickCount;
8
- export const bounds = utils.bounds;
9
- export const point = utils.point;
10
-
11
- //TODO: This can be removed?
12
- export const getAngleDeg = () => 0;
13
- //TODO: This can be removed?
14
- export const arrowDimensions = () => 0;
15
-
16
- export const getTickValues = (prop) => {
17
- const tickValues = [];
18
- let tickVal = 0;
19
-
20
- while (tickVal >= prop.min && tickValues.indexOf(tickVal) < 0) {
21
- tickValues.push(tickVal);
22
- tickVal = Math.round((tickVal - prop.step) * 10000) / 10000;
23
- }
24
-
25
- tickVal = Math.round(prop.step * 10000) / 10000;
26
-
27
- while (tickVal <= prop.max && tickValues.indexOf(tickVal) < 0) {
28
- tickValues.push(tickVal);
29
- tickVal = Math.round((tickVal + prop.step) * 10000) / 10000;
30
- }
31
-
32
- // return only ticks that are inside the min-max interval
33
- if (tickValues) {
34
- return tickValues.filter((tV) => tV >= prop.min && tV <= prop.max);
35
- }
36
-
37
- return [];
38
- };
39
-
40
- export const countWords = (label) => {
41
- if (label == null || isEmpty(label)) {
42
- return 1;
43
- }
44
-
45
- const words = label.split(' ');
46
- return words.length;
47
- };
48
-
49
- // findLongestWord is also used in plot
50
- export const findLongestWord = (label) => {
51
- let longestWord = (label || '')
52
- .replace(/<[^>]+>/g, '')
53
- .split(' ')
54
- .sort((a, b) => b.length - a.length);
55
-
56
- return longestWord[0].length;
57
- };
58
-
59
- // amountToIncreaseWidth is also used in plot
60
- export const amountToIncreaseWidth = (longestWord) => {
61
- if (!longestWord) {
62
- return 0;
63
- }
64
-
65
- return longestWord * 10;
66
- };
67
-
68
- export const polygonToArea = (points) => {
69
- const h = head(points);
70
- const area = {
71
- left: h.x,
72
- top: h.y,
73
- bottom: h.y,
74
- right: h.x,
75
- };
76
- return tail(points).reduce((a, p) => {
77
- a.left = Math.min(a.left, p.x);
78
- a.top = Math.max(a.top, p.y);
79
- a.bottom = Math.min(a.bottom, p.y);
80
- a.right = Math.max(a.right, p.x);
81
- return a;
82
- }, area);
83
- };
84
-
85
- export const lineToArea = (from, to) => pointsToArea(from, to);
86
-
87
- export const pointsToArea = (a, b) => {
88
- invariant(!!a && !!b, 'a or b is undefined');
89
- const left = Math.min(a.x, b.x);
90
- const top = Math.max(a.y, b.y);
91
- const bottom = Math.min(a.y, b.y);
92
- const right = Math.max(a.x, b.x);
93
- return { left, top, bottom, right };
94
- };
95
-
96
- export const isDomainRangeEqual = (graphProps, nextGraphProps) => {
97
- return isEqual(graphProps.domain, nextGraphProps.domain) && isEqual(graphProps.range, nextGraphProps.range);
98
- };
99
-
100
- export const getRightestPoints = (points) => {
101
- const sortedPoints = cloneDeep(points);
102
- sortedPoints.sort((a, b) => b.x - a.x);
103
-
104
- return { a: sortedPoints[0], b: sortedPoints[1] };
105
- };
106
-
107
- export const getMiddleOfTwoPoints = (a, b) => ({
108
- x: (a.x + b.x) / 2,
109
- y: (a.y + b.y) / 2,
110
- });
111
-
112
- export const roundNumber = (number) => parseFloat(number.toFixed(4));
113
-
114
- export const sameAxes = (p1, p2) =>
115
- p1 && p2 && (roundNumber(p1.x) === roundNumber(p2.x) || roundNumber(p1.y) === roundNumber(p2.y));
116
-
117
- export const equalPoints = (p1, p2) =>
118
- p1 &&
119
- p2 &&
120
- isEqual(
121
- {
122
- x: roundNumber(p1.x),
123
- y: roundNumber(p1.y),
124
- },
125
- {
126
- x: roundNumber(p2.x),
127
- y: roundNumber(p2.y),
128
- },
129
- );
130
-
131
- const getDistanceBetweenTicks = (axis, size) => {
132
- const { min, max, step } = axis;
133
- const nbOfTicks = (max - min) / step;
134
-
135
- return size / nbOfTicks;
136
- };
137
-
138
- export const thinnerShapesNeeded = (graphProps) => {
139
- const {
140
- domain,
141
- range,
142
- size: { width, height },
143
- } = graphProps;
144
-
145
- // 14 is the default width of a point
146
- return getDistanceBetweenTicks(domain, width) < 14 || getDistanceBetweenTicks(range, height) < 14;
147
- };
148
-
149
- export const getAdjustedGraphLimits = (graphProps) => {
150
- const {
151
- domain,
152
- range,
153
- size: { width, height },
154
- } = graphProps;
155
- const domainTicksDistance = getDistanceBetweenTicks(domain, width);
156
- const rangeTicksDistance = getDistanceBetweenTicks(range, height);
157
-
158
- // 15 is the distance required for the arrow to extend the graph
159
- const domainPadding = domain.step / (domainTicksDistance / 15);
160
- const rangePadding = range.step / (rangeTicksDistance / 15);
161
-
162
- return {
163
- domain: {
164
- min: domain.min - domainPadding,
165
- max: domain.max + domainPadding,
166
- },
167
- range: {
168
- min: range.min - rangePadding,
169
- max: range.max + rangePadding,
170
- },
171
- };
172
- };
173
-
174
- export const getDistanceBetweenTwoPoints = (a, b) => Math.sqrt((b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y));
175
-
176
- const sortPoints = (array) => (array || []).sort((a, b) => a.x - b.x || a.y - b.y);
177
-
178
- // check colliniarity of 3 points (source: https://www.geeksforgeeks.org/program-check-three-points-collinear/)
179
- const checkCollinearity = (a, b, c) => (a.x - b.x) * (c.y - b.y) === (c.x - b.x) * (a.y - b.y);
180
-
181
- // 2 lines are overlapping if all 4 points are collinear
182
- const isSameLine = (markA, markB) =>
183
- checkCollinearity(markA.from, markB.from, markB.to) && checkCollinearity(markA.to, markB.from, markB.to);
184
-
185
- const isSameCircle = (markA, markB) =>
186
- equalPoints(markA.root, markB.root) &&
187
- getDistanceBetweenTwoPoints(markB.root, markB.edge) === getDistanceBetweenTwoPoints(markA.root, markA.edge);
188
-
189
- export const isDuplicatedMark = (mark, marks, oldMark) => {
190
- const { type, building } = mark;
191
-
192
- if (building) {
193
- return false;
194
- }
195
-
196
- const filteredMarks = (marks || []).filter((m) => m.type === type && !m.building);
197
- const index = filteredMarks.findIndex((m) => isEqual(m, oldMark));
198
-
199
- if (index !== -1) {
200
- filteredMarks.splice(index, 1);
201
- }
202
-
203
- const duplicated = filteredMarks.find((m) => {
204
- if (type === 'circle' || type === 'parabola' || type === 'sine' || type === 'absolute' || type === 'exponential') {
205
- const { root, edge } = mark;
206
-
207
- return (equalPoints(root, m.root) && equalPoints(edge, m.edge)) || (type === 'circle' && isSameCircle(m, mark));
208
- } else if (type === 'line' || type === 'ray' || type === 'segment' || type === 'vector') {
209
- const { from, to } = mark;
210
-
211
- return (
212
- (equalPoints(from, m.from) && equalPoints(to, m.to)) ||
213
- (equalPoints(from, m.to) && equalPoints(to, m.from)) ||
214
- (type === 'line' && isSameLine(m, mark))
215
- );
216
- } else if (type === 'polygon') {
217
- return isEqual(sortPoints(cloneDeep(mark.points)), sortPoints(cloneDeep(m.points)));
218
- } else if (type === 'point') {
219
- return equalPoints(m, mark);
220
- }
221
- });
222
-
223
- return !!duplicated;
224
- };