@pie-element/number-line 8.9.1-next.1 → 8.9.1-next.10
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.
- package/configure/lib/arrows.js +124 -0
- package/configure/lib/arrows.js.map +1 -0
- package/configure/lib/card-bar.js +78 -0
- package/configure/lib/card-bar.js.map +1 -0
- package/configure/lib/defaults.js +144 -0
- package/configure/lib/defaults.js.map +1 -0
- package/configure/lib/domain.js +140 -0
- package/configure/lib/domain.js.map +1 -0
- package/configure/lib/index.js +225 -0
- package/configure/lib/index.js.map +1 -0
- package/configure/lib/main.js +867 -0
- package/configure/lib/main.js.map +1 -0
- package/configure/lib/number-text-field.js +97 -0
- package/configure/lib/number-text-field.js.map +1 -0
- package/configure/lib/point-config.js +144 -0
- package/configure/lib/point-config.js.map +1 -0
- package/configure/lib/size.js +100 -0
- package/configure/lib/size.js.map +1 -0
- package/configure/lib/ticks.js +288 -0
- package/configure/lib/ticks.js.map +1 -0
- package/configure/lib/utils.js +14 -0
- package/configure/lib/utils.js.map +1 -0
- package/controller/lib/defaults.js +47 -0
- package/controller/lib/defaults.js.map +1 -0
- package/controller/lib/index.js +474 -0
- package/controller/lib/index.js.map +1 -0
- package/lib/data-converter.js +100 -0
- package/lib/data-converter.js.map +1 -0
- package/lib/draggable/index.js +53 -0
- package/lib/draggable/index.js.map +1 -0
- package/lib/index.js +241 -0
- package/lib/index.js.map +1 -0
- package/lib/number-line/colors.js +21 -0
- package/lib/number-line/colors.js.map +1 -0
- package/lib/number-line/feedback.js +108 -0
- package/lib/number-line/feedback.js.map +1 -0
- package/lib/number-line/graph/arrow.js +63 -0
- package/lib/number-line/graph/arrow.js.map +1 -0
- package/lib/number-line/graph/elements/base.js +26 -0
- package/lib/number-line/graph/elements/base.js.map +1 -0
- package/lib/number-line/graph/elements/builder.js +38 -0
- package/lib/number-line/graph/elements/builder.js.map +1 -0
- package/lib/number-line/graph/elements/line.js +317 -0
- package/lib/number-line/graph/elements/line.js.map +1 -0
- package/lib/number-line/graph/elements/point.js +233 -0
- package/lib/number-line/graph/elements/point.js.map +1 -0
- package/lib/number-line/graph/elements/ray.js +227 -0
- package/lib/number-line/graph/elements/ray.js.map +1 -0
- package/lib/number-line/graph/index.js +328 -0
- package/lib/number-line/graph/index.js.map +1 -0
- package/lib/number-line/graph/line.js +48 -0
- package/lib/number-line/graph/line.js.map +1 -0
- package/lib/number-line/graph/stacks.js +101 -0
- package/lib/number-line/graph/stacks.js.map +1 -0
- package/lib/number-line/graph/tick-utils.js +440 -0
- package/lib/number-line/graph/tick-utils.js.map +1 -0
- package/lib/number-line/graph/ticks.js +239 -0
- package/lib/number-line/graph/ticks.js.map +1 -0
- package/lib/number-line/index.js +425 -0
- package/lib/number-line/index.js.map +1 -0
- package/lib/number-line/point-chooser/button.js +74 -0
- package/lib/number-line/point-chooser/button.js.map +1 -0
- package/lib/number-line/point-chooser/img.js +9 -0
- package/lib/number-line/point-chooser/img.js.map +1 -0
- package/lib/number-line/point-chooser/index.js +193 -0
- package/lib/number-line/point-chooser/index.js.map +1 -0
- package/lib/number-line/point-chooser/styles.js +100 -0
- package/lib/number-line/point-chooser/styles.js.map +1 -0
- package/lib/number-line/transitions/fade.js +67 -0
- package/lib/number-line/transitions/fade.js.map +1 -0
- package/lib/number-line/transitions/index.js +16 -0
- package/lib/number-line/transitions/index.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports["default"] = exports.Ray = void 0;
|
|
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
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
23
|
+
|
|
24
|
+
var colors = _interopRequireWildcard(require("../../colors"));
|
|
25
|
+
|
|
26
|
+
var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
|
|
27
|
+
|
|
28
|
+
var _react = _interopRequireDefault(require("react"));
|
|
29
|
+
|
|
30
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
31
|
+
|
|
32
|
+
var _arrow = _interopRequireDefault(require("../arrow"));
|
|
33
|
+
|
|
34
|
+
var _point = _interopRequireDefault(require("./point"));
|
|
35
|
+
|
|
36
|
+
var _base = require("./base");
|
|
37
|
+
|
|
38
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
39
|
+
|
|
40
|
+
var _reactJss = _interopRequireDefault(require("react-jss"));
|
|
41
|
+
|
|
42
|
+
var _isNumber = _interopRequireDefault(require("lodash/isNumber"));
|
|
43
|
+
|
|
44
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
45
|
+
|
|
46
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
47
|
+
|
|
48
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
49
|
+
|
|
50
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
51
|
+
|
|
52
|
+
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); }; }
|
|
53
|
+
|
|
54
|
+
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; } }
|
|
55
|
+
|
|
56
|
+
var rayColor = function rayColor(_rayColor) {
|
|
57
|
+
return {
|
|
58
|
+
'& line': {
|
|
59
|
+
stroke: _rayColor
|
|
60
|
+
},
|
|
61
|
+
'& .arrow': {
|
|
62
|
+
fill: _rayColor,
|
|
63
|
+
strokeWidth: '1px',
|
|
64
|
+
stroke: _rayColor
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
var style = {
|
|
70
|
+
ray: {
|
|
71
|
+
'& line': {
|
|
72
|
+
cursor: 'pointer',
|
|
73
|
+
strokeWidth: '5px',
|
|
74
|
+
stroke: _renderUi.color.primary()
|
|
75
|
+
},
|
|
76
|
+
'& line, & .arrow': {
|
|
77
|
+
transition: 'stroke 150ms linear, fill 150ms linear'
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
selected: rayColor(colors.selected),
|
|
81
|
+
correct: rayColor(colors.correct),
|
|
82
|
+
incorrect: rayColor(colors.incorrect),
|
|
83
|
+
arrowCorrect: {
|
|
84
|
+
fill: colors.correct,
|
|
85
|
+
'--arrow-color': colors.correct
|
|
86
|
+
},
|
|
87
|
+
arrowIncorrect: {
|
|
88
|
+
fill: colors.incorrect,
|
|
89
|
+
'--arrow-color': colors.incorrect
|
|
90
|
+
},
|
|
91
|
+
arrowSelected: {
|
|
92
|
+
fill: colors.selected,
|
|
93
|
+
'--arrow-color': colors.selected
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
var Ray = /*#__PURE__*/function (_React$Component) {
|
|
98
|
+
(0, _inherits2["default"])(Ray, _React$Component);
|
|
99
|
+
|
|
100
|
+
var _super = _createSuper(Ray);
|
|
101
|
+
|
|
102
|
+
function Ray(props) {
|
|
103
|
+
var _this;
|
|
104
|
+
|
|
105
|
+
(0, _classCallCheck2["default"])(this, Ray);
|
|
106
|
+
_this = _super.call(this, props);
|
|
107
|
+
_this.state = {
|
|
108
|
+
dragPosition: null
|
|
109
|
+
};
|
|
110
|
+
return _this;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
(0, _createClass2["default"])(Ray, [{
|
|
114
|
+
key: "drag",
|
|
115
|
+
value: function drag(p) {
|
|
116
|
+
var domain = this.props.domain;
|
|
117
|
+
|
|
118
|
+
if (p >= domain.min && p <= domain.max) {
|
|
119
|
+
this.setState({
|
|
120
|
+
dragPosition: p
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}, {
|
|
125
|
+
key: "stopDrag",
|
|
126
|
+
value: function stopDrag() {
|
|
127
|
+
this.setState({
|
|
128
|
+
dragPosition: null
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}, {
|
|
132
|
+
key: "render",
|
|
133
|
+
value: function render() {
|
|
134
|
+
var _classNames, _classNames2;
|
|
135
|
+
|
|
136
|
+
/* eslint-disable */
|
|
137
|
+
var _this$props = this.props,
|
|
138
|
+
interval = _this$props.interval,
|
|
139
|
+
empty = _this$props.empty,
|
|
140
|
+
position = _this$props.position,
|
|
141
|
+
direction = _this$props.direction,
|
|
142
|
+
domain = _this$props.domain,
|
|
143
|
+
y = _this$props.y,
|
|
144
|
+
selected = _this$props.selected,
|
|
145
|
+
disabled = _this$props.disabled,
|
|
146
|
+
width = _this$props.width,
|
|
147
|
+
correct = _this$props.correct,
|
|
148
|
+
classes = _this$props.classes;
|
|
149
|
+
/* eslint-enable */
|
|
150
|
+
|
|
151
|
+
var xScale = this.context.xScale;
|
|
152
|
+
var drag = this.drag.bind(this);
|
|
153
|
+
var stopDrag = this.stopDrag.bind(this);
|
|
154
|
+
var finalPosition = (0, _isNumber["default"])(this.state.dragPosition) ? this.state.dragPosition : position;
|
|
155
|
+
var className = (0, _classnames["default"])(classes.ray, (_classNames = {}, (0, _defineProperty2["default"])(_classNames, classes.selected, selected), (0, _defineProperty2["default"])(_classNames, classes.correct, correct === true), (0, _defineProperty2["default"])(_classNames, classes.incorrect, correct === false), _classNames));
|
|
156
|
+
var positive = direction === 'positive';
|
|
157
|
+
var left = positive ? finalPosition : domain.min;
|
|
158
|
+
var right = positive ? domain.max : finalPosition; // const triangleX = positive ? xScale(right) : xScale(left);
|
|
159
|
+
//const et the line run all the way to 0 or width.
|
|
160
|
+
|
|
161
|
+
var x1 = positive ? xScale(left) : 8;
|
|
162
|
+
var x2 = positive ? width - 8 : xScale(right);
|
|
163
|
+
var arrowX = positive ? width : 0;
|
|
164
|
+
var arrowDirection = positive ? 'right' : 'left';
|
|
165
|
+
|
|
166
|
+
var noop = function noop() {};
|
|
167
|
+
|
|
168
|
+
var arrowClassNames = (0, _classnames["default"])((_classNames2 = {}, (0, _defineProperty2["default"])(_classNames2, classes.arrowCorrect, correct === true), (0, _defineProperty2["default"])(_classNames2, classes.arrowIncorrect, correct === false), (0, _defineProperty2["default"])(_classNames2, classes.arrowSelected, selected), _classNames2));
|
|
169
|
+
return /*#__PURE__*/_react["default"].createElement("g", {
|
|
170
|
+
className: className,
|
|
171
|
+
transform: "translate(0, ".concat(y, ")")
|
|
172
|
+
}, /*#__PURE__*/_react["default"].createElement("line", {
|
|
173
|
+
onClick: disabled ? noop : this.props.onToggleSelect,
|
|
174
|
+
className: "line-handle",
|
|
175
|
+
x1: x1,
|
|
176
|
+
x2: x2
|
|
177
|
+
}), /*#__PURE__*/_react["default"].createElement(_point["default"], {
|
|
178
|
+
disabled: disabled,
|
|
179
|
+
correct: correct,
|
|
180
|
+
selected: selected,
|
|
181
|
+
empty: empty,
|
|
182
|
+
interval: interval,
|
|
183
|
+
bounds: {
|
|
184
|
+
left: domain.min - position,
|
|
185
|
+
right: domain.max - position
|
|
186
|
+
},
|
|
187
|
+
position: position,
|
|
188
|
+
onDrag: drag,
|
|
189
|
+
onDragStop: stopDrag,
|
|
190
|
+
onMove: this.props.onMove
|
|
191
|
+
}), /*#__PURE__*/_react["default"].createElement(_arrow["default"], {
|
|
192
|
+
x: arrowX,
|
|
193
|
+
className: arrowClassNames,
|
|
194
|
+
direction: arrowDirection
|
|
195
|
+
}));
|
|
196
|
+
}
|
|
197
|
+
}]);
|
|
198
|
+
return Ray;
|
|
199
|
+
}(_react["default"].Component);
|
|
200
|
+
|
|
201
|
+
exports.Ray = Ray;
|
|
202
|
+
(0, _defineProperty2["default"])(Ray, "propTypes", _objectSpread(_objectSpread({}, (0, _base.basePropTypes)()), {}, {
|
|
203
|
+
width: _propTypes["default"].number.isRequired,
|
|
204
|
+
selected: _propTypes["default"].bool,
|
|
205
|
+
disabled: _propTypes["default"].bool,
|
|
206
|
+
empty: _propTypes["default"].bool,
|
|
207
|
+
direction: _propTypes["default"].oneOf(['positive', 'negative']),
|
|
208
|
+
y: _propTypes["default"].number,
|
|
209
|
+
position: _propTypes["default"].number.isRequired,
|
|
210
|
+
onMove: _propTypes["default"].func.isRequired,
|
|
211
|
+
onToggleSelect: _propTypes["default"].func.isRequired
|
|
212
|
+
}));
|
|
213
|
+
(0, _defineProperty2["default"])(Ray, "defaultProps", {
|
|
214
|
+
selected: false,
|
|
215
|
+
direction: 'positive',
|
|
216
|
+
y: 0,
|
|
217
|
+
disabled: false
|
|
218
|
+
});
|
|
219
|
+
(0, _defineProperty2["default"])(Ray, "contextTypes", {
|
|
220
|
+
xScale: _propTypes["default"].func.isRequired,
|
|
221
|
+
snapValue: _propTypes["default"].func.isRequired
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
var _default = (0, _reactJss["default"])(style)(Ray);
|
|
225
|
+
|
|
226
|
+
exports["default"] = _default;
|
|
227
|
+
//# sourceMappingURL=ray.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/number-line/graph/elements/ray.jsx"],"names":["rayColor","stroke","fill","strokeWidth","style","ray","cursor","color","primary","transition","selected","colors","correct","incorrect","arrowCorrect","arrowIncorrect","arrowSelected","Ray","props","state","dragPosition","p","domain","min","max","setState","interval","empty","position","direction","y","disabled","width","classes","xScale","context","drag","bind","stopDrag","finalPosition","className","positive","left","right","x1","x2","arrowX","arrowDirection","noop","arrowClassNames","onToggleSelect","onMove","React","Component","PropTypes","number","isRequired","bool","oneOf","func","snapValue"],"mappings":"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","sourcesContent":["import * as colors from '../../colors';\nimport { color } from '@pie-lib/pie-toolbox/render-ui';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Arrow from '../arrow';\nimport Point from './point';\nimport { basePropTypes } from './base';\nimport classNames from 'classnames';\nimport injectSheet from 'react-jss';\nimport isNumber from 'lodash/isNumber';\n\nconst rayColor = (rayColor) => ({\n '& line': {\n stroke: rayColor,\n },\n '& .arrow': {\n fill: rayColor,\n strokeWidth: '1px',\n stroke: rayColor,\n },\n});\n\nconst style = {\n ray: {\n '& line': {\n cursor: 'pointer',\n strokeWidth: '5px',\n stroke: color.primary(),\n },\n '& line, & .arrow': {\n transition: 'stroke 150ms linear, fill 150ms linear',\n },\n },\n selected: rayColor(colors.selected),\n correct: rayColor(colors.correct),\n incorrect: rayColor(colors.incorrect),\n arrowCorrect: {\n fill: colors.correct,\n '--arrow-color': colors.correct,\n },\n arrowIncorrect: {\n fill: colors.incorrect,\n '--arrow-color': colors.incorrect,\n },\n arrowSelected: {\n fill: colors.selected,\n '--arrow-color': colors.selected,\n },\n};\n\nexport class Ray extends React.Component {\n static propTypes = {\n ...basePropTypes(),\n width: PropTypes.number.isRequired,\n selected: PropTypes.bool,\n disabled: PropTypes.bool,\n empty: PropTypes.bool,\n direction: PropTypes.oneOf(['positive', 'negative']),\n y: PropTypes.number,\n position: PropTypes.number.isRequired,\n onMove: PropTypes.func.isRequired,\n onToggleSelect: PropTypes.func.isRequired,\n };\n\n static defaultProps = {\n selected: false,\n direction: 'positive',\n y: 0,\n disabled: false,\n };\n\n static contextTypes = {\n xScale: PropTypes.func.isRequired,\n snapValue: PropTypes.func.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n dragPosition: null,\n };\n }\n\n drag(p) {\n const { domain } = this.props;\n if (p >= domain.min && p <= domain.max) {\n this.setState({ dragPosition: p });\n }\n }\n\n stopDrag() {\n this.setState({ dragPosition: null });\n }\n\n render() {\n /* eslint-disable */\n const { interval, empty, position, direction, domain, y, selected, disabled, width, correct, classes } = this.props;\n /* eslint-enable */\n const { xScale } = this.context;\n\n const drag = this.drag.bind(this);\n const stopDrag = this.stopDrag.bind(this);\n\n const finalPosition = isNumber(this.state.dragPosition) ? this.state.dragPosition : position;\n\n const className = classNames(classes.ray, {\n [classes.selected]: selected,\n [classes.correct]: correct === true,\n [classes.incorrect]: correct === false,\n });\n\n const positive = direction === 'positive';\n const left = positive ? finalPosition : domain.min;\n const right = positive ? domain.max : finalPosition;\n // const triangleX = positive ? xScale(right) : xScale(left);\n\n //const et the line run all the way to 0 or width.\n const x1 = positive ? xScale(left) : 8;\n const x2 = positive ? width - 8 : xScale(right);\n const arrowX = positive ? width : 0;\n const arrowDirection = positive ? 'right' : 'left';\n\n const noop = () => {};\n\n const arrowClassNames = classNames({\n [classes.arrowCorrect]: correct === true,\n [classes.arrowIncorrect]: correct === false,\n [classes.arrowSelected]: selected,\n });\n\n return (\n <g className={className} transform={`translate(0, ${y})`}>\n <line onClick={disabled ? noop : this.props.onToggleSelect} className=\"line-handle\" x1={x1} x2={x2} />\n <Point\n disabled={disabled}\n correct={correct}\n selected={selected}\n empty={empty}\n interval={interval}\n bounds={{ left: domain.min - position, right: domain.max - position }}\n position={position}\n onDrag={drag}\n onDragStop={stopDrag}\n onMove={this.props.onMove}\n />\n <Arrow x={arrowX} className={arrowClassNames} direction={arrowDirection} />\n </g>\n );\n }\n}\n\nexport default injectSheet(style)(Ray);\n"],"file":"ray.js"}
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = exports.NumberLineGraph = void 0;
|
|
9
|
+
|
|
10
|
+
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
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
23
|
+
|
|
24
|
+
var _react = _interopRequireDefault(require("react"));
|
|
25
|
+
|
|
26
|
+
var _d3Scale = require("d3-scale");
|
|
27
|
+
|
|
28
|
+
var _d3Selection = require("d3-selection");
|
|
29
|
+
|
|
30
|
+
var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
|
|
31
|
+
|
|
32
|
+
var _point = _interopRequireDefault(require("./elements/point"));
|
|
33
|
+
|
|
34
|
+
var _line = _interopRequireDefault(require("./elements/line"));
|
|
35
|
+
|
|
36
|
+
var _ray = _interopRequireDefault(require("./elements/ray"));
|
|
37
|
+
|
|
38
|
+
var _line2 = _interopRequireDefault(require("./line"));
|
|
39
|
+
|
|
40
|
+
var _arrow = _interopRequireDefault(require("./arrow"));
|
|
41
|
+
|
|
42
|
+
var _ticks = _interopRequireDefault(require("./ticks"));
|
|
43
|
+
|
|
44
|
+
var _tickUtils = require("./tick-utils");
|
|
45
|
+
|
|
46
|
+
var _stacks = _interopRequireDefault(require("./stacks"));
|
|
47
|
+
|
|
48
|
+
var _reactTransitionGroup = require("react-transition-group");
|
|
49
|
+
|
|
50
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
51
|
+
|
|
52
|
+
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) {
|
|
59
|
+
if (min === undefined || max === undefined || width === undefined) {
|
|
60
|
+
throw new Error('missing min/max/width');
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return (0, _d3Scale.scaleLinear)().domain([min, max]).range([padding, width - padding]);
|
|
64
|
+
};
|
|
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;
|
|
85
|
+
}
|
|
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);
|
|
113
|
+
}
|
|
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
|
+
});
|
|
141
|
+
|
|
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
|
+
}
|
|
149
|
+
}
|
|
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));
|
|
155
|
+
}
|
|
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
|
|
205
|
+
};
|
|
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, {
|
|
285
|
+
key: index
|
|
286
|
+
}, c);
|
|
287
|
+
})));
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}]);
|
|
291
|
+
return NumberLineGraph;
|
|
292
|
+
}(_react["default"].Component);
|
|
293
|
+
|
|
294
|
+
exports.NumberLineGraph = NumberLineGraph;
|
|
295
|
+
(0, _defineProperty2["default"])(NumberLineGraph, "childContextTypes", {
|
|
296
|
+
xScale: _propTypes["default"].func.isRequired,
|
|
297
|
+
snapValue: _propTypes["default"].func.isRequired
|
|
298
|
+
});
|
|
299
|
+
(0, _defineProperty2["default"])(NumberLineGraph, "propTypes", {
|
|
300
|
+
domain: _propTypes["default"].shape({
|
|
301
|
+
min: _propTypes["default"].number.isRequired,
|
|
302
|
+
max: _propTypes["default"].number.isRequired
|
|
303
|
+
}).isRequired,
|
|
304
|
+
ticks: _propTypes["default"].shape({
|
|
305
|
+
minor: _propTypes["default"].number,
|
|
306
|
+
major: _propTypes["default"].number
|
|
307
|
+
}).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
|
|
321
|
+
})
|
|
322
|
+
});
|
|
323
|
+
(0, _defineProperty2["default"])(NumberLineGraph, "defaultProps", {
|
|
324
|
+
debug: false
|
|
325
|
+
});
|
|
326
|
+
var _default = NumberLineGraph;
|
|
327
|
+
exports["default"] = _default;
|
|
328
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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/pie-toolbox/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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.Line = Line;
|
|
9
|
+
exports["default"] = void 0;
|
|
10
|
+
|
|
11
|
+
var _react = _interopRequireDefault(require("react"));
|
|
12
|
+
|
|
13
|
+
var _reactJss = _interopRequireDefault(require("react-jss"));
|
|
14
|
+
|
|
15
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
16
|
+
|
|
17
|
+
var _renderUi = require("@pie-lib/pie-toolbox/render-ui");
|
|
18
|
+
|
|
19
|
+
var style = {
|
|
20
|
+
root: {
|
|
21
|
+
strokeWidth: 2,
|
|
22
|
+
stroke: _renderUi.color.primary()
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
function Line(_ref) {
|
|
27
|
+
var y = _ref.y,
|
|
28
|
+
width = _ref.width,
|
|
29
|
+
classes = _ref.classes;
|
|
30
|
+
return /*#__PURE__*/_react["default"].createElement("line", {
|
|
31
|
+
x1: 0,
|
|
32
|
+
y1: y,
|
|
33
|
+
x2: width,
|
|
34
|
+
y2: y,
|
|
35
|
+
className: classes.root
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
Line.propTypes = {
|
|
40
|
+
y: _propTypes["default"].number.isRequired,
|
|
41
|
+
width: _propTypes["default"].number.isRequired,
|
|
42
|
+
classes: _propTypes["default"].object.isRequired
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
var _default = (0, _reactJss["default"])(style)(Line);
|
|
46
|
+
|
|
47
|
+
exports["default"] = _default;
|
|
48
|
+
//# sourceMappingURL=line.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/number-line/graph/line.jsx"],"names":["style","root","strokeWidth","stroke","color","primary","Line","y","width","classes","propTypes","PropTypes","number","isRequired","object"],"mappings":";;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA,IAAMA,KAAK,GAAG;AACZC,EAAAA,IAAI,EAAE;AACJC,IAAAA,WAAW,EAAE,CADT;AAEJC,IAAAA,MAAM,EAAEC,gBAAMC,OAAN;AAFJ;AADM,CAAd;;AAOO,SAASC,IAAT,OAAqC;AAAA,MAArBC,CAAqB,QAArBA,CAAqB;AAAA,MAAlBC,KAAkB,QAAlBA,KAAkB;AAAA,MAAXC,OAAW,QAAXA,OAAW;AAC1C,sBAAO;AAAM,IAAA,EAAE,EAAE,CAAV;AAAa,IAAA,EAAE,EAAEF,CAAjB;AAAoB,IAAA,EAAE,EAAEC,KAAxB;AAA+B,IAAA,EAAE,EAAED,CAAnC;AAAsC,IAAA,SAAS,EAAEE,OAAO,CAACR;AAAzD,IAAP;AACD;;AAEDK,IAAI,CAACI,SAAL,GAAiB;AACfH,EAAAA,CAAC,EAAEI,sBAAUC,MAAV,CAAiBC,UADL;AAEfL,EAAAA,KAAK,EAAEG,sBAAUC,MAAV,CAAiBC,UAFT;AAGfJ,EAAAA,OAAO,EAAEE,sBAAUG,MAAV,CAAiBD;AAHX,CAAjB;;eAMe,0BAAYb,KAAZ,EAAmBM,IAAnB,C","sourcesContent":["import React from 'react';\nimport injectSheet from 'react-jss';\nimport PropTypes from 'prop-types';\nimport { color } from '@pie-lib/pie-toolbox/render-ui';\n\nconst style = {\n root: {\n strokeWidth: 2,\n stroke: color.primary(),\n },\n};\n\nexport function Line({ y, width, classes }) {\n return <line x1={0} y1={y} x2={width} y2={y} className={classes.root} />;\n}\n\nLine.propTypes = {\n y: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n classes: PropTypes.object.isRequired,\n};\n\nexport default injectSheet(style)(Line);\n"],"file":"line.js"}
|