From 5c018b3f2c2c47371546d210240836057d1ea5bb Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 5 Jun 2018 22:02:19 +0200 Subject: set menu dropdown from url. make pix2pix views --- app/client/common/header.component.js | 1 + app/client/modules/pix2pix/index.js | 7 +- app/client/modules/pix2pix/pix2pix.actions.js | 122 +++ app/client/modules/pix2pix/pix2pix.live.js | 253 ------ app/client/modules/pix2pix/pix2pix.tasks.js | 53 ++ app/client/modules/pix2pix/views/pix2pix.live.js | 253 ++++++ app/client/modules/pix2pix/views/pix2pix.new.js | 16 + app/client/modules/pix2pix/views/pix2pix.show.js | 115 +++ app/client/modules/samplernn/samplernn.actions.js | 11 - .../modules/samplernn/views/samplernn.new.js | 31 +- .../modules/samplernn/views/samplernn.show.js | 1 - app/client/system/system.reducer.js | 11 + app/client/types.js | 2 + public/bundle.js | 916 ++++++++++++++++----- public/bundle.js.map | 2 +- 15 files changed, 1282 insertions(+), 512 deletions(-) create mode 100644 app/client/modules/pix2pix/pix2pix.actions.js delete mode 100644 app/client/modules/pix2pix/pix2pix.live.js create mode 100644 app/client/modules/pix2pix/pix2pix.tasks.js create mode 100644 app/client/modules/pix2pix/views/pix2pix.live.js create mode 100644 app/client/modules/pix2pix/views/pix2pix.new.js create mode 100644 app/client/modules/pix2pix/views/pix2pix.show.js diff --git a/app/client/common/header.component.js b/app/client/common/header.component.js index 776fbe4..8a2310f 100644 --- a/app/client/common/header.component.js +++ b/app/client/common/header.component.js @@ -13,6 +13,7 @@ function Header({ site, app, fps, playing, actions }) { return }) const Links = modules[app.tool].links + console.log(app, site, Object.keys(modules)) return (
{site.name} cortex diff --git a/app/client/modules/pix2pix/index.js b/app/client/modules/pix2pix/index.js index f60cf36..ffe5f6b 100644 --- a/app/client/modules/pix2pix/index.js +++ b/app/client/modules/pix2pix/index.js @@ -1,11 +1,16 @@ import { h, Component } from 'preact' import { Route, Link } from 'react-router-dom' -import Pix2PixLive from './pix2pix.live' +import Pix2PixNew from './views/pix2pix.new' +import Pix2PixShow from './views/pix2pix.show' +import Pix2PixLive from './views/pix2pix.live' function router () { return (
+ + +
) diff --git a/app/client/modules/pix2pix/pix2pix.actions.js b/app/client/modules/pix2pix/pix2pix.actions.js new file mode 100644 index 0000000..5d53136 --- /dev/null +++ b/app/client/modules/pix2pix/pix2pix.actions.js @@ -0,0 +1,122 @@ +import uuidv1 from 'uuid/v1' + +import socket from '../../socket' +import types from '../../types' + +import * as datasetLoader from '../../dataset/dataset.loader' + +import actions from '../../actions' + +import { allProgress } from '../../util' + +export const load_directories = (id) => (dispatch) => { + const module = 'samplernn' + allProgress([ + datasetLoader.load(module), + actions.task.index({ module }), + // actions.socket.list_directory({ module, dir: 'datasets' }), + // actions.socket.list_directory({ module, dir: 'results' }), + // actions.socket.list_directory({ module, dir: 'output' }), + // actions.socket.disk_usage({ module, dir: 'datasets' }), + ], (percent, i, n) => { + dispatch({ type: types.app.load_progress, progress: { i, n }}) + }).then(res => { + // console.log(res) + const [datasetApiReport, tasks] = res //, datasets, results, output, datasetUsage, lossReport] = res + + const { + folderLookup, + fileLookup, + datasetLookup, + folders, + files, + unsortedFolder, + } = datasetApiReport + // console.log(datasetUsage) + + // // also show the various flat audio files we have, in the input area.. + // const flatDatasets = datasets.filter(s => s.name.match(/(wav|aiff?|flac|mp3)$/) && !s.dir) + // const builtDatasets = datasets.filter(s => s.dir) + // builtDatasets.forEach(dir => { + // const dataset = datasetLoader.getDataset(module, datasetLookup, dir.name) + // dataset.isBuilt = true + // }) + + // flatDatasets.forEach(file => { + // file.uuid = uuidv1() + // fileLookup[file.uuid] = file + // const name = file.name.split('.')[0] + // const dataset = datasetLoader.getDataset(module, datasetLookup, name, unsortedFolder, file.date) + // file.persisted = false + // dataset.input.push(file.uuid) + // }) + + // // exp:coccokit_3-frame_sizes:8,2-n_rnn:2-dataset:coccokit_3 + // const checkpoints = results.filter(s => s.dir).map(s => { + // const checkpoint = s.name + // .split('-') + // .map(s => s.split(':')) + // .filter(b => b.length && b[1]) + // .reduce((a,b) => (a[b[0]] = b[1]) && a, {}) + // checkpoint.name = checkpoint.name || checkpoint.dataset || checkpoint.exp + // checkpoint.date = s.date + // checkpoint.dir = s + // checkpoint.persisted = false + // const dataset = datasetLoader.getDataset(module, datasetLookup, checkpoint.name, unsortedFolder, checkpoint.date) + // const loss = lossReport[checkpoint.name] + // if (loss) { + // dataset.epoch = checkpoint.epoch = loss.length + // checkpoint.training_loss = loss + // } + // dataset.checkpoints.push(checkpoint) + // return checkpoint + // }) + + // output.map(file => { + // file.uuid = uuidv1() + // fileLookup[file.uuid] = file + // const pair = file.name.split('.')[0].split('-') + // const dataset = datasetLoader.getDataset(module, datasetLookup, pair[0], unsortedFolder, file.date) + // file.persisted = false + // file.epoch = parseInt(file.epoch || pair[1].replace(/^\D+/, '')) || 0 + // dataset.epoch = Math.max(file.epoch, dataset.epoch || 0) + // // here check if the file exists in dataset, if so just check that it's persisted + // const found = dataset.output.some(file_id => { + // // if (f.name === + // if (fileLookup[file_id].name === file.name) { + // fileLookup[file_id].persisted = true + // return true + // } + // return false + // }) + // if (! found) { + // dataset.output.push(file.uuid) + // } + // }) + + dispatch({ + type: types.dataset.load, + data: { + module, + folderLookup, + fileLookup, + datasetLookup, + folders, files, + checkpoints, + output, + }, + }) + if (id) { + console.log('folder id', id) + dispatch({ + type: types.pix2pix.set_folder, + folder_id: id, + }) + } + }).catch(e => { + console.error(e) + }) +} + +export const set_folder = (folder) => { types.pix2pix.set_folder, folder } + diff --git a/app/client/modules/pix2pix/pix2pix.live.js b/app/client/modules/pix2pix/pix2pix.live.js deleted file mode 100644 index bb6c730..0000000 --- a/app/client/modules/pix2pix/pix2pix.live.js +++ /dev/null @@ -1,253 +0,0 @@ -import { h, Component } from 'preact' -import { bindActionCreators } from 'redux' -import { connect } from 'react-redux' - -import Player from '../../common/player.component' -import ParamGroup from '../../common/paramGroup.component' -import Slider from '../../common/slider.component' -import Select from '../../common/select.component' -import Button from '../../common/button.component' - -import { startRecording, stopRecording, saveFrame } from '../../live/player' - -import * as liveActions from '../../live/live.actions' - -class Pix2PixLive extends Component { - constructor(props){ - super() - props.actions.get_params() - props.actions.list_checkpoints() - props.actions.list_sequences() - this.changeCheckpoint = this.changeCheckpoint.bind(this) - this.changeEpoch = this.changeEpoch.bind(this) - this.changeSequence = this.changeSequence.bind(this) - this.seek = this.seek.bind(this) - this.togglePlaying = this.togglePlaying.bind(this) - this.toggleRecording = this.toggleRecording.bind(this) - } - componentWillUpdate(nextProps) { - if (nextProps.opt.checkpoint_name && nextProps.opt.checkpoint_name !== this.props.opt.checkpoint_name) { - this.props.actions.list_epochs(nextProps.opt.checkpoint_name) - } - } - changeCheckpoint(checkpoint_name){ - this.props.actions.load_epoch(checkpoint_name, 'latest') - } - changeEpoch(epoch_name){ - this.props.actions.load_epoch(this.props.opt.checkpoint_name, epoch_name) - } - changeSequence(sequence){ - console.log('got sequence', sequence) - this.props.actions.load_sequence(sequence) - } - seek(percentage){ - const frame = Math.floor(percentage * (parseInt(this.props.frame.sequence_len) || 1) + 1) - this.props.actions.seek(frame) - } - togglePlaying(){ - if (this.props.opt.processing) { - this.props.actions.pause() - } else { - this.props.actions.play() - } - } - toggleRecording(){ - if (this.props.opt.recording){ - stopRecording() - this.props.actions.pause() - } else { - startRecording() - } - } - render(){ - return ( -
- -
-
- - - - - - - - -
-
- - - - - - - - - - - - - - - - -
-
- - - - - - - - - - - - - - - - - - - -
-
-
- ) - } -} -function timeInSeconds(n){ - return (n / 10).toFixed(1) + ' s.' -} -const mapStateToProps = state => ({ - opt: state.live.opt, - frame: state.live.frame, - checkpoints: state.live.checkpoints, - epochs: state.live.epochs, - sequences: state.live.sequences, -}) - -const mapDispatchToProps = (dispatch, ownProps) => ({ - actions: bindActionCreators(liveActions, dispatch) -}) - -export default connect(mapStateToProps, mapDispatchToProps)(Pix2PixLive) diff --git a/app/client/modules/pix2pix/pix2pix.tasks.js b/app/client/modules/pix2pix/pix2pix.tasks.js new file mode 100644 index 0000000..eaecca8 --- /dev/null +++ b/app/client/modules/pix2pix/pix2pix.tasks.js @@ -0,0 +1,53 @@ +import uuidv1 from 'uuid/v1' + +import socket from '../../socket' +import types from '../../types' + +import actions from '../../actions' + +// export const train_task = (dataset, folder_id, epochs=1) => dispatch => { +// const task = { +// module: 'samplernn', +// activity: 'train', +// dataset: dataset.name, +// epochs: epochs, +// opt: { +// folder_id: folder_id, +// sample_length: 44100 * 5, +// n_samples: 6, +// keep_old_checkpoints: false, +// } +// } +// console.log(task) +// return actions.queue.add_task(task) +// } +// export const fetch_task = (url, file_id, dataset) => dispatch => { +// if (! url) return console.log('input file inaccessible (no url)') +// const task = { +// module: 'samplernn', +// activity: 'fetch', +// dataset: dataset, +// opt: { +// url, +// file_id, +// dataset, +// } +// } +// return actions.queue.add_task(task) +// } +// export const log_task = (dataset) => dispatch => { +// const task = { +// module: 'samplernn', +// activity: 'log', +// dataset: dataset.name, +// } +// return actions.queue.add_task(task) +// } +// export const clear_cache_task = (dataset) => dispatch => { +// const task = { +// module: 'samplernn', +// activity: 'clear_cache', +// dataset: dataset.name, +// } +// return actions.queue.add_task(task) +// } \ No newline at end of file diff --git a/app/client/modules/pix2pix/views/pix2pix.live.js b/app/client/modules/pix2pix/views/pix2pix.live.js new file mode 100644 index 0000000..fc6bc9b --- /dev/null +++ b/app/client/modules/pix2pix/views/pix2pix.live.js @@ -0,0 +1,253 @@ +import { h, Component } from 'preact' +import { bindActionCreators } from 'redux' +import { connect } from 'react-redux' + +import Player from '../../../common/player.component' +import ParamGroup from '../../../common/paramGroup.component' +import Slider from '../../../common/slider.component' +import Select from '../../../common/select.component' +import Button from '../../../common/button.component' + +import { startRecording, stopRecording, saveFrame } from '../../../live/player' + +import * as liveActions from '../../../live/live.actions' + +class Pix2PixLive extends Component { + constructor(props){ + super() + props.actions.get_params() + props.actions.list_checkpoints() + props.actions.list_sequences() + this.changeCheckpoint = this.changeCheckpoint.bind(this) + this.changeEpoch = this.changeEpoch.bind(this) + this.changeSequence = this.changeSequence.bind(this) + this.seek = this.seek.bind(this) + this.togglePlaying = this.togglePlaying.bind(this) + this.toggleRecording = this.toggleRecording.bind(this) + } + componentWillUpdate(nextProps) { + if (nextProps.opt.checkpoint_name && nextProps.opt.checkpoint_name !== this.props.opt.checkpoint_name) { + this.props.actions.list_epochs(nextProps.opt.checkpoint_name) + } + } + changeCheckpoint(checkpoint_name){ + this.props.actions.load_epoch(checkpoint_name, 'latest') + } + changeEpoch(epoch_name){ + this.props.actions.load_epoch(this.props.opt.checkpoint_name, epoch_name) + } + changeSequence(sequence){ + console.log('got sequence', sequence) + this.props.actions.load_sequence(sequence) + } + seek(percentage){ + const frame = Math.floor(percentage * (parseInt(this.props.frame.sequence_len) || 1) + 1) + this.props.actions.seek(frame) + } + togglePlaying(){ + if (this.props.opt.processing) { + this.props.actions.pause() + } else { + this.props.actions.play() + } + } + toggleRecording(){ + if (this.props.opt.recording){ + stopRecording() + this.props.actions.pause() + } else { + startRecording() + } + } + render(){ + return ( +
+ +
+
+ + + + + + + + +
+
+ + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + +
+
+
+ ) + } +} +function timeInSeconds(n){ + return (n / 10).toFixed(1) + ' s.' +} +const mapStateToProps = state => ({ + opt: state.live.opt, + frame: state.live.frame, + checkpoints: state.live.checkpoints, + epochs: state.live.epochs, + sequences: state.live.sequences, +}) + +const mapDispatchToProps = (dispatch, ownProps) => ({ + actions: bindActionCreators(liveActions, dispatch) +}) + +export default connect(mapStateToProps, mapDispatchToProps)(Pix2PixLive) diff --git a/app/client/modules/pix2pix/views/pix2pix.new.js b/app/client/modules/pix2pix/views/pix2pix.new.js new file mode 100644 index 0000000..173777c --- /dev/null +++ b/app/client/modules/pix2pix/views/pix2pix.new.js @@ -0,0 +1,16 @@ +import { h, Component } from 'preact' +import { bindActionCreators } from 'redux' +import { connect } from 'react-redux' +import * as util from '../../../util' + +import NewDatasetForm from '../../../dataset/dataset.new' + +import pix2pixModule from '../pix2pix.module' + +export default function Pix2PixNew ({ history }) { + return ( +
+ +
+ ) +} diff --git a/app/client/modules/pix2pix/views/pix2pix.show.js b/app/client/modules/pix2pix/views/pix2pix.show.js new file mode 100644 index 0000000..b4cdc50 --- /dev/null +++ b/app/client/modules/pix2pix/views/pix2pix.show.js @@ -0,0 +1,115 @@ +import { h, Component } from 'preact' +import { bindActionCreators } from 'redux' +import { connect } from 'react-redux' +import * as util from '../../../util' + +import * as pix2pixActions from '../pix2pix.actions' +import * as pix2pixTasks from '../pix2pix.tasks' + +import Loading from '../../../common/loading.component' +import DatasetForm from '../../../dataset/dataset.form' +import NewDatasetForm from '../../../dataset/dataset.new' +import UploadStatus from '../../../dataset/upload.status' +import { FileList, FileRow } from '../../../common/fileList.component' + +import DatasetComponent from '../../../dataset/dataset.component' + +import pix2pixModule from '../pix2pix.module' + +class Pix2pixShow extends Component { + constructor(props){ + super(props) + this.datasetActions = this.datasetActions.bind(this) + } + componentWillMount(){ + const id = this.props.match.params.id || localStorage.getItem('pix2pix.last_id') + console.log('load dataset:', id) + const { match, pix2pix, actions } = this.props + if (id === 'new') return + if (id) { + if (parseInt(id)) localStorage.setItem('pix2pix.last_id', id) + if (! pix2pix.folder || pix2pix.folder.id !== id) { + actions.load_directories(id) + } + } + } + render(){ + const { pix2pix, match, history } = this.props + const { folderLookup } = (pix2pix.data || {}) + const folder = (folderLookup || {})[pix2pix.folder_id] || {} + return ( +
+
+
+

{folder ? folder.name : }

+ +
+
+ {folder && folder.name && folder.name !== 'unsorted' && + + } + { + e.preventDefault() + e.stopPropagation() + console.log('picked a file', file) + }} + datasetActions={this.datasetActions} + /> +
+ ) + } + datasetActions(dataset, isFetching=false, isProcessing=false){ + const { pix2pix, remote } = this.props + const input = pix2pix.data.fileLookup[dataset.input[0]] + if (! input) return null + if (input.name && input.name.match(/(gif|jpe?g|png)$/i)) return null + return ( +
+
+ remote.train_task(dataset, pix2pix.folder_id, 1)}>train + remote.train_task(dataset, pix2pix.folder_id, 2)}>2x + remote.train_task(dataset, pix2pix.folder_id, 4)}>4x + remote.train_task(dataset, pix2pix.folder_id, 6)}>6x + remote.train_task(dataset, pix2pix.folder_id, 18)}>18x +
+ {dataset.isBuilt + ?
+ {'fetched '} + remote.clear_cache_task(dataset)}>rm +
+ : isFetching + ?
+ {'fetching'} +
+ :
+ remote.fetch_task(input.url, input.id, dataset.name)}>fetch +
+ } +
+ ) + } +} + +const mapStateToProps = state => ({ + pix2pix: state.module.pix2pix, +}) + +const mapDispatchToProps = (dispatch, ownProps) => ({ + actions: bindActionCreators(pix2pixActions, dispatch), + remote: bindActionCreators(pix2pixTasks, dispatch), +}) + +export default connect(mapStateToProps, mapDispatchToProps)(Pix2pixShow) diff --git a/app/client/modules/samplernn/samplernn.actions.js b/app/client/modules/samplernn/samplernn.actions.js index 642319d..e9248c0 100644 --- a/app/client/modules/samplernn/samplernn.actions.js +++ b/app/client/modules/samplernn/samplernn.actions.js @@ -207,14 +207,3 @@ export const import_files = (state, datasetLookup, fileLookup) => (dispatch) => } export const set_folder = (folder) => { types.samplernn.set_folder, folder } - -export const fetch_url = (url) => (dispatch) => { - console.log(url) - return actions.queue.add_task({ - activity: 'fetch', - module: 'samplernn', - dataset: 'test', - epochs: 1, - opt: { url } - }, { preempt: true, watch: true }) -} diff --git a/app/client/modules/samplernn/views/samplernn.new.js b/app/client/modules/samplernn/views/samplernn.new.js index d76e6c0..5f657c0 100644 --- a/app/client/modules/samplernn/views/samplernn.new.js +++ b/app/client/modules/samplernn/views/samplernn.new.js @@ -3,33 +3,14 @@ import { bindActionCreators } from 'redux' import { connect } from 'react-redux' import * as util from '../../../util' -import * as samplernnActions from '../samplernn.actions' - -import DatasetForm from '../../../dataset/dataset.form' import NewDatasetForm from '../../../dataset/dataset.new' -import { FileList, FileRow } from '../../../common/fileList.component' import samplernnModule from '../samplernn.module' -class SampleRNNNew extends Component { - constructor(props){ - super(props) - } - render(){ - const { history } = this.props - return ( -
- -
- ) - } +export default function SampleRNNNew ({ history }) { + return ( +
+ +
+ ) } -const mapStateToProps = state => ({ - samplernn: state.module.samplernn, -}) - -const mapDispatchToProps = (dispatch, ownProps) => ({ - actions: bindActionCreators(samplernnActions, dispatch), -}) - -export default connect(mapStateToProps, mapDispatchToProps)(SampleRNNNew) diff --git a/app/client/modules/samplernn/views/samplernn.show.js b/app/client/modules/samplernn/views/samplernn.show.js index 8a9d589..98314f9 100644 --- a/app/client/modules/samplernn/views/samplernn.show.js +++ b/app/client/modules/samplernn/views/samplernn.show.js @@ -110,7 +110,6 @@ class SampleRNNShow extends Component { const mapStateToProps = state => ({ samplernn: state.module.samplernn, - dataset: state.dataset, }) const mapDispatchToProps = (dispatch, ownProps) => ({ diff --git a/app/client/system/system.reducer.js b/app/client/system/system.reducer.js index 5067acd..d83fa21 100644 --- a/app/client/system/system.reducer.js +++ b/app/client/system/system.reducer.js @@ -43,6 +43,8 @@ const systemInitialState = { stderr: "", } +import modules from '../modules' + const systemReducer = (state = systemInitialState, action) => { let processor = null switch(action.type) { @@ -130,9 +132,18 @@ const systemReducer = (state = systemInitialState, action) => { } case types.system.load_site: document.querySelector('title').innerHTML = action.site.name + '.cortex' + let tool = state.site.tool + const path = window.location.pathname.split('/')[1] + if (path in modules) { + tool = path + } return { ...state, site: action.site, + app: { + ...state.app, + tool: tool, + } } case types.system.running_command: return { diff --git a/app/client/types.js b/app/client/types.js index 720051f..eb9fc99 100644 --- a/app/client/types.js +++ b/app/client/types.js @@ -99,8 +99,10 @@ export default { }, pix2pix: { init: 'PIX2PIX_INIT', + set_folder: 'PIX2PIX_SET_FOLDER', }, pix2wav: { init: 'PIX2WAV_INIT', + set_folder: 'PIX2WAV_SET_FOLDER', }, } diff --git a/public/bundle.js b/public/bundle.js index 2602201..c647396 100644 --- a/public/bundle.js +++ b/public/bundle.js @@ -1620,6 +1620,7 @@ function Header(_ref) { ); }); var Links = _modules2.default[app.tool].links; + console.log(app, site, Object.keys(_modules2.default)); return (0, _preact.h)( 'header', null, @@ -4981,17 +4982,28 @@ var _preact = __webpack_require__(/*! preact */ "./node_modules/preact/dist/prea var _reactRouterDom = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/es/index.js"); -var _pix2pix = __webpack_require__(/*! ./pix2pix.live */ "./app/client/modules/pix2pix/pix2pix.live.js"); +var _pix2pix = __webpack_require__(/*! ./views/pix2pix.new */ "./app/client/modules/pix2pix/views/pix2pix.new.js"); var _pix2pix2 = _interopRequireDefault(_pix2pix); +var _pix2pix3 = __webpack_require__(/*! ./views/pix2pix.show */ "./app/client/modules/pix2pix/views/pix2pix.show.js"); + +var _pix2pix4 = _interopRequireDefault(_pix2pix3); + +var _pix2pix5 = __webpack_require__(/*! ./views/pix2pix.live */ "./app/client/modules/pix2pix/views/pix2pix.live.js"); + +var _pix2pix6 = _interopRequireDefault(_pix2pix5); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function router() { return (0, _preact.h)( 'section', null, - (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/pix2pix/live/', component: _pix2pix2.default }) + (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/pix2pix/new/', component: _pix2pix2.default }), + (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/pix2pix/datasets/', component: _pix2pix4.default }), + (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/pix2pix/datasets/:id/', component: _pix2pix4.default }), + (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/pix2pix/live/', component: _pix2pix6.default }) ); } @@ -5027,10 +5039,276 @@ exports.default = { /***/ }), -/***/ "./app/client/modules/pix2pix/pix2pix.live.js": -/*!****************************************************!*\ - !*** ./app/client/modules/pix2pix/pix2pix.live.js ***! - \****************************************************/ +/***/ "./app/client/modules/pix2pix/pix2pix.actions.js": +/*!*******************************************************!*\ + !*** ./app/client/modules/pix2pix/pix2pix.actions.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.set_folder = exports.load_directories = undefined; + +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + +var _v = __webpack_require__(/*! uuid/v1 */ "./node_modules/uuid/v1.js"); + +var _v2 = _interopRequireDefault(_v); + +var _socket = __webpack_require__(/*! ../../socket */ "./app/client/socket/index.js"); + +var _socket2 = _interopRequireDefault(_socket); + +var _types = __webpack_require__(/*! ../../types */ "./app/client/types.js"); + +var _types2 = _interopRequireDefault(_types); + +var _dataset = __webpack_require__(/*! ../../dataset/dataset.loader */ "./app/client/dataset/dataset.loader.js"); + +var datasetLoader = _interopRequireWildcard(_dataset); + +var _actions = __webpack_require__(/*! ../../actions */ "./app/client/actions.js"); + +var _actions2 = _interopRequireDefault(_actions); + +var _util = __webpack_require__(/*! ../../util */ "./app/client/util/index.js"); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var load_directories = exports.load_directories = function load_directories(id) { + return function (dispatch) { + var module = 'samplernn'; + (0, _util.allProgress)([datasetLoader.load(module), _actions2.default.task.index({ module: module })], function (percent, i, n) { + dispatch({ type: _types2.default.app.load_progress, progress: { i: i, n: n } }); + }).then(function (res) { + // console.log(res) + var _res = _slicedToArray(res, 2), + datasetApiReport = _res[0], + tasks = _res[1]; //, datasets, results, output, datasetUsage, lossReport] = res + + var folderLookup = datasetApiReport.folderLookup, + fileLookup = datasetApiReport.fileLookup, + datasetLookup = datasetApiReport.datasetLookup, + folders = datasetApiReport.folders, + files = datasetApiReport.files, + unsortedFolder = datasetApiReport.unsortedFolder; + // console.log(datasetUsage) + + // // also show the various flat audio files we have, in the input area.. + // const flatDatasets = datasets.filter(s => s.name.match(/(wav|aiff?|flac|mp3)$/) && !s.dir) + // const builtDatasets = datasets.filter(s => s.dir) + // builtDatasets.forEach(dir => { + // const dataset = datasetLoader.getDataset(module, datasetLookup, dir.name) + // dataset.isBuilt = true + // }) + + // flatDatasets.forEach(file => { + // file.uuid = uuidv1() + // fileLookup[file.uuid] = file + // const name = file.name.split('.')[0] + // const dataset = datasetLoader.getDataset(module, datasetLookup, name, unsortedFolder, file.date) + // file.persisted = false + // dataset.input.push(file.uuid) + // }) + + // // exp:coccokit_3-frame_sizes:8,2-n_rnn:2-dataset:coccokit_3 + // const checkpoints = results.filter(s => s.dir).map(s => { + // const checkpoint = s.name + // .split('-') + // .map(s => s.split(':')) + // .filter(b => b.length && b[1]) + // .reduce((a,b) => (a[b[0]] = b[1]) && a, {}) + // checkpoint.name = checkpoint.name || checkpoint.dataset || checkpoint.exp + // checkpoint.date = s.date + // checkpoint.dir = s + // checkpoint.persisted = false + // const dataset = datasetLoader.getDataset(module, datasetLookup, checkpoint.name, unsortedFolder, checkpoint.date) + // const loss = lossReport[checkpoint.name] + // if (loss) { + // dataset.epoch = checkpoint.epoch = loss.length + // checkpoint.training_loss = loss + // } + // dataset.checkpoints.push(checkpoint) + // return checkpoint + // }) + + // output.map(file => { + // file.uuid = uuidv1() + // fileLookup[file.uuid] = file + // const pair = file.name.split('.')[0].split('-') + // const dataset = datasetLoader.getDataset(module, datasetLookup, pair[0], unsortedFolder, file.date) + // file.persisted = false + // file.epoch = parseInt(file.epoch || pair[1].replace(/^\D+/, '')) || 0 + // dataset.epoch = Math.max(file.epoch, dataset.epoch || 0) + // // here check if the file exists in dataset, if so just check that it's persisted + // const found = dataset.output.some(file_id => { + // // if (f.name === + // if (fileLookup[file_id].name === file.name) { + // fileLookup[file_id].persisted = true + // return true + // } + // return false + // }) + // if (! found) { + // dataset.output.push(file.uuid) + // } + // }) + + dispatch({ + type: _types2.default.dataset.load, + data: { + module: module, + folderLookup: folderLookup, + fileLookup: fileLookup, + datasetLookup: datasetLookup, + folders: folders, files: files, + checkpoints: checkpoints, + output: output + } + }); + if (id) { + console.log('folder id', id); + dispatch({ + type: _types2.default.pix2pix.set_folder, + folder_id: id + }); + } + }).catch(function (e) { + console.error(e); + }); + }; +}; + +var set_folder = exports.set_folder = function set_folder(folder) { + _types2.default.pix2pix.set_folder, folder; +}; + +/***/ }), + +/***/ "./app/client/modules/pix2pix/pix2pix.module.js": +/*!******************************************************!*\ + !*** ./app/client/modules/pix2pix/pix2pix.module.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var pix2pixModule = { + name: 'pix2pix', + datatype: 'audio' +}; + +exports.default = pix2pixModule; + +/***/ }), + +/***/ "./app/client/modules/pix2pix/pix2pix.reducer.js": +/*!*******************************************************!*\ + !*** ./app/client/modules/pix2pix/pix2pix.reducer.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _types = __webpack_require__(/*! ../../types */ "./app/client/types.js"); + +var _types2 = _interopRequireDefault(_types); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var pix2pixInitialState = { + loading: true, + error: null, + folders: [], + folder_id: 0, + data: null, + lossReport: null +}; + +var pix2pixReducer = function pix2pixReducer() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : pix2pixInitialState; + var action = arguments[1]; + + // console.log(action.type) + switch (action.type) { + case _types2.default.pix2pix.init: + return _extends({}, state, { + loading: false, + data: action.data + }); + + case _types2.default.socket.connect: + return _extends({}, state); + + case _types2.default.task.task_begin: + return _extends({}, state); + + case _types2.default.task.task_finish: + return _extends({}, state); + + default: + return state; + } +}; + +exports.default = pix2pixReducer; + +/***/ }), + +/***/ "./app/client/modules/pix2pix/pix2pix.tasks.js": +/*!*****************************************************!*\ + !*** ./app/client/modules/pix2pix/pix2pix.tasks.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _v = __webpack_require__(/*! uuid/v1 */ "./node_modules/uuid/v1.js"); + +var _v2 = _interopRequireDefault(_v); + +var _socket = __webpack_require__(/*! ../../socket */ "./app/client/socket/index.js"); + +var _socket2 = _interopRequireDefault(_socket); + +var _types = __webpack_require__(/*! ../../types */ "./app/client/types.js"); + +var _types2 = _interopRequireDefault(_types); + +var _actions = __webpack_require__(/*! ../../actions */ "./app/client/actions.js"); + +var _actions2 = _interopRequireDefault(_actions); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/***/ }), + +/***/ "./app/client/modules/pix2pix/views/pix2pix.live.js": +/*!**********************************************************!*\ + !*** ./app/client/modules/pix2pix/views/pix2pix.live.js ***! + \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { @@ -5049,29 +5327,29 @@ var _redux = __webpack_require__(/*! redux */ "./node_modules/redux/es/redux.js" var _reactRedux = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js"); -var _player = __webpack_require__(/*! ../../common/player.component */ "./app/client/common/player.component.js"); +var _player = __webpack_require__(/*! ../../../common/player.component */ "./app/client/common/player.component.js"); var _player2 = _interopRequireDefault(_player); -var _paramGroup = __webpack_require__(/*! ../../common/paramGroup.component */ "./app/client/common/paramGroup.component.js"); +var _paramGroup = __webpack_require__(/*! ../../../common/paramGroup.component */ "./app/client/common/paramGroup.component.js"); var _paramGroup2 = _interopRequireDefault(_paramGroup); -var _slider = __webpack_require__(/*! ../../common/slider.component */ "./app/client/common/slider.component.js"); +var _slider = __webpack_require__(/*! ../../../common/slider.component */ "./app/client/common/slider.component.js"); var _slider2 = _interopRequireDefault(_slider); -var _select = __webpack_require__(/*! ../../common/select.component */ "./app/client/common/select.component.js"); +var _select = __webpack_require__(/*! ../../../common/select.component */ "./app/client/common/select.component.js"); var _select2 = _interopRequireDefault(_select); -var _button = __webpack_require__(/*! ../../common/button.component */ "./app/client/common/button.component.js"); +var _button = __webpack_require__(/*! ../../../common/button.component */ "./app/client/common/button.component.js"); var _button2 = _interopRequireDefault(_button); -var _player3 = __webpack_require__(/*! ../../live/player */ "./app/client/live/player.js"); +var _player3 = __webpack_require__(/*! ../../../live/player */ "./app/client/live/player.js"); -var _live = __webpack_require__(/*! ../../live/live.actions */ "./app/client/live/live.actions.js"); +var _live = __webpack_require__(/*! ../../../live/live.actions */ "./app/client/live/live.actions.js"); var liveActions = _interopRequireWildcard(_live); @@ -5286,154 +5564,398 @@ var Pix2PixLive = function (_Component) { ) ), (0, _preact.h)( - 'div', - { className: 'column' }, - (0, _preact.h)( - _paramGroup2.default, - { - title: 'Clahe', - name: 'clahe' - }, - (0, _preact.h)(_slider2.default, { - name: 'clip_limit', - min: 1.0, max: 4.0, type: 'float' - }) - ), - (0, _preact.h)( - _paramGroup2.default, - { - title: 'Posterize', - name: 'posterize' - }, - (0, _preact.h)(_slider2.default, { - name: 'spatial_window', - min: 2, max: 128, type: 'int' - }), - (0, _preact.h)(_slider2.default, { - name: 'color_window', - min: 2, max: 128, type: 'int' - }) - ), - (0, _preact.h)( - _paramGroup2.default, - { - title: 'Blur', - name: 'blur' - }, - (0, _preact.h)(_slider2.default, { - name: 'blur_radius', - min: 3, max: 7, type: 'odd' - }), - (0, _preact.h)(_slider2.default, { - name: 'blur_sigma', - min: 0, max: 2, type: 'float' - }) - ), - (0, _preact.h)( - _paramGroup2.default, - { - title: 'Canny Edge Detection', - name: 'canny' - }, - (0, _preact.h)(_slider2.default, { - name: 'canny_lo', - min: 10, max: 200, type: 'int' - }), - (0, _preact.h)(_slider2.default, { - name: 'canny_hi', - min: 10, max: 200, type: 'int' - }) - ) + 'div', + { className: 'column' }, + (0, _preact.h)( + _paramGroup2.default, + { + title: 'Clahe', + name: 'clahe' + }, + (0, _preact.h)(_slider2.default, { + name: 'clip_limit', + min: 1.0, max: 4.0, type: 'float' + }) + ), + (0, _preact.h)( + _paramGroup2.default, + { + title: 'Posterize', + name: 'posterize' + }, + (0, _preact.h)(_slider2.default, { + name: 'spatial_window', + min: 2, max: 128, type: 'int' + }), + (0, _preact.h)(_slider2.default, { + name: 'color_window', + min: 2, max: 128, type: 'int' + }) + ), + (0, _preact.h)( + _paramGroup2.default, + { + title: 'Blur', + name: 'blur' + }, + (0, _preact.h)(_slider2.default, { + name: 'blur_radius', + min: 3, max: 7, type: 'odd' + }), + (0, _preact.h)(_slider2.default, { + name: 'blur_sigma', + min: 0, max: 2, type: 'float' + }) + ), + (0, _preact.h)( + _paramGroup2.default, + { + title: 'Canny Edge Detection', + name: 'canny' + }, + (0, _preact.h)(_slider2.default, { + name: 'canny_lo', + min: 10, max: 200, type: 'int' + }), + (0, _preact.h)(_slider2.default, { + name: 'canny_hi', + min: 10, max: 200, type: 'int' + }) + ) + ) + ) + ); + } + }]); + + return Pix2PixLive; +}(_preact.Component); + +function timeInSeconds(n) { + return (n / 10).toFixed(1) + ' s.'; +} +var mapStateToProps = function mapStateToProps(state) { + return { + opt: state.live.opt, + frame: state.live.frame, + checkpoints: state.live.checkpoints, + epochs: state.live.epochs, + sequences: state.live.sequences + }; +}; + +var mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) { + return { + actions: (0, _redux.bindActionCreators)(liveActions, dispatch) + }; +}; + +exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(Pix2PixLive); + +/***/ }), + +/***/ "./app/client/modules/pix2pix/views/pix2pix.new.js": +/*!*********************************************************!*\ + !*** ./app/client/modules/pix2pix/views/pix2pix.new.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = Pix2PixNew; + +var _preact = __webpack_require__(/*! preact */ "./node_modules/preact/dist/preact.esm.js"); + +var _redux = __webpack_require__(/*! redux */ "./node_modules/redux/es/redux.js"); + +var _reactRedux = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js"); + +var _util = __webpack_require__(/*! ../../../util */ "./app/client/util/index.js"); + +var util = _interopRequireWildcard(_util); + +var _dataset = __webpack_require__(/*! ../../../dataset/dataset.new */ "./app/client/dataset/dataset.new.js"); + +var _dataset2 = _interopRequireDefault(_dataset); + +var _pix2pix = __webpack_require__(/*! ../pix2pix.module */ "./app/client/modules/pix2pix/pix2pix.module.js"); + +var _pix2pix2 = _interopRequireDefault(_pix2pix); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function Pix2PixNew(_ref) { + var history = _ref.history; + + return (0, _preact.h)( + 'div', + { 'class': 'app pix2pix' }, + (0, _preact.h)(_dataset2.default, { module: _pix2pix2.default, history: history }) + ); +} + +/***/ }), + +/***/ "./app/client/modules/pix2pix/views/pix2pix.show.js": +/*!**********************************************************!*\ + !*** ./app/client/modules/pix2pix/views/pix2pix.show.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _preact = __webpack_require__(/*! preact */ "./node_modules/preact/dist/preact.esm.js"); + +var _redux = __webpack_require__(/*! redux */ "./node_modules/redux/es/redux.js"); + +var _reactRedux = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js"); + +var _util = __webpack_require__(/*! ../../../util */ "./app/client/util/index.js"); + +var util = _interopRequireWildcard(_util); + +var _pix2pix = __webpack_require__(/*! ../pix2pix.actions */ "./app/client/modules/pix2pix/pix2pix.actions.js"); + +var pix2pixActions = _interopRequireWildcard(_pix2pix); + +var _pix2pix2 = __webpack_require__(/*! ../pix2pix.tasks */ "./app/client/modules/pix2pix/pix2pix.tasks.js"); + +var pix2pixTasks = _interopRequireWildcard(_pix2pix2); + +var _loading = __webpack_require__(/*! ../../../common/loading.component */ "./app/client/common/loading.component.js"); + +var _loading2 = _interopRequireDefault(_loading); + +var _dataset = __webpack_require__(/*! ../../../dataset/dataset.form */ "./app/client/dataset/dataset.form.js"); + +var _dataset2 = _interopRequireDefault(_dataset); + +var _dataset3 = __webpack_require__(/*! ../../../dataset/dataset.new */ "./app/client/dataset/dataset.new.js"); + +var _dataset4 = _interopRequireDefault(_dataset3); + +var _upload = __webpack_require__(/*! ../../../dataset/upload.status */ "./app/client/dataset/upload.status.js"); + +var _upload2 = _interopRequireDefault(_upload); + +var _fileList = __webpack_require__(/*! ../../../common/fileList.component */ "./app/client/common/fileList.component.js"); + +var _dataset5 = __webpack_require__(/*! ../../../dataset/dataset.component */ "./app/client/dataset/dataset.component.js"); + +var _dataset6 = _interopRequireDefault(_dataset5); + +var _pix2pix3 = __webpack_require__(/*! ../pix2pix.module */ "./app/client/modules/pix2pix/pix2pix.module.js"); + +var _pix2pix4 = _interopRequireDefault(_pix2pix3); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Pix2pixShow = function (_Component) { + _inherits(Pix2pixShow, _Component); + + function Pix2pixShow(props) { + _classCallCheck(this, Pix2pixShow); + + var _this = _possibleConstructorReturn(this, (Pix2pixShow.__proto__ || Object.getPrototypeOf(Pix2pixShow)).call(this, props)); + + _this.datasetActions = _this.datasetActions.bind(_this); + return _this; + } + + _createClass(Pix2pixShow, [{ + key: 'componentWillMount', + value: function componentWillMount() { + var id = this.props.match.params.id || localStorage.getItem('pix2pix.last_id'); + console.log('load dataset:', id); + var _props = this.props, + match = _props.match, + pix2pix = _props.pix2pix, + actions = _props.actions; + + if (id === 'new') return; + if (id) { + if (parseInt(id)) localStorage.setItem('pix2pix.last_id', id); + if (!pix2pix.folder || pix2pix.folder.id !== id) { + actions.load_directories(id); + } + } + } + }, { + key: 'render', + value: function render() { + var _props2 = this.props, + pix2pix = _props2.pix2pix, + match = _props2.match, + history = _props2.history; + + var _ref = pix2pix.data || {}, + folderLookup = _ref.folderLookup; + + var folder = (folderLookup || {})[pix2pix.folder_id] || {}; + return (0, _preact.h)( + 'div', + { className: 'app pix2pix' }, + (0, _preact.h)( + 'div', + { 'class': 'heading' }, + (0, _preact.h)( + 'div', + { 'class': 'spaced' }, + (0, _preact.h)( + 'h1', + null, + folder ? folder.name : (0, _preact.h)(_loading2.default, null) + ), + (0, _preact.h)(_upload2.default, null) + ) + ), + folder && folder.name && folder.name !== 'unsorted' && (0, _preact.h)(_dataset2.default, { + title: 'Add Files', + module: _pix2pix4.default, + folder: folder, + canUpload: true, canAddURL: true + }), + (0, _preact.h)(_dataset6.default, { + loading: pix2pix.loading, + progress: pix2pix.progress, + id: pix2pix.folder_id, + module: _pix2pix4.default, + data: pix2pix.data, + folder: folder, + history: history, + onPickFile: function onPickFile(file, e) { + e.preventDefault(); + e.stopPropagation(); + console.log('picked a file', file); + }, + datasetActions: this.datasetActions + }) + ); + } + }, { + key: 'datasetActions', + value: function datasetActions(dataset) { + var isFetching = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var isProcessing = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + var _props3 = this.props, + pix2pix = _props3.pix2pix, + remote = _props3.remote; + + var input = pix2pix.data.fileLookup[dataset.input[0]]; + if (!input) return null; + if (input.name && input.name.match(/(gif|jpe?g|png)$/i)) return null; + return (0, _preact.h)( + 'div', + null, + (0, _preact.h)( + 'div', + { 'class': 'actions' }, + (0, _preact.h)( + 'span', + { 'class': 'link', onClick: function onClick() { + return remote.train_task(dataset, pix2pix.folder_id, 1); + } }, + 'train' + ), + (0, _preact.h)( + 'span', + { 'class': 'link', onClick: function onClick() { + return remote.train_task(dataset, pix2pix.folder_id, 2); + } }, + '2x' + ), + (0, _preact.h)( + 'span', + { 'class': 'link', onClick: function onClick() { + return remote.train_task(dataset, pix2pix.folder_id, 4); + } }, + '4x' + ), + (0, _preact.h)( + 'span', + { 'class': 'link', onClick: function onClick() { + return remote.train_task(dataset, pix2pix.folder_id, 6); + } }, + '6x' + ), + (0, _preact.h)( + 'span', + { 'class': 'link', onClick: function onClick() { + return remote.train_task(dataset, pix2pix.folder_id, 18); + } }, + '18x' + ) + ), + dataset.isBuilt ? (0, _preact.h)( + 'div', + { 'class': 'subtext' }, + 'fetched ', + (0, _preact.h)( + 'span', + { 'class': 'link', onClick: function onClick() { + return remote.clear_cache_task(dataset); + } }, + 'rm' + ) + ) : isFetching ? (0, _preact.h)( + 'div', + { 'class': 'subtext' }, + 'fetching' + ) : (0, _preact.h)( + 'div', + { 'class': 'subtext' }, + (0, _preact.h)( + 'span', + { 'class': 'link', onClick: function onClick() { + return remote.fetch_task(input.url, input.id, dataset.name); + } }, + 'fetch' ) ) ); } }]); - return Pix2PixLive; + return Pix2pixShow; }(_preact.Component); -function timeInSeconds(n) { - return (n / 10).toFixed(1) + ' s.'; -} var mapStateToProps = function mapStateToProps(state) { return { - opt: state.live.opt, - frame: state.live.frame, - checkpoints: state.live.checkpoints, - epochs: state.live.epochs, - sequences: state.live.sequences + pix2pix: state.module.pix2pix }; }; var mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) { return { - actions: (0, _redux.bindActionCreators)(liveActions, dispatch) + actions: (0, _redux.bindActionCreators)(pix2pixActions, dispatch), + remote: (0, _redux.bindActionCreators)(pix2pixTasks, dispatch) }; }; -exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(Pix2PixLive); - -/***/ }), - -/***/ "./app/client/modules/pix2pix/pix2pix.reducer.js": -/*!*******************************************************!*\ - !*** ./app/client/modules/pix2pix/pix2pix.reducer.js ***! - \*******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -var _types = __webpack_require__(/*! ../../types */ "./app/client/types.js"); - -var _types2 = _interopRequireDefault(_types); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var pix2pixInitialState = { - loading: true, - error: null, - folders: [], - folder_id: 0, - data: null, - lossReport: null -}; - -var pix2pixReducer = function pix2pixReducer() { - var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : pix2pixInitialState; - var action = arguments[1]; - - // console.log(action.type) - switch (action.type) { - case _types2.default.pix2pix.init: - return _extends({}, state, { - loading: false, - data: action.data - }); - - case _types2.default.socket.connect: - return _extends({}, state); - - case _types2.default.task.task_begin: - return _extends({}, state); - - case _types2.default.task.task_finish: - return _extends({}, state); - - default: - return state; - } -}; - -exports.default = pix2pixReducer; +exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(Pix2pixShow); /***/ }), @@ -5656,7 +6178,7 @@ exports.default = { Object.defineProperty(exports, "__esModule", { value: true }); -exports.fetch_url = exports.set_folder = exports.import_files = exports.load_loss = exports.load_directories = undefined; +exports.set_folder = exports.import_files = exports.load_loss = exports.load_directories = undefined; var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); @@ -5917,19 +6439,6 @@ var set_folder = exports.set_folder = function set_folder(folder) { _types2.default.samplernn.set_folder, folder; }; -var fetch_url = exports.fetch_url = function fetch_url(url) { - return function (dispatch) { - console.log(url); - return _actions2.default.queue.add_task({ - activity: 'fetch', - module: 'samplernn', - dataset: 'test', - epochs: 1, - opt: { url: url } - }, { preempt: true, watch: true }); - }; -}; - /***/ }), /***/ "./app/client/modules/samplernn/samplernn.module.js": @@ -6625,8 +7134,7 @@ exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)( Object.defineProperty(exports, "__esModule", { value: true }); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); +exports.default = SampleRNNNew; var _preact = __webpack_require__(/*! preact */ "./node_modules/preact/dist/preact.esm.js"); @@ -6638,72 +7146,27 @@ var _util = __webpack_require__(/*! ../../../util */ "./app/client/util/index.js var util = _interopRequireWildcard(_util); -var _samplernn = __webpack_require__(/*! ../samplernn.actions */ "./app/client/modules/samplernn/samplernn.actions.js"); - -var samplernnActions = _interopRequireWildcard(_samplernn); - -var _dataset = __webpack_require__(/*! ../../../dataset/dataset.form */ "./app/client/dataset/dataset.form.js"); +var _dataset = __webpack_require__(/*! ../../../dataset/dataset.new */ "./app/client/dataset/dataset.new.js"); var _dataset2 = _interopRequireDefault(_dataset); -var _dataset3 = __webpack_require__(/*! ../../../dataset/dataset.new */ "./app/client/dataset/dataset.new.js"); - -var _dataset4 = _interopRequireDefault(_dataset3); - -var _fileList = __webpack_require__(/*! ../../../common/fileList.component */ "./app/client/common/fileList.component.js"); - -var _samplernn2 = __webpack_require__(/*! ../samplernn.module */ "./app/client/modules/samplernn/samplernn.module.js"); +var _samplernn = __webpack_require__(/*! ../samplernn.module */ "./app/client/modules/samplernn/samplernn.module.js"); -var _samplernn3 = _interopRequireDefault(_samplernn2); +var _samplernn2 = _interopRequireDefault(_samplernn); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var SampleRNNNew = function (_Component) { - _inherits(SampleRNNNew, _Component); - - function SampleRNNNew(props) { - _classCallCheck(this, SampleRNNNew); - - return _possibleConstructorReturn(this, (SampleRNNNew.__proto__ || Object.getPrototypeOf(SampleRNNNew)).call(this, props)); - } - - _createClass(SampleRNNNew, [{ - key: 'render', - value: function render() { - var history = this.props.history; - - return (0, _preact.h)( - 'div', - { 'class': 'app samplernn' }, - (0, _preact.h)(_dataset4.default, { module: _samplernn3.default, history: history }) - ); - } - }]); - - return SampleRNNNew; -}(_preact.Component); - -var mapStateToProps = function mapStateToProps(state) { - return { - samplernn: state.module.samplernn - }; -}; - -var mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) { - return { - actions: (0, _redux.bindActionCreators)(samplernnActions, dispatch) - }; -}; +function SampleRNNNew(_ref) { + var history = _ref.history; -exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(SampleRNNNew); + return (0, _preact.h)( + 'div', + { 'class': 'app samplernn' }, + (0, _preact.h)(_dataset2.default, { module: _samplernn2.default, history: history }) + ); +} /***/ }), @@ -7138,8 +7601,7 @@ var SampleRNNShow = function (_Component) { var mapStateToProps = function mapStateToProps(state) { return { - samplernn: state.module.samplernn, - dataset: state.dataset + samplernn: state.module.samplernn }; }; @@ -8528,6 +8990,10 @@ var _moment = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js var _moment2 = _interopRequireDefault(_moment); +var _modules = __webpack_require__(/*! ../modules */ "./app/client/modules/index.js"); + +var _modules2 = _interopRequireDefault(_modules); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } @@ -8656,8 +9122,16 @@ var systemReducer = function systemReducer() { }); case _types2.default.system.load_site: document.querySelector('title').innerHTML = action.site.name + '.cortex'; + var tool = state.site.tool; + var path = window.location.pathname.split('/')[1]; + if (path in _modules2.default) { + tool = path; + } return _extends({}, state, { - site: action.site + site: action.site, + app: _extends({}, state.app, { + tool: tool + }) }); case _types2.default.system.running_command: return _extends({}, state, { @@ -8833,10 +9307,12 @@ exports.default = { // }, pix2pix: { - init: 'PIX2PIX_INIT' + init: 'PIX2PIX_INIT', + set_folder: 'PIX2PIX_SET_FOLDER' }, pix2wav: { - init: 'PIX2WAV_INIT' + init: 'PIX2WAV_INIT', + set_folder: 'PIX2WAV_SET_FOLDER' } }; diff --git a/public/bundle.js.map b/public/bundle.js.map index bce7f61..e8c17b2 100644 --- a/public/bundle.js.map +++ b/public/bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"bundle.js","sources":["webpack:///webpack/bootstrap","webpack:///./app/client/actions.js","webpack:///./app/client/api/crud.actions.js","webpack:///./app/client/api/crud.fetch.js","webpack:///./app/client/api/crud.types.js","webpack:///./app/client/api/crud.upload.js","webpack:///./app/client/api/index.js","webpack:///./app/client/api/parser.js","webpack:///./app/client/common/audioPlayer/audioPlayer.actions.js","webpack:///./app/client/common/audioPlayer/audioPlayer.component.js","webpack:///./app/client/common/audioPlayer/audioPlayer.reducer.js","webpack:///./app/client/common/button.component.js","webpack:///./app/client/common/fileList.component.js","webpack:///./app/client/common/fileUpload.component.js","webpack:///./app/client/common/gallery.component.js","webpack:///./app/client/common/group.component.js","webpack:///./app/client/common/header.component.js","webpack:///./app/client/common/loading.component.js","webpack:///./app/client/common/param.component.js","webpack:///./app/client/common/paramGroup.component.js","webpack:///./app/client/common/player.component.js","webpack:///./app/client/common/progress.component.js","webpack:///./app/client/common/select.component.js","webpack:///./app/client/common/slider.component.js","webpack:///./app/client/common/textInput.component.js","webpack:///./app/client/dashboard/dashboard.actions.js","webpack:///./app/client/dashboard/dashboard.component.js","webpack:///./app/client/dashboard/dashboard.reducer.js","webpack:///./app/client/dashboard/dashboardheader.component.js","webpack:///./app/client/dashboard/tasklist.component.js","webpack:///./app/client/dataset/dataset.actions.js","webpack:///./app/client/dataset/dataset.component.js","webpack:///./app/client/dataset/dataset.form.js","webpack:///./app/client/dataset/dataset.loader.js","webpack:///./app/client/dataset/dataset.new.js","webpack:///./app/client/dataset/dataset.reducer.js","webpack:///./app/client/dataset/upload.reducer.js","webpack:///./app/client/dataset/upload.status.js","webpack:///./app/client/index.jsx","webpack:///./app/client/live/live.actions.js","webpack:///./app/client/live/live.reducer.js","webpack:///./app/client/live/player.js","webpack:///./app/client/live/whammy.js","webpack:///./app/client/modules/index.js","webpack:///./app/client/modules/module.reducer.js","webpack:///./app/client/modules/pix2pix/index.js","webpack:///./app/client/modules/pix2pix/pix2pix.live.js","webpack:///./app/client/modules/pix2pix/pix2pix.reducer.js","webpack:///./app/client/modules/pix2wav/index.js","webpack:///./app/client/modules/pix2wav/pix2wav.reducer.js","webpack:///./app/client/modules/samplernn/index.js","webpack:///./app/client/modules/samplernn/samplernn.actions.js","webpack:///./app/client/modules/samplernn/samplernn.module.js","webpack:///./app/client/modules/samplernn/samplernn.reducer.js","webpack:///./app/client/modules/samplernn/samplernn.tasks.js","webpack:///./app/client/modules/samplernn/views/samplernn.graph.js","webpack:///./app/client/modules/samplernn/views/samplernn.import.js","webpack:///./app/client/modules/samplernn/views/samplernn.new.js","webpack:///./app/client/modules/samplernn/views/samplernn.results.js","webpack:///./app/client/modules/samplernn/views/samplernn.show.js","webpack:///./app/client/queue/queue.actions.js","webpack:///./app/client/queue/queue.reducer.js","webpack:///./app/client/socket/index.js","webpack:///./app/client/socket/socket.actions.js","webpack:///./app/client/socket/socket.api.js","webpack:///./app/client/socket/socket.connection.js","webpack:///./app/client/socket/socket.live.js","webpack:///./app/client/socket/socket.system.js","webpack:///./app/client/socket/socket.task.js","webpack:///./app/client/store.js","webpack:///./app/client/system/system.actions.js","webpack:///./app/client/system/system.component.js","webpack:///./app/client/system/system.reducer.js","webpack:///./app/client/types.js","webpack:///./app/client/util/index.js","webpack:///./app/client/util/sort.js","webpack:///./node_modules/fbjs/lib/emptyFunction.js","webpack:///./node_modules/fbjs/lib/invariant.js","webpack:///./node_modules/fbjs/lib/warning.js","webpack:///./node_modules/fetch-jsonp/build/fetch-jsonp.js","webpack:///./node_modules/file-saver/FileSaver.js","webpack:///./node_modules/history/DOMUtils.js","webpack:///./node_modules/history/LocationUtils.js","webpack:///./node_modules/history/PathUtils.js","webpack:///./node_modules/history/createBrowserHistory.js","webpack:///./node_modules/history/createHashHistory.js","webpack:///./node_modules/history/createMemoryHistory.js","webpack:///./node_modules/history/createTransitionManager.js","webpack:///./node_modules/history/es/DOMUtils.js","webpack:///./node_modules/history/es/LocationUtils.js","webpack:///./node_modules/history/es/PathUtils.js","webpack:///./node_modules/history/es/createBrowserHistory.js","webpack:///./node_modules/history/es/createHashHistory.js","webpack:///./node_modules/history/es/createMemoryHistory.js","webpack:///./node_modules/history/es/createTransitionManager.js","webpack:///./node_modules/history/es/index.js","webpack:///./node_modules/hoist-non-react-statics/index.js","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/lodash-es/_Symbol.js","webpack:///./node_modules/lodash-es/_baseGetTag.js","webpack:///./node_modules/lodash-es/_freeGlobal.js","webpack:///./node_modules/lodash-es/_getPrototype.js","webpack:///./node_modules/lodash-es/_getRawTag.js","webpack:///./node_modules/lodash-es/_objectToString.js","webpack:///./node_modules/lodash-es/_overArg.js","webpack:///./node_modules/lodash-es/_root.js","webpack:///./node_modules/lodash-es/isObjectLike.js","webpack:///./node_modules/lodash-es/isPlainObject.js","webpack:///./node_modules/moment/locale/af.js","webpack:///./node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/moment/locale/ar-ma.js","webpack:///./node_modules/moment/locale/ar-sa.js","webpack:///./node_modules/moment/locale/ar-tn.js","webpack:///./node_modules/moment/locale/ar.js","webpack:///./node_modules/moment/locale/az.js","webpack:///./node_modules/moment/locale/be.js","webpack:///./node_modules/moment/locale/bg.js","webpack:///./node_modules/moment/locale/bm.js","webpack:///./node_modules/moment/locale/bn.js","webpack:///./node_modules/moment/locale/bo.js","webpack:///./node_modules/moment/locale/br.js","webpack:///./node_modules/moment/locale/bs.js","webpack:///./node_modules/moment/locale/ca.js","webpack:///./node_modules/moment/locale/cs.js","webpack:///./node_modules/moment/locale/cv.js","webpack:///./node_modules/moment/locale/cy.js","webpack:///./node_modules/moment/locale/da.js","webpack:///./node_modules/moment/locale/de-at.js","webpack:///./node_modules/moment/locale/de-ch.js","webpack:///./node_modules/moment/locale/de.js","webpack:///./node_modules/moment/locale/dv.js","webpack:///./node_modules/moment/locale/el.js","webpack:///./node_modules/moment/locale/en-au.js","webpack:///./node_modules/moment/locale/en-ca.js","webpack:///./node_modules/moment/locale/en-gb.js","webpack:///./node_modules/moment/locale/en-ie.js","webpack:///./node_modules/moment/locale/en-il.js","webpack:///./node_modules/moment/locale/en-nz.js","webpack:///./node_modules/moment/locale/eo.js","webpack:///./node_modules/moment/locale/es-do.js","webpack:///./node_modules/moment/locale/es-us.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./node_modules/moment/locale/et.js","webpack:///./node_modules/moment/locale/eu.js","webpack:///./node_modules/moment/locale/fa.js","webpack:///./node_modules/moment/locale/fi.js","webpack:///./node_modules/moment/locale/fo.js","webpack:///./node_modules/moment/locale/fr-ca.js","webpack:///./node_modules/moment/locale/fr-ch.js","webpack:///./node_modules/moment/locale/fr.js","webpack:///./node_modules/moment/locale/fy.js","webpack:///./node_modules/moment/locale/gd.js","webpack:///./node_modules/moment/locale/gl.js","webpack:///./node_modules/moment/locale/gom-latn.js","webpack:///./node_modules/moment/locale/gu.js","webpack:///./node_modules/moment/locale/he.js","webpack:///./node_modules/moment/locale/hi.js","webpack:///./node_modules/moment/locale/hr.js","webpack:///./node_modules/moment/locale/hu.js","webpack:///./node_modules/moment/locale/hy-am.js","webpack:///./node_modules/moment/locale/id.js","webpack:///./node_modules/moment/locale/is.js","webpack:///./node_modules/moment/locale/it.js","webpack:///./node_modules/moment/locale/ja.js","webpack:///./node_modules/moment/locale/jv.js","webpack:///./node_modules/moment/locale/ka.js","webpack:///./node_modules/moment/locale/kk.js","webpack:///./node_modules/moment/locale/km.js","webpack:///./node_modules/moment/locale/kn.js","webpack:///./node_modules/moment/locale/ko.js","webpack:///./node_modules/moment/locale/ky.js","webpack:///./node_modules/moment/locale/lb.js","webpack:///./node_modules/moment/locale/lo.js","webpack:///./node_modules/moment/locale/lt.js","webpack:///./node_modules/moment/locale/lv.js","webpack:///./node_modules/moment/locale/me.js","webpack:///./node_modules/moment/locale/mi.js","webpack:///./node_modules/moment/locale/mk.js","webpack:///./node_modules/moment/locale/ml.js","webpack:///./node_modules/moment/locale/mn.js","webpack:///./node_modules/moment/locale/mr.js","webpack:///./node_modules/moment/locale/ms-my.js","webpack:///./node_modules/moment/locale/ms.js","webpack:///./node_modules/moment/locale/mt.js","webpack:///./node_modules/moment/locale/my.js","webpack:///./node_modules/moment/locale/nb.js","webpack:///./node_modules/moment/locale/ne.js","webpack:///./node_modules/moment/locale/nl-be.js","webpack:///./node_modules/moment/locale/nl.js","webpack:///./node_modules/moment/locale/nn.js","webpack:///./node_modules/moment/locale/pa-in.js","webpack:///./node_modules/moment/locale/pl.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./node_modules/moment/locale/pt.js","webpack:///./node_modules/moment/locale/ro.js","webpack:///./node_modules/moment/locale/ru.js","webpack:///./node_modules/moment/locale/sd.js","webpack:///./node_modules/moment/locale/se.js","webpack:///./node_modules/moment/locale/si.js","webpack:///./node_modules/moment/locale/sk.js","webpack:///./node_modules/moment/locale/sl.js","webpack:///./node_modules/moment/locale/sq.js","webpack:///./node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/moment/locale/sr.js","webpack:///./node_modules/moment/locale/ss.js","webpack:///./node_modules/moment/locale/sv.js","webpack:///./node_modules/moment/locale/sw.js","webpack:///./node_modules/moment/locale/ta.js","webpack:///./node_modules/moment/locale/te.js","webpack:///./node_modules/moment/locale/tet.js","webpack:///./node_modules/moment/locale/tg.js","webpack:///./node_modules/moment/locale/th.js","webpack:///./node_modules/moment/locale/tl-ph.js","webpack:///./node_modules/moment/locale/tlh.js","webpack:///./node_modules/moment/locale/tr.js","webpack:///./node_modules/moment/locale/tzl.js","webpack:///./node_modules/moment/locale/tzm-latn.js","webpack:///./node_modules/moment/locale/tzm.js","webpack:///./node_modules/moment/locale/ug-cn.js","webpack:///./node_modules/moment/locale/uk.js","webpack:///./node_modules/moment/locale/ur.js","webpack:///./node_modules/moment/locale/uz-latn.js","webpack:///./node_modules/moment/locale/uz.js","webpack:///./node_modules/moment/locale/vi.js","webpack:///./node_modules/moment/locale/x-pseudo.js","webpack:///./node_modules/moment/locale/yo.js","webpack:///./node_modules/moment/locale/zh-cn.js","webpack:///./node_modules/moment/locale/zh-hk.js","webpack:///./node_modules/moment/locale/zh-tw.js","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/node-fetch/browser.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/preact-compat/dist/preact-compat.es.js","webpack:///./node_modules/preact/dist/preact.esm.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/prop-types/checkPropTypes.js","webpack:///./node_modules/prop-types/factoryWithTypeCheckers.js","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/react-redux/es/components/Provider.js","webpack:///./node_modules/react-redux/es/components/connectAdvanced.js","webpack:///./node_modules/react-redux/es/connect/connect.js","webpack:///./node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack:///./node_modules/react-redux/es/connect/mapStateToProps.js","webpack:///./node_modules/react-redux/es/connect/mergeProps.js","webpack:///./node_modules/react-redux/es/connect/selectorFactory.js","webpack:///./node_modules/react-redux/es/connect/verifySubselectors.js","webpack:///./node_modules/react-redux/es/connect/wrapMapToProps.js","webpack:///./node_modules/react-redux/es/index.js","webpack:///./node_modules/react-redux/es/utils/PropTypes.js","webpack:///./node_modules/react-redux/es/utils/Subscription.js","webpack:///./node_modules/react-redux/es/utils/shallowEqual.js","webpack:///./node_modules/react-redux/es/utils/verifyPlainObject.js","webpack:///./node_modules/react-redux/es/utils/warning.js","webpack:///./node_modules/react-router-dom/es/BrowserRouter.js","webpack:///./node_modules/react-router-dom/es/HashRouter.js","webpack:///./node_modules/react-router-dom/es/Link.js","webpack:///./node_modules/react-router-dom/es/MemoryRouter.js","webpack:///./node_modules/react-router-dom/es/NavLink.js","webpack:///./node_modules/react-router-dom/es/Prompt.js","webpack:///./node_modules/react-router-dom/es/Redirect.js","webpack:///./node_modules/react-router-dom/es/Route.js","webpack:///./node_modules/react-router-dom/es/Router.js","webpack:///./node_modules/react-router-dom/es/StaticRouter.js","webpack:///./node_modules/react-router-dom/es/Switch.js","webpack:///./node_modules/react-router-dom/es/index.js","webpack:///./node_modules/react-router-dom/es/matchPath.js","webpack:///./node_modules/react-router-dom/es/withRouter.js","webpack:///./node_modules/react-router-redux/lib/actions.js","webpack:///./node_modules/react-router-redux/lib/index.js","webpack:///./node_modules/react-router-redux/lib/middleware.js","webpack:///./node_modules/react-router-redux/lib/reducer.js","webpack:///./node_modules/react-router-redux/lib/sync.js","webpack:///./node_modules/react-router/es/MemoryRouter.js","webpack:///./node_modules/react-router/es/Prompt.js","webpack:///./node_modules/react-router/es/Redirect.js","webpack:///./node_modules/react-router/es/Route.js","webpack:///./node_modules/react-router/es/Router.js","webpack:///./node_modules/react-router/es/StaticRouter.js","webpack:///./node_modules/react-router/es/Switch.js","webpack:///./node_modules/react-router/es/matchPath.js","webpack:///./node_modules/react-router/es/withRouter.js","webpack:///./node_modules/react-router/node_modules/isarray/index.js","webpack:///./node_modules/react-router/node_modules/path-to-regexp/index.js","webpack:///./node_modules/redux-thunk/lib/index.js","webpack:///./node_modules/redux/es/redux.js","webpack:///./node_modules/resolve-pathname/index.js","webpack:///./node_modules/symbol-observable/es/index.js","webpack:///./node_modules/symbol-observable/es/ponyfill.js","webpack:///./node_modules/uuid/lib/bytesToUuid.js","webpack:///./node_modules/uuid/lib/rng-browser.js","webpack:///./node_modules/uuid/v1.js","webpack:///./node_modules/value-equal/index.js","webpack:///./node_modules/warning/browser.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///(webpack)/buildin/module.js"],"sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./app/client/index.jsx\");\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _redux = require('redux');\n\nvar _api = require('./api');\n\nvar _live = require('./live/live.actions');\n\nvar liveActions = _interopRequireWildcard(_live);\n\nvar _queue = require('./queue/queue.actions');\n\nvar queueActions = _interopRequireWildcard(_queue);\n\nvar _system = require('./system/system.actions');\n\nvar systemActions = _interopRequireWildcard(_system);\n\nvar _socket = require('./socket/socket.actions');\n\nvar socketActions = _interopRequireWildcard(_socket);\n\nvar _dataset = require('./dataset/dataset.actions');\n\nvar datasetActions = _interopRequireWildcard(_dataset);\n\nvar _audioPlayer = require('./common/audioPlayer/audioPlayer.actions');\n\nvar audioPlayerActions = _interopRequireWildcard(_audioPlayer);\n\nvar _store = require('./store');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nexports.default = Object.keys(_api.actions).map(function (a) {\n return [a, _api.actions[a]];\n}).concat([['live', liveActions], ['queue', queueActions], ['system', systemActions], ['dataset', datasetActions], ['audioPlayer', audioPlayerActions]]).map(function (p) {\n return [p[0], (0, _redux.bindActionCreators)(p[1], _store.dispatch)];\n}).concat([['socket', socketActions]]).reduce(function (a, b) {\n return (a[b[0]] = b[1]) && a;\n}, {});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.crud_action = undefined;\nexports.crud_actions = crud_actions;\n\nvar _crud = require('./crud.fetch');\n\nvar _crud2 = require('./crud.types');\n\nvar _crud3 = require('./crud.upload');\n\nfunction crud_actions(type) {\n var fetch_type = (0, _crud.crud_fetch)(type);\n return ['index', 'show', 'create', 'update', 'destroy'].reduce(function (lookup, param) {\n lookup[param] = crud_action(type, param, function (q) {\n return fetch_type[param](q);\n });\n return lookup;\n }, {\n action: function action(method, fn) {\n return crud_action(type, method, fn);\n },\n upload: function upload(id, fd) {\n return (0, _crud3.upload_action)(type, id, fd);\n }\n });\n}\n\nvar crud_action = exports.crud_action = function crud_action(type, method, fn) {\n return function (q) {\n return function (dispatch) {\n return new Promise(function (resolve, reject) {\n dispatch({ type: (0, _crud2.as_type)(type, method + '_loading') });\n fn(q).then(function (data) {\n dispatch({ type: (0, _crud2.as_type)(type, method), data: data });\n resolve(data);\n }).catch(function (e) {\n dispatch({ type: (0, _crud2.as_type)(type, method + '_error') });\n reject(e);\n });\n });\n };\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.crud_fetch = crud_fetch;\nexports.postBody = postBody;\n\nvar _nodeFetch = require('node-fetch');\n\nvar _nodeFetch2 = _interopRequireDefault(_nodeFetch);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction crud_fetch(type, tag) {\n var uri = '/api/' + type + '/' + (tag || '');\n return {\n index: function index(q) {\n return (0, _nodeFetch2.default)(_get_url(uri, q), _get_headers()).then(function (req) {\n return req.json();\n }).catch(error);\n },\n\n show: function show(id) {\n return (0, _nodeFetch2.default)(uri + id).then(function (req) {\n return req.json();\n }).catch(error);\n },\n\n create: function create(data) {\n return (0, _nodeFetch2.default)(uri, post(data)).then(function (req) {\n return req.json();\n }).catch(error);\n },\n\n update: function update(data) {\n return (0, _nodeFetch2.default)(uri + data.id, put(data)).then(function (req) {\n return req.json();\n }).catch(error);\n },\n\n destroy: function destroy(data) {\n return (0, _nodeFetch2.default)(uri + data.id, _destroy(data)).then(function (req) {\n return req.json();\n }).catch(error);\n }\n };\n}\n\nfunction _get_url(_url, data) {\n var url = new URL(window.location.origin + _url);\n if (data) {\n Object.keys(data).forEach(function (key) {\n return url.searchParams.append(key, data[key]);\n });\n }\n return url;\n}\nfunction _get_headers() {\n return {\n method: 'GET',\n headers: {\n 'Accept': 'application/json'\n }\n };\n}\nfunction post(data) {\n return {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n }\n };\n}\nfunction postBody(data) {\n return {\n method: 'POST',\n body: data,\n headers: {\n 'Accept': 'application/json'\n }\n };\n}\nfunction put(data) {\n return {\n method: 'PUT',\n body: JSON.stringify(data),\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n }\n };\n}\nfunction _destroy(data) {\n return {\n method: 'DELETE',\n body: JSON.stringify(data),\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n }\n };\n}\nfunction error(err) {\n console.warn(err);\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar as_type = exports.as_type = function as_type(a, b) {\n return [a, b].join('_').toUpperCase();\n};\n\nvar crud_type = exports.crud_type = function crud_type(type) {\n var actions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return actions.concat(['index_loading', 'index', 'index_error', 'show_loading', 'show', 'show_error', 'create_loading', 'create', 'create_error', 'update_loading', 'update', 'update_error', 'destroy_loading', 'destroy', 'destroy_error', 'upload_loading', 'upload_progress', 'upload_waiting', 'upload_complete', 'upload_error', 'sort']).reduce(function (a, b) {\n return (a[b] = as_type(type, b)) && a;\n }, {});\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.upload_action = undefined;\nexports.crud_upload = crud_upload;\n\nvar _crud = require('./crud.types');\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction crud_upload(type, fd, data, dispatch) {\n return new Promise(function (resolve, reject) {\n var id = data.id;\n\n Object.keys(data).forEach(function (key) {\n if (key !== 'id') {\n fd.append(key, data[key]);\n }\n });\n\n var xhr = new XMLHttpRequest();\n xhr.upload.addEventListener(\"progress\", uploadProgress, false);\n xhr.addEventListener(\"load\", uploadComplete, false);\n xhr.addEventListener(\"error\", uploadFailed, false);\n xhr.addEventListener(\"abort\", uploadCancelled, false);\n xhr.open(\"POST\", '/api/' + type + '/' + id + '/upload/');\n xhr.send(fd);\n\n dispatch && dispatch({ type: (0, _crud.as_type)(type, 'upload_loading') });\n\n var complete = false;\n\n function uploadProgress(e) {\n if (e.lengthComputable) {\n var percent = Math.round(e.loaded * 100 / e.total) || 0;\n if (percent > 99) {\n dispatch && dispatch(_defineProperty({\n type: (0, _crud.as_type)(type, 'upload_waiting'),\n percent: percent\n }, type, id));\n } else {\n dispatch && dispatch(_defineProperty({\n type: (0, _crud.as_type)(type, 'upload_progress'),\n percent: percent\n }, type, id));\n }\n } else {\n dispatch && dispatch(_defineProperty({\n type: (0, _crud.as_type)(type, 'upload_error'),\n error: 'unable to compute upload progress'\n }, type, id));\n }\n }\n\n function uploadComplete(e) {\n var parsed = void 0;\n try {\n parsed = JSON.parse(e.target.responseText);\n } catch (e) {\n dispatch && dispatch(_defineProperty({\n type: (0, _crud.as_type)(type, 'upload_error'),\n error: 'upload failed'\n }, type, id));\n reject(e);\n return;\n }\n dispatch && dispatch(_defineProperty({\n type: (0, _crud.as_type)(type, 'upload_complete'),\n data: parsed\n }, type, id));\n if (parsed.files && parsed.files.length) {\n parsed.files.forEach(function (file) {\n console.log(file);\n dispatch && dispatch({\n type: (0, _crud.as_type)('file', 'create'),\n data: file\n });\n });\n }\n resolve(parsed);\n }\n\n function uploadFailed(evt) {\n dispatch && dispatch(_defineProperty({\n type: (0, _crud.as_type)(type, 'upload_error'),\n error: 'upload failed'\n }, type, id));\n reject(evt);\n }\n\n function uploadCancelled(evt) {\n dispatch && dispatch(_defineProperty({\n type: (0, _crud.as_type)(type, 'upload_error'),\n error: 'upload cancelled'\n }, type, id));\n reject(evt);\n }\n });\n}\n\nvar upload_action = exports.upload_action = function upload_action(type, id, fd) {\n return function (dispatch) {\n return crud_upload(type, id, fd, dispatch);\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.actions = exports.parser = exports.util = undefined;\n\nvar _crud = require('./crud.actions');\n\nvar _util = require('../util');\n\nvar util = _interopRequireWildcard(_util);\n\nvar _parser = require('./parser');\n\nvar parser = _interopRequireWildcard(_parser);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\n/*\nfor our crud events, create corresponding actions\nthe actions fire a 'loading' event, call the underlying api method, and then resolve.\nso you can do ... \n import { folderActions } from '../../api'\n folderActions.index({ module: 'samplernn' })\n folderActions.show(12)\n folderActions.create({ module: 'samplernn', name: 'foo' })\n folderActions.update(12, { module: 'pix2pix' })\n folderActions.destroy(12, { confirm: true })\n folderActions.upload(12, form_data)\n*/\n\nexports.util = util;\nexports.parser = parser;\nvar actions = exports.actions = ['folder', 'file', 'dataset', 'task', 'user'].reduce(function (a, b) {\n return (a[b] = (0, _crud.crud_actions)(b)) && a;\n}, {});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.tumblr = exports.thumbnail = exports.loadImage = exports.tag = exports.parse = exports.lookup = exports.integrations = undefined;\n\nvar _nodeFetch = require('node-fetch');\n\nvar _nodeFetch2 = _interopRequireDefault(_nodeFetch);\n\nvar _fetchJsonp = require('fetch-jsonp');\n\nvar _fetchJsonp2 = _interopRequireDefault(_fetchJsonp);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar integrations = exports.integrations = [{\n type: 'image',\n regex: /\\.(jpeg|jpg|gif|png|svg)(\\?.*)?$/i,\n fetch: function fetch(url, done) {\n var img = new Image();\n img.onload = function () {\n if (!img) return;\n var width = img.naturalWidth,\n height = img.naturalHeight;\n img = null;\n done({\n url: url,\n type: \"image\",\n token: \"\",\n thumbnail: \"\",\n title: \"\",\n width: width,\n height: height\n });\n };\n img.src = url;\n if (img.complete) {\n img.onload();\n }\n },\n tag: function tag(media) {\n return '';\n }\n}, {\n type: 'video',\n regex: /\\.(mp4|webm)(\\?.*)?$/i,\n fetch: function fetch(url, done) {\n var video = document.createElement(\"video\");\n var url_parts = url.replace(/\\?.*$/, \"\").split(\"/\");\n var filename = url_parts[url_parts.length - 1];\n video.addEventListener(\"loadedmetadata\", function () {\n var width = video.videoWidth,\n height = video.videoHeight;\n video = null;\n done({\n url: url,\n type: \"video\",\n token: url,\n thumbnail: \"/public/assets/img/video-thumbnail.png\",\n title: filename,\n width: width,\n height: height\n });\n });\n video.src = url;\n video.load();\n },\n tag: function tag(media) {\n return '