@pie-element/match 11.0.5-esm.0 → 11.1.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +63 -0
- package/configure/CHANGELOG.md +63 -0
- package/configure/lib/add-row.js +27 -73
- package/configure/lib/add-row.js.map +1 -1
- package/configure/lib/answer-config-block.js +262 -335
- package/configure/lib/answer-config-block.js.map +1 -1
- package/configure/lib/common.js +18 -33
- package/configure/lib/common.js.map +1 -1
- package/configure/lib/configure.js +330 -420
- package/configure/lib/configure.js.map +1 -1
- package/configure/lib/defaults.js +5 -4
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/general-config-block.js +123 -190
- package/configure/lib/general-config-block.js.map +1 -1
- package/configure/lib/index.js +117 -190
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/row.js +269 -377
- package/configure/lib/row.js.map +1 -1
- package/configure/lib/utils.js +4 -15
- package/configure/lib/utils.js.map +1 -1
- package/configure/package.json +15 -14
- package/controller/CHANGELOG.md +49 -0
- package/controller/lib/defaults.js +2 -3
- package/controller/lib/defaults.js.map +1 -1
- package/controller/lib/index.js +173 -301
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +6 -6
- package/lib/answer-grid.js +142 -242
- package/lib/answer-grid.js.map +1 -1
- package/lib/index.js +59 -108
- package/lib/index.js.map +1 -1
- package/lib/main.js +123 -191
- package/lib/main.js.map +1 -1
- package/package.json +18 -29
- package/esm/configure.js +0 -3936
- package/esm/configure.js.map +0 -1
- package/esm/controller.js +0 -428
- package/esm/controller.js.map +0 -1
- package/esm/element.js +0 -472
- package/esm/element.js.map +0 -1
package/lib/answer-grid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/answer-grid.jsx"],"names":["AnswerGrid","rowId","answerIndex","event","props","onAnswerChange","choiceMode","answers","newAnswers","i","length","target","checked","rowValue","rowValueIndex","correctAnswers","classes","showCorrect","headers","rows","disabled","view","Tag","Radio","Checkbox","evaluate","controlsContainer","empty","table","map","header","idx","rowHeader","rowItem","questionText","__html","row","separator","title","id","column","tag","correct","answerIsCorrect","tagDisabled","incorrect","answerIsIncorrect","onRowValueChange","React","Component","PropTypes","object","isRequired","bool","func","string","array","styles","theme","marginLeft","marginRight","marginTop","spacing","unit","marginBottom","padding","color","margin","rowContainer","display","alignItems","textAlign","border","borderTop","primaryLight","width","text","primary","cursor","pointerEvents","opacity","backgroundColor","background","borderCollapse","borderSpacing"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport Radio from '@material-ui/core/Radio';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Typography from '@material-ui/core/Typography';\nimport { withStyles } from '@material-ui/core/styles';\nimport { color } from '@pie-lib/render-ui';\n\nexport class AnswerGrid extends React.Component {\n static propTypes = {\n classes: PropTypes.object.isRequired,\n correctAnswers: PropTypes.object,\n view: PropTypes.bool.isRequired,\n showCorrect: PropTypes.bool.isRequired,\n disabled: PropTypes.bool.isRequired,\n onAnswerChange: PropTypes.func.isRequired,\n choiceMode: PropTypes.string.isRequired,\n rows: PropTypes.array.isRequired,\n headers: PropTypes.array.isRequired,\n answers: PropTypes.object.isRequired,\n };\n\n onRowValueChange = (rowId, answerIndex) => (event) => {\n const { onAnswerChange, choiceMode, answers } = this.props;\n const newAnswers = { ...answers };\n\n if (choiceMode === 'radio') {\n for (let i = 0; i < newAnswers[rowId].length; i++) {\n newAnswers[rowId][i] = false;\n }\n }\n\n newAnswers[rowId][answerIndex] = event.target.checked;\n\n onAnswerChange(newAnswers);\n };\n\n answerIsCorrect = (rowId, rowValue, rowValueIndex) => {\n const { correctAnswers } = this.props;\n\n return correctAnswers[rowId][rowValueIndex] === rowValue && rowValue === true;\n };\n\n // needs a separate method because what isn't correct isn't necessarily incorrect\n answerIsIncorrect = (rowId, rowValue, rowValueIndex) => {\n const { correctAnswers } = this.props;\n\n return (\n (correctAnswers[rowId][rowValueIndex] === true && rowValue === false) ||\n (correctAnswers[rowId][rowValueIndex] === false && rowValue === true)\n );\n };\n\n render() {\n const { classes, showCorrect, headers, rows, choiceMode, answers, disabled, view } = this.props;\n const Tag = choiceMode === 'radio' ? Radio : Checkbox;\n const evaluate = disabled && !view;\n\n if (!rows || rows.length === 0) {\n return (\n <div className={classes.controlsContainer}>\n <Typography className={classes.empty} component=\"div\">\n There are currently no questions to show.\n </Typography>\n </div>\n );\n }\n\n return (\n <div className={classes.controlsContainer}>\n <table className={classes.table}>\n <colgroup>\n {(headers || []).map((header, idx) => (\n <col key={`col-${idx}`} />\n ))}\n </colgroup>\n\n <thead>\n <tr>\n {(headers || []).map((header, idx) => (\n <th className={classes.rowHeader} key={`th-${idx}`} data-colno={`${idx}`} scope=\"row\">\n <div\n className={cx(classes.rowItem, { [classes.questionText]: idx === 0 })}\n dangerouslySetInnerHTML={{ __html: header }}\n />\n </th>\n ))}\n </tr>\n </thead>\n\n {(rows || []).map((row, idx) => (\n <tbody key={`row-${idx}`} role=\"group\">\n <tr className={classes.separator}>\n <td key={`td-title-${idx}`} data-colno={'0'}>\n <div\n className={cx(classes.rowItem, classes.questionText)}\n dangerouslySetInnerHTML={{ __html: row.title }}\n />\n </td>\n\n {(answers[row.id] || []).map((rowItem, answerIndex) => (\n <td key={`td-${idx}-${answerIndex}`} className={classes.column} data-colno={`${answerIndex + 1}`}>\n <div className={classes.rowItem}>\n <Tag\n className={cx(classes.tag, {\n [classes.correct]:\n (showCorrect && rowItem === true) ||\n (evaluate && this.answerIsCorrect(row.id, rowItem, answerIndex)),\n [classes.checked]: rowItem === true && !evaluate,\n [classes.tagDisabled]: disabled,\n [classes.incorrect]: evaluate && this.answerIsIncorrect(row.id, rowItem, answerIndex),\n })}\n disabled={disabled}\n onChange={this.onRowValueChange(row.id, answerIndex)}\n checked={rowItem === true}\n />\n </div>\n </td>\n ))}\n </tr>\n </tbody>\n ))}\n </table>\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n controlsContainer: {\n marginLeft: 'auto',\n marginRight: 'auto',\n marginTop: theme.spacing.unit,\n marginBottom: theme.spacing.unit,\n },\n column: {\n padding: '5px 0',\n },\n correct: {\n color: `${color.correct()} !important`,\n },\n incorrect: {\n color: `${color.incorrect()} !important`,\n },\n empty: {\n margin: theme.spacing.unit * 2,\n },\n rowContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n rowHeader: {\n padding: 0,\n },\n rowItem: {\n padding: theme.spacing.unit * 1.5,\n textAlign: 'center',\n },\n separator: {\n border: 0,\n borderTop: `2.5px solid ${color.primaryLight()}`,\n width: '100%',\n },\n tag: {\n padding: '6px',\n color: color.text(),\n '&:hover': {\n color: color.primaryLight(),\n },\n '& input': {\n width: '100% !important',\n },\n },\n checked: {\n color: `${color.primary()} !important`,\n },\n tagDisabled: {\n color: color.disabled(),\n cursor: 'not-allowed !important',\n pointerEvents: 'initial !important',\n opacity: 0.7,\n '&:hover': {\n color: color.disabled(),\n },\n },\n table: {\n color: color.text(),\n backgroundColor: color.background(),\n borderCollapse: 'collapse',\n borderSpacing: 0,\n marginBottom: 0,\n },\n questionText: {\n textAlign: 'left',\n },\n});\n\nexport default withStyles(styles)(AnswerGrid);\n"],"file":"answer-grid.js"}
|
|
1
|
+
{"version":3,"file":"answer-grid.js","names":["_react","_interopRequireDefault","require","_propTypes","_Radio","_Checkbox","_Typography","_styles","_renderUi","ControlsContainer","styled","theme","marginLeft","marginRight","marginTop","spacing","marginBottom","Column","padding","EmptyTypography","Typography","margin","RowHeader","RowItem","isQuestionText","textAlign","Separator","border","borderTop","color","primaryLight","width","Table","text","backgroundColor","background","borderCollapse","borderSpacing","AnswerGrid","React","Component","constructor","args","_defineProperty2","default","rowId","answerIndex","event","onAnswerChange","choiceMode","answers","props","newAnswers","i","length","target","checked","rowValue","rowValueIndex","correctAnswers","render","showCorrect","headers","rows","disabled","view","Tag","Radio","Checkbox","evaluate","createElement","component","map","header","idx","key","scope","dangerouslySetInnerHTML","__html","row","role","title","id","rowItem","sx","answerIsCorrect","correct","answerIsIncorrect","incorrect","primary","cursor","pointerEvents","opacity","onChange","onRowValueChange","exports","PropTypes","object","bool","isRequired","func","string","array","_default"],"sources":["../src/answer-grid.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Radio from '@mui/material/Radio';\nimport Checkbox from '@mui/material/Checkbox';\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\nimport { color } from '@pie-lib/render-ui';\n\nconst ControlsContainer = styled('div')(({ theme }) => ({\n marginLeft: 'auto',\n marginRight: 'auto',\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n}));\n\nconst Column = styled('td')({\n padding: '5px 0',\n});\n\nconst EmptyTypography = styled(Typography)(({ theme }) => ({\n margin: theme.spacing(2),\n}));\n\nconst RowHeader = styled('th')({\n padding: 0,\n});\n\nconst RowItem = styled('div')(({ theme, isQuestionText }) => ({\n padding: theme.spacing(1.5),\n textAlign: isQuestionText ? 'left' : 'center',\n}));\n\nconst Separator = styled('tr')({\n border: 0,\n borderTop: `2.5px solid ${color.primaryLight()}`,\n width: '100%',\n});\n\nconst Table = styled('table')({\n color: color.text(),\n backgroundColor: color.background(),\n borderCollapse: 'collapse',\n borderSpacing: 0,\n marginBottom: 0,\n});\n\nexport class AnswerGrid extends React.Component {\n static propTypes = {\n correctAnswers: PropTypes.object,\n view: PropTypes.bool.isRequired,\n showCorrect: PropTypes.bool.isRequired,\n disabled: PropTypes.bool.isRequired,\n onAnswerChange: PropTypes.func.isRequired,\n choiceMode: PropTypes.string.isRequired,\n rows: PropTypes.array.isRequired,\n headers: PropTypes.array.isRequired,\n answers: PropTypes.object.isRequired,\n };\n\n onRowValueChange = (rowId, answerIndex) => (event) => {\n const { onAnswerChange, choiceMode, answers } = this.props;\n const newAnswers = { ...answers };\n\n if (choiceMode === 'radio') {\n for (let i = 0; i < newAnswers[rowId].length; i++) {\n newAnswers[rowId][i] = false;\n }\n }\n\n newAnswers[rowId][answerIndex] = event.target.checked;\n\n onAnswerChange(newAnswers);\n };\n\n answerIsCorrect = (rowId, rowValue, rowValueIndex) => {\n const { correctAnswers } = this.props;\n\n return correctAnswers[rowId][rowValueIndex] === rowValue && rowValue === true;\n };\n\n // needs a separate method because what isn't correct isn't necessarily incorrect\n answerIsIncorrect = (rowId, rowValue, rowValueIndex) => {\n const { correctAnswers } = this.props;\n\n return (\n (correctAnswers[rowId][rowValueIndex] === true && rowValue === false) ||\n (correctAnswers[rowId][rowValueIndex] === false && rowValue === true)\n );\n };\n\n render() {\n const { showCorrect, headers, rows, choiceMode, answers, disabled, view } = this.props;\n const Tag = choiceMode === 'radio' ? Radio : Checkbox;\n const evaluate = disabled && !view;\n\n if (!rows || rows.length === 0) {\n return (\n <ControlsContainer>\n <EmptyTypography component=\"div\">\n There are currently no questions to show.\n </EmptyTypography>\n </ControlsContainer>\n );\n }\n\n return (\n <ControlsContainer>\n <Table>\n <colgroup>\n {(headers || []).map((header, idx) => (\n <col key={`col-${idx}`} />\n ))}\n </colgroup>\n\n <thead>\n <tr>\n {(headers || []).map((header, idx) => (\n <RowHeader key={`th-${idx}`} data-colno={`${idx}`} scope=\"row\">\n <RowItem\n isQuestionText={idx === 0}\n dangerouslySetInnerHTML={{ __html: header }}\n />\n </RowHeader>\n ))}\n </tr>\n </thead>\n\n {(rows || []).map((row, idx) => (\n <tbody key={`row-${idx}`} role=\"group\">\n <Separator>\n <td key={`td-title-${idx}`} data-colno={'0'}>\n <RowItem\n isQuestionText={true}\n dangerouslySetInnerHTML={{ __html: row.title }}\n />\n </td>\n\n {(answers[row.id] || []).map((rowItem, answerIndex) => (\n <Column key={`td-${idx}-${answerIndex}`} data-colno={`${answerIndex + 1}`}>\n <RowItem>\n <Tag\n sx={{\n padding: '6px',\n color: (showCorrect && rowItem === true) ||\n (evaluate && this.answerIsCorrect(row.id, rowItem, answerIndex)) \n ? color.correct() :\n evaluate && this.answerIsIncorrect(row.id, rowItem, answerIndex)\n ? color.incorrect() :\n rowItem === true && !evaluate\n ? color.primary() :\n disabled \n ? color.disabled() : color.text(),\n cursor: disabled ? 'not-allowed' : 'pointer',\n pointerEvents: disabled ? 'initial' : 'auto',\n opacity: disabled ? 0.7 : 1,\n '& input': {\n width: '100% !important',\n },\n '&:hover': {\n color: disabled ? color.disabled() : color.primaryLight(),\n },\n }}\n disabled={disabled}\n onChange={this.onRowValueChange(row.id, answerIndex)}\n checked={rowItem === true}\n />\n </RowItem>\n </Column>\n ))}\n </Separator>\n </tbody>\n ))}\n </Table>\n </ControlsContainer>\n );\n }\n}\n\nexport default AnswerGrid;\n"],"mappings":"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","ignoreList":[]}
|
package/lib/index.js
CHANGED
|
@@ -1,134 +1,85 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
Object.defineProperty(exports, "Component", {
|
|
9
8
|
enumerable: true,
|
|
10
|
-
get: function
|
|
11
|
-
return _main
|
|
9
|
+
get: function () {
|
|
10
|
+
return _main.default;
|
|
12
11
|
}
|
|
13
12
|
});
|
|
14
|
-
exports.isComplete = exports
|
|
15
|
-
|
|
16
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
|
-
|
|
18
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
19
|
-
|
|
20
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
21
|
-
|
|
22
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
23
|
-
|
|
24
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
25
|
-
|
|
26
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
27
|
-
|
|
28
|
-
var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
|
|
29
|
-
|
|
13
|
+
exports.isComplete = exports.default = void 0;
|
|
30
14
|
var _react = _interopRequireDefault(require("react"));
|
|
31
|
-
|
|
32
|
-
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
33
|
-
|
|
15
|
+
var _client = require("react-dom/client");
|
|
34
16
|
var _main = _interopRequireDefault(require("./main"));
|
|
35
|
-
|
|
36
17
|
var _piePlayerEvents = require("@pie-framework/pie-player-events");
|
|
37
|
-
|
|
38
18
|
var _mathRendering = require("@pie-lib/math-rendering");
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
43
|
-
|
|
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
|
-
|
|
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
|
-
|
|
48
|
-
var isComplete = function isComplete(session, model) {
|
|
49
|
-
var _model$rows;
|
|
50
|
-
|
|
51
|
-
var ids = (model === null || model === void 0 ? void 0 : (_model$rows = model.rows) === null || _model$rows === void 0 ? void 0 : _model$rows.map(function (r) {
|
|
52
|
-
return r.id;
|
|
53
|
-
})) || [];
|
|
54
|
-
return ids.reduce(function (acc, id) {
|
|
19
|
+
const isComplete = (session, model) => {
|
|
20
|
+
const ids = model?.rows?.map(r => r.id) || [];
|
|
21
|
+
return ids.reduce((acc, id) => {
|
|
55
22
|
if (!acc) {
|
|
56
23
|
return false;
|
|
57
24
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
var hasChoice = Array.isArray(arr) && arr.includes(true);
|
|
25
|
+
const arr = session.answers && session.answers[id];
|
|
26
|
+
const hasChoice = Array.isArray(arr) && arr.includes(true);
|
|
61
27
|
return hasChoice && acc;
|
|
62
28
|
}, true);
|
|
63
29
|
};
|
|
64
|
-
|
|
65
30
|
exports.isComplete = isComplete;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
var _super = _createSuper(Match);
|
|
71
|
-
|
|
72
|
-
function Match() {
|
|
73
|
-
(0, _classCallCheck2["default"])(this, Match);
|
|
74
|
-
return _super.call(this);
|
|
31
|
+
class Match extends HTMLElement {
|
|
32
|
+
constructor() {
|
|
33
|
+
super();
|
|
34
|
+
this._root = null;
|
|
75
35
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
36
|
+
set model(m) {
|
|
37
|
+
// config object props should be part of the model props
|
|
38
|
+
// model.config should be no longer used
|
|
39
|
+
this._model = {
|
|
40
|
+
...m,
|
|
41
|
+
...(m?.config || {})
|
|
42
|
+
};
|
|
43
|
+
this._render();
|
|
44
|
+
}
|
|
45
|
+
set session(s) {
|
|
46
|
+
this._session = s;
|
|
47
|
+
this._render();
|
|
48
|
+
}
|
|
49
|
+
get session() {
|
|
50
|
+
return this._session;
|
|
51
|
+
}
|
|
52
|
+
sessionChanged(s) {
|
|
53
|
+
this._session.answers = s.answers;
|
|
54
|
+
const complete = isComplete(this._session, this._model);
|
|
55
|
+
this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(this.tagName.toLowerCase(), complete));
|
|
56
|
+
this._render();
|
|
57
|
+
}
|
|
58
|
+
connectedCallback() {
|
|
59
|
+
this._render();
|
|
60
|
+
}
|
|
61
|
+
_render() {
|
|
62
|
+
if (!this._model || !this._session) {
|
|
63
|
+
return;
|
|
104
64
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
this.
|
|
65
|
+
const el = /*#__PURE__*/_react.default.createElement(_main.default, {
|
|
66
|
+
model: this._model,
|
|
67
|
+
session: this._session,
|
|
68
|
+
onSessionChange: this.sessionChanged.bind(this)
|
|
69
|
+
});
|
|
70
|
+
if (!this._root) {
|
|
71
|
+
this._root = (0, _client.createRoot)(this);
|
|
109
72
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
var el = /*#__PURE__*/_react["default"].createElement(_main["default"], {
|
|
120
|
-
model: this._model,
|
|
121
|
-
session: this._session,
|
|
122
|
-
onSessionChange: this.sessionChanged.bind(this)
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
_reactDom["default"].render(el, this, function () {
|
|
126
|
-
(0, _mathRendering.renderMath)(_this);
|
|
127
|
-
});
|
|
73
|
+
this._root.render(el);
|
|
74
|
+
queueMicrotask(() => {
|
|
75
|
+
(0, _mathRendering.renderMath)(this);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
disconnectedCallback() {
|
|
79
|
+
if (this._root) {
|
|
80
|
+
this._root.unmount();
|
|
128
81
|
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
exports["default"] = Match;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.default = Match;
|
|
134
85
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_client","_main","_piePlayerEvents","_mathRendering","isComplete","session","model","ids","rows","map","r","id","reduce","acc","arr","answers","hasChoice","Array","isArray","includes","exports","Match","HTMLElement","constructor","_root","m","_model","config","_render","s","_session","sessionChanged","complete","dispatchEvent","SessionChangedEvent","tagName","toLowerCase","connectedCallback","el","React","createElement","Main","onSessionChange","bind","createRoot","render","queueMicrotask","renderMath","disconnectedCallback","unmount","default"],"sources":["../src/index.js"],"sourcesContent":["import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport Main from './main';\nimport { SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport { renderMath } from '@pie-lib/math-rendering';\n\nexport { Main as Component };\n\nexport const isComplete = (session, model) => {\n const ids = model?.rows?.map((r) => r.id) || [];\n\n return ids.reduce((acc, id) => {\n if (!acc) {\n return false;\n }\n\n const arr = session.answers && session.answers[id];\n const hasChoice = Array.isArray(arr) && arr.includes(true);\n\n return hasChoice && acc;\n }, true);\n};\n\nexport default class Match extends HTMLElement {\n constructor() {\n super();\n this._root = null;\n }\n\n set model(m) {\n // config object props should be part of the model props\n // model.config should be no longer used\n this._model = { ...m, ...(m?.config || {}) };\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.answers = s.answers;\n const complete = isComplete(this._session, this._model);\n\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), complete));\n\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 if (!this._root) {\n this._root = createRoot(this);\n }\n this._root.render(el);\n queueMicrotask(() => {\n renderMath(this);\n });\n }\n\n disconnectedCallback() {\n if (this._root) {\n this._root.unmount();\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|