From 963a435ae1e9248b42b4665acf106dcffa549678 Mon Sep 17 00:00:00 2001 From: Yukai Huang Date: Sat, 8 Oct 2016 20:02:30 +0800 Subject: Resolve dependency module requiring * es5 style module exports * remove script tag require * webpack config ProvidePlugin Note that this commit only fix JavaScript module loading runtime error. --- public/js/extra.js | 77 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 53 insertions(+), 24 deletions(-) (limited to 'public/js/extra.js') diff --git a/public/js/extra.js b/public/js/extra.js index 77f298f9..c6a0f432 100644 --- a/public/js/extra.js +++ b/public/js/extra.js @@ -224,7 +224,7 @@ function finishView(view) { }); //emojify try { - emojify.run(view[0]); + emojify.run(view[0]); } catch (err) { console.warn(err); } @@ -245,12 +245,12 @@ function finishView(view) { try { var $value = $(value); var $ele = $(value).parent().parent(); - + var sequence = $value; sequence.sequenceDiagram({ theme: 'simple' }); - + $ele.addClass('sequence-diagram'); $value.children().unwrap().unwrap(); var svg = $ele.find('> svg'); @@ -266,7 +266,7 @@ function finishView(view) { try { var $value = $(value); var $ele = $(value).parent().parent(); - + var chart = flowchart.parse($value.text()); $value.html(''); chart.drawSVG(value, { @@ -275,7 +275,7 @@ function finishView(view) { 'font-size': '16px', 'font-family': "'Andale Mono', monospace" }); - + $ele.addClass('flow-chart'); $value.children().unwrap().unwrap(); } catch (err) { @@ -288,10 +288,10 @@ function finishView(view) { try { var $value = $(value); var $ele = $(value).parent().parent(); - + var graphviz = Viz($value.text()); $value.html(graphviz); - + $ele.addClass('graphviz'); $value.children().unwrap().unwrap(); } catch (err) { @@ -304,12 +304,12 @@ function finishView(view) { try { var $value = $(value); var $ele = $(value).parent().parent(); - + var mermaidError = null; mermaid.parseError = function (err, hash) { mermaidError = err; }; - + if (mermaidAPI.parse($value.text())) { $ele.addClass('mermaid'); $ele.html($value.text()); @@ -489,6 +489,8 @@ function exportToRawHTML(view) { saveAs(blob, filename); } +var common = require('./common.js'); +var serverurl = common.serverurl; //extract markdown body to html and compile to template function exportToHTML(view) { var title = renderTitle(ui.area.markdown); @@ -794,7 +796,10 @@ emojify.setConfig({ ignore_emoticons: true }); -var md = window.markdownit('default', { +var markdownit = require('markdown-it'); +var markdownitContainer = require('markdown-it-container'); + +var md = markdownit('default', { html: true, breaks: true, langPrefix: "", @@ -802,25 +807,27 @@ var md = window.markdownit('default', { typographer: true, highlight: highlightRender }); -md.use(window.markdownitAbbr); -md.use(window.markdownitFootnote); -md.use(window.markdownitDeflist); -md.use(window.markdownitMark); -md.use(window.markdownitIns); -md.use(window.markdownitSub); -md.use(window.markdownitSup); -md.use(window.markdownitMathjax); -md.use(window.markdownitImsize); + +md.use(require('markdown-it-abbr')); +md.use(require('markdown-it-footnote')); +md.use(require('markdown-it-deflist')); +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('markdown-it-mathjax')); +md.use(require('markdown-it-imsize')); + function renderContainer(tokens, idx, options, env, self) { tokens[idx].attrJoin('role', 'alert'); tokens[idx].attrJoin('class', 'alert'); tokens[idx].attrJoin('class', 'alert-' + tokens[idx].info.trim()); return self.renderToken.apply(self, arguments); } -md.use(window.markdownitContainer, 'success', { render: renderContainer }); -md.use(window.markdownitContainer, 'info', { render: renderContainer }); -md.use(window.markdownitContainer, 'warning', { render: renderContainer }); -md.use(window.markdownitContainer, 'danger', { render: renderContainer }); +md.use(markdownitContainer, 'success', { render: renderContainer }); +md.use(markdownitContainer, 'info', { render: renderContainer }); +md.use(markdownitContainer, 'warning', { render: renderContainer }); +md.use(markdownitContainer, 'danger', { render: renderContainer }); md.renderer.rules.image = function (tokens, idx, options, env, self) { tokens[idx].attrJoin('class', 'raw'); @@ -865,6 +872,9 @@ md.renderer.rules.fence = function (tokens, idx, options, env, self) { + '\n'; }; +/* Defined regex markdown it plugins */ +var Plugin = require('markdown-it-regexp'); + //youtube var youtubePlugin = new Plugin( // regexp to match @@ -1011,4 +1021,23 @@ md.use(gistPlugin); md.use(tocPlugin); md.use(slidesharePlugin); md.use(speakerdeckPlugin); -md.use(pdfPlugin); \ No newline at end of file +md.use(pdfPlugin); + +module.exports = { + md: md, + createtime: createtime, + lastchangetime: lastchangetime, + updateLastChange: updateLastChange, + lastchangeui: lastchangeui, + lastchangeuser: lastchangeuser, + postProcess: postProcess, + finishView: finishView, + autoLinkify: autoLinkify, + deduplicatedHeaderId: deduplicatedHeaderId, + renderTOC: renderTOC, + renderTitle: renderTitle, + renderFilename: renderFilename, + generateToc: generateToc, + smoothHashScroll: smoothHashScroll, + scrollToHash: scrollToHash +}; -- cgit v1.2.3 From 196d546f7e8273b3fdc1bd60c3bf627b2fa1462b Mon Sep 17 00:00:00 2001 From: Yukai Huang Date: Sun, 9 Oct 2016 10:51:39 +0800 Subject: Fix pdfobject require --- public/js/extra.js | 3 +++ 1 file changed, 3 insertions(+) (limited to 'public/js/extra.js') diff --git a/public/js/extra.js b/public/js/extra.js index c6a0f432..f449bed1 100644 --- a/public/js/extra.js +++ b/public/js/extra.js @@ -1,3 +1,6 @@ +var hljs = require('highlight.js'); +var PDFObject = require('pdfobject'); + //auto update last change var createtime = null; var lastchangetime = null; -- cgit v1.2.3 From 28858288fbc386350022bc4830775d21af217c11 Mon Sep 17 00:00:00 2001 From: Yukai Huang Date: Sun, 9 Oct 2016 17:55:07 +0800 Subject: Fix more js errors --- public/js/extra.js | 1 + 1 file changed, 1 insertion(+) (limited to 'public/js/extra.js') diff --git a/public/js/extra.js b/public/js/extra.js index f449bed1..d4a6c5cd 100644 --- a/public/js/extra.js +++ b/public/js/extra.js @@ -1,5 +1,6 @@ var hljs = require('highlight.js'); var PDFObject = require('pdfobject'); +var S = require('string'); //auto update last change var createtime = null; -- cgit v1.2.3 From e10203b7e9bb407fceee1f176dc8ff36b59a4acd Mon Sep 17 00:00:00 2001 From: Yukai Huang Date: Mon, 10 Oct 2016 08:24:58 +0800 Subject: More function expose workaround for reveal-markdown.js --- public/js/extra.js | 2 ++ 1 file changed, 2 insertions(+) (limited to 'public/js/extra.js') diff --git a/public/js/extra.js b/public/js/extra.js index d4a6c5cd..4ec7e80f 100644 --- a/public/js/extra.js +++ b/public/js/extra.js @@ -442,6 +442,7 @@ function postProcess(code) { } return result; } +window.postProcess = postProcess; function generateCleanHTML(view) { var src = view.clone(); @@ -811,6 +812,7 @@ var md = markdownit('default', { typographer: true, highlight: highlightRender }); +window.md = md; md.use(require('markdown-it-abbr')); md.use(require('markdown-it-footnote')); -- cgit v1.2.3 From 06437ccaa995afc48e30154c136c4e485ac04ae7 Mon Sep 17 00:00:00 2001 From: Yukai Huang Date: Tue, 11 Oct 2016 14:52:45 +0800 Subject: Manage more packages with npm and webpack --- public/js/extra.js | 1 + 1 file changed, 1 insertion(+) (limited to 'public/js/extra.js') diff --git a/public/js/extra.js b/public/js/extra.js index 4ec7e80f..329aa153 100644 --- a/public/js/extra.js +++ b/public/js/extra.js @@ -1,6 +1,7 @@ var hljs = require('highlight.js'); var PDFObject = require('pdfobject'); var S = require('string'); +var saveAs = require('file-saver').saveAs; //auto update last change var createtime = null; -- cgit v1.2.3 From 56c5378939c6498d0440b3ed76a604523678073f Mon Sep 17 00:00:00 2001 From: Yukai Huang Date: Tue, 11 Oct 2016 17:15:06 +0800 Subject: Optimize viz.js async rendering through webpack chunk --- public/js/extra.js | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) (limited to 'public/js/extra.js') diff --git a/public/js/extra.js b/public/js/extra.js index 329aa153..e133a810 100644 --- a/public/js/extra.js +++ b/public/js/extra.js @@ -288,21 +288,25 @@ function finishView(view) { } }); //graphviz - var graphvizs = view.find(".graphviz.raw").removeClass("raw"); - graphvizs.each(function (key, value) { - try { - var $value = $(value); - var $ele = $(value).parent().parent(); - - var graphviz = Viz($value.text()); - $value.html(graphviz); + require.ensure(["viz.js"], function(require) { + var Viz = require("viz.js"); + var graphvizs = view.find(".graphviz.raw").removeClass("raw"); + graphvizs.each(function (key, value) { + try { + var $value = $(value); + var $ele = $(value).parent().parent(); + + var graphviz = Viz($value.text()); + $value.html(graphviz); + + $ele.addClass('graphviz'); + $value.children().unwrap().unwrap(); + } catch (err) { + console.warn(err); + } + }); - $ele.addClass('graphviz'); - $value.children().unwrap().unwrap(); - } catch (err) { - console.warn(err); - } - }); + }) //mermaid var mermaids = view.find(".mermaid.raw").removeClass("raw"); mermaids.each(function (key, value) { -- cgit v1.2.3 From 4a6903c91b3b8502585d6e17137ef076c489ebcf Mon Sep 17 00:00:00 2001 From: Yukai Huang Date: Tue, 11 Oct 2016 17:53:46 +0800 Subject: Revert customized markdown-it-mathjax plugin --- public/js/extra.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'public/js/extra.js') diff --git a/public/js/extra.js b/public/js/extra.js index e133a810..4c4e66d6 100644 --- a/public/js/extra.js +++ b/public/js/extra.js @@ -826,7 +826,7 @@ 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('markdown-it-mathjax')); +md.use(require('../vendor/markdown-it-mathjax')); md.use(require('markdown-it-imsize')); function renderContainer(tokens, idx, options, env, self) { -- cgit v1.2.3 From 4a6a69e7bc8f6e2897394f3a1285ff7626bceb16 Mon Sep 17 00:00:00 2001 From: Yukai Huang Date: Tue, 11 Oct 2016 20:17:44 +0800 Subject: Fix module export --- public/js/extra.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'public/js/extra.js') diff --git a/public/js/extra.js b/public/js/extra.js index 25f0b3b1..9ce8525a 100644 --- a/public/js/extra.js +++ b/public/js/extra.js @@ -1086,5 +1086,7 @@ module.exports = { generateToc: generateToc, smoothHashScroll: smoothHashScroll, scrollToHash: scrollToHash, - owner: owner + owner: owner, + updateLastChangeUser: updateLastChangeUser, + updateOwner: updateOwner }; -- cgit v1.2.3 From b73fcfc5c94d6265306ec13d2694998744bcea4b Mon Sep 17 00:00:00 2001 From: Yukai Huang Date: Wed, 12 Oct 2016 14:37:05 +0800 Subject: Revert 56c5378 viz.js still has problem with split chunk --- public/js/extra.js | 3 --- 1 file changed, 3 deletions(-) (limited to 'public/js/extra.js') diff --git a/public/js/extra.js b/public/js/extra.js index 9ce8525a..bf44e6d0 100644 --- a/public/js/extra.js +++ b/public/js/extra.js @@ -306,8 +306,6 @@ function finishView(view) { } }); //graphviz - require.ensure(["viz.js"], function(require) { - var Viz = require("viz.js"); var graphvizs = view.find(".graphviz.raw").removeClass("raw"); graphvizs.each(function (key, value) { try { @@ -324,7 +322,6 @@ function finishView(view) { } }); - }) //mermaid var mermaids = view.find(".mermaid.raw").removeClass("raw"); mermaids.each(function (key, value) { -- cgit v1.2.3 From 895bf98b03483ba1441584c48b580eca3e44576b Mon Sep 17 00:00:00 2001 From: Yukai Huang Date: Wed, 12 Oct 2016 14:37:32 +0800 Subject: Load custom markdown-it-regex plugin with script-loader --- public/js/extra.js | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'public/js/extra.js') diff --git a/public/js/extra.js b/public/js/extra.js index bf44e6d0..af43c2b2 100644 --- a/public/js/extra.js +++ b/public/js/extra.js @@ -306,21 +306,21 @@ function finishView(view) { } }); //graphviz - var graphvizs = view.find(".graphviz.raw").removeClass("raw"); - graphvizs.each(function (key, value) { - try { - var $value = $(value); - var $ele = $(value).parent().parent(); - - var graphviz = Viz($value.text()); - $value.html(graphviz); - - $ele.addClass('graphviz'); - $value.children().unwrap().unwrap(); - } catch (err) { - console.warn(err); - } - }); + var graphvizs = view.find(".graphviz.raw").removeClass("raw"); + graphvizs.each(function (key, value) { + try { + var $value = $(value); + var $ele = $(value).parent().parent(); + + var graphviz = Viz($value.text()); + $value.html(graphviz); + + $ele.addClass('graphviz'); + $value.children().unwrap().unwrap(); + } catch (err) { + console.warn(err); + } + }); //mermaid var mermaids = view.find(".mermaid.raw").removeClass("raw"); @@ -916,7 +916,7 @@ md.renderer.rules.fence = function (tokens, idx, options, env, self) { }; /* Defined regex markdown it plugins */ -var Plugin = require('markdown-it-regexp'); +require('script!../vendor/markdown-it-regexp'); //youtube var youtubePlugin = new Plugin( -- cgit v1.2.3 From b90c26fe908c126a03b286ed952b719a4624731b Mon Sep 17 00:00:00 2001 From: Yukai Huang Date: Thu, 13 Oct 2016 08:56:02 +0800 Subject: Config CDN for viz.js --- public/js/extra.js | 1 + 1 file changed, 1 insertion(+) (limited to 'public/js/extra.js') diff --git a/public/js/extra.js b/public/js/extra.js index af43c2b2..1dd86760 100644 --- a/public/js/extra.js +++ b/public/js/extra.js @@ -306,6 +306,7 @@ function finishView(view) { } }); //graphviz + var Viz = require("viz.js"); var graphvizs = view.find(".graphviz.raw").removeClass("raw"); graphvizs.each(function (key, value) { try { -- cgit v1.2.3 From 43c9f68b9a67fa7f5b3e5a7f0dc6d5f8c9114d20 Mon Sep 17 00:00:00 2001 From: Yukai Huang Date: Thu, 13 Oct 2016 08:56:56 +0800 Subject: Refactor webpack module --- public/js/extra.js | 97 +++++++++++++++++++++++++++--------------------------- 1 file changed, 49 insertions(+), 48 deletions(-) (limited to 'public/js/extra.js') diff --git a/public/js/extra.js b/public/js/extra.js index 1dd86760..24d53fe7 100644 --- a/public/js/extra.js +++ b/public/js/extra.js @@ -2,6 +2,7 @@ var hljs = require('highlight.js'); var PDFObject = require('pdfobject'); var S = require('string'); var saveAs = require('file-saver').saveAs; +require('../vendor/md-toc'); //auto update last change var createtime = null; @@ -262,49 +263,49 @@ function finishView(view) { MathJax.Hub.Queue(viewAjaxCallback); } } catch (err) {} - //sequence diagram - var sequences = view.find(".sequence-diagram.raw").removeClass("raw"); - sequences.each(function (key, value) { - try { - var $value = $(value); - var $ele = $(value).parent().parent(); - - var sequence = $value; - sequence.sequenceDiagram({ - theme: 'simple' - }); - - $ele.addClass('sequence-diagram'); - $value.children().unwrap().unwrap(); - var svg = $ele.find('> svg'); - svg[0].setAttribute('viewBox', '0 0 ' + svg.attr('width') + ' ' + svg.attr('height')); - svg[0].setAttribute('preserveAspectRatio', 'xMidYMid meet'); - } catch (err) { - console.warn(err); - } - }); - //flowchart - var flow = view.find(".flow-chart.raw").removeClass("raw"); - flow.each(function (key, value) { - try { - var $value = $(value); - var $ele = $(value).parent().parent(); + //sequence diagram + var sequences = view.find(".sequence-diagram.raw").removeClass("raw"); + sequences.each(function (key, value) { + try { + var $value = $(value); + var $ele = $(value).parent().parent(); + + var sequence = $value; + sequence.sequenceDiagram({ + theme: 'simple' + }); - var chart = flowchart.parse($value.text()); - $value.html(''); - chart.drawSVG(value, { - 'line-width': 2, - 'fill': 'none', - 'font-size': '16px', - 'font-family': "'Andale Mono', monospace" - }); + $ele.addClass('sequence-diagram'); + $value.children().unwrap().unwrap(); + var svg = $ele.find('> svg'); + svg[0].setAttribute('viewBox', '0 0 ' + svg.attr('width') + ' ' + svg.attr('height')); + svg[0].setAttribute('preserveAspectRatio', 'xMidYMid meet'); + } catch (err) { + console.warn(err); + } + }); + //flowchart + var flow = view.find(".flow-chart.raw").removeClass("raw"); + flow.each(function (key, value) { + try { + var $value = $(value); + var $ele = $(value).parent().parent(); + + var chart = flowchart.parse($value.text()); + $value.html(''); + chart.drawSVG(value, { + 'line-width': 2, + 'fill': 'none', + 'font-size': '16px', + 'font-family': "'Andale Mono', monospace" + }); - $ele.addClass('flow-chart'); - $value.children().unwrap().unwrap(); - } catch (err) { - console.warn(err); - } - }); + $ele.addClass('flow-chart'); + $value.children().unwrap().unwrap(); + } catch (err) { + console.warn(err); + } + }); //graphviz var Viz = require("viz.js"); var graphvizs = view.find(".graphviz.raw").removeClass("raw"); @@ -434,14 +435,14 @@ function finishView(view) { }); //pdf view.find(".pdf.raw").removeClass("raw") - .each(function (key, value) { - var url = $(value).attr('data-pdfurl'); - var inner = $('
'); - $(this).append(inner); - PDFObject.embed(url, inner, { - height: '400px' + .each(function (key, value) { + var url = $(value).attr('data-pdfurl'); + var inner = $('
'); + $(this).append(inner); + PDFObject.embed(url, inner, { + height: '400px' + }); }); - }); //syntax highlighting view.find("pre.raw").removeClass("raw") .each(function (key, value) { -- cgit v1.2.3