@pie-element/match 12.1.2-next.1 → 12.1.2

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.
Files changed (97) hide show
  1. package/CHANGELOG.json +1462 -0
  2. package/CHANGELOG.md +2337 -0
  3. package/LICENSE.md +5 -0
  4. package/README.md +1 -0
  5. package/configure/CHANGELOG.json +892 -0
  6. package/configure/CHANGELOG.md +2040 -0
  7. package/configure/lib/add-row.js +40 -0
  8. package/configure/lib/add-row.js.map +1 -0
  9. package/configure/lib/answer-config-block.js +288 -0
  10. package/configure/lib/answer-config-block.js.map +1 -0
  11. package/configure/lib/common.js +31 -0
  12. package/configure/lib/common.js.map +1 -0
  13. package/configure/lib/configure.js +410 -0
  14. package/configure/lib/configure.js.map +1 -0
  15. package/configure/lib/defaults.js +201 -0
  16. package/configure/lib/defaults.js.map +1 -0
  17. package/configure/lib/general-config-block.js +144 -0
  18. package/configure/lib/general-config-block.js.map +1 -0
  19. package/configure/lib/index.js +152 -0
  20. package/configure/lib/index.js.map +1 -0
  21. package/configure/lib/row.js +321 -0
  22. package/configure/lib/row.js.map +1 -0
  23. package/configure/lib/utils.js +12 -0
  24. package/configure/lib/utils.js.map +1 -0
  25. package/configure/package.json +29 -0
  26. package/configure/utils.js +19 -0
  27. package/controller/CHANGELOG.json +502 -0
  28. package/controller/CHANGELOG.md +1363 -0
  29. package/controller/lib/defaults.js +25 -0
  30. package/controller/lib/defaults.js.map +1 -0
  31. package/controller/lib/index.js +424 -0
  32. package/controller/lib/index.js.map +1 -0
  33. package/controller/package.json +24 -0
  34. package/docs/config-schema.json +2929 -0
  35. package/docs/config-schema.json.md +2162 -0
  36. package/docs/demo/config.js +8 -0
  37. package/docs/demo/generate.js +49 -0
  38. package/docs/demo/index.html +1 -0
  39. package/docs/demo/session.js +11 -0
  40. package/docs/pie-schema.json +1530 -0
  41. package/docs/pie-schema.json.md +907 -0
  42. package/lib/answer-grid.js +166 -0
  43. package/lib/answer-grid.js.map +1 -0
  44. package/lib/index.js +85 -0
  45. package/lib/index.js.map +1 -0
  46. package/lib/main.js +163 -0
  47. package/lib/main.js.map +1 -0
  48. package/package.json +21 -88
  49. package/configure.js +0 -2
  50. package/controller.js +0 -1
  51. package/dist/author/add-row.d.ts +0 -17
  52. package/dist/author/add-row.js +0 -24
  53. package/dist/author/answer-config-block.d.ts +0 -36
  54. package/dist/author/answer-config-block.js +0 -176
  55. package/dist/author/common.d.ts +0 -22
  56. package/dist/author/configure.d.ts +0 -48
  57. package/dist/author/configure.js +0 -259
  58. package/dist/author/defaults.d.ts +0 -203
  59. package/dist/author/defaults.js +0 -151
  60. package/dist/author/general-config-block.d.ts +0 -22
  61. package/dist/author/general-config-block.js +0 -93
  62. package/dist/author/index.d.ts +0 -44
  63. package/dist/author/index.js +0 -76
  64. package/dist/author/row.d.ts +0 -51
  65. package/dist/author/row.js +0 -204
  66. package/dist/author/utils.d.ts +0 -10
  67. package/dist/author/utils.js +0 -10
  68. package/dist/browser/Typography-CbSskKxx.js +0 -9217
  69. package/dist/browser/Typography-CbSskKxx.js.map +0 -1
  70. package/dist/browser/author/index.js +0 -41596
  71. package/dist/browser/author/index.js.map +0 -1
  72. package/dist/browser/browser-kkT1XVKw.js +0 -219
  73. package/dist/browser/browser-kkT1XVKw.js.map +0 -1
  74. package/dist/browser/controller/index.js +0 -267
  75. package/dist/browser/controller/index.js.map +0 -1
  76. package/dist/browser/delivery/index.js +0 -1984
  77. package/dist/browser/delivery/index.js.map +0 -1
  78. package/dist/browser/dist-i687VHmY.js +0 -100
  79. package/dist/browser/dist-i687VHmY.js.map +0 -1
  80. package/dist/browser/match.css +0 -2
  81. package/dist/controller/defaults.d.ts +0 -27
  82. package/dist/controller/defaults.js +0 -25
  83. package/dist/controller/index.d.ts +0 -29
  84. package/dist/controller/index.js +0 -154
  85. package/dist/delivery/answer-grid.d.ts +0 -28
  86. package/dist/delivery/answer-grid.js +0 -99
  87. package/dist/delivery/index.d.ts +0 -21
  88. package/dist/delivery/index.js +0 -51
  89. package/dist/delivery/main.d.ts +0 -26
  90. package/dist/delivery/main.js +0 -112
  91. package/dist/index.d.ts +0 -1
  92. package/dist/index.iife.d.ts +0 -8
  93. package/dist/index.iife.js +0 -148
  94. package/dist/index.js +0 -2
  95. package/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js +0 -16
  96. package/dist/runtime-support.d.ts +0 -12
  97. 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
