blob: 0c1c662968482b1e3442b3b3c7fa390f257f566d [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
var css = require('./components/base/index.css');
var debug = require('debug')('reader:main');
var document = require('global/document');
var domready = require('domready');
var files = require('./components/files');
var footer = require('./components/footer');
var format = require('format');
var h = require('mercury').h;
var header = require('./components/header');
var hg = require('mercury');
var insert = require('insert-css');
var mover = require('./components/mover');
var router = require('./components/router');
var window = require('global/window');
// Expose globals for debugging.
window.debug = require('debug');
window.require = require;
global.require = require;
domready(function ondomready() {
debug('domready');
// Top level state.
var state = hg.state({
store: hg.value(null),
files: files.state(),
mover: mover.state({}),
router: router.state({
'#!/': index,
'#!/mover': showMover,
'#!/:id': show,
'*': notfound
})
});
hg.app(document.body, state, render);
});
function render(state) {
debug('render: %o', state);
insert(css);
return h('.reader-app', [
hg.partial(header.render, state),
hg.partial(router.render, state.router, state),
hg.partial(footer.render, state, state.files.channels.add)
]);
}
function index(state, params, route) {
return h('main', [
hg.partial(files.render, state.files, state.files.channels)
]);
}
function show(state, params, route) {
debug('show: %s', params.id);
return h('main', [
]);
}
function showMover(state, params, route) {
debug('show mover');
return h('main', [
hg.partial(mover.render, state.mover, state.mover.channels),
]);
}
function notfound(state) {
var href = state.router.href;
console.error('TODO: not found error - %s', href);
return h('.notfound', [
h('Not Found.'),
h('p', format('The page "%s" does not exisit.', state.router.href))
]);
}