@pie-element/graphing 3.5.4-next.1014 → 3.5.4-next.1031

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.
@@ -39,6 +39,8 @@ var _graphingConfig = _interopRequireDefault(require("./graphing-config"));
39
39
 
40
40
  var _correctResponse = _interopRequireDefault(require("./correct-response"));
41
41
 
42
+ var _intersection = _interopRequireDefault(require("lodash/intersection"));
43
+
42
44
  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; }
43
45
 
44
46
  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; }
@@ -122,14 +124,18 @@ var Configure = /*#__PURE__*/function (_React$Component) {
122
124
  (0, _createClass2["default"])(Configure, [{
123
125
  key: "componentDidMount",
124
126
  value: function componentDidMount() {
125
- // This is used for offering support for old models which have the property arrows: boolean
126
- // Same thing is set in the controller: packages/graphing/controller/src/index.js - model
127
127
  var _this$props4 = this.props,
128
+ configuration = _this$props4.configuration,
128
129
  onModelChanged = _this$props4.onModelChanged,
129
130
  model = _this$props4.model;
130
131
 
131
- var _ref = model || {},
132
- arrows = _ref.arrows;
132
+ var _ref = configuration || {},
133
+ availableTools = _ref.availableTools;
134
+
135
+ var _ref2 = model || {},
136
+ arrows = _ref2.arrows; // This is used for offering support for old models which have the property arrows: boolean
137
+ // Same thing is set in the controller: packages/graphing/controller/src/index.js - model
138
+
133
139
 
134
140
  if (typeof arrows === 'boolean') {
135
141
  if (arrows) {
@@ -147,11 +153,13 @@ var Configure = /*#__PURE__*/function (_React$Component) {
147
153
  down: false
148
154
  };
149
155
  }
150
-
151
- onModelChanged(_objectSpread(_objectSpread({}, model), {}, {
152
- arrows: arrows
153
- }));
154
156
  }
157
+
158
+ var toolbarTools = (0, _intersection["default"])(availableTools || [], model.toolbarTools || []);
159
+ onModelChanged && onModelChanged(_objectSpread(_objectSpread({}, model), {}, {
160
+ arrows: arrows,
161
+ toolbarTools: toolbarTools
162
+ }));
155
163
  }
156
164
  }, {
157
165
  key: "render",
@@ -164,43 +172,45 @@ var Configure = /*#__PURE__*/function (_React$Component) {
164
172
  onModelChanged = _this$props5.onModelChanged,
165
173
  imageSupport = _this$props5.imageSupport;
166
174
 
167
- var _ref2 = configuration || {},
168
- _ref2$arrows = _ref2.arrows,
169
- arrows = _ref2$arrows === void 0 ? {} : _ref2$arrows,
170
- _ref2$authoring = _ref2.authoring,
171
- authoring = _ref2$authoring === void 0 ? {} : _ref2$authoring,
172
- _ref2$coordinatesOnHo = _ref2.coordinatesOnHover,
173
- coordinatesOnHover = _ref2$coordinatesOnHo === void 0 ? {} : _ref2$coordinatesOnHo,
174
- _ref2$graphDimensions = _ref2.graphDimensions,
175
- graphDimensions = _ref2$graphDimensions === void 0 ? {} : _ref2$graphDimensions,
176
- _ref2$labels = _ref2.labels,
177
- labels = _ref2$labels === void 0 ? {} : _ref2$labels,
178
- _ref2$padding = _ref2.padding,
179
- padding = _ref2$padding === void 0 ? {} : _ref2$padding,
180
- _ref2$prompt = _ref2.prompt,
181
- prompt = _ref2$prompt === void 0 ? {} : _ref2$prompt,
182
- _ref2$title = _ref2.title,
183
- title = _ref2$title === void 0 ? {} : _ref2$title,
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
- _ref2$spellCheck = _ref2.spellCheck,
189
- spellCheck = _ref2$spellCheck === void 0 ? {} : _ref2$spellCheck,
190
- _ref2$studentInstruct = _ref2.studentInstructions,
191
- studentInstructions = _ref2$studentInstruct === void 0 ? {} : _ref2$studentInstruct,
192
- _ref2$teacherInstruct = _ref2.teacherInstructions,
193
- teacherInstructions = _ref2$teacherInstruct === void 0 ? {} : _ref2$teacherInstruct,
194
- _ref2$maxImageWidth = _ref2.maxImageWidth,
195
- maxImageWidth = _ref2$maxImageWidth === void 0 ? {} : _ref2$maxImageWidth,
196
- _ref2$maxImageHeight = _ref2.maxImageHeight,
197
- maxImageHeight = _ref2$maxImageHeight === void 0 ? {} : _ref2$maxImageHeight;
198
-
199
- var _ref3 = model || {},
200
- teacherInstructionsEnabled = _ref3.teacherInstructionsEnabled,
201
- promptEnabled = _ref3.promptEnabled,
202
- rationaleEnabled = _ref3.rationaleEnabled,
203
- spellCheckEnabled = _ref3.spellCheckEnabled;
175
+ var _ref3 = configuration || {},
176
+ _ref3$arrows = _ref3.arrows,
177
+ arrows = _ref3$arrows === void 0 ? {} : _ref3$arrows,
178
+ _ref3$authoring = _ref3.authoring,
179
+ authoring = _ref3$authoring === void 0 ? {} : _ref3$authoring,
180
+ _ref3$availableTools = _ref3.availableTools,
181
+ availableTools = _ref3$availableTools === void 0 ? [] : _ref3$availableTools,
182
+ _ref3$coordinatesOnHo = _ref3.coordinatesOnHover,
183
+ coordinatesOnHover = _ref3$coordinatesOnHo === void 0 ? {} : _ref3$coordinatesOnHo,
184
+ _ref3$graphDimensions = _ref3.graphDimensions,
185
+ graphDimensions = _ref3$graphDimensions === void 0 ? {} : _ref3$graphDimensions,
186
+ _ref3$labels = _ref3.labels,
187
+ labels = _ref3$labels === void 0 ? {} : _ref3$labels,
188
+ _ref3$padding = _ref3.padding,
189
+ padding = _ref3$padding === void 0 ? {} : _ref3$padding,
190
+ _ref3$prompt = _ref3.prompt,
191
+ prompt = _ref3$prompt === void 0 ? {} : _ref3$prompt,
192
+ _ref3$title = _ref3.title,
193
+ title = _ref3$title === void 0 ? {} : _ref3$title,
194
+ _ref3$rationale = _ref3.rationale,
195
+ rationale = _ref3$rationale === void 0 ? {} : _ref3$rationale,
196
+ _ref3$scoringType = _ref3.scoringType,
197
+ scoringType = _ref3$scoringType === void 0 ? {} : _ref3$scoringType,
198
+ _ref3$spellCheck = _ref3.spellCheck,
199
+ spellCheck = _ref3$spellCheck === void 0 ? {} : _ref3$spellCheck,
200
+ _ref3$studentInstruct = _ref3.studentInstructions,
201
+ studentInstructions = _ref3$studentInstruct === void 0 ? {} : _ref3$studentInstruct,
202
+ _ref3$teacherInstruct = _ref3.teacherInstructions,
203
+ teacherInstructions = _ref3$teacherInstruct === void 0 ? {} : _ref3$teacherInstruct,
204
+ _ref3$maxImageWidth = _ref3.maxImageWidth,
205
+ maxImageWidth = _ref3$maxImageWidth === void 0 ? {} : _ref3$maxImageWidth,
206
+ _ref3$maxImageHeight = _ref3.maxImageHeight,
207
+ maxImageHeight = _ref3$maxImageHeight === void 0 ? {} : _ref3$maxImageHeight;
208
+
209
+ var _ref4 = model || {},
210
+ teacherInstructionsEnabled = _ref4.teacherInstructionsEnabled,
211
+ promptEnabled = _ref4.promptEnabled,
212
+ rationaleEnabled = _ref4.rationaleEnabled,
213
+ spellCheckEnabled = _ref4.spellCheckEnabled;
204
214
 
205
215
  log('[render] model', model);
206
216
  var defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;
@@ -277,11 +287,13 @@ var Configure = /*#__PURE__*/function (_React$Component) {
277
287
  maxImageWidth: maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth,
278
288
  maxImageHeight: maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight
279
289
  })), /*#__PURE__*/_react["default"].createElement(_graphingConfig["default"], {
280
- authoringEnabled: authoring && authoring.enabled,
290
+ authoring: authoring,
291
+ availableTools: availableTools,
281
292
  graphDimensions: graphDimensions,
282
293
  model: model,
283
294
  onChange: this.props.onModelChanged
284
295
  }), /*#__PURE__*/_react["default"].createElement(_correctResponse["default"], {
296
+ availableTools: availableTools,
285
297
  model: model,
286
298
  onChange: this.props.onModelChanged
287
299
  })));
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/configure.jsx"],"names":["Panel","settings","toggle","radio","checkboxes","log","styles","theme","title","fontSize","display","marginTop","spacing","unit","marginBottom","content","promptHolder","width","paddingBottom","prompt","paddingTop","Configure","rationale","props","onModelChanged","model","teacherInstructions","arrows","left","right","up","down","classes","configuration","onConfigurationChanged","imageSupport","authoring","coordinatesOnHover","graphDimensions","labels","padding","scoringType","spellCheck","studentInstructions","maxImageWidth","maxImageHeight","teacherInstructionsEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","defaultImageMaxWidth","defaultImageMaxHeight","label","Properties","studentInstructionsEnabled","onTeacherInstructionsChange","onPromptChange","onRationaleChange","enabled","React","Component","PropTypes","func","object","isRequired"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\n\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';\nimport GraphingConfig from './graphing-config';\nimport CorrectResponse from './correct-response';\n\nconst { Panel, toggle, radio, checkboxes } = settings;\nconst log = debug('@pie-element:graphing:configure');\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\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 componentDidMount() {\n // This is used for offering support for old models which have the property arrows: boolean\n // Same thing is set in the controller: packages/graphing/controller/src/index.js - model\n const { onModelChanged, model } = this.props;\n let { arrows } = model || {};\n\n if (typeof arrows === 'boolean') {\n if (arrows) {\n arrows = {\n left: true,\n right: true,\n up: true,\n down: true\n };\n } else {\n arrows = {\n left: false,\n right: false,\n up: false,\n down: false\n };\n }\n\n onModelChanged({ ...model, arrows });\n }\n }\n\n onRationaleChange = rationale => {\n const { onModelChanged, model } = this.props;\n\n onModelChanged({ ...model, rationale });\n };\n\n onPromptChange = prompt => {\n const { onModelChanged, model } = this.props;\n\n onModelChanged({ ...model, prompt });\n };\n\n onTeacherInstructionsChange = teacherInstructions => {\n const { onModelChanged, model } = this.props;\n\n onModelChanged({ ...model, teacherInstructions });\n };\n\n render() {\n const {\n classes,\n model,\n configuration,\n onConfigurationChanged,\n onModelChanged,\n imageSupport\n } = this.props;\n const {\n arrows = {},\n authoring = {},\n coordinatesOnHover = {},\n graphDimensions = {},\n labels = {},\n padding = {},\n prompt = {},\n title = {},\n rationale = {},\n scoringType = {},\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n maxImageWidth = {},\n maxImageHeight = {}\n } = configuration || {};\n const { teacherInstructionsEnabled, promptEnabled, rationaleEnabled, spellCheckEnabled } =\n model || {};\n\n log('[render] model', model);\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\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 arrows: arrows.settings && checkboxes(arrows.label, {\n left: arrows.left,\n right: arrows.right,\n up: arrows.up,\n down: arrows.down\n }),\n 'title.enabled': title.settings && toggle(title.label, true),\n padding: padding.settings && toggle(padding.label),\n labels: labels.settings && toggle(labels.label),\n coordinatesOnHover: coordinatesOnHover.settings && toggle(coordinatesOnHover.label),\n },\n Properties: {\n 'authoring.enabled':\n authoring.settings && toggle(authoring.label, true),\n teacherInstructionsEnabled:\n teacherInstructions.settings &&\n toggle(teacherInstructions.label),\n studentInstructionsEnabled:\n studentInstructions.settings &&\n toggle(studentInstructions.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled:\n spellCheck.settings && toggle(spellCheck.label),\n scoringType:\n scoringType.settings &&\n radio(scoringType.label, ['dichotomous', '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 line that meets specific\n criteria. The student will draw the line by clicking on two points\n on the graph.\n </span>\n </Typography>\n\n {teacherInstructionsEnabled && (\n <InputContainer\n label={teacherInstructions.label}\n className={classes.promptHolder}\n >\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 />\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 spellCheck={spellCheckEnabled}\n disableUnderline\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\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 spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth}\n maxImageHeight={maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight}\n />\n </InputContainer>\n )}\n\n <GraphingConfig\n authoringEnabled={authoring && authoring.enabled}\n graphDimensions={graphDimensions}\n model={model}\n onChange={this.props.onModelChanged}\n />\n\n <CorrectResponse\n model={model}\n onChange={this.props.onModelChanged}\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":["Panel","settings","toggle","radio","checkboxes","log","styles","theme","title","fontSize","display","marginTop","spacing","unit","marginBottom","content","promptHolder","width","paddingBottom","prompt","paddingTop","Configure","rationale","props","onModelChanged","model","teacherInstructions","configuration","availableTools","arrows","left","right","up","down","toolbarTools","classes","onConfigurationChanged","imageSupport","authoring","coordinatesOnHover","graphDimensions","labels","padding","scoringType","spellCheck","studentInstructions","maxImageWidth","maxImageHeight","teacherInstructionsEnabled","promptEnabled","rationaleEnabled","spellCheckEnabled","defaultImageMaxWidth","defaultImageMaxHeight","label","Properties","studentInstructionsEnabled","onTeacherInstructionsChange","onPromptChange","onRationaleChange","React","Component","PropTypes","func","object","isRequired"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\n\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';\nimport GraphingConfig from './graphing-config';\nimport CorrectResponse from './correct-response';\nimport intersection from 'lodash/intersection';\n\nconst { Panel, toggle, radio, checkboxes } = settings;\nconst log = debug('@pie-element:graphing:configure');\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\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 componentDidMount() {\n const { configuration, onModelChanged, model } = this.props;\n const { availableTools } = configuration || {};\n let { arrows } = model || {};\n\n // This is used for offering support for old models which have the property arrows: boolean\n // Same thing is set in the controller: packages/graphing/controller/src/index.js - model\n if (typeof arrows === 'boolean') {\n if (arrows) {\n arrows = {\n left: true,\n right: true,\n up: true,\n down: true\n };\n } else {\n arrows = {\n left: false,\n right: false,\n up: false,\n down: false\n };\n }\n }\n\n const toolbarTools = intersection(availableTools || [], model.toolbarTools || []);\n\n onModelChanged && onModelChanged({ ...model, arrows, toolbarTools });\n };\n\n onRationaleChange = rationale => {\n const { onModelChanged, model } = this.props;\n\n onModelChanged({ ...model, rationale });\n };\n\n onPromptChange = prompt => {\n const { onModelChanged, model } = this.props;\n\n onModelChanged({ ...model, prompt });\n };\n\n onTeacherInstructionsChange = teacherInstructions => {\n const { onModelChanged, model } = this.props;\n\n onModelChanged({ ...model, teacherInstructions });\n };\n\n render() {\n const {\n classes,\n model,\n configuration,\n onConfigurationChanged,\n onModelChanged,\n imageSupport\n } = this.props;\n const {\n arrows = {},\n authoring = {},\n availableTools = [],\n coordinatesOnHover = {},\n graphDimensions = {},\n labels = {},\n padding = {},\n prompt = {},\n title = {},\n rationale = {},\n scoringType = {},\n spellCheck = {},\n studentInstructions = {},\n teacherInstructions = {},\n maxImageWidth = {},\n maxImageHeight = {}\n } = configuration || {};\n const { teacherInstructionsEnabled, promptEnabled, rationaleEnabled, spellCheckEnabled } =\n model || {};\n\n log('[render] model', model);\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\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 arrows: arrows.settings && checkboxes(arrows.label, {\n left: arrows.left,\n right: arrows.right,\n up: arrows.up,\n down: arrows.down\n }),\n 'title.enabled': title.settings && toggle(title.label, true),\n padding: padding.settings && toggle(padding.label),\n labels: labels.settings && toggle(labels.label),\n coordinatesOnHover: coordinatesOnHover.settings && toggle(coordinatesOnHover.label),\n },\n Properties: {\n 'authoring.enabled':\n authoring.settings && toggle(authoring.label, true),\n teacherInstructionsEnabled:\n teacherInstructions.settings &&\n toggle(teacherInstructions.label),\n studentInstructionsEnabled:\n studentInstructions.settings &&\n toggle(studentInstructions.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n spellCheckEnabled:\n spellCheck.settings && toggle(spellCheck.label),\n scoringType:\n scoringType.settings &&\n radio(scoringType.label, ['dichotomous', '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 line that meets specific\n criteria. The student will draw the line by clicking on two points\n on the graph.\n </span>\n </Typography>\n\n {teacherInstructionsEnabled && (\n <InputContainer\n label={teacherInstructions.label}\n className={classes.promptHolder}\n >\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 />\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 spellCheck={spellCheckEnabled}\n disableUnderline\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\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 spellCheck={spellCheckEnabled}\n maxImageWidth={maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth}\n maxImageHeight={maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight}\n />\n </InputContainer>\n )}\n\n <GraphingConfig\n authoring={authoring}\n availableTools={availableTools}\n graphDimensions={graphDimensions}\n model={model}\n onChange={this.props.onModelChanged}\n />\n\n <CorrectResponse\n availableTools={availableTools}\n model={model}\n onChange={this.props.onModelChanged}\n />\n </div>\n </layout.ConfigLayout>\n );\n }\n}\n\nexport default withStyles(styles)(Configure);\n"],"file":"configure.js"}
@@ -43,6 +43,8 @@ var _Delete = _interopRequireDefault(require("@material-ui/icons/Delete"));
43
43
 
