diff options
author | Maximilian Hils <git@maximilianhils.com> | 2016-03-10 21:17:24 +0100 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2016-03-10 21:17:24 +0100 |
commit | 448d28e2cbe5020f97bccc80e9a7e1e5a3df9990 (patch) | |
tree | 8eae7351b1ef8d4f2eea4b34628e5d54908767bc /web/src/js/components/helpers/AutoScroll.js | |
parent | 167bd7768346a75910ca0d3828d02a16887de090 (diff) | |
parent | 4a6edd92e661fa228f6f8607f045ef5489f58a05 (diff) | |
download | mitmproxy-448d28e2cbe5020f97bccc80e9a7e1e5a3df9990.tar.gz mitmproxy-448d28e2cbe5020f97bccc80e9a7e1e5a3df9990.tar.bz2 mitmproxy-448d28e2cbe5020f97bccc80e9a7e1e5a3df9990.zip |
Merge branch 'master' of https://github.com/mitmproxy/mitmproxy
Diffstat (limited to 'web/src/js/components/helpers/AutoScroll.js')
-rw-r--r-- | web/src/js/components/helpers/AutoScroll.js | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/web/src/js/components/helpers/AutoScroll.js b/web/src/js/components/helpers/AutoScroll.js new file mode 100644 index 00000000..d37b9f37 --- /dev/null +++ b/web/src/js/components/helpers/AutoScroll.js @@ -0,0 +1,25 @@ +import React from "react"; +import ReactDOM from "react-dom"; + +const symShouldStick = Symbol("shouldStick"); +const isAtBottom = v => v.scrollTop + v.clientHeight === v.scrollHeight; + +export default Component => Object.assign(class AutoScrollWrapper extends Component { + + static displayName = Component.name; + + componentWillUpdate() { + const viewport = ReactDOM.findDOMNode(this); + this[symShouldStick] = viewport.scrollTop && isAtBottom(viewport); + super.componentWillUpdate && super.componentWillUpdate(); + } + + componentDidUpdate() { + const viewport = ReactDOM.findDOMNode(this); + if (this[symShouldStick] && !isAtBottom(viewport)) { + viewport.scrollTop = viewport.scrollHeight; + } + super.componentDidUpdate && super.componentDidUpdate(); + } + +}, Component); |