mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-09-22 16:26:08 +08:00
02deba38c4
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
28 lines
1 KiB
CoffeeScript
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
|