x-star-design 0.0.140 → 0.0.142

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.
@@ -1,6 +1,5 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
- import { InfoCircleOutlined } from '@ant-design/icons';
3
- import { Flex, Form, InputNumber, Radio, Select, Tooltip } from 'antd';
2
+ import { Form, InputNumber, Radio, Select } from 'antd';
4
3
  import React from 'react';
5
4
  import { useLocale } from "../locales";
6
5
  import { useTenant } from "../tenant-provider";
@@ -194,23 +193,6 @@ var ProgramConfigItem = function ProgramConfigItem(_ref) {
194
193
  }) : /*#__PURE__*/React.createElement(TextValue, {
195
194
  name: "showTopNSubmissionCount"
196
195
  }));
197
- }), /*#__PURE__*/React.createElement(Form.Item, {
198
- label: /*#__PURE__*/React.createElement(Flex, {
199
- align: "center",
200
- gap: 2
201
- }, /*#__PURE__*/React.createElement("div", null, t('Dual_Track_Judgement')), /*#__PURE__*/React.createElement(Tooltip, {
202
- title: t('Dual_Track_Judgement_Tooltip')
203
- }, /*#__PURE__*/React.createElement(InfoCircleOutlined, null))),
204
- name: 'dualEvaluation',
205
- extra: t('Dual_Track_Judgement_Extra')
206
- }, !isRevise ? /*#__PURE__*/React.createElement(Radio.Group, null, /*#__PURE__*/React.createElement(Radio, {
207
- value: true,
208
- "data-testid": "dualEvaluation-true"
209
- }, t('Enable')), /*#__PURE__*/React.createElement(Radio, {
210
- value: false,
211
- "data-testid": "dualEvaluation-false"
212
- }, t('Disable'))) : /*#__PURE__*/React.createElement(TextValue, {
213
- name: "dualEvaluation"
214
- }))));
196
+ })));
215
197
  };
216
198
  export default ProgramConfigItem;
@@ -102,17 +102,16 @@ var TextValue = function TextValue(_ref) {
102
102
  return value;
103
103
  },
104
104
  map: {}
105
- },
106
- dualEvaluation: {
107
- method: function method() {
108
- return void 0;
109
- },
110
- map: {
111
- true: t('Enable'),
112
- false: t('Disable')
113
- }
114
105
  }
106
+ // dualEvaluation: {
107
+ // method: () => void 0,
108
+ // map: {
109
+ // true: t('Enable'),
110
+ // false: t('Disable'),
111
+ // },
112
+ // },
115
113
  };
114
+
116
115
  var currentItem = methodMap[name];
117
116
  var methodResult = (_currentItem$method = currentItem.method) === null || _currentItem$method === void 0 ? void 0 : _currentItem$method.call(currentItem, value);
