From 5f527658f892388046ea64c6df719241b5b336ea Mon Sep 17 00:00:00 2001 From: undefined Date: Sun, 10 Oct 2021 16:27:23 +0800 Subject: [PATCH] ui: remove emojify.js --- packages/fps-importer/package.json | 2 +- packages/hydrojudge/package.json | 6 ++-- packages/hydrooj/package.json | 12 ++++---- packages/migrate-vijos/package.json | 2 +- packages/ui-default/.eslintrc.js | 1 + packages/ui-default/build/config/webpack.js | 1 - .../{contest.page.js => contest.page.ts} | 0 ...{datepicker.page.js => datepicker.page.ts} | 4 +-- .../ui-default/components/dialog/DomDialog.js | 1 - .../{dropdown.page.js => dropdown.page.ts} | 0 .../components/editor/cmeditor.page.js | 28 ------------------- .../components/editor/cmeditor.page.ts | 21 ++++++++++++++ ...{textareaHandler.js => textareaHandler.ts} | 0 .../components/emoji/emoji.page.styl | 6 ---- .../components/emoji/emojify.page.js | 21 -------------- .../footer/{footer.page.js => footer.page.ts} | 14 +++------- .../form/{form.page.js => form.page.ts} | 6 +--- .../form/{textbox.page.js => textbox.page.ts} | 0 ...ighlighter.page.js => highlighter.page.ts} | 10 ++----- .../components/highlighter/prismjs.js | 11 ++------ packages/ui-default/jsconfig.json | 1 + packages/ui-default/locales/en.yaml | 1 - packages/ui-default/locales/ko.yaml | 1 - packages/ui-default/locales/zh.yaml | 1 - packages/ui-default/package.json | 21 +++++++------- .../templates/problem_statistics.html | 20 ------------- packages/utils/package.json | 4 +-- 27 files changed, 57 insertions(+), 138 deletions(-) rename packages/ui-default/components/contest/{contest.page.js => contest.page.ts} (100%) rename packages/ui-default/components/datepicker/{datepicker.page.js => datepicker.page.ts} (85%) rename packages/ui-default/components/dropdown/{dropdown.page.js => dropdown.page.ts} (100%) delete mode 100644 packages/ui-default/components/editor/cmeditor.page.js create mode 100644 packages/ui-default/components/editor/cmeditor.page.ts rename packages/ui-default/components/editor/{textareaHandler.js => textareaHandler.ts} (100%) delete mode 100644 packages/ui-default/components/emoji/emoji.page.styl delete mode 100644 packages/ui-default/components/emoji/emojify.page.js rename packages/ui-default/components/footer/{footer.page.js => footer.page.ts} (76%) rename packages/ui-default/components/form/{form.page.js => form.page.ts} (80%) rename packages/ui-default/components/form/{textbox.page.js => textbox.page.ts} (100%) rename packages/ui-default/components/highlighter/{highlighter.page.js => highlighter.page.ts} (77%) delete mode 100644 packages/ui-default/templates/problem_statistics.html diff --git a/packages/fps-importer/package.json b/packages/fps-importer/package.json index ff725e3b6..f688af581 100644 --- a/packages/fps-importer/package.json +++ b/packages/fps-importer/package.json @@ -11,7 +11,7 @@ "adm-zip": "0.5.5", "decode-html": "^2.0.0", "fs-extra": "^10.0.0", - "mongodb": "^3.7.1", + "mongodb": "^3.7.2", "xml2js": "^0.4.23" }, "devDependencies": { diff --git a/packages/hydrojudge/package.json b/packages/hydrojudge/package.json index 6621e5723..1dda7bc8f 100644 --- a/packages/hydrojudge/package.json +++ b/packages/hydrojudge/package.json @@ -8,12 +8,12 @@ "dependencies": { "@hydrooj/utils": "workspace:*", "axios": "^0.21.4", - "cac": "^6.7.3", - "esbuild": "^0.12.29", + "cac": "^6.7.8", + "esbuild": "^0.13.4", "fs-extra": "^10.0.0", "js-yaml": "^4.1.0", "lodash": "^4.17.21", - "mongodb": "^3.7.1", + "mongodb": "^3.7.2", "p-queue": "^7.1.0", "shell-quote": "^1.7.2", "ws": "^8.2.3" diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 201826656..5fcced43c 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -15,13 +15,13 @@ "@hydrooj/utils": "workspace:*", "adm-zip": "0.5.5", "ansi_up": "^5.0.1", - "cac": "^6.7.3", + "cac": "^6.7.8", "cookies": "^0.8.0", "detect-browser": "^5.2.1", - "esbuild": "^0.12.29", + "esbuild": "^0.13.4", "fs-extra": "^10.0.0", - "graphql": "^15.6.0", - "graphql-scalars": "^1.10.1", + "graphql": "^15.6.1", + "graphql-scalars": "^1.11.1", "js-yaml": "^4.1.0", "koa": "^2.13.3", "koa-body": "^4.2.0", @@ -34,8 +34,8 @@ "mime-types": "^2.1.33", "minio": "7.0.19", "moment-timezone": "^0.5.33", - "mongodb": "^3.7.1", - "nanoid": "^3.1.28", + "mongodb": "^3.7.2", + "nanoid": "^3.1.29", "nodemailer": "^6.6.5", "p-queue": "^7.1.0", "reflect-metadata": "^0.1.13", diff --git a/packages/migrate-vijos/package.json b/packages/migrate-vijos/package.json index 334eda1e1..4a06109e5 100644 --- a/packages/migrate-vijos/package.json +++ b/packages/migrate-vijos/package.json @@ -10,6 +10,6 @@ "@types/mongodb": "^3.6.20" }, "dependencies": { - "mongodb": "^3.7.1" + "mongodb": "^3.7.2" } } diff --git a/packages/ui-default/.eslintrc.js b/packages/ui-default/.eslintrc.js index 0b62b4faf..be7a3fda7 100644 --- a/packages/ui-default/.eslintrc.js +++ b/packages/ui-default/.eslintrc.js @@ -45,6 +45,7 @@ module.exports = { UserContext: true, LOCALES: true, window: true, + JQuery: true, }, rules: { '@typescript-eslint/dot-notation': 'off', diff --git a/packages/ui-default/build/config/webpack.js b/packages/ui-default/build/config/webpack.js index e460ba842..9c8dbfac0 100644 --- a/packages/ui-default/build/config/webpack.js +++ b/packages/ui-default/build/config/webpack.js @@ -211,7 +211,6 @@ export default function (env = {}) { new CopyWebpackPlugin({ patterns: [ { from: root('static') }, - { from: root(`${dirname(require.resolve('emojify.js/package.json'))}/dist/images/basic`), to: 'img/emoji/' }, { from: root(`${dirname(require.resolve('vditor/package.json'))}`), to: 'vditor/' }, ], }), diff --git a/packages/ui-default/components/contest/contest.page.js b/packages/ui-default/components/contest/contest.page.ts similarity index 100% rename from packages/ui-default/components/contest/contest.page.js rename to packages/ui-default/components/contest/contest.page.ts diff --git a/packages/ui-default/components/datepicker/datepicker.page.js b/packages/ui-default/components/datepicker/datepicker.page.ts similarity index 85% rename from packages/ui-default/components/datepicker/datepicker.page.js rename to packages/ui-default/components/datepicker/datepicker.page.ts index 7ae7b16f2..8b722058d 100644 --- a/packages/ui-default/components/datepicker/datepicker.page.js +++ b/packages/ui-default/components/datepicker/datepicker.page.ts @@ -1,7 +1,7 @@ import { AutoloadPage } from 'vj/misc/Page'; const datepickerPage = new AutoloadPage('datepickerPage', async () => { - if ($('[data-pick-date]').length > 0) { + if ($('[data-pick-date]').length) { await import('pickadate/lib/picker.date'); $('[data-pick-date]').pickadate({ format: 'yyyy-m-d', @@ -9,7 +9,7 @@ const datepickerPage = new AutoloadPage('datepickerPage', async () => { clear: false, }); } - if ($('[data-pick-time]').length > 0) { + if ($('[data-pick-time]').length) { await import('pickadate/lib/picker.time'); $('[data-pick-time]').pickatime({ format: 'H:i', diff --git a/packages/ui-default/components/dialog/DomDialog.js b/packages/ui-default/components/dialog/DomDialog.js index df5f56750..21f6d0f7f 100644 --- a/packages/ui-default/components/dialog/DomDialog.js +++ b/packages/ui-default/components/dialog/DomDialog.js @@ -1,6 +1,5 @@ import _ from 'lodash'; import DOMAttachedObject from 'vj/components/DOMAttachedObject'; - import zIndexManager from 'vj/utils/zIndexManager'; export default class DomDialog extends DOMAttachedObject { diff --git a/packages/ui-default/components/dropdown/dropdown.page.js b/packages/ui-default/components/dropdown/dropdown.page.ts similarity index 100% rename from packages/ui-default/components/dropdown/dropdown.page.js rename to packages/ui-default/components/dropdown/dropdown.page.ts diff --git a/packages/ui-default/components/editor/cmeditor.page.js b/packages/ui-default/components/editor/cmeditor.page.js deleted file mode 100644 index 12fae4927..000000000 --- a/packages/ui-default/components/editor/cmeditor.page.js +++ /dev/null @@ -1,28 +0,0 @@ -import { AutoloadPage } from 'vj/misc/Page'; -import delay from 'vj/utils/delay'; -import CmEditor from '.'; - -function runSubstitute($container) { - $container.find('textarea[data-markdown]').get().forEach((element) => { - CmEditor.getOrConstruct($(element)); - }); - $container.find('textarea[data-yaml]').get().forEach((element) => { - CmEditor.getOrConstruct($(element), { language: 'yaml' }); - }); - $container.find('textarea[data-json]').get().forEach((element) => { - CmEditor.getOrConstruct($(element), { language: 'json' }); - }); - $container.find('textarea[data-plain]').get().forEach((element) => { - CmEditor.getOrConstruct($(element), { language: 'plain' }); - }); -} - -const cmEditorPage = new AutoloadPage('cmEditorPage', () => { - runSubstitute($('body')); - $(document).on('vjContentNew', async (e) => { - await delay(0); - runSubstitute($(e.target)); - }); -}); - -export default cmEditorPage; diff --git a/packages/ui-default/components/editor/cmeditor.page.ts b/packages/ui-default/components/editor/cmeditor.page.ts new file mode 100644 index 000000000..8579645ad --- /dev/null +++ b/packages/ui-default/components/editor/cmeditor.page.ts @@ -0,0 +1,21 @@ +import { AutoloadPage } from 'vj/misc/Page'; +import delay from 'vj/utils/delay'; +import CmEditor from '.'; + +function runSubstitute($container: JQuery) { + for (const language of ['markdown', 'yaml', 'json', 'plain']) { + $container.find(`textarea[data-${language}]`).get().forEach((element) => { + CmEditor.getOrConstruct($(element), { language }); + }); + } +} + +const cmEditorPage = new AutoloadPage('cmEditorPage', () => { + runSubstitute($('body')); + $(document).on('vjContentNew', async (e) => { + await delay(0); + runSubstitute($(e.target)); + }); +}); + +export default cmEditorPage; diff --git a/packages/ui-default/components/editor/textareaHandler.js b/packages/ui-default/components/editor/textareaHandler.ts similarity index 100% rename from packages/ui-default/components/editor/textareaHandler.js rename to packages/ui-default/components/editor/textareaHandler.ts diff --git a/packages/ui-default/components/emoji/emoji.page.styl b/packages/ui-default/components/emoji/emoji.page.styl deleted file mode 100644 index 7991fd566..000000000 --- a/packages/ui-default/components/emoji/emoji.page.styl +++ /dev/null @@ -1,6 +0,0 @@ -.emoji - width: 1em - height: 1em - display: inline-block - background-size: contain - vertical-align: baseline diff --git a/packages/ui-default/components/emoji/emojify.page.js b/packages/ui-default/components/emoji/emojify.page.js deleted file mode 100644 index d23af474f..000000000 --- a/packages/ui-default/components/emoji/emojify.page.js +++ /dev/null @@ -1,21 +0,0 @@ -import emojify from 'emojify.js'; - -import { AutoloadPage } from 'vj/misc/Page'; - -function runEmojify($container) { - if ($container.is('[data-emoji-enabled]')) { - emojify.run($container[0]); - return; - } - $container.find('[data-emoji-enabled]').get().forEach((element) => emojify.run(element)); -} - -const emojifyPage = new AutoloadPage('emojifyPage', () => { - emojify.setConfig({ - img_dir: `${UiContext.cdn_prefix}img/emoji`, - }); - runEmojify($('body')); - $(document).on('vjContentNew', (e) => runEmojify($(e.target))); -}); - -export default emojifyPage; diff --git a/packages/ui-default/components/footer/footer.page.js b/packages/ui-default/components/footer/footer.page.ts similarity index 76% rename from packages/ui-default/components/footer/footer.page.js rename to packages/ui-default/components/footer/footer.page.ts index 6dfd28311..13f7c402f 100644 --- a/packages/ui-default/components/footer/footer.page.js +++ b/packages/ui-default/components/footer/footer.page.ts @@ -4,18 +4,12 @@ import { slideUp, slideDown } from 'vj/utils/slide'; import responsiveCutoff from 'vj/breakpoints.json'; const footerPage = new AutoloadPage('footerPage', () => { - if ($('.footer').length === 0) { - return; - } - $('.footer__category.expandable > h1').click(async (ev) => { - if (!isBelow(responsiveCutoff.mobile)) { - return; - } + if (!$('.footer').length) return; + $('.footer__category.expandable > h1').on('click', async (ev) => { + if (!isBelow(responsiveCutoff.mobile)) return; const $category = $(ev.currentTarget).closest('.footer__category'); const $list = $category.find('.footer__category__expander'); - if ($category.hasClass('animating')) { - return; - } + if ($category.hasClass('animating')) return; $category.addClass('animating'); if ($category.hasClass('expanded')) { $category.removeClass('expanded'); diff --git a/packages/ui-default/components/form/form.page.js b/packages/ui-default/components/form/form.page.ts similarity index 80% rename from packages/ui-default/components/form/form.page.js rename to packages/ui-default/components/form/form.page.ts index b1d6625a6..029ae4135 100644 --- a/packages/ui-default/components/form/form.page.js +++ b/packages/ui-default/components/form/form.page.ts @@ -5,11 +5,7 @@ const formPage = new AutoloadPage('formPage', () => { $(document).on('vjFormDisableUpdate', 'input, select, textarea', (ev) => { const $input = $(ev.currentTarget); const $formItem = $input.closest('.form__item'); - if ($input.prop('disabled')) { - $formItem.addClass('is--disabled'); - } else { - $formItem.removeClass('is--disabled'); - } + $formItem[$input.prop('disabled') ? 'addClass' : 'removeClass']('is--disabled'); }); const submitting = {}; diff --git a/packages/ui-default/components/form/textbox.page.js b/packages/ui-default/components/form/textbox.page.ts similarity index 100% rename from packages/ui-default/components/form/textbox.page.js rename to packages/ui-default/components/form/textbox.page.ts diff --git a/packages/ui-default/components/highlighter/highlighter.page.js b/packages/ui-default/components/highlighter/highlighter.page.ts similarity index 77% rename from packages/ui-default/components/highlighter/highlighter.page.js rename to packages/ui-default/components/highlighter/highlighter.page.ts index 8ec96a9ae..a43e92ec9 100644 --- a/packages/ui-default/components/highlighter/highlighter.page.js +++ b/packages/ui-default/components/highlighter/highlighter.page.ts @@ -1,17 +1,11 @@ import { AutoloadPage } from 'vj/misc/Page'; -import load from 'vj/components/wastyle/index'; -import Notification from 'vj/components/notification/index'; import tpl from 'vj/utils/tpl'; import i18n from 'vj/utils/i18n'; const highlighterPage = new AutoloadPage('highlighterPage', () => { - Promise.all([ - import('./prismjs'), - UserContext.formatCode ? load() : [true, null], - ]).then(([{ default: prismjs }, [success, format]]) => { - if (!success) Notification.error(`Astyle load fail: ${format}`); + import('./prismjs').then(({ default: prismjs }) => { function runHighlight($container) { - prismjs.highlightBlocks($container, success ? format : null); + prismjs.highlightBlocks($container); $container.find('pre code').get().forEach((code) => { const $code = $(code); const $root = $code.parent().parent(); diff --git a/packages/ui-default/components/highlighter/prismjs.js b/packages/ui-default/components/highlighter/prismjs.js index b123d689e..dfb136135 100644 --- a/packages/ui-default/components/highlighter/prismjs.js +++ b/packages/ui-default/components/highlighter/prismjs.js @@ -70,7 +70,7 @@ function addInvisibles(grammar) { for (const name in grammar) { if (Object.prototype.hasOwnProperty.call(grammar, name) && !invisibles[name]) { if (name === 'rest') addInvisibles(grammar.rest); - else handlerInvisiblesToken(grammar, name); // eslint-disable-line no-use-before-define + else handlerInvisiblesToken(grammar, name); // eslint-disable-line @typescript-eslint/no-use-before-define } } } @@ -95,19 +95,12 @@ Prism.hooks.add('before-highlight', (env) => { }); const prismjsApiWrap = { - highlightBlocks: ($dom, format) => { + highlightBlocks: ($dom) => { $dom.find('pre code').get().forEach((code) => { const $code = $(code); const $pre = $code.parent(); $pre.addClass('syntax-hl'); const language = ($(code).attr('class') || '').trim(); - const astyle = language.match(/astyle-([a-z]+)/); - if (format && astyle && astyle[1]) { - const [success, result] = format($code.text(), `${UserContext.astyleOptions.trim()} mode=${astyle[1]}`); - code.original = $code.text(); - if (!success) Notification.error('Code format fail'); - else $code.text(result); - } // try to map the language name const m = language.match(/language-([a-z]+)/); if (m && m[1]) { diff --git a/packages/ui-default/jsconfig.json b/packages/ui-default/jsconfig.json index 7c306e165..d7c8c7925 100644 --- a/packages/ui-default/jsconfig.json +++ b/packages/ui-default/jsconfig.json @@ -3,6 +3,7 @@ "./public", ], "compilerOptions": { + "resolveJsonModule": true, "jsx": "react", "allowSyntheticDefaultImports": true, "target": "ES2020", diff --git a/packages/ui-default/locales/en.yaml b/packages/ui-default/locales/en.yaml index 6f51a1bf9..8acb324eb 100644 --- a/packages/ui-default/locales/en.yaml +++ b/packages/ui-default/locales/en.yaml @@ -23,7 +23,6 @@ problem_edit: Problem Edit problem_import: Import Problem problem_main: Problem Set problem_solution: Problem Solution -problem_statistics: Problem Statistics problem_submit: Problem Submit problem_type.default: 'Type: Default' problem_type.fileio: 'Type: FileIO ({0})' diff --git a/packages/ui-default/locales/ko.yaml b/packages/ui-default/locales/ko.yaml index 9dc90b1d4..ffe28e67c 100644 --- a/packages/ui-default/locales/ko.yaml +++ b/packages/ui-default/locales/ko.yaml @@ -524,7 +524,6 @@ problem_edit: 문제 수정 problem_import: 문제 가져오기 problem_main: 문제 problem_solution: 문제 해설 -problem_statistics: 문제 통계 problem_submit: 제출 problem-category-delim: '|' problem-subcategory-delim: 、 diff --git a/packages/ui-default/locales/zh.yaml b/packages/ui-default/locales/zh.yaml index 68c88e344..1a817753b 100644 --- a/packages/ui-default/locales/zh.yaml +++ b/packages/ui-default/locales/zh.yaml @@ -566,7 +566,6 @@ problem_edit: 编辑题目 problem_import: 导入题目 problem_main: 题库 problem_solution: 题解 -problem_statistics: 题目统计 problem_submit: 递交代码 problem_type.default: 传统题 problem_type.fileio: '文件IO ({0})' diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index c1a1f1aef..7046a09c6 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.22.17", + "version": "4.23.0", "author": "undefined ", "license": "AGPL-3.0", "main": "hydro.js", @@ -11,9 +11,9 @@ }, "devDependencies": { "@blockly/block-extension-tooltip": "^1.0.19", - "@blueprintjs/core": "^3.50.4", + "@blueprintjs/core": "^3.51.0", "@blueprintjs/icons": "^3.30.2", - "@blueprintjs/select": "^3.18.6", + "@blueprintjs/select": "^3.18.7", "@hydrooj/utils": "workspace:*", "@types/jquery": "^3.5.6", "@types/json-schema": "^7.0.9", @@ -31,10 +31,9 @@ "css-loader": "^4.3.0", "diff-dom": "^4.2.2", "echarts": "^5.2.1", - "emojify.js": "^1.1.0", "emojis-keywords": "2.0.0", "emojis-list": "2.1.0", - "esbuild-loader": "^2.15.1", + "esbuild-loader": "^2.16.0", "eslint": "^7.32.0", "eslint-config-airbnb": "^18.2.1", "eslint-import-resolver-webpack": "^0.13.1", @@ -59,9 +58,9 @@ "jquery.transit": "^0.9.12", "mini-css-extract-plugin": "^1.6.2", "moment": "^2.29.1", - "monaco-editor": "^0.27.0", - "monaco-editor-webpack-plugin": "^4.1.2", - "nanoid": "^3.1.28", + "monaco-editor": "^0.29.0", + "monaco-editor-webpack-plugin": "^4.2.0", + "nanoid": "^3.1.29", "normalize.css": "^8.0.1", "nprogress": "^0.2.0", "pickadate": "^3.6.4", @@ -101,7 +100,7 @@ "webpackbar": "^5.0.0-3" }, "dependencies": { - "esbuild": "^0.12.29", + "esbuild": "^0.13.4", "js-yaml": "^4.1.0", "jsesc": "^3.0.2", "katex": "^0.13.18", @@ -113,9 +112,9 @@ "markdown-it-mark": "^3.0.1", "markdown-it-merge-cells": "^1.0.1", "markdown-it-table-of-contents": "^0.5.2", - "mongodb": "^3.7.1", + "mongodb": "^3.7.2", "nunjucks": "^3.2.3", "streamsaver": "^2.0.5", - "xss": "^1.0.9" + "xss": "^1.0.10" } } diff --git a/packages/ui-default/templates/problem_statistics.html b/packages/ui-default/templates/problem_statistics.html deleted file mode 100644 index ce67d0ddf..000000000 --- a/packages/ui-default/templates/problem_statistics.html +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "layout/basic.html" %} -{% block content %} -
-
-
-
-

{{ _('Submission Statistics') }}

-
-
- {{ _('Swx Template') }} -
-
-
-
- {% set owner_udoc = udoc %} - {% include "partials/problem_sidebar.html" %} - {% endwith %} -
-
-{% endblock %} diff --git a/packages/utils/package.json b/packages/utils/package.json index 4a4442090..4961f5a75 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -11,8 +11,8 @@ "fs-extra": "^10.0.0", "js-yaml": "^4.1.0", "moment": "^2.29.1", - "mongodb": "^3.7.1", - "systeminformation": "^5.9.4" + "mongodb": "^3.7.2", + "systeminformation": "^5.9.7" }, "devDependencies": { "@types/fs-extra": "^9.0.13",