@pie-lib/graphing-solution-set 4.0.4-next.30 → 4.0.4-next.34

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 (310) hide show
  1. package/CHANGELOG.json +1 -0
  2. package/CHANGELOG.md +449 -0
  3. package/LICENSE.md +5 -0
  4. package/lib/axis/arrow.js +79 -0
  5. package/lib/axis/arrow.js.map +1 -0
  6. package/lib/axis/axes.js +327 -0
  7. package/lib/axis/axes.js.map +1 -0
  8. package/lib/axis/index.js +21 -0
  9. package/lib/axis/index.js.map +1 -0
  10. package/lib/bg.js +114 -0
  11. package/lib/bg.js.map +1 -0
  12. package/lib/container/actions.js +18 -0
  13. package/lib/container/actions.js.map +1 -0
  14. package/lib/container/index.js +129 -0
  15. package/lib/container/index.js.map +1 -0
  16. package/lib/container/marks.js +22 -0
  17. package/lib/container/marks.js.map +1 -0
  18. package/lib/container/middleware.js +19 -0
  19. package/lib/container/middleware.js.map +1 -0
  20. package/lib/container/reducer.js +18 -0
  21. package/lib/container/reducer.js.map +1 -0
  22. package/lib/coordinates-label.js +77 -0
  23. package/lib/coordinates-label.js.map +1 -0
  24. package/lib/graph-with-controls.js +297 -0
  25. package/lib/graph-with-controls.js.map +1 -0
  26. package/lib/graph.js +353 -0
  27. package/lib/graph.js.map +1 -0
  28. package/lib/grid-setup.js +414 -0
  29. package/lib/grid-setup.js.map +1 -0
  30. package/lib/grid.js +131 -0
  31. package/lib/grid.js.map +1 -0
  32. package/lib/index.js +40 -0
  33. package/lib/index.js.map +1 -0
  34. package/lib/labels.js +199 -0
  35. package/lib/labels.js.map +1 -0
  36. package/lib/mark-label.js +159 -0
  37. package/lib/mark-label.js.map +1 -0
  38. package/lib/toggle-bar.js +248 -0
  39. package/lib/toggle-bar.js.map +1 -0
  40. package/lib/tool-menu.js +218 -0
  41. package/lib/tool-menu.js.map +1 -0
  42. package/lib/tools/index.js +24 -0
  43. package/lib/tools/index.js.map +1 -0
  44. package/lib/tools/line/component.js +92 -0
  45. package/lib/tools/line/component.js.map +1 -0
  46. package/lib/tools/line/index.js +11 -0
  47. package/lib/tools/line/index.js.map +1 -0
  48. package/lib/tools/polygon/component.js +358 -0
  49. package/lib/tools/polygon/component.js.map +1 -0
  50. package/lib/tools/polygon/index.js +89 -0
  51. package/lib/tools/polygon/index.js.map +1 -0
  52. package/lib/tools/polygon/line.js +114 -0
  53. package/lib/tools/polygon/line.js.map +1 -0
  54. package/lib/tools/polygon/polygon.js +128 -0
  55. package/lib/tools/polygon/polygon.js.map +1 -0
  56. package/lib/tools/shared/arrow-head.js +62 -0
  57. package/lib/tools/shared/arrow-head.js.map +1 -0
  58. package/lib/tools/shared/line/index.js +539 -0
  59. package/lib/tools/shared/line/index.js.map +1 -0
  60. package/lib/tools/shared/line/line-path.js +121 -0
  61. package/lib/tools/shared/line/line-path.js.map +1 -0
  62. package/lib/tools/shared/line/with-root-edge.js +121 -0
  63. package/lib/tools/shared/line/with-root-edge.js.map +1 -0
  64. package/lib/tools/shared/point/arrow-point.js +86 -0
  65. package/lib/tools/shared/point/arrow-point.js.map +1 -0
  66. package/lib/tools/shared/point/arrow.js +70 -0
  67. package/lib/tools/shared/point/arrow.js.map +1 -0
  68. package/lib/tools/shared/point/base-point.js +137 -0
  69. package/lib/tools/shared/point/base-point.js.map +1 -0
  70. package/lib/tools/shared/point/index.js +80 -0
  71. package/lib/tools/shared/point/index.js.map +1 -0
  72. package/lib/tools/shared/styles.js +26 -0
  73. package/lib/tools/shared/styles.js.map +1 -0
  74. package/lib/tools/shared/types.js +15 -0
  75. package/lib/tools/shared/types.js.map +1 -0
  76. package/lib/undo-redo.js +67 -0
  77. package/lib/undo-redo.js.map +1 -0
  78. package/lib/use-debounce.js +25 -0
  79. package/lib/use-debounce.js.map +1 -0
  80. package/lib/utils.js +235 -0
  81. package/lib/utils.js.map +1 -0
  82. package/package.json +34 -46
  83. package/src/__tests__/bg.test.jsx +250 -0
  84. package/src/__tests__/coordinates-label.test.jsx +243 -0
  85. package/src/__tests__/graph-with-controls.test.jsx +184 -0
  86. package/src/__tests__/graph.test.jsx +93 -0
  87. package/src/__tests__/grid-setup.test.jsx +645 -0
  88. package/src/__tests__/grid.test.jsx +23 -0
  89. package/src/__tests__/labels.test.jsx +41 -0
  90. package/src/__tests__/mark-label.test.jsx +66 -0
  91. package/src/__tests__/toggle-bar.test.jsx +106 -0
  92. package/src/__tests__/tool-menu.test.jsx +453 -0
  93. package/src/__tests__/undo-redo.test.jsx +26 -0
  94. package/src/__tests__/use-debounce.test.js +21 -0
  95. package/src/__tests__/utils.js +41 -0
  96. package/src/__tests__/utils.test.js +105 -0
  97. package/src/axis/__tests__/arrow.test.jsx +43 -0
  98. package/src/axis/__tests__/axes.test.jsx +182 -0
  99. package/src/axis/arrow.jsx +57 -0
  100. package/src/axis/axes.jsx +284 -0
  101. package/src/axis/index.js +3 -0
  102. package/src/bg.jsx +96 -0
  103. package/src/container/__tests__/actions.test.js +105 -0
  104. package/src/container/__tests__/index.test.jsx +227 -0
  105. package/src/container/__tests__/marks.test.js +172 -0
  106. package/src/container/__tests__/middleware.test.js +235 -0
  107. package/src/container/__tests__/reducer.test.js +324 -0
  108. package/src/container/actions.js +8 -0
  109. package/src/container/index.jsx +93 -0
  110. package/src/container/marks.js +14 -0
  111. package/src/container/middleware.js +7 -0
  112. package/src/container/reducer.js +5 -0
  113. package/src/coordinates-label.jsx +62 -0
  114. package/src/graph-with-controls.jsx +242 -0
  115. package/src/graph.jsx +333 -0
  116. package/src/grid-setup.jsx +432 -0
  117. package/src/grid.jsx +133 -0
  118. package/src/index.js +7 -0
  119. package/src/labels.jsx +173 -0
  120. package/src/mark-label.jsx +125 -0
  121. package/src/toggle-bar.jsx +221 -0
  122. package/src/tool-menu.jsx +235 -0
  123. package/src/tools/index.js +8 -0
  124. package/src/tools/line/__tests__/component.test.jsx +37 -0
  125. package/src/tools/line/component.jsx +77 -0
  126. package/src/tools/line/index.js +4 -0
  127. package/src/tools/polygon/__tests__/component.test.jsx +487 -0
  128. package/src/tools/polygon/__tests__/index.test.js +65 -0
  129. package/src/tools/polygon/__tests__/line.test.jsx +23 -0
  130. package/src/tools/polygon/__tests__/polygon.test.jsx +44 -0
  131. package/src/tools/polygon/component.jsx +324 -0
  132. package/src/tools/polygon/index.js +52 -0
  133. package/src/tools/polygon/line.jsx +80 -0
  134. package/src/tools/polygon/polygon.jsx +93 -0
  135. package/src/tools/shared/__tests__/arrow-head.test.jsx +33 -0
  136. package/src/tools/shared/arrow-head.jsx +46 -0
  137. package/src/tools/shared/line/__tests__/index.test.jsx +553 -0
  138. package/src/tools/shared/line/__tests__/line-path.test.jsx +56 -0
  139. package/src/tools/shared/line/__tests__/with-root-edge.test.jsx +488 -0
  140. package/src/tools/shared/line/index.jsx +471 -0
  141. package/src/tools/shared/line/line-path.jsx +85 -0
  142. package/src/tools/shared/line/with-root-edge.jsx +97 -0
  143. package/src/tools/shared/point/__tests__/arrow-point.test.jsx +91 -0
  144. package/src/tools/shared/point/__tests__/arrow.test.jsx +469 -0
  145. package/src/tools/shared/point/__tests__/base-point.test.jsx +87 -0
  146. package/src/tools/shared/point/arrow-point.jsx +60 -0
  147. package/src/tools/shared/point/arrow.jsx +40 -0
  148. package/src/tools/shared/point/base-point.jsx +113 -0
  149. package/src/tools/shared/point/index.jsx +58 -0
  150. package/src/tools/shared/styles.js +20 -0
  151. package/src/tools/shared/types.js +8 -0
  152. package/src/undo-redo.jsx +37 -0
  153. package/src/use-debounce.js +13 -0
  154. package/src/utils.js +230 -0
  155. package/dist/_virtual/_rolldown/runtime.js +0 -23
  156. package/dist/autosize-input.d.ts +0 -10
  157. package/dist/autosize-input.js +0 -66
  158. package/dist/axis/arrow.d.ts +0 -13
  159. package/dist/axis/arrow.js +0 -34
  160. package/dist/axis/axes.d.ts +0 -132
  161. package/dist/axis/axes.js +0 -214
  162. package/dist/axis/index.d.ts +0 -10
  163. package/dist/bg.d.ts +0 -51
  164. package/dist/bg.js +0 -44
  165. package/dist/container/actions.d.ts +0 -15
  166. package/dist/container/actions.js +0 -7
  167. package/dist/container/index.d.ts +0 -58
  168. package/dist/container/index.js +0 -48
  169. package/dist/container/marks.d.ts +0 -10
  170. package/dist/container/marks.js +0 -11
  171. package/dist/container/middleware.d.ts +0 -10
  172. package/dist/container/middleware.js +0 -4
  173. package/dist/container/reducer.d.ts +0 -14
  174. package/dist/container/reducer.js +0 -7
  175. package/dist/coordinates-label.d.ts +0 -50
  176. package/dist/coordinates-label.js +0 -46
  177. package/dist/graph-with-controls.d.ts +0 -85
  178. package/dist/graph-with-controls.js +0 -155
  179. package/dist/graph.d.ts +0 -119
  180. package/dist/graph.js +0 -221
  181. package/dist/grid-setup.d.ts +0 -27
  182. package/dist/grid-setup.js +0 -307
  183. package/dist/grid.d.ts +0 -43
  184. package/dist/grid.js +0 -59
  185. package/dist/index.d.ts +0 -14
  186. package/dist/index.js +0 -6
  187. package/dist/labels.d.ts +0 -73
  188. package/dist/labels.js +0 -134
  189. package/dist/mark-label.d.ts +0 -50
  190. package/dist/mark-label.js +0 -84
  191. package/dist/node_modules/.bun/@visx_axis@3.12.0_f4eacebf2041cd4f/node_modules/@visx/axis/esm/axis/Axis.js +0 -101
  192. package/dist/node_modules/.bun/@visx_axis@3.12.0_f4eacebf2041cd4f/node_modules/@visx/axis/esm/axis/AxisRenderer.js +0 -63
  193. package/dist/node_modules/.bun/@visx_axis@3.12.0_f4eacebf2041cd4f/node_modules/@visx/axis/esm/axis/Ticks.js +0 -44
  194. package/dist/node_modules/.bun/@visx_axis@3.12.0_f4eacebf2041cd4f/node_modules/@visx/axis/esm/constants/orientation.js +0 -9
  195. package/dist/node_modules/.bun/@visx_axis@3.12.0_f4eacebf2041cd4f/node_modules/@visx/axis/esm/utils/createPoint.js +0 -14
  196. package/dist/node_modules/.bun/@visx_axis@3.12.0_f4eacebf2041cd4f/node_modules/@visx/axis/esm/utils/getAxisRangePaddingConfig.js +0 -21
  197. package/dist/node_modules/.bun/@visx_axis@3.12.0_f4eacebf2041cd4f/node_modules/@visx/axis/esm/utils/getLabelTransform.js +0 -16
  198. package/dist/node_modules/.bun/@visx_axis@3.12.0_f4eacebf2041cd4f/node_modules/@visx/axis/esm/utils/getTickFormatter.js +0 -8
  199. package/dist/node_modules/.bun/@visx_axis@3.12.0_f4eacebf2041cd4f/node_modules/@visx/axis/esm/utils/getTickPosition.js +0 -15
  200. package/dist/node_modules/.bun/@visx_grid@3.12.0_f4eacebf2041cd4f/node_modules/@visx/grid/esm/grids/Grid.js +0 -79
  201. package/dist/node_modules/.bun/@visx_grid@3.12.0_f4eacebf2041cd4f/node_modules/@visx/grid/esm/grids/GridColumns.js +0 -79
  202. package/dist/node_modules/.bun/@visx_grid@3.12.0_f4eacebf2041cd4f/node_modules/@visx/grid/esm/grids/GridRows.js +0 -79
  203. package/dist/node_modules/.bun/@visx_grid@3.12.0_f4eacebf2041cd4f/node_modules/@visx/grid/esm/utils/getScaleBandwidth.js +0 -6
  204. package/dist/node_modules/.bun/@visx_group@3.12.0_f4eacebf2041cd4f/node_modules/@visx/group/esm/Group.js +0 -50
  205. package/dist/node_modules/.bun/@visx_point@3.12.0/node_modules/@visx/point/esm/Point.js +0 -18
  206. package/dist/node_modules/.bun/@visx_scale@3.12.0/node_modules/@visx/scale/esm/utils/coerceNumber.js +0 -10
  207. package/dist/node_modules/.bun/@visx_scale@3.12.0/node_modules/@visx/scale/esm/utils/getTicks.js +0 -9
  208. package/dist/node_modules/.bun/@visx_scale@3.12.0/node_modules/@visx/scale/esm/utils/toString.js +0 -6
  209. package/dist/node_modules/.bun/@visx_shape@3.12.0_f4eacebf2041cd4f/node_modules/@visx/shape/esm/shapes/Line.js +0 -47
  210. package/dist/node_modules/.bun/@visx_shape@3.12.0_f4eacebf2041cd4f/node_modules/@visx/shape/lib/shapes/Line.js +0 -53
  211. package/dist/node_modules/.bun/@visx_text@3.12.0_f4eacebf2041cd4f/node_modules/@visx/text/esm/Text.js +0 -57
  212. package/dist/node_modules/.bun/@visx_text@3.12.0_f4eacebf2041cd4f/node_modules/@visx/text/esm/hooks/useText.js +0 -91
  213. package/dist/node_modules/.bun/@visx_text@3.12.0_f4eacebf2041cd4f/node_modules/@visx/text/esm/util/getStringWidth.js +0 -21
  214. package/dist/node_modules/.bun/balanced-match@0.4.2/node_modules/balanced-match/index.js +0 -32
  215. package/dist/node_modules/.bun/balanced-match@1.0.2/node_modules/balanced-match/index.js +0 -33
  216. package/dist/node_modules/.bun/classnames@2.5.1/node_modules/classnames/index.js +0 -32
  217. package/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js +0 -16
  218. package/dist/node_modules/.bun/invariant@2.2.4/node_modules/invariant/browser.js +0 -28
  219. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_Hash.js +0 -21
  220. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_ListCache.js +0 -21
  221. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_Map.js +0 -10
  222. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_MapCache.js +0 -21
  223. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_Symbol.js +0 -9
  224. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_assocIndexOf.js +0 -14
  225. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_baseGetTag.js +0 -15
  226. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_baseIsNative.js +0 -16
  227. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_coreJsData.js +0 -9
  228. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_freeGlobal.js +0 -8
  229. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_getMapData.js +0 -14
  230. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_getNative.js +0 -15
  231. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_getRawTag.js +0 -19
  232. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_getValue.js +0 -11
  233. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_hashClear.js +0 -13
  234. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_hashDelete.js +0 -12
  235. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_hashGet.js +0 -18
  236. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_hashHas.js +0 -14
  237. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_hashSet.js +0 -14
  238. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_isKeyable.js +0 -12
  239. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_isMasked.js +0 -16
  240. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_listCacheClear.js +0 -11
  241. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_listCacheDelete.js +0 -14
  242. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_listCacheGet.js +0 -14
  243. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_listCacheHas.js +0 -13
  244. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_listCacheSet.js +0 -14
  245. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_mapCacheClear.js +0 -19
  246. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_mapCacheDelete.js +0 -14
  247. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_mapCacheGet.js +0 -13
  248. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_mapCacheHas.js +0 -13
  249. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_mapCacheSet.js +0 -14
  250. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_nativeCreate.js +0 -9
  251. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_objectToString.js +0 -12
  252. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_root.js +0 -10
  253. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_toSource.js +0 -20
  254. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/eq.js +0 -11
  255. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/isFunction.js +0 -16
  256. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/isObject.js +0 -12
  257. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/memoize.js +0 -20
  258. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/formula_evaluator.js +0 -37
  259. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/lexer.js +0 -509
  260. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/math_function.js +0 -108
  261. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/postfix.js +0 -31
  262. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/postfix_evaluator.js +0 -45
  263. package/dist/node_modules/.bun/react-redux@9.3.0_9e2203c65d1d5fa1/node_modules/react-redux/dist/react-redux.js +0 -471
  264. package/dist/node_modules/.bun/reduce-css-calc@1.3.0/node_modules/reduce-css-calc/index.js +0 -49
  265. package/dist/node_modules/.bun/reduce-function-call@1.0.3/node_modules/reduce-function-call/index.js +0 -34
  266. package/dist/node_modules/.bun/redux-undo@1.1.0/node_modules/redux-undo/dist/redux-undo.js +0 -185
  267. package/dist/node_modules/.bun/redux@5.0.1/node_modules/redux/dist/redux.js +0 -198
  268. package/dist/node_modules/.bun/use-sync-external-store@1.6.0_f4eacebf2041cd4f/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.development.js +0 -53
  269. package/dist/node_modules/.bun/use-sync-external-store@1.6.0_f4eacebf2041cd4f/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.js +0 -51
  270. package/dist/node_modules/.bun/use-sync-external-store@1.6.0_f4eacebf2041cd4f/node_modules/use-sync-external-store/with-selector.js +0 -10
  271. package/dist/toggle-bar.d.ts +0 -40
  272. package/dist/tool-menu.d.ts +0 -21
  273. package/dist/tool-menu.js +0 -188
  274. package/dist/tools/index.d.ts +0 -17
  275. package/dist/tools/index.js +0 -12
  276. package/dist/tools/line/component.d.ts +0 -113
  277. package/dist/tools/line/component.js +0 -58
  278. package/dist/tools/line/index.d.ts +0 -13
  279. package/dist/tools/line/index.js +0 -6
  280. package/dist/tools/polygon/component.d.ts +0 -117
  281. package/dist/tools/polygon/component.js +0 -194
  282. package/dist/tools/polygon/index.d.ts +0 -19
  283. package/dist/tools/polygon/index.js +0 -55
  284. package/dist/tools/polygon/line.d.ts +0 -125
  285. package/dist/tools/polygon/polygon.d.ts +0 -122
  286. package/dist/tools/polygon/polygon.js +0 -62
  287. package/dist/tools/shared/arrow-head.d.ts +0 -43
  288. package/dist/tools/shared/arrow-head.js +0 -37
  289. package/dist/tools/shared/line/index.d.ts +0 -240
  290. package/dist/tools/shared/line/index.js +0 -320
  291. package/dist/tools/shared/line/line-path.d.ts +0 -57
  292. package/dist/tools/shared/line/with-root-edge.d.ts +0 -143
  293. package/dist/tools/shared/point/arrow-point.d.ts +0 -57
  294. package/dist/tools/shared/point/arrow-point.js +0 -47
  295. package/dist/tools/shared/point/arrow.d.ts +0 -46
  296. package/dist/tools/shared/point/arrow.js +0 -36
  297. package/dist/tools/shared/point/base-point.d.ts +0 -50
  298. package/dist/tools/shared/point/base-point.js +0 -88
  299. package/dist/tools/shared/point/index.d.ts +0 -217
  300. package/dist/tools/shared/point/index.js +0 -51
  301. package/dist/tools/shared/styles.d.ts +0 -24
  302. package/dist/tools/shared/styles.js +0 -17
  303. package/dist/tools/shared/types.d.ts +0 -15
  304. package/dist/tools/shared/types.js +0 -10
  305. package/dist/undo-redo.d.ts +0 -20
  306. package/dist/undo-redo.js +0 -33
  307. package/dist/use-debounce.d.ts +0 -9
  308. package/dist/use-debounce.js +0 -13
  309. package/dist/utils.d.ts +0 -58
  310. package/dist/utils.js +0 -72
