diff options
Diffstat (limited to 'content_scripts/mode_edit.coffee')
| -rw-r--r-- | content_scripts/mode_edit.coffee | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/content_scripts/mode_edit.coffee b/content_scripts/mode_edit.coffee new file mode 100644 index 00000000..32f2e796 --- /dev/null +++ b/content_scripts/mode_edit.coffee @@ -0,0 +1,33 @@ + +class EditMode extends Mode + @activeElements = [] + + constructor: (options = {}) -> + defaults = + name: "edit" + exitOnEscape: true + keydown: (event) => if @isActive() then @handleKeydown event else @continueBubbling + keypress: (event) => if @isActive() then @handleKeypress event else @continueBubbling + keyup: (event) => if @isActive() then @handleKeyup event else @continueBubbling + + @element = document.activeElement + if @element and DomUtils.isEditable @element + super extend defaults, options + + handleKeydown: (event) -> @suppressEvent + handleKeypress: (event) -> @suppressEvent + handleKeyup: (event) -> @suppressEvent + + isActive: -> + document.activeElement and DomUtils.isDOMDescendant @element, document.activeElement + + exit: (event, target) -> + super() + @element.blur() if target? and DomUtils.isDOMDescendant @element, target + EditMode.activeElements = EditMode.activeElements.filter (element) => element != @element + + updateBadge: (badge) -> + badge.badge = "E" if @isActive() + +root = exports ? window +root.EditMode = EditMode |
