Merge branch 'develop' into greenkeeper/scratch-render-0.1.0-prerelease.20180502115145
This commit is contained in:
15 files changed
+2340
-93
No files matched your search
+2
-2
@@ -91,11 +91,11 @@
|
||||
"scratch-audio": "0.1.0-prerelease.1523977528",
|
||||
"scratch-blocks": "0.1.0-prerelease.1525125321",
|
||||
"scratch-l10n": "2.0.20180108132626",
|
||||
"scratch-paint": "0.2.0-prerelease.20180426204040",
|
||||
"scratch-paint": "0.2.0-prerelease.20180501202212",
|
||||
"scratch-render": "0.1.0-prerelease.20180502115145",
|
||||
"scratch-svg-renderer": "0.1.0-prerelease.20180423193917",
|
||||
"scratch-storage": "0.4.1",
|
||||
"scratch-vm": "0.1.0-prerelease.1525095619",
|
||||
"scratch-vm": "0.1.0-prerelease.1525209256",
|
||||
"selenium-webdriver": "3.6.0",
|
||||
"startaudiocontext": "1.2.1",
|
||||
"style-loader": "^0.20.0",
|
||||
|
||||
+2
-1
@@ -11,6 +11,7 @@ module.exports = {
|
||||
'import/no-mutable-exports': 'error',
|
||||
'import/no-commonjs': 'error',
|
||||
'import/no-amd': 'error',
|
||||
'import/no-nodejs-modules': 'error'
|
||||
'import/no-nodejs-modules': 'error',
|
||||
'react/jsx-no-literals': 'error'
|
||||
}
|
||||
};
|
||||
@@ -43,18 +43,34 @@ const BrowserModal = ({intl, ...props}) => (
|
||||
className={styles.backButton}
|
||||
onClick={props.onBack}
|
||||
>
|
||||
Back
|
||||
<FormattedMessage
|
||||
defaultMessage="Back"
|
||||
description="Button to go back in unsupported browser modal"
|
||||
id="gui.unsupportedBrowser.back"
|
||||
/>
|
||||
</button>
|
||||
|
||||
</Box>
|
||||
<div className={styles.faqLinkText}>
|
||||
To learn more, go to the {' '}
|
||||
<a
|
||||
className={styles.faqLink}
|
||||
href="//scratch.mit.edu/preview-faq"
|
||||
>
|
||||
preview FAQ
|
||||
</a>.
|
||||
<FormattedMessage
|
||||
defaultMessage="To learn more, go to the {previewFaqLink}."
|
||||
description="Invitation to try 3.0 preview"
|
||||
id="gui.unsupportedBrowser.previewfaq"
|
||||
values={{
|
||||
previewFaqLink: (
|
||||
<a
|
||||
className={styles.faqLink}
|
||||
href="//scratch.mit.edu/preview-faq"
|
||||
>
|
||||
<FormattedMessage
|
||||
defaultMessage="Preview FAQ"
|
||||
description="link to Scratch 3.0 preview FAQ page"
|
||||
id="gui.unsupportedBrowser.previewfaqlink"
|
||||
/>
|
||||
</a>
|
||||
)
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
</Box>
|
||||
</ReactModal>
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
/* eslint-disable react/jsx-no-literals */
|
||||
/*
|
||||
@todo Rule is disabled because this component is rendered outside the
|
||||
intl provider right now so cannot be translated.
|
||||
*/
|
||||
|
||||
import PropTypes from 'prop-types';
|
||||
import React from 'react';
|
||||
import Box from '../box/box.jsx';
|
||||
|
||||
@@ -123,20 +123,43 @@ const MenuBar = props => (
|
||||
})}
|
||||
onMouseUp={props.onClickFile}
|
||||
>
|
||||
<div className={classNames(styles.fileMenu)}>File</div>
|
||||
<div className={classNames(styles.fileMenu)}>
|
||||
<FormattedMessage
|
||||
defaultMessage="File"
|
||||
description="Text for file dropdown menu"
|
||||
id="gui.menuBar.file"
|
||||
/>
|
||||
</div>
|
||||
<MenuBarMenu
|
||||
open={props.fileMenuOpen}
|
||||
onRequestClose={props.onRequestCloseFile}
|
||||
>
|
||||
<MenuItemTooltip id="new">
|
||||
<MenuItem>New</MenuItem>
|
||||
<MenuItem>
|
||||
<FormattedMessage
|
||||
defaultMessage="New"
|
||||
description="Menu bar item for creating a new project"
|
||||
id="gui.menuBar.new"
|
||||
/>
|
||||
</MenuItem>
|
||||
</MenuItemTooltip>
|
||||
<MenuSection>
|
||||
<MenuItemTooltip id="save">
|
||||
<MenuItem>Save now</MenuItem>
|
||||
<MenuItem>
|
||||
<FormattedMessage
|
||||
defaultMessage="Save now"
|
||||
description="Menu bar item for saving now"
|
||||
id="gui.menuBar.saveNow"
|
||||
/>
|
||||
</MenuItem>
|
||||
</MenuItemTooltip>
|
||||
<MenuItemTooltip id="copy">
|
||||
<MenuItem>Save as a copy</MenuItem>
|
||||
<MenuItem>
|
||||
<FormattedMessage
|
||||
defaultMessage="Save as a copy"
|
||||
description="Menu bar item for saving as a copy"
|
||||
id="gui.menuBar.saveAsCopy"
|
||||
/></MenuItem>
|
||||
</MenuItemTooltip>
|
||||
</MenuSection>
|
||||
<MenuSection>
|
||||
@@ -145,7 +168,11 @@ const MenuBar = props => (
|
||||
onClick={loadProject}
|
||||
{...loadProps}
|
||||
>
|
||||
Upload from your computer
|
||||
<FormattedMessage
|
||||
defaultMessage="Upload from your computer"
|
||||
description="Menu bar item for uploading a project from your computer"
|
||||
id="gui.menuBar.uploadFromComputer"
|
||||
/>
|
||||
{renderFileInput()}
|
||||
</MenuItem>
|
||||
)}</ProjectLoader>
|
||||
@@ -154,7 +181,11 @@ const MenuBar = props => (
|
||||
onClick={saveProject}
|
||||
{...saveProps}
|
||||
>
|
||||
Download to your computer
|
||||
<FormattedMessage
|
||||
defaultMessage="Download to your computer"
|
||||
description="Menu bar item for downloading a project"
|
||||
id="gui.menuBar.downloadToComputer"
|
||||
/>
|
||||
</MenuItem>
|
||||
)}</ProjectSaver>
|
||||
</MenuSection>
|
||||
@@ -166,20 +197,44 @@ const MenuBar = props => (
|
||||
})}
|
||||
onMouseUp={props.onClickEdit}
|
||||
>
|
||||
<div className={classNames(styles.editMenu)}>Edit</div>
|
||||
<div className={classNames(styles.editMenu)}>
|
||||
<FormattedMessage
|
||||
defaultMessage="Edit"
|
||||
description="Text for edit dropdown menu"
|
||||
id="gui.menuBar.edit"
|
||||
/>
|
||||
</div>
|
||||
<MenuBarMenu
|
||||
open={props.editMenuOpen}
|
||||
onRequestClose={props.onRequestCloseEdit}
|
||||
>
|
||||
<MenuItemTooltip id="undo">
|
||||
<MenuItem>Undo</MenuItem>
|
||||
<MenuItem>
|
||||
<FormattedMessage
|
||||
defaultMessage="Undo"
|
||||
description="Menu bar item for undoing"
|
||||
id="gui.menuBar.undo"
|
||||
/>
|
||||
</MenuItem>
|
||||
</MenuItemTooltip>
|
||||
<MenuItemTooltip id="redo">
|
||||
<MenuItem>Redo</MenuItem>
|
||||
<MenuItem>
|
||||
<FormattedMessage
|
||||
defaultMessage="Redo"
|
||||
description="Menu bar item for redoing"
|
||||
id="gui.menuBar.redo"
|
||||
/>
|
||||
</MenuItem>
|
||||
</MenuItemTooltip>
|
||||
<MenuSection>
|
||||
<MenuItemTooltip id="turbo">
|
||||
<MenuItem>Turbo mode</MenuItem>
|
||||
<MenuItem>
|
||||
<FormattedMessage
|
||||
defaultMessage="Turbo mode"
|
||||
description="Menu bar item for toggling turbo mode"
|
||||
id="gui.menuBar.turboMode"
|
||||
/>
|
||||
</MenuItem>
|
||||
</MenuItemTooltip>
|
||||
</MenuSection>
|
||||
</MenuBarMenu>
|
||||
@@ -262,7 +317,9 @@ const MenuBar = props => (
|
||||
className={styles.profileIcon}
|
||||
src={profileIcon}
|
||||
/>
|
||||
<span>scratch-cat</span>
|
||||
<span>
|
||||
{'scratch-cat' /* @todo username */}
|
||||
</span>
|
||||
<img
|
||||
className={styles.dropdownCaretIcon}
|
||||
src={dropdownCaret}
|
||||
|
||||
@@ -59,13 +59,21 @@ const PromptComponent = props => (
|
||||
className={styles.cancelButton}
|
||||
onClick={props.onCancel}
|
||||
>
|
||||
Cancel
|
||||
<FormattedMessage
|
||||
defaultMessage="Cancel"
|
||||
description="Button in prompt for cancelling the dialog"
|
||||
id="gui.prompt.cancel"
|
||||
/>
|
||||
</button>
|
||||
<button
|
||||
className={styles.okButton}
|
||||
onClick={props.onOk}
|
||||
>
|
||||
OK
|
||||
<FormattedMessage
|
||||
defaultMessage="OK"
|
||||
description="Button in prompt for confirming the dialog"
|
||||
id="gui.prompt.ok"
|
||||
/>
|
||||
</button>
|
||||
</Box>
|
||||
</Box>
|
||||
|
||||
@@ -28,7 +28,7 @@ const QuestionComponent = props => {
|
||||
className={styles.questionSubmitButton}
|
||||
onClick={onClick}
|
||||
>
|
||||
✔︎
|
||||
{'✔︎' /* @todo should this be an image? */}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -31,6 +31,11 @@ const messages = defineMessages({
|
||||
defaultMessage: 'Save',
|
||||
description: 'Loading/Save button in recording playback',
|
||||
id: 'gui.playbackStep.saveMsg'
|
||||
},
|
||||
reRecordMsg: {
|
||||
defaultMessage: 'Re-record',
|
||||
description: 'Button to re-record sound in recording playback',
|
||||
id: 'gui.playbackStep.reRecordMsg'
|
||||
}
|
||||
});
|
||||
|
||||
@@ -88,7 +93,8 @@ const PlaybackStep = props => (
|
||||
<img
|
||||
draggable={false}
|
||||
src={backIcon}
|
||||
/> Re-record
|
||||
/>
|
||||
{props.intl.formatMessage(messages.reRecordMsg)}
|
||||
</button>
|
||||
<button
|
||||
className={styles.okButton}
|
||||
|
||||
@@ -60,7 +60,13 @@ const StageSelector = props => {
|
||||
{...componentProps}
|
||||
>
|
||||
<div className={styles.header}>
|
||||
<div className={styles.headerTitle}>Stage</div>
|
||||
<div className={styles.headerTitle}>
|
||||
<FormattedMessage
|
||||
defaultMessage="Stage"
|
||||
description="Label for the stage in the stage selector"
|
||||
id="gui.stageSelector.stage"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
{url ? (
|
||||
<CostumeCanvas
|
||||
|
||||
@@ -194,10 +194,13 @@ class CostumeTab extends React.Component {
|
||||
setFileInput (input) {
|
||||
this.fileInput = input;
|
||||
}
|
||||
formatCostumeDetails (size) {
|
||||
formatCostumeDetails (size, optResolution) {
|
||||
// If no resolution is given, assume that the costume is an SVG
|
||||
const resolution = optResolution ? optResolution : 1;
|
||||
// Convert size to stage units by dividing by resolution
|
||||
// Round up width and height for scratch-flash compatibility
|
||||
// https://github.com/LLK/scratch-flash/blob/9fbac92ef3d09ceca0c0782f8a08deaa79e4df69/src/ui/media/MediaInfo.as#L224-L237
|
||||
return `${Math.ceil(size[0])} x ${Math.ceil(size[1])}`;
|
||||
return `${Math.ceil(size[0] / resolution)} x ${Math.ceil(size[1] / resolution)}`;
|
||||
}
|
||||
render () {
|
||||
const {
|
||||
@@ -232,7 +235,7 @@ class CostumeTab extends React.Component {
|
||||
const costumeData = (target.costumes || []).map(costume => ({
|
||||
name: costume.name,
|
||||
assetId: costume.assetId,
|
||||
details: costume.size ? this.formatCostumeDetails(costume.size) : null
|
||||
details: costume.size ? this.formatCostumeDetails(costume.size, costume.bitmapResolution) : null
|
||||
}));
|
||||
|
||||
return (
|
||||
|
||||
@@ -12,8 +12,8 @@ class PaintEditorWrapper extends React.Component {
|
||||
constructor (props) {
|
||||
super(props);
|
||||
bindAll(this, [
|
||||
'handleUpdateName',
|
||||
'handleUpdateSvg'
|
||||
'handleUpdateImage',
|
||||
'handleUpdateName'
|
||||
]);
|
||||
}
|
||||
componentDidMount () {
|
||||
@@ -22,28 +22,42 @@ class PaintEditorWrapper extends React.Component {
|
||||
handleUpdateName (name) {
|
||||
this.props.vm.renameCostume(this.props.selectedCostumeIndex, name);
|
||||
}
|
||||
handleUpdateSvg (svg, rotationCenterX, rotationCenterY) {
|
||||
this.props.vm.updateSvg(this.props.selectedCostumeIndex, svg, rotationCenterX, rotationCenterY);
|
||||
handleUpdateImage (isVector, image, rotationCenterX, rotationCenterY) {
|
||||
if (isVector) {
|
||||
this.props.vm.updateSvg(
|
||||
this.props.selectedCostumeIndex,
|
||||
image,
|
||||
rotationCenterX,
|
||||
rotationCenterY);
|
||||
} else {
|
||||
this.props.vm.updateBitmap(
|
||||
this.props.selectedCostumeIndex,
|
||||
image,
|
||||
rotationCenterX,
|
||||
rotationCenterY,
|
||||
2 /* bitmapResolution */);
|
||||
}
|
||||
}
|
||||
render () {
|
||||
if (!this.props.svgId) return null;
|
||||
if (!this.props.imageId) return null;
|
||||
return (
|
||||
<PaintEditor
|
||||
{...this.props}
|
||||
svg={this.props.vm.getCostume(this.props.selectedCostumeIndex)}
|
||||
image={this.props.vm.getCostume(this.props.selectedCostumeIndex)}
|
||||
onUpdateImage={this.handleUpdateImage}
|
||||
onUpdateName={this.handleUpdateName}
|
||||
onUpdateSvg={this.handleUpdateSvg}
|
||||
/>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
PaintEditorWrapper.propTypes = {
|
||||
imageFormat: PropTypes.string.isRequired,
|
||||
imageId: PropTypes.string.isRequired,
|
||||
name: PropTypes.string,
|
||||
rotationCenterX: PropTypes.number,
|
||||
rotationCenterY: PropTypes.number,
|
||||
selectedCostumeIndex: PropTypes.number.isRequired,
|
||||
svgId: PropTypes.string,
|
||||
vm: PropTypes.instanceOf(VM)
|
||||
};
|
||||
|
||||
@@ -59,7 +73,8 @@ const mapStateToProps = (state, {selectedCostumeIndex}) => {
|
||||
name: costume && costume.name,
|
||||
rotationCenterX: costume && costume.rotationCenterX,
|
||||
rotationCenterY: costume && costume.rotationCenterY,
|
||||
svgId: editingTarget && `${editingTarget}${costume.skinId}`,
|
||||
imageFormat: costume && costume.dataFormat,
|
||||
imageId: editingTarget && `${editingTarget}${costume.skinId}`,
|
||||
vm: state.vm
|
||||
};
|
||||
};
|
||||
|
||||
@@ -120,6 +120,20 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Ocean",
|
||||
"md5": "fb907f72b310acc8b95cbf2d2cccabc9.svg",
|
||||
"type": "backdrop",
|
||||
"tags": [
|
||||
"underwater",
|
||||
"ipzy"
|
||||
],
|
||||
"info": [
|
||||
480,
|
||||
360,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Party",
|
||||
"md5": "108160d0e44d1c340182e31c9dc0758a.svg",
|
||||
@@ -236,5 +250,19 @@
|
||||
360,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Witch House",
|
||||
"md5": "597b9a9813fe5d8d387283138a0b8f2b.svg",
|
||||
"type": "backdrop",
|
||||
"tags": [
|
||||
"fantasy",
|
||||
"ipzy"
|
||||
],
|
||||
"info": [
|
||||
480,
|
||||
360,
|
||||
1
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -276,6 +276,116 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Bear-a",
|
||||
"md5": "5a4148d7684fc95f38c58a1672062c9e.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
100,
|
||||
90,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Bear-b",
|
||||
"md5": "d6517131718621a7aae8fc4f27de1ded.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
80,
|
||||
140,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Bear-walk-a",
|
||||
"md5": "d15eddb1a0f0ff0fa867bc006b46685d.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
130,
|
||||
94,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Bear-walk-b",
|
||||
"md5": "06e3f1bcf4f46b83df3820d92430f202.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
130,
|
||||
94,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Bear-walk-c",
|
||||
"md5": "13a3584040c9903b1824bb249d7f8a0e.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
130,
|
||||
94,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Bear-walk-d",
|
||||
"md5": "c5d49a105619c497be45a5d2c43a740a.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
130,
|
||||
94,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Bear-walk-e",
|
||||
"md5": "ece252d79c2d30c647c43c58986d9671.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
130,
|
||||
94,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Bear-walk-f",
|
||||
"md5": "ff66b87efec0e647dc30ec58df168ec4.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
130,
|
||||
94,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Bear-walk-g",
|
||||
"md5": "d1404b12adf0d6b1b881f0dca47ce21a.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
130,
|
||||
94,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Bear-walk-h",
|
||||
"md5": "489055be58a7d9806e1d50455c88c399.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
130,
|
||||
94,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Beetle",
|
||||
"md5": "e1ce8f153f011fdd52486c91c6ed594d.svg",
|
||||
@@ -342,6 +452,28 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Bread",
|
||||
"md5": "68366160ce0ac1221cdde4455eca9cba.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
37,
|
||||
12,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Broom",
|
||||
"md5": "836197f784bc4c4decfb1a5a60ca6c56.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
135,
|
||||
25,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Building-a",
|
||||
"md5": "d713270e235851e5962becd73a951771.svg",
|
||||
@@ -705,6 +837,50 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Centaur-a",
|
||||
"md5": "45c1890ae0ab41f24f67ea74bec006c9.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
110,
|
||||
140,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Centaur-b",
|
||||
"md5": "783e8cd43e0c1feca25f639cb5cbc7da.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
110,
|
||||
140,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Centaur-c",
|
||||
"md5": "d09f7160383c6399354c3d9960e852db.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
110,
|
||||
140,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Centaur-d",
|
||||
"md5": "1ba8b4d384f995688c1b7048d1935697.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
110,
|
||||
140,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Cloud-a",
|
||||
"md5": "c7d7de8e29179407f03b054fa640f4d0.svg",
|
||||
@@ -771,6 +947,28 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Crystal-a",
|
||||
"md5": "8520264d48537bea17b7f6d18e9bb558.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
15,
|
||||
15,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Crystal-b",
|
||||
"md5": "b62ce1dc2d34741bad036664a01912fb.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
12,
|
||||
24,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Dinosaur1-a",
|
||||
"md5": "75d367961807fff8e81f556da81dec24.svg",
|
||||
@@ -1134,6 +1332,39 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Dragon-a",
|
||||
"md5": "8aed65cee4cfe22b4f4b8e749092dbbb.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
210,
|
||||
150,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Dragon-b",
|
||||
"md5": "c3360f16bb78b136d9911325da9fda49.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
210,
|
||||
150,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Dragon-c",
|
||||
"md5": "e81af82ebde008c167ebc6874df3ecb4.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
210,
|
||||
150,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Dragon1-a",
|
||||
"md5": "ee0082b436d6d5dc3de33047166e7bf2.svg",
|
||||
@@ -1354,6 +1585,61 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Elf-a",
|
||||
"md5": "00748a750dc4fd754ce4debb5e3595c0.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
50,
|
||||
140,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Elf-b",
|
||||
"md5": "91815a19569ef9f0ef68bca56bb80446.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
50,
|
||||
140,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Elf-c",
|
||||
"md5": "8153eaf84bc3db9a671cafd34506243b.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
50,
|
||||
140,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Elf-d",
|
||||
"md5": "2432797fc69a62fc643505b0ba039169.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
50,
|
||||
140,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Elf-e",
|
||||
"md5": "a06e6c93b143ae2a7b776bd1deee6b59.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
50,
|
||||
140,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Empty",
|
||||
"md5": "cd21514d0531fdffb22204e0ec5ed84a.svg",
|
||||
@@ -1365,6 +1651,61 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Fairy-a",
|
||||
"md5": "fe97687c7f1b747bb6f41c252cc5926a.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
85,
|
||||
140,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Fairy-b",
|
||||
"md5": "c8e0d935b2e4372ecc813705a79be3eb.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
85,
|
||||
140,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Fairy-c",
|
||||
"md5": "4d0740d1b5be93256ad235062daa876b.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
85,
|
||||
140,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Fairy-d",
|
||||
"md5": "ca555dadd377431e38a3bc67ece4d36a.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
85,
|
||||
140,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Fairy-e",
|
||||
"md5": "a681f6d6044abdebcdd6634ce85da484.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
85,
|
||||
140,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Fish-a",
|
||||
"md5": "8598752b1b7b9892c23817c4ed848e7d.svg",
|
||||
@@ -1585,6 +1926,50 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Goblin-a",
|
||||
"md5": "f10eaedff51f50f0809a7b4b310337fa.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
40,
|
||||
80,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Goblin-b",
|
||||
"md5": "71e7c77d89299cd99739b1216fc03a85.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
40,
|
||||
80,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Goblin-c",
|
||||
"md5": "ab0611427d6f9b54d83672cf9e554876.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
40,
|
||||
80,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Goblin-d",
|
||||
"md5": "87dd413e7a8545bea9b3da208a5d5735.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
40,
|
||||
80,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Gobo-a",
|
||||
"md5": "1f5ea0d12f85aed2e471cdd21b0bd6d7.svg",
|
||||
@@ -1618,6 +2003,39 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Griffin-a",
|
||||
"md5": "d2ddc25b224ad72240f92e632afc7c69.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
150,
|
||||
110,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Griffin-fly-a",
|
||||
"md5": "03d75e0c7c34e8618545a5f4913db4ea.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
150,
|
||||
110,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Griffin-fly-b",
|
||||
"md5": "ff0795d15b6f3990345f72bc483a3353.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
150,
|
||||
110,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Guitar-a",
|
||||
"md5": "cb8c2a5e69da7538e1dd73cb7ff4a666.svg",
|
||||
@@ -1827,6 +2245,28 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Jar-a",
|
||||
"md5": "73784b267083733e08bcf06aa7d6536a.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
20,
|
||||
25,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Jar-b",
|
||||
"md5": "a37eb72115966a75bc1bf521deeccc0c.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
20,
|
||||
25,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Jellyfish-a",
|
||||
"md5": "9e6563e417350af3094c2ed02b9b0bbd.svg",
|
||||
@@ -2124,6 +2564,50 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Mermaid-a",
|
||||
"md5": "36db41c47259881c26d9b98a806d3308.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
92,
|
||||
130,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Mermaid-b",
|
||||
"md5": "564bf3f466df3b3e8aba71eeae8255ab.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
92,
|
||||
130,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Mermaid-swim-a",
|
||||
"md5": "9f973b89b68f7d8147f157cbac8af341.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
150,
|
||||
115,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Mermaid-swim-b",
|
||||
"md5": "2295784bb8e6354bfa7676089235cb9f.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
150,
|
||||
115,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Microphone-a",
|
||||
"md5": "9126b6362313e20578fb88d38902cd4c.svg",
|
||||
@@ -2586,6 +3070,94 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Potion-a",
|
||||
"md5": "a317b50b255a208455a7733091adad23.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
15,
|
||||
21,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Potion-b",
|
||||
"md5": "5f96576605c3a022df48278b630da745.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
15,
|
||||
28,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Potion-c",
|
||||
"md5": "92d0184c28fac9acb0fb720ec599d61d.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
15,
|
||||
42,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Princess-a",
|
||||
"md5": "fcbf44a543dfda884d8acbd6af66faad.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
75,
|
||||
150,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Princess-b",
|
||||
"md5": "562e5eba4a598118411be3062cfbb26f.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
75,
|
||||
150,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Princess-c",
|
||||
"md5": "f3e5f466d406745cf1b6ce44b0567b9a.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
75,
|
||||
150,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Princess-d",
|
||||
"md5": "663134f64588f0c55e77767ba9039cfe.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
75,
|
||||
150,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Princess-e",
|
||||
"md5": "ad0ecbf907d132ddbb547666551ac087.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
75,
|
||||
150,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Pufferfish-a",
|
||||
"md5": "81d7db99142a39c9082be2c2183f2175.svg",
|
||||
@@ -2872,6 +3444,17 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Shark-a",
|
||||
"md5": "4ca6776e9c021e8b21c3346793c9361d.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
150,
|
||||
60,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Shark-a ",
|
||||
"md5": "7c0a907eae79462f69f8e2af8e7df828.svg",
|
||||
@@ -2883,6 +3466,17 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Shark-b",
|
||||
"md5": "0bb623f0bbec53ee9667cee0b7ad6d47.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
150,
|
||||
60,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Shark-b ",
|
||||
"md5": "cff9ae87a93294693a0650b38a7a33d2.svg",
|
||||
@@ -3259,12 +3853,89 @@
|
||||
},
|
||||
{
|
||||
"name": "Unicorn",
|
||||
"md5": "a04def38351e7fd805226345cac4fbfe.svg",
|
||||
"md5": "bd2cf980966c13d5ad3ab403bae4bb05.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
75,
|
||||
75,
|
||||
100,
|
||||
100,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Unicorn-run-a",
|
||||
"md5": "c6456df027561c74b70b8b25ab83fec9.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
130,
|
||||
100,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Unicorn-run-b",
|
||||
"md5": "f2d6c5b62b56d0cc51598126c74e0ace.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
130,
|
||||
100,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Unicorn-run-c",
|
||||
"md5": "fba367b11a710bf542333649c4d68e1e.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
130,
|
||||
100,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Unicorn-run-d",
|
||||
"md5": "20bad70a67e0c7ed3255c65780cdb2a8.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
130,
|
||||
100,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Unicorn-run-e",
|
||||
"md5": "39db08aafdde1542e755b8ead8df7a1f.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
130,
|
||||
100,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Unicorn-run-f",
|
||||
"md5": "d66d0625702433a4cbd7591e39676700.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
130,
|
||||
100,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Wand",
|
||||
"md5": "1aa56e9ef7043eaf36ecfe8e330271b7.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
12,
|
||||
42,
|
||||
1
|
||||
]
|
||||
},
|
||||
@@ -3312,6 +3983,50 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Witch-a",
|
||||
"md5": "cbc54e15cd62f0c16369587377636099.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
65,
|
||||
140,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Witch-b",
|
||||
"md5": "64d2c4c51e6cb6008cd5e93f77e6f591.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
65,
|
||||
140,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Witch-c",
|
||||
"md5": "00b768c3da5b4ee3efddf05d1eb88de2.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
65,
|
||||
140,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Witch-d",
|
||||
"md5": "4fe4c0ee34a9028f2c6988b7294a61c1.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
65,
|
||||
140,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Wizard",
|
||||
"md5": "4df1dd733f6ee4a2d8842478ac2c4661.svg",
|
||||
@@ -3323,6 +4038,61 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Wizard-a",
|
||||
"md5": "9632aab80fce1c5bdb58150b29cb0067.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
87,
|
||||
150,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Wizard-b",
|
||||
"md5": "36c9b8b93ddb2c392b7145862fc4e8d8.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
79,
|
||||
144,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Wizard-c",
|
||||
"md5": "16d4d221a2182278cfa6b0621f455cf6.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
87,
|
||||
150,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Wizard-toad-a",
|
||||
"md5": "fd5c4cce36e866489febc227e23b21aa.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
87,
|
||||
80,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Wizard-toad-b",
|
||||
"md5": "4c260807d4ac4c0ad39760f1efeef1de.svg",
|
||||
"type": "costume",
|
||||
"tags": [],
|
||||
"info": [
|
||||
87,
|
||||
80,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Wizard1",
|
||||
"md5": "e085c97691d16f0cc8a595ce1137e26c.svg",
|
||||
|
||||
+1381
-50
File diff suppressed because it is too large.
Load diff
@@ -87,7 +87,7 @@ class SeleniumHelper {
|
||||
}
|
||||
|
||||
clickButton (text) {
|
||||
return this.clickXpath(`//button[contains(text(), '${text}')]`);
|
||||
return this.clickXpath(`//button//*[contains(text(), '${text}')]`);
|
||||
}
|
||||
|
||||
getLogs (whitelist) {
|
||||
|
||||
Reference in new issue
Block a user