@pie-element/number-line 11.3.4-next.0 → 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 (79) 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
@@ -1,449 +1,385 @@
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
7
  Object.defineProperty(exports, "Graph", {
9
8
  enumerable: true,
10
- get: function get() {
11
- return _graph["default"];
9
+ get: function () {
10
+ return _graph.default;
12
11
  }
13
12
  });
14
- exports["default"] = exports.NumberLine = void 0;
15
-
13
+ exports.default = exports.NumberLine = void 0;
16
14
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
17
-
18
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
19
-
20
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
21
-
22
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
23
-
24
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
25
-
26
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
27
-
28
15
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
29
-
30
16
  var _react = _interopRequireDefault(require("react"));
31
-
32
17
  var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
33
-
34
- var _classnames = _interopRequireDefault(require("classnames"));
35
-
36
18
  var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
37
-
38
19
  var _isArray = _interopRequireDefault(require("lodash/isArray"));
39
-
40
20
  var _isNumber = _interopRequireDefault(require("lodash/isNumber"));
41
-
42
21
  var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
43
-
44
22
  var _translator = _interopRequireDefault(require("@pie-lib/translator"));
45
-
46
23
  var _renderUi = require("@pie-lib/render-ui");
47
-
48
- var _styles = require("@material-ui/core/styles");
49
-
24
+ var _styles = require("@mui/material/styles");
50
25
  var _feedback = _interopRequireDefault(require("./feedback"));
51
-
52
26
  var _graph = _interopRequireDefault(require("./graph"));
53
-
54
27
  var _propTypes = _interopRequireDefault(require("prop-types"));
55
-
56
28
  var _pointChooser = _interopRequireDefault(require("./point-chooser"));
57
-
58
29
  var _builder = require("./graph/elements/builder");
59
-
60
- 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); }; }
61
-
62
- 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; } }
63
-
64
- var translator = _translator["default"].translator;
65
-
66
- var styles = function styles(theme) {
67
- return {
68
- mainContainer: {
69
- color: _renderUi.color.text(),
70
- backgroundColor: _renderUi.color.background()
71
- },
72
- graphTitle: {
73
- textAlign: 'center',
74
- pointerEvents: 'none',
75
- userSelect: 'none'
76
- },
77
- numberLine: {
78
- boxSizing: 'unset'
79
- },
80
- toggle: {
81
- marginBottom: '16px'
82
- },
83
- black_on_rose: {
84
- backgroundColor: 'mistyrose'
85
- },
86
- white_on_black: {
87
- backgroundColor: 'black',
88
- '--correct-answer-toggle-label-color': 'white',
89
- '--tick-color': 'white',
90
- '--line-stroke': 'white',
91
- '--arrow-color': 'white',
92
- '--point-stroke': 'white',
93
- '--point-fill': 'black'
94
- },
95
- prompt: {
96
- verticalAlign: 'middle',
97
- marginBottom: '16px'
98
- },
99
- collapsible: {
100
- paddingBottom: theme.spacing.unit * 2
101
- }
102
- };
103
- };
104
-
105
- var NumberLine = /*#__PURE__*/function (_React$Component) {
106
- (0, _inherits2["default"])(NumberLine, _React$Component);
107
-
108
- var _super = _createSuper(NumberLine);
109
-
110
- function NumberLine(props, context) {
111
- var _this;
112
-
113
- (0, _classCallCheck2["default"])(this, NumberLine);
114
- _this = _super.call(this, props, context);
115
- var initialType = props.model.graph ? props.model.graph.initialType : null;
116
- initialType = initialType ? initialType.toLowerCase() : _pointChooser["default"].DEFAULT_TYPE;
117
- _this.state = {
30
+ const {
31
+ translator
32
+ } = _translator.default;
33
+ const StyledUiLayout = (0, _styles.styled)(_renderUi.UiLayout)(({
34
+ $colorContrast
35
+ }) => ({
36
+ color: _renderUi.color.text(),
37
+ backgroundColor: _renderUi.color.background(),
38
+ ...($colorContrast === 'black_on_rose' && {
39
+ backgroundColor: 'mistyrose'
40
+ }),
41
+ ...($colorContrast === 'white_on_black' && {
42
+ backgroundColor: 'black',
43
+ '--correct-answer-toggle-label-color': 'white',
44
+ '--tick-color': 'white',
45
+ '--line-stroke': 'white',
46
+ '--arrow-color': 'white',
47
+ '--point-stroke': 'white',
48
+ '--point-fill': 'black'
49
+ })
50
+ }));
51
+ const NumberLineContainer = (0, _styles.styled)('div')(({
52
+ $colorContrast
53
+ }) => ({
54
+ boxSizing: 'unset',
55
+ color: _renderUi.color.text(),
56
+ backgroundColor: _renderUi.color.background(),
57
+ ...($colorContrast === 'black_on_rose' && {
58
+ backgroundColor: 'mistyrose'
59
+ }),
60
+ ...($colorContrast === 'white_on_black' && {
61
+ backgroundColor: 'black',
62
+ '--correct-answer-toggle-label-color': 'white',
63
+ '--tick-color': 'white',
64
+ '--line-stroke': 'white',
65
+ '--arrow-color': 'white',
66
+ '--point-stroke': 'white',
67
+ '--point-fill': 'black'
68
+ })
69
+ }));
70
+ const GraphTitle = (0, _styles.styled)('div')({
71
+ textAlign: 'center',
72
+ pointerEvents: 'none',
73
+ userSelect: 'none'
74
+ });
75
+ const ToggleContainer = (0, _styles.styled)('div')({
76
+ marginBottom: '16px'
77
+ });
78
+ const PromptContainer = (0, _styles.styled)('div')({
79
+ verticalAlign: 'middle',
80
+ marginBottom: '16px'
81
+ });
82
+ const StyledCollapsible = (0, _styles.styled)(_renderUi.Collapsible)(({
83
+ theme
84
+ }) => ({
85
+ paddingBottom: theme.spacing(2)
86
+ }));
87
+ class NumberLine extends _react.default.Component {
88
+ constructor(props, context) {
89
+ super(props, context);
90
+ let initialType = props.model.graph ? props.model.graph.initialType : null;
91
+ initialType = initialType ? initialType.toLowerCase() : _pointChooser.default.DEFAULT_TYPE;
92
+ this.state = {
118
93
  selectedElements: [],
119
94
  elementType: initialType,
120
95
  answers: props.answer
121
96
  };
122
- return _this;
123
97
  }
124
-
125
- (0, _createClass2["default"])(NumberLine, [{
126
- key: "toggleElement",
127
- value: function toggleElement(index) {
128
- var selected = [];
129
-
130
- if (this.state.selectedElements.indexOf(index) === -1) {
131
- selected = this.state.selectedElements.concat([index]);
132
- } else {
133
- selected = this.state.selectedElements.filter(function (e) {
134
- return e !== index;
135
- });
136
- }
137
-
138
- this.setState({
139
- selectedElements: selected
140
- });
98
+ toggleElement(index) {
99
+ let selected = [];
100
+ if (this.state.selectedElements.indexOf(index) === -1) {
101
+ selected = this.state.selectedElements.concat([index]);
102
+ } else {
103
+ selected = this.state.selectedElements.filter(e => e !== index);
141
104
  }
142
- }, {
143
- key: "elementTypeSelected",
144
- value: function elementTypeSelected(t) {
105
+ this.setState({
106
+ selectedElements: selected
107
+ });
108
+ }
109
+ elementTypeSelected(t) {
110
+ this.setState({
111
+ elementType: t
112
+ });
113
+ }
114
+ addElement(x) {
115
+ if (this.hasMaxNoOfPoints()) {
145
116
  this.setState({
146
- elementType: t
117
+ showMaxPointsWarning: true
147
118
  });
148
- }
149
- }, {
150
- key: "addElement",
151
- value: function addElement(x) {
152
- var _this2 = this;
153
-
154
- if (this.hasMaxNoOfPoints()) {
119
+ setTimeout(() => {
155
120
  this.setState({
156
- showMaxPointsWarning: true
157
- });
158
- setTimeout(function () {
159
- _this2.setState({
160
- showMaxPointsWarning: false
161
- });
162
- }, 2000);
163
- return;
164
- }
165
-
166
- var _this$props$model$gra = this.props.model.graph,
167
- ticks = _this$props$model$gra.ticks,
168
- domain = _this$props$model$gra.domain,
169
- availableTypes = _this$props$model$gra.availableTypes; // check if the element type is enabled in availableTypes
170
-
171
- if (availableTypes && !availableTypes[this.state.elementType.toUpperCase()]) {
172
- return;
173
- }
174
-
175
- var elementData = (0, _builder.buildElementModel)(x, this.state.elementType, domain, ticks.minor);
176
-
177
- if (elementData) {
178
- var answers = this.state.answers;
179
- var contains = answers.some(function (element) {
180
- return (0, _isEqual["default"])(element, elementData);
121
+ showMaxPointsWarning: false
181
122
  });
182
-
183
- if (!contains) {
184
- answers.push(elementData);
185
- this.setState({
186
- answers: answers
187
- });
188
- this.props.onAddElement(elementData);
189
- }
190
- }
123
+ }, 2000);
124
+ return;
191
125
  }
192
- }, {
193
- key: "hasMaxNoOfPoints",
194
- value: function hasMaxNoOfPoints() {
195
- var _this$props = this.props,
196
- answer = _this$props.answer,
197
- maxNumberOfPoints = _this$props.model.graph.maxNumberOfPoints;
198
- return (0, _isNumber["default"])(maxNumberOfPoints) && maxNumberOfPoints > 0 && (answer || []).length >= maxNumberOfPoints;
126
+ const {
127
+ ticks,
128
+ domain,
129
+ availableTypes
130
+ } = this.props.model.graph;
131
+
132
+ // check if the element type is enabled in availableTypes
133
+ if (availableTypes && !availableTypes[this.state.elementType.toUpperCase()]) {
134
+ return;
199
135
  }
200
- }, {
201
- key: "UNSAFE_componentWillReceiveProps",
202
- value: function UNSAFE_componentWillReceiveProps(nextProps) {
203
- var answer = nextProps.answer;
204
-
205
- if (!(0, _isEqual["default"])(this.state.answers, answer)) {
136
+ let elementData = (0, _builder.buildElementModel)(x, this.state.elementType, domain, ticks.minor);
137
+ if (elementData) {
138
+ const {
139
+ answers
140
+ } = this.state;
141
+ const contains = answers.some(element => {
142
+ return (0, _isEqual.default)(element, elementData);
143
+ });
144
+ if (!contains) {
145
+ answers.push(elementData);
206
146
  this.setState({
207
- showCorrectAnswer: false,
208
- answers: answer
147
+ answers
209
148
  });
149
+ this.props.onAddElement(elementData);
210
150
  }
211
151
  }
212
- }, {
213
- key: "deselectElements",
214
- value: function deselectElements() {
152
+ }
153
+ hasMaxNoOfPoints() {
154
+ let {
155
+ answer,
156
+ model: {
157
+ graph: {
158
+ maxNumberOfPoints
159
+ }
160
+ }
161
+ } = this.props;
162
+ return (0, _isNumber.default)(maxNumberOfPoints) && maxNumberOfPoints > 0 && (answer || []).length >= maxNumberOfPoints;
163
+ }
164
+ UNSAFE_componentWillReceiveProps(nextProps) {
165
+ const {
166
+ answer
167
+ } = nextProps;
168
+ if (!(0, _isEqual.default)(this.state.answers, answer)) {
215
169
  this.setState({
216
- selectedElements: []
170
+ showCorrectAnswer: false,
171
+ answers: answer
217
172
  });
218
173
  }
219
- }, {
220
- key: "getSize",
221
- value: function getSize(type, min, max, defaultValue) {
222
- var graph = this.props.model.graph;
223
-
224
- if (graph && graph[type]) {
225
- return Math.max(min, Math.min(max, graph[type]));
226
- } else {
227
- return defaultValue;
174
+ }
175
+ deselectElements() {
176
+ this.setState({
177
+ selectedElements: []
178
+ });
179
+ }
180
+ getSize(type, min, max, defaultValue) {
181
+ const {
182
+ model: {
183
+ graph
228
184
  }
185
+ } = this.props;
186
+ if (graph && graph[type]) {
187
+ return Math.max(min, Math.min(max, graph[type]));
188
+ } else {
189
+ return defaultValue;
229
190
  }
230
- }, {
231
- key: "undo",
232
- value: function undo() {
233
- var answers = this.state.answers;
234
- var onUndoElement = this.props.onUndoElement;
235
- answers.pop();
191
+ }
192
+ undo() {
193
+ const {
194
+ answers
195
+ } = this.state;
196
+ const {
197
+ onUndoElement
198
+ } = this.props;
199
+ answers.pop();
200
+ this.setState({
201
+ answers
202
+ });
203
+ onUndoElement();
204
+ }
205
+ clearAll() {
206
+ const {
207
+ onClearElements
208
+ } = this.props;
209
+ this.setState({
210
+ answers: []
211
+ });
212
+ onClearElements();
213
+ }
214
+ render() {
215
+ let {
216
+ model,
217
+ onDeleteElements,
218
+ onMoveElement,
219
+ minWidth = 400,
220
+ maxWidth = 1600,
221
+ maxHeight
222
+ } = this.props;
223
+ let {
224
+ showCorrectAnswer,
225
+ answers,
226
+ selectedElements,
227
+ showMaxPointsWarning,
228
+ elementType
229
+ } = this.state;
230
+ let {
231
+ corrected = {
232
+ correct: [],
233
+ incorrect: []
234
+ },
235
+ disabled,
236
+ extraCSSRules,
237
+ graph,
238
+ correctResponse,
239
+ prompt,
240
+ emptyAnswer,
241
+ feedback,
242
+ colorContrast,
243
+ language,
244
+ teacherInstructions
245
+ } = model;
246
+ let addElement = this.addElement.bind(this);
247
+ let elementsSelected = !disabled && selectedElements && selectedElements.length > 0;
248
+ const {
249
+ ticks,
250
+ domain,
251
+ arrows,
252
+ maxNumberOfPoints,
253
+ height = 100,
254
+ availableTypes,
255
+ title,
256
+ fraction
257
+ } = graph;
258
+ const width = this.getSize('width', minWidth, maxWidth, 600);
259
+ const showTeacherInstructions = teacherInstructions && ((0, _renderUi.hasText)(teacherInstructions) || (0, _renderUi.hasMedia)(teacherInstructions));
260
+ const graphProps = {
261
+ disabled,
262
+ domain,
263
+ ticks,
264
+ width,
265
+ height: (height > maxHeight ? maxHeight : height) || 100,
266
+ arrows,
267
+ fraction
268
+ };
269
+ let getAnswerElements = () => {
270
+ return (answers || []).map((e, index) => {
271
+ let out = (0, _cloneDeep.default)(e);
272
+ out.selected = selectedElements.indexOf(index) !== -1;
273
+ if (corrected.correct.includes(index)) {
274
+ out.correct = true;
275
+ } else if (corrected.incorrect.includes(index)) {
276
+ out.correct = false;
277
+ } else {
278
+ out.correct = undefined;
279
+ }
280
+ return out;
281
+ });
282
+ };
283
+ let getCorrectAnswerElements = () => {
284
+ return (correctResponse || []).map(r => {
285
+ r.correct = true;
286
+ return r;
287
+ });
288
+ };
289
+ let elements = showCorrectAnswer ? getCorrectAnswerElements() : getAnswerElements();
290
+ let maxPointsMessage = () => maxNumberOfPoints == 1 ? translator.t('numberLine.addElementLimit_one', {
291
+ lng: language,
292
+ count: 1
293
+ }) : translator.t('numberLine.addElementLimit_other', {
294
+ lng: language,
295
+ count: maxNumberOfPoints
296
+ });
297
+ let deleteElements = () => {
298
+ onDeleteElements(selectedElements);
299
+ answers = answers.filter((v, index) => {
300
+ return !selectedElements.some(d => d === index);
301
+ });
236
302
  this.setState({
237
- answers: answers
303
+ selectedElements: [],
304
+ answers
238
305
  });
239
- onUndoElement();
240
- }
241
- }, {
242
- key: "clearAll",
243
- value: function clearAll() {
244
- var onClearElements = this.props.onClearElements;
306
+ };
307
+ let getIcons = () => {
308
+ if (availableTypes) {
309
+ return Object.keys(availableTypes).filter(k => availableTypes[k]).map(k => k.toLowerCase());
310
+ }
311
+ };
312
+ let onShowCorrectAnswer = show => {
245
313
  this.setState({
246
- answers: []
314
+ showCorrectAnswer: show
247
315
  });
248
- onClearElements();
249
- }
250
- }, {
251
- key: "render",
252
- value: function render() {
253
- var _this3 = this;
254
-
255
- var _this$props2 = this.props,
256
- model = _this$props2.model,
257
- classes = _this$props2.classes,
258
- onDeleteElements = _this$props2.onDeleteElements,
259
- onMoveElement = _this$props2.onMoveElement,
260
- _this$props2$minWidth = _this$props2.minWidth,
261
- minWidth = _this$props2$minWidth === void 0 ? 400 : _this$props2$minWidth,
262
- _this$props2$maxWidth = _this$props2.maxWidth,
263
- maxWidth = _this$props2$maxWidth === void 0 ? 1600 : _this$props2$maxWidth,
264
- maxHeight = _this$props2.maxHeight;
265
- var _this$state = this.state,
266
- showCorrectAnswer = _this$state.showCorrectAnswer,
267
- answers = _this$state.answers,
268
- selectedElements = _this$state.selectedElements,
269
- showMaxPointsWarning = _this$state.showMaxPointsWarning,
270
- elementType = _this$state.elementType;
271
- var _model$corrected = model.corrected,
272
- corrected = _model$corrected === void 0 ? {
273
- correct: [],
274
- incorrect: []
275
- } : _model$corrected,
276
- disabled = model.disabled,
277
- extraCSSRules = model.extraCSSRules,
278
- graph = model.graph,
279
- correctResponse = model.correctResponse,
280
- prompt = model.prompt,
281
- emptyAnswer = model.emptyAnswer,
282
- feedback = model.feedback,
283
- colorContrast = model.colorContrast,
284
- language = model.language,
285
- teacherInstructions = model.teacherInstructions;
286
- var addElement = this.addElement.bind(this);
287
- var elementsSelected = !disabled && selectedElements && selectedElements.length > 0;
288
- var ticks = graph.ticks,
289
- domain = graph.domain,
290
- arrows = graph.arrows,
291
- maxNumberOfPoints = graph.maxNumberOfPoints,
292
- _graph$height = graph.height,
293
- height = _graph$height === void 0 ? 100 : _graph$height,
294
- availableTypes = graph.availableTypes,
295
- title = graph.title,
296
- fraction = graph.fraction;
297
- var width = this.getSize('width', minWidth, maxWidth, 600);
298
- var showTeacherInstructions = teacherInstructions && ((0, _renderUi.hasText)(teacherInstructions) || (0, _renderUi.hasMedia)(teacherInstructions));
299
- var graphProps = {
300
- disabled: disabled,
301
- domain: domain,
302
- ticks: ticks,
303
- width: width,
304
- height: (height > maxHeight ? maxHeight : height) || 100,
305
- arrows: arrows,
306
- fraction: fraction
307
- };
308
-
309
- var getAnswerElements = function getAnswerElements() {
310
- return (answers || []).map(function (e, index) {
311
- var out = (0, _cloneDeep["default"])(e);
312
- out.selected = selectedElements.indexOf(index) !== -1;
313
- out.correct = corrected.correct.includes(index) ? true : corrected.incorrect.includes(index) ? false : undefined;
314
- return out;
315
- });
316
- };
317
-
318
- var getCorrectAnswerElements = function getCorrectAnswerElements() {
319
- return (correctResponse || []).map(function (r) {
320
- r.correct = true;
321
- return r;
322
- });
323
- };
324
-
325
- var elements = showCorrectAnswer ? getCorrectAnswerElements() : getAnswerElements();
326
-
327
- var maxPointsMessage = function maxPointsMessage() {
328
- return maxNumberOfPoints == 1 ? translator.t('numberLine.addElementLimit_one', {
329
- lng: language,
330
- count: 1
331
- }) : translator.t('numberLine.addElementLimit_other', {
332
- lng: language,
333
- count: maxNumberOfPoints
334
- });
335
- };
336
-
337
- var deleteElements = function deleteElements() {
338
- onDeleteElements(selectedElements);
339
- answers = answers.filter(function (v, index) {
340
- return !selectedElements.some(function (d) {
341
- return d === index;
342
- });
343
- });
344
-
345
- _this3.setState({
346
- selectedElements: [],
347
- answers: answers
348
- });
349
- };
350
-
351
- var getIcons = function getIcons() {
352
- if (availableTypes) {
353
- return Object.keys(availableTypes).filter(function (k) {
354
- return availableTypes[k];
355
- }).map(function (k) {
356
- return k.toLowerCase();
357
- });
358
- }
359
- };
360
-
361
- var onShowCorrectAnswer = function onShowCorrectAnswer(show) {
362
- _this3.setState({
363
- showCorrectAnswer: show
364
- });
365
- };
366
-
367
- var adjustedWidth = graphProps.width - 20;
368
- var containerNames = (0, _classnames["default"])(classes.mainContainer, classes[colorContrast]);
369
- var numberLineContainerNames = (0, _classnames["default"])(classes.numberLine, classes.mainContainer, classes[colorContrast]);
370
- return /*#__PURE__*/_react["default"].createElement(_renderUi.UiLayout, {
371
- extraCSSRules: extraCSSRules,
372
- className: containerNames
373
- }, showTeacherInstructions && /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
374
- labels: {
375
- hidden: 'Show Teacher Instructions',
376
- visible: 'Hide Teacher Instructions'
377
- },
378
- className: classes.collapsible
379
- }, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
380
- prompt: teacherInstructions
381
- })), prompt && /*#__PURE__*/_react["default"].createElement("div", {
382
- className: classes.prompt
383
- }, /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
384
- prompt: prompt
385
- })), /*#__PURE__*/_react["default"].createElement("div", {
386
- className: numberLineContainerNames,
387
- style: {
388
- width: width
389
- }
390
- }, /*#__PURE__*/_react["default"].createElement("div", {
391
- style: {
392
- width: adjustedWidth
393
- },
394
- className: classes.toggle
395
- }, /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
396
- show: (0, _isArray["default"])(correctResponse) && correctResponse.length && !emptyAnswer,
397
- toggled: showCorrectAnswer,
398
- onToggle: onShowCorrectAnswer,
399
- initialValue: false,
400
- language: language
401
- })), !disabled && /*#__PURE__*/_react["default"].createElement(_pointChooser["default"], {
402
- elementType: elementType,
403
- showDeleteButton: elementsSelected,
404
- onDeleteClick: deleteElements,
405
- onElementType: this.elementTypeSelected.bind(this),
406
- onClearElements: this.clearAll.bind(this),
407
- onUndoElement: this.undo.bind(this),
408
- icons: getIcons(),
409
- language: language
410
- }), /*#__PURE__*/_react["default"].createElement(_graph["default"], (0, _extends2["default"])({}, graphProps, {
411
- elements: elements,
412
- onAddElement: addElement,
413
- onMoveElement: onMoveElement,
414
- onToggleElement: this.toggleElement.bind(this),
415
- onDeselectElements: this.deselectElements.bind(this),
416
- debug: false
417
- })), title && /*#__PURE__*/_react["default"].createElement("div", {
418
- className: classes.graphTitle,
419
- dangerouslySetInnerHTML: {
420
- __html: title
421
- }
422
- }), showMaxPointsWarning && /*#__PURE__*/_react["default"].createElement(_feedback["default"], {
423
- type: "info",
424
- width: adjustedWidth,
425
- message: maxPointsMessage()
426
- }), feedback && !showCorrectAnswer && /*#__PURE__*/_react["default"].createElement(_feedback["default"], (0, _extends2["default"])({}, feedback, {
316
+ };
317
+ let adjustedWidth = graphProps.width - 20;
318
+ return /*#__PURE__*/_react.default.createElement(StyledUiLayout, {
319
+ extraCSSRules: extraCSSRules,
320
+ $colorContrast: colorContrast
321
+ }, showTeacherInstructions && /*#__PURE__*/_react.default.createElement(StyledCollapsible, {
322
+ labels: {
323
+ hidden: 'Show Teacher Instructions',
324
+ visible: 'Hide Teacher Instructions'
325
+ }
326
+ }, /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
327
+ prompt: teacherInstructions
328
+ })), prompt && /*#__PURE__*/_react.default.createElement(PromptContainer, null, /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
329
+ prompt: prompt
330
+ })), /*#__PURE__*/_react.default.createElement(NumberLineContainer, {
331
+ $colorContrast: colorContrast,
332
+ style: {
333
+ width
334
+ }
335
+ }, /*#__PURE__*/_react.default.createElement(ToggleContainer, {
336
+ style: {
427
337
  width: adjustedWidth
428
- }))));
429
- }
430
- }]);
431
- return NumberLine;
432
- }(_react["default"].Component);
433
-
338
+ }
339
+ }, /*#__PURE__*/_react.default.createElement(_correctAnswerToggle.default, {
340
+ show: (0, _isArray.default)(correctResponse) && correctResponse.length && !emptyAnswer,
341
+ toggled: showCorrectAnswer,
342
+ onToggle: onShowCorrectAnswer,
343
+ initialValue: false,
344
+ language: language
345
+ })), !disabled && /*#__PURE__*/_react.default.createElement(_pointChooser.default, {
346
+ elementType: elementType,
347
+ showDeleteButton: elementsSelected,
348
+ onDeleteClick: deleteElements,
349
+ onElementType: this.elementTypeSelected.bind(this),
350
+ onClearElements: this.clearAll.bind(this),
351
+ onUndoElement: this.undo.bind(this),
352
+ icons: getIcons(),
353
+ language: language
354
+ }), /*#__PURE__*/_react.default.createElement(_graph.default, (0, _extends2.default)({}, graphProps, {
355
+ elements: elements,
356
+ onAddElement: addElement,
357
+ onMoveElement: onMoveElement,
358
+ onToggleElement: this.toggleElement.bind(this),
359
+ onDeselectElements: this.deselectElements.bind(this),
360
+ debug: false
361
+ })), title && /*#__PURE__*/_react.default.createElement(GraphTitle, {
362
+ dangerouslySetInnerHTML: {
363
+ __html: title
364
+ }
365
+ }), showMaxPointsWarning && /*#__PURE__*/_react.default.createElement(_feedback.default, {
366
+ type: "info",
367
+ width: adjustedWidth,
368
+ message: maxPointsMessage()
369
+ }), feedback && !showCorrectAnswer && /*#__PURE__*/_react.default.createElement(_feedback.default, (0, _extends2.default)({}, feedback, {
370
+ width: adjustedWidth
371
+ }))));
372
+ }
373
+ }
434
374
  exports.NumberLine = NumberLine;
