@pie-element/inline-dropdown 3.8.3-next.254 → 3.8.3-next.264

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,13 +39,13 @@ var _defaults2 = _interopRequireDefault(require("./defaults"));
39
39
 
40
40
  var _markupUtils = require("./markupUtils");
41
41
 
42
- 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; }
42
+ 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; }
43
43
 
44
44
  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; }
45
45
 
46
46
  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); }; }
47
47
 
48
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
48
+ 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; } }
49
49
 
50
50
  var log = (0, _debug["default"])('multiple-choice:configure');
51
51
 
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
-
5
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
@@ -41,13 +41,17 @@ var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
41
41
 
42
42
  var _classnames2 = _interopRequireDefault(require("classnames"));
43
43
 
44
- 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; }
44
+ 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); }
45
+
46
+ 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; }
47
+
48
+ 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; }
45
49
 
46
50
  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; }
47
51
 
48
52
  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); }; }
49
53
 
50
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
54
+ 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; } }
51
55
 
52
56
  var MenuItemComp = /*#__PURE__*/function (_React$Component) {
53
57
  (0, _inherits2["default"])(MenuItemComp, _React$Component);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/inline-dropdown-toolbar.jsx"],"names":["MenuItemComp","e","onRemoveChoice","props","preventDefault","stopPropagation","classes","correct","onClick","value","wrapper","valueHolder","__html","removeIcon","onRemoveClick","React","Component","PropTypes","object","isRequired","bool","func","string","MenuItem","background","borderBottom","boxSizing","display","cursor","lineHeight","padding","position","fontSize","fontStyle","transform","top","right","zIndex","wordBreak","findSlateNode","key","window","document","querySelector","createElementFromHTML","htmlString","div","createElement","innerHTML","trim","RespAreaToolbar","respAreaMarkup","setState","editorRef","finishEditing","val","node","onAddChoice","onlyText","textContent","data","get","newValue","index","onToolbarDone","onSelectChoice","update","toJSON","change","setNodeByKey","nextText","getNextText","moveFocusTo","moveAnchorTo","event","clickedInside","choices","onCheck","correctResponse","find","choice","length","removeNodeByKey","slateEditorRef","rootRef","slateEditor","inputRef","element","focus","domNode","domNodeRect","getBoundingClientRect","editor","closest","editorRect","left","toolbarStyle","height","width","ReactDOM","findDOMNode","state","filteredDefaultPlugins","DEFAULT_PLUGINS","filter","p","labelPlugins","audio","disabled","video","backgroundColor","onClickInside","itemBuilder","ref","respArea","alwaysVisible","showDone","doneOn","onKeyDown","onRespAreaChange","onDone","onBlur","focusInput","choicesHolder","map","label","array","shape","StyledRespAreaToolbar","minHeight","flexDirection","border"],"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 { withStyles } from '@material-ui/core/styles';\nimport isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\nimport classnames from 'classnames';\nimport { DEFAULT_PLUGINS } from '@pie-lib/editable-html';\n\nclass MenuItemComp extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n correct: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n onRemoveChoice: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired\n };\n\n onRemoveClick = e => {\n const { onRemoveChoice } = this.props;\n\n e.preventDefault();\n e.stopPropagation();\n\n onRemoveChoice();\n };\n\n render() {\n const { classes, correct, onClick, value } = this.props;\n\n return (\n <div className={classnames(classes.wrapper, { [classes.correct]: correct })} onClick={onClick}>\n <div\n className={classes.valueHolder}\n dangerouslySetInnerHTML={{\n __html: value\n }}\n />\n <i className={classes.removeIcon} onClick={this.onRemoveClick}>\n x\n </i>\n </div>\n );\n }\n}\n\nconst MenuItem = withStyles({\n wrapper: {\n background: '#fff',\n borderBottom: '1px solid black',\n boxSizing: 'border-box',\n display: 'block',\n cursor: 'pointer',\n lineHeight: '30px',\n padding: '10px 25px 10px 10px',\n position: 'relative'\n },\n correct: {\n background: '#C4DCFA'\n },\n removeIcon: {\n cursor: 'pointer',\n fontSize: '20px',\n fontStyle: 'normal',\n position: 'absolute',\n transform: 'translate(0, -50%)',\n top: '50%',\n right: '5px',\n zIndex: 3\n },\n valueHolder: {\n wordBreak: 'break-all'\n }\n})(MenuItemComp);\n\nconst findSlateNode = key => {\n return window.document.querySelector('[data-key=\"' + key + '\"]');\n};\n\nconst createElementFromHTML = htmlString => {\n const div = document.createElement('div');\n\n div.innerHTML = (htmlString || '').trim();\n\n return div;\n};\n\nexport class RespAreaToolbar extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n node: PropTypes.object,\n onDone: PropTypes.func,\n choices: PropTypes.array,\n onAddChoice: PropTypes.func.isRequired,\n onRemoveChoice: PropTypes.func.isRequired,\n onSelectChoice: PropTypes.func.isRequired,\n onToolbarDone: PropTypes.func.isRequired,\n value: PropTypes.shape({\n change: PropTypes.func.isRequired,\n document: PropTypes.shape({\n getNextText: PropTypes.func.isRequired\n })\n })\n };\n\n state = {\n respAreaMarkup: ''\n };\n\n componentDidMount() {\n const { node } = this.props;\n\n const domNode = findSlateNode(node.key);\n\n if (domNode) {\n //eslint-disable-next-line\n const domNodeRect = domNode.getBoundingClientRect();\n const editor = domNode.closest('[data-slate-editor]');\n const editorRect = editor.getBoundingClientRect();\n const top = domNodeRect.top - editorRect.top;\n const left = domNodeRect.left - editorRect.left;\n\n this.setState({\n toolbarStyle: {\n position: 'absolute',\n top: `${top + domNodeRect.height + 60}px`,\n left: `${left + 25}px`,\n width: domNodeRect.width\n }\n });\n }\n }\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n onRespAreaChange = respAreaMarkup => {\n this.setState({ respAreaMarkup });\n };\n\n onAddChoice = () => {\n if (this.editorRef) {\n this.editorRef.finishEditing();\n }\n };\n\n onDone = (val) => {\n const { node, onAddChoice } = this.props;\n const onlyText = createElementFromHTML(val).textContent.trim();\n\n if (!isEmpty(onlyText)) {\n onAddChoice(node.data.get('index'), val);\n }\n };\n\n onSelectChoice = (newValue, index) => {\n const { node, value, onToolbarDone, onSelectChoice } = this.props;\n const update = { ...node.data.toJSON(), value: newValue };\n const change = value.change().setNodeByKey(node.key, { data: update });\n\n const nextText = value.document.getNextText(node.key);\n\n change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);\n\n onToolbarDone(change, false);\n\n onSelectChoice(index);\n };\n\n onRemoveChoice = (val, index) => {\n const { node, value, onToolbarDone, onRemoveChoice } = this.props;\n\n if (isEqual(val, node.data.get('value'))) {\n const update = { ...node.data.toJSON(), value: null };\n const change = value.change().setNodeByKey(node.key, { data: update });\n\n onToolbarDone(change, false);\n }\n\n onRemoveChoice(index);\n };\n\n onKeyDown = event => {\n if (event.key === 'Enter') {\n this.onAddChoice();\n // Cancelling event\n return false;\n }\n };\n\n onBlur = () => {\n if (this.clickedInside) {\n this.clickedInside = false;\n return;\n }\n\n const { node, choices, onCheck, onToolbarDone, value } = this.props;\n const correctResponse = (choices || []).find(choice => choice.correct);\n\n this.onAddChoice();\n if (!choices || (choices && choices.length < 2) || !correctResponse) {\n onCheck(() => {\n const change = value.change();\n\n change.removeNodeByKey(node.get('key'));\n onToolbarDone(change, false);\n });\n }\n };\n\n onClickInside = () => {\n this.clickedInside = true;\n };\n\n focusInput = () => {\n // we need to focus the input so that math is saved even without pressing the green checkmark\n const slateEditorRef = this.editorRef && this.editorRef.rootRef && this.editorRef.rootRef.slateEditor;\n const inputRef = slateEditorRef && slateEditorRef.editorRef && slateEditorRef.editorRef.element;\n\n if (inputRef) {\n inputRef.focus();\n }\n };\n\n render() {\n const { classes, choices } = this.props;\n const { respAreaMarkup, toolbarStyle } = this.state;\n\n const filteredDefaultPlugins = (DEFAULT_PLUGINS || []).filter(p => p !== 'table' && p !== 'bulleted-list' && p !== 'numbered-list');\n const labelPlugins = {\n audio: { disabled: true },\n video: { disabled: true }\n };\n\n if (!toolbarStyle) {\n return null;\n }\n\n return (\n <div\n style={{\n ...toolbarStyle,\n backgroundColor: '#E0E1E6'\n }}\n onMouseDown={this.onClickInside}\n >\n <div className={classes.itemBuilder}>\n <EditableHtml\n ref={ref => {\n if (ref) {\n this.editorRef = ref;\n }\n }}\n autoFocus={true}\n autoSave\n className={classes.respArea}\n toolbarOpts={{\n position: 'top',\n alwaysVisible: false,\n showDone: false,\n doneOn: 'blur'\n }}\n markup={respAreaMarkup}\n onKeyDown={this.onKeyDown}\n onChange={this.onRespAreaChange}\n onDone={this.onDone}\n placeholder=\"Add Choice\"\n activePlugins={filteredDefaultPlugins}\n pluginProps={labelPlugins}\n onBlur={this.onBlur}\n />\n <i\n style={{\n cursor: 'pointer',\n fontSize: '20px',\n fontStyle: 'normal',\n position: 'absolute',\n top: '50%',\n right: '15px',\n transform: 'translate(0, -50%)'\n }}\n contentEditable={false}\n onMouseDown={() => this.focusInput()}\n onClick={() => this.onAddChoice()}\n >\n +\n </i>\n </div>\n {choices && (\n <div className={classes.choicesHolder}>\n {choices.map(({ label, correct }, index) => (\n <MenuItem\n key={index}\n onClick={() => this.onSelectChoice(label, index)}\n onRemoveChoice={() => this.onRemoveChoice(label, index)}\n value={label}\n correct={correct}\n />\n ))}\n </div>\n )}\n </div>\n );\n }\n}\n\nconst StyledRespAreaToolbar = withStyles({\n respArea: {\n backgroundColor: '#fff',\n '& [data-slate-editor=\"true\"]': {\n minHeight: 'initial !important'\n }\n },\n choicesHolder: {\n display: 'flex',\n flexDirection: 'column',\n '& > div:last-child': {\n border: 'none'\n }\n },\n itemBuilder: {\n padding: '8px',\n position: 'relative'\n }\n})(RespAreaToolbar);\n\nexport default StyledRespAreaToolbar;\n"],"file":"inline-dropdown-toolbar.js"}
1
+ {"version":3,"sources":["../src/inline-dropdown-toolbar.jsx"],"names":["MenuItemComp","e","onRemoveChoice","props","preventDefault","stopPropagation","classes","correct","onClick","value","wrapper","valueHolder","__html","removeIcon","onRemoveClick","React","Component","PropTypes","object","isRequired","bool","func","string","MenuItem","background","borderBottom","boxSizing","display","cursor","lineHeight","padding","position","fontSize","fontStyle","transform","top","right","zIndex","wordBreak","findSlateNode","key","window","document","querySelector","createElementFromHTML","htmlString","div","createElement","innerHTML","trim","RespAreaToolbar","respAreaMarkup","setState","editorRef","finishEditing","val","node","onAddChoice","onlyText","textContent","data","get","newValue","index","onToolbarDone","onSelectChoice","update","toJSON","change","setNodeByKey","nextText","getNextText","moveFocusTo","moveAnchorTo","event","clickedInside","choices","onCheck","correctResponse","find","choice","length","removeNodeByKey","slateEditorRef","rootRef","slateEditor","inputRef","element","focus","domNode","domNodeRect","getBoundingClientRect","editor","closest","editorRect","left","toolbarStyle","height","width","ReactDOM","findDOMNode","state","filteredDefaultPlugins","DEFAULT_PLUGINS","filter","p","labelPlugins","audio","disabled","video","backgroundColor","onClickInside","itemBuilder","ref","respArea","alwaysVisible","showDone","doneOn","onKeyDown","onRespAreaChange","onDone","onBlur","focusInput","choicesHolder","map","label","array","shape","StyledRespAreaToolbar","minHeight","flexDirection","border"],"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 { withStyles } from '@material-ui/core/styles';\nimport isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\nimport classnames from 'classnames';\nimport { DEFAULT_PLUGINS } from '@pie-lib/editable-html';\n\nclass MenuItemComp extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n correct: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n onRemoveChoice: PropTypes.func.isRequired,\n value: PropTypes.string.isRequired\n };\n\n onRemoveClick = e => {\n const { onRemoveChoice } = this.props;\n\n e.preventDefault();\n e.stopPropagation();\n\n onRemoveChoice();\n };\n\n render() {\n const { classes, correct, onClick, value } = this.props;\n\n return (\n <div className={classnames(classes.wrapper, { [classes.correct]: correct })} onClick={onClick}>\n <div\n className={classes.valueHolder}\n dangerouslySetInnerHTML={{\n __html: value\n }}\n />\n <i className={classes.removeIcon} onClick={this.onRemoveClick}>\n x\n </i>\n </div>\n );\n }\n}\n\nconst MenuItem = withStyles({\n wrapper: {\n background: '#fff',\n borderBottom: '1px solid black',\n boxSizing: 'border-box',\n display: 'block',\n cursor: 'pointer',\n lineHeight: '30px',\n padding: '10px 25px 10px 10px',\n position: 'relative'\n },\n correct: {\n background: '#C4DCFA'\n },\n removeIcon: {\n cursor: 'pointer',\n fontSize: '20px',\n fontStyle: 'normal',\n position: 'absolute',\n transform: 'translate(0, -50%)',\n top: '50%',\n right: '5px',\n zIndex: 3\n },\n valueHolder: {\n wordBreak: 'break-all'\n }\n})(MenuItemComp);\n\nconst findSlateNode = key => {\n return window.document.querySelector('[data-key=\"' + key + '\"]');\n};\n\nconst createElementFromHTML = htmlString => {\n const div = document.createElement('div');\n\n div.innerHTML = (htmlString || '').trim();\n\n return div;\n};\n\nexport class RespAreaToolbar extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n node: PropTypes.object,\n onDone: PropTypes.func,\n choices: PropTypes.array,\n onAddChoice: PropTypes.func.isRequired,\n onRemoveChoice: PropTypes.func.isRequired,\n onSelectChoice: PropTypes.func.isRequired,\n onToolbarDone: PropTypes.func.isRequired,\n value: PropTypes.shape({\n change: PropTypes.func.isRequired,\n document: PropTypes.shape({\n getNextText: PropTypes.func.isRequired\n })\n })\n };\n\n state = {\n respAreaMarkup: ''\n };\n\n componentDidMount() {\n const { node } = this.props;\n\n const domNode = findSlateNode(node.key);\n\n if (domNode) {\n //eslint-disable-next-line\n const domNodeRect = domNode.getBoundingClientRect();\n const editor = domNode.closest('[data-slate-editor]');\n const editorRect = editor.getBoundingClientRect();\n const top = domNodeRect.top - editorRect.top;\n const left = domNodeRect.left - editorRect.left;\n\n this.setState({\n toolbarStyle: {\n position: 'absolute',\n top: `${top + domNodeRect.height + 60}px`,\n left: `${left + 25}px`,\n width: domNodeRect.width\n }\n });\n }\n }\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n onRespAreaChange = respAreaMarkup => {\n this.setState({ respAreaMarkup });\n };\n\n onAddChoice = () => {\n if (this.editorRef) {\n this.editorRef.finishEditing();\n }\n };\n\n onDone = (val) => {\n const { node, onAddChoice } = this.props;\n const onlyText = createElementFromHTML(val).textContent.trim();\n\n if (!isEmpty(onlyText)) {\n onAddChoice(node.data.get('index'), val);\n }\n };\n\n onSelectChoice = (newValue, index) => {\n const { node, value, onToolbarDone, onSelectChoice } = this.props;\n const update = { ...node.data.toJSON(), value: newValue };\n const change = value.change().setNodeByKey(node.key, { data: update });\n\n const nextText = value.document.getNextText(node.key);\n\n change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);\n\n onToolbarDone(change, false);\n\n onSelectChoice(index);\n };\n\n onRemoveChoice = (val, index) => {\n const { node, value, onToolbarDone, onRemoveChoice } = this.props;\n\n if (isEqual(val, node.data.get('value'))) {\n const update = { ...node.data.toJSON(), value: null };\n const change = value.change().setNodeByKey(node.key, { data: update });\n\n onToolbarDone(change, false);\n }\n\n onRemoveChoice(index);\n };\n\n onKeyDown = event => {\n if (event.key === 'Enter') {\n this.onAddChoice();\n // Cancelling event\n return false;\n }\n };\n\n onBlur = () => {\n if (this.clickedInside) {\n this.clickedInside = false;\n return;\n }\n\n const { node, choices, onCheck, onToolbarDone, value } = this.props;\n const correctResponse = (choices || []).find(choice => choice.correct);\n\n this.onAddChoice();\n if (!choices || (choices && choices.length < 2) || !correctResponse) {\n onCheck(() => {\n const change = value.change();\n\n change.removeNodeByKey(node.get('key'));\n onToolbarDone(change, false);\n });\n }\n };\n\n onClickInside = () => {\n this.clickedInside = true;\n };\n\n focusInput = () => {\n // we need to focus the input so that math is saved even without pressing the green checkmark\n const slateEditorRef = this.editorRef && this.editorRef.rootRef && this.editorRef.rootRef.slateEditor;\n const inputRef = slateEditorRef && slateEditorRef.editorRef && slateEditorRef.editorRef.element;\n\n if (inputRef) {\n inputRef.focus();\n }\n };\n\n render() {\n const { classes, choices } = this.props;\n const { respAreaMarkup, toolbarStyle } = this.state;\n\n const filteredDefaultPlugins = (DEFAULT_PLUGINS || []).filter(p => p !== 'table' && p !== 'bulleted-list' && p !== 'numbered-list');\n const labelPlugins = {\n audio: { disabled: true },\n video: { disabled: true }\n };\n\n if (!toolbarStyle) {\n return null;\n }\n\n return (\n <div\n style={{\n ...toolbarStyle,\n backgroundColor: '#E0E1E6'\n }}\n onMouseDown={this.onClickInside}\n >\n <div className={classes.itemBuilder}>\n <EditableHtml\n ref={ref => {\n if (ref) {\n this.editorRef = ref;\n }\n }}\n autoFocus={true}\n autoSave\n className={classes.respArea}\n toolbarOpts={{\n position: 'top',\n alwaysVisible: false,\n showDone: false,\n doneOn: 'blur'\n }}\n markup={respAreaMarkup}\n onKeyDown={this.onKeyDown}\n onChange={this.onRespAreaChange}\n onDone={this.onDone}\n placeholder=\"Add Choice\"\n activePlugins={filteredDefaultPlugins}\n pluginProps={labelPlugins}\n onBlur={this.onBlur}\n />\n <i\n style={{\n cursor: 'pointer',\n fontSize: '20px',\n fontStyle: 'normal',\n position: 'absolute',\n top: '50%',\n right: '15px',\n transform: 'translate(0, -50%)'\n }}\n contentEditable={false}\n onMouseDown={() => this.focusInput()}\n onClick={() => this.onAddChoice()}\n >\n +\n </i>\n </div>\n {choices && (\n <div className={classes.choicesHolder}>\n {choices.map(({ label, correct }, index) => (\n <MenuItem\n key={index}\n onClick={() => this.onSelectChoice(label, index)}\n onRemoveChoice={() => this.onRemoveChoice(label, index)}\n value={label}\n correct={correct}\n />\n ))}\n </div>\n )}\n </div>\n );\n }\n}\n\nconst StyledRespAreaToolbar = withStyles({\n respArea: {\n backgroundColor: '#fff',\n '& [data-slate-editor=\"true\"]': {\n minHeight: 'initial !important'\n }\n },\n choicesHolder: {\n display: 'flex',\n flexDirection: 'column',\n '& > div:last-child': {\n border: 'none'\n }\n },\n itemBuilder: {\n padding: '8px',\n position: 'relative'\n }\n})(RespAreaToolbar);\n\nexport default StyledRespAreaToolbar;\n"],"file":"inline-dropdown-toolbar.js"}
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
-
5
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
@@ -61,13 +61,17 @@ var _inlineDropdownToolbar = _interopRequireDefault(require("./inline-dropdown-t
61
61
 
62
62
  var _max = _interopRequireDefault(require("lodash/max"));
63
63
 
64
- 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; }
64
+ 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); }
65
+
66
+ 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; }
67
+
68
+ 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; }
65
69
 
