@pie-lib/graphing-solution-set 4.1.0-beta.7 → 5.0.0-next.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) 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 +85 -0
  24. package/dist/graph-with-controls.js +155 -0
  25. package/dist/graph.d.ts +119 -0
  26. package/dist/graph.js +221 -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 +14 -0
  32. package/dist/index.js +6 -0
  33. package/dist/labels.d.ts +73 -0
  34. package/dist/labels.js +134 -0
  35. package/dist/mark-label.d.ts +50 -0
  36. package/dist/mark-label.js +84 -0
  37. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/axis/Axis.js +67 -0
  38. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/axis/AxisRenderer.js +66 -0
  39. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/axis/Ticks.js +39 -0
  40. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/constants/orientation.js +9 -0
  41. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/utils/createPoint.js +14 -0
  42. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/utils/getAxisRangePaddingConfig.js +13 -0
  43. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/utils/getLabelTransform.js +16 -0
  44. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/utils/getTickFormatter.js +8 -0
  45. package/dist/node_modules/.bun/@visx_axis@4.0.0_d84c32d47042070f/node_modules/@visx/axis/esm/utils/getTickPosition.js +14 -0
  46. package/dist/node_modules/.bun/@visx_grid@4.0.0_d84c32d47042070f/node_modules/@visx/grid/esm/grids/Grid.js +43 -0
  47. package/dist/node_modules/.bun/@visx_grid@4.0.0_d84c32d47042070f/node_modules/@visx/grid/esm/grids/GridColumns.js +46 -0
  48. package/dist/node_modules/.bun/@visx_grid@4.0.0_d84c32d47042070f/node_modules/@visx/grid/esm/grids/GridRows.js +46 -0
  49. package/dist/node_modules/.bun/@visx_grid@4.0.0_d84c32d47042070f/node_modules/@visx/grid/esm/utils/getScaleBandwidth.js +6 -0
  50. package/dist/node_modules/.bun/@visx_group@4.0.0_d84c32d47042070f/node_modules/@visx/group/esm/Group.js +17 -0
  51. package/dist/node_modules/.bun/@visx_point@4.0.0/node_modules/@visx/point/esm/Point.js +20 -0
  52. package/dist/node_modules/.bun/@visx_scale@4.0.0/node_modules/@visx/scale/esm/utils/coerceNumber.js +10 -0
  53. package/dist/node_modules/.bun/@visx_scale@4.0.0/node_modules/@visx/scale/esm/utils/getTicks.js +7 -0
  54. package/dist/node_modules/.bun/@visx_scale@4.0.0/node_modules/@visx/scale/esm/utils/toString.js +6 -0
  55. package/dist/node_modules/.bun/@visx_shape@4.0.0_d84c32d47042070f/node_modules/@visx/shape/esm/shapes/Line.js +27 -0
  56. package/dist/node_modules/.bun/@visx_text@4.0.0_d84c32d47042070f/node_modules/@visx/text/esm/Text.js +27 -0
  57. package/dist/node_modules/.bun/@visx_text@4.0.0_d84c32d47042070f/node_modules/@visx/text/esm/hooks/useText.js +68 -0
  58. package/dist/node_modules/.bun/@visx_text@4.0.0_d84c32d47042070f/node_modules/@visx/text/esm/util/getStringWidth.js +19 -0
  59. package/dist/node_modules/.bun/@visx_text@4.0.0_d84c32d47042070f/node_modules/@visx/text/esm/util/memoize.js +13 -0
  60. package/dist/node_modules/.bun/balanced-match@0.4.2/node_modules/balanced-match/index.js +32 -0
  61. package/dist/node_modules/.bun/balanced-match@1.0.2/node_modules/balanced-match/index.js +33 -0
  62. package/dist/node_modules/.bun/classnames@2.5.1/node_modules/classnames/index.js +32 -0
  63. package/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js +16 -0
  64. package/dist/node_modules/.bun/invariant@2.2.4/node_modules/invariant/browser.js +28 -0
  65. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/formula_evaluator.js +37 -0
  66. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/lexer.js +509 -0
  67. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/math_function.js +108 -0
  68. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/postfix.js +31 -0
  69. package/dist/node_modules/.bun/math-expression-evaluator@1.4.0/node_modules/math-expression-evaluator/src/postfix_evaluator.js +45 -0
  70. package/dist/node_modules/.bun/reduce-css-calc@1.3.0/node_modules/reduce-css-calc/index.js +49 -0
  71. package/dist/node_modules/.bun/reduce-function-call@1.0.3/node_modules/reduce-function-call/index.js +34 -0
  72. package/dist/node_modules/.bun/redux-undo@1.1.0/node_modules/redux-undo/dist/redux-undo.js +185 -0
  73. package/dist/node_modules/.bun/redux@5.0.1/node_modules/redux/dist/redux.js +198 -0
  74. package/dist/toggle-bar.d.ts +40 -0
  75. package/dist/tool-menu.d.ts +21 -0
  76. package/dist/tool-menu.js +188 -0
  77. package/dist/tools/index.d.ts +17 -0
  78. package/dist/tools/index.js +12 -0
  79. package/dist/tools/line/component.d.ts +113 -0
  80. package/dist/tools/line/component.js +58 -0
  81. package/dist/tools/line/index.d.ts +13 -0
  82. package/dist/tools/line/index.js +6 -0
  83. package/dist/tools/polygon/component.d.ts +117 -0
  84. package/dist/tools/polygon/component.js +194 -0
  85. package/dist/tools/polygon/index.d.ts +19 -0
  86. package/dist/tools/polygon/index.js +55 -0
  87. package/dist/tools/polygon/line.d.ts +125 -0
  88. package/dist/tools/polygon/polygon.d.ts +122 -0
  89. package/dist/tools/polygon/polygon.js +62 -0
  90. package/dist/tools/shared/arrow-head.d.ts +43 -0
  91. package/dist/tools/shared/arrow-head.js +37 -0
  92. package/dist/tools/shared/line/index.d.ts +240 -0
  93. package/dist/tools/shared/line/index.js +320 -0
  94. package/dist/tools/shared/line/line-path.d.ts +57 -0
  95. package/dist/tools/shared/line/with-root-edge.d.ts +143 -0
  96. package/dist/tools/shared/point/arrow-point.d.ts +57 -0
  97. package/dist/tools/shared/point/arrow-point.js +47 -0
  98. package/dist/tools/shared/point/arrow.d.ts +46 -0
  99. package/dist/tools/shared/point/arrow.js +36 -0
  100. package/dist/tools/shared/point/base-point.d.ts +50 -0
  101. package/dist/tools/shared/point/base-point.js +88 -0
  102. package/dist/tools/shared/point/index.d.ts +217 -0
  103. package/dist/tools/shared/point/index.js +51 -0
  104. package/dist/tools/shared/styles.d.ts +24 -0
  105. package/dist/tools/shared/styles.js +17 -0
  106. package/dist/tools/shared/types.d.ts +15 -0
  107. package/dist/tools/shared/types.js +10 -0
  108. package/dist/undo-redo.d.ts +20 -0
  109. package/dist/undo-redo.js +33 -0
  110. package/dist/use-debounce.d.ts +9 -0
  111. package/dist/use-debounce.js +13 -0
  112. package/dist/utils.d.ts +58 -0
  113. package/dist/utils.js +72 -0
  114. package/package.json +52 -42
  115. package/CHANGELOG.json +0 -1
  116. package/CHANGELOG.md +0 -449
  117. package/lib/__tests__/bg.test.js +0 -282
  118. package/lib/__tests__/bg.test.js.map +0 -1
  119. package/lib/__tests__/coordinates-label.test.js +0 -276
  120. package/lib/__tests__/coordinates-label.test.js.map +0 -1
  121. package/lib/__tests__/graph-with-controls.test.js +0 -256
  122. package/lib/__tests__/graph-with-controls.test.js.map +0 -1
  123. package/lib/__tests__/graph.test.js +0 -113
  124. package/lib/__tests__/graph.test.js.map +0 -1
  125. package/lib/__tests__/grid-setup.test.js +0 -729
  126. package/lib/__tests__/grid-setup.test.js.map +0 -1
  127. package/lib/__tests__/grid.test.js +0 -29
  128. package/lib/__tests__/grid.test.js.map +0 -1
  129. package/lib/__tests__/labels.test.js +0 -45
  130. package/lib/__tests__/labels.test.js.map +0 -1
  131. package/lib/__tests__/mark-label.test.js +0 -133
  132. package/lib/__tests__/mark-label.test.js.map +0 -1
  133. package/lib/__tests__/toggle-bar.test.js +0 -146
  134. package/lib/__tests__/toggle-bar.test.js.map +0 -1
  135. package/lib/__tests__/tool-menu.test.js +0 -540
  136. package/lib/__tests__/tool-menu.test.js.map +0 -1
  137. package/lib/__tests__/undo-redo.test.js +0 -31
  138. package/lib/__tests__/undo-redo.test.js.map +0 -1
  139. package/lib/__tests__/use-debounce.test.js +0 -24
  140. package/lib/__tests__/use-debounce.test.js.map +0 -1
  141. package/lib/__tests__/utils.js +0 -70
  142. package/lib/__tests__/utils.js.map +0 -1
  143. package/lib/__tests__/utils.test.js +0 -123
  144. package/lib/__tests__/utils.test.js.map +0 -1
  145. package/lib/axis/__tests__/arrow.test.js +0 -60
  146. package/lib/axis/__tests__/arrow.test.js.map +0 -1
  147. package/lib/axis/__tests__/axes.test.js +0 -160
  148. package/lib/axis/__tests__/axes.test.js.map +0 -1
  149. package/lib/axis/arrow.js +0 -79
  150. package/lib/axis/arrow.js.map +0 -1
  151. package/lib/axis/axes.js +0 -327
  152. package/lib/axis/axes.js.map +0 -1
  153. package/lib/axis/index.js +0 -21
  154. package/lib/axis/index.js.map +0 -1
  155. package/lib/bg.js +0 -114
  156. package/lib/bg.js.map +0 -1
  157. package/lib/container/__tests__/actions.test.js +0 -108
  158. package/lib/container/__tests__/actions.test.js.map +0 -1
  159. package/lib/container/__tests__/index.test.js +0 -346
  160. package/lib/container/__tests__/index.test.js.map +0 -1
  161. package/lib/container/__tests__/marks.test.js +0 -259
  162. package/lib/container/__tests__/marks.test.js.map +0 -1
  163. package/lib/container/__tests__/middleware.test.js +0 -244
  164. package/lib/container/__tests__/middleware.test.js.map +0 -1
  165. package/lib/container/__tests__/reducer.test.js +0 -450
  166. package/lib/container/__tests__/reducer.test.js.map +0 -1
  167. package/lib/container/actions.js +0 -18
  168. package/lib/container/actions.js.map +0 -1
  169. package/lib/container/index.js +0 -129
  170. package/lib/container/index.js.map +0 -1
  171. package/lib/container/marks.js +0 -22
  172. package/lib/container/marks.js.map +0 -1
  173. package/lib/container/middleware.js +0 -19
  174. package/lib/container/middleware.js.map +0 -1
  175. package/lib/container/reducer.js +0 -18
  176. package/lib/container/reducer.js.map +0 -1
  177. package/lib/coordinates-label.js +0 -77
  178. package/lib/coordinates-label.js.map +0 -1
  179. package/lib/graph-with-controls.js +0 -297
  180. package/lib/graph-with-controls.js.map +0 -1
  181. package/lib/graph.js +0 -353
  182. package/lib/graph.js.map +0 -1
  183. package/lib/grid-setup.js +0 -414
  184. package/lib/grid-setup.js.map +0 -1
  185. package/lib/grid.js +0 -131
  186. package/lib/grid.js.map +0 -1
  187. package/lib/index.js +0 -40
  188. package/lib/index.js.map +0 -1
  189. package/lib/labels.js +0 -199
  190. package/lib/labels.js.map +0 -1
  191. package/lib/mark-label.js +0 -159
  192. package/lib/mark-label.js.map +0 -1
  193. package/lib/toggle-bar.js +0 -248
  194. package/lib/toggle-bar.js.map +0 -1
  195. package/lib/tool-menu.js +0 -218
  196. package/lib/tool-menu.js.map +0 -1
  197. package/lib/tools/index.js +0 -24
  198. package/lib/tools/index.js.map +0 -1
  199. package/lib/tools/line/__tests__/component.test.js +0 -45
  200. package/lib/tools/line/__tests__/component.test.js.map +0 -1
  201. package/lib/tools/line/component.js +0 -92
  202. package/lib/tools/line/component.js.map +0 -1
  203. package/lib/tools/line/index.js +0 -11
  204. package/lib/tools/line/index.js.map +0 -1
  205. package/lib/tools/polygon/__tests__/component.test.js +0 -501
  206. package/lib/tools/polygon/__tests__/component.test.js.map +0 -1
  207. package/lib/tools/polygon/__tests__/index.test.js +0 -92
  208. package/lib/tools/polygon/__tests__/index.test.js.map +0 -1
  209. package/lib/tools/polygon/__tests__/line.test.js +0 -30
  210. package/lib/tools/polygon/__tests__/line.test.js.map +0 -1
  211. package/lib/tools/polygon/__tests__/polygon.test.js +0 -61
  212. package/lib/tools/polygon/__tests__/polygon.test.js.map +0 -1
  213. package/lib/tools/polygon/component.js +0 -358
  214. package/lib/tools/polygon/component.js.map +0 -1
  215. package/lib/tools/polygon/index.js +0 -89
  216. package/lib/tools/polygon/index.js.map +0 -1
  217. package/lib/tools/polygon/line.js +0 -114
  218. package/lib/tools/polygon/line.js.map +0 -1
  219. package/lib/tools/polygon/polygon.js +0 -128
  220. package/lib/tools/polygon/polygon.js.map +0 -1
  221. package/lib/tools/shared/__tests__/arrow-head.test.js +0 -45
  222. package/lib/tools/shared/__tests__/arrow-head.test.js.map +0 -1
  223. package/lib/tools/shared/arrow-head.js +0 -62
  224. package/lib/tools/shared/arrow-head.js.map +0 -1
  225. package/lib/tools/shared/line/__tests__/index.test.js +0 -725
  226. package/lib/tools/shared/line/__tests__/index.test.js.map +0 -1
  227. package/lib/tools/shared/line/__tests__/line-path.test.js +0 -64
  228. package/lib/tools/shared/line/__tests__/line-path.test.js.map +0 -1
  229. package/lib/tools/shared/line/__tests__/with-root-edge.test.js +0 -618
  230. package/lib/tools/shared/line/__tests__/with-root-edge.test.js.map +0 -1
  231. package/lib/tools/shared/line/index.js +0 -539
  232. package/lib/tools/shared/line/index.js.map +0 -1
  233. package/lib/tools/shared/line/line-path.js +0 -121
  234. package/lib/tools/shared/line/line-path.js.map +0 -1
  235. package/lib/tools/shared/line/with-root-edge.js +0 -121
  236. package/lib/tools/shared/line/with-root-edge.js.map +0 -1
  237. package/lib/tools/shared/point/__tests__/arrow-point.test.js +0 -127
  238. package/lib/tools/shared/point/__tests__/arrow-point.test.js.map +0 -1
  239. package/lib/tools/shared/point/__tests__/arrow.test.js +0 -619
  240. package/lib/tools/shared/point/__tests__/arrow.test.js.map +0 -1
  241. package/lib/tools/shared/point/__tests__/base-point.test.js +0 -122
  242. package/lib/tools/shared/point/__tests__/base-point.test.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 -93
  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 +0,0 @@
