@elice/material-assignment 1.240718.0-trasncript.2 → 1.240718.1

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 (29) hide show
  1. package/cjs/components/material-assignment/MaterialAssignment.js +17 -23
  2. package/cjs/components/material-assignment/MaterialAssignmentContent.js +194 -281
  3. package/cjs/components/material-assignment/MaterialAssignmentUploadModal.js +138 -181
  4. package/cjs/components/material-assignment/constants/color.js +1 -1
  5. package/cjs/components/material-assignment-admin/MaterialAssignmentAdmin.js +24 -32
  6. package/cjs/components/material-assignment-admin/MaterialAssignmentAdmin.styled.js +9 -19
  7. package/cjs/components/material-assignment-admin/MaterialAssignmentAdminContent.js +548 -774
  8. package/cjs/components/material-assignment-admin/MaterialAssignmentAdminContentTa.js +303 -436
  9. package/cjs/components/shared/MaterialAssignmentContainer.js +13 -23
  10. package/es/components/material-assignment/MaterialAssignment.js +17 -18
  11. package/es/components/material-assignment/MaterialAssignmentContent.js +194 -276
  12. package/es/components/material-assignment/MaterialAssignmentUploadModal.js +139 -177
  13. package/es/components/material-assignment/constants/color.js +1 -1
  14. package/es/components/material-assignment-admin/MaterialAssignmentAdmin.js +25 -29
  15. package/es/components/material-assignment-admin/MaterialAssignmentAdmin.styled.js +9 -15
  16. package/es/components/material-assignment-admin/MaterialAssignmentAdminContent.js +549 -770
  17. package/es/components/material-assignment-admin/MaterialAssignmentAdminContentTa.js +304 -432
  18. package/es/components/shared/MaterialAssignmentContainer.js +13 -19
  19. package/package.json +12 -9
  20. package/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -383
  21. package/cjs/components/index.js +0 -9
  22. package/cjs/components/material-assignment/index.js +0 -7
  23. package/cjs/components/material-assignment/locales/index.js +0 -13
  24. package/cjs/components/material-assignment-admin/index.js +0 -7
  25. package/es/_virtual/_rollupPluginBabelHelpers.js +0 -374
  26. package/es/components/index.js +0 -2
  27. package/es/components/material-assignment/index.js +0 -1
  28. package/es/components/material-assignment/locales/index.js +0 -4
  29. package/es/components/material-assignment-admin/index.js +0 -1
@@ -1,104 +1,77 @@
1
- import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
3
1
  import React from 'react';
4
2
  import { useForm, Controller } from 'react-hook-form';
5
3
  import { postOrgMaterialAssignmentSubmissionAdd } from '@elice/api-client';
6
- import { Files, Modal, Alert, Vspace, Radio, RadioButton, Input, Checkbox, Text, Notification } from '@elice/blocks';
4
+ import { Files, Notification, Modal, Alert, Vspace, Radio, RadioButton, Input, Checkbox, Text } from '@elice/blocks';
7
5
  import { base } from '@elice/design-tokens';
8
6
  import { useRawEliceIntl } from '@elice/intl';
9
7
  import { validateUrl } from '@elice/utils';
10
8
  import styled from 'styled-components';
11
9
 
