This commit is contained in:
杜恒 2021-05-29 15:13:39 +08:00
parent 588c74aa88
commit 70eaaedacd
9 changed files with 35 additions and 36 deletions

View File

@ -172,7 +172,7 @@ class Editor
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer@1.10.1/dist/APlayer.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer@1.10.1/dist/APlayer.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-tomorrow.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.23.0/themes/prism-tomorrow.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="<?php Helper::options()->themeUrl('typecho/write/css/joe.write.min.css') ?>"> <link rel="stylesheet" href="<?php Helper::options()->themeUrl('typecho/write/css/joe.write.min.css?v=20210529') ?>">
<script> <script>
window.JoeConfig = { window.JoeConfig = {
uploadAPI: '<?php Helper::security()->index('/action/upload'); ?>', uploadAPI: '<?php Helper::security()->index('/action/upload'); ?>',
@ -185,11 +185,10 @@ class Editor
canPreview: false canPreview: false
} }
</script> </script>
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/aplayer@1.10.1/dist/APlayer.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/aplayer@1.10.1/dist/APlayer.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/typecho-joe-next@6.2.4/plugin/prism/prism.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/typecho-joe-next@6.2.4/plugin/prism/prism.min.js"></script>
<script src="<?php Helper::options()->themeUrl('typecho/write/js/joe.parse.min.js') ?>"></script> <script src="<?php Helper::options()->themeUrl('typecho/write/js/joe.parse.min.js') ?>"></script>
<script src="<?php Helper::options()->themeUrl('typecho/write/js/joe.write.chunk.js?v=20210524') ?>"></script> <script src="<?php Helper::options()->themeUrl('typecho/write/js/joe.write.chunk.js?v=20210529') ?>"></script>
<script src="<?php Helper::options()->themeUrl('assets/js/joe.short.min.js') ?>"></script> <script src="<?php Helper::options()->themeUrl('assets/js/joe.short.min.js') ?>"></script>
<?php <?php
} }

View File

@ -2,7 +2,7 @@
/* 获取主题当前版本号 */ /* 获取主题当前版本号 */
function _getVersion() function _getVersion()
{ {
return "7.1.5"; return "7.1.6";
}; };
/* 判断是否是手机 */ /* 判断是否是手机 */

View File

