@pie-lib/graphing 2.14.22 → 2.16.0-beta.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 (259) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/NEXT.CHANGELOG.json +1 -0
  3. package/lib/__tests__/graph-with-controls.test.js +215 -0
  4. package/lib/__tests__/graph.test.js +290 -0
  5. package/lib/__tests__/grid.test.js +40 -0
  6. package/lib/__tests__/labels.test.js +59 -0
  7. package/lib/__tests__/mark-label.test.js +154 -0
  8. package/lib/__tests__/toggle-bar.test.js +54 -0
  9. package/lib/__tests__/tool-menu.test.js +43 -0
  10. package/lib/__tests__/undo-redo.test.js +42 -0
  11. package/lib/__tests__/use-debounce.test.js +28 -0
  12. package/lib/__tests__/utils.js +72 -0
  13. package/lib/__tests__/utils.test.js +133 -0
  14. package/lib/axis/__tests__/arrow.test.js +68 -0
  15. package/lib/axis/__tests__/axes.test.js +214 -0
  16. package/lib/axis/arrow.js +1 -1
  17. package/lib/axis/axes.js +6 -6
  18. package/lib/axis/index.js +1 -1
  19. package/lib/bg.js +1 -1
  20. package/lib/container/actions.js +1 -1
  21. package/lib/container/index.js +2 -5
  22. package/lib/container/marks.js +1 -1
  23. package/lib/container/middleware.js +1 -1
  24. package/lib/container/reducer.js +1 -1
  25. package/lib/coordinates-label.js +6 -4
  26. package/lib/graph-with-controls.js +9 -16
  27. package/lib/graph.js +30 -13
  28. package/lib/grid-setup.js +1 -1
  29. package/lib/grid.js +7 -15
  30. package/lib/index.js +9 -1
  31. package/lib/key-legend.js +246 -0
  32. package/lib/label-svg-icon.js +56 -0
  33. package/lib/labels.js +3 -2
  34. package/lib/mark-label.js +168 -57
  35. package/lib/toggle-bar.js +4 -5
  36. package/lib/tool-menu.js +3 -23
  37. package/lib/tools/absolute/__tests__/component.test.js +74 -0
  38. package/lib/tools/absolute/component.js +35 -0
  39. package/lib/tools/absolute/index.js +63 -0
  40. package/lib/tools/circle/__tests__/bg-circle.test.js +46 -0
  41. package/lib/tools/circle/__tests__/component.test.js +259 -0
  42. package/lib/tools/circle/bg-circle.js +5 -4
  43. package/lib/tools/circle/component.js +35 -16
  44. package/lib/tools/circle/index.js +1 -1
  45. package/lib/tools/exponential/__tests__/component.test.js +73 -0
  46. package/lib/tools/exponential/component.js +34 -0
  47. package/lib/tools/exponential/index.js +71 -0
  48. package/lib/tools/index.js +27 -7
  49. package/lib/tools/line/__tests__/component.test.js +56 -0
  50. package/lib/tools/line/component.js +3 -2
  51. package/lib/tools/line/index.js +1 -1
  52. package/lib/tools/parabola/__tests__/component.test.js +73 -0
  53. package/lib/tools/parabola/component.js +7 -6
  54. package/lib/tools/parabola/index.js +1 -1
  55. package/lib/tools/point/__tests__/component.test.js +97 -0
  56. package/lib/tools/point/component.js +15 -10
  57. package/lib/tools/point/index.js +1 -1
  58. package/lib/tools/polygon/__tests__/component.test.js +255 -0
  59. package/lib/tools/polygon/__tests__/index.test.js +95 -0
  60. package/lib/tools/polygon/__tests__/line.test.js +43 -0
  61. package/lib/tools/polygon/__tests__/polygon.test.js +73 -0
  62. package/lib/tools/polygon/component.js +26 -13
  63. package/lib/tools/polygon/index.js +1 -1
  64. package/lib/tools/polygon/line.js +13 -7
  65. package/lib/tools/polygon/polygon.js +7 -4
  66. package/lib/tools/ray/__tests__/component.test.js +48 -0
  67. package/lib/tools/ray/component.js +3 -2
  68. package/lib/tools/ray/index.js +1 -1
  69. package/lib/tools/segment/__tests__/component.test.js +48 -0
  70. package/lib/tools/segment/component.js +3 -2
  71. package/lib/tools/segment/index.js +1 -1
  72. package/lib/tools/shared/__tests__/arrow-head.test.js +62 -0
  73. package/lib/tools/shared/arrow-head.js +1 -1
  74. package/lib/tools/shared/icons/CorrectSVG.js +36 -0
  75. package/lib/tools/shared/icons/IncorrectSVG.js +36 -0
  76. package/lib/tools/shared/icons/MissingSVG.js +35 -0
  77. package/lib/tools/shared/line/__tests__/index.test.js +301 -0
  78. package/lib/tools/shared/line/__tests__/line-path.test.js +78 -0
  79. package/lib/tools/shared/line/__tests__/with-root-edge.test.js +122 -0
  80. package/lib/tools/shared/line/index.js +52 -20
  81. package/lib/tools/shared/line/line-path.js +14 -8
  82. package/lib/tools/shared/line/with-root-edge.js +20 -9
  83. package/lib/tools/shared/point/__tests__/arrow-point.test.js +137 -0
  84. package/lib/tools/shared/point/__tests__/base-point.test.js +134 -0
  85. package/lib/tools/shared/point/arrow-point.js +2 -2
  86. package/lib/tools/shared/point/arrow.js +2 -2
  87. package/lib/tools/shared/point/base-point.js +44 -8
  88. package/lib/tools/shared/point/index.js +5 -2
  89. package/lib/tools/shared/styles.js +17 -8
  90. package/lib/tools/shared/types.js +1 -1
  91. package/lib/tools/sine/__tests__/component.test.js +81 -0
  92. package/lib/tools/sine/component.js +14 -5
  93. package/lib/tools/sine/index.js +1 -1
  94. package/lib/tools/vector/__tests__/component.test.js +45 -0
  95. package/lib/tools/vector/component.js +3 -2
  96. package/lib/tools/vector/index.js +1 -1
  97. package/lib/undo-redo.js +1 -2
  98. package/lib/use-debounce.js +1 -1
  99. package/lib/utils.js +2 -2
  100. package/package.json +7 -7
  101. package/src/__tests__/__snapshots__/graph-with-controls.test.jsx.snap +237 -0
  102. package/src/__tests__/__snapshots__/graph.test.jsx.snap +211 -0
  103. package/src/__tests__/__snapshots__/grid.test.jsx.snap +54 -0
  104. package/src/__tests__/__snapshots__/labels.test.jsx.snap +30 -0
  105. package/src/__tests__/__snapshots__/mark-label.test.jsx.snap +45 -0
  106. package/src/__tests__/__snapshots__/toggle-bar.test.jsx.snap +7 -0
  107. package/src/__tests__/__snapshots__/tool-menu.test.jsx.snap +13 -0
  108. package/src/__tests__/__snapshots__/undo-redo.test.jsx.snap +14 -0
  109. package/src/__tests__/graph-with-controls.test.jsx +147 -0
  110. package/src/__tests__/graph.test.jsx +230 -0
  111. package/src/__tests__/grid.test.jsx +20 -0
  112. package/src/__tests__/labels.test.jsx +38 -0
  113. package/src/__tests__/mark-label.test.jsx +68 -0
  114. package/src/__tests__/toggle-bar.test.jsx +36 -0
  115. package/src/__tests__/tool-menu.test.jsx +29 -0
  116. package/src/__tests__/undo-redo.test.jsx +25 -0
  117. package/src/__tests__/use-debounce.test.js +21 -0
  118. package/src/__tests__/utils.js +38 -0
  119. package/src/__tests__/utils.test.js +151 -0
  120. package/src/axis/__tests__/__snapshots__/arrow.test.jsx.snap +33 -0
  121. package/src/axis/__tests__/__snapshots__/axes.test.jsx.snap +122 -0
  122. package/src/axis/__tests__/arrow.test.jsx +39 -0
  123. package/src/axis/__tests__/axes.test.jsx +220 -0
  124. package/src/axis/axes.jsx +5 -5
  125. package/src/container/index.jsx +2 -4
  126. package/src/coordinates-label.jsx +4 -3
  127. package/src/graph-with-controls.jsx +8 -10
  128. package/src/graph.jsx +22 -10
  129. package/src/grid-setup.jsx +9 -6
  130. package/src/grid.jsx +8 -10
  131. package/src/index.js +2 -2
  132. package/src/key-legend.jsx +115 -0
  133. package/src/label-svg-icon.jsx +39 -0
  134. package/src/labels.jsx +2 -1
  135. package/src/mark-label.jsx +149 -52
  136. package/src/toggle-bar.jsx +1 -2
  137. package/src/tool-menu.jsx +3 -26
  138. package/src/tools/absolute/__tests__/component.test.jsx +54 -0
  139. package/src/tools/absolute/component.jsx +23 -0
  140. package/src/tools/absolute/index.js +31 -0
  141. package/src/tools/circle/__tests__/__snapshots__/bg-circle.test.jsx.snap +46 -0
  142. package/src/tools/circle/__tests__/__snapshots__/component.test.jsx.snap +293 -0
  143. package/src/tools/circle/__tests__/bg-circle.test.jsx +28 -0
  144. package/src/tools/circle/__tests__/component.test.jsx +228 -0
  145. package/src/tools/circle/bg-circle.jsx +5 -4
  146. package/src/tools/circle/component.jsx +22 -8
  147. package/src/tools/exponential/__tests__/component.test.jsx +54 -0
  148. package/src/tools/exponential/component.jsx +23 -0
  149. package/src/tools/exponential/index.js +39 -0
  150. package/src/tools/index.js +38 -5
  151. package/src/tools/line/__tests__/__snapshots__/component.test.jsx.snap +20 -0
  152. package/src/tools/line/__tests__/component.test.jsx +36 -0
  153. package/src/tools/line/component.jsx +2 -1
  154. package/src/tools/parabola/__tests__/component.test.jsx +49 -0
  155. package/src/tools/parabola/component.jsx +7 -6
  156. package/src/tools/point/__tests__/__snapshots__/component.test.jsx.snap +40 -0
  157. package/src/tools/point/__tests__/component.test.jsx +66 -0
  158. package/src/tools/point/component.jsx +12 -6
  159. package/src/tools/polygon/__tests__/__snapshots__/component.test.jsx.snap +415 -0
  160. package/src/tools/polygon/__tests__/__snapshots__/line.test.jsx.snap +45 -0
  161. package/src/tools/polygon/__tests__/__snapshots__/polygon.test.jsx.snap +52 -0
  162. package/src/tools/polygon/__tests__/component.test.jsx +226 -0
  163. package/src/tools/polygon/__tests__/index.test.js +65 -0
  164. package/src/tools/polygon/__tests__/line.test.jsx +25 -0
  165. package/src/tools/polygon/__tests__/polygon.test.jsx +44 -0
  166. package/src/tools/polygon/component.jsx +39 -11
  167. package/src/tools/polygon/line.jsx +15 -7
  168. package/src/tools/polygon/polygon.jsx +7 -3
  169. package/src/tools/ray/__tests__/__snapshots__/component.test.jsx.snap +23 -0
  170. package/src/tools/ray/__tests__/component.test.jsx +29 -0
  171. package/src/tools/ray/component.jsx +2 -1
  172. package/src/tools/segment/__tests__/__snapshots__/component.test.jsx.snap +14 -0
  173. package/src/tools/segment/__tests__/component.test.jsx +28 -0
  174. package/src/tools/segment/component.jsx +2 -1
  175. package/src/tools/shared/__tests__/__snapshots__/arrow-head.test.jsx.snap +27 -0
  176. package/src/tools/shared/__tests__/arrow-head.test.jsx +34 -0
  177. package/src/tools/shared/icons/CorrectSVG.jsx +22 -0
  178. package/src/tools/shared/icons/IncorrectSVG.jsx +20 -0
  179. package/src/tools/shared/icons/MissingSVG.jsx +21 -0
  180. package/src/tools/shared/line/__tests__/__snapshots__/index.test.jsx.snap +360 -0
  181. package/src/tools/shared/line/__tests__/__snapshots__/line-path.test.jsx.snap +58 -0
  182. package/src/tools/shared/line/__tests__/__snapshots__/with-root-edge.test.jsx.snap +63 -0
  183. package/src/tools/shared/line/__tests__/index.test.jsx +255 -0
  184. package/src/tools/shared/line/__tests__/line-path.test.jsx +53 -0
  185. package/src/tools/shared/line/__tests__/with-root-edge.test.jsx +73 -0
  186. package/src/tools/shared/line/index.jsx +39 -13
  187. package/src/tools/shared/line/line-path.jsx +18 -7
  188. package/src/tools/shared/line/with-root-edge.jsx +10 -3
  189. package/src/tools/shared/point/__tests__/__snapshots__/arrow-point.test.jsx.snap +56 -0
  190. package/src/tools/shared/point/__tests__/__snapshots__/base-point.test.jsx.snap +44 -0
  191. package/src/tools/shared/point/__tests__/arrow-point.test.jsx +87 -0
  192. package/src/tools/shared/point/__tests__/base-point.test.jsx +84 -0
  193. package/src/tools/shared/point/arrow-point.jsx +4 -1
  194. package/src/tools/shared/point/arrow.jsx +4 -1
  195. package/src/tools/shared/point/base-point.jsx +28 -3
  196. package/src/tools/shared/point/index.jsx +7 -2
  197. package/src/tools/shared/styles.js +8 -3
  198. package/src/tools/sine/__tests__/component.test.jsx +51 -0
  199. package/src/tools/sine/component.jsx +7 -7
  200. package/src/tools/vector/__tests__/__snapshots__/component.test.jsx.snap +12 -0
  201. package/src/tools/vector/__tests__/component.test.jsx +26 -0
  202. package/src/tools/vector/component.jsx +2 -1
  203. package/src/undo-redo.jsx +0 -1
  204. package/src/utils.js +1 -1
  205. package/legacy.png +0 -0
  206. package/lib/axis/arrow.js.map +0 -1
  207. package/lib/axis/axes.js.map +0 -1
  208. package/lib/axis/index.js.map +0 -1
  209. package/lib/bg.js.map +0 -1
  210. package/lib/container/actions.js.map +0 -1
  211. package/lib/container/index.js.map +0 -1
  212. package/lib/container/marks.js.map +0 -1
  213. package/lib/container/middleware.js.map +0 -1
  214. package/lib/container/reducer.js.map +0 -1
  215. package/lib/coordinates-label.js.map +0 -1
  216. package/lib/graph-with-controls.js.map +0 -1
  217. package/lib/graph.js.map +0 -1
  218. package/lib/grid-setup.js.map +0 -1
  219. package/lib/grid.js.map +0 -1
  220. package/lib/index.js.map +0 -1
  221. package/lib/labels.js.map +0 -1
  222. package/lib/mark-label.js.map +0 -1
  223. package/lib/toggle-bar.js.map +0 -1
  224. package/lib/tool-menu.js.map +0 -1
  225. package/lib/tools/circle/bg-circle.js.map +0 -1
  226. package/lib/tools/circle/component.js.map +0 -1
  227. package/lib/tools/circle/index.js.map +0 -1
  228. package/lib/tools/index.js.map +0 -1
  229. package/lib/tools/line/component.js.map +0 -1
  230. package/lib/tools/line/index.js.map +0 -1
  231. package/lib/tools/parabola/component.js.map +0 -1
  232. package/lib/tools/parabola/index.js.map +0 -1
  233. package/lib/tools/point/component.js.map +0 -1
  234. package/lib/tools/point/index.js.map +0 -1
  235. package/lib/tools/polygon/component.js.map +0 -1
  236. package/lib/tools/polygon/index.js.map +0 -1
  237. package/lib/tools/polygon/line.js.map +0 -1
  238. package/lib/tools/polygon/polygon.js.map +0 -1
  239. package/lib/tools/ray/component.js.map +0 -1
  240. package/lib/tools/ray/index.js.map +0 -1
  241. package/lib/tools/segment/component.js.map +0 -1
  242. package/lib/tools/segment/index.js.map +0 -1
  243. package/lib/tools/shared/arrow-head.js.map +0 -1
  244. package/lib/tools/shared/line/index.js.map +0 -1
  245. package/lib/tools/shared/line/line-path.js.map +0 -1
  246. package/lib/tools/shared/line/with-root-edge.js.map +0 -1
  247. package/lib/tools/shared/point/arrow-point.js.map +0 -1
  248. package/lib/tools/shared/point/arrow.js.map +0 -1
  249. package/lib/tools/shared/point/base-point.js.map +0 -1
  250. package/lib/tools/shared/point/index.js.map +0 -1
  251. package/lib/tools/shared/styles.js.map +0 -1
  252. package/lib/tools/shared/types.js.map +0 -1
  253. package/lib/tools/sine/component.js.map +0 -1
  254. package/lib/tools/sine/index.js.map +0 -1
  255. package/lib/tools/vector/component.js.map +0 -1
  256. package/lib/tools/vector/index.js.map +0 -1
  257. package/lib/undo-redo.js.map +0 -1
  258. package/lib/use-debounce.js.map +0 -1
  259. package/lib/utils.js.map +0 -1
