Sha256: bb7affe522a8a6d0668a29199e77a28e199c390f48e6a0c7162097e6b09b5b98
Contents?: true
Size: 1.24 KB
Versions: 1
Compression:
Stored size: 1.24 KB
Contents
class @TTY FORMATTERS = [] STICKY_SCROLL_TOLERENCE = 200 @appendFormatter: (formatter) -> FORMATTERS.push(formatter) @prependFormatter: (formatter) -> FORMATTERS.unshift(formatter) constructor: ($body) -> @$code = $body.find('code') @scrolling = new Scrolling(@$code) popInitialOutput: -> output = @$code.text() @$code.empty() output formatChunks: (chunk) -> for formatter in FORMATTERS chunk = formatter(chunk) || chunk chunk appendChunk: (chunk) => @scrolling.preserve => @$code.append(@formatChunks(chunk.raw)) class Scrolling TOLERENCE = 200 constructor: (@$code) -> @$window = $(window) @initialScroll = true preserve: (callback) -> wasScrolledToBottom = @isScrolledToBottom() callback() if wasScrolledToBottom @$window.scrollTop(@codeBottomPosition() - @$window.height() + 50) isScrolledToBottom: -> if @initialScroll @initialScroll = (window.scrollY == 0) true else codeBottom = @codeBottomPosition() codeBottom + TOLERENCE > @viewportBottomPosition() >= codeBottom - TOLERENCE viewportBottomPosition: -> window.scrollY + @$window.height() codeBottomPosition: -> @$code.position().top + @$code.height()
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
shipit-engine-0.0.1.pre | app/assets/javascripts/task/tty.js.coffee |