Skip to content
This repository has been archived by the owner on Jun 26, 2020. It is now read-only.

Commit

Permalink
Merge 7f4d92a into 48bea53
Browse files Browse the repository at this point in the history
  • Loading branch information
jodator committed Jan 28, 2020
2 parents 48bea53 + 7f4d92a commit 3ed2204
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 11 deletions.
47 changes: 46 additions & 1 deletion src/view/observer/mouseobserver.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,18 @@ import DomEventObserver from './domeventobserver';
* @extends module:engine/view/observer/domeventobserver~DomEventObserver
*/
export default class MouseObserver extends DomEventObserver {
/**
* @inheritDoc
*/
constructor( view ) {
super( view );

this.domEventType = 'mousedown';
this.domEventType = [ 'mousedown', 'mousemove', 'mouseup', 'mouseleave' ];
}

/**
* @inheritDoc
*/
onDomEvent( domEvent ) {
this.fire( domEvent.type, domEvent );
}
Expand All @@ -41,3 +47,42 @@ export default class MouseObserver extends DomEventObserver {
* @event module:engine/view/document~Document#event:mousedown
* @param {module:engine/view/observer/domeventdata~DomEventData} data Event data.
*/

/**
* Fired when mouse button is released over one of the editables.
*
* Introduced by {@link module:engine/view/observer/mouseobserver~MouseObserver}.
*
* Note that this event is not available by default. To make it available {@link module:engine/view/observer/mouseobserver~MouseObserver}
* needs to be added to {@link module:engine/view/view~View} by a {@link module:engine/view/view~View#addObserver} method.
*
* @see module:engine/view/observer/mouseobserver~MouseObserver
* @event module:engine/view/document~Document#event:mouseup
* @param {module:engine/view/observer/domeventdata~DomEventData} data Event data.
*/

/**
* Fired when mouse is moved over one of the editables.
*
* Introduced by {@link module:engine/view/observer/mouseobserver~MouseObserver}.
*
* Note that this event is not available by default. To make it available {@link module:engine/view/observer/mouseobserver~MouseObserver}
* needs to be added to {@link module:engine/view/view~View} by a {@link module:engine/view/view~View#addObserver} method.
*
* @see module:engine/view/observer/mouseobserver~MouseObserver
* @event module:engine/view/document~Document#event:mousemove
* @param {module:engine/view/observer/domeventdata~DomEventData} data Event data.
*/

/**
* Fired when mouse is moved away from one of the editables.
*
* Introduced by {@link module:engine/view/observer/mouseobserver~MouseObserver}.
*
* Note that this event is not available by default. To make it available {@link module:engine/view/observer/mouseobserver~MouseObserver}
* needs to be added to {@link module:engine/view/view~View} by a {@link module:engine/view/view~View#addObserver} method.
*
* @see module:engine/view/observer/mouseobserver~MouseObserver
* @event module:engine/view/document~Document#event:mouseleave
* @param {module:engine/view/observer/domeventdata~DomEventData} data Event data.
*/
27 changes: 17 additions & 10 deletions tests/view/observer/mouseobserver.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,22 +21,29 @@ describe( 'MouseObserver', () => {
view.destroy();
} );

it( 'should define domEventType', () => {
expect( observer.domEventType ).to.equal( 'mousedown' );
it( 'should define domEventTypes', () => {
expect( observer.domEventType ).to.deep.equal( [
'mousedown',
'mousemove',
'mouseup',
'mouseleave'
] );
} );

describe( 'onDomEvent', () => {
it( 'should fire mousedown with the right event data', () => {
const spy = sinon.spy();
for ( const eventName of [ 'mousedown', 'mousemove', 'mouseup', 'mouseleave' ] ) {
it( `should fire ${ eventName } with the right event data`, () => {
const spy = sinon.spy();

viewDocument.on( 'mousedown', spy );
viewDocument.on( eventName, spy );

observer.onDomEvent( { type: 'mousedown', target: document.body } );
observer.onDomEvent( { type: eventName, target: document.body } );

expect( spy.calledOnce ).to.be.true;
expect( spy.calledOnce ).to.be.true;

const data = spy.args[ 0 ][ 1 ];
expect( data.domTarget ).to.equal( document.body );
} );
const data = spy.args[ 0 ][ 1 ];
expect( data.domTarget ).to.equal( document.body );
} );
}
} );
} );

0 comments on commit 3ed2204

Please sign in to comment.