66
70
  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; }
67
71
 
68
72
  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); }; }
69
73
 
70
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
74
+ 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; } }
71
75
 
72
76
  var toggle = _configUi.settings.toggle,
73
77
  Panel = _configUi.settings.Panel;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/main.jsx"],"names":["toggle","settings","Panel","InfoDialog","open","onCancel","onOk","title","propTypes","PropTypes","bool","func","string","styles","theme","promptHolder","width","paddingBottom","spacing","unit","marginBottom","prompt","paddingTop","markup","minHeight","design","choiceConfiguration","switchElement","justifyContent","margin","addButton","text","fontFamily","fontSize","lineHeight","color","createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","prepareVal","html","tmp","value","textContent","innerText","Main","dialog","newVal","props","onModelChanged","model","onModelChange","rationale","teacherInstructions","slateMarkup","callback","setState","message","respAreaChoices","state","domMarkup","allRespAreas","querySelectorAll","allChoices","forEach","el","dataset","index","existingRespAreaChoices","obj","choices","key","newRespAreaChoices","shouldWarn","newChoices","length","find","c","correct","remove","label","r","map","parseInt","filter","val","isNaN","push","respIndex","splice","selectedIndex","ch","nProps","newState","domNode","ReactDOM","findDOMNode","classes","configuration","onConfigurationChanged","imageSupport","partialScoring","lockChoiceOrder","rationaleEnabled","promptEnabled","teacherInstructionsEnabled","toolbarOpts","toolbarEditorPosition","position","Settings","Properties","onTeacherInstructionsChanged","onPromptChanged","onRationaleChanged","ALL_PLUGINS","type","options","duplicates","respAreaToolbar","node","onToolbarDone","onAddChoice","onCheck","onRemoveChoice","data","get","onSelectChoice","onChange","onBlur","React","Component","object","isRequired","disableSidePanel","shape","add","Styled"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;;;;;;;;;IAEQA,M,GAAkBC,kB,CAAlBD,M;IAAQE,K,GAAUD,kB,CAAVC,K;;AAEhB,IAAMC,UAAU,GAAG,SAAbA,UAAa;AAAA,MAAGC,IAAH,QAAGA,IAAH;AAAA,MAASC,QAAT,QAASA,QAAT;AAAA,MAAmBC,IAAnB,QAAmBA,IAAnB;AAAA,MAAyBC,KAAzB,QAAyBA,KAAzB;AAAA,sBACjB,gCAAC,kBAAD;AAAQ,IAAA,IAAI,EAAEH;AAAd,kBACE,gCAAC,uBAAD,QAAcG,KAAd,CADF,eAEE,gCAAC,yBAAD,QACGD,IAAI,iBACH,gCAAC,kBAAD;AAAQ,IAAA,OAAO,EAAEA,IAAjB;AAAuB,IAAA,KAAK,EAAC;AAA7B,UAFJ,EAMGD,QAAQ,iBACP,gCAAC,kBAAD;AAAQ,IAAA,OAAO,EAAEA,QAAjB;AAA2B,IAAA,KAAK,EAAC;AAAjC,cAPJ,CAFF,CADiB;AAAA,CAAnB;;AAkBAF,UAAU,CAACK,SAAX,GAAuB;AACrBJ,EAAAA,IAAI,EAAEK,sBAAUC,IADK;AAErBL,EAAAA,QAAQ,EAAEI,sBAAUE,IAFC;AAGrBL,EAAAA,IAAI,EAAEG,sBAAUE,IAHK;AAIrBJ,EAAAA,KAAK,EAAEE,sBAAUG;AAJI,CAAvB;;AAOA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAAAC,KAAK;AAAA,SAAK;AACvBC,IAAAA,YAAY,EAAE;AACZC,MAAAA,KAAK,EAAE,MADK;AAEZC,MAAAA,aAAa,EAAEH,KAAK,CAACI,OAAN,CAAcC,IAAd,GAAqB,CAFxB;AAGZC,MAAAA,YAAY,EAAEN,KAAK,CAACI,OAAN,CAAcC,IAAd,GAAqB;AAHvB,KADS;AAMvBE,IAAAA,MAAM,EAAE;AACNC,MAAAA,UAAU,EAAER,KAAK,CAACI,OAAN,CAAcC,IAAd,GAAqB,CAD3B;AAENH,MAAAA,KAAK,EAAE;AAFD,KANe;AAUvBO,IAAAA,MAAM,EAAE;AACNC,MAAAA,SAAS,EAAE,OADL;AAENF,MAAAA,UAAU,EAAER,KAAK,CAACI,OAAN,CAAcC,IAAd,GAAqB,CAF3B;AAGNH,MAAAA,KAAK,EAAE,MAHD;AAIN,sCAAgC;AAC9BQ,QAAAA,SAAS,EAAE;AADmB;AAJ1B,KAVe;AAkBvBC,IAAAA,MAAM,EAAE;AACNH,MAAAA,UAAU,EAAER,KAAK,CAACI,OAAN,CAAcC,IAAd,GAAqB;AAD3B,KAlBe;AAqBvBO,IAAAA,mBAAmB,EAAE;AACnBJ,MAAAA,UAAU,EAAER,KAAK,CAACI,OAAN,CAAcC,IAAd,GAAqB,CADd;AAEnBF,MAAAA,aAAa,EAAEH,KAAK,CAACI,OAAN,CAAcC,IAAd,GAAqB;AAFjB,KArBE;AAyBvBQ,IAAAA,aAAa,EAAE;AACbC,MAAAA,cAAc,EAAE,eADH;AAEbC,MAAAA,MAAM,EAAE;AAFK,KAzBQ;AA6BvBC,IAAAA,SAAS,EAAE;AACT,eAAO;AADE,KA7BY;AAgCvBC,IAAAA,IAAI,EAAE;AACJC,MAAAA,UAAU,EAAE,cADR;AAEJC,MAAAA,QAAQ,EAAE,MAFN;AAGJC,MAAAA,UAAU,EAAE,MAHR;AAIJC,MAAAA,KAAK,EAAE;AAJH;AAhCiB,GAAL;AAAA,CAApB;;AAwCA,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAwB,CAAAC,UAAU,EAAI;AAC1C,MAAMC,GAAG,GAAGC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAZ;AAEAF,EAAAA,GAAG,CAACG,SAAJ,GAAgB,CAACJ,UAAU,IAAI,EAAf,EAAmBK,IAAnB,EAAhB;AAEA,SAAOJ,GAAP;AACD,CAND;;AAQA,IAAMK,UAAU,GAAG,SAAbA,UAAa,CAAAC,IAAI,EAAI;AACzB,MAAMC,GAAG,GAAGN,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAZ;AAEAK,EAAAA,GAAG,CAACJ,SAAJ,GAAgBG,IAAhB;AAEA,MAAME,KAAK,GAAGD,GAAG,CAACE,WAAJ,IAAmBF,GAAG,CAACG,SAAvB,IAAoC,EAAlD;AAEA,SAAOF,KAAK,CAACJ,IAAN,EAAP;AACD,CARD;;IAUaO,I;;;;;;;;;;;;;;;8FAcH;AACNC,MAAAA,MAAM,EAAE;AACN9C,QAAAA,IAAI,EAAE;AADA;AADF,K;sGAoCQ,UAAA+C,MAAM,EAAI;AACxB,YAAKC,KAAL,CAAWC,cAAX,iCACK,MAAKD,KAAL,CAAWE,KADhB,GAEKH,MAFL;AAID,K;wGAEiB,UAAA9B,MAAM,EAAI;AAC1B,YAAKkC,aAAL,CAAmB;AAAElC,QAAAA,MAAM,EAANA;AAAF,OAAnB;AACD,K;2GAEoB,UAAAmC,SAAS,EAAI;AAChC,YAAKD,aAAL,CAAmB;AAAEC,QAAAA,SAAS,EAATA;AAAF,OAAnB;AACD,K;qHAE8B,UAAAC,mBAAmB,EAAI;AACpD,YAAKF,aAAL,CAAmB;AAAEE,QAAAA,mBAAmB,EAAnBA;AAAF,OAAnB;AACD,K;wGAEiB,UAAAC,WAAW,EAAI;AAC/B,YAAKH,aAAL,CAAmB;AAAEG,QAAAA,WAAW,EAAXA;AAAF,OAAnB;AACD,K;gGAES,UAAAC,QAAQ,EAAI;AACpB,YAAKC,QAAL,CAAc;AACZV,QAAAA,MAAM,EAAE;AACN9C,UAAAA,IAAI,EAAE,IADA;AAENyD,UAAAA,OAAO,EACL,kFAHI;AAINvD,UAAAA,IAAI,EAAE,gBAAM;AACV,kBAAKsD,QAAL,CACE;AACEV,cAAAA,MAAM,EAAE;AACN9C,gBAAAA,IAAI,EAAE;AADA;AADV,aADF,EAMEuD,QANF;AAQD,WAbK;AAcNtD,UAAAA,QAAQ,EAAE;AAAA,mBACR,MAAKuD,QAAL,CAAc;AACZV,cAAAA,MAAM,EAAE;AACN9C,gBAAAA,IAAI,EAAE;AADA;AADI,aAAd,CADQ;AAAA;AAdJ;AADI,OAAd;AAuBD,K;iGAEU,UAAAmB,MAAM,EAAI;AAAA,UACXuC,eADW,GACS,MAAKC,KADd,CACXD,eADW;AAEnB,UAAME,SAAS,GAAG5B,qBAAqB,CAACb,MAAD,CAAvC;AACA,UAAM0C,YAAY,GAAGD,SAAS,CAACE,gBAAV,CACnB,+BADmB,CAArB;AAIA,UAAMC,UAAU,GAAG,EAAnB;AAEAF,MAAAA,YAAY,CAACG,OAAb,CAAqB,UAAAC,EAAE,EAAI;AACzBF,QAAAA,UAAU,CAACE,EAAE,CAACC,OAAH,CAAWC,KAAZ,CAAV,GAA+BF,EAAE,CAACC,OAAH,CAAWxB,KAAX,IAAoB,EAAnD;AACD,OAFD;AAIA,UAAM0B,uBAAuB,GAAG,wBAC9BV,eAD8B,EAE9B,UAACW,GAAD,EAAMC,OAAN,EAAeC,GAAf,EAAuB;AACrB,YAAI,CAAC,6BAAYR,UAAU,CAACQ,GAAD,CAAtB,CAAL,EAAmC;AACjCF,UAAAA,GAAG,CAACE,GAAD,CAAH,GAAWb,eAAe,CAACa,GAAD,CAA1B;AACD;;AAED,eAAOF,GAAP;AACD,OAR6B,EAS9B,EAT8B,CAAhC;AAYA,UAAMG,kBAAkB,GAAG,EAA3B;AACA,UAAIC,UAAU,GAAG,KAAjB;AAEAZ,MAAAA,YAAY,CAACG,OAAb,CAAqB,UAACC,EAAD,EAAKE,KAAL,EAAe;AAClC,YAAMO,UAAU,GAAGN,uBAAuB,CAACH,EAAE,CAACC,OAAH,CAAWC,KAAZ,CAAvB,IAA6C,EAAhE;;AAEA,YAAIO,UAAU,CAACC,MAAX,GAAoB,CAApB,IAAyB,CAACD,UAAU,CAACE,IAAX,CAAgB,UAAAC,CAAC;AAAA,iBAAIA,CAAC,CAACC,OAAN;AAAA,SAAjB,CAA9B,EAA+D;AAC7Db,UAAAA,EAAE,CAACc,MAAH;AACAN,UAAAA,UAAU,GAAG,IAAb;AACD,SAHD,MAGO;AACLD,UAAAA,kBAAkB,CAACL,KAAD,CAAlB,GACEC,uBAAuB,CAACH,EAAE,CAACC,OAAH,CAAWC,KAAZ,CAAvB,IAA6C,EAD/C;AAEAF,UAAAA,EAAE,CAACC,OAAH,CAAWC,KAAX,GAAmBA,KAAnB;AACD;AACF,OAXD;;AAaA,UAAIM,UAAJ,EAAgB;AACd,cAAKjB,QAAL,CAAc;AACZV,UAAAA,MAAM,EAAE;AACN9C,YAAAA,IAAI,EAAE,IADA;AAENyD,YAAAA,OAAO,EACL,kFAHI;AAINvD,YAAAA,IAAI,EAAE,gBAAM;AACV,oBAAKsD,QAAL,CACE;AACEV,gBAAAA,MAAM,EAAE;AACN9C,kBAAAA,IAAI,EAAE;AADA;AADV,eADF,EAME;AAAA,uBACE,MAAKmD,aAAL,CAAmB;AACjBmB,kBAAAA,OAAO,EAAE,2BAAUE,kBAAV,CADQ;AAEjBlB,kBAAAA,WAAW,EAAEM,SAAS,CAACvB;AAFN,iBAAnB,CADF;AAAA,eANF;AAYD,aAjBK;AAkBNpC,YAAAA,QAAQ,EAAE;AAAA,qBACR,MAAKuD,QAAL,CAAc;AACZV,gBAAAA,MAAM,EAAE;AACN9C,kBAAAA,IAAI,EAAE;AADA;AADI,eAAd,CADQ;AAAA;AAlBJ;AADI,SAAd;AA2BD,OA5BD,MA4BO;AACL,cAAKmD,aAAL,CAAmB;AACjBmB,UAAAA,OAAO,EAAE,2BAAUE,kBAAV,CADQ;AAEjBlB,UAAAA,WAAW,EAAEM,SAAS,CAACvB;AAFN,SAAnB;AAID;AACF,K;oGAEa,UAAC8B,KAAD,EAAQa,KAAR,EAAkB;AAAA,UACtBtB,eADsB,GACF,MAAKC,KADH,CACtBD,eADsB;;AAG9B,UAAI,CAACA,eAAe,CAACS,KAAD,CAApB,EAA6B;AAC3BT,QAAAA,eAAe,CAACS,KAAD,CAAf,GAAyB,EAAzB;AACD;;AAED,UACE,CAACT,eAAe,CAACS,KAAD,CAAf,IAA0B,EAA3B,EAA+BS,IAA/B,CACE,UAAAK,CAAC;AAAA,eAAI1C,UAAU,CAAC0C,CAAC,CAACD,KAAH,CAAV,KAAwBzC,UAAU,CAACyC,KAAD,CAAtC;AAAA,OADH,CADF,EAIE;AACA,cAAKxB,QAAL,CAAc;AACZV,UAAAA,MAAM,EAAE;AACN9C,YAAAA,IAAI,EAAE,IADA;AAENyD,YAAAA,OAAO,EAAE,oCAFH;AAGNvD,YAAAA,IAAI,EAAE,gBAAM;AACV,oBAAKsD,QAAL,CAAc;AACZV,gBAAAA,MAAM,EAAE;AACN9C,kBAAAA,IAAI,EAAE;AADA;AADI,eAAd;AAKD;AATK;AADI,SAAd;;AAcA;AACD;;AAED,UAAM0C,KAAK,GAAIgB,eAAe,CAACS,KAAD,CAAf,IAA0B,qBAAIT,eAAe,CAACS,KAAD,CAAf,CAAuBe,GAAvB,CAA2B,UAAAL,CAAC;AAAA,eAAIM,QAAQ,CAACN,CAAC,CAACnC,KAAH,CAAZ;AAAA,OAA5B,EAAmD0C,MAAnD,CAA0D,UAAAC,GAAG;AAAA,eAAI,CAACC,KAAK,CAACD,GAAD,CAAV;AAAA,OAA7D,CAAJ,CAA3B,IAAkH,CAAhI;AAEA3B,MAAAA,eAAe,CAACS,KAAD,CAAf,CAAuBoB,IAAvB,CAA4B;AAC1BP,QAAAA,KAAK,EAALA,KAD0B;AAE1BtC,QAAAA,KAAK,YAAKA,KAAK,GAAG,CAAb,CAFqB;AAG1BoC,QAAAA,OAAO,EAAE;AAHiB,OAA5B;;AAMA,YAAK3B,aAAL,CAAmB;AAAEmB,QAAAA,OAAO,EAAE,2BAAUZ,eAAV;AAAX,OAAnB;AACD,K;uGAEgB,UAAC8B,SAAD,EAAYrB,KAAZ,EAAsB;AAAA,UAC7BT,eAD6B,GACT,MAAKC,KADI,CAC7BD,eAD6B;AAGrCA,MAAAA,eAAe,CAAC8B,SAAD,CAAf,CAA2BC,MAA3B,CAAkCtB,KAAlC,EAAyC,CAAzC;;AAEA,YAAKhB,aAAL,CAAmB;AAAEmB,QAAAA,OAAO,EAAE,2BAAUZ,eAAV;AAAX,OAAnB;AACD,K;uGAEgB,UAAC8B,SAAD,EAAYE,aAAZ,EAA8B;AAAA,UACrChC,eADqC,GACjB,MAAKC,KADY,CACrCD,eADqC;AAG7CA,MAAAA,eAAe,CAAC8B,SAAD,CAAf,GAA6B9B,eAAe,CAAC8B,SAAD,CAAf,CAA2BN,GAA3B,CAC3B,UAACS,EAAD,EAAKxB,KAAL;AAAA,+CAAqBwB,EAArB;AAAyBb,UAAAA,OAAO,EAAEX,KAAK,KAAKuB;AAA5C;AAAA,OAD2B,CAA7B;;AAIA,YAAKvC,aAAL,CAAmB;AAAEmB,QAAAA,OAAO,EAAE,2BAAUZ,eAAV;AAAX,OAAnB;AACD,K;;;;;;WApND,6BAAoB;AAAA,UAEPY,OAFO,GAGd,KAAKtB,KAHS,CAEhBE,KAFgB,CAEPoB,OAFO;AAKlB,WAAKd,QAAL,CAAc;AAAEE,QAAAA,eAAe,EAAE,2BAAUY,OAAV;AAAnB,OAAd;AACD;;;WAED,0CAAiCsB,MAAjC,EAAyC;AACvC,UAAMC,QAAQ,GAAG,EAAjB;;AAEA,UACE,CAAC,yBAAQD,MAAM,CAAC1C,KAAP,CAAaoB,OAArB,EAA8B,KAAKtB,KAAL,CAAWE,KAAX,CAAiBoB,OAA/C,CAAD,IACA,CAAC,yBAAQsB,MAAM,CAAC1C,KAAP,CAAaoB,OAArB,EAA8B,KAAKX,KAAL,CAAWD,eAAzC,CAFH,EAGE;AACAmC,QAAAA,QAAQ,CAACnC,eAAT,GAA2B,2BAAUkC,MAAM,CAAC1C,KAAP,CAAaoB,OAAvB,CAA3B;AACD;;AAED,UAAI,CAAC,yBAAQuB,QAAR,CAAL,EAAwB;AACtB,aAAKrC,QAAL,CAAcqC,QAAd;AACD;AACF;;;WAED,8BAAqB;AACnB;AACA,UAAMC,OAAO,GAAGC,qBAASC,WAAT,CAAqB,IAArB,CAAhB;;AAEA,qCAAWF,OAAX;AACD;;;WA0LD,kBAAS;AAAA;;AAAA,UACChD,MADD,GACY,KAAKa,KADjB,CACCb,MADD;AAAA,wBAQH,KAAKE,KARF;AAAA,UAGLiD,OAHK,eAGLA,OAHK;AAAA,UAIL/C,KAJK,eAILA,KAJK;AAAA,UAKLgD,aALK,eAKLA,aALK;AAAA,UAMLC,sBANK,eAMLA,sBANK;AAAA,UAOLC,YAPK,eAOLA,YAPK;;AAAA,kBAeHF,aAAa,IAAI,EAfd;AAAA,+BAULjF,MAVK;AAAA,UAULA,MAVK,6BAUI,EAVJ;AAAA,uCAWLoF,cAXK;AAAA,UAWLA,cAXK,qCAWY,EAXZ;AAAA,wCAYLC,eAZK;AAAA,UAYLA,eAZK,sCAYa,EAZb;AAAA,kCAaLlD,SAbK;AAAA,UAaLA,SAbK,gCAaO,EAbP;AAAA,wCAcLC,mBAdK;AAAA,UAcLA,mBAdK,sCAciB,EAdjB;;AAAA,kBAiBLH,KAAK,IAAI,EAjBJ;AAAA,UAgBCqD,gBAhBD,SAgBCA,gBAhBD;AAAA,UAgBmBC,aAhBnB,SAgBmBA,aAhBnB;AAAA,UAgBkCC,0BAhBlC,SAgBkCA,0BAhBlC;;AAmBP,UAAMC,WAAW,GAAG,EAApB;;AAEA,cAAQxD,KAAK,CAACyD,qBAAd;AACE,aAAK,KAAL;AACED,UAAAA,WAAW,CAACE,QAAZ,GAAuB,KAAvB;AACA;;AACF;AACEF,UAAAA,WAAW,CAACE,QAAZ,GAAuB,QAAvB;AACA;AANJ;;AASA,0BACE;AAAK,QAAA,SAAS,EAAEX,OAAO,CAAC5E;AAAxB,sBACE,gCAAC,gBAAD,CAAQ,YAAR;AACE,QAAA,QAAQ,eACN,gCAAC,KAAD;AACE,UAAA,KAAK,EAAE6B,KADT;AAEE,UAAA,aAAa,EAAEgD,aAFjB;AAGE,UAAA,aAAa,EAAE,uBAAAhD,KAAK;AAAA,mBAAI,MAAI,CAACC,aAAL,CAAmBD,KAAnB,CAAJ;AAAA,WAHtB;AAIE,UAAA,qBAAqB,EAAE,+BAAAgD,aAAa;AAAA,mBAClCC,sBAAsB,CAACD,aAAD,EAAgB,IAAhB,CADY;AAAA,WAJtC;AAOE,UAAA,MAAM,EAAE;AACNW,YAAAA,QAAQ,EAAE;AACRR,cAAAA,cAAc,EACZA,cAAc,CAACxG,QAAf,IAA2BD,MAAM,CAACyG,cAAc,CAACrB,KAAhB,CAF3B;AAGRsB,cAAAA,eAAe,EACbA,eAAe,CAACzG,QAAhB,IAA4BD,MAAM,CAAC0G,eAAe,CAACtB,KAAjB;AAJ5B,aADJ;AAON8B,YAAAA,UAAU,EAAE;AACVL,cAAAA,0BAA0B,EACxBpD,mBAAmB,CAACxD,QAApB,IACAD,MAAM,CAACyD,mBAAmB,CAAC2B,KAArB,CAHE;AAIVuB,cAAAA,gBAAgB,EACdnD,SAAS,CAACvD,QAAV,IAAsBD,MAAM,CAACwD,SAAS,CAAC4B,KAAX,CALpB;AAMVwB,cAAAA,aAAa,EAAEvF,MAAM,CAACpB,QAAP,IAAmBD,MAAM,CAACqB,MAAM,CAAC+D,KAAR;AAN9B;AAPN;AAPV;AAFJ,sBA4BE,6CACGyB,0BAA0B,iBACzB,gCAAC,wBAAD;AACE,QAAA,KAAK,EAAEpD,mBAAmB,CAAC2B,KAD7B;AAEE,QAAA,SAAS,EAAEiB,OAAO,CAACtF;AAFrB,sBAIE,gCAAC,wBAAD;AACE,QAAA,SAAS,EAAEsF,OAAO,CAAChF,MADrB;AAEE,QAAA,MAAM,EAAEiC,KAAK,CAACG,mBAAN,IAA6B,EAFvC;AAGE,QAAA,QAAQ,EAAE,KAAK0D,4BAHjB;AAIE,QAAA,YAAY,EAAEX,YAJhB;AAKE,QAAA,QAAQ,EAAE,KALZ;AAME,QAAA,WAAW,EAAEM;AANf,QAJF,CAFJ,EAiBGF,aAAa,iBACZ,gCAAC,wBAAD;AACE,QAAA,KAAK,EAAEvF,MAAM,CAAC+D,KADhB;AAEE,QAAA,SAAS,EAAEiB,OAAO,CAACtF;AAFrB,sBAIE,gCAAC,wBAAD;AACE,QAAA,SAAS,EAAEsF,OAAO,CAAChF,MADrB;AAEE,QAAA,MAAM,EAAEiC,KAAK,CAACjC,MAFhB;AAGE,QAAA,QAAQ,EAAE,KAAK+F,eAHjB;AAIE,QAAA,YAAY,EAAEZ,YAJhB;AAKE,QAAA,QAAQ,EAAE,KALZ;AAME,QAAA,gBAAgB,MANlB;AAOE,QAAA,WAAW,EAAEM;AAPf,QAJF,CAlBJ,EAkCGH,gBAAgB,iBACf,gCAAC,wBAAD;AACE,QAAA,KAAK,EAAEnD,SAAS,CAAC4B,KADnB;AAEE,QAAA,SAAS,EAAEiB,OAAO,CAACtF;AAFrB,sBAIE,gCAAC,wBAAD;AACE,QAAA,SAAS,EAAEsF,OAAO,CAAChF,MADrB;AAEE,QAAA,MAAM,EAAEiC,KAAK,CAACE,SAAN,IAAmB,EAF7B;AAGE,QAAA,QAAQ,EAAE,KAAK6D,kBAHjB;AAIE,QAAA,YAAY,EAAEb,YAJhB;AAKE,QAAA,WAAW,EAAEM;AALf,QAJF,CAnCJ,eAiDE,gCAAC,sBAAD;AAAY,QAAA,SAAS,EAAET,OAAO,CAACtE;AAA/B,2DAjDF,eAoDE,gCAAC,UAAD;AACE,QAAA,IAAI,EAAEmB,MAAM,CAAC9C,IADf;AAEE,QAAA,KAAK,EAAE8C,MAAM,CAACW,OAFhB;AAGE,QAAA,QAAQ,EAAEX,MAAM,CAAC7C,QAHnB;AAIE,QAAA,IAAI,EAAE6C,MAAM,CAAC5C;AAJf,QApDF,eA0DE,gCAAC,wBAAD;AACE,QAAA,aAAa,EAAEgH,yBADjB;AAEE,QAAA,WAAW,EAAE;AAAEN,UAAAA,QAAQ,EAAE;AAAZ,SAFf;AAGE,QAAA,iBAAiB,EAAE;AACjBO,UAAAA,IAAI,EAAE,iBADW;AAEjBC,UAAAA,OAAO,EAAE;AACPC,YAAAA,UAAU,EAAE;AADL,WAFQ;AAKjBC,UAAAA,eAAe,EAAE,yBAACC,IAAD,EAAO7E,KAAP,EAAc8E,aAAd,EAAgC;AAAA,gBACvC9D,eADuC,GACnB,MAAI,CAACC,KADc,CACvCD,eADuC;AAG/C,mBAAO;AAAA,kCACL,gCAAC,iCAAD;AACE,gBAAA,WAAW,EAAE,MAAI,CAAC+D,WADpB;AAEE,gBAAA,OAAO,EAAE,MAAI,CAACC,OAFhB;AAGE,gBAAA,cAAc,EAAE,wBAAAvD,KAAK;AAAA,yBACnB,MAAI,CAACwD,cAAL,CAAoBJ,IAAI,CAACK,IAAL,CAAUC,GAAV,CAAc,OAAd,CAApB,EAA4C1D,KAA5C,CADmB;AAAA,iBAHvB;AAME,gBAAA,cAAc,EAAE,wBAAAA,KAAK;AAAA,yBACnB,MAAI,CAAC2D,cAAL,CAAoBP,IAAI,CAACK,IAAL,CAAUC,GAAV,CAAc,OAAd,CAApB,EAA4C1D,KAA5C,CADmB;AAAA,iBANvB;AASE,gBAAA,IAAI,EAAEoD,IATR;AAUE,gBAAA,KAAK,EAAE7E,KAVT;AAWE,gBAAA,aAAa,EAAE8E,aAXjB;AAYE,gBAAA,OAAO,EAAE9D,eAAe,CAAC6D,IAAI,CAACK,IAAL,CAAUC,GAAV,CAAc,OAAd,CAAD;AAZ1B,gBADK;AAAA,aAAP;AAgBD;AAxBgB,SAHrB;AA6BE,QAAA,SAAS,EAAE5B,OAAO,CAAC9E,MA7BrB;AA8BE,QAAA,MAAM,EAAE+B,KAAK,CAACI,WAAN,IAAqB,EA9B/B;AA+BE,QAAA,QAAQ,EAAE,KAAKyE,QA/BjB;AAgCE,QAAA,YAAY,EAAE3B,YAhChB;AAiCE,QAAA,MAAM,EAAE,KAAK4B,MAjCf;AAkCE,QAAA,QAAQ,EAAE,KAlCZ;AAmCE,QAAA,cAAc,EAAE;AAnClB,QA1DF,CA5BF,CADF,CADF;AAiID;;;EAzYuBC,kBAAMC,S;;;iCAAnBrF,I,eACQ;AACjBqD,EAAAA,aAAa,EAAE7F,sBAAU8H,MAAV,CAAiBC,UADf;AAEjBlF,EAAAA,KAAK,EAAE7C,sBAAU8H,MAAV,CAAiBC,UAFP;AAGjBC,EAAAA,gBAAgB,EAAEhI,sBAAUC,IAHX;AAIjB2C,EAAAA,cAAc,EAAE5C,sBAAUE,IAAV,CAAe6H,UAJd;AAKjBjC,EAAAA,sBAAsB,EAAE9F,sBAAUE,IAAV,CAAe6H,UALtB;AAMjBnC,EAAAA,OAAO,EAAE5F,sBAAU8H,MAAV,CAAiBC,UANT;AAOjBhC,EAAAA,YAAY,EAAE/F,sBAAUiI,KAAV,CAAgB;AAC5BC,IAAAA,GAAG,EAAElI,sBAAUE,IAAV,CAAe6H,UADQ;AAE5B,cAAQ/H,sBAAUE,IAAV,CAAe6H;AAFK,GAAhB;AAPG,C;AA2YrB,IAAMI,MAAM,GAAG,wBAAW/H,MAAX,EAAmBoC,IAAnB,CAAf;eAEe2F,M","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport EditableHtml, { ALL_PLUGINS } from '@pie-lib/editable-html';\nimport { InputContainer, layout, settings } from '@pie-lib/config-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEqual from 'lodash/isEqual';\nimport isUndefined from 'lodash/isUndefined';\nimport isEmpty from 'lodash/isEmpty';\nimport reduce from 'lodash/reduce';\nimport { withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Typography from '@material-ui/core/Typography';\n\nimport InlineDropdownToolbar from './inline-dropdown-toolbar';\nimport max from 'lodash/max';\n\nconst { toggle, Panel } = settings;\n\nconst InfoDialog = ({ open, onCancel, onOk, title }) => (\n <Dialog open={open}>\n <DialogTitle>{title}</DialogTitle>\n <DialogActions>\n {onOk && (\n <Button onClick={onOk} color=\"primary\">\n OK\n </Button>\n )}\n {onCancel && (\n <Button onClick={onCancel} color=\"primary\">\n Cancel\n </Button>\n )}\n </DialogActions>\n </Dialog>\n);\n\nInfoDialog.propTypes = {\n open: PropTypes.bool,\n onCancel: PropTypes.func,\n onOk: PropTypes.func,\n title: PropTypes.string\n};\n\nconst styles = theme => ({\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%'\n },\n markup: {\n minHeight: '100px',\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n '& [data-slate-editor=\"true\"]': {\n minHeight: '100px'\n }\n },\n design: {\n paddingTop: theme.spacing.unit * 3\n },\n choiceConfiguration: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2\n },\n switchElement: {\n justifyContent: 'space-between',\n margin: 0\n },\n addButton: {\n float: 'right'\n },\n text: {\n fontFamily: 'Cerebri Sans',\n fontSize: '16px',\n lineHeight: '19px',\n color: '#495B8F'\n }\n});\n\nconst createElementFromHTML = htmlString => {\n const div = document.createElement('div');\n\n div.innerHTML = (htmlString || '').trim();\n\n return div;\n};\n\nconst prepareVal = html => {\n const tmp = document.createElement('DIV');\n\n tmp.innerHTML = html;\n\n const value = tmp.textContent || tmp.innerText || '';\n\n return value.trim();\n};\n\nexport class Main extends React.Component {\n static propTypes = {\n configuration: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n disableSidePanel: PropTypes.bool,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired\n })\n };\n\n state = {\n dialog: {\n open: false\n }\n };\n\n componentDidMount() {\n const {\n model: { choices }\n } = this.props;\n\n this.setState({ respAreaChoices: cloneDeep(choices) });\n }\n\n UNSAFE_componentWillReceiveProps(nProps) {\n const newState = {};\n\n if (\n !isEqual(nProps.model.choices, this.props.model.choices) ||\n !isEqual(nProps.model.choices, this.state.respAreaChoices)\n ) {\n newState.respAreaChoices = cloneDeep(nProps.model.choices);\n }\n\n if (!isEmpty(newState)) {\n this.setState(newState);\n }\n }\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n onModelChange = newVal => {\n this.props.onModelChanged({\n ...this.props.model,\n ...newVal\n });\n };\n\n onPromptChanged = prompt => {\n this.onModelChange({ prompt });\n };\n\n onRationaleChanged = rationale => {\n this.onModelChange({ rationale });\n };\n\n onTeacherInstructionsChanged = teacherInstructions => {\n this.onModelChange({ teacherInstructions });\n };\n\n onMarkupChanged = slateMarkup => {\n this.onModelChange({ slateMarkup });\n };\n\n onCheck = callback => {\n this.setState({\n dialog: {\n open: true,\n message:\n 'Response areas with under 2 options or with no correct answers will be discarded',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false\n }\n },\n callback\n );\n },\n onCancel: () =>\n this.setState({\n dialog: {\n open: false\n }\n })\n }\n });\n };\n\n onChange = markup => {\n const { respAreaChoices } = this.state;\n const domMarkup = createElementFromHTML(markup);\n const allRespAreas = domMarkup.querySelectorAll(\n '[data-type=\"inline_dropdown\"]'\n );\n\n const allChoices = {};\n\n allRespAreas.forEach(el => {\n allChoices[el.dataset.index] = el.dataset.value || '';\n });\n\n const existingRespAreaChoices = reduce(\n respAreaChoices,\n (obj, choices, key) => {\n if (!isUndefined(allChoices[key])) {\n obj[key] = respAreaChoices[key];\n }\n\n return obj;\n },\n {}\n );\n\n const newRespAreaChoices = {};\n let shouldWarn = false;\n\n allRespAreas.forEach((el, index) => {\n const newChoices = existingRespAreaChoices[el.dataset.index] || [];\n\n if (newChoices.length < 2 || !newChoices.find(c => c.correct)) {\n el.remove();\n shouldWarn = true;\n } else {\n newRespAreaChoices[index] =\n existingRespAreaChoices[el.dataset.index] || [];\n el.dataset.index = index;\n }\n });\n\n if (shouldWarn) {\n this.setState({\n dialog: {\n open: true,\n message:\n 'Response areas with under 2 options or with no correct answers will be discarded',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false\n }\n },\n () =>\n this.onModelChange({\n choices: cloneDeep(newRespAreaChoices),\n slateMarkup: domMarkup.innerHTML\n })\n );\n },\n onCancel: () =>\n this.setState({\n dialog: {\n open: false\n }\n })\n }\n });\n } else {\n this.onModelChange({\n choices: cloneDeep(newRespAreaChoices),\n slateMarkup: domMarkup.innerHTML\n });\n }\n };\n\n onAddChoice = (index, label) => {\n const { respAreaChoices } = this.state;\n\n if (!respAreaChoices[index]) {\n respAreaChoices[index] = [];\n }\n\n if (\n (respAreaChoices[index] || []).find(\n r => prepareVal(r.label) === prepareVal(label)\n )\n ) {\n this.setState({\n dialog: {\n open: true,\n message: 'Duplicate answers are not allowed.',\n onOk: () => {\n this.setState({\n dialog: {\n open: false\n }\n });\n }\n }\n });\n\n return;\n }\n\n const value = (respAreaChoices[index] && max(respAreaChoices[index].map(c => parseInt(c.value)).filter(val => !isNaN(val)))) || 0;\n\n respAreaChoices[index].push({\n label,\n value: `${value + 1}`,\n correct: false\n });\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n onRemoveChoice = (respIndex, index) => {\n const { respAreaChoices } = this.state;\n\n respAreaChoices[respIndex].splice(index, 1);\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n onSelectChoice = (respIndex, selectedIndex) => {\n const { respAreaChoices } = this.state;\n\n respAreaChoices[respIndex] = respAreaChoices[respIndex].map(\n (ch, index) => ({ ...ch, correct: index === selectedIndex })\n );\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n render() {\n const { dialog } = this.state;\n const {\n classes,\n model,\n configuration,\n onConfigurationChanged,\n imageSupport\n } = this.props;\n const {\n prompt = {},\n partialScoring = {},\n lockChoiceOrder = {},\n rationale = {},\n teacherInstructions = {}\n } = configuration || {};\n const { rationaleEnabled, promptEnabled, teacherInstructionsEnabled } =\n model || {};\n\n const toolbarOpts = {};\n\n switch (model.toolbarEditorPosition) {\n case 'top':\n toolbarOpts.position = 'top';\n break;\n default:\n toolbarOpts.position = 'bottom';\n break;\n }\n\n return (\n <div className={classes.design}>\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={model => this.onModelChange(model)}\n onChangeConfiguration={configuration =>\n onConfigurationChanged(configuration, true)\n }\n groups={{\n Settings: {\n partialScoring:\n partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder:\n lockChoiceOrder.settings && toggle(lockChoiceOrder.label)\n },\n Properties: {\n teacherInstructionsEnabled:\n teacherInstructions.settings &&\n toggle(teacherInstructions.label),\n rationaleEnabled:\n rationale.settings && toggle(rationale.label),\n promptEnabled: prompt.settings && toggle(prompt.label)\n }\n }}\n />\n }\n >\n <div>\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.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\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.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer\n label={rationale.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChanged}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n />\n </InputContainer>\n )}\n\n <Typography className={classes.text}>\n Define Template, Choices, and Correct Responses\n </Typography>\n <InfoDialog\n open={dialog.open}\n title={dialog.message}\n onCancel={dialog.onCancel}\n onOk={dialog.onOk}\n />\n <EditableHtml\n activePlugins={ALL_PLUGINS}\n toolbarOpts={{ position: 'top' }}\n responseAreaProps={{\n type: 'inline-dropdown',\n options: {\n duplicates: true\n },\n respAreaToolbar: (node, value, onToolbarDone) => {\n const { respAreaChoices } = this.state;\n\n return () => (\n <InlineDropdownToolbar\n onAddChoice={this.onAddChoice}\n onCheck={this.onCheck}\n onRemoveChoice={index =>\n this.onRemoveChoice(node.data.get('index'), index)\n }\n onSelectChoice={index =>\n this.onSelectChoice(node.data.get('index'), index)\n }\n node={node}\n value={value}\n onToolbarDone={onToolbarDone}\n choices={respAreaChoices[node.data.get('index')]}\n />\n );\n }\n }}\n className={classes.markup}\n markup={model.slateMarkup || ''}\n onChange={this.onChange}\n imageSupport={imageSupport}\n onBlur={this.onBlur}\n disabled={false}\n highlightShape={false}\n />\n </div>\n </layout.ConfigLayout>\n </div>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"main.js"}
