@pie-element/match 12.1.2-next.5 → 12.1.3
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.json +1462 -0
- package/CHANGELOG.md +2343 -0
- package/LICENSE.md +5 -0
- package/README.md +1 -0
- package/configure/CHANGELOG.json +892 -0
- package/configure/CHANGELOG.md +2046 -0
- package/configure/lib/add-row.js +40 -0
- package/configure/lib/add-row.js.map +1 -0
- package/configure/lib/answer-config-block.js +288 -0
- package/configure/lib/answer-config-block.js.map +1 -0
- package/configure/lib/common.js +31 -0
- package/configure/lib/common.js.map +1 -0
- package/configure/lib/configure.js +410 -0
- package/configure/lib/configure.js.map +1 -0
- package/configure/lib/defaults.js +201 -0
- package/configure/lib/defaults.js.map +1 -0
- package/configure/lib/general-config-block.js +144 -0
- package/configure/lib/general-config-block.js.map +1 -0
- package/configure/lib/index.js +152 -0
- package/configure/lib/index.js.map +1 -0
- package/configure/lib/row.js +321 -0
- package/configure/lib/row.js.map +1 -0
- package/configure/lib/utils.js +12 -0
- package/configure/lib/utils.js.map +1 -0
- package/configure/package.json +29 -0
- package/configure/utils.js +19 -0
- package/controller/CHANGELOG.json +502 -0
- package/controller/CHANGELOG.md +1363 -0
- package/controller/lib/defaults.js +25 -0
- package/controller/lib/defaults.js.map +1 -0
- package/controller/lib/index.js +424 -0
- package/controller/lib/index.js.map +1 -0
- package/controller/package.json +24 -0
- package/docs/config-schema.json +2929 -0
- package/docs/config-schema.json.md +2162 -0
- package/docs/demo/config.js +8 -0
- package/docs/demo/generate.js +49 -0
- package/docs/demo/index.html +1 -0
- package/docs/demo/session.js +11 -0
- package/docs/pie-schema.json +1530 -0
- package/docs/pie-schema.json.md +907 -0
- package/lib/answer-grid.js +166 -0
- package/lib/answer-grid.js.map +1 -0
- package/lib/index.js +85 -0
- package/lib/index.js.map +1 -0
- package/lib/main.js +163 -0
- package/lib/main.js.map +1 -0
- package/package.json +21 -87
- package/configure.js +0 -2
- package/controller.js +0 -1
- package/dist/author/add-row.d.ts +0 -17
- package/dist/author/add-row.js +0 -24
- package/dist/author/answer-config-block.d.ts +0 -36
- package/dist/author/answer-config-block.js +0 -176
- package/dist/author/common.d.ts +0 -22
- package/dist/author/configure.d.ts +0 -48
- package/dist/author/configure.js +0 -259
- package/dist/author/defaults.d.ts +0 -203
- package/dist/author/defaults.js +0 -151
- package/dist/author/general-config-block.d.ts +0 -22
- package/dist/author/general-config-block.js +0 -93
- package/dist/author/index.d.ts +0 -44
- package/dist/author/index.js +0 -76
- package/dist/author/row.d.ts +0 -51
- package/dist/author/row.js +0 -204
- package/dist/author/utils.d.ts +0 -10
- package/dist/author/utils.js +0 -10
- package/dist/browser/Typography-BRnAIZOH.js +0 -9224
- package/dist/browser/Typography-BRnAIZOH.js.map +0 -1
- package/dist/browser/author/index.js +0 -47499
- package/dist/browser/author/index.js.map +0 -1
- package/dist/browser/browser-kkT1XVKw.js +0 -219
- package/dist/browser/browser-kkT1XVKw.js.map +0 -1
- package/dist/browser/controller/index.js +0 -267
- package/dist/browser/controller/index.js.map +0 -1
- package/dist/browser/delivery/index.js +0 -1984
- package/dist/browser/delivery/index.js.map +0 -1
- package/dist/browser/dist-Dmwvrh9y.js +0 -104
- package/dist/browser/dist-Dmwvrh9y.js.map +0 -1
- package/dist/browser/match.css +0 -2
- package/dist/controller/defaults.d.ts +0 -27
- package/dist/controller/defaults.js +0 -25
- package/dist/controller/index.d.ts +0 -29
- package/dist/controller/index.js +0 -154
- package/dist/delivery/answer-grid.d.ts +0 -28
- package/dist/delivery/answer-grid.js +0 -99
- package/dist/delivery/index.d.ts +0 -21
- package/dist/delivery/index.js +0 -51
- package/dist/delivery/main.d.ts +0 -26
- package/dist/delivery/main.js +0 -112
- package/dist/index.d.ts +0 -1
- package/dist/index.iife.d.ts +0 -8
- package/dist/index.iife.js +0 -148
- package/dist/index.js +0 -2
- package/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js +0 -16
- package/dist/runtime-support.d.ts +0 -12
- package/dist/runtime-support.js +0 -12
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = exports.AnswerGrid = void 0;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
var _Radio = _interopRequireDefault(require("@mui/material/Radio"));
|
|
12
|
+
var _Checkbox = _interopRequireDefault(require("@mui/material/Checkbox"));
|
|
13
|
+
var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
|
|
14
|
+
var _styles = require("@mui/material/styles");
|
|
15
|
+
var _renderUi = require("@pie-lib/render-ui");
|
|
16
|
+
const ControlsContainer = (0, _styles.styled)('div')(({
|
|
17
|
+
theme
|
|
18
|
+
}) => ({
|
|
19
|
+
marginLeft: 'auto',
|
|
20
|
+
marginRight: 'auto',
|
|
21
|
+
marginTop: theme.spacing(1),
|
|
22
|
+
marginBottom: theme.spacing(1)
|
|
23
|
+
}));
|
|
24
|
+
const Column = (0, _styles.styled)('td')({
|
|
25
|
+
padding: '5px 0'
|
|
26
|
+
});
|
|
27
|
+
const EmptyTypography = (0, _styles.styled)(_Typography.default)(({
|
|
28
|
+
theme
|
|
29
|
+
}) => ({
|
|
30
|
+
margin: theme.spacing(2)
|
|
31
|
+
}));
|
|
32
|
+
const RowHeader = (0, _styles.styled)('th')({
|
|
33
|
+
padding: 0
|
|
34
|
+
});
|
|
35
|
+
const RowItem = (0, _styles.styled)('div')(({
|
|
36
|
+
theme,
|
|
37
|
+
isQuestionText
|
|
38
|
+
}) => ({
|
|
39
|
+
padding: theme.spacing(1.5),
|
|
40
|
+
textAlign: isQuestionText ? 'left' : 'center'
|
|
41
|
+
}));
|
|
42
|
+
const Separator = (0, _styles.styled)('tr')({
|
|
43
|
+
border: 0,
|
|
44
|
+
borderTop: `2.5px solid ${_renderUi.color.primaryLight()}`,
|
|
45
|
+
width: '100%'
|
|
46
|
+
});
|
|
47
|
+
const Table = (0, _styles.styled)('table')({
|
|
48
|
+
color: _renderUi.color.text(),
|
|
49
|
+
backgroundColor: _renderUi.color.background(),
|
|
50
|
+
borderCollapse: 'collapse',
|
|
51
|
+
borderSpacing: 0,
|
|
52
|
+
marginBottom: 0
|
|
53
|
+
});
|
|
54
|
+
class AnswerGrid extends _react.default.Component {
|
|
55
|
+
constructor(...args) {
|
|
56
|
+
super(...args);
|
|
57
|
+
(0, _defineProperty2.default)(this, "onRowValueChange", (rowId, answerIndex) => event => {
|
|
58
|
+
const {
|
|
59
|
+
onAnswerChange,
|
|
60
|
+
choiceMode,
|
|
61
|
+
answers
|
|
62
|
+
} = this.props;
|
|
63
|
+
const newAnswers = {
|
|
64
|
+
...answers
|
|
65
|
+
};
|
|
66
|
+
if (choiceMode === 'radio') {
|
|
67
|
+
for (let i = 0; i < newAnswers[rowId].length; i++) {
|
|
68
|
+
newAnswers[rowId][i] = false;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
newAnswers[rowId][answerIndex] = event.target.checked;
|
|
72
|
+
onAnswerChange(newAnswers);
|
|
73
|
+
});
|
|
74
|
+
(0, _defineProperty2.default)(this, "answerIsCorrect", (rowId, rowValue, rowValueIndex) => {
|
|
75
|
+
const {
|
|
76
|
+
correctAnswers
|
|
77
|
+
} = this.props;
|
|
78
|
+
return correctAnswers[rowId][rowValueIndex] === rowValue && rowValue === true;
|
|
79
|
+
});
|
|
80
|
+
// needs a separate method because what isn't correct isn't necessarily incorrect
|
|
81
|
+
(0, _defineProperty2.default)(this, "answerIsIncorrect", (rowId, rowValue, rowValueIndex) => {
|
|
82
|
+
const {
|
|
83
|
+
correctAnswers
|
|
84
|
+
} = this.props;
|
|
85
|
+
return correctAnswers[rowId][rowValueIndex] === true && rowValue === false || correctAnswers[rowId][rowValueIndex] === false && rowValue === true;
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
render() {
|
|
89
|
+
const {
|
|
90
|
+
showCorrect,
|
|
91
|
+
headers,
|
|
92
|
+
rows,
|
|
93
|
+
choiceMode,
|
|
94
|
+
answers,
|
|
95
|
+
disabled,
|
|
96
|
+
view
|
|
97
|
+
} = this.props;
|
|
98
|
+
const Tag = choiceMode === 'radio' ? _Radio.default : _Checkbox.default;
|
|
99
|
+
const evaluate = disabled && !view;
|
|
100
|
+
if (!rows || rows.length === 0) {
|
|
101
|
+
return /*#__PURE__*/_react.default.createElement(ControlsContainer, null, /*#__PURE__*/_react.default.createElement(EmptyTypography, {
|
|
102
|
+
component: "div"
|
|
103
|
+
}, "There are currently no questions to show."));
|
|
104
|
+
}
|
|
105
|
+
return /*#__PURE__*/_react.default.createElement(ControlsContainer, null, /*#__PURE__*/_react.default.createElement(Table, null, /*#__PURE__*/_react.default.createElement("colgroup", null, (headers || []).map((header, idx) => /*#__PURE__*/_react.default.createElement("col", {
|
|
106
|
+
key: `col-${idx}`
|
|
107
|
+
}))), /*#__PURE__*/_react.default.createElement("thead", null, /*#__PURE__*/_react.default.createElement("tr", null, (headers || []).map((header, idx) => /*#__PURE__*/_react.default.createElement(RowHeader, {
|
|
108
|
+
key: `th-${idx}`,
|
|
109
|
+
"data-colno": `${idx}`,
|
|
110
|
+
scope: "row"
|
|
111
|
+
}, /*#__PURE__*/_react.default.createElement(RowItem, {
|
|
112
|
+
isQuestionText: idx === 0,
|
|
113
|
+
dangerouslySetInnerHTML: {
|
|
114
|
+
__html: header
|
|
115
|
+
}
|
|
116
|
+
}))))), (rows || []).map((row, idx) => /*#__PURE__*/_react.default.createElement("tbody", {
|
|
117
|
+
key: `row-${idx}`,
|
|
118
|
+
role: "group"
|
|
119
|
+
}, /*#__PURE__*/_react.default.createElement(Separator, null, /*#__PURE__*/_react.default.createElement("td", {
|
|
120
|
+
key: `td-title-${idx}`,
|
|
121
|
+
"data-colno": '0'
|
|
122
|
+
}, /*#__PURE__*/_react.default.createElement(RowItem, {
|
|
123
|
+
isQuestionText: true,
|
|
124
|
+
dangerouslySetInnerHTML: {
|
|
125
|
+
__html: row.title
|
|
126
|
+
}
|
|
127
|
+
})), (answers[row.id] || []).map((rowItem, answerIndex) => /*#__PURE__*/_react.default.createElement(Column, {
|
|
128
|
+
key: `td-${idx}-${answerIndex}`,
|
|
129
|
+
"data-colno": `${answerIndex + 1}`
|
|
130
|
+
}, /*#__PURE__*/_react.default.createElement(RowItem, null, /*#__PURE__*/_react.default.createElement(Tag, {
|
|
131
|
+
sx: {
|
|
132
|
+
padding: '6px',
|
|
133
|
+
color: showCorrect && rowItem === true || evaluate && this.answerIsCorrect(row.id, rowItem, answerIndex) ? _renderUi.color.correct() : evaluate && this.answerIsIncorrect(row.id, rowItem, answerIndex) ? _renderUi.color.incorrect() : rowItem === true && !evaluate ? _renderUi.color.primary() : disabled ? _renderUi.color.disabled() : _renderUi.color.text(),
|
|
134
|
+
cursor: disabled ? 'not-allowed' : 'pointer',
|
|
135
|
+
pointerEvents: disabled ? 'initial' : 'auto',
|
|
136
|
+
opacity: disabled ? 0.7 : 1,
|
|
137
|
+
'& input': {
|
|
138
|
+
width: '100% !important'
|
|
139
|
+
},
|
|
140
|
+
'&:hover': {
|
|
141
|
+
color: disabled ? _renderUi.color.disabled() : _renderUi.color.primaryLight()
|
|
142
|
+
},
|
|
143
|
+
'&.Mui-disabled': {
|
|
144
|
+
color: `${showCorrect && rowItem === true || evaluate && this.answerIsCorrect(row.id, rowItem, answerIndex) ? _renderUi.color.correct() : evaluate && this.answerIsIncorrect(row.id, rowItem, answerIndex) ? _renderUi.color.incorrect() : rowItem === true && !evaluate ? _renderUi.color.primary() : _renderUi.color.disabled()}`
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
disabled: disabled,
|
|
148
|
+
onChange: this.onRowValueChange(row.id, answerIndex),
|
|
149
|
+
checked: rowItem === true
|
|
150
|
+
})))))))));
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
exports.AnswerGrid = AnswerGrid;
|
|
154
|
+
(0, _defineProperty2.default)(AnswerGrid, "propTypes", {
|
|
155
|
+
correctAnswers: _propTypes.default.object,
|
|
156
|
+
view: _propTypes.default.bool.isRequired,
|
|
157
|
+
showCorrect: _propTypes.default.bool.isRequired,
|
|
158
|
+
disabled: _propTypes.default.bool.isRequired,
|
|
159
|
+
onAnswerChange: _propTypes.default.func.isRequired,
|
|
160
|
+
choiceMode: _propTypes.default.string.isRequired,
|
|
161
|
+
rows: _propTypes.default.array.isRequired,
|
|
162
|
+
headers: _propTypes.default.array.isRequired,
|
|
163
|
+
answers: _propTypes.default.object.isRequired
|
|
164
|
+
});
|
|
165
|
+
var _default = exports.default = AnswerGrid;
|
|
166
|
+
//# sourceMappingURL=answer-grid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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 '&.Mui-disabled': {\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 color.disabled()}`,\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
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
Object.defineProperty(exports, "Component", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return _main.default;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
exports.isComplete = exports.default = void 0;
|
|
14
|
+
var _react = _interopRequireDefault(require("react"));
|
|
15
|
+
var _client = require("react-dom/client");
|
|
16
|
+
var _main = _interopRequireDefault(require("./main"));
|
|
17
|
+
var _piePlayerEvents = require("@pie-framework/pie-player-events");
|
|
18
|
+
var _mathRendering = require("@pie-lib/math-rendering");
|
|
19
|
+
const isComplete = (session, model) => {
|
|
20
|
+
const ids = model?.rows?.map(r => r.id) || [];
|
|
21
|
+
return ids.reduce((acc, id) => {
|
|
22
|
+
if (!acc) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
const arr = session.answers && session.answers[id];
|
|
26
|
+
const hasChoice = Array.isArray(arr) && arr.includes(true);
|
|
27
|
+
return hasChoice && acc;
|
|
28
|
+
}, true);
|
|
29
|
+
};
|
|
30
|
+
exports.isComplete = isComplete;
|
|
31
|
+
class Match extends HTMLElement {
|
|
32
|
+
constructor() {
|
|
33
|
+
super();
|
|
34
|
+
this._root = null;
|
|
35
|
+
}
|
|
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;
|
|
64
|
+
}
|
|
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);
|
|
72
|
+
}
|
|
73
|
+
this._root.render(el);
|
|
74
|
+
queueMicrotask(() => {
|
|
75
|
+
(0, _mathRendering.renderMath)(this);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
disconnectedCallback() {
|
|
79
|
+
if (this._root) {
|
|
80
|
+
this._root.unmount();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.default = Match;
|
|
85
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
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":[]}
|
package/lib/main.js
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = exports.Main = void 0;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
|
|
12
|
+
var _renderUi = require("@pie-lib/render-ui");
|
|
13
|
+
var _answerGrid = _interopRequireDefault(require("./answer-grid"));
|
|
14
|
+
var _styles = require("@mui/material/styles");
|
|
15
|
+
const StyledPrompt = (0, _styles.styled)('div')({
|
|
16
|
+
verticalAlign: 'middle'
|
|
17
|
+
});
|
|
18
|
+
const StyledCollapsible = (0, _styles.styled)(_renderUi.Collapsible)(({
|
|
19
|
+
theme
|
|
20
|
+
}) => ({
|
|
21
|
+
marginBottom: theme.spacing(2)
|
|
22
|
+
}));
|
|
23
|
+
class Main extends _react.default.Component {
|
|
24
|
+
constructor(props) {
|
|
25
|
+
super(props);
|
|
26
|
+
(0, _defineProperty2.default)(this, "generateAnswers", model => {
|
|
27
|
+
const answers = {};
|
|
28
|
+
model.rows?.forEach(row => {
|
|
29
|
+
answers[row.id] = new Array(model.layout - 1).fill(false);
|
|
30
|
+
});
|
|
31
|
+
return answers;
|
|
32
|
+
});
|
|
33
|
+
(0, _defineProperty2.default)(this, "isAnswerRegenerationRequired", nextProps => {
|
|
34
|
+
const {
|
|
35
|
+
model: {
|
|
36
|
+
choiceMode,
|
|
37
|
+
layout,
|
|
38
|
+
rows
|
|
39
|
+
} = {}
|
|
40
|
+
} = this.props;
|
|
41
|
+
const {
|
|
42
|
+
session: {
|
|
43
|
+
answers
|
|
44
|
+
} = {}
|
|
45
|
+
} = nextProps;
|
|
46
|
+
let isRequired = false;
|
|
47
|
+
if (choiceMode !== nextProps.model.choiceMode) {
|
|
48
|
+
isRequired = true;
|
|
49
|
+
}
|
|
50
|
+
if (layout !== nextProps.model.layout) {
|
|
51
|
+
isRequired = true;
|
|
52
|
+
}
|
|
53
|
+
if (rows.length !== nextProps.model.rows.length || answers && nextProps.model.rows.length !== Object.keys(answers).length) {
|
|
54
|
+
isRequired = true;
|
|
55
|
+
}
|
|
56
|
+
return isRequired || !answers;
|
|
57
|
+
});
|
|
58
|
+
(0, _defineProperty2.default)(this, "callOnSessionChange", () => {
|
|
59
|
+
const {
|
|
60
|
+
onSessionChange
|
|
61
|
+
} = this.props;
|
|
62
|
+
if (onSessionChange) {
|
|
63
|
+
onSessionChange(this.state.session);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
(0, _defineProperty2.default)(this, "toggleShowCorrect", show => {
|
|
67
|
+
this.setState({
|
|
68
|
+
showCorrect: show
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
(0, _defineProperty2.default)(this, "onAnswerChange", newAnswers => {
|
|
72
|
+
this.setState(state => ({
|
|
73
|
+
session: {
|
|
74
|
+
...state.session,
|
|
75
|
+
answers: newAnswers
|
|
76
|
+
}
|
|
77
|
+
}), this.callOnSessionChange);
|
|
78
|
+
});
|
|
79
|
+
this.state = {
|
|
80
|
+
session: {
|
|
81
|
+
...props.session,
|
|
82
|
+
answers: props.session && props.session.answers || this.generateAnswers(props.model)
|
|
83
|
+
},
|
|
84
|
+
showCorrect: false
|
|
85
|
+
};
|
|
86
|
+
this.callOnSessionChange();
|
|
87
|
+
}
|
|
88
|
+
UNSAFE_componentWillReceiveProps(nextProps) {
|
|
89
|
+
const regenAnswers = this.isAnswerRegenerationRequired(nextProps);
|
|
90
|
+
this.setState(state => ({
|
|
91
|
+
session: {
|
|
92
|
+
...nextProps.session,
|
|
93
|
+
// regenerate answers if layout or choiceMode change
|
|
94
|
+
answers: regenAnswers ? this.generateAnswers(nextProps.model) : nextProps.session.answers
|
|
95
|
+
},
|
|
96
|
+
showCorrect: this.props.model.disabled && !nextProps.model.disabled && state.showCorrect ? false : state.showCorrect
|
|
97
|
+
}), () => {
|
|
98
|
+
if (regenAnswers) this.callOnSessionChange();
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
render() {
|
|
102
|
+
const {
|
|
103
|
+
model
|
|
104
|
+
} = this.props;
|
|
105
|
+
const {
|
|
106
|
+
showCorrect,
|
|
107
|
+
session
|
|
108
|
+
} = this.state;
|
|
109
|
+
const {
|
|
110
|
+
correctness = {},
|
|
111
|
+
extraCSSRules,
|
|
112
|
+
language
|
|
113
|
+
} = model;
|
|
114
|
+
const showCorrectAnswerToggle = correctness.correctness && correctness.correctness !== 'correct';
|
|
115
|
+
const showRationale = model.rationale && ((0, _renderUi.hasText)(model.rationale) || (0, _renderUi.hasMedia)(model.rationale));
|
|
116
|
+
const showTeacherInstructions = model.teacherInstructions && ((0, _renderUi.hasText)(model.teacherInstructions) || (0, _renderUi.hasMedia)(model.teacherInstructions));
|
|
117
|
+
return /*#__PURE__*/_react.default.createElement(_renderUi.UiLayout, {
|
|
118
|
+
extraCSSRules: extraCSSRules
|
|
119
|
+
}, showTeacherInstructions && /*#__PURE__*/_react.default.createElement(StyledCollapsible, {
|
|
120
|
+
labels: {
|
|
121
|
+
hidden: 'Show Teacher Instructions',
|
|
122
|
+
visible: 'Hide Teacher Instructions'
|
|
123
|
+
}
|
|
124
|
+
}, /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
|
|
125
|
+
prompt: model.teacherInstructions
|
|
126
|
+
})), model.prompt && /*#__PURE__*/_react.default.createElement(StyledPrompt, null, /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
|
|
127
|
+
prompt: model.prompt
|
|
128
|
+
})), /*#__PURE__*/_react.default.createElement(_correctAnswerToggle.default, {
|
|
129
|
+
language: language,
|
|
130
|
+
show: showCorrectAnswerToggle,
|
|
131
|
+
toggled: showCorrect,
|
|
132
|
+
onToggle: this.toggleShowCorrect
|
|
133
|
+
}), /*#__PURE__*/_react.default.createElement(_answerGrid.default, {
|
|
134
|
+
showCorrect: showCorrect,
|
|
135
|
+
correctAnswers: model.correctResponse,
|
|
136
|
+
disabled: model.disabled,
|
|
137
|
+
view: model.view,
|
|
138
|
+
onAnswerChange: this.onAnswerChange,
|
|
139
|
+
choiceMode: model.choiceMode,
|
|
140
|
+
answers: showCorrect ? model.correctResponse || {} : session.answers,
|
|
141
|
+
headers: model.headers,
|
|
142
|
+
rows: model.rows
|
|
143
|
+
}), showRationale && /*#__PURE__*/_react.default.createElement(_renderUi.Collapsible, {
|
|
144
|
+
labels: {
|
|
145
|
+
hidden: 'Show Rationale',
|
|
146
|
+
visible: 'Hide Rationale'
|
|
147
|
+
}
|
|
148
|
+
}, /*#__PURE__*/_react.default.createElement(_renderUi.PreviewPrompt, {
|
|
149
|
+
prompt: model.rationale
|
|
150
|
+
})), model.feedback && /*#__PURE__*/_react.default.createElement(_renderUi.Feedback, {
|
|
151
|
+
correctness: correctness.correctness,
|
|
152
|
+
feedback: model.feedback
|
|
153
|
+
}));
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
exports.Main = Main;
|
|
157
|
+
(0, _defineProperty2.default)(Main, "propTypes", {
|
|
158
|
+
session: _propTypes.default.object.isRequired,
|
|
159
|
+
onSessionChange: _propTypes.default.func,
|
|
160
|
+
model: _propTypes.default.object.isRequired
|
|
161
|
+
});
|
|
162
|
+
var _default = exports.default = Main;
|
|
163
|
+
//# sourceMappingURL=main.js.map
|
package/lib/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","names":["_react","_interopRequireDefault","require","_propTypes","_correctAnswerToggle","_renderUi","_answerGrid","_styles","StyledPrompt","styled","verticalAlign","StyledCollapsible","Collapsible","theme","marginBottom","spacing","Main","React","Component","constructor","props","_defineProperty2","default","model","answers","rows","forEach","row","id","Array","layout","fill","nextProps","choiceMode","session","isRequired","length","Object","keys","onSessionChange","state","show","setState","showCorrect","newAnswers","callOnSessionChange","generateAnswers","UNSAFE_componentWillReceiveProps","regenAnswers","isAnswerRegenerationRequired","disabled","render","correctness","extraCSSRules","language","showCorrectAnswerToggle","showRationale","rationale","hasText","hasMedia","showTeacherInstructions","teacherInstructions","createElement","UiLayout","labels","hidden","visible","PreviewPrompt","prompt","toggled","onToggle","toggleShowCorrect","correctAnswers","correctResponse","view","onAnswerChange","headers","feedback","Feedback","exports","PropTypes","object","func","_default"],"sources":["../src/main.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { Collapsible, Feedback, hasText, PreviewPrompt, UiLayout, hasMedia } from '@pie-lib/render-ui';\nimport AnswerGrid from './answer-grid';\nimport { styled } from '@mui/material/styles';\n\nconst StyledPrompt = styled('div')({\n verticalAlign: 'middle',\n});\n\nconst StyledCollapsible = styled(Collapsible)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nexport class Main extends React.Component {\n static propTypes = {\n session: PropTypes.object.isRequired,\n onSessionChange: PropTypes.func,\n model: PropTypes.object.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n session: {\n ...props.session,\n answers: (props.session && props.session.answers) || this.generateAnswers(props.model),\n },\n showCorrect: false,\n };\n\n this.callOnSessionChange();\n }\n\n generateAnswers = (model) => {\n const answers = {};\n\n model.rows?.forEach((row) => {\n answers[row.id] = new Array(model.layout - 1).fill(false);\n });\n\n return answers;\n };\n\n isAnswerRegenerationRequired = (nextProps) => {\n const { model: { choiceMode, layout, rows } = {} } = this.props;\n const { session: { answers } = {} } = nextProps;\n let isRequired = false;\n\n if (choiceMode !== nextProps.model.choiceMode) {\n isRequired = true;\n }\n\n if (layout !== nextProps.model.layout) {\n isRequired = true;\n }\n\n if (\n rows.length !== nextProps.model.rows.length ||\n (answers && nextProps.model.rows.length !== Object.keys(answers).length)\n ) {\n isRequired = true;\n }\n\n return isRequired || !answers;\n };\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const regenAnswers = this.isAnswerRegenerationRequired(nextProps);\n\n this.setState(\n (state) => ({\n session: {\n ...nextProps.session,\n // regenerate answers if layout or choiceMode change\n answers: regenAnswers ? this.generateAnswers(nextProps.model) : nextProps.session.answers,\n },\n showCorrect:\n this.props.model.disabled && !nextProps.model.disabled && state.showCorrect ? false : state.showCorrect,\n }),\n () => {\n if (regenAnswers) this.callOnSessionChange();\n },\n );\n }\n\n callOnSessionChange = () => {\n const { onSessionChange } = this.props;\n\n if (onSessionChange) {\n onSessionChange(this.state.session);\n }\n };\n\n toggleShowCorrect = (show) => {\n this.setState({ showCorrect: show });\n };\n\n onAnswerChange = (newAnswers) => {\n this.setState(\n (state) => ({\n session: {\n ...state.session,\n answers: newAnswers,\n },\n }),\n this.callOnSessionChange,\n );\n };\n\n render() {\n const { model } = this.props;\n const { showCorrect, session } = this.state;\n const { correctness = {}, extraCSSRules, language } = model;\n const showCorrectAnswerToggle = correctness.correctness && correctness.correctness !== 'correct';\n\n const showRationale = model.rationale && (hasText(model.rationale) || hasMedia(model.rationale));\n const showTeacherInstructions =\n model.teacherInstructions && (hasText(model.teacherInstructions) || hasMedia(model.teacherInstructions));\n\n return (\n <UiLayout extraCSSRules={extraCSSRules}>\n {showTeacherInstructions && (\n <StyledCollapsible\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt prompt={model.teacherInstructions} />\n </StyledCollapsible>\n )}\n\n {model.prompt && (\n <StyledPrompt>\n <PreviewPrompt prompt={model.prompt} />\n </StyledPrompt>\n )}\n\n <CorrectAnswerToggle\n language={language}\n show={showCorrectAnswerToggle}\n toggled={showCorrect}\n onToggle={this.toggleShowCorrect}\n />\n\n <AnswerGrid\n showCorrect={showCorrect}\n correctAnswers={model.correctResponse}\n disabled={model.disabled}\n view={model.view}\n onAnswerChange={this.onAnswerChange}\n choiceMode={model.choiceMode}\n answers={showCorrect ? model.correctResponse || {} : session.answers}\n headers={model.headers}\n rows={model.rows}\n />\n\n {showRationale && (\n <Collapsible labels={{ hidden: 'Show Rationale', visible: 'Hide Rationale' }}>\n <PreviewPrompt prompt={model.rationale} />\n </Collapsible>\n )}\n\n {model.feedback && <Feedback correctness={correctness.correctness} feedback={model.feedback} />}\n </UiLayout>\n );\n }\n}\n\nexport default Main;\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,100 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/match",
|
|
3
|
-
"
|
|
3
|
+
"repository": "pie-framework/pie-elements",
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"access": "public"
|
|
6
|
+
},
|
|
7
|
+
"version": "12.1.3",
|
|
8
|
+
"main": "lib/index.js",
|
|
4
9
|
"description": "",
|
|
10
|
+
"scripts": {
|
|
11
|
+
"postpublish": "../../scripts/postpublish"
|
|
12
|
+
},
|
|
5
13
|
"dependencies": {
|
|
6
14
|
"@emotion/react": "^11.14.0",
|
|
7
15
|
"@emotion/style": "^0.8.0",
|
|
8
16
|
"@mui/icons-material": "^7.3.4",
|
|
9
17
|
"@mui/material": "^7.3.4",
|
|
10
|
-
"@pie-
|
|
11
|
-
"@pie-lib/
|
|
18
|
+
"@pie-framework/pie-player-events": "^0.1.0",
|
|
19
|
+
"@pie-lib/correct-answer-toggle": "4.0.4",
|
|
20
|
+
"@pie-lib/math-rendering": "5.0.2",
|
|
21
|
+
"@pie-lib/render-ui": "6.1.2",
|
|
12
22
|
"@pie-lib/test-utils": "2.0.2",
|
|
23
|
+
"classnames": "^2.2.6",
|
|
13
24
|
"debug": "^4.1.1",
|
|
25
|
+
"lodash-es": "^4.17.23",
|
|
14
26
|
"prop-types": "^15.8.1",
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"@pie-lib/editable-html-tip-tap": "2.1.2-next.31",
|
|
18
|
-
"@pie-lib/drag": "4.0.3-next.38",
|
|
19
|
-
"@pie-lib/config-ui": "13.0.4-next.31",
|
|
20
|
-
"@pie-element/shared-configure-events": "0.1.0",
|
|
21
|
-
"@dnd-kit/core": "^6.3.1",
|
|
22
|
-
"@pie-element/shared-feedback": "0.1.0",
|
|
23
|
-
"@pie-element/shared-controller-utils": "0.1.1-next.1",
|
|
24
|
-
"@pie-element/shared-player-events": "0.1.0",
|
|
25
|
-
"@pie-element/shared-math-rendering-mathjax": "0.1.1-next.0"
|
|
26
|
-
},
|
|
27
|
-
"peerDependencies": {
|
|
28
|
-
"react": "^18.0.0",
|
|
29
|
-
"react-dom": "^18.0.0"
|
|
30
|
-
},
|
|
31
|
-
"exports": {
|
|
32
|
-
".": {
|
|
33
|
-
"types": "./dist/index.d.ts",
|
|
34
|
-
"default": "./dist/index.js"
|
|
35
|
-
},
|
|
36
|
-
"./delivery": {
|
|
37
|
-
"types": "./dist/delivery/index.d.ts",
|
|
38
|
-
"default": "./dist/delivery/index.js"
|
|
39
|
-
},
|
|
40
|
-
"./browser/delivery": {
|
|
41
|
-
"default": "./dist/browser/delivery/index.js"
|
|
42
|
-
},
|
|
43
|
-
"./author": {
|
|
44
|
-
"types": "./dist/author/index.d.ts",
|
|
45
|
-
"default": "./dist/author/index.js"
|
|
46
|
-
},
|
|
47
|
-
"./browser/author": {
|
|
48
|
-
"default": "./dist/browser/author/index.js"
|
|
49
|
-
},
|
|
50
|
-
"./configure": {
|
|
51
|
-
"types": "./dist/author/index.d.ts",
|
|
52
|
-
"default": "./dist/author/index.js"
|
|
53
|
-
},
|
|
54
|
-
"./controller": {
|
|
55
|
-
"types": "./dist/controller/index.d.ts",
|
|
56
|
-
"default": "./dist/controller/index.js"
|
|
57
|
-
},
|
|
58
|
-
"./controller.js": {
|
|
59
|
-
"types": "./dist/controller/index.d.ts",
|
|
60
|
-
"default": "./dist/controller/index.js"
|
|
61
|
-
},
|
|
62
|
-
"./browser/controller": {
|
|
63
|
-
"default": "./dist/browser/controller/index.js"
|
|
64
|
-
},
|
|
65
|
-
"./runtime-support": {
|
|
66
|
-
"types": "./dist/runtime-support.d.ts",
|
|
67
|
-
"default": "./dist/runtime-support.js"
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
"type": "module",
|
|
71
|
-
"main": "./dist/index.js",
|
|
72
|
-
"types": "./dist/index.d.ts",
|
|
73
|
-
"files": [
|
|
74
|
-
"configure.js",
|
|
75
|
-
"controller.js",
|
|
76
|
-
"dist"
|
|
77
|
-
],
|
|
78
|
-
"sideEffects": false,
|
|
79
|
-
"devDependencies": {
|
|
80
|
-
"vite": "^8.0.1",
|
|
81
|
-
"typescript": "^5.9.3",
|
|
82
|
-
"@vitejs/plugin-react": "^6.0.1",
|
|
83
|
-
"@types/react": "^18.2.0",
|
|
84
|
-
"@types/react-dom": "^18.2.0"
|
|
85
|
-
},
|
|
86
|
-
"scripts": {
|
|
87
|
-
"build": "bun x vite build && bun x vite build --config ../../../tools/vite/element-browser.config.ts && bun x vite build --config vite.config.iife.ts && bun x tsc --emitDeclarationOnly",
|
|
88
|
-
"dev": "bun x vite",
|
|
89
|
-
"demo": "bun x vite --mode demo",
|
|
90
|
-
"test": "bun x vitest run"
|
|
27
|
+
"react": "18.3.1",
|
|
28
|
+
"react-dom": "18.3.1"
|
|
91
29
|
},
|
|
92
|
-
"
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
"react": "18.2.0",
|
|
97
|
-
"react-dom": "18.2.0"
|
|
98
|
-
}
|
|
99
|
-
}
|
|
30
|
+
"author": "",
|
|
31
|
+
"license": "ISC",
|
|
32
|
+
"gitHead": "213c3a293da2591ffaf2ba5c5fb50f0fe7577cfa",
|
|
33
|
+
"module": "src/index.js"
|
|
100
34
|
}
|
package/configure.js
DELETED
package/controller.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './dist/controller/index.js';
|
package/dist/author/add-row.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @synced-from pie-elements/packages/match/configure/src/add-row.jsx
|
|
3
|
-
* @auto-generated
|
|
4
|
-
*
|
|
5
|
-
* This file is automatically synced from pie-elements and converted to TypeScript.
|
|
6
|
-
* Manual edits will be overwritten on next sync.
|
|
7
|
-
* To make changes, edit the upstream JavaScript file and run sync again.
|
|
8
|
-
*/
|
|
9
|
-
import React from 'react';
|
|
10
|
-
import PropTypes from 'prop-types';
|
|
11
|
-
export declare class AddRowButton extends React.Component {
|
|
12
|
-
static propTypes: {
|
|
13
|
-
onAddClick: PropTypes.Validator<(...args: any[]) => any>;
|
|
14
|
-
};
|
|
15
|
-
render(): React.JSX.Element;
|
|
16
|
-
}
|
|
17
|
-
export default AddRowButton;
|