@pie-element/explicit-constructed-response 3.10.1 → 3.10.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/main.js CHANGED
@@ -39,9 +39,11 @@ var _renderUi = require("@pie-lib/render-ui");
39
39
 
40
40
  var _styles = require("@material-ui/core/styles");
41
41
 
42
+ var _classnames = _interopRequireDefault(require("classnames"));
43
+
42
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); }; }
43
45
 
44
- 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; } }
45
47
 
46
48
  var Main = /*#__PURE__*/function (_React$Component) {
47
49
  (0, _inherits2["default"])(Main, _React$Component);
@@ -59,7 +61,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
59
61
 
60
62
  _this = _super.call.apply(_super, [this].concat(args));
61
63
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
62
- showCorrectAnswer: false,
64
+ showCorrectAnswer: _this.props.alwaysShowCorrect || false,
63
65
  value: _this.props.value
64
66
  });
65
67
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "toggleShowCorrect", function () {
@@ -86,6 +88,12 @@ var Main = /*#__PURE__*/function (_React$Component) {
86
88
  showCorrectAnswer: false
87
89
  });
88
90
  }
91
+
92
+ if (nextProps.alwaysShowCorrect) {
93
+ this.setState({
94
+ showCorrectAnswer: true
95
+ });
96
+ }
89
97
  }
90
98
  }, {
91
99
  key: "render",
@@ -101,54 +109,67 @@ var Main = /*#__PURE__*/function (_React$Component) {
101
109
  teacherInstructions = _this$props.teacherInstructions,
102
110
  note = _this$props.note,
103
111
  showNote = _this$props.showNote,
104
- env = _this$props.env;
112
+ env = _this$props.env,
113
+ animationsDisabled = _this$props.animationsDisabled,
114
+ alwaysShowCorrect = _this$props.alwaysShowCorrect,
115
+ maxLengthPerChoice = _this$props.maxLengthPerChoice;
105
116
 
106
117
  var _ref = env || {},
107
118
  role = _ref.role;
108
119
 
109
120
  var displayNote = (showCorrectAnswer || mode === 'view' && role === 'instructor') && showNote && note;
121
+ var mainClasses = (0, _classnames["default"])([classes.mainContainer, alwaysShowCorrect ? classes.noBorderColor : {}]);
122
+
123
+ var teacherInstructionsDiv = /*#__PURE__*/_react["default"].createElement("div", {
124
+ className: "teacher-instructions",
125
+ dangerouslySetInnerHTML: {
126
+ __html: teacherInstructions
127
+ }
128
+ });
129
+
130
+ var rationaleDiv = /*#__PURE__*/_react["default"].createElement("div", {
131
+ className: "rationale",
132
+ dangerouslySetInnerHTML: {
133
+ __html: rationale
134
+ }
135
+ });
136
+
110
137
  return /*#__PURE__*/_react["default"].createElement("div", {
111
- className: classes.mainContainer
138
+ className: mainClasses
112
139
  }, teacherInstructions && (0, _renderUi.hasText)(teacherInstructions) && /*#__PURE__*/_react["default"].createElement("div", {
113
140
  className: classes.collapsible
114
- }, /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
141
+ }, !animationsDisabled ? /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
115
142
  labels: {
116
143
  hidden: 'Show Teacher Instructions',
117
144
  visible: 'Hide Teacher Instructions'
118
145
  }
119
- }, /*#__PURE__*/_react["default"].createElement("div", {
120
- dangerouslySetInnerHTML: {
121
- __html: teacherInstructions
122
- }
123
- }))), /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
146
+ }, teacherInstructionsDiv) : teacherInstructionsDiv), !alwaysShowCorrect && /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
124
147
  show: mode === 'evaluate',
125
148
  toggled: showCorrectAnswer,
126
149
  onToggle: this.toggleShowCorrect
