From 562156f50a72ebc97127e59db2ff65b4ce58ae69 Mon Sep 17 00:00:00 2001 From: john <johnbarlas39@gmail.com> Date: Wed, 4 Jan 2017 16:30:13 +0200 Subject: [PATCH] handle space key --- .../SimpleEditor/ContainerEditor.js | 52 ++++++++++++------- .../track_change/TrackChangesProvider.js | 2 +- 2 files changed, 35 insertions(+), 19 deletions(-) diff --git a/app/components/SimpleEditor/ContainerEditor.js b/app/components/SimpleEditor/ContainerEditor.js index 376773a..532f0d7 100644 --- a/app/components/SimpleEditor/ContainerEditor.js +++ b/app/components/SimpleEditor/ContainerEditor.js @@ -76,35 +76,51 @@ class ContainerEditor extends SubstanceContainerEditor { onTextInput (event) { if (!this.props.trackChanges) return super.onTextInput(event) - event.preventDefault() - event.stopPropagation() - - if (!event.data) return - this._state.skipNextObservation = true - - const trackChangesProvider = this.context.trackChangesProvider - const options = { + this.handleTracking({ event: event, - status: 'add' - } - trackChangesProvider.handleTransaction(options) + status: 'add', + surfaceEvent: 'input' + }) } _handleDeleteKey (event) { if (!this.props.trackChanges) return super._handleDeleteKey(event) + this.handleTracking({ + event: event, + status: 'delete', + surfaceEvent: 'delete' + }) + } + + _handleSpaceKey (event) { + if (!this.props.trackChanges) return super._handleSpaceKey(event) + + this.handleTracking({ + event: event, + status: 'add', + surfaceEvent: 'space' + }) + } + + handleTracking (options) { + const trackChangesProvider = this.context.trackChangesProvider + const { event, surfaceEvent } = options + event.preventDefault() event.stopPropagation() - // TODO -- needed? - const direction = (event.keyCode === keyboardKeys.BACKSPACE) ? 'left' : 'right' + if (surfaceEvent === 'input') { + if (!event.data) return + this._state.skipNextObservation = true + } - const trackChangesProvider = this.context.trackChangesProvider - const options = { - key: (direction === 'left') ? 'BACKSPACE' : 'DELETE', - move: direction, - status: 'delete' + if (surfaceEvent === 'delete') { + const direction = (event.keyCode === keyboardKeys.BACKSPACE) ? 'left' : 'right' + options.move = direction + options.key = (direction === 'left') ? 'BACKSPACE' : 'DELETE' } + trackChangesProvider.handleTransaction(options) } diff --git a/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js b/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js index 7174e68..4d4128f 100644 --- a/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js +++ b/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js @@ -387,7 +387,7 @@ class TrackChangesProvider { const surface = this.getSurface() surface.transaction(function (tx, args) { if (surface.domSelection) surface.domSelection.clear() - args.text = event.data + args.text = event.data || ' ' // if no data, it's a space key return surface.insertText(tx, args) }, { action: 'type' }) } -- GitLab