diff --git a/src/containers/target-pane.jsx b/src/containers/target-pane.jsx index 53c0973a9ce09709263386cb3f44b30dab890a8f..5cc156a87058098a0a7b1a6a01d36dc3d4cc01ac 100644 --- a/src/containers/target-pane.jsx +++ b/src/containers/target-pane.jsx @@ -9,6 +9,8 @@ import { closeSpriteLibrary } from '../reducers/modals'; +import {setHoveredSprite} from '../reducers/hovered-target-sprite'; + import TargetPaneComponent from '../components/target-pane/target-pane.jsx'; class TargetPane extends React.Component { @@ -53,10 +55,10 @@ class TargetPane extends React.Component { this.props.vm.duplicateSprite(id); } handleMouseOutSprite () { - this.props.vm.setHoveredSprite(null); + this.props.setHoveredSprite(null); } handleMouseOverSprite (id) { - this.props.vm.setHoveredSprite(id); + this.props.setHoveredSprite(id); } handleSelectSprite (id) { this.props.vm.setEditingTarget(id); @@ -102,7 +104,7 @@ const mapStateToProps = state => ({ return sprites; }, {}), stage: state.targets.stage, - raiseSprites: state.blockdrag, + raiseSprites: state.blockDrag, spriteLibraryVisible: state.modals.spriteLibrary, backdropLibraryVisible: state.modals.backdropLibrary }); @@ -116,6 +118,9 @@ const mapDispatchToProps = dispatch => ({ }, onRequestCloseBackdropLibrary: () => { dispatch(closeBackdropLibrary()); + }, + setHoveredSprite: spriteId => { + dispatch(setHoveredSprite(spriteId)); } }); diff --git a/src/lib/vm-listener-hoc.jsx b/src/lib/vm-listener-hoc.jsx index 707a631b6e7f18c79f464ec6282d2343fb45807d..5583fad2fef9b149a473efcdf5176a5144004205 100644 --- a/src/lib/vm-listener-hoc.jsx +++ b/src/lib/vm-listener-hoc.jsx @@ -6,7 +6,7 @@ import VM from 'scratch-vm'; import {connect} from 'react-redux'; import {updateEditingTarget, updateTargets} from '../reducers/targets'; -import {updateBlockDrag} from '../reducers/blockdrag'; +import {updateBlockDrag} from '../reducers/block-drag'; import {updateMonitors} from '../reducers/monitors'; /* diff --git a/src/reducers/blockdrag.js b/src/reducers/block-drag.js similarity index 88% rename from src/reducers/blockdrag.js rename to src/reducers/block-drag.js index cd424ea570b29dd2618ba51b6f6f08c00eafb6ce..5a261ceaa93459575a41046dc87b664c3af7c6b1 100644 --- a/src/reducers/blockdrag.js +++ b/src/reducers/block-drag.js @@ -1,4 +1,4 @@ -const BLOCK_DRAG_UPDATE = 'scratch-gui/blockdrag/BLOCK_DRAG_UPDATE'; +const BLOCK_DRAG_UPDATE = 'scratch-gui/block-drag/BLOCK_DRAG_UPDATE'; const initialState = false; diff --git a/src/reducers/gui.js b/src/reducers/gui.js index 92cdab550dc53fac3fbd702cf373fac138762aa6..61ffa550189b3d320d0d1beda8e3ece07dd1ff92 100644 --- a/src/reducers/gui.js +++ b/src/reducers/gui.js @@ -1,7 +1,8 @@ import {combineReducers} from 'redux'; import colorPickerReducer from './color-picker'; import customProceduresReducer from './custom-procedures'; -import blockDragReducer from './blockdrag'; +import blockDragReducer from './block-drag'; +import hoveredTargetSpriteReducer from './hovered-target-sprite'; import intlReducer from './intl'; import modalReducer from './modals'; import monitorReducer from './monitors'; @@ -13,9 +14,10 @@ import stageSizeReducer from './stage-size'; import {ScratchPaintReducer} from 'scratch-paint'; export default combineReducers({ - blockdrag: blockDragReducer, + blockDrag: blockDragReducer, colorPicker: colorPickerReducer, customProcedures: customProceduresReducer, + hoveredTargetSprite: hoveredTargetSpriteReducer, intl: intlReducer, stageSize: stageSizeReducer, modals: modalReducer, diff --git a/src/reducers/hovered-target-sprite.js b/src/reducers/hovered-target-sprite.js new file mode 100644 index 0000000000000000000000000000000000000000..38da69ca13129a889238f528f8d16d59b962153b --- /dev/null +++ b/src/reducers/hovered-target-sprite.js @@ -0,0 +1,28 @@ +const SET_HOVERED_SPRITE = 'scratch-gui/hovered-target-sprite/SET_HOVERED_SPRITE'; + +const initialState = null; + +const reducer = function (state, action) { + if (typeof state === 'undefined') state = initialState; + switch (action.type) { + case SET_HOVERED_SPRITE: + return action.spriteId; + default: + return state; + } +}; + +const setHoveredSprite = function (spriteId) { + return { + type: SET_HOVERED_SPRITE, + spriteId: spriteId, + meta: { + throttle: 30 + } + }; +}; + +export { + reducer as default, + setHoveredSprite +};