@pie-lib/graphing-solution-set 4.0.3-next.3 → 4.0.4-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +23 -0
  2. package/dist/axis/arrow.d.ts +13 -0
  3. package/dist/axis/arrow.js +34 -0
  4. package/dist/axis/axes.d.ts +132 -0
  5. package/dist/axis/axes.js +214 -0
  6. package/dist/axis/index.d.ts +10 -0
  7. package/dist/bg.d.ts +51 -0
  8. package/dist/bg.js +44 -0
  9. package/dist/container/actions.d.ts +15 -0
  10. package/dist/container/actions.js +7 -0
  11. package/dist/container/index.d.ts +26 -0
  12. package/dist/container/index.js +50 -0
  13. package/dist/container/marks.d.ts +10 -0
  14. package/dist/container/marks.js +11 -0
  15. package/dist/container/middleware.d.ts +10 -0
  16. package/dist/container/middleware.js +4 -0
  17. package/dist/container/reducer.d.ts +12 -0
  18. package/dist/container/reducer.js +7 -0
  19. package/dist/coordinates-label.d.ts +50 -0
  20. package/dist/coordinates-label.js +46 -0
  21. package/dist/graph-with-controls.d.ts +85 -0
  22. package/dist/graph-with-controls.js +155 -0
  23. package/dist/graph.d.ts +119 -0
  24. package/dist/graph.js +221 -0
  25. package/dist/grid-setup.d.ts +27 -0
  26. package/dist/grid-setup.js +307 -0
  27. package/dist/grid.d.ts +43 -0
  28. package/dist/grid.js +59 -0
  29. package/dist/index.d.ts +14 -0
  30. package/dist/index.js +6 -0
  31. package/dist/labels.d.ts +73 -0
  32. package/dist/labels.js +134 -0
  33. package/dist/mark-label.d.ts +50 -0
  34. package/dist/mark-label.js +84 -0
  35. package/dist/node_modules/.bun/@babel_runtime@7.29.7/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js +7 -0
  36. package/dist/node_modules/.bun/@babel_runtime@7.29.7/node_modules/@babel/runtime/helpers/esm/defineProperty.js +12 -0
  37. package/dist/node_modules/.bun/@babel_runtime@7.29.7/node_modules/@babel/runtime/helpers/esm/extends.js +12 -0
  38. package/dist/node_modules/.bun/@babel_runtime@7.29.7/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js +7 -0
  39. package/dist/node_modules/.bun/@babel_runtime@7.29.7/node_modules/@babel/runtime/helpers/esm/objectSpread2.js +25 -0
  40. package/dist/node_modules/.bun/@babel_runtime@7.29.7/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js +12 -0
  41. package/dist/node_modules/.bun/@babel_runtime@7.29.7/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js +8 -0
  42. package/dist/node_modules/.bun/@babel_runtime@7.29.7/node_modules/@babel/runtime/helpers/esm/toPrimitive.js +14 -0
  43. package/dist/node_modules/.bun/@babel_runtime@7.29.7/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js +9 -0
  44. package/dist/node_modules/.bun/@babel_runtime@7.29.7/node_modules/@babel/runtime/helpers/esm/typeof.js +11 -0
  45. package/dist/node_modules/.bun/@visx_axis@3.12.0_f4eacebf2041cd4f/node_modules/@visx/axis/esm/axis/Axis.js +100 -0
  46. package/dist/node_modules/.bun/@visx_axis@3.12.0_f4eacebf2041cd4f/node_modules/@visx/axis/esm/axis/AxisRenderer.js +61 -0
  47. package/dist/node_modules/.bun/@visx_axis@3.12.0_f4eacebf2041cd4f/node_modules/@visx/axis/esm/axis/Ticks.js +42 -0
  48. package/dist/node_modules/.bun/@visx_axis@3.12.0_f4eacebf2041cd4f/node_modules/@visx/axis/esm/constants/orientation.js +9 -0
  49. package/dist/node_modules/.bun/@visx_axis@3.12.0_f4eacebf2041cd4f/node_modules/@visx/axis/esm/utils/createPoint.js +14 -0
  50. package/dist/node_modules/.bun/@visx_axis@3.12.0_f4eacebf2041cd4f/node_modules/@visx/axis/esm/utils/getAxisRangePaddingConfig.js +21 -0
  51. package/dist/node_modules/.bun/@visx_axis@3.12.0_f4eacebf2041cd4f/node_modules/@visx/axis/esm/utils/getLabelTransform.js +16 -0
  52. package/dist/node_modules/.bun/@visx_axis@3.12.0_f4eacebf2041cd4f/node_modules/@visx/axis/esm/utils/getTickFormatter.js +8 -0
  53. package/dist/node_modules/.bun/@visx_axis@3.12.0_f4eacebf2041cd4f/node_modules/@visx/axis/esm/utils/getTickPosition.js +15 -0
  54. package/dist/node_modules/.bun/@visx_grid@3.12.0_f4eacebf2041cd4f/node_modules/@visx/grid/esm/grids/Grid.js +78 -0
  55. package/dist/node_modules/.bun/@visx_grid@3.12.0_f4eacebf2041cd4f/node_modules/@visx/grid/esm/grids/GridColumns.js +79 -0
  56. package/dist/node_modules/.bun/@visx_grid@3.12.0_f4eacebf2041cd4f/node_modules/@visx/grid/esm/grids/GridRows.js +79 -0
  57. package/dist/node_modules/.bun/@visx_grid@3.12.0_f4eacebf2041cd4f/node_modules/@visx/grid/esm/utils/getScaleBandwidth.js +6 -0
  58. package/dist/node_modules/.bun/@visx_group@3.12.0_f4eacebf2041cd4f/node_modules/@visx/group/esm/Group.js +49 -0
  59. package/dist/node_modules/.bun/@visx_point@3.12.0/node_modules/@visx/point/esm/Point.js +18 -0
  60. package/dist/node_modules/.bun/@visx_scale@3.12.0/node_modules/@visx/scale/esm/utils/coerceNumber.js +10 -0
  61. package/dist/node_modules/.bun/@visx_scale@3.12.0/node_modules/@visx/scale/esm/utils/getTicks.js +9 -0
  62. package/dist/node_modules/.bun/@visx_scale@3.12.0/node_modules/@visx/scale/esm/utils/toString.js +6 -0
  63. package/dist/node_modules/.bun/@visx_shape@3.12.0_f4eacebf2041cd4f/node_modules/@visx/shape/esm/shapes/Line.js +46 -0
  64. package/dist/node_modules/.bun/@visx_shape@3.12.0_f4eacebf2041cd4f/node_modules/@visx/shape/lib/shapes/Line.js +52 -0
  65. package/dist/node_modules/.bun/@visx_text@3.12.0_f4eacebf2041cd4f/node_modules/@visx/text/esm/Text.js +57 -0
  66. package/dist/node_modules/.bun/@visx_text@3.12.0_f4eacebf2041cd4f/node_modules/@visx/text/esm/hooks/useText.js +91 -0
  67. package/dist/node_modules/.bun/@visx_text@3.12.0_f4eacebf2041cd4f/node_modules/@visx/text/esm/util/getStringWidth.js +21 -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/hoist-non-react-statics@3.3.2/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js +68 -0
  71. package/dist/node_modules/.bun/invariant@2.2.4/node_modules/invariant/browser.js +28 -0
  72. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_Hash.js +21 -0
  73. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_ListCache.js +21 -0
  74. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_Map.js +10 -0
  75. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_MapCache.js +21 -0
  76. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_Symbol.js +9 -0
  77. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_assocIndexOf.js +14 -0
  78. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_baseGetTag.js +15 -0
  79. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_baseIsNative.js +16 -0
  80. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_coreJsData.js +9 -0
  81. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_freeGlobal.js +8 -0
  82. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_getMapData.js +14 -0
  83. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_getNative.js +15 -0
  84. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_getRawTag.js +19 -0
  85. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_getValue.js +11 -0
  86. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_hashClear.js +13 -0
  87. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_hashDelete.js +12 -0
  88. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_hashGet.js +18 -0
  89. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_hashHas.js +14 -0
  90. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_hashSet.js +14 -0
  91. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_isKeyable.js +12 -0
  92. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_isMasked.js +16 -0
  93. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_listCacheClear.js +11 -0
  94. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_listCacheDelete.js +14 -0
  95. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_listCacheGet.js +14 -0
  96. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_listCacheHas.js +13 -0
  97. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_listCacheSet.js +14 -0
  98. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_mapCacheClear.js +19 -0
  99. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_mapCacheDelete.js +14 -0
  100. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_mapCacheGet.js +13 -0
  101. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_mapCacheHas.js +13 -0
  102. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_mapCacheSet.js +14 -0
  103. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_nativeCreate.js +9 -0
  104. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_objectToString.js +12 -0
  105. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_root.js +10 -0
  106. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/_toSource.js +20 -0
  107. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/eq.js +11 -0
  108. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/isFunction.js +16 -0
  109. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/isObject.js +12 -0
  110. package/dist/node_modules/.bun/lodash@4.18.1/node_modules/lodash/memoize.js +20 -0
  111. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/formula_evaluator.js +37 -0
  112. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/lexer.js +509 -0
  113. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/math_function.js +108 -0
  114. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/postfix.js +31 -0
  115. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/postfix_evaluator.js +45 -0
  116. package/dist/node_modules/.bun/react-input-autosize@2.2.2_f4eacebf2041cd4f/node_modules/react-input-autosize/lib/AutosizeInput.js +216 -0
  117. package/dist/node_modules/.bun/react-is@16.13.1/node_modules/react-is/cjs/react-is.development.js +82 -0
  118. package/dist/node_modules/.bun/react-is@16.13.1/node_modules/react-is/cjs/react-is.production.min.js +62 -0
  119. package/dist/node_modules/.bun/react-is@16.13.1/node_modules/react-is/index.js +10 -0
  120. package/dist/node_modules/.bun/react-redux@6.0.1_926323a638b43722/node_modules/react-redux/es/components/Context.js +5 -0
  121. package/dist/node_modules/.bun/react-redux@6.0.1_926323a638b43722/node_modules/react-redux/es/components/Provider.js +47 -0
  122. package/dist/node_modules/.bun/react-redux@6.0.1_926323a638b43722/node_modules/react-redux/es/components/connectAdvanced.js +95 -0
  123. package/dist/node_modules/.bun/react-redux@6.0.1_926323a638b43722/node_modules/react-redux/es/connect/connect.js +52 -0
  124. package/dist/node_modules/.bun/react-redux@6.0.1_926323a638b43722/node_modules/react-redux/es/connect/mapDispatchToProps.js +23 -0
  125. package/dist/node_modules/.bun/react-redux@6.0.1_926323a638b43722/node_modules/react-redux/es/connect/mapStateToProps.js +13 -0
  126. package/dist/node_modules/.bun/react-redux@6.0.1_926323a638b43722/node_modules/react-redux/es/connect/mergeProps.js +26 -0
  127. package/dist/node_modules/.bun/react-redux@6.0.1_926323a638b43722/node_modules/react-redux/es/connect/selectorFactory.js +41 -0
  128. package/dist/node_modules/.bun/react-redux@6.0.1_926323a638b43722/node_modules/react-redux/es/connect/verifySubselectors.js +11 -0
  129. package/dist/node_modules/.bun/react-redux@6.0.1_926323a638b43722/node_modules/react-redux/es/connect/wrapMapToProps.js +28 -0
  130. package/dist/node_modules/.bun/react-redux@6.0.1_926323a638b43722/node_modules/react-redux/es/index.js +4 -0
  131. package/dist/node_modules/.bun/react-redux@6.0.1_926323a638b43722/node_modules/react-redux/es/utils/isPlainObject.js +10 -0
  132. package/dist/node_modules/.bun/react-redux@6.0.1_926323a638b43722/node_modules/react-redux/es/utils/shallowEqual.js +15 -0
  133. package/dist/node_modules/.bun/react-redux@6.0.1_926323a638b43722/node_modules/react-redux/es/utils/verifyPlainObject.js +8 -0
  134. package/dist/node_modules/.bun/react-redux@6.0.1_926323a638b43722/node_modules/react-redux/es/utils/warning.js +9 -0
  135. package/dist/node_modules/.bun/reduce-css-calc@1.3.0/node_modules/reduce-css-calc/index.js +49 -0
  136. package/dist/node_modules/.bun/reduce-function-call@1.0.3/node_modules/reduce-function-call/index.js +34 -0
  137. package/dist/node_modules/.bun/redux-undo@1.1.0/node_modules/redux-undo/dist/redux-undo.js +185 -0
  138. package/dist/node_modules/.bun/redux@4.2.1/node_modules/redux/es/redux.js +225 -0
  139. package/dist/toggle-bar.d.ts +40 -0
  140. package/dist/tool-menu.d.ts +21 -0
  141. package/dist/tool-menu.js +188 -0
  142. package/dist/tools/index.d.ts +17 -0
  143. package/dist/tools/index.js +12 -0
  144. package/dist/tools/line/component.d.ts +113 -0
  145. package/dist/tools/line/component.js +58 -0
  146. package/dist/tools/line/index.d.ts +13 -0
  147. package/dist/tools/line/index.js +6 -0
  148. package/dist/tools/polygon/component.d.ts +114 -0
  149. package/dist/tools/polygon/component.js +194 -0
  150. package/dist/tools/polygon/index.d.ts +19 -0
  151. package/dist/tools/polygon/index.js +55 -0
  152. package/dist/tools/polygon/line.d.ts +125 -0
  153. package/dist/tools/polygon/polygon.d.ts +122 -0
  154. package/dist/tools/polygon/polygon.js +62 -0
  155. package/dist/tools/shared/arrow-head.d.ts +43 -0
  156. package/dist/tools/shared/arrow-head.js +37 -0
  157. package/dist/tools/shared/line/index.d.ts +240 -0
  158. package/dist/tools/shared/line/index.js +320 -0
  159. package/dist/tools/shared/line/line-path.d.ts +57 -0
  160. package/dist/tools/shared/line/with-root-edge.d.ts +143 -0
  161. package/dist/tools/shared/point/arrow-point.d.ts +57 -0
  162. package/dist/tools/shared/point/arrow-point.js +47 -0
  163. package/dist/tools/shared/point/arrow.d.ts +46 -0
  164. package/dist/tools/shared/point/arrow.js +36 -0
  165. package/dist/tools/shared/point/base-point.d.ts +50 -0
  166. package/dist/tools/shared/point/base-point.js +88 -0
  167. package/dist/tools/shared/point/index.d.ts +217 -0
  168. package/dist/tools/shared/point/index.js +51 -0
  169. package/dist/tools/shared/styles.d.ts +24 -0
  170. package/dist/tools/shared/styles.js +17 -0
  171. package/dist/tools/shared/types.d.ts +15 -0
  172. package/dist/tools/shared/types.js +10 -0
  173. package/dist/undo-redo.d.ts +20 -0
  174. package/dist/undo-redo.js +33 -0
  175. package/dist/use-debounce.d.ts +9 -0
  176. package/dist/use-debounce.js +13 -0
  177. package/dist/utils.d.ts +58 -0
  178. package/dist/utils.js +72 -0
  179. package/package.json +36 -26
  180. package/CHANGELOG.json +0 -1
  181. package/CHANGELOG.md +0 -445
  182. package/LICENSE.md +0 -5
  183. package/lib/axis/arrow.js +0 -79
  184. package/lib/axis/arrow.js.map +0 -1
  185. package/lib/axis/axes.js +0 -327
  186. package/lib/axis/axes.js.map +0 -1
  187. package/lib/axis/index.js +0 -21
  188. package/lib/axis/index.js.map +0 -1
  189. package/lib/bg.js +0 -114
  190. package/lib/bg.js.map +0 -1
  191. package/lib/container/actions.js +0 -18
  192. package/lib/container/actions.js.map +0 -1
  193. package/lib/container/index.js +0 -120
  194. package/lib/container/index.js.map +0 -1
  195. package/lib/container/marks.js +0 -22
  196. package/lib/container/marks.js.map +0 -1
  197. package/lib/container/middleware.js +0 -19
  198. package/lib/container/middleware.js.map +0 -1
  199. package/lib/container/reducer.js +0 -18
  200. package/lib/container/reducer.js.map +0 -1
  201. package/lib/coordinates-label.js +0 -77
  202. package/lib/coordinates-label.js.map +0 -1
  203. package/lib/graph-with-controls.js +0 -297
  204. package/lib/graph-with-controls.js.map +0 -1
  205. package/lib/graph.js +0 -353
  206. package/lib/graph.js.map +0 -1
  207. package/lib/grid-setup.js +0 -414
  208. package/lib/grid-setup.js.map +0 -1
  209. package/lib/grid.js +0 -131
  210. package/lib/grid.js.map +0 -1
  211. package/lib/index.js +0 -40
  212. package/lib/index.js.map +0 -1
  213. package/lib/labels.js +0 -199
  214. package/lib/labels.js.map +0 -1
  215. package/lib/mark-label.js +0 -159
  216. package/lib/mark-label.js.map +0 -1
  217. package/lib/toggle-bar.js +0 -248
  218. package/lib/toggle-bar.js.map +0 -1
  219. package/lib/tool-menu.js +0 -218
  220. package/lib/tool-menu.js.map +0 -1
  221. package/lib/tools/index.js +0 -24
  222. package/lib/tools/index.js.map +0 -1
  223. package/lib/tools/line/component.js +0 -92
  224. package/lib/tools/line/component.js.map +0 -1
  225. package/lib/tools/line/index.js +0 -11
  226. package/lib/tools/line/index.js.map +0 -1
  227. package/lib/tools/polygon/component.js +0 -358
  228. package/lib/tools/polygon/component.js.map +0 -1
  229. package/lib/tools/polygon/index.js +0 -89
  230. package/lib/tools/polygon/index.js.map +0 -1
  231. package/lib/tools/polygon/line.js +0 -114
  232. package/lib/tools/polygon/line.js.map +0 -1
  233. package/lib/tools/polygon/polygon.js +0 -128
  234. package/lib/tools/polygon/polygon.js.map +0 -1
  235. package/lib/tools/shared/arrow-head.js +0 -62
  236. package/lib/tools/shared/arrow-head.js.map +0 -1
  237. package/lib/tools/shared/line/index.js +0 -539
  238. package/lib/tools/shared/line/index.js.map +0 -1
  239. package/lib/tools/shared/line/line-path.js +0 -121
  240. package/lib/tools/shared/line/line-path.js.map +0 -1
  241. package/lib/tools/shared/line/with-root-edge.js +0 -121
  242. package/lib/tools/shared/line/with-root-edge.js.map +0 -1
  243. package/lib/tools/shared/point/arrow-point.js +0 -86
  244. package/lib/tools/shared/point/arrow-point.js.map +0 -1
  245. package/lib/tools/shared/point/arrow.js +0 -70
  246. package/lib/tools/shared/point/arrow.js.map +0 -1
  247. package/lib/tools/shared/point/base-point.js +0 -137
  248. package/lib/tools/shared/point/base-point.js.map +0 -1
  249. package/lib/tools/shared/point/index.js +0 -80
  250. package/lib/tools/shared/point/index.js.map +0 -1
  251. package/lib/tools/shared/styles.js +0 -26
  252. package/lib/tools/shared/styles.js.map +0 -1
  253. package/lib/tools/shared/types.js +0 -15
  254. package/lib/tools/shared/types.js.map +0 -1
  255. package/lib/undo-redo.js +0 -67
  256. package/lib/undo-redo.js.map +0 -1
  257. package/lib/use-debounce.js +0 -25
  258. package/lib/use-debounce.js.map +0 -1
  259. package/lib/utils.js +0 -235
  260. package/lib/utils.js.map +0 -1
  261. package/src/__tests__/bg.test.jsx +0 -250
  262. package/src/__tests__/coordinates-label.test.jsx +0 -243
  263. package/src/__tests__/graph-with-controls.test.jsx +0 -184
  264. package/src/__tests__/graph.test.jsx +0 -93
  265. package/src/__tests__/grid-setup.test.jsx +0 -645
  266. package/src/__tests__/grid.test.jsx +0 -23
  267. package/src/__tests__/labels.test.jsx +0 -41
  268. package/src/__tests__/mark-label.test.jsx +0 -66
  269. package/src/__tests__/toggle-bar.test.jsx +0 -106
  270. package/src/__tests__/tool-menu.test.jsx +0 -453
  271. package/src/__tests__/undo-redo.test.jsx +0 -26
  272. package/src/__tests__/use-debounce.test.js +0 -21
  273. package/src/__tests__/utils.js +0 -41
  274. package/src/__tests__/utils.test.js +0 -105
  275. package/src/axis/__tests__/arrow.test.jsx +0 -43
  276. package/src/axis/__tests__/axes.test.jsx +0 -182
  277. package/src/axis/arrow.jsx +0 -57
  278. package/src/axis/axes.jsx +0 -284
  279. package/src/axis/index.js +0 -3
  280. package/src/bg.jsx +0 -96
  281. package/src/container/__tests__/actions.test.js +0 -105
  282. package/src/container/__tests__/index.test.jsx +0 -227
  283. package/src/container/__tests__/marks.test.js +0 -172
  284. package/src/container/__tests__/middleware.test.js +0 -235
  285. package/src/container/__tests__/reducer.test.js +0 -324
  286. package/src/container/actions.js +0 -8
  287. package/src/container/index.jsx +0 -85
  288. package/src/container/marks.js +0 -14
  289. package/src/container/middleware.js +0 -7
  290. package/src/container/reducer.js +0 -5
  291. package/src/coordinates-label.jsx +0 -62
  292. package/src/graph-with-controls.jsx +0 -242
  293. package/src/graph.jsx +0 -333
  294. package/src/grid-setup.jsx +0 -432
  295. package/src/grid.jsx +0 -133
  296. package/src/index.js +0 -7
  297. package/src/labels.jsx +0 -173
  298. package/src/mark-label.jsx +0 -125
  299. package/src/toggle-bar.jsx +0 -221
  300. package/src/tool-menu.jsx +0 -235
  301. package/src/tools/index.js +0 -8
  302. package/src/tools/line/__tests__/component.test.jsx +0 -37
  303. package/src/tools/line/component.jsx +0 -77
  304. package/src/tools/line/index.js +0 -4
  305. package/src/tools/polygon/__tests__/component.test.jsx +0 -487
  306. package/src/tools/polygon/__tests__/index.test.js +0 -65
  307. package/src/tools/polygon/__tests__/line.test.jsx +0 -23
  308. package/src/tools/polygon/__tests__/polygon.test.jsx +0 -44
  309. package/src/tools/polygon/component.jsx +0 -324
  310. package/src/tools/polygon/index.js +0 -52
  311. package/src/tools/polygon/line.jsx +0 -80
  312. package/src/tools/polygon/polygon.jsx +0 -93
  313. package/src/tools/shared/__tests__/arrow-head.test.jsx +0 -33
  314. package/src/tools/shared/arrow-head.jsx +0 -46
  315. package/src/tools/shared/line/__tests__/index.test.jsx +0 -553
  316. package/src/tools/shared/line/__tests__/line-path.test.jsx +0 -56
  317. package/src/tools/shared/line/__tests__/with-root-edge.test.jsx +0 -488
  318. package/src/tools/shared/line/index.jsx +0 -471
  319. package/src/tools/shared/line/line-path.jsx +0 -85
  320. package/src/tools/shared/line/with-root-edge.jsx +0 -97
  321. package/src/tools/shared/point/__tests__/arrow-point.test.jsx +0 -91
  322. package/src/tools/shared/point/__tests__/arrow.test.jsx +0 -469
  323. package/src/tools/shared/point/__tests__/base-point.test.jsx +0 -87
  324. package/src/tools/shared/point/arrow-point.jsx +0 -60
  325. package/src/tools/shared/point/arrow.jsx +0 -40
  326. package/src/tools/shared/point/base-point.jsx +0 -113
  327. package/src/tools/shared/point/index.jsx +0 -58
  328. package/src/tools/shared/styles.js +0 -20
  329. package/src/tools/shared/types.js +0 -8
  330. package/src/undo-redo.jsx +0 -37
  331. package/src/use-debounce.js +0 -13
  332. package/src/utils.js +0 -230
