Skip to content

Commit 6f7de25

Browse files
committed
Make details element syncscrollable
Signed-off-by: Yukai Huang <yukaihuangtw@gmail.com>
1 parent 8d889a6 commit 6f7de25

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

public/js/extra.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -539,6 +539,12 @@ export function finishView (view) {
539539
} catch (err) {
540540
console.warn(err)
541541
}
542+
543+
// register details toggle for scrollmap recalulation
544+
view.find('details.raw').removeClass('raw').each(function (key, val) {
545+
$(val).on('toggle', window.viewAjaxCallback)
546+
})
547+
542548
// render title
543549
document.title = renderTitle(view)
544550
}

public/js/lib/syncscroll.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,11 @@ md.use(markdownitContainer, 'spoiler', {
118118
var m = tokens[idx].info.trim().match(/^spoiler\s+(.*)$/)
119119

120120
if (tokens[idx].nesting === 1) {
121+
const startline = tokens[idx].map[0] + 1
122+
const endline = tokens[idx].map[1]
123+
121124
// opening tag
122-
return '<details><summary>' + md.utils.escapeHtml(m[1]) + '</summary>\n'
125+
return `<details class="part raw" data-startline="${startline}" data-endline="${endline}"><summary>` + md.utils.escapeHtml(m[1]) + '</summary>\n'
123126
} else {
124127
// closing tag
125128
return '</details>\n'

0 commit comments

Comments
 (0)