mirror of
https://github.com/overleaf/overleaf.git
synced 2024-10-31 21:21:03 -04:00
35 lines
743 B
CoffeeScript
35 lines
743 B
CoffeeScript
|
define [
|
||
|
"base"
|
||
|
], (App) ->
|
||
|
|
||
|
fakeNgModel = (initValue) ->
|
||
|
$setViewValue: (value) ->
|
||
|
@$viewValue = value
|
||
|
return
|
||
|
|
||
|
$viewValue: initValue
|
||
|
|
||
|
App.directive "scrollGlue", ->
|
||
|
return {
|
||
|
|
||
|
priority: 1
|
||
|
require: ["?ngModel"]
|
||
|
restrict: "A"
|
||
|
|
||
|
link: (scope, $el, attrs, ctrls) ->
|
||
|
scrollToBottom = ->
|
||
|
el.scrollTop = el.scrollHeight
|
||
|
|
||
|
shouldActivateAutoScroll = ->
|
||
|
el.scrollTop + el.clientHeight + 1 >= el.scrollHeight
|
||
|
|
||
|
el = $el[0]
|
||
|
ngModel = ctrls[0] or fakeNgModel(true)
|
||
|
scope.$watch ->
|
||
|
scrollToBottom() if ngModel.$viewValue
|
||
|
|
||
|
$el.bind "scroll", ->
|
||
|
activate = shouldActivateAutoScroll()
|
||
|
scope.$apply ngModel.$setViewValue.bind(ngModel, activate) if activate isnt ngModel.$viewValue
|
||
|
}
|