@pie-element/drag-in-the-blank 3.11.4 → 3.12.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,41 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.12.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.12.1...@pie-element/drag-in-the-blank@3.12.2) (2021-11-29)
7
+
8
+ **Note:** Version bump only for package @pie-element/drag-in-the-blank
9
+
10
+
11
+
12
+
13
+
14
+ ## [3.12.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.11.4...@pie-element/drag-in-the-blank@3.12.1) (2021-11-11)
15
+
16
+ **Note:** Version bump only for package @pie-element/drag-in-the-blank
17
+
18
+
19
+
20
+
21
+
22
+ # [3.12.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.10.2...@pie-element/drag-in-the-blank@3.12.0) (2021-11-11)
23
+
24
+
25
+ ### Bug Fixes
26
+
27
+ * pie-lib updates ([e521c2f](https://github.com/pie-framework/pie-elements/commit/e521c2f1a44aa7f3e14f82a1cee05ceb484ed0a6))
28
+ * Updated pie-lib versions ([2fe4c5d](https://github.com/pie-framework/pie-elements/commit/2fe4c5d0be2d40f5fdb34815855695a7f1087f56))
29
+ * Updated pie-lib versions ([1c23830](https://github.com/pie-framework/pie-elements/commit/1c23830fc75d1de5f7bb3bb16de3c665ae5fa350))
30
+
31
+
32
+ ### Features
33
+
34
+ * **drag-in-the-blank:** set toolbar editor position to bottom ([8a16b0f](https://github.com/pie-framework/pie-elements/commit/8a16b0f2965af63ab6e20267131cc1da19dce8e1))
35
+
36
+
37
+
38
+
39
+
40
+
6
41
  ## [3.11.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank@3.11.3...@pie-element/drag-in-the-blank@3.11.4) (2021-10-18)
7
42
 
8
43
  **Note:** Version bump only for package @pie-element/drag-in-the-blank
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.6.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@3.6.5...@pie-element/drag-in-the-blank-configure@3.6.6) (2021-11-29)
7
+
8
+ **Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
9
+
10
+
11
+
12
+
13
+
6
14
  ## [3.6.5](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-configure@3.6.4...@pie-element/drag-in-the-blank-configure@3.6.5) (2021-10-04)
7
15
 
8
16
  **Note:** Version bump only for package @pie-element/drag-in-the-blank-configure
@@ -61,10 +61,11 @@ window.renMath = _mathRendering.renderMath;
61
61
 
62
62
  var InfoDialog = function InfoDialog(_ref) {
63
63
  var open = _ref.open,
64
+ title = _ref.title,
64
65
  onOk = _ref.onOk;
65
66
  return /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
66
67
  open: open
67
- }, /*#__PURE__*/_react["default"].createElement(_DialogTitle["default"], null, "Identical answer choices are not allowed and will be discarded"), /*#__PURE__*/_react["default"].createElement(_DialogActions["default"], null, onOk && /*#__PURE__*/_react["default"].createElement(_Button["default"], {
68
+ }, /*#__PURE__*/_react["default"].createElement(_DialogTitle["default"], null, title || ''), /*#__PURE__*/_react["default"].createElement(_DialogActions["default"], null, onOk && /*#__PURE__*/_react["default"].createElement(_Button["default"], {
68
69
  onClick: onOk,
69
70
  color: "primary"
70
71
  }, "OK")));
@@ -72,7 +73,8 @@ var InfoDialog = function InfoDialog(_ref) {
72
73
 
73
74
  InfoDialog.propTypes = {
74
75
  open: _propTypes["default"].bool,
75
- onOk: _propTypes["default"].func
76
+ onOk: _propTypes["default"].func,
77
+ title: _propTypes["default"].string
76
78
  };
77
79
 
78
80
  var styles = function styles(theme) {
@@ -122,9 +124,9 @@ var Choices = /*#__PURE__*/function (_React$Component) {
122
124
  alternateResponses = model.alternateResponses;
123
125
  var exists = (choices || []).filter(function (c) {
124
126
  return c.value === val;
125
- });
127
+ }); // discard the new added choice if it is a duplicate
126
128
 
127
- if (exists.length) {
129
+ if (prevValue === '' && exists.length) {
128
130
  var _newChoices = (choices || []).filter(function (c) {
129
131
  return c.id !== key;
130
132
  });
@@ -134,6 +136,26 @@ var Choices = /*#__PURE__*/function (_React$Component) {
134
136
  _this.setState({
135
137
  dialog: {
136
138
  open: true,
139
+ message: 'Identical answer choices are not allowed and will be discarded',
140
+ onOk: function onOk() {
141
+ _this.setState({
142
+ dialog: {
143
+ open: false
144
+ }
145
+ });
146
+ }
147
+ }
148
+ });
149
+
150
+ return;
151
+ } // discard the change if the choice would be a duplicate to one that already exists
152
+
153
+
154
+ if (exists.length) {
155
+ _this.setState({
156
+ dialog: {
157
+ open: true,
158
+ message: 'Identical answer choices are not allowed and the changes will be discarded',
137
159
  onOk: function onOk() {
138
160
  _this.setState({
139
161
  dialog: {
@@ -280,6 +302,7 @@ var Choices = /*#__PURE__*/function (_React$Component) {
280
302
  className: classes.design
281
303
  }, /*#__PURE__*/_react["default"].createElement(InfoDialog, {
282
304
  open: dialog.open,
305
+ title: dialog.message,
283
306
  onOk: dialog.onOk
284
307
  }), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
285
308
  className: classes.addButton,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/choices.jsx"],"names":["window","renMath","renderMath","InfoDialog","open","onOk","propTypes","PropTypes","bool","func","styles","theme","design","marginTop","spacing","unit","altChoices","alignItems","display","flexWrap","justifyContent","padding","marginBottom","Choices","dialog","prevValue","val","key","props","onChange","model","choices","correctResponse","alternateResponses","exists","filter","c","value","length","newChoices","id","setState","map","usedForResponse","Object","keys","forEach","responseKey","values","alternate","indexOf","alert","newChoicesWithoutTheEmptyOne","choice","focusedEl","oldChoices","duplicates","v","domNode","ReactDOM","findDOMNode","focusedNodeRef","focus","state","classes","toolbarOpts","visibleChoices","getVisibleChoices","addButton","onAddChoice","index","minWidth","zIndex","ref","prompt","video","disabled","audio","onChoiceChanged","undefined","onChoiceFocus","handleChoiceRemove","React","Component","object","isRequired","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport find from 'lodash/find';\nimport Button from '@material-ui/core/Button';\nimport Choice from './choice';\nimport { choiceIsEmpty } from './markupUtils';\nimport { withStyles } from '@material-ui/core/styles';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogActions from '@material-ui/core/DialogActions';\n\nwindow.renMath = renderMath;\n\nconst InfoDialog = ({ open, onOk }) => (\n <Dialog open={open}>\n <DialogTitle>Identical answer choices are not allowed and will be discarded</DialogTitle>\n <DialogActions>\n {onOk && (\n <Button onClick={onOk} color=\"primary\">\n OK\n </Button>\n )}\n </DialogActions>\n </Dialog>\n);\n\nInfoDialog.propTypes = {\n open: PropTypes.bool,\n onOk: PropTypes.func,\n};\n\nconst styles = theme => ({\n design: {\n marginTop: theme.spacing.unit * 2\n },\n altChoices: {\n alignItems: 'flex-start',\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-evenly',\n padding: '20px 0 0 0',\n '& > *': {\n marginBottom: '20px'\n }\n }\n});\n\nexport class Choices extends React.Component {\n static propTypes = {\n duplicates: PropTypes.bool,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n toolbarOpts: PropTypes.object\n };\n\n state = {\n dialog: {\n open: false\n }\n };\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n\n if (this.focusedNodeRef) {\n this.focusedNodeRef.focus('end');\n }\n }\n\n onChoiceChanged = (prevValue, val, key) => {\n const { onChange, model } = this.props;\n const { choices, correctResponse, alternateResponses } = model;\n const exists = (choices || []).filter(c => c.value === val);\n\n if(exists.length) {\n const newChoices = (choices || []).filter(c => c.id !== key);\n\n onChange(newChoices);\n\n this.setState({\n dialog: {\n open: true,\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false\n }\n }\n );\n }\n }\n });\n\n return;\n }\n\n const newChoices = choices\n ? choices.map(c => {\n if (c.id === key) {\n return { ...c, value: val };\n }\n\n return c;\n })\n : [];\n\n if (choiceIsEmpty({ value: val })) {\n // if the edited content is empty, its usage has to be searched in the correct response definitions\n let usedForResponse = false;\n\n if (correctResponse) {\n Object.keys(correctResponse).forEach(responseKey => {\n if (correctResponse[responseKey] === key) {\n usedForResponse = true;\n }\n });\n }\n\n if (alternateResponses) {\n Object.values(alternateResponses).forEach(alternate => {\n if (alternate.indexOf(key) >= 0) {\n usedForResponse = true;\n }\n });\n }\n\n if (usedForResponse) {\n alert('Answer choices cannot be blank.');\n } else {\n if (!choiceIsEmpty({ value: prevValue })) {\n // if the previous value was not empty, it means that the choice can be deleted\n const newChoicesWithoutTheEmptyOne = newChoices.filter(choice => choice.id !== key);\n\n onChange(newChoicesWithoutTheEmptyOne);\n } else {\n onChange(newChoices);\n }\n }\n } else {\n onChange(newChoices);\n }\n };\n\n onChoiceFocus = id => this.setState({\n focusedEl: id\n });\n\n onAddChoice = () => {\n const { model: { choices: oldChoices }, onChange } = this.props;\n\n this.setState({\n focusedEl: `${oldChoices.length}`\n }, () => {\n onChange([\n ...oldChoices,\n {\n id: `${oldChoices.length}`,\n value: ''\n }\n ]\n );\n });\n };\n\n handleChoiceRemove = id => {\n const { onChange, model: { choices } } = this.props;\n const newChoices = choices.filter(c => c.id !== id);\n\n onChange(newChoices);\n };\n\n getVisibleChoices = () => {\n const {\n duplicates,\n model: { choices, correctResponse }\n } = this.props;\n\n if (!choices) {\n return [];\n }\n\n if (duplicates) {\n return choices;\n }\n\n // if duplicates not allowed, remove the choices that are used to define the correct response\n return choices.filter(choice => !find(correctResponse, v => v === choice.id));\n };\n\n render() {\n const { focusedEl, dialog } = this.state;\n const {\n classes,\n duplicates,\n toolbarOpts\n } = this.props;\n const visibleChoices = this.getVisibleChoices() || [];\n\n return (\n <div className={classes.design}>\n <InfoDialog\n open={dialog.open}\n onOk={dialog.onOk}\n />\n <Button\n className={classes.addButton}\n variant=\"contained\"\n color=\"primary\"\n onClick={this.onAddChoice}\n >\n Add Choice\n </Button>\n <div\n className={classes.altChoices}\n >\n {\n visibleChoices.map((c, index) => {\n if (focusedEl === c.id) {\n return (\n <div\n key={index}\n style={{\n minWidth: '100%',\n zIndex: '100'\n }}\n >\n <EditableHtml\n ref={ref => (this.focusedNodeRef = ref)}\n className={classes.prompt}\n markup={c.value}\n pluginProps={{\n video: {\n disabled: true\n },\n audio: {\n disabled: true\n }\n }}\n onChange={val => this.onChoiceChanged(c.value, val, c.id)}\n onDone={() => {\n this.setState({\n focusedEl: undefined\n });\n }}\n disableUnderline\n toolbarOpts={toolbarOpts}\n />\n </div>\n );\n }\n\n return (\n <Choice\n key={index}\n duplicates={duplicates}\n targetId=\"0\"\n choice={c}\n onClick={() => this.onChoiceFocus(c.id)}\n onRemoveChoice={() => this.handleChoiceRemove(c.id)}\n />\n );\n })\n }\n </div>\n </div>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Choices);\n\nexport default Styled;\n"],"file":"choices.js"}
1
+ {"version":3,"sources":["../src/choices.jsx"],"names":["window","renMath","renderMath","InfoDialog","open","title","onOk","propTypes","PropTypes","bool","func","string","styles","theme","design","marginTop","spacing","unit","altChoices","alignItems","display","flexWrap","justifyContent","padding","marginBottom","Choices","dialog","prevValue","val","key","props","onChange","model","choices","correctResponse","alternateResponses","exists","filter","c","value","length","newChoices","id","setState","message","map","usedForResponse","Object","keys","forEach","responseKey","values","alternate","indexOf","alert","newChoicesWithoutTheEmptyOne","choice","focusedEl","oldChoices","duplicates","v","domNode","ReactDOM","findDOMNode","focusedNodeRef","focus","state","classes","toolbarOpts","visibleChoices","getVisibleChoices","addButton","onAddChoice","index","minWidth","zIndex","ref","prompt","video","disabled","audio","onChoiceChanged","undefined","onChoiceFocus","handleChoiceRemove","React","Component","object","isRequired","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport EditableHtml from '@pie-lib/editable-html';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport find from 'lodash/find';\nimport Button from '@material-ui/core/Button';\nimport Choice from './choice';\nimport { choiceIsEmpty } from './markupUtils';\nimport { withStyles } from '@material-ui/core/styles';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogActions from '@material-ui/core/DialogActions';\n\nwindow.renMath = renderMath;\n\nconst InfoDialog = ({ open, title, onOk }) => (\n <Dialog open={open}>\n <DialogTitle>{title || ''}</DialogTitle>\n <DialogActions>\n {onOk && (\n <Button onClick={onOk} color=\"primary\">\n OK\n </Button>\n )}\n </DialogActions>\n </Dialog>\n);\n\nInfoDialog.propTypes = {\n open: PropTypes.bool,\n onOk: PropTypes.func,\n title: PropTypes.string\n};\n\nconst styles = theme => ({\n design: {\n marginTop: theme.spacing.unit * 2\n },\n altChoices: {\n alignItems: 'flex-start',\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-evenly',\n padding: '20px 0 0 0',\n '& > *': {\n marginBottom: '20px'\n }\n }\n});\n\nexport class Choices extends React.Component {\n static propTypes = {\n duplicates: PropTypes.bool,\n model: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n toolbarOpts: PropTypes.object\n };\n\n state = {\n dialog: {\n open: false\n }\n };\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n\n if (this.focusedNodeRef) {\n this.focusedNodeRef.focus('end');\n }\n }\n\n onChoiceChanged = (prevValue, val, key) => {\n const { onChange, model } = this.props;\n const { choices, correctResponse, alternateResponses } = model;\n const exists = (choices || []).filter(c => c.value === val);\n\n // discard the new added choice if it is a duplicate\n if (prevValue === '' && exists.length) {\n const newChoices = (choices || []).filter(c => c.id !== key);\n\n onChange(newChoices);\n\n this.setState({\n dialog: {\n open: true,\n message:\n 'Identical answer choices are not allowed and will be discarded',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false\n }\n }\n );\n }\n }\n });\n\n return;\n }\n\n // discard the change if the choice would be a duplicate to one that already exists\n if(exists.length) {\n this.setState({\n dialog: {\n open: true,\n message: 'Identical answer choices are not allowed and the changes will be discarded',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false\n }\n }\n );\n }\n }\n });\n\n return;\n }\n\n const newChoices = choices\n ? choices.map(c => {\n if (c.id === key) {\n return { ...c, value: val };\n }\n\n return c;\n })\n : [];\n\n if (choiceIsEmpty({ value: val })) {\n // if the edited content is empty, its usage has to be searched in the correct response definitions\n let usedForResponse = false;\n\n if (correctResponse) {\n Object.keys(correctResponse).forEach(responseKey => {\n if (correctResponse[responseKey] === key) {\n usedForResponse = true;\n }\n });\n }\n\n if (alternateResponses) {\n Object.values(alternateResponses).forEach(alternate => {\n if (alternate.indexOf(key) >= 0) {\n usedForResponse = true;\n }\n });\n }\n\n if (usedForResponse) {\n alert('Answer choices cannot be blank.');\n } else {\n if (!choiceIsEmpty({ value: prevValue })) {\n // if the previous value was not empty, it means that the choice can be deleted\n const newChoicesWithoutTheEmptyOne = newChoices.filter(choice => choice.id !== key);\n\n onChange(newChoicesWithoutTheEmptyOne);\n } else {\n onChange(newChoices);\n }\n }\n } else {\n onChange(newChoices);\n }\n };\n\n onChoiceFocus = id => this.setState({\n focusedEl: id\n });\n\n onAddChoice = () => {\n const { model: { choices: oldChoices }, onChange } = this.props;\n\n this.setState({\n focusedEl: `${oldChoices.length}`\n }, () => {\n onChange([\n ...oldChoices,\n {\n id: `${oldChoices.length}`,\n value: ''\n }\n ]\n );\n });\n };\n\n handleChoiceRemove = id => {\n const { onChange, model: { choices } } = this.props;\n const newChoices = choices.filter(c => c.id !== id);\n\n onChange(newChoices);\n };\n\n getVisibleChoices = () => {\n const {\n duplicates,\n model: { choices, correctResponse }\n } = this.props;\n\n if (!choices) {\n return [];\n }\n\n if (duplicates) {\n return choices;\n }\n\n // if duplicates not allowed, remove the choices that are used to define the correct response\n return choices.filter(choice => !find(correctResponse, v => v === choice.id));\n };\n\n render() {\n const { focusedEl, dialog } = this.state;\n const {\n classes,\n duplicates,\n toolbarOpts\n } = this.props;\n const visibleChoices = this.getVisibleChoices() || [];\n\n return (\n <div className={classes.design}>\n <InfoDialog\n open={dialog.open}\n title={dialog.message}\n onOk={dialog.onOk}\n />\n <Button\n className={classes.addButton}\n variant=\"contained\"\n color=\"primary\"\n onClick={this.onAddChoice}\n >\n Add Choice\n </Button>\n <div\n className={classes.altChoices}\n >\n {\n visibleChoices.map((c, index) => {\n if (focusedEl === c.id) {\n return (\n <div\n key={index}\n style={{\n minWidth: '100%',\n zIndex: '100'\n }}\n >\n <EditableHtml\n ref={ref => (this.focusedNodeRef = ref)}\n className={classes.prompt}\n markup={c.value}\n pluginProps={{\n video: {\n disabled: true\n },\n audio: {\n disabled: true\n }\n }}\n onChange={val => this.onChoiceChanged(c.value, val, c.id)}\n onDone={() => {\n this.setState({\n focusedEl: undefined\n });\n }}\n disableUnderline\n toolbarOpts={toolbarOpts}\n />\n </div>\n );\n }\n\n return (\n <Choice\n key={index}\n duplicates={duplicates}\n targetId=\"0\"\n choice={c}\n onClick={() => this.onChoiceFocus(c.id)}\n onRemoveChoice={() => this.handleChoiceRemove(c.id)}\n />\n );\n })\n }\n </div>\n </div>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Choices);\n\nexport default Styled;\n"],"file":"choices.js"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-element/drag-in-the-blank-configure",
3
- "version": "3.6.5",
3
+ "version": "3.6.8",
4
4
  "private": true,
5
5
  "main": "lib/index.js",
6
6
  "module": "src/index.js",
@@ -8,10 +8,10 @@
8
8
  "@material-ui/core": "^3.9.2",
9
9
  "@material-ui/icons": "^3.0.1",
10
10
  "@pie-framework/pie-configure-events": "^1.2.0",
11
- "@pie-lib/config-ui": "^10.10.11",
11
+ "@pie-lib/config-ui": "^10.10.12",
12
12
  "@pie-lib/drag": "^1.1.52",
13
- "@pie-lib/editable-html": "^7.17.11",
14
- "@pie-lib/math-rendering": "^2.3.11",
13
+ "@pie-lib/editable-html": "^7.17.12",
14
+ "@pie-lib/math-rendering": "^2.3.12",
15
15
  "debug": "^3.1.0",
16
16
  "lodash": "^4.17.15",
17
17
  "prop-types": "^15.6.2",
@@ -3,6 +3,22 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.3.18](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-controller@3.3.16...@pie-element/drag-in-the-blank-controller@3.3.18) (2021-11-11)
7
+
8
+ **Note:** Version bump only for package @pie-element/drag-in-the-blank-controller
9
+
10
+
11
+
12
+
13
+
14
+ ## [3.3.17](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-controller@3.3.16...@pie-element/drag-in-the-blank-controller@3.3.17) (2021-11-11)
15
+
16
+ **Note:** Version bump only for package @pie-element/drag-in-the-blank-controller
17
+
18
+
19
+
20
+
21
+
6
22
  ## [3.3.16](https://github.com/pie-framework/pie-elements/compare/@pie-element/drag-in-the-blank-controller@3.3.14...@pie-element/drag-in-the-blank-controller@3.3.16) (2021-08-05)
7
23
 
8
24
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pie-element/drag-in-the-blank-controller",
3
3
  "private": true,
4
- "version": "3.3.16",
4
+ "version": "3.3.20",
5
5
  "description": "",
6
6
  "main": "lib/index.js",
7
7
  "module": "src/index.js",
package/lib/main.js CHANGED
@@ -121,7 +121,10 @@ var Main = /*#__PURE__*/function (_React$Component) {
121
121
  dangerouslySetInnerHTML: {
122
122
  __html: prompt
123
123
  }
124
- }), /*#__PURE__*/_react["default"].createElement("br", null)), model.rationale && (0, _renderUi.hasText)(model.rationale) && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
124
+ }), /*#__PURE__*/_react["default"].createElement("br", null)), /*#__PURE__*/_react["default"].createElement(DraggableDragInTheBlank, (0, _extends2["default"])({}, modelWithValue, {
125
+ onChange: onChange,
126
+ showCorrectAnswer: showCorrectAnswer
127
+ })), model.rationale && (0, _renderUi.hasText)(model.rationale) && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("br", null), /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
125
128
  labels: {
126
129
  hidden: 'Show Rationale',
127
130
  visible: 'Hide Rationale'
@@ -130,10 +133,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
130
133
  dangerouslySetInnerHTML: {
131
134
  __html: model.rationale
132
135
  }
133
- })), /*#__PURE__*/_react["default"].createElement("br", null)), /*#__PURE__*/_react["default"].createElement(DraggableDragInTheBlank, (0, _extends2["default"])({}, modelWithValue, {
134
- onChange: onChange,
135
- showCorrectAnswer: showCorrectAnswer
136
- })));
136
+ })), /*#__PURE__*/_react["default"].createElement("br", null)));
137
137
  }
138
138
  }]);
139
139
  return Main;
package/lib/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/main.js"],"names":["DraggableDragInTheBlank","DragInTheBlank","Main","showCorrectAnswer","setState","state","domNode","ReactDOM","findDOMNode","props","model","onChange","value","classes","prompt","mode","modelWithValue","showCorrectAnswerToggle","mainContainer","teacherInstructions","hidden","visible","__html","toggleShowCorrect","rationale","React","Component","PropTypes","object","feedback","func","styles","theme","padding","spacing","unit","color","text","backgroundColor","background"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { DragInTheBlank } from '@pie-lib/mask-markup';\nimport { withDragContext } from '@pie-lib/drag';\nimport { color, Collapsible, hasText } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst DraggableDragInTheBlank = withDragContext(DragInTheBlank);\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n model: PropTypes.object,\n value: PropTypes.object,\n feedback: PropTypes.object,\n onChange: PropTypes.func\n };\n\n static defaultProps = {\n value: {}\n };\n\n state = {\n showCorrectAnswer: false\n };\n\n componentDidUpdate() {\n // eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n toggleShowCorrect = () => {\n this.setState({ showCorrectAnswer: !this.state.showCorrectAnswer });\n };\n\n render() {\n const { showCorrectAnswer } = this.state;\n const { model, onChange, value, classes } = this.props;\n const { prompt, mode } = model;\n const modelWithValue = {\n ...model,\n value\n };\n const showCorrectAnswerToggle = mode === 'evaluate';\n\n return (\n <div className={classes.mainContainer}>\n {\n model.teacherInstructions && hasText(model.teacherInstructions) && (\n <React.Fragment>\n <Collapsible labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}>\n <div dangerouslySetInnerHTML={{ __html: model.teacherInstructions }}/>\n </Collapsible>\n <br />\n </React.Fragment>\n )\n }\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n />\n {showCorrectAnswerToggle && <br />}\n {prompt && (\n <React.Fragment>\n <div dangerouslySetInnerHTML={{ __html: prompt }}/>\n <br />\n </React.Fragment>\n )}\n {\n model.rationale && hasText(model.rationale) && (\n <React.Fragment>\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <div dangerouslySetInnerHTML={{ __html: model.rationale }}/>\n </Collapsible>\n <br />\n </React.Fragment>\n )\n }\n <DraggableDragInTheBlank\n {...modelWithValue}\n onChange={onChange}\n showCorrectAnswer={showCorrectAnswer}\n />\n </div>\n );\n }\n}\n\n\nconst styles = (theme) => ({\n mainContainer: {\n padding: theme.spacing.unit,\n color: color.text(),\n backgroundColor: color.background(),\n '& tr > td': {\n color: color.text()\n }\n },\n});\n\nexport default withStyles(styles)(Main);\n\n"],"file":"main.js"}
1
+ {"version":3,"sources":["../src/main.js"],"names":["DraggableDragInTheBlank","DragInTheBlank","Main","showCorrectAnswer","setState","state","domNode","ReactDOM","findDOMNode","props","model","onChange","value","classes","prompt","mode","modelWithValue","showCorrectAnswerToggle","mainContainer","teacherInstructions","hidden","visible","__html","toggleShowCorrect","rationale","React","Component","PropTypes","object","feedback","func","styles","theme","padding","spacing","unit","color","text","backgroundColor","background"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { DragInTheBlank } from '@pie-lib/mask-markup';\nimport { withDragContext } from '@pie-lib/drag';\nimport { color, Collapsible, hasText } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { withStyles } from '@material-ui/core/styles';\n\nconst DraggableDragInTheBlank = withDragContext(DragInTheBlank);\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n model: PropTypes.object,\n value: PropTypes.object,\n feedback: PropTypes.object,\n onChange: PropTypes.func\n };\n\n static defaultProps = {\n value: {}\n };\n\n state = {\n showCorrectAnswer: false\n };\n\n componentDidUpdate() {\n // eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n toggleShowCorrect = () => {\n this.setState({ showCorrectAnswer: !this.state.showCorrectAnswer });\n };\n\n render() {\n const { showCorrectAnswer } = this.state;\n const { model, onChange, value, classes } = this.props;\n const { prompt, mode } = model;\n const modelWithValue = {\n ...model,\n value\n };\n const showCorrectAnswerToggle = mode === 'evaluate';\n\n return (\n <div className={classes.mainContainer}>\n {\n model.teacherInstructions && hasText(model.teacherInstructions) && (\n <React.Fragment>\n <Collapsible labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}>\n <div dangerouslySetInnerHTML={{ __html: model.teacherInstructions }}/>\n </Collapsible>\n <br />\n </React.Fragment>\n )\n }\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n />\n {showCorrectAnswerToggle && <br />}\n {prompt && (\n <React.Fragment>\n <div dangerouslySetInnerHTML={{ __html: prompt }}/>\n <br />\n </React.Fragment>\n )}\n <DraggableDragInTheBlank\n {...modelWithValue}\n onChange={onChange}\n showCorrectAnswer={showCorrectAnswer}\n />\n {\n model.rationale && hasText(model.rationale) && (\n <React.Fragment>\n <br />\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <div dangerouslySetInnerHTML={{ __html: model.rationale }}/>\n </Collapsible>\n <br />\n </React.Fragment>\n )\n }\n </div>\n );\n }\n}\n\n\nconst styles = (theme) => ({\n mainContainer: {\n padding: theme.spacing.unit,\n color: color.text(),\n backgroundColor: color.background(),\n '& tr > td': {\n color: color.text()\n }\n },\n});\n\nexport default withStyles(styles)(Main);\n\n"],"file":"main.js"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "repository": "pie-framework/pie-elements",
7
- "version": "3.11.4",
7
+ "version": "3.12.4",
8
8
  "description": "",
9
9
  "scripts": {
10
10
  "test": "echo \"Error: no test specified\" && exit 1",
@@ -13,10 +13,10 @@
13
13
  "dependencies": {
14
14
  "@material-ui/core": "^3.9.2",
15
15
  "@pie-framework/pie-player-events": "^0.1.0",
16
- "@pie-lib/correct-answer-toggle": "^2.3.31",
17
- "@pie-lib/mask-markup": "^1.11.1",
18
- "@pie-lib/math-rendering": "^2.3.11",
19
- "@pie-lib/render-ui": "^4.12.2",
16
+ "@pie-lib/correct-answer-toggle": "^2.3.32",
17
+ "@pie-lib/mask-markup": "^1.11.3",
18
+ "@pie-lib/math-rendering": "^2.3.12",
19
+ "@pie-lib/render-ui": "^4.12.3",
20
20
  "classnames": "^2.2.5",
21
21
  "lodash": "^4.17.10",
22
22
  "prop-types": "^15.6.1",
@@ -25,7 +25,7 @@
25
25
  },
26
26
  "author": "",
27
27
  "license": "ISC",
28
- "gitHead": "4047d6c8342ee2664e773f255950e899bb59f98b",
28
+ "gitHead": "6f1f221659a13d56f6c7e73b2bf5488c63943123",
29
29
  "main": "lib/index.js",
30
30
  "module": "src/index.js"
31
31
  }