summaryrefslogtreecommitdiff
path: root/public/js/syncscroll.js
diff options
context:
space:
mode:
authorYukai Huang2016-10-08 20:02:30 +0800
committerYukai Huang2016-10-08 20:02:30 +0800
commit963a435ae1e9248b42b4665acf106dcffa549678 (patch)
tree99446e874b353d4f373df33e14582187aaa44578 /public/js/syncscroll.js
parent0be342c44d5b6287c67922758f076e7897f6c3a8 (diff)
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.
Diffstat (limited to 'public/js/syncscroll.js')
-rw-r--r--public/js/syncscroll.js39
1 files changed, 25 insertions, 14 deletions
diff --git a/public/js/syncscroll.js b/public/js/syncscroll.js
index 96663f77..444cdebd 100644
--- a/public/js/syncscroll.js
+++ b/public/js/syncscroll.js
@@ -1,5 +1,8 @@
// Inject line numbers for sync scroll.
+var extra = require('./extra');
+var md = extra.md;
+
function addPart(tokens, idx) {
if (tokens[idx].map && tokens[idx].level === 0) {
var startline = tokens[idx].map[0] + 1;
@@ -71,7 +74,7 @@ md.renderer.rules.fence = function (tokens, idx, options, env, self) {
if (highlighted.indexOf('<pre') === 0) {
return highlighted + '\n';
}
-
+
if (tokens[idx].map && tokens[idx].level === 0) {
var startline = tokens[idx].map[0] + 1;
var endline = tokens[idx].map[1];
@@ -99,10 +102,12 @@ function renderContainer(tokens, idx, options, env, self) {
addPart(tokens, idx);
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 });
+
+var markdownitContainer = require('markdown-it-container');
+md.use(markdownitContainer, 'success', { render: renderContainer });
+md.use(markdownitContainer, 'info', { render: renderContainer });
+md.use(markdownitContainer, 'warning', { render: renderContainer });
+md.use(markdownitContainer, 'danger', { render: renderContainer });
var syncscroll = true;
@@ -240,7 +245,7 @@ function syncScrollToEdit(event, preventAnimate) {
return;
}
if (editScrolling) return;
-
+
var scrollTop = viewArea[0].scrollTop;
var lineIndex = 0;
for (var i = 0, l = scrollMap.length; i < l; i++) {
@@ -260,7 +265,7 @@ function syncScrollToEdit(event, preventAnimate) {
lineDiff = lineHeightMap[i + 1] - lineNo;
}
}
-
+
var posTo = 0;
var topDiffPercent = 0;
var posToNextDiff = 0;
@@ -269,7 +274,7 @@ function syncScrollToEdit(event, preventAnimate) {
var preLastLineHeight = scrollInfo.height - scrollInfo.clientHeight - textHeight;
var preLastLineNo = Math.round(preLastLineHeight / textHeight);
var preLastLinePos = scrollMap[preLastLineNo];
-
+
if (scrollInfo.height > scrollInfo.clientHeight && scrollTop >= preLastLinePos) {
posTo = preLastLineHeight;
topDiffPercent = (scrollTop - preLastLinePos) / (viewBottom - preLastLinePos);
@@ -281,7 +286,7 @@ function syncScrollToEdit(event, preventAnimate) {
posToNextDiff = textHeight * lineDiff * topDiffPercent;
posTo += Math.ceil(posToNextDiff);
}
-
+
if (preventAnimate) {
editArea.scrollTop(posTo);
} else {
@@ -292,7 +297,7 @@ function syncScrollToEdit(event, preventAnimate) {
scrollTop: posTo
}, duration, "linear");
}
-
+
viewScrolling = true;
clearTimeout(viewScrollingTimer);
viewScrollingTimer = setTimeout(viewScrollingTimeoutInner, duration * 1.5);
@@ -322,7 +327,7 @@ function syncScrollToView(event, preventAnimate) {
return;
}
if (viewScrolling) return;
-
+
var lineNo, posTo;
var topDiffPercent, posToNextDiff;
var scrollInfo = editor.getScrollInfo();
@@ -341,7 +346,7 @@ function syncScrollToView(event, preventAnimate) {
posToNextDiff = (scrollMap[lineNo + 1] - posTo) * topDiffPercent;
posTo += Math.floor(posToNextDiff);
}
-
+
if (preventAnimate) {
viewArea.scrollTop(posTo);
} else {
@@ -352,7 +357,7 @@ function syncScrollToView(event, preventAnimate) {
scrollTop: posTo
}, duration, "linear");
}
-
+
editScrolling = true;
clearTimeout(editScrollingTimer);
editScrollingTimer = setTimeout(editScrollingTimeoutInner, duration * 1.5);
@@ -360,4 +365,10 @@ function syncScrollToView(event, preventAnimate) {
function editScrollingTimeoutInner() {
editScrolling = false;
-} \ No newline at end of file
+}
+
+module.exports = {
+ setupSyncAreas: setupSyncAreas,
+ clearMap: clearMap,
+ syncScrollToEdit: syncScrollToEdit
+};