ui: remove emojify.js

This commit is contained in:
undefined committed 2021-10-10 16:27:23 +08:00
1 parent 84c38cb571
commit 5f527658f8
27 files changed
+57 -138

No files matched your search

+1 -1
View File
@@ -11,7 +11,7 @@
"adm-zip": "0.5.5", "adm-zip": "0.5.5",
"decode-html": "^2.0.0", "decode-html": "^2.0.0",
"fs-extra": "^10.0.0", "fs-extra": "^10.0.0",
"mongodb": "^3.7.1", "mongodb": "^3.7.2",
"xml2js": "^0.4.23" "xml2js": "^0.4.23"
}, },
"devDependencies": { "devDependencies": {
+3 -3
View File
@@ -8,12 +8,12 @@
"dependencies": { "dependencies": {
"@hydrooj/utils": "workspace:*", "@hydrooj/utils": "workspace:*",
"axios": "^0.21.4", "axios": "^0.21.4",
"cac": "^6.7.3", "cac": "^6.7.8",
"esbuild": "^0.12.29", "esbuild": "^0.13.4",
"fs-extra": "^10.0.0", "fs-extra": "^10.0.0",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"mongodb": "^3.7.1", "mongodb": "^3.7.2",
"p-queue": "^7.1.0", "p-queue": "^7.1.0",
"shell-quote": "^1.7.2", "shell-quote": "^1.7.2",
"ws": "^8.2.3" "ws": "^8.2.3"
+6 -6
View File
@@ -15,13 +15,13 @@
"@hydrooj/utils": "workspace:*", "@hydrooj/utils": "workspace:*",
"adm-zip": "0.5.5", "adm-zip": "0.5.5",
"ansi_up": "^5.0.1", "ansi_up": "^5.0.1",
"cac": "^6.7.3", "cac": "^6.7.8",
"cookies": "^0.8.0", "cookies": "^0.8.0",
"detect-browser": "^5.2.1", "detect-browser": "^5.2.1",
"esbuild": "^0.12.29", "esbuild": "^0.13.4",
"fs-extra": "^10.0.0", "fs-extra": "^10.0.0",
"graphql": "^15.6.0", "graphql": "^15.6.1",
"graphql-scalars": "^1.10.1", "graphql-scalars": "^1.11.1",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
"koa": "^2.13.3", "koa": "^2.13.3",
"koa-body": "^4.2.0", "koa-body": "^4.2.0",
@@ -34,8 +34,8 @@
"mime-types": "^2.1.33", "mime-types": "^2.1.33",
"minio": "7.0.19", "minio": "7.0.19",
"moment-timezone": "^0.5.33", "moment-timezone": "^0.5.33",
"mongodb": "^3.7.1", "mongodb": "^3.7.2",
"nanoid": "^3.1.28", "nanoid": "^3.1.29",
"nodemailer": "^6.6.5", "nodemailer": "^6.6.5",
"p-queue": "^7.1.0", "p-queue": "^7.1.0",
"reflect-metadata": "^0.1.13", "reflect-metadata": "^0.1.13",
+1 -1
View File
@@ -10,6 +10,6 @@
"@types/mongodb": "^3.6.20" "@types/mongodb": "^3.6.20"
}, },
"dependencies": { "dependencies": {
"mongodb": "^3.7.1" "mongodb": "^3.7.2"
} }
} }
+1
View File
@@ -45,6 +45,7 @@ module.exports = {
UserContext: true, UserContext: true,
LOCALES: true, LOCALES: true,
window: true, window: true,
JQuery: true,
}, },
rules: { rules: {
'@typescript-eslint/dot-notation': 'off', '@typescript-eslint/dot-notation': 'off',
@@ -211,7 +211,6 @@ export default function (env = {}) {
new CopyWebpackPlugin({ new CopyWebpackPlugin({
patterns: [ patterns: [
{ from: root('static') }, { 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/' }, { from: root(`${dirname(require.resolve('vditor/package.json'))}`), to: 'vditor/' },
], ],
}), }),
@@ -1,7 +1,7 @@
import { AutoloadPage } from 'vj/misc/Page'; import { AutoloadPage } from 'vj/misc/Page';
const datepickerPage = new AutoloadPage('datepickerPage', async () => { const datepickerPage = new AutoloadPage('datepickerPage', async () => {
if ($('[data-pick-date]').length > 0) { if ($('[data-pick-date]').length) {
await import('pickadate/lib/picker.date'); await import('pickadate/lib/picker.date');
$('[data-pick-date]').pickadate({ $('[data-pick-date]').pickadate({
format: 'yyyy-m-d', format: 'yyyy-m-d',
@@ -9,7 +9,7 @@ const datepickerPage = new AutoloadPage('datepickerPage', async () => {
clear: false, clear: false,
}); });
} }
if ($('[data-pick-time]').length > 0) { if ($('[data-pick-time]').length) {
await import('pickadate/lib/picker.time'); await import('pickadate/lib/picker.time');
$('[data-pick-time]').pickatime({ $('[data-pick-time]').pickatime({
format: 'H:i', format: 'H:i',
@@ -1,6 +1,5 @@
import _ from 'lodash'; import _ from 'lodash';
import DOMAttachedObject from 'vj/components/DOMAttachedObject'; import DOMAttachedObject from 'vj/components/DOMAttachedObject';
import zIndexManager from 'vj/utils/zIndexManager'; import zIndexManager from 'vj/utils/zIndexManager';
export default class DomDialog extends DOMAttachedObject { export default class DomDialog extends DOMAttachedObject {
@@ -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;
@@ -0,0 +1,21 @@
import { AutoloadPage } from 'vj/misc/Page';
import delay from 'vj/utils/delay';
import CmEditor from '.';
function runSubstitute($container: JQuery<Document | HTMLElement>) {
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;
@@ -1,6 +0,0 @@
.emoji
width: 1em
height: 1em
display: inline-block
background-size: contain
vertical-align: baseline
@@ -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;
@@ -4,18 +4,12 @@ import { slideUp, slideDown } from 'vj/utils/slide';
import responsiveCutoff from 'vj/breakpoints.json'; import responsiveCutoff from 'vj/breakpoints.json';
const footerPage = new AutoloadPage('footerPage', () => { const footerPage = new AutoloadPage('footerPage', () => {
if ($('.footer').length === 0) { if (!$('.footer').length) return;
return; $('.footer__category.expandable > h1').on('click', async (ev) => {
} if (!isBelow(responsiveCutoff.mobile)) return;
$('.footer__category.expandable > h1').click(async (ev) => {
if (!isBelow(responsiveCutoff.mobile)) {
return;
}
const $category = $(ev.currentTarget).closest('.footer__category'); const $category = $(ev.currentTarget).closest('.footer__category');
const $list = $category.find('.footer__category__expander'); const $list = $category.find('.footer__category__expander');
if ($category.hasClass('animating')) { if ($category.hasClass('animating')) return;
return;
}
$category.addClass('animating'); $category.addClass('animating');
if ($category.hasClass('expanded')) { if ($category.hasClass('expanded')) {
$category.removeClass('expanded'); $category.removeClass('expanded');
@@ -5,11 +5,7 @@ const formPage = new AutoloadPage('formPage', () => {
$(document).on('vjFormDisableUpdate', 'input, select, textarea', (ev) => { $(document).on('vjFormDisableUpdate', 'input, select, textarea', (ev) => {
const $input = $(ev.currentTarget); const $input = $(ev.currentTarget);
const $formItem = $input.closest('.form__item'); const $formItem = $input.closest('.form__item');
if ($input.prop('disabled')) { $formItem[$input.prop('disabled') ? 'addClass' : 'removeClass']('is--disabled');
$formItem.addClass('is--disabled');
} else {
$formItem.removeClass('is--disabled');
}
}); });
const submitting = {}; const submitting = {};
@@ -1,17 +1,11 @@
import { AutoloadPage } from 'vj/misc/Page'; 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 tpl from 'vj/utils/tpl';
import i18n from 'vj/utils/i18n'; import i18n from 'vj/utils/i18n';
const highlighterPage = new AutoloadPage('highlighterPage', () => { const highlighterPage = new AutoloadPage('highlighterPage', () => {
Promise.all([ import('./prismjs').then(({ default: prismjs }) => {
import('./prismjs'),
UserContext.formatCode ? load() : [true, null],
]).then(([{ default: prismjs }, [success, format]]) => {
if (!success) Notification.error(`Astyle load fail: ${format}`);
function runHighlight($container) { function runHighlight($container) {
prismjs.highlightBlocks($container, success ? format : null); prismjs.highlightBlocks($container);
$container.find('pre code').get().forEach((code) => { $container.find('pre code').get().forEach((code) => {
const $code = $(code); const $code = $(code);
const $root = $code.parent().parent(); const $root = $code.parent().parent();
@@ -70,7 +70,7 @@ function addInvisibles(grammar) {
for (const name in grammar) { for (const name in grammar) {
if (Object.prototype.hasOwnProperty.call(grammar, name) && !invisibles[name]) { if (Object.prototype.hasOwnProperty.call(grammar, name) && !invisibles[name]) {
if (name === 'rest') addInvisibles(grammar.rest); 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 = { const prismjsApiWrap = {
highlightBlocks: ($dom, format) => { highlightBlocks: ($dom) => {
$dom.find('pre code').get().forEach((code) => { $dom.find('pre code').get().forEach((code) => {
const $code = $(code); const $code = $(code);
const $pre = $code.parent(); const $pre = $code.parent();
$pre.addClass('syntax-hl'); $pre.addClass('syntax-hl');
const language = ($(code).attr('class') || '').trim(); 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 // try to map the language name
const m = language.match(/language-([a-z]+)/); const m = language.match(/language-([a-z]+)/);
if (m && m[1]) { if (m && m[1]) {
+1
View File
@@ -3,6 +3,7 @@
"./public", "./public",
], ],
"compilerOptions": { "compilerOptions": {
"resolveJsonModule": true,
"jsx": "react", "jsx": "react",
"allowSyntheticDefaultImports": true, "allowSyntheticDefaultImports": true,
"target": "ES2020", "target": "ES2020",
-1
View File
@@ -23,7 +23,6 @@ problem_edit: Problem Edit
problem_import: Import Problem problem_import: Import Problem
problem_main: Problem Set problem_main: Problem Set
problem_solution: Problem Solution problem_solution: Problem Solution
problem_statistics: Problem Statistics
problem_submit: Problem Submit problem_submit: Problem Submit
problem_type.default: 'Type: Default' problem_type.default: 'Type: Default'
problem_type.fileio: 'Type: FileIO ({0})' problem_type.fileio: 'Type: FileIO ({0})'
-1
View File
@@ -524,7 +524,6 @@ problem_edit: 문제 수정
problem_import: 문제 가져오기 problem_import: 문제 가져오기
problem_main: 문제 problem_main: 문제
problem_solution: 문제 해설 problem_solution: 문제 해설
problem_statistics: 문제 통계
problem_submit: 제출 problem_submit: 제출
problem-category-delim: '|' problem-category-delim: '|'
problem-subcategory-delim: 、 problem-subcategory-delim: 、
-1
View File
@@ -566,7 +566,6 @@ problem_edit: 编辑题目
problem_import: 导入题目 problem_import: 导入题目
problem_main: 题库 problem_main: 题库
problem_solution: 题解 problem_solution: 题解
problem_statistics: 题目统计
problem_submit: 递交代码 problem_submit: 递交代码
problem_type.default: 传统题 problem_type.default: 传统题
problem_type.fileio: '文件IO ({0})' problem_type.fileio: '文件IO ({0})'
+10 -11
View File
@@ -1,6 +1,6 @@
{ {
"name": "@hydrooj/ui-default", "name": "@hydrooj/ui-default",
"version": "4.22.17", "version": "4.23.0",
"author": "undefined <i@undefined.moe>", "author": "undefined <i@undefined.moe>",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "hydro.js", "main": "hydro.js",
@@ -11,9 +11,9 @@
}, },
"devDependencies": { "devDependencies": {
"@blockly/block-extension-tooltip": "^1.0.19", "@blockly/block-extension-tooltip": "^1.0.19",
"@blueprintjs/core": "^3.50.4", "@blueprintjs/core": "^3.51.0",
"@blueprintjs/icons": "^3.30.2", "@blueprintjs/icons": "^3.30.2",
"@blueprintjs/select": "^3.18.6", "@blueprintjs/select": "^3.18.7",
"@hydrooj/utils": "workspace:*", "@hydrooj/utils": "workspace:*",
"@types/jquery": "^3.5.6", "@types/jquery": "^3.5.6",
"@types/json-schema": "^7.0.9", "@types/json-schema": "^7.0.9",
@@ -31,10 +31,9 @@
"css-loader": "^4.3.0", "css-loader": "^4.3.0",
"diff-dom": "^4.2.2", "diff-dom": "^4.2.2",
"echarts": "^5.2.1", "echarts": "^5.2.1",
"emojify.js": "^1.1.0",
"emojis-keywords": "2.0.0", "emojis-keywords": "2.0.0",
"emojis-list": "2.1.0", "emojis-list": "2.1.0",
"esbuild-loader": "^2.15.1", "esbuild-loader": "^2.16.0",
"eslint": "^7.32.0", "eslint": "^7.32.0",
"eslint-config-airbnb": "^18.2.1", "eslint-config-airbnb": "^18.2.1",
"eslint-import-resolver-webpack": "^0.13.1", "eslint-import-resolver-webpack": "^0.13.1",
@@ -59,9 +58,9 @@
"jquery.transit": "^0.9.12", "jquery.transit": "^0.9.12",
"mini-css-extract-plugin": "^1.6.2", "mini-css-extract-plugin": "^1.6.2",
"moment": "^2.29.1", "moment": "^2.29.1",
"monaco-editor": "^0.27.0", "monaco-editor": "^0.29.0",
"monaco-editor-webpack-plugin": "^4.1.2", "monaco-editor-webpack-plugin": "^4.2.0",
"nanoid": "^3.1.28", "nanoid": "^3.1.29",
"normalize.css": "^8.0.1", "normalize.css": "^8.0.1",
"nprogress": "^0.2.0", "nprogress": "^0.2.0",
"pickadate": "^3.6.4", "pickadate": "^3.6.4",
@@ -101,7 +100,7 @@
"webpackbar": "^5.0.0-3" "webpackbar": "^5.0.0-3"
}, },
"dependencies": { "dependencies": {
"esbuild": "^0.12.29", "esbuild": "^0.13.4",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
"jsesc": "^3.0.2", "jsesc": "^3.0.2",
"katex": "^0.13.18", "katex": "^0.13.18",
@@ -113,9 +112,9 @@
"markdown-it-mark": "^3.0.1", "markdown-it-mark": "^3.0.1",
"markdown-it-merge-cells": "^1.0.1", "markdown-it-merge-cells": "^1.0.1",
"markdown-it-table-of-contents": "^0.5.2", "markdown-it-table-of-contents": "^0.5.2",
"mongodb": "^3.7.1", "mongodb": "^3.7.2",
"nunjucks": "^3.2.3", "nunjucks": "^3.2.3",
"streamsaver": "^2.0.5", "streamsaver": "^2.0.5",
"xss": "^1.0.9" "xss": "^1.0.10"
} }
} }
@@ -1,20 +0,0 @@
{% extends "layout/basic.html" %}
{% block content %}
<div class="row">
<div class="medium-9 columns">
<div class="section">
<div class="section__header">
<h1 class="section__title">{{ _('Submission Statistics') }}</h1>
</div>
<div class="section__body">
{{ _('Swx Template') }}
</div>
</div>
</div>
<div class="medium-3 columns">
{% set owner_udoc = udoc %}
{% include "partials/problem_sidebar.html" %}
{% endwith %}
</div>
</div>
{% endblock %}
+2 -2
View File
@@ -11,8 +11,8 @@
"fs-extra": "^10.0.0", "fs-extra": "^10.0.0",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
"moment": "^2.29.1", "moment": "^2.29.1",
"mongodb": "^3.7.1", "mongodb": "^3.7.2",
"systeminformation": "^5.9.4" "systeminformation": "^5.9.7"
}, },
"devDependencies": { "devDependencies": {
"@types/fs-extra": "^9.0.13", "@types/fs-extra": "^9.0.13",