diff options
Diffstat (limited to 'public/js')
-rw-r--r-- | public/js/common.js | 2 | ||||
-rw-r--r-- | public/js/extra.js | 62 | ||||
-rw-r--r-- | public/js/index.js | 24 | ||||
-rw-r--r-- | public/js/slide.js | 16 |
4 files changed, 73 insertions, 31 deletions
diff --git a/public/js/common.js b/public/js/common.js index b8ff3758..f5bfc8ec 100644 --- a/public/js/common.js +++ b/public/js/common.js @@ -12,7 +12,7 @@ window.serverurl = window.location.protocol + '//' + (domain ? domain : window.l var noteid = urlpath ? window.location.pathname.slice(urlpath.length + 1, window.location.pathname.length).split('/')[1] : window.location.pathname.split('/')[1]; var noteurl = serverurl + '/' + noteid; -var version = '0.4.5'; +var version = '0.5.0'; var checkAuth = false; var profile = null; diff --git a/public/js/extra.js b/public/js/extra.js index a4eed879..4a9cc76e 100644 --- a/public/js/extra.js +++ b/public/js/extra.js @@ -11,6 +11,7 @@ var PDFObject = require('pdfobject'); var S = require('string'); var saveAs = require('file-saver').saveAs; require('../vendor/md-toc'); +var Viz = require("viz.js"); //auto update last change window.createtime = null; @@ -308,6 +309,7 @@ function finishView(view) { svg[0].setAttribute('preserveAspectRatio', 'xMidYMid meet'); } catch (err) { $value.unwrap(); + $value.parent().append('<div class="alert alert-warning">' + err + '</div>'); console.warn(err); } }); @@ -331,25 +333,36 @@ function finishView(view) { $value.children().unwrap().unwrap(); } catch (err) { $value.unwrap(); + $value.parent().append('<div class="alert alert-warning">' + err + '</div>'); console.warn(err); } }); //graphviz - var Viz = require("viz.js"); var graphvizs = view.find("div.graphviz.raw").removeClass("raw"); - graphvizs.each(function (key, value) { - try { - var $value = $(value); - var $ele = $(value).parent().parent(); + function parseGraphviz(key, value) { + var $value = $(value); + var $ele = $(value).parent().parent(); - var graphviz = Viz($value.text()); - $value.html(graphviz); + var graphviz = Viz($value.text()); + if (!graphviz) throw Error('viz.js output empty graph'); + $value.html(graphviz); - $ele.addClass('graphviz'); - $value.children().unwrap().unwrap(); + $ele.addClass('graphviz'); + $value.children().unwrap().unwrap(); + } + graphvizs.each(function (key, value) { + try { + parseGraphviz(key, value); } catch (err) { - $value.unwrap(); - console.warn(err); + // workaround for graphviz not recover from error + try { + parseGraphviz(key, value); + } catch (err) { + var $value = $(value); + $value.unwrap(); + $value.parent().append('<div class="alert alert-warning">' + err + '</div>'); + console.warn(err); + } } }); //mermaid @@ -369,11 +382,11 @@ function finishView(view) { $ele.html($value.text()); mermaid.init(undefined, $ele); } else { - $value.unwrap(); - console.warn(mermaidError); + throw new Error(mermaidError); } } catch (err) { $value.unwrap(); + $value.parent().append('<div class="alert alert-warning">' + err + '</div>'); console.warn(err); } }); @@ -532,6 +545,16 @@ function postProcess(code) { }); } } + // show yaml meta paring error + if (md.metaError) { + var warning = result.find('div#meta-error'); + if (warning && warning.length > 0) { + warning.text(md.metaError) + } else { + warning = $('<div id="meta-error" class="alert alert-warning">' + md.metaError + '</div>') + result.prepend(warning); + } + } return result; } window.postProcess = postProcess; @@ -903,7 +926,14 @@ md.use(require('markdown-it-mark')); md.use(require('markdown-it-ins')); md.use(require('markdown-it-sub')); md.use(require('markdown-it-sup')); -md.use(require('../vendor/markdown-it-mathjax')); +md.use(require('markdown-it-mathjax')({ + beforeMath: '<span class="mathjax raw">', + afterMath: '</span>', + beforeInlineMath: '<span class="mathjax raw">\\(', + afterInlineMath: '\\)</span>', + beforeDisplayMath: '<span class="mathjax raw">\\[', + afterDisplayMath: '\\]</span>' +})); md.use(require('markdown-it-imsize')); md.use(require('markdown-it-emoji'), { @@ -980,7 +1010,7 @@ md.renderer.rules.fence = function (tokens, idx, options, env, self) { }; /* Defined regex markdown it plugins */ -require('script!../vendor/markdown-it-regexp'); +var Plugin = require('markdown-it-regexp'); //youtube var youtubePlugin = new Plugin( @@ -1104,7 +1134,9 @@ function meta(state, start, end, silent) { try { md.meta = jsyaml.safeLoad(data.join('\n')) || {}; + delete md.metaError; } catch(err) { + md.metaError = err; console.warn(err); return false; } diff --git a/public/js/index.js b/public/js/index.js index 96580fe3..56766657 100644 --- a/public/js/index.js +++ b/public/js/index.js @@ -11,7 +11,6 @@ require('highlight.js/styles/github-gist.css'); var toMarkdown = require('to-markdown'); var saveAs = require('file-saver').saveAs; -var url = require('js-url'); var randomColor = require('randomcolor'); var _ = require("lodash"); @@ -1224,7 +1223,11 @@ function checkSyncToggle() { } } -function checkEditorScrollbar() { +var checkEditorScrollbar = _.debounce(function () { + editor.operation(checkEditorScrollbarInner); +}, 50); + +function checkEditorScrollbarInner() { // workaround simple scroll bar knob // will get wrong position when editor height changed var scrollInfo = editor.getScrollInfo(); @@ -2444,7 +2447,7 @@ function updateInfo(data) { updateAuthorship(); } } -var updateAuthorship = _.throttle(function () { +var updateAuthorship = _.debounce(function () { editor.operation(updateAuthorshipInner); }, 50); function initMark() { @@ -2646,8 +2649,6 @@ editor.on('update', function () { }); }); socket.on('check', function (data) { - data = LZString.decompressFromUTF16(data); - data = JSON.parse(data); //console.log(data); updateInfo(data); }); @@ -2657,8 +2658,6 @@ socket.on('permission', function (data) { var docmaxlength = null; var permission = null; socket.on('refresh', function (data) { - data = LZString.decompressFromUTF16(data); - data = JSON.parse(data); //console.log(data); docmaxlength = data.docmaxlength; editor.setOption("maxLength", docmaxlength); @@ -2705,8 +2704,6 @@ var CodeMirrorAdapter = ot.CodeMirrorAdapter; var cmClient = null; socket.on('doc', function (obj) { - obj = LZString.decompressFromUTF16(obj); - obj = JSON.parse(obj); var body = obj.str; var bodyMismatch = editor.getValue() !== body; var havePendingOperation = cmClient && Object.keys(cmClient.state).length > 0; @@ -2767,8 +2764,6 @@ socket.on('operation', function () { }); socket.on('online users', function (data) { - data = LZString.decompressFromUTF16(data); - data = JSON.parse(data); if (debug) console.debug(data); onlineUsers = data.users; @@ -3216,6 +3211,12 @@ function buildCursor(user) { } //editor actions +function removeNullByte(cm, change) { + var str = change.text.join("\n"); + if (/\u0000/g.test(str) && change.update) { + change.update(change.from, change.to, str.replace(/\u0000/g, "").split("\n")); + } +} function enforceMaxLength(cm, change) { var maxLength = cm.getOption("maxLength"); if (maxLength && change.update) { @@ -3237,6 +3238,7 @@ var ignoreEmitEvents = ['setValue', 'ignoreHistory']; editor.on('beforeChange', function (cm, change) { if (debug) console.debug(change); + removeNullByte(cm, change); if (enforceMaxLength(cm, change)) { $('.limit-modal').modal('show'); } diff --git a/public/js/slide.js b/public/js/slide.js index 4962470e..1ff388a5 100644 --- a/public/js/slide.js +++ b/public/js/slide.js @@ -107,13 +107,21 @@ window.viewAjaxCallback = function () { }; function renderSlide(event) { - var markdown = $(event.currentSlide); - if (!markdown.attr('data-rendered')) { + if (window.location.search.match( /print-pdf/gi )) { + var slides = $('.slides'); var title = document.title; - finishView(markdown); - markdown.attr('data-rendered', 'true'); + finishView(slides); document.title = title; Reveal.layout(); + } else { + var markdown = $(event.currentSlide); + if (!markdown.attr('data-rendered')) { + var title = document.title; + finishView(markdown); + markdown.attr('data-rendered', 'true'); + document.title = title; + Reveal.layout(); + } } } |