@pie-lib/graphing 2.48.0-mui-update.0 → 3.1.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/CHANGELOG.md +8 -116
  2. package/lib/__tests__/graph-with-controls.test.js +226 -0
  3. package/lib/__tests__/graph.test.js +187 -0
  4. package/lib/__tests__/grid.test.js +29 -0
  5. package/lib/__tests__/labels.test.js +61 -0
  6. package/lib/__tests__/mark-label.test.js +133 -0
  7. package/lib/__tests__/toggle-bar.test.js +150 -0
  8. package/lib/__tests__/tool-menu.test.js +101 -0
  9. package/lib/__tests__/undo-redo.test.js +31 -0
  10. package/lib/__tests__/use-debounce.test.js +24 -0
  11. package/lib/__tests__/utils.js +70 -0
  12. package/lib/__tests__/utils.test.js +123 -0
  13. package/lib/axis/__tests__/arrow.test.js +60 -0
  14. package/lib/axis/__tests__/axes.test.js +195 -0
  15. package/lib/axis/arrow.js +1 -1
  16. package/lib/axis/axes.js +1 -1
  17. package/lib/axis/index.js +1 -1
  18. package/lib/bg.js +1 -1
  19. package/lib/container/actions.js +1 -1
  20. package/lib/container/index.js +1 -1
  21. package/lib/container/marks.js +1 -1
  22. package/lib/container/middleware.js +1 -1
  23. package/lib/container/reducer.js +1 -1
  24. package/lib/coordinates-label.js +3 -1
  25. package/lib/coordinates-label.js.map +1 -1
  26. package/lib/graph-with-controls.js +1 -1
  27. package/lib/graph.js +1 -1
  28. package/lib/grid-setup.js +33 -39
  29. package/lib/grid-setup.js.map +1 -1
  30. package/lib/grid.js +1 -1
  31. package/lib/index.js +1 -1
  32. package/lib/key-legend.js +7 -8
  33. package/lib/key-legend.js.map +1 -1
  34. package/lib/label-svg-icon.js +1 -1
  35. package/lib/labels.js +7 -5
  36. package/lib/labels.js.map +1 -1
  37. package/lib/mark-label.js +17 -10
  38. package/lib/mark-label.js.map +1 -1
  39. package/lib/toggle-bar.js +12 -12
  40. package/lib/toggle-bar.js.map +1 -1
  41. package/lib/tool-menu.js +2 -4
  42. package/lib/tool-menu.js.map +1 -1
  43. package/lib/tools/absolute/__tests__/component.test.js +67 -0
  44. package/lib/tools/absolute/component.js +1 -1
  45. package/lib/tools/absolute/index.js +1 -1
  46. package/lib/tools/circle/__tests__/bg-circle.test.js +33 -0
  47. package/lib/tools/circle/__tests__/component.test.js +68 -0
  48. package/lib/tools/circle/bg-circle.js +1 -1
  49. package/lib/tools/circle/component.js +2 -3
  50. package/lib/tools/circle/component.js.map +1 -1
  51. package/lib/tools/circle/index.js +1 -1
  52. package/lib/tools/exponential/__tests__/component.test.js +66 -0
  53. package/lib/tools/exponential/component.js +1 -1
  54. package/lib/tools/exponential/index.js +1 -1
  55. package/lib/tools/index.js +1 -1
  56. package/lib/tools/line/__tests__/component.test.js +45 -0
  57. package/lib/tools/line/component.js +1 -1
  58. package/lib/tools/line/index.js +1 -1
  59. package/lib/tools/parabola/__tests__/component.test.js +66 -0
  60. package/lib/tools/parabola/component.js +1 -1
  61. package/lib/tools/parabola/index.js +1 -1
  62. package/lib/tools/point/__tests__/component.test.js +50 -0
  63. package/lib/tools/point/component.js +2 -2
  64. package/lib/tools/point/component.js.map +1 -1
  65. package/lib/tools/point/index.js +1 -1
  66. package/lib/tools/polygon/__tests__/component.test.js +85 -0
  67. package/lib/tools/polygon/__tests__/index.test.js +92 -0
  68. package/lib/tools/polygon/__tests__/line.test.js +29 -0
  69. package/lib/tools/polygon/__tests__/polygon.test.js +59 -0
  70. package/lib/tools/polygon/component.js +3 -3
  71. package/lib/tools/polygon/component.js.map +1 -1
  72. package/lib/tools/polygon/index.js +1 -1
  73. package/lib/tools/polygon/line.js +3 -3
  74. package/lib/tools/polygon/line.js.map +1 -1
  75. package/lib/tools/polygon/polygon.js +1 -1
  76. package/lib/tools/ray/__tests__/component.test.js +35 -0
  77. package/lib/tools/ray/component.js +1 -1
  78. package/lib/tools/ray/index.js +1 -1
  79. package/lib/tools/segment/__tests__/component.test.js +35 -0
  80. package/lib/tools/segment/component.js +1 -1
  81. package/lib/tools/segment/index.js +1 -1
  82. package/lib/tools/shared/__tests__/arrow-head.test.js +45 -0
  83. package/lib/tools/shared/arrow-head.js +1 -1
  84. package/lib/tools/shared/icons/CorrectSVG.js +10 -1
  85. package/lib/tools/shared/icons/CorrectSVG.js.map +1 -1
  86. package/lib/tools/shared/icons/IncorrectSVG.js +10 -1
  87. package/lib/tools/shared/icons/IncorrectSVG.js.map +1 -1
  88. package/lib/tools/shared/icons/MissingSVG.js +10 -1
  89. package/lib/tools/shared/icons/MissingSVG.js.map +1 -1
  90. package/lib/tools/shared/line/__tests__/index.test.js +124 -0
  91. package/lib/tools/shared/line/__tests__/line-path.test.js +62 -0
  92. package/lib/tools/shared/line/__tests__/with-root-edge.test.js +91 -0
  93. package/lib/tools/shared/line/index.js +15 -7
  94. package/lib/tools/shared/line/index.js.map +1 -1
  95. package/lib/tools/shared/line/line-path.js +2 -3
  96. package/lib/tools/shared/line/line-path.js.map +1 -1
  97. package/lib/tools/shared/line/with-root-edge.js +1 -1
  98. package/lib/tools/shared/point/__tests__/arrow-point.test.js +127 -0
  99. package/lib/tools/shared/point/__tests__/base-point.test.js +122 -0
  100. package/lib/tools/shared/point/arrow-point.js +2 -4
  101. package/lib/tools/shared/point/arrow-point.js.map +1 -1
  102. package/lib/tools/shared/point/arrow.js +2 -3
  103. package/lib/tools/shared/point/arrow.js.map +1 -1
  104. package/lib/tools/shared/point/base-point.js +1 -1
  105. package/lib/tools/shared/point/index.js +1 -1
  106. package/lib/tools/shared/styles.js +1 -1
  107. package/lib/tools/shared/types.js +1 -1
  108. package/lib/tools/sine/__tests__/component.test.js +72 -0
  109. package/lib/tools/sine/component.js +1 -1
  110. package/lib/tools/sine/index.js +1 -1
  111. package/lib/tools/vector/__tests__/component.test.js +32 -0
  112. package/lib/tools/vector/component.js +1 -1
  113. package/lib/tools/vector/index.js +1 -1
  114. package/lib/undo-redo.js +1 -1
  115. package/lib/use-debounce.js +1 -1
  116. package/lib/utils.js +1 -1
  117. package/package.json +8 -8
  118. package/src/__tests__/graph-with-controls.test.jsx +28 -11
  119. package/src/__tests__/graph.test.jsx +104 -168
  120. package/src/__tests__/grid.test.jsx +8 -6
  121. package/src/__tests__/labels.test.jsx +25 -8
  122. package/src/__tests__/mark-label.test.jsx +12 -17
  123. package/src/__tests__/toggle-bar.test.jsx +92 -17
  124. package/src/__tests__/tool-menu.test.jsx +61 -12
  125. package/src/__tests__/undo-redo.test.jsx +7 -8
  126. package/src/__tests__/utils.js +3 -0
  127. package/src/axis/__tests__/arrow.test.jsx +16 -17
  128. package/src/axis/__tests__/axes.test.jsx +118 -122
  129. package/src/coordinates-label.jsx +1 -0
  130. package/src/grid-setup.jsx +34 -40
  131. package/src/key-legend.jsx +1 -1
  132. package/src/labels.jsx +3 -1
  133. package/src/mark-label.jsx +10 -1
  134. package/src/toggle-bar.jsx +2 -1
  135. package/src/tool-menu.jsx +1 -1
  136. package/src/tools/circle/__tests__/bg-circle.test.jsx +7 -9
  137. package/src/tools/circle/__tests__/component.test.jsx +17 -189
  138. package/src/tools/circle/component.jsx +1 -1
  139. package/src/tools/line/__tests__/component.test.jsx +7 -7
  140. package/src/tools/point/__tests__/component.test.jsx +18 -43
  141. package/src/tools/point/component.jsx +1 -1
  142. package/src/tools/polygon/__tests__/component.test.jsx +18 -162
  143. package/src/tools/polygon/__tests__/line.test.jsx +7 -10
  144. package/src/tools/polygon/__tests__/polygon.test.jsx +7 -8
  145. package/src/tools/polygon/component.jsx +2 -2
  146. package/src/tools/polygon/line.jsx +3 -2
  147. package/src/tools/ray/__tests__/component.test.jsx +7 -8
  148. package/src/tools/segment/__tests__/component.test.jsx +7 -8
  149. package/src/tools/shared/__tests__/arrow-head.test.jsx +14 -17
  150. package/src/tools/shared/icons/CorrectSVG.jsx +10 -0
  151. package/src/tools/shared/icons/IncorrectSVG.jsx +10 -0
  152. package/src/tools/shared/icons/MissingSVG.jsx +10 -0
  153. package/src/tools/shared/line/__tests__/index.test.jsx +19 -165
  154. package/src/tools/shared/line/__tests__/line-path.test.jsx +8 -8
  155. package/src/tools/shared/line/__tests__/with-root-edge.test.jsx +22 -22
  156. package/src/tools/shared/line/index.jsx +13 -5
  157. package/src/tools/shared/line/line-path.jsx +1 -1
  158. package/src/tools/shared/point/__tests__/arrow-point.test.jsx +15 -11
  159. package/src/tools/shared/point/__tests__/base-point.test.jsx +14 -11
  160. package/src/tools/shared/point/arrow-point.jsx +1 -1
  161. package/src/tools/shared/point/arrow.jsx +1 -1
  162. package/src/tools/vector/__tests__/component.test.jsx +7 -8
  163. package/src/__tests__/__snapshots__/graph-with-controls.test.jsx.snap +0 -237
  164. package/src/__tests__/__snapshots__/graph.test.jsx.snap +0 -211
  165. package/src/__tests__/__snapshots__/grid.test.jsx.snap +0 -54
  166. package/src/__tests__/__snapshots__/labels.test.jsx.snap +0 -30
  167. package/src/__tests__/__snapshots__/mark-label.test.jsx.snap +0 -45
  168. package/src/__tests__/__snapshots__/toggle-bar.test.jsx.snap +0 -7
  169. package/src/__tests__/__snapshots__/tool-menu.test.jsx.snap +0 -13
  170. package/src/__tests__/__snapshots__/undo-redo.test.jsx.snap +0 -14
  171. package/src/axis/__tests__/__snapshots__/arrow.test.jsx.snap +0 -33
  172. package/src/axis/__tests__/__snapshots__/axes.test.jsx.snap +0 -122
  173. package/src/tools/circle/__tests__/__snapshots__/bg-circle.test.jsx.snap +0 -46
  174. package/src/tools/circle/__tests__/__snapshots__/component.test.jsx.snap +0 -293
  175. package/src/tools/line/__tests__/__snapshots__/component.test.jsx.snap +0 -20
  176. package/src/tools/point/__tests__/__snapshots__/component.test.jsx.snap +0 -40
  177. package/src/tools/polygon/__tests__/__snapshots__/component.test.jsx.snap +0 -415
  178. package/src/tools/polygon/__tests__/__snapshots__/line.test.jsx.snap +0 -45
  179. package/src/tools/polygon/__tests__/__snapshots__/polygon.test.jsx.snap +0 -52
  180. package/src/tools/ray/__tests__/__snapshots__/component.test.jsx.snap +0 -23
  181. package/src/tools/segment/__tests__/__snapshots__/component.test.jsx.snap +0 -14
  182. package/src/tools/shared/__tests__/__snapshots__/arrow-head.test.jsx.snap +0 -27
  183. package/src/tools/shared/line/__tests__/__snapshots__/index.test.jsx.snap +0 -360
  184. package/src/tools/shared/line/__tests__/__snapshots__/line-path.test.jsx.snap +0 -58
  185. package/src/tools/shared/line/__tests__/__snapshots__/with-root-edge.test.jsx.snap +0 -63
  186. package/src/tools/shared/point/__tests__/__snapshots__/arrow-point.test.jsx.snap +0 -56
  187. package/src/tools/shared/point/__tests__/__snapshots__/base-point.test.jsx.snap +0 -44
  188. package/src/tools/vector/__tests__/__snapshots__/component.test.jsx.snap +0 -12
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
+ var _testUtils = require("@pie-lib/test-utils");
8
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _toggleBar = require("../toggle-bar");
11
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
+ // Mock DragProvider to avoid @dnd-kit React version conflicts
14
+ jest.mock('@pie-lib/drag', function () {
15
+ return {
16
+ DragProvider: function DragProvider(_ref) {
17
+ var children = _ref.children;
18
+ return /*#__PURE__*/_react["default"].createElement("div", {
19
+ "data-testid": "drag-provider"
20
+ }, children);
21
+ }
22
+ };
23
+ });
24
+
25
+ // Mock Translator to return the key as-is for testing
26
+ jest.mock('@pie-lib/translator', function () {
27
+ return {
28
+ translator: {
29
+ t: function t(key) {
30
+ // Extract tool name from key like "graphing.point" -> "point"
31
+ var parts = key.split('.');
32
+ return parts[parts.length - 1];
33
+ }
34
+ }
35
+ };
36
+ });
37
+ describe('ToggleBar', function () {
38
+ var onChange = jest.fn();
39
+ var onChangeToolsOrder = jest.fn();
40
+ beforeEach(function () {
41
+ onChange.mockClear();
42
+ onChangeToolsOrder.mockClear();
43
+ });
44
+ var renderComponent = function renderComponent(extras) {
45
+ var defaults = {
46
+ className: 'className',
47
+ onChange: onChange,
48
+ onChangeToolsOrder: onChangeToolsOrder,
49
+ options: ['point', 'line'],
50
+ language: 'en'
51
+ };
52
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
53
+ return (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_toggleBar.ToggleBar, props));
54
+ };
55
+ describe('rendering', function () {
56
+ it('renders without crashing', function () {
57
+ var _renderComponent = renderComponent(),
58
+ container = _renderComponent.container;
59
+ expect(container.firstChild).toBeInTheDocument();
60
+ });
61
+ it('renders tool buttons for valid tools', function () {
62
+ renderComponent({
63
+ options: ['point', 'line', 'circle']
64
+ });
65
+ expect(_testUtils.screen.getByText(/point/i)).toBeInTheDocument();
66
+ expect(_testUtils.screen.getByText(/line/i)).toBeInTheDocument();
67
+ expect(_testUtils.screen.getByText(/circle/i)).toBeInTheDocument();
68
+ });
69
+ it('does not render invalid tool options', function () {
70
+ renderComponent({
71
+ options: ['point', 'invalid-tool', 'line']
72
+ });
73
+ expect(_testUtils.screen.getByText(/point/i)).toBeInTheDocument();
74
+ expect(_testUtils.screen.getByText(/line/i)).toBeInTheDocument();
75
+ expect(_testUtils.screen.queryByText(/invalid-tool/i)).not.toBeInTheDocument();
76
+ });
77
+ it('highlights selected tool', function () {
78
+ var _renderComponent2 = renderComponent({
79
+ selectedToolType: 'line'
80
+ }),
81
+ container = _renderComponent2.container;
82
+ var selectedButton = _testUtils.screen.getByText(/line/i).closest('button');
83
+ expect(selectedButton).toHaveAttribute('value', 'line');
84
+ });
85
+ });
86
+ describe('interactions', function () {
87
+ it('calls onChange when tool button is clicked', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
88
+ var user, pointButton;
89
+ return _regenerator["default"].wrap(function (_context) {
90
+ while (1) switch (_context.prev = _context.next) {
91
+ case 0:
92
+ user = _userEvent["default"].setup();
93
+ renderComponent({
94
+ options: ['point', 'line']
95
+ });
96
+ pointButton = _testUtils.screen.getByText(/point/i).closest('button');
97
+ _context.next = 1;
98
+ return user.click(pointButton);
99
+ case 1:
100
+ expect(onChange).toHaveBeenCalledWith('point');
101
+ case 2:
102
+ case "end":
103
+ return _context.stop();
104
+ }
105
+ }, _callee);
106
+ })));
107
+ it('calls onChange with selected tool type', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
108
+ var user, lineButton;
109
+ return _regenerator["default"].wrap(function (_context2) {
110
+ while (1) switch (_context2.prev = _context2.next) {
111
+ case 0:
112
+ user = _userEvent["default"].setup();
113
+ renderComponent({
114
+ options: ['point', 'line'],
115
+ selectedToolType: 'point'
116
+ });
117
+ lineButton = _testUtils.screen.getByText(/line/i).closest('button');
118
+ _context2.next = 1;
119
+ return user.click(lineButton);
120
+ case 1:
121
+ expect(onChange).toHaveBeenCalledWith('line');
122
+ case 2:
123
+ case "end":
124
+ return _context2.stop();
125
+ }
126
+ }, _callee2);
127
+ })));
128
+ it('disables buttons when disabled prop is true', function () {
129
+ renderComponent({
130
+ disabled: true,
131
+ options: ['point', 'line']
132
+ });
133
+ var pointButton = _testUtils.screen.getByText(/point/i).closest('button');
134
+ var lineButton = _testUtils.screen.getByText(/line/i).closest('button');
135
+ expect(pointButton).toBeDisabled();
136
+ expect(lineButton).toBeDisabled();
137
+ });
138
+ it('does not call onChange when disabled', function () {
139
+ renderComponent({
140
+ disabled: true,
141
+ options: ['point']
142
+ });
143
+ var pointButton = _testUtils.screen.getByText(/point/i).closest('button');
144
+ expect(pointButton).toBeDisabled();
145
+ // Note: Cannot test click on disabled button with pointer-events: none
146
+ // The disabled state is verified above
147
+ });
148
+ });
149
+ });
150
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGVzdFV0aWxzIiwicmVxdWlyZSIsIl91c2VyRXZlbnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JlYWN0IiwiX3RvZ2dsZUJhciIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiamVzdCIsIm1vY2siLCJEcmFnUHJvdmlkZXIiLCJfcmVmIiwiY2hpbGRyZW4iLCJjcmVhdGVFbGVtZW50IiwidHJhbnNsYXRvciIsImtleSIsInBhcnRzIiwic3BsaXQiLCJkZXNjcmliZSIsIm9uQ2hhbmdlIiwiZm4iLCJvbkNoYW5nZVRvb2xzT3JkZXIiLCJiZWZvcmVFYWNoIiwibW9ja0NsZWFyIiwicmVuZGVyQ29tcG9uZW50IiwiZXh0cmFzIiwiZGVmYXVsdHMiLCJjbGFzc05hbWUiLCJvcHRpb25zIiwibGFuZ3VhZ2UiLCJwcm9wcyIsInJlbmRlciIsIlRvZ2dsZUJhciIsIml0IiwiX3JlbmRlckNvbXBvbmVudCIsImNvbnRhaW5lciIsImV4cGVjdCIsImZpcnN0Q2hpbGQiLCJ0b0JlSW5UaGVEb2N1bWVudCIsInNjcmVlbiIsImdldEJ5VGV4dCIsInF1ZXJ5QnlUZXh0Iiwibm90IiwiX3JlbmRlckNvbXBvbmVudDIiLCJzZWxlY3RlZFRvb2xUeXBlIiwic2VsZWN0ZWRCdXR0b24iLCJjbG9zZXN0IiwidG9IYXZlQXR0cmlidXRlIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJ1c2VyIiwicG9pbnRCdXR0b24iLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInVzZXJFdmVudCIsInNldHVwIiwiY2xpY2siLCJ0b0hhdmVCZWVuQ2FsbGVkV2l0aCIsInN0b3AiLCJfY2FsbGVlMiIsImxpbmVCdXR0b24iLCJfY29udGV4dDIiLCJkaXNhYmxlZCIsInRvQmVEaXNhYmxlZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vdG9nZ2xlLWJhci50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHNjcmVlbiB9IGZyb20gJ0BwaWUtbGliL3Rlc3QtdXRpbHMnO1xuaW1wb3J0IHVzZXJFdmVudCBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3VzZXItZXZlbnQnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgVG9nZ2xlQmFyIH0gZnJvbSAnLi4vdG9nZ2xlLWJhcic7XG5cbi8vIE1vY2sgRHJhZ1Byb3ZpZGVyIHRvIGF2b2lkIEBkbmQta2l0IFJlYWN0IHZlcnNpb24gY29uZmxpY3RzXG5qZXN0Lm1vY2soJ0BwaWUtbGliL2RyYWcnLCAoKSA9PiAoe1xuICBEcmFnUHJvdmlkZXI6ICh7IGNoaWxkcmVuIH0pID0+IDxkaXYgZGF0YS10ZXN0aWQ9XCJkcmFnLXByb3ZpZGVyXCI+e2NoaWxkcmVufTwvZGl2Pixcbn0pKTtcblxuLy8gTW9jayBUcmFuc2xhdG9yIHRvIHJldHVybiB0aGUga2V5IGFzLWlzIGZvciB0ZXN0aW5nXG5qZXN0Lm1vY2soJ0BwaWUtbGliL3RyYW5zbGF0b3InLCAoKSA9PiAoe1xuICB0cmFuc2xhdG9yOiB7XG4gICAgdDogKGtleSkgPT4ge1xuICAgICAgLy8gRXh0cmFjdCB0b29sIG5hbWUgZnJvbSBrZXkgbGlrZSBcImdyYXBoaW5nLnBvaW50XCIgLT4gXCJwb2ludFwiXG4gICAgICBjb25zdCBwYXJ0cyA9IGtleS5zcGxpdCgnLicpO1xuICAgICAgcmV0dXJuIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xuICAgIH0sXG4gIH0sXG59KSk7XG5cbmRlc2NyaWJlKCdUb2dnbGVCYXInLCAoKSA9PiB7XG4gIGxldCBvbkNoYW5nZSA9IGplc3QuZm4oKTtcbiAgbGV0IG9uQ2hhbmdlVG9vbHNPcmRlciA9IGplc3QuZm4oKTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBvbkNoYW5nZS5tb2NrQ2xlYXIoKTtcbiAgICBvbkNoYW5nZVRvb2xzT3JkZXIubW9ja0NsZWFyKCk7XG4gIH0pO1xuXG4gIGNvbnN0IHJlbmRlckNvbXBvbmVudCA9IChleHRyYXMpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIGNsYXNzTmFtZTogJ2NsYXNzTmFtZScsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIG9uQ2hhbmdlVG9vbHNPcmRlcixcbiAgICAgIG9wdGlvbnM6IFsncG9pbnQnLCAnbGluZSddLFxuICAgICAgbGFuZ3VhZ2U6ICdlbicsXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMsIC4uLmV4dHJhcyB9O1xuICAgIHJldHVybiByZW5kZXIoPFRvZ2dsZUJhciB7Li4ucHJvcHN9IC8+KTtcbiAgfTtcblxuICBkZXNjcmliZSgncmVuZGVyaW5nJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHdpdGhvdXQgY3Jhc2hpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ29tcG9uZW50KCk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB0b29sIGJ1dHRvbnMgZm9yIHZhbGlkIHRvb2xzJywgKCkgPT4ge1xuICAgICAgcmVuZGVyQ29tcG9uZW50KHsgb3B0aW9uczogWydwb2ludCcsICdsaW5lJywgJ2NpcmNsZSddIH0pO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoL3BvaW50L2kpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoL2xpbmUvaSkpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgvY2lyY2xlL2kpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHJlbmRlciBpbnZhbGlkIHRvb2wgb3B0aW9ucycsICgpID0+IHtcbiAgICAgIHJlbmRlckNvbXBvbmVudCh7IG9wdGlvbnM6IFsncG9pbnQnLCAnaW52YWxpZC10b29sJywgJ2xpbmUnXSB9KTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KC9wb2ludC9pKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KC9saW5lL2kpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5xdWVyeUJ5VGV4dCgvaW52YWxpZC10b29sL2kpKS5ub3QudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdoaWdobGlnaHRzIHNlbGVjdGVkIHRvb2wnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ29tcG9uZW50KHsgc2VsZWN0ZWRUb29sVHlwZTogJ2xpbmUnIH0pO1xuICAgICAgY29uc3Qgc2VsZWN0ZWRCdXR0b24gPSBzY3JlZW4uZ2V0QnlUZXh0KC9saW5lL2kpLmNsb3Nlc3QoJ2J1dHRvbicpO1xuICAgICAgZXhwZWN0KHNlbGVjdGVkQnV0dG9uKS50b0hhdmVBdHRyaWJ1dGUoJ3ZhbHVlJywgJ2xpbmUnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2ludGVyYWN0aW9ucycsICgpID0+IHtcbiAgICBpdCgnY2FsbHMgb25DaGFuZ2Ugd2hlbiB0b29sIGJ1dHRvbiBpcyBjbGlja2VkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdXNlciA9IHVzZXJFdmVudC5zZXR1cCgpO1xuICAgICAgcmVuZGVyQ29tcG9uZW50KHsgb3B0aW9uczogWydwb2ludCcsICdsaW5lJ10gfSk7XG5cbiAgICAgIGNvbnN0IHBvaW50QnV0dG9uID0gc2NyZWVuLmdldEJ5VGV4dCgvcG9pbnQvaSkuY2xvc2VzdCgnYnV0dG9uJyk7XG4gICAgICBhd2FpdCB1c2VyLmNsaWNrKHBvaW50QnV0dG9uKTtcblxuICAgICAgZXhwZWN0KG9uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgncG9pbnQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdjYWxscyBvbkNoYW5nZSB3aXRoIHNlbGVjdGVkIHRvb2wgdHlwZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHVzZXIgPSB1c2VyRXZlbnQuc2V0dXAoKTtcbiAgICAgIHJlbmRlckNvbXBvbmVudCh7IG9wdGlvbnM6IFsncG9pbnQnLCAnbGluZSddLCBzZWxlY3RlZFRvb2xUeXBlOiAncG9pbnQnIH0pO1xuXG4gICAgICBjb25zdCBsaW5lQnV0dG9uID0gc2NyZWVuLmdldEJ5VGV4dCgvbGluZS9pKS5jbG9zZXN0KCdidXR0b24nKTtcbiAgICAgIGF3YWl0IHVzZXIuY2xpY2sobGluZUJ1dHRvbik7XG5cbiAgICAgIGV4cGVjdChvbkNoYW5nZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ2xpbmUnKTtcbiAgICB9KTtcblxuICAgIGl0KCdkaXNhYmxlcyBidXR0b25zIHdoZW4gZGlzYWJsZWQgcHJvcCBpcyB0cnVlJywgKCkgPT4ge1xuICAgICAgcmVuZGVyQ29tcG9uZW50KHsgZGlzYWJsZWQ6IHRydWUsIG9wdGlvbnM6IFsncG9pbnQnLCAnbGluZSddIH0pO1xuXG4gICAgICBjb25zdCBwb2ludEJ1dHRvbiA9IHNjcmVlbi5nZXRCeVRleHQoL3BvaW50L2kpLmNsb3Nlc3QoJ2J1dHRvbicpO1xuICAgICAgY29uc3QgbGluZUJ1dHRvbiA9IHNjcmVlbi5nZXRCeVRleHQoL2xpbmUvaSkuY2xvc2VzdCgnYnV0dG9uJyk7XG5cbiAgICAgIGV4cGVjdChwb2ludEJ1dHRvbikudG9CZURpc2FibGVkKCk7XG4gICAgICBleHBlY3QobGluZUJ1dHRvbikudG9CZURpc2FibGVkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgY2FsbCBvbkNoYW5nZSB3aGVuIGRpc2FibGVkJywgKCkgPT4ge1xuICAgICAgcmVuZGVyQ29tcG9uZW50KHsgZGlzYWJsZWQ6IHRydWUsIG9wdGlvbnM6IFsncG9pbnQnXSB9KTtcblxuICAgICAgY29uc3QgcG9pbnRCdXR0b24gPSBzY3JlZW4uZ2V0QnlUZXh0KC9wb2ludC9pKS5jbG9zZXN0KCdidXR0b24nKTtcbiAgICAgIGV4cGVjdChwb2ludEJ1dHRvbikudG9CZURpc2FibGVkKCk7XG4gICAgICAvLyBOb3RlOiBDYW5ub3QgdGVzdCBjbGljayBvbiBkaXNhYmxlZCBidXR0b24gd2l0aCBwb2ludGVyLWV2ZW50czogbm9uZVxuICAgICAgLy8gVGhlIGRpc2FibGVkIHN0YXRlIGlzIHZlcmlmaWVkIGFib3ZlXG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFJLFVBQUEsR0FBQUosT0FBQTtBQUEwQyxTQUFBSyxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFSLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFB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
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
+ var _testUtils = require("@pie-lib/test-utils");
8
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _toolMenu = _interopRequireDefault(require("../tool-menu"));
11
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
+ // Mock DragProvider to avoid @dnd-kit React version conflicts
14
+ jest.mock('@pie-lib/drag', function () {
15
+ return {
16
+ DragProvider: function DragProvider(_ref) {
17
+ var children = _ref.children;
18
+ return /*#__PURE__*/_react["default"].createElement("div", {
19
+ "data-testid": "drag-provider"
20
+ }, children);
21
+ }
22
+ };
23
+ });
24
+ describe('ToolMenu', function () {
25
+ var onChange = jest.fn();
26
+ var onChangeTools = jest.fn();
27
+ beforeEach(function () {
28
+ onChange.mockClear();
29
+ onChangeTools.mockClear();
30
+ });
31
+ var renderComponent = function renderComponent(extras) {
32
+ var defaults = {
33
+ className: 'className',
34
+ onChange: onChange,
35
+ onChangeTools: onChangeTools,
36
+ currentToolType: 'point',
37
+ toolbarTools: ['point', 'line'],
38
+ language: 'en'
39
+ };
40
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
41
+ return (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_toolMenu["default"], props));
42
+ };
43
+ describe('rendering', function () {
44
+ it('renders without crashing', function () {
45
+ var _renderComponent = renderComponent(),
46
+ container = _renderComponent.container;
47
+ expect(container.firstChild).toBeInTheDocument();
48
+ });
49
+ it('renders ToggleBar with correct props', function () {
50
+ renderComponent({
51
+ toolbarTools: ['point', 'line', 'circle']
52
+ });
53
+ expect(_testUtils.screen.getByText(/point/i)).toBeInTheDocument();
54
+ expect(_testUtils.screen.getByText(/line/i)).toBeInTheDocument();
55
+ expect(_testUtils.screen.getByText(/circle/i)).toBeInTheDocument();
56
+ });
57
+ it('passes currentToolType to ToggleBar', function () {
58
+ renderComponent({
59
+ currentToolType: 'line'
60
+ });
61
+ var selectedButton = _testUtils.screen.getByText(/line/i).closest('button');
62
+ expect(selectedButton).toBeInTheDocument();
63
+ });
64
+ });
65
+ describe('interactions', function () {
66
+ it('calls onChange when tool is selected', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
67
+ var user, lineButton;
68
+ return _regenerator["default"].wrap(function (_context) {
69
+ while (1) switch (_context.prev = _context.next) {
70
+ case 0:
71
+ user = _userEvent["default"].setup();
72
+ renderComponent();
73
+ lineButton = _testUtils.screen.getByText(/line/i).closest('button');
74
+ _context.next = 1;
75
+ return user.click(lineButton);
76
+ case 1:
77
+ expect(onChange).toHaveBeenCalledWith('line');
78
+ case 2:
79
+ case "end":
80
+ return _context.stop();
81
+ }
82
+ }, _callee);
83
+ })));
84
+ it('calls onChangeTools when tools order changes', function () {
85
+ renderComponent({
86
+ draggableTools: true
87
+ });
88
+ // Note: Drag-and-drop testing requires more complex setup with @dnd-kit/test-utils
89
+ // For now, we verify the component renders with draggableTools enabled
90
+ expect(_testUtils.screen.getByText(/point/i)).toBeInTheDocument();
91
+ });
92
+ it('disables tools when disabled prop is true', function () {
93
+ renderComponent({
94
+ disabled: true
95
+ });
96
+ var pointButton = _testUtils.screen.getByText(/point/i).closest('button');
97
+ expect(pointButton).toBeDisabled();
98
+ });
99
+ });
100
+ });
101
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGVzdFV0aWxzIiwicmVxdWlyZSIsIl91c2VyRXZlbnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JlYWN0IiwiX3Rvb2xNZW51Iiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJqZXN0IiwibW9jayIsIkRyYWdQcm92aWRlciIsIl9yZWYiLCJjaGlsZHJlbiIsImNyZWF0ZUVsZW1lbnQiLCJkZXNjcmliZSIsIm9uQ2hhbmdlIiwiZm4iLCJvbkNoYW5nZVRvb2xzIiwiYmVmb3JlRWFjaCIsIm1vY2tDbGVhciIsInJlbmRlckNvbXBvbmVudCIsImV4dHJhcyIsImRlZmF1bHRzIiwiY2xhc3NOYW1lIiwiY3VycmVudFRvb2xUeXBlIiwidG9vbGJhclRvb2xzIiwibGFuZ3VhZ2UiLCJwcm9wcyIsInJlbmRlciIsIml0IiwiX3JlbmRlckNvbXBvbmVudCIsImNvbnRhaW5lciIsImV4cGVjdCIsImZpcnN0Q2hpbGQiLCJ0b0JlSW5UaGVEb2N1bWVudCIsInNjcmVlbiIsImdldEJ5VGV4dCIsInNlbGVjdGVkQnV0dG9uIiwiY2xvc2VzdCIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwidXNlciIsImxpbmVCdXR0b24iLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInVzZXJFdmVudCIsInNldHVwIiwiY2xpY2siLCJ0b0hhdmVCZWVuQ2FsbGVkV2l0aCIsInN0b3AiLCJkcmFnZ2FibGVUb29scyIsImRpc2FibGVkIiwicG9pbnRCdXR0b24iLCJ0b0JlRGlzYWJsZWQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL3Rvb2wtbWVudS50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHNjcmVlbiB9IGZyb20gJ0BwaWUtbGliL3Rlc3QtdXRpbHMnO1xuaW1wb3J0IHVzZXJFdmVudCBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3VzZXItZXZlbnQnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IFRvb2xNZW51IGZyb20gJy4uL3Rvb2wtbWVudSc7XG5cbi8vIE1vY2sgRHJhZ1Byb3ZpZGVyIHRvIGF2b2lkIEBkbmQta2l0IFJlYWN0IHZlcnNpb24gY29uZmxpY3RzXG5qZXN0Lm1vY2soJ0BwaWUtbGliL2RyYWcnLCAoKSA9PiAoe1xuICBEcmFnUHJvdmlkZXI6ICh7IGNoaWxkcmVuIH0pID0+IDxkaXYgZGF0YS10ZXN0aWQ9XCJkcmFnLXByb3ZpZGVyXCI+e2NoaWxkcmVufTwvZGl2Pixcbn0pKTtcblxuZGVzY3JpYmUoJ1Rvb2xNZW51JywgKCkgPT4ge1xuICBsZXQgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG4gIGxldCBvbkNoYW5nZVRvb2xzID0gamVzdC5mbigpO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIG9uQ2hhbmdlLm1vY2tDbGVhcigpO1xuICAgIG9uQ2hhbmdlVG9vbHMubW9ja0NsZWFyKCk7XG4gIH0pO1xuXG4gIGNvbnN0IHJlbmRlckNvbXBvbmVudCA9IChleHRyYXMpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIGNsYXNzTmFtZTogJ2NsYXNzTmFtZScsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIG9uQ2hhbmdlVG9vbHMsXG4gICAgICBjdXJyZW50VG9vbFR5cGU6ICdwb2ludCcsXG4gICAgICB0b29sYmFyVG9vbHM6IFsncG9pbnQnLCAnbGluZSddLFxuICAgICAgbGFuZ3VhZ2U6ICdlbicsXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMsIC4uLmV4dHJhcyB9O1xuICAgIHJldHVybiByZW5kZXIoPFRvb2xNZW51IHsuLi5wcm9wc30gLz4pO1xuICB9O1xuXG4gIGRlc2NyaWJlKCdyZW5kZXJpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgd2l0aG91dCBjcmFzaGluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJDb21wb25lbnQoKTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIFRvZ2dsZUJhciB3aXRoIGNvcnJlY3QgcHJvcHMnLCAoKSA9PiB7XG4gICAgICByZW5kZXJDb21wb25lbnQoeyB0b29sYmFyVG9vbHM6IFsncG9pbnQnLCAnbGluZScsICdjaXJjbGUnXSB9KTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KC9wb2ludC9pKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KC9saW5lL2kpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoL2NpcmNsZS9pKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdwYXNzZXMgY3VycmVudFRvb2xUeXBlIHRvIFRvZ2dsZUJhcicsICgpID0+IHtcbiAgICAgIHJlbmRlckNvbXBvbmVudCh7IGN1cnJlbnRUb29sVHlwZTogJ2xpbmUnIH0pO1xuICAgICAgY29uc3Qgc2VsZWN0ZWRCdXR0b24gPSBzY3JlZW4uZ2V0QnlUZXh0KC9saW5lL2kpLmNsb3Nlc3QoJ2J1dHRvbicpO1xuICAgICAgZXhwZWN0KHNlbGVjdGVkQnV0dG9uKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnaW50ZXJhY3Rpb25zJywgKCkgPT4ge1xuICAgIGl0KCdjYWxscyBvbkNoYW5nZSB3aGVuIHRvb2wgaXMgc2VsZWN0ZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB1c2VyID0gdXNlckV2ZW50LnNldHVwKCk7XG4gICAgICByZW5kZXJDb21wb25lbnQoKTtcblxuICAgICAgY29uc3QgbGluZUJ1dHRvbiA9IHNjcmVlbi5nZXRCeVRleHQoL2xpbmUvaSkuY2xvc2VzdCgnYnV0dG9uJyk7XG4gICAgICBhd2FpdCB1c2VyLmNsaWNrKGxpbmVCdXR0b24pO1xuXG4gICAgICBleHBlY3Qob25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdsaW5lJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnY2FsbHMgb25DaGFuZ2VUb29scyB3aGVuIHRvb2xzIG9yZGVyIGNoYW5nZXMnLCAoKSA9PiB7XG4gICAgICByZW5kZXJDb21wb25lbnQoeyBkcmFnZ2FibGVUb29sczogdHJ1ZSB9KTtcbiAgICAgIC8vIE5vdGU6IERyYWctYW5kLWRyb3AgdGVzdGluZyByZXF1aXJlcyBtb3JlIGNvbXBsZXggc2V0dXAgd2l0aCBAZG5kLWtpdC90ZXN0LXV0aWxzXG4gICAgICAvLyBGb3Igbm93LCB3ZSB2ZXJpZnkgdGhlIGNvbXBvbmVudCByZW5kZXJzIHdpdGggZHJhZ2dhYmxlVG9vbHMgZW5hYmxlZFxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoL3BvaW50L2kpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2Rpc2FibGVzIHRvb2xzIHdoZW4gZGlzYWJsZWQgcHJvcCBpcyB0cnVlJywgKCkgPT4ge1xuICAgICAgcmVuZGVyQ29tcG9uZW50KHsgZGlzYWJsZWQ6IHRydWUgfSk7XG4gICAgICBjb25zdCBwb2ludEJ1dHRvbiA9IHNjcmVlbi5nZXRCeVRleHQoL3BvaW50L2kpLmNsb3Nlc3QoJ2J1dHRvbicpO1xuICAgICAgZXhwZWN0KHBvaW50QnV0dG9uKS50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
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
5
+ var _testUtils = require("@pie-lib/test-utils");
6
+ var _react = _interopRequireDefault(require("react"));
7
+ var _undoRedo = _interopRequireDefault(require("../undo-redo"));
8
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
9
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
10
+ describe('UndoRedo', function () {
11
+ var onUndo = jest.fn();
12
+ var onRedo = jest.fn();
13
+ var onReset = jest.fn();
14
+ var renderComponent = function renderComponent(extras) {
15
+ var defaults = {
16
+ onUndo: onUndo,
17
+ onRedo: onRedo,
18
+ onReset: onReset
19
+ };
20
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
21
+ return (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_undoRedo["default"], props));
22
+ };
23
+ describe('rendering', function () {
24
+ it('renders without crashing', function () {
25
+ var _renderComponent = renderComponent(),
26
+ container = _renderComponent.container;
27
+ expect(container.firstChild).toBeInTheDocument();
28
+ });
29
+ });
30
+ });
31
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGVzdFV0aWxzIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdW5kb1JlZG8iLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImRlc2NyaWJlIiwib25VbmRvIiwiamVzdCIsImZuIiwib25SZWRvIiwib25SZXNldCIsInJlbmRlckNvbXBvbmVudCIsImV4dHJhcyIsImRlZmF1bHRzIiwicHJvcHMiLCJyZW5kZXIiLCJjcmVhdGVFbGVtZW50IiwiaXQiLCJfcmVuZGVyQ29tcG9uZW50IiwiY29udGFpbmVyIiwiZXhwZWN0IiwiZmlyc3RDaGlsZCIsInRvQmVJblRoZURvY3VtZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy91bmRvLXJlZG8udGVzdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSAnQHBpZS1saWIvdGVzdC11dGlscyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFVuZG9SZWRvIGZyb20gJy4uL3VuZG8tcmVkbyc7XG5cbmRlc2NyaWJlKCdVbmRvUmVkbycsICgpID0+IHtcbiAgbGV0IG9uVW5kbyA9IGplc3QuZm4oKTtcbiAgbGV0IG9uUmVkbyA9IGplc3QuZm4oKTtcbiAgbGV0IG9uUmVzZXQgPSBqZXN0LmZuKCk7XG4gIGNvbnN0IHJlbmRlckNvbXBvbmVudCA9IChleHRyYXMpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIG9uVW5kbyxcbiAgICAgIG9uUmVkbyxcbiAgICAgIG9uUmVzZXQsXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMsIC4uLmV4dHJhcyB9O1xuICAgIHJldHVybiByZW5kZXIoPFVuZG9SZWRvIHsuLi5wcm9wc30gLz4pO1xuICB9O1xuICBkZXNjcmliZSgncmVuZGVyaW5nJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHdpdGhvdXQgY3Jhc2hpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ29tcG9uZW50KCk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxTQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFBb0MsU0FBQUksUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNBQUEsQ0FBQVosQ0FBQSxRQUFBQSxDQUFBLE9BQUFGLE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLE9BQUFhLE9BQUEsV0FBQWQsQ0FBQSxRQUFBZSxnQkFBQSxhQUFBaEIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsQ0FBQUQsQ0FBQSxTQUFBRSxNQUFBLENBQUFjLHlCQUFBLEdBQUFkLE1BQUEsQ0FBQWUsZ0JBQUEsQ0FBQWxCLENBQUEsRUFBQUcsTUFBQSxDQUFBYyx5QkFBQSxDQUFBZixDQUFBLEtBQUFILE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLEdBQUFhLE9BQUEsV0FBQWQsQ0FBQSxJQUFBRSxNQUFBLENBQUFnQixjQUFBLENBQUFuQixDQUFBLEVBQUFDLENBQUEsRUFBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBTixDQUFBLEVBQUFELENBQUEsaUJBQUFELENBQUE7QUFFcENvQixRQUFRLENBQUMsVUFBVSxFQUFFLFlBQU07RUFDekIsSUFBSUMsTUFBTSxHQUFHQyxJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFDO0VBQ3RCLElBQUlDLE1BQU0sR0FBR0YsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztFQUN0QixJQUFJRSxPQUFPLEdBQUdILElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7RUFDdkIsSUFBTUcsZUFBZSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFJQyxNQUFNLEVBQUs7SUFDbEMsSUFBTUMsUUFBUSxHQUFHO01BQ2ZQLE1BQU0sRUFBTkEsTUFBTTtNQUNORyxNQUFNLEVBQU5BLE1BQU07TUFDTkMsT0FBTyxFQUFQQTtJQUNGLENBQUM7SUFDRCxJQUFNSSxLQUFLLEdBQUFqQixhQUFBLENBQUFBLGFBQUEsS0FBUWdCLFFBQVEsR0FBS0QsTUFBTSxDQUFFO0lBQ3hDLE9BQU8sSUFBQUcsaUJBQU0sZUFBQ2xDLE1BQUEsWUFBQW1DLGFBQUEsQ0FBQ2pDLFNBQUEsV0FBUSxFQUFLK0IsS0FBUSxDQUFDLENBQUM7RUFDeEMsQ0FBQztFQUNEVCxRQUFRLENBQUMsV0FBVyxFQUFFLFlBQU07SUFDMUJZLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxZQUFNO01BQ25DLElBQUFDLGdCQUFBLEdBQXNCUCxlQUFlLENBQUMsQ0FBQztRQUEvQlEsU0FBUyxHQUFBRCxnQkFBQSxDQUFUQyxTQUFTO01BQ2pCQyxNQUFNLENBQUNELFNBQVMsQ0FBQ0UsVUFBVSxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var _react = require("react");
4
+ var _useDebounce = require("../use-debounce");
5
+ jest.useFakeTimers();
6
+ jest.mock('react', function () {
7
+ return {
8
+ useState: jest.fn(),
9
+ useEffect: jest.fn(function (fn, deps) {
10
+ return fn();
11
+ })
12
+ };
13
+ });
14
+ describe('useDebounce', function () {
15
+ it('..', function () {
16
+ var debouncedValue = null;
17
+ var setDebouncedValue = jest.fn();
18
+ _react.useState.mockReturnValue([debouncedValue, setDebouncedValue]);
19
+ (0, _useDebounce.useDebounce)('foo', 1000);
20
+ jest.runAllTimers();
21
+ expect(setDebouncedValue).toHaveBeenCalledWith('foo');
22
+ });
23
+ });
24
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX3VzZURlYm91bmNlIiwiamVzdCIsInVzZUZha2VUaW1lcnMiLCJtb2NrIiwidXNlU3RhdGUiLCJmbiIsInVzZUVmZmVjdCIsImRlcHMiLCJkZXNjcmliZSIsIml0IiwiZGVib3VuY2VkVmFsdWUiLCJzZXREZWJvdW5jZWRWYWx1ZSIsIm1vY2tSZXR1cm5WYWx1ZSIsInVzZURlYm91bmNlIiwicnVuQWxsVGltZXJzIiwiZXhwZWN0IiwidG9IYXZlQmVlbkNhbGxlZFdpdGgiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL3VzZS1kZWJvdW5jZS50ZXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VEZWJvdW5jZSB9IGZyb20gJy4uL3VzZS1kZWJvdW5jZSc7XG5cbmplc3QudXNlRmFrZVRpbWVycygpO1xuXG5qZXN0Lm1vY2soJ3JlYWN0JywgKCkgPT4gKHtcbiAgdXNlU3RhdGU6IGplc3QuZm4oKSxcbiAgdXNlRWZmZWN0OiBqZXN0LmZuKChmbiwgZGVwcykgPT4gZm4oKSksXG59KSk7XG5cbmRlc2NyaWJlKCd1c2VEZWJvdW5jZScsICgpID0+IHtcbiAgaXQoJy4uJywgKCkgPT4ge1xuICAgIGNvbnN0IGRlYm91bmNlZFZhbHVlID0gbnVsbDtcbiAgICBjb25zdCBzZXREZWJvdW5jZWRWYWx1ZSA9IGplc3QuZm4oKTtcblxuICAgIHVzZVN0YXRlLm1vY2tSZXR1cm5WYWx1ZShbZGVib3VuY2VkVmFsdWUsIHNldERlYm91bmNlZFZhbHVlXSk7XG4gICAgdXNlRGVib3VuY2UoJ2ZvbycsIDEwMDApO1xuICAgIGplc3QucnVuQWxsVGltZXJzKCk7XG4gICAgZXhwZWN0KHNldERlYm91bmNlZFZhbHVlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnZm9vJyk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsWUFBQSxHQUFBRCxPQUFBO0FBRUFFLElBQUksQ0FBQ0MsYUFBYSxDQUFDLENBQUM7QUFFcEJELElBQUksQ0FBQ0UsSUFBSSxDQUFDLE9BQU8sRUFBRTtFQUFBLE9BQU87SUFDeEJDLFFBQVEsRUFBRUgsSUFBSSxDQUFDSSxFQUFFLENBQUMsQ0FBQztJQUNuQkMsU0FBUyxFQUFFTCxJQUFJLENBQUNJLEVBQUUsQ0FBQyxVQUFDQSxFQUFFLEVBQUVFLElBQUk7TUFBQSxPQUFLRixFQUFFLENBQUMsQ0FBQztJQUFBO0VBQ3ZDLENBQUM7QUFBQSxDQUFDLENBQUM7QUFFSEcsUUFBUSxDQUFDLGFBQWEsRUFBRSxZQUFNO0VBQzVCQyxFQUFFLENBQUMsSUFBSSxFQUFFLFlBQU07SUFDYixJQUFNQyxjQUFjLEdBQUcsSUFBSTtJQUMzQixJQUFNQyxpQkFBaUIsR0FBR1YsSUFBSSxDQUFDSSxFQUFFLENBQUMsQ0FBQztJQUVuQ0QsZUFBUSxDQUFDUSxlQUFlLENBQUMsQ0FBQ0YsY0FBYyxFQUFFQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzdELElBQUFFLHdCQUFXLEVBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztJQUN4QlosSUFBSSxDQUFDYSxZQUFZLENBQUMsQ0FBQztJQUNuQkMsTUFBTSxDQUFDSixpQkFBaUIsQ0FBQyxDQUFDSyxvQkFBb0IsQ0FBQyxLQUFLLENBQUM7RUFDdkQsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.xy = exports.scaleMock = exports.graphProps = void 0;
7
+ var _scaleMock = exports.scaleMock = function scaleMock() {
8
+ var fn = jest.fn(function (n) {
9
+ return n;
10
+ });
11
+ fn.invert = jest.fn(function (n) {
12
+ return n;
13
+ });
14
+ fn.domain = jest.fn(function () {
15
+ return fn;
16
+ });
17
+ fn.range = jest.fn(function () {
18
+ return fn;
19
+ });
20
+ fn.copy = jest.fn(function () {
21
+ return _scaleMock();
22
+ });
23
+ return fn;
24
+ };
25
+ var graphProps = exports.graphProps = function graphProps() {
26
+ var dmin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
27
+ var dmax = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
28
+ var rmin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
29
+ var rmax = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
30
+ return {
31
+ scale: {
32
+ x: _scaleMock(),
33
+ y: _scaleMock()
34
+ },
35
+ snap: {
36
+ x: jest.fn(function (n) {
37
+ return n;
38
+ }),
39
+ y: jest.fn(function (n) {
40
+ return n;
41
+ })
42
+ },
43
+ domain: {
44
+ min: dmin,
45
+ max: dmax,
46
+ step: 1
47
+ },
48
+ range: {
49
+ min: rmin,
50
+ max: rmax,
51
+ step: 1
52
+ },
53
+ size: {
54
+ width: 400,
55
+ height: 400
56
+ }
57
+ };
58
+ };
59
+ var xy = exports.xy = function xy(x, y, index) {
60
+ var out = {
61
+ x: x,
62
+ y: y,
63
+ index: index
64
+ };
65
+ if (!Number.isFinite(index)) {
66
+ delete out.index;
67
+ }
68
+ return out;
69
+ };
70
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzY2FsZU1vY2siLCJleHBvcnRzIiwiZm4iLCJqZXN0IiwibiIsImludmVydCIsImRvbWFpbiIsInJhbmdlIiwiY29weSIsImdyYXBoUHJvcHMiLCJkbWluIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiZG1heCIsInJtaW4iLCJybWF4Iiwic2NhbGUiLCJ4IiwieSIsInNuYXAiLCJtaW4iLCJtYXgiLCJzdGVwIiwic2l6ZSIsIndpZHRoIiwiaGVpZ2h0IiwieHkiLCJpbmRleCIsIm91dCIsIk51bWJlciIsImlzRmluaXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy91dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3Qgc2NhbGVNb2NrID0gKCkgPT4ge1xuICBjb25zdCBmbiA9IGplc3QuZm4oKG4pID0+IG4pO1xuICBmbi5pbnZlcnQgPSBqZXN0LmZuKChuKSA9PiBuKTtcbiAgZm4uZG9tYWluID0gamVzdC5mbigoKSA9PiBmbik7XG4gIGZuLnJhbmdlID0gamVzdC5mbigoKSA9PiBmbik7XG4gIGZuLmNvcHkgPSBqZXN0LmZuKCgpID0+IHNjYWxlTW9jaygpKTtcbiAgcmV0dXJuIGZuO1xufTtcblxuZXhwb3J0IGNvbnN0IGdyYXBoUHJvcHMgPSAoZG1pbiA9IDAsIGRtYXggPSAxLCBybWluID0gMCwgcm1heCA9IDEpID0+ICh7XG4gIHNjYWxlOiB7XG4gICAgeDogc2NhbGVNb2NrKCksXG4gICAgeTogc2NhbGVNb2NrKCksXG4gIH0sXG4gIHNuYXA6IHtcbiAgICB4OiBqZXN0LmZuKChuKSA9PiBuKSxcbiAgICB5OiBqZXN0LmZuKChuKSA9PiBuKSxcbiAgfSxcbiAgZG9tYWluOiB7XG4gICAgbWluOiBkbWluLFxuICAgIG1heDogZG1heCxcbiAgICBzdGVwOiAxLFxuICB9LFxuICByYW5nZToge1xuICAgIG1pbjogcm1pbixcbiAgICBtYXg6IHJtYXgsXG4gICAgc3RlcDogMSxcbiAgfSxcbiAgc2l6ZToge1xuICAgIHdpZHRoOiA0MDAsXG4gICAgaGVpZ2h0OiA0MDAsXG4gIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IHh5ID0gKHgsIHksIGluZGV4KSA9PiB7XG4gIGNvbnN0IG91dCA9IHsgeCwgeSwgaW5kZXggfTtcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoaW5kZXgpKSB7XG4gICAgZGVsZXRlIG91dC5pbmRleDtcbiAgfVxuICByZXR1cm4gb3V0O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQU8sSUFBTUEsVUFBUyxHQUFBQyxPQUFBLENBQUFELFNBQUEsR0FBRyxTQUFaQSxTQUFTQSxDQUFBLEVBQVM7RUFDN0IsSUFBTUUsRUFBRSxHQUFHQyxJQUFJLENBQUNELEVBQUUsQ0FBQyxVQUFDRSxDQUFDO0lBQUEsT0FBS0EsQ0FBQztFQUFBLEVBQUM7RUFDNUJGLEVBQUUsQ0FBQ0csTUFBTSxHQUFHRixJQUFJLENBQUNELEVBQUUsQ0FBQyxVQUFDRSxDQUFDO0lBQUEsT0FBS0EsQ0FBQztFQUFBLEVBQUM7RUFDN0JGLEVBQUUsQ0FBQ0ksTUFBTSxHQUFHSCxJQUFJLENBQUNELEVBQUUsQ0FBQztJQUFBLE9BQU1BLEVBQUU7RUFBQSxFQUFDO0VBQzdCQSxFQUFFLENBQUNLLEtBQUssR0FBR0osSUFBSSxDQUFDRCxFQUFFLENBQUM7SUFBQSxPQUFNQSxFQUFFO0VBQUEsRUFBQztFQUM1QkEsRUFBRSxDQUFDTSxJQUFJLEdBQUdMLElBQUksQ0FBQ0QsRUFBRSxDQUFDO0lBQUEsT0FBTUYsVUFBUyxDQUFDLENBQUM7RUFBQSxFQUFDO0VBQ3BDLE9BQU9FLEVBQUU7QUFDWCxDQUFDO0FBRU0sSUFBTU8sVUFBVSxHQUFBUixPQUFBLENBQUFRLFVBQUEsR0FBRyxTQUFiQSxVQUFVQSxDQUFBO0VBQUEsSUFBSUMsSUFBSSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxDQUFDO0VBQUEsSUFBRUcsSUFBSSxHQUFBSCxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxDQUFDO0VBQUEsSUFBRUksSUFBSSxHQUFBSixTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxDQUFDO0VBQUEsSUFBRUssSUFBSSxHQUFBTCxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxDQUFDO0VBQUEsT0FBTTtJQUNyRU0sS0FBSyxFQUFFO01BQ0xDLENBQUMsRUFBRWxCLFVBQVMsQ0FBQyxDQUFDO01BQ2RtQixDQUFDLEVBQUVuQixVQUFTLENBQUM7SUFDZixDQUFDO0lBQ0RvQixJQUFJLEVBQUU7TUFDSkYsQ0FBQyxFQUFFZixJQUFJLENBQUNELEVBQUUsQ0FBQyxVQUFDRSxDQUFDO1FBQUEsT0FBS0EsQ0FBQztNQUFBLEVBQUM7TUFDcEJlLENBQUMsRUFBRWhCLElBQUksQ0FBQ0QsRUFBRSxDQUFDLFVBQUNFLENBQUM7UUFBQSxPQUFLQSxDQUFDO01BQUE7SUFDckIsQ0FBQztJQUNERSxNQUFNLEVBQUU7TUFDTmUsR0FBRyxFQUFFWCxJQUFJO01BQ1RZLEdBQUcsRUFBRVIsSUFBSTtNQUNUUyxJQUFJLEVBQUU7SUFDUixDQUFDO0lBQ0RoQixLQUFLLEVBQUU7TUFDTGMsR0FBRyxFQUFFTixJQUFJO01BQ1RPLEdBQUcsRUFBRU4sSUFBSTtNQUNUTyxJQUFJLEVBQUU7SUFDUixDQUFDO0lBQ0RDLElBQUksRUFBRTtNQUNKQyxLQUFLLEVBQUUsR0FBRztNQUNWQyxNQUFNLEVBQUU7SUFDVjtFQUNGLENBQUM7QUFBQSxDQUFDO0FBRUssSUFBTUMsRUFBRSxHQUFBMUIsT0FBQSxDQUFBMEIsRUFBQSxHQUFHLFNBQUxBLEVBQUVBLENBQUlULENBQUMsRUFBRUMsQ0FBQyxFQUFFUyxLQUFLLEVBQUs7RUFDakMsSUFBTUMsR0FBRyxHQUFHO0lBQUVYLENBQUMsRUFBREEsQ0FBQztJQUFFQyxDQUFDLEVBQURBLENBQUM7SUFBRVMsS0FBSyxFQUFMQTtFQUFNLENBQUM7RUFDM0IsSUFBSSxDQUFDRSxNQUFNLENBQUNDLFFBQVEsQ0FBQ0gsS0FBSyxDQUFDLEVBQUU7SUFDM0IsT0FBT0MsR0FBRyxDQUFDRCxLQUFLO0VBQ2xCO0VBQ0EsT0FBT0MsR0FBRztBQUNaLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ var utils = _interopRequireWildcard(require("../utils"));
5
+ 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); }
6
+ var xy = function xy(x, y) {
7
+ return {
8
+ x: x,
9
+ y: y
10
+ };
11
+ };
12
+ var tick = function tick(isMajor, v) {
13
+ return {
14
+ major: isMajor,
15
+ value: v,
16
+ x: v
17
+ };
18
+ };
19
+ var major = tick.bind(null, true);
20
+ var minor = tick.bind(null, false);
21
+ describe('utils', function () {
22
+ describe('polygonToArea', function () {
23
+ var assertPolygon = function assertPolygon(points, area) {
24
+ it("converts ".concat(points, " -> ").concat(area), function () {
25
+ var result = utils.polygonToArea(points);
26
+ expect(result).toEqual(area);
27
+ });
28
+ };
29
+ assertPolygon([xy(0, 0), xy(1, 1), xy(1, -1)], {
30
+ left: 0,
31
+ top: 1,
32
+ bottom: -1,
33
+ right: 1
34
+ });
35
+ assertPolygon([xy(0, 0), xy(3, 0), xy(2, -1), xy(4, -3), xy(1, -4), xy(2, -2)], {
36
+ left: 0,
37
+ top: 0,
38
+ bottom: -4,
39
+ right: 4
40
+ });
41
+ });
42
+ describe('lineToArea', function () {
43
+ var assertLine = function assertLine(from, to, expected) {
44
+ it("".concat(from, ",").concat(to, " => ").concat(expected), function () {
45
+ var result = utils.lineToArea(from, to);
46
+ expect(result).toEqual(expected);
47
+ });
48
+ };
49
+ assertLine(xy(1, 1), xy(2, 2), {
50
+ left: 1,
51
+ top: 2,
52
+ bottom: 1,
53
+ right: 2
54
+ });
55
+ assertLine(xy(-1, 4), xy(4, -3), {
56
+ left: -1,
57
+ top: 4,
58
+ bottom: -3,
59
+ right: 4
60
+ });
61
+ });
62
+ describe('getTickValues', function () {
63
+ var assertGetTickValues = function assertGetTickValues(props, expected) {
64
+ it(" => ".concat(expected), function () {
65
+ var result = utils.getTickValues(props);
66
+ expect(result).toEqual(expected);
67
+ });
68
+ };
69
+ assertGetTickValues({
70
+ min: 0,
71
+ max: 10,
72
+ step: 1
73
+ }, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
74
+ assertGetTickValues({
75
+ min: 0,
76
+ max: 3,
77
+ step: 0.5
78
+ }, [0, 0.5, 1, 1.5, 2, 2.5, 3]);
79
+ assertGetTickValues({
80
+ min: -0.2,
81
+ max: 2,
82
+ step: 0.6
83
+ }, [0, 0.6, 1.2, 1.8]);
84
+ assertGetTickValues({
85
+ min: -3.4,
86
+ max: 6.2,
87
+ step: 1.2
88
+ }, [0, -1.2, -2.4, 1.2, 2.4, 3.6, 4.8, 6]);
89
+ assertGetTickValues({
90
+ min: 0.6,
91
+ max: 4.8,
92
+ step: 0.3
93
+ }, [0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4, 2.7, 3.0, 3.3, 3.6, 3.9, 4.2, 4.5, 4.8]);
94
+ assertGetTickValues({
95
+ min: 0.5,
96
+ max: 4.9,
97
+ step: 0.3
98
+ }, [0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4, 2.7, 3.0, 3.3, 3.6, 3.9, 4.2, 4.5, 4.8]);
99
+ assertGetTickValues({
100
+ min: 0,
101
+ max: 3,
102
+ step: 0.125
103
+ }, [0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1, 1.125, 1.25, 1.375, 1.5, 1.625, 1.75, 1.875, 2, 2.125, 2.25, 2.375, 2.5, 2.625, 2.75, 2.875, 3]);
104
+ });
105
+ describe('countWords', function () {
106
+ it('should return 1 if label is undefined', function () {
107
+ var label = undefined;
108
+ var result = utils.countWords(label);
109
+ expect(result).toEqual(1);
110
+ });
111
+ it('should return 1 if label is null', function () {
112
+ var label = null;
113
+ var result = utils.countWords(label);
114
+ expect(result).toEqual(1);
115
+ });
116
+ it('should return 3 if label has 3 words', function () {
117
+ var label = 'Number of months';
118
+ var result = utils.countWords(label);
119
+ expect(result).toEqual(3);
120
+ });
121
+ });
122
+ });
123
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1dGlscyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwieHkiLCJ4IiwieSIsInRpY2siLCJpc01ham9yIiwidiIsIm1ham9yIiwidmFsdWUiLCJiaW5kIiwibWlub3IiLCJkZXNjcmliZSIsImFzc2VydFBvbHlnb24iLCJwb2ludHMiLCJhcmVhIiwiaXQiLCJjb25jYXQiLCJyZXN1bHQiLCJwb2x5Z29uVG9BcmVhIiwiZXhwZWN0IiwidG9FcXVhbCIsImxlZnQiLCJ0b3AiLCJib3R0b20iLCJyaWdodCIsImFzc2VydExpbmUiLCJmcm9tIiwidG8iLCJleHBlY3RlZCIsImxpbmVUb0FyZWEiLCJhc3NlcnRHZXRUaWNrVmFsdWVzIiwicHJvcHMiLCJnZXRUaWNrVmFsdWVzIiwibWluIiwibWF4Iiwic3RlcCIsImxhYmVsIiwidW5kZWZpbmVkIiwiY291bnRXb3JkcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vdXRpbHMudGVzdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuLi91dGlscyc7XG5cbmNvbnN0IHh5ID0gKHgsIHkpID0+ICh7IHgsIHkgfSk7XG5cbmNvbnN0IHRpY2sgPSAoaXNNYWpvciwgdikgPT4gKHtcbiAgbWFqb3I6IGlzTWFqb3IsXG4gIHZhbHVlOiB2LFxuICB4OiB2LFxufSk7XG5cbmNvbnN0IG1ham9yID0gdGljay5iaW5kKG51bGwsIHRydWUpO1xuY29uc3QgbWlub3IgPSB0aWNrLmJpbmQobnVsbCwgZmFsc2UpO1xuXG5kZXNjcmliZSgndXRpbHMnLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdwb2x5Z29uVG9BcmVhJywgKCkgPT4ge1xuICAgIGNvbnN0IGFzc2VydFBvbHlnb24gPSAocG9pbnRzLCBhcmVhKSA9PiB7XG4gICAgICBpdChgY29udmVydHMgJHtwb2ludHN9IC0+ICR7YXJlYX1gLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHV0aWxzLnBvbHlnb25Ub0FyZWEocG9pbnRzKTtcbiAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChhcmVhKTtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgYXNzZXJ0UG9seWdvbihbeHkoMCwgMCksIHh5KDEsIDEpLCB4eSgxLCAtMSldLCB7XG4gICAgICBsZWZ0OiAwLFxuICAgICAgdG9wOiAxLFxuICAgICAgYm90dG9tOiAtMSxcbiAgICAgIHJpZ2h0OiAxLFxuICAgIH0pO1xuICAgIGFzc2VydFBvbHlnb24oW3h5KDAsIDApLCB4eSgzLCAwKSwgeHkoMiwgLTEpLCB4eSg0LCAtMyksIHh5KDEsIC00KSwgeHkoMiwgLTIpXSwge1xuICAgICAgbGVmdDogMCxcbiAgICAgIHRvcDogMCxcbiAgICAgIGJvdHRvbTogLTQsXG4gICAgICByaWdodDogNCxcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2xpbmVUb0FyZWEnLCAoKSA9PiB7XG4gICAgY29uc3QgYXNzZXJ0TGluZSA9IChmcm9tLCB0bywgZXhwZWN0ZWQpID0+IHtcbiAgICAgIGl0KGAke2Zyb219LCR7dG99ID0+ICR7ZXhwZWN0ZWR9YCwgKCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB1dGlscy5saW5lVG9BcmVhKGZyb20sIHRvKTtcbiAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZCk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgYXNzZXJ0TGluZSh4eSgxLCAxKSwgeHkoMiwgMiksIHsgbGVmdDogMSwgdG9wOiAyLCBib3R0b206IDEsIHJpZ2h0OiAyIH0pO1xuICAgIGFzc2VydExpbmUoeHkoLTEsIDQpLCB4eSg0LCAtMyksIHtcbiAgICAgIGxlZnQ6IC0xLFxuICAgICAgdG9wOiA0LFxuICAgICAgYm90dG9tOiAtMyxcbiAgICAgIHJpZ2h0OiA0LFxuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0VGlja1ZhbHVlcycsICgpID0+IHtcbiAgICBjb25zdCBhc3NlcnRHZXRUaWNrVmFsdWVzID0gKHByb3BzLCBleHBlY3RlZCkgPT4ge1xuICAgICAgaXQoYCA9PiAke2V4cGVjdGVkfWAsICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdXRpbHMuZ2V0VGlja1ZhbHVlcyhwcm9wcyk7XG4gICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGFzc2VydEdldFRpY2tWYWx1ZXMoeyBtaW46IDAsIG1heDogMTAsIHN0ZXA6IDEgfSwgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXSk7XG4gICAgYXNzZXJ0R2V0VGlja1ZhbHVlcyh7IG1pbjogMCwgbWF4OiAzLCBzdGVwOiAwLjUgfSwgWzAsIDAuNSwgMSwgMS41LCAyLCAyLjUsIDNdKTtcbiAgICBhc3NlcnRHZXRUaWNrVmFsdWVzKHsgbWluOiAtMC4yLCBtYXg6IDIsIHN0ZXA6IDAuNiB9LCBbMCwgMC42LCAxLjIsIDEuOF0pO1xuICAgIGFzc2VydEdldFRpY2tWYWx1ZXMoeyBtaW46IC0zLjQsIG1heDogNi4yLCBzdGVwOiAxLjIgfSwgWzAsIC0xLjIsIC0yLjQsIDEuMiwgMi40LCAzLjYsIDQuOCwgNl0pO1xuXG4gICAgYXNzZXJ0R2V0VGlja1ZhbHVlcyh7IG1pbjogMC42LCBtYXg6IDQuOCwgc3RlcDogMC4zIH0sIFtcbiAgICAgIDAuNixcbiAgICAgIDAuOSxcbiAgICAgIDEuMixcbiAgICAgIDEuNSxcbiAgICAgIDEuOCxcbiAgICAgIDIuMSxcbiAgICAgIDIuNCxcbiAgICAgIDIuNyxcbiAgICAgIDMuMCxcbiAgICAgIDMuMyxcbiAgICAgIDMuNixcbiAgICAgIDMuOSxcbiAgICAgIDQuMixcbiAgICAgIDQuNSxcbiAgICAgIDQuOCxcbiAgICBdKTtcbiAgICBhc3NlcnRHZXRUaWNrVmFsdWVzKHsgbWluOiAwLjUsIG1heDogNC45LCBzdGVwOiAwLjMgfSwgW1xuICAgICAgMC42LFxuICAgICAgMC45LFxuICAgICAgMS4yLFxuICAgICAgMS41LFxuICAgICAgMS44LFxuICAgICAgMi4xLFxuICAgICAgMi40LFxuICAgICAgMi43LFxuICAgICAgMy4wLFxuICAgICAgMy4zLFxuICAgICAgMy42LFxuICAgICAgMy45LFxuICAgICAgNC4yLFxuICAgICAgNC41LFxuICAgICAgNC44LFxuICAgIF0pO1xuICAgIGFzc2VydEdldFRpY2tWYWx1ZXMoeyBtaW46IDAsIG1heDogMywgc3RlcDogMC4xMjUgfSwgW1xuICAgICAgMCxcbiAgICAgIDAuMTI1LFxuICAgICAgMC4yNSxcbiAgICAgIDAuMzc1LFxuICAgICAgMC41LFxuICAgICAgMC42MjUsXG4gICAgICAwLjc1LFxuICAgICAgMC44NzUsXG4gICAgICAxLFxuICAgICAgMS4xMjUsXG4gICAgICAxLjI1LFxuICAgICAgMS4zNzUsXG4gICAgICAxLjUsXG4gICAgICAxLjYyNSxcbiAgICAgIDEuNzUsXG4gICAgICAxLjg3NSxcbiAgICAgIDIsXG4gICAgICAyLjEyNSxcbiAgICAgIDIuMjUsXG4gICAgICAyLjM3NSxcbiAgICAgIDIuNSxcbiAgICAgIDIuNjI1LFxuICAgICAgMi43NSxcbiAgICAgIDIuODc1LFxuICAgICAgMyxcbiAgICBdKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NvdW50V29yZHMnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gMSBpZiBsYWJlbCBpcyB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBsYWJlbCA9IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHV0aWxzLmNvdW50V29yZHMobGFiZWwpO1xuXG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKDEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gMSBpZiBsYWJlbCBpcyBudWxsJywgKCkgPT4ge1xuICAgICAgY29uc3QgbGFiZWwgPSBudWxsO1xuICAgICAgY29uc3QgcmVzdWx0ID0gdXRpbHMuY291bnRXb3JkcyhsYWJlbCk7XG5cbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoMSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiAzIGlmIGxhYmVsIGhhcyAzIHdvcmRzJywgKCkgPT4ge1xuICAgICAgY29uc3QgbGFiZWwgPSAnTnVtYmVyIG9mIG1vbnRocyc7XG4gICAgICBjb25zdCByZXN1bHQgPSB1dGlscy5jb3VudFdvcmRzKGxhYmVsKTtcblxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCgzKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQWtDLFNBQUFELHdCQUFBRSxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBSix1QkFBQSxZQUFBQSx3QkFBQUUsQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLG1CQUFBVCxDQUFBLGlCQUFBQSxDQUFBLGdCQUFBVSxPQUFBLENBQUFWLENBQUEsMEJBQUFBLENBQUEsU0FBQVEsQ0FBQSxNQUFBRixDQUFBLEdBQUFMLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLFFBQUFHLENBQUEsQ0FBQUssR0FBQSxDQUFBWCxDQUFBLFVBQUFNLENBQUEsQ0FBQU0sR0FBQSxDQUFBWixDQUFBLEdBQUFNLENBQUEsQ0FBQU8s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QUFRLENBQUM7TUFDbEMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVERSxtQkFBbUIsQ0FBQztNQUFFRyxHQUFHLEVBQUUsQ0FBQztNQUFFQyxHQUFHLEVBQUUsRUFBRTtNQUFFQyxJQUFJLEVBQUU7SUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckZMLG1CQUFtQixDQUFDO01BQUVHLEdBQUcsRUFBRSxDQUFDO01BQUVDLEdBQUcsRUFBRSxDQUFDO01BQUVDLElBQUksRUFBRTtJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9FTCxtQkFBbUIsQ0FBQztNQUFFRyxHQUFHLEVBQUUsQ0FBQyxHQUFHO01BQUVDLEdBQUcsRUFBRSxDQUFDO01BQUVDLElBQUksRUFBRTtJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pFTCxtQkFBbUIsQ0FBQztNQUFFRyxHQUFHLEVBQUUsQ0FBQyxHQUFHO01BQUVDLEdBQUcsRUFBRSxHQUFHO01BQUVDLElBQUksRUFBRTtJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFL0ZMLG1CQUFtQixDQUFDO01BQUVHLEdBQUcsRUFBRSxHQUFHO01BQUVDLEdBQUcsRUFBRSxHQUFHO01BQUVDLElBQUksRUFBRTtJQUFJLENBQUMsRUFBRSxDQUNyRCxHQUFHLEVBQ0gsR0FBRyxFQUNILEdBQUcsRUFDSCxHQUFHLEVBQ0gsR0FBRyxFQUNILEdBQUcsRUFDSCxHQUFHLEVBQ0gsR0FBRyxFQUNILEdBQUcsRUFDSCxHQUFHLEVBQ0gsR0FBRyxFQUNILEdBQUcsRUFDSCxHQUFHLEVBQ0gsR0FBRyxFQUNILEdBQUcsQ0FDSixDQUFDO0lBQ0ZMLG1CQUFtQixDQUFDO01BQUVHLEdBQUcsRUFBRSxHQUFHO01BQUVDLEdBQUcsRUFBRSxHQUFHO01BQUVDLElBQUksRUFBRTtJQUFJLENBQUMsRUFBRSxDQUNyRCxHQUFHLEVBQ0gsR0FBRyxFQUNILEdBQUcsRUFDSCxHQUFHLEVBQ0gsR0FBRyxFQUNILEdBQUcsRUFDSCxHQUFHLEVBQ0gsR0FBRyxFQUNILEdBQUcsRUFDSCxHQUFHLEVBQ0gsR0FBRyxFQUNILEdBQUcsRUFDSCxHQUFHLEVBQ0gsR0FBRyxFQUNILEdBQUcsQ0FDSixDQUFDO0lBQ0ZMLG1CQUFtQixDQUFDO01BQUVHLEdBQUcsRUFBRSxDQUFDO01BQUVDLEdBQUcsRUFBRSxDQUFDO01BQUVDLElBQUksRUFBRTtJQUFNLENBQUMsRUFBRSxDQUNuRCxDQUFDLEVBQ0QsS0FBSyxFQUNMLElBQUksRUFDSixLQUFLLEVBQ0wsR0FBRyxFQUNILEtBQUssRUFDTCxJQUFJLEVBQ0osS0FBSyxFQUNMLENBQUMsRUFDRCxLQUFLLEVBQ0wsSUFBSSxFQUNKLEtBQUssRUFDTCxHQUFHLEVBQ0gsS0FBSyxFQUNMLElBQUksRUFDSixLQUFLLEVBQ0wsQ0FBQyxFQUNELEtBQUssRUFDTCxJQUFJLEVBQ0osS0FBSyxFQUNMLEdBQUcsRUFDSCxLQUFLLEVBQ0wsSUFBSSxFQUNKLEtBQUssRUFDTCxDQUFDLENBQ0YsQ0FBQztFQUNKLENBQUMsQ0FBQztFQUVGeEIsUUFBUSxDQUFDLFlBQVksRUFBRSxZQUFNO0lBQzNCSSxFQUFFLENBQUMsdUNBQXVDLEVBQUUsWUFBTTtNQUNoRCxJQUFNcUIsS0FBSyxHQUFHQyxTQUFTO01BQ3ZCLElBQU1wQixNQUFNLEdBQUd2QyxLQUFLLENBQUM0RCxVQUFVLENBQUNGLEtBQUssQ0FBQztNQUV0Q2pCLE1BQU0sQ0FBQ0YsTUFBTSxDQUFDLENBQUNHLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDM0IsQ0FBQyxDQUFDO0lBRUZMLEVBQUUsQ0FBQyxrQ0FBa0MsRUFBRSxZQUFNO01BQzNDLElBQU1xQixLQUFLLEdBQUcsSUFBSTtNQUNsQixJQUFNbkIsTUFBTSxHQUFHdkMsS0FBSyxDQUFDNEQsVUFBVSxDQUFDRixLQUFLLENBQUM7TUFFdENqQixNQUFNLENBQUNGLE1BQU0sQ0FBQyxDQUFDRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQztJQUVGTCxFQUFFLENBQUMsc0NBQXNDLEVBQUUsWUFBTTtNQUMvQyxJQUFNcUIsS0FBSyxHQUFHLGtCQUFrQjtNQUNoQyxJQUFNbkIsTUFBTSxHQUFHdkMsS0FBSyxDQUFDNEQsVUFBVSxDQUFDRixLQUFLLENBQUM7TUFFdENqQixNQUFNLENBQUNGLE1BQU0sQ0FBQyxDQUFDRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==