@elice/material-quiz 1.240705.0-quiz.8 → 1.240705.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/components/material-quiz/MaterialQuiz.js +10 -31
- package/cjs/components/material-quiz/MaterialQuizInfo.js +12 -57
- package/cjs/components/material-quiz/MaterialQuizSelectMultiple.js +4 -11
- package/cjs/components/material-quiz/MaterialQuizSelectMultipleOrder.js +4 -10
- package/cjs/components/material-quiz/MaterialQuizSelectOne.js +4 -11
- package/cjs/components/material-quiz/MaterialQuizText.js +3 -8
- package/cjs/components/material-quiz/context/MaterialQuizContext.d.ts +0 -2
- package/cjs/components/material-quiz/context/MaterialQuizContext.js +2 -14
- package/cjs/components/material-quiz/locales/en.json.js +1 -1
- package/cjs/components/material-quiz/locales/ja.json.js +1 -1
- package/cjs/components/material-quiz/locales/ko.json.js +1 -1
- package/cjs/components/material-quiz/locales/th.json.js +1 -1
- package/cjs/components/material-quiz/material-quiz-group/MaterialQuizGroup.js +25 -14
- package/cjs/components/shared/QuestionBox.js +36 -56
- package/cjs/hooks/useCaculatePassage.js +3 -13
- package/es/components/material-quiz/MaterialQuiz.js +10 -31
- package/es/components/material-quiz/MaterialQuizInfo.js +13 -58
- package/es/components/material-quiz/MaterialQuizSelectMultiple.js +6 -13
- package/es/components/material-quiz/MaterialQuizSelectMultipleOrder.js +5 -11
- package/es/components/material-quiz/MaterialQuizSelectOne.js +5 -12
- package/es/components/material-quiz/MaterialQuizText.js +4 -9
- package/es/components/material-quiz/context/MaterialQuizContext.d.ts +0 -2
- package/es/components/material-quiz/context/MaterialQuizContext.js +3 -15
- package/es/components/material-quiz/locales/en.json.js +1 -1
- package/es/components/material-quiz/locales/ja.json.js +1 -1
- package/es/components/material-quiz/locales/ko.json.js +1 -1
- package/es/components/material-quiz/locales/th.json.js +1 -1
- package/es/components/material-quiz/material-quiz-group/MaterialQuizGroup.js +26 -15
- package/es/components/shared/QuestionBox.js +36 -56
- package/es/hooks/useCaculatePassage.js +4 -14
- package/package.json +4 -5
- package/cjs/components/shared/utils/mergeRefs.d.ts +0 -2
- package/cjs/components/shared/utils/mergeRefs.js +0 -11
- package/es/components/shared/utils/mergeRefs.d.ts +0 -2
- package/es/components/shared/utils/mergeRefs.js +0 -9
|
@@ -6,9 +6,7 @@ var React = require('react');
|
|
|
6
6
|
var reactUse = require('react-use');
|
|
7
7
|
var designTokens = require('@elice/design-tokens');
|
|
8
8
|
var intl = require('@elice/intl');
|
|
9
|
-
var muiSystem = require('@elice/mui-system');
|
|
10
9
|
var types = require('@elice/types');
|
|
11
|
-
var material = require('@mui/material');
|
|
12
10
|
var styled = require('styled-components');
|
|
13
11
|
var element = require('../../constant/element.js');
|
|
14
12
|
var MaterialQuizContext = require('./context/MaterialQuizContext.js');
|
|
@@ -17,40 +15,27 @@ var ko = require('./locales/ko.json.js');
|
|
|
17
15
|
var MaterialQuizShimmer = require('./MaterialQuizShimmer.js');
|
|
18
16
|
var MaterialQuizInfo = require('./MaterialQuizInfo.js');
|
|
19
17
|
|
|
20
|
-
const eliceTheme = muiSystem.createEliceTheme({
|
|
21
|
-
paletteMode: 'dark',
|
|
22
|
-
paletteName: 'purple'
|
|
23
|
-
});
|
|
24
18
|
const AsyncMaterialQuizSelectMultiple = React.lazy(() => Promise.resolve().then(function () { return require('./MaterialQuizSelectMultiple.js'); }));
|
|
25
19
|
const AsyncMaterialQuizSelectMultipleOrder = React.lazy(() => Promise.resolve().then(function () { return require('./MaterialQuizSelectMultipleOrder.js'); }));
|
|
26
20
|
const AsyncMaterialQuizText = React.lazy(() => Promise.resolve().then(function () { return require('./MaterialQuizText.js'); }));
|
|
27
21
|
const AsyncMaterialQuizSelectOne = React.lazy(() => Promise.resolve().then(function () { return require('./MaterialQuizSelectOne.js'); }));
|
|
28
22
|
const AsyncMaterialQuizGroup = React.lazy(() => Promise.resolve().then(function () { return require('./material-quiz-group/index.js'); }));
|
|
29
|
-
// 746px
|
|
30
|
-
const MAX_CONTENT_WIDTH = '46.625rem';
|
|
31
23
|
const StyledMaterialQuizInfo = styled.div.withConfig({
|
|
32
24
|
componentId: "sc-1eyn8fb-0"
|
|
33
25
|
})([""]);
|
|
34
26
|
const StyledMaterialQuizContent = styled.div.withConfig({
|
|
35
27
|
componentId: "sc-1eyn8fb-1"
|
|
36
|
-
})(["
|
|
28
|
+
})(["min-width:0;margin:", ";height:100%;"], ({
|
|
37
29
|
vertical
|
|
38
30
|
}) => vertical ? 'unset' : 'auto');
|
|
39
|
-
const LoadingContainer = styled.div.withConfig({
|
|
40
|
-
componentId: "sc-1eyn8fb-2"
|
|
41
|
-
})(["position:absolute;width:100%;height:100%;top:0;left:0;z-index:1;max-width:none !important;background-color:", ";"], designTokens.base.color.navy8);
|
|
42
31
|
const StyledMaterialQuizWrapper = styled.div.withConfig({
|
|
43
|
-
componentId: "sc-1eyn8fb-
|
|
44
|
-
})(["-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;width:100%;height:100%;flex-direction:", "
|
|
32
|
+
componentId: "sc-1eyn8fb-2"
|
|
33
|
+
})(["-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;width:100%;height:100%;flex-direction:", ";& > *{flex:", ";}gap:1rem;", "{height:", ";overflow-y:", ";& > div{max-height:unset;}}"], ({
|
|
45
34
|
vertical
|
|
46
35
|
}) => vertical ? 'column' : 'row', ({
|
|
47
36
|
vertical,
|
|
48
37
|
isQuizGroupType
|
|
49
|
-
}) => vertical || isQuizGroupType ? 'auto' : '
|
|
50
|
-
vertical,
|
|
51
|
-
isQuizGroupType,
|
|
52
|
-
isLongPassage
|
|
53
|
-
}) => !isLongPassage && !vertical && !isQuizGroupType ? `${MAX_CONTENT_WIDTH}` : 'unset', StyledMaterialQuizInfo, ({
|
|
38
|
+
}) => vertical || isQuizGroupType ? 'auto' : '0.5', StyledMaterialQuizInfo, ({
|
|
54
39
|
vertical
|
|
55
40
|
}) => vertical ? 'auto' : '100%', ({
|
|
56
41
|
vertical
|
|
@@ -60,8 +45,7 @@ const MaterialQuiz = () => {
|
|
|
60
45
|
materialQuiz,
|
|
61
46
|
vertical,
|
|
62
47
|
course,
|
|
63
|
-
isLongPassage
|
|
64
|
-
isInitialLoading
|
|
48
|
+
isLongPassage
|
|
65
49
|
} = MaterialQuizContext.useMaterialQuizState();
|
|
66
50
|
const {
|
|
67
51
|
setVertical
|
|
@@ -70,8 +54,6 @@ const MaterialQuiz = () => {
|
|
|
70
54
|
width
|
|
71
55
|
}] = reactUse.useMeasure();
|
|
72
56
|
const isQuizGroupType = Boolean((materialQuiz === null || materialQuiz === void 0 ? void 0 : materialQuiz.optionType) === types.enums.QuizOptionType.Group);
|
|
73
|
-
const isFetchingData = !materialQuiz || !course;
|
|
74
|
-
const isLoadingLayout = isFetchingData || isInitialLoading;
|
|
75
57
|
const isVisibleSideBySide = !vertical && isLongPassage && !isQuizGroupType;
|
|
76
58
|
const isRenderQuestionWithPassage = (vertical || !isLongPassage || isQuizGroupType) && !!materialQuiz;
|
|
77
59
|
React.useEffect(() => {
|
|
@@ -80,8 +62,8 @@ const MaterialQuiz = () => {
|
|
|
80
62
|
}
|
|
81
63
|
}, [width, setVertical]);
|
|
82
64
|
const renderQuestionOption = () => {
|
|
83
|
-
if (
|
|
84
|
-
return null;
|
|
65
|
+
if (!materialQuiz || !course) {
|
|
66
|
+
return React.createElement(MaterialQuizShimmer.default, null);
|
|
85
67
|
}
|
|
86
68
|
switch (materialQuiz.optionType) {
|
|
87
69
|
case types.enums.QuizOptionType.SelectOne:
|
|
@@ -109,9 +91,8 @@ const MaterialQuiz = () => {
|
|
|
109
91
|
}, React.createElement(StyledMaterialQuizWrapper, {
|
|
110
92
|
ref: ref,
|
|
111
93
|
vertical: vertical,
|
|
112
|
-
isQuizGroupType: isQuizGroupType
|
|
113
|
-
|
|
114
|
-
}, isLoadingLayout && React.createElement(LoadingContainer, null, React.createElement(MaterialQuizShimmer.default, null)), isVisibleSideBySide && React.createElement(StyledMaterialQuizInfo, null, React.createElement(MaterialQuizInfo.default, null)), React.createElement(StyledMaterialQuizContent, {
|
|
94
|
+
isQuizGroupType: isQuizGroupType
|
|
95
|
+
}, isVisibleSideBySide && React.createElement(StyledMaterialQuizInfo, null, React.createElement(MaterialQuizInfo.default, null)), React.createElement(StyledMaterialQuizContent, {
|
|
115
96
|
id: element.MATERIAL_QUIZ_CONTAINER_ID,
|
|
116
97
|
vertical: vertical
|
|
117
98
|
}, renderQuestionOption())));
|
|
@@ -126,15 +107,13 @@ const MaterialQuizContainer = ({
|
|
|
126
107
|
}) => {
|
|
127
108
|
return React.createElement(intl.RawEliceIntlProvider, {
|
|
128
109
|
value: __intl
|
|
129
|
-
}, React.createElement(material.ThemeProvider, {
|
|
130
|
-
theme: eliceTheme
|
|
131
110
|
}, React.createElement(MaterialQuizContext.MaterialQuizProvider, {
|
|
132
111
|
materialQuizId: materialQuizId,
|
|
133
112
|
userId: userId,
|
|
134
113
|
onDirty: onDirty,
|
|
135
114
|
onSubmit: onSubmit,
|
|
136
115
|
onNext: onNext
|
|
137
|
-
}, React.createElement(MaterialQuiz, null)))
|
|
116
|
+
}, React.createElement(MaterialQuiz, null)));
|
|
138
117
|
};
|
|
139
118
|
var MaterialQuiz$1 = new intl.IntlComponentBuilder(MaterialQuizContainer).add('en', en.default).add('ko', ko.default).addAsync('th', Promise.resolve().then(function () { return require('./locales/th.json.js'); })).addAsync('ja', Promise.resolve().then(function () { return require('./locales/ja.json.js'); })).build();
|
|
140
119
|
|
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var React = require('react');
|
|
6
|
-
var reactUse = require('react-use');
|
|
7
6
|
var blocks = require('@elice/blocks');
|
|
7
|
+
var designTokens = require('@elice/design-tokens');
|
|
8
8
|
var icons = require('@elice/icons');
|
|
9
9
|
var markdown = require('@elice/markdown');
|
|
10
10
|
var material = require('@mui/material');
|
|
11
11
|
var styled = require('styled-components');
|
|
12
12
|
var QuestionBox = require('../shared/QuestionBox.js');
|
|
13
|
-
var mergeRefs = require('../shared/utils/mergeRefs.js');
|
|
14
13
|
var MaterialQuizContext = require('./context/MaterialQuizContext.js');
|
|
14
|
+
var MaterialQuizAnswerExplanation = require('./MaterialQuizAnswerExplanation.js');
|
|
15
15
|
|
|
16
16
|
//
|
|
17
17
|
//
|
|
@@ -24,51 +24,23 @@ const StyledMarkdownSSR = styled(markdown.MarkdownSSR).withConfig({
|
|
|
24
24
|
//
|
|
25
25
|
const IMAGE_CONTAINER_CLASSNAME = 'markdown-zoomable-image-container';
|
|
26
26
|
const ZOOM_ICON_CLASSNAME = 'markdown-zoom-icon';
|
|
27
|
-
const MarkdownContainer =
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
span.${ZOOM_ICON_CLASSNAME} {
|
|
32
|
-
cursor: pointer;
|
|
33
|
-
|
|
34
|
-
position: absolute;
|
|
35
|
-
top: 0;
|
|
36
|
-
right: ${({
|
|
37
|
-
vertical
|
|
38
|
-
}) => vertical ? '0!important' : '0'};
|
|
39
|
-
|
|
40
|
-
width: 2rem;
|
|
41
|
-
aspect-ratio: 1;
|
|
42
|
-
background-color: ${({
|
|
43
|
-
theme
|
|
44
|
-
}) => theme.palette.inverse.main};
|
|
45
|
-
margin: 0.5rem;
|
|
46
|
-
border-radius: 50%;
|
|
47
|
-
|
|
48
|
-
display: flex;
|
|
49
|
-
align-items: center;
|
|
50
|
-
justify-content: center;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
`;
|
|
27
|
+
const MarkdownContainer = styled.div.withConfig({
|
|
28
|
+
componentId: "sc-1s7jbf9-1"
|
|
29
|
+
})([".", "{position:relative;span.", "{cursor:pointer;position:absolute;right:0;top:0;width:2rem;aspect-ratio:1;background-color:", ";margin:0.5rem;border-radius:50%;display:flex;align-items:center;justify-content:center;}}"], IMAGE_CONTAINER_CLASSNAME, ZOOM_ICON_CLASSNAME, designTokens.base.color.tertiary9);
|
|
54
30
|
const MaterialQuizInfo = ({
|
|
55
31
|
renderWithBox = true
|
|
56
32
|
}) => {
|
|
57
33
|
const {
|
|
58
|
-
materialQuiz
|
|
59
|
-
vertical
|
|
34
|
+
materialQuiz
|
|
60
35
|
} = MaterialQuizContext.useMaterialQuizState();
|
|
61
36
|
const [isRenderFinish, setIsRenderFinish] = React.useState(false);
|
|
62
37
|
const containerRef = React.useRef(null);
|
|
63
|
-
const [markdownMeasueRef, {
|
|
64
|
-
width
|
|
65
|
-
}] = reactUse.useMeasure();
|
|
66
|
-
const ref = mergeRefs.mergeRefs(containerRef, markdownMeasueRef);
|
|
67
38
|
const [zoomImageUrl, setZoomImageUrl] = React.useState('');
|
|
68
39
|
React.useEffect(() => {
|
|
69
40
|
if (!(materialQuiz === null || materialQuiz === void 0 ? void 0 : materialQuiz.questionDescription) || !isRenderFinish || !containerRef.current) return;
|
|
41
|
+
const images = containerRef.current.querySelectorAll('img');
|
|
70
42
|
// append zoom icon for image html render by MarkdownSSR
|
|
71
|
-
|
|
43
|
+
images.forEach(img => {
|
|
72
44
|
const parent = img.parentElement;
|
|
73
45
|
const zoomIconStr = `
|
|
74
46
|
<svg width="25" height="25" viewBox="0 0 25 25" fill="white" xmlns="http://www.w3.org/2000/svg">
|
|
@@ -76,44 +48,27 @@ const MaterialQuizInfo = ({
|
|
|
76
48
|
</svg>
|
|
77
49
|
`;
|
|
78
50
|
if (parent) {
|
|
79
|
-
const imageRect = img.getBoundingClientRect();
|
|
80
|
-
const parentRect = parent.getBoundingClientRect();
|
|
81
|
-
const zoomIcons = parent.querySelectorAll(`.${ZOOM_ICON_CLASSNAME}`);
|
|
82
|
-
const totalImages = Array.from(parent.querySelectorAll(`img`));
|
|
83
|
-
const idx = totalImages.findIndex(item => item === img);
|
|
84
|
-
// restyle the zoom position when chaging the width instead of recreate it
|
|
85
|
-
if (zoomIcons.length === totalImages.length && idx !== -1) {
|
|
86
|
-
zoomIcons[idx].style.top = `${imageRect.top - parentRect.top}px`;
|
|
87
|
-
zoomIcons[idx].style.right = `${parentRect.right - imageRect.right}px`;
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
51
|
parent.classList.add(IMAGE_CONTAINER_CLASSNAME);
|
|
91
52
|
parent.style.position = 'relative';
|
|
92
53
|
const span = document.createElement('span');
|
|
93
54
|
span.innerHTML = zoomIconStr;
|
|
94
55
|
span.classList.add(ZOOM_ICON_CLASSNAME);
|
|
95
|
-
span.style.top = `${imageRect.top - parentRect.top}px`;
|
|
96
|
-
span.style.right = `${parentRect.right - imageRect.right}px`;
|
|
97
56
|
span.onclick = () => {
|
|
98
57
|
setZoomImageUrl(img.src);
|
|
99
58
|
};
|
|
100
59
|
parent.appendChild(span);
|
|
101
60
|
}
|
|
102
61
|
});
|
|
103
|
-
}, [materialQuiz === null || materialQuiz === void 0 ? void 0 : materialQuiz.questionDescription, isRenderFinish
|
|
62
|
+
}, [materialQuiz === null || materialQuiz === void 0 ? void 0 : materialQuiz.questionDescription, isRenderFinish]);
|
|
104
63
|
const onCloseImageModal = () => {
|
|
105
64
|
setZoomImageUrl('');
|
|
106
65
|
};
|
|
107
66
|
const _renderQuiz = () => {
|
|
108
67
|
return React.createElement(React.Fragment, null, materialQuiz ? React.createElement(MarkdownContainer, {
|
|
109
|
-
ref:
|
|
110
|
-
vertical: vertical
|
|
68
|
+
ref: containerRef
|
|
111
69
|
}, React.createElement(StyledMarkdownSSR, {
|
|
112
70
|
onRender: () => {
|
|
113
|
-
|
|
114
|
-
setTimeout(() => {
|
|
115
|
-
setIsRenderFinish(true);
|
|
116
|
-
}, 300);
|
|
71
|
+
setIsRenderFinish(true);
|
|
117
72
|
},
|
|
118
73
|
children: materialQuiz === null || materialQuiz === void 0 ? void 0 : materialQuiz.questionDescription,
|
|
119
74
|
dark: true,
|
|
@@ -186,7 +141,7 @@ const MaterialQuizInfo = ({
|
|
|
186
141
|
top: '-10%'
|
|
187
142
|
},
|
|
188
143
|
onClick: onCloseImageModal
|
|
189
|
-
}))));
|
|
144
|
+
}))), React.createElement(MaterialQuizAnswerExplanation.default, null));
|
|
190
145
|
};
|
|
191
146
|
if (renderWithBox) return React.createElement(QuestionBox.default, null, _renderQuiz());
|
|
192
147
|
return React.createElement(React.Fragment, null, _renderQuiz());
|
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var React = require('react');
|
|
6
6
|
var apiClient = require('@elice/api-client');
|
|
7
|
-
var designTokens = require('@elice/design-tokens');
|
|
8
7
|
var intl = require('@elice/intl');
|
|
9
8
|
var material = require('@mui/material');
|
|
10
9
|
var element = require('../../constant/element.js');
|
|
@@ -19,7 +18,6 @@ var QuestionCheckboxOption = require('../shared/question-checkbox/QuestionCheckb
|
|
|
19
18
|
var QuestionBox = require('../shared/QuestionBox.js');
|
|
20
19
|
var StyledMarkdown = require('../shared/StyledMarkdown.js');
|
|
21
20
|
var MaterialQuizContext = require('./context/MaterialQuizContext.js');
|
|
22
|
-
var MaterialQuizAnswerExplanation = require('./MaterialQuizAnswerExplanation.js');
|
|
23
21
|
var MaterialQuizInfo = require('./MaterialQuizInfo.js');
|
|
24
22
|
var QuizResultBadge = require('./QuizResultBadge.js');
|
|
25
23
|
var QuizSubmitStatusText = require('./QuizSubmitStatusText.js');
|
|
@@ -40,7 +38,6 @@ const MaterialQuizSelectMultiple = ({
|
|
|
40
38
|
refreshOrgMaterialQuiz,
|
|
41
39
|
onDirty
|
|
42
40
|
} = MaterialQuizContext.useMaterialQuizDispatch();
|
|
43
|
-
const theme = material.useTheme();
|
|
44
41
|
// state
|
|
45
42
|
const intl$1 = intl.useRawEliceIntl();
|
|
46
43
|
const [selectedAnswer, setSelectedAnswer] = React.useState([]);
|
|
@@ -54,7 +51,6 @@ const MaterialQuizSelectMultiple = ({
|
|
|
54
51
|
const [isActive, setIsActive] = React.useState(false);
|
|
55
52
|
const [hasSubmitted, setHasSubmitted] = React.useState(false);
|
|
56
53
|
const isNextActive = hasSubmitted && typeof onNext === 'function';
|
|
57
|
-
const isDisabled = selectedAnswer.length === 0 || index.checkUserLectureTestEnded(lecture) || !!userId;
|
|
58
54
|
// answer select handler
|
|
59
55
|
const handleAnswerSelect = index$1 => {
|
|
60
56
|
if (index.checkUserLectureTestEnded(lecture) || !!userId) {
|
|
@@ -167,18 +163,15 @@ const MaterialQuizSelectMultiple = ({
|
|
|
167
163
|
bodyContainerRef: containerRef,
|
|
168
164
|
footerActions: [{
|
|
169
165
|
border: true,
|
|
170
|
-
disabled:
|
|
166
|
+
disabled: selectedAnswer.length === 0 || index.checkUserLectureTestEnded(lecture) || !!userId,
|
|
171
167
|
loading: submitStatus === 'pending',
|
|
172
168
|
tabIndex: 0,
|
|
173
169
|
transparent: false,
|
|
170
|
+
role: isNextActive ? 'secondary' : 'lightpurple',
|
|
174
171
|
onClick: handleSubmit,
|
|
175
172
|
children: intl$1.formatMessage({
|
|
176
173
|
id: isNextActive ? 'materialQuiz.resubmit' : 'materialQuiz.submit'
|
|
177
|
-
})
|
|
178
|
-
customStyles: {
|
|
179
|
-
backgroundColor: isNextActive ? theme.palette.secondary.main : isDisabled ? designTokens.base.color.gray6 : theme.palette.primary.main,
|
|
180
|
-
color: isNextActive ? theme.palette.secondary.contrastText : isDisabled ? designTokens.base.color.gray3 : theme.palette.primary.contrastText
|
|
181
|
-
}
|
|
174
|
+
})
|
|
182
175
|
}]
|
|
183
176
|
}, React.createElement(material.Stack, {
|
|
184
177
|
height: "100%",
|
|
@@ -221,7 +214,7 @@ const MaterialQuizSelectMultiple = ({
|
|
|
221
214
|
paddingy: 0,
|
|
222
215
|
dark: true
|
|
223
216
|
}) : option === null || option === void 0 ? void 0 : option.content);
|
|
224
|
-
}) : null)
|
|
217
|
+
}) : null))));
|
|
225
218
|
};
|
|
226
219
|
|
|
227
220
|
exports.default = MaterialQuizSelectMultiple;
|
|
@@ -19,7 +19,6 @@ var QuizDraggbleDroppedOption = require('../shared/QuizDraggbleDroppedOption.js'
|
|
|
19
19
|
var QuizDraggbleDummyOption = require('../shared/QuizDraggbleDummyOption.js');
|
|
20
20
|
var QuizDraggbleOption = require('../shared/QuizDraggbleOption.js');
|
|
21
21
|
var MaterialQuizContext = require('./context/MaterialQuizContext.js');
|
|
22
|
-
var MaterialQuizAnswerExplanation = require('./MaterialQuizAnswerExplanation.js');
|
|
23
22
|
var MaterialQuizInfo = require('./MaterialQuizInfo.js');
|
|
24
23
|
var QuizResultBadge = require('./QuizResultBadge.js');
|
|
25
24
|
var QuizSubmitStatusText = require('./QuizSubmitStatusText.js');
|
|
@@ -77,7 +76,6 @@ const MaterialQuizSelectMultipleOrder = ({
|
|
|
77
76
|
refreshOrgMaterialQuiz,
|
|
78
77
|
onDirty
|
|
79
78
|
} = MaterialQuizContext.useMaterialQuizDispatch();
|
|
80
|
-
const theme = material.useTheme();
|
|
81
79
|
// state
|
|
82
80
|
const intl$1 = intl.useRawEliceIntl();
|
|
83
81
|
const [materialQuizResponse, setMaterialQuizResponse] = React.useState();
|
|
@@ -92,7 +90,6 @@ const MaterialQuizSelectMultipleOrder = ({
|
|
|
92
90
|
const [correctAnswerList, setCorrectAnswerList] = React.useState([]);
|
|
93
91
|
const [hasSubmitted, setHasSubmitted] = React.useState(false);
|
|
94
92
|
const isNextActive = hasSubmitted && typeof onNext === 'function';
|
|
95
|
-
const isDisabled = (materialQuiz === null || materialQuiz === void 0 ? void 0 : materialQuiz.correctOptionCount) !== answerList.filter(answer => answer.order !== null).length || !!userId;
|
|
96
93
|
// ref
|
|
97
94
|
const optionBoxRef = React.useRef(null);
|
|
98
95
|
// to make jquery touchable
|
|
@@ -422,18 +419,15 @@ const MaterialQuizSelectMultipleOrder = ({
|
|
|
422
419
|
bodyContainerRef: containerRef,
|
|
423
420
|
footerActions: [{
|
|
424
421
|
border: true,
|
|
425
|
-
disabled:
|
|
422
|
+
disabled: (materialQuiz === null || materialQuiz === void 0 ? void 0 : materialQuiz.correctOptionCount) !== answerList.filter(answer => answer.order !== null).length || !!userId,
|
|
426
423
|
loading: submitStatus === 'pending',
|
|
427
424
|
tabIndex: 0,
|
|
428
425
|
transparent: false,
|
|
426
|
+
role: isNextActive ? 'secondary' : 'lightpurple',
|
|
429
427
|
onClick: handleSubmit,
|
|
430
428
|
children: intl$1.formatMessage({
|
|
431
429
|
id: isNextActive ? 'materialQuiz.resubmit' : 'materialQuiz.submit'
|
|
432
|
-
})
|
|
433
|
-
customStyles: {
|
|
434
|
-
backgroundColor: isNextActive ? theme.palette.secondary.main : isDisabled ? designTokens.base.color.gray6 : theme.palette.primary.main,
|
|
435
|
-
color: isNextActive ? theme.palette.secondary.contrastText : isDisabled ? designTokens.base.color.gray3 : theme.palette.primary.contrastText
|
|
436
|
-
}
|
|
430
|
+
})
|
|
437
431
|
}]
|
|
438
432
|
}, React.createElement(material.Stack, {
|
|
439
433
|
height: "100%",
|
|
@@ -478,7 +472,7 @@ const MaterialQuizSelectMultipleOrder = ({
|
|
|
478
472
|
indexOrder: index + 1,
|
|
479
473
|
isMarkdown: !!(course === null || course === void 0 ? void 0 : course.preference.renderMarkdownInQuizOptions)
|
|
480
474
|
});
|
|
481
|
-
}))) : null
|
|
475
|
+
}))) : null)));
|
|
482
476
|
};
|
|
483
477
|
|
|
484
478
|
exports.default = MaterialQuizSelectMultipleOrder;
|
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var React = require('react');
|
|
6
6
|
var apiClient = require('@elice/api-client');
|
|
7
|
-
var designTokens = require('@elice/design-tokens');
|
|
8
7
|
var intl = require('@elice/intl');
|
|
9
8
|
var material = require('@mui/material');
|
|
10
9
|
var element = require('../../constant/element.js');
|
|
@@ -19,7 +18,6 @@ require('../shared/question-checkbox/QuestionCheckboxOption.js');
|
|
|
19
18
|
var QuestionBox = require('../shared/QuestionBox.js');
|
|
20
19
|
var StyledMarkdown = require('../shared/StyledMarkdown.js');
|
|
21
20
|
var MaterialQuizContext = require('./context/MaterialQuizContext.js');
|
|
22
|
-
var MaterialQuizAnswerExplanation = require('./MaterialQuizAnswerExplanation.js');
|
|
23
21
|
var MaterialQuizInfo = require('./MaterialQuizInfo.js');
|
|
24
22
|
var QuizResultBadge = require('./QuizResultBadge.js');
|
|
25
23
|
var QuizSubmitStatusText = require('./QuizSubmitStatusText.js');
|
|
@@ -40,7 +38,6 @@ const MaterialQuizSelectOne = ({
|
|
|
40
38
|
refreshOrgMaterialQuiz,
|
|
41
39
|
onDirty
|
|
42
40
|
} = MaterialQuizContext.useMaterialQuizDispatch();
|
|
43
|
-
const theme = material.useTheme();
|
|
44
41
|
// state
|
|
45
42
|
const intl$1 = intl.useRawEliceIntl();
|
|
46
43
|
const [selectedAnswer, setSelectedAnswer] = React.useState();
|
|
@@ -54,7 +51,6 @@ const MaterialQuizSelectOne = ({
|
|
|
54
51
|
const [isActive, setIsActive] = React.useState(false);
|
|
55
52
|
const [hasSubmitted, setHasSubmitted] = React.useState(false);
|
|
56
53
|
const isNextActive = hasSubmitted && typeof onNext === 'function';
|
|
57
|
-
const isDisabled = selectedAnswer === undefined || index.checkUserLectureTestEnded(lecture) || !!userId;
|
|
58
54
|
// answer select handler
|
|
59
55
|
const handleAnswerSelect = index$1 => {
|
|
60
56
|
if (index.checkUserLectureTestEnded(lecture) || !!userId) {
|
|
@@ -158,18 +154,15 @@ const MaterialQuizSelectOne = ({
|
|
|
158
154
|
bodyContainerRef: containerRef,
|
|
159
155
|
footerActions: [{
|
|
160
156
|
border: true,
|
|
161
|
-
disabled:
|
|
157
|
+
disabled: selectedAnswer === undefined || index.checkUserLectureTestEnded(lecture) || !!userId,
|
|
162
158
|
loading: submitStatus === 'pending',
|
|
163
159
|
tabIndex: 0,
|
|
164
160
|
transparent: false,
|
|
161
|
+
role: isNextActive ? 'secondary' : 'lightpurple',
|
|
165
162
|
onClick: handleSubmit,
|
|
166
163
|
children: intl$1.formatMessage({
|
|
167
164
|
id: isNextActive ? 'materialQuiz.resubmit' : 'materialQuiz.submit'
|
|
168
|
-
})
|
|
169
|
-
customStyles: {
|
|
170
|
-
backgroundColor: isNextActive ? theme.palette.secondary.main : isDisabled ? designTokens.base.color.gray6 : theme.palette.primary.main,
|
|
171
|
-
color: isNextActive ? theme.palette.secondary.contrastText : isDisabled ? designTokens.base.color.gray3 : theme.palette.primary.contrastText
|
|
172
|
-
}
|
|
165
|
+
})
|
|
173
166
|
}]
|
|
174
167
|
}, React.createElement(material.Stack, {
|
|
175
168
|
height: "100%",
|
|
@@ -212,7 +205,7 @@ const MaterialQuizSelectOne = ({
|
|
|
212
205
|
paddingy: 0,
|
|
213
206
|
dark: true
|
|
214
207
|
}) : option === null || option === void 0 ? void 0 : option.content);
|
|
215
|
-
}) : null)
|
|
208
|
+
}) : null)) : null));
|
|
216
209
|
};
|
|
217
210
|
|
|
218
211
|
exports.default = MaterialQuizSelectOne;
|
|
@@ -41,7 +41,6 @@ const MaterialQuizText = ({
|
|
|
41
41
|
refreshOrgMaterialQuiz,
|
|
42
42
|
onDirty
|
|
43
43
|
} = MaterialQuizContext.useMaterialQuizDispatch();
|
|
44
|
-
const theme = material.useTheme();
|
|
45
44
|
// state
|
|
46
45
|
const intl$1 = intl.useRawEliceIntl();
|
|
47
46
|
const [materialQuizResponse, setMaterialQuizResponse] = React.useState();
|
|
@@ -53,7 +52,6 @@ const MaterialQuizText = ({
|
|
|
53
52
|
const [answer, setAnswer] = React.useState('');
|
|
54
53
|
const [hasSubmitted, setHasSubmitted] = React.useState(false);
|
|
55
54
|
const isNextActive = hasSubmitted && typeof onNext === 'function';
|
|
56
|
-
const isDisabled = answer.length === 0 || index.checkUserLectureTestEnded(lecture) || !!userId;
|
|
57
55
|
// quiz response fetcher
|
|
58
56
|
React.useEffect(() => {
|
|
59
57
|
if (!userId && (materialQuiz === null || materialQuiz === void 0 ? void 0 : materialQuiz.lastQuizResponseId)) {
|
|
@@ -161,15 +159,12 @@ const MaterialQuizText = ({
|
|
|
161
159
|
children: intl$1.formatMessage({
|
|
162
160
|
id: isNextActive ? 'materialQuiz.resubmit' : 'materialQuiz.submit'
|
|
163
161
|
}),
|
|
164
|
-
disabled:
|
|
162
|
+
disabled: answer.length === 0 || index.checkUserLectureTestEnded(lecture) || !!userId,
|
|
165
163
|
loading: submitStatus === 'pending',
|
|
166
164
|
tabIndex: 0,
|
|
167
165
|
transparent: false,
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
backgroundColor: isNextActive ? theme.palette.secondary.main : isDisabled ? designTokens.base.color.gray6 : theme.palette.primary.main,
|
|
171
|
-
color: isNextActive ? theme.palette.secondary.contrastText : isDisabled ? designTokens.base.color.gray3 : theme.palette.primary.contrastText
|
|
172
|
-
}
|
|
166
|
+
role: isNextActive ? 'secondary' : 'lightpurple',
|
|
167
|
+
onClick: handleSubmit
|
|
173
168
|
}]
|
|
174
169
|
}, React.createElement(material.Stack, {
|
|
175
170
|
height: "100%",
|
|
@@ -9,7 +9,6 @@ export interface State {
|
|
|
9
9
|
userId?: number;
|
|
10
10
|
initStatus: APIStatus;
|
|
11
11
|
isLongPassage: boolean;
|
|
12
|
-
isInitialLoading: boolean;
|
|
13
12
|
}
|
|
14
13
|
export type MaterialQuizProps = {
|
|
15
14
|
materialQuizId: number;
|
|
@@ -29,7 +28,6 @@ interface DispatchContextType {
|
|
|
29
28
|
setVertical: React.Dispatch<React.SetStateAction<boolean>>;
|
|
30
29
|
onNext?: () => void;
|
|
31
30
|
setIsLongPassage: React.Dispatch<React.SetStateAction<boolean>>;
|
|
32
|
-
setIsInitialLoading: React.Dispatch<React.SetStateAction<boolean>>;
|
|
33
31
|
}
|
|
34
32
|
declare function MaterialQuizProvider({ materialQuizId, userId, onSubmit, onDirty, onNext, children, }: MaterialQuizProviderProps): React.JSX.Element;
|
|
35
33
|
declare function useMaterialQuizState(): State;
|
|
@@ -22,12 +22,7 @@ function MaterialQuizProvider({
|
|
|
22
22
|
const [initStatus, setInitStatus] = React.useState('idle');
|
|
23
23
|
const [vertical, setVertical] = React.useState(false);
|
|
24
24
|
const [isLongPassage, setIsLongPassage] = React.useState(false);
|
|
25
|
-
const [isInitialLoading, setIsInitialLoading] = React.useState(true);
|
|
26
25
|
const canInit = materialSharedUtils.useMaterialConfigApiClientUpdate(apiClient.config.init);
|
|
27
|
-
const resetLayout = () => {
|
|
28
|
-
setIsInitialLoading(true);
|
|
29
|
-
setIsLongPassage(false);
|
|
30
|
-
};
|
|
31
26
|
const {
|
|
32
27
|
materialQuiz,
|
|
33
28
|
materialLecturePage,
|
|
@@ -80,11 +75,6 @@ function MaterialQuizProvider({
|
|
|
80
75
|
}
|
|
81
76
|
return () => controller.abort();
|
|
82
77
|
}, [materialLecturePage]);
|
|
83
|
-
React.useEffect(() => {
|
|
84
|
-
if (materialQuizId) {
|
|
85
|
-
resetLayout();
|
|
86
|
-
}
|
|
87
|
-
}, [materialQuizId]);
|
|
88
78
|
React.useEffect(() => {
|
|
89
79
|
if (canInit && materialLecturePage) {
|
|
90
80
|
void init();
|
|
@@ -98,8 +88,7 @@ function MaterialQuizProvider({
|
|
|
98
88
|
userId,
|
|
99
89
|
vertical,
|
|
100
90
|
initStatus,
|
|
101
|
-
isLongPassage
|
|
102
|
-
isInitialLoading
|
|
91
|
+
isLongPassage
|
|
103
92
|
}
|
|
104
93
|
}, React.createElement(DispatchContext.Provider, {
|
|
105
94
|
value: {
|
|
@@ -108,8 +97,7 @@ function MaterialQuizProvider({
|
|
|
108
97
|
onNext,
|
|
109
98
|
refreshOrgMaterialQuiz,
|
|
110
99
|
setVertical,
|
|
111
|
-
setIsLongPassage
|
|
112
|
-
setIsInitialLoading
|
|
100
|
+
setIsLongPassage
|
|
113
101
|
}
|
|
114
102
|
}, children));
|
|
115
103
|
}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var messageEn = {"materialQuiz.anchorLabel.question":"
|
|
5
|
+
var messageEn = {"materialQuiz.anchorLabel.question":"Fingerprint","materialQuiz.anchorLabel.answer":"Look","materialQuiz.error":"Failed to fetch quiz","materialQuiz.submit":"Submit","materialQuiz.resubmit":"Resubmit","materialQuiz.submittedAnswer":"Submitted Answer","materialQuiz.answer":"Answer","materialQuiz.next":"Next question >","materialQuiz.selectOne.answer.title":"Choose from the views below.","materialQuiz.selectMultiple.answer.title":"Choose from the views below. (Redundant selections available)","materialQuiz.selectMultipleOrder.answer.title":"Drag and drop your answers.","materialQuiz.text.answer.title":"Please fill out the answer.","materialQuiz.empty.title":"Quiz is now preparing.","materialQuiz.empty.description":"Please check again after quiz posting!","materialQuiz.survey.empty.title":"Survey is now preparing.","materialQuiz.survey.empty.description":"Please check again after survey posting!","materialQuiz.submitStatus.success":"Submitted","materialQuiz.submitStatus.failure":"Failed to submit","materialQuiz.resultStatus.correct":"Correct","materialQuiz.resultStatus.wrong":"Wrong","materialQuiz.resultStatus.submitted":"Submitted","materialQuiz.explanation.close":"close quiz explanations","materialQuiz.explanation.show":"show quiz explanations","materialQuiz.explanation.empty":"no explanations","materialQuiz.text.placeholder":"please fill the answer","materialQuiz.text.correct":"that's correct!","materialQuiz.text.wrong":"that's wrong. try it again!","materialQuiz.order.answerEmpty":"You could move the options back here","materialQuiz.bottomSheet.title":"Options","materialQuiz.bottomSheet.optionEmpty":"All views have been placed in the group.","materialQuiz.dropzone.desktop.answerEmpty":"Drag the view into the area.","materialQuiz.dropzone.mobile.answerEmpty":"Click here to add a view.","materialQuiz.dropzone.optionEmpty":"Option","materialQuiz.dropzone.optionReset":"Answer Reset"};
|
|
6
6
|
|
|
7
7
|
exports.default = messageEn;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var ja = {"materialQuiz.anchorLabel.question":"
|
|
5
|
+
var ja = {"materialQuiz.anchorLabel.question":"指紋","materialQuiz.anchorLabel.answer":"見る","materialQuiz.error":"クイズの取得に失敗しました。","materialQuiz.submit":"提出","materialQuiz.resubmit":"再送信","materialQuiz.submittedAnswer":"提出された回答","materialQuiz.answer":"回答","materialQuiz.next":"次の質問 >","materialQuiz.selectOne.answer.title":"以下から選択してください。","materialQuiz.selectMultiple.answer.title":"以下から選択してください。 (冗長な選択肢も利用可能)","materialQuiz.selectMultipleOrder.answer.title":"ドラッグして回答をドロップしてください。","materialQuiz.text.answer.title":"回答を記入してください。","materialQuiz.empty.title":"クイズは今準備中です。","materialQuiz.empty.description":"クイズの投稿後にもう一度確認してください!","materialQuiz.survey.empty.title":"調査は現在準備中です。","materialQuiz.survey.empty.description":"調査投稿後にもう一度ご確認ください!","materialQuiz.submitStatus.success":"提出済","materialQuiz.submitStatus.failure":"提出に失敗しました。","materialQuiz.resultStatus.correct":"正しい","materialQuiz.resultStatus.wrong":"間違った","materialQuiz.resultStatus.submitted":"提出済","materialQuiz.explanation.close":"クイズの説明を閉じる","materialQuiz.explanation.show":"クイズの説明を表示します","materialQuiz.explanation.empty":"いいです。","materialQuiz.text.placeholder":"回答を入力してください","materialQuiz.text.correct":"その通りです!","materialQuiz.text.wrong":"それは間違っています。もう一度やってみてください!","materialQuiz.order.answerEmpty":"オプションをここに戻すことができます。","materialQuiz.bottomSheet.title":"オプション","materialQuiz.bottomSheet.optionEmpty":"すべてのビューがグループに配置されました。","materialQuiz.dropzone.desktop.answerEmpty":"ビューをエリアにドラッグしてください。","materialQuiz.dropzone.mobile.answerEmpty":"ここをクリックしてビューを追加してください。","materialQuiz.dropzone.optionEmpty":"オプション","materialQuiz.dropzone.optionReset":"回答をリセットします"};
|
|
6
6
|
|
|
7
7
|
exports.default = ja;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var messageKo = {"materialQuiz.anchorLabel.question":"지문","materialQuiz.anchorLabel.answer":"
|
|
5
|
+
var messageKo = {"materialQuiz.anchorLabel.question":"지문","materialQuiz.anchorLabel.answer":"보기","materialQuiz.error":"퀴즈를 불러오는데 실패했습니다.\n잠시 후 다시 시도해주세요.","materialQuiz.submit":"제출","materialQuiz.resubmit":"다시 제출","materialQuiz.submittedAnswer":"제출한 답","materialQuiz.answer":"정답","materialQuiz.next":"다음 문제로 이동 >","materialQuiz.selectOne.answer.title":"아래 보기에서 골라주세요.","materialQuiz.selectMultiple.answer.title":"아래 보기에서 골라주세요. (중복 선택 가능)","materialQuiz.selectMultipleOrder.answer.title":"답안을 드래그 앤 드롭하세요.","materialQuiz.text.answer.title":"답안을 작성해 주세요.","materialQuiz.empty.title":"퀴즈가 준비 중 입니다.","materialQuiz.empty.description":"퀴즈 게시 후 다시 확인해주세요!","materialQuiz.survey.empty.title":"설문조사 준비 중 입니다.","materialQuiz.survey.empty.description":"설문지 게시 후 다시 확인해주세요!","materialQuiz.submitStatus.success":"제출되었습니다.","materialQuiz.submitStatus.failure":"제출에 실패하였습니다.","materialQuiz.resultStatus.correct":"정답","materialQuiz.resultStatus.wrong":"오답","materialQuiz.resultStatus.submitted":"제출완료","materialQuiz.explanation.close":"퀴즈해설 닫기","materialQuiz.explanation.show":"퀴즈 해설 보기","materialQuiz.explanation.empty":"작성된 해설이 없습니다.","materialQuiz.text.placeholder":"답안을 작성해 주세요.","materialQuiz.text.correct":"정답입니다.","materialQuiz.text.wrong":"오답입니다. 다시 답안을 제출해보세요.","materialQuiz.order.answerEmpty":"항목을 다시 이곳으로 옮길 수 있습니다.","materialQuiz.bottomSheet.title":"보기","materialQuiz.bottomSheet.optionEmpty":"모든 보기를 그룹에 배치하였습니다.","materialQuiz.dropzone.desktop.answerEmpty":"보기를 영역에 끌어 넣어주세요.","materialQuiz.dropzone.mobile.answerEmpty":"이곳을 클릭하여 보기를 넣어주세요.","materialQuiz.dropzone.optionEmpty":"보기","materialQuiz.dropzone.optionReset":"답안 초기화"};
|
|
6
6
|
|
|
7
7
|
exports.default = messageKo;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var th = {"materialQuiz.anchorLabel.question":"
|
|
5
|
+
var th = {"materialQuiz.anchorLabel.question":"ลายนิ้วมือ","materialQuiz.anchorLabel.answer":"ดู","materialQuiz.error":"ไม่สามารถดึงควิซได้","materialQuiz.submit":"ส่งใบสมัคร","materialQuiz.resubmit":"ส่งอีกครั้ง","materialQuiz.submittedAnswer":"ฉันสามารถตอบคำถามเช่นนี้ได้","materialQuiz.answer":"ตอบ","materialQuiz.next":"คำถามถัดไป >","materialQuiz.selectOne.answer.title":"เลือกจากมุมมองด้านล่างนี้","materialQuiz.selectMultiple.answer.title":"เลือกจากรายการด้านล่าง (มีการเลือกที่ซ้ำซ้อน)","materialQuiz.selectMultipleOrder.answer.title":"ลากและวางคำตอบของคุณ","materialQuiz.text.answer.title":"กรุณากรอกคำตอบ","materialQuiz.empty.title":"ควิซกำลังเตรียมอยู่ตอนนี้","materialQuiz.empty.description":"โปรดตรวจสอบอีกครั้งหลังจากโพสต์ควิซ!","materialQuiz.survey.empty.title":"การสำรวจกำลังเตรียมการอยู่ค่ะ","materialQuiz.survey.empty.description":"โปรดตรวจสอบอีกครั้งหลังจากโพสต์แบบสำรวจ!","materialQuiz.submitStatus.success":"เสนอ","materialQuiz.submitStatus.failure":"การส่งล้มเหลว","materialQuiz.resultStatus.correct":"ถูกต้อง","materialQuiz.resultStatus.wrong":"ผิด","materialQuiz.resultStatus.submitted":"เสนอ","materialQuiz.explanation.close":"ปิดคำอธิบายควิซ","materialQuiz.explanation.show":"แสดงคำอธิบายของควิซ","materialQuiz.explanation.empty":"ไม่ให้อธิบาย","materialQuiz.text.placeholder":"กรุณากรอกคำตอบ","materialQuiz.text.correct":"ถูกต้อง!","materialQuiz.text.wrong":"นั่นผิด ลองอีกครั้ง!","materialQuiz.order.answerEmpty":"คุณสามารถย้ายตัวเลือกกลับมาที่นี่ได้","materialQuiz.bottomSheet.title":"ตัวเลือก","materialQuiz.bottomSheet.optionEmpty":"ทุกมุมมองได้ถูกวางไว้ในกลุ่มแล้ว","materialQuiz.dropzone.desktop.answerEmpty":"ลากมุมมองเข้าสู่พื้นที่","materialQuiz.dropzone.mobile.answerEmpty":"คลิกที่นี่เพื่อเพิ่มมุมมอง","materialQuiz.dropzone.optionEmpty":"ตัวเลือก","materialQuiz.dropzone.optionReset":"รีเซ็ตคำตอบ"};
|
|
6
6
|
|
|
7
7
|
exports.default = th;
|