1
+ {"version":3,"sources":["../src/main.jsx"],"names":["toggle","settings","Panel","InfoDialog","open","onCancel","onOk","title","propTypes","PropTypes","bool","func","string","styles","theme","promptHolder","width","paddingBottom","spacing","unit","marginBottom","prompt","paddingTop","markup","minHeight","design","choiceConfiguration","switchElement","justifyContent","margin","addButton","text","fontFamily","fontSize","lineHeight","color","createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","prepareVal","html","tmp","value","textContent","innerText","Main","dialog","newVal","props","onModelChanged","model","onModelChange","rationale","teacherInstructions","slateMarkup","callback","setState","message","respAreaChoices","state","domMarkup","allRespAreas","querySelectorAll","allChoices","forEach","el","dataset","index","existingRespAreaChoices","obj","choices","key","newRespAreaChoices","shouldWarn","newChoices","length","find","c","correct","remove","label","r","map","parseInt","filter","val","isNaN","push","respIndex","splice","selectedIndex","ch","nProps","newState","domNode","ReactDOM","findDOMNode","classes","configuration","onConfigurationChanged","imageSupport","partialScoring","lockChoiceOrder","rationaleEnabled","promptEnabled","teacherInstructionsEnabled","toolbarOpts","toolbarEditorPosition","position","Settings","Properties","onTeacherInstructionsChanged","onPromptChanged","onRationaleChanged","ALL_PLUGINS","type","options","duplicates","respAreaToolbar","node","onToolbarDone","onAddChoice","onCheck","onRemoveChoice","data","get","onSelectChoice","onChange","onBlur","React","Component","object","isRequired","disableSidePanel","shape","add","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport EditableHtml, { ALL_PLUGINS } from '@pie-lib/editable-html';\nimport { InputContainer, layout, settings } from '@pie-lib/config-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEqual from 'lodash/isEqual';\nimport isUndefined from 'lodash/isUndefined';\nimport isEmpty from 'lodash/isEmpty';\nimport reduce from 'lodash/reduce';\nimport { withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Typography from '@material-ui/core/Typography';\n\nimport InlineDropdownToolbar from './inline-dropdown-toolbar';\nimport max from 'lodash/max';\n\nconst { toggle, Panel } = settings;\n\nconst InfoDialog = ({ open, onCancel, onOk, title }) => (\n <Dialog open={open}>\n <DialogTitle>{title}</DialogTitle>\n <DialogActions>\n {onOk && (\n <Button onClick={onOk} color=\"primary\">\n OK\n </Button>\n )}\n {onCancel && (\n <Button onClick={onCancel} color=\"primary\">\n Cancel\n </Button>\n )}\n </DialogActions>\n </Dialog>\n);\n\nInfoDialog.propTypes = {\n open: PropTypes.bool,\n onCancel: PropTypes.func,\n onOk: PropTypes.func,\n title: PropTypes.string\n};\n\nconst styles = theme => ({\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%'\n },\n markup: {\n minHeight: '100px',\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n '& [data-slate-editor=\"true\"]': {\n minHeight: '100px'\n }\n },\n design: {\n paddingTop: theme.spacing.unit * 3\n },\n choiceConfiguration: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2\n },\n switchElement: {\n justifyContent: 'space-between',\n margin: 0\n },\n addButton: {\n float: 'right'\n },\n text: {\n fontFamily: 'Cerebri Sans',\n fontSize: '16px',\n lineHeight: '19px',\n color: '#495B8F'\n }\n});\n\nconst createElementFromHTML = htmlString => {\n const div = document.createElement('div');\n\n div.innerHTML = (htmlString || '').trim();\n\n return div;\n};\n\nconst prepareVal = html => {\n const tmp = document.createElement('DIV');\n\n tmp.innerHTML = html;\n\n const value = tmp.textContent || tmp.innerText || '';\n\n return value.trim();\n};\n\nexport class Main extends React.Component {\n static propTypes = {\n configuration: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n disableSidePanel: PropTypes.bool,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired\n })\n };\n\n state = {\n dialog: {\n open: false\n }\n };\n\n componentDidMount() {\n const {\n model: { choices }\n } = this.props;\n\n this.setState({ respAreaChoices: cloneDeep(choices) });\n }\n\n UNSAFE_componentWillReceiveProps(nProps) {\n const newState = {};\n\n if (\n !isEqual(nProps.model.choices, this.props.model.choices) ||\n !isEqual(nProps.model.choices, this.state.respAreaChoices)\n ) {\n newState.respAreaChoices = cloneDeep(nProps.model.choices);\n }\n\n if (!isEmpty(newState)) {\n this.setState(newState);\n }\n }\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n onModelChange = newVal => {\n this.props.onModelChanged({\n ...this.props.model,\n ...newVal\n });\n };\n\n onPromptChanged = prompt => {\n this.onModelChange({ prompt });\n };\n\n onRationaleChanged = rationale => {\n this.onModelChange({ rationale });\n };\n\n onTeacherInstructionsChanged = teacherInstructions => {\n this.onModelChange({ teacherInstructions });\n };\n\n onMarkupChanged = slateMarkup => {\n this.onModelChange({ slateMarkup });\n };\n\n onCheck = callback => {\n this.setState({\n dialog: {\n open: true,\n message:\n 'Response areas with under 2 options or with no correct answers will be discarded',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false\n }\n },\n callback\n );\n },\n onCancel: () =>\n this.setState({\n dialog: {\n open: false\n }\n })\n }\n });\n };\n\n onChange = markup => {\n const { respAreaChoices } = this.state;\n const domMarkup = createElementFromHTML(markup);\n const allRespAreas = domMarkup.querySelectorAll(\n '[data-type=\"inline_dropdown\"]'\n );\n\n const allChoices = {};\n\n allRespAreas.forEach(el => {\n allChoices[el.dataset.index] = el.dataset.value || '';\n });\n\n const existingRespAreaChoices = reduce(\n respAreaChoices,\n (obj, choices, key) => {\n if (!isUndefined(allChoices[key])) {\n obj[key] = respAreaChoices[key];\n }\n\n return obj;\n },\n {}\n );\n\n const newRespAreaChoices = {};\n let shouldWarn = false;\n\n allRespAreas.forEach((el, index) => {\n const newChoices = existingRespAreaChoices[el.dataset.index] || [];\n\n if (newChoices.length < 2 || !newChoices.find(c => c.correct)) {\n el.remove();\n shouldWarn = true;\n } else {\n newRespAreaChoices[index] =\n existingRespAreaChoices[el.dataset.index] || [];\n el.dataset.index = index;\n }\n });\n\n if (shouldWarn) {\n this.setState({\n dialog: {\n open: true,\n message:\n 'Response areas with under 2 options or with no correct answers will be discarded',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false\n }\n },\n () =>\n this.onModelChange({\n choices: cloneDeep(newRespAreaChoices),\n slateMarkup: domMarkup.innerHTML\n })\n );\n },\n onCancel: () =>\n this.setState({\n dialog: {\n open: false\n }\n })\n }\n });\n } else {\n this.onModelChange({\n choices: cloneDeep(newRespAreaChoices),\n slateMarkup: domMarkup.innerHTML\n });\n }\n };\n\n onAddChoice = (index, label) => {\n const { respAreaChoices } = this.state;\n\n if (!respAreaChoices[index]) {\n respAreaChoices[index] = [];\n }\n\n if (\n (respAreaChoices[index] || []).find(\n r => prepareVal(r.label) === prepareVal(label)\n )\n ) {\n this.setState({\n dialog: {\n open: true,\n message: 'Duplicate answers are not allowed.',\n onOk: () => {\n this.setState({\n dialog: {\n open: false\n }\n });\n }\n }\n });\n\n return;\n }\n\n const value = (respAreaChoices[index] && max(respAreaChoices[index].map(c => parseInt(c.value)).filter(val => !isNaN(val)))) || 0;\n\n respAreaChoices[index].push({\n label,\n value: `${value + 1}`,\n correct: false\n });\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n onRemoveChoice = (respIndex, index) => {\n const { respAreaChoices } = this.state;\n\n respAreaChoices[respIndex].splice(index, 1);\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n onSelectChoice = (respIndex, selectedIndex) => {\n const { respAreaChoices } = this.state;\n\n respAreaChoices[respIndex] = respAreaChoices[respIndex].map(\n (ch, index) => ({ ...ch, correct: index === selectedIndex })\n );\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n render() {\n const { dialog } = this.state;\n const {\n classes,\n model,\n configuration,\n onConfigurationChanged,\n imageSupport\n } = this.props;\n const {\n prompt = {},\n partialScoring = {},\n lockChoiceOrder = {},\n rationale = {},\n teacherInstructions = {}\n } = configuration || {};\n const { rationaleEnabled, promptEnabled, teacherInstructionsEnabled } =\n model || {};\n\n const toolbarOpts = {};\n\n switch (model.toolbarEditorPosition) {\n case 'top':\n toolbarOpts.position = 'top';\n break;\n default:\n toolbarOpts.position = 'bottom';\n break;\n }\n\n return (\n <div className={classes.design}>\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={model => this.onModelChange(model)}\n onChangeConfiguration={configuration =>\n onConfigurationChanged(configuration, true)\n }\n groups={{\n Settings: {\n partialScoring:\n partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder:\n lockChoiceOrder.settings && toggle(lockChoiceOrder.label)\n },\n Properties: {\n teacherInstructionsEnabled:\n teacherInstructions.settings &&\n toggle(teacherInstructions.label),\n rationaleEnabled:\n rationale.settings && toggle(rationale.label),\n promptEnabled: prompt.settings && toggle(prompt.label)\n }\n }}\n />\n }\n >\n <div>\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.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\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.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer\n label={rationale.label}\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChanged}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n />\n </InputContainer>\n )}\n\n <Typography className={classes.text}>\n Define Template, Choices, and Correct Responses\n </Typography>\n <InfoDialog\n open={dialog.open}\n title={dialog.message}\n onCancel={dialog.onCancel}\n onOk={dialog.onOk}\n />\n <EditableHtml\n activePlugins={ALL_PLUGINS}\n toolbarOpts={{ position: 'top' }}\n responseAreaProps={{\n type: 'inline-dropdown',\n options: {\n duplicates: true\n },\n respAreaToolbar: (node, value, onToolbarDone) => {\n const { respAreaChoices } = this.state;\n\n return () => (\n <InlineDropdownToolbar\n onAddChoice={this.onAddChoice}\n onCheck={this.onCheck}\n onRemoveChoice={index =>\n this.onRemoveChoice(node.data.get('index'), index)\n }\n onSelectChoice={index =>\n this.onSelectChoice(node.data.get('index'), index)\n }\n node={node}\n value={value}\n onToolbarDone={onToolbarDone}\n choices={respAreaChoices[node.data.get('index')]}\n />\n );\n }\n }}\n className={classes.markup}\n markup={model.slateMarkup || ''}\n onChange={this.onChange}\n imageSupport={imageSupport}\n onBlur={this.onBlur}\n disabled={false}\n highlightShape={false}\n />\n </div>\n </layout.ConfigLayout>\n </div>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"main.js"}
@@ -25,7 +25,7 @@ var _controllerUtils = require("@pie-lib/controller-utils");
25
25
 
26
26
  var _utils = require("./utils");
27
27
 
28
- 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; }
28
+ 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; }
29
29
 
