Add more preview options in code (HTML)

pull/1/head
yflory 4 years ago
parent b0f4978d1f
commit 5824b0f58b

@ -134,6 +134,16 @@ define([
framework._.toolbar.$drawer.append(helpMenu.button); framework._.toolbar.$drawer.append(helpMenu.button);
}; };
var previews = {};
previews['gfm'] = function (val, $div, common) {
DiffMd.apply(DiffMd.render(val), $div, common);
};
previews['markdown'] = previews['gfm'];
previews['htmlmixed'] = function (val, $div, common) {
DiffMd.apply(val, $div, common);
};
var mkPreviewPane = function (editor, CodeMirror, framework, isPresentMode) { var mkPreviewPane = function (editor, CodeMirror, framework, isPresentMode) {
var $previewContainer = $('#cp-app-code-preview'); var $previewContainer = $('#cp-app-code-preview');
var $preview = $('#cp-app-code-preview-content'); var $preview = $('#cp-app-code-preview-content');
@ -149,17 +159,19 @@ define([
var $previewButton = framework._.sfCommon.createButton('preview', true); var $previewButton = framework._.sfCommon.createButton('preview', true);
var forceDrawPreview = function () { var forceDrawPreview = function () {
var f = previews[CodeMirror.highlightMode];
if (!f) { return; }
try { try {
if (editor.getValue() === '') { if (editor.getValue() === '') {
$previewContainer.addClass('cp-app-code-preview-isempty'); $previewContainer.addClass('cp-app-code-preview-isempty');
return; return;
} }
$previewContainer.removeClass('cp-app-code-preview-isempty'); $previewContainer.removeClass('cp-app-code-preview-isempty');
DiffMd.apply(DiffMd.render(editor.getValue()), $preview, framework._.sfCommon); f(editor.getValue(), $preview, framework._.sfCommon);
} catch (e) { console.error(e); } } catch (e) { console.error(e); }
}; };
var drawPreview = Util.throttle(function () { var drawPreview = Util.throttle(function () {
if (['markdown', 'gfm'].indexOf(CodeMirror.highlightMode) === -1) { return; } if (!previews[CodeMirror.highlightMode]) { return; }
if (!$previewButton.is('.cp-toolbar-button-active')) { return; } if (!$previewButton.is('.cp-toolbar-button-active')) { return; }
forceDrawPreview(); forceDrawPreview();
}, 400); }, 400);
@ -171,7 +183,7 @@ define([
previewTo = setTimeout(function () { previewTo = setTimeout(function () {
$codeMirror.removeClass('transition'); $codeMirror.removeClass('transition');
}, 500); }, 500);
if (['markdown', 'gfm'].indexOf(CodeMirror.highlightMode) === -1) { if (!previews[CodeMirror.highlightMode]) {
$previewContainer.show(); $previewContainer.show();
} }
$previewContainer.toggle(); $previewContainer.toggle();
@ -213,7 +225,7 @@ define([
}); });
var modeChange = function (mode) { var modeChange = function (mode) {
if (['markdown', 'gfm'].indexOf(mode) !== -1) { if (previews[mode]) {
$previewButton.show(); $previewButton.show();
framework._.sfCommon.getPadAttribute('previewMode', function (e, data) { framework._.sfCommon.getPadAttribute('previewMode', function (e, data) {
if (e) { return void console.error(e); } if (e) { return void console.error(e); }
@ -273,7 +285,7 @@ define([
// keep trying to draw until you're confident it has been drawn // keep trying to draw until you're confident it has been drawn
previewInt = setInterval(function () { previewInt = setInterval(function () {
// give up if it's not a valid preview mode // give up if it's not a valid preview mode
if (['markdown', 'gfm'].indexOf(CodeMirror.highlightMode) === -1) { return void clear(); } if (!previews[CodeMirror.highlightMode]) { return void clear(); }
// give up if content has been drawn // give up if content has been drawn
if ($preview.text()) { return void clear(); } if ($preview.text()) { return void clear(); }
// only draw if there is actually content to display // only draw if there is actually content to display

Loading…
Cancel
Save