├── .github ├── dependabot.yml └── workflows │ └── quality.yml ├── .gitignore ├── .husky └── pre-commit ├── .nvmrc ├── .prettierignore ├── .vscode ├── extensions.json ├── launch.json └── settings.json ├── LICENSE ├── README.md ├── assets ├── preview-error.webp ├── preview-loading.webp └── typst │ └── fonts │ ├── SimSun.ttf │ ├── consola.ttf │ ├── latinmodern-math.otf │ ├── lmroman10-bold.otf │ ├── lmroman10-bolditalic.otf │ ├── lmroman10-italic.otf │ ├── lmroman10-regular.otf │ ├── lmroman12-bold.otf │ ├── lmroman12-italic.otf │ ├── lmroman12-regular.otf │ ├── lmroman17-regular.otf │ ├── simhei.ttf │ └── simkai.ttf ├── docs └── readme-screenshot.jpeg ├── eslint.config.ts ├── examples ├── CSP-S2024 │ ├── data.json │ ├── main.typ │ ├── precaution.md │ ├── problem-0.md │ ├── problem-1.md │ ├── problem-2.md │ ├── problem-3.md │ └── utils.typ └── SupportedGrammar │ ├── data.json │ ├── main.typ │ ├── precaution.md │ ├── problem-0.md │ └── utils.typ ├── index.html ├── package.json ├── postcss.config.ts ├── prettier.config.ts ├── public └── _headers ├── scripts └── compile-typst-examples.ts ├── src ├── App.css ├── App.tsx ├── compiler │ ├── compiler.worker.ts │ ├── index.ts │ ├── processor.ts │ ├── remarkExtendedTable.ts │ ├── remarkImageAttr.ts │ └── remarkTypst │ │ ├── compiler.ts │ │ └── index.ts ├── components │ ├── typstInitStatusContext.ts │ └── typstInitStatusProvider.tsx ├── contestEditor │ ├── body.css │ ├── body.tsx │ ├── configPanel │ │ ├── index.css │ │ ├── index.tsx │ │ └── problemList.tsx │ ├── exampleStatements.ts │ ├── index.css │ ├── index.tsx │ ├── markdownPanel.css │ ├── markdownPanel.tsx │ ├── preview.css │ └── preview.tsx ├── main.tsx ├── types │ ├── contestData.d.ts │ ├── defined.d.ts │ ├── localFontAccess.d.ts │ └── typstFontUrlEntries.d.ts └── utils │ ├── axiosInstance.ts │ ├── contestDataUtils.ts │ ├── imageManager.ts │ └── indexedDBUtils.ts ├── tests └── unit │ ├── remark-extended-table.common.test.ts │ ├── remark-image-attr.common.test.ts │ └── remark-typst.common.test.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.node.json ├── typst-template ├── config-schema.json ├── main.typ └── utils.typ └── vite.config.ts /.github/dependabot.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/.github/dependabot.yml -------------------------------------------------------------------------------- /.github/workflows/quality.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/.github/workflows/quality.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/.gitignore -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | npm run quality 5 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | v24.10.0 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | coverage 4 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/.vscode/extensions.json -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/.vscode/launch.json -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/.vscode/settings.json -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/README.md -------------------------------------------------------------------------------- /assets/preview-error.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/assets/preview-error.webp -------------------------------------------------------------------------------- /assets/preview-loading.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/assets/preview-loading.webp -------------------------------------------------------------------------------- /assets/typst/fonts/SimSun.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/assets/typst/fonts/SimSun.ttf -------------------------------------------------------------------------------- /assets/typst/fonts/consola.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/assets/typst/fonts/consola.ttf -------------------------------------------------------------------------------- /assets/typst/fonts/latinmodern-math.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/assets/typst/fonts/latinmodern-math.otf -------------------------------------------------------------------------------- /assets/typst/fonts/lmroman10-bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/assets/typst/fonts/lmroman10-bold.otf -------------------------------------------------------------------------------- /assets/typst/fonts/lmroman10-bolditalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/assets/typst/fonts/lmroman10-bolditalic.otf -------------------------------------------------------------------------------- /assets/typst/fonts/lmroman10-italic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/assets/typst/fonts/lmroman10-italic.otf -------------------------------------------------------------------------------- /assets/typst/fonts/lmroman10-regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/assets/typst/fonts/lmroman10-regular.otf -------------------------------------------------------------------------------- /assets/typst/fonts/lmroman12-bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/assets/typst/fonts/lmroman12-bold.otf -------------------------------------------------------------------------------- /assets/typst/fonts/lmroman12-italic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/assets/typst/fonts/lmroman12-italic.otf -------------------------------------------------------------------------------- /assets/typst/fonts/lmroman12-regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/assets/typst/fonts/lmroman12-regular.otf -------------------------------------------------------------------------------- /assets/typst/fonts/lmroman17-regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/assets/typst/fonts/lmroman17-regular.otf -------------------------------------------------------------------------------- /assets/typst/fonts/simhei.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/assets/typst/fonts/simhei.ttf -------------------------------------------------------------------------------- /assets/typst/fonts/simkai.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/assets/typst/fonts/simkai.ttf -------------------------------------------------------------------------------- /docs/readme-screenshot.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/docs/readme-screenshot.jpeg -------------------------------------------------------------------------------- /eslint.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/eslint.config.ts -------------------------------------------------------------------------------- /examples/CSP-S2024/data.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/examples/CSP-S2024/data.json -------------------------------------------------------------------------------- /examples/CSP-S2024/main.typ: -------------------------------------------------------------------------------- 1 | ../../typst-template/main.typ -------------------------------------------------------------------------------- /examples/CSP-S2024/precaution.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/examples/CSP-S2024/precaution.md -------------------------------------------------------------------------------- /examples/CSP-S2024/problem-0.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/examples/CSP-S2024/problem-0.md -------------------------------------------------------------------------------- /examples/CSP-S2024/problem-1.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/examples/CSP-S2024/problem-1.md -------------------------------------------------------------------------------- /examples/CSP-S2024/problem-2.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/examples/CSP-S2024/problem-2.md -------------------------------------------------------------------------------- /examples/CSP-S2024/problem-3.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/examples/CSP-S2024/problem-3.md -------------------------------------------------------------------------------- /examples/CSP-S2024/utils.typ: -------------------------------------------------------------------------------- 1 | ../../typst-template/utils.typ -------------------------------------------------------------------------------- /examples/SupportedGrammar/data.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/examples/SupportedGrammar/data.json -------------------------------------------------------------------------------- /examples/SupportedGrammar/main.typ: -------------------------------------------------------------------------------- 1 | ../../typst-template/main.typ -------------------------------------------------------------------------------- /examples/SupportedGrammar/precaution.md: -------------------------------------------------------------------------------- 1 | 在这里填写一些比赛的注意事项之类的东西。 2 | -------------------------------------------------------------------------------- /examples/SupportedGrammar/problem-0.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/examples/SupportedGrammar/problem-0.md -------------------------------------------------------------------------------- /examples/SupportedGrammar/utils.typ: -------------------------------------------------------------------------------- 1 | ../../typst-template/utils.typ -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/index.html -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/package.json -------------------------------------------------------------------------------- /postcss.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/postcss.config.ts -------------------------------------------------------------------------------- /prettier.config.ts: -------------------------------------------------------------------------------- 1 | export default {}; 2 | -------------------------------------------------------------------------------- /public/_headers: -------------------------------------------------------------------------------- 1 | /* 2 | Cache-control: no-transform 3 | -------------------------------------------------------------------------------- /scripts/compile-typst-examples.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/scripts/compile-typst-examples.ts -------------------------------------------------------------------------------- /src/App.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/App.css -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/App.tsx -------------------------------------------------------------------------------- /src/compiler/compiler.worker.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/compiler/compiler.worker.ts -------------------------------------------------------------------------------- /src/compiler/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/compiler/index.ts -------------------------------------------------------------------------------- /src/compiler/processor.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/compiler/processor.ts -------------------------------------------------------------------------------- /src/compiler/remarkExtendedTable.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/compiler/remarkExtendedTable.ts -------------------------------------------------------------------------------- /src/compiler/remarkImageAttr.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/compiler/remarkImageAttr.ts -------------------------------------------------------------------------------- /src/compiler/remarkTypst/compiler.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/compiler/remarkTypst/compiler.ts -------------------------------------------------------------------------------- /src/compiler/remarkTypst/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/compiler/remarkTypst/index.ts -------------------------------------------------------------------------------- /src/components/typstInitStatusContext.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/components/typstInitStatusContext.ts -------------------------------------------------------------------------------- /src/components/typstInitStatusProvider.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/components/typstInitStatusProvider.tsx -------------------------------------------------------------------------------- /src/contestEditor/body.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/contestEditor/body.css -------------------------------------------------------------------------------- /src/contestEditor/body.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/contestEditor/body.tsx -------------------------------------------------------------------------------- /src/contestEditor/configPanel/index.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/contestEditor/configPanel/index.css -------------------------------------------------------------------------------- /src/contestEditor/configPanel/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/contestEditor/configPanel/index.tsx -------------------------------------------------------------------------------- /src/contestEditor/configPanel/problemList.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/contestEditor/configPanel/problemList.tsx -------------------------------------------------------------------------------- /src/contestEditor/exampleStatements.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/contestEditor/exampleStatements.ts -------------------------------------------------------------------------------- /src/contestEditor/index.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/contestEditor/index.css -------------------------------------------------------------------------------- /src/contestEditor/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/contestEditor/index.tsx -------------------------------------------------------------------------------- /src/contestEditor/markdownPanel.css: -------------------------------------------------------------------------------- 1 | .contest-editor-markdown-panel { 2 | height: 100%; 3 | } 4 | -------------------------------------------------------------------------------- /src/contestEditor/markdownPanel.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/contestEditor/markdownPanel.tsx -------------------------------------------------------------------------------- /src/contestEditor/preview.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/contestEditor/preview.css -------------------------------------------------------------------------------- /src/contestEditor/preview.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/contestEditor/preview.tsx -------------------------------------------------------------------------------- /src/main.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/main.tsx -------------------------------------------------------------------------------- /src/types/contestData.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/types/contestData.d.ts -------------------------------------------------------------------------------- /src/types/defined.d.ts: -------------------------------------------------------------------------------- 1 | const GIT_COMMIT_INFO: string; 2 | -------------------------------------------------------------------------------- /src/types/localFontAccess.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/types/localFontAccess.d.ts -------------------------------------------------------------------------------- /src/types/typstFontUrlEntries.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/types/typstFontUrlEntries.d.ts -------------------------------------------------------------------------------- /src/utils/axiosInstance.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/utils/axiosInstance.ts -------------------------------------------------------------------------------- /src/utils/contestDataUtils.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/utils/contestDataUtils.ts -------------------------------------------------------------------------------- /src/utils/imageManager.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/utils/imageManager.ts -------------------------------------------------------------------------------- /src/utils/indexedDBUtils.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/src/utils/indexedDBUtils.ts -------------------------------------------------------------------------------- /tests/unit/remark-extended-table.common.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/tests/unit/remark-extended-table.common.test.ts -------------------------------------------------------------------------------- /tests/unit/remark-image-attr.common.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/tests/unit/remark-image-attr.common.test.ts -------------------------------------------------------------------------------- /tests/unit/remark-typst.common.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/tests/unit/remark-typst.common.test.ts -------------------------------------------------------------------------------- /tsconfig.app.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/tsconfig.app.json -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/tsconfig.json -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/tsconfig.node.json -------------------------------------------------------------------------------- /typst-template/config-schema.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/typst-template/config-schema.json -------------------------------------------------------------------------------- /typst-template/main.typ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/typst-template/main.typ -------------------------------------------------------------------------------- /typst-template/utils.typ: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/typst-template/utils.typ -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mr-Python-in-China/cnoi-statement-generator/HEAD/vite.config.ts --------------------------------------------------------------------------------