@@ -5,12 +5,12 @@ import MenuItem from 'material-ui/MenuItem';
55import { Card , CardTitle , CardText } from 'material-ui/Card' ;
66import RaisedButton from 'material-ui/RaisedButton' ;
77import { pjSave , pjLoad , tutorialInit , routeSet , editorPjOpen } from '../../actions' ;
8- import languageItems from './languageItems' ;
98import runnerItems from './runnerItems' ;
109import { topElement } from '../TopPanel' ;
1110import textField from '../Form/textField' ;
1211import selectField from '../Form/selectField' ;
1312import validate from './validate' ;
13+ import handleDeps from './handleDeps' ;
1414
1515const styles = {
1616 card : {
@@ -66,21 +66,16 @@ class TutorialConfig extends React.Component <{
6666 }
6767 shouldComponentUpdate ( ) {
6868 // hack to prevent lost focus on component update
69- return ! ( document . activeElement &&
70- typeof document . activeElement . value === 'string' ) ;
69+ return ! (
70+ document . activeElement &&
71+ typeof document . activeElement . value === 'string'
72+ ) ;
7173 }
7274 onSubmit ( values ) {
7375 const { packageJson} = this . props ;
7476 const { name, runnerItem, repo} = values ;
7577 const [ language , runner ] = runnerItem . split ( ': ' ) ;
76-
77- if ( ! packageJson . dependencies || ! packageJson . dependencies . hasOwnProperty ( runner ) ) {
78- alert ( `run "npm install" to load your test runner` ) ;
79- // add dependency
80- const dep = { } ;
81- dep [ runner ] = 'latest' ;
82- const dependencies = Object . assign ( { } , packageJson . dependencies , dep ) ;
83- }
78+ const dependencies = handleDeps ( packageJson , runner ) ;
8479
8580 this . props . pjSave ( Object . assign (
8681 { } ,
0 commit comments