@@ -1,250 +0,0 @@
1
- import React from 'react';
2
- import { render } from '@pie-lib/test-utils';
3
- import { select } from 'd3-selection';
4
- import Bg from '../bg';
5
-
6
- jest.mock('d3-selection', () => ({
7
- select: jest.fn(),
8
- pointer: jest.fn(() => [50, 50]),
9
- }));
10
-
11
- describe('Bg', () => {
12
- let defaultProps;
13
- let mockRect;
14
- let clickHandler;
15
-
16
- beforeEach(() => {
17
- clickHandler = null;
18
- mockRect = {
19
- on: jest.fn((event, handler) => {
20
- if (event === 'click') {
21
- clickHandler = handler;
22
- }
23
- }),
24
- node: jest.fn(() => ({})),
25
- };
26
-
27
- select.mockReturnValue(mockRect);
28
-
29
- defaultProps = {
30
- width: 500,
31
- height: 400,
32
- onClick: jest.fn(),
33
- graphProps: {
34
- domain: { min: -10, max: 10, step: 1, label: 'x', axisLabel: 'X' },
35
- range: { min: -10, max: 10, step: 1, label: 'y', axisLabel: 'Y' },
36
- size: { width: 500, height: 400 },
37
- scale: {
38
- x: {
39
- invert: jest.fn((val) => val / 10),
40
- },
41
- y: {
42
- invert: jest.fn((val) => val / 10),
43
- },
44
- },
45
- },
46
- };
47
- });
48
-
49
- describe('rendering', () => {
50
- it('renders without crashing', () => {
51
- const { container } = render(<Bg {...defaultProps} />);
52
- expect(container).toBeTruthy();
53
- });
54
-
55
- it('renders a rect element', () => {
56
- const { container } = render(<Bg {...defaultProps} />);
57
- const rect = container.querySelector('rect');
58
- expect(rect).toBeTruthy();
59
- });
60
-
61
- it('applies correct dimensions', () => {
62
- const { container } = render(<Bg {...defaultProps} />);
63
- const rect = container.querySelector('rect');
64
-
65
- // Width and height should be expanded by padding * 2
66
- const padding = 10; // default padding
67
- expect(rect.getAttribute('width')).toBe(String(defaultProps.width + padding * 2));
68
- expect(rect.getAttribute('height')).toBe(String(defaultProps.height + padding * 2));
69
- });
70
-
71
- it('applies correct transform', () => {
72
- const { container } = render(<Bg {...defaultProps} />);
73
- const rect = container.querySelector('rect');
74
- const padding = 10;
75
-
76
- expect(rect.getAttribute('transform')).toBe(`translate(-${padding}, -${padding})`);
77
- });
78
-
79
- it('sets fill opacity to make it invisible', () => {
80
- const { container } = render(<Bg {...defaultProps} />);
81
- const rect = container.querySelector('rect');
82
-
83
- expect(rect.getAttribute('fill-opacity')).toBe('0.0');
84
- });
85
- });
86
-
87
- describe('componentDidMount', () => {
88
- it('attaches click handler to rect', () => {
89
- render(<Bg {...defaultProps} />);
90
-
91
- expect(select).toHaveBeenCalled();
92
- expect(mockRect.on).toHaveBeenCalledWith('click', expect.any(Function));
93
- });
94
- });
95
-
96
- describe('getRectPadding', () => {
97
- it('returns 10 for normal graphs', () => {
98
- const { container } = render(<Bg {...defaultProps} />);
99
- const rect = container.querySelector('rect');
100
- const padding = 10;
101
-
102
- expect(rect.getAttribute('width')).toBe(String(defaultProps.width + padding * 2));
103
- });
104
-
105
- it('returns 6 for graphs with thinner shapes', () => {
106
- const props = {
107
- ...defaultProps,
108
- graphProps: {
109
- ...defaultProps.graphProps,
110
- domain: { min: -100, max: 100, step: 1, label: 'x', axisLabel: 'X' },
111
- },
112
- };
113
-
114
- const { container } = render(<Bg {...props} />);
115
- const rect = container.querySelector('rect');
116
- const padding = 6;
117
-
118
- expect(rect.getAttribute('width')).toBe(String(props.width + padding * 2));
119
- });
120
- });
121
-
122
- describe('onRectClick', () => {
123
- it('calls onClick with snapped coordinates', () => {
124
- const { pointer } = require('d3-selection');
125
- pointer.mockReturnValue([100, 100]);
126
-
127
- render(<Bg {...defaultProps} />);
128
-
129
- const event = new MouseEvent('click');
130
- clickHandler(event);
131
-
132
- expect(defaultProps.onClick).toHaveBeenCalled();
133
- const calledWith = defaultProps.onClick.mock.calls[0][0];
134
- expect(calledWith).toHaveProperty('x');
135
- expect(calledWith).toHaveProperty('y');
136
- });
137
-
138
- it('snaps coordinates to nearest tick', () => {
139
- const { pointer } = require('d3-selection');
140
-
141
- render(<Bg {...defaultProps} />);
142
-
143
- const event = new MouseEvent('click');
144
- clickHandler(event);
145
-
146
- expect(defaultProps.onClick).toHaveBeenCalled();
147
- const { x, y } = defaultProps.onClick.mock.calls[0][0];
148
-
149
- expect(Number.isInteger(x) || x.toString().length <= 4).toBe(true);
150
- expect(Number.isInteger(y) || y.toString().length <= 4).toBe(true);
151
- });
152
-
153
- it('accounts for padding when converting coordinates', () => {
154
- const { pointer } = require('d3-selection');
155
- const coords = [50, 50];
156
- pointer.mockReturnValue(coords);
157
-
158
- render(<Bg {...defaultProps} />);
159
-
160
- const event = new MouseEvent('click');
161
- clickHandler(event);
162
-
163
- expect(defaultProps.graphProps.scale.x.invert).toHaveBeenCalled();
164
- expect(defaultProps.graphProps.scale.y.invert).toHaveBeenCalled();
165
- });
166
- });
167
-
168
- describe('shouldComponentUpdate', () => {
169
- it('returns true when width changes', () => {
170
- const { rerender } = render(<Bg {...defaultProps} />);
171
- const newProps = {
172
- ...defaultProps,
173
- width: 600,
174
- graphProps: {
175
- ...defaultProps.graphProps,
176
- size: { width: 600, height: defaultProps.height },
177
- },
178
- };
179
-
180
- expect(() => {
181
- rerender(<Bg {...newProps} />);
182
- }).not.toThrow();
183
- });
184
-
185
- it('returns true when height changes', () => {
186
- const { rerender } = render(<Bg {...defaultProps} />);
187
- const newProps = {
188
- ...defaultProps,
189
- height: 500,
190
- graphProps: {
191
- ...defaultProps.graphProps,
192
- size: { width: defaultProps.width, height: 500 },
193
- },
194
- };
195
-
196
- expect(() => {
197
- rerender(<Bg {...newProps} />);
198
- }).not.toThrow();
199
- });
200
-
201
- it('returns true when graphProps domain/range changes', () => {
202
- const { rerender } = render(<Bg {...defaultProps} />);
203
- const newProps = {
204
- ...defaultProps,
205
- graphProps: {
206
- ...defaultProps.graphProps,
207
- domain: { min: -5, max: 5, step: 1, label: 'x', axisLabel: 'X' },
208
- },
209
- };
210
-
211
- expect(() => {
212
- rerender(<Bg {...newProps} />);
213
- }).not.toThrow();
214
- });
215
- });
216
-
217
- describe('edge cases', () => {
218
- it('handles zero dimensions', () => {
219
- const props = { ...defaultProps, width: 0, height: 0 };
220
- const { container } = render(<Bg {...props} />);
221
- const rect = container.querySelector('rect');
222
-
223
- expect(rect).toBeTruthy();
224
- });
225
-
226
- it('handles large dimensions', () => {
227
- const props = { ...defaultProps, width: 10000, height: 10000 };
228
- const { container } = render(<Bg {...props} />);
229
- const rect = container.querySelector('rect');
230
-
231
- expect(rect).toBeTruthy();
232
- expect(rect.getAttribute('width')).toBe('10020');
233
- expect(rect.getAttribute('height')).toBe('10020');
234
- });
235
-
236
- it('handles negative coordinates in domain/range', () => {
237
- const props = {
238
- ...defaultProps,
239
- graphProps: {
240
- ...defaultProps.graphProps,
241
- domain: { min: -100, max: -10, step: 1, label: 'x', axisLabel: 'X' },
242
- range: { min: -100, max: -10, step: 1, label: 'y', axisLabel: 'Y' },
243
- },
244
- };
245
-
246
- const { container } = render(<Bg {...props} />);
247
- expect(container.querySelector('rect')).toBeTruthy();
248
- });
249
- });
250
- });
@@ -1,243 +0,0 @@
1
- import React from 'react';
2
- import { render } from '@pie-lib/test-utils';
3
- import { CoordinatesLabel, getLabelPosition } from '../coordinates-label';
4
-
5
- describe('CoordinatesLabel', () => {
6
- let defaultProps;
7
- let graphProps;
8
-
9
- beforeEach(() => {
10
- graphProps = {
11
- domain: { min: -10, max: 10, step: 1, label: 'x', axisLabel: 'X' },
12
- range: { min: -10, max: 10, step: 1, label: 'y', axisLabel: 'Y' },
13
- scale: {
14
- x: jest.fn((val) => (val + 10) * 20),
15
- y: jest.fn((val) => (10 - val) * 20),
16
- },
17
- };
18
-
19
- defaultProps = {
20
- x: 5,
21
- y: 5,
22
- graphProps,
23
- };
24
- });
25
-
26
- describe('rendering', () => {
27
- it('renders without crashing', () => {
28
- const { container } = render(<CoordinatesLabel {...defaultProps} />);
29
- expect(container).toBeTruthy();
30
- });
31
-
32
- it('displays formatted coordinates', () => {
33
- const { container } = render(<CoordinatesLabel {...defaultProps} />);
34
- const input = container.querySelector('input');
35
-
36
- expect(input.value).toBe('(5, 5)');
37
- });
38
-
39
- it('rounds coordinates to 4 decimal places', () => {
40
- const props = { ...defaultProps, x: 1.123456, y: 2.987654 };
41
- const { container } = render(<CoordinatesLabel {...props} />);
42
- const input = container.querySelector('input');
43
-
44
- expect(input.value).toBe('(1.1235, 2.9877)');
45
- });
46
-
47
- it('handles integer coordinates', () => {
48
- const props = { ...defaultProps, x: 0, y: 0 };
49
- const { container } = render(<CoordinatesLabel {...props} />);
50
- const input = container.querySelector('input');
51
-
52
- expect(input.value).toBe('(0, 0)');
53
- });
54
-
55
- it('handles negative coordinates', () => {
56
- const props = { ...defaultProps, x: -3, y: -7 };
57
- const { container } = render(<CoordinatesLabel {...props} />);
58
- const input = container.querySelector('input');
59
-
60
- expect(input.value).toBe('(-3, -7)');
61
- });
62
-
63
- it('renders as an input element', () => {
64
- const { container } = render(<CoordinatesLabel {...defaultProps} />);
65
- const input = container.querySelector('input');
66
-
67
- expect(input).toBeTruthy();
68
- expect(input.tagName).toBe('INPUT');
69
- });
70
-
71
- it('applies correct styles', () => {
72
- const { container } = render(<CoordinatesLabel {...defaultProps} />);
73
- const wrapper = container.firstChild;
74
-
75
- expect(wrapper).toHaveStyle({ position: 'absolute' });
76
- expect(wrapper).toHaveStyle({ pointerEvents: 'auto' });
77
- });
78
- });
79
-
80
- describe('getLabelPosition', () => {
81
- it('positions label to the right by default', () => {
82
- const position = getLabelPosition(graphProps, 0, 0, 60);
83
-
84
- expect(position.left).toBeGreaterThan(graphProps.scale.x(0));
85
- expect(position.top).toBeDefined();
86
- });
87
-
88
- it('positions label to the left when near right edge', () => {
89
- const x = 9; // Near max
90
- const labelLength = 100;
91
- const position = getLabelPosition(graphProps, x, 0, labelLength);
92
-
93
- expect(position.left).toBeLessThan(graphProps.scale.x(x));
94
- });
95
-
96
- it('adjusts top position for minimum y value', () => {
97
- const position = getLabelPosition(graphProps, 0, -10, 60);
98
-
99
- expect(position.top).toBe(graphProps.scale.y(-10) - 16);
100
- });
101
-
102
- it('adjusts top position for maximum y value', () => {
103
- const position = getLabelPosition(graphProps, 0, 10, 60);
104
-
105
- expect(position.top).toBe(graphProps.scale.y(10) - 0);
106
- });
107
-
108
- it('centers label vertically for middle values', () => {
109
- const position = getLabelPosition(graphProps, 0, 0, 60);
110
-
111
- expect(position.top).toBe(graphProps.scale.y(0) - 8);
112
- });
113
-
114
- it('applies left shift consistently', () => {
115
- const leftShift = 10;
116
- const labelLength = 60;
117
-
118
- const rightPos = getLabelPosition(graphProps, 0, 0, labelLength);
119
- expect(rightPos.left).toBe(graphProps.scale.x(0) + leftShift);
120
-
121
- const leftPos = getLabelPosition(graphProps, 9, 0, labelLength);
122
- expect(leftPos.left).toBe(graphProps.scale.x(9) - leftShift - labelLength);
123
- });
124
- });
125
-
126
- describe('label width calculation', () => {
127
- it('calculates width based on label length', () => {
128
- const props = { ...defaultProps, x: 1, y: 2 };
129
- const { container } = render(<CoordinatesLabel {...props} />);
130
- const wrapper = container.firstChild;
131
-
132
- const expectedWidth = 6 * 6;
133
- expect(wrapper).toHaveStyle({ width: `${expectedWidth}px` });
134
- });
135
-
136
- it('adjusts width for longer coordinates', () => {
137
- const props = { ...defaultProps, x: -10.123, y: 10.456 };
138
- const { container } = render(<CoordinatesLabel {...props} />);
139
- const wrapper = container.firstChild;
140
-
141
- const style = window.getComputedStyle(wrapper);
142
- expect(parseInt(style.width)).toBeGreaterThan(42);
143
- });
144
- });
145
-
146
- describe('edge cases', () => {
147
- it('handles very small coordinates', () => {
148
- const props = { ...defaultProps, x: 0.0001, y: 0.0002 };
149
- const { container } = render(<CoordinatesLabel {...props} />);
150
- const input = container.querySelector('input');
151
-
152
- expect(input.value).toContain('(');
153
- expect(input.value).toContain(')');
154
- expect(input.value).toContain(',');
155
- });
156
-
157
- it('handles very large coordinates', () => {
158
- const props = { ...defaultProps, x: 999999, y: 888888 };
159
- const { container } = render(<CoordinatesLabel {...props} />);
160
- const input = container.querySelector('input');
161
-
162
- expect(input.value).toBe('(999999, 888888)');
163
- });
164
-
165
- it('handles zero coordinates', () => {
166
- const props = { ...defaultProps, x: 0, y: 0 };
167
- const { container } = render(<CoordinatesLabel {...props} />);
168
- const input = container.querySelector('input');
169
-
170
- expect(input.value).toBe('(0, 0)');
171
- });
172
-
173
- it('handles coordinates at domain/range boundaries', () => {
174
- const props = { ...defaultProps, x: 10, y: 10 };
175
- const { container } = render(<CoordinatesLabel {...props} />);
176
- const input = container.querySelector('input');
177
-
178
- expect(input.value).toBe('(10, 10)');
179
- });
180
-
181
- it('handles negative boundaries', () => {
182
- const props = { ...defaultProps, x: -10, y: -10 };
183
- const { container } = render(<CoordinatesLabel {...props} />);
184
- const input = container.querySelector('input');
185
-
186
- expect(input.value).toBe('(-10, -10)');
187
- });
188
- });
189
-
190
- describe('prop types and validation', () => {
191
- it('accepts required props', () => {
192
- expect(() => {
193
- render(<CoordinatesLabel {...defaultProps} />);
194
- }).not.toThrow();
195
- });
196
-
197
- it('renders with missing optional props', () => {
198
- const props = {
199
- x: 1,
200
- y: 2,
201
- graphProps,
202
- };
203
-
204
- expect(() => {
205
- render(<CoordinatesLabel {...props} />);
206
- }).not.toThrow();
207
- });
208
- });
209
-
210
- describe('updates', () => {
211
- it('updates when x coordinate changes', () => {
212
- const { container, rerender } = render(<CoordinatesLabel {...defaultProps} />);
213
- let input = container.querySelector('input');
214
- expect(input.value).toBe('(5, 5)');
215
-
216
- rerender(<CoordinatesLabel {...defaultProps} x={7} />);
217
- input = container.querySelector('input');
218
- expect(input.value).toBe('(7, 5)');
219
- });
220
-
221
- it('updates when y coordinate changes', () => {
222
- const { container, rerender } = render(<CoordinatesLabel {...defaultProps} />);
223
- let input = container.querySelector('input');
224
- expect(input.value).toBe('(5, 5)');
225
-
226
- rerender(<CoordinatesLabel {...defaultProps} y={3} />);
227
- input = container.querySelector('input');
228
- expect(input.value).toBe('(5, 3)');
229
- });
230
-
231
- it('updates position when coordinates change', () => {
232
- const { container, rerender } = render(<CoordinatesLabel {...defaultProps} />);
233
- const initialStyle = window.getComputedStyle(container.firstChild);
234
- const initialLeft = initialStyle.left;
235
-
236
- rerender(<CoordinatesLabel {...defaultProps} x={8} />);
237
- const newStyle = window.getComputedStyle(container.firstChild);
238
- const newLeft = newStyle.left;
239
-
240
- expect(newLeft).not.toBe(initialLeft);
241
- });
242
- });
243
- });
@@ -1,184 +0,0 @@
1
- import { render } from '@pie-lib/test-utils';
2
- import React from 'react';
3
- import {
4
- filterByValidToolTypes,
5
- filterByVisibleToolTypes,
6
- getAvailableTool,
7
- GraphWithControls,
8
- setToolbarAvailability,
9
- toolIsAvailable,
10
- } from '../graph-with-controls';
11
- import { allTools, line as lineTool, toolsArr } from '../tools';
12
-
13
- // Mock DragProvider to avoid @dnd-kit React version conflicts
14
- jest.mock('@pie-lib/drag', () => ({
15
- DragProvider: ({ children }) => <div data-testid="drag-provider">{children}</div>,
16
- }));
17
-
18
- // Mock @dnd-kit/core hooks to avoid DndContext requirement
19
- jest.mock('@dnd-kit/core', () => ({
20
- useDraggable: jest.fn(() => ({
21
- attributes: {
22
- role: 'button',
23
- tabIndex: 0,
24
- },
25
- listeners: {
26
- onPointerDown: jest.fn(),
27
- },
28
- setNodeRef: jest.fn(),
29
- transform: null,
30
- transition: null,
31
- isDragging: false,
32
- })),
33
- useDroppable: jest.fn(() => ({
34
- setNodeRef: jest.fn(),
35
- isOver: false,
36
- active: null,
37
- })),
38
- }));
39
-
40
- // Mock @dnd-kit/utilities for CSS transform
41
- jest.mock('@dnd-kit/utilities', () => ({
42
- CSS: {
43
- Transform: {
44
- toString: jest.fn((transform) => (transform ? 'translate3d(0, 0, 0)' : '')),
45
- },
46
- },
47
- }));
48
-
49
- // Mock @dnd-kit/sortable for arrayMove
50
- jest.mock('@dnd-kit/sortable', () => ({
51
- arrayMove: jest.fn((array, from, to) => {
52
- const newArray = [...array];
53
- const [removed] = newArray.splice(from, 1);
54
- newArray.splice(to, 0, removed);
55
- return newArray;
56
- }),
57
- }));
58
-
59
- const line = {
60
- type: 'line',
61
- from: { x: 0, y: 0 },
62
- to: { x: 1, y: 1 },
63
- label: 'Line',
64
- building: true,
65
- };
66
-
67
- const polygon = {
68
- type: 'polygon',
69
- points: [
70
- { x: 0, y: 0 },
71
- { x: 1, y: 1 },
72
- { x: 2, y: 2 },
73
- ],
74
- };
75
-
76
- const marks = [line, polygon];
77
-
78
- // Pure function tests - keep as-is
79
- describe('setToolbarAvailability', () => {
80
- it('sets `toolbar: true` if tool should be displayed in toolbar - all tools', () => {
81
- const result = setToolbarAvailability(allTools);
82
- const allTrue = new Array(toolsArr.length).fill(true);
83
-
84
- expect(result.map((r) => r.toolbar)).toEqual(allTrue);
85
- });
86
-
87
- it('sets `toolbar: true` if tool should be displayed in toolbar - few tools', () => {
88
- const result = setToolbarAvailability(['line', 'polygon']);
89
- const allOthersFalse = new Array(toolsArr.length - 2).fill(false);
90
-
91
- expect(result.filter((r) => r.type === 'line' || r.type === 'polygon').map((r) => r.toolbar)).toEqual([true, true]);
92
- expect(result.filter((r) => r.type !== 'line' && r.type !== 'polygon').map((r) => r.toolbar)).toEqual(
93
- allOthersFalse,
94
- );
95
- });
96
- });
97
-
98
- describe('toolIsAvailable', () => {
99
- const tools = setToolbarAvailability(['line', 'polygon']);
100
-
101
- it('returns true if tool is available', () => {
102
- expect(toolIsAvailable(tools, lineTool())).toEqual(true);
103
- });
104
- });
105
-
106
- describe('getAvailableTool', () => {
107
- it('returns the first available tool in list if there is any', () => {
108
- const tools = setToolbarAvailability(['line', 'polygon']);
109
-
110
- expect(getAvailableTool(tools).toolbar).toEqual(true);
111
- });
112
-
113
- it('returns undefined list if there is no available tool', () => {
114
- const tools = setToolbarAvailability([]);
115
-
116
- expect(getAvailableTool(tools)).toEqual(undefined);
117
- });
118
- });
119
-
120
- describe('filterByValidToolTypes', () => {
121
- it('filters marks by valid types', () => {
122
- const marks = [{ type: 'polygon' }, { type: 'a' }, { type: 'b' }, { type: 'line' }, { type: 'c' }];
123
-
124
- expect(filterByValidToolTypes(marks)).toEqual([{ type: 'polygon' }, { type: 'line' }]);
125
- });
126
- });
127
-
128
- describe('filterByVisibleToolTypes', () => {
129
- it('filters marks by the types that should be visible', () => {
130
- expect(
131
- filterByVisibleToolTypes(['line', 'polygon'], [{ type: 'point' }, { type: 'line' }, { type: 'polygon' }]),
132
- ).toEqual([{ type: 'line' }, { type: 'polygon' }]);
133
-
134
- expect(filterByVisibleToolTypes(['line'], [{ type: 'point' }, { type: 'line' }, { type: 'circle' }])).toEqual([
135
- { type: 'line' },
136
- ]);
137
-
138
- expect(filterByVisibleToolTypes(['segment'], [{ type: 'point' }, { type: 'line' }, { type: 'circle' }])).toEqual(
139
- [],
140
- );
141
- });
142
- });
143
-
144
- describe('GraphWithControls', () => {
145
- let onChangeMarks = jest.fn();
146
-
147
- beforeEach(() => {
148
- onChangeMarks.mockClear();
149
- });
150
-
151
- const defaultProps = () => ({
152
- axesSettings: { includeArrows: true },
153
- className: '',
154
- coordinatesOnHover: false,
155
- domain: { min: 0, max: 10, step: 1 },
156
- labels: { top: 'a', left: 'b', right: 'c', bottom: 'd' },
157
- labelModeEnabled: true,
158
- marks,
159
- onChangeMarks,
160
- range: { min: 0, max: 10, step: 1 },
161
- size: { width: 500, height: 500 },
162
- title: 'Title',
163
- toolbarTools: allTools,
164
- language: 'en',
165
- });
166
- const initialProps = defaultProps();
167
-
168
- const renderComponent = (extras) => {
169
- const props = { ...initialProps, ...extras };
170
- return render(<GraphWithControls {...props} />);
171
- };
172
-
173
- describe('rendering', () => {
174
- it('renders without crashing', () => {
175
- const { container } = renderComponent();
176
- expect(container.firstChild).toBeInTheDocument();
177
- });
178
-
179
- it('renders Graph component', () => {
180
- const { container } = renderComponent();
181
- expect(container.querySelector('svg')).toBeInTheDocument();
182
- });
183
- });
184
- });