mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-06-10 06:39:01 +02:00
Refactor Ace directive to have a single events bridge.
This commit is contained in:
@@ -40,8 +40,7 @@ div.full-size(
|
||||
on-ctrl-enter="recompileViaKey",
|
||||
syntax-validation="settings.syntaxValidation",
|
||||
review-panel="reviewPanel",
|
||||
on-scroll="scrollBindings.onAceScroll",
|
||||
scroll-events="scrollBindings.reviewPanelEvents",
|
||||
events-bridge="reviewPanelEventsBridge"
|
||||
track-changes-enabled="trackChangesFeatureFlag",
|
||||
track-new-changes= "reviewPanel.trackNewChanges",
|
||||
changes-tracker="reviewPanel.changesTracker",
|
||||
|
||||
@@ -53,8 +53,7 @@ define [
|
||||
onCtrlEnter: "="
|
||||
syntaxValidation: "="
|
||||
reviewPanel: "="
|
||||
onScroll: "="
|
||||
scrollEvents: "="
|
||||
eventsBridge: "="
|
||||
trackNewChanges: "="
|
||||
trackChangesEnabled: "="
|
||||
changesTracker: "="
|
||||
@@ -236,12 +235,16 @@ define [
|
||||
scope.$emit "#{scope.name}:change"
|
||||
|
||||
onScroll = (scrollTop) ->
|
||||
return if !scope.onScroll?
|
||||
return if !scope.eventsBridge?
|
||||
height = editor.renderer.layerConfig.maxHeight
|
||||
scope.onScroll(scrollTop, height)
|
||||
scope.eventsBridge.emit "aceScroll", scrollTop, height
|
||||
|
||||
onScrollbarVisibilityChanged = (event, vRenderer) ->
|
||||
return if !scope.eventsBridge?
|
||||
scope.eventsBridge.emit "aceScrollbarVisibilityChanged", vRenderer.scrollBarV.isVisible, vRenderer.scrollBarV.width
|
||||
|
||||
if scope.scrollEvents?
|
||||
scope.scrollEvents.on "scroll", (position) ->
|
||||
if scope.eventsBridge?
|
||||
scope.eventsBridge.on "externalScroll", (position) ->
|
||||
editor.getSession().setScrollTop(position)
|
||||
|
||||
attachToAce = (sharejs_doc) ->
|
||||
@@ -296,6 +299,8 @@ define [
|
||||
session.setAnnotations scope.annotations
|
||||
|
||||
session.on "changeScrollTop", onScroll
|
||||
editor.renderer.on "scrollbarVisibilityChanged", onScrollbarVisibilityChanged
|
||||
|
||||
setTimeout () ->
|
||||
# Let any listeners init themselves
|
||||
onScroll(editor.renderer.getScrollTop())
|
||||
|
||||
+3
-1
@@ -19,10 +19,12 @@ define [
|
||||
adding: false
|
||||
content: ""
|
||||
|
||||
# Used to communicate between Ace and reviewPanelSorted directive
|
||||
# DEPRECATED Used to communicate between Ace and reviewPanelSorted directive
|
||||
$scope.scrollBindings =
|
||||
reviewPanelEvents: new EventEmitter()
|
||||
|
||||
$scope.reviewPanelEventsBridge = new EventEmitter()
|
||||
|
||||
changesTrackers = {}
|
||||
|
||||
$scope.$watch "editor.open_doc_id", (open_doc_id) ->
|
||||
|
||||
@@ -112,6 +112,9 @@ define [
|
||||
ignoreNextPanelEvent = false
|
||||
ignoreNextAceEvent = false
|
||||
|
||||
handleScrollbarVisibilityChanged = (isVisible, scrollbarWidth) ->
|
||||
console.log isVisible, scrollbarWidth
|
||||
|
||||
scrollPanel = (scrollTop, height) ->
|
||||
if ignoreNextAceEvent
|
||||
ignoreNextAceEvent = false
|
||||
@@ -126,7 +129,8 @@ define [
|
||||
ignoreNextPanelEvent = false
|
||||
else
|
||||
ignoreNextAceEvent = true
|
||||
scope.scrollBindings.reviewPanelEvents.emit "scroll", scrollTop
|
||||
|
||||
scope.scrollBindings.onAceScroll = scrollPanel
|
||||
}
|
||||
scope.reviewPanelEventsBridge.emit "externalScroll", scrollTop
|
||||
|
||||
scope.reviewPanelEventsBridge.on "aceScroll", scrollPanel
|
||||
scope.reviewPanelEventsBridge.on "aceScrollbarVisibilityChanged", handleScrollbarVisibilityChanged
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user