@pie-element/match-list 1.15.1-beta.0 → 1.15.1-beta.1

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/index.js DELETED
@@ -1,132 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- Object.defineProperty(exports, "Component", {
9
- enumerable: true,
10
- get: function get() {
11
- return _main["default"];
12
- }
13
- });
14
- exports.isComplete = exports["default"] = void 0;
15
-
16
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
-
18
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
-
20
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
-
22
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
23
-
24
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
25
-
26
- var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
27
-
28
- var _react = _interopRequireDefault(require("react"));
29
-
30
- var _reactDom = _interopRequireDefault(require("react-dom"));
31
-
32
- var _debug = _interopRequireDefault(require("debug"));
33
-
34
- var _main = _interopRequireDefault(require("./main"));
35
-
36
- var _piePlayerEvents = require("@pie-framework/pie-player-events");
37
-
38
- var _mathRendering = require("@pie-lib/math-rendering");
39
-
40
- 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); }; }
41
-
42
- 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; } }
43
-
44
- var log = (0, _debug["default"])('pie-ui:graph-lines');
45
-
46
- var isComplete = function isComplete(session, model) {
47
- if (!session) {
48
- return false;
49
- }
50
-
51
- var value = session.value;
52
- var complete = true;
53
-
54
- if (value) {
55
- (model.config.prompts || []).forEach(function (prompt) {
56
- if (!Number.isFinite(value[prompt.id])) {
57
- complete = false;
58
- }
59
- });
60
- }
61
-
62
- return complete;
63
- };
64
-
65
- exports.isComplete = isComplete;
66
-
67
- var MatchList = /*#__PURE__*/function (_HTMLElement) {
68
- (0, _inherits2["default"])(MatchList, _HTMLElement);
69
-
70
- var _super = _createSuper(MatchList);
71
-
72
- function MatchList() {
73
- (0, _classCallCheck2["default"])(this, MatchList);
74
- return _super.call(this);
75
- }
76
-
77
- (0, _createClass2["default"])(MatchList, [{
78
- key: "model",
79
- set: function set(m) {
80
- this._model = m;
81
-
82
- this._render();
83
- }
84
- }, {
85
- key: "session",
86
- get: function get() {
87
- return this._session;
88
- },
89
- set: function set(s) {
90
- this._session = s;
91
-
92
- this._render();
93
- }
94
- }, {
95
- key: "sessionChanged",
96
- value: function sessionChanged(s) {
97
- this._session.value = s.value;
98
- this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(this.tagName.toLowerCase(), isComplete(this._session, this._model)));
99
- log('session: ', this._session);
100
-
101
- this._render();
102
- }
103
- }, {
104
- key: "connectedCallback",
105
- value: function connectedCallback() {
106
- this._render();
107
- }
108
- }, {
109
- key: "_render",
110
- value: function _render() {
111
- var _this = this;
112
-
113
- if (!this._model || !this._session) {
114
- return;
115
- }
116
-
117
- var el = /*#__PURE__*/_react["default"].createElement(_main["default"], {
118
- model: this._model,
119
- session: this._session,
120
- onSessionChange: this.sessionChanged.bind(this)
121
- });
122
-
123
- _reactDom["default"].render(el, this, function () {
124
- (0, _mathRendering.renderMath)(_this);
125
- });
126
- }
127
- }]);
128
- return MatchList;
129
- }( /*#__PURE__*/(0, _wrapNativeSuper2["default"])(HTMLElement));
130
-
131
- exports["default"] = MatchList;
132
- //# sourceMappingURL=index.js.map
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["log","isComplete","session","model","value","complete","config","prompts","forEach","prompt","Number","isFinite","id","MatchList","m","_model","_render","_session","s","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","el","React","createElement","Main","onSessionChange","sessionChanged","bind","ReactDOM","render","HTMLElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AACA;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,oBAAN,CAAZ;;AAIO,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACC,OAAD,EAAUC,KAAV,EAAoB;AAC5C,MAAI,CAACD,OAAL,EAAc;AACZ,WAAO,KAAP;AACD;;AAED,MAAME,KAAK,GAAGF,OAAO,CAACE,KAAtB;AACA,MAAIC,QAAQ,GAAG,IAAf;;AAEA,MAAID,KAAJ,EAAW;AACT,KAACD,KAAK,CAACG,MAAN,CAAaC,OAAb,IAAwB,EAAzB,EAA6BC,OAA7B,CAAqC,UAACC,MAAD,EAAY;AAC/C,UAAI,CAACC,MAAM,CAACC,QAAP,CAAgBP,KAAK,CAACK,MAAM,CAACG,EAAR,CAArB,CAAL,EAAwC;AACtCP,QAAAA,QAAQ,GAAG,KAAX;AACD;AACF,KAJD;AAKD;;AAED,SAAOA,QAAP;AACD,CAjBM;;;;IAmBcQ,S;;;;;AACnB,uBAAc;AAAA;AAAA;AAEb;;;;SAED,aAAUC,CAAV,EAAa;AACX,WAAKC,MAAL,GAAcD,CAAd;;AACA,WAAKE,OAAL;AACD;;;SAOD,eAAc;AACZ,aAAO,KAAKC,QAAZ;AACD,K;SAPD,aAAYC,CAAZ,EAAe;AACb,WAAKD,QAAL,GAAgBC,CAAhB;;AACA,WAAKF,OAAL;AACD;;;WAMD,wBAAeE,CAAf,EAAkB;AAChB,WAAKD,QAAL,CAAcb,KAAd,GAAsBc,CAAC,CAACd,KAAxB;AAEA,WAAKe,aAAL,CAAmB,IAAIC,oCAAJ,CAAwB,KAAKC,OAAL,CAAaC,WAAb,EAAxB,EAAoDrB,UAAU,CAAC,KAAKgB,QAAN,EAAgB,KAAKF,MAArB,CAA9D,CAAnB;AAEAf,MAAAA,GAAG,CAAC,WAAD,EAAc,KAAKiB,QAAnB,CAAH;;AACA,WAAKD,OAAL;AACD;;;WAED,6BAAoB;AAClB,WAAKA,OAAL;AACD;;;WAED,mBAAU;AAAA;;AACR,UAAI,CAAC,KAAKD,MAAN,IAAgB,CAAC,KAAKE,QAA1B,EAAoC;AAClC;AACD;;AAED,UAAMM,EAAE,gBAAGC,kBAAMC,aAAN,CAAoBC,gBAApB,EAA0B;AACnCvB,QAAAA,KAAK,EAAE,KAAKY,MADuB;AAEnCb,QAAAA,OAAO,EAAE,KAAKe,QAFqB;AAGnCU,QAAAA,eAAe,EAAE,KAAKC,cAAL,CAAoBC,IAApB,CAAyB,IAAzB;AAHkB,OAA1B,CAAX;;AAMAC,2BAASC,MAAT,CAAgBR,EAAhB,EAAoB,IAApB,EAA0B,YAAM;AAC9B,uCAAW,KAAX;AACD,OAFD;AAGD;;;kDA9CoCS,W","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debug from 'debug';\nimport Main from './main';\n\nimport { SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport { renderMath } from '@pie-lib/math-rendering';\n\nconst log = debug('pie-ui:graph-lines');\n\nexport { Main as Component };\n\nexport const isComplete = (session, model) => {\n if (!session) {\n return false;\n }\n\n const value = session.value;\n let complete = true;\n\n if (value) {\n (model.config.prompts || []).forEach((prompt) => {\n if (!Number.isFinite(value[prompt.id])) {\n complete = false;\n }\n });\n }\n\n return complete;\n};\n\nexport default class MatchList extends HTMLElement {\n constructor() {\n super();\n }\n\n set model(m) {\n this._model = m;\n this._render();\n }\n\n set session(s) {\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n sessionChanged(s) {\n this._session.value = s.value;\n\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), isComplete(this._session, this._model)));\n\n log('session: ', this._session);\n this._render();\n }\n\n connectedCallback() {\n this._render();\n }\n\n _render() {\n if (!this._model || !this._session) {\n return;\n }\n\n const el = React.createElement(Main, {\n model: this._model,\n session: this._session,\n onSessionChange: this.sessionChanged.bind(this),\n });\n\n ReactDOM.render(el, this, () => {\n renderMath(this);\n });\n }\n}\n"],"file":"index.js"}
package/lib/main.js DELETED
@@ -1,194 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.styledMain = exports["default"] = exports.Main = void 0;
9
-
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
-
16
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
-
18
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
-
20
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
-
22
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
-
24
- var _react = _interopRequireDefault(require("react"));
25
-
26
- var _propTypes = _interopRequireDefault(require("prop-types"));
27
-
28
- var _drag = require("@pie-lib/drag");
29
-
30
- var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
31
-
32
- var _renderUi = require("@pie-lib/render-ui");
33
-
34
- var _styles = require("@material-ui/core/styles");
35
-
36
- var _uniqueId = _interopRequireDefault(require("lodash/uniqueId"));
37
-
38
- var _isUndefined = _interopRequireDefault(require("lodash/isUndefined"));
39
-
40
- var _findKey = _interopRequireDefault(require("lodash/findKey"));
41
-
42
- var _answerArea = _interopRequireDefault(require("./answer-area"));
43
-
44
- var _choicesList = _interopRequireDefault(require("./choices-list"));
45
-
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
-
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
-
50
- var Main = /*#__PURE__*/function (_React$Component) {
51
- (0, _inherits2["default"])(Main, _React$Component);
52
-
53
- var _super = _createSuper(Main);
54
-
55
- function Main(props) {
56
- var _this;
57
-
58
- (0, _classCallCheck2["default"])(this, Main);
59
- _this = _super.call(this, props);
60
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "toggleShowCorrect", function () {
61
- _this.setState({
62
- showCorrectAnswer: !_this.state.showCorrectAnswer
63
- });
64
- });
65
- _this.instanceId = (0, _uniqueId["default"])();
66
- _this.state = {
67
- showCorrectAnswer: false
68
- };
69
- return _this;
70
- }
71
-
72
- (0, _createClass2["default"])(Main, [{
73
- key: "onRemoveAnswer",
74
- value: function onRemoveAnswer(id) {
75
- var _this$props = this.props,
76
- session = _this$props.session,
77
- onSessionChange = _this$props.onSessionChange;
78
- session.value[id] = undefined;
79
- onSessionChange(session);
80
- }
81
- }, {
82
- key: "onPlaceAnswer",
83
- value: function onPlaceAnswer(place, id) {
84
- var _this$props2 = this.props,
85
- session = _this$props2.session,
86
- onSessionChange = _this$props2.onSessionChange,
87
- model = _this$props2.model;
88
- var duplicates = model.config.duplicates;
89
-
90
- if ((0, _isUndefined["default"])(session.value)) {
91
- session.value = {};
92
- }
93
-
94
- var choiceKey = (0, _findKey["default"])(session.value, function (val) {
95
- return val === id;
96
- });
97
-
98
- if (choiceKey && !duplicates) {
99
- session.value = (0, _drag.swap)(session.value, choiceKey, place);
100
- } else {
101
- session.value[place] = id;
102
- }
103
-
104
- onSessionChange(session);
105
- }
106
- }, {
107
- key: "render",
108
- value: function render() {
109
- var _this2 = this;
110
-
111
- var showCorrectAnswer = this.state.showCorrectAnswer;
112
- var _this$props3 = this.props,
113
- classes = _this$props3.classes,
114
- model = _this$props3.model,
115
- session = _this$props3.session;
116
- var config = model.config,
117
- mode = model.mode;
118
- var prompt = config.prompt;
119
- return /*#__PURE__*/_react["default"].createElement("div", {
120
- className: classes.mainContainer
121
- }, /*#__PURE__*/_react["default"].createElement(_correctAnswerToggle["default"], {
122
- show: mode === 'evaluate',
123
- toggled: showCorrectAnswer,
124
- onToggle: this.toggleShowCorrect
125
- }), /*#__PURE__*/_react["default"].createElement(_renderUi.PreviewPrompt, {
126
- className: "prompt",
127
- prompt: prompt
128
- }), /*#__PURE__*/_react["default"].createElement(_answerArea["default"], {
129
- instanceId: this.instanceId,
130
- model: model,
131
- session: session,
132
- onPlaceAnswer: function onPlaceAnswer(place, id) {
133
- return _this2.onPlaceAnswer(place, id);
134
- },
135
- onRemoveAnswer: function onRemoveAnswer(id) {
136
- return _this2.onRemoveAnswer(id);
137
- },
138
- disabled: mode !== 'gather',
139
- showCorrect: showCorrectAnswer
140
- }), /*#__PURE__*/_react["default"].createElement(_choicesList["default"], {
141
- instanceId: this.instanceId,
142
- model: model,
143
- session: session,
144
- disabled: mode !== 'gather',
145
- onRemoveAnswer: function onRemoveAnswer(id) {
146
- return _this2.onRemoveAnswer(id);
147
- }
148
- }), model.correctness && model.feedback && !showCorrectAnswer && /*#__PURE__*/_react["default"].createElement(_renderUi.Feedback, {
149
- correctness: model.correctness.correctness,
150
- feedback: model.feedback
151
- }));
152
- }
153
- }]);
154
- return Main;
155
- }(_react["default"].Component);
156
-
157
- exports.Main = Main;
158
- (0, _defineProperty2["default"])(Main, "propTypes", {
159
- classes: _propTypes["default"].object,
160
- session: _propTypes["default"].object.isRequired,
161
- onSessionChange: _propTypes["default"].func,
162
- model: _propTypes["default"].object.isRequired,
163
- prompt: _propTypes["default"].string
164
- });
165
-
166
- var styles = function styles(theme) {
167
- return {
168
- mainContainer: {
169
- display: 'flex',
170
- flexDirection: 'column',
171
- justifyContent: 'center',
172
- color: _renderUi.color.text(),
173
- backgroundColor: _renderUi.color.background(),
174
- padding: theme.spacing.unit * 3 / 2
175
- },
176
- promptList: {
177
- alignItems: 'flex-start'
178
- },
179
- main: {
180
- width: '100%'
181
- },
182
- toggle: {
183
- paddingBottom: theme.spacing.unit * 3
184
- }
185
- };
186
- };
187
-
188
- var styledMain = (0, _styles.withStyles)(styles)(Main);
189
- exports.styledMain = styledMain;
190
-
191
- var _default = (0, _drag.withDragContext)(styledMain);
192
-
193
- exports["default"] = _default;
194
- //# sourceMappingURL=main.js.map
package/lib/main.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/main.jsx"],"names":["Main","props","setState","showCorrectAnswer","state","instanceId","id","session","onSessionChange","value","undefined","place","model","duplicates","config","choiceKey","val","classes","mode","prompt","mainContainer","toggleShowCorrect","onPlaceAnswer","onRemoveAnswer","correctness","feedback","React","Component","PropTypes","object","isRequired","func","string","styles","theme","display","flexDirection","justifyContent","color","text","backgroundColor","background","padding","spacing","unit","promptList","alignItems","main","width","toggle","paddingBottom","styledMain"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withDragContext, swap } from '@pie-lib/drag';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { color, Feedback, PreviewPrompt } from '@pie-lib/render-ui';\nimport { withStyles } from '@material-ui/core/styles';\nimport uniqueId from 'lodash/uniqueId';\nimport isUndefined from 'lodash/isUndefined';\nimport findKey from 'lodash/findKey';\nimport AnswerArea from './answer-area';\nimport ChoicesList from './choices-list';\n\nexport class Main extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n session: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func,\n model: PropTypes.object.isRequired,\n prompt: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n\n this.instanceId = uniqueId();\n this.state = {\n showCorrectAnswer: false,\n };\n }\n\n onRemoveAnswer(id) {\n const { session, onSessionChange } = this.props;\n\n session.value[id] = undefined;\n\n onSessionChange(session);\n }\n\n onPlaceAnswer(place, id) {\n const { session, onSessionChange, model } = this.props;\n const {\n config: { duplicates },\n } = model;\n\n if (isUndefined(session.value)) {\n session.value = {};\n }\n\n const choiceKey = findKey(session.value, (val) => val === id);\n\n if (choiceKey && !duplicates) {\n session.value = swap(session.value, choiceKey, place);\n } else {\n session.value[place] = id;\n }\n\n onSessionChange(session);\n }\n\n toggleShowCorrect = () => {\n this.setState({ showCorrectAnswer: !this.state.showCorrectAnswer });\n };\n\n render() {\n const { showCorrectAnswer } = this.state;\n const { classes, model, session } = this.props;\n const { config, mode } = model;\n const { prompt } = config;\n\n return (\n <div className={classes.mainContainer}>\n <CorrectAnswerToggle show={mode === 'evaluate'} toggled={showCorrectAnswer} onToggle={this.toggleShowCorrect} />\n <PreviewPrompt className=\"prompt\" prompt={prompt} />\n <AnswerArea\n instanceId={this.instanceId}\n model={model}\n session={session}\n onPlaceAnswer={(place, id) => this.onPlaceAnswer(place, id)}\n onRemoveAnswer={(id) => this.onRemoveAnswer(id)}\n disabled={mode !== 'gather'}\n showCorrect={showCorrectAnswer}\n />\n <ChoicesList instanceId={this.instanceId} model={model} session={session} disabled={mode !== 'gather'} onRemoveAnswer={(id) => this.onRemoveAnswer(id)}/>\n {model.correctness && model.feedback && !showCorrectAnswer && (\n <Feedback correctness={model.correctness.correctness} feedback={model.feedback} />\n )}\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n mainContainer: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n color: color.text(),\n backgroundColor: color.background(),\n padding: (theme.spacing.unit * 3) / 2,\n },\n promptList: {\n alignItems: 'flex-start',\n },\n main: {\n width: '100%',\n },\n toggle: {\n paddingBottom: theme.spacing.unit * 3,\n },\n});\n\nexport const styledMain = withStyles(styles)(Main);\n\nexport default withDragContext(styledMain);\n"],"file":"main.js"}