@pie-element/number-line 11.3.4-next.3 → 12.0.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 (86) hide show
  1. package/configure/lib/arrows.js +68 -103
  2. package/configure/lib/arrows.js.map +1 -1
  3. package/configure/lib/card-bar.js +41 -62
  4. package/configure/lib/card-bar.js.map +1 -1
  5. package/configure/lib/defaults.js +5 -7
  6. package/configure/lib/defaults.js.map +1 -1
  7. package/configure/lib/domain.js +60 -116
  8. package/configure/lib/domain.js.map +1 -1
  9. package/configure/lib/index.js +124 -194
  10. package/configure/lib/index.js.map +1 -1
  11. package/configure/lib/main.js +585 -721
  12. package/configure/lib/main.js.map +1 -1
  13. package/configure/lib/number-text-field.js +15 -86
  14. package/configure/lib/number-text-field.js.map +1 -1
  15. package/configure/lib/point-config.js +69 -129
  16. package/configure/lib/point-config.js.map +1 -1
  17. package/configure/lib/size.js +43 -77
  18. package/configure/lib/size.js.map +1 -1
  19. package/configure/lib/ticks.js +89 -151
  20. package/configure/lib/ticks.js.map +1 -1
  21. package/configure/lib/utils.js +2 -4
  22. package/configure/lib/utils.js.map +1 -1
  23. package/configure/package.json +10 -7
  24. package/controller/lib/defaults.js +5 -6
  25. package/controller/lib/defaults.js.map +1 -1
  26. package/controller/lib/index.js +171 -286
  27. package/controller/lib/index.js.map +1 -1
  28. package/controller/lib/tickUtils.js +96 -169
  29. package/controller/lib/tickUtils.js.map +1 -1
  30. package/controller/lib/utils.js +55 -88
  31. package/controller/lib/utils.js.map +1 -1
  32. package/controller/package.json +3 -3
  33. package/lib/data-converter.js +19 -23
  34. package/lib/data-converter.js.map +1 -1
  35. package/lib/draggable/index.js +104 -43
  36. package/lib/draggable/index.js.map +1 -1
  37. package/lib/index.js +118 -205
  38. package/lib/index.js.map +1 -1
  39. package/lib/number-line/colors.js +3 -13
  40. package/lib/number-line/colors.js.map +1 -1
  41. package/lib/number-line/feedback.js +53 -69
  42. package/lib/number-line/feedback.js.map +1 -1
  43. package/lib/number-line/graph/arrow.js +19 -38
  44. package/lib/number-line/graph/arrow.js.map +1 -1
  45. package/lib/number-line/graph/elements/base.js +7 -13
  46. package/lib/number-line/graph/elements/base.js.map +1 -1
  47. package/lib/number-line/graph/elements/builder.js +6 -7
  48. package/lib/number-line/graph/elements/builder.js.map +1 -1
  49. package/lib/number-line/graph/elements/line.js +209 -265
  50. package/lib/number-line/graph/elements/line.js.map +1 -1
  51. package/lib/number-line/graph/elements/point.js +170 -201
  52. package/lib/number-line/graph/elements/point.js.map +1 -1
  53. package/lib/number-line/graph/elements/ray.js +147 -185
  54. package/lib/number-line/graph/elements/ray.js.map +1 -1
  55. package/lib/number-line/graph/index.js +217 -283
  56. package/lib/number-line/graph/index.js.map +1 -1
  57. package/lib/number-line/graph/line.js +12 -22
  58. package/lib/number-line/graph/line.js.map +1 -1
  59. package/lib/number-line/graph/stacks.js +31 -54
  60. package/lib/number-line/graph/stacks.js.map +1 -1
  61. package/lib/number-line/graph/tick-utils.js +120 -209
  62. package/lib/number-line/graph/tick-utils.js.map +1 -1
  63. package/lib/number-line/graph/ticks.js +144 -225
  64. package/lib/number-line/graph/ticks.js.map +1 -1
  65. package/lib/number-line/index.js +331 -395
  66. package/lib/number-line/index.js.map +1 -1
  67. package/lib/number-line/point-chooser/button.js +33 -58
  68. package/lib/number-line/point-chooser/button.js.map +1 -1
  69. package/lib/number-line/point-chooser/img.js +2 -3
  70. package/lib/number-line/point-chooser/img.js.map +1 -1
  71. package/lib/number-line/point-chooser/index.js +152 -148
  72. package/lib/number-line/point-chooser/index.js.map +1 -1
  73. package/lib/number-line/point-chooser/styles.js +29 -52
  74. package/lib/number-line/point-chooser/styles.js.map +1 -1
  75. package/lib/number-line/transitions/fade.js +69 -48
  76. package/lib/number-line/transitions/fade.js.map +1 -1
  77. package/lib/number-line/transitions/index.js +2 -4
  78. package/lib/number-line/transitions/index.js.map +1 -1
  79. package/package.json +14 -11
  80. package/esm/configure.js +0 -84095
  81. package/esm/configure.js.map +0 -1
  82. package/esm/controller.js +0 -68122
  83. package/esm/controller.js.map +0 -1
  84. package/esm/element.js +0 -44487
  85. package/esm/element.js.map +0 -1
  86. package/esm/package.json +0 -3