30
30
  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; }
31
31
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["getFeedback","correct","normalize","question","promptEnabled","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","model","session","env","updateSession","Promise","resolve","normalizedQuestion","value","choices","obj","area","key","choice","feedback","mode","allCorrectResponses","respAreaLength","Object","keys","length","correctResponses","i","result","answer","correctChoice","isCorrect","lockChoiceOrder","teacherInstructions","rationale","role","out","disabled","prompt","markup","responseCorrect","getScore","undefined","config","maxScore","correctCount","total","str","toFixed","parseFloat","outcome","score","empty","partialScoringEnabled","partialScoring","enabled","Math","floor","createCorrectResponseSession","forEach","correctChoices","filter","c","id"],"mappings":"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","sourcesContent":["import map from 'lodash/map';\nimport reduce from 'lodash/reduce';\nimport isEmpty from 'lodash/isEmpty';\nimport {\n lockChoices,\n getShuffledChoices,\n partialScoring,\n} from '@pie-lib/controller-utils';\n\nimport { getAllCorrectResponses } from './utils';\n\nconst getFeedback = (correct) => {\n if (correct) {\n return 'correct';\n }\n\n return 'incorrect';\n};\n\nexport const normalize = (question) => ({\n promptEnabled: true,\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n ...question,\n});\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport function model(question, session, env, updateSession) {\n return new Promise(async (resolve) => {\n const normalizedQuestion = normalize(question);\n const { value = {} } = session || {};\n let choices = reduce(\n normalizedQuestion.choices,\n (obj, area, key) => {\n obj[key] = map(area, (choice) => choice);\n\n return obj;\n },\n {}\n );\n\n let feedback = {};\n\n if (env.mode === 'evaluate') {\n const allCorrectResponses = getAllCorrectResponses(normalizedQuestion);\n const respAreaLength = Object.keys(allCorrectResponses).length;\n let correctResponses = 0;\n\n for (let i = 0; i < respAreaLength; i++) {\n const result = reduce(\n allCorrectResponses,\n (obj, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n const isCorrect =\n answer && correctChoice && correctChoice === answer;\n\n obj.feedback[key] = getFeedback(isCorrect);\n\n if (isCorrect) {\n obj.correctResponses += 1;\n }\n\n return obj;\n },\n { correctResponses: 0, feedback: {} }\n );\n\n if (result.correctResponses >= correctResponses) {\n correctResponses = result.correctResponses;\n feedback = result.feedback;\n }\n\n if (result.correctResponses === respAreaLength) {\n break;\n }\n }\n }\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n if (!lockChoiceOrder) {\n const keys = Object.keys(choices);\n let i;\n\n for (i = 0; i < keys.length; i++) {\n const key = keys[i];\n\n choices[key] = await getShuffledChoices(\n choices[key],\n session,\n updateSession,\n 'value'\n );\n }\n }\n\n let teacherInstructions = null;\n let rationale = null;\n\n if (\n env.role === 'instructor' &&\n (env.mode === 'view' || env.mode === 'evaluate')\n ) {\n rationale = normalizedQuestion.rationaleEnabled\n ? normalizedQuestion.rationale\n : null;\n teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n rationale = null;\n teacherInstructions = null;\n }\n\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n prompt: normalizedQuestion.promptEnabled\n ? normalizedQuestion.prompt\n : null,\n markup: normalizedQuestion.markup,\n choices,\n feedback,\n\n responseCorrect:\n env.mode === 'evaluate'\n ? getScore(normalizedQuestion, session) === 1\n : undefined,\n rationale,\n teacherInstructions,\n };\n\n resolve(out);\n });\n}\n\nexport const getScore = (config, session) => {\n const { value = {} } = session || {};\n const maxScore =\n config && config.choices ? Object.keys(config.choices).length : 0;\n const allCorrectResponses = getAllCorrectResponses(config);\n let correctCount = 0;\n\n for (let i = 0; i < maxScore; i++) {\n const result = reduce(\n allCorrectResponses,\n (total, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n\n if (correctChoice && answer && correctChoice === answer) {\n return total;\n }\n\n return total - 1;\n },\n maxScore\n );\n\n if (result > correctCount) {\n correctCount = result;\n }\n\n if (result === maxScore) {\n break;\n }\n }\n\n const str = (correctCount / maxScore).toFixed(2);\n\n return parseFloat(str);\n};\n\n/**\n *\n * The score is partial by default for checkbox mode, allOrNothing for radio mode.\n * To disable partial scoring for checkbox mode you either set model.partialScoring = false or env.partialScoring =\n * false. the value in `env` will override the value in `model`.\n * @param {Object} model - the main model\n * @param {boolean} model.partialScoring - is partial scoring enabled (if undefined set to to true)\n * @param {*} session\n * @param {Object} env\n * @param {boolean} env.partialScoring - is partial scoring enabled (if undefined default to true) This overrides\n * `model.partialScoring`.\n */\nexport function outcome(model, session, env = {}) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n const partialScoringEnabled = partialScoring.enabled(model, env);\n const score = getScore(model, session);\n\n resolve({\n score: partialScoringEnabled ? score : Math.floor(score),\n empty: false,\n });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { choices } = question;\n const value = {};\n\n if (choices) {\n Object.keys(choices).forEach((key, i) => {\n const correctChoices =\n choices[key] && choices[key].filter((c) => c.correct);\n\n value[i] = correctChoices && correctChoices[0].value;\n });\n }\n\n resolve({\n id: '1',\n value,\n });\n } else {\n resolve(null);\n }\n });\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["getFeedback","correct","normalize","question","promptEnabled","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","model","session","env","updateSession","Promise","resolve","normalizedQuestion","value","choices","obj","area","key","choice","feedback","mode","allCorrectResponses","respAreaLength","Object","keys","length","correctResponses","i","result","answer","correctChoice","isCorrect","lockChoiceOrder","teacherInstructions","rationale","role","out","disabled","prompt","markup","responseCorrect","getScore","undefined","config","maxScore","correctCount","total","str","toFixed","parseFloat","outcome","score","empty","partialScoringEnabled","partialScoring","enabled","Math","floor","createCorrectResponseSession","forEach","correctChoices","filter","c","id"],"mappings":"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","sourcesContent":["import map from 'lodash/map';\nimport reduce from 'lodash/reduce';\nimport isEmpty from 'lodash/isEmpty';\nimport {\n lockChoices,\n getShuffledChoices,\n partialScoring,\n} from '@pie-lib/controller-utils';\n\nimport { getAllCorrectResponses } from './utils';\n\nconst getFeedback = (correct) => {\n if (correct) {\n return 'correct';\n }\n\n return 'incorrect';\n};\n\nexport const normalize = (question) => ({\n promptEnabled: true,\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n ...question,\n});\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport function model(question, session, env, updateSession) {\n return new Promise(async (resolve) => {\n const normalizedQuestion = normalize(question);\n const { value = {} } = session || {};\n let choices = reduce(\n normalizedQuestion.choices,\n (obj, area, key) => {\n obj[key] = map(area, (choice) => choice);\n\n return obj;\n },\n {}\n );\n\n let feedback = {};\n\n if (env.mode === 'evaluate') {\n const allCorrectResponses = getAllCorrectResponses(normalizedQuestion);\n const respAreaLength = Object.keys(allCorrectResponses).length;\n let correctResponses = 0;\n\n for (let i = 0; i < respAreaLength; i++) {\n const result = reduce(\n allCorrectResponses,\n (obj, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n const isCorrect =\n answer && correctChoice && correctChoice === answer;\n\n obj.feedback[key] = getFeedback(isCorrect);\n\n if (isCorrect) {\n obj.correctResponses += 1;\n }\n\n return obj;\n },\n { correctResponses: 0, feedback: {} }\n );\n\n if (result.correctResponses >= correctResponses) {\n correctResponses = result.correctResponses;\n feedback = result.feedback;\n }\n\n if (result.correctResponses === respAreaLength) {\n break;\n }\n }\n }\n\n const lockChoiceOrder = lockChoices(normalizedQuestion, session, env);\n\n if (!lockChoiceOrder) {\n const keys = Object.keys(choices);\n let i;\n\n for (i = 0; i < keys.length; i++) {\n const key = keys[i];\n\n choices[key] = await getShuffledChoices(\n choices[key],\n session,\n updateSession,\n 'value'\n );\n }\n }\n\n let teacherInstructions = null;\n let rationale = null;\n\n if (\n env.role === 'instructor' &&\n (env.mode === 'view' || env.mode === 'evaluate')\n ) {\n rationale = normalizedQuestion.rationaleEnabled\n ? normalizedQuestion.rationale\n : null;\n teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n rationale = null;\n teacherInstructions = null;\n }\n\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n prompt: normalizedQuestion.promptEnabled\n ? normalizedQuestion.prompt\n : null,\n markup: normalizedQuestion.markup,\n choices,\n feedback,\n\n responseCorrect:\n env.mode === 'evaluate'\n ? getScore(normalizedQuestion, session) === 1\n : undefined,\n rationale,\n teacherInstructions,\n };\n\n resolve(out);\n });\n}\n\nexport const getScore = (config, session) => {\n const { value = {} } = session || {};\n const maxScore =\n config && config.choices ? Object.keys(config.choices).length : 0;\n const allCorrectResponses = getAllCorrectResponses(config);\n let correctCount = 0;\n\n for (let i = 0; i < maxScore; i++) {\n const result = reduce(\n allCorrectResponses,\n (total, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n\n if (correctChoice && answer && correctChoice === answer) {\n return total;\n }\n\n return total - 1;\n },\n maxScore\n );\n\n if (result > correctCount) {\n correctCount = result;\n }\n\n if (result === maxScore) {\n break;\n }\n }\n\n const str = (correctCount / maxScore).toFixed(2);\n\n return parseFloat(str);\n};\n\n/**\n *\n * The score is partial by default for checkbox mode, allOrNothing for radio mode.\n * To disable partial scoring for checkbox mode you either set model.partialScoring = false or env.partialScoring =\n * false. the value in `env` will override the value in `model`.\n * @param {Object} model - the main model\n * @param {boolean} model.partialScoring - is partial scoring enabled (if undefined set to to true)\n * @param {*} session\n * @param {Object} env\n * @param {boolean} env.partialScoring - is partial scoring enabled (if undefined default to true) This overrides\n * `model.partialScoring`.\n */\nexport function outcome(model, session, env = {}) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ score: 0, empty: true });\n }\n\n const partialScoringEnabled = partialScoring.enabled(model, env);\n const score = getScore(model, session);\n\n resolve({\n score: partialScoringEnabled ? score : Math.floor(score),\n empty: false,\n });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { choices } = question;\n const value = {};\n\n if (choices) {\n Object.keys(choices).forEach((key, i) => {\n const correctChoices =\n choices[key] && choices[key].filter((c) => c.correct);\n\n value[i] = correctChoices && correctChoices[0].value;\n });\n }\n\n resolve({\n id: '1',\n value,\n });\n } else {\n resolve(null);\n }\n });\n};\n"],"file":"index.js"}
package/lib/index.js CHANGED
@@ -35,7 +35,7 @@ var _inlineDropdown = _interopRequireDefault(require("./inline-dropdown"));
35
35
 