127
150
  }), prompt && /*#__PURE__*/_react["default"].createElement("div", {
151
+ className: "prompt",
128
152
  dangerouslySetInnerHTML: {
129
153
  __html: prompt
130
154
  }
131
155
  }), /*#__PURE__*/_react["default"].createElement(_maskMarkup.ConstructedResponse, (0, _extends2["default"])({}, this.props, {
132
156
  onChange: this.onChange,
133
157
  showCorrectAnswer: showCorrectAnswer,
134
- value: value
158
+ value: value,
159
+ maxLength: maxLengthPerChoice
135
160
  })), displayNote && /*#__PURE__*/_react["default"].createElement("div", {
136
- className: classes.note,
161
+ className: (0, _classnames["default"])(classes.note, 'note'),
137
162
  dangerouslySetInnerHTML: {
138
163
  __html: "<strong>Note:</strong> ".concat(note)
139
164
  }
140
165
  }), rationale && (0, _renderUi.hasText)(rationale) && /*#__PURE__*/_react["default"].createElement("div", {
141
166
  className: classes.collapsible
142
- }, /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
167
+ }, !animationsDisabled ? /*#__PURE__*/_react["default"].createElement(_renderUi.Collapsible, {
143
168
  labels: {
144
169
  hidden: 'Show Rationale',
145
170
  visible: 'Hide Rationale'
146
171
  }
147
- }, /*#__PURE__*/_react["default"].createElement("div", {
148
- dangerouslySetInnerHTML: {
149
- __html: rationale
150
- }
151
- }))));
172
+ }, rationaleDiv) : rationaleDiv));
152
173
  }
153
174
  }]);
154
175
  return Main;
@@ -168,7 +189,10 @@ exports.Main = Main;
168
189
  teacherInstructions: _propTypes["default"].string,
169
190
  value: _propTypes["default"].object,
170
191
  feedback: _propTypes["default"].object,
171
- onChange: _propTypes["default"].func
192
+ onChange: _propTypes["default"].func,
193
+ alwaysShowCorrect: _propTypes["default"].bool,
194
+ animationsDisabled: _propTypes["default"].bool,
195
+ maxLengthPerChoice: _propTypes["default"].array
172
196
  });
173
197
  (0, _defineProperty2["default"])(Main, "defaultProps", {
174
198
  value: {}
@@ -186,6 +210,11 @@ var styles = function styles(theme) {
186
210
  },
187
211
  collapsible: {
188
212
  margin: "".concat(theme.spacing.unit * 2, "px 0")
213
+ },
214
+ noBorderColor: {
215
+ '& *': {
216
+ borderColor: "".concat(_renderUi.color.text(), " !important")
217
+ }
189
218
  }
190
219
  };
191
220
  };
