From 82e3d26f064026f1ff35164922fa2e6164e0020f Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Thu, 7 Jun 2018 22:23:28 +0000 Subject: [PATCH 1/9] chore(package): update scratch-paint to version 0.2.0-prerelease.20180607215543 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ea968fd8e..e32bc248b 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "scratch-audio": "0.1.0-prerelease.1528210666", "scratch-blocks": "0.1.0-prerelease.1528384994", "scratch-l10n": "3.0.20180604162003", - "scratch-paint": "0.2.0-prerelease.20180607153112", + "scratch-paint": "0.2.0-prerelease.20180607215543", "scratch-render": "0.1.0-prerelease.20180605145739", "scratch-storage": "0.5.0", "scratch-vm": "0.1.0-prerelease.1528384542", From 89a6b1706f7bdd6b900fad43a488195680158794 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Fri, 8 Jun 2018 09:26:33 +0000 Subject: [PATCH 2/9] chore(package): update classnames to version 2.2.6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4e60e963f..628d4c1d0 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "babel-preset-react": "^6.22.0", "bowser": "1.9.3", "chromedriver": "2.39.0", - "classnames": "2.2.5", + "classnames": "2.2.6", "copy-webpack-plugin": "^4.5.1", "css-loader": "^0.28.11", "enzyme": "^3.1.0", From 3d2fba1156d8201fe760d396dfe07c26b0db5a08 Mon Sep 17 00:00:00 2001 From: Ray Schamp Date: Fri, 8 Jun 2018 12:37:00 -0400 Subject: [PATCH 3/9] Revert "Add when touching hat" This reverts commit 94915a9a5e5ca1aa841209c69f4cb4e82bbae093. --- src/lib/blocks.js | 8 -------- src/lib/make-toolbox-xml.js | 7 ------- 2 files changed, 15 deletions(-) diff --git a/src/lib/blocks.js b/src/lib/blocks.js index b47edc95d..fb858313c 100644 --- a/src/lib/blocks.js +++ b/src/lib/blocks.js @@ -185,14 +185,6 @@ export default function (vm) { this.jsonInit(json); }; - ScratchBlocks.Blocks.event_touchingobjectmenu.init = function () { - const json = jsonForMenuBlock('TOUCHINGOBJECTMENU', spriteMenu, eventColors, [ - ['mouse-pointer', '_mouse_'], - ['edge', '_edge_'] - ]); - this.jsonInit(json); - }; - ScratchBlocks.Blocks.control_create_clone_of_menu.init = function () { const json = jsonForMenuBlock('CLONE_OPTION', cloneMenu, controlColors, []); this.jsonInit(json); diff --git a/src/lib/make-toolbox-xml.js b/src/lib/make-toolbox-xml.js index 4088b3d8b..a159f41dd 100644 --- a/src/lib/make-toolbox-xml.js +++ b/src/lib/make-toolbox-xml.js @@ -321,13 +321,6 @@ const events = function (isStage) { ` : ` `} - ${isStage ? '' : ` - - - - - - `} ${blockSeparator} From ab1645b311f0e49513fee9b2633e0337b3dd7d35 Mon Sep 17 00:00:00 2001 From: sjhuang26 Date: Fri, 8 Jun 2018 15:11:40 -0400 Subject: [PATCH 4/9] Initial work --- src/components/gui/gui.jsx | 22 +++++++++++++++++ src/containers/backdrop-library.jsx | 17 ++++++++++++- src/containers/costume-tab.jsx | 37 ++--------------------------- src/containers/gui.jsx | 11 ++++++++- src/containers/stage-selector.jsx | 1 - 5 files changed, 50 insertions(+), 38 deletions(-) diff --git a/src/components/gui/gui.jsx b/src/components/gui/gui.jsx index 66a08f64f..80535e83e 100644 --- a/src/components/gui/gui.jsx +++ b/src/components/gui/gui.jsx @@ -15,6 +15,8 @@ import StageWrapper from '../../containers/stage-wrapper.jsx'; import Loader from '../loader/loader.jsx'; import Box from '../box/box.jsx'; import MenuBar from '../menu-bar/menu-bar.jsx'; +import CostumeLibrary from '../../containers/costume-library.jsx'; +import BackdropLibrary from '../../containers/backdrop-library.jsx'; import Backpack from '../../containers/backpack.jsx'; import PreviewModal from '../../containers/preview-modal.jsx'; @@ -46,10 +48,12 @@ const GUIComponent = props => { const { activeTabIndex, basePath, + backdropLibraryVisible, backpackOptions, blocksTabVisible, cardsVisible, children, + costumeLibraryVisible, costumesTabVisible, enableCommunity, importInfoVisible, @@ -60,6 +64,8 @@ const GUIComponent = props => { onActivateCostumesTab, onActivateSoundsTab, onActivateTab, + onRequestCloseBackdropLibrary, + onRequestCloseCostumeLibrary, previewInfoVisible, targetIsStage, soundsTabVisible, @@ -112,6 +118,18 @@ const GUIComponent = props => { {cardsVisible ? ( ) : null} + {costumeLibraryVisible ? ( + + ) : null} + {backdropLibraryVisible ? ( + + ) : null} @@ -227,6 +245,7 @@ const GUIComponent = props => { }; GUIComponent.propTypes = { activeTabIndex: PropTypes.number, + backdropLibraryVisible: PropTypes.bool, backpackOptions: PropTypes.shape({ host: PropTypes.string, visible: PropTypes.bool @@ -235,6 +254,7 @@ GUIComponent.propTypes = { blocksTabVisible: PropTypes.bool, cardsVisible: PropTypes.bool, children: PropTypes.node, + costumeLibraryVisible: PropTypes.bool, costumesTabVisible: PropTypes.bool, enableCommunity: PropTypes.bool, importInfoVisible: PropTypes.bool, @@ -245,6 +265,8 @@ GUIComponent.propTypes = { onActivateSoundsTab: PropTypes.func, onActivateTab: PropTypes.func, onExtensionButtonClick: PropTypes.func, + onRequestCloseBackdropLibrary: PropTypes.func, + onRequestCloseCostumeLibrary: PropTypes.func, onTabSelect: PropTypes.func, previewInfoVisible: PropTypes.bool, soundsTabVisible: PropTypes.bool, diff --git a/src/containers/backdrop-library.jsx b/src/containers/backdrop-library.jsx index 98604bf18..aa5e12c7e 100644 --- a/src/containers/backdrop-library.jsx +++ b/src/containers/backdrop-library.jsx @@ -2,8 +2,14 @@ import bindAll from 'lodash.bindall'; import PropTypes from 'prop-types'; import React from 'react'; import {defineMessages, injectIntl, intlShape} from 'react-intl'; +import {connect} from 'react-redux'; import VM from 'scratch-vm'; +import { + activateTab, + COSTUMES_TAB_INDEX +} from '../reducers/editor-tab'; + import analytics from '../lib/analytics'; import backdropLibraryContent from '../lib/libraries/backdrops.json'; import backdropTags from '../lib/libraries/backdrop-tags'; @@ -34,6 +40,7 @@ class BackdropLibrary extends React.Component { skinId: null }; this.props.vm.addBackdrop(item.md5, vmBackdrop); + this.props.onActivateTab(COSTUMES_TAB_INDEX); analytics.event({ category: 'library', action: 'Select Backdrop', @@ -56,8 +63,16 @@ class BackdropLibrary extends React.Component { BackdropLibrary.propTypes = { intl: intlShape.isRequired, + onActivateTab: PropTypes.func.isRequired, onRequestClose: PropTypes.func, vm: PropTypes.instanceOf(VM).isRequired }; -export default injectIntl(BackdropLibrary); +const mapDispatchToProps = dispatch => ({ + onActivateTab: tab => dispatch(activateTab(tab)) +}); + +export default injectIntl(connect( + null, + mapDispatchToProps, +)(BackdropLibrary)); diff --git a/src/containers/costume-tab.jsx b/src/containers/costume-tab.jsx index 3ce034caa..08546f857 100644 --- a/src/containers/costume-tab.jsx +++ b/src/containers/costume-tab.jsx @@ -6,8 +6,6 @@ import VM from 'scratch-vm'; import AssetPanel from '../components/asset-panel/asset-panel.jsx'; import PaintEditorWrapper from './paint-editor-wrapper.jsx'; -import CostumeLibrary from './costume-library.jsx'; -import BackdropLibrary from './backdrop-library.jsx'; import CameraModal from './camera-modal.jsx'; import {connect} from 'react-redux'; import {handleFileUpload, costumeUpload} from '../lib/file-uploader.js'; @@ -15,8 +13,6 @@ import errorBoundaryHOC from '../lib/error-boundary-hoc.jsx'; import { closeCameraCapture, - closeCostumeLibrary, - closeBackdropLibrary, openCameraCapture, openCostumeLibrary, openBackdropLibrary @@ -209,16 +205,11 @@ class CostumeTab extends React.Component { onNewCostumeFromCameraClick, onNewLibraryBackdropClick, onNewLibraryCostumeClick, - backdropLibraryVisible, cameraModalVisible, - costumeLibraryVisible, - onRequestCloseBackdropLibrary, onRequestCloseCameraModal, - onRequestCloseCostumeLibrary, editingTarget, sprites, - stage, - vm + stage } = this.props; const target = editingTarget && sprites[editingTarget] ? sprites[editingTarget] : stage; @@ -284,18 +275,6 @@ class CostumeTab extends React.Component { /> : null } - {costumeLibraryVisible ? ( - - ) : null} - {backdropLibraryVisible ? ( - - ) : null} {cameraModalVisible ? ( ({ editingTarget: state.scratchGui.targets.editingTarget, sprites: state.scratchGui.targets.sprites, stage: state.scratchGui.targets.stage, - cameraModalVisible: state.scratchGui.modals.cameraCapture, - costumeLibraryVisible: state.scratchGui.modals.costumeLibrary, - backdropLibraryVisible: state.scratchGui.modals.backdropLibrary + cameraModalVisible: state.scratchGui.modals.cameraCapture }); const mapDispatchToProps = dispatch => ({ @@ -357,12 +330,6 @@ const mapDispatchToProps = dispatch => ({ onNewCostumeFromCameraClick: () => { dispatch(openCameraCapture()); }, - onRequestCloseBackdropLibrary: () => { - dispatch(closeBackdropLibrary()); - }, - onRequestCloseCostumeLibrary: () => { - dispatch(closeCostumeLibrary()); - }, onRequestCloseCameraModal: () => { dispatch(closeCameraCapture()); } diff --git a/src/containers/gui.jsx b/src/containers/gui.jsx index 79a85c9dc..c80217ba6 100644 --- a/src/containers/gui.jsx +++ b/src/containers/gui.jsx @@ -14,6 +14,11 @@ import { SOUNDS_TAB_INDEX } from '../reducers/editor-tab'; +import { + closeCostumeLibrary, + closeBackdropLibrary +} from '../reducers/modals'; + import ProjectLoaderHOC from '../lib/project-loader-hoc.jsx'; import vmListenerHOC from '../lib/vm-listener-hoc.jsx'; @@ -100,8 +105,10 @@ GUI.defaultProps = GUIComponent.defaultProps; const mapStateToProps = state => ({ activeTabIndex: state.scratchGui.editorTab.activeTabIndex, + backdropLibraryVisible: state.scratchGui.modals.backdropLibrary, blocksTabVisible: state.scratchGui.editorTab.activeTabIndex === BLOCKS_TAB_INDEX, cardsVisible: state.scratchGui.cards.visible, + costumeLibraryVisible: state.scratchGui.modals.costumeLibrary, costumesTabVisible: state.scratchGui.editorTab.activeTabIndex === COSTUMES_TAB_INDEX, importInfoVisible: state.scratchGui.modals.importInfo, isPlayerOnly: state.scratchGui.mode.isPlayerOnly, @@ -119,7 +126,9 @@ const mapDispatchToProps = dispatch => ({ onExtensionButtonClick: () => dispatch(openExtensionLibrary()), onActivateTab: tab => dispatch(activateTab(tab)), onActivateCostumesTab: () => dispatch(activateTab(COSTUMES_TAB_INDEX)), - onActivateSoundsTab: () => dispatch(activateTab(SOUNDS_TAB_INDEX)) + onActivateSoundsTab: () => dispatch(activateTab(SOUNDS_TAB_INDEX)), + onRequestCloseBackdropLibrary: () => dispatch(closeBackdropLibrary()), + onRequestCloseCostumeLibrary: () => dispatch(closeCostumeLibrary()) }); const ConnectedGUI = connect( diff --git a/src/containers/stage-selector.jsx b/src/containers/stage-selector.jsx index 4d8474600..e9c2c230f 100644 --- a/src/containers/stage-selector.jsx +++ b/src/containers/stage-selector.jsx @@ -120,7 +120,6 @@ const mapStateToProps = (state, {assetId, id}) => ({ const mapDispatchToProps = dispatch => ({ onNewBackdropClick: e => { e.preventDefault(); - dispatch(activateTab(COSTUMES_TAB_INDEX)); dispatch(openBackdropLibrary()); }, onActivateTab: tabIndex => { From 866fb27d50eee4ea115721d6ac056c0c18366e7b Mon Sep 17 00:00:00 2001 From: sjhuang26 Date: Fri, 8 Jun 2018 16:03:55 -0400 Subject: [PATCH 5/9] Fix action menu click bubbling --- src/components/action-menu/action-menu.jsx | 2 +- src/containers/stage-selector.jsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/action-menu/action-menu.jsx b/src/components/action-menu/action-menu.jsx index 69d154fcc..2725c502b 100644 --- a/src/components/action-menu/action-menu.jsx +++ b/src/components/action-menu/action-menu.jsx @@ -76,8 +76,8 @@ class ActionMenu extends React.Component { // (possibly slow) action is started. return event => { ReactTooltip.hide(); + if (fn) fn(event); this.setState({forceHide: true, isOpen: false}, () => { - if (fn) fn(event); setTimeout(() => this.setState({forceHide: false})); }); }; diff --git a/src/containers/stage-selector.jsx b/src/containers/stage-selector.jsx index e9c2c230f..8fb136a8a 100644 --- a/src/containers/stage-selector.jsx +++ b/src/containers/stage-selector.jsx @@ -119,7 +119,7 @@ const mapStateToProps = (state, {assetId, id}) => ({ const mapDispatchToProps = dispatch => ({ onNewBackdropClick: e => { - e.preventDefault(); + e.stopPropagation(); dispatch(openBackdropLibrary()); }, onActivateTab: tabIndex => { From 246da29621eb42766de2364aeb324b82c302cd42 Mon Sep 17 00:00:00 2001 From: sjhuang26 Date: Fri, 8 Jun 2018 17:26:50 -0400 Subject: [PATCH 6/9] Fix bug --- src/containers/backdrop-library.jsx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/containers/backdrop-library.jsx b/src/containers/backdrop-library.jsx index aa5e12c7e..5a0266038 100644 --- a/src/containers/backdrop-library.jsx +++ b/src/containers/backdrop-library.jsx @@ -39,8 +39,9 @@ class BackdropLibrary extends React.Component { bitmapResolution: item.info.length > 2 ? item.info[2] : 1, skinId: null }; - this.props.vm.addBackdrop(item.md5, vmBackdrop); + this.props.vm.setEditingTarget(this.props.stageID); this.props.onActivateTab(COSTUMES_TAB_INDEX); + this.props.vm.addBackdrop(item.md5, vmBackdrop); analytics.event({ category: 'library', action: 'Select Backdrop', @@ -65,14 +66,19 @@ BackdropLibrary.propTypes = { intl: intlShape.isRequired, onActivateTab: PropTypes.func.isRequired, onRequestClose: PropTypes.func, + stageID: PropTypes.string.isRequired, vm: PropTypes.instanceOf(VM).isRequired }; +const mapStateToProps = state => ({ + stageID: state.scratchGui.targets.stage.id +}); + const mapDispatchToProps = dispatch => ({ onActivateTab: tab => dispatch(activateTab(tab)) }); export default injectIntl(connect( - null, - mapDispatchToProps, + mapStateToProps, + mapDispatchToProps )(BackdropLibrary)); From e34818a7833929b31dbd79e559035ba32bb9f4ae Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Fri, 8 Jun 2018 21:55:54 +0000 Subject: [PATCH 7/9] chore(package): update scratch-blocks to version 0.1.0-prerelease.1528492670 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4e60e963f..63d9a1996 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "redux-throttle": "0.1.1", "rimraf": "^2.6.1", "scratch-audio": "0.1.0-prerelease.1528210666", - "scratch-blocks": "0.1.0-prerelease.1528400332", + "scratch-blocks": "0.1.0-prerelease.1528492670", "scratch-l10n": "3.0.20180604162003", "scratch-paint": "0.2.0-prerelease.20180607153112", "scratch-render": "0.1.0-prerelease.20180605145739", From 18417104831030c90e6019077ec9140e0f9b2ddf Mon Sep 17 00:00:00 2001 From: sjhuang26 Date: Fri, 8 Jun 2018 20:21:39 -0400 Subject: [PATCH 8/9] Change styles --- src/components/gui/gui.css | 2 ++ src/components/sprite-selector/sprite-selector.css | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/gui/gui.css b/src/components/gui/gui.css index 2e4e7b846..b88b5c43e 100644 --- a/src/components/gui/gui.css +++ b/src/components/gui/gui.css @@ -176,6 +176,8 @@ padding-left: $space; padding-right: $space; + min-height: 0; /* this makes it work in Firefox */ + /* For making the sprite-selector a scrollable pane @todo: Not working in Safari diff --git a/src/components/sprite-selector/sprite-selector.css b/src/components/sprite-selector/sprite-selector.css index 8b1e76df5..43d6681e1 100644 --- a/src/components/sprite-selector/sprite-selector.css +++ b/src/components/sprite-selector/sprite-selector.css @@ -47,7 +47,7 @@ then back up, introduces white space in the outside the page container. */ height: calc(100% - $sprite-info-height); - overflow-y: scroll; + overflow-y: auto; } .items-wrapper { From 535583e7563fb397823bace3925cfed5cf3828d5 Mon Sep 17 00:00:00 2001 From: sjhuang26 Date: Sun, 10 Jun 2018 17:37:30 -0400 Subject: [PATCH 9/9] Change CSS --- src/components/library-item/library-item.css | 2 +- src/components/library/library.css | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/library-item/library-item.css b/src/components/library-item/library-item.css index 7b91cc96a..3258b4a7b 100644 --- a/src/components/library-item/library-item.css +++ b/src/components/library-item/library-item.css @@ -5,7 +5,7 @@ display: flex; flex-direction: column; align-items: center; - justify-content: center; + justify-content: flex-start; flex-basis: 160px; max-width: 160px; height: 160px; diff --git a/src/components/library/library.css b/src/components/library/library.css index 5a2b6e1f0..8c132c389 100644 --- a/src/components/library/library.css +++ b/src/components/library/library.css @@ -5,6 +5,7 @@ display: flex; justify-content: flex-start; align-content: flex-start; + align-items: flex-start; background: $ui-secondary; flex-grow: 1; flex-wrap: wrap;