36
36
  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); }; }
37
37
 
38
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
38
+ 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; } }
39
39
 
40
40
  var RootInlineDropdown = /*#__PURE__*/function (_HTMLElement) {
41
41
  (0, _inherits2["default"])(RootInlineDropdown, _HTMLElement);
@@ -43,7 +43,7 @@ var _styles = require("@material-ui/core/styles");
43
43
 
44
44
  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); }; }
45
45
 
46
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
46
+ 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; } }
47
47
 
48
48
  var InlineDropdown = /*#__PURE__*/function (_React$Component) {
49
49
  (0, _inherits2["default"])(InlineDropdown, _React$Component);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/inline-dropdown.jsx"],"names":["InlineDropdown","showCorrectAnswer","setState","state","nextProps","feedback","domNode","ReactDOM","findDOMNode","props","classes","prompt","mode","rationale","teacherInstructions","showCorrectAnswerToggle","mainContainer","hidden","visible","__html","toggleShowCorrect","React","Component","PropTypes","object","string","disabled","bool","markup","choices","value","onChange","func","styles","theme","color","text","backgroundColor","background","padding","spacing","unit"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport isEmpty from 'lodash/isEmpty';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { InlineDropdown as DropDown } from '@pie-lib/mask-markup';\nimport { color, Collapsible, hasText } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { withStyles } from '@material-ui/core/styles';\n\nexport class InlineDropdown extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n prompt: PropTypes.string,\n disabled: PropTypes.bool,\n markup: PropTypes.string,\n mode: PropTypes.string,\n rationale: PropTypes.string,\n teacherInstructions: PropTypes.string,\n choices: 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 UNSAFE_componentWillReceiveProps(nextProps) {\n if (isEmpty(nextProps.feedback)) {\n this.setState({ showCorrectAnswer: false });\n }\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 { classes, prompt, mode, rationale, teacherInstructions } = this.props;\n const showCorrectAnswerToggle = mode === 'evaluate';\n\n return (\n <div className={classes.mainContainer}>\n {\n teacherInstructions && hasText(teacherInstructions) && (\n <React.Fragment>\n <Collapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n >\n <div dangerouslySetInnerHTML={{ __html: teacherInstructions }}/>\n </Collapsible>\n <br />\n </React.Fragment>\n )\n }\n\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n />\n {showCorrectAnswerToggle && <br />}\n\n {prompt && (\n <React.Fragment>\n <div dangerouslySetInnerHTML={{ __html: prompt }}/>\n <br />\n </React.Fragment>\n )}\n {\n rationale && hasText(rationale) && (\n <Collapsible\n labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}\n >\n <div dangerouslySetInnerHTML={{ __html: rationale }}/>\n </Collapsible>\n )\n }\n <DropDown\n {...this.props}\n showCorrectAnswer={showCorrectAnswer}\n />\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n padding: theme.spacing.unit\n }\n});\n\nexport default withStyles(styles)(InlineDropdown);\n"],"file":"inline-dropdown.js"}
