Initial commit of 001code-html Scratch frontend project.
Includes scratch-gui, scratch-vm, scratch-blocks, scratch-render, scratch-l10n, and deployment config. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
71
scratch-gui/src/containers/watermark.jsx
Normal file
71
scratch-gui/src/containers/watermark.jsx
Normal file
@@ -0,0 +1,71 @@
|
||||
import bindAll from 'lodash.bindall';
|
||||
import omit from 'lodash.omit';
|
||||
import PropTypes from 'prop-types';
|
||||
import React from 'react';
|
||||
import {connect} from 'react-redux';
|
||||
|
||||
import ThrottledPropertyHOC from '../lib/throttled-property-hoc.jsx';
|
||||
|
||||
import VM from 'scratch-vm';
|
||||
import storage from '../lib/storage';
|
||||
import getCostumeUrl from '../lib/get-costume-url';
|
||||
|
||||
import WatermarkComponent from '../components/watermark/watermark.jsx';
|
||||
|
||||
class Watermark extends React.Component {
|
||||
constructor (props) {
|
||||
super(props);
|
||||
bindAll(this, [
|
||||
'getCostumeData'
|
||||
]);
|
||||
}
|
||||
|
||||
getCostumeData () {
|
||||
if (!this.props.asset) return null;
|
||||
|
||||
return getCostumeUrl(this.props.asset);
|
||||
}
|
||||
|
||||
render () {
|
||||
const componentProps = omit(this.props, ['asset', 'vm']);
|
||||
return (
|
||||
<WatermarkComponent
|
||||
costumeURL={this.getCostumeData()}
|
||||
{...componentProps}
|
||||
/>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Watermark.propTypes = {
|
||||
asset: PropTypes.instanceOf(storage.Asset),
|
||||
vm: PropTypes.instanceOf(VM).isRequired
|
||||
};
|
||||
|
||||
const mapStateToProps = state => {
|
||||
const targets = state.scratchGui.targets;
|
||||
const currentTargetId = targets.editingTarget;
|
||||
|
||||
let asset;
|
||||
if (currentTargetId) {
|
||||
if (targets.stage.id === currentTargetId) {
|
||||
asset = targets.stage.costume.asset;
|
||||
} else if (Object.prototype.hasOwnProperty.call(targets.sprites, currentTargetId)) {
|
||||
const currentSprite = targets.sprites[currentTargetId];
|
||||
asset = currentSprite.costume.asset;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
vm: state.scratchGui.vm,
|
||||
asset: asset
|
||||
};
|
||||
};
|
||||
|
||||
const ConnectedComponent = connect(
|
||||
mapStateToProps
|
||||
)(
|
||||
ThrottledPropertyHOC('asset', 500)(Watermark)
|
||||
);
|
||||
|
||||
export default ConnectedComponent;
|
||||
Reference in New Issue
Block a user