1
- {"version":3,"file":"actions.test.js","names":["_actions","require","describe","it","action","addMark","expect","toEqual","type","toBe","Object","keys","marks","id","changeMarks","x","y","from","to","length","undefined","label","correctness","value","toBeDefined","addMarkAction","changeMarksAction","_typeof2","not"],"sources":["../../../src/container/__tests__/actions.test.js"],"sourcesContent":["import { addMark, changeMarks } from '../actions';\n\ndescribe('container actions', () => {\n describe('addMark', () => {\n it('creates ADD_MARK action', () => {\n const action = addMark();\n expect(action).toEqual({\n type: 'ADD_MARK',\n });\n });\n\n it('creates action without parameters', () => {\n const action = addMark();\n expect(action.type).toBe('ADD_MARK');\n expect(Object.keys(action)).toEqual(['type']);\n });\n });\n\n describe('changeMarks', () => {\n it('creates CHANGE_MARKS action with marks', () => {\n const marks = [{ id: 1, type: 'point' }];\n const action = changeMarks(marks);\n\n expect(action).toEqual({\n type: 'CHANGE_MARKS',\n marks,\n });\n });\n\n it('creates action with empty marks array', () => {\n const marks = [];\n const action = changeMarks(marks);\n\n expect(action).toEqual({\n type: 'CHANGE_MARKS',\n marks: [],\n });\n });\n\n it('creates action with multiple marks', () => {\n const marks = [\n { id: 1, type: 'point', x: 1, y: 2 },\n { id: 2, type: 'line', from: { x: 0, y: 0 }, to: { x: 5, y: 5 } },\n ];\n const action = changeMarks(marks);\n\n expect(action.marks).toEqual(marks);\n expect(action.marks.length).toBe(2);\n });\n\n it('creates action with null marks', () => {\n const marks = null;\n const action = changeMarks(marks);\n\n expect(action).toEqual({\n type: 'CHANGE_MARKS',\n marks: null,\n });\n });\n\n it('creates action with undefined marks', () => {\n const marks = undefined;\n const action = changeMarks(marks);\n\n expect(action).toEqual({\n type: 'CHANGE_MARKS',\n marks: undefined,\n });\n });\n\n it('preserves mark properties', () => {\n const marks = [\n {\n id: 1,\n type: 'point',\n x: 10,\n y: 20,\n label: 'A',\n correctness: { value: 'correct' },\n },\n ];\n const action = changeMarks(marks);\n\n expect(action.marks[0]).toEqual(marks[0]);\n expect(action.marks[0].correctness).toBeDefined();\n });\n });\n\n describe('action types', () => {\n it('has consistent action type strings', () => {\n const addMarkAction = addMark();\n const changeMarksAction = changeMarks([]);\n\n expect(typeof addMarkAction.type).toBe('string');\n expect(typeof changeMarksAction.type).toBe('string');\n });\n\n it('has unique action types', () => {\n const addMarkAction = addMark();\n const changeMarksAction = changeMarks([]);\n\n expect(addMarkAction.type).not.toBe(changeMarksAction.type);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,346 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
6
- var _react = _interopRequireDefault(require("react"));
7
- var _testUtils = require("@pie-lib/test-utils");
8
- var _index = _interopRequireWildcard(require("../index"));
9
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
10
- jest.mock('../../graph-with-controls', function () {
11
- return function GraphWithControls(_ref) {
12
- var marks = _ref.marks,
13
- onChangeMarks = _ref.onChangeMarks,
14
- onUndo = _ref.onUndo,
15
- onRedo = _ref.onRedo,
16
- onReset = _ref.onReset,
17
- disabled = _ref.disabled;
18
- return /*#__PURE__*/_react["default"].createElement("div", {
19
- "data-testid": "graph-with-controls"
20
- }, /*#__PURE__*/_react["default"].createElement("div", {
21
- "data-testid": "marks-count"
22
- }, (marks === null || marks === void 0 ? void 0 : marks.length) || 0), disabled && /*#__PURE__*/_react["default"].createElement("div", {
23
- "data-testid": "disabled-indicator"
24
- }, "Disabled"), /*#__PURE__*/_react["default"].createElement("button", {
25
- "data-testid": "change-marks",
26
- onClick: function onClick() {
27
- return onChangeMarks && onChangeMarks([{
28
- id: 1
29
- }]);
30
- }
31
- }, "Change"), /*#__PURE__*/_react["default"].createElement("button", {
32
- "data-testid": "undo",
33
- onClick: onUndo
34
- }, "Undo"), /*#__PURE__*/_react["default"].createElement("button", {
35
- "data-testid": "redo",
36
- onClick: onRedo
37
- }, "Redo"), /*#__PURE__*/_react["default"].createElement("button", {
38
- "data-testid": "reset",
39
- onClick: onReset
40
- }, "Reset"));
41
- };
42
- });
43
- jest.mock('@pie-lib/drag', function () {
44
- return {
45
- DragProvider: function DragProvider(_ref2) {
46
- var children = _ref2.children;
47
- return /*#__PURE__*/_react["default"].createElement("div", {
48
- "data-testid": "drag-provider"
49
- }, children);
50
- }
51
- };
52
- });
53
- describe('Container Root Component', function () {
54
- var defaultProps = {
55
- marks: [],
56
- onChangeMarks: jest.fn()
57
- };
58
- var renderComponent = function renderComponent() {
59
- var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
60
- return (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_index["default"], (0, _extends2["default"])({}, defaultProps, props)));
61
- };
62
- describe('rendering', function () {
63
- it('renders without crashing', function () {
64
- var _renderComponent = renderComponent(),
65
- container = _renderComponent.container;
66
- expect(container).toBeInTheDocument();
67
- });
68
- it('renders GraphWithControls', function () {
69
- var _renderComponent2 = renderComponent(),
70
- getByTestId = _renderComponent2.getByTestId;
71
- expect(getByTestId('graph-with-controls')).toBeInTheDocument();
72
- });
73
- it('renders with Provider when no correctness set', function () {
74
- var _renderComponent3 = renderComponent({
75
- marks: [{
76
- id: 1,
77
- type: 'point'
78
- }]
79
- }),
80
- container = _renderComponent3.container;
81
- expect(container.querySelector('[data-testid="graph-with-controls"]')).toBeInTheDocument();
82
- });
83
- it('renders directly when correctness is set', function () {
84
- var marks = [{
85
- id: 1,
86
- type: 'point',
87
- correctness: {
88
- value: 'correct'
89
- }
90
- }];
91
- var _renderComponent4 = renderComponent({
92
- marks: marks
93
- }),
94
- getByTestId = _renderComponent4.getByTestId;
95
- expect(getByTestId('graph-with-controls')).toBeInTheDocument();
96
- expect(getByTestId('disabled-indicator')).toBeInTheDocument();
97
- });
98
- it('passes marks to GraphWithControls', function () {
99
- var marks = [{
100
- id: 1
101
- }, {
102
- id: 2
103
- }];
104
- var _renderComponent5 = renderComponent({
105
- marks: marks
106
- }),
107
- getByTestId = _renderComponent5.getByTestId;
108
- expect(getByTestId('marks-count')).toHaveTextContent('2');
109
- });
110
- });
111
- describe('componentDidUpdate', function () {
112
- it('updates store when marks prop changes', function () {
113
- var onChangeMarks = jest.fn();
114
- var _render = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_index["default"], {
115
- marks: [],
116
- onChangeMarks: onChangeMarks
117
- })),
118
- rerender = _render.rerender;
119
- var newMarks = [{
120
- id: 1,
121
- type: 'point'
122
- }];
123
- rerender(/*#__PURE__*/_react["default"].createElement(_index["default"], {
124
- marks: newMarks,
125
- onChangeMarks: onChangeMarks
126
- }));
127
- expect(onChangeMarks).not.toHaveBeenCalled();
128
- });
129
- it('does not update when marks are equal', function () {
130
- var marks = [{
131
- id: 1,
132
- type: 'point'
133
- }];
134
- var onChangeMarks = jest.fn();
135
- var _render2 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_index["default"], {
136
- marks: marks,
137
- onChangeMarks: onChangeMarks
138
- })),
139
- rerender = _render2.rerender;
140
- onChangeMarks.mockClear();
141
- rerender(/*#__PURE__*/_react["default"].createElement(_index["default"], {
142
- marks: marks,
143
- onChangeMarks: onChangeMarks
144
- }));
145
- expect(onChangeMarks).not.toHaveBeenCalled();
146
- });
147
- it('handles marks changing from empty to non-empty', function () {
148
- var onChangeMarks = jest.fn();
149
- var _render3 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_index["default"], {
150
- marks: [],
151
- onChangeMarks: onChangeMarks
152
- })),
153
- rerender = _render3.rerender;
154
- var newMarks = [{
155
- id: 1
156
- }];
157
- expect(function () {
158
- rerender(/*#__PURE__*/_react["default"].createElement(_index["default"], {
159
- marks: newMarks,
160
- onChangeMarks: onChangeMarks
161
- }));
162
- }).not.toThrow();
163
- });
164
- it('handles marks changing from non-empty to empty', function () {
165
- var onChangeMarks = jest.fn();
166
- var _render4 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_index["default"], {
167
- marks: [{
168
- id: 1
169
- }],
170
- onChangeMarks: onChangeMarks
171
- })),
172
- rerender = _render4.rerender;
173
- expect(function () {
174
- rerender(/*#__PURE__*/_react["default"].createElement(_index["default"], {
175
- marks: [],
176
- onChangeMarks: onChangeMarks
177
- }));
178
- }).not.toThrow();
179
- });
180
- });
181
- describe('correctness handling', function () {
182
- it('disables when any mark has correctness', function () {
183
- var marks = [{
184
- id: 1,
185
- type: 'point'
186
- }, {
187
- id: 2,
188
- type: 'point',
189
- correctness: {
190
- value: 'correct'
191
- }
192
- }];
193
- var _renderComponent6 = renderComponent({
194
- marks: marks
195
- }),
196
- getByTestId = _renderComponent6.getByTestId;
197
- expect(getByTestId('disabled-indicator')).toBeInTheDocument();
198
- });
199
- it('renders without Provider when correctness is set', function () {
200
- var marks = [{
201
- id: 1,
202
- correctness: {
203
- value: 'correct'
204
- }
205
- }];
206
- var _renderComponent7 = renderComponent({
207
- marks: marks
208
- }),
209
- container = _renderComponent7.container;
210
- expect(container.querySelector('[data-testid="graph-with-controls"]')).toBeInTheDocument();
211
- });
212
- it('does not disable when no correctness is set', function () {
213
- var marks = [{
214
- id: 1,
215
- type: 'point'
216
- }, {
217
- id: 2,
218
- type: 'line'
219
- }];
220
- var _renderComponent8 = renderComponent({
221
- marks: marks
222
- }),
223
- queryByTestId = _renderComponent8.queryByTestId;
224
- expect(queryByTestId('disabled-indicator')).not.toBeInTheDocument();
225
- });
226
- it('handles correctness with different values', function () {
227
- var marks = [{
228
- id: 1,
229
- correctness: {
230
- value: 'incorrect'
231
- }
232
- }];
233
- var _renderComponent9 = renderComponent({
234
- marks: marks
235
- }),
236
- getByTestId = _renderComponent9.getByTestId;
237
- expect(getByTestId('disabled-indicator')).toBeInTheDocument();
238
- });
239
- it('handles empty correctness object', function () {
240
- var marks = [{
241
- id: 1,
242
- correctness: {}
243
- }];
244
- var _renderComponent0 = renderComponent({
245
- marks: marks
246
- }),
247
- getByTestId = _renderComponent0.getByTestId;
248
- expect(getByTestId('disabled-indicator')).toBeInTheDocument();
249
- });
250
- });
251
- describe('props forwarding', function () {
252
- it('forwards additional props to GraphWithControls', function () {
253
- var _renderComponent1 = renderComponent({
254
- className: 'custom-class',
255
- size: {
256
- width: 500,
257
- height: 500
258
- }
259
- }),
260
- container = _renderComponent1.container;
261
- expect(container.querySelector('[data-testid="graph-with-controls"]')).toBeInTheDocument();
262
- });
263
- it('does not forward onChangeMarks and marks to GraphWithControls', function () {
264
- var _renderComponent10 = renderComponent({
265
- marks: [{
266
- id: 1
267
- }],
268
- onChangeMarks: jest.fn(),
269
- otherProp: 'test'
270
- }),
271
- getByTestId = _renderComponent10.getByTestId;
272
- expect(getByTestId('graph-with-controls')).toBeInTheDocument();
273
- });
274
- });
275
- describe('edge cases', function () {
276
- it('handles empty marks array', function () {
277
- var _renderComponent11 = renderComponent({
278
- marks: []
279
- }),
280
- container = _renderComponent11.container;
281
- expect(container).toBeInTheDocument();
282
- });
283
- it('handles marks with complex structure', function () {
284
- var marks = [{
285
- id: 1,
286
- type: 'line',
287
- from: {
288
- x: 0,
289
- y: 0
290
- },
291
- to: {
292
- x: 10,
293
- y: 10
294
- },
295
- label: 'Line A',
296
- correctness: {
297
- value: 'correct',
298
- label: 'Correct!'
299
- }
300
- }];
301
- var _renderComponent12 = renderComponent({
302
- marks: marks
303
- }),
304
- getByTestId = _renderComponent12.getByTestId;
305
- expect(getByTestId('graph-with-controls')).toBeInTheDocument();
306
- });
307
- it('handles switching between correctness states', function () {
308
- var _render5 = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_index["default"], {
309
- marks: [{
310
- id: 1
311
- }],
312
- onChangeMarks: jest.fn()
313
- })),
314
- rerender = _render5.rerender;
315
- rerender(/*#__PURE__*/_react["default"].createElement(_index["default"], {
316
- marks: [{
317
- id: 1,
318
- correctness: {
319
- value: 'correct'
320
- }
321
- }],
322
- onChangeMarks: jest.fn()
323
- }));
324
- rerender(/*#__PURE__*/_react["default"].createElement(_index["default"], {
325
- marks: [{
326
- id: 1
327
- }],
328
- onChangeMarks: jest.fn()
329
- }));
330
- expect(document.querySelector('[data-testid="graph-with-controls"]')).toBeInTheDocument();
331
- });
332
- });
333
- });
334
- describe('GraphContainer (connected component)', function () {
335
- it('is a connected component', function () {
336
- expect(_index.GraphContainer).toBeDefined();
337
- expect(_index.GraphContainer.displayName).toContain('Connect');
338
- });
339
- it('maps state to props', function () {
340
- expect(_index.GraphContainer).toBeDefined();
341
- });
342
- it('maps dispatch to props', function () {
343
- expect(_index.GraphContainer).toBeDefined();
344
- });
345
- });
346
- //# sourceMappingURL=index.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.js","names":["_react","_interopRequireDefault","require","_testUtils","_index","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","jest","mock","GraphWithControls","_ref","marks","onChangeMarks","onUndo","onRedo","onReset","disabled","createElement","length","onClick","id","DragProvider","_ref2","children","describe","defaultProps","fn","renderComponent","props","arguments","undefined","render","_extends2","it","_renderComponent","container","expect","toBeInTheDocument","_renderComponent2","getByTestId","_renderComponent3","type","querySelector","correctness","value","_renderComponent4","_renderComponent5","toHaveTextContent","_render","rerender","newMarks","not","toHaveBeenCalled","_render2","mockClear","_render3","toThrow","_render4","_renderComponent6","_renderComponent7","_renderComponent8","queryByTestId","_renderComponent9","_renderComponent0","_renderComponent1","className","size","width","height","_renderComponent10","otherProp","_renderComponent11","from","x","y","to","label","_renderComponent12","_render5","document","GraphContainer","toBeDefined","displayName","toContain"],"sources":["../../../src/container/__tests__/index.test.jsx"],"sourcesContent":["import React from 'react';\nimport { render } from '@pie-lib/test-utils';\nimport Root, { GraphContainer } from '../index';\n\njest.mock('../../graph-with-controls', () => {\n return function GraphWithControls({ marks, onChangeMarks, onUndo, onRedo, onReset, disabled }) {\n return (\n <div data-testid=\"graph-with-controls\">\n <div data-testid=\"marks-count\">{marks?.length || 0}</div>\n {disabled && <div data-testid=\"disabled-indicator\">Disabled</div>}\n <button data-testid=\"change-marks\" onClick={() => onChangeMarks && onChangeMarks([{ id: 1 }])}>\n Change\n </button>\n <button data-testid=\"undo\" onClick={onUndo}>\n Undo\n </button>\n <button data-testid=\"redo\" onClick={onRedo}>\n Redo\n </button>\n <button data-testid=\"reset\" onClick={onReset}>\n Reset\n </button>\n </div>\n );\n };\n});\n\njest.mock('@pie-lib/drag', () => ({\n DragProvider: ({ children }) => <div data-testid=\"drag-provider\">{children}</div>,\n}));\n\ndescribe('Container Root Component', () => {\n const defaultProps = {\n marks: [],\n onChangeMarks: jest.fn(),\n };\n\n const renderComponent = (props = {}) => {\n return render(<Root {...defaultProps} {...props} />);\n };\n\n describe('rendering', () => {\n it('renders without crashing', () => {\n const { container } = renderComponent();\n expect(container).toBeInTheDocument();\n });\n\n it('renders GraphWithControls', () => {\n const { getByTestId } = renderComponent();\n expect(getByTestId('graph-with-controls')).toBeInTheDocument();\n });\n\n it('renders with Provider when no correctness set', () => {\n const { container } = renderComponent({ marks: [{ id: 1, type: 'point' }] });\n expect(container.querySelector('[data-testid=\"graph-with-controls\"]')).toBeInTheDocument();\n });\n\n it('renders directly when correctness is set', () => {\n const marks = [{ id: 1, type: 'point', correctness: { value: 'correct' } }];\n const { getByTestId } = renderComponent({ marks });\n\n expect(getByTestId('graph-with-controls')).toBeInTheDocument();\n expect(getByTestId('disabled-indicator')).toBeInTheDocument();\n });\n\n it('passes marks to GraphWithControls', () => {\n const marks = [{ id: 1 }, { id: 2 }];\n const { getByTestId } = renderComponent({ marks });\n expect(getByTestId('marks-count')).toHaveTextContent('2');\n });\n });\n\n describe('componentDidUpdate', () => {\n it('updates store when marks prop changes', () => {\n const onChangeMarks = jest.fn();\n const { rerender } = render(<Root marks={[]} onChangeMarks={onChangeMarks} />);\n\n const newMarks = [{ id: 1, type: 'point' }];\n rerender(<Root marks={newMarks} onChangeMarks={onChangeMarks} />);\n\n expect(onChangeMarks).not.toHaveBeenCalled();\n });\n\n it('does not update when marks are equal', () => {\n const marks = [{ id: 1, type: 'point' }];\n const onChangeMarks = jest.fn();\n const { rerender } = render(<Root marks={marks} onChangeMarks={onChangeMarks} />);\n\n onChangeMarks.mockClear();\n\n rerender(<Root marks={marks} onChangeMarks={onChangeMarks} />);\n\n expect(onChangeMarks).not.toHaveBeenCalled();\n });\n\n it('handles marks changing from empty to non-empty', () => {\n const onChangeMarks = jest.fn();\n const { rerender } = render(<Root marks={[]} onChangeMarks={onChangeMarks} />);\n\n const newMarks = [{ id: 1 }];\n\n expect(() => {\n rerender(<Root marks={newMarks} onChangeMarks={onChangeMarks} />);\n }).not.toThrow();\n });\n\n it('handles marks changing from non-empty to empty', () => {\n const onChangeMarks = jest.fn();\n const { rerender } = render(<Root marks={[{ id: 1 }]} onChangeMarks={onChangeMarks} />);\n\n expect(() => {\n rerender(<Root marks={[]} onChangeMarks={onChangeMarks} />);\n }).not.toThrow();\n });\n });\n\n describe('correctness handling', () => {\n it('disables when any mark has correctness', () => {\n const marks = [\n { id: 1, type: 'point' },\n { id: 2, type: 'point', correctness: { value: 'correct' } },\n ];\n const { getByTestId } = renderComponent({ marks });\n\n expect(getByTestId('disabled-indicator')).toBeInTheDocument();\n });\n\n it('renders without Provider when correctness is set', () => {\n const marks = [{ id: 1, correctness: { value: 'correct' } }];\n const { container } = renderComponent({ marks });\n\n expect(container.querySelector('[data-testid=\"graph-with-controls\"]')).toBeInTheDocument();\n });\n\n it('does not disable when no correctness is set', () => {\n const marks = [\n { id: 1, type: 'point' },\n { id: 2, type: 'line' },\n ];\n const { queryByTestId } = renderComponent({ marks });\n\n expect(queryByTestId('disabled-indicator')).not.toBeInTheDocument();\n });\n\n it('handles correctness with different values', () => {\n const marks = [{ id: 1, correctness: { value: 'incorrect' } }];\n const { getByTestId } = renderComponent({ marks });\n\n expect(getByTestId('disabled-indicator')).toBeInTheDocument();\n });\n\n it('handles empty correctness object', () => {\n const marks = [{ id: 1, correctness: {} }];\n const { getByTestId } = renderComponent({ marks });\n\n expect(getByTestId('disabled-indicator')).toBeInTheDocument();\n });\n });\n\n describe('props forwarding', () => {\n it('forwards additional props to GraphWithControls', () => {\n const { container } = renderComponent({\n className: 'custom-class',\n size: { width: 500, height: 500 },\n });\n\n expect(container.querySelector('[data-testid=\"graph-with-controls\"]')).toBeInTheDocument();\n });\n\n it('does not forward onChangeMarks and marks to GraphWithControls', () => {\n const { getByTestId } = renderComponent({\n marks: [{ id: 1 }],\n onChangeMarks: jest.fn(),\n otherProp: 'test',\n });\n\n expect(getByTestId('graph-with-controls')).toBeInTheDocument();\n });\n });\n\n describe('edge cases', () => {\n it('handles empty marks array', () => {\n const { container } = renderComponent({ marks: [] });\n expect(container).toBeInTheDocument();\n });\n\n it('handles marks with complex structure', () => {\n const marks = [\n {\n id: 1,\n type: 'line',\n from: { x: 0, y: 0 },\n to: { x: 10, y: 10 },\n label: 'Line A',\n correctness: { value: 'correct', label: 'Correct!' },\n },\n ];\n const { getByTestId } = renderComponent({ marks });\n expect(getByTestId('graph-with-controls')).toBeInTheDocument();\n });\n\n it('handles switching between correctness states', () => {\n const { rerender } = render(<Root marks={[{ id: 1 }]} onChangeMarks={jest.fn()} />);\n\n rerender(<Root marks={[{ id: 1, correctness: { value: 'correct' } }]} onChangeMarks={jest.fn()} />);\n\n rerender(<Root marks={[{ id: 1 }]} onChangeMarks={jest.fn()} />);\n\n expect(document.querySelector('[data-testid=\"graph-with-controls\"]')).toBeInTheDocument();\n });\n });\n});\n\ndescribe('GraphContainer (connected component)', () => {\n it('is a connected component', () => {\n expect(GraphContainer).toBeDefined();\n expect(GraphContainer.displayName).toContain('Connect');\n });\n\n it('maps state to props', () => {\n expect(GraphContainer).toBeDefined();\n });\n\n it('maps dispatch to props', () => {\n expect(GraphContainer).toBeDefined();\n });\n});\n"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,uBAAA,CAAAH,OAAA;AAAgD,SAAAG,wBAAAC,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAH,uBAAA,YAAAA,wBAAAC,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,mBAAAT,CAAA,iBAAAA,CAAA,gBAAAU,OAAA,CAAAV,CAAA,0BAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,cAAAM,EAAA,IAAAd,CAAA,gBAAAc,EAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,EAAA,OAAAP,CAAA,IAAAD,CAAA,GAAAW,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAnB,CAAA,EAAAc,EAAA,OAAAP,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAM,EAAA,EAAAP,CAAA,IAAAC,CAAA,CAAAM,EAAA,IAAAd,CAAA,CAAAc,EAAA,WAAAN,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAEhDmB,IAAI,CAACC,IAAI,CAAC,2BAA2B,EAAE,YAAM;EAC3C,OAAO,SAASC,iBAAiBA,CAAAC,IAAA,EAA8D;IAAA,IAA3DC,KAAK,GAAAD,IAAA,CAALC,KAAK;MAAEC,aAAa,GAAAF,IAAA,CAAbE,aAAa;MAAEC,MAAM,GAAAH,IAAA,CAANG,MAAM;MAAEC,MAAM,GAAAJ,IAAA,CAANI,MAAM;MAAEC,OAAO,GAAAL,IAAA,CAAPK,OAAO;MAAEC,QAAQ,GAAAN,IAAA,CAARM,QAAQ;IACzF,oBACEnC,MAAA,YAAAoC,aAAA;MAAK,eAAY;IAAqB,gBACpCpC,MAAA,YAAAoC,aAAA;MAAK,eAAY;IAAa,GAAE,CAAAN,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEO,MAAM,KAAI,CAAO,CAAC,EACxDF,QAAQ,iBAAInC,MAAA,YAAAoC,aAAA;MAAK,eAAY;IAAoB,GAAC,UAAa,CAAC,eACjEpC,MAAA,YAAAoC,aAAA;MAAQ,eAAY,cAAc;MAACE,OAAO,EAAE,SAATA,OAAOA,CAAA;QAAA,OAAQP,aAAa,IAAIA,aAAa,CAAC,CAAC;UAAEQ,EAAE,EAAE;QAAE,CAAC,CAAC,CAAC;MAAA;IAAC,GAAC,QAEvF,CAAC,eACTvC,MAAA,YAAAoC,aAAA;MAAQ,eAAY,MAAM;MAACE,OAAO,EAAEN;IAAO,GAAC,MAEpC,CAAC,eACThC,MAAA,YAAAoC,aAAA;MAAQ,eAAY,MAAM;MAACE,OAAO,EAAEL;IAAO,GAAC,MAEpC,CAAC,eACTjC,MAAA,YAAAoC,aAAA;MAAQ,eAAY,OAAO;MAACE,OAAO,EAAEJ;IAAQ,GAAC,OAEtC,CACL,CAAC;EAEV,CAAC;AACH,CAAC,CAAC;AAEFR,IAAI,CAACC,IAAI,CAAC,eAAe,EAAE;EAAA,OAAO;IAChCa,YAAY,EAAE,SAAdA,YAAYA,CAAAC,KAAA;MAAA,IAAKC,QAAQ,GAAAD,KAAA,CAARC,QAAQ;MAAA,oBAAO1C,MAAA,YAAAoC,aAAA;QAAK,eAAY;MAAe,GAAEM,QAAc,CAAC;IAAA;EACnF,CAAC;AAAA,CAAC,CAAC;AAEHC,QAAQ,CAAC,0BAA0B,EAAE,YAAM;EACzC,IAAMC,YAAY,GAAG;IACnBd,KAAK,EAAE,EAAE;IACTC,aAAa,EAAEL,IAAI,CAACmB,EAAE,CAAC;EACzB,CAAC;EAED,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAA,EAAmB;IAAA,IAAfC,KAAK,GAAAC,SAAA,CAAAX,MAAA,QAAAW,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,CAAC,CAAC;IACjC,OAAO,IAAAE,iBAAM,eAAClD,MAAA,YAAAoC,aAAA,CAAChC,MAAA,WAAI,MAAA+C,SAAA,iBAAKP,YAAY,EAAMG,KAAK,CAAG,CAAC,CAAC;EACtD,CAAC;EAEDJ,QAAQ,CAAC,WAAW,EAAE,YAAM;IAC1BS,EAAE,CAAC,0BAA0B,EAAE,YAAM;MACnC,IAAAC,gBAAA,GAAsBP,eAAe,CAAC,CAAC;QAA/BQ,SAAS,GAAAD,gBAAA,CAATC,SAAS;MACjBC,MAAM,CAACD,SAAS,CAAC,CAACE,iBAAiB,CAAC,CAAC;IACvC,CAAC,CAAC;IAEFJ,EAAE,CAAC,2BAA2B,EAAE,YAAM;MACpC,IAAAK,iBAAA,GAAwBX,eAAe,CAAC,CAAC;QAAjCY,WAAW,GAAAD,iBAAA,CAAXC,WAAW;MACnBH,MAAM,CAACG,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAChE,CAAC,CAAC;IAEFJ,EAAE,CAAC,+CAA+C,EAAE,YAAM;MACxD,IAAAO,iBAAA,GAAsBb,eAAe,CAAC;UAAEhB,KAAK,EAAE,CAAC;YAAES,EAAE,EAAE,CAAC;YAAEqB,IAAI,EAAE;UAAQ,CAAC;QAAE,CAAC,CAAC;QAApEN,SAAS,GAAAK,iBAAA,CAATL,SAAS;MACjBC,MAAM,CAACD,SAAS,CAACO,aAAa,CAAC,qCAAqC,CAAC,CAAC,CAACL,iBAAiB,CAAC,CAAC;IAC5F,CAAC,CAAC;IAEFJ,EAAE,CAAC,0CAA0C,EAAE,YAAM;MACnD,IAAMtB,KAAK,GAAG,CAAC;QAAES,EAAE,EAAE,CAAC;QAAEqB,IAAI,EAAE,OAAO;QAAEE,WAAW,EAAE;UAAEC,KAAK,EAAE;QAAU;MAAE,CAAC,CAAC;MAC3E,IAAAC,iBAAA,GAAwBlB,eAAe,CAAC;UAAEhB,KAAK,EAALA;QAAM,CAAC,CAAC;QAA1C4B,WAAW,GAAAM,iBAAA,CAAXN,WAAW;MAEnBH,MAAM,CAACG,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAACF,iBAAiB,CAAC,CAAC;MAC9DD,MAAM,CAACG,WAAW,CAAC,oBAAoB,CAAC,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAC/D,CAAC,CAAC;IAEFJ,EAAE,CAAC,mCAAmC,EAAE,YAAM;MAC5C,IAAMtB,KAAK,GAAG,CAAC;QAAES,EAAE,EAAE;MAAE,CAAC,EAAE;QAAEA,EAAE,EAAE;MAAE,CAAC,CAAC;MACpC,IAAA0B,iBAAA,GAAwBnB,eAAe,CAAC;UAAEhB,KAAK,EAALA;QAAM,CAAC,CAAC;QAA1C4B,WAAW,GAAAO,iBAAA,CAAXP,WAAW;MACnBH,MAAM,CAACG,WAAW,CAAC,aAAa,CAAC,CAAC,CAACQ,iBAAiB,CAAC,GAAG,CAAC;IAC3D,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFvB,QAAQ,CAAC,oBAAoB,EAAE,YAAM;IACnCS,EAAE,CAAC,uCAAuC,EAAE,YAAM;MAChD,IAAMrB,aAAa,GAAGL,IAAI,CAACmB,EAAE,CAAC,CAAC;MAC/B,IAAAsB,OAAA,GAAqB,IAAAjB,iBAAM,eAAClD,MAAA,YAAAoC,aAAA,CAAChC,MAAA,WAAI;UAAC0B,KAAK,EAAE,EAAG;UAACC,aAAa,EAAEA;QAAc,CAAE,CAAC,CAAC;QAAtEqC,QAAQ,GAAAD,OAAA,CAARC,QAAQ;MAEhB,IAAMC,QAAQ,GAAG,CAAC;QAAE9B,EAAE,EAAE,CAAC;QAAEqB,IAAI,EAAE;MAAQ,CAAC,CAAC;MAC3CQ,QAAQ,cAACpE,MAAA,YAAAoC,aAAA,CAAChC,MAAA,WAAI;QAAC0B,KAAK,EAAEuC,QAAS;QAACtC,aAAa,EAAEA;MAAc,CAAE,CAAC,CAAC;MAEjEwB,MAAM,CAACxB,aAAa,CAAC,CAACuC,GAAG,CAACC,gBAAgB,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEFnB,EAAE,CAAC,sCAAsC,EAAE,YAAM;MAC/C,IAAMtB,KAAK,GAAG,CAAC;QAAES,EAAE,EAAE,CAAC;QAAEqB,IAAI,EAAE;MAAQ,CAAC,CAAC;MACxC,IAAM7B,aAAa,GAAGL,IAAI,CAACmB,EAAE,CAAC,CAAC;MAC/B,IAAA2B,QAAA,GAAqB,IAAAtB,iBAAM,eAAClD,MAAA,YAAAoC,aAAA,CAAChC,MAAA,WAAI;UAAC0B,KAAK,EAAEA,KAAM;UAACC,aAAa,EAAEA;QAAc,CAAE,CAAC,CAAC;QAAzEqC,QAAQ,GAAAI,QAAA,CAARJ,QAAQ;MAEhBrC,aAAa,CAAC0C,SAAS,CAAC,CAAC;MAEzBL,QAAQ,cAACpE,MAAA,YAAAoC,aAAA,CAAChC,MAAA,WAAI;QAAC0B,KAAK,EAAEA,KAAM;QAACC,aAAa,EAAEA;MAAc,CAAE,CAAC,CAAC;MAE9DwB,MAAM,CAACxB,aAAa,CAAC,CAACuC,GAAG,CAACC,gBAAgB,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEFnB,EAAE,CAAC,gDAAgD,EAAE,YAAM;MACzD,IAAMrB,aAAa,GAAGL,IAAI,CAACmB,EAAE,CAAC,CAAC;MAC/B,IAAA6B,QAAA,GAAqB,IAAAxB,iBAAM,eAAClD,MAAA,YAAAoC,aAAA,CAAChC,MAAA,WAAI;UAAC0B,KAAK,EAAE,EAAG;UAACC,aAAa,EAAEA;QAAc,CAAE,CAAC,CAAC;QAAtEqC,QAAQ,GAAAM,QAAA,CAARN,QAAQ;MAEhB,IAAMC,QAAQ,GAAG,CAAC;QAAE9B,EAAE,EAAE;MAAE,CAAC,CAAC;MAE5BgB,MAAM,CAAC,YAAM;QACXa,QAAQ,cAACpE,MAAA,YAAAoC,aAAA,CAAChC,MAAA,WAAI;UAAC0B,KAAK,EAAEuC,QAAS;UAACtC,aAAa,EAAEA;QAAc,CAAE,CAAC,CAAC;MACnE,CAAC,CAAC,CAACuC,GAAG,CAACK,OAAO,CAAC,CAAC;IAClB,CAAC,CAAC;IAEFvB,EAAE,CAAC,gDAAgD,EAAE,YAAM;MACzD,IAAMrB,aAAa,GAAGL,IAAI,CAACmB,EAAE,CAAC,CAAC;MAC/B,IAAA+B,QAAA,GAAqB,IAAA1B,iBAAM,eAAClD,MAAA,YAAAoC,aAAA,CAAChC,MAAA,WAAI;UAAC0B,KAAK,EAAE,CAAC;YAAES,EAAE,EAAE;UAAE,CAAC,CAAE;UAACR,aAAa,EAAEA;QAAc,CAAE,CAAC,CAAC;QAA/EqC,QAAQ,GAAAQ,QAAA,CAARR,QAAQ;MAEhBb,MAAM,CAAC,YAAM;QACXa,QAAQ,cAACpE,MAAA,YAAAoC,aAAA,CAAChC,MAAA,WAAI;UAAC0B,KAAK,EAAE,EAAG;UAACC,aAAa,EAAEA;QAAc,CAAE,CAAC,CAAC;MAC7D,CAAC,CAAC,CAACuC,GAAG,CAACK,OAAO,CAAC,CAAC;IAClB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFhC,QAAQ,CAAC,sBAAsB,EAAE,YAAM;IACrCS,EAAE,CAAC,wCAAwC,EAAE,YAAM;MACjD,IAAMtB,KAAK,GAAG,CACZ;QAAES,EAAE,EAAE,CAAC;QAAEqB,IAAI,EAAE;MAAQ,CAAC,EACxB;QAAErB,EAAE,EAAE,CAAC;QAAEqB,IAAI,EAAE,OAAO;QAAEE,WAAW,EAAE;UAAEC,KAAK,EAAE;QAAU;MAAE,CAAC,CAC5D;MACD,IAAAc,iBAAA,GAAwB/B,eAAe,CAAC;UAAEhB,KAAK,EAALA;QAAM,CAAC,CAAC;QAA1C4B,WAAW,GAAAmB,iBAAA,CAAXnB,WAAW;MAEnBH,MAAM,CAACG,WAAW,CAAC,oBAAoB,CAAC,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAC/D,CAAC,CAAC;IAEFJ,EAAE,CAAC,kDAAkD,EAAE,YAAM;MAC3D,IAAMtB,KAAK,GAAG,CAAC;QAAES,EAAE,EAAE,CAAC;QAAEuB,WAAW,EAAE;UAAEC,KAAK,EAAE;QAAU;MAAE,CAAC,CAAC;MAC5D,IAAAe,iBAAA,GAAsBhC,eAAe,CAAC;UAAEhB,KAAK,EAALA;QAAM,CAAC,CAAC;QAAxCwB,SAAS,GAAAwB,iBAAA,CAATxB,SAAS;MAEjBC,MAAM,CAACD,SAAS,CAACO,aAAa,CAAC,qCAAqC,CAAC,CAAC,CAACL,iBAAiB,CAAC,CAAC;IAC5F,CAAC,CAAC;IAEFJ,EAAE,CAAC,6CAA6C,EAAE,YAAM;MACtD,IAAMtB,KAAK,GAAG,CACZ;QAAES,EAAE,EAAE,CAAC;QAAEqB,IAAI,EAAE;MAAQ,CAAC,EACxB;QAAErB,EAAE,EAAE,CAAC;QAAEqB,IAAI,EAAE;MAAO,CAAC,CACxB;MACD,IAAAmB,iBAAA,GAA0BjC,eAAe,CAAC;UAAEhB,KAAK,EAALA;QAAM,CAAC,CAAC;QAA5CkD,aAAa,GAAAD,iBAAA,CAAbC,aAAa;MAErBzB,MAAM,CAACyB,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAACV,GAAG,CAACd,iBAAiB,CAAC,CAAC;IACrE,CAAC,CAAC;IAEFJ,EAAE,CAAC,2CAA2C,EAAE,YAAM;MACpD,IAAMtB,KAAK,GAAG,CAAC;QAAES,EAAE,EAAE,CAAC;QAAEuB,WAAW,EAAE;UAAEC,KAAK,EAAE;QAAY;MAAE,CAAC,CAAC;MAC9D,IAAAkB,iBAAA,GAAwBnC,eAAe,CAAC;UAAEhB,KAAK,EAALA;QAAM,CAAC,CAAC;QAA1C4B,WAAW,GAAAuB,iBAAA,CAAXvB,WAAW;MAEnBH,MAAM,CAACG,WAAW,CAAC,oBAAoB,CAAC,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAC/D,CAAC,CAAC;IAEFJ,EAAE,CAAC,kCAAkC,EAAE,YAAM;MAC3C,IAAMtB,KAAK,GAAG,CAAC;QAAES,EAAE,EAAE,CAAC;QAAEuB,WAAW,EAAE,CAAC;MAAE,CAAC,CAAC;MAC1C,IAAAoB,iBAAA,GAAwBpC,eAAe,CAAC;UAAEhB,KAAK,EAALA;QAAM,CAAC,CAAC;QAA1C4B,WAAW,GAAAwB,iBAAA,CAAXxB,WAAW;MAEnBH,MAAM,CAACG,WAAW,CAAC,oBAAoB,CAAC,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAC/D,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFb,QAAQ,CAAC,kBAAkB,EAAE,YAAM;IACjCS,EAAE,CAAC,gDAAgD,EAAE,YAAM;MACzD,IAAA+B,iBAAA,GAAsBrC,eAAe,CAAC;UACpCsC,SAAS,EAAE,cAAc;UACzBC,IAAI,EAAE;YAAEC,KAAK,EAAE,GAAG;YAAEC,MAAM,EAAE;UAAI;QAClC,CAAC,CAAC;QAHMjC,SAAS,GAAA6B,iBAAA,CAAT7B,SAAS;MAKjBC,MAAM,CAACD,SAAS,CAACO,aAAa,CAAC,qCAAqC,CAAC,CAAC,CAACL,iBAAiB,CAAC,CAAC;IAC5F,CAAC,CAAC;IAEFJ,EAAE,CAAC,+DAA+D,EAAE,YAAM;MACxE,IAAAoC,kBAAA,GAAwB1C,eAAe,CAAC;UACtChB,KAAK,EAAE,CAAC;YAAES,EAAE,EAAE;UAAE,CAAC,CAAC;UAClBR,aAAa,EAAEL,IAAI,CAACmB,EAAE,CAAC,CAAC;UACxB4C,SAAS,EAAE;QACb,CAAC,CAAC;QAJM/B,WAAW,GAAA8B,kBAAA,CAAX9B,WAAW;MAMnBH,MAAM,CAACG,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAChE,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFb,QAAQ,CAAC,YAAY,EAAE,YAAM;IAC3BS,EAAE,CAAC,2BAA2B,EAAE,YAAM;MACpC,IAAAsC,kBAAA,GAAsB5C,eAAe,CAAC;UAAEhB,KAAK,EAAE;QAAG,CAAC,CAAC;QAA5CwB,SAAS,GAAAoC,kBAAA,CAATpC,SAAS;MACjBC,MAAM,CAACD,SAAS,CAAC,CAACE,iBAAiB,CAAC,CAAC;IACvC,CAAC,CAAC;IAEFJ,EAAE,CAAC,sCAAsC,EAAE,YAAM;MAC/C,IAAMtB,KAAK,GAAG,CACZ;QACES,EAAE,EAAE,CAAC;QACLqB,IAAI,EAAE,MAAM;QACZ+B,IAAI,EAAE;UAAEC,CAAC,EAAE,CAAC;UAAEC,CAAC,EAAE;QAAE,CAAC;QACpBC,EAAE,EAAE;UAAEF,CAAC,EAAE,EAAE;UAAEC,CAAC,EAAE;QAAG,CAAC;QACpBE,KAAK,EAAE,QAAQ;QACfjC,WAAW,EAAE;UAAEC,KAAK,EAAE,SAAS;UAAEgC,KAAK,EAAE;QAAW;MACrD,CAAC,CACF;MACD,IAAAC,kBAAA,GAAwBlD,eAAe,CAAC;UAAEhB,KAAK,EAALA;QAAM,CAAC,CAAC;QAA1C4B,WAAW,GAAAsC,kBAAA,CAAXtC,WAAW;MACnBH,MAAM,CAACG,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAChE,CAAC,CAAC;IAEFJ,EAAE,CAAC,8CAA8C,EAAE,YAAM;MACvD,IAAA6C,QAAA,GAAqB,IAAA/C,iBAAM,eAAClD,MAAA,YAAAoC,aAAA,CAAChC,MAAA,WAAI;UAAC0B,KAAK,EAAE,CAAC;YAAES,EAAE,EAAE;UAAE,CAAC,CAAE;UAACR,aAAa,EAAEL,IAAI,CAACmB,EAAE,CAAC;QAAE,CAAE,CAAC,CAAC;QAA3EuB,QAAQ,GAAA6B,QAAA,CAAR7B,QAAQ;MAEhBA,QAAQ,cAACpE,MAAA,YAAAoC,aAAA,CAAChC,MAAA,WAAI;QAAC0B,KAAK,EAAE,CAAC;UAAES,EAAE,EAAE,CAAC;UAAEuB,WAAW,EAAE;YAAEC,KAAK,EAAE;UAAU;QAAE,CAAC,CAAE;QAAChC,aAAa,EAAEL,IAAI,CAACmB,EAAE,CAAC;MAAE,CAAE,CAAC,CAAC;MAEnGuB,QAAQ,cAACpE,MAAA,YAAAoC,aAAA,CAAChC,MAAA,WAAI;QAAC0B,KAAK,EAAE,CAAC;UAAES,EAAE,EAAE;QAAE,CAAC,CAAE;QAACR,aAAa,EAAEL,IAAI,CAACmB,EAAE,CAAC;MAAE,CAAE,CAAC,CAAC;MAEhEU,MAAM,CAAC2C,QAAQ,CAACrC,aAAa,CAAC,qCAAqC,CAAC,CAAC,CAACL,iBAAiB,CAAC,CAAC;IAC3F,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFb,QAAQ,CAAC,sCAAsC,EAAE,YAAM;EACrDS,EAAE,CAAC,0BAA0B,EAAE,YAAM;IACnCG,MAAM,CAAC4C,qBAAc,CAAC,CAACC,WAAW,CAAC,CAAC;IACpC7C,MAAM,CAAC4C,qBAAc,CAACE,WAAW,CAAC,CAACC,SAAS,CAAC,SAAS,CAAC;EACzD,CAAC,CAAC;EAEFlD,EAAE,CAAC,qBAAqB,EAAE,YAAM;IAC9BG,MAAM,CAAC4C,qBAAc,CAAC,CAACC,WAAW,CAAC,CAAC;EACtC,CAAC,CAAC;EAEFhD,EAAE,CAAC,wBAAwB,EAAE,YAAM;IACjCG,MAAM,CAAC4C,qBAAc,CAAC,CAACC,WAAW,CAAC,CAAC;EACtC,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -1,259 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _marks = _interopRequireDefault(require("../marks"));
5
- describe('marks reducer', function () {
6
- describe('initial state', function () {
7
- it('returns empty array as initial state', function () {
8
- var state = (0, _marks["default"])(undefined, {
9
- type: 'INIT'
10
- });
11
- expect(state).toEqual([]);
12
- });
13
- it('handles no state parameter', function () {
14
- var state = (0, _marks["default"])(undefined, {
15
- type: 'UNKNOWN_ACTION'
16
- });
17
- expect(Array.isArray(state)).toBe(true);
18
- });
19
- });
20
- describe('CHANGE_MARKS action', function () {
21
- it('updates state with new marks', function () {
22
- var initialState = [];
23
- var newMarks = [{
24
- id: 1,
25
- type: 'point'
26
- }];
27
- var action = {
28
- type: 'CHANGE_MARKS',
29
- marks: newMarks
30
- };
31
- var state = (0, _marks["default"])(initialState, action);
32
- expect(state).toEqual(newMarks);
33
- });
34
- it('replaces existing marks', function () {
35
- var initialState = [{
36
- id: 1,
37
- type: 'point'
38
- }];
39
- var newMarks = [{
40
- id: 2,
41
- type: 'line'
42
- }];
43
- var action = {
44
- type: 'CHANGE_MARKS',
45
- marks: newMarks
46
- };
47
- var state = (0, _marks["default"])(initialState, action);
48
- expect(state).toEqual(newMarks);
49
- expect(state.length).toBe(1);
50
- expect(state[0].id).toBe(2);
51
- });
52
- it('handles empty marks array', function () {
53
- var initialState = [{
54
- id: 1,
55
- type: 'point'
56
- }];
57
- var action = {
58
- type: 'CHANGE_MARKS',
59
- marks: []
60
- };
61
- var state = (0, _marks["default"])(initialState, action);
62
- expect(state).toEqual([]);
63
- });
64
- it('handles multiple marks', function () {
65
- var initialState = [];
66
- var newMarks = [{
67
- id: 1,
68
- type: 'point',
69
- x: 1,
70
- y: 2
71
- }, {
72
- id: 2,
73
- type: 'line',
74
- from: {
75
- x: 0,
76
- y: 0
77
- },
78
- to: {
79
- x: 5,
80
- y: 5
81
- }
82
- }, {
83
- id: 3,
84
- type: 'circle',
85
- center: {
86
- x: 3,
87
- y: 3
88
- },
89
- radius: 2
90
- }];
91
- var action = {
92
- type: 'CHANGE_MARKS',
93
- marks: newMarks
94
- };
95
- var state = (0, _marks["default"])(initialState, action);
96
- expect(state).toEqual(newMarks);
97
- expect(state.length).toBe(3);
98
- });
99
- it('throws error when marks is not an array', function () {
100
- var initialState = [];
101
- var action = {
102
- type: 'CHANGE_MARKS',
103
- marks: 'not an array'
104
- };
105
- expect(function () {
106
- return (0, _marks["default"])(initialState, action);
107
- }).toThrow('marks must be an array');
108
- });
109
- it('throws error when marks is null', function () {
110
- var initialState = [];
111
- var action = {
112
- type: 'CHANGE_MARKS',
113
- marks: null
114
- };
115
- expect(function () {
116
- return (0, _marks["default"])(initialState, action);
117
- }).toThrow('marks must be an array');
118
- });
119
- it('throws error when marks is undefined', function () {
120
- var initialState = [];
121
- var action = {
122
- type: 'CHANGE_MARKS',
123
- marks: undefined
124
- };
125
- expect(function () {
126
- return (0, _marks["default"])(initialState, action);
127
- }).toThrow('marks must be an array');
128
- });
129
- it('throws error when marks is an object', function () {
130
- var initialState = [];
131
- var action = {
132
- type: 'CHANGE_MARKS',
133
- marks: {
134
- id: 1
135
- }
136
- };
137
- expect(function () {
138
- return (0, _marks["default"])(initialState, action);
139
- }).toThrow('marks must be an array');
140
- });
141
- it('throws error when marks is a number', function () {
142
- var initialState = [];
143
- var action = {
144
- type: 'CHANGE_MARKS',
145
- marks: 123
146
- };
147
- expect(function () {
148
- return (0, _marks["default"])(initialState, action);
149
- }).toThrow('marks must be an array');
150
- });
151
- it('preserves mark properties', function () {
152
- var initialState = [];
153
- var newMarks = [{
154
- id: 1,
155
- type: 'point',
156
- x: 10,
157
- y: 20,
158
- label: 'A',
159
- correctness: {
160
- value: 'correct'
161
- },
162
- editable: true,
163
- interactive: true
164
- }];
165
- var action = {
166
- type: 'CHANGE_MARKS',
167
- marks: newMarks
168
- };
169
- var state = (0, _marks["default"])(initialState, action);
170
- expect(state[0]).toEqual(newMarks[0]);
171
- expect(state[0].correctness).toBeDefined();
172
- expect(state[0].editable).toBe(true);
173
- });
174
- });
175
- describe('unknown actions', function () {
176
- it('returns current state for unknown action', function () {
177
- var initialState = [{
178
- id: 1,
179
- type: 'point'
180
- }];
181
- var action = {
182
- type: 'UNKNOWN_ACTION'
183
- };
184
- var state = (0, _marks["default"])(initialState, action);
185
- expect(state).toBe(initialState);
186
- });
187
- it('returns current state for ADD_MARK action', function () {
188
- var initialState = [{
189
- id: 1,
190
- type: 'point'
191
- }];
192
- var action = {
193
- type: 'ADD_MARK'
194
- };
195
- var state = (0, _marks["default"])(initialState, action);
196
- expect(state).toBe(initialState);
197
- });
198
- it('does not modify state for unknown actions', function () {
199
- var initialState = [{
200
- id: 1,
201
- type: 'point'
202
- }];
203
- var action = {
204
- type: 'SOME_OTHER_ACTION',
205
- data: 'test'
206
- };
207
- var state = (0, _marks["default"])(initialState, action);
208
- expect(state).toEqual(initialState);
209
- });
210
- });
211
- describe('immutability', function () {
212
- it('does not mutate original state', function () {
213
- var initialState = [{
214
- id: 1,
215
- type: 'point'
216
- }];
217
- var originalState = [].concat(initialState);
218
- var newMarks = [{
219
- id: 2,
220
- type: 'line'
221
- }];
222
- var action = {
223
- type: 'CHANGE_MARKS',
224
- marks: newMarks
225
- };
226
- (0, _marks["default"])(initialState, action);
227
- expect(initialState).toEqual(originalState);
228
- });
229
- it('returns new array reference for CHANGE_MARKS', function () {
230
- var initialState = [{
231
- id: 1,
232
- type: 'point'
233
- }];
234
- var newMarks = [{
235
- id: 1,
236
- type: 'point'
237
- }];
238
- var action = {
239
- type: 'CHANGE_MARKS',
240
- marks: newMarks
241
- };
242
- var state = (0, _marks["default"])(initialState, action);
243
- expect(state).not.toBe(initialState);
244
- expect(state).toBe(newMarks);
245
- });
246
- it('returns same reference for unknown actions', function () {
247
- var initialState = [{
248
- id: 1,
249
- type: 'point'
250
- }];
251
- var action = {
252
- type: 'UNKNOWN_ACTION'
253
- };
254
- var state = (0, _marks["default"])(initialState, action);
255
- expect(state).toBe(initialState);
256
- });
257
- });
258
- });
259
- //# sourceMappingURL=marks.test.js.map