@@ -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":";;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,gBAAA,GAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AAIO,MAAMK,UAAU,GAAGA,CAACC,OAAO,EAAEC,KAAK,KAAK;EAC5C,MAAMC,GAAG,GAAGD,KAAK,EAAEE,IAAI,EAAEC,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,EAAE,CAAC,IAAI,EAAE;EAE/C,OAAOJ,GAAG,CAACK,MAAM,CAAC,CAACC,GAAG,EAAEF,EAAE,KAAK;IAC7B,IAAI,CAACE,GAAG,EAAE;MACR,OAAO,KAAK;IACd;IAEA,MAAMC,GAAG,GAAGT,OAAO,CAACU,OAAO,IAAIV,OAAO,CAACU,OAAO,CAACJ,EAAE,CAAC;IAClD,MAAMK,SAAS,GAAGC,KAAK,CAACC,OAAO,CAACJ,GAAG,CAAC,IAAIA,GAAG,CAACK,QAAQ,CAAC,IAAI,CAAC;IAE1D,OAAOH,SAAS,IAAIH,GAAG;EACzB,CAAC,EAAE,IAAI,CAAC;AACV,CAAC;AAACO,OAAA,CAAAhB,UAAA,GAAAA,UAAA;AAEa,MAAMiB,KAAK,SAASC,WAAW,CAAC;EAC7CC,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC,CAAC;IACP,IAAI,CAACC,KAAK,GAAG,IAAI;EACnB;EAEA,IAAIlB,KAAKA,CAACmB,CAAC,EAAE;IACX;IACA;IACA,IAAI,CAACC,MAAM,GAAG;MAAE,GAAGD,CAAC;MAAE,IAAIA,CAAC,EAAEE,MAAM,IAAI,CAAC,CAAC;IAAE,CAAC;IAC5C,IAAI,CAACC,OAAO,CAAC,CAAC;EAChB;EAEA,IAAIvB,OAAOA,CAACwB,CAAC,EAAE;IACb,IAAI,CAACC,QAAQ,GAAGD,CAAC;IACjB,IAAI,CAACD,OAAO,CAAC,CAAC;EAChB;EAEA,IAAIvB,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACyB,QAAQ;EACtB;EAEAC,cAAcA,CAACF,CAAC,EAAE;IAChB,IAAI,CAACC,QAAQ,CAACf,OAAO,GAAGc,CAAC,CAACd,OAAO;IACjC,MAAMiB,QAAQ,GAAG5B,UAAU,CAAC,IAAI,CAAC0B,QAAQ,EAAE,IAAI,CAACJ,MAAM,CAAC;IAEvD,IAAI,CAACO,aAAa,CAAC,IAAIC,oCAAmB,CAAC,IAAI,CAACC,OAAO,CAACC,WAAW,CAAC,CAAC,EAAEJ,QAAQ,CAAC,CAAC;IAEjF,IAAI,CAACJ,OAAO,CAAC,CAAC;EAChB;EAEAS,iBAAiBA,CAAA,EAAG;IAClB,IAAI,CAACT,OAAO,CAAC,CAAC;EAChB;EAEAA,OAAOA,CAAA,EAAG;IACR,IAAI,CAAC,IAAI,CAACF,MAAM,IAAI,CAAC,IAAI,CAACI,QAAQ,EAAE;MAClC;IACF;IAEA,MAAMQ,EAAE,gBAAGC,cAAK,CAACC,aAAa,CAACC,aAAI,EAAE;MACnCnC,KAAK,EAAE,IAAI,CAACoB,MAAM;MAClBrB,OAAO,EAAE,IAAI,CAACyB,QAAQ;MACtBY,eAAe,EAAE,IAAI,CAACX,cAAc,CAACY,IAAI,CAAC,IAAI;IAChD,CAAC,CAAC;IAEF,IAAI,CAAC,IAAI,CAACnB,KAAK,EAAE;MACf,IAAI,CAACA,KAAK,GAAG,IAAAoB,kBAAU,EAAC,IAAI,CAAC;IAC/B;IACA,IAAI,CAACpB,KAAK,CAACqB,MAAM,CAACP,EAAE,CAAC;IACrBQ,cAAc,CAAC,MAAM;MACnB,IAAAC,yBAAU,EAAC,IAAI,CAAC;IAClB,CAAC,CAAC;EACJ;EAEAC,oBAAoBA,CAAA,EAAG;IACrB,IAAI,IAAI,CAACxB,KAAK,EAAE;MACd,IAAI,CAACA,KAAK,CAACyB,OAAO,CAAC,CAAC;IACtB;EACF;AACF;AAAC7B,OAAA,CAAA8B,OAAA,GAAA7B,KAAA","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
@@ -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,101 +1,34 @@
1
1
  {
2
2
  "name": "@pie-element/match",
3
- "version": "12.1.2-next.1",
3
+ "repository": "pie-framework/pie-elements",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
7
+ "version": "12.1.2",
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-lib/correct-answer-toggle": "4.0.3-next.0",
11
- "@pie-lib/render-ui": "6.1.1-next.0",
18
+ "@pie-framework/pie-player-events": "^0.1.0",
19
+ "@pie-lib/correct-answer-toggle": "4.0.3",
20
+ "@pie-lib/math-rendering": "5.0.2",
21
+ "@pie-lib/render-ui": "6.1.1",
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
- "clsx": "^2.1.1",
16
- "@pie-element/shared-lodash": "0.1.1-next.0",
17
- "@pie-lib/editable-html-tip-tap": "2.1.2-next.0",
18
- "@pie-lib/drag": "4.0.3-next.0",
19
- "@pie-lib/config-ui": "13.0.4-next.0",
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.0",
26
- "@emotion/core": "0.x.x"
27
- },
28
- "peerDependencies": {
29
- "react": "^18.0.0",
30
- "react-dom": "^18.0.0"
31
- },
32
- "exports": {
33
- ".": {
34
- "types": "./dist/index.d.ts",
35
- "default": "./dist/index.js"
36
- },
37
- "./delivery": {
38
- "types": "./dist/delivery/index.d.ts",
39
- "default": "./dist/delivery/index.js"
40
- },
41
- "./browser/delivery": {
42
- "default": "./dist/browser/delivery/index.js"
43
- },
44
- "./author": {
45
- "types": "./dist/author/index.d.ts",
46
- "default": "./dist/author/index.js"
47
- },
48
- "./browser/author": {
49
- "default": "./dist/browser/author/index.js"
50
- },
51
- "./configure": {
52
- "types": "./dist/author/index.d.ts",
53
- "default": "./dist/author/index.js"
54
- },
55
- "./controller": {
56
- "types": "./dist/controller/index.d.ts",
57
- "default": "./dist/controller/index.js"
58
- },
59
- "./controller.js": {
60
- "types": "./dist/controller/index.d.ts",
61
- "default": "./dist/controller/index.js"
62
- },
63
- "./browser/controller": {
64
- "default": "./dist/browser/controller/index.js"
65
- },
66
- "./runtime-support": {
67
- "types": "./dist/runtime-support.d.ts",
68
- "default": "./dist/runtime-support.js"
69
- }
70
- },
71
- "type": "module",
72
- "main": "./dist/index.js",
73
- "types": "./dist/index.d.ts",
74
- "files": [
75
- "configure.js",
76
- "controller.js",
77
- "dist"
78
- ],
79
- "sideEffects": false,
80
- "devDependencies": {
81
- "vite": "^8.0.1",
82
- "typescript": "^5.9.3",
83
- "@vitejs/plugin-react": "^6.0.1",
84
- "@types/react": "^18.2.0",
85
- "@types/react-dom": "^18.2.0"
86
- },
87
- "scripts": {
88
- "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",
89
- "dev": "bun x vite",
90
- "demo": "bun x vite --mode demo",
91
- "test": "bun x vitest run"
27
+ "react": "18.3.1",
28
+ "react-dom": "18.3.1"
92
29
  },
93
- "pie": {
94
- "controller": "@pie-element/match/controller",
95
- "configure": "@pie-element/match/configure",
96
- "browserSharedDependencies": {
97
- "react": "18.2.0",
98
- "react-dom": "18.2.0"
99
- }
100
- }
30
+ "author": "",
31
+ "license": "ISC",
32
+ "gitHead": "206ff17a94e8e197744d059f97ad2b9a1bc9145d",
33
+ "module": "src/index.js"
101
34
  }
package/configure.js DELETED
@@ -1,2 +0,0 @@
1
- export { default } from './dist/author/index.js';
2
- export * from './dist/author/index.js';
package/controller.js DELETED
@@ -1 +0,0 @@
1
- export * from './dist/controller/index.js';
@@ -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;