@@ -112,16 +112,21 @@ var Point = /*#__PURE__*/function (_React$Component) {
112
112
  onClick = _this$props.onClick,
113
113
  mark = _this$props.mark;
114
114
 
115
- if (labelModeEnabled) {
116
- onChange(mark, _objectSpread({
117
- label: ''
118
- }, mark));
119
-
120
- if (_this.input) {
121
- _this.input.focus();
122
- }
123
- } else {
115
+ if (!labelModeEnabled) {
124
116
  onClick(mark);
117
+ return;
118
+ }
119
+
120
+ if (mark.disabled) {
121
+ return;
122
+ }
123
+
124
+ onChange(mark, _objectSpread({
125
+ label: ''
126
+ }, mark));
127
+
128
+ if (_this.input) {
129
+ _this.input.focus();
125
130
  }
126
131
  });
127
132
  _this.state = {};
@@ -178,4 +183,4 @@ exports.Point = Point;
178
183
  (0, _defineProperty2["default"])(Point, "defaultProps", {});
179
184
  var _default = Point;
180
185
  exports["default"] = _default;
181
- //# sourceMappingURL=component.js.map
186
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90b29scy9wb2ludC9jb21wb25lbnQuanN4Il0sIm5hbWVzIjpbIlBvaW50IiwicHJvcHMiLCJwIiwibWFyayIsInN0YXRlIiwic2V0U3RhdGUiLCJ1cGRhdGUiLCJsYWJlbCIsIm9uQ2hhbmdlIiwidW5kZWZpbmVkIiwibGFiZWxNb2RlRW5hYmxlZCIsIm9uQ2xpY2siLCJkaXNhYmxlZCIsImlucHV0IiwiZm9jdXMiLCJjb29yZGluYXRlc09uSG92ZXIiLCJncmFwaFByb3BzIiwibGFiZWxOb2RlIiwibW92ZSIsInN0YXJ0RHJhZyIsInN0b3BEcmFnIiwiY2xpY2tQb2ludCIsImUiLCJzdG9wUHJvcGFnYXRpb24iLCJoYXNPd25Qcm9wZXJ0eSIsIlJlYWN0RE9NIiwiY3JlYXRlUG9ydGFsIiwiciIsImxhYmVsQ2hhbmdlIiwiUmVhY3QiLCJDb21wb25lbnQiLCJ0eXBlcyIsIkdyYXBoUHJvcHNUeXBlIiwiaXNSZXF1aXJlZCIsIlRvb2xQcm9wVHlwZUZpZWxkcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7O0lBRWFBLEs7Ozs7O0FBUVgsaUJBQVlDLEtBQVosRUFBbUI7QUFBQTs7QUFBQTtBQUNqQiw4QkFBTUEsS0FBTjtBQURpQiw2RkFLWixVQUFDQyxDQUFELEVBQU87QUFDWixVQUFNQyxJQUFJLG1DQUFRLE1BQUtDLEtBQUwsQ0FBV0QsSUFBbkIsR0FBNEJELENBQTVCLENBQVY7O0FBQ0EsWUFBS0csUUFBTCxDQUFjO0FBQUVGLFFBQUFBLElBQUksRUFBSkE7QUFBRixPQUFkO0FBQ0QsS0FSa0I7QUFBQSxrR0FVUCxZQUFNO0FBQ2hCLFVBQU1HLE1BQU0scUJBQVEsTUFBS0wsS0FBTCxDQUFXRSxJQUFuQixDQUFaOztBQUVBLFVBQUlHLE1BQU0sQ0FBQ0MsS0FBUCxLQUFpQixFQUFyQixFQUF5QjtBQUN2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QVBuQjtBQVFFLFFBQUEsT0FBTyxFQUFFLEtBQUtDLFVBUmhCO0FBU0UsUUFBQSxZQUFZLEVBQUUsc0JBQUNDLENBQUQsRUFBTztBQUNuQkEsVUFBQUEsQ0FBQyxDQUFDQyxlQUFGOztBQUNBLFVBQUEsTUFBSSxDQUFDRixVQUFMO0FBQ0QsU0FaSDtBQWFFLFFBQUEsVUFBVSxFQUFFLG9CQUFDQyxDQUFELEVBQU87QUFDakJBLFVBQUFBLENBQUMsQ0FBQ0MsZUFBRjs7QUFDQSxVQUFBLE1BQUksQ0FBQ0YsVUFBTDtBQUNEO0FBaEJILFNBREYsRUFtQkdKLFNBQVMsSUFDUmQsSUFBSSxDQUFDcUIsY0FBTCxDQUFvQixPQUFwQixDQURELGlCQUVDQyxxQkFBU0MsWUFBVCxlQUNFLGdDQUFDLHFCQUFEO0FBQ0UsUUFBQSxRQUFRLEVBQUUsa0JBQUNDLENBQUQ7QUFBQSxpQkFBUSxNQUFJLENBQUNkLEtBQUwsR0FBYWMsQ0FBckI7QUFBQSxTQURaO0FBRUUsUUFBQSxRQUFRLEVBQUUsQ0FBQ2pCLGdCQUZiO0FBR0UsUUFBQSxJQUFJLEVBQUVQLElBSFI7QUFJRSxRQUFBLFVBQVUsRUFBRWEsVUFKZDtBQUtFLFFBQUEsUUFBUSxFQUFFLEtBQUtZO0FBTGpCLFFBREYsRUFRRVgsU0FSRixDQXJCSixDQURGO0FBa0NEOzs7RUEzR3dCWSxrQkFBTUMsUzs7O2lDQUFwQjlCLEs7QUFFVGdCLEVBQUFBLFVBQVUsRUFBRWUsWUFBTUMsY0FBTixDQUFxQkM7R0FDOUJDLHlCO2lDQUhNbEMsSyxrQkFNVyxFO2VBd0dUQSxLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEJhc2VQb2ludCB9IGZyb20gJy4uL3NoYXJlZC9wb2ludCc7XG5pbXBvcnQgeyBUb29sUHJvcFR5cGVGaWVsZHMgfSBmcm9tICcuLi9zaGFyZWQvdHlwZXMnO1xuaW1wb3J0IHsgdHlwZXMgfSBmcm9tICdAcGllLWxpYi9wbG90JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IE1hcmtMYWJlbCBmcm9tICcuLi8uLi9tYXJrLWxhYmVsJztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC9pc0VxdWFsJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcblxuZXhwb3J0IGNsYXNzIFBvaW50IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBncmFwaFByb3BzOiB0eXBlcy5HcmFwaFByb3BzVHlwZS5pc1JlcXVpcmVkLFxuICAgIC4uLlRvb2xQcm9wVHlwZUZpZWxkcyxcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge307XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHt9O1xuICB9XG5cbiAgbW92ZSA9IChwKSA9PiB7XG4gICAgY29uc3QgbWFyayA9IHsgLi4udGhpcy5zdGF0ZS5tYXJrLCAuLi5wIH07XG4gICAgdGhpcy5zZXRTdGF0ZSh7IG1hcmsgfSk7XG4gIH07XG5cbiAgc3RhcnREcmFnID0gKCkgPT4ge1xuICAgIGNvbnN0IHVwZGF0ZSA9IHsgLi4udGhpcy5wcm9wcy5tYXJrIH07XG5cbiAgICBpZiAodXBkYXRlLmxhYmVsID09PSAnJykge1xuICAgICAgZGVsZXRlIHVwZGF0ZS5sYWJlbDtcbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZSh7IG1hcms6IHVwZGF0ZSB9KTtcbiAgfTtcblxuICBzdG9wRHJhZyA9ICgpID0+IHtcbiAgICBjb25zdCB7IG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IG1hcmsgPSB7IC4uLnRoaXMuc3RhdGUubWFyayB9O1xuICAgIHRoaXMuc2V0U3RhdGUoeyBtYXJrOiB1bmRlZmluZWQgfSwgKCkgPT4ge1xuICAgICAgaWYgKCFpc0VxdWFsKHRoaXMucHJvcHMubWFyaywgbWFyaykpIHtcbiAgICAgICAgb25DaGFuZ2UodGhpcy5wcm9wcy5tYXJrLCBtYXJrKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBsYWJlbENoYW5nZSA9IChsYWJlbCkgPT4ge1xuICAgIGNvbnN0IHsgb25DaGFuZ2UgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgdXBkYXRlID0geyAuLi50aGlzLnByb3BzLm1hcmssIGxhYmVsIH07XG5cbiAgICBpZiAoIWxhYmVsIHx8IGlzRW1wdHkobGFiZWwpKSB7XG4gICAgICBkZWxldGUgdXBkYXRlLmxhYmVsO1xuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUoeyBtYXJrOiB1cGRhdGUgfSwgKCkgPT4ge1xuICAgICAgb25DaGFuZ2UodGhpcy5wcm9wcy5tYXJrLCB1cGRhdGUpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNsaWNrUG9pbnQgPSAoKSA9PiB7XG4gICAgY29uc3QgeyBsYWJlbE1vZGVFbmFibGVkLCBvbkNoYW5nZSwgb25DbGljaywgbWFyayB9ID0gdGhpcy5wcm9wcztcblxuICAgIGlmICghbGFiZWxNb2RlRW5hYmxlZCkge1xuICAgICAgb25DbGljayhtYXJrKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobWFyay5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG9uQ2hhbmdlKG1hcmssIHsgbGFiZWw6ICcnLCAuLi5tYXJrIH0pO1xuXG4gICAgaWYgKHRoaXMuaW5wdXQpIHtcbiAgICAgIHRoaXMuaW5wdXQuZm9jdXMoKTtcbiAgICB9XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgY29vcmRpbmF0ZXNPbkhvdmVyLCBncmFwaFByb3BzLCBsYWJlbE5vZGUsIGxhYmVsTW9kZUVuYWJsZWQgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgbWFyayA9IHRoaXMuc3RhdGUubWFyayA/IHRoaXMuc3RhdGUubWFyayA6IHRoaXMucHJvcHMubWFyaztcblxuICAgIHJldHVybiAoXG4gICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgIDxCYXNlUG9pbnRcbiAgICAgICAgICB7Li4ubWFya31cbiAgICAgICAgICBjb29yZGluYXRlc09uSG92ZXI9e2Nvb3JkaW5hdGVzT25Ib3Zlcn1cbiAgICAgICAgICBncmFwaFByb3BzPXtncmFwaFByb3BzfVxuICAgICAgICAgIGxhYmVsTm9kZT17bGFiZWxOb2RlfVxuICAgICAgICAgIG9uRHJhZz17dGhpcy5tb3ZlfVxuICAgICAgICAgIG9uRHJhZ1N0YXJ0PXt0aGlzLnN0YXJ0RHJhZ31cbiAgICAgICAgICBvbkRyYWdTdG9wPXt0aGlzLnN0b3BEcmFnfVxuICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuY2xpY2tQb2ludH1cbiAgICAgICAgICBvblRvdWNoU3RhcnQ9eyhlKSA9PiB7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5jbGlja1BvaW50KCk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvblRvdWNoRW5kPXsoZSkgPT4ge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuY2xpY2tQb2ludCgpO1xuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICAgIHtsYWJlbE5vZGUgJiZcbiAgICAgICAgICBtYXJrLmhhc093blByb3BlcnR5KCdsYWJlbCcpICYmXG4gICAgICAgICAgUmVhY3RET00uY3JlYXRlUG9ydGFsKFxuICAgICAgICAgICAgPE1hcmtMYWJlbFxuICAgICAgICAgICAgICBpbnB1dFJlZj17KHIpID0+ICh0aGlzLmlucHV0ID0gcil9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXshbGFiZWxNb2RlRW5hYmxlZH1cbiAgICAgICAgICAgICAgbWFyaz17bWFya31cbiAgICAgICAgICAgICAgZ3JhcGhQcm9wcz17Z3JhcGhQcm9wc31cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMubGFiZWxDaGFuZ2V9XG4gICAgICAgICAgICAvPixcbiAgICAgICAgICAgIGxhYmVsTm9kZSxcbiAgICAgICAgICApfVxuICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBvaW50O1xuIl19
@@ -29,4 +29,4 @@ var tool = function tool() {
29
29
  };