44
44
  var _lodash = require("lodash");
45
45
 
46
+ var _core = require("@material-ui/core");
47
+
46
48
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
47
49
 
48
50
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -55,15 +57,12 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
55
57
 
56
58
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
57
59
 
58
- var allTools = _graphing.tools.allTools;
59
-
60
60
  var styles = function styles(theme) {
61
61
  return {
62
62
  column: {
63
63
  flex: 1
64
64
  },
65
65
  graphingTools: {
66
- margin: "".concat(theme.spacing.unit * 3, "px 0"),
67
66
  color: '#ababab'
68
67
  },
69
68
  availableTools: {
@@ -91,10 +90,10 @@ var styles = function styles(theme) {
91
90
  background: '#fafafa'
92
91
  },
93
92
  button: {
94
- marginTop: theme.spacing.unit * 3,
93
+ margin: "".concat(theme.spacing.unit * 3, "px 0"),
95
94
  cursor: 'pointer',
96
95
  background: '#eee',
97
- padding: theme.spacing.unit * 2,
96
+ padding: theme.spacing.unit * 1.5,
98
97
  width: 'fit-content',
99
98
  borderRadius: '4px',
100
99
  '&:hover': {
@@ -116,23 +115,76 @@ var styles = function styles(theme) {
116
115
  },
117
116
  name: {
118
117
  margin: '5px 0'
118
+ },
119
+ subtitleText: {
120
+ marginTop: theme.spacing.unit * 1.5,
121
+ marginBottom: theme.spacing.unit
122
+ },
123
+ toolsHeader: {
124
+ display: 'flex',
125
+ alignItems: 'center',
126
+ justifyContent: 'space-between'
127
+ },
128
+ defaultTool: {
129
+ display: 'flex',
130
+ alignItems: 'center',
131
+ width: '300px'
132
+ },
133
+ defaultToolSelect: {
134
+ marginLeft: theme.spacing.unit,
135
+ textTransform: 'uppercase',
136
+ color: '#4d4d4d'
137
+ },
138
+ menuItem: {
139
+ textTransform: 'uppercase'
140
+ },
141
+ noDefaultTool: {
142
+ padding: theme.spacing.unit / 2
119
143
  }
120
144
  };
121
145
  };
122
146
 
123
147
  var Tools = function Tools(_ref) {
124
148
  var classes = _ref.classes,
149
+ availableTools = _ref.availableTools,
150
+ defaultTool = _ref.defaultTool,
125
151
  toolbarTools = _ref.toolbarTools,
126
- toggleToolBarTool = _ref.toggleToolBarTool;
127
- // label has to be placed at the end of the list
128
- var allToolsNoLabel = (allTools || []).filter(function (tool) {
152
+ toggleToolBarTool = _ref.toggleToolBarTool,
153
+ onDefaultToolChange = _ref.onDefaultToolChange;
154
+ var allTools = availableTools || [];
155
+ var isLabelAvailable = allTools.includes('label');
156
+ var toolbarToolsNoLabel = (toolbarTools || []).filter(function (tool) {
129
157
  return tool !== 'label';
130
158
  });
159
+
160
+ if (isLabelAvailable) {
161
+ // label has to be placed at the end of the list
162
+ var allToolsNoLabel = allTools.filter(function (tool) {
163
+ return tool !== 'label';
164
+ });
165
+ allTools = [].concat((0, _toConsumableArray2["default"])(allToolsNoLabel), ['label']);
166
+ }
167
+
131
168
  return /*#__PURE__*/React.createElement("div", {
132
169
  className: classes.graphingTools
133
- }, "GRAPHING TOOLS", /*#__PURE__*/React.createElement("div", {
170
+ }, /*#__PURE__*/React.createElement("div", {
171
+ className: classes.toolsHeader
172
+ }, /*#__PURE__*/React.createElement("span", null, "GRAPHING TOOLS"), toolbarToolsNoLabel.length > 0 && /*#__PURE__*/React.createElement("div", {
173
+ className: classes.defaultTool
174
+ }, /*#__PURE__*/React.createElement("span", null, "Default graphing tool:"), /*#__PURE__*/React.createElement(_core.Select, {
175
+ className: classes.defaultToolSelect,
176
+ onChange: onDefaultToolChange,
177
+ value: defaultTool,
178
+ disableUnderline: true
179
+ }, toolbarToolsNoLabel.map(function (tool, index) {
180
+ return /*#__PURE__*/React.createElement(_core.MenuItem, {
181
+ key: index,
182
+ className: classes.menuItem,
183
+ value: tool
184
+ }, tool);
185
+ })))), /*#__PURE__*/React.createElement("div", {
134
186
  className: classes.availableTools
135
- }, [].concat((0, _toConsumableArray2["default"])(allToolsNoLabel), ['label']).map(function (tool) {
187
+ }, allTools.map(function (tool) {
136
188
  var selected = toolbarTools.find(function (t) {
137
189
  return t === tool;
138
190
  });
@@ -217,10 +269,12 @@ var CorrectResponse = /*#__PURE__*/function (_React$Component) {
217
269
  });
218
270
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "toggleToolBarTool", function (tool) {
219
271
  var _this$props$model = _this.props.model,
272
+ defaultTool = _this$props$model.defaultTool,
220
273
  toolbarTools = _this$props$model.toolbarTools,
221
274
  _this$props$model$ans = _this$props$model.answers,
222
275
  answers = _this$props$model$ans === void 0 ? {} : _this$props$model$ans;
223
276
  var updatedToolbarTools = (0, _toConsumableArray2["default"])(toolbarTools);
277
+ var newDefaultTool = defaultTool;
224
278
  var index = toolbarTools.findIndex(function (t) {
225
279
  return tool === t;
226
280
  });
@@ -230,6 +284,13 @@ var CorrectResponse = /*#__PURE__*/function (_React$Component) {
230
284
 
231
285
  updatedToolbarTools.splice(index, 1);
232
286
 
287
+ if (tool === defaultTool) {
288
+ var toolbarToolsNoLabel = (updatedToolbarTools || []).filter(function (tool) {
289
+ return tool !== 'label';
290
+ });
291
+ newDefaultTool = toolbarToolsNoLabel.length && toolbarToolsNoLabel[0] || '';
292
+ }
293
+
233
294
  if (!(0, _lodash.isEqual)(answers, updatedAnswers)) {
234
295
  _this.setState({
235
296
  dialog: {
@@ -239,7 +300,8 @@ var CorrectResponse = /*#__PURE__*/function (_React$Component) {
239
300
  onConfirm: function onConfirm() {
240
301
  return _this.handleAlertDialog(false, _this.updateModel({
241
302
  toolbarTools: updatedToolbarTools,
242
- answers: updatedAnswers
303
+ answers: updatedAnswers,
304
+ defaultTool: newDefaultTool
243
305
  }));
244
306
  },
245
307
  onClose: function onClose() {
@@ -252,10 +314,22 @@ var CorrectResponse = /*#__PURE__*/function (_React$Component) {
252
314
  }
253
315
  } else {
254
316
  updatedToolbarTools.push(tool);
317
+
318
+ if (defaultTool === '' && tool !== 'label') {
319
+ newDefaultTool = tool;
320
+ }
255
321
  }
256
322
 
257
323
  _this.updateModel({
258
- toolbarTools: updatedToolbarTools
324
+ toolbarTools: updatedToolbarTools,
325
+ defaultTool: newDefaultTool
326
+ });
327
+ });
328
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onDefaultToolChange", function (event) {
329
+ var value = event.target.value;
330
+
331
+ _this.updateModel({
332
+ defaultTool: value
259
333
  });
260
334
  });
261
335
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "addAlternateResponse", function () {
@@ -320,6 +394,7 @@ var CorrectResponse = /*#__PURE__*/function (_React$Component) {
320
394
  var _this2 = this;
321
395
 
322
396
  var _this$props6 = this.props,
397
+ availableTools = _this$props6.availableTools,
323
398
  classes = _this$props6.classes,
324
399
  model = _this$props6.model;
325
400
  var dialog = this.state.dialog;
@@ -330,6 +405,7 @@ var CorrectResponse = /*#__PURE__*/function (_React$Component) {
330
405
  arrows = _ref7.arrows,
331
406
  backgroundMarks = _ref7.backgroundMarks,
332
407
  coordinatesOnHover = _ref7.coordinatesOnHover,
408
+ defaultTool = _ref7.defaultTool,
333
409
  domain = _ref7.domain,
334
410
  _ref7$graph = _ref7.graph,
335
411
  graph = _ref7$graph === void 0 ? {} : _ref7$graph,
@@ -338,13 +414,21 @@ var CorrectResponse = /*#__PURE__*/function (_React$Component) {
338
414
  title = _ref7.title,
339
415
  toolbarTools = _ref7.toolbarTools;
340
416
 
341
- return /*#__PURE__*/React.createElement("div", null, "Define Correct Response", /*#__PURE__*/React.createElement(Tools, {
417
+ return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(_core.Typography, {
418
+ component: "div",
419
+ variant: "subheading"
420
+ }, /*#__PURE__*/React.createElement("span", null, "Define Tool Set and Correct Response")), /*#__PURE__*/React.createElement(_core.Typography, {
421
+ component: "div",
422
+ variant: "body1",
423
+ className: classes.subtitleText
424
+ }, /*#__PURE__*/React.createElement("span", null, "Use this interface to choose which graphing tools students will be able to use, and to define the correct answer")), /*#__PURE__*/React.createElement(Tools, {
342
425
  classes: classes,
426
+ availableTools: availableTools,
427
+ defaultTool: defaultTool,
428
+ onDefaultToolChange: this.onDefaultToolChange,
343
429
  toggleToolBarTool: this.toggleToolBarTool,
344
430
  toolbarTools: toolbarTools
345
- }), /*#__PURE__*/React.createElement("div", {
346
- className: classes.container
347
- }, Object.entries(answers || {}).map(function (_ref8) {
431
+ }), Object.entries(answers || {}).map(function (_ref8) {
348
432
  var _ref9 = (0, _slicedToArray2["default"])(_ref8, 2),
349
433
  key = _ref9[0],
350
434
  answer = _ref9[1];
@@ -388,7 +472,7 @@ var CorrectResponse = /*#__PURE__*/function (_React$Component) {
388
472
  }), /*#__PURE__*/React.createElement("div", {
389
473
  className: classes.button,
390
474
  onClick: this.addAlternateResponse
391
- }, "ADD ALTERNATE")), /*#__PURE__*/React.createElement(_configUi.AlertDialog, {
475
+ }, "ADD ALTERNATE"), /*#__PURE__*/React.createElement(_configUi.AlertDialog, {
392
476
  open: dialog.open,
393
477
  title: dialog.title,
394
478
  text: dialog.text,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/correct-response.jsx"],"names":["allTools","tools","styles","theme","column","flex","graphingTools","margin","spacing","unit","color","availableTools","marginTop","display","availableTool","cursor","padding","border","textTransform","selectedTool","background","container","borderRadius","button","width","responseTitle","alignItems","iconButton","marginLeft","name","Tools","classes","toolbarTools","toggleToolBarTool","allToolsNoLabel","filter","tool","map","selected","find","t","toUpperCase","propTypes","PropTypes","object","isRequired","arrayOf","string","func","CorrectResponse","dialog","open","callback","setState","key","marks","props","model","onChange","answers","Object","entries","reduce","answer","mark","type","updatedToolbarTools","index","findIndex","updatedAnswers","filterMarks","splice","title","text","onConfirm","handleAlertDialog","updateModel","onClose","push","answersKeys","keys","length","deleteAnswer","state","arrows","backgroundMarks","coordinatesOnHover","domain","graph","labels","range","deleteAlternateResponse","includeArrows","newMarks","changeMarks","height","addAlternateResponse","React","Component","String"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { GraphContainer as Graph, tools } from '@pie-lib/graphing';\nimport { AlertDialog } from '@pie-lib/config-ui';\nimport Delete from '@material-ui/icons/Delete';\nimport { set, isEqual } from 'lodash';\n\nconst { allTools } = tools;\n\nconst styles = theme => ({\n column: {\n flex: 1\n },\n graphingTools: {\n margin: `${theme.spacing.unit * 3}px 0`,\n color: '#ababab'\n },\n availableTools: {\n marginTop: theme.spacing.unit,\n display: 'flex'\n },\n availableTool: {\n cursor: 'pointer',\n margin: theme.spacing.unit,\n padding: theme.spacing.unit,\n border: '2px solid white',\n textTransform: 'capitalize',\n '&:hover': {\n color: '#4d4d4d'\n }\n },\n selectedTool: {\n background: '#d8d8d8',\n border: '2px solid #ababab'\n },\n container: {\n border: '2px solid #ababab',\n borderRadius: '4px',\n padding: `0 ${theme.spacing.unit * 4}px ${theme.spacing.unit * 2}px`,\n background: '#fafafa'\n },\n button: {\n marginTop: theme.spacing.unit * 3,\n cursor: 'pointer',\n background: '#eee',\n padding: theme.spacing.unit * 2,\n width: 'fit-content',\n borderRadius: '4px',\n '&:hover': {\n background: '#d8d8d8'\n }\n },\n responseTitle: {\n display: 'flex',\n alignItems: 'center',\n marginTop: '20px'\n },\n iconButton: {\n marginLeft: '6px',\n color: '#6d6d6d',\n '&:hover': {\n cursor: 'pointer',\n color: '#000000'\n }\n },\n name: {\n margin: '5px 0'\n }\n});\n\nexport const Tools = ({ classes, toolbarTools, toggleToolBarTool }) => {\n // label has to be placed at the end of the list\n const allToolsNoLabel = (allTools || []).filter(tool => tool !== 'label');\n\n return (\n <div className={classes.graphingTools}>\n GRAPHING TOOLS\n <div className={classes.availableTools}>\n {([...allToolsNoLabel, 'label']).map(tool => {\n const selected = toolbarTools.find(t => t === tool);\n\n return (\n <div\n key={tool}\n className={classnames(\n classes.availableTool,\n selected && classes.selectedTool\n )}\n onClick={() => toggleToolBarTool(tool)}\n >\n {tool.toUpperCase()}\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nTools.propTypes = {\n classes: PropTypes.object.isRequired,\n toolbarTools: PropTypes.arrayOf(PropTypes.string),\n toggleToolBarTool: PropTypes.func\n};\n\nexport class CorrectResponse extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n toolbarTools: PropTypes.arrayOf(PropTypes.String)\n };\n\n state = {\n dialog: {\n open: false\n }\n };\n\n handleAlertDialog = (open, callback) =>\n this.setState({\n dialog: { open }\n }, callback);\n\n changeMarks = (key, marks) => {\n const { model, onChange } = this.props;\n\n set(model, `answers.${key}.marks`, marks);\n onChange(model);\n };\n\n filterMarks = (tool) => {\n const { model: { answers }} = this.props;\n\n return Object.entries(answers || {}).reduce((object, [key, answer]) => {\n object[key] = {\n ...answer,\n marks: (answer.marks || []).filter(mark => mark.type !== tool)\n };\n\n return object;\n }, {});\n };\n\n changeToolbarTools = toolbarTools => {\n const { model, onChange } = this.props;\n model.toolbarTools = toolbarTools;\n\n onChange(model);\n };\n\n updateModel = props => {\n const { model, onChange } = this.props;\n\n onChange({\n ...model,\n ...props\n });\n };\n\n toggleToolBarTool = tool => {\n const { model: { toolbarTools, answers = {}}} = this.props;\n const updatedToolbarTools = [ ...toolbarTools ];\n\n const index = toolbarTools.findIndex(t => tool === t);\n\n if (index >= 0) {\n const updatedAnswers = this.filterMarks(tool);\n updatedToolbarTools.splice(index, 1);\n\n if (!isEqual(answers, updatedAnswers)) {\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: `Correct answer includes one or more ${tool} objects and all of them will be deleted.`,\n onConfirm: () => this.handleAlertDialog(\n false, this.updateModel({\n toolbarTools: updatedToolbarTools,\n answers: updatedAnswers\n })),\n onClose: () => this.handleAlertDialog(false)\n }\n });\n\n return;\n }\n } else {\n updatedToolbarTools.push(tool);\n }\n\n this.updateModel({ toolbarTools: updatedToolbarTools });\n };\n\n addAlternateResponse = () => {\n const { model, onChange } = this.props;\n const { answers } = model || {};\n const answersKeys = Object.keys(answers || {});\n\n set(\n model,\n `answers.${`alternate${answersKeys.length}`}`,\n { name: `Alternate ${answersKeys.length}`, marks: [] }\n );\n onChange(model);\n };\n\n deleteAlternateResponse = (key, answer) => {\n const { model, onChange } = this.props;\n const { answers } = model || {};\n const { marks = [], name } = answer || {};\n\n const deleteAnswer = () => {\n delete answers[key];\n onChange(model);\n };\n\n if (marks.length) {\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: `${name} includes one or more shapes and the entire response will be deleted.`,\n onConfirm: () => this.handleAlertDialog(false, deleteAnswer),\n onClose: () => this.handleAlertDialog(false)\n }\n });\n\n return;\n }\n\n deleteAnswer();\n };\n\n render() {\n const { classes, model } = this.props;\n const { dialog } = this.state;\n const {\n answers = {},\n arrows,\n backgroundMarks,\n coordinatesOnHover,\n domain,\n graph = {},\n labels,\n range,\n title,\n toolbarTools\n } = model || {};\n\n return (\n <div>\n Define Correct Response\n <Tools\n classes={classes}\n toggleToolBarTool={this.toggleToolBarTool}\n toolbarTools={toolbarTools}\n />\n\n <div className={classes.container}>\n {Object.entries(answers || {}).map(([key, answer]) => {\n const { marks = [], name } = answer || {};\n\n return (\n <div key={`correct-response-graph-${name}`}>\n <div className={classes.responseTitle}>\n <p className={classes.name}>{name}</p>\n {key !== 'correctAnswer' &&\n <Delete\n className={classes.iconButton}\n onClick={() => this.deleteAlternateResponse(key, answer)}\n />}\n </div>\n\n <Graph\n axesSettings={{ includeArrows: arrows }}\n backgroundMarks={backgroundMarks}\n coordinatesOnHover={coordinatesOnHover}\n domain={domain}\n labels={labels}\n marks={marks}\n onChangeMarks={newMarks => this.changeMarks(key, newMarks)}\n range={range}\n size={{ width: graph.width, height: graph.height }}\n title={title}\n toolbarTools={toolbarTools}\n />\n </div>\n )\n })}\n\n <div className={classes.button} onClick={this.addAlternateResponse}>\n ADD ALTERNATE\n </div>\n </div>\n\n <AlertDialog\n open={dialog.open}\n title={dialog.title}\n text={dialog.text}\n onClose={dialog.onClose}\n onConfirm={dialog.onConfirm}\n />\n </div>\n );\n }\n};\n\nexport default withStyles(styles)(CorrectResponse);\n"],"file":"correct-response.js"}
1
+ {"version":3,"sources":["../src/correct-response.jsx"],"names":["styles","theme","column","flex","graphingTools","color","availableTools","marginTop","spacing","unit","display","availableTool","cursor","margin","padding","border","textTransform","selectedTool","background","container","borderRadius","button","width","responseTitle","alignItems","iconButton","marginLeft","name","subtitleText","marginBottom","toolsHeader","justifyContent","defaultTool","defaultToolSelect","menuItem","noDefaultTool","Tools","classes","toolbarTools","toggleToolBarTool","onDefaultToolChange","allTools","isLabelAvailable","includes","toolbarToolsNoLabel","filter","tool","allToolsNoLabel","length","map","index","selected","find","t","toUpperCase","propTypes","PropTypes","object","isRequired","arrayOf","string","func","CorrectResponse","dialog","open","callback","setState","key","marks","props","model","onChange","answers","Object","entries","reduce","answer","mark","type","updatedToolbarTools","newDefaultTool","findIndex","updatedAnswers","filterMarks","splice","title","text","onConfirm","handleAlertDialog","updateModel","onClose","push","event","value","target","answersKeys","keys","deleteAnswer","state","arrows","backgroundMarks","coordinatesOnHover","domain","graph","labels","range","deleteAlternateResponse","includeArrows","newMarks","changeMarks","height","addAlternateResponse","React","Component","String"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { GraphContainer as Graph } from '@pie-lib/graphing';\nimport { AlertDialog } from '@pie-lib/config-ui';\nimport Delete from '@material-ui/icons/Delete';\nimport { set, isEqual } from 'lodash';\nimport { MenuItem, Select, Typography } from '@material-ui/core';\n\nconst styles = theme => ({\n column: {\n flex: 1\n },\n graphingTools: {\n color: '#ababab'\n },\n availableTools: {\n marginTop: theme.spacing.unit,\n display: 'flex'\n },\n availableTool: {\n cursor: 'pointer',\n margin: theme.spacing.unit,\n padding: theme.spacing.unit,\n border: '2px solid white',\n textTransform: 'capitalize',\n '&:hover': {\n color: '#4d4d4d'\n }\n },\n selectedTool: {\n background: '#d8d8d8',\n border: '2px solid #ababab'\n },\n container: {\n border: '2px solid #ababab',\n borderRadius: '4px',\n padding: `0 ${theme.spacing.unit * 4}px ${theme.spacing.unit * 2}px`,\n background: '#fafafa'\n },\n button: {\n margin: `${theme.spacing.unit * 3}px 0`,\n cursor: 'pointer',\n background: '#eee',\n padding: theme.spacing.unit * 1.5,\n width: 'fit-content',\n borderRadius: '4px',\n '&:hover': {\n background: '#d8d8d8'\n }\n },\n responseTitle: {\n display: 'flex',\n alignItems: 'center',\n marginTop: '20px'\n },\n iconButton: {\n marginLeft: '6px',\n color: '#6d6d6d',\n '&:hover': {\n cursor: 'pointer',\n color: '#000000'\n }\n },\n name: {\n margin: '5px 0'\n },\n subtitleText: {\n marginTop: theme.spacing.unit * 1.5,\n marginBottom: theme.spacing.unit\n },\n toolsHeader: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between'\n },\n defaultTool: {\n display: 'flex',\n alignItems: 'center',\n width: '300px'\n },\n defaultToolSelect: {\n marginLeft: theme.spacing.unit,\n textTransform: 'uppercase',\n color: '#4d4d4d'\n },\n menuItem: {\n textTransform: 'uppercase',\n },\n noDefaultTool: {\n padding: theme.spacing.unit / 2\n }\n});\n\nexport const Tools = ({ classes, availableTools, defaultTool, toolbarTools, toggleToolBarTool, onDefaultToolChange }) => {\n let allTools = availableTools || [];\n const isLabelAvailable = allTools.includes('label');\n const toolbarToolsNoLabel = (toolbarTools || []).filter(tool => tool !== 'label');\n\n if (isLabelAvailable) {\n // label has to be placed at the end of the list\n const allToolsNoLabel = allTools.filter(tool => tool !== 'label');\n allTools = [ ...allToolsNoLabel, 'label'];\n }\n\n return (\n <div className={classes.graphingTools}>\n <div className={classes.toolsHeader}>\n <span>GRAPHING TOOLS</span>\n {toolbarToolsNoLabel.length > 0 && (\n <div className={classes.defaultTool}>\n <span>Default graphing tool:</span>\n <Select\n className={classes.defaultToolSelect}\n onChange={onDefaultToolChange}\n value={defaultTool}\n disableUnderline\n >\n {toolbarToolsNoLabel.map((tool, index) =>\n <MenuItem key={index} className={classes.menuItem} value={tool}>{tool}</MenuItem>)}\n </Select>\n </div>\n )}\n </div>\n <div className={classes.availableTools}>\n {allTools.map(tool => {\n const selected = toolbarTools.find(t => t === tool);\n\n return (\n <div\n key={tool}\n className={classnames(\n classes.availableTool,\n selected && classes.selectedTool\n )}\n onClick={() => toggleToolBarTool(tool)}\n >\n {tool.toUpperCase()}\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nTools.propTypes = {\n classes: PropTypes.object.isRequired,\n toolbarTools: PropTypes.arrayOf(PropTypes.string),\n toggleToolBarTool: PropTypes.func\n};\n\nexport class CorrectResponse extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n toolbarTools: PropTypes.arrayOf(PropTypes.String)\n };\n\n state = {\n dialog: {\n open: false\n }\n };\n\n handleAlertDialog = (open, callback) =>\n this.setState({\n dialog: { open }\n }, callback);\n\n changeMarks = (key, marks) => {\n const { model, onChange } = this.props;\n\n set(model, `answers.${key}.marks`, marks);\n onChange(model);\n };\n\n filterMarks = (tool) => {\n const { model: { answers }} = this.props;\n\n return Object.entries(answers || {}).reduce((object, [key, answer]) => {\n object[key] = {\n ...answer,\n marks: (answer.marks || []).filter(mark => mark.type !== tool)\n };\n\n return object;\n }, {});\n };\n\n changeToolbarTools = toolbarTools => {\n const { model, onChange } = this.props;\n model.toolbarTools = toolbarTools;\n\n onChange(model);\n };\n\n updateModel = props => {\n const { model, onChange } = this.props;\n\n onChange({\n ...model,\n ...props\n });\n };\n\n toggleToolBarTool = tool => {\n const { model: { defaultTool, toolbarTools, answers = {}}} = this.props;\n const updatedToolbarTools = [ ...toolbarTools ];\n let newDefaultTool = defaultTool;\n\n const index = toolbarTools.findIndex(t => tool === t);\n\n if (index >= 0) {\n const updatedAnswers = this.filterMarks(tool);\n updatedToolbarTools.splice(index, 1);\n\n if (tool === defaultTool) {\n const toolbarToolsNoLabel = (updatedToolbarTools || []).filter(tool => tool !== 'label');\n newDefaultTool = toolbarToolsNoLabel.length && toolbarToolsNoLabel[0] || '';\n }\n\n if (!isEqual(answers, updatedAnswers)) {\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: `Correct answer includes one or more ${tool} objects and all of them will be deleted.`,\n onConfirm: () => this.handleAlertDialog(\n false, this.updateModel({\n toolbarTools: updatedToolbarTools,\n answers: updatedAnswers,\n defaultTool: newDefaultTool\n })),\n onClose: () => this.handleAlertDialog(false)\n }\n });\n\n return;\n }\n } else {\n updatedToolbarTools.push(tool);\n\n if (defaultTool === '' && tool !== 'label') {\n newDefaultTool = tool;\n }\n }\n\n this.updateModel({\n toolbarTools: updatedToolbarTools,\n defaultTool: newDefaultTool\n });\n };\n\n onDefaultToolChange = event => {\n const { value } = event.target;\n\n this.updateModel( { defaultTool: value });\n }\n\n addAlternateResponse = () => {\n const { model, onChange } = this.props;\n const { answers } = model || {};\n const answersKeys = Object.keys(answers || {});\n\n set(\n model,\n `answers.${`alternate${answersKeys.length}`}`,\n { name: `Alternate ${answersKeys.length}`, marks: [] }\n );\n onChange(model);\n };\n\n deleteAlternateResponse = (key, answer) => {\n const { model, onChange } = this.props;\n const { answers } = model || {};\n const { marks = [], name } = answer || {};\n\n const deleteAnswer = () => {\n delete answers[key];\n onChange(model);\n };\n\n if (marks.length) {\n this.setState({\n dialog: {\n open: true,\n title: 'Warning',\n text: `${name} includes one or more shapes and the entire response will be deleted.`,\n onConfirm: () => this.handleAlertDialog(false, deleteAnswer),\n onClose: () => this.handleAlertDialog(false)\n }\n });\n\n return;\n }\n\n deleteAnswer();\n };\n\n render() {\n const { availableTools, classes, model } = this.props;\n const { dialog } = this.state;\n const {\n answers = {},\n arrows,\n backgroundMarks,\n coordinatesOnHover,\n defaultTool,\n domain,\n graph = {},\n labels,\n range,\n title,\n toolbarTools\n } = model || {};\n\n return (\n <div>\n <Typography component=\"div\" variant=\"subheading\">\n <span>Define Tool Set and Correct Response</span>\n </Typography>\n\n <Typography component=\"div\" variant=\"body1\" className={classes.subtitleText}>\n <span>Use this interface to choose which graphing tools students will be able to use, and to define the correct answer</span>\n </Typography>\n\n <Tools\n classes={classes}\n availableTools={availableTools}\n defaultTool={defaultTool}\n onDefaultToolChange={this.onDefaultToolChange}\n toggleToolBarTool={this.toggleToolBarTool}\n toolbarTools={toolbarTools}\n />\n\n {Object.entries(answers || {}).map(([key, answer]) => {\n const { marks = [], name } = answer || {};\n\n return (\n <div key={`correct-response-graph-${name}`}>\n <div className={classes.responseTitle}>\n <p className={classes.name}>{name}</p>\n {key !== 'correctAnswer' &&\n <Delete\n className={classes.iconButton}\n onClick={() => this.deleteAlternateResponse(key, answer)}\n />}\n </div>\n\n <Graph\n axesSettings={{ includeArrows: arrows }}\n backgroundMarks={backgroundMarks}\n coordinatesOnHover={coordinatesOnHover}\n domain={domain}\n labels={labels}\n marks={marks}\n onChangeMarks={newMarks => this.changeMarks(key, newMarks)}\n range={range}\n size={{width: graph.width, height: graph.height}}\n title={title}\n toolbarTools={toolbarTools}\n />\n </div>\n )\n })}\n\n <div className={classes.button} onClick={this.addAlternateResponse}>\n ADD ALTERNATE\n </div>\n\n <AlertDialog\n open={dialog.open}\n title={dialog.title}\n text={dialog.text}\n onClose={dialog.onClose}\n onConfirm={dialog.onConfirm}\n />\n </div>\n );\n }\n};\n\nexport default withStyles(styles)(CorrectResponse);\n"],"file":"correct-response.js"}
@@ -54,8 +54,30 @@ var _default = {
54
54
  configuration: {
55
55
  authoring: {
56
56
  settings: false,
57
- label: 'Allow authoring',
58
- enabled: false
57
+ label: 'Customize Grid Setup',
58
+ enabled: true,
59
+ includeAxesEnabled: true,
60
+ standardGridEnabled: true,
61
+ min: {
62
+ label: 'Min Value',
63
+ enabled: true
64
+ },
65
+ max: {
66
+ label: 'Max Value',
67
+ enabled: true
68
+ },
69
+ axisLabel: {
70
+ label: 'Label',
71
+ enabled: true
72
+ },
73
+ step: {
74
+ label: 'Grid Interval',
75
+ enabled: true
76
+ },
77
+ labelStep: {
78
+ label: 'Label Interval',
79
+ enabled: true
80
+ }
59
81
  },
60
82
  arrows: {
61
83
  settings: true,
@@ -115,6 +137,7 @@ var _default = {
115
137
  label: 'Graph Title',
116
138
  enabled: true
117
139
  },
140
+ availableTools: allTools,
118
141
  spellCheck: {
119
142
  label: 'Spellcheck',
120
143
  settings: false,