1
0
mirror of https://github.com/BoostIo/Boostnote synced 2025-12-13 09:46:22 +00:00

auto scroll

This commit is contained in:
Dick Choi
2016-07-19 08:59:47 +09:00
parent 9a5653f1e3
commit 890207daee
2 changed files with 21 additions and 1 deletions

View File

@@ -48,10 +48,12 @@ class MarkdownEditor extends React.Component {
handleBlur (e) { handleBlur (e) {
let { config } = this.props let { config } = this.props
if (config.editor.switchPreview === 'BLUR') { if (config.editor.switchPreview === 'BLUR') {
let cursorPosition = this.refs.code.getCursorPosition()
this.setState({ this.setState({
status: 'PREVIEW' status: 'PREVIEW'
}, () => { }, () => {
this.refs.preview.focus() this.refs.preview.focus()
this.refs.preview.scrollTo(cursorPosition.row)
}) })
} }
} }
@@ -62,7 +64,7 @@ class MarkdownEditor extends React.Component {
handlePreviewMouseUp (e) { handlePreviewMouseUp (e) {
let { config } = this.props let { config } = this.props
if (config.editor.switchPreview === 'BLUR' && new Date() - this.previewMouseDownedAt < 150) { if (config.editor.switchPreview === 'BLUR' && new Date() - this.previewMouseDownedAt < 200) {
this.setState({ this.setState({
status: 'CODE' status: 'CODE'
}, () => { }, () => {

View File

@@ -120,6 +120,24 @@ export default class MarkdownPreview extends React.Component {
this.refs.root.focus() this.refs.root.focus()
} }
getWindow () {
return this.refs.root.contentWindow
}
scrollTo (targetRow) {
let lineAnchors = this.getWindow().document.querySelectorAll('a.lineAnchor')
for (let index = 0; index < lineAnchors.length; index++) {
let lineAnchor = lineAnchors[index]
let row = parseInt(lineAnchor.getAttribute('data-key'))
if (row > targetRow) {
let targetAnchor = lineAnchors[index - 1]
this.getWindow().scrollTo(0, targetAnchor.offsetTop)
break
}
}
}
render () { render () {
let { className, style, tabIndex } = this.props let { className, style, tabIndex } = this.props
return ( return (