@pie-element/charting 2.7.19 → 2.7.20-beta.1443

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.
@@ -41,11 +41,11 @@ var _chartingConfig = _interopRequireDefault(require("./charting-config"));
41
41
 
42
42
  var _correctResponse = _interopRequireDefault(require("./correct-response"));
43
43
 
44
- var _chartType = _interopRequireDefault(require("./chart-type"));
44
+ var _utils = require("./utils");
45
45
 
46
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
46
+ 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; }
47
47
 
48
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
48
+ 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; }
49
49
 
50
50
  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); }; }
51
51
 
@@ -54,8 +54,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
54
54
  var log = (0, _debug["default"])('@pie-element:graphing:configure');
55
55
  var Panel = _configUi.settings.Panel,
56
56
  toggle = _configUi.settings.toggle,
57
- radio = _configUi.settings.radio,
58
- numberFields = _configUi.settings.numberFields;
57
+ radio = _configUi.settings.radio;
59
58
 
60
59
  var styles = function styles(theme) {
61
60
  return {
@@ -88,16 +87,11 @@ var Configure = /*#__PURE__*/function (_React$Component) {
88
87
 
89
88
  var _super = _createSuper(Configure);
90
89
 
91
- function Configure() {
90
+ function Configure(props) {
92
91
  var _this;
93
92
 
94
93
  (0, _classCallCheck2["default"])(this, Configure);
95
-
96
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
97
- args[_key] = arguments[_key];
98
- }
99
-
100
- _this = _super.call.apply(_super, [this].concat(args));
94
+ _this = _super.call(this, props);
101
95
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onRationaleChange", function (rationale) {
102
96
  return _this.props.onModelChanged(_objectSpread(_objectSpread({}, _this.props.model), {}, {
103
97
  rationale: rationale
@@ -118,74 +112,126 @@ var Configure = /*#__PURE__*/function (_React$Component) {
118
112
  chartType: chartType
119
113
  }));
120
114
  });
115
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onConfigChange", function (config) {
116
+ var _this$props = _this.props,
117
+ model = _this$props.model,
118
+ onModelChanged = _this$props.onModelChanged;
119
+ var _this$state = _this.state,
120
+ oldGridValues = _this$state.gridValues,
121
+ oldLabelValues = _this$state.labelValues;
122
+
123
+ var updatedModel = _objectSpread(_objectSpread({}, model), config);
124
+
125
+ var graph = updatedModel.graph,
126
+ range = updatedModel.range;
127
+ var gridValues = {};
128
+ var labelValues = {};
129
+ var rangeConstraints = (0, _utils.applyConstraints)(range, graph.height, oldGridValues.range, oldLabelValues.range);
130
+ gridValues.range = rangeConstraints.gridValues;
131
+ labelValues.range = rangeConstraints.labelValues;
132
+
133
+ _this.setState({
134
+ gridValues: gridValues,
135
+ labelValues: labelValues
136
+ });
137
+
138
+ onModelChanged(updatedModel);
139
+ });
140
+
141
+ var _ref = props.model || {},
142
+ _ref$range = _ref.range,
143
+ _range = _ref$range === void 0 ? {} : _ref$range,
144
+ _graph = _ref.graph;
145
+
146
+ var _gridValues = {
147
+ range: (0, _utils.getGridValues)(_range, _graph.height, true)
148
+ };
149
+ var _labelValues = {
150
+ range: (0, _utils.getLabelValues)(_range.step || 1)
151
+ };
152
+ _this.state = {
153
+ gridValues: _gridValues,
154
+ labelValues: _labelValues
155
+ };
121
156
  return _this;
122
157
  }
123
158
 