@@ -1,328 +1,262 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
- exports["default"] = exports.NumberLineGraph = void 0;
9
-
7
+ exports.default = exports.NumberLineGraph = void 0;
10
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
-
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
-
18
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
-
20
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
-
22
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
-
24
10
  var _react = _interopRequireDefault(require("react"));
25
-
26
11
  var _d3Scale = require("d3-scale");
27
-
28
12
  var _d3Selection = require("d3-selection");
29
-
30
13
  var _renderUi = require("@pie-lib/render-ui");
31
-
14
+ var _core = require("@dnd-kit/core");
32
15
  var _point = _interopRequireDefault(require("./elements/point"));
33
-
34
16
  var _line = _interopRequireDefault(require("./elements/line"));
35
-
36
17
  var _ray = _interopRequireDefault(require("./elements/ray"));
37
-
38
18
  var _line2 = _interopRequireDefault(require("./line"));
39
-
40
19
  var _arrow = _interopRequireDefault(require("./arrow"));
41
-
42
20
  var _ticks = _interopRequireDefault(require("./ticks"));
43
-
44
21
  var _tickUtils = require("./tick-utils");
45
-
46
22
  var _stacks = _interopRequireDefault(require("./stacks"));
47
-
48
23
  var _reactTransitionGroup = require("react-transition-group");
49
-
50
24
  var _propTypes = _interopRequireDefault(require("prop-types"));
51
-
52
25
  var _transitions = require("../transitions");