@ -1,6 +1,6 @@
{ {
"name": "typecho-joe-next", "name": "typecho-joe-next",
"version": "7.1.5", "version": "7.1.6",
"description": "A Theme Of Typecho", "description": "A Theme Of Typecho",
"main": "index.php", "main": "index.php",
"keywords": [ "keywords": [

File diff suppressed because one or more lines are too long

View File

@ -161,6 +161,10 @@ body.fullscreen {
border: 1px solid rgba(255, 255, 255, 0.25); border: 1px solid rgba(255, 255, 255, 0.25);
margin: -1px; margin: -1px;
} }
.cm-activeLine {
background-color: #292929;
border-radius: 2px;
}
.cmt-strong { .cmt-strong {
color: #61afef; color: #61afef;
font-weight: 500; font-weight: 500;

View File

@ -1,19 +1,6 @@
const parser = new HyperDown(); const parser = new HyperDown();
const player = window.JoeConfig.playerAPI; const player = window.JoeConfig.playerAPI;
function throttle(fn, wait) {
var pre = Date.now();
return function () {
var context = this;
var args = arguments;
var now = Date.now();
if (now - pre >= wait) {
fn.apply(context, args);
pre = Date.now();
}
};
}
export default function createPreviewHtml(str) { export default function createPreviewHtml(str) {
if (!window.JoeConfig.canPreview) return $('.cm-preview-content').html('1. 预览已默认关闭<br>2. 点击上方预览按钮启用预览<br>3. 若编辑器卡顿可尝试关闭预览'); if (!window.JoeConfig.canPreview) return $('.cm-preview-content').html('1. 预览已默认关闭<br>2. 点击上方预览按钮启用预览<br>3. 若编辑器卡顿可尝试关闭预览');

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
import { EditorView, keymap } from '@codemirror/view'; import { EditorView, keymap, highlightActiveLine } from '@codemirror/view';
import { EditorState } from '@codemirror/state'; import { EditorState } from '@codemirror/state';
import { bracketMatching } from '@codemirror/matchbrackets'; import { bracketMatching } from '@codemirror/matchbrackets';
import { closeBrackets, closeBracketsKeymap } from '@codemirror/closebrackets'; import { closeBrackets, closeBracketsKeymap } from '@codemirror/closebrackets';
@ -13,7 +13,7 @@ import createPreviewHtml from './_create';
class Joe extends JoeAction { class Joe extends JoeAction {
constructor() { constructor() {
super(); super();
this.plugins = [history(), classHighlightStyle, bracketMatching(), closeBrackets()]; this.plugins = [classHighlightStyle, history(), bracketMatching(), closeBrackets(), highlightActiveLine()];
this._isPasting = false; this._isPasting = false;
this.init_ViewPort(); this.init_ViewPort();
this.init_Editor(); this.init_Editor();
@ -372,25 +372,34 @@ class Joe extends JoeAction {
init_AutoSave() { init_AutoSave() {
if (window.JoeConfig.autoSave !== 1) return; if (window.JoeConfig.autoSave !== 1) return;
const formEl = $('#text')[0].form; const formEl = $('#text')[0].form;
let cid = $('input[name="cid"]').val(); let cid = $(formEl).find('input[name="cid"]').val();
let temp = null; /* 临时记录 */
let _TempTimer = null;
let _TempTitle = $(formEl).find('input[name="title"]').val();
let _TempText = $(formEl).find('textarea[name="text"]').val();
const saveFn = () => { const saveFn = () => {
$('input[name="cid"]').val(cid); $(formEl).find('input[name="cid"]').val(cid);
$('#text').val(this.cm.state.doc.toString()); $(formEl).find('textarea[name="text"]').val(this.cm.state.doc.toString());
let data = $(formEl).serialize(); /* 创建新记录 */
if (data !== temp) { let _NewTempTitle = $(formEl).find('input[name="title"]').val();
let _NewTempText = $(formEl).find('textarea[name="text"]').val();
/* 若标题为空,则直接忽略 */
if (_NewTempTitle.trim() === '') return;
/* 若标题或内容发生改变,触发保存草稿 */
if (_TempTitle !== _NewTempTitle || _TempText !== _NewTempText) {
_TempTitle = _NewTempTitle;
_TempText = _NewTempText;
$('.cm-autosave').addClass('active'); $('.cm-autosave').addClass('active');
$.ajax({ $.ajax({
url: formEl.action, url: formEl.action,
type: 'POST', type: 'POST',
data: data + '&do=save', data: $(formEl).serialize() + '&do=save',
dataType: 'json', dataType: 'json',
success: res => { success: res => {
cid = res.cid; cid = res.cid;
temp = data; _TempTimer = setTimeout(() => {
let timer = setTimeout(() => {
$('.cm-autosave').removeClass('active'); $('.cm-autosave').removeClass('active');
clearTimeout(timer); clearTimeout(_TempTimer);
}, 1000); }, 1000);
} }
}); });

View File

@ -10,7 +10,7 @@
"@codemirror/lang-markdown": "^0.18.3", "@codemirror/lang-markdown": "^0.18.3",
"@codemirror/matchbrackets": "^0.18.0", "@codemirror/matchbrackets": "^0.18.0",
"@codemirror/state": "^0.18.7", "@codemirror/state": "^0.18.7",
"@codemirror/view": "^0.18.13", "@codemirror/view": "^0.18.14",
"@rollup/plugin-node-resolve": "^13.0.0", "@rollup/plugin-node-resolve": "^13.0.0",
"rollup-plugin-uglify": "^6.0.4" "rollup-plugin-uglify": "^6.0.4"
} }