124
159
  (0, _createClass2["default"])(Configure, [{
125
160
  key: "render",
126
161
  value: function render() {
127
- var _this2 = this;
128
-
129
- var _this$props = this.props,
130
- classes = _this$props.classes,
131
- model = _this$props.model,
132
- configuration = _this$props.configuration,
133
- onConfigurationChanged = _this$props.onConfigurationChanged,
134
- onModelChanged = _this$props.onModelChanged,
135
- imageSupport = _this$props.imageSupport;
162
+ var _this$props2 = this.props,
163
+ classes = _this$props2.classes,
164
+ configuration = _this$props2.configuration,
165
+ imageSupport = _this$props2.imageSupport,
166
+ model = _this$props2.model,
167
+ onConfigurationChanged = _this$props2.onConfigurationChanged,
168
+ onModelChanged = _this$props2.onModelChanged,
169
+ uploadSoundSupport = _this$props2.uploadSoundSupport;
136
170
  log('[render] model', model);
137
171
  var graph = model.graph;
138
172
 
139
- var _ref = configuration || {},
140
- _ref$title = _ref.title,
141
- title = _ref$title === void 0 ? {} : _ref$title,
142
- _ref$rationale = _ref.rationale,
143
- rationale = _ref$rationale === void 0 ? {} : _ref$rationale,
144
- _ref$scoringType = _ref.scoringType,
145
- scoringType = _ref$scoringType === void 0 ? {} : _ref$scoringType,
146
- _ref$studentInstructi = _ref.studentInstructions,
147
- studentInstructions = _ref$studentInstructi === void 0 ? {} : _ref$studentInstructi,
148
- _ref$teacherInstructi = _ref.teacherInstructions,
149
- teacherInstructions = _ref$teacherInstructi === void 0 ? {} : _ref$teacherInstructi,
150
- _ref$prompt = _ref.prompt,
151
- prompt = _ref$prompt === void 0 ? {} : _ref$prompt;
152
-
153
- var _ref2 = model || {},
154
- teacherInstructionsEnabled = _ref2.teacherInstructionsEnabled,
155
- promptEnabled = _ref2.promptEnabled,
156
- rationaleEnabled = _ref2.rationaleEnabled;
157
-
173
+ var _ref2 = configuration || {},
174
+ _ref2$chartDimensions = _ref2.chartDimensions,
175
+ chartDimensions = _ref2$chartDimensions === void 0 ? {} : _ref2$chartDimensions,
176
+ _ref2$labelsPlacehold = _ref2.labelsPlaceholders,
177
+ labelsPlaceholders = _ref2$labelsPlacehold === void 0 ? {} : _ref2$labelsPlacehold,
178
+ _ref2$maxImageWidth = _ref2.maxImageWidth,
179
+ maxImageWidth = _ref2$maxImageWidth === void 0 ? {} : _ref2$maxImageWidth,
180
+ _ref2$maxImageHeight = _ref2.maxImageHeight,
181
+ maxImageHeight = _ref2$maxImageHeight === void 0 ? {} : _ref2$maxImageHeight,
182
+ _ref2$prompt = _ref2.prompt,
183
+ prompt = _ref2$prompt === void 0 ? {} : _ref2$prompt,
184
+ _ref2$rationale = _ref2.rationale,
185
+ rationale = _ref2$rationale === void 0 ? {} : _ref2$rationale,
186
+ _ref2$scoringType = _ref2.scoringType,
187
+ scoringType = _ref2$scoringType === void 0 ? {} : _ref2$scoringType,
188
+ settingsPanelDisabled = _ref2.settingsPanelDisabled,
189
+ _ref2$spellCheck = _ref2.spellCheck,
190
+ spellCheck = _ref2$spellCheck === void 0 ? {} : _ref2$spellCheck,
191
+ _ref2$studentInstruct = _ref2.studentInstructions,
192
+ studentInstructions = _ref2$studentInstruct === void 0 ? {} : _ref2$studentInstruct,
193
+ _ref2$teacherInstruct = _ref2.teacherInstructions,
194
+ teacherInstructions = _ref2$teacherInstruct === void 0 ? {} : _ref2$teacherInstruct,
195
+ _ref2$titlePlaceholde = _ref2.titlePlaceholder,
196
+ titlePlaceholder = _ref2$titlePlaceholde === void 0 ? {} : _ref2$titlePlaceholde,
197
+ _ref2$withRubric = _ref2.withRubric,
198
+ withRubric = _ref2$withRubric === void 0 ? {} : _ref2$withRubric;
199
+
200
+ var _ref3 = model || {},
201
+ errors = _ref3.errors,
202
+ promptEnabled = _ref3.promptEnabled,
203
+ rationaleEnabled = _ref3.rationaleEnabled,
204
+ spellCheckEnabled = _ref3.spellCheckEnabled,
205
+ teacherInstructionsEnabled = _ref3.teacherInstructionsEnabled;
206
+
207
+ var _ref4 = errors || {},
208
+ categoryErrors = _ref4.categoryErrors,
209
+ correctAnswerErrors = _ref4.correctAnswerErrors;
210
+
211
+ var _this$state2 = this.state,
212
+ gridValues = _this$state2.gridValues,
213
+ labelValues = _this$state2.labelValues;
214
+ var showPixeGuides = chartDimensions.showInConfigPanel || true;
215
+ var defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;
216
+ var defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;
217
+ var panelProperties = {
218
+ teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),
219
+ studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),
220
+ rationaleEnabled: rationale.settings && toggle(rationale.label),
221
+ spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),
222
+ promptEnabled: prompt.settings && toggle(prompt.label),
223
+ scoringType: scoringType.settings && radio(scoringType.label, ['all or nothing', 'partial scoring']),
224
+ rubricEnabled: (withRubric === null || withRubric === void 0 ? void 0 : withRubric.settings) && toggle(withRubric === null || withRubric === void 0 ? void 0 : withRubric.label)
225
+ };
158
226
  return /*#__PURE__*/_react["default"].createElement(_configUi.layout.ConfigLayout, {
227
+ hideSettings: settingsPanelDisabled,
159
228
  settings: /*#__PURE__*/_react["default"].createElement(Panel, {
160
229
  model: model,
161
230
  configuration: configuration,
162
231
  onChangeModel: onModelChanged,
163
232
  onChangeConfiguration: onConfigurationChanged,
164
233
  groups: {
165
- 'Item Type': {
166
- 'title.enabled': title.settings && toggle(title.label, true),
167
- graph: numberFields('Graph Display Size', {
168
- width: {
169
- label: 'Width',
170
- suffix: 'px',
171
- min: 400,
172
- max: 700
173
- },
174
- height: {
175
- label: 'Height',
176
- suffix: 'px',
177
- min: 400,
178
- max: 700
179
- }
180
- })
181
- },
182
- Properties: {
183
- teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),
184
- studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),
185
- rationaleEnabled: rationale.settings && toggle(rationale.label),
186
- promptEnabled: prompt.settings && toggle(prompt.label),
187
- scoringType: scoringType.settings && radio(scoringType.label, ['all or nothing', 'partial scoring'])
188
- }
234
+ Properties: panelProperties
189
235
  }
190
236
  })
191
237
  }, /*#__PURE__*/_react["default"].createElement("div", {
@@ -193,7 +239,7 @@ var Configure = /*#__PURE__*/function (_React$Component) {
193
239
  }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
194
240
  component: "div",
195
241
  type: "body1"
196
- }, /*#__PURE__*/_react["default"].createElement("span", null, "This interaction asks a student to draw a chart that meets specific criteria. The student will draw a category on the chart by clicking Add Category and dragging the top part of the category.")), teacherInstructionsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
242
+ }, /*#__PURE__*/_react["default"].createElement("span", null, "This item type provides various types of interactive charts. Depending upon how an item is configured, students can change the heights of bars (or other similar chart elements) created by the author; relabel bars created by the author; and/or add new bars, label them, and set their heights.")), teacherInstructionsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
197
243
  label: teacherInstructions.label,
