Subject
+
From
+
To
+
+ `
+}
+
+function createMessage (message, mailbox) {
+ return choo.view`
+
+ `
+}
diff --git a/examples/mailbox/elements/email.js b/examples/mailbox/elements/email.js
new file mode 100644
index 0000000..361f37b
--- /dev/null
+++ b/examples/mailbox/elements/email.js
@@ -0,0 +1,33 @@
+const choo = require('../../../')
+
+module.exports = function (params, state, send) {
+ const mailbox = params.mailbox
+ const message = params.message
+
+ const email = state[mailbox + ':messages'].filter(function (msg) {
+ return String(msg.id) === message
+ })[0]
+
+ return choo.view`
+
+ ${email ? createEmail(email) : 'error: no email found'}
+
+
+ - From
+ - ${message.from}
+ - To
+ - ${message.to}
+ - Date
+ - ${message.date}
+
+
${message.subject}
+
${message.body}
+
+ `
+}
diff --git a/examples/mailbox/elements/empty-mailbox.js b/examples/mailbox/elements/empty-mailbox.js
new file mode 100644
index 0000000..4b8aa7f
--- /dev/null
+++ b/examples/mailbox/elements/empty-mailbox.js
@@ -0,0 +1,9 @@
+const choo = require('../../../')
+
+module.exports = function (params, state, send) {
+ return choo.view`
+
+ `
+}
diff --git a/examples/mailbox/elements/mailbox.js b/examples/mailbox/elements/mailbox.js
index b6e7b68..b1cf40a 100644
--- a/examples/mailbox/elements/mailbox.js
+++ b/examples/mailbox/elements/mailbox.js
@@ -1,11 +1,10 @@
-const dateformat = require('dateformat')
const choo = require('../../../')
-module.exports = function (params, state, send) {
- const mailbox = params.mailbox
- const message = params.message
+module.exports = function () {
+ return function (params, state, send) {
+ const mailbox = params.mailbox
+ const message = params.message
- if (mailbox) {
if (message) {
const email = state[mailbox + ':messages'].filter(function (msg) {
return String(msg.id) === message
@@ -13,11 +12,15 @@ module.exports = function (params, state, send) {
return choo.view`
- ${createHeader()}
- ${state[mailbox + ':messages'].map(function (msg) {
- return createMessage(msg, mailbox)
- })}
- ${email ? createEmail(email) : 'error: no email found'}
+
+ ${createHeader()}
+ ${state[mailbox + ':messages'].map(function (msg) {
+ return createMessage(msg, mailbox)
+ })}
+
+
+ ${email ? createEmail(email) : 'error: no email found'}
+
`
} else {
@@ -30,12 +33,6 @@ module.exports = function (params, state, send) {
`
}
- } else {
- return choo.view`
-
- `
}
}
diff --git a/examples/mailbox/elements/pathname.js b/examples/mailbox/elements/pathname.js
new file mode 100644
index 0000000..d9eb157
--- /dev/null
+++ b/examples/mailbox/elements/pathname.js
@@ -0,0 +1,10 @@
+const pathname = require('pathname-match')
+const choo = require('../../../')
+
+module.exports = function (params, state, send) {
+ return choo.view`
+
+ URL: ${pathname(state.location) || '/'}
+
+ `
+}
diff --git a/examples/mailbox/views/email.js b/examples/mailbox/views/email.js
new file mode 100644
index 0000000..c200804
--- /dev/null
+++ b/examples/mailbox/views/email.js
@@ -0,0 +1,21 @@
+const choo = require('../../../')
+
+const emailList = require('../elements/email-list')
+const pathname = require('../elements/pathname')
+const email = require('../elements/email')
+const nav = require('../elements/nav')
+
+module.exports = function () {
+ return function (params, state, send) {
+ return choo.view`
+
+ ${pathname(params, state, send)}
+ ${nav(params, state, send)}
+
+ ${emailList(params, state, send)}
+ ${email(params, state, send)}
+
+
+ `
+ }
+}
diff --git a/examples/mailbox/views/empty.js b/examples/mailbox/views/empty.js
new file mode 100644
index 0000000..d972ee4
--- /dev/null
+++ b/examples/mailbox/views/empty.js
@@ -0,0 +1,17 @@
+const choo = require('../../../')
+
+const empty = require('../elements/empty-mailbox')
+const pathname = require('../elements/pathname')
+const nav = require('../elements/nav')
+
+module.exports = function () {
+ return function (params, state, send) {
+ return choo.view`
+
+ ${pathname(params, state, send)}
+ ${nav(params, state, send)}
+ ${empty(params, state, send)}
+
+ `
+ }
+}
diff --git a/examples/mailbox/views/mailbox.js b/examples/mailbox/views/mailbox.js
new file mode 100644
index 0000000..c4747ec
--- /dev/null
+++ b/examples/mailbox/views/mailbox.js
@@ -0,0 +1,19 @@
+const choo = require('../../../')
+
+const emailList = require('../elements/email-list')
+const pathname = require('../elements/pathname')
+const nav = require('../elements/nav')
+
+module.exports = function () {
+ return function (params, state, send) {
+ return choo.view`
+
+ ${pathname(params, state, send)}
+ ${nav(params, state, send)}
+
+ ${emailList(params, state, send)}
+
+
+ `
+ }
+}
diff --git a/examples/mailbox/views/main.js b/examples/mailbox/views/main.js
deleted file mode 100644
index bed5c71..0000000
--- a/examples/mailbox/views/main.js
+++ /dev/null
@@ -1,16 +0,0 @@
-const pathname = require('pathname-match')
-const choo = require('../../../')
-
-module.exports = function (nav, mailbox) {
- return function (params, state, send) {
- return choo.view`
-
-
- URL: ${pathname(state.location) || '/'}
-
- ${nav(params, state, send)}
- ${mailbox(params, state, send)}
-
- `
- }
-}
diff --git a/scripts/test-size b/scripts/test-size
index 0690efe..279de9d 100755
--- a/scripts/test-size
+++ b/scripts/test-size
@@ -5,7 +5,7 @@
# -t uglifyify \
# | discify --open
-browserify http.js --full-paths \
+browserify index.js --full-paths \
-g unassertify \
-g uglifyify \
| gzip-size \