53
-
54
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
55
-
56
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
57
-
58
- var getXScale = function getXScale(min, max, width, padding) {
26
+ const getXScale = (min, max, width, padding) => {
59
27
  if (min === undefined || max === undefined || width === undefined) {
60
28
  throw new Error('missing min/max/width');
61
29
  }
62
-
63
30
  return (0, _d3Scale.scaleLinear)().domain([min, max]).range([padding, width - padding]);
64
31
  };
65
-
66
- var Debug = function Debug(props) {
67
- return /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("text", {
68
- x: "00",
69
- y: "20"
70
- }, JSON.stringify(props)));
71
- };
72
-
73
- var NumberLineGraph = /*#__PURE__*/function (_React$Component) {
74
- (0, _inherits2["default"])(NumberLineGraph, _React$Component);
75
-
76
- var _super = _createSuper(NumberLineGraph);
77
-
78
- function NumberLineGraph(props) {
79
- var _this;
80
-
81
- (0, _classCallCheck2["default"])(this, NumberLineGraph);
82
- _this = _super.call(this, props);
83
- _this.state = {};
84
- return _this;
32
+ const Debug = props => /*#__PURE__*/_react.default.createElement("g", null, /*#__PURE__*/_react.default.createElement("text", {
33
+ x: "00",
34
+ y: "20"
35
+ }, JSON.stringify(props)));
36
+ class NumberLineGraph extends _react.default.Component {
37
+ constructor(props) {
38
+ super(props);
39
+ this.state = {};
85
40
  }
86
-
87
- (0, _createClass2["default"])(NumberLineGraph, [{
88
- key: "xScaleFn",
89
- value: function xScaleFn() {
90
- var _this$props = this.props,
91
- domain = _this$props.domain,
92
- width = _this$props.width;
93
-
94
- var _ref = domain || {},
95
- max = _ref.max,
96
- min = _ref.min;
97
-
98
- var padding = 20;
99
-
100
- if (max) {
101
- padding = max.toString().length * 4 + 15;
102
- }
103
-
104
- return getXScale(min, max, width, padding);
105
- }
106
- }, {
107
- key: "snapValueFn",
108
- value: function snapValueFn() {
109
- var _this$props2 = this.props,
110
- domain = _this$props2.domain,
111
- ticks = _this$props2.ticks;
112
- return _tickUtils.snapTo.bind(null, domain.min, domain.max, ticks.minor);
41
+ xScaleFn() {
42
+ const {
43
+ domain,
44
+ width
45
+ } = this.props;
46
+ const {
47
+ max,
48
+ min
49
+ } = domain || {};
50
+ let padding = 20;
51
+ if (max) {
52
+ padding = max.toString().length * 4 + 15;
113
53
  }
114
- }, {
115
- key: "getChildContext",
116
- value: function getChildContext() {
117
- return {
118
- xScale: this.xScaleFn(),
119
- snapValue: this.snapValueFn()
120
- };
121
- }
122
- /**
123
- * Note: we use d3 click + mouse to give us domain values directly.
124
- * Saves us having to calculate them ourselves from a MouseEvent.
125
- */
126
-
127
- }, {
128
- key: "onRectClick",
129
- value: function onRectClick(rect) {
130
- var _this$props3 = this.props,
131
- elements = _this$props3.elements,
132
- disabled = _this$props3.disabled;
133
-
134
- if (disabled) {
135
- return;
136
- }
137
-
138
- var anyElementSelected = elements.some(function (e) {
139
- return e.selected;
140
- });
54
+ return getXScale(min, max, width, padding);
55
+ }
56
+ snapValueFn() {
57
+ const {
58
+ domain,
59
+ ticks
60
+ } = this.props;
61
+ return _tickUtils.snapTo.bind(null, domain.min, domain.max, ticks.minor);
62
+ }
63
+ getChildContext() {
64
+ return {
65
+ xScale: this.xScaleFn(),
66
+ snapValue: this.snapValueFn()
67
+ };
68
+ }
141
69
 
142
- if (anyElementSelected) {
143
- this.props.onDeselectElements();
144
- } else {
145
- var coords = (0, _d3Selection.mouse)(rect._groups[0][0]);
146
- var x = this.xScaleFn().invert(coords[0]);
147
- this.addElement(x);
148
- }
70
+ /**
71
+ * Note: we use d3 click + mouse to give us domain values directly.
72
+ * Saves us having to calculate them ourselves from a MouseEvent.
73
+ */
74
+ onRectClick(rect) {
75
+ const {
76
+ elements,
77
+ disabled
78
+ } = this.props;
79
+ if (disabled) {
80
+ return;
149
81
  }
150
- }, {
151
- key: "componentDidMount",
152
- value: function componentDidMount() {
153
- var rect = (0, _d3Selection.select)(this.rect);
154
- rect.on('click', this.onRectClick.bind(this, rect));
82
+ const anyElementSelected = elements.some(e => e.selected);
83
+ if (anyElementSelected) {
84
+ this.props.onDeselectElements();
85
+ } else {
86
+ var coords = (0, _d3Selection.mouse)(rect._groups[0][0]);
87
+ const x = this.xScaleFn().invert(coords[0]);
88
+ this.addElement(x);
155
89
  }
156
- }, {
157
- key: "addElement",
158
- value: function addElement(x) {
159
- var snapFn = this.snapValueFn();
160
- var v = snapFn(x);
161
- this.props.onAddElement(v);
162
- }
163
- }, {
164
- key: "render",
165
- value: function render() {
166
- var _this2 = this;
167
-
168
- var _this$props4 = this.props,
169
- domain = _this$props4.domain,
170
- width = _this$props4.width,
171
- ticks = _this$props4.ticks,
172
- height = _this$props4.height,
173
- onToggleElement = _this$props4.onToggleElement,
174
- onMoveElement = _this$props4.onMoveElement,
175
- disabled = _this$props4.disabled,
176
- fraction = _this$props4.fraction;
177
- var arrows = this.props.arrows;
178
- arrows = arrows || {
179
- left: true,
180
- right: true
181
- };
182
- var min = domain.min,
183
- max = domain.max;
184
-
185
- if (domain.max <= domain.min) {
186
- return /*#__PURE__*/_react["default"].createElement("div", null, domain.max, " is less than or equal to ", domain.min);
187
- } else {
188
- var lineY = height - 30;
189
- var stacks = new _stacks["default"](domain);
190
- var elements = this.props.elements.map(function (el, index) {
191
- var stackIndex = stacks.add(el);
192
-
193
- if (stackIndex === -1) {
194
- throw new Error('stack index is -1, cant add element');
195
- }
196
-
197
- var y = lineY - stackIndex * 25;
198
- var commonProps = {
199
- key: index,
200
- y: y,
201
- selected: el.selected && !disabled,
202
- interval: ticks.minor,
203
- disabled: disabled,
204
- correct: el.correct
90
+ }
91
+ componentDidMount() {
92
+ const rect = (0, _d3Selection.select)(this.rect);
93
+ rect.on('click', this.onRectClick.bind(this, rect));
94
+ }
95
+ addElement(x) {
96
+ const snapFn = this.snapValueFn();
97
+ const v = snapFn(x);
98
+ this.props.onAddElement(v);
99
+ }
100
+ render() {
101
+ const {
102
+ domain,
103
+ width,
104
+ ticks,
105
+ height,
106
+ onToggleElement,
107
+ onMoveElement,
108
+ disabled,
109
+ fraction
110
+ } = this.props;
111
+ let {
112
+ arrows
113
+ } = this.props;
114
+ arrows = arrows || {
115
+ left: true,
116
+ right: true
117
+ };
118
+ const {
119
+ min,
120
+ max
121
+ } = domain;
122
+ if (domain.max <= domain.min) {
123
+ return /*#__PURE__*/_react.default.createElement("div", null, domain.max, " is less than or equal to ", domain.min);
124
+ } else {
125
+ const lineY = height - 30;
126
+ const stacks = new _stacks.default(domain);
127
+ const elements = this.props.elements.map((el, index) => {
128
+ const stackIndex = stacks.add(el);
129
+ if (stackIndex === -1) {
130
+ throw new Error('stack index is -1, cant add element');
131
+ }
132
+ const y = lineY - stackIndex * 25;
133
+ const commonProps = {
134
+ key: index,
135
+ y,
136
+ selected: el.selected && !disabled,
137
+ interval: ticks.minor,
138
+ disabled,
139
+ correct: el.correct
140
+ };
141
+ const toggleElement = onToggleElement.bind(null, index, el);
142
+ const moveElement = onMoveElement.bind(null, index, el);
143
+ if (el.type === 'line') {
144
+ const empty = {
145
+ left: el.leftPoint === 'empty',
146
+ right: el.rightPoint === 'empty'
205
147
  };
206
- var toggleElement = onToggleElement.bind(null, index, el);
207
- var moveElement = onMoveElement.bind(null, index, el);
208
-
209
- if (el.type === 'line') {
210
- var empty = {
211
- left: el.leftPoint === 'empty',
212
- right: el.rightPoint === 'empty'
213
- };
214
- return /*#__PURE__*/_react["default"].createElement(_line["default"], (0, _extends2["default"])({}, commonProps, {
215
- domain: {
216
- min: min,
217
- max: max
218
- },
219
- onMoveLine: moveElement,
220
- onToggleSelect: toggleElement,
221
- position: el.position,
222
- empty: empty
223
- }));
224
- } else if (el.type === 'point') {
225
- var bounds = {
226
- left: min - el.position,
227
- right: max - el.position
228
- };
229
- return /*#__PURE__*/_react["default"].createElement(_point["default"], (0, _extends2["default"])({}, commonProps, {
230
- empty: el.pointType === 'empty',
231
- position: el.position,
232
- bounds: bounds,
233
- onClick: toggleElement,
234
- onMove: moveElement
235
- }));
236
- } else if (el.type === 'ray') {
237
- return /*#__PURE__*/_react["default"].createElement(_ray["default"], (0, _extends2["default"])({}, commonProps, {
238
- domain: {
239
- min: min,
240
- max: max
241
- },
242
- direction: el.direction,
243
- position: el.position,
244
- onMove: moveElement,
245
- onToggleSelect: toggleElement,
246
- width: width,
247
- empty: el.pointType === 'empty'
248
- }));
249
- }
250
- });
251
- return /*#__PURE__*/_react["default"].createElement("svg", {
252
- width: width,
253
- height: fraction ? height + 20 : height
254
- }, false && /*#__PURE__*/_react["default"].createElement(Debug, {
255
- domain: domain,
256
- ticks: ticks
257
- }), /*#__PURE__*/_react["default"].createElement(_line2["default"], {
258
- y: lineY,
259
- width: width
260
- }), arrows.left && /*#__PURE__*/_react["default"].createElement(_arrow["default"], {
261
- y: lineY
262
- }), arrows.right && /*#__PURE__*/_react["default"].createElement(_arrow["default"], {
263
- x: width,
264
- y: lineY,
265
- direction: "right"
266
- }), /*#__PURE__*/_react["default"].createElement(_ticks["default"], {
267
- y: lineY,
268
- domain: domain,
269
- width: width,
270
- ticks: ticks,
271
- fraction: fraction
272
- }), /*#__PURE__*/_react["default"].createElement("rect", {
273
- ref: function ref(rect) {
274
- return _this2.rect = rect;
275
- } //need to have a fill for it to be clickable
276
- ,
277
- fill: _renderUi.color.primary(),
278
- fillOpacity: "0.0",
279
- width: width,
280
- height: height
281
- }), /*#__PURE__*/_react["default"].createElement(_reactTransitionGroup.TransitionGroup, {
282
- component: "g"
283
- }, elements.map(function (c, index) {
284
- return /*#__PURE__*/_react["default"].createElement(_transitions.Fade, {
148
+ return /*#__PURE__*/_react.default.createElement(_line.default, (0, _extends2.default)({}, commonProps, {
149
+ domain: {
150
+ min: min,
151
+ max: max
152
+ },
153
+ onMoveLine: moveElement,
154
+ onToggleSelect: toggleElement,
155
+ position: el.position,
156
+ empty: empty,
157
+ key: index
158
+ }));
159
+ } else if (el.type === 'point') {
160
+ const bounds = {
161
+ left: min - el.position,
162
+ right: max - el.position
163
+ };
164
+ return /*#__PURE__*/_react.default.createElement(_point.default, (0, _extends2.default)({}, commonProps, {
165
+ empty: el.pointType === 'empty',
166
+ position: el.position,
167
+ bounds: bounds,
168
+ onClick: toggleElement,
169
+ onMove: moveElement,
170
+ key: index
171
+ }));
172
+ } else if (el.type === 'ray') {
173
+ return /*#__PURE__*/_react.default.createElement(_ray.default, (0, _extends2.default)({}, commonProps, {
174
+ domain: {
175
+ min: min,
176
+ max: max
177
+ },
178
+ direction: el.direction,
179
+ position: el.position,
180
+ onMove: moveElement,
181
+ onToggleSelect: toggleElement,
182
+ width: width,
183
+ empty: el.pointType === 'empty',
285
184
  key: index
286
- }, c);
287
- })));
288
- }
185
+ }));
186
+ }
187
+ });
188
+ return /*#__PURE__*/_react.default.createElement(_core.DndContext, null, /*#__PURE__*/_react.default.createElement("div", {
189
+ style: {
190
+ display: 'inline-block'
191
+ }
192
+ }, /*#__PURE__*/_react.default.createElement("svg", {
193
+ width: width,
194
+ height: fraction ? height + 20 : height
195
+ }, false && /*#__PURE__*/_react.default.createElement(Debug, {
196
+ domain: domain,
197
+ ticks: ticks
198
+ }), /*#__PURE__*/_react.default.createElement(_line2.default, {
199
+ y: lineY,
200
+ width: width
201
+ }), arrows.left && /*#__PURE__*/_react.default.createElement(_arrow.default, {
202
+ y: lineY
203
+ }), arrows.right && /*#__PURE__*/_react.default.createElement(_arrow.default, {
204
+ x: width,
205
+ y: lineY,
206
+ direction: "right"
207
+ }), /*#__PURE__*/_react.default.createElement(_ticks.default, {
208
+ y: lineY,
209
+ domain: domain,
210
+ width: width,
211
+ ticks: ticks,
212
+ fraction: fraction
213
+ }), /*#__PURE__*/_react.default.createElement("rect", {
214
+ ref: rect => this.rect = rect
215
+ //need to have a fill for it to be clickable
216
+ ,
217
+ fill: _renderUi.color.primary(),
218
+ fillOpacity: "0.0",
219
+ width: width,
220
+ height: height
221
+ }), /*#__PURE__*/_react.default.createElement(_reactTransitionGroup.TransitionGroup, {
222
+ component: "g"
223
+ }, elements.map((c, index) => /*#__PURE__*/_react.default.createElement(_transitions.Fade, {
224
+ key: index
225
+ }, c))))));
289
226
  }
290
- }]);
291
- return NumberLineGraph;
292
- }(_react["default"].Component);
293
-
227
+ }
228
+ }
294
229
  exports.NumberLineGraph = NumberLineGraph;
295
- (0, _defineProperty2["default"])(NumberLineGraph, "childContextTypes", {
296
- xScale: _propTypes["default"].func.isRequired,
297
- snapValue: _propTypes["default"].func.isRequired
230
+ (0, _defineProperty2.default)(NumberLineGraph, "childContextTypes", {
231
+ xScale: _propTypes.default.func.isRequired,
232
+ snapValue: _propTypes.default.func.isRequired
298
233
  });
299
- (0, _defineProperty2["default"])(NumberLineGraph, "propTypes", {
300
- domain: _propTypes["default"].shape({
301
- min: _propTypes["default"].number.isRequired,
302
- max: _propTypes["default"].number.isRequired
234
+ (0, _defineProperty2.default)(NumberLineGraph, "propTypes", {
235
+ domain: _propTypes.default.shape({
236
+ min: _propTypes.default.number.isRequired,
237
+ max: _propTypes.default.number.isRequired
303
238
  }).isRequired,
304
- ticks: _propTypes["default"].shape({
305
- minor: _propTypes["default"].number,
306
- major: _propTypes["default"].number
239
+ ticks: _propTypes.default.shape({
240
+ minor: _propTypes.default.number,
241
+ major: _propTypes.default.number
307
242
  }).isRequired,
308
- fraction: _propTypes["default"].bool,
309
- width: _propTypes["default"].number.isRequired,
310
- height: _propTypes["default"].number.isRequired,
311
- onToggleElement: _propTypes["default"].func.isRequired,
312
- onMoveElement: _propTypes["default"].func.isRequired,
313
- onAddElement: _propTypes["default"].func.isRequired,
314
- debug: _propTypes["default"].bool,
315
- elements: _propTypes["default"].array,
316
- disabled: _propTypes["default"].bool,
317
- onDeselectElements: _propTypes["default"].func,
318
- arrows: _propTypes["default"].shape({
319
- left: _propTypes["default"].bool,
320
- right: _propTypes["default"].bool
243
+ fraction: _propTypes.default.bool,
244
+ width: _propTypes.default.number.isRequired,
245
+ height: _propTypes.default.number.isRequired,
246
+ onToggleElement: _propTypes.default.func.isRequired,
247
+ onMoveElement: _propTypes.default.func.isRequired,
248
+ onAddElement: _propTypes.default.func.isRequired,
249
+ debug: _propTypes.default.bool,
250
+ elements: _propTypes.default.array,
251
+ disabled: _propTypes.default.bool,
252
+ onDeselectElements: _propTypes.default.func,
253
+ arrows: _propTypes.default.shape({
254
+ left: _propTypes.default.bool,
255
+ right: _propTypes.default.bool
321
256
  })
322
257
  });
323
- (0, _defineProperty2["default"])(NumberLineGraph, "defaultProps", {
258
+ (0, _defineProperty2.default)(NumberLineGraph, "defaultProps", {
324
259
  debug: false
325
260
  });
326
- var _default = NumberLineGraph;
327
- exports["default"] = _default;
261
+ var _default = exports.default = NumberLineGraph;
328
262
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/number-line/graph/index.jsx"],"names":["getXScale","min","max","width","padding","undefined","Error","domain","range","Debug","props","JSON","stringify","NumberLineGraph","state","toString","length","ticks","snapTo","bind","minor","xScale","xScaleFn","snapValue","snapValueFn","rect","elements","disabled","anyElementSelected","some","e","selected","onDeselectElements","coords","_groups","x","invert","addElement","on","onRectClick","snapFn","v","onAddElement","height","onToggleElement","onMoveElement","fraction","arrows","left","right","lineY","stacks","Stacks","map","el","index","stackIndex","add","y","commonProps","key","interval","correct","toggleElement","moveElement","type","empty","leftPoint","rightPoint","position","bounds","pointType","direction","color","primary","c","React","Component","PropTypes","func","isRequired","shape","number","major","bool","debug","array"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { scaleLinear } from 'd3-scale';\nimport { select, mouse } from 'd3-selection';\nimport { color } from '@pie-lib/render-ui';\nimport Point from './elements/point';\nimport Line from './elements/line';\nimport Ray from './elements/ray';\nimport BaseLine from './line';\nimport Arrow from './arrow';\nimport Ticks from './ticks';\nimport { snapTo } from './tick-utils';\nimport Stacks from './stacks';\nimport { TransitionGroup } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport { Fade } from '../transitions';\n\nconst getXScale = (min, max, width, padding) => {\n if (min === undefined || max === undefined || width === undefined) {\n throw new Error('missing min/max/width');\n }\n\n return scaleLinear()\n .domain([min, max])\n .range([padding, width - padding]);\n};\n\nconst Debug = (props) => (\n <g>\n <text x=\"00\" y=\"20\">\n {JSON.stringify(props)}\n </text>\n </g>\n);\n\nexport class NumberLineGraph extends React.Component {\n static childContextTypes = {\n xScale: PropTypes.func.isRequired,\n snapValue: PropTypes.func.isRequired,\n };\n\n static propTypes = {\n domain: PropTypes.shape({\n min: PropTypes.number.isRequired,\n max: PropTypes.number.isRequired,\n }).isRequired,\n ticks: PropTypes.shape({ minor: PropTypes.number, major: PropTypes.number }).isRequired,\n fraction: PropTypes.bool,\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n onToggleElement: PropTypes.func.isRequired,\n onMoveElement: PropTypes.func.isRequired,\n onAddElement: PropTypes.func.isRequired,\n debug: PropTypes.bool,\n elements: PropTypes.array,\n disabled: PropTypes.bool,\n onDeselectElements: PropTypes.func,\n arrows: PropTypes.shape({ left: PropTypes.bool, right: PropTypes.bool }),\n };\n\n static defaultProps = {\n debug: false,\n };\n\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n xScaleFn() {\n const { domain, width } = this.props;\n const { max, min } = domain || {};\n\n let padding = 20;\n\n if (max) {\n padding = max.toString().length * 4 + 15;\n }\n\n return getXScale(min, max, width, padding);\n }\n\n snapValueFn() {\n const { domain, ticks } = this.props;\n return snapTo.bind(null, domain.min, domain.max, ticks.minor);\n }\n\n getChildContext() {\n return {\n xScale: this.xScaleFn(),\n snapValue: this.snapValueFn(),\n };\n }\n\n /**\n * Note: we use d3 click + mouse to give us domain values directly.\n * Saves us having to calculate them ourselves from a MouseEvent.\n */\n onRectClick(rect) {\n const { elements, disabled } = this.props;\n\n if (disabled) {\n return;\n }\n\n const anyElementSelected = elements.some((e) => e.selected);\n\n if (anyElementSelected) {\n this.props.onDeselectElements();\n } else {\n var coords = mouse(rect._groups[0][0]);\n const x = this.xScaleFn().invert(coords[0]);\n this.addElement(x);\n }\n }\n\n componentDidMount() {\n const rect = select(this.rect);\n rect.on('click', this.onRectClick.bind(this, rect));\n }\n\n addElement(x) {\n const snapFn = this.snapValueFn();\n const v = snapFn(x);\n this.props.onAddElement(v);\n }\n\n render() {\n const { domain, width, ticks, height, onToggleElement, onMoveElement, disabled, fraction } = this.props;\n let { arrows } = this.props;\n\n arrows = arrows || { left: true, right: true };\n const { min, max } = domain;\n\n if (domain.max <= domain.min) {\n return (\n <div>\n {domain.max} is less than or equal to {domain.min}\n </div>\n );\n } else {\n const lineY = height - 30;\n\n const stacks = new Stacks(domain);\n\n const elements = this.props.elements.map((el, index) => {\n const stackIndex = stacks.add(el);\n\n if (stackIndex === -1) {\n throw new Error('stack index is -1, cant add element');\n }\n\n const y = lineY - stackIndex * 25;\n\n const commonProps = {\n key: index,\n y,\n selected: el.selected && !disabled,\n interval: ticks.minor,\n disabled,\n correct: el.correct,\n };\n\n const toggleElement = onToggleElement.bind(null, index, el);\n const moveElement = onMoveElement.bind(null, index, el);\n\n if (el.type === 'line') {\n const empty = {\n left: el.leftPoint === 'empty',\n right: el.rightPoint === 'empty',\n };\n\n return (\n <Line\n {...commonProps}\n domain={{ min: min, max: max }}\n onMoveLine={moveElement}\n onToggleSelect={toggleElement}\n position={el.position}\n empty={empty}\n />\n );\n } else if (el.type === 'point') {\n const bounds = {\n left: min - el.position,\n right: max - el.position,\n };\n\n return (\n <Point\n {...commonProps}\n empty={el.pointType === 'empty'}\n position={el.position}\n bounds={bounds}\n onClick={toggleElement}\n onMove={moveElement}\n />\n );\n } else if (el.type === 'ray') {\n return (\n <Ray\n {...commonProps}\n domain={{ min: min, max: max }}\n direction={el.direction}\n position={el.position}\n onMove={moveElement}\n onToggleSelect={toggleElement}\n width={width}\n empty={el.pointType === 'empty'}\n />\n );\n }\n });\n\n return (\n <svg width={width} height={fraction ? height + 20 : height}>\n {false && <Debug domain={domain} ticks={ticks} />}\n <BaseLine y={lineY} width={width} />\n {arrows.left && <Arrow y={lineY} />}\n {arrows.right && <Arrow x={width} y={lineY} direction=\"right\" />}\n <Ticks y={lineY} domain={domain} width={width} ticks={ticks} fraction={fraction} />\n <rect\n ref={(rect) => (this.rect = rect)}\n //need to have a fill for it to be clickable\n fill={color.primary()}\n fillOpacity=\"0.0\"\n width={width}\n height={height}\n />\n <TransitionGroup component=\"g\">\n {elements.map((c, index) => (\n <Fade key={index}>{c}</Fade>\n ))}\n </TransitionGroup>\n </svg>\n );\n }\n }\n}\n\nexport default NumberLineGraph;\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_d3Scale","_d3Selection","_renderUi","_core","_point","_line","_ray","_line2","_arrow","_ticks","_tickUtils","_stacks","_reactTransitionGroup","_propTypes","_transitions","getXScale","min","max","width","padding","undefined","Error","scaleLinear","domain","range","Debug","props","default","createElement","x","y","JSON","stringify","NumberLineGraph","React","Component","constructor","state","xScaleFn","toString","length","snapValueFn","ticks","snapTo","bind","minor","getChildContext","xScale","snapValue","onRectClick","rect","elements","disabled","anyElementSelected","some","e","selected","onDeselectElements","coords","mouse","_groups","invert","addElement","componentDidMount","select","on","snapFn","v","onAddElement","render","height","onToggleElement","onMoveElement","fraction","arrows","left","right","lineY","stacks","Stacks","map","el","index","stackIndex","add","commonProps","key","interval","correct","toggleElement","moveElement","type","empty","leftPoint","rightPoint","_extends2","onMoveLine","onToggleSelect","position","bounds","pointType","onClick","onMove","direction","DndContext","style","display","ref","fill","color","primary","fillOpacity","TransitionGroup","component","c","Fade","exports","_defineProperty2","PropTypes","func","isRequired","shape","number","major","bool","debug","array","_default"],"sources":["../../../src/number-line/graph/index.jsx"],"sourcesContent":["import React from 'react';\nimport { scaleLinear } from 'd3-scale';\nimport { select, mouse } from 'd3-selection';\nimport { color } from '@pie-lib/render-ui';\nimport { DndContext } from '@dnd-kit/core';\nimport Point from './elements/point';\nimport Line from './elements/line';\nimport Ray from './elements/ray';\nimport BaseLine from './line';\nimport Arrow from './arrow';\nimport Ticks from './ticks';\nimport { snapTo } from './tick-utils';\nimport Stacks from './stacks';\nimport { TransitionGroup } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport { Fade } from '../transitions';\n\nconst getXScale = (min, max, width, padding) => {\n if (min === undefined || max === undefined || width === undefined) {\n throw new Error('missing min/max/width');\n }\n\n return scaleLinear()\n .domain([min, max])\n .range([padding, width - padding]);\n};\n\nconst Debug = (props) => (\n <g>\n <text x=\"00\" y=\"20\">\n {JSON.stringify(props)}\n </text>\n </g>\n);\n\nexport class NumberLineGraph extends React.Component {\n static childContextTypes = {\n xScale: PropTypes.func.isRequired,\n snapValue: PropTypes.func.isRequired,\n };\n\n static propTypes = {\n domain: PropTypes.shape({\n min: PropTypes.number.isRequired,\n max: PropTypes.number.isRequired,\n }).isRequired,\n ticks: PropTypes.shape({ minor: PropTypes.number, major: PropTypes.number }).isRequired,\n fraction: PropTypes.bool,\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n onToggleElement: PropTypes.func.isRequired,\n onMoveElement: PropTypes.func.isRequired,\n onAddElement: PropTypes.func.isRequired,\n debug: PropTypes.bool,\n elements: PropTypes.array,\n disabled: PropTypes.bool,\n onDeselectElements: PropTypes.func,\n arrows: PropTypes.shape({ left: PropTypes.bool, right: PropTypes.bool }),\n };\n\n static defaultProps = {\n debug: false,\n };\n\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n xScaleFn() {\n const { domain, width } = this.props;\n const { max, min } = domain || {};\n\n let padding = 20;\n\n if (max) {\n padding = max.toString().length * 4 + 15;\n }\n\n return getXScale(min, max, width, padding);\n }\n\n snapValueFn() {\n const { domain, ticks } = this.props;\n return snapTo.bind(null, domain.min, domain.max, ticks.minor);\n }\n\n getChildContext() {\n return {\n xScale: this.xScaleFn(),\n snapValue: this.snapValueFn(),\n };\n }\n\n /**\n * Note: we use d3 click + mouse to give us domain values directly.\n * Saves us having to calculate them ourselves from a MouseEvent.\n */\n onRectClick(rect) {\n const { elements, disabled } = this.props;\n\n if (disabled) {\n return;\n }\n\n const anyElementSelected = elements.some((e) => e.selected);\n\n if (anyElementSelected) {\n this.props.onDeselectElements();\n } else {\n var coords = mouse(rect._groups[0][0]);\n const x = this.xScaleFn().invert(coords[0]);\n this.addElement(x);\n }\n }\n\n componentDidMount() {\n const rect = select(this.rect);\n rect.on('click', this.onRectClick.bind(this, rect));\n }\n\n addElement(x) {\n const snapFn = this.snapValueFn();\n const v = snapFn(x);\n this.props.onAddElement(v);\n }\n\n render() {\n const { domain, width, ticks, height, onToggleElement, onMoveElement, disabled, fraction } = this.props;\n let { arrows } = this.props;\n\n arrows = arrows || { left: true, right: true };\n const { min, max } = domain;\n\n if (domain.max <= domain.min) {\n return (\n <div>\n {domain.max} is less than or equal to {domain.min}\n </div>\n );\n } else {\n const lineY = height - 30;\n\n const stacks = new Stacks(domain);\n\n const elements = this.props.elements.map((el, index) => {\n const stackIndex = stacks.add(el);\n\n if (stackIndex === -1) {\n throw new Error('stack index is -1, cant add element');\n }\n\n const y = lineY - stackIndex * 25;\n\n const commonProps = {\n key: index,\n y,\n selected: el.selected && !disabled,\n interval: ticks.minor,\n disabled,\n correct: el.correct,\n };\n\n const toggleElement = onToggleElement.bind(null, index, el);\n const moveElement = onMoveElement.bind(null, index, el);\n\n if (el.type === 'line') {\n const empty = {\n left: el.leftPoint === 'empty',\n right: el.rightPoint === 'empty',\n };\n\n return (\n <Line\n {...commonProps}\n domain={{ min: min, max: max }}\n onMoveLine={moveElement}\n onToggleSelect={toggleElement}\n position={el.position}\n empty={empty}\n key={index}\n />\n );\n } else if (el.type === 'point') {\n const bounds = {\n left: min - el.position,\n right: max - el.position,\n };\n\n return (\n <Point\n {...commonProps}\n empty={el.pointType === 'empty'}\n position={el.position}\n bounds={bounds}\n onClick={toggleElement}\n onMove={moveElement}\n key={index}\n />\n );\n } else if (el.type === 'ray') {\n return (\n <Ray\n {...commonProps}\n domain={{ min: min, max: max }}\n direction={el.direction}\n position={el.position}\n onMove={moveElement}\n onToggleSelect={toggleElement}\n width={width}\n empty={el.pointType === 'empty'}\n key={index}\n />\n );\n }\n });\n\n return (\n <DndContext>\n <div style={{ display: 'inline-block' }}>\n <svg width={width} height={fraction ? height + 20 : height}>\n {false && <Debug domain={domain} ticks={ticks} />}\n <BaseLine y={lineY} width={width} />\n {arrows.left && <Arrow y={lineY} />}\n {arrows.right && <Arrow x={width} y={lineY} direction=\"right\" />}\n <Ticks y={lineY} domain={domain} width={width} ticks={ticks} fraction={fraction} />\n <rect\n ref={(rect) => (this.rect = rect)}\n //need to have a fill for it to be clickable\n fill={color.primary()}\n fillOpacity=\"0.0\"\n width={width}\n height={height}\n />\n <TransitionGroup component=\"g\">\n {elements.map((c, index) => (\n <Fade key={index}>{c}</Fade>\n ))}\n </TransitionGroup>\n </svg>\n </div>\n </DndContext>\n );\n }\n }\n}\n\nexport default NumberLineGraph;\n"],"mappings":"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","ignoreList":[]}