198
244
  className: classes.promptHolder
199
245
  }, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
@@ -201,7 +247,16 @@ var Configure = /*#__PURE__*/function (_React$Component) {
201
247
  markup: model.teacherInstructions || '',
202
248
  onChange: this.onTeacherInstructionsChange,
203
249
  imageSupport: imageSupport,
204
- nonEmpty: false
250
+ nonEmpty: false,
251
+ spellCheck: spellCheckEnabled,
252
+ maxImageWidth: maxImageWidth && maxImageWidth.teacherInstructions || defaultImageMaxWidth,
253
+ maxImageHeight: maxImageHeight && maxImageHeight.teacherInstructions || defaultImageMaxHeight,
254
+ uploadSoundSupport: uploadSoundSupport,
255
+ languageCharactersProps: [{
256
+ language: 'spanish'
257
+ }, {
258
+ language: 'special'
259
+ }]
205
260
  })), promptEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
206
261
  label: prompt.label,
207
262
  className: classes.promptHolder
@@ -211,7 +266,16 @@ var Configure = /*#__PURE__*/function (_React$Component) {
211
266
  onChange: this.onPromptChange,
212
267
  imageSupport: imageSupport,
213
268
  nonEmpty: false,
214
- disableUnderline: true
269
+ spellCheck: spellCheckEnabled,
270
+ disableUnderline: true,
271
+ maxImageWidth: defaultImageMaxWidth,
272
+ maxImageHeight: defaultImageMaxHeight,
273
+ uploadSoundSupport: uploadSoundSupport,
274
+ languageCharactersProps: [{
275
+ language: 'spanish'
276
+ }, {
277
+ language: 'special'
278
+ }]
215
279
  })), rationaleEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
