Sha256: 9b62c48422234b1a498423b871fecead3b35f0da9bd266ff5e8632a26ee39f47
Contents?: true
Size: 1.25 KB
Versions: 37
Compression:
Stored size: 1.25 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.pageYOffset == 0) true else codeBottom = @codeBottomPosition() codeBottom + TOLERENCE > @viewportBottomPosition() >= codeBottom - TOLERENCE viewportBottomPosition: -> window.pageYOffset + @$window.height() codeBottomPosition: -> @$code.position().top + @$code.height()
Version data entries
37 entries across 37 versions & 1 rubygems