package/lib/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/main.js"],"names":["Main","showCorrectAnswer","value","props","setState","state","onChange","changeSession","nextProps","feedback","classes","mode","prompt","rationale","teacherInstructions","note","showNote","env","role","displayNote","mainContainer","collapsible","hidden","visible","__html","toggleShowCorrect","React","Component","PropTypes","object","isRequired","string","bool","disabled","markup","func","styles","theme","padding","spacing","unit","color","text","backgroundColor","background","margin"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash/debounce';\nimport isEmpty from 'lodash/isEmpty';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { ConstructedResponse } from '@pie-lib/mask-markup';\nimport { color, Collapsible, hasText } from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n prompt: PropTypes.string,\n note: PropTypes.string,\n showNote: PropTypes.bool,\n env: PropTypes.object,\n rationale: PropTypes.string,\n disabled: PropTypes.bool,\n markup: PropTypes.string,\n mode: PropTypes.string,\n teacherInstructions: PropTypes.string,\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 value: this.props.value\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (isEmpty(nextProps.feedback)) {\n this.setState({ showCorrectAnswer: false });\n }\n }\n\n toggleShowCorrect = () => {\n this.setState({ showCorrectAnswer: !this.state.showCorrectAnswer });\n };\n\n changeSession = debounce(this.props.onChange, 1500);\n\n onChange = value => {\n this.setState({ value });\n\n this.changeSession(value);\n };\n\n render() {\n const { showCorrectAnswer, value } = this.state;\n const { classes, mode, prompt, rationale, teacherInstructions, note, showNote, env } = this.props;\n const { role } = env || {};\n const displayNote = (showCorrectAnswer || mode === 'view' && role === 'instructor') && showNote && note;\n\n return (\n <div className={classes.mainContainer}>\n {\n teacherInstructions && hasText(teacherInstructions) && (\n <div className={classes.collapsible}>\n <Collapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n >\n <div dangerouslySetInnerHTML={{ __html: teacherInstructions }}/>\n </Collapsible>\n </div>\n )\n }\n <CorrectAnswerToggle\n show={mode === 'evaluate'}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n />\n {prompt && <div dangerouslySetInnerHTML={{ __html: prompt }}/>}\n <ConstructedResponse\n {...this.props}\n onChange={this.onChange}\n showCorrectAnswer={showCorrectAnswer}\n value={value}\n />\n {displayNote && (\n <div\n className={classes.note}\n dangerouslySetInnerHTML={{ __html: `<strong>Note:</strong> ${note}` }}\n />\n )}\n {rationale && hasText(rationale) && (\n <div className={classes.collapsible}>\n <Collapsible\n labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}\n >\n <div dangerouslySetInnerHTML={{ __html: rationale }}/>\n </Collapsible>\n </div>\n )}\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n mainContainer: {\n padding: theme.spacing.unit,\n color: color.text(),\n backgroundColor: color.background()\n },\n note: {\n padding: '5px 0',\n },\n collapsible: {\n margin: `${theme.spacing.unit * 2}px 0`,\n }\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
1
+ {"version":3,"sources":["../src/main.js"],"names":["Main","showCorrectAnswer","props","alwaysShowCorrect","value","setState","state","onChange","changeSession","nextProps","feedback","classes","mode","prompt","rationale","teacherInstructions","note","showNote","env","animationsDisabled","maxLengthPerChoice","role","displayNote","mainClasses","mainContainer","noBorderColor","teacherInstructionsDiv","__html","rationaleDiv","collapsible","hidden","visible","toggleShowCorrect","React","Component","PropTypes","object","isRequired","string","bool","disabled","markup","func","array","styles","theme","padding","spacing","unit","color","text","backgroundColor","background","margin","borderColor"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash/debounce';\nimport isEmpty from 'lodash/isEmpty';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { ConstructedResponse } from '@pie-lib/mask-markup';\nimport { color, Collapsible, hasText } from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n prompt: PropTypes.string,\n note: PropTypes.string,\n showNote: PropTypes.bool,\n env: PropTypes.object,\n rationale: PropTypes.string,\n disabled: PropTypes.bool,\n markup: PropTypes.string,\n mode: PropTypes.string,\n teacherInstructions: PropTypes.string,\n value: PropTypes.object,\n feedback: PropTypes.object,\n onChange: PropTypes.func,\n alwaysShowCorrect: PropTypes.bool,\n animationsDisabled: PropTypes.bool,\n maxLengthPerChoice: PropTypes.array\n };\n\n static defaultProps = {\n value: {}\n };\n\n state = {\n showCorrectAnswer: this.props.alwaysShowCorrect || false,\n value: this.props.value\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n if (isEmpty(nextProps.feedback)) {\n this.setState({ showCorrectAnswer: false });\n }\n\n if (nextProps.alwaysShowCorrect) {\n this.setState({ showCorrectAnswer: true });\n }\n }\n\n toggleShowCorrect = () => {\n this.setState({ showCorrectAnswer: !this.state.showCorrectAnswer });\n };\n\n changeSession = debounce(this.props.onChange, 1500);\n\n onChange = value => {\n this.setState({ value });\n\n this.changeSession(value);\n };\n\n render() {\n const { showCorrectAnswer, value } = this.state;\n const {\n classes,\n mode,\n prompt,\n rationale,\n teacherInstructions,\n note,\n showNote,\n env,\n animationsDisabled,\n alwaysShowCorrect,\n maxLengthPerChoice\n } = this.props;\n const { role } = env || {};\n const displayNote = (showCorrectAnswer || mode === 'view' && role === 'instructor') && showNote && note;\n const mainClasses = classNames([classes.mainContainer, alwaysShowCorrect ? classes.noBorderColor : {}]);\n\n const teacherInstructionsDiv = <div\n className=\"teacher-instructions\"\n dangerouslySetInnerHTML={{ __html: teacherInstructions }}\n />;\n\n const rationaleDiv = <div className=\"rationale\" dangerouslySetInnerHTML={{ __html: rationale }}/>;\n\n return (\n <div className={mainClasses}>\n {\n teacherInstructions && hasText(teacherInstructions) && (\n <div className={classes.collapsible}>\n {!animationsDisabled ? <Collapsible\n labels={{ hidden: 'Show Teacher Instructions', visible: 'Hide Teacher Instructions' }}\n >\n {teacherInstructionsDiv}\n </Collapsible>\n : teacherInstructionsDiv}\n </div>\n )\n }\n {!alwaysShowCorrect && <CorrectAnswerToggle\n show={mode === 'evaluate'}\n toggled={showCorrectAnswer}\n onToggle={this.toggleShowCorrect}\n />}\n {prompt && <div className=\"prompt\" dangerouslySetInnerHTML={{ __html: prompt }}/>}\n <ConstructedResponse\n {...this.props}\n onChange={this.onChange}\n showCorrectAnswer={showCorrectAnswer}\n value={value}\n maxLength={maxLengthPerChoice}\n />\n {displayNote && (\n <div\n className={classNames(classes.note, 'note')}\n dangerouslySetInnerHTML={{ __html: `<strong>Note:</strong> ${note}` }}\n />\n )}\n {rationale && hasText(rationale) && (\n <div className={classes.collapsible}>\n {!animationsDisabled ? <Collapsible\n labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}\n >\n {rationaleDiv}\n </Collapsible>\n : rationaleDiv}\n </div>\n )}\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n mainContainer: {\n padding: theme.spacing.unit,\n color: color.text(),\n backgroundColor: color.background()\n },\n note: {\n padding: '5px 0',\n },\n collapsible: {\n margin: `${theme.spacing.unit * 2}px 0`,\n },\n noBorderColor: {\n '& *': {\n borderColor: `${color.text()} !important`\n }\n }\n});\n\nexport default withStyles(styles)(Main);\n"],"file":"main.js"}
package/lib/print.js ADDED
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
+
22
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
+
24
+ var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
25
+
26
+ var _react = _interopRequireDefault(require("react"));
27
+
28
+ var _reactDom = _interopRequireDefault(require("react-dom"));
29
+
30
+ var _debounce = _interopRequireDefault(require("lodash/debounce"));
31
+
32
+ var _main = _interopRequireDefault(require("./main"));
33
+
34
+ var _mathRendering = require("@pie-lib/math-rendering");
35
+
36
+ var _debug = _interopRequireDefault(require("debug"));
37
+
38
+ 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; }
39
+
40
+ 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; }
41
+
42
+ 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); }; }
43
+
44
+ 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; } }
45
+
46
+ var log = (0, _debug["default"])('pie-element:explicit-constructed-response:print');
47
+
48
+ var preparePrintModel = function preparePrintModel(model, opts) {
49
+ var instr = opts.role === 'instructor';
50
+ model.teacherInstructions = instr ? model.teacherInstructions : undefined;
51
+ model.rationale = instr ? model.rationale : undefined;
52
+ model.alwaysShowCorrect = instr;
53
+ model.mode = instr ? 'evaluate' : model.mode;
54
+ model.disabled = true;
55
+ model.animationsDisabled = true;
56
+ return model;
57
+ };
58
+
59
+ var ExplicitConstructedResponsePrint = /*#__PURE__*/function (_HTMLElement) {
60
+ (0, _inherits2["default"])(ExplicitConstructedResponsePrint, _HTMLElement);
61
+
62
+ var _super = _createSuper(ExplicitConstructedResponsePrint);
63
+
64
+ function ExplicitConstructedResponsePrint() {
65
+ var _this;
66
+
67
+ (0, _classCallCheck2["default"])(this, ExplicitConstructedResponsePrint);
68
+ _this = _super.call(this);
69
+ _this._options = null;
70
+ _this._model = null;
71
+ _this._session = [];
72
+ _this._rerender = (0, _debounce["default"])(function () {
73
+ if (_this._model && _this._session) {
74
+ var printModel = preparePrintModel(_this._model, _this._options);
75
+
76
+ var element = _this._options && /*#__PURE__*/_react["default"].createElement(_main["default"], _objectSpread(_objectSpread({}, printModel), {}, {
77
+ onChange: function onChange() {}
78
+ }));
79
+
80
+ _reactDom["default"].render(element, (0, _assertThisInitialized2["default"])(_this), function () {
81
+ log('render complete - render math');
82
+ (0, _mathRendering.renderMath)((0, _assertThisInitialized2["default"])(_this));
83
+ });
84
+ } else {
85
+ log('skip');
86
+ }
87
+ }, 50, {
88
+ leading: false,
89
+ trailing: true
90
+ });
91
+ return _this;
92
+ }
93
+
94
+ (0, _createClass2["default"])(ExplicitConstructedResponsePrint, [{
95
+ key: "options",
96
+ set: function set(o) {
97
+ this._options = o;
98
+ }
99
+ }, {
100
+ key: "model",
101
+ set: function set(s) {
102
+ this._model = s;
103
+
104
+ this._rerender();
105
+ }
106
+ }, {
107
+ key: "connectedCallback",
108
+ value: function connectedCallback() {}
109
+ }]);
110
+ return ExplicitConstructedResponsePrint;
111
+ }( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
112
+
113
+ exports["default"] = ExplicitConstructedResponsePrint;
114
+ //# sourceMappingURL=print.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/print.js"],"names":["log","preparePrintModel","model","opts","instr","role","teacherInstructions","undefined","rationale","alwaysShowCorrect","mode","disabled","animationsDisabled","ExplicitConstructedResponsePrint","_options","_model","_session","_rerender","printModel","element","React","createElement","Main","onChange","ReactDOM","render","leading","trailing","o","s","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,iDAAN,CAAZ;;AAEA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,KAAD,EAAQC,IAAR,EAAiB;AACzC,MAAMC,KAAK,GAAGD,IAAI,CAACE,IAAL,KAAc,YAA5B;AAEAH,EAAAA,KAAK,CAACI,mBAAN,GAA4BF,KAAK,GAAGF,KAAK,CAACI,mBAAT,GAA+BC,SAAhE;AACAL,EAAAA,KAAK,CAACM,SAAN,GAAkBJ,KAAK,GAAGF,KAAK,CAACM,SAAT,GAAqBD,SAA5C;AAEAL,EAAAA,KAAK,CAACO,iBAAN,GAA0BL,KAA1B;AACAF,EAAAA,KAAK,CAACQ,IAAN,GAAaN,KAAK,GAAG,UAAH,GAAgBF,KAAK,CAACQ,IAAxC;AAEAR,EAAAA,KAAK,CAACS,QAAN,GAAiB,IAAjB;AACAT,EAAAA,KAAK,CAACU,kBAAN,GAA2B,IAA3B;AAEA,SAAOV,KAAP;AACD,CAbD;;IAeqBW,gC;;;;;AACnB,8CAAc;AAAA;;AAAA;AACZ;AACA,UAAKC,QAAL,GAAgB,IAAhB;AACA,UAAKC,MAAL,GAAc,IAAd;AACA,UAAKC,QAAL,GAAgB,EAAhB;AACA,UAAKC,SAAL,GAAiB,0BACf,YAAM;AACJ,UAAI,MAAKF,MAAL,IAAe,MAAKC,QAAxB,EAAkC;AAChC,YAAME,UAAU,GAAGjB,iBAAiB,CAAC,MAAKc,MAAN,EAAc,MAAKD,QAAnB,CAApC;;AAEA,YAAMK,OAAO,GACX,MAAKL,QAAL,iBACAM,kBAAMC,aAAN,CAAoBC,gBAApB,kCACKJ,UADL;AAEEK,UAAAA,QAAQ,EAAE,oBAAM,CAAE;AAFpB,WAFF;;AAOAC,6BAASC,MAAT,CAAgBN,OAAhB,kDAA+B,YAAM;AACnCnB,UAAAA,GAAG,CAAC,+BAAD,CAAH;AACA;AACD,SAHD;AAID,OAdD,MAcO;AACLA,QAAAA,GAAG,CAAC,MAAD,CAAH;AACD;AACF,KAnBc,EAoBf,EApBe,EAqBf;AAAE0B,MAAAA,OAAO,EAAE,KAAX;AAAkBC,MAAAA,QAAQ,EAAE;AAA5B,KArBe,CAAjB;AALY;AA4Bb;;;;SACD,aAAYC,CAAZ,EAAe;AACb,WAAKd,QAAL,GAAgBc,CAAhB;AACD;;;SAED,aAAUC,CAAV,EAAa;AACX,WAAKd,MAAL,GAAcc,CAAd;;AACA,WAAKZ,SAAL;AACD;;;WAED,6BAAoB,CAAE;;;kDAvCsCa,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debounce from 'lodash/debounce';\nimport Main from './main';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport debug from 'debug';\n\nconst log = debug('pie-element:explicit-constructed-response:print');\n\nconst preparePrintModel = (model, opts) => {\n const instr = opts.role === 'instructor';\n\n model.teacherInstructions = instr ? model.teacherInstructions : undefined;\n model.rationale = instr ? model.rationale : undefined;\n\n model.alwaysShowCorrect = instr;\n model.mode = instr ? 'evaluate' : model.mode;\n\n model.disabled = true;\n model.animationsDisabled = true;\n\n return model;\n};\n\nexport default class ExplicitConstructedResponsePrint extends HTMLElement {\n constructor() {\n super();\n this._options = null;\n this._model = null;\n this._session = [];\n this._rerender = debounce(\n () => {\n if (this._model && this._session) {\n const printModel = preparePrintModel(this._model, this._options);\n\n const element =\n this._options &&\n React.createElement(Main, {\n ...printModel,\n onChange: () => {}\n });\n\n ReactDOM.render(element, this, () => {\n log('render complete - render math');\n renderMath(this);\n });\n } else {\n log('skip');\n }\n },\n 50,\n { leading: false, trailing: true }\n );\n }\n set options(o) {\n this._options = o;\n }\n\n set model(s) {\n this._model = s;\n this._rerender();\n }\n\n connectedCallback() {}\n}\n"],"file":"print.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.10.1",
7
+ "version": "3.10.5",
8
8
  "description": "",
9
9
  "scripts": {
10
10
  "test": "echo \"Error: no test specified\" && exit 1",
@@ -13,10 +13,10 @@
13
13
  "dependencies": {
14
14
  "@material-ui/core": "^3.9.2",
15
15
  "@pie-framework/pie-player-events": "^0.1.0",
16
- "@pie-lib/correct-answer-toggle": "^2.3.29",
17
- "@pie-lib/mask-markup": "^1.10.20",
18
- "@pie-lib/math-rendering": "^2.3.9",
19
- "@pie-lib/render-ui": "^4.12.0",
16
+ "@pie-lib/correct-answer-toggle": "^2.3.31",
17
+ "@pie-lib/mask-markup": "^1.11.1",
18
+ "@pie-lib/math-rendering": "^2.3.11",
19
+ "@pie-lib/render-ui": "^4.12.2",
20
20
  "classnames": "^2.2.5",
21
21
  "lodash": "^4.17.10",
22
22
  "prop-types": "^15.6.1",
@@ -25,7 +25,11 @@
25
25
  },
26
26
  "author": "",
27
27
  "license": "ISC",
28
- "gitHead": "0df28892922b8611038d5dd69ff0d6c8ce5806a3",
28
+ "gitHead": "39691eb79f1f5ece91c831add33b05871b20828b",
29
29
  "main": "lib/index.js",
30
- "module": "src/index.js"
30
+ "module": "src/index.js",
31
+ "exports": {
32
+ ".": "./src/index.js",
33
+ "./print": "./src/print.js"
34
+ }
31
35
  }