@pie-element/number-line 13.1.1 → 13.1.2-next.1

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 (191) hide show
  1. package/configure.js +2 -0
  2. package/controller.js +1 -0
  3. package/dist/_virtual/_rolldown/runtime.js +11 -0
  4. package/dist/author/arrows.d.ts +28 -0
  5. package/dist/author/arrows.js +69 -0
  6. package/dist/author/card-bar.d.ts +20 -0
  7. package/dist/author/card-bar.js +41 -0
  8. package/dist/author/defaults.d.ts +178 -0
  9. package/dist/author/defaults.js +144 -0
  10. package/dist/author/domain.d.ts +15 -0
  11. package/dist/author/domain.js +54 -0
  12. package/dist/author/index.d.ts +23 -0
  13. package/dist/author/index.js +89 -0
  14. package/dist/author/main.d.ts +44 -0
  15. package/dist/author/main.js +485 -0
  16. package/dist/author/number-text-field.d.ts +13 -0
  17. package/dist/author/number-text-field.js +13 -0
  18. package/dist/author/point-config.d.ts +25 -0
  19. package/dist/author/point-config.js +69 -0
  20. package/dist/author/size.d.ts +24 -0
  21. package/dist/author/size.js +48 -0
  22. package/dist/author/ticks.d.ts +22 -0
  23. package/dist/author/ticks.js +115 -0
  24. package/dist/author/utils.d.ts +9 -0
  25. package/dist/author/utils.js +4 -0
  26. package/dist/browser/author/index.js +40259 -0
  27. package/dist/browser/author/index.js.map +1 -0
  28. package/dist/browser/controller/index.js +569 -0
  29. package/dist/browser/controller/index.js.map +1 -0
  30. package/dist/browser/delivery/index.js +2 -0
  31. package/dist/browser/delivery-Ci_kZyOM.js +17903 -0
  32. package/dist/browser/delivery-Ci_kZyOM.js.map +1 -0
  33. package/dist/browser/dist-D5T-OaLo.js +19038 -0
  34. package/dist/browser/dist-D5T-OaLo.js.map +1 -0
  35. package/dist/browser/impureFunctionsAny.generated-Bqfato71.js +10162 -0
  36. package/dist/browser/impureFunctionsAny.generated-Bqfato71.js.map +1 -0
  37. package/dist/browser/number-line.css +2 -0
  38. package/dist/controller/defaults.d.ts +58 -0
  39. package/dist/controller/defaults.js +50 -0
  40. package/dist/controller/index.d.ts +47 -0
  41. package/dist/controller/index.js +165 -0
  42. package/dist/controller/tickUtils.d.ts +21 -0
  43. package/dist/controller/tickUtils.js +252 -0
  44. package/dist/controller/utils.d.ts +9 -0
  45. package/dist/controller/utils.js +68 -0
  46. package/dist/delivery/data-converter.d.ts +64 -0
  47. package/dist/delivery/data-converter.js +70 -0
  48. package/dist/delivery/draggable/index.d.ts +33 -0
  49. package/dist/delivery/draggable/index.js +39 -0
  50. package/dist/delivery/index.d.ts +35 -0
  51. package/dist/delivery/index.js +109 -0
  52. package/dist/delivery/number-line/colors.d.ts +11 -0
  53. package/dist/delivery/number-line/colors.js +5 -0
  54. package/dist/delivery/number-line/feedback.d.ts +19 -0
  55. package/dist/delivery/number-line/feedback.js +57 -0
  56. package/dist/delivery/number-line/graph/arrow.d.ts +30 -0
  57. package/dist/delivery/number-line/graph/arrow.js +27 -0
  58. package/dist/delivery/number-line/graph/elements/base.d.ts +16 -0
  59. package/dist/delivery/number-line/graph/elements/base.js +11 -0
  60. package/dist/delivery/number-line/graph/elements/builder.d.ts +33 -0
  61. package/dist/delivery/number-line/graph/elements/builder.js +30 -0
  62. package/dist/delivery/number-line/graph/elements/line.d.ts +51 -0
  63. package/dist/delivery/number-line/graph/elements/line.js +188 -0
  64. package/dist/delivery/number-line/graph/elements/point.d.ts +43 -0
  65. package/dist/delivery/number-line/graph/elements/point.js +127 -0
  66. package/dist/delivery/number-line/graph/elements/ray.d.ts +43 -0
  67. package/dist/delivery/number-line/graph/elements/ray.js +130 -0
  68. package/dist/delivery/number-line/graph/index.d.ts +59 -0
  69. package/dist/delivery/number-line/graph/index.js +196 -0
  70. package/dist/delivery/number-line/graph/line.d.ts +46 -0
  71. package/dist/delivery/number-line/graph/line.js +27 -0
  72. package/dist/delivery/number-line/graph/stacks.d.ts +10 -0
  73. package/dist/delivery/number-line/graph/stacks.js +40 -0
  74. package/dist/delivery/number-line/graph/tick-utils.d.ts +80 -0
  75. package/dist/delivery/number-line/graph/tick-utils.js +295 -0
  76. package/dist/delivery/number-line/graph/ticks.d.ts +46 -0
  77. package/dist/delivery/number-line/graph/ticks.js +115 -0
  78. package/dist/delivery/number-line/index.d.ts +35 -0
  79. package/dist/delivery/number-line/index.js +215 -0
  80. package/dist/delivery/number-line/point-chooser/button.d.ts +31 -0
  81. package/dist/delivery/number-line/point-chooser/button.js +36 -0
  82. package/dist/delivery/number-line/point-chooser/img.d.ts +10 -0
  83. package/dist/delivery/number-line/point-chooser/img.js +4 -0
  84. package/dist/delivery/number-line/point-chooser/index.d.ts +37 -0
  85. package/dist/delivery/number-line/point-chooser/index.js +154 -0
  86. package/dist/delivery/number-line/point-chooser/styles.d.ts +192 -0
  87. package/dist/delivery/number-line/transitions/fade.d.ts +34 -0
  88. package/dist/delivery/number-line/transitions/fade.js +75 -0
  89. package/dist/delivery/number-line/transitions/index.d.ts +10 -0
  90. package/dist/index.d.ts +1 -0
  91. package/dist/index.iife.d.ts +8 -0
  92. package/dist/index.iife.js +197 -0
  93. package/dist/index.js +2 -0
  94. package/dist/runtime-support.d.ts +12 -0
  95. package/dist/runtime-support.js +12 -0
  96. package/package.json +87 -21
  97. package/CHANGELOG.json +0 -1247
  98. package/CHANGELOG.md +0 -2435
  99. package/LICENSE.md +0 -5
  100. package/README.md +0 -28
  101. package/configure/CHANGELOG.json +0 -827
  102. package/configure/CHANGELOG.md +0 -2082
  103. package/configure/lib/arrows.js +0 -89
  104. package/configure/lib/arrows.js.map +0 -1
  105. package/configure/lib/card-bar.js +0 -57
  106. package/configure/lib/card-bar.js.map +0 -1
  107. package/configure/lib/defaults.js +0 -177
  108. package/configure/lib/defaults.js.map +0 -1
  109. package/configure/lib/domain.js +0 -87
  110. package/configure/lib/domain.js.map +0 -1
  111. package/configure/lib/index.js +0 -176
  112. package/configure/lib/index.js.map +0 -1
  113. package/configure/lib/main.js +0 -815
  114. package/configure/lib/main.js.map +0 -1
  115. package/configure/lib/number-text-field.js +0 -26
  116. package/configure/lib/number-text-field.js.map +0 -1
  117. package/configure/lib/point-config.js +0 -84
  118. package/configure/lib/point-config.js.map +0 -1
  119. package/configure/lib/size.js +0 -66
  120. package/configure/lib/size.js.map +0 -1
  121. package/configure/lib/ticks.js +0 -234
  122. package/configure/lib/ticks.js.map +0 -1
  123. package/configure/lib/utils.js +0 -12
  124. package/configure/lib/utils.js.map +0 -1
  125. package/configure/package.json +0 -20
  126. package/controller/CHANGELOG.json +0 -332
  127. package/controller/CHANGELOG.md +0 -1360
  128. package/controller/lib/defaults.js +0 -56
  129. package/controller/lib/defaults.js.map +0 -1
  130. package/controller/lib/index.js +0 -430
  131. package/controller/lib/index.js.map +0 -1
  132. package/controller/lib/tickUtils.js +0 -294
  133. package/controller/lib/tickUtils.js.map +0 -1
  134. package/controller/lib/utils.js +0 -168
  135. package/controller/lib/utils.js.map +0 -1
  136. package/controller/package.json +0 -20
  137. package/demo.gif +0 -0
  138. package/docs/config-schema.json +0 -2532
  139. package/docs/config-schema.json.md +0 -1844
  140. package/docs/demo/config.js +0 -8
  141. package/docs/demo/generate.js +0 -39
  142. package/docs/demo/index.html +0 -1
  143. package/docs/pie-schema.json +0 -2461
  144. package/docs/pie-schema.json.md +0 -1228
  145. package/docs/schemas/config.json +0 -256
  146. package/lib/data-converter.js +0 -96
  147. package/lib/data-converter.js.map +0 -1
  148. package/lib/draggable/index.js +0 -114
  149. package/lib/draggable/index.js.map +0 -1
  150. package/lib/index.js +0 -196
  151. package/lib/index.js.map +0 -1
  152. package/lib/number-line/colors.js +0 -11
  153. package/lib/number-line/colors.js.map +0 -1
  154. package/lib/number-line/feedback.js +0 -92
  155. package/lib/number-line/feedback.js.map +0 -1
  156. package/lib/number-line/graph/arrow.js +0 -44
  157. package/lib/number-line/graph/arrow.js.map +0 -1
  158. package/lib/number-line/graph/elements/base.js +0 -20
  159. package/lib/number-line/graph/elements/base.js.map +0 -1
  160. package/lib/number-line/graph/elements/builder.js +0 -37
  161. package/lib/number-line/graph/elements/builder.js.map +0 -1
  162. package/lib/number-line/graph/elements/line.js +0 -259
  163. package/lib/number-line/graph/elements/line.js.map +0 -1
  164. package/lib/number-line/graph/elements/point.js +0 -204
  165. package/lib/number-line/graph/elements/point.js.map +0 -1
  166. package/lib/number-line/graph/elements/ray.js +0 -190
  167. package/lib/number-line/graph/elements/ray.js.map +0 -1
  168. package/lib/number-line/graph/index.js +0 -262
  169. package/lib/number-line/graph/index.js.map +0 -1
  170. package/lib/number-line/graph/line.js +0 -38
  171. package/lib/number-line/graph/line.js.map +0 -1
  172. package/lib/number-line/graph/stacks.js +0 -78
  173. package/lib/number-line/graph/stacks.js.map +0 -1
  174. package/lib/number-line/graph/tick-utils.js +0 -347
  175. package/lib/number-line/graph/tick-utils.js.map +0 -1
  176. package/lib/number-line/graph/ticks.js +0 -188
  177. package/lib/number-line/graph/ticks.js.map +0 -1
  178. package/lib/number-line/index.js +0 -384
  179. package/lib/number-line/index.js.map +0 -1
  180. package/lib/number-line/point-chooser/button.js +0 -49
  181. package/lib/number-line/point-chooser/button.js.map +0 -1
  182. package/lib/number-line/point-chooser/img.js +0 -8
  183. package/lib/number-line/point-chooser/img.js.map +0 -1
  184. package/lib/number-line/point-chooser/index.js +0 -197
  185. package/lib/number-line/point-chooser/index.js.map +0 -1
  186. package/lib/number-line/point-chooser/styles.js +0 -77
  187. package/lib/number-line/point-chooser/styles.js.map +0 -1
  188. package/lib/number-line/transitions/fade.js +0 -88
  189. package/lib/number-line/transitions/fade.js.map +0 -1
  190. package/lib/number-line/transitions/index.js +0 -14
  191. package/lib/number-line/transitions/index.js.map +0 -1