118
117
  if (methodResult !== undefined && methodResult !== null) {
@@ -48,7 +48,6 @@ export interface Configuration {
48
48
  lang: string[];
49
49
  showTopNSubmission: boolean;
50
50
  showTopNSubmissionCount: number;
51
- dualEvaluation: boolean;
52
51
  };
53
52
  homework?: {
54
53
  noLimit?: boolean;
@@ -114,7 +113,6 @@ export interface RawConfig {
114
113
  /**
115
114
  * 双轨评测
116
115
  */
117
- dualEvaluation: boolean;
118
116
  /**
119
117
  * 学生排行榜真实姓名
120
118
  */
@@ -70,10 +70,11 @@ export var getConfigData = function getConfigData(_ref) {
70
70
  scoreTypeInMatch: rawData.scoreTypeInMatch,
71
71
  lang: rawData.lang,
72
72
  showTopNSubmission: rawData.showTopNSubmission,
73
- showTopNSubmissionCount: rawData.showTopNSubmissionCount,
74
- dualEvaluation: rawData.dualEvaluation
73
+ showTopNSubmissionCount: rawData.showTopNSubmissionCount
74
+ // dualEvaluation: rawData.dualEvaluation,
75
75
  }
76
76
  };
77
+
77
78
  if (contestType === ContestExamType.Exam) {
78
79
  var _rawData$contestTime, _rawData$contestTime$, _rawData$contestTime2, _rawData$contestTime3;
79
80
  updateConfig['contest'] = {
@@ -148,8 +149,7 @@ var AcConfig = /*#__PURE__*/forwardRef(function (_ref3, ref) {
148
149
  scoreTypeInMatch = _ref6.scoreTypeInMatch,
149
150
  lang = _ref6.lang,
150
151
  showTopNSubmission = _ref6.showTopNSubmission,
151
- showTopNSubmissionCount = _ref6.showTopNSubmissionCount,
152
- dualEvaluation = _ref6.dualEvaluation;
152
+ showTopNSubmissionCount = _ref6.showTopNSubmissionCount;
153
153
  var _ref7 = (config === null || config === void 0 ? void 0 : config.rank) || {},
154
154
  rankListShowRealName = _ref7.rankListShowRealName,
155
155
  rankShowUserLabel = _ref7.rankShowUserLabel;
@@ -199,7 +199,7 @@ var AcConfig = /*#__PURE__*/forwardRef(function (_ref3, ref) {
199
199
  restriction: restriction === null || restriction === void 0 ? void 0 : restriction.type,
200
200
  showTopNSubmission: showTopNSubmission,
201
201
  showTopNSubmissionCount: showTopNSubmissionCount,
202
- dualEvaluation: dualEvaluation,
202
+ // dualEvaluation,
203
203
  revisalCount: revisalCount,
204
204
  enableRevisal: enableRevisal,
205
205
  enableAutoSubmit: enableAutoSubmit,
@@ -1,3 +1,21 @@
1
+ import { Dayjs } from 'dayjs';
1
2
  import { RawConfig } from '../ac-config/define';
2
- export type ContestType = 'OI' | 'XCPC' | 'IOI' | 'HOMEWORK1' | 'HOMEWORK2' | 'XCAMP_HOMEWORK';
3
- export declare const CONTEST_TEMPLATES: Record<ContestType, Partial<RawConfig>>;
3
+ import { TenantName } from '../tenant-provider';
4
+ /**
5
+ * 计算自动提交时间
6
+ * @param courseEndTime 开课结束时间
7
+ * @returns 开课结束时间 + 14天,取当天0点
8
+ * @example
9
+ * const endTime = dayjs('2026-03-10 18:00:00');
10
+ * const autoSubmitTime = calculateAutoSubmitTime(endTime);
11
+ * // 返回: dayjs('2026-03-24 00:00:00')
12
+ */
13
+ export declare const calculateAutoSubmitTime: (courseEndTime: Dayjs) => Dayjs;
14
+ export type BaseContestType = 'OI' | 'XCPC' | 'IOI';
15
+ export type ContestType = BaseContestType | 'HOMEWORK1' | 'HOMEWORK2' | 'XCAMP_HOMEWORK' | 'XCAMP_FINAL_NO_LIMIT' | 'XCAMP_FINAL_LIMIT';
16
+ export declare const CONTEST_TEMPLATES: Record<BaseContestType, Partial<RawConfig>>;
17
+ export type XYDContestType = 'HOMEWORK1' | 'HOMEWORK2';
18
+ export declare const XYD_CONTEST_TEMPLATES: Record<XYDContestType, Partial<RawConfig>>;
19
+ export type XCampContestType = 'XCAMP_HOMEWORK' | 'XCAMP_FINAL_NO_LIMIT' | 'XCAMP_FINAL_LIMIT';
20
+ export declare const XCAMP_CONTEST_TEMPLATES: Record<XCampContestType, Partial<RawConfig>>;
21
+ export declare const getTemplatesByTenant: (tenantName: TenantName, courseEndTime?: Dayjs) => Record<ContestType, Partial<RawConfig>>;
@@ -1,4 +1,22 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
1
2
  import dayjs from 'dayjs';
3
+ /**
4
+ * 计算自动提交时间
5
+ * @param courseEndTime 开课结束时间
6
+ * @returns 开课结束时间 + 14天,取当天0点
7
+ * @example
8
+ * const endTime = dayjs('2026-03-10 18:00:00');
9
+ * const autoSubmitTime = calculateAutoSubmitTime(endTime);
10
+ * // 返回: dayjs('2026-03-24 00:00:00')
11
+ */
12
+ export var calculateAutoSubmitTime = function calculateAutoSubmitTime(courseEndTime) {
13
+ return courseEndTime.add(14, 'day').startOf('day');
14
+ };
15
+ // 基础竞赛类型(公用模板)
16
+
17
+ // 所有竞赛类型
18
+
19
+ // 公用的竞赛模板(OI、XCPC、IOI)
2
20
  export var CONTEST_TEMPLATES = {
3
21
  OI: {
4
22
  gradeTime: dayjs(),
@@ -29,7 +47,7 @@ export var CONTEST_TEMPLATES = {
29
47
  limitHour: 0,
30
48
  limitMinute: 0
31
49
  },
32
- dualEvaluation: false,
50
+ // dualEvaluation: false,
33
51
  enableAutoSubmit: false,
34
52
  autoSubmitTime: undefined
35
53
  },
@@ -62,7 +80,7 @@ export var CONTEST_TEMPLATES = {
62
80
  limitHour: 0,
63
81
  limitMinute: 0
64
82
  },
65
- dualEvaluation: false,
83
+ // dualEvaluation: false,
66
84
  enableAutoSubmit: false,
67
85
  autoSubmitTime: undefined
68
86
  },
@@ -95,10 +113,15 @@ export var CONTEST_TEMPLATES = {
95
113
  limitHour: 0,
96
114
  limitMinute: 0
97
115
  },
98
- dualEvaluation: false,
116
+ // dualEvaluation: false,
99
117
  enableAutoSubmit: false,
100
118
  autoSubmitTime: undefined
101
- },
119
+ }
120
+ };
121
+
122
+ // XYD 租户特有的作业模板
123
+
124
+ export var XYD_CONTEST_TEMPLATES = {
102
125
  HOMEWORK1: {
103
126
  contestTime: 'noLimit',
104
127
  gradeTime: dayjs(),
@@ -133,7 +156,7 @@ export var CONTEST_TEMPLATES = {
133
156
  limitHour: 0,
134
157
  limitMinute: 0
135
158
  },
136
- dualEvaluation: false,
159
+ // dualEvaluation: false,
137
160
  enableAutoSubmit: false,
138
161
  autoSubmitTime: undefined
139
162
  },
@@ -171,10 +194,15 @@ export var CONTEST_TEMPLATES = {
171
194
  limitHour: 2,
172
195
  limitMinute: 0
173
196
  },
174
- dualEvaluation: false,
197
+ // dualEvaluation: false,
175
198
  enableAutoSubmit: false,
176
199
  autoSubmitTime: undefined
177
- },
200
+ }
201
+ };
202
+
203
+ // XCamp 租户特有的作业模板
204
+
205
+ export var XCAMP_CONTEST_TEMPLATES = {
178
206
  XCAMP_HOMEWORK: {
179
207
  contestTime: 'noLimit',
180
208
  gradeTime: dayjs(),
@@ -196,7 +224,7 @@ export var CONTEST_TEMPLATES = {
196
224
  downloadDataEnable: true,
197
225
  downloadDataCount: 5,
198
226
  scoreTypeInMatch: 'maxScore',
199
- lang: ['gcc', 'g++', 'g++11', 'g++14', 'g++17', 'python2.7', 'python3.8', 'java8', 'fpc'],
227
+ lang: ['gcc', 'g++', 'g++11', 'g++14', 'g++17', 'python3.8', 'java8'],
200
228
  showTopNSubmission: false,
201
229
  showTopNSubmissionCount: 0,
202
230
  rankListShowRealName: false,
@@ -209,10 +237,109 @@ export var CONTEST_TEMPLATES = {
209
237
  limitHour: 0,
210
238
  limitMinute: 0
211
239
  },
212
- dualEvaluation: false,
240
+ // dualEvaluation: false,
213
241
  revisalCount: 5,
214
242
  enableRevisal: true,
215
243
  enableAutoSubmit: false,
216
244
  autoSubmitTime: undefined
245
+ },
246
+ XCAMP_FINAL_NO_LIMIT: {
247
+ contestTime: 'limitTime',
248
+ limitTime: {
249
+ limitHour: 336,
250
+ limitMinute: 0
251
+ },
252
+ gradeTime: dayjs(),
253
+ rankListTime: dayjs(),
254
+ paperTime: dayjs(),
255
+ answerTime: dayjs(),
256
+ tipTime: dayjs(),
257
+ gradeRelease: 'afterExam',
258
+ rankListRelease: 'afterGradeRelease',
259
+ paperRelease: 'afterExam',
260
+ answerRelease: 'afterExam',
261
+ tipRelease: 'always',
262
+ submission: 'noEarlySubmission',
263
+ restriction: 'never',
264
+ disorder: [],
265
+ personalScoreVisibility: 'always',
266
+ rankingMethod: 'score',
267
+ highScoreProgramVisibility: 'never',
268
+ downloadDataEnable: true,
269
+ downloadDataCount: 5,
270
+ scoreTypeInMatch: 'maxScore',
271
+ lang: ['gcc', 'g++', 'g++11', 'g++14', 'g++17', 'python3.8', 'java8'],
272
+ showTopNSubmission: false,
273
+ showTopNSubmissionCount: 0,
274
+ rankListShowRealName: false,
275
+ rankShowUserLabel: false,
276
+ submissionLimitTime: {
277
+ limitHour: 0,
278
+ limitMinute: 0
279
+ },
280
+ revisalCount: 5,
281
+ enableRevisal: true,
282
+ enableAutoSubmit: true,
283
+ autoSubmitTime: calculateAutoSubmitTime(dayjs())
284
+ },
285
+ XCAMP_FINAL_LIMIT: {
286
+ contestTime: 'limitTime',
287
+ limitTime: {
288
+ limitHour: 4,
289
+ limitMinute: 0
290
+ },
291
+ gradeTime: dayjs(),
292
+ rankListTime: dayjs(),
293
+ paperTime: dayjs(),
294
+ answerTime: dayjs(),
295
+ tipTime: dayjs(),
296
+ gradeRelease: 'afterExam',
297
+ rankListRelease: 'afterGradeRelease',
298
+ paperRelease: 'afterExam',
299
+ answerRelease: 'afterExam',
300
+ tipRelease: 'always',
301
+ submission: 'noEarlySubmission',
302
+ restriction: 'never',
303
+ disorder: [],
304
+ personalScoreVisibility: 'always',
305
+ rankingMethod: 'score',
306
+ highScoreProgramVisibility: 'never',
307
+ downloadDataEnable: true,
308
+ downloadDataCount: 5,
309
+ scoreTypeInMatch: 'maxScore',
310
+ lang: ['gcc', 'g++', 'g++11', 'g++14', 'g++17', 'python3.8', 'java8'],
311
+ showTopNSubmission: false,
312
+ showTopNSubmissionCount: 0,
313
+ rankListShowRealName: false,
314
+ rankShowUserLabel: false,
315
+ submissionLimitTime: {
316
+ limitHour: 0,
317
+ limitMinute: 0
318
+ },
319
+ revisalCount: 5,
320
+ enableRevisal: true,
321
+ enableAutoSubmit: true,
322
+ autoSubmitTime: calculateAutoSubmitTime(dayjs())
323
+ }
324
+ };
325
+
326
+ // 根据租户类型获取模板配置
327
+ export var getTemplatesByTenant = function getTemplatesByTenant(tenantName, courseEndTime) {
328
+ var baseTemplates = _objectSpread({}, CONTEST_TEMPLATES);
329
+ if (tenantName === 'xcamp') {
330
+ var xcampTemplates = _objectSpread({}, XCAMP_CONTEST_TEMPLATES);
331
+
332
+ // 如果提供了课程结束时间,自动计算 autoSubmitTime
333
+ if (courseEndTime) {
334
+ xcampTemplates.XCAMP_FINAL_NO_LIMIT = _objectSpread(_objectSpread({}, xcampTemplates.XCAMP_FINAL_NO_LIMIT), {}, {
335
+ autoSubmitTime: calculateAutoSubmitTime(courseEndTime)
336
+ });
337
+ xcampTemplates.XCAMP_FINAL_LIMIT = _objectSpread(_objectSpread({}, xcampTemplates.XCAMP_FINAL_LIMIT), {}, {
338
+ autoSubmitTime: calculateAutoSubmitTime(courseEndTime)
339
+ });
340
+ }
341
+ return _objectSpread(_objectSpread({}, baseTemplates), xcampTemplates);
342
+ } else {
343
+ return _objectSpread(_objectSpread({}, baseTemplates), XYD_CONTEST_TEMPLATES);
217
344
  }
218
345
  };
@@ -3,6 +3,7 @@ import { RawConfig } from '../ac-config/define';
3
3
  import { ContestType } from './define';
4
4
  interface ConfigTemplateProps {
5
5
  onSelect?: (config: Partial<RawConfig>, configType: ContestType) => void;
6
+ courseEndTime?: number;
6
7
  }
7
- declare const ConfigTemplate: ({ onSelect }: ConfigTemplateProps) => React.JSX.Element;
8
+ declare const ConfigTemplate: ({ onSelect, courseEndTime }: ConfigTemplateProps) => React.JSX.Element;
8
9
  export default ConfigTemplate;
@@ -1,32 +1,59 @@
1
1
  import { Card, Col, message, Popconfirm, Row, Space, Typography } from 'antd';
2
- import React from 'react';
2
+ import dayjs from 'dayjs';
3
+ import React, { useMemo } from 'react';
3
4
  import { useLocale } from "../locales";
5
+ import { useTenant } from "../tenant-provider";
4
6
  import { prefix } from "../utils/global";
5
- import { CONTEST_TEMPLATES } from "./define";
7
+ import { getTemplatesByTenant } from "./define";
6
8
  var Text = Typography.Text;
7
9
  var ConfigTemplate = function ConfigTemplate(_ref) {
8
- var onSelect = _ref.onSelect;
10
+ var onSelect = _ref.onSelect,
11
+ courseEndTime = _ref.courseEndTime;
9
12
  var _useLocale = useLocale('ConfigTemplate'),
10
13
  t = _useLocale.format;
11
- var template = [{
12
- type: 'OI',
13
- title: t('OI')
14
- }, {
15
- type: 'XCPC',
16
- title: t('XCPC')
17
- }, {
18
- type: 'IOI',
19
- title: t('IOI')
20
- }, {
21
- type: 'HOMEWORK1',
22
- title: t('Homework_Mode_1')
23
- }, {
24
- type: 'HOMEWORK2',
25
- title: t('Homework_Mode_2')
26
- }, {
27
- type: 'XCAMP_HOMEWORK',
28
- title: t('XCAMP_HOMEWORK')
29
- }];
14
+ var _useTenant = useTenant(),
15
+ tenant = _useTenant.tenant;
16
+
17
+ // 根据租户获取对应的模板配置
18
+ var TEMPLATES = useMemo(function () {
19
+ return getTemplatesByTenant(tenant.name, courseEndTime ? dayjs.unix(courseEndTime) : undefined);
20
+ }, [tenant.name, courseEndTime]);
21
+
22
+ // 根据租户动态生成模板列表
23
+ var template = useMemo(function () {
24
+ var baseTemplates = [{
25
+ type: 'OI',
26
+ title: t('OI')
27
+ }, {
28
+ type: 'XCPC',
29
+ title: t('XCPC')
30
+ }, {
31
+ type: 'IOI',
32
+ title: t('IOI')
33
+ }];
34
+
35
+ // 根据租户添加特定模板
36
+ if (tenant.name === 'xcamp') {
37
+ return [].concat(baseTemplates, [{
38
+ type: 'XCAMP_HOMEWORK',
39
+ title: t('XCAMP_HOMEWORK')
40
+ }, {
41
+ type: 'XCAMP_FINAL_NO_LIMIT',
42
+ title: t('XCAMP_FINAL_NO_LIMIT')
43
+ }, {
44
+ type: 'XCAMP_FINAL_LIMIT',
45
+ title: t('XCAMP_FINAL_LIMIT')
46
+ }]);
47
+ } else {
48
+ return [].concat(baseTemplates, [{
49
+ type: 'HOMEWORK1',
50
+ title: t('Homework_Mode_1')
51
+ }, {
52
+ type: 'HOMEWORK2',
53
+ title: t('Homework_Mode_2')
54
+ }]);
55
+ }
56
+ }, [tenant.name, t]);
30
57
  var templateConfig = {
31
58
  OI: {
32
59
  title: t('OI'),
@@ -117,6 +144,38 @@ var ConfigTemplate = function ConfigTemplate(_ref) {
117
144
  text: t('Download_Count_15'),
118
145
  icon: '►'
119
146
  }]
147
+ },
148
+ XCAMP_FINAL_NO_LIMIT: {
149
+ title: t('XCAMP_FINAL_NO_LIMIT'),
150
+ features: [{
151
+ text: t('XCAMP_FINAL_NO_LIMIT_TIME'),
152
+ icon: '►'
153
+ }, {
154
+ text: t('XCAMP_FINAL_NO_LIMIT_NO_EARLY_SUBMISSION'),
155
+ icon: '►'
156
+ }, {
157
+ text: t('XCAMP_FINAL_NO_LIMIT_AUTO_SUBMISSION'),
158
+ icon: '►'
159
+ }, {
160
+ text: t('XCAMP_FINAL_NO_LIMIT_AUTO_SUBMISSION_TIME'),
161
+ icon: '►'
162
+ }]
163
+ },
164
+ XCAMP_FINAL_LIMIT: {
165
+ title: t('XCAMP_FINAL_LIMIT'),
166
+ features: [{
167
+ text: t('XCAMP_FINAL_LIMIT_TIME'),
168
+ icon: '►'
169
+ }, {
170
+ text: t('XCAMP_FINAL_NO_LIMIT_NO_EARLY_SUBMISSION'),
171
+ icon: '►'
172
+ }, {
173
+ text: t('XCAMP_FINAL_NO_LIMIT_AUTO_SUBMISSION'),
174
+ icon: '►'
175
+ }, {
176
+ text: t('XCAMP_FINAL_NO_LIMIT_AUTO_SUBMISSION_TIME'),
177
+ icon: '►'
178
+ }]
120
179
  }
121
180
  };
122
181
  return /*#__PURE__*/React.createElement(Row, {
@@ -129,7 +188,7 @@ var ConfigTemplate = function ConfigTemplate(_ref) {
129
188
  title: t('Current_Operation_Hint'),
130
189
  "data-testid": "popconfirm",
131
190
  onConfirm: function onConfirm() {
132
- onSelect === null || onSelect === void 0 ? void 0 : onSelect(CONTEST_TEMPLATES[item.type], item.type);
191
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(TEMPLATES[item.type], item.type);
133
192
  message.success({
134
193
  key: 'success',
135
194
  content: t('Cover_successfully')
@@ -238,9 +238,16 @@ declare const _default: {
238
238
  readonly Same_Score_First_AC: "Same score, rank by first AC time";
239
239
  readonly No_Submission_Result_In_Contest: "No submission result in contest";
240
240
  readonly Submit_By_Last_Submission: "Submit by last submission";
241
- readonly XCAMP_HOMEWORK: "X-Camp Homework Mode";
241
+ readonly XCAMP_HOMEWORK: "Homework Mode";
242
+ readonly XCAMP_FINAL_NO_LIMIT: "Final Exam (No Time Limit)";
242
243
  readonly Download_Count_15: "Download error data (XJOI) 2 pairs";
243
244
  readonly Rank_List_Not_Show_Real_Name: "Ranklist not show real name";
245
+ readonly XCAMP_FINAL_LIMIT: "Final Exam (Time Limit)";
246
+ readonly XCAMP_FINAL_NO_LIMIT_TIME: "Homework time limit 14 days";
247
+ readonly XCAMP_FINAL_NO_LIMIT_NO_EARLY_SUBMISSION: "No early submission";
248
+ readonly XCAMP_FINAL_NO_LIMIT_AUTO_SUBMISSION: "Automatic submission enabled";
249
+ readonly XCAMP_FINAL_NO_LIMIT_AUTO_SUBMISSION_TIME: "Automatic submission after 14 days";
250
+ readonly XCAMP_FINAL_LIMIT_TIME: "Homework time limit 4 hours";
244
251
  };
245
252
  };
246
253
  export default _default;
@@ -238,8 +238,15 @@ export default {
238
238
  Same_Score_First_AC: 'Same score, rank by first AC time',
239
239
  No_Submission_Result_In_Contest: 'No submission result in contest',
240
240
  Submit_By_Last_Submission: 'Submit by last submission',
241
- XCAMP_HOMEWORK: 'X-Camp Homework Mode',
241
+ XCAMP_HOMEWORK: 'Homework Mode',
242
+ XCAMP_FINAL_NO_LIMIT: 'Final Exam (No Time Limit)',
242
243
  Download_Count_15: 'Download error data (XJOI) 2 pairs',
243
- Rank_List_Not_Show_Real_Name: 'Ranklist not show real name'
244
+ Rank_List_Not_Show_Real_Name: 'Ranklist not show real name',
245
+ XCAMP_FINAL_LIMIT: 'Final Exam (Time Limit)',
246
+ XCAMP_FINAL_NO_LIMIT_TIME: 'Homework time limit 14 days',
247
+ XCAMP_FINAL_NO_LIMIT_NO_EARLY_SUBMISSION: 'No early submission',
248
+ XCAMP_FINAL_NO_LIMIT_AUTO_SUBMISSION: 'Automatic submission enabled',
249
+ XCAMP_FINAL_NO_LIMIT_AUTO_SUBMISSION_TIME: 'Automatic submission after 14 days',
250
+ XCAMP_FINAL_LIMIT_TIME: 'Homework time limit 4 hours'
244
251
  }
245
252
  };
@@ -249,9 +249,16 @@ export declare const useLocale: <T extends "VisualDataConfig" | "TranslateButton
249
249
  readonly Same_Score_First_AC: "同分按首次AC时间排名";
250
250
  readonly No_Submission_Result_In_Contest: "比赛中不显示提交结果";
251
251
  readonly Submit_By_Last_Submission: "提交按最后一次提交时间计分";
252
- readonly XCAMP_HOMEWORK: "X-Camp作业模式";
252
+ readonly XCAMP_HOMEWORK: "作业模式";
253
+ readonly XCAMP_FINAL_NO_LIMIT: "期末考试(不限时)";
253
254
  readonly Download_Count_15: "下载错误数据(XJOI)2对";
254
255
  readonly Rank_List_Not_Show_Real_Name: "排行榜不显示真实姓名";
256
+ readonly XCAMP_FINAL_LIMIT: "期末考试(限时)";
257
+ readonly XCAMP_FINAL_NO_LIMIT_TIME: "作业时长14天";
258
+ readonly XCAMP_FINAL_NO_LIMIT_NO_EARLY_SUBMISSION: "不允许提前交卷";
259
+ readonly XCAMP_FINAL_NO_LIMIT_AUTO_SUBMISSION: "定时自动交卷开启";
260
+ readonly XCAMP_FINAL_NO_LIMIT_AUTO_SUBMISSION_TIME: "结课之日起14天后自动交卷";
261
+ readonly XCAMP_FINAL_LIMIT_TIME: "作业时长4小时";
255
262
  };
256
263
  } | {
257
264
  readonly VisualDataConfig: {
@@ -493,9 +500,16 @@ export declare const useLocale: <T extends "VisualDataConfig" | "TranslateButton
493
500
  readonly Same_Score_First_AC: "Same score, rank by first AC time";
494
501
  readonly No_Submission_Result_In_Contest: "No submission result in contest";
495
502
  readonly Submit_By_Last_Submission: "Submit by last submission";
496
- readonly XCAMP_HOMEWORK: "X-Camp Homework Mode";
503
+ readonly XCAMP_HOMEWORK: "Homework Mode";
504
+ readonly XCAMP_FINAL_NO_LIMIT: "Final Exam (No Time Limit)";
497
505
  readonly Download_Count_15: "Download error data (XJOI) 2 pairs";
498
506
  readonly Rank_List_Not_Show_Real_Name: "Ranklist not show real name";
507
+ readonly XCAMP_FINAL_LIMIT: "Final Exam (Time Limit)";
508
+ readonly XCAMP_FINAL_NO_LIMIT_TIME: "Homework time limit 14 days";
509
+ readonly XCAMP_FINAL_NO_LIMIT_NO_EARLY_SUBMISSION: "No early submission";
510
+ readonly XCAMP_FINAL_NO_LIMIT_AUTO_SUBMISSION: "Automatic submission enabled";
511
+ readonly XCAMP_FINAL_NO_LIMIT_AUTO_SUBMISSION_TIME: "Automatic submission after 14 days";
512
+ readonly XCAMP_FINAL_LIMIT_TIME: "Homework time limit 4 hours";
499
513
  };
500
514
  })[T][U];
501
515
  };
@@ -238,9 +238,16 @@ declare const _default: {
238
238
  readonly Same_Score_First_AC: "同分按首次AC时间排名";
239
239
  readonly No_Submission_Result_In_Contest: "比赛中不显示提交结果";
240
240
  readonly Submit_By_Last_Submission: "提交按最后一次提交时间计分";
241
- readonly XCAMP_HOMEWORK: "X-Camp作业模式";
241
+ readonly XCAMP_HOMEWORK: "作业模式";
242
+ readonly XCAMP_FINAL_NO_LIMIT: "期末考试(不限时)";
242
243
  readonly Download_Count_15: "下载错误数据(XJOI)2对";
243
244
  readonly Rank_List_Not_Show_Real_Name: "排行榜不显示真实姓名";
245
+ readonly XCAMP_FINAL_LIMIT: "期末考试(限时)";
246
+ readonly XCAMP_FINAL_NO_LIMIT_TIME: "作业时长14天";
247
+ readonly XCAMP_FINAL_NO_LIMIT_NO_EARLY_SUBMISSION: "不允许提前交卷";
248
+ readonly XCAMP_FINAL_NO_LIMIT_AUTO_SUBMISSION: "定时自动交卷开启";
249
+ readonly XCAMP_FINAL_NO_LIMIT_AUTO_SUBMISSION_TIME: "结课之日起14天后自动交卷";
250
+ readonly XCAMP_FINAL_LIMIT_TIME: "作业时长4小时";
244
251
  };
245
252
  };
246
253
  export default _default;
@@ -238,8 +238,15 @@ export default {
238
238
  Same_Score_First_AC: '同分按首次AC时间排名',
239
239
  No_Submission_Result_In_Contest: '比赛中不显示提交结果',
240
240
  Submit_By_Last_Submission: '提交按最后一次提交时间计分',
241
- XCAMP_HOMEWORK: 'X-Camp作业模式',
241
+ XCAMP_HOMEWORK: '作业模式',
242
+ XCAMP_FINAL_NO_LIMIT: '期末考试(不限时)',
242
243
  Download_Count_15: '下载错误数据(XJOI)2对',
243
- Rank_List_Not_Show_Real_Name: '排行榜不显示真实姓名'
244
+ Rank_List_Not_Show_Real_Name: '排行榜不显示真实姓名',
245
+ XCAMP_FINAL_LIMIT: '期末考试(限时)',
246
+ XCAMP_FINAL_NO_LIMIT_TIME: '作业时长14天',
247
+ XCAMP_FINAL_NO_LIMIT_NO_EARLY_SUBMISSION: '不允许提前交卷',
248
+ XCAMP_FINAL_NO_LIMIT_AUTO_SUBMISSION: '定时自动交卷开启',
249
+ XCAMP_FINAL_NO_LIMIT_AUTO_SUBMISSION_TIME: '结课之日起14天后自动交卷',
250
+ XCAMP_FINAL_LIMIT_TIME: '作业时长4小时'
244
251
  }
245
252
  };
@@ -811,6 +811,8 @@
811
811
  border-radius: 4px;
812
812
  color: #1990fe;
813
813
  background-color: #e6f4ff;
814
+ white-space: wrap;
815
+ word-break: break-all;
814
816
  }
815
817
  .x-star-design-templateCard .x-star-design-title {
816
818
  display: block;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "x-star-design",
3
- "version": "0.0.140",
3
+ "version": "0.0.142",
4
4
  "description": "A react component library developed by turingstar",
5
5
  "license": "MIT",
6
6
  "module": "dist/index.js",