@@ -0,0 +1,553 @@
1
+ import { lineBase, lineTool, lineToolComponent } from '../index';
2
+ import { utils } from '@pie-lib/plot';
3
+ import { render } from '@pie-lib/test-utils';
4
+ import React from 'react';
5
+ import { graphProps as getGraphProps } from '../../../../__tests__/utils';
6
+
7
+ const { xy } = utils;
8
+ const xyLabel = (x, y, label) => ({ x, y, label });
9
+
10
+ describe('lineTool', () => {
11
+ describe('addPoint', () => {
12
+ let toolbar;
13
+
14
+ beforeEach(() => {
15
+ toolbar = lineTool('lineType', () => <div />)();
16
+ });
17
+
18
+ it('returns a building mark when no existing mark', () => {
19
+ const result = toolbar.addPoint(xy(1, 1));
20
+ expect(result).toEqual({
21
+ type: 'lineType',
22
+ building: true,
23
+ from: xy(1, 1),
24
+ });
25
+ });
26
+
27
+ it('returns a complete mark when adding second point', () => {
28
+ const result = toolbar.addPoint(xy(1, 1), { from: xy(0, 0) });
29
+ expect(result).toEqual({
30
+ building: false,
31
+ from: xy(0, 0),
32
+ to: xy(1, 1),
33
+ });
34
+ });
35
+
36
+ it('returns same mark if point equals existing from point', () => {
37
+ const existingMark = { from: xy(1, 1), building: true };
38
+ const result = toolbar.addPoint(xy(1, 1), existingMark);
39
+ expect(result).toEqual(existingMark);
40
+ });
41
+
42
+ it('handles adding point with root property', () => {
43
+ const existingMark = { root: xy(1, 1), building: true };
44
+ const result = toolbar.addPoint(xy(1, 1), existingMark);
45
+ expect(result).toEqual(existingMark);
46
+ });
47
+
48
+ it('creates different types correctly', () => {
49
+ const lineA = lineTool('lineA', () => <div />)();
50
+ const lineB = lineTool('lineB', () => <div />)();
51
+
52
+ const resultA = lineA.addPoint(xy(1, 1));
53
+ const resultB = lineB.addPoint(xy(1, 1));
54
+
55
+ expect(resultA.type).toBe('lineA');
56
+ expect(resultB.type).toBe('lineB');
57
+ });
58
+
59
+ it('preserves building state correctly', () => {
60
+ const building = toolbar.addPoint(xy(1, 1));
61
+ expect(building.building).toBe(true);
62
+
63
+ const complete = toolbar.addPoint(xy(2, 2), building);
64
+ expect(complete.building).toBe(false);
65
+ });
66
+ });
67
+
68
+ describe('Component property', () => {
69
+ it('stores the provided Component', () => {
70
+ const TestComp = () => <div>Test</div>;
71
+ const tool = lineTool('test', TestComp)();
72
+ expect(tool.Component).toBe(TestComp);
73
+ });
74
+
75
+ it('stores the correct type', () => {
76
+ const tool = lineTool('customType', () => <div />)();
77
+ expect(tool.type).toBe('customType');
78
+ });
79
+ });
80
+ });
81
+
82
+ describe('lineToolComponent', () => {
83
+ let Comp;
84
+ let mark;
85
+ let onChange;
86
+
87
+ beforeEach(() => {
88
+ onChange = jest.fn();
89
+ Comp = lineToolComponent(() => <text data-testid="line-component" />);
90
+ mark = { from: xy(0, 0), to: xy(1, 1), type: 'line' };
91
+ });
92
+
93
+ const renderComponent = (extras) => {
94
+ const defaults = {
95
+ mark,
96
+ onChange,
97
+ graphProps: getGraphProps(),
98
+ };
99
+ const props = { ...defaults, ...extras };
100
+ return render(<Comp {...props} />);
101
+ };
102
+
103
+ describe('rendering', () => {
104
+ it('renders without crashing', () => {
105
+ const { container } = renderComponent();
106
+ expect(container.firstChild).toBeInTheDocument();
107
+ });
108
+
109
+ it('renders with building mark', () => {
110
+ const buildingMark = { from: xy(0, 0), building: true, type: 'line' };
111
+ const { container } = renderComponent({ mark: buildingMark });
112
+ expect(container.firstChild).toBeInTheDocument();
113
+ });
114
+
115
+ it('renders with background mark', () => {
116
+ const bgMark = { from: xy(0, 0), to: xy(1, 1), isBackground: true, type: 'line' };
117
+ const { container } = renderComponent({ mark: bgMark });
118
+ expect(container.firstChild).toBeInTheDocument();
119
+ });
120
+
121
+ it('renders with disabled mark', () => {
122
+ const disabledMark = { from: xy(0, 0), to: xy(1, 1), disabled: true, type: 'line' };
123
+ const { container } = renderComponent({ mark: disabledMark });
124
+ expect(container.firstChild).toBeInTheDocument();
125
+ });
126
+
127
+ it('renders with correctness states', () => {
128
+ const correctMark = { from: xy(0, 0), to: xy(1, 1), correctness: 'correct', type: 'line' };
129
+ const { container } = renderComponent({ mark: correctMark });
130
+ expect(container.firstChild).toBeInTheDocument();
131
+ });
132
+
133
+ it('renders with middle point', () => {
134
+ const markWithMiddle = { from: xy(0, 0), to: xy(1, 1), middle: xy(0.5, 0.5), type: 'line' };
135
+ const { container } = renderComponent({ mark: markWithMiddle });
136
+ expect(container.firstChild).toBeInTheDocument();
137
+ });
138
+
139
+ it('renders with fill color', () => {
140
+ const coloredMark = { from: xy(0, 0), to: xy(1, 1), fill: '#ff0000', type: 'line' };
141
+ const { container } = renderComponent({ mark: coloredMark });
142
+ expect(container.firstChild).toBeInTheDocument();
143
+ });
144
+
145
+ it('renders with gssLineData', () => {
146
+ const gssLineData = { selectedTool: 'lineA' };
147
+ const { container } = renderComponent({ gssLineData });
148
+ expect(container.firstChild).toBeInTheDocument();
149
+ });
150
+
151
+ it('renders with labelNode', () => {
152
+ const labelNode = document.createElement('foreignObject');
153
+ const { container } = renderComponent({ labelNode });
154
+ expect(container.firstChild).toBeInTheDocument();
155
+ });
156
+
157
+ it('renders with coordinatesOnHover enabled', () => {
158
+ const { container } = renderComponent({ coordinatesOnHover: true });
159
+ expect(container.firstChild).toBeInTheDocument();
160
+ });
161
+
162
+ it('renders with labelModeEnabled', () => {
163
+ const { container } = renderComponent({ labelModeEnabled: true });
164
+ expect(container.firstChild).toBeInTheDocument();
165
+ });
166
+ });
167
+
168
+ describe('state management', () => {
169
+ it('initializes with empty state', () => {
170
+ const { container } = renderComponent();
171
+ expect(container.firstChild).toBeInTheDocument();
172
+ // State should be empty initially
173
+ });
174
+
175
+ it('handles mark updates through props', () => {
176
+ const { rerender, container } = renderComponent();
177
+ const updatedMark = { from: xy(1, 1), to: xy(2, 2), type: 'line' };
178
+
179
+ rerender(<Comp mark={updatedMark} onChange={onChange} graphProps={getGraphProps()} />);
180
+ expect(container.firstChild).toBeInTheDocument();
181
+ });
182
+ });
183
+
184
+ describe('background mark handling', () => {
185
+ it('disables from point when mark is background', () => {
186
+ const bgMark = {
187
+ from: xy(0, 0),
188
+ to: xy(1, 1),
189
+ isBackground: true,
190
+ type: 'line',
191
+ };
192
+ const { container } = renderComponent({ mark: bgMark });
193
+ expect(container.firstChild).toBeInTheDocument();
194
+ // from.disabled should be true
195
+ });
196
+
197
+ it('disables to point when mark is background', () => {
198
+ const bgMark = {
199
+ from: xy(0, 0),
200
+ to: xy(1, 1),
201
+ isBackground: true,
202
+ type: 'line',
203
+ };
204
+ const { container } = renderComponent({ mark: bgMark });
205
+ expect(container.firstChild).toBeInTheDocument();
206
+ // to.disabled should be true
207
+ });
208
+
209
+ it('disables middle point when mark is background', () => {
210
+ const bgMark = {
211
+ from: xy(0, 0),
212
+ to: xy(1, 1),
213
+ middle: xy(0.5, 0.5),
214
+ isBackground: true,
215
+ type: 'line',
216
+ };
217
+ const { container } = renderComponent({ mark: bgMark });
218
+ expect(container.firstChild).toBeInTheDocument();
219
+ // middle.disabled should be true
220
+ });
221
+ });
222
+
223
+ describe('edge cases', () => {
224
+ it('handles mark without to point', () => {
225
+ const incompleteMark = { from: xy(0, 0), type: 'line' };
226
+ const { container } = renderComponent({ mark: incompleteMark });
227
+ expect(container.firstChild).toBeInTheDocument();
228
+ });
229
+
230
+ it('handles mark with only from point', () => {
231
+ const singlePointMark = { from: xy(0, 0), building: true, type: 'line' };
232
+ const { container } = renderComponent({ mark: singlePointMark });
233
+ expect(container.firstChild).toBeInTheDocument();
234
+ });
235
+
236
+ it('handles different line types', () => {
237
+ const parabola = { from: xy(0, 0), to: xy(1, 1), type: 'parabola' };
238
+ const sine = { from: xy(0, 0), to: xy(1, 1), type: 'sine' };
239
+ const absolute = { from: xy(0, 0), to: xy(1, 1), type: 'absolute' };
240
+ const exponential = { from: xy(0, 0), to: xy(1, 1), type: 'exponential' };
241
+
242
+ render(<Comp mark={parabola} onChange={onChange} graphProps={getGraphProps()} />);
243
+ render(<Comp mark={sine} onChange={onChange} graphProps={getGraphProps()} />);
244
+ render(<Comp mark={absolute} onChange={onChange} graphProps={getGraphProps()} />);
245
+ render(<Comp mark={exponential} onChange={onChange} graphProps={getGraphProps()} />);
246
+ });
247
+ });
248
+ });
249
+
250
+ describe('lineBase', () => {
251
+ let Comp;
252
+ let onChange;
253
+ let changeMarkProps;
254
+ let onClick;
255
+
256
+ beforeEach(() => {
257
+ onChange = jest.fn();
258
+ changeMarkProps = jest.fn();
259
+ onClick = jest.fn();
260
+ Comp = lineBase(() => <text data-testid="line-base" />);
261
+ });
262
+
263
+ const renderComponent = (extras) => {
264
+ const defaults = {
265
+ onChange,
266
+ changeMarkProps,
267
+ onClick,
268
+ graphProps: getGraphProps(),
269
+ from: xy(0, 0),
270
+ to: xy(1, 1),
271
+ };
272
+ const props = { ...defaults, ...extras };
273
+ return render(<Comp {...props} />);
274
+ };
275
+
276
+ const labelNode = document.createElement('foreignObject');
277
+ const renderWithLabels = (extras = {}) =>
278
+ renderComponent({
279
+ ...extras,
280
+ labelNode: labelNode,
281
+ from: xyLabel(0, 0, 'A'),
282
+ to: xyLabel(1, 1, 'B'),
283
+ });
284
+
285
+ describe('rendering', () => {
286
+ it('renders without crashing', () => {
287
+ const { container } = renderComponent();
288
+ expect(container.firstChild).toBeInTheDocument();
289
+ });
290
+
291
+ it('renders with labels', () => {
292
+ const { container } = renderWithLabels();
293
+ expect(container.firstChild).toBeInTheDocument();
294
+ });
295
+
296
+ it('renders with middle point label', () => {
297
+ const { container } = renderComponent({
298
+ labelNode,
299
+ middle: xyLabel(0.5, 0.5, 'M'),
300
+ });
301
+ expect(container.firstChild).toBeInTheDocument();
302
+ });
303
+
304
+ it('renders with only from label', () => {
305
+ const { container } = renderComponent({
306
+ labelNode,
307
+ from: xyLabel(0, 0, 'Start'),
308
+ to: xy(1, 1),
309
+ });
310
+ expect(container.firstChild).toBeInTheDocument();
311
+ });
312
+
313
+ it('renders with only to label', () => {
314
+ const { container } = renderComponent({
315
+ labelNode,
316
+ from: xy(0, 0),
317
+ to: xyLabel(1, 1, 'End'),
318
+ });
319
+ expect(container.firstChild).toBeInTheDocument();
320
+ });
321
+
322
+ it('renders with all three labels', () => {
323
+ const { container } = renderComponent({
324
+ labelNode,
325
+ from: xyLabel(0, 0, 'A'),
326
+ to: xyLabel(1, 1, 'B'),
327
+ middle: xyLabel(0.5, 0.5, 'M'),
328
+ });
329
+ expect(container.firstChild).toBeInTheDocument();
330
+ });
331
+ });
332
+
333
+ describe('gssLineData handling', () => {
334
+ it('renders normally without gssLineData', () => {
335
+ const { container } = renderComponent();
336
+ expect(container.firstChild).toBeInTheDocument();
337
+ });
338
+
339
+ it('renders with gssLineData when solutionSet is selected', () => {
340
+ const gssLineData = { selectedTool: 'solutionSet' };
341
+ const { container } = renderComponent({ gssLineData });
342
+ expect(container.firstChild).toBeInTheDocument();
343
+ });
344
+
345
+ it('renders with gssLineData when lineA is selected', () => {
346
+ const gssLineData = { selectedTool: 'lineA' };
347
+ const { container } = renderComponent({ gssLineData });
348
+ expect(container.firstChild).toBeInTheDocument();
349
+ });
350
+
351
+ it('renders with gssLineData when lineB is selected', () => {
352
+ const gssLineData = { selectedTool: 'lineB' };
353
+ const { container } = renderComponent({ gssLineData });
354
+ expect(container.firstChild).toBeInTheDocument();
355
+ });
356
+ });
357
+
358
+ describe('disabled state', () => {
359
+ it('renders when disabled', () => {
360
+ const { container } = renderComponent({ disabled: true });
361
+ expect(container.firstChild).toBeInTheDocument();
362
+ });
363
+
364
+ it('renders when not disabled', () => {
365
+ const { container } = renderComponent({ disabled: false });
366
+ expect(container.firstChild).toBeInTheDocument();
367
+ });
368
+ });
369
+
370
+ describe('correctness states', () => {
371
+ it('renders with correct state', () => {
372
+ const { container } = renderComponent({ correctness: 'correct' });
373
+ expect(container.firstChild).toBeInTheDocument();
374
+ });
375
+
376
+ it('renders with incorrect state', () => {
377
+ const { container } = renderComponent({ correctness: 'incorrect' });
378
+ expect(container.firstChild).toBeInTheDocument();
379
+ });
380
+
381
+ it('renders with missing state', () => {
382
+ const { container } = renderComponent({ correctness: 'missing' });
383
+ expect(container.firstChild).toBeInTheDocument();
384
+ });
385
+
386
+ it('renders without correctness', () => {
387
+ const { container } = renderComponent({ correctness: undefined });
388
+ expect(container.firstChild).toBeInTheDocument();
389
+ });
390
+ });
391
+
392
+ describe('fill color', () => {
393
+ it('renders with custom fill color', () => {
394
+ const { container } = renderComponent({ fill: '#ff0000' });
395
+ expect(container.firstChild).toBeInTheDocument();
396
+ });
397
+
398
+ it('renders without fill color', () => {
399
+ const { container } = renderComponent({ fill: undefined });
400
+ expect(container.firstChild).toBeInTheDocument();
401
+ });
402
+ });
403
+
404
+ describe('coordinates on hover', () => {
405
+ it('renders with coordinatesOnHover enabled', () => {
406
+ const { container } = renderComponent({ coordinatesOnHover: true });
407
+ expect(container.firstChild).toBeInTheDocument();
408
+ });
409
+
410
+ it('renders with coordinatesOnHover disabled', () => {
411
+ const { container } = renderComponent({ coordinatesOnHover: false });
412
+ expect(container.firstChild).toBeInTheDocument();
413
+ });
414
+ });
415
+
416
+ describe('label mode', () => {
417
+ it('renders with labelModeEnabled', () => {
418
+ const { container } = renderComponent({
419
+ labelModeEnabled: true,
420
+ labelNode,
421
+ });
422
+ expect(container.firstChild).toBeInTheDocument();
423
+ });
424
+
425
+ it('renders without labelModeEnabled', () => {
426
+ const { container } = renderComponent({
427
+ labelModeEnabled: false,
428
+ labelNode,
429
+ });
430
+ expect(container.firstChild).toBeInTheDocument();
431
+ });
432
+ });
433
+
434
+ describe('drag callbacks', () => {
435
+ it('renders with onDragStart callback', () => {
436
+ const onDragStart = jest.fn();
437
+ const { container } = renderComponent({ onDragStart });
438
+ expect(container.firstChild).toBeInTheDocument();
439
+ });
440
+
441
+ it('renders with onDragStop callback', () => {
442
+ const onDragStop = jest.fn();
443
+ const { container } = renderComponent({ onDragStop });
444
+ expect(container.firstChild).toBeInTheDocument();
445
+ });
446
+
447
+ it('renders with both drag callbacks', () => {
448
+ const onDragStart = jest.fn();
449
+ const onDragStop = jest.fn();
450
+ const { container } = renderComponent({ onDragStart, onDragStop });
451
+ expect(container.firstChild).toBeInTheDocument();
452
+ });
453
+ });
454
+
455
+ describe('edge cases', () => {
456
+ it('handles equal from and to points', () => {
457
+ const { container } = renderComponent({
458
+ from: xy(1, 1),
459
+ to: xy(1, 1),
460
+ });
461
+ expect(container.firstChild).toBeInTheDocument();
462
+ });
463
+
464
+ it('handles negative coordinates', () => {
465
+ const { container } = renderComponent({
466
+ from: xy(-5, -5),
467
+ to: xy(-1, -1),
468
+ });
469
+ expect(container.firstChild).toBeInTheDocument();
470
+ });
471
+
472
+ it('handles large coordinate values', () => {
473
+ const { container } = renderComponent({
474
+ from: xy(100, 100),
475
+ to: xy(200, 200),
476
+ });
477
+ expect(container.firstChild).toBeInTheDocument();
478
+ });
479
+
480
+ it('handles decimal coordinates', () => {
481
+ const { container } = renderComponent({
482
+ from: xy(0.5, 0.5),
483
+ to: xy(1.5, 1.5),
484
+ });
485
+ expect(container.firstChild).toBeInTheDocument();
486
+ });
487
+
488
+ it('handles vertical lines', () => {
489
+ const { container } = renderComponent({
490
+ from: xy(1, 0),
491
+ to: xy(1, 5),
492
+ });
493
+ expect(container.firstChild).toBeInTheDocument();
494
+ });
495
+
496
+ it('handles horizontal lines', () => {
497
+ const { container } = renderComponent({
498
+ from: xy(0, 1),
499
+ to: xy(5, 1),
500
+ });
501
+ expect(container.firstChild).toBeInTheDocument();
502
+ });
503
+
504
+ it('handles empty label strings', () => {
505
+ const { container } = renderComponent({
506
+ labelNode,
507
+ from: xyLabel(0, 0, ''),
508
+ to: xyLabel(1, 1, ''),
509
+ });
510
+ expect(container.firstChild).toBeInTheDocument();
511
+ });
512
+ });
513
+
514
+ describe('integration scenarios', () => {
515
+ it('renders complete line with all features', () => {
516
+ const { container } = renderComponent({
517
+ from: xyLabel(0, 0, 'Start'),
518
+ to: xyLabel(5, 5, 'End'),
519
+ middle: xyLabel(2.5, 2.5, 'Middle'),
520
+ labelNode,
521
+ coordinatesOnHover: true,
522
+ labelModeEnabled: true,
523
+ disabled: false,
524
+ correctness: 'correct',
525
+ fill: '#00ff00',
526
+ gssLineData: { selectedTool: 'lineA' },
527
+ onDragStart: jest.fn(),
528
+ onDragStop: jest.fn(),
529
+ });
530
+ expect(container.firstChild).toBeInTheDocument();
531
+ });
532
+
533
+ it('renders disabled background line', () => {
534
+ const { container } = renderComponent({
535
+ from: xy(0, 0),
536
+ to: xy(1, 1),
537
+ disabled: true,
538
+ correctness: 'incorrect',
539
+ });
540
+ expect(container.firstChild).toBeInTheDocument();
541
+ });
542
+
543
+ it('renders solution set mode', () => {
544
+ const { container } = renderComponent({
545
+ from: xy(0, 0),
546
+ to: xy(1, 1),
547
+ gssLineData: { selectedTool: 'solutionSet' },
548
+ labelNode,
549
+ });
550
+ expect(container.firstChild).toBeInTheDocument();
551
+ });
552
+ });
553
+ });
@@ -0,0 +1,56 @@
1
+ import { render } from '@pie-lib/test-utils';
2
+ import React from 'react';
3
+ import { graphProps as getGraphProps } from '../../../../__tests__/utils';
4
+ import { utils } from '@pie-lib/plot';
5
+ import * as lineUtils from '../../../../utils';
6
+
7
+ const { xy } = utils;
8
+
9
+ const { bounds, pointsToArea } = lineUtils;
10
+ jest.mock('../../../../utils', () => {
11
+ const a = jest.requireActual('../../../../utils');
12
+ return {
13
+ pointsToArea: jest.fn().mockReturnValue({}),
14
+ bounds: jest.fn().mockReturnValue({}),
15
+ point: a.point,
16
+ };
17
+ });
18
+
19
+ jest.mock('@pie-lib/plot', () => {
20
+ const a = jest.requireActual('@pie-lib/plot');
21
+ return {
22
+ gridDraggable: jest.fn((opts) => (Comp) => Comp),
23
+ types: a.types,
24
+ utils: a.utils,
25
+ };
26
+ });
27
+
28
+ describe('LinePath', () => {
29
+ let LinePath;
30
+ let onChange = jest.fn();
31
+ beforeEach(() => {
32
+ LinePath = require('../line-path').LinePath;
33
+ });
34
+ const renderComponent = (extras) => {
35
+ const defaults = {
36
+ classes: {},
37
+ className: 'className',
38
+ onChange,
39
+ graphProps: getGraphProps(),
40
+ from: xy(0, 0, 0),
41
+ to: xy(1, 1, 0),
42
+ data: [
43
+ [0, 0],
44
+ [1, 1],
45
+ ],
46
+ };
47
+ const props = { ...defaults, ...extras };
48
+ return render(<LinePath {...props} />);
49
+ };
50
+ describe('rendering', () => {
51
+ it('renders without crashing', () => {
52
+ const { container } = renderComponent();
53
+ expect(container.firstChild).toBeInTheDocument();
54
+ });
55
+ });
56
+ });