@@ -1,815 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.toPointType = exports.default = exports.Main = void 0;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
- var _react = _interopRequireDefault(require("react"));
10
- var _configUi = require("@pie-lib/config-ui");
11
- var _editableHtmlTipTap = _interopRequireDefault(require("@pie-lib/editable-html-tip-tap"));
12
- var _numberLine = require("@pie-element/number-line");
13
- var _numberTextField = _interopRequireDefault(require("./number-text-field"));
14
- var _cardBar = _interopRequireDefault(require("./card-bar"));
15
- var _size = _interopRequireDefault(require("./size"));
16
- var _propTypes = _interopRequireDefault(require("prop-types"));
17
- var _domain = _interopRequireDefault(require("./domain"));
18
- var _arrows = _interopRequireDefault(require("./arrows"));
19
- var _pointConfig = _interopRequireDefault(require("./point-config"));
20
- var _lodashEs = require("lodash-es");
21
- var _styles = require("@mui/material/styles");
22
- var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
23
- var _Info = _interopRequireDefault(require("@mui/icons-material/Info"));
24
- var _Tooltip = _interopRequireDefault(require("@mui/material/Tooltip"));
25
- var _ticks = _interopRequireDefault(require("./ticks"));
26
- var _defaults = require("./defaults");
27
- var _utils = require("./utils");
28
- var math = _interopRequireWildcard(require("mathjs"));
29
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
30
- const trimModel = model => ({
31
- ...model,
32
- feedback: undefined,
33
- prompt: undefined,
34
- teacherInstructions: undefined,
35
- graph: {
36
- ...model.graph,
37
- title: undefined,
38
- disabled: true
39
- },
40
- correctResponse: undefined
41
- });
42
- const {
43
- lineIsSwitched,
44
- switchGraphLine,
45
- toGraphFormat,
46
- toSessionFormat
47
- } = _numberLine.dataConverter;
48
- const {
49
- Panel,
50
- toggle
51
- } = _configUi.settings;
52
- let minorLimits = {};
53
- let minorValues = {};
54
- let majorValues = {};
55
- const StyledNumberTextField = (0, _styles.styled)(_numberTextField.default)({
56
- width: '150px',
57
- '.MuiInputBase-input': {
58
- padding: '16.5px 14px'
59
- }
60
- });
61
- const Row = (0, _styles.styled)('div')(({
62
- theme
63
- }) => ({
64
- display: 'flex',
65
- flexWrap: 'wrap',
66
- '& > *': {
67
- paddingRight: theme.spacing(2)
68
- }
69
- }));
70
- const PointTypeChooser = (0, _styles.styled)('div')(({
71
- theme
72
- }) => ({
73
- margin: `${theme.spacing(2.5)} 0`
74
- }));
75
- const StyledInputContainer = (0, _styles.styled)(_configUi.InputContainer)(({
76
- theme
77
- }) => ({
78
- paddingTop: theme.spacing(2),
79
- marginBottom: theme.spacing(2),
80
- width: '100%'
81
- }));
82
- const StyledFormSection = (0, _styles.styled)(_configUi.FormSection)(({
83
- theme
84
- }) => ({
85
- marginBottom: theme.spacing(4)
86
- }));
87
- const ErrorText = (0, _styles.styled)('div')(({
88
- theme
89
- }) => ({
90
- fontSize: theme.typography.fontSize - 2,
91
- color: theme.palette.error.main,
92
- paddingTop: theme.spacing(1)
93
- }));
94
- const FlexRow = (0, _styles.styled)('div')({
95
- display: 'flex',
96
- alignItems: 'center',
97
- gap: '10px'
98
- });
99
- const FlexRowFormSection = (0, _styles.styled)(_configUi.FormSection)({
100
- display: 'flex',
101
- alignItems: 'center',
102
- gap: '10px'
103
- });
104
- const Description = (0, _styles.styled)(_Typography.default)(({
105
- theme
106
- }) => ({
107
- marginBottom: theme.spacing(2.5)
108
- }));
109
- const toPointType = response => {
110
- function rest(response) {
111
- if (response.pointType) {
112
- if (response.direction) {
113
- return `${response.pointType[0]}${response.direction[0]}`;
114
- }
115
- return response.pointType[0];
116
- }
117
- return `${response.leftPoint[0]}${response.rightPoint[0]}`;
118
- }
119
- return `${response.type[0]}${rest(response)}`.toUpperCase();
120
- };
121
- exports.toPointType = toPointType;
122
- class Main extends _react.default.Component {
123
- constructor(props) {
124
- super(props);
125
- (0, _defineProperty2.default)(this, "graphChange", obj => {
126
- const {
127
- model,
128
- onChange
129
- } = this.props;
130
- let graph = {
131
- ...model.graph,
132
- ...obj
133
- };
134
- let respIndex = [];
135
- model.correctResponse.forEach((correctResp, key) => {
136
- if (correctResp.domainPosition < graph.domain.min || correctResp.domainPosition > graph.domain.max || correctResp.size && (correctResp.domainPosition + correctResp.size < graph.domain.min || correctResp.domainPosition + correctResp.size > graph.domain.max)) {
137
- respIndex.push(key);
138
- }
139
- });
140
- if (respIndex.length > 0) {
141
- this.setState({
142
- correctAnswerDialog: {
143
- open: true,
144
- text: 'This\n' + 'change would make it impossible for students to plot one or more elements in the current\n' + 'correct answer. If you proceed, all such elements will be removed from the correct\n' + 'answer.',
145
- indices: respIndex,
146
- graph: model.graph
147
- }
148
- });
149
- }
150
- //reload ticks value whenever domain and width is changed
151
- graph = this.reloadTicksData(graph);
152
- onChange({
153
- graph
154
- });
155
- });
156
- (0, _defineProperty2.default)(this, "changeSize", ({
157
- width,
158
- height
159
- }) => this.graphChange({
160
- width,
161
- height
162
- }));
163
- (0, _defineProperty2.default)(this, "getAdjustedHeight", (availableTypes, maxNumberOfPoints) => {
164
- let onlyPFAvailable = true;
165
- Object.entries(availableTypes || {}).forEach(([type, value]) => {
166
- if (type !== 'PF' && value) {
167
- onlyPFAvailable = false;
168
- return;
169
- }
170
- });
171
- return maxNumberOfPoints && (maxNumberOfPoints === 1 || onlyPFAvailable) ? 100 : 50 + (maxNumberOfPoints || 20) * 25;
172
- });
173
- (0, _defineProperty2.default)(this, "changeMaxNoOfPoints", (e, maxNumberOfPoints) => {
174
- maxNumberOfPoints = Math.floor(maxNumberOfPoints);
175
- if (this.props.model.correctResponse.length > maxNumberOfPoints) {
176
- this.setState({
177
- dialog: {
178
- open: true,
179
- text: 'To use this value, you must first remove one or more elements from the correct answers.'
180
- }
181
- });
182
- return;
183
- }
184
- const {
185
- model: {
186
- graph: {
187
- availableTypes
188
- }
189
- }
190
- } = this.props;
191
- const height = this.getAdjustedHeight(availableTypes, maxNumberOfPoints);
192
- this.graphChange({
193
- maxNumberOfPoints,
194
- height
195
- });
196
- });
197
- (0, _defineProperty2.default)(this, "changeGraphTitle", title => this.graphChange({
198
- title
199
- }));
200
- /*
201
- * Gets triggered whenever ticks related data is changed by user.
202
- * */
203
- (0, _defineProperty2.default)(this, "changeTicks", object => {
204
- const {
205
- model,
206
- onChange
207
- } = this.props;
208
- let {
209
- ticks
210
- } = object;
211
- const correctResponse = _numberLine.tickUtils.snapElements(model.graph.domain, ticks, model.correctResponse);
212
- const initialElements = model.graph.initialElements ? _numberLine.tickUtils.snapElements(model.graph.domain, ticks, model.graph.initialElements) : [];
213
- let updatedGraph = this.updateMajorValue({
214
- ...model.graph,
215
- ticks
216
- });
217
- const graph = {
218
- ...updatedGraph,
219
- initialElements
220
- };
221
- onChange({
222
- graph,
223
- correctResponse
224
- });
225
- });
226
- /*
227
- * This function is duplicated in controller/index.js
228
- * This function will reload ticks data whenever graph object is changed and also sets required tick object
229
- * for rendering Ticks Components.
230
- * @param graph object containing domain, ticks and width value
231
- * @return graph object with updated ticks values
232
- * */
233
- (0, _defineProperty2.default)(this, "reloadTicksData", graph => {
234
- const {
235
- domain,
236
- ticks,
237
- width
238
- } = graph;
239
- //Set tick interval type if not present for legacy number line models depending upon minor value
240
- if (!ticks.tickIntervalType) {
241
- if (ticks.minor > 0.5) {
242
- ticks.tickIntervalType = 'Integer';
243
- } else {
244
- ticks.tickIntervalType = 'Decimal';
245
- }
246
- }
247
- // This section will calculate minor and major values array and assign respective value
248
- // to different tick types object
249
- minorLimits = _numberLine.tickUtils.getMinorLimits(domain, width);
250
- if (minorLimits.min >= 1) {
251
- /*
252
- * In this scenario only integer tick will be enabled
253
- * */
254
- ticks.tickIntervalType = 'Integer';
255
- ticks.minor = ticks.minor < 1 ? math.number(math.ceil(minorLimits.min)) : ticks.minor >= math.number(math.ceil(minorLimits.min)) && ticks.minor <= math.number(math.floor(minorLimits.max)) ? ticks.minor : math.number(math.ceil(minorLimits.min));
256
- ticks.integerTick = ticks.minor;
257
- minorValues = {
258
- decimal: [],
259
- fraction: []
260
- };
261
- ticks.fractionTick = '0';
262
- ticks.decimalTick = 0;
263
- } else if (minorLimits.min >= 0 && minorLimits.max < 1) {
264
- /*
265
- * In this scenario only decimal or fraction tick will be enabled
266
- * */
267
- if (ticks.tickIntervalType === 'Integer') {
268
- ticks.tickIntervalType = 'Fraction';
269
- }
270
- minorValues = _numberLine.tickUtils.generateMinorValues(minorLimits);
271
- let minValue = math.number(math.fraction(minorValues.fraction[0]));
272
- let maxValue = math.number(math.fraction(minorValues.fraction[minorValues.fraction.length - 1]));
273
- if (ticks.minor < minValue || ticks.minor > maxValue) {
274
- switch (ticks.tickIntervalType) {
275
- case 'Fraction':
276
- ticks.minor = math.number(math.fraction(minorValues.fraction[minorValues.fraction.length - 1]));
277
- ticks.fractionTick = minorValues.fraction[minorValues.fraction.length - 1];
278
- ticks.decimalTick = minorValues.decimal[0];
279
- break;
280
- case 'Decimal':
281
- case 'Integer':
282
- ticks.minor = minorValues.decimal[minorValues.decimal.length - 1];
283
- ticks.decimalTick = minorValues.decimal[minorValues.decimal.length - 1];
284
- ticks.fractionTick = minorValues.fraction[0];
285
- }
286
- } else {
287
- switch (ticks.tickIntervalType) {
288
- case 'Fraction':
289
- let fraction = math.fraction(math.number(ticks.minor));
290
- ticks.fractionTick = fraction.n + '/' + fraction.d;
291
- ticks.decimalTick = ticks.decimalTick ? ticks.decimalTick : minorValues.decimal[0];
292
- break;
293
- case 'Decimal':
294
- case 'Integer':
295
- ticks.decimalTick = ticks.minor;
296
- ticks.fractionTick = ticks.fractionTick ? ticks.fractionTick : minorValues.fraction[0];
297
- }
298
- }
299
- ticks.integerTick = 1;
300
- } else if (minorLimits.min < 1 && minorLimits.max >= 1) {
301
- /*
302
- * In this scenario all integer, decimal or fraction tick will be enabled
303
- * */
304
- minorValues = _numberLine.tickUtils.generateMinorValues(minorLimits);
305
- if (!(ticks.minor >= minorLimits.min && ticks.minor <= minorLimits.max)) {
306
- if (minorLimits.min > 0.5) {
307
- ticks.tickIntervalType = 'Integer';
308
- }
309
- switch (ticks.tickIntervalType) {
310
- case 'Integer':
311
- ticks.minor = math.number(math.ceil(minorLimits.min));
312
- ticks.integerTick = ticks.minor;
313
- ticks.decimalTick = minorLimits.min > 0.5 ? 0 : minorValues.decimal[0];
314
- ticks.fractionTick = minorLimits.min > 0.5 ? '0' : minorValues.fraction[0];
315
- break;
316
- case 'Decimal':
317
- ticks.minor = minorValues.decimal[0];
318
- ticks.integerTick = 1;
319
- ticks.decimalTick = ticks.minor;
320
- ticks.fractionTick = minorValues.fraction[0];
321
- break;
322
- case 'Fraction':
323
- ticks.minor = math.number(math.fraction(minorValues.fraction[0]));
324
- ticks.integerTick = 1;
325
- ticks.decimalTick = minorValues.decimal[0];
326
- ticks.fractionTick = minorValues.fraction[0];
327
- }
328
- } else {
329
- switch (ticks.tickIntervalType) {
330
- case 'Integer':
331
- ticks.integerTick = ticks.minor;
332
- ticks.decimalTick = minorLimits.min > 0.5 ? 0 : minorValues.decimal[0];
333
- ticks.fractionTick = minorLimits.min > 0.5 ? '0' : minorValues.fraction[0];
334
- break;
335
- case 'Decimal':
336
- ticks.integerTick = 1;
337
- ticks.decimalTick = ticks.minor;
338
- ticks.fractionTick = minorValues.fraction[0];
339
- break;
340
- case 'Fraction':
341
- ticks.integerTick = 1;
342
- ticks.decimalTick = minorValues.decimal[0];
343
- let fraction = math.fraction(math.number(ticks.minor));
344
- ticks.fractionTick = fraction.n + '/' + fraction.d;
345
- }
346
- }
347
- }
348
- return this.updateMajorValue({
349
- ...graph,
350
- ticks
351
- });
352
- });
353
- /*
354
- * This function is duplicated in controller/index.js
355
- * This function will update major value whenever minor value is changed or tick type is changed
356
- * @param graph object containing domain, ticks and width value
357
- * @return graph object with updated ticks values
358
- * */
359
- (0, _defineProperty2.default)(this, "updateMajorValue", graph => {
360
- const {
361
- domain,
362
- ticks,
363
- width
364
- } = graph;
365
- majorValues = _numberLine.tickUtils.generateMajorValuesForMinor(ticks.minor, domain, width);
366
- if (majorValues.decimal.indexOf(ticks.major) === -1) {
367
- let currIndex = 0;
368
- if (ticks.tickIntervalType === 'Integer') {
369
- currIndex = majorValues.decimal.length > 4 ? 4 : majorValues.decimal.length - 1;
370
- } else {
371
- currIndex = majorValues.decimal.length - 1;
372
- }
373
- ticks.major = majorValues.decimal[currIndex];
374
- }
375
- graph.fraction = ticks.tickIntervalType === 'Fraction' && ticks.major < 1;
376
- return {
377
- ...graph,
378
- ticks
379
- };
380
- });
381
- (0, _defineProperty2.default)(this, "changeArrows", arrows => this.graphChange({
382
- arrows
383
- }));
384
- (0, _defineProperty2.default)(this, "setDefaults", () => {
385
- const {
386
- graph: {
387
- availableTypes,
388
- maxNumberOfPoints
389
- }
390
- } = _defaults.model;
391
- const height = this.getAdjustedHeight(availableTypes, maxNumberOfPoints);
392
- const graph = {
393
- ...(0, _lodashEs.cloneDeep)(_defaults.model.graph),
394
- height
395
- };
396
- this.props.onChange({
397
- graph
398
- });
399
- });
400
- (0, _defineProperty2.default)(this, "moveCorrectResponse", (index, el, position) => {
401
- el.position = position;
402
- const {
403
- onChange,
404
- model
405
- } = this.props;
406
- const update = toSessionFormat(el.type === 'line' && lineIsSwitched(el) ? switchGraphLine(el) : el);
407
- const correctResponse = [...model.correctResponse];
408
- correctResponse[index] = update;
409
- onChange({
410
- correctResponse
411
- });
412
- });
413
- (0, _defineProperty2.default)(this, "availableTypesChange", availableTypes => {
414
- const {
415
- model,
416
- onChange
417
- } = this.props;
418
- const {
419
- correctResponse,
420
- graph: {
421
- maxNumberOfPoints
422
- }
423
- } = model;
424
- new Set(correctResponse.map(toPointType)).forEach(pointType => {
425
- availableTypes[pointType] = true;
426
- });
427
- const height = this.getAdjustedHeight(availableTypes, maxNumberOfPoints);
428
- const graph = {
429
- ...model.graph,
430
- availableTypes,
431
- height
432
- };
433
- onChange({
434
- graph
435
- });
436
- });
437
- (0, _defineProperty2.default)(this, "deleteCorrectResponse", indices => {
438
- const {
439
- model,
440
- onChange
441
- } = this.props;
442
- const correctResponse = model.correctResponse.filter((v, index) => !indices.some(d => d === index));
443
- onChange({
444
- correctResponse
445
- });
446
- });
447
- (0, _defineProperty2.default)(this, "addCorrectResponse", data => {
448
- const {
449
- model,
450
- onChange
451
- } = this.props;
452
- const correctResponse = [...model.correctResponse];
453
- correctResponse.push(toSessionFormat(data));
454
- onChange({
455
- correctResponse
456
- });
457
- });
458
- (0, _defineProperty2.default)(this, "clearCorrectResponse", () => {
459
- const {
460
- onChange
461
- } = this.props;
462
- onChange({
463
- correctResponse: []
464
- });
465
- });
466
- (0, _defineProperty2.default)(this, "undoCorrectResponse", () => {
467
- const {
468
- model,
469
- onChange
470
- } = this.props;
471
- const correctResponse = [...model.correctResponse];
472
- correctResponse.pop();
473
- onChange({
474
- correctResponse
475
- });
476
- });
477
- const {
478
- model: {
479
- graph: {
480
- availableTypes: _availableTypes,
481
- maxNumberOfPoints: _maxNumberOfPoints
482
- }
483
- }
484
- } = props;
485
- const _height = this.getAdjustedHeight(_availableTypes, _maxNumberOfPoints);
486
- this.state = {
487
- dialog: {
488
- open: false,
489
- text: ''
490
- },
491
- correctAnswerDialog: {
492
- open: false,
493
- text: ''
494
- }
495
- };
496
- this.graphChange({
497
- height: _height
498
- });
499
- }
500
- componentDidMount() {
501
- const {
502
- configuration,
503
- model,
504
- onChange
505
- } = this.props;
506
- const {
507
- title
508
- } = configuration || {};
509
- const {
510
- titleEnabled: showTitle
511
- } = model || {};
512
- const titleEnabled = showTitle === undefined || showTitle === null ? title.enabled : showTitle;
513
- onChange && onChange({
514
- ...model,
515
- titleEnabled
516
- });
517
- }
518
- render() {
519
- const {
520
- model,
521
- onChange,
522
- configuration,
523
- onConfigurationChanged,
524
- uploadSoundSupport,
525
- imageSupport
526
- } = this.props;
527
- const {
528
- baseInputConfiguration = {},
529
- contentDimensions = {},
530
- instruction = {},
531
- teacherInstructions = {},
532
- title = {},
533
- prompt = {},
534
- rationale = {},
535
- spellCheck = {},
536
- mathMlOptions = {},
537
- numberLineDimensions = {},
538
- maxMaxElements = 20,
539
- hidePointConfigButtons = false,
540
- availableTools = ['PF'],
541
- settingsPanelDisabled = false
542
- } = configuration || {};
543
- const {
544
- errors = {},
545
- extraCSSRules,
546
- spellCheckEnabled,
547
- toolbarEditorPosition,
548
- teacherInstructionsEnabled,
549
- titleEnabled,
550
- promptEnabled,
551
- rationaleEnabled
552
- } = model || {};
553
- let {
554
- graph
555
- } = model;
556
- graph = this.reloadTicksData(graph);
557
- const {
558
- dialog,
559
- correctAnswerDialog
560
- } = this.state;
561
- const {
562
- correctResponseError,
563
- domainError,
564
- maxError,
565
- pointsError,
566
- prompt: promptError,
567
- rationale: rationaleError,
568
- teacherInstructions: teacherInstructionsError,
569
- widthError
570
- } = errors || {};
571
- const validationMessage = (0, _utils.generateValidationMessage)();
572
- const correctResponse = (0, _lodashEs.cloneDeep)(model.correctResponse || []).map(toGraphFormat);
573
- const initialModel = (0, _lodashEs.cloneDeep)(model);
574
- initialModel['disabled'] = true;
575
- const toolbarOpts = {
576
- position: toolbarEditorPosition === 'top' ? 'top' : 'bottom'
577
- };
578
- const panelProperties = {
579
- teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),
580
- titleEnabled: title.settings && toggle(title.label),
581
- promptEnabled: prompt.settings && toggle(prompt.label),
582
- rationaleEnabled: rationale.settings && toggle(rationale.label),
583
- spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label)
584
- };
585
- const getPluginProps = (props = {}) => ({
586
- ...baseInputConfiguration,
587
- ...props
588
- });
589
- return /*#__PURE__*/_react.default.createElement(_configUi.layout.ConfigLayout, {
590
- extraCSSRules: extraCSSRules,
591
- dimensions: contentDimensions,
592
- hideSettings: settingsPanelDisabled,
593
- settings: /*#__PURE__*/_react.default.createElement(Panel, {
594
- model: model,
595
- configuration: configuration,
596
- onChangeModel: onChange,
597
- onChangeConfiguration: onConfigurationChanged,
598
- groups: {
599
- Properties: panelProperties
600
- }
601
- })
602
- }, /*#__PURE__*/_react.default.createElement(Description, {
603
- component: "div",
604
- type: "body1"
605
- }, instruction.label), teacherInstructionsEnabled && /*#__PURE__*/_react.default.createElement(StyledInputContainer, {
606
- label: teacherInstructions.label
607
- }, /*#__PURE__*/_react.default.createElement(_editableHtmlTipTap.default, {
608
- markup: model.teacherInstructions || '',
609
- onChange: teacherInstructions => onChange({
610
- teacherInstructions
611
- }),
612
- nonEmpty: false,
613
- disableUnderline: true,
614
- error: teacherInstructionsError,
615
- toolbarOpts: toolbarOpts,
616
- pluginProps: getPluginProps(teacherInstructions?.inputConfiguration),
617
- spellCheck: spellCheckEnabled,
618
- imageSupport: imageSupport,
619
- uploadSoundSupport: uploadSoundSupport,
620
- languageCharactersProps: [{
621
- language: 'spanish'
622
- }, {
623
- language: 'special'
624
- }],
625
- mathMlOptions: mathMlOptions
626
- }), teacherInstructionsError && /*#__PURE__*/_react.default.createElement(ErrorText, null, teacherInstructionsError)), promptEnabled && /*#__PURE__*/_react.default.createElement(StyledInputContainer, {
627
- label: prompt.label
628
- }, /*#__PURE__*/_react.default.createElement(_editableHtmlTipTap.default, {
629
- markup: model.prompt || '',
630
- onChange: prompt => onChange({
631
- prompt
632
- }),
633
- nonEmpty: false,
634
- disableUnderline: true,
635
- error: promptError,
636
- toolbarOpts: toolbarOpts,
637
- pluginProps: getPluginProps(prompt?.inputConfiguration),
638
- spellCheck: spellCheckEnabled,
639
- imageSupport: imageSupport,
640
- uploadSoundSupport: uploadSoundSupport,
641
- languageCharactersProps: [{
642
- language: 'spanish'
643
- }, {
644
- language: 'special'
645
- }],
646
- mathMlOptions: mathMlOptions
647
- }), promptError && /*#__PURE__*/_react.default.createElement(ErrorText, null, promptError)), /*#__PURE__*/_react.default.createElement(_cardBar.default, {
648
- header: "Set Up Number Line",
649
- info: /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
650
- disableFocusListener: true,
651
- disableTouchListener: true,
652
- placement: 'right',
653
- title: validationMessage,
654
- slotProps: {
655
- tooltip: {
656
- sx: theme => ({
657
- fontSize: theme.typography.fontSize - 2,
658
- whiteSpace: 'pre',
659
- maxWidth: '500px'
660
- })
661
- }
662
- }
663
- }, /*#__PURE__*/_react.default.createElement(_Info.default, {
664
- fontSize: 'small',
665
- color: 'primary',
666
- style: {
667
- marginLeft: '8px'
668
- }
669
- }))
670
- }, "Set up the number line by entering the domain and number of tick marks to display. Labels on the number line can be edited or removed by clicking on the label."), /*#__PURE__*/_react.default.createElement(Row, null, /*#__PURE__*/_react.default.createElement(_domain.default, {
671
- domain: graph.domain,
672
- errors: errors,
673
- onChange: domain => this.graphChange({
674
- domain
675
- })
676
- })), maxError && /*#__PURE__*/_react.default.createElement(ErrorText, null, maxError), domainError && /*#__PURE__*/_react.default.createElement(ErrorText, null, domainError), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_configUi.FormSection, null, /*#__PURE__*/_react.default.createElement(_ticks.default, {
677
- ticks: graph.ticks,
678
- minorLimits: minorLimits,
679
- minorValues: minorValues,
680
- majorValues: majorValues,
681
- onChange: this.changeTicks
682
- }))), /*#__PURE__*/_react.default.createElement(FlexRow, null, model.widthEnabled && /*#__PURE__*/_react.default.createElement(_size.default, {
683
- size: graph,
684
- min: numberLineDimensions.min,
685
- max: numberLineDimensions.max,
686
- step: numberLineDimensions.step,
687
- onChange: this.changeSize
688
- }), /*#__PURE__*/_react.default.createElement("div", null), /*#__PURE__*/_react.default.createElement(_arrows.default, {
689
- arrows: graph.arrows,
690
- onChange: this.changeArrows
691
- })), widthError && /*#__PURE__*/_react.default.createElement(ErrorText, null, widthError), /*#__PURE__*/_react.default.createElement(_numberLine.NumberLineComponent, {
692
- onMoveElement: () => {},
693
- onDeleteElements: () => {},
694
- onAddElement: () => {},
695
- onClearElements: () => {},
696
- onUndoElement: () => {},
697
- minWidth: numberLineDimensions.min,
698
- maxWidth: numberLineDimensions.max,
699
- maxHeight: 70,
700
- model: trimModel(initialModel)
701
- }), titleEnabled && /*#__PURE__*/_react.default.createElement(StyledFormSection, {
702
- label: title?.label || 'Title'
703
- }, /*#__PURE__*/_react.default.createElement(_editableHtmlTipTap.default, {
704
- markup: graph.title || '',
705
- onChange: this.changeGraphTitle,
706
- toolbarOpts: toolbarOpts,
707
- activePlugins: ['bold', 'html', 'italic', 'underline', 'strikethrough', 'image', 'math', 'languageCharacters', 'responseArea'],
708
- pluginProps: getPluginProps(title?.inputConfiguration),
709
- spellCheck: spellCheckEnabled,
710
- imageSupport: imageSupport,
711
- uploadSoundSupport: uploadSoundSupport,
712
- languageCharactersProps: [{
713
- language: 'spanish'
714
- }, {
715
- language: 'special'
716
- }],
717
- mathMlOptions: mathMlOptions
718
- })), !graph.exhibitOnly && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_cardBar.default, {
719
- header: "Define Tool Set and Correct Response"
720
- }, "Select answer type and place it on the number line. Intersecting points, line segments and/or rays will appear above the number line. ", /*#__PURE__*/_react.default.createElement("i", null, "Note: A maximum of 20 points, line segments or rays may be plotted.")), /*#__PURE__*/_react.default.createElement(_cardBar.default, {
721
- header: "Available Tools",
722
- mini: true
723
- }, "Click on the input options to be displayed to the students. All inputs will display by default."), /*#__PURE__*/_react.default.createElement(PointTypeChooser, null, /*#__PURE__*/_react.default.createElement(_pointConfig.default, {
724
- onSelectionChange: this.availableTypesChange,
725
- selection: graph.availableTypes,
726
- availableTools: availableTools,
727
- hideButtons: hidePointConfigButtons
728
- })), /*#__PURE__*/_react.default.createElement(FlexRowFormSection, null, /*#__PURE__*/_react.default.createElement("label", null, "Max No of Elements"), /*#__PURE__*/_react.default.createElement(StyledNumberTextField, {
729
- min: 1,
730
- max: maxMaxElements,
731
- onlyIntegersAllowed: true,
732
- value: graph.maxNumberOfPoints,
733
- onChange: this.changeMaxNoOfPoints
734
- }), pointsError && /*#__PURE__*/_react.default.createElement(ErrorText, null, pointsError)), /*#__PURE__*/_react.default.createElement("label", null, "Correct Answer"), /*#__PURE__*/_react.default.createElement(_numberLine.NumberLineComponent, {
735
- onMoveElement: this.moveCorrectResponse,
736
- onDeleteElements: this.deleteCorrectResponse,
737
- onAddElement: this.addCorrectResponse,
738
- onClearElements: this.clearCorrectResponse,
739
- onUndoElement: this.undoCorrectResponse,
740
- minWidth: numberLineDimensions.min,
741
- maxWidth: numberLineDimensions.max,
742
- answer: correctResponse
743
- //strip feedback for this model
744
- ,
745
- model: trimModel(model)
746
- }), correctResponseError && /*#__PURE__*/_react.default.createElement(ErrorText, null, correctResponseError)), /*#__PURE__*/_react.default.createElement(_configUi.AlertDialog, {
747
- open: dialog.open,
748
- title: "Warning",
749
- text: dialog.text,
750
- onConfirm: () => this.setState({
751
- dialog: {
752
- open: false
753
- }
754
- })
755
- }), /*#__PURE__*/_react.default.createElement(_configUi.AlertDialog, {
756
- open: correctAnswerDialog.open,
757
- title: "Warning",
758
- text: correctAnswerDialog.text,
759
- onConfirm: () => {
760
- let indices = this.state.correctAnswerDialog.indices;
761
- if (indices && indices.length > 0) {
762
- this.deleteCorrectResponse(indices);
763
- }
764
- this.setState({
765
- correctAnswerDialog: {
766
- open: false
767
- }
768
- });
769
- },
770
- onClose: () => {
771
- const graph = this.state.correctAnswerDialog.graph;
772
- onChange({
773
- graph
774
- });
775
- this.setState({
776
- correctAnswerDialog: {
777
- open: false
778
- }
779
- });
780
- },
781
- onConfirmText: 'OK',
782
- onCloseText: 'Cancel'
783
- }), rationaleEnabled && /*#__PURE__*/_react.default.createElement(StyledInputContainer, {
784
- label: rationale.label || 'Rationale'
785
- }, /*#__PURE__*/_react.default.createElement(_editableHtmlTipTap.default, {
786
- markup: model.rationale || '',
787
- onChange: rationale => onChange({
788
- rationale
789
- }),
790
- error: rationaleError,
791
- toolbarOpts: toolbarOpts,
792
- spellCheck: spellCheckEnabled,
793
- pluginProps: getPluginProps(rationale?.inputConfiguration),
794
- imageSupport: imageSupport,
795
- uploadSoundSupport: uploadSoundSupport,
796
- languageCharactersProps: [{
797
- language: 'spanish'
798
- }, {
799
- language: 'special'
800
- }],
801
- mathMlOptions: mathMlOptions
802
- }), rationaleError && /*#__PURE__*/_react.default.createElement(ErrorText, null, rationaleError)));
803
- }
804
- }
805
- exports.Main = Main;
806
- (0, _defineProperty2.default)(Main, "propTypes", {
807
- model: _propTypes.default.object.isRequired,
808
- configuration: _propTypes.default.object.isRequired,
809
- onConfigurationChanged: _propTypes.default.func.isRequired,
810
- onChange: _propTypes.default.func.isRequired,
811
- imageSupport: _propTypes.default.object.isRequired,
812
- uploadSoundSupport: _propTypes.default.object.isRequired
813
- });
814
- var _default = exports.default = Main;
815
- //# sourceMappingURL=main.js.map