216
280
  label: rationale.label || 'Rationale',
217
281
  className: classes.promptHolder
@@ -219,22 +283,37 @@ var Configure = /*#__PURE__*/function (_React$Component) {
219
283
  className: classes.prompt,
220
284
  markup: model.rationale || '',
221
285
  onChange: this.onRationaleChange,
222
- imageSupport: imageSupport
223
- })), /*#__PURE__*/_react["default"].createElement(_chartType["default"], {
224
- value: model.chartType,
225
- onChange: function onChange(e) {
226
- return _this2.onChartTypeChange(e.target.value);
227
- }
286
+ imageSupport: imageSupport,
287
+ spellCheck: spellCheckEnabled,
288
+ maxImageWidth: maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth,
289
+ maxImageHeight: maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight,
290
+ uploadSoundSupport: uploadSoundSupport,
291
+ languageCharactersProps: [{
292
+ language: 'spanish'
293
+ }, {
294
+ language: 'special'
295
+ }]
296
+ })), /*#__PURE__*/_react["default"].createElement(_charting.ConfigureChartPanel, {
297
+ model: model,
298
+ onChange: this.onConfigChange,
299
+ gridValues: gridValues,
300
+ labelValues: labelValues,
301
+ chartDimensions: chartDimensions,
302
+ charts: charts
228
303
  }), /*#__PURE__*/_react["default"].createElement(_chartingConfig["default"], {
229
- config: graph,
230
304
  model: model,
231
305
  onChange: onModelChanged,
232
- charts: charts
306
+ charts: charts,
307
+ labelsPlaceholders: labelsPlaceholders,
308
+ titlePlaceholder: titlePlaceholder,
309
+ showPixelGuides: showPixeGuides
233
310
  }), /*#__PURE__*/_react["default"].createElement(_correctResponse["default"], {
234
311
  config: graph,
235
312
  model: model,
236
313
  onChange: onModelChanged,
237
- charts: charts
314
+ charts: charts,
315
+ error: categoryErrors,
316
+ correctAnswerErrors: correctAnswerErrors
238
317
  })));
239
318
  }
240
319
  }]);
@@ -247,6 +326,7 @@ exports.Configure = Configure;
247
326
  onConfigurationChanged: _propTypes["default"].func,
248
327
  classes: _propTypes["default"].object,
249
328
  imageSupport: _propTypes["default"].object,
