@pie-element/match-list 7.1.2-next.5 → 7.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 +572 -0
- package/CHANGELOG.md +1499 -0
- package/LICENSE.md +5 -0
- package/README.md +1 -0
- package/controller/CHANGELOG.json +242 -0
- package/controller/CHANGELOG.md +1047 -0
- package/controller/lib/defaults.js +15 -0
- package/controller/lib/defaults.js.map +1 -0
- package/controller/lib/index.js +246 -0
- package/controller/lib/index.js.map +1 -0
- package/controller/package.json +25 -0
- package/docs/config-schema.json +70 -0
- package/docs/config-schema.json.md +55 -0
- package/docs/demo/config.js +34 -0
- package/docs/demo/generate.js +54 -0
- package/docs/demo/index.html +1 -0
- package/docs/demo/session.js +6 -0
- package/docs/pie-schema.json +170 -0
- package/docs/pie-schema.json.md +104 -0
- package/lib/answer-area.js +168 -0
- package/lib/answer-area.js.map +1 -0
- package/lib/answer.js +267 -0
- package/lib/answer.js.map +1 -0
- package/lib/arrow.js +57 -0
- package/lib/arrow.js.map +1 -0
- package/lib/choices-list.js +60 -0
- package/lib/choices-list.js.map +1 -0
- package/lib/droppable-placeholder.js +60 -0
- package/lib/droppable-placeholder.js.map +1 -0
- package/lib/index.js +86 -0
- package/lib/index.js.map +1 -0
- package/lib/main.js +220 -0
- package/lib/main.js.map +1 -0
- package/package.json +22 -69
- package/controller.js +0 -1
- package/dist/browser/controller/index.js +0 -201
- package/dist/browser/controller/index.js.map +0 -1
- package/dist/browser/delivery/index.js +0 -13062
- package/dist/browser/delivery/index.js.map +0 -1
- package/dist/browser/dist-DksDR3d3.js +0 -278
- package/dist/browser/dist-DksDR3d3.js.map +0 -1
- package/dist/controller/defaults.d.ts +0 -17
- package/dist/controller/defaults.js +0 -9
- package/dist/controller/index.d.ts +0 -38
- package/dist/controller/index.js +0 -105
- package/dist/delivery/answer-area.d.ts +0 -27
- package/dist/delivery/answer-area.js +0 -92
- package/dist/delivery/answer.d.ts +0 -40
- package/dist/delivery/answer.js +0 -176
- package/dist/delivery/arrow.d.ts +0 -17
- package/dist/delivery/arrow.js +0 -35
- package/dist/delivery/choices-list.d.ts +0 -21
- package/dist/delivery/choices-list.js +0 -35
- package/dist/delivery/droppable-placeholder.d.ts +0 -24
- package/dist/delivery/droppable-placeholder.js +0 -42
- package/dist/delivery/index.d.ts +0 -21
- package/dist/delivery/index.js +0 -49
- package/dist/delivery/main.d.ts +0 -26
- package/dist/delivery/main.js +0 -147
- package/dist/index.d.ts +0 -1
- package/dist/index.iife.d.ts +0 -8
- package/dist/index.iife.js +0 -152
- package/dist/index.js +0 -2
- package/dist/runtime-support.d.ts +0 -12
- package/dist/runtime-support.js +0 -12
package/lib/answer.js
ADDED
|
@@ -0,0 +1,267 @@
|
|
|
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.Answer = void 0;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
+
var _core = require("@dnd-kit/core");
|
|
11
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
12
|
+
var _react = _interopRequireDefault(require("react"));
|
|
13
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
14
|
+
var _styles = require("@mui/material/styles");
|
|
15
|
+
var _drag = require("@pie-lib/drag");
|
|
16
|
+
var _lodashEs = require("lodash-es");
|
|
17
|
+
var _renderUi = require("@pie-lib/render-ui");
|
|
18
|
+
const log = (0, _debug.default)('pie-elements:match-title:answer');
|
|
19
|
+
const HolderNumber = (0, _styles.styled)('div')(({
|
|
20
|
+
theme
|
|
21
|
+
}) => ({
|
|
22
|
+
width: '100%',
|
|
23
|
+
fontSize: '18px',
|
|
24
|
+
textAlign: 'center',
|
|
25
|
+
color: `rgba(${theme.palette.common.black}, 0.6)`
|
|
26
|
+
}));
|
|
27
|
+
const Holder = ({
|
|
28
|
+
index,
|
|
29
|
+
isOver,
|
|
30
|
+
disabled,
|
|
31
|
+
type
|
|
32
|
+
}) => /*#__PURE__*/_react.default.createElement(_drag.PlaceHolder, {
|
|
33
|
+
extraStyles: {
|
|
34
|
+
display: 'flex',
|
|
35
|
+
padding: '0',
|
|
36
|
+
alignItems: 'center',
|
|
37
|
+
justifyContent: 'center',
|
|
38
|
+
height: '40px'
|
|
39
|
+
},
|
|
40
|
+
disabled: disabled,
|
|
41
|
+
isOver: isOver,
|
|
42
|
+
type: type
|
|
43
|
+
}, index !== undefined && /*#__PURE__*/_react.default.createElement(HolderNumber, null, index));
|
|
44
|
+
Holder.propTypes = {
|
|
45
|
+
index: _propTypes.default.number,
|
|
46
|
+
isOver: _propTypes.default.bool,
|
|
47
|
+
disabled: _propTypes.default.bool,
|
|
48
|
+
type: _propTypes.default.string
|
|
49
|
+
};
|
|
50
|
+
const AnswerContentContainer = (0, _styles.styled)('div')(({
|
|
51
|
+
theme,
|
|
52
|
+
isDragging,
|
|
53
|
+
isOver,
|
|
54
|
+
disabled,
|
|
55
|
+
outcome
|
|
56
|
+
}) => ({
|
|
57
|
+
color: _renderUi.color.text(),
|
|
58
|
+
backgroundColor: _renderUi.color.white(),
|
|
59
|
+
border: `1px solid ${outcome === 'correct' ? _renderUi.color.correct() : outcome === 'incorrect' ? _renderUi.color.incorrect() : theme.palette.grey[400]}`,
|
|
60
|
+
cursor: disabled ? 'not-allowed' : 'pointer',
|
|
61
|
+
width: '100%',
|
|
62
|
+
padding: '10px',
|
|
63
|
+
boxSizing: 'border-box',
|
|
64
|
+
overflow: 'hidden',
|
|
65
|
+
transition: 'opacity 200ms linear',
|
|
66
|
+
wordBreak: 'break-word',
|
|
67
|
+
opacity: isDragging && !disabled ? 0.5 : isOver && !disabled ? 0.2 : 1,
|
|
68
|
+
touchAction: 'none'
|
|
69
|
+
}));
|
|
70
|
+
const AnswerContent = props => {
|
|
71
|
+
const {
|
|
72
|
+
isDragging,
|
|
73
|
+
isOver,
|
|
74
|
+
title,
|
|
75
|
+
disabled,
|
|
76
|
+
empty,
|
|
77
|
+
outcome,
|
|
78
|
+
guideIndex,
|
|
79
|
+
type
|
|
80
|
+
} = props;
|
|
81
|
+
if (empty) {
|
|
82
|
+
return /*#__PURE__*/_react.default.createElement(Holder, {
|
|
83
|
+
index: guideIndex,
|
|
84
|
+
isOver: isOver,
|
|
85
|
+
disabled: disabled,
|
|
86
|
+
type: type
|
|
87
|
+
});
|
|
88
|
+
} else {
|
|
89
|
+
return /*#__PURE__*/_react.default.createElement(AnswerContentContainer, {
|
|
90
|
+
isDragging: isDragging,
|
|
91
|
+
isOver: isOver,
|
|
92
|
+
disabled: disabled,
|
|
93
|
+
outcome: outcome,
|
|
94
|
+
dangerouslySetInnerHTML: {
|
|
95
|
+
__html: title
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
const AnswerContainer = (0, _styles.styled)('div')(({
|
|
101
|
+
correct,
|
|
102
|
+
theme
|
|
103
|
+
}) => ({
|
|
104
|
+
boxSizing: 'border-box',
|
|
105
|
+
minHeight: 40,
|
|
106
|
+
minWidth: '200px',
|
|
107
|
+
overflow: 'hidden',
|
|
108
|
+
margin: theme.spacing(0.5),
|
|
109
|
+
padding: '0px',
|
|
110
|
+
textAlign: 'center',
|
|
111
|
+
height: 'initial',
|
|
112
|
+
border: correct === true ? `1px solid var(--feedback-correct-bg-color, ${_renderUi.color.correct()})` : correct === false ? `1px solid var(--feedback-incorrect-bg-color, ${_renderUi.color.incorrect()})` : 'none'
|
|
113
|
+
}));
|
|
114
|
+
class Answer extends _react.default.Component {
|
|
115
|
+
constructor(...args) {
|
|
116
|
+
super(...args);
|
|
117
|
+
(0, _defineProperty2.default)(this, "handleTouchStart", e => {
|
|
118
|
+
// do NOT call e.preventDefault() here — it prevents pointer events necessary for dnd-kit.
|
|
119
|
+
// Keep this handler empty or remove it if you don't need it.
|
|
120
|
+
// e.preventDefault();
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
componentDidMount() {
|
|
124
|
+
if (this.ref) {
|
|
125
|
+
// NOTE: preventing default on touchstart can block dnd-kit pointer handling on some devices.
|
|
126
|
+
// Consider removing this if you have issues on touch devices.
|
|
127
|
+
this.ref.addEventListener('touchstart', this.handleTouchStart, {
|
|
128
|
+
passive: true
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
componentWillUnmount() {
|
|
133
|
+
if (this.ref) {
|
|
134
|
+
this.ref.removeEventListener('touchstart', this.handleTouchStart);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
render() {
|
|
138
|
+
const {
|
|
139
|
+
id,
|
|
140
|
+
title,
|
|
141
|
+
isDragging = false,
|
|
142
|
+
className,
|
|
143
|
+
disabled,
|
|
144
|
+
isOver = false,
|
|
145
|
+
type,
|
|
146
|
+
correct
|
|
147
|
+
} = this.props;
|
|
148
|
+
log('[render], props: ', this.props);
|
|
149
|
+
return /*#__PURE__*/_react.default.createElement(AnswerContainer, {
|
|
150
|
+
correct: correct,
|
|
151
|
+
className: className,
|
|
152
|
+
ref: ref => this.ref = ref
|
|
153
|
+
}, /*#__PURE__*/_react.default.createElement(AnswerContent, {
|
|
154
|
+
title: title,
|
|
155
|
+
id: id,
|
|
156
|
+
isOver: isOver,
|
|
157
|
+
empty: (0, _lodashEs.isEmpty)(title),
|
|
158
|
+
isDragging: isDragging,
|
|
159
|
+
disabled: disabled,
|
|
160
|
+
type: type
|
|
161
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
exports.Answer = Answer;
|
|
165
|
+
(0, _defineProperty2.default)(Answer, "propTypes", {
|
|
166
|
+
className: _propTypes.default.string,
|
|
167
|
+
isDragging: _propTypes.default.bool,
|
|
168
|
+
id: _propTypes.default.any,
|
|
169
|
+
title: _propTypes.default.string,
|
|
170
|
+
isOver: _propTypes.default.bool,
|
|
171
|
+
empty: _propTypes.default.bool,
|
|
172
|
+
type: _propTypes.default.string,
|
|
173
|
+
disabled: _propTypes.default.bool,
|
|
174
|
+
correct: _propTypes.default.bool
|
|
175
|
+
});
|
|
176
|
+
function DragAndDropAnswer(props) {
|
|
177
|
+
const {
|
|
178
|
+
id,
|
|
179
|
+
instanceId,
|
|
180
|
+
promptId,
|
|
181
|
+
draggable = true,
|
|
182
|
+
disabled = false,
|
|
183
|
+
type
|
|
184
|
+
} = props;
|
|
185
|
+
const dragId = `${type || 'answer'}-${id}`;
|
|
186
|
+
// droppable only if promptId exists
|
|
187
|
+
const dropId = promptId !== undefined && promptId !== null ? `drop-${promptId}` : undefined;
|
|
188
|
+
const {
|
|
189
|
+
attributes,
|
|
190
|
+
listeners,
|
|
191
|
+
setNodeRef: setDragRef,
|
|
192
|
+
transform,
|
|
193
|
+
transition,
|
|
194
|
+
isDragging
|
|
195
|
+
} = (0, _core.useDraggable)({
|
|
196
|
+
id: dragId,
|
|
197
|
+
data: {
|
|
198
|
+
type: type || 'answer',
|
|
199
|
+
id,
|
|
200
|
+
instanceId,
|
|
201
|
+
value: props.title,
|
|
202
|
+
promptId
|
|
203
|
+
},
|
|
204
|
+
disabled: !draggable || disabled
|
|
205
|
+
});
|
|
206
|
+
const droppable = (0, _core.useDroppable)({
|
|
207
|
+
id: dropId,
|
|
208
|
+
data: dropId ? {
|
|
209
|
+
type: 'drop-zone',
|
|
210
|
+
promptId,
|
|
211
|
+
instanceId
|
|
212
|
+
} : undefined,
|
|
213
|
+
disabled: disabled || !dropId
|
|
214
|
+
});
|
|
215
|
+
const setDropRef = droppable.setNodeRef;
|
|
216
|
+
const isOver = droppable.isOver;
|
|
217
|
+
|
|
218
|
+
// compute style: apply transform to the element that actually moves
|
|
219
|
+
const transformStyle = transform ? `translate3d(${transform.x}px, ${transform.y}px, 0)` : undefined;
|
|
220
|
+
|
|
221
|
+
// If this item is a drop-zone (prompt slot), we render an outer droppable wrapper.
|
|
222
|
+
// For droppable wrapper we apply style to the outer wrapper
|
|
223
|
+
if (dropId) {
|
|
224
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
225
|
+
ref: setDropRef,
|
|
226
|
+
style: {
|
|
227
|
+
flex: 1,
|
|
228
|
+
transform: transformStyle,
|
|
229
|
+
transition,
|
|
230
|
+
opacity: isDragging ? 0.5 : 1,
|
|
231
|
+
backgroundColor: isOver ? 'rgba(0,0,0,0.05)' : 'transparent'
|
|
232
|
+
}
|
|
233
|
+
}, /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
|
|
234
|
+
ref: setDragRef
|
|
235
|
+
}, listeners, attributes), /*#__PURE__*/_react.default.createElement(Answer, (0, _extends2.default)({}, props, {
|
|
236
|
+
isDragging: isDragging,
|
|
237
|
+
isOver: isOver
|
|
238
|
+
}))));
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
// if there is NO dropId (this is a choice / draggable-only), render only draggable node and apply transform to it.
|
|
242
|
+
return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
|
|
243
|
+
ref: setDragRef
|
|
244
|
+
}, listeners, attributes, {
|
|
245
|
+
style: {
|
|
246
|
+
transform: transformStyle,
|
|
247
|
+
transition,
|
|
248
|
+
cursor: disabled ? 'not-allowed' : 'grab',
|
|
249
|
+
opacity: isDragging ? 0.5 : 1,
|
|
250
|
+
touchAction: draggable && !disabled ? 'none' : 'auto'
|
|
251
|
+
}
|
|
252
|
+
}), /*#__PURE__*/_react.default.createElement(Answer, (0, _extends2.default)({}, props, {
|
|
253
|
+
isDragging: isDragging,
|
|
254
|
+
isOver: false
|
|
255
|
+
})));
|
|
256
|
+
}
|
|
257
|
+
DragAndDropAnswer.propTypes = {
|
|
258
|
+
id: _propTypes.default.any,
|
|
259
|
+
instanceId: _propTypes.default.string,
|
|
260
|
+
promptId: _propTypes.default.any,
|
|
261
|
+
title: _propTypes.default.string,
|
|
262
|
+
draggable: _propTypes.default.bool,
|
|
263
|
+
disabled: _propTypes.default.bool,
|
|
264
|
+
type: _propTypes.default.string
|
|
265
|
+
};
|
|
266
|
+
var _default = exports.default = DragAndDropAnswer;
|
|
267
|
+
//# sourceMappingURL=answer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answer.js","names":["_core","require","_propTypes","_interopRequireDefault","_react","_debug","_styles","_drag","_lodashEs","_renderUi","log","debug","HolderNumber","styled","theme","width","fontSize","textAlign","color","palette","common","black","Holder","index","isOver","disabled","type","default","createElement","PlaceHolder","extraStyles","display","padding","alignItems","justifyContent","height","undefined","propTypes","PropTypes","number","bool","string","AnswerContentContainer","isDragging","outcome","text","backgroundColor","white","border","correct","incorrect","grey","cursor","boxSizing","overflow","transition","wordBreak","opacity","touchAction","AnswerContent","props","title","empty","guideIndex","dangerouslySetInnerHTML","__html","AnswerContainer","minHeight","minWidth","margin","spacing","Answer","React","Component","constructor","args","_defineProperty2","e","componentDidMount","ref","addEventListener","handleTouchStart","passive","componentWillUnmount","removeEventListener","render","id","className","isEmpty","exports","any","DragAndDropAnswer","instanceId","promptId","draggable","dragId","dropId","attributes","listeners","setNodeRef","setDragRef","transform","useDraggable","data","value","droppable","useDroppable","setDropRef","transformStyle","x","y","style","flex","_extends2","_default"],"sources":["../src/answer.jsx"],"sourcesContent":["import { useDraggable, useDroppable } from '@dnd-kit/core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport debug from 'debug';\nimport { styled } from '@mui/material/styles';\nimport { PlaceHolder } from '@pie-lib/drag';\nimport { isEmpty } from 'lodash-es';\nimport { color } from '@pie-lib/render-ui';\n\nconst log = debug('pie-elements:match-title:answer');\n\nconst HolderNumber = styled('div')(({ theme }) => ({\n width: '100%',\n fontSize: '18px',\n textAlign: 'center',\n color: `rgba(${theme.palette.common.black}, 0.6)`,\n}));\n\nconst Holder = ({ index, isOver, disabled, type }) => (\n <PlaceHolder\n extraStyles={{\n display: 'flex',\n padding: '0',\n alignItems: 'center',\n justifyContent: 'center',\n height: '40px',\n }}\n disabled={disabled}\n isOver={isOver}\n type={type}\n >\n {index !== undefined && <HolderNumber>{index}</HolderNumber>}\n </PlaceHolder>\n);\n\nHolder.propTypes = {\n index: PropTypes.number,\n isOver: PropTypes.bool,\n disabled: PropTypes.bool,\n type: PropTypes.string,\n};\n\nconst AnswerContentContainer = styled('div')(({ theme, isDragging, isOver, disabled, outcome }) => ({\n color: color.text(),\n backgroundColor: color.white(),\n border: `1px solid ${outcome === 'correct' ? color.correct() :\n outcome === 'incorrect' ? color.incorrect() :\n theme.palette.grey[400]\n }`,\n cursor: disabled ? 'not-allowed' : 'pointer',\n width: '100%',\n padding: '10px',\n boxSizing: 'border-box',\n overflow: 'hidden',\n transition: 'opacity 200ms linear',\n wordBreak: 'break-word',\n opacity: isDragging && !disabled ? 0.5 : isOver && !disabled ? 0.2 : 1,\n touchAction: 'none'\n}));\n\nconst AnswerContent = (props) => {\n const { isDragging, isOver, title, disabled, empty, outcome, guideIndex, type } = props;\n\n if (empty) {\n return <Holder\n index={guideIndex}\n isOver={isOver}\n disabled={disabled}\n type={type}\n\n />;\n } else {\n return (\n <AnswerContentContainer\n isDragging={isDragging}\n isOver={isOver}\n disabled={disabled}\n outcome={outcome}\n dangerouslySetInnerHTML={{ __html: title }}\n />\n );\n }\n};\n\nconst AnswerContainer = styled('div')(({ correct, theme }) => ({\n boxSizing: 'border-box',\n minHeight: 40,\n minWidth: '200px',\n overflow: 'hidden',\n margin: theme.spacing(0.5),\n padding: '0px',\n textAlign: 'center',\n height: 'initial',\n border: correct === true ? `1px solid var(--feedback-correct-bg-color, ${color.correct()})` :\n correct === false ? `1px solid var(--feedback-incorrect-bg-color, ${color.incorrect()})` :\n 'none',\n}));\n\nexport class Answer extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n isDragging: PropTypes.bool,\n id: PropTypes.any,\n title: PropTypes.string,\n isOver: PropTypes.bool,\n empty: PropTypes.bool,\n type: PropTypes.string,\n disabled: PropTypes.bool,\n correct: PropTypes.bool,\n };\n\n componentDidMount() {\n if (this.ref) {\n // NOTE: preventing default on touchstart can block dnd-kit pointer handling on some devices.\n // Consider removing this if you have issues on touch devices.\n this.ref.addEventListener('touchstart', this.handleTouchStart, { passive: true });\n }\n }\n\n componentWillUnmount() {\n if (this.ref) {\n this.ref.removeEventListener('touchstart', this.handleTouchStart);\n }\n }\n\n handleTouchStart = (e) => {\n // do NOT call e.preventDefault() here — it prevents pointer events necessary for dnd-kit.\n // Keep this handler empty or remove it if you don't need it.\n // e.preventDefault();\n };\n\n render() {\n const {\n id,\n title,\n isDragging = false,\n className,\n disabled,\n isOver = false,\n type,\n correct,\n } = this.props;\n\n log('[render], props: ', this.props);\n\n return (\n <AnswerContainer correct={correct} className={className} ref={(ref) => (this.ref = ref)}>\n <AnswerContent\n title={title}\n id={id}\n isOver={isOver}\n empty={isEmpty(title)}\n isDragging={isDragging}\n disabled={disabled}\n type={type}\n />\n </AnswerContainer>\n );\n }\n}\n\nfunction DragAndDropAnswer(props) {\n const { id, instanceId, promptId, draggable = true, disabled = false, type } = props;\n\n const dragId = `${type || 'answer'}-${id}`;\n // droppable only if promptId exists\n const dropId = promptId !== undefined && promptId !== null ? `drop-${promptId}` : undefined;\n\n const {\n attributes,\n listeners,\n setNodeRef: setDragRef,\n transform,\n transition,\n isDragging,\n } = useDraggable({\n id: dragId,\n data: {\n type: type || 'answer',\n id,\n instanceId,\n value: props.title,\n promptId,\n },\n disabled: !draggable || disabled,\n });\n\n const droppable = useDroppable({\n id: dropId,\n data: dropId ? { type: 'drop-zone', promptId, instanceId } : undefined,\n disabled: disabled || !dropId,\n });\n\n const setDropRef = droppable.setNodeRef;\n const isOver = droppable.isOver;\n\n // compute style: apply transform to the element that actually moves\n const transformStyle = transform\n ? `translate3d(${transform.x}px, ${transform.y}px, 0)`\n : undefined;\n\n // If this item is a drop-zone (prompt slot), we render an outer droppable wrapper.\n // For droppable wrapper we apply style to the outer wrapper\n if (dropId) {\n return (\n <div\n ref={setDropRef}\n style={{\n flex: 1,\n transform: transformStyle,\n transition,\n opacity: isDragging ? 0.5 : 1,\n backgroundColor: isOver ? 'rgba(0,0,0,0.05)' : 'transparent',\n }}\n >\n <div ref={setDragRef} {...listeners} {...attributes}>\n <Answer {...props} isDragging={isDragging} isOver={isOver} />\n </div>\n </div>\n );\n }\n\n // if there is NO dropId (this is a choice / draggable-only), render only draggable node and apply transform to it.\n return (\n <div\n ref={setDragRef}\n {...listeners}\n {...attributes}\n style={{\n transform: transformStyle,\n transition,\n cursor: disabled ? 'not-allowed' : 'grab',\n opacity: isDragging ? 0.5 : 1,\n touchAction: draggable && !disabled ? 'none' : 'auto',\n }}\n >\n <Answer {...props} isDragging={isDragging} isOver={false} />\n </div>\n );\n}\n\nDragAndDropAnswer.propTypes = {\n id: PropTypes.any,\n instanceId: PropTypes.string,\n promptId: PropTypes.any,\n title: PropTypes.string,\n draggable: PropTypes.bool,\n disabled: PropTypes.bool,\n type: PropTypes.string,\n};\n\nexport default DragAndDropAnswer;\n"],"mappings":"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","ignoreList":[]}
|
package/lib/arrow.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
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.Arrow = 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 _ArrowDropDown = _interopRequireDefault(require("@mui/icons-material/ArrowDropDown"));
|
|
12
|
+
var _styles = require("@mui/material/styles");
|
|
13
|
+
const ArrowContainer = (0, _styles.styled)('div')({
|
|
14
|
+
display: 'inline-block',
|
|
15
|
+
position: 'relative',
|
|
16
|
+
width: '100%'
|
|
17
|
+
});
|
|
18
|
+
const Line = (0, _styles.styled)('span')(({
|
|
19
|
+
theme,
|
|
20
|
+
isRight
|
|
21
|
+
}) => ({
|
|
22
|
+
backgroundColor: theme.palette.grey[500],
|
|
23
|
+
bottom: isRight ? 20 : 19,
|
|
24
|
+
content: '""',
|
|
25
|
+
display: 'block',
|
|
26
|
+
height: 1,
|
|
27
|
+
left: 20,
|
|
28
|
+
position: 'absolute',
|
|
29
|
+
width: '100%'
|
|
30
|
+
}));
|
|
31
|
+
class Arrow extends _react.default.Component {
|
|
32
|
+
render() {
|
|
33
|
+
const {
|
|
34
|
+
direction
|
|
35
|
+
} = this.props;
|
|
36
|
+
const extraStyle = direction === 'left' ? {} : {
|
|
37
|
+
transform: 'rotate(180deg)'
|
|
38
|
+
};
|
|
39
|
+
return /*#__PURE__*/_react.default.createElement(ArrowContainer, {
|
|
40
|
+
style: extraStyle
|
|
41
|
+
}, /*#__PURE__*/_react.default.createElement(_ArrowDropDown.default, {
|
|
42
|
+
style: {
|
|
43
|
+
transform: 'rotate(90deg)',
|
|
44
|
+
color: '#979797',
|
|
45
|
+
fontSize: 40
|
|
46
|
+
}
|
|
47
|
+
}), /*#__PURE__*/_react.default.createElement(Line, {
|
|
48
|
+
isRight: direction !== 'left'
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.Arrow = Arrow;
|
|
53
|
+
(0, _defineProperty2.default)(Arrow, "propTypes", {
|
|
54
|
+
direction: _propTypes.default.string
|
|
55
|
+
});
|
|
56
|
+
var _default = exports.default = Arrow;
|
|
57
|
+
//# sourceMappingURL=arrow.js.map
|
package/lib/arrow.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrow.js","names":["_react","_interopRequireDefault","require","_propTypes","_ArrowDropDown","_styles","ArrowContainer","styled","display","position","width","Line","theme","isRight","backgroundColor","palette","grey","bottom","content","height","left","Arrow","React","Component","render","direction","props","extraStyle","transform","default","createElement","style","color","fontSize","exports","_defineProperty2","PropTypes","string","_default"],"sources":["../src/arrow.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport ArrowHead from '@mui/icons-material/ArrowDropDown';\nimport { styled } from '@mui/material/styles';\n\nconst ArrowContainer = styled('div')({\n display: 'inline-block',\n position: 'relative',\n width: '100%',\n});\n\nconst Line = styled('span')(({ theme, isRight }) => ({\n backgroundColor: theme.palette.grey[500],\n bottom: isRight ? 20 : 19,\n content: '\"\"',\n display: 'block',\n height: 1,\n left: 20,\n position: 'absolute',\n width: '100%',\n}));\n\nexport class Arrow extends React.Component {\n static propTypes = {\n direction: PropTypes.string,\n };\n\n render() {\n const { direction } = this.props;\n\n const extraStyle =\n direction === 'left'\n ? {}\n : {\n transform: 'rotate(180deg)',\n };\n\n return (\n <ArrowContainer style={extraStyle}>\n <ArrowHead\n style={{\n transform: 'rotate(90deg)',\n color: '#979797',\n fontSize: 40,\n }}\n />\n <Line isRight={direction !== 'left'} />\n </ArrowContainer>\n );\n }\n}\n\nexport default Arrow;\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,cAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AAEA,MAAMI,cAAc,GAAG,IAAAC,cAAM,EAAC,KAAK,CAAC,CAAC;EACnCC,OAAO,EAAE,cAAc;EACvBC,QAAQ,EAAE,UAAU;EACpBC,KAAK,EAAE;AACT,CAAC,CAAC;AAEF,MAAMC,IAAI,GAAG,IAAAJ,cAAM,EAAC,MAAM,CAAC,CAAC,CAAC;EAAEK,KAAK;EAAEC;AAAQ,CAAC,MAAM;EACnDC,eAAe,EAAEF,KAAK,CAACG,OAAO,CAACC,IAAI,CAAC,GAAG,CAAC;EACxCC,MAAM,EAAEJ,OAAO,GAAG,EAAE,GAAG,EAAE;EACzBK,OAAO,EAAE,IAAI;EACbV,OAAO,EAAE,OAAO;EAChBW,MAAM,EAAE,CAAC;EACTC,IAAI,EAAE,EAAE;EACRX,QAAQ,EAAE,UAAU;EACpBC,KAAK,EAAE;AACT,CAAC,CAAC,CAAC;AAEI,MAAMW,KAAK,SAASC,cAAK,CAACC,SAAS,CAAC;EAKzCC,MAAMA,CAAA,EAAG;IACP,MAAM;MAAEC;IAAU,CAAC,GAAG,IAAI,CAACC,KAAK;IAEhC,MAAMC,UAAU,GACdF,SAAS,KAAK,MAAM,GAChB,CAAC,CAAC,GACF;MACEG,SAAS,EAAE;IACb,CAAC;IAEP,oBACE5B,MAAA,CAAA6B,OAAA,CAAAC,aAAA,CAACxB,cAAc;MAACyB,KAAK,EAAEJ;IAAW,gBAChC3B,MAAA,CAAA6B,OAAA,CAAAC,aAAA,CAAC1B,cAAA,CAAAyB,OAAS;MACRE,KAAK,EAAE;QACLH,SAAS,EAAE,eAAe;QAC1BI,KAAK,EAAE,SAAS;QAChBC,QAAQ,EAAE;MACZ;IAAE,CACH,CAAC,eACFjC,MAAA,CAAA6B,OAAA,CAAAC,aAAA,CAACnB,IAAI;MAACE,OAAO,EAAEY,SAAS,KAAK;IAAO,CAAE,CACxB,CAAC;EAErB;AACF;AAACS,OAAA,CAAAb,KAAA,GAAAA,KAAA;AAAA,IAAAc,gBAAA,CAAAN,OAAA,EA5BYR,KAAK,eACG;EACjBI,SAAS,EAAEW,kBAAS,CAACC;AACvB,CAAC;AAAA,IAAAC,QAAA,GAAAJ,OAAA,CAAAL,OAAA,GA2BYR,KAAK","ignoreList":[]}
|
|
@@ -0,0 +1,60 @@
|
|
|
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.ChoicesList = void 0;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
12
|
+
var _styles = require("@mui/material/styles");
|
|
13
|
+
var _lodashEs = require("lodash-es");
|
|
14
|
+
var _answer = _interopRequireDefault(require("./answer"));
|
|
15
|
+
var _droppablePlaceholder = require("./droppable-placeholder");
|
|
16
|
+
const ChoicesContainer = (0, _styles.styled)('div')(({
|
|
17
|
+
theme
|
|
18
|
+
}) => ({
|
|
19
|
+
marginBottom: theme.spacing(2)
|
|
20
|
+
}));
|
|
21
|
+
class ChoicesList extends _react.default.Component {
|
|
22
|
+
render() {
|
|
23
|
+
const {
|
|
24
|
+
model,
|
|
25
|
+
disabled,
|
|
26
|
+
session,
|
|
27
|
+
instanceId,
|
|
28
|
+
onRemoveAnswer
|
|
29
|
+
} = this.props;
|
|
30
|
+
const {
|
|
31
|
+
config
|
|
32
|
+
} = model;
|
|
33
|
+
const {
|
|
34
|
+
duplicates
|
|
35
|
+
} = config;
|
|
36
|
+
const filteredAnswers = config.answers.filter(answer => duplicates || (0, _lodashEs.isEmpty)(session) || !session.value || (0, _lodashEs.isUndefined)((0, _lodashEs.find)(session.value, val => val === answer.id))).map(answer => /*#__PURE__*/_react.default.createElement(_answer.default, (0, _extends2.default)({
|
|
37
|
+
key: answer.id,
|
|
38
|
+
instanceId: instanceId,
|
|
39
|
+
draggable: true,
|
|
40
|
+
disabled: disabled,
|
|
41
|
+
session: session,
|
|
42
|
+
type: "choice"
|
|
43
|
+
}, answer)));
|
|
44
|
+
return /*#__PURE__*/_react.default.createElement(ChoicesContainer, null, /*#__PURE__*/_react.default.createElement(_droppablePlaceholder.DroppablePlaceholder, {
|
|
45
|
+
id: "choices-pool",
|
|
46
|
+
disabled: disabled,
|
|
47
|
+
onRemoveAnswer: onRemoveAnswer
|
|
48
|
+
}, filteredAnswers));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.ChoicesList = ChoicesList;
|
|
52
|
+
(0, _defineProperty2.default)(ChoicesList, "propTypes", {
|
|
53
|
+
session: _propTypes.default.object.isRequired,
|
|
54
|
+
instanceId: _propTypes.default.string.isRequired,
|
|
55
|
+
model: _propTypes.default.object.isRequired,
|
|
56
|
+
disabled: _propTypes.default.bool.isRequired,
|
|
57
|
+
onRemoveAnswer: _propTypes.default.func
|
|
58
|
+
});
|
|
59
|
+
var _default = exports.default = ChoicesList;
|
|
60
|
+
//# sourceMappingURL=choices-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"choices-list.js","names":["_react","_interopRequireDefault","require","_propTypes","_styles","_lodashEs","_answer","_droppablePlaceholder","ChoicesContainer","styled","theme","marginBottom","spacing","ChoicesList","React","Component","render","model","disabled","session","instanceId","onRemoveAnswer","props","config","duplicates","filteredAnswers","answers","filter","answer","isEmpty","value","isUndefined","find","val","id","map","default","createElement","_extends2","key","draggable","type","DroppablePlaceholder","exports","_defineProperty2","PropTypes","object","isRequired","string","bool","func","_default"],"sources":["../src/choices-list.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { find, isEmpty, isUndefined } from 'lodash-es';\nimport DragAndDropAnswer from './answer';\nimport { DroppablePlaceholder } from './droppable-placeholder';\n\nconst ChoicesContainer = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nexport class ChoicesList extends React.Component {\n static propTypes = {\n session: PropTypes.object.isRequired,\n instanceId: PropTypes.string.isRequired,\n model: PropTypes.object.isRequired,\n disabled: PropTypes.bool.isRequired,\n onRemoveAnswer: PropTypes.func,\n };\n\n render() {\n const { model, disabled, session, instanceId, onRemoveAnswer } = this.props;\n const { config } = model;\n const { duplicates } = config;\n\n const filteredAnswers = config.answers\n .filter(\n (answer) =>\n duplicates ||\n isEmpty(session) ||\n !session.value ||\n isUndefined(find(session.value, (val) => val === answer.id)),\n )\n .map((answer) => (\n <DragAndDropAnswer\n key={answer.id}\n instanceId={instanceId}\n draggable={true}\n disabled={disabled}\n session={session}\n type=\"choice\"\n {...answer}\n />\n ));\n\n return (\n <ChoicesContainer>\n <DroppablePlaceholder id=\"choices-pool\" disabled={disabled} onRemoveAnswer={onRemoveAnswer}>\n {filteredAnswers}\n </DroppablePlaceholder>\n </ChoicesContainer>\n );\n }\n}\n\nexport default ChoicesList;\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,qBAAA,GAAAL,OAAA;AAEA,MAAMM,gBAAgB,GAAG,IAAAC,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;EAAEC;AAAM,CAAC,MAAM;EACrDC,YAAY,EAAED,KAAK,CAACE,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEI,MAAMC,WAAW,SAASC,cAAK,CAACC,SAAS,CAAC;EAS/CC,MAAMA,CAAA,EAAG;IACP,MAAM;MAAEC,KAAK;MAAEC,QAAQ;MAAEC,OAAO;MAAEC,UAAU;MAAEC;IAAe,CAAC,GAAG,IAAI,CAACC,KAAK;IAC3E,MAAM;MAAEC;IAAO,CAAC,GAAGN,KAAK;IACxB,MAAM;MAAEO;IAAW,CAAC,GAAGD,MAAM;IAE7B,MAAME,eAAe,GAAGF,MAAM,CAACG,OAAO,CACnCC,MAAM,CACJC,MAAM,IACLJ,UAAU,IACV,IAAAK,iBAAO,EAACV,OAAO,CAAC,IAChB,CAACA,OAAO,CAACW,KAAK,IACd,IAAAC,qBAAW,EAAC,IAAAC,cAAI,EAACb,OAAO,CAACW,KAAK,EAAGG,GAAG,IAAKA,GAAG,KAAKL,MAAM,CAACM,EAAE,CAAC,CAC/D,CAAC,CACAC,GAAG,CAAEP,MAAM,iBACV5B,MAAA,CAAAoC,OAAA,CAAAC,aAAA,CAAC/B,OAAA,CAAA8B,OAAiB,MAAAE,SAAA,CAAAF,OAAA;MAChBG,GAAG,EAAEX,MAAM,CAACM,EAAG;MACfd,UAAU,EAAEA,UAAW;MACvBoB,SAAS,EAAE,IAAK;MAChBtB,QAAQ,EAAEA,QAAS;MACnBC,OAAO,EAAEA,OAAQ;MACjBsB,IAAI,EAAC;IAAQ,GACTb,MAAM,CACX,CACF,CAAC;IAEJ,oBACE5B,MAAA,CAAAoC,OAAA,CAAAC,aAAA,CAAC7B,gBAAgB,qBACfR,MAAA,CAAAoC,OAAA,CAAAC,aAAA,CAAC9B,qBAAA,CAAAmC,oBAAoB;MAACR,EAAE,EAAC,cAAc;MAAChB,QAAQ,EAAEA,QAAS;MAACG,cAAc,EAAEA;IAAe,GACxFI,eACmB,CACN,CAAC;EAEvB;AACF;AAACkB,OAAA,CAAA9B,WAAA,GAAAA,WAAA;AAAA,IAAA+B,gBAAA,CAAAR,OAAA,EA1CYvB,WAAW,eACH;EACjBM,OAAO,EAAE0B,kBAAS,CAACC,MAAM,CAACC,UAAU;EACpC3B,UAAU,EAAEyB,kBAAS,CAACG,MAAM,CAACD,UAAU;EACvC9B,KAAK,EAAE4B,kBAAS,CAACC,MAAM,CAACC,UAAU;EAClC7B,QAAQ,EAAE2B,kBAAS,CAACI,IAAI,CAACF,UAAU;EACnC1B,cAAc,EAAEwB,kBAAS,CAACK;AAC5B,CAAC;AAAA,IAAAC,QAAA,GAAAR,OAAA,CAAAP,OAAA,GAqCYvB,WAAW","ignoreList":[]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.DroppablePlaceholder = DroppablePlaceholder;
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
12
|
+
var _core = require("@dnd-kit/core");
|
|
13
|
+
var _styles = require("@mui/material/styles");
|
|
14
|
+
var _drag = require("@pie-lib/drag");
|
|
15
|
+
const Container = (0, _styles.styled)('div')(({
|
|
16
|
+
theme
|
|
17
|
+
}) => ({
|
|
18
|
+
alignItems: 'center',
|
|
19
|
+
display: 'flex',
|
|
20
|
+
flexDirection: 'row',
|
|
21
|
+
flexWrap: 'wrap',
|
|
22
|
+
justifyContent: 'space-between',
|
|
23
|
+
marginTop: theme.spacing(1),
|
|
24
|
+
marginBottom: theme.spacing(1),
|
|
25
|
+
minHeight: 50,
|
|
26
|
+
transition: 'background-color 200ms ease'
|
|
27
|
+
}));
|
|
28
|
+
function DroppablePlaceholder({
|
|
29
|
+
id,
|
|
30
|
+
disabled,
|
|
31
|
+
children,
|
|
32
|
+
...rest
|
|
33
|
+
}) {
|
|
34
|
+
const {
|
|
35
|
+
setNodeRef,
|
|
36
|
+
isOver
|
|
37
|
+
} = (0, _core.useDroppable)({
|
|
38
|
+
id: id || 'choices-pool',
|
|
39
|
+
data: {
|
|
40
|
+
type: 'choices-pool'
|
|
41
|
+
},
|
|
42
|
+
disabled
|
|
43
|
+
});
|
|
44
|
+
return /*#__PURE__*/_react.default.createElement(Container, (0, _extends2.default)({
|
|
45
|
+
ref: setNodeRef,
|
|
46
|
+
style: {
|
|
47
|
+
backgroundColor: isOver ? 'rgba(0,0,0,0.05)' : 'transparent'
|
|
48
|
+
}
|
|
49
|
+
}, rest), /*#__PURE__*/_react.default.createElement(_drag.MatchDroppablePlaceholder, {
|
|
50
|
+
id: id,
|
|
51
|
+
disabled: disabled
|
|
52
|
+
}, children));
|
|
53
|
+
}
|
|
54
|
+
DroppablePlaceholder.propTypes = {
|
|
55
|
+
id: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),
|
|
56
|
+
disabled: _propTypes.default.bool,
|
|
57
|
+
children: _propTypes.default.node
|
|
58
|
+
};
|
|
59
|
+
var _default = exports.default = DroppablePlaceholder;
|
|
60
|
+
//# sourceMappingURL=droppable-placeholder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"droppable-placeholder.js","names":["_react","_interopRequireDefault","require","_propTypes","_core","_styles","_drag","Container","styled","theme","alignItems","display","flexDirection","flexWrap","justifyContent","marginTop","spacing","marginBottom","minHeight","transition","DroppablePlaceholder","id","disabled","children","rest","setNodeRef","isOver","useDroppable","data","type","default","createElement","_extends2","ref","style","backgroundColor","MatchDroppablePlaceholder","propTypes","PropTypes","oneOfType","string","number","bool","node","_default","exports"],"sources":["../src/droppable-placeholder.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useDroppable } from '@dnd-kit/core';\nimport { styled } from '@mui/material/styles';\nimport { MatchDroppablePlaceholder } from '@pie-lib/drag';\n\nconst Container = styled('div')(({ theme }) => ({\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n minHeight: 50,\n transition: 'background-color 200ms ease',\n}));\n\nexport function DroppablePlaceholder({ id, disabled, children, ...rest }) {\n const { setNodeRef, isOver } = useDroppable({\n id: id || 'choices-pool',\n data: { type: 'choices-pool' },\n disabled,\n });\n\n return (\n <Container\n ref={setNodeRef}\n style={{ backgroundColor: isOver ? 'rgba(0,0,0,0.05)' : 'transparent' }}\n {...rest}\n >\n <MatchDroppablePlaceholder id={id} disabled={disabled}>\n {children}\n </MatchDroppablePlaceholder>\n </Container>\n );\n}\n\nDroppablePlaceholder.propTypes = {\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n disabled: PropTypes.bool,\n children: PropTypes.node,\n};\n\nexport default DroppablePlaceholder;\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AAEA,MAAMK,SAAS,GAAG,IAAAC,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC;EAAEC;AAAM,CAAC,MAAM;EAC5CC,UAAU,EAAE,QAAQ;EACpBC,OAAO,EAAE,MAAM;EACfC,aAAa,EAAE,KAAK;EACpBC,QAAQ,EAAE,MAAM;EAChBC,cAAc,EAAE,eAAe;EAC/BC,SAAS,EAAEN,KAAK,CAACO,OAAO,CAAC,CAAC,CAAC;EAC3BC,YAAY,EAAER,KAAK,CAACO,OAAO,CAAC,CAAC,CAAC;EAC9BE,SAAS,EAAE,EAAE;EACbC,UAAU,EAAE;AAChB,CAAC,CAAC,CAAC;AAEI,SAASC,oBAAoBA,CAAC;EAAEC,EAAE;EAAEC,QAAQ;EAAEC,QAAQ;EAAE,GAAGC;AAAK,CAAC,EAAE;EACtE,MAAM;IAAEC,UAAU;IAAEC;EAAO,CAAC,GAAG,IAAAC,kBAAY,EAAC;IACxCN,EAAE,EAAEA,EAAE,IAAI,cAAc;IACxBO,IAAI,EAAE;MAAEC,IAAI,EAAE;IAAe,CAAC;IAC9BP;EACJ,CAAC,CAAC;EAEF,oBACItB,MAAA,CAAA8B,OAAA,CAAAC,aAAA,CAACxB,SAAS,MAAAyB,SAAA,CAAAF,OAAA;IACNG,GAAG,EAAER,UAAW;IAChBS,KAAK,EAAE;MAAEC,eAAe,EAAET,MAAM,GAAG,kBAAkB,GAAG;IAAc;EAAE,GACpEF,IAAI,gBAERxB,MAAA,CAAA8B,OAAA,CAAAC,aAAA,CAACzB,KAAA,CAAA8B,yBAAyB;IAACf,EAAE,EAAEA,EAAG;IAACC,QAAQ,EAAEA;EAAS,GACjDC,QACsB,CACpB,CAAC;AAEpB;AAEAH,oBAAoB,CAACiB,SAAS,GAAG;EAC7BhB,EAAE,EAAEiB,kBAAS,CAACC,SAAS,CAAC,CAACD,kBAAS,CAACE,MAAM,EAAEF,kBAAS,CAACG,MAAM,CAAC,CAAC;EAC7DnB,QAAQ,EAAEgB,kBAAS,CAACI,IAAI;EACxBnB,QAAQ,EAAEe,kBAAS,CAACK;AACxB,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAf,OAAA,GAEaV,oBAAoB","ignoreList":[]}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
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 _debug = _interopRequireDefault(require("debug"));
|
|
17
|
+
var _main = _interopRequireDefault(require("./main"));
|
|
18
|
+
var _piePlayerEvents = require("@pie-framework/pie-player-events");
|
|
19
|
+
var _mathRendering = require("@pie-lib/math-rendering");
|
|
20
|
+
const log = (0, _debug.default)('pie-ui:graph-lines');
|
|
21
|
+
const isComplete = (session, model) => {
|
|
22
|
+
if (!session) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
const value = session.value;
|
|
26
|
+
let complete = true;
|
|
27
|
+
if (value) {
|
|
28
|
+
(model.config.prompts || []).forEach(prompt => {
|
|
29
|
+
if (!Number.isFinite(value[prompt.id])) {
|
|
30
|
+
complete = false;
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
return complete;
|
|
35
|
+
};
|
|
36
|
+
exports.isComplete = isComplete;
|
|
37
|
+
class MatchList extends HTMLElement {
|
|
38
|
+
constructor() {
|
|
39
|
+
super();
|
|
40
|
+
this._root = null;
|
|
41
|
+
}
|
|
42
|
+
set model(m) {
|
|
43
|
+
this._model = m;
|
|
44
|
+
this._render();
|
|
45
|
+
}
|
|
46
|
+
set session(s) {
|
|
47
|
+
this._session = s;
|
|
48
|
+
this._render();
|
|
49
|
+
}
|
|
50
|
+
get session() {
|
|
51
|
+
return this._session;
|
|
52
|
+
}
|
|
53
|
+
sessionChanged(s) {
|
|
54
|
+
this._session.value = s.value;
|
|
55
|
+
this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(this.tagName.toLowerCase(), isComplete(this._session, this._model)));
|
|
56
|
+
log('session: ', this._session);
|
|
57
|
+
this._render();
|
|
58
|
+
}
|
|
59
|
+
connectedCallback() {
|
|
60
|
+
this._render();
|
|
61
|
+
}
|
|
62
|
+
_render() {
|
|
63
|
+
if (!this._model || !this._session) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const el = /*#__PURE__*/_react.default.createElement(_main.default, {
|
|
67
|
+
model: this._model,
|
|
68
|
+
session: this._session,
|
|
69
|
+
onSessionChange: this.sessionChanged.bind(this)
|
|
70
|
+
});
|
|
71
|
+
if (!this._root) {
|
|
72
|
+
this._root = (0, _client.createRoot)(this);
|
|
73
|
+
}
|
|
74
|
+
this._root.render(el);
|
|
75
|
+
queueMicrotask(() => {
|
|
76
|
+
(0, _mathRendering.renderMath)(this);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
disconnectedCallback() {
|
|
80
|
+
if (this._root) {
|
|
81
|
+
this._root.unmount();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.default = MatchList;
|
|
86
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_client","_debug","_main","_piePlayerEvents","_mathRendering","log","debug","isComplete","session","model","value","complete","config","prompts","forEach","prompt","Number","isFinite","id","exports","MatchList","HTMLElement","constructor","_root","m","_model","_render","s","_session","sessionChanged","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 debug from 'debug';\nimport Main from './main';\n\nimport { SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport { renderMath } from '@pie-lib/math-rendering';\n\nconst log = debug('pie-ui:graph-lines');\n\nexport { Main as Component };\n\nexport const isComplete = (session, model) => {\n if (!session) {\n return false;\n }\n\n const value = session.value;\n let complete = true;\n\n if (value) {\n (model.config.prompts || []).forEach((prompt) => {\n if (!Number.isFinite(value[prompt.id])) {\n complete = false;\n }\n });\n }\n\n return complete;\n};\n\nexport default class MatchList extends HTMLElement {\n constructor() {\n super();\n this._root = null;\n }\n\n set model(m) {\n this._model = m;\n this._render();\n }\n\n set session(s) {\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n sessionChanged(s) {\n this._session.value = s.value;\n\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), isComplete(this._session, this._model)));\n\n log('session: ', this._session);\n this._render();\n }\n\n connectedCallback() {\n this._render();\n }\n\n _render() {\n if (!this._model || !this._session) {\n return;\n }\n\n const el = React.createElement(Main, {\n model: this._model,\n session: this._session,\n onSessionChange: this.sessionChanged.bind(this),\n });\n\n 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":[]}
|