1
+ {"version":3,"sources":["../src/inline-dropdown.jsx"],"names":["InlineDropdown","showCorrectAnswer","setState","state","nextProps","feedback","domNode","ReactDOM","findDOMNode","props","classes","prompt","mode","rationale","teacherInstructions","showCorrectAnswerToggle","mainContainer","hidden","visible","__html","toggleShowCorrect","React","Component","PropTypes","object","string","disabled","bool","markup","choices","value","onChange","func","styles","theme","color","text","backgroundColor","background","padding","spacing","unit"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;IAEaA,c;;;;;;;;;;;;;;;8FAmBH;AACNC,MAAAA,iBAAiB,EAAE;AADb,K;0GAiBY,YAAM;AACxB,YAAKC,QAAL,CAAc;AAAED,QAAAA,iBAAiB,EAAE,CAAC,MAAKE,KAAL,CAAWF;AAAjC,OAAd;AACD,K;;;;;;WAfD,0CAAiCG,SAAjC,EAA4C;AAC1C,UAAI,yBAAQA,SAAS,CAACC,QAAlB,CAAJ,EAAiC;AAC/B,aAAKH,QAAL,CAAc;AAAED,UAAAA,iBAAiB,EAAE;AAArB,SAAd;AACD;AACF;;;WAED,8BAAqB;AACnB;AACA,UAAMK,OAAO,GAAGC,qBAASC,WAAT,CAAqB,IAArB,CAAhB;;AAEA,qCAAWF,OAAX;AACD;;;WAMD,kBAAS;AACP,UAAQL,iBAAR,GAA8B,KAAKE,KAAnC,CAAQF,iBAAR;AACA,wBAAkE,KAAKQ,KAAvE;AAAA,UAAQC,OAAR,eAAQA,OAAR;AAAA,UAAiBC,MAAjB,eAAiBA,MAAjB;AAAA,UAAyBC,IAAzB,eAAyBA,IAAzB;AAAA,UAA+BC,SAA/B,eAA+BA,SAA/B;AAAA,UAA0CC,mBAA1C,eAA0CA,mBAA1C;AACA,UAAMC,uBAAuB,GAAGH,IAAI,KAAK,UAAzC;AAEA,0BACE;AAAK,QAAA,SAAS,EAAEF,OAAO,CAACM;AAAxB,SAEIF,mBAAmB,IAAI,uBAAQA,mBAAR,CAAvB,iBACE,gCAAC,iBAAD,CAAO,QAAP,qBACE,gCAAC,qBAAD;AACE,QAAA,MAAM,EAAE;AAAEG,UAAAA,MAAM,EAAE,2BAAV;AAAuCC,UAAAA,OAAO,EAAE;AAAhD;AADV,sBAGE;AAAK,QAAA,uBAAuB,EAAE;AAAEC,UAAAA,MAAM,EAAEL;AAAV;AAA9B,QAHF,CADF,eAME,2CANF,CAHN,eAcE,gCAAC,+BAAD;AACE,QAAA,IAAI,EAAEC,uBADR;AAEE,QAAA,OAAO,EAAEd,iBAFX;AAGE,QAAA,QAAQ,EAAE,KAAKmB;AAHjB,QAdF,EAmBGL,uBAAuB,iBAAI,2CAnB9B,EAqBGJ,MAAM,iBACL,gCAAC,iBAAD,CAAO,QAAP,qBACE;AAAK,QAAA,uBAAuB,EAAE;AAAEQ,UAAAA,MAAM,EAAER;AAAV;AAA9B,QADF,eAEE,2CAFF,CAtBJ,EA4BIE,SAAS,IAAI,uBAAQA,SAAR,CAAb,iBACE,gCAAC,qBAAD;AACE,QAAA,MAAM,EAAE;AAAEI,UAAAA,MAAM,EAAE,gBAAV;AAA4BC,UAAAA,OAAO,EAAE;AAArC;AADV,sBAGE;AAAK,QAAA,uBAAuB,EAAE;AAAEC,UAAAA,MAAM,EAAEN;AAAV;AAA9B,QAHF,CA7BN,eAoCE,gCAAC,0BAAD,gCACM,KAAKJ,KADX;AAEE,QAAA,iBAAiB,EAAER;AAFrB,SApCF,CADF;AA2CD;;;EAxFiCoB,kBAAMC,S;;;iCAA7BtB,c,eACQ;AACjBU,EAAAA,OAAO,EAAEa,sBAAUC,MADF;AAEjBb,EAAAA,MAAM,EAAEY,sBAAUE,MAFD;AAGjBC,EAAAA,QAAQ,EAAEH,sBAAUI,IAHH;AAIjBC,EAAAA,MAAM,EAAEL,sBAAUE,MAJD;AAKjBb,EAAAA,IAAI,EAAEW,sBAAUE,MALC;AAMjBZ,EAAAA,SAAS,EAAEU,sBAAUE,MANJ;AAOjBX,EAAAA,mBAAmB,EAAES,sBAAUE,MAPd;AAQjBI,EAAAA,OAAO,EAAEN,sBAAUC,MARF;AASjBM,EAAAA,KAAK,EAAEP,sBAAUC,MATA;AAUjBnB,EAAAA,QAAQ,EAAEkB,sBAAUC,MAVH;AAWjBO,EAAAA,QAAQ,EAAER,sBAAUS;AAXH,C;iCADRhC,c,kBAeW;AACpB8B,EAAAA,KAAK,EAAE;AADa,C;;AA4ExB,IAAMG,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;AAAA,SAAY;AACzBlB,IAAAA,aAAa,EAAE;AACbmB,MAAAA,KAAK,EAAEA,gBAAMC,IAAN,EADM;AAEbC,MAAAA,eAAe,EAAEF,gBAAMG,UAAN,EAFJ;AAGbC,MAAAA,OAAO,EAAEL,KAAK,CAACM,OAAN,CAAcC;AAHV;AADU,GAAZ;AAAA,CAAf;;eAQe,wBAAWR,MAAX,EAAmBjC,cAAnB,C","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport isEmpty from 'lodash/isEmpty';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { InlineDropdown as DropDown } from '@pie-lib/mask-markup';\nimport { color, Collapsible, hasText } from '@pie-lib/render-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { withStyles } from '@material-ui/core/styles';\n\nexport class InlineDropdown extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n prompt: PropTypes.string,\n disabled: PropTypes.bool,\n markup: PropTypes.string,\n mode: PropTypes.string,\n rationale: PropTypes.string,\n teacherInstructions: PropTypes.string,\n choices: 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 UNSAFE_componentWillReceiveProps(nextProps) {\n if (isEmpty(nextProps.feedback)) {\n this.setState({ showCorrectAnswer: false });\n }\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 { classes, prompt, mode, rationale, teacherInstructions } = this.props;\n const showCorrectAnswerToggle = mode === 'evaluate';\n\n return (\n <div className={classes.mainContainer}>\n {\n teacherInstructions && hasText(teacherInstructions) && (\n <React.Fragment>\n <Collapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n >\n <div dangerouslySetInnerHTML={{ __html: teacherInstructions }}/>\n </Collapsible>\n <br />\n </React.Fragment>\n )\n }\n\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n />\n {showCorrectAnswerToggle && <br />}\n\n {prompt && (\n <React.Fragment>\n <div dangerouslySetInnerHTML={{ __html: prompt }}/>\n <br />\n </React.Fragment>\n )}\n {\n rationale && hasText(rationale) && (\n <Collapsible\n labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}\n >\n <div dangerouslySetInnerHTML={{ __html: rationale }}/>\n </Collapsible>\n )\n }\n <DropDown\n {...this.props}\n showCorrectAnswer={showCorrectAnswer}\n />\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n color: color.text(),\n backgroundColor: color.background(),\n padding: theme.spacing.unit\n }\n});\n\nexport default withStyles(styles)(InlineDropdown);\n"],"file":"inline-dropdown.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.8.3-next.254+a823a3fa1",
7
+ "version": "3.8.3-next.264+04de87b71",
8
8
  "description": "",
9
9
  "scripts": {
10
10
  "test": "echo \"Error: no test specified\" && exit 1",
@@ -25,7 +25,7 @@
25
25
  },
26
26
  "author": "",
27
27
  "license": "ISC",
28
- "gitHead": "a823a3fa13d7a974896341b3a531e4c98d3976c6",
28
+ "gitHead": "04de87b714e38534eccf0e4c48368c140da69902",
29
29
  "main": "lib/index.js",
30
30
  "module": "src/index.js"
31
31
  }