This repository was archived by the owner on May 18, 2026. It is now read-only.
forked from scratchfoundation/scratch-gui
-
-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathplayer.jsx
More file actions
65 lines (53 loc) · 1.86 KB
/
Copy pathplayer.jsx
File metadata and controls
65 lines (53 loc) · 1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import '../lib/log-suppression';
import classNames from 'classnames';
import PropTypes from 'prop-types';
import React from 'react';
import ReactDOM from 'react-dom';
import {connect} from 'react-redux';
import {compose} from 'redux';
import Box from '../components/box/box.jsx';
import GUI from '../containers/gui.jsx';
import HashParserHOC from '../lib/hash-parser-hoc.jsx';
import AppStateHOC from '../lib/app-state-hoc.jsx';
import {setPlayer} from '../reducers/mode';
if (process.env.NODE_ENV === 'production' && typeof window === 'object') {
// Warn before navigating away
window.onbeforeunload = () => true;
}
import styles from './player.css';
const Player = ({isPlayerOnly, onSeeInside, projectId}) => (
<Box className={classNames(isPlayerOnly ? styles.stageOnly : styles.editor)}>
{isPlayerOnly && <button onClick={onSeeInside}>{'See inside'}</button>}
<GUI
canEditTitle
enableCommunity
isPlayerOnly={isPlayerOnly}
projectId={projectId}
/>
</Box>
);
Player.propTypes = {
isPlayerOnly: PropTypes.bool,
onSeeInside: PropTypes.func,
projectId: PropTypes.string
};
const mapStateToProps = state => ({
isPlayerOnly: state.scratchGui.mode.isPlayerOnly
});
const mapDispatchToProps = dispatch => ({
onSeeInside: () => dispatch(setPlayer(false))
});
const ConnectedPlayer = connect(
mapStateToProps,
mapDispatchToProps
)(Player);
// note that redux's 'compose' function is just being used as a general utility to make
// the hierarchy of HOC constructor calls clearer here; it has nothing to do with redux's
// ability to compose reducers.
const WrappedPlayer = compose(
AppStateHOC,
HashParserHOC
)(ConnectedPlayer);
const appTarget = document.createElement('div');
document.body.appendChild(appTarget);
ReactDOM.render(<WrappedPlayer isPlayerOnly />, appTarget);