From: Jason Woofenden Date: Wed, 24 Feb 2016 04:56:48 +0000 (-0500) Subject: use {x,y} instead of {left,top} X-Git-Url: https://jasonwoof.com/gitweb/?p=peach-html5-editor.git;a=commitdiff_plain;h=d259ff6d41dfc07b53dd22e657de359476b70e5a use {x,y} instead of {left,top} --- diff --git a/editor.coffee b/editor.coffee index 81ee87e..34a8b39 100644 --- a/editor.coffee +++ b/editor.coffee @@ -44,7 +44,7 @@ get_el_bounds = (el) -> h: rect.height ? (rect.top - rect.bottom) } -# figure out the top/left coordinates of where the cursor should be if it's at +# figure out the x/y coordinates of where the cursor should be if it's at # position ``i`` within text node ``n`` # # implementation: insert a span tag where we want the cursor, and ask the @@ -87,13 +87,13 @@ cursor_to_loc = (n, i) -> parent.insertBefore n.el, els[0] for el in els parent.removeChild el - ret = top: bounds.y, left: bounds.x + ret = x: bounds.x, y: bounds.y if plus_width - ret.left += bounds.w + ret.x += bounds.w # fudge case where bounds are BS because we're on non-significant whitespace if i > 0 first = cursor_to_loc n, 0 - if ret.left <= first.left + if ret.x <= first.x # no need for a loop here, because recursion ret = cursor_to_loc n, i - 1 return ret @@ -228,7 +228,7 @@ traverse_tree = (tree, state, cb) -> traverse_tree c.children, state, cb break if state.done? return state -# find the next element in top (and decendants) that is after n and can contain text +# find the next element in tree (and decendants) that is after n and can contain text # TODO make it so cursor can go places that don't have text but could find_next_cursor_position = (tree, n, i) -> if n? and n.type is TYPE_TEXT and n.text.length > i @@ -268,10 +268,10 @@ find_loc_cursor_position = (tree, loc) -> if c.type is TYPE_TAG or c.type is TYPE_TEXT bounds = get_el_bounds c.el console.log bounds - continue if loc.left < bounds.x - continue if loc.left > bounds.x + bounds.w - continue if loc.top < bounds.y - continue if loc.top > bounds.y + bounds.h + continue if loc.x < bounds.x + continue if loc.x > bounds.x + bounds.w + continue if loc.y < bounds.y + continue if loc.y > bounds.y + bounds.h if c.type is TYPE_TEXT # click is within bounding box that contains all text. return [c, 0] if c.text.length is 0 @@ -336,7 +336,7 @@ class PeachHTML5Editor @idoc.body.onclick = (e) => # idoc.body.offset().left/top - new_cursor = find_loc_cursor_position @tree, left: e.pageX, top: e.pageY + new_cursor = find_loc_cursor_position @tree, x: e.pageX, y: e.pageY if new_cursor? @move_cursor new_cursor @idoc.body.onkeyup = (e) => @@ -446,10 +446,10 @@ class PeachHTML5Editor @cursor_el = domify div: id: 'peach_html5_editor_cursor' @idoc.body.appendChild @cursor_el @cursor_visible = true - # TODO figure out top/left coords for cursor + # TODO figure out x,y coords for cursor loc = cursor_to_loc cursor[0], cursor[1] - @cursor_el.style.top = "#{loc.top}px" - @cursor_el.style.left = "#{loc.left}px" + @cursor_el.style.left = "#{loc.x}px" + @cursor_el.style.top = "#{loc.y}px" window.peach_html5_editor = (args...) -> return new PeachHTML5Editor args...