Skip to content

Commit 844e639

Browse files
committed
Added web workers to improve performance.
1 parent f7a4964 commit 844e639

File tree

4 files changed

+22
-9
lines changed

4 files changed

+22
-9
lines changed

README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,6 @@ Enter your markdown on the left and see the live preview of the rendered output
5959

6060
* Improve mobile styling
6161

62-
* Improve performance for long documents
63-
6462
* Add more export options
6563

6664
* Fix exported PDF tables

index.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
<meta name="twitter:image" content="screenshot.png">
2323
<link rel="stylesheet" href="dependencies/github-markdown.css">
2424
<link rel="stylesheet" href="style.css">
25-
2625
<link rel="stylesheet" href="dependencies/highlight-default.css">
2726
<link rel="stylesheet" href="dependencies/atelier-cave.css">
2827
</head>

previewWorker.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
importScripts('dependencies/showdown.js');
2+
3+
self.addEventListener('message', function(event) {
4+
// Instantiate a converter
5+
var converter = new showdown.Converter({
6+
tables: true,
7+
strikethrough: true,
8+
emoji: true
9+
});
10+
11+
// Convert Markdown to HTML
12+
var html = converter.makeHtml(event.data);
13+
14+
// Post the resulting HTML back to the main thread
15+
self.postMessage(html);
16+
});

script.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@ var converter = new showdown.Converter({
66
var editor = document.getElementById('editor');
77
var preview = document.getElementById('preview');
88

9+
var previewWorker = new Worker('previewWorker.js');
910
function updatePreview() {
11+
previewWorker.postMessage(editor.value);
12+
}
13+
previewWorker.addEventListener('message', function(event) {
1014
var scrollTop = preview.scrollTop;
11-
preview.innerHTML = converter.makeHtml(editor.value);
15+
preview.innerHTML = event.data;
1216
preview.scrollTop = scrollTop;
13-
14-
var markdownText = editor.value;
15-
var html = converter.makeHtml(markdownText);
16-
preview.innerHTML = html;
1717
preview.querySelectorAll('pre code').forEach((block) => {
1818
hljs.highlightBlock(block);
1919
});
20-
}
20+
});
2121

2222
// Debounce function to limit the frequency of autosave invocations
2323
function debounce(func, wait) {

0 commit comments

Comments
 (0)