12
- var StyledAssignmentContentFiles = styled(Files).withConfig({
10
+ const StyledAssignmentContentFiles = styled(Files).withConfig({
13
11
  componentId: "sc-9bizrf-0"
14
12
  })(["width:100%;.eb-files__choose-button{border-color:", ";background-color:", ";}"], base.color.primary5, base.color.primary5);
15
- var MaterialAssignmentUploadModal = function MaterialAssignmentUploadModal(_ref) {
16
- var materialAssignment = _ref.materialAssignment,
17
- onClose = _ref.onClose,
18
- onSubmitCallback = _ref.onSubmitCallback;
19
- var intl = useRawEliceIntl();
20
- var abortCtrl = React.useRef(new AbortController());
13
+ const MaterialAssignmentUploadModal = ({
14
+ materialAssignment,
15
+ onClose,
16
+ onSubmitCallback
17
+ }) => {
18
+ const intl = useRawEliceIntl();
19
+ const abortCtrl = React.useRef(new AbortController());
21
20
  /** Select submission method */
22
- var _React$useState = React.useState('attachment'),
23
- _React$useState2 = _slicedToArray(_React$useState, 2),
24
- assignmentMode = _React$useState2[0],
25
- setAssignmentMode = _React$useState2[1];
21
+ const [assignmentMode, setAssignmentMode] = React.useState('attachment');
26
22
  /** Check "Once you submit it, you cannot submit it again." */
27
- var _React$useState3 = React.useState(false),
28
- _React$useState4 = _slicedToArray(_React$useState3, 2),
29
- isAgreedSubmit = _React$useState4[0],
30
- setAgreedSubmit = _React$useState4[1];
23
+ const [isAgreedSubmit, setAgreedSubmit] = React.useState(false);
31
24
  /** Check if the submission time is past */
32
- var isAssignmentClosed = Boolean(materialAssignment.closeDatetime < Date.now());
25
+ const isAssignmentClosed = Boolean(materialAssignment.closeDatetime < Date.now());
33
26
  /** Check if it is possible to resubmit */
34
- var isAssignmentResubmitEnabled = Boolean(materialAssignment.isResubmitEnabled);
35
- var _useForm = useForm({
36
- mode: 'onChange'
37
- }),
38
- control = _useForm.control,
39
- formState = _useForm.formState,
40
- handleSubmit = _useForm.handleSubmit,
41
- reset = _useForm.reset;
27
+ const isAssignmentResubmitEnabled = Boolean(materialAssignment.isResubmitEnabled);
28
+ const {
29
+ control,
30
+ formState,
31
+ handleSubmit,
32
+ reset
33
+ } = useForm({
34
+ mode: 'onChange'
35
+ });
42
36
  /**
43
37
  * Submit assignment.
44
38
  */
45
- var submitAssignment = handleSubmit( /*#__PURE__*/function () {
46
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(data) {
47
- var _a;
48
- return _regeneratorRuntime().wrap(function _callee$(_context) {
49
- while (1) switch (_context.prev = _context.next) {
50
- case 0:
51
- _context.prev = 0;
52
- _context.next = 3;
53
- return postOrgMaterialAssignmentSubmissionAdd(Object.assign(Object.assign({}, data), {
54
- materialAssignmentId: (_a = materialAssignment === null || materialAssignment === void 0 ? void 0 : materialAssignment.id) !== null && _a !== void 0 ? _a : 0
55
- }), {
56
- signal: abortCtrl.current.signal
57
- });
58
- case 3:
59
- onClose();
60
- Notification.success(intl.formatMessage({
61
- id: 'materialAssignment.notification.submit.success'
62
- }));
63
- if (typeof onSubmitCallback === 'function') {
64
- onSubmitCallback();
65
- }
66
- _context.next = 13;
67
- break;
68
- case 8:
69
- _context.prev = 8;
70
- _context.t0 = _context["catch"](0);
71
- if (!(_context.t0.name === 'AbortError')) {
72
- _context.next = 12;
73
- break;
74
- }
75
- return _context.abrupt("return", Notification.error(intl.formatMessage({
76
- id: 'materialAssignment.notification.submit.cancel'
77
- })));
78
- case 12:
79
- Notification.error(intl.formatMessage({
80
- id: 'materialAssignment.notification.submit.failure'
81
- }));
82
- case 13:
83
- case "end":
84
- return _context.stop();
85
- }
86
- }, _callee, null, [[0, 8]]);
87
- }));
88
- return function (_x) {
89
- return _ref2.apply(this, arguments);
90
- };
91
- }());
39
+ const submitAssignment = handleSubmit(async data => {
40
+ var _a;
41
+ try {
42
+ await postOrgMaterialAssignmentSubmissionAdd(Object.assign(Object.assign({}, data), {
43
+ materialAssignmentId: (_a = materialAssignment === null || materialAssignment === void 0 ? void 0 : materialAssignment.id) !== null && _a !== void 0 ? _a : 0
44
+ }), {
45
+ signal: abortCtrl.current.signal
46
+ });
47
+ onClose();
48
+ Notification.success(intl.formatMessage({
49
+ id: 'materialAssignment.notification.submit.success'
50
+ }));
51
+ if (typeof onSubmitCallback === 'function') {
52
+ onSubmitCallback();
53
+ }
54
+ } catch (error) {
55
+ if (error.name === 'AbortError') {
56
+ return Notification.error(intl.formatMessage({
57
+ id: 'materialAssignment.notification.submit.cancel'
58
+ }));
59
+ }
60
+ Notification.error(intl.formatMessage({
61
+ id: 'materialAssignment.notification.submit.failure'
62
+ }));
63
+ }
64
+ });
92
65
  //
93
66
  //
94
67
  //
95
- React.useEffect(function () {
96
- var _abortCtrl = abortCtrl.current;
97
- return function () {
68
+ React.useEffect(() => {
69
+ const _abortCtrl = abortCtrl.current;
70
+ return () => {
98
71
  _abortCtrl.abort();
99
72
  };
100
73
  }, []);
101
- return jsxs(Modal, {
74
+ return React.createElement(Modal, {
102
75
  title: intl.formatMessage({
103
76
  id: 'materialAssignment.modal.title'
104
77
  }),
@@ -116,108 +89,97 @@ var MaterialAssignmentUploadModal = function MaterialAssignmentUploadModal(_ref)
116
89
  role: 'gray1',
117
90
  onClick: onClose
118
91
  }],
119
- onHide: onClose,
120
- children: [jsx(Alert, {
121
- role: isAssignmentResubmitEnabled ? 'primary' : 'warning',
122
- children: intl.formatMessage({
123
- id: isAssignmentResubmitEnabled ? 'materialAssignment.alert.oftenSubmit' : 'materialAssignment.alert.onceSubmit'
124
- })
125
- }), jsx(Vspace, {
126
- height: 1.5
127
- }), jsxs(Radio, {
128
- purpleWhite: true,
129
- borderRound: true,
130
- value: assignmentMode,
131
- onChange: function onChange(value) {
132
- reset();
133
- setAgreedSubmit(false);
134
- setAssignmentMode(value);
135
- },
136
- children: [jsx(RadioButton, {
137
- value: "attachment",
138
- children: intl.formatMessage({
139
- id: 'materialAssignment.radio.option.attachment'
140
- })
141
- }), jsx(RadioButton, {
142
- value: "url",
143
- children: intl.formatMessage({
144
- id: 'materialAssignment.radio.option.url'
145
- })
146
- })]
147
- }), jsx(Vspace, {
148
- height: 1
149
- }), assignmentMode === 'attachment' ? jsx(Controller, {
150
- control: control,
151
- name: "assignmentFile",
152
- rules: {
153
- required: true
154
- },
155
- render: function render(_ref3) {
156
- var field = _ref3.field;
157
- return jsx(StyledAssignmentContentFiles, Object.assign({}, field, {
158
- ref: null,
159
- files: field.value ? [field.value] : undefined,
160
- accept: "*",
161
- maxCount: 1,
162
- maxSize: 300,
163
- disabled: isAssignmentClosed,
164
- dropMessage: intl.formatMessage({
165
- id: 'materialAssignment.attachment.dropMessage'
166
- }),
167
- buttonMessage: intl.formatMessage({
168
- id: 'materialAssignment.attachment.button'
169
- }),
170
- maxSizeMessage: intl.formatMessage({
171
- id: 'materialAssignment.attachment.maxSizeMessage'
172
- }),
173
- onChange: function onChange(newFiles) {
174
- if (Array.isArray(newFiles) && newFiles[0] instanceof File) {
175
- field.onChange(newFiles[0]);
176
- } else {
177
- field.onChange(undefined);
178
- }
179
- }
180
- }));
181
- }
182
- }) : jsx(Controller, {
183
- control: control,
184
- name: "assignmentUrl",
185
- rules: {
186
- required: true,
187
- validate: function validate(url) {
188
- return validateUrl(url !== null && url !== void 0 ? url : '') ? true : intl.formatMessage({
189
- id: 'materialAssignment.input.invalid'
190
- });
92
+ onHide: onClose
93
+ }, React.createElement(Alert, {
94
+ role: isAssignmentResubmitEnabled ? 'primary' : 'warning'
95
+ }, intl.formatMessage({
96
+ id: isAssignmentResubmitEnabled ? 'materialAssignment.alert.oftenSubmit' : 'materialAssignment.alert.onceSubmit'
97
+ })), React.createElement(Vspace, {
98
+ height: 1.5
99
+ }), React.createElement(Radio, {
100
+ purpleWhite: true,
101
+ borderRound: true,
102
+ value: assignmentMode,
103
+ onChange: value => {
104
+ reset();
105
+ setAgreedSubmit(false);
106
+ setAssignmentMode(value);
107
+ }
108
+ }, React.createElement(RadioButton, {
109
+ value: "attachment"
110
+ }, intl.formatMessage({
111
+ id: 'materialAssignment.radio.option.attachment'
112
+ })), React.createElement(RadioButton, {
113
+ value: "url"
114
+ }, intl.formatMessage({
115
+ id: 'materialAssignment.radio.option.url'
116
+ }))), React.createElement(Vspace, {
117
+ height: 1
118
+ }), assignmentMode === 'attachment' ? React.createElement(Controller, {
119
+ control: control,
120
+ name: "assignmentFile",
121
+ rules: {
122
+ required: true
123
+ },
124
+ render: ({
125
+ field
126
+ }) => React.createElement(StyledAssignmentContentFiles, Object.assign({}, field, {
127
+ ref: null,
128
+ files: field.value ? [field.value] : undefined,
129
+ accept: "*",
130
+ maxCount: 1,
131
+ maxSize: 300,
132
+ disabled: isAssignmentClosed,
133
+ dropMessage: intl.formatMessage({
134
+ id: 'materialAssignment.attachment.dropMessage'
135
+ }),
136
+ buttonMessage: intl.formatMessage({
137
+ id: 'materialAssignment.attachment.button'
138
+ }),
139
+ maxSizeMessage: intl.formatMessage({
140
+ id: 'materialAssignment.attachment.maxSizeMessage'
141
+ }),
142
+ onChange: newFiles => {
143
+ if (Array.isArray(newFiles) && newFiles[0] instanceof File) {
144
+ field.onChange(newFiles[0]);
145
+ } else {
146
+ field.onChange(undefined);
191
147
  }
192
- },
193
- render: function render(_ref4) {
194
- var field = _ref4.field,
195
- fieldState = _ref4.fieldState;
196
- var _a;
197
- return jsx(Input, Object.assign({}, field, {
198
- width: "full",
199
- size: "small",
200
- placeholder: "http(s)://",
201
- invalid: fieldState.invalid,
202
- invalidText: (_a = fieldState.error) === null || _a === void 0 ? void 0 : _a.message
203
- }));
204
148
  }
205
- }), isAssignmentResubmitEnabled ? null : jsxs(Fragment, {
206
- children: [jsx(Vspace, {
207
- height: 1
208
- }), jsx(Checkbox, {
149
+ }))
150
+ }) : React.createElement(Controller, {
151
+ control: control,
152
+ name: "assignmentUrl",
153
+ rules: {
154
+ required: true,
155
+ validate: url => validateUrl(url !== null && url !== void 0 ? url : '') ? true : intl.formatMessage({
156
+ id: 'materialAssignment.input.invalid'
157
+ })
158
+ },
159
+ render: ({
160
+ field,
161
+ fieldState
162
+ }) => {
163
+ var _a;
164
+ return React.createElement(Input, Object.assign({}, field, {
165
+ width: "full",
209
166
  size: "small",
210
- value: isAgreedSubmit,
211
- onChange: setAgreedSubmit,
212
- children: jsx(Text, {
213
- size: "small",
214
- children: intl.formatMessage({
215
- id: 'materialAssignment.attachment.checkbox.onceSubmit'
216
- })
217
- })
218
- })]
219
- })]
220
- });
167
+ placeholder: "http(s)://",
168
+ invalid: fieldState.invalid,
169
+ invalidText: (_a = fieldState.error) === null || _a === void 0 ? void 0 : _a.message
170
+ }));
171
+ }
172
+ }), isAssignmentResubmitEnabled ? null : React.createElement(React.Fragment, null, React.createElement(Vspace, {
173
+ height: 1
174
+ }), React.createElement(Checkbox, {
175
+ size: "small",
176
+ value: isAgreedSubmit,
177
+ onChange: setAgreedSubmit
178
+ }, React.createElement(Text, {
179
+ size: "small"
180
+ }, intl.formatMessage({
181
+ id: 'materialAssignment.attachment.checkbox.onceSubmit'
182
+ })))));
221
183
  };
222
184
 
223
185
  export { MaterialAssignmentUploadModal as default };
@@ -1,3 +1,3 @@
1
- var DARK_TEXT_TERTIARY_COLOR = 'rgba(255, 255, 255, 0.7)';
1
+ const DARK_TEXT_TERTIARY_COLOR = 'rgba(255, 255, 255, 0.7)';
2
2
 
3
3
  export { DARK_TEXT_TERTIARY_COLOR };
@@ -1,5 +1,4 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { forwardRef } from 'react';
1
+ import React, { forwardRef } from 'react';
3
2
  import { config } from '@elice/api-client';
4
3
  import { Flex, Spinner } from '@elice/blocks';
5
4
  import { IntlProvider } from '@elice/intl';
@@ -10,49 +9,46 @@ import MaterialAssignmentAdminContent from './MaterialAssignmentAdminContent.js'
10
9
  import MaterialAssignmentAdminContentTa from './MaterialAssignmentAdminContentTa.js';
11
10
  import { StyledMaterialAssignmentAdminContainer } from './MaterialAssignmentAdmin.styled.js';
12
11
 
13
- var MaterialAssignmentAdmin = forwardRef(function (_ref, ref) {
14
- var _ref$locale = _ref.locale,
15
- locale = _ref$locale === void 0 ? 'en' : _ref$locale,
16
- className = _ref.className,
17
- materialAssignmentId = _ref.materialAssignmentId,
18
- userId = _ref.userId,
19
- adminUserId = _ref.adminUserId,
20
- courseRole = _ref.courseRole,
21
- updateMaterialUserBrowserResponse = _ref.updateMaterialUserBrowserResponse;
22
- var prefixCls = 'em-material-assignment-admin';
12
+ const MaterialAssignmentAdmin = forwardRef(({
13
+ locale = 'en',
14
+ className,
15
+ materialAssignmentId,
16
+ userId,
17
+ adminUserId,
18
+ courseRole,
19
+ updateMaterialUserBrowserResponse
20
+ }, ref) => {
21
+ const prefixCls = 'em-material-assignment-admin';
23
22
  // TODO: initialize in custom hook or withMaterial hoc.
24
- var isReady = useMaterialConfigApiClientUpdate(config.init);
25
- var isCourseRoleAboveTa = courseRole > enums.CourseRole.TA;
26
- var renderContent = function renderContent() {
23
+ const isReady = useMaterialConfigApiClientUpdate(config.init);
24
+ const isCourseRoleAboveTa = courseRole > enums.CourseRole.TA;
25
+ const renderContent = () => {
27
26
  if (!isReady) {
28
- return jsx(Flex, {
27
+ return React.createElement(Flex, {
29
28
  align: "center",
30
29
  justify: "center",
31
30
  width: "100%",
32
- height: "100%",
33
- children: jsx(Spinner, {})
34
- });
31
+ height: "100%"
32
+ }, React.createElement(Spinner, null));
35
33
  }
36
- return isCourseRoleAboveTa ? jsx(MaterialAssignmentAdminContent, {
34
+ return isCourseRoleAboveTa ? React.createElement(MaterialAssignmentAdminContent, {
37
35
  ref: ref,
38
36
  userId: userId,
39
37
  adminUserId: adminUserId,
40
38
  materialAssignmentId: materialAssignmentId,
41
39
  updateMaterialUserBrowserResponse: updateMaterialUserBrowserResponse
42
- }) : jsx(MaterialAssignmentAdminContentTa, {
40
+ }) : React.createElement(MaterialAssignmentAdminContentTa, {
43
41
  userId: userId,
44
42
  adminUserId: adminUserId,
45
43
  materialAssignmentId: materialAssignmentId
46
44
  });
47
45
  };
48
- return jsx(StyledMaterialAssignmentAdminContainer, {
49
- className: classnames(prefixCls, className),
50
- children: jsx(IntlProvider, {
51
- locale: locale,
52
- defaultLocale: "en",
53
- children: renderContent()
54
- })
55
- });
46
+ return React.createElement(StyledMaterialAssignmentAdminContainer, {
47
+ className: classnames(prefixCls, className)
48
+ }, React.createElement(IntlProvider, {
49
+ locale: locale,
50
+ defaultLocale: "en"
51
+ }, renderContent()));
56
52
  });
57
53
 
58
54
  export { MaterialAssignmentAdmin as default };
@@ -2,32 +2,26 @@ import { Flex, Text } from '@elice/blocks';
2
2
  import { base } from '@elice/design-tokens';
3
3
  import styled from 'styled-components';
4
4
 
5
- var StyledMaterialAssignmentAdminContainer = styled.div.withConfig({
5
+ const StyledMaterialAssignmentAdminContainer = styled.div.withConfig({
6
6
  componentId: "sc-1czd3o6-0"
7
7
  })(["display:flex;flex-direction:column;align-items:center;width:100%;height:100%;background-color:", ";"], base.color.navy9);
8
- var StyledMaterialAssignmentAdminHeader = styled(Flex).withConfig({
8
+ const StyledMaterialAssignmentAdminHeader = styled(Flex).withConfig({
9
9
  componentId: "sc-1czd3o6-1"
10
10
  })(["background-color:", ";"], base.color.navy8);
11
- var StyledMaterialAssignmentAdminHeaderCell = styled.div.withConfig({
11
+ const StyledMaterialAssignmentAdminHeaderCell = styled.div.withConfig({
12
12
  componentId: "sc-1czd3o6-2"
13
13
  })(["display:flex;flex-direction:column;align-items:flex-end;justify-content:space-between;padding:0 1.5rem;height:100%;border-right:1px solid ", ";&:last-of-type{border-right:none;}"], base.color.gray6);
14
- var StyledMaterialAssignmentAdminGradeWrapper = styled(Flex).withConfig({
14
+ const StyledMaterialAssignmentAdminGradeWrapper = styled(Flex).withConfig({
15
15
  componentId: "sc-1czd3o6-3"
16
16
  })(["background-color:", ";width:100%;padding:0 1.5rem;height:4.5rem;border:1px solid ", ";border-radius:0.5rem;"], base.color.navy7, base.color.navy6);
17
- var StyledMaterialAssignmentAdminTextareaWrapper = styled.div.withConfig({
17
+ const StyledMaterialAssignmentAdminTextareaWrapper = styled.div.withConfig({
18
18
  componentId: "sc-1czd3o6-4"
19
19
  })(["background-color:", ";"], base.color.gray2);
20
- var StyledMaterialAssignmentAdminManualScoreEditButtonWrapper = styled.div.withConfig({
20
+ const StyledMaterialAssignmentAdminManualScoreEditButtonWrapper = styled.div.withConfig({
21
21
  componentId: "sc-1czd3o6-5"
22
- })(["cursor:", ";opacity:", ";"], function (props) {
23
- return props.disabled ? 'not-allowed' : 'pointer';
24
- }, function (props) {
25
- return props.disabled ? 0.5 : 1;
26
- });
27
- var StyledMaterialAssignmentAdminManualScoreEditButton = styled(Text).withConfig({
22
+ })(["cursor:", ";opacity:", ";"], props => props.disabled ? 'not-allowed' : 'pointer', props => props.disabled ? 0.5 : 1);
23
+ const StyledMaterialAssignmentAdminManualScoreEditButton = styled(Text).withConfig({
28
24
  componentId: "sc-1czd3o6-6"
29
- })(["pointer-events:", ";"], function (props) {
30
- return props.disabled ? 'none' : 'auto';
31
- });
25
+ })(["pointer-events:", ";"], props => props.disabled ? 'none' : 'auto');
32
26
 
33
27
  export { StyledMaterialAssignmentAdminContainer, StyledMaterialAssignmentAdminGradeWrapper, StyledMaterialAssignmentAdminHeader, StyledMaterialAssignmentAdminHeaderCell, StyledMaterialAssignmentAdminManualScoreEditButton, StyledMaterialAssignmentAdminManualScoreEditButtonWrapper, StyledMaterialAssignmentAdminTextareaWrapper };