435
- (0, _defineProperty2["default"])(NumberLine, "propTypes", {
436
- onMoveElement: _propTypes["default"].func.isRequired,
437
- onDeleteElements: _propTypes["default"].func.isRequired,
438
- onAddElement: _propTypes["default"].func.isRequired,
439
- onUndoElement: _propTypes["default"].func.isRequired,
440
- onClearElements: _propTypes["default"].func.isRequired,
441
- model: _propTypes["default"].object.isRequired,
442
- answer: _propTypes["default"].array,
443
- classes: _propTypes["default"].object.isRequired
375
+ (0, _defineProperty2.default)(NumberLine, "propTypes", {
376
+ onMoveElement: _propTypes.default.func.isRequired,
377
+ onDeleteElements: _propTypes.default.func.isRequired,
378
+ onAddElement: _propTypes.default.func.isRequired,
379
+ onUndoElement: _propTypes.default.func.isRequired,
380
+ onClearElements: _propTypes.default.func.isRequired,
381
+ model: _propTypes.default.object.isRequired,
382
+ answer: _propTypes.default.array
444
383
  });
445
-
446
- var _default = (0, _styles.withStyles)(styles)(NumberLine);
447
-
448
- exports["default"] = _default;
384
+ var _default = exports.default = NumberLine;
449
385
  //# sourceMappingURL=index.js.map