p5.js-web-editor/client/modules/IDE/reducers/files.js

63 lines
1.3 KiB
JavaScript
Raw Normal View History

2016-06-22 21:58:23 +02:00
import * as ActionTypes from '../../../constants';
2016-05-05 23:48:26 +02:00
const defaultSketch = `function setup() {
2016-06-24 00:29:55 +02:00
createCanvas(400, 400);
2016-05-10 00:28:38 +02:00
}
function draw() {
2016-06-24 00:29:55 +02:00
background(220);
}`;
const defaultHTML =
`
<!DOCTYPE html>
<html>
<head>
2016-07-11 21:22:29 +02:00
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.0/p5.min.js"></script>
</head>
<body>
<script src="sketch.js"></script>
</body>
</html>
`;
2016-07-08 20:57:22 +02:00
// if the project has never been saved,
const initialState = [
{
name: 'sketch.js',
2016-07-08 20:57:22 +02:00
content: defaultSketch,
id: '1'
},
{
name: 'index.html',
2016-07-08 20:57:22 +02:00
content: defaultHTML,
id: '2'
}];
2016-05-05 23:48:26 +02:00
const files = (state = initialState, action) => {
2016-06-24 00:29:55 +02:00
switch (action.type) {
case ActionTypes.UPDATE_FILE_CONTENT:
return state.map(file => {
if (file.name !== action.name) {
return file;
}
return Object.assign({}, file, { content: action.content });
});
2016-06-24 00:29:55 +02:00
case ActionTypes.NEW_PROJECT:
return [...action.files];
2016-06-29 18:52:16 +02:00
case ActionTypes.SET_PROJECT:
return [...action.files];
2016-06-24 00:29:55 +02:00
default:
return state;
}
};
2016-05-05 23:48:26 +02:00
2016-07-08 20:57:22 +02:00
export const getFile = (state, id) => state.filter(file => file.id === id)[0];
2016-07-11 21:22:29 +02:00
export const getHTMLFile = (state) => state.filter(file => file.name.match(/.*html$/))[0];
export const getJSFiles = (state) => state.filter(file => file.name.match(/.*.js$/));
2016-07-08 20:57:22 +02:00
export default files;