ret += 'body {'
ret += 'margin: 0;'
ret += 'padding: 0;'
+ ret += 'color: black;'
+ ret += 'background: white;'
ret += '}'
ret += '#wrap1 {'
ret += "border: #{occupy 1}px solid black;"
ret += '}'
ret += '#cursor {'
ret += 'position: absolute;'
- ret += 'height: 1em;' # FIXME adjust for hight of text
ret += 'width: 2px;'
- ret += 'background: #444;'
- ret += '-webkit-animation: blink 1s linear infinite;'
- ret += 'animation: blink 1s linear infinite;'
+ ret += 'background: linear-gradient(0deg, rgba(0,0,0,1), rgba(255,255,255,1), rgba(0,0,0,1), rgba(255,255,255,1), rgba(0,0,0,1), rgba(255,255,255,1), rgba(0,0,0,1), rgba(255,255,255,1), rgba(0,0,0,1));'
+ ret += 'background-size: 200% 200%;'
+ ret += '-webkit-animation: blink 1s linear normal infinite;'
+ ret += 'animation: blink 1s linear normal infinite;'
ret += '}'
ret += '@-webkit-keyframes blink {'
- ret += '0% { background-color: rgba(0,0,0,0.7); }'
- ret += '50% { background-color: rgba(0,0,0,0.7); }'
- ret += '50.001% { background-color: rgba(255,255,255,0.7); }'
- ret += '100% { background-color: rgba(255,255,255,0.7); }'
+ ret += '0%{background-position:0% 0%}'
+ ret += '100%{background-position:0% -100%}'
ret += '}'
- ret += '@keyframes blink {'
- ret += '0% { background-color: rgba(0,0,0,0.7); }'
- ret += '50% { background-color: rgba(0,0,0,0.7); }'
- ret += '50.001% { background-color: rgba(255,255,255,0.7); }'
- ret += '100% { background-color: rgba(255,255,255,0.7); }'
+ ret += '@keyframes blink { '
+ ret += '0%{background-position:0% 0%}'
+ ret += '100%{background-position:0% -100%}'
ret += '}'
ret += '.ann_box {'
ret += 'z-index: 5;'
@cursor_visible = false
@poll_for_blur_timeout = null
@iframe_offset = null
+ @iframe_height = null
opt_fragment = @options.fragment ? true
@parser_opts = {}
if opt_fragment
setTimeout (=> @init() unless @inited), 200 # firefox never fires this onload
@outer_idoc.body.appendChild(
domify @outer_idoc, div: id: 'wrap1', children: [
+ domify @outer_idoc, div: style: "position: absolute; top: 0; left: 1px; font-size: 10px", children: [ domify @outer_idoc, text: "Peach HTML5 Editor" ]
@wrap2 = domify @outer_idoc, div: id: 'wrap2', children: [
domify @outer_idoc, div: id: 'wrap3', children: [
@iframe
# so add a <base> tag
@idoc.head.appendChild domify @idoc, base: href: this_url_sans_path()
if @options.css_file
- # TODO test this
- @idoc.head.appendChild domify @idoc, link: rel: 'stylesheet', type: 'text/css', href: @options.css_file
+ istyle = domify @idoc, link: rel: 'stylesheet', type: 'text/css', href: @options.css_file + '?foo=baz'
+ istyle.onload = =>
+ @adjust_iframe_height()
+ @idoc.head.appendChild istyle
+ @idoc.head.appendChild domify @idoc, style: children: [domify @idoc, text: "body { overflow: hidden; }"]
@load_html @in_el.value
@inited = true
if @options.on_init?
@in_el.value = @pretty_html @tree
@in_el.onchange = =>
@load_html @in_el.value
- @iframe.style.height = "0"
- @iframe.style.height = "#{@idoc.body.scrollHeight}px"
+ @adjust_iframe_height()
+ adjust_iframe_height: ->
+ h = parseInt(@idoc.body.scrollHeight, 10)
+ if @iframe_height isnt h
+ @iframe_height = h
+ s = @wrap2.scrollTop
+ @iframe.style.height = "0"
+ @iframe.style.height = "#{h}px"
+ @wrap2.scrollTop = s
kill_cursor: -> # remove it, forget where it was
if @cursor_visible
@cursor_el.parentNode.removeChild @cursor_el