@pie-element/placement-ordering 14.1.2-next.5 → 14.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.
Files changed (108) hide show
  1. package/CHANGELOG.json +1312 -0
  2. package/CHANGELOG.md +2444 -0
  3. package/LICENSE.md +5 -0
  4. package/README.md +57 -0
  5. package/configure/CHANGELOG.json +952 -0
  6. package/configure/CHANGELOG.md +2139 -0
  7. package/configure/lib/choice-editor.js +252 -0
  8. package/configure/lib/choice-editor.js.map +1 -0
  9. package/configure/lib/choice-tile.js +205 -0
  10. package/configure/lib/choice-tile.js.map +1 -0
  11. package/configure/lib/defaults.js +211 -0
  12. package/configure/lib/defaults.js.map +1 -0
  13. package/configure/lib/design.js +427 -0
  14. package/configure/lib/design.js.map +1 -0
  15. package/configure/lib/help.js +14 -0
  16. package/configure/lib/help.js.map +1 -0
  17. package/configure/lib/index.js +155 -0
  18. package/configure/lib/index.js.map +1 -0
  19. package/configure/lib/utils.js +108 -0
  20. package/configure/lib/utils.js.map +1 -0
  21. package/configure/package.json +26 -0
  22. package/controller/CHANGELOG.json +517 -0
  23. package/controller/CHANGELOG.md +1518 -0
  24. package/controller/lib/defaults.js +29 -0
  25. package/controller/lib/defaults.js.map +1 -0
  26. package/controller/lib/index.js +285 -0
  27. package/controller/lib/index.js.map +1 -0
  28. package/controller/lib/scoring.js +109 -0
  29. package/controller/lib/scoring.js.map +1 -0
  30. package/controller/package.json +15 -0
  31. package/docs/config-schema.json +2964 -0
  32. package/docs/config-schema.json.md +2190 -0
  33. package/docs/demo/config.js +8 -0
  34. package/docs/demo/generate.js +50 -0
  35. package/docs/demo/index.html +1 -0
  36. package/docs/demo/session.js +7 -0
  37. package/docs/pie-schema.json +1613 -0
  38. package/docs/pie-schema.json.md +973 -0
  39. package/icon.png +0 -0
  40. package/lib/index.js +122 -0
  41. package/lib/index.js.map +1 -0
  42. package/lib/main.js +32 -0
  43. package/lib/main.js.map +1 -0
  44. package/lib/ordering.js +165 -0
  45. package/lib/ordering.js.map +1 -0
  46. package/lib/placement-ordering.js +419 -0
  47. package/lib/placement-ordering.js.map +1 -0
  48. package/lib/tile.js +259 -0
  49. package/lib/tile.js.map +1 -0
  50. package/lib/tiler.js +165 -0
  51. package/lib/tiler.js.map +1 -0
  52. package/lib/utils.js +18 -0
  53. package/lib/utils.js.map +1 -0
  54. package/package.json +21 -88
  55. package/configure.js +0 -2
  56. package/controller.js +0 -1
  57. package/dist/author/choice-editor.d.ts +0 -39
  58. package/dist/author/choice-editor.js +0 -156
  59. package/dist/author/choice-tile.d.ts +0 -40
  60. package/dist/author/choice-tile.js +0 -132
  61. package/dist/author/defaults.d.ts +0 -213
  62. package/dist/author/defaults.js +0 -159
  63. package/dist/author/design.d.ts +0 -21
  64. package/dist/author/design.js +0 -273
  65. package/dist/author/help.d.ts +0 -11
  66. package/dist/author/index.d.ts +0 -45
  67. package/dist/author/index.js +0 -85
  68. package/dist/author/utils.d.ts +0 -15
  69. package/dist/author/utils.js +0 -62
  70. package/dist/browser/author/index.js +0 -46600
  71. package/dist/browser/author/index.js.map +0 -1
  72. package/dist/browser/browser-DHPggtaA.js +0 -376
  73. package/dist/browser/browser-DHPggtaA.js.map +0 -1
  74. package/dist/browser/controller/index.js +0 -242
  75. package/dist/browser/controller/index.js.map +0 -1
  76. package/dist/browser/delivery/index.js +0 -1035
  77. package/dist/browser/delivery/index.js.map +0 -1
  78. package/dist/browser/dist-D9ARZhQk.js +0 -1426
  79. package/dist/browser/dist-D9ARZhQk.js.map +0 -1
  80. package/dist/browser/drag-provider-C1slTlsc.js +0 -10555
  81. package/dist/browser/drag-provider-C1slTlsc.js.map +0 -1
  82. package/dist/browser/placement-ordering.css +0 -2
  83. package/dist/controller/defaults.d.ts +0 -31
  84. package/dist/controller/defaults.js +0 -25
  85. package/dist/controller/index.d.ts +0 -29
  86. package/dist/controller/index.js +0 -123
  87. package/dist/controller/scoring.d.ts +0 -27
  88. package/dist/controller/scoring.js +0 -30
  89. package/dist/delivery/index.d.ts +0 -26
  90. package/dist/delivery/index.js +0 -70
  91. package/dist/delivery/main.d.ts +0 -19
  92. package/dist/delivery/main.js +0 -22
  93. package/dist/delivery/ordering.d.ts +0 -18
  94. package/dist/delivery/ordering.js +0 -93
  95. package/dist/delivery/placement-ordering.d.ts +0 -28
  96. package/dist/delivery/placement-ordering.js +0 -213
  97. package/dist/delivery/tile.d.ts +0 -28
  98. package/dist/delivery/tile.js +0 -165
  99. package/dist/delivery/tiler.d.ts +0 -42
  100. package/dist/delivery/tiler.js +0 -89
  101. package/dist/delivery/utils.d.ts +0 -9
  102. package/dist/delivery/utils.js +0 -8
  103. package/dist/index.d.ts +0 -1
  104. package/dist/index.iife.d.ts +0 -8
  105. package/dist/index.iife.js +0 -152
  106. package/dist/index.js +0 -2
  107. package/dist/runtime-support.d.ts +0 -12
  108. package/dist/runtime-support.js +0 -12
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _react = _interopRequireDefault(require("react"));
11
+ var _debug = _interopRequireDefault(require("debug"));
12
+ var _lodashEs = require("lodash-es");
13
+ var _Button = _interopRequireDefault(require("@mui/material/Button"));
14
+ var _styles = require("@mui/material/styles");
15
+ var _renderUi = require("@pie-lib/render-ui");
16
+ var _configUi = require("@pie-lib/config-ui");
17
+ var _choiceTile = _interopRequireDefault(require("./choice-tile"));
18
+ function findFreeChoiceSlot(choices) {
19
+ let slot = 1;
20
+ const ids = choices.map(c => c.id);
21
+ while (ids.includes(`c${slot}`)) {
22
+ slot++;
23
+ }
24
+ return slot;
25
+ }
26
+ const log = (0, _debug.default)('@pie-element:placement-ordering:configure:choice-editor');
27
+ const StyledControls = (0, _styles.styled)('div')({
28
+ display: 'flex',
29
+ alignItems: 'center',
30
+ justifyContent: 'space-between'
31
+ });
32
+ const StyledAddButton = (0, _styles.styled)(_Button.default)(({
33
+ theme
34
+ }) => ({
35
+ marginTop: theme.spacing(2.5),
36
+ paddingLeft: theme.spacing(1.5),
37
+ paddingRight: theme.spacing(1.5),
38
+ '& .MuiButton-label': {
39
+ transition: 'opacity 200ms linear',
40
+ '&:hover': {
41
+ opacity: 0.3
42
+ }
43
+ }
44
+ }));
45
+ const StyledVTiler = (0, _styles.styled)('div')({
46
+ gridAutoFlow: 'column',
47
+ display: 'grid',
48
+ gridGap: '10px',
49
+ alignItems: 'center'
50
+ });
51
+ const StyledColumnLabel = (0, _styles.styled)(_renderUi.InputContainer)(({
52
+ theme
53
+ }) => ({
54
+ width: '100%',
55
+ paddingTop: theme.spacing(2)
56
+ }));
57
+ const ErrorText = (0, _styles.styled)('div')(({
58
+ theme
59
+ }) => ({
60
+ fontSize: theme.typography.fontSize - 2,
61
+ color: theme.palette.error.main,
62
+ paddingTop: theme.spacing(1)
63
+ }));
64
+ class ChoiceEditor extends _react.default.Component {
65
+ constructor(props) {
66
+ super(props);
67
+ (0, _defineProperty2.default)(this, "state", {
68
+ warning: {
69
+ open: false
70
+ }
71
+ });
72
+ this.onChoiceChange = choice => {
73
+ const {
74
+ choices,
75
+ onChange,
76
+ correctResponse
77
+ } = this.props;
78
+ const index = choices.findIndex(c => c.id === choice.id);
79
+ choices.splice(index, 1, {
80
+ ...choices[index],
81
+ label: choice.label
82
+ });
83
+ onChange(choices, correctResponse);
84
+ };
85
+ this.onDelete = choice => {
86
+ const {
87
+ choices,
88
+ onChange,
89
+ correctResponse,
90
+ choicesLabel
91
+ } = this.props;
92
+ if (choices && choices.length === 3) {
93
+ this.setState({
94
+ warning: {
95
+ open: true,
96
+ text: `There have to be at least 3 ${choicesLabel}.`
97
+ }
98
+ });
99
+ } else {
100
+ const updatedChoices = choices.filter(c => c.id !== choice.id);
101
+ const updatedCorrectResponse = correctResponse.filter(v => v.id !== choice.id);
102
+ onChange(updatedChoices, updatedCorrectResponse);
103
+ }
104
+ };
105
+ this.addChoice = () => {
106
+ const {
107
+ choices,
108
+ correctResponse,
109
+ onChange,
110
+ choicesLabel
111
+ } = this.props;
112
+ if (choices && choices.length === 10) {
113
+ this.setState({
114
+ warning: {
115
+ open: true,
116
+ text: `There can be maximum 10 ${choicesLabel}.`
117
+ }
118
+ });
119
+ } else {
120
+ const freeId = findFreeChoiceSlot(choices);
121
+ const id = `c${freeId}`;
122
+ const newChoice = {
123
+ id,
124
+ label: ''
125
+ };
126
+ const newCorrectResponse = {
127
+ id,
128
+ /**
129
+ * Note: weights are not configurable in the existing component
130
+ * so we'll want do disable this in the controller and ignore it for now.
131
+ */
132
+ weight: 0
133
+ };
134
+ const updatedChoices = choices.concat([newChoice]);
135
+ const updatedCorrectResponse = correctResponse.concat([newCorrectResponse]);
136
+ onChange(updatedChoices, updatedCorrectResponse);
137
+ }
138
+ };
139
+ this.shuffleChoices = () => {
140
+ const {
141
+ onChange,
142
+ choices,
143
+ correctResponse,
144
+ placementArea
145
+ } = this.props;
146
+ let shuffled = (0, _lodashEs.shuffle)(choices);
147
+
148
+ // if placementArea is disabled, make sure we don't shuffle choices in the correct order
149
+ const shuffledCorrect = !placementArea && (0, _lodashEs.isEqual)(shuffled.map(item => item.id), correctResponse.map(item => item.id));
150
+ if (shuffledCorrect) {
151
+ const shuffledTwice = (0, _lodashEs.shuffle)(shuffled);
152
+ onChange(shuffledTwice, correctResponse);
153
+ } else {
154
+ onChange(shuffled, correctResponse);
155
+ }
156
+ };
157
+ }
158
+ render() {
159
+ const {
160
+ correctResponse,
161
+ choices,
162
+ imageSupport,
163
+ toolbarOpts,
164
+ pluginProps,
165
+ singularChoiceLabel,
166
+ pluralChoiceLabel,
167
+ choicesLabel,
168
+ spellCheck,
169
+ maxImageWidth,
170
+ maxImageHeight,
171
+ errors,
172
+ mathMlOptions = {},
173
+ ordering
174
+ } = this.props;
175
+ const {
176
+ warning
177
+ } = this.state;
178
+ const {
179
+ choicesErrors,
180
+ orderError
181
+ } = errors || {};
182
+ const vTilerStyle = {
183
+ gridTemplateColumns: 'repeat(2, 1fr)',
184
+ gridTemplateRows: `repeat(${choices.length}, 1fr)`
185
+ };
186
+ return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(StyledVTiler, {
187
+ style: {
188
+ gridTemplateColumns: 'repeat(2, 1fr)'
189
+ }
190
+ }, /*#__PURE__*/_react.default.createElement(StyledColumnLabel, {
191
+ label: `Student ${choicesLabel || 'Choices'}`
192
+ }), /*#__PURE__*/_react.default.createElement(StyledColumnLabel, {
193
+ label: "Correct Order"
194
+ })), /*#__PURE__*/_react.default.createElement(StyledVTiler, {
195
+ style: vTilerStyle
196
+ }, ordering.tiles.map((choice, index) => /*#__PURE__*/_react.default.createElement(_choiceTile.default, {
197
+ key: `${choice.type}-${choice.id}`,
198
+ choice: choice,
199
+ index: index,
200
+ imageSupport: imageSupport,
201
+ onDelete: this.onDelete.bind(this, choice),
202
+ onChoiceChange: this.onChoiceChange,
203
+ toolbarOpts: toolbarOpts,
204
+ pluginProps: pluginProps,
205
+ choices: choices,
206
+ choicesLabel: choicesLabel,
207
+ spellCheck: spellCheck,
208
+ maxImageWidth: maxImageWidth,
209
+ maxImageHeight: maxImageHeight,
210
+ error: choicesErrors?.[choice.id] || orderError && ' ' || null,
211
+ mathMlOptions: mathMlOptions
212
+ }))), orderError && /*#__PURE__*/_react.default.createElement(ErrorText, null, orderError), /*#__PURE__*/_react.default.createElement(StyledControls, null, /*#__PURE__*/_react.default.createElement(StyledAddButton, {
213
+ onClick: this.shuffleChoices,
214
+ size: "small",
215
+ variant: "contained"
216
+ }, `SHUFFLE ${pluralChoiceLabel}`.toUpperCase()), /*#__PURE__*/_react.default.createElement(StyledAddButton, {
217
+ onClick: this.addChoice,
218
+ size: "small",
219
+ variant: "contained"
220
+ }, `ADD ${singularChoiceLabel}`.toUpperCase())), /*#__PURE__*/_react.default.createElement(_configUi.AlertDialog, {
221
+ open: warning.open,
222
+ title: "Warning",
223
+ text: warning.text,
224
+ onConfirm: () => this.setState({
225
+ warning: {
226
+ open: false
227
+ }
228
+ })
229
+ }));
230
+ }
231
+ }
232
+ (0, _defineProperty2.default)(ChoiceEditor, "propTypes", {
233
+ correctResponse: _propTypes.default.array.isRequired,
234
+ choices: _propTypes.default.array.isRequired,
235
+ onChange: _propTypes.default.func.isRequired,
236
+ imageSupport: _propTypes.default.shape({
237
+ add: _propTypes.default.func.isRequired,
238
+ delete: _propTypes.default.func.isRequired
239
+ }),
240
+ maxImageHeight: _propTypes.default.object,
241
+ maxImageWidth: _propTypes.default.object,
242
+ toolbarOpts: _propTypes.default.object,
243
+ pluginProps: _propTypes.default.object,
244
+ placementArea: _propTypes.default.bool,
245
+ singularChoiceLabel: _propTypes.default.string,
246
+ pluralChoiceLabel: _propTypes.default.string,
247
+ choicesLabel: _propTypes.default.string,
248
+ errors: _propTypes.default.object,
249
+ spellCheck: _propTypes.default.bool
250
+ });
251
+ var _default = exports.default = ChoiceEditor;
252
+ //# sourceMappingURL=choice-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"choice-editor.js","names":["_propTypes","_interopRequireDefault","require","_react","_debug","_lodashEs","_Button","_styles","_renderUi","_configUi","_choiceTile","findFreeChoiceSlot","choices","slot","ids","map","c","id","includes","log","debug","StyledControls","styled","display","alignItems","justifyContent","StyledAddButton","Button","theme","marginTop","spacing","paddingLeft","paddingRight","transition","opacity","StyledVTiler","gridAutoFlow","gridGap","StyledColumnLabel","InputContainer","width","paddingTop","ErrorText","fontSize","typography","color","palette","error","main","ChoiceEditor","React","Component","constructor","props","_defineProperty2","default","warning","open","onChoiceChange","choice","onChange","correctResponse","index","findIndex","splice","label","onDelete","choicesLabel","length","setState","text","updatedChoices","filter","updatedCorrectResponse","v","addChoice","freeId","newChoice","newCorrectResponse","weight","concat","shuffleChoices","placementArea","shuffled","shuffle","shuffledCorrect","isEqual","item","shuffledTwice","render","imageSupport","toolbarOpts","pluginProps","singularChoiceLabel","pluralChoiceLabel","spellCheck","maxImageWidth","maxImageHeight","errors","mathMlOptions","ordering","state","choicesErrors","orderError","vTilerStyle","gridTemplateColumns","gridTemplateRows","createElement","style","tiles","key","type","bind","onClick","size","variant","toUpperCase","AlertDialog","title","onConfirm","PropTypes","array","isRequired","func","shape","add","delete","object","bool","string","_default","exports"],"sources":["../src/choice-editor.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\nimport debug from 'debug';\nimport { isEqual, shuffle } from 'lodash-es';\nimport Button from '@mui/material/Button';\nimport { styled } from '@mui/material/styles';\nimport { InputContainer } from '@pie-lib/render-ui';\nimport { AlertDialog } from '@pie-lib/config-ui';\n\nimport ChoiceTile from './choice-tile';\n\nfunction findFreeChoiceSlot(choices) {\n let slot = 1;\n const ids = choices.map((c) => c.id);\n\n while (ids.includes(`c${slot}`)) {\n slot++;\n }\n\n return slot;\n}\n\nconst log = debug('@pie-element:placement-ordering:configure:choice-editor');\n\nconst StyledControls = styled('div')({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n});\n\nconst StyledAddButton = styled(Button)(({ theme }) => ({\n marginTop: theme.spacing(2.5),\n paddingLeft: theme.spacing(1.5),\n paddingRight: theme.spacing(1.5),\n '& .MuiButton-label': {\n transition: 'opacity 200ms linear',\n '&:hover': {\n opacity: 0.3,\n },\n },\n}));\n\nconst StyledVTiler = styled('div')({\n gridAutoFlow: 'column',\n display: 'grid',\n gridGap: '10px',\n alignItems: 'center',\n});\n\nconst StyledColumnLabel = styled(InputContainer)(({ theme }) => ({\n width: '100%',\n paddingTop: theme.spacing(2),\n}));\n\nconst ErrorText = styled('div')(({ theme }) => ({\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n paddingTop: theme.spacing(1),\n}));\n\nclass ChoiceEditor extends React.Component {\n static propTypes = {\n correctResponse: PropTypes.array.isRequired,\n choices: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n maxImageHeight: PropTypes.object,\n maxImageWidth: PropTypes.object,\n toolbarOpts: PropTypes.object,\n pluginProps: PropTypes.object,\n placementArea: PropTypes.bool,\n singularChoiceLabel: PropTypes.string,\n pluralChoiceLabel: PropTypes.string,\n choicesLabel: PropTypes.string,\n errors: PropTypes.object,\n spellCheck: PropTypes.bool,\n };\n\n state = { warning: { open: false } };\n\n constructor(props) {\n super(props);\n\n this.onChoiceChange = (choice) => {\n const { choices, onChange, correctResponse } = this.props;\n const index = choices.findIndex((c) => c.id === choice.id);\n\n choices.splice(index, 1, { ...choices[index], label: choice.label });\n onChange(choices, correctResponse);\n };\n\n this.onDelete = (choice) => {\n const { choices, onChange, correctResponse, choicesLabel } = this.props;\n\n if (choices && choices.length === 3) {\n this.setState({\n warning: {\n open: true,\n text: `There have to be at least 3 ${choicesLabel}.`,\n },\n });\n } else {\n const updatedChoices = choices.filter((c) => c.id !== choice.id);\n const updatedCorrectResponse = correctResponse.filter((v) => v.id !== choice.id);\n\n onChange(updatedChoices, updatedCorrectResponse);\n }\n };\n\n this.addChoice = () => {\n const { choices, correctResponse, onChange, choicesLabel } = this.props;\n\n if (choices && choices.length === 10) {\n this.setState({\n warning: {\n open: true,\n text: `There can be maximum 10 ${choicesLabel}.`,\n },\n });\n } else {\n const freeId = findFreeChoiceSlot(choices);\n const id = `c${freeId}`;\n const newChoice = { id, label: '' };\n\n const newCorrectResponse = {\n id,\n /**\n * Note: weights are not configurable in the existing component\n * so we'll want do disable this in the controller and ignore it for now.\n */\n weight: 0,\n };\n\n const updatedChoices = choices.concat([newChoice]);\n const updatedCorrectResponse = correctResponse.concat([newCorrectResponse]);\n\n onChange(updatedChoices, updatedCorrectResponse);\n }\n };\n\n this.shuffleChoices = () => {\n const { onChange, choices, correctResponse, placementArea } = this.props;\n let shuffled = shuffle(choices);\n\n // if placementArea is disabled, make sure we don't shuffle choices in the correct order\n const shuffledCorrect =\n !placementArea &&\n isEqual(\n shuffled.map((item) => item.id),\n correctResponse.map((item) => item.id),\n );\n\n if (shuffledCorrect) {\n const shuffledTwice = shuffle(shuffled);\n\n onChange(shuffledTwice, correctResponse);\n } else {\n onChange(shuffled, correctResponse);\n }\n };\n }\n\n render() {\n const {\n correctResponse,\n choices,\n imageSupport,\n toolbarOpts,\n pluginProps,\n singularChoiceLabel,\n pluralChoiceLabel,\n choicesLabel,\n spellCheck,\n maxImageWidth,\n maxImageHeight,\n errors,\n mathMlOptions = {},\n ordering,\n } = this.props;\n const { warning } = this.state;\n const { choicesErrors, orderError } = errors || {};\n\n const vTilerStyle = {\n gridTemplateColumns: 'repeat(2, 1fr)',\n gridTemplateRows: `repeat(${choices.length}, 1fr)`,\n };\n\n return (\n <div>\n <StyledVTiler style={{ gridTemplateColumns: 'repeat(2, 1fr)' }}>\n <StyledColumnLabel label={`Student ${choicesLabel || 'Choices'}`} />\n <StyledColumnLabel label=\"Correct Order\" />\n </StyledVTiler>\n <StyledVTiler style={vTilerStyle}>\n {ordering.tiles.map((choice, index) => (\n <ChoiceTile\n key={`${choice.type}-${choice.id}`}\n choice={choice}\n index={index}\n imageSupport={imageSupport}\n onDelete={this.onDelete.bind(this, choice)}\n onChoiceChange={this.onChoiceChange}\n toolbarOpts={toolbarOpts}\n pluginProps={pluginProps}\n choices={choices}\n choicesLabel={choicesLabel}\n spellCheck={spellCheck}\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n error={choicesErrors?.[choice.id] || (orderError && ' ') || null}\n mathMlOptions={mathMlOptions}\n />\n ))}\n </StyledVTiler>\n {orderError && <ErrorText>{orderError}</ErrorText>}\n <StyledControls>\n <StyledAddButton onClick={this.shuffleChoices} size=\"small\" variant=\"contained\">\n {`SHUFFLE ${pluralChoiceLabel}`.toUpperCase()}\n </StyledAddButton>\n\n <StyledAddButton onClick={this.addChoice} size=\"small\" variant=\"contained\">\n {`ADD ${singularChoiceLabel}`.toUpperCase()}\n </StyledAddButton>\n </StyledControls>\n <AlertDialog\n open={warning.open}\n title=\"Warning\"\n text={warning.text}\n onConfirm={() => this.setState({ warning: { open: false } })}\n />\n </div>\n );\n }\n}\n\nexport default ChoiceEditor;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,205 @@
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.ChoiceTile = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _debug = _interopRequireDefault(require("debug"));
12
+ var _core = require("@dnd-kit/core");
13
+ var _CardActions = _interopRequireDefault(require("@mui/material/CardActions"));
14
+ var _DragHandle = _interopRequireDefault(require("@mui/icons-material/DragHandle"));
15
+ var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
16
+ var _RemoveCircle = _interopRequireDefault(require("@mui/icons-material/RemoveCircle"));
17
+ var _styles = require("@mui/material/styles");
18
+ var _renderUi = require("@pie-lib/render-ui");
19
+ var _editableHtmlTipTap = _interopRequireWildcard(require("@pie-lib/editable-html-tip-tap"));
20
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
21
+ const log = (0, _debug.default)('@pie-element:placement-ordering:configure:choice-tile');
22
+ const StyledChoiceTile = (0, _styles.styled)('div')(({
23
+ theme
24
+ }) => ({
25
+ margin: `${theme.spacing(1)} 0`,
26
+ backgroundColor: theme.palette.background.paper,
27
+ display: 'flex',
28
+ flexDirection: 'column',
29
+ cursor: 'move',
30
+ touchAction: 'none'
31
+ }));
32
+ const StyledEditableHtml = (0, _styles.styled)(_editableHtmlTipTap.default)(({
33
+ theme,
34
+ isTargetPrompt
35
+ }) => ({
36
+ width: '80%',
37
+ borderRadius: '4px',
38
+ ...(isTargetPrompt && {
39
+ backgroundColor: theme.palette.error.light
40
+ })
41
+ }));
42
+ const StyledControls = (0, _styles.styled)('div')(() => ({
43
+ display: 'flex',
44
+ justifyContent: 'flex-end'
45
+ }));
46
+ const StyledActions = (0, _styles.styled)(_DragHandle.default)(({
47
+ theme
48
+ }) => ({
49
+ color: theme.palette.error[400]
50
+ }));
51
+ const StyledErrorText = (0, _styles.styled)('div')(({
52
+ theme
53
+ }) => ({
54
+ fontSize: theme.typography.fontSize - 2,
55
+ color: theme.palette.error.main,
56
+ marginLeft: theme.spacing(5),
57
+ marginTop: theme.spacing(1)
58
+ }));
59
+ const StyledRemoveCircle = (0, _styles.styled)(_RemoveCircle.default)(({
60
+ theme
61
+ }) => ({
62
+ fill: theme.palette.error[500]
63
+ }));
64
+ const StyledIconButton = (0, _styles.styled)(_IconButton.default)({
65
+ color: `${_renderUi.color.tertiary()} !important`
66
+ });
67
+ const ChoiceTile = props => {
68
+ const {
69
+ choice,
70
+ index,
71
+ onChoiceChange,
72
+ onDelete,
73
+ imageSupport,
74
+ spellCheck,
75
+ toolbarOpts,
76
+ pluginProps,
77
+ maxImageWidth,
78
+ maxImageHeight,
79
+ error,
80
+ mathMlOptions = {}
81
+ } = props;
82
+ const {
83
+ label,
84
+ editable,
85
+ type
86
+ } = choice;
87
+ const draggableId = `${type}-${choice.id}`;
88
+ const droppableId = `${type}-drop-${choice.id}`;
89
+ const {
90
+ attributes,
91
+ listeners,
92
+ setNodeRef: setDragRef,
93
+ transform,
94
+ isDragging
95
+ } = (0, _core.useDraggable)({
96
+ id: draggableId,
97
+ data: {
98
+ id: choice.id,
99
+ index,
100
+ type
101
+ }
102
+ });
103
+ const {
104
+ setNodeRef: setDropRef
105
+ } = (0, _core.useDroppable)({
106
+ id: droppableId,
107
+ data: {
108
+ id: choice.id,
109
+ index,
110
+ type
111
+ }
112
+ });
113
+ const onLabelChange = label => {
114
+ choice.label = label;
115
+ onChoiceChange(choice);
116
+ };
117
+ const style = {
118
+ transform: transform ? `translate3d(${transform.x}px, ${transform.y}px, 0)` : undefined,
119
+ opacity: isDragging ? 0.5 : 1,
120
+ width: '100%'
121
+ };
122
+ const filteredDefaultPlugins = (_editableHtmlTipTap.DEFAULT_PLUGINS || []).filter(p => p !== 'bulleted-list' && p !== 'numbered-list');
123
+ const isEditableElement = target => target.closest('[contenteditable]') || target.closest('input') || target.closest('textarea') || target.isContentEditable;
124
+
125
+ // edit listeners to prevent dragging when interacting with editable-html element
126
+ const filteredListeners = {
127
+ ...listeners,
128
+ onKeyDown: e => {
129
+ if (isEditableElement(e.target)) {
130
+ return;
131
+ }
132
+ listeners?.onKeyDown?.(e);
133
+ },
134
+ onPointerDown: e => {
135
+ if (isEditableElement(e.target)) {
136
+ return;
137
+ }
138
+ listeners?.onPointerDown?.(e);
139
+ }
140
+ };
141
+ return /*#__PURE__*/_react.default.createElement("div", {
142
+ ref: setDropRef
143
+ }, /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
144
+ ref: setDragRef
145
+ }, filteredListeners, attributes), /*#__PURE__*/_react.default.createElement(StyledChoiceTile, {
146
+ style: style
147
+ }, /*#__PURE__*/_react.default.createElement("div", {
148
+ style: {
149
+ width: '100%',
150
+ display: 'flex'
151
+ }
152
+ }, /*#__PURE__*/_react.default.createElement(_CardActions.default, null, /*#__PURE__*/_react.default.createElement(StyledActions, null)), /*#__PURE__*/_react.default.createElement(StyledEditableHtml, {
153
+ disabled: !editable,
154
+ placeholder: type !== 'target' && !label.includes('data-latex') ? 'Enter a choice' : '',
155
+ markup: label,
156
+ imageSupport: imageSupport || undefined,
157
+ onChange: onLabelChange,
158
+ pluginProps: pluginProps,
159
+ toolbarOpts: toolbarOpts,
160
+ activePlugins: filteredDefaultPlugins,
161
+ spellCheck: spellCheck,
162
+ autoWidthToolbar: true,
163
+ maxImageWidth: maxImageWidth,
164
+ maxImageHeight: maxImageHeight,
165
+ languageCharactersProps: [{
166
+ language: 'spanish'
167
+ }, {
168
+ language: 'special'
169
+ }],
170
+ error: editable && error,
171
+ mathMlOptions: mathMlOptions
172
+ }), editable && /*#__PURE__*/_react.default.createElement(StyledControls, null, /*#__PURE__*/_react.default.createElement(StyledIconButton, {
173
+ onClick: onDelete,
174
+ size: "large"
175
+ }, /*#__PURE__*/_react.default.createElement(StyledRemoveCircle, null)))), editable && error && /*#__PURE__*/_react.default.createElement(StyledErrorText, null, error))));
176
+ };
177
+ exports.ChoiceTile = ChoiceTile;
178
+ ChoiceTile.propTypes = {
179
+ id: _propTypes.default.any,
180
+ maxImageHeight: _propTypes.default.object,
181
+ maxImageWidth: _propTypes.default.object,
182
+ label: _propTypes.default.string,
183
+ isOver: _propTypes.default.bool,
184
+ type: _propTypes.default.string,
185
+ empty: _propTypes.default.bool,
186
+ disabled: _propTypes.default.bool,
187
+ outcome: _propTypes.default.object,
188
+ index: _propTypes.default.number,
189
+ imageSupport: _propTypes.default.shape({
190
+ add: _propTypes.default.func.isRequired,
191
+ delete: _propTypes.default.func.isRequired
192
+ }),
193
+ choice: _propTypes.default.object,
194
+ choices: _propTypes.default.array.isRequired,
195
+ onChoiceChange: _propTypes.default.func.isRequired,
196
+ onDelete: _propTypes.default.func.isRequired,
197
+ toolbarOpts: _propTypes.default.object,
198
+ pluginProps: _propTypes.default.object,
199
+ choicesLabel: _propTypes.default.string,
200
+ error: _propTypes.default.string,
201
+ spellCheck: _propTypes.default.bool,
202
+ mathMlOptions: _propTypes.default.object
203
+ };
204
+ var _default = exports.default = ChoiceTile;
205
+ //# sourceMappingURL=choice-tile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"choice-tile.js","names":["_react","_interopRequireDefault","require","_propTypes","_debug","_core","_CardActions","_DragHandle","_IconButton","_RemoveCircle","_styles","_renderUi","_editableHtmlTipTap","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","log","debug","StyledChoiceTile","styled","theme","margin","spacing","backgroundColor","palette","background","paper","display","flexDirection","cursor","touchAction","StyledEditableHtml","EditableHtml","isTargetPrompt","width","borderRadius","error","light","StyledControls","justifyContent","StyledActions","DragHandle","color","StyledErrorText","fontSize","typography","main","marginLeft","marginTop","StyledRemoveCircle","RemoveCircle","fill","StyledIconButton","IconButton","tertiary","ChoiceTile","props","choice","index","onChoiceChange","onDelete","imageSupport","spellCheck","toolbarOpts","pluginProps","maxImageWidth","maxImageHeight","mathMlOptions","label","editable","type","draggableId","id","droppableId","attributes","listeners","setNodeRef","setDragRef","transform","isDragging","useDraggable","data","setDropRef","useDroppable","onLabelChange","style","x","y","undefined","opacity","filteredDefaultPlugins","DEFAULT_PLUGINS","filter","p","isEditableElement","target","closest","isContentEditable","filteredListeners","onKeyDown","onPointerDown","createElement","ref","_extends2","disabled","placeholder","includes","markup","onChange","activePlugins","autoWidthToolbar","languageCharactersProps","language","onClick","size","exports","propTypes","PropTypes","any","object","string","isOver","bool","empty","outcome","number","shape","add","func","isRequired","delete","choices","array","choicesLabel","_default"],"sources":["../src/choice-tile.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport { useDraggable, useDroppable } from '@dnd-kit/core';\nimport CardActions from '@mui/material/CardActions';\nimport DragHandle from '@mui/icons-material/DragHandle';\nimport IconButton from '@mui/material/IconButton';\nimport RemoveCircle from '@mui/icons-material/RemoveCircle';\nimport { styled } from '@mui/material/styles';\n\nimport { color } from '@pie-lib/render-ui';\nimport EditableHtml, { DEFAULT_PLUGINS } from '@pie-lib/editable-html-tip-tap';\n\nconst log = debug('@pie-element:placement-ordering:configure:choice-tile');\n\nconst StyledChoiceTile = styled('div')(({ theme }) => ({\n margin: `${theme.spacing(1)} 0`,\n backgroundColor: theme.palette.background.paper,\n display: 'flex',\n flexDirection: 'column',\n cursor: 'move',\n touchAction: 'none',\n}));\n\nconst StyledEditableHtml = styled(EditableHtml)(({ theme, isTargetPrompt }) => ({\n width: '80%',\n borderRadius: '4px',\n ...(isTargetPrompt && {\n backgroundColor: theme.palette.error.light,\n }),\n}));\n\nconst StyledControls = styled('div')(() => ({\n display: 'flex',\n justifyContent: 'flex-end',\n}));\n\nconst StyledActions = styled(DragHandle)(({ theme }) => ({\n color: theme.palette.error[400],\n}));\n\nconst StyledErrorText = styled('div')(({ theme }) => ({\n fontSize: theme.typography.fontSize - 2,\n color: theme.palette.error.main,\n marginLeft: theme.spacing(5),\n marginTop: theme.spacing(1),\n}));\n\nconst StyledRemoveCircle = styled(RemoveCircle)(({ theme }) => ({\n fill: theme.palette.error[500],\n}));\n\nconst StyledIconButton = styled(IconButton)({\n color: `${color.tertiary()} !important`,\n});\n\nexport const ChoiceTile = (props) => {\n const {\n choice,\n index,\n onChoiceChange,\n onDelete,\n imageSupport,\n spellCheck,\n toolbarOpts,\n pluginProps,\n maxImageWidth,\n maxImageHeight,\n error,\n mathMlOptions = {},\n } = props;\n const { label, editable, type } = choice;\n const draggableId = `${type}-${choice.id}`;\n const droppableId = `${type}-drop-${choice.id}`;\n\n const {\n attributes,\n listeners,\n setNodeRef: setDragRef,\n transform,\n isDragging,\n } = useDraggable({\n id: draggableId,\n data: {\n id: choice.id,\n index,\n type,\n },\n });\n\n const { setNodeRef: setDropRef } = useDroppable({\n id: droppableId,\n data: {\n id: choice.id,\n index,\n type,\n },\n });\n\n const onLabelChange = (label) => {\n choice.label = label;\n onChoiceChange(choice);\n };\n\n const style = {\n transform: transform ? `translate3d(${transform.x}px, ${transform.y}px, 0)` : undefined,\n opacity: isDragging ? 0.5 : 1,\n width: '100%',\n };\n\n const filteredDefaultPlugins = (DEFAULT_PLUGINS || []).filter((p) => p !== 'bulleted-list' && p !== 'numbered-list');\n\n const isEditableElement = (target) =>\n target.closest('[contenteditable]') ||\n target.closest('input') ||\n target.closest('textarea') ||\n target.isContentEditable;\n\n // edit listeners to prevent dragging when interacting with editable-html element\n const filteredListeners = {\n ...listeners,\n onKeyDown: (e) => {\n if (isEditableElement(e.target)) {\n return;\n }\n\n listeners?.onKeyDown?.(e);\n },\n onPointerDown: (e) => {\n if (isEditableElement(e.target)) {\n return;\n }\n\n listeners?.onPointerDown?.(e);\n },\n };\n\n return (\n <div ref={setDropRef}>\n <div ref={setDragRef} {...filteredListeners} {...attributes}>\n <StyledChoiceTile style={style}>\n <div style={{ width: '100%', display: 'flex' }}>\n <CardActions>\n <StyledActions />\n </CardActions>\n\n <StyledEditableHtml\n disabled={!editable}\n placeholder={type !== 'target' && !label.includes('data-latex') ? 'Enter a choice' : ''}\n markup={label}\n imageSupport={imageSupport || undefined}\n onChange={onLabelChange}\n pluginProps={pluginProps}\n toolbarOpts={toolbarOpts}\n activePlugins={filteredDefaultPlugins}\n spellCheck={spellCheck}\n autoWidthToolbar\n maxImageWidth={maxImageWidth}\n maxImageHeight={maxImageHeight}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n error={editable && error}\n mathMlOptions={mathMlOptions}\n />\n\n {editable && (\n <StyledControls>\n <StyledIconButton onClick={onDelete} size=\"large\">\n <StyledRemoveCircle />\n </StyledIconButton>\n </StyledControls>\n )}\n </div>\n\n {editable && error && <StyledErrorText>{error}</StyledErrorText>}\n </StyledChoiceTile>\n </div>\n </div>\n );\n};\n\nChoiceTile.propTypes = {\n id: PropTypes.any,\n maxImageHeight: PropTypes.object,\n maxImageWidth: PropTypes.object,\n label: PropTypes.string,\n isOver: PropTypes.bool,\n type: PropTypes.string,\n empty: PropTypes.bool,\n disabled: PropTypes.bool,\n outcome: PropTypes.object,\n index: PropTypes.number,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n choice: PropTypes.object,\n choices: PropTypes.array.isRequired,\n onChoiceChange: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n toolbarOpts: PropTypes.object,\n pluginProps: PropTypes.object,\n choicesLabel: PropTypes.string,\n error: PropTypes.string,\n spellCheck: PropTypes.bool,\n mathMlOptions: PropTypes.object,\n};\n\nexport default ChoiceTile;\n"],"mappings":"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","ignoreList":[]}