Mailspring/internal_packages/composer/lib/composer-extensions-plugin.coffee
Juan Tejada 02deba38c4 fix(composer): Fix several composer issues and refactor Contenteditable
Summary:
  - Fixes T5819 issues
  - Adds ContenteditbalePlugin mechanism to allow extension of Contenteditable
    functionality, and completely removes lifecycleCallbacks from Contenteditable
  - Refactors list functionality outside of Contenteditable and into a plugin
  - Updates ComposerView to apply DraftStoreExtensions through a ContentEditablePlugin
  - Moves spell checking logic outside of Contenteditable into the spellcheck package

Fixes T5824 (atom.assert)
Fixes T5951 (shift-tabbing) bullets

Test Plan: - Unit tests and manual

Reviewers: evan, bengotow

Reviewed By: bengotow

Maniphest Tasks: T5951, T5824, T5819

Differential Revision: https://phab.nylas.com/D2261
2015-11-18 15:22:31 -08:00

28 lines
1 KiB
CoffeeScript

{DraftStore, DOMUtils, ContenteditablePlugin} = require 'nylas-exports'
class ComposerExtensionsPlugin extends ContenteditablePlugin
@onInput: (event, editableNode, selection, innerStateProxy) ->
for extension in DraftStore.extensions()
extension.onInput?(editableNode, event)
@onKeyDown: (event, editableNode, selection, innerStateProxy) ->
if event.key is "Tab"
range = DOMUtils.getRangeInScope(editableNode)
for extension in DraftStore.extensions()
extension.onTabDown?(editableNode, range, event)
@onShowContextMenu: (args...) ->
for extension in DraftStore.extensions()
extension.onShowContextMenu?(args...)
@onClick: (event, editableNode, selection, innerStateProxy) ->
range = DOMUtils.getRangeInScope(editableNode)
return unless range
try
for extension in DraftStore.extensions()
extension.onMouseUp?(editableNode, range, event)
catch e
console.error('DraftStore extension raised an error: '+e.toString())
module.exports = ComposerExtensionsPlugin