329
+ uploadSoundSupport: _propTypes["default"].object,
250
330
  model: _propTypes["default"].object.isRequired,
251
331
  configuration: _propTypes["default"].object.isRequired
252
332
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/configure.jsx"],"names":["log","Panel","settings","toggle","radio","numberFields","styles","theme","title","fontSize","display","marginTop","spacing","unit","marginBottom","content","promptHolder","width","paddingBottom","prompt","paddingTop","charts","chartTypes","Bar","Histogram","LineDot","LineCross","DotPlot","LinePlot","Configure","rationale","props","onModelChanged","model","teacherInstructions","chartType","classes","configuration","onConfigurationChanged","imageSupport","graph","scoringType","studentInstructions","teacherInstructionsEnabled","promptEnabled","rationaleEnabled","label","suffix","min","max","height","Properties","studentInstructionsEnabled","onTeacherInstructionsChange","onPromptChange","onRationaleChange","e","onChartTypeChange","target","value","React","Component","PropTypes","func","object","isRequired"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport { chartTypes } from '@pie-lib/charting';\nimport { settings, layout, InputContainer } from '@pie-lib/config-ui';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport Typography from '@material-ui/core/Typography';\nimport EditableHtml from '@pie-lib/editable-html';\n\nimport ChartingConfig from './charting-config';\nimport CorrectResponse from './correct-response';\nimport ChartType from './chart-type';\n\nconst log = debug('@pie-element:graphing:configure');\nconst { Panel, toggle, radio, numberFields } = settings;\n\nconst styles = theme => ({\n title: {\n fontSize: '1.1rem',\n display: 'block',\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit\n },\n content: {\n marginTop: theme.spacing.unit * 2\n },\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n marginTop: theme.spacing.unit * 2\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%'\n }\n});\n\nconst charts = [\n chartTypes.Bar(),\n chartTypes.Histogram(),\n chartTypes.LineDot(),\n chartTypes.LineCross(),\n chartTypes.DotPlot(),\n chartTypes.LinePlot()\n];\n\nexport class Configure extends React.Component {\n static propTypes = {\n onModelChanged: PropTypes.func,\n onConfigurationChanged: PropTypes.func,\n classes: PropTypes.object,\n imageSupport: PropTypes.object,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired\n };\n\n static defaultProps = { classes: {} };\n\n onRationaleChange = rationale => this.props.onModelChanged({ ...this.props.model, rationale });\n\n onPromptChange = prompt => this.props.onModelChanged({ ...this.props.model, prompt });\n\n onTeacherInstructionsChange = teacherInstructions => this.props.onModelChanged({ ...this.props.model, teacherInstructions });\n\n onChartTypeChange = chartType => this.props.onModelChanged({ ...this.props.model, chartType });\n\n render() {\n const {\n classes,\n model,\n configuration,\n onConfigurationChanged,\n onModelChanged,\n imageSupport\n } = this.props;\n log('[render] model', model);\n const { graph } = model;\n const {\n title = {},\n rationale = {},\n scoringType = {},\n studentInstructions = {},\n teacherInstructions = {},\n prompt = {},\n } = configuration || {};\n const { teacherInstructionsEnabled, promptEnabled, rationaleEnabled } = model || {};\n\n return (\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={onModelChanged}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n 'Item Type': {\n 'title.enabled': title.settings && toggle(title.label, true),\n graph: numberFields('Graph Display Size', {\n width: {\n label: 'Width',\n suffix: 'px',\n min: 400,\n max: 700\n },\n height: {\n label: 'Height',\n suffix: 'px',\n min: 400,\n max: 700\n }\n })\n },\n Properties: {\n teacherInstructionsEnabled:\n teacherInstructions.settings &&\n toggle(teacherInstructions.label),\n studentInstructionsEnabled:\n studentInstructions.settings &&\n toggle(studentInstructions.label),\n rationaleEnabled:\n rationale.settings && toggle(rationale.label),\n promptEnabled:\n prompt.settings && toggle(prompt.label),\n scoringType:\n scoringType.settings &&\n radio(scoringType.label, ['all or nothing', 'partial scoring'])\n }\n }}\n />\n }\n >\n <div className={classes.content}>\n <Typography component=\"div\" type=\"body1\">\n <span>\n This interaction asks a student to draw a chart that meets specific criteria.\n The student will draw a category on the chart by clicking Add Category\n and dragging the top part of the category.\n </span>\n </Typography>\n\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChange}\n imageSupport={imageSupport}\n nonEmpty={false}\n />\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer\n label={prompt.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChange}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer\n label={rationale.label || 'Rationale'}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChange}\n imageSupport={imageSupport}\n />\n </InputContainer>\n )}\n\n <ChartType\n value={model.chartType}\n onChange={e => this.onChartTypeChange(e.target.value)}\n />\n\n <ChartingConfig\n config={graph}\n model={model}\n onChange={onModelChanged}\n charts={charts}\n />\n\n <CorrectResponse\n config={graph}\n model={model}\n onChange={onModelChanged}\n charts={charts}\n />\n </div>\n </layout.ConfigLayout>\n );\n }\n}\n\nexport default withStyles(styles)(Configure);\n"],"file":"configure.js"}
1
+ {"version":3,"sources":["../src/configure.jsx"],"names":["log","Panel","settings","toggle","radio","styles","theme","title","fontSize","display","marginTop","spacing","unit","marginBottom","content","promptHolder","width","paddingBottom","prompt","paddingTop","charts","chartTypes","Bar","Histogram","LineDot","LineCross","DotPlot","LinePlot","Configure","props","rationale","onModelChanged","model","teacherInstructions","chartType","config","state","oldGridValues","gridValues","oldLabelValues","labelValues","updatedModel","graph","range","rangeConstraints","height","setState","step","classes","configuration","imageSupport","onConfigurationChanged","uploadSoundSupport","chartDimensions","labelsPlaceholders","maxImageWidth","maxImageHeight","scoringType","settingsPanelDisabled","spellCheck","studentInstructions","titlePlaceholder","withRubric","errors","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","categoryErrors","correctAnswerErrors","showPixeGuides","showInConfigPanel","defaultImageMaxWidth","defaultImageMaxHeight","panelProperties","label","studentInstructionsEnabled","rubricEnabled","Properties","onTeacherInstructionsChange","language","onPromptChange","onRationaleChange","onConfigChange","React","Component","PropTypes","func","object","isRequired"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport { chartTypes, ConfigureChartPanel } from '@pie-lib/charting';\nimport { settings, layout, InputContainer } from '@pie-lib/config-ui';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport Typography from '@material-ui/core/Typography';\nimport EditableHtml from '@pie-lib/editable-html';\n\nimport ChartingConfig from './charting-config';\nimport CorrectResponse from './correct-response';\nimport { applyConstraints, getGridValues, getLabelValues } from './utils';\n\nconst log = debug('@pie-element:graphing:configure');\nconst { Panel, toggle, radio } = settings;\n\nconst styles = (theme) => ({\n title: {\n fontSize: '1.1rem',\n display: 'block',\n marginTop: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit,\n },\n content: {\n marginTop: theme.spacing.unit * 2,\n },\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n marginTop: theme.spacing.unit * 2,\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n },\n});\n\nconst charts = [\n chartTypes.Bar(),\n chartTypes.Histogram(),\n chartTypes.LineDot(),\n chartTypes.LineCross(),\n chartTypes.DotPlot(),\n chartTypes.LinePlot(),\n];\n\nexport class Configure extends React.Component {\n static propTypes = {\n onModelChanged: PropTypes.func,\n onConfigurationChanged: PropTypes.func,\n classes: PropTypes.object,\n imageSupport: PropTypes.object,\n uploadSoundSupport: PropTypes.object,\n model: PropTypes.object.isRequired,\n configuration: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n const { range = {}, graph } = props.model || {};\n const gridValues = { range: getGridValues(range, graph.height, true) };\n const labelValues = { range: getLabelValues(range.step || 1) };\n\n this.state = { gridValues, labelValues };\n }\n\n static defaultProps = { classes: {} };\n\n onRationaleChange = (rationale) => this.props.onModelChanged({ ...this.props.model, rationale });\n\n onPromptChange = (prompt) => this.props.onModelChanged({ ...this.props.model, prompt });\n\n onTeacherInstructionsChange = (teacherInstructions) =>\n this.props.onModelChanged({ ...this.props.model, teacherInstructions });\n\n onChartTypeChange = (chartType) => this.props.onModelChanged({ ...this.props.model, chartType });\n\n onConfigChange = (config) => {\n const { model, onModelChanged } = this.props;\n const { gridValues: oldGridValues, labelValues: oldLabelValues } = this.state;\n const updatedModel = { ...model, ...config };\n const { graph, range } = updatedModel;\n const gridValues = {};\n const labelValues = {};\n\n const rangeConstraints = applyConstraints(range, graph.height, oldGridValues.range, oldLabelValues.range);\n\n gridValues.range = rangeConstraints.gridValues;\n labelValues.range = rangeConstraints.labelValues;\n\n this.setState({ gridValues, labelValues });\n onModelChanged(updatedModel);\n };\n\n render() {\n const { classes, configuration, imageSupport, model, onConfigurationChanged, onModelChanged, uploadSoundSupport } =\n this.props;\n\n log('[render] model', model);\n\n const { graph } = model;\n const {\n chartDimensions = {},\n labelsPlaceholders = {},\n maxImageWidth = {},\n maxImageHeight = {},\n prompt = {},\n rationale = {},\n scoringType = {},\n settingsPanelDisabled,\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n titlePlaceholder = {},\n withRubric = {},\n } = configuration || {};\n const { errors, promptEnabled, rationaleEnabled, spellCheckEnabled, teacherInstructionsEnabled } = model || {};\n const { categoryErrors, correctAnswerErrors } = errors || {};\n const { gridValues, labelValues } = this.state;\n const showPixeGuides = chartDimensions.showInConfigPanel || true;\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n scoringType: scoringType.settings && radio(scoringType.label, ['all or nothing', 'partial scoring']),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n };\n\n return (\n <layout.ConfigLayout\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={onModelChanged}\n onChangeConfiguration={onConfigurationChanged}\n groups={{\n Properties: panelProperties,\n }}\n />\n }\n >\n <div className={classes.content}>\n <Typography component=\"div\" type=\"body1\">\n <span>\n This item type provides various types of interactive charts. Depending upon how an item is configured,\n students can change the heights of bars (or other similar chart elements) created by the author; relabel\n bars created by the author; and/or add new bars, label them, and set their heights.\n </span>\n </Typography>\n\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChange}\n imageSupport={imageSupport}\n nonEmpty={false}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChange}\n imageSupport={imageSupport}\n nonEmpty={false}\n spellCheck={spellCheckEnabled}\n disableUnderline\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label || 'Rationale'} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChange}\n imageSupport={imageSupport}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n <ConfigureChartPanel\n model={model}\n onChange={this.onConfigChange}\n gridValues={gridValues}\n labelValues={labelValues}\n chartDimensions={chartDimensions}\n charts={charts}\n />\n\n <ChartingConfig\n model={model}\n onChange={onModelChanged}\n charts={charts}\n labelsPlaceholders={labelsPlaceholders}\n titlePlaceholder={titlePlaceholder}\n showPixelGuides={showPixeGuides}\n />\n\n <CorrectResponse\n config={graph}\n model={model}\n onChange={onModelChanged}\n charts={charts}\n error={categoryErrors}\n correctAnswerErrors={correctAnswerErrors}\n />\n </div>\n </layout.ConfigLayout>\n );\n }\n}\n\nexport default withStyles(styles)(Configure);\n"],"file":"configure.js"}