Spaces:
Runtime error
Runtime error
| import PropTypes from 'prop-types'; | |
| import React from 'react'; | |
| import bindAll from 'lodash.bindall'; | |
| import PromptComponent from '../components/prompt/prompt.jsx'; | |
| import VM from 'scratch-vm'; | |
| import {SCRATCH_MAX_CLOUD_VARIABLES} from '../lib/tw-cloud-limits.js'; | |
| class Prompt extends React.Component { | |
| constructor (props) { | |
| super(props); | |
| bindAll(this, [ | |
| 'handleOk', | |
| 'handleScopeOptionSelection', | |
| 'handleCancel', | |
| 'handleChange', | |
| 'handleKeyPress', | |
| 'handleCloudVariableOptionChange' | |
| ]); | |
| this.state = { | |
| isAddingCloudVariableScratchSafe: ( | |
| props.vm && | |
| props.vm.runtime.getNumberOfCloudVariables() < SCRATCH_MAX_CLOUD_VARIABLES | |
| ) || false, | |
| inputValue: '', | |
| globalSelected: true, | |
| cloudSelected: false, | |
| canAddCloudVariable: (props.vm && props.vm.runtime.canAddCloudVariable()) || false | |
| }; | |
| } | |
| handleKeyPress (event) { | |
| if (event.key === 'Enter') this.handleOk(); | |
| } | |
| handleFocus (event) { | |
| event.target.select(); | |
| } | |
| handleOk () { | |
| this.props.onOk(this.state.inputValue, { | |
| scope: this.state.globalSelected ? 'global' : 'local', | |
| isCloud: this.state.cloudSelected | |
| }); | |
| } | |
| handleCancel () { | |
| this.props.onCancel(); | |
| } | |
| handleChange (e) { | |
| this.setState({inputValue: e.target.value}); | |
| } | |
| handleScopeOptionSelection (e) { | |
| this.setState({globalSelected: (e.target.value === 'global')}); | |
| } | |
| handleCloudVariableOptionChange (e) { | |
| if (!this.props.showCloudOption) return; | |
| const checked = e.target.checked; | |
| this.setState({cloudSelected: checked}); | |
| if (checked) { | |
| this.setState({globalSelected: true}); | |
| } | |
| } | |
| render () { | |
| return ( | |
| <PromptComponent | |
| isAddingCloudVariableScratchSafe={this.state.isAddingCloudVariableScratchSafe} | |
| canAddCloudVariable={this.state.canAddCloudVariable} | |
| cloudSelected={this.state.cloudSelected} | |
| defaultValue={this.props.defaultValue} | |
| globalSelected={this.state.globalSelected} | |
| isStage={this.props.isStage} | |
| showListMessage={this.props.showListMessage} | |
| label={this.props.label} | |
| showCloudOption={this.props.showCloudOption} | |
| showVariableOptions={this.props.showVariableOptions} | |
| title={this.props.title} | |
| onCancel={this.handleCancel} | |
| onChange={this.handleChange} | |
| onCloudVarOptionChange={this.handleCloudVariableOptionChange} | |
| onFocus={this.handleFocus} | |
| onKeyPress={this.handleKeyPress} | |
| onOk={this.handleOk} | |
| onScopeOptionSelection={this.handleScopeOptionSelection} | |
| /> | |
| ); | |
| } | |
| } | |
| Prompt.propTypes = { | |
| defaultValue: PropTypes.string, | |
| isStage: PropTypes.bool.isRequired, | |
| showListMessage: PropTypes.bool.isRequired, | |
| label: PropTypes.string.isRequired, | |
| onCancel: PropTypes.func.isRequired, | |
| onOk: PropTypes.func.isRequired, | |
| showCloudOption: PropTypes.bool.isRequired, | |
| showVariableOptions: PropTypes.bool.isRequired, | |
| title: PropTypes.string.isRequired, | |
| vm: PropTypes.instanceOf(VM) | |
| }; | |
| export default Prompt; | |