30
30
 
31
31
  exports.tool = tool;
32
- //# sourceMappingURL=index.js.map
32
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90b29scy9wb2ludC9pbmRleC5qcyJdLCJuYW1lcyI6WyJ0b29sIiwibGFiZWwiLCJ0eXBlIiwiQ29tcG9uZW50IiwiUG9pbnQiLCJhZGRQb2ludCIsInBvaW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOzs7Ozs7QUFFTyxJQUFNQSxJQUFJLEdBQUcsU0FBUEEsSUFBTztBQUFBLFNBQU87QUFDekJDLElBQUFBLEtBQUssRUFBRSxPQURrQjtBQUV6QkMsSUFBQUEsSUFBSSxFQUFFLE9BRm1CO0FBR3pCQyxJQUFBQSxTQUFTLEVBQUVDLHFCQUhjO0FBSXpCQyxJQUFBQSxRQUFRLEVBQUUsa0JBQUNDLEtBQUQ7QUFBQTtBQUNSSixRQUFBQSxJQUFJLEVBQUU7QUFERSxTQUVMSSxLQUZLO0FBQUE7QUFKZSxHQUFQO0FBQUEsQ0FBYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQb2ludCBmcm9tICcuL2NvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCB0b29sID0gKCkgPT4gKHtcbiAgbGFiZWw6ICdQb2ludCcsXG4gIHR5cGU6ICdwb2ludCcsXG4gIENvbXBvbmVudDogUG9pbnQsXG4gIGFkZFBvaW50OiAocG9pbnQpID0+ICh7XG4gICAgdHlwZTogJ3BvaW50JyxcbiAgICAuLi5wb2ludCxcbiAgfSksXG59KTtcbiJdfQ==
@@ -0,0 +1,255 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
+
7
+ var _enzyme = require("enzyme");
8
+
9
+ var _react = _interopRequireDefault(require("react"));
10
+
11
+ var _utils = require("../../../__tests__/utils");
12
+
13
+ var _component = require("../component");
14
+
15
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
16
+
17
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
18
+
19
+ var xyLabel = function xyLabel(x, y, index, label) {
20
+ return _objectSpread(_objectSpread({}, (0, _utils.xy)(x, y, index)), {}, {
21
+ label: label
22
+ });
23
+ };
24
+
25
+ describe('buildLines', function () {
26
+ var defaultPoints = [(0, _utils.xy)(0, 0), (0, _utils.xy)(1, 1), (0, _utils.xy)(1, 0)];
27
+
28
+ var assertBuildLines = function assertBuildLines(points, closed, expected) {
29
+ it("builds points and lines for ".concat(points, " = ").concat(expected), function () {
30
+ var result = (0, _component.buildLines)(points);
31
+ expect(result).toMatchObject([{
32
+ from: (0, _utils.xy)(0, 0, 0),
33
+ to: (0, _utils.xy)(1, 1, 1)
34
+ }, {
35
+ from: (0, _utils.xy)(1, 1, 1),
36
+ to: (0, _utils.xy)(1, 0, 2)
37
+ }]);
38
+ });
39
+ };
40
+
41
+ assertBuildLines(defaultPoints, true, []);
42
+ });
43
+ describe('swap', function () {
44
+ it('swaps pairs', function () {
45
+ var result = (0, _component.swap)([(0, _utils.xy)(0, 0, 0), (0, _utils.xy)(1, 1, 1), (0, _utils.xy)(2, 2, 2)], (0, _utils.xy)(0, 0, 0), (0, _utils.xy)(3, 3, 0));
46
+ expect(result).toEqual([(0, _utils.xy)(3, 3, 0), (0, _utils.xy)(1, 1, 1), (0, _utils.xy)(2, 2, 2)]);
47
+ });
48
+ });
49
+ describe('RawBaseComponent', function () {
50
+ var w;
51
+ var onChange = jest.fn();
52
+ var onChangeProps = jest.fn();
53
+
54
+ var wrapper = function wrapper(extras) {
55
+ var defaults = {
56
+ classes: {},
57
+ className: 'className',
58
+ onChange: onChange,
59
+ onChangeProps: onChangeProps,
60
+ onClosePolygon: jest.fn(),
61
+ graphProps: (0, _utils.graphProps)(),
62
+ points: []
63
+ };
64
+
65
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
66
+
67
+ return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_component.RawBaseComponent, props));
68
+ }; // used to test items that have labels attached to points
69
+
70
+
71
+ var labelNode = document.createElement('foreignObject');
72
+ var points = [xyLabel(0, 0, 0, 'A'), xyLabel(2, 2, 1, 'B'), xyLabel(0, 2, 2, 'C')];
73
+
74
+ var wrapperWithLabels = function wrapperWithLabels(extras) {
75
+ return wrapper(_objectSpread({
76
+ labelNode: labelNode,
77
+ points: points
78
+ }, extras));
79
+ };
80
+
81
+ describe('snapshot', function () {
82
+ it('renders', function () {
83
+ w = wrapper();
84
+ expect(w).toMatchSnapshot();
85
+ });
86
+ it('renders with labels', function () {
87
+ w = wrapperWithLabels();
88
+ expect(w).toMatchSnapshot();
89
+ });
90
+ });
91
+ describe('logic', function () {
92
+ describe('dragPoint', function () {
93
+ it('calls onChange', function () {
94
+ onChange = jest.fn();
95
+ w = wrapper({
96
+ points: [(0, _utils.xy)(1, 1)],
97
+ onChange: onChange
98
+ });
99
+ w.instance().dragPoint(0, (0, _utils.xy)(1, 1), (0, _utils.xy)(2, 2));
100
+ expect(onChange).toHaveBeenCalledWith([(0, _utils.xy)(2, 2)]);
101
+ });
102
+ it('calls onChange keeping label property from point', function () {
103
+ onChange = jest.fn();
104
+ w = wrapperWithLabels(onChange);
105
+ w.instance().dragPoint(0, (0, _utils.xy)(0, 0), (0, _utils.xy)(0, 1));
106
+ expect(onChange).toHaveBeenCalledWith([{
107
+ x: 0,
108
+ y: 1,
109
+ label: 'A'
110
+ }, points[1], points[2]]);
111
+ });
112
+ });
113
+ describe('dragLine', function () {
114
+ it('calls onChange', function () {
115
+ w = wrapper({
116
+ points: [(0, _utils.xy)(1, 1, 0), (0, _utils.xy)(2, 2, 1)],
117
+ onChange: onChange
118
+ });
119
+ w.instance().dragLine({
120
+ from: (0, _utils.xy)(1, 1, 0),
121
+ to: (0, _utils.xy)(2, 2, 1)
122
+ }, {
123
+ from: (0, _utils.xy)(2, 2, 0),
124
+ to: (0, _utils.xy)(4, 4, 1)
125
+ });
126
+ expect(onChange).toHaveBeenCalledWith([(0, _utils.xy)(2, 2, 0), (0, _utils.xy)(4, 4, 1)]);
127
+ });
128
+ it('calls onChange keeping label property from both points', function () {
129
+ onChange = jest.fn();
130
+ w = wrapperWithLabels(onChange);
131
+ w.instance().dragLine({
132
+ from: points[0],
133
+ to: points[1]
134
+ }, {
135
+ from: (0, _utils.xy)(0, 1, 0),
136
+ to: (0, _utils.xy)(2, 3, 1)
137
+ });
138
+ expect(onChange).toHaveBeenCalledWith([xyLabel(0, 1, 0, 'A'), xyLabel(2, 3, 1, 'B'), points[2]]);
139
+ });
140
+ });
141
+ describe('dragPoly', function () {
142
+ it('calls onChange', function () {
143
+ w = wrapper({
144
+ onChange: onChange
145
+ });
146
+ var existing = [(0, _utils.xy)(1, 1)];
147
+ var next = [(0, _utils.xy)(2, 2)];
148
+ w.instance().dragPoly(existing, next);
149
+ expect(onChange).toHaveBeenCalledWith([(0, _utils.xy)(2, 2)]);
150
+ });
151
+ it('calls onChange keeping label property from all points', function () {
152
+ onChange = jest.fn();
153
+ w = wrapperWithLabels(onChange);
154
+ w.instance().dragPoly(points, [(0, _utils.xy)(0, 1, 0), (0, _utils.xy)(2, 3, 1), (0, _utils.xy)(0, 3, 2)]);
155
+ expect(onChange).toHaveBeenCalledWith([xyLabel(0, 1, 0, 'A'), xyLabel(2, 3, 1, 'B'), xyLabel(0, 3, 2, 'C')]);
156
+ });
157
+ });
158
+ describe('labelChange', function () {
159
+ it('updates "label" property for point', function () {
160
+ w = wrapperWithLabels();
161
+ w.instance().labelChange(_objectSpread(_objectSpread({}, points[0]), {}, {
162
+ label: 'Label A'
163
+ }), 0);
164
+ expect(onChangeProps).toBeCalledWith([_objectSpread(_objectSpread({}, points[0]), {}, {
165
+ label: 'Label A'
166
+ }), points[1], points[2]]);
167
+ w.instance().labelChange(_objectSpread(_objectSpread({}, points[1]), {}, {
168
+ label: 'Label B'
169
+ }), 1);
170
+ expect(onChangeProps).toBeCalledWith([points[0], _objectSpread(_objectSpread({}, points[1]), {}, {
171
+ label: 'Label B'
172
+ }), points[2]]);
173
+ });
174
+ it('removes "label" property if the field is empty', function () {
175
+ w = wrapperWithLabels();
176
+ w.instance().labelChange(_objectSpread(_objectSpread({}, points[0]), {}, {
177
+ label: ''
178
+ }), 0);
179
+ expect(onChangeProps).toBeCalledWith([(0, _utils.xy)(0, 0, 0), points[1], points[2]]);
180
+ w.instance().labelChange(_objectSpread(_objectSpread({}, points[1]), {}, {
181
+ label: ''
182
+ }), 1);
183
+ expect(onChangeProps).toBeCalledWith([points[0], (0, _utils.xy)(2, 2, 1), points[2]]);
184
+ });
185
+ });
186
+ });
187
+ describe('close', function () {
188
+ it('calls onClosePolygon', function () {
189
+ var onClosePolygon = jest.fn();
190
+ w = wrapper({
191
+ onClosePolygon: onClosePolygon,
192
+ points: [(0, _utils.xy)(1, 1), (0, _utils.xy)(2, 2), (0, _utils.xy)(3, 3)]
193
+ });
194
+ w.instance().close();
195
+ expect(onClosePolygon).toHaveBeenCalled();
196
+ });
197
+ });
198
+ describe('clickPoint', function () {
199
+ var onClick = jest.fn();
200
+ var onClosePolygon = jest.fn();
201
+ beforeEach(function () {
202
+ onClosePolygon.mockClear();
203
+ onClick.mockClear();
204
+ });
205
+
206
+ var assertCallback = function assertCallback(isToolActive, closed, index, mock) {
207
+ it('calls onClosePolygon', function () {
208
+ var w = wrapper({
209
+ points: [(0, _utils.xy)(1, 1), (0, _utils.xy)(2, 2), (0, _utils.xy)(3, 3)],
210
+ onClosePolygon: onClosePolygon,
211
+ onClick: onClick,
212
+ isToolActive: isToolActive,
213
+ closed: closed
214
+ });
215
+ w.instance().clickPoint((0, _utils.xy)(1, 1, 0), index, {});
216
+ expect(mock).toHaveBeenCalled();
217
+ });
218
+ };
219
+
220
+ assertCallback(true, false, 0, onClosePolygon);
221
+ assertCallback(true, false, 1, onClick);
222
+ assertCallback(false, false, 0, onClick);
223
+ assertCallback(true, true, 0, onClick);
224
+ it('adds "label" property to a point', function () {
225
+ var onChangeProps = jest.fn();
226
+ var w = wrapperWithLabels({
227
+ labelModeEnabled: true,
228
+ onChangeProps: onChangeProps,
229
+ points: [(0, _utils.xy)(0, 0, 0), (0, _utils.xy)(2, 2, 1), (0, _utils.xy)(0, 2, 2)]
230
+ });
231
+ w.instance().clickPoint((0, _utils.xy)(0, 0, 0), 0, {});
232
+ expect(onChangeProps).toHaveBeenCalledWith([xyLabel(0, 0, 0, ''), (0, _utils.xy)(2, 2, 1), (0, _utils.xy)(0, 2, 2)]);
233
+ });
234
+ it('adds "label" property to a point when limit labeling', function () {
235
+ var onChangeProps = jest.fn();
236
+ var w = wrapperWithLabels({
237
+ labelModeEnabled: true,
238
+ onChangeProps: onChangeProps,
239
+ limitLabeling: true
240
+ });
241
+ w.instance().clickPoint((0, _utils.xy)(0, 0, 0), 0, {});
242
+ expect(onChangeProps).toHaveBeenCalledTimes(0);
243
+ });
244
+ it('if point already has label, keeps that value', function () {
245
+ var onChangeProps = jest.fn();
246
+ var w = wrapperWithLabels({
247
+ labelModeEnabled: true,
248
+ onChangeProps: onChangeProps
249
+ });
250
+ w.instance().clickPoint(points[0], 0, {});
251
+ expect(onChangeProps).toHaveBeenCalledWith(points);
252
+ });
253
+ });
254
+ });
255
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29scy9wb2x5Z29uL19fdGVzdHNfXy9jb21wb25lbnQudGVzdC5qc3giXSwibmFtZXMiOlsieHlMYWJlbCIsIngiLCJ5IiwiaW5kZXgiLCJsYWJlbCIsImRlc2NyaWJlIiwiZGVmYXVsdFBvaW50cyIsImFzc2VydEJ1aWxkTGluZXMiLCJwb2ludHMiLCJjbG9zZWQiLCJleHBlY3RlZCIsIml0IiwicmVzdWx0IiwiZXhwZWN0IiwidG9NYXRjaE9iamVjdCIsImZyb20iLCJ0byIsInRvRXF1YWwiLCJ3Iiwib25DaGFuZ2UiLCJqZXN0IiwiZm4iLCJvbkNoYW5nZVByb3BzIiwid3JhcHBlciIsImV4dHJhcyIsImRlZmF1bHRzIiwiY2xhc3NlcyIsImNsYXNzTmFtZSIsIm9uQ2xvc2VQb2x5Z29uIiwiZ3JhcGhQcm9wcyIsInByb3BzIiwibGFiZWxOb2RlIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwid3JhcHBlcldpdGhMYWJlbHMiLCJ0b01hdGNoU25hcHNob3QiLCJpbnN0YW5jZSIsImRyYWdQb2ludCIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwiZHJhZ0xpbmUiLCJleGlzdGluZyIsIm5leHQiLCJkcmFnUG9seSIsImxhYmVsQ2hhbmdlIiwidG9CZUNhbGxlZFdpdGgiLCJjbG9zZSIsInRvSGF2ZUJlZW5DYWxsZWQiLCJvbkNsaWNrIiwiYmVmb3JlRWFjaCIsIm1vY2tDbGVhciIsImFzc2VydENhbGxiYWNrIiwiaXNUb29sQWN0aXZlIiwibW9jayIsImNsaWNrUG9pbnQiLCJsYWJlbE1vZGVFbmFibGVkIiwibGltaXRMYWJlbGluZyIsInRvSGF2ZUJlZW5DYWxsZWRUaW1lcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7OztBQUVBLElBQU1BLE9BQU8sR0FBRyxTQUFWQSxPQUFVLENBQUNDLENBQUQsRUFBSUMsQ0FBSixFQUFPQyxLQUFQLEVBQWNDLEtBQWQ7QUFBQSx5Q0FDWCxl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Q0FBc0JrQyxxQkFBdEIsQ0FBNEMsQ0FBNUM7QUFDRCxLQVZDLENBQUY7QUFZQTdDLElBQUFBLEVBQUUsQ0FBQyw4Q0FBRCxFQUFpRCxZQUFNO0FBQ3ZELFVBQU1XLGFBQWEsR0FBR0YsSUFBSSxDQUFDQyxFQUFMLEVBQXRCO0FBQ0EsVUFBTUgsQ0FBQyxHQUFHZ0IsaUJBQWlCLENBQUM7QUFBRW9CLFFBQUFBLGdCQUFnQixFQUFFLElBQXBCO0FBQTBCaEMsUUFBQUEsYUFBYSxFQUFiQTtBQUExQixPQUFELENBQTNCO0FBRUFKLE1BQUFBLENBQUMsQ0FBQ2tCLFFBQUYsR0FBYWlCLFVBQWIsQ0FBd0I3QyxNQUFNLENBQUMsQ0FBRCxDQUE5QixFQUFtQyxDQUFuQyxFQUFzQyxFQUF0QztBQUNBSyxNQUFBQSxNQUFNLENBQUNTLGFBQUQsQ0FBTixDQUFzQmdCLG9CQUF0QixDQUEyQzlCLE1BQTNDO0FBQ0QsS0FOQyxDQUFGO0FBT0QsR0EzRE8sQ0FBUjtBQTRERCxDQS9MTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2hhbGxvdyB9IGZyb20gJ2VuenltZSc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZ3JhcGhQcm9wcywgeHkgfSBmcm9tICcuLi8uLi8uLi9fX3Rlc3RzX18vdXRpbHMnO1xuXG5pbXBvcnQgeyBSYXdCYXNlQ29tcG9uZW50LCBidWlsZExpbmVzLCBzd2FwIH0gZnJvbSAnLi4vY29tcG9uZW50JztcblxuY29uc3QgeHlMYWJlbCA9ICh4LCB5LCBpbmRleCwgbGFiZWwpID0+ICh7XG4gIC4uLnh5KHgsIHksIGluZGV4KSxcbiAgbGFiZWwsXG59KTtcblxuZGVzY3JpYmUoJ2J1aWxkTGluZXMnLCAoKSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRQb2ludHMgPSBbeHkoMCwgMCksIHh5KDEsIDEpLCB4eSgxLCAwKV07XG5cbiAgY29uc3QgYXNzZXJ0QnVpbGRMaW5lcyA9IChwb2ludHMsIGNsb3NlZCwgZXhwZWN0ZWQpID0+IHtcbiAgICBpdChgYnVpbGRzIHBvaW50cyBhbmQgbGluZXMgZm9yICR7cG9pbnRzfSA9ICR7ZXhwZWN0ZWR9YCwgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYnVpbGRMaW5lcyhwb2ludHMpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9NYXRjaE9iamVjdChbXG4gICAgICAgIHsgZnJvbTogeHkoMCwgMCwgMCksIHRvOiB4eSgxLCAxLCAxKSB9LFxuICAgICAgICB7IGZyb206IHh5KDEsIDEsIDEpLCB0bzogeHkoMSwgMCwgMikgfSxcbiAgICAgIF0pO1xuICAgIH0pO1xuICB9O1xuXG4gIGFzc2VydEJ1aWxkTGluZXMoZGVmYXVsdFBvaW50cywgdHJ1ZSwgW10pO1xufSk7XG5cbmRlc2NyaWJlKCdzd2FwJywgKCkgPT4ge1xuICBpdCgnc3dhcHMgcGFpcnMnLCAoKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gc3dhcChbeHkoMCwgMCwgMCksIHh5KDEsIDEsIDEpLCB4eSgyLCAyLCAyKV0sIHh5KDAsIDAsIDApLCB4eSgzLCAzLCAwKSk7XG4gICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChbeHkoMywgMywgMCksIHh5KDEsIDEsIDEpLCB4eSgyLCAyLCAyKV0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnUmF3QmFzZUNvbXBvbmVudCcsICgpID0+IHtcbiAgbGV0IHc7XG4gIGxldCBvbkNoYW5nZSA9IGplc3QuZm4oKTtcbiAgbGV0IG9uQ2hhbmdlUHJvcHMgPSBqZXN0LmZuKCk7XG4gIGNvbnN0IHdyYXBwZXIgPSAoZXh0cmFzKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBjbGFzc2VzOiB7fSxcbiAgICAgIGNsYXNzTmFtZTogJ2NsYXNzTmFtZScsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIG9uQ2hhbmdlUHJvcHMsXG4gICAgICBvbkNsb3NlUG9seWdvbjogamVzdC5mbigpLFxuICAgICAgZ3JhcGhQcm9wczogZ3JhcGhQcm9wcygpLFxuICAgICAgcG9pbnRzOiBbXSxcbiAgICB9O1xuICAgIGNvbnN0IHByb3BzID0geyAuLi5kZWZhdWx0cywgLi4uZXh0cmFzIH07XG5cbiAgICByZXR1cm4gc2hhbGxvdyg8UmF3QmFzZUNvbXBvbmVudCB7Li4ucHJvcHN9IC8+KTtcbiAgfTtcblxuICAvLyB1c2VkIHRvIHRlc3QgaXRlbXMgdGhhdCBoYXZlIGxhYmVscyBhdHRhY2hlZCB0byBwb2ludHNcbiAgY29uc3QgbGFiZWxOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZm9yZWlnbk9iamVjdCcpO1xuICBjb25zdCBwb2ludHMgPSBbeHlMYWJlbCgwLCAwLCAwLCAnQScpLCB4eUxhYmVsKDIsIDIsIDEsICdCJyksIHh5TGFiZWwoMCwgMiwgMiwgJ0MnKV07XG4gIGNvbnN0IHdyYXBwZXJXaXRoTGFiZWxzID0gKGV4dHJhcykgPT5cbiAgICB3cmFwcGVyKHtcbiAgICAgIGxhYmVsTm9kZTogbGFiZWxOb2RlLFxuICAgICAgcG9pbnRzOiBwb2ludHMsXG4gICAgICAuLi5leHRyYXMsXG4gICAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NuYXBzaG90JywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzJywgKCkgPT4ge1xuICAgICAgdyA9IHdyYXBwZXIoKTtcbiAgICAgIGV4cGVjdCh3KS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGggbGFiZWxzJywgKCkgPT4ge1xuICAgICAgdyA9IHdyYXBwZXJXaXRoTGFiZWxzKCk7XG4gICAgICBleHBlY3QodykudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsb2dpYycsICgpID0+IHtcbiAgICBkZXNjcmliZSgnZHJhZ1BvaW50JywgKCkgPT4ge1xuICAgICAgaXQoJ2NhbGxzIG9uQ2hhbmdlJywgKCkgPT4ge1xuICAgICAgICBvbkNoYW5nZSA9IGplc3QuZm4oKTtcbiAgICAgICAgdyA9IHdyYXBwZXIoeyBwb2ludHM6IFt4eSgxLCAxKV0sIG9uQ2hhbmdlIH0pO1xuICAgICAgICB3Lmluc3RhbmNlKCkuZHJhZ1BvaW50KDAsIHh5KDEsIDEpLCB4eSgyLCAyKSk7XG4gICAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoW3h5KDIsIDIpXSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2NhbGxzIG9uQ2hhbmdlIGtlZXBpbmcgbGFiZWwgcHJvcGVydHkgZnJvbSBwb2ludCcsICgpID0+IHtcbiAgICAgICAgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG4gICAgICAgIHcgPSB3cmFwcGVyV2l0aExhYmVscyhvbkNoYW5nZSk7XG5cbiAgICAgICAgdy5pbnN0YW5jZSgpLmRyYWdQb2ludCgwLCB4eSgwLCAwKSwgeHkoMCwgMSkpO1xuICAgICAgICBleHBlY3Qob25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFt7IHg6IDAsIHk6IDEsIGxhYmVsOiAnQScgfSwgcG9pbnRzWzFdLCBwb2ludHNbMl1dKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2RyYWdMaW5lJywgKCkgPT4ge1xuICAgICAgaXQoJ2NhbGxzIG9uQ2hhbmdlJywgKCkgPT4ge1xuICAgICAgICB3ID0gd3JhcHBlcih7IHBvaW50czogW3h5KDEsIDEsIDApLCB4eSgyLCAyLCAxKV0sIG9uQ2hhbmdlIH0pO1xuICAgICAgICB3Lmluc3RhbmNlKCkuZHJhZ0xpbmUoeyBmcm9tOiB4eSgxLCAxLCAwKSwgdG86IHh5KDIsIDIsIDEpIH0sIHsgZnJvbTogeHkoMiwgMiwgMCksIHRvOiB4eSg0LCA0LCAxKSB9KTtcbiAgICAgICAgZXhwZWN0KG9uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChbeHkoMiwgMiwgMCksIHh5KDQsIDQsIDEpXSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2NhbGxzIG9uQ2hhbmdlIGtlZXBpbmcgbGFiZWwgcHJvcGVydHkgZnJvbSBib3RoIHBvaW50cycsICgpID0+IHtcbiAgICAgICAgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG4gICAgICAgIHcgPSB3cmFwcGVyV2l0aExhYmVscyhvbkNoYW5nZSk7XG5cbiAgICAgICAgdy5pbnN0YW5jZSgpLmRyYWdMaW5lKFxuICAgICAgICAgIHsgZnJvbTogcG9pbnRzWzBdLCB0bzogcG9pbnRzWzFdIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZnJvbTogeHkoMCwgMSwgMCksXG4gICAgICAgICAgICB0bzogeHkoMiwgMywgMSksXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgICAgZXhwZWN0KG9uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChbeHlMYWJlbCgwLCAxLCAwLCAnQScpLCB4eUxhYmVsKDIsIDMsIDEsICdCJyksIHBvaW50c1syXV0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnZHJhZ1BvbHknLCAoKSA9PiB7XG4gICAgICBpdCgnY2FsbHMgb25DaGFuZ2UnLCAoKSA9PiB7XG4gICAgICAgIHcgPSB3cmFwcGVyKHsgb25DaGFuZ2UgfSk7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gW3h5KDEsIDEpXTtcbiAgICAgICAgY29uc3QgbmV4dCA9IFt4eSgyLCAyKV07XG4gICAgICAgIHcuaW5zdGFuY2UoKS5kcmFnUG9seShleGlzdGluZywgbmV4dCk7XG4gICAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoW3h5KDIsIDIpXSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2NhbGxzIG9uQ2hhbmdlIGtlZXBpbmcgbGFiZWwgcHJvcGVydHkgZnJvbSBhbGwgcG9pbnRzJywgKCkgPT4ge1xuICAgICAgICBvbkNoYW5nZSA9IGplc3QuZm4oKTtcbiAgICAgICAgdyA9IHdyYXBwZXJXaXRoTGFiZWxzKG9uQ2hhbmdlKTtcblxuICAgICAgICB3Lmluc3RhbmNlKCkuZHJhZ1BvbHkocG9pbnRzLCBbeHkoMCwgMSwgMCksIHh5KDIsIDMsIDEpLCB4eSgwLCAzLCAyKV0pO1xuICAgICAgICBleHBlY3Qob25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFt4eUxhYmVsKDAsIDEsIDAsICdBJyksIHh5TGFiZWwoMiwgMywgMSwgJ0InKSwgeHlMYWJlbCgwLCAzLCAyLCAnQycpXSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdsYWJlbENoYW5nZScsICgpID0+IHtcbiAgICAgIGl0KCd1cGRhdGVzIFwibGFiZWxcIiBwcm9wZXJ0eSBmb3IgcG9pbnQnLCAoKSA9PiB7XG4gICAgICAgIHcgPSB3cmFwcGVyV2l0aExhYmVscygpO1xuXG4gICAgICAgIHcuaW5zdGFuY2UoKS5sYWJlbENoYW5nZSh7IC4uLnBvaW50c1swXSwgbGFiZWw6ICdMYWJlbCBBJyB9LCAwKTtcbiAgICAgICAgZXhwZWN0KG9uQ2hhbmdlUHJvcHMpLnRvQmVDYWxsZWRXaXRoKFt7IC4uLnBvaW50c1swXSwgbGFiZWw6ICdMYWJlbCBBJyB9LCBwb2ludHNbMV0sIHBvaW50c1syXV0pO1xuXG4gICAgICAgIHcuaW5zdGFuY2UoKS5sYWJlbENoYW5nZSh7IC4uLnBvaW50c1sxXSwgbGFiZWw6ICdMYWJlbCBCJyB9LCAxKTtcbiAgICAgICAgZXhwZWN0KG9uQ2hhbmdlUHJvcHMpLnRvQmVDYWxsZWRXaXRoKFtwb2ludHNbMF0sIHsgLi4ucG9pbnRzWzFdLCBsYWJlbDogJ0xhYmVsIEInIH0sIHBvaW50c1syXV0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdyZW1vdmVzIFwibGFiZWxcIiBwcm9wZXJ0eSBpZiB0aGUgZmllbGQgaXMgZW1wdHknLCAoKSA9PiB7XG4gICAgICAgIHcgPSB3cmFwcGVyV2l0aExhYmVscygpO1xuXG4gICAgICAgIHcuaW5zdGFuY2UoKS5sYWJlbENoYW5nZSh7IC4uLnBvaW50c1swXSwgbGFiZWw6ICcnIH0sIDApO1xuICAgICAgICBleHBlY3Qob25DaGFuZ2VQcm9wcykudG9CZUNhbGxlZFdpdGgoW3h5KDAsIDAsIDApLCBwb2ludHNbMV0sIHBvaW50c1syXV0pO1xuXG4gICAgICAgIHcuaW5zdGFuY2UoKS5sYWJlbENoYW5nZSh7IC4uLnBvaW50c1sxXSwgbGFiZWw6ICcnIH0sIDEpO1xuICAgICAgICBleHBlY3Qob25DaGFuZ2VQcm9wcykudG9CZUNhbGxlZFdpdGgoW3BvaW50c1swXSwgeHkoMiwgMiwgMSksIHBvaW50c1syXV0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjbG9zZScsICgpID0+IHtcbiAgICBpdCgnY2FsbHMgb25DbG9zZVBvbHlnb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCBvbkNsb3NlUG9seWdvbiA9IGplc3QuZm4oKTtcbiAgICAgIHcgPSB3cmFwcGVyKHsgb25DbG9zZVBvbHlnb24sIHBvaW50czogW3h5KDEsIDEpLCB4eSgyLCAyKSwgeHkoMywgMyldIH0pO1xuICAgICAgdy5pbnN0YW5jZSgpLmNsb3NlKCk7XG4gICAgICBleHBlY3Qob25DbG9zZVBvbHlnb24pLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NsaWNrUG9pbnQnLCAoKSA9PiB7XG4gICAgbGV0IG9uQ2xpY2sgPSBqZXN0LmZuKCk7XG4gICAgbGV0IG9uQ2xvc2VQb2x5Z29uID0gamVzdC5mbigpO1xuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgb25DbG9zZVBvbHlnb24ubW9ja0NsZWFyKCk7XG4gICAgICBvbkNsaWNrLm1vY2tDbGVhcigpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgYXNzZXJ0Q2FsbGJhY2sgPSAoaXNUb29sQWN0aXZlLCBjbG9zZWQsIGluZGV4LCBtb2NrKSA9PiB7XG4gICAgICBpdCgnY2FsbHMgb25DbG9zZVBvbHlnb24nLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHcgPSB3cmFwcGVyKHtcbiAgICAgICAgICBwb2ludHM6IFt4eSgxLCAxKSwgeHkoMiwgMiksIHh5KDMsIDMpXSxcbiAgICAgICAgICBvbkNsb3NlUG9seWdvbixcbiAgICAgICAgICBvbkNsaWNrLFxuICAgICAgICAgIGlzVG9vbEFjdGl2ZSxcbiAgICAgICAgICBjbG9zZWQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHcuaW5zdGFuY2UoKS5jbGlja1BvaW50KHh5KDEsIDEsIDApLCBpbmRleCwge30pO1xuICAgICAgICBleHBlY3QobW9jaykudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGFzc2VydENhbGxiYWNrKHRydWUsIGZhbHNlLCAwLCBvbkNsb3NlUG9seWdvbik7XG4gICAgYXNzZXJ0Q2FsbGJhY2sodHJ1ZSwgZmFsc2UsIDEsIG9uQ2xpY2spO1xuICAgIGFzc2VydENhbGxiYWNrKGZhbHNlLCBmYWxzZSwgMCwgb25DbGljayk7XG4gICAgYXNzZXJ0Q2FsbGJhY2sodHJ1ZSwgdHJ1ZSwgMCwgb25DbGljayk7XG5cbiAgICBpdCgnYWRkcyBcImxhYmVsXCIgcHJvcGVydHkgdG8gYSBwb2ludCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG9uQ2hhbmdlUHJvcHMgPSBqZXN0LmZuKCk7XG4gICAgICBjb25zdCB3ID0gd3JhcHBlcldpdGhMYWJlbHMoe1xuICAgICAgICBsYWJlbE1vZGVFbmFibGVkOiB0cnVlLFxuICAgICAgICBvbkNoYW5nZVByb3BzLFxuICAgICAgICBwb2ludHM6IFt4eSgwLCAwLCAwKSwgeHkoMiwgMiwgMSksIHh5KDAsIDIsIDIpXSxcbiAgICAgIH0pO1xuXG4gICAgICB3Lmluc3RhbmNlKCkuY2xpY2tQb2ludCh4eSgwLCAwLCAwKSwgMCwge30pO1xuICAgICAgZXhwZWN0KG9uQ2hhbmdlUHJvcHMpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFt4eUxhYmVsKDAsIDAsIDAsICcnKSwgeHkoMiwgMiwgMSksIHh5KDAsIDIsIDIpXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWRkcyBcImxhYmVsXCIgcHJvcGVydHkgdG8gYSBwb2ludCB3aGVuIGxpbWl0IGxhYmVsaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb25DaGFuZ2VQcm9wcyA9IGplc3QuZm4oKTtcbiAgICAgIGNvbnN0IHcgPSB3cmFwcGVyV2l0aExhYmVscyh7XG4gICAgICAgIGxhYmVsTW9kZUVuYWJsZWQ6IHRydWUsXG4gICAgICAgIG9uQ2hhbmdlUHJvcHMsXG4gICAgICAgIGxpbWl0TGFiZWxpbmc6IHRydWUsXG4gICAgICB9KTtcblxuICAgICAgdy5pbnN0YW5jZSgpLmNsaWNrUG9pbnQoeHkoMCwgMCwgMCksIDAsIHt9KTtcbiAgICAgIGV4cGVjdChvbkNoYW5nZVByb3BzKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnaWYgcG9pbnQgYWxyZWFkeSBoYXMgbGFiZWwsIGtlZXBzIHRoYXQgdmFsdWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvbkNoYW5nZVByb3BzID0gamVzdC5mbigpO1xuICAgICAgY29uc3QgdyA9IHdyYXBwZXJXaXRoTGFiZWxzKHsgbGFiZWxNb2RlRW5hYmxlZDogdHJ1ZSwgb25DaGFuZ2VQcm9wcyB9KTtcblxuICAgICAgdy5pbnN0YW5jZSgpLmNsaWNrUG9pbnQocG9pbnRzWzBdLCAwLCB7fSk7XG4gICAgICBleHBlY3Qob25DaGFuZ2VQcm9wcykudG9IYXZlQmVlbkNhbGxlZFdpdGgocG9pbnRzKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+
3
+ var _index = require("../index");
4
+
5
+ var xy = function xy(x, y) {
6
+ return {
7
+ x: x,
8
+ y: y
9
+ };
10
+ };
11
+
12
+ describe('polygon', function () {
13
+ describe('addPointToArray', function () {
14
+ var assertAddPoint = function assertAddPoint(point, arr, expected) {
15
+ it("returns ".concat(expected, " when adding ").concat(point, " to ").concat(arr), function () {
16
+ var result = (0, _index.addPointToArray)(point, arr);
17
+ expect(result).toEqual(expected);
18
+ });
19
+ };
20
+
21
+ assertAddPoint(xy(0, 0), [], {
22
+ closed: false,
23
+ points: [xy(0, 0)]
24
+ });
25
+ assertAddPoint(xy(0, 0), [xy(0, 0)], {
26
+ closed: false,
27
+ points: [xy(0, 0)]
28
+ });
29
+ assertAddPoint(xy(1, 1), [xy(0, 0)], {
30
+ closed: false,
31
+ points: [xy(0, 0), xy(1, 1)]
32
+ });
33
+ assertAddPoint(xy(1, 1), [xy(0, 0)], {
34
+ closed: false,
35
+ points: [xy(0, 0), xy(1, 1)]
36
+ });
37
+ });
38
+ });
39
+ describe('tool', function () {
40
+ var t;
41
+ beforeEach(function () {
42
+ t = (0, _index.tool)();
43
+ });
44
+ it('creates polygon type', function () {
45
+ expect(t.type).toEqual('polygon');
46
+ });
47
+ describe('complete', function () {
48
+ it('closes polygon', function () {
49
+ expect(t.complete()).toEqual({
50
+ building: false,
51
+ closed: true
52
+ });
53
+ });
54
+ });
55
+ describe('addPoint', function () {
56
+ it('creates new point', function () {
57
+ var mark = t.addPoint({
58
+ x: 0,
59
+ y: 0
60
+ });
61
+ expect(mark).toEqual({
62
+ type: 'polygon',
63
+ points: [{
64
+ x: 0,
65
+ y: 0
66
+ }],
67
+ closed: false,
68
+ building: true
69
+ });
70
+ });
71
+ it('adds the point', function () {
72
+ var mark = t.addPoint({
73
+ x: 0,
74
+ y: 0
75
+ }, {
76
+ points: [{
77
+ x: 1,
78
+ y: 1
79
+ }]
80
+ });
81
+ expect(mark).toEqual({
82
+ building: true,
83
+ closed: false,
84
+ points: [{
85
+ x: 1,
86
+ y: 1
87
+ }, {
88
+ x: 0,
89
+ y: 0
90
+ }]
91
+ });
92
+ });
93
+ });
94
+ });
95
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29scy9wb2x5Z29uL19fdGVzdHNfXy9pbmRleC50ZXN0LmpzIl0sIm5hbWVzIjpbInh5IiwieCIsInkiLCJkZXNjcmliZSIsImFzc2VydEFkZFBvaW50IiwicG9pbnQiLCJhcnIiLCJleHBlY3RlZCIsIml0IiwicmVzdWx0IiwiZXhwZWN0IiwidG9FcXVhbCIsImNsb3NlZCIsInBvaW50cyIsInQiLCJiZWZvcmVFYWNoIiwidHlwZSIsImNvbXBsZXRlIiwiYnVpbGRpbmciLCJtYXJrIiwiYWRkUG9pbnQiXSwibWFwcGluZ3MiOiI7O0FBQUE7O0FBRUEsSUFBTUEsRUFBRSxHQUFHLFNBQUxBLEVBQUssQ0FBQ0MsQ0FBRCxFQUFJQyxDQUFKO0FBQUEsU0FBVztBQUFFRCxJQUFBQSxDQUFDLEVBQURBLENBQUY7QUFBS0MsSUFBQUEsQ0FBQyxFQUFEQTtBQUFMLEdBQVg7QUFBQSxDQUFYOztBQUVBQyxRQUFRLENBQUMsU0FBRCxFQUFZLFlBQU07QUFDeEJBLEVBQUFBLFFBQVEsQ0FBQyxpQkFBRCxFQUFvQixZQUFNO0FBQ2hDLFFBQU1DLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBQ0MsS0FBRCxFQUFRQyxHQUFSLEVBQWFDLFFBQWIsRUFBMEI7QUFDL0NDLE1BQUFBLEVBQUUsbUJBQVlELFFBQVosMEJBQW9DRixLQUFwQyxpQkFBZ0RDLEdBQWhELEdBQXVELFlBQU07QUFDN0QsWUFBTUcsTUFBTSxHQUFHLDRCQUFnQkosS0FBaEIsRUFBdUJDLEdBQXZCLENBQWY7QUFDQUksUUFBQUEsTUFBTSxDQUFDRCxNQUFELENBQU4sQ0FBZUUsT0FBZixDQUF1QkosUUFBdkI7QUFDRCxPQUhDLENBQUY7QUFJRCxLQUxEOztBQU1BSCxJQUFBQSxjQUFjLENBQUNKLEVBQUUsQ0FBQyxDQUFELEVBQUksQ0FBSixDQUFILEVBQVcsRUFBWCxFQUFlO0FBQUVZLE1BQUFBLE1BQU0sRUFBRSxLQUFWO0FBQWlCQyxNQUFBQSxNQUFNLEVBQUUsQ0FB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Q0FBTDtBQUFRQyxRQUFBQSxDQUFDLEVBQUU7QUFBWCxPQUFYLEVBQTJCO0FBQUVXLFFBQUFBLE1BQU0sRUFBRSxDQUFDO0FBQUVaLFVBQUFBLENBQUMsRUFBRSxDQUFMO0FBQVFDLFVBQUFBLENBQUMsRUFBRTtBQUFYLFNBQUQ7QUFBVixPQUEzQixDQUFiO0FBQ0FRLE1BQUFBLE1BQU0sQ0FBQ1MsSUFBRCxDQUFOLENBQWFSLE9BQWIsQ0FBcUI7QUFDbkJPLFFBQUFBLFFBQVEsRUFBRSxJQURTO0FBRW5CTixRQUFBQSxNQUFNLEVBQUUsS0FGVztBQUduQkMsUUFBQUEsTUFBTSxFQUFFLENBQ047QUFBRVosVUFBQUEsQ0FBQyxFQUFFLENBQUw7QUFBUUMsVUFBQUEsQ0FBQyxFQUFFO0FBQVgsU0FETSxFQUVOO0FBQUVELFVBQUFBLENBQUMsRUFBRSxDQUFMO0FBQVFDLFVBQUFBLENBQUMsRUFBRTtBQUFYLFNBRk07QUFIVyxPQUFyQjtBQVFELEtBVkMsQ0FBRjtBQVdELEdBdEJPLENBQVI7QUF1QkQsQ0F2Q08sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFkZFBvaW50VG9BcnJheSwgdG9vbCB9IGZyb20gJy4uL2luZGV4JztcblxuY29uc3QgeHkgPSAoeCwgeSkgPT4gKHsgeCwgeSB9KTtcblxuZGVzY3JpYmUoJ3BvbHlnb24nLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdhZGRQb2ludFRvQXJyYXknLCAoKSA9PiB7XG4gICAgY29uc3QgYXNzZXJ0QWRkUG9pbnQgPSAocG9pbnQsIGFyciwgZXhwZWN0ZWQpID0+IHtcbiAgICAgIGl0KGByZXR1cm5zICR7ZXhwZWN0ZWR9IHdoZW4gYWRkaW5nICR7cG9pbnR9IHRvICR7YXJyfWAsICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYWRkUG9pbnRUb0FycmF5KHBvaW50LCBhcnIpO1xuICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgYXNzZXJ0QWRkUG9pbnQoeHkoMCwgMCksIFtdLCB7IGNsb3NlZDogZmFsc2UsIHBvaW50czogW3h5KDAsIDApXSB9KTtcbiAgICBhc3NlcnRBZGRQb2ludCh4eSgwLCAwKSwgW3h5KDAsIDApXSwgeyBjbG9zZWQ6IGZhbHNlLCBwb2ludHM6IFt4eSgwLCAwKV0gfSk7XG4gICAgYXNzZXJ0QWRkUG9pbnQoeHkoMSwgMSksIFt4eSgwLCAwKV0sIHtcbiAgICAgIGNsb3NlZDogZmFsc2UsXG4gICAgICBwb2ludHM6IFt4eSgwLCAwKSwgeHkoMSwgMSldLFxuICAgIH0pO1xuICAgIGFzc2VydEFkZFBvaW50KHh5KDEsIDEpLCBbeHkoMCwgMCldLCB7XG4gICAgICBjbG9zZWQ6IGZhbHNlLFxuICAgICAgcG9pbnRzOiBbeHkoMCwgMCksIHh5KDEsIDEpXSxcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ3Rvb2wnLCAoKSA9PiB7XG4gIGxldCB0O1xuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICB0ID0gdG9vbCgpO1xuICB9KTtcblxuICBpdCgnY3JlYXRlcyBwb2x5Z29uIHR5cGUnLCAoKSA9PiB7XG4gICAgZXhwZWN0KHQudHlwZSkudG9FcXVhbCgncG9seWdvbicpO1xuICB9KTtcblxuICBkZXNjcmliZSgnY29tcGxldGUnLCAoKSA9PiB7XG4gICAgaXQoJ2Nsb3NlcyBwb2x5Z29uJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHQuY29tcGxldGUoKSkudG9FcXVhbCh7IGJ1aWxkaW5nOiBmYWxzZSwgY2xvc2VkOiB0cnVlIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYWRkUG9pbnQnLCAoKSA9PiB7XG4gICAgaXQoJ2NyZWF0ZXMgbmV3IHBvaW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgbWFyayA9IHQuYWRkUG9pbnQoeyB4OiAwLCB5OiAwIH0pO1xuICAgICAgZXhwZWN0KG1hcmspLnRvRXF1YWwoe1xuICAgICAgICB0eXBlOiAncG9seWdvbicsXG4gICAgICAgIHBvaW50czogW3sgeDogMCwgeTogMCB9XSxcbiAgICAgICAgY2xvc2VkOiBmYWxzZSxcbiAgICAgICAgYnVpbGRpbmc6IHRydWUsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdhZGRzIHRoZSBwb2ludCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG1hcmsgPSB0LmFkZFBvaW50KHsgeDogMCwgeTogMCB9LCB7IHBvaW50czogW3sgeDogMSwgeTogMSB9XSB9KTtcbiAgICAgIGV4cGVjdChtYXJrKS50b0VxdWFsKHtcbiAgICAgICAgYnVpbGRpbmc6IHRydWUsXG4gICAgICAgIGNsb3NlZDogZmFsc2UsXG4gICAgICAgIHBvaW50czogW1xuICAgICAgICAgIHsgeDogMSwgeTogMSB9LFxuICAgICAgICAgIHsgeDogMCwgeTogMCB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
+
7
+ var _enzyme = require("enzyme");
8
+
9
+ var _react = _interopRequireDefault(require("react"));
10
+
11
+ var _line = require("../line");
12
+
13
+ var _utils = require("../../../__tests__/utils");
14
+
15
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
16
+
17
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
18
+
19
+ describe('Line', function () {
20
+ var w;
21
+ var onChange = jest.fn();
22
+
23
+ var wrapper = function wrapper(extras) {
24
+ var defaults = {
25
+ classes: {},
26
+ className: 'className',
27
+ graphProps: (0, _utils.graphProps)()
28
+ };
29
+
30
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
31
+
32
+ return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_line.Line, props));
33
+ };
34
+
35
+ describe('snapshot', function () {
36
+ it('renders', function () {
37
+ w = wrapper();
38
+ expect(w).toMatchSnapshot();
39
+ });
40
+ });
41
+ describe('logic', function () {});
42
+ });
43
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29scy9wb2x5Z29uL19fdGVzdHNfXy9saW5lLnRlc3QuanN4Il0sIm5hbWVzIjpbImRlc2NyaWJlIiwidyIsIm9uQ2hhbmdlIiwiamVzdCIsImZuIiwid3JhcHBlciIsImV4dHJhcyIsImRlZmF1bHRzIiwiY2xhc3NlcyIsImNsYXNzTmFtZSIsImdyYXBoUHJvcHMiLCJwcm9wcyIsIml0IiwiZXhwZWN0IiwidG9NYXRjaFNuYXBzaG90Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUFBLFFBQVEsQ0FBQyxNQUFELEVBQVMsWUFBTTtBQUNyQixNQUFJQyxDQUFKO0FBQ0EsTUFBSUMsUUFBUSxHQUFHQyxJQUFJLENBQUNDLEVBQUwsRUFBZjs7QUFDQSxNQUFNQyxPQUFPLEdBQUcsU0FBVkEsT0FBVSxDQUFDQyxNQUFELEVBQVk7QUFDMUIsUUFBTUMsUUFBUSxHQUFHO0FBQ2ZDLE1BQUFBLE9BQU8sRUFBRSxFQURNO0FBRWZDLE1BQUFBLFNBQVMsRUFBRSxXQUZJO0FBR2ZDLE1BQUFBLFVBQVUsRUFBRTtBQUhHLEtBQWpCOztBQUtBLFFBQU1DLEtBQUssbUNBQVFKLFFBQVIsR0FBcUJELE1BQXJCLENBQVg7O0FBQ0EsV0FBTyxtQ0FBUSxnQ0FBQyxVQUFELEVBQVVLLEtBQVYsQ0FBUixDQUFQO0FBQ0QsR0FSRDs7QUFTQVgsRUFBQUEsUUFBUSxDQUFDLFVBQUQsRUFBYSxZQUFNO0FBQ3pCWSxJQUFBQSxFQUFFLENBQUMsU0FBRCxFQUFZLFlBQU07QUFDbEJYLE1BQUFBLENBQUMsR0FBR0ksT0FBTyxFQUFYO0FBQ0FRLE1BQUFBLE1BQU0sQ0FBQ1osQ0FBRCxDQUFOLENBQVVhLGVBQVY7QUFDRCxLQUhDLENBQUY7QUFJRCxHQUxPLENBQVI7QUFNQWQsRUFBQUEsUUFBUSxDQUFDLE9BQUQsRUFBVSxZQUFNLENBQUUsQ0FBbEIsQ0FBUjtBQUNELENBbkJPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFsbG93IH0gZnJvbSAnZW56eW1lJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBMaW5lIH0gZnJvbSAnLi4vbGluZSc7XG5pbXBvcnQgeyBncmFwaFByb3BzIH0gZnJvbSAnLi4vLi4vLi4vX190ZXN0c19fL3V0aWxzJztcblxuZGVzY3JpYmUoJ0xpbmUnLCAoKSA9PiB7XG4gIGxldCB3O1xuICBsZXQgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG4gIGNvbnN0IHdyYXBwZXIgPSAoZXh0cmFzKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBjbGFzc2VzOiB7fSxcbiAgICAgIGNsYXNzTmFtZTogJ2NsYXNzTmFtZScsXG4gICAgICBncmFwaFByb3BzOiBncmFwaFByb3BzKCksXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMsIC4uLmV4dHJhcyB9O1xuICAgIHJldHVybiBzaGFsbG93KDxMaW5lIHsuLi5wcm9wc30gLz4pO1xuICB9O1xuICBkZXNjcmliZSgnc25hcHNob3QnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMnLCAoKSA9PiB7XG4gICAgICB3ID0gd3JhcHBlcigpO1xuICAgICAgZXhwZWN0KHcpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuICB9KTtcbiAgZGVzY3JpYmUoJ2xvZ2ljJywgKCkgPT4ge30pO1xufSk7XG4iXX0=
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
+
7
+ var _enzyme = require("enzyme");
8
+
9
+ var _react = _interopRequireDefault(require("react"));
10
+
11
+ var _polygon = require("../polygon");
12
+
13
+ var _utils = require("../../../__tests__/utils");
14
+
15
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
16
+
17
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
18
+
19
+ var xy = function xy(x, y) {
20
+ return {
21
+ x: x,
22
+ y: y
23
+ };
24
+ };
25
+
26
+ describe('Polygon', function () {
27
+ var w;
28
+
29
+ var wrapper = function wrapper(extras) {
30
+ var defaults = {
31
+ classes: {},
32
+ className: 'className',
33
+ graphProps: (0, _utils.graphProps)(),
34
+ closed: false
35
+ };
36
+
37
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
38
+
39
+ return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_polygon.Polygon, props));
40
+ };
41
+
42
+ describe('snapshot', function () {
43
+ it('renders', function () {
44
+ w = wrapper({
45
+ points: [{
46
+ x: 1,
47
+ y: 1
48
+ }]
49
+ });
50
+ expect(w).toMatchSnapshot();
51
+ });
52
+ });
53
+ });
54
+ describe('getPointString', function () {
55
+ var assertString = function assertString(arr, expected) {
56
+ it('creates: ', function () {
57
+ var result = (0, _polygon.getPointString)(arr, {
58
+ x: jest.fn(function (n) {
59
+ return n;
60
+ }),
61
+ y: jest.fn(function (n) {
62
+ return n;
63
+ })
64
+ });
65
+ expect(result).toEqual(expected);
66
+ });
67
+ };
68
+
69
+ assertString([xy(1, 1)], '1,1');
70
+ assertString([xy(1, 1), xy(2, 1)], '1,1 2,1');
71
+ assertString([xy(1, 1), xy(2, 1), xy(4, 4)], '1,1 2,1 4,4');
72
+ });
73
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29scy9wb2x5Z29uL19fdGVzdHNfXy9wb2x5Z29uLnRlc3QuanN4Il0sIm5hbWVzIjpbInh5IiwieCIsInkiLCJkZXNjcmliZSIsInciLCJ3cmFwcGVyIiwiZXh0cmFzIiwiZGVmYXVsdHMiLCJjbGFzc2VzIiwiY2xhc3NOYW1lIiwiZ3JhcGhQcm9wcyIsImNsb3NlZCIsInByb3BzIiwiaXQiLCJwb2ludHMiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJhc3NlcnRTdHJpbmciLCJhcnIiLCJleHBlY3RlZCIsInJlc3VsdCIsImplc3QiLCJmbiIsIm4iLCJ0b0VxdWFsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUEsSUFBTUEsRUFBRSxHQUFHLFNBQUxBLEVBQUssQ0FBQ0MsQ0FBRCxFQUFJQyxDQUFKO0FBQUEsU0FBVztBQUFFRCxJQUFBQSxDQUFDLEVBQURBLENBQUY7QUFBS0MsSUFBQUEsQ0FBQyxFQUFEQTtBQUFMLEdBQVg7QUFBQSxDQUFYOztBQUVBQyxRQUFRLENBQUMsU0FBRCxFQUFZLFlBQU07QUFDeEIsTUFBSUMsQ0FBSjs7QUFDQSxNQUFNQyxPQUFPLEdBQUcsU0FBVkEsT0FBVSxDQUFDQyxNQUFELEVBQVk7QUFDMUIsUUFBTUMsUUFBUSxHQUFHO0FBQ2ZDLE1BQUFBLE9BQU8sRUFBRSxFQURNO0FBRWZDLE1BQUFBLFNBQVMsRUFBRSxXQUZJO0FBR2ZDLE1BQUFBLFVBQVUsRUFBRSx3QkFIRztBQUlmQyxNQUFBQSxNQUFNLEVBQUU7QUFKTyxLQUFqQjs7QUFNQSxRQUFNQyxLQUFLLG1DQUFRTCxRQUFSLEdBQXFCRCxNQUFyQixDQUFYOztBQUNBLFdBQU8sbUNBQVEsZ0NBQUMsZ0JBQUQsRUFBYU0sS0FBYixDQUFSLENBQVA7QUFDRCxHQVREOztBQVdBVCxFQUFBQSxRQUFRLENBQUMsVUFBRCxFQUFhLFlBQU07QUFDekJVLElBQUFBLEVBQUUsQ0FBQyxTQUFELEVBQVksWUFBTTtBQUNsQlQsTUFBQUEsQ0FBQyxHQUFHQyxPQUFPLENBQUM7QUFBRVMsUUFBQUEsTUFBTSxFQUFFLENBQUM7QUFBRWIsVUFBQUEsQ0FBQyxFQUFFLENBQUw7QUFBUUMsVUFBQUEsQ0FBQyxFQUFFO0FBQVgsU0FBRDtBQUFWLE9BQUQsQ0FBWDtBQUNBYSxNQUFBQSxNQUFNLENBQUNYLENBQUQsQ0FBTixDQUFVWSxlQUFWO0FBQ0QsS0FIQyxDQUFGO0FBSUQsR0FMTyxDQUFSO0FBTUQsQ0FuQk8sQ0FBUjtBQXFCQWIsUUFBUSxDQUFDLGdCQUFELEVBQW1CLFlBQU07QUFDL0IsTUFBTWMsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBQ0MsR0FBRCxFQUFNQyxRQUFOLEVBQW1CO0FBQ3RDTixJQUFBQSxFQUFFLENBQUMsV0FBRCxFQUFjLFlBQU07QUFDcEIsVUFBTU8sTUFBTSxHQUFHLDZCQUFlRixHQUFmLEVBQW9CO0FBQ2pDakIsUUFBQUEsQ0FBQyxFQUFFb0IsSUFBSSxDQUFDQyxFQUFMLENBQVEsVUFBQ0MsQ0FBRDtBQUFBLGlCQUFPQSxDQUFQO0FBQUEsU0FBUixDQUQ4QjtBQUVqQ3JCLFFBQUFBLENBQUMsRUFBRW1CLElBQUksQ0FBQ0MsRUFBTCxDQUFRLFVBQUNDLENBQUQ7QUFBQSxpQkFBT0EsQ0FBUDtBQUFBLFNBQVI7QUFGOEIsT0FBcEIsQ0FBZjtBQUtBUixNQUFBQSxNQUFNLENBQUNLLE1BQUQsQ0FBTixDQUFlSSxPQUFmLENBQXVCTCxRQUF2QjtBQUNELEtBUEMsQ0FBRjtBQVFELEdBVEQ7O0FBV0FGLEVBQUFBLFlBQVksQ0FBQyxDQUFDakIsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLENBQUgsQ0FBRCxFQUFhLEtBQWIsQ0FBWjtBQUNBaUIsRUFBQUEsWUFBWSxDQUFDLENBQUNqQixFQUFFLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FBSCxFQUFXQSxFQUFFLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FBYixDQUFELEVBQXVCLFNBQXZCLENBQVo7QUFDQWlCLEVBQUFBLFlBQVksQ0FBQyxDQUFDakIsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLENBQUgsRUFBV0EsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKLENBQWIsRUFBcUJBLEVBQUUsQ0FBQyxDQUFELEVBQUksQ0FBSixDQUF2QixDQUFELEVBQWlDLGFBQWpDLENBQVo7QUFDRCxDQWZPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFsbG93IH0gZnJvbSAnZW56eW1lJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBQb2x5Z29uLCBnZXRQb2ludFN0cmluZyB9IGZyb20gJy4uL3BvbHlnb24nO1xuaW1wb3J0IHsgZ3JhcGhQcm9wcyB9IGZyb20gJy4uLy4uLy4uL19fdGVzdHNfXy91dGlscyc7XG5cbmNvbnN0IHh5ID0gKHgsIHkpID0+ICh7IHgsIHkgfSk7XG5cbmRlc2NyaWJlKCdQb2x5Z29uJywgKCkgPT4ge1xuICBsZXQgdztcbiAgY29uc3Qgd3JhcHBlciA9IChleHRyYXMpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIGNsYXNzZXM6IHt9LFxuICAgICAgY2xhc3NOYW1lOiAnY2xhc3NOYW1lJyxcbiAgICAgIGdyYXBoUHJvcHM6IGdyYXBoUHJvcHMoKSxcbiAgICAgIGNsb3NlZDogZmFsc2UsXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMsIC4uLmV4dHJhcyB9O1xuICAgIHJldHVybiBzaGFsbG93KDxQb2x5Z29uIHsuLi5wcm9wc30gLz4pO1xuICB9O1xuXG4gIGRlc2NyaWJlKCdzbmFwc2hvdCcsICgpID0+IHtcbiAgICBpdCgncmVuZGVycycsICgpID0+IHtcbiAgICAgIHcgPSB3cmFwcGVyKHsgcG9pbnRzOiBbeyB4OiAxLCB5OiAxIH1dIH0pO1xuICAgICAgZXhwZWN0KHcpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnZ2V0UG9pbnRTdHJpbmcnLCAoKSA9PiB7XG4gIGNvbnN0IGFzc2VydFN0cmluZyA9IChhcnIsIGV4cGVjdGVkKSA9PiB7XG4gICAgaXQoJ2NyZWF0ZXM6ICcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFBvaW50U3RyaW5nKGFyciwge1xuICAgICAgICB4OiBqZXN0LmZuKChuKSA9PiBuKSxcbiAgICAgICAgeTogamVzdC5mbigobikgPT4gbiksXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZCk7XG4gICAgfSk7XG4gIH07XG5cbiAgYXNzZXJ0U3RyaW5nKFt4eSgxLCAxKV0sICcxLDEnKTtcbiAgYXNzZXJ0U3RyaW5nKFt4eSgxLCAxKSwgeHkoMiwgMSldLCAnMSwxIDIsMScpO1xuICBhc3NlcnRTdHJpbmcoW3h5KDEsIDEpLCB4eSgyLCAxKSwgeHkoNCwgNCldLCAnMSwxIDIsMSA0LDQnKTtcbn0pO1xuIl19