aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2019-10-08 11:21:30 +0000
committers-ol <s-ol@users.noreply.github.com>2019-10-08 11:21:30 +0000
commit198194ea194b6f091868e71f7b129e36caa4d6f4 (patch)
treee75ae5eb82a2ea7180ba57391baf31c50913b182
parentadd ba_log entry 2019-10-07 (diff)
downloadmmm-198194ea194b6f091868e71f7b129e36caa4d6f4.tar.gz
mmm-198194ea194b6f091868e71f7b129e36caa4d6f4.zip
layout fixes:
- link from logo to root - links to path/: unless `STATIC` is set
-rw-r--r--mmm/mmmfs/converts.moon4
-rw-r--r--mmm/mmmfs/layout.moon124
-rw-r--r--mmm/mmmfs/util.moon10
-rw-r--r--scss/_browser.scss156
4 files changed, 156 insertions, 138 deletions
diff --git a/mmm/mmmfs/converts.moon b/mmm/mmmfs/converts.moon
index f8aad9f..f508d23 100644
--- a/mmm/mmmfs/converts.moon
+++ b/mmm/mmmfs/converts.moon
@@ -42,7 +42,9 @@ converts = {
{
inp: 'text/html%+frag',
out: 'text/html',
- transform: (html, fileder) -> render html, fileder
+ transform: (html, fileder) ->
+ html = '<div class="content">' .. html .. '</div>'
+ render html, fileder
},
{
inp: 'text/html%+frag',
diff --git a/mmm/mmmfs/layout.moon b/mmm/mmmfs/layout.moon
index 47e511b..6eead6d 100644
--- a/mmm/mmmfs/layout.moon
+++ b/mmm/mmmfs/layout.moon
@@ -5,7 +5,7 @@ import navigate_to from (require 'mmm.mmmfs.util') require 'mmm.dom'
pick = (...) ->
num = select '#', ...
i = math.ceil math.random! * num
- select i, ...
+ (select i, ...)
iconlink = (href, src, alt, style) -> a {
class: 'iconlink',
@@ -30,37 +30,41 @@ logo = svg {
}
}
-header = header {
- div {
- h1 {
- logo
- span {
- span 'mmm', class: 'bold'
- '&#8203;'
- '.s&#8209;ol.nu'
+gen_header = ->
+ header {
+ div {
+ h1 {
+ navigate_to '', logo
+ span {
+ span 'mmm', class: 'bold'
+ '&#8203;'
+ '.s&#8209;ol.nu'
+ }
}
+ -- span "fun stuff with code and wires"
+ table.concat {
+ pick 'fun', 'cool', 'weird', 'interesting', 'new', 'pleasant'
+ pick 'stuff', 'things', 'projects', 'experiments', 'visuals', 'ideas'
+ pick "with", 'and'
+ pick 'mostly code', 'code and wires', 'silicon', 'electronics', 'shaders',
+ 'oscilloscopes', 'interfaces', 'hardware', 'FPGAs'
+ }, ' '
}
- span "fun stuff with code and wires"
- -- pick 'fun', 'cool', 'weird', 'interesting', 'new'
- -- pick 'stuff', 'things', 'projects', 'experiments', 'news'
- -- "with"
- -- pick 'mostly code', 'code and wires', 'silicon', 'electronics'
- }
- aside {
- navigate_to '/about', 'about me'
- navigate_to '/games', 'games'
- navigate_to '/projects', 'other'
- a {
- href: 'mailto:s%20[removethis]%20[at]%20s-ol.nu'
- 'contact'
- script "
- var l = document.currentScript.parentElement;
- l.href = l.href.replace('%20[at]%20', '@');
- l.href = l.href.replace('%20[removethis]', '') + '?subject=Hey there :)';
- "
+ aside {
+ navigate_to '/about', 'about me'
+ navigate_to '/games', 'games'
+ navigate_to '/projects', 'other'
+ a {
+ href: 'mailto:s%20[removethis]%20[at]%20s-ol.nu'
+ 'contact'
+ script "
+ var l = document.currentScript.parentElement;
+ l.href = l.href.replace('%20[at]%20', '@');
+ l.href = l.href.replace('%20[removethis]', '') + '?subject=Hey there :)';
+ "
+ }
}
}
-}
footer = footer {
span {
@@ -108,53 +112,59 @@ get_meta = =>
meta
-render = (content, fileder) ->
+render = (content, fileder, opts={}) ->
+ opts.meta or= get_meta fileder
+ opts.scripts or= ''
+
+ unless opts.noview
+ content = [[
+ <div class="view main">
+ <div class="content">
+ ]] .. content .. [[
+ </div>
+ </div>
+ ]]
+
buf = [[
<!DOCTYPE html>
<html>
<head>
- <link rel="stylesheet" type="text/css" href="/main.css" />
- <!--
- <link rel="preload" as="fetch" href="/mmm/dom/init.lua" />
- <link rel="preload" as="fetch" href="/mmm/component/init.lua" />
- <link rel="preload" as="fetch" href="/mmm/mmmfs/init.lua" />
- <link rel="preload" as="fetch" href="/mmm/mmmfs/fileder.lua" />
- <link rel="preload" as="fetch" href="/mmm/mmmfs/browser.lua" />
- -->
-
- <link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400" rel="stylesheet">
+ <link rel="stylesheet" type="text/css" href="/?main.css" />
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400" />
]]
buf ..= "
#{get_meta fileder}
</head>
<body>
- #{header}
+ #{gen_header!}
#{content}
#{footer}
"
buf ..= [[
- <script src="/highlight.pack.js"></script>
- <script src="//cdnjs.cloudflare.com/ajax/libs/marked/0.5.1/marked.min.js"></script>
- <script src="//cdnjs.cloudflare.com/ajax/libs/svg.js/2.6.6/svg.min.js"></script>
- <script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
- <script src="/fengari-web.js"></script>
- <script type="application/lua" src="/mmm.bundle.lua"></script>
+ <script type="application/javascript" src="/?highlight.pack.js"></script>
+ <script type="application/javascript" src="//cdnjs.cloudflare.com/ajax/libs/marked/0.5.1/marked.min.js"></script>
+ <script type="application/javascript" src="//cdnjs.cloudflare.com/ajax/libs/svg.js/2.6.6/svg.min.js"></script>
+ <script type="application/javascript" src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
+ <script type="application/javascript" src="/?fengari-web.js"></script>
+ <script type="application/lua" src="/?mmm.bundle.lua"></script>
<script type="application/lua">require 'mmm'</script>
]]
+
+ buf ..= opts.scripts
+ -- <script type=\"application/lua\">
+ -- on_load = on_load or {}
+ -- table.insert(on_load, function()
+ -- local path = #{string.format '%q', path}
+ -- local browser = require 'mmm.mmmfs.browser'
+ -- local root = dofile '/$bundle.lua'
+ -- root:mount('', true)
+
+ -- BROWSER = browser.Browser(root, path, true)
+ -- end)
+ -- </script>
buf ..= "
- <script type=\"application/lua\">
- on_load = on_load or {}
- table.insert(on_load, function()
- local path = #{string.format '%q', path}
- local browser = require 'mmm.mmmfs.browser'
- local root = dofile '/$bundle.lua'
- root:mount('', true)
-
- BROWSER = browser.Browser(root, path, true)
- end)
- </script>
</body>
</html>
"
diff --git a/mmm/mmmfs/util.moon b/mmm/mmmfs/util.moon
index 5c25ed3..db0c432 100644
--- a/mmm/mmmfs/util.moon
+++ b/mmm/mmmfs/util.moon
@@ -3,6 +3,12 @@ merge = (orig={}, extra) ->
for k,v in pairs extra
attr[k] = v
+tourl = (path) ->
+ if STATIC
+ path
+ else
+ "#{path}/:"
+
(elements) ->
import a, div, pre from elements
@@ -14,7 +20,7 @@ merge = (orig={}, extra) ->
assert fileder, "no fileder passed."
navigate_to = (path, name, opts={}) ->
- opts.href = path
+ opts.href = tourl path
opts.onclick = if MODE == 'CLIENT' then (e) =>
e\preventDefault!
BROWSER\navigate path
@@ -30,7 +36,7 @@ merge = (orig={}, extra) ->
a name, merge attr, :href, target: '_blank'
else
a name, merge attr, {
- href: fileder.path
+ href: tourl fileder.path
onclick: if MODE == 'CLIENT' then (e) =>
e\preventDefault!
BROWSER\navigate fileder.path
diff --git a/scss/_browser.scss b/scss/_browser.scss
index 4d4a260..2bfc73e 100644
--- a/scss/_browser.scss
+++ b/scss/_browser.scss
@@ -3,109 +3,109 @@
flex: 1;
border-top: 0.2rem solid $gray-bright;
+}
- .view {
- display: flex;
- flex-direction: column;
-
- flex: 1 1 0;
- min-width: 0;
+.view {
+ display: flex;
+ flex-direction: column;
- &.inspector {
- top: 0;
- position: sticky;
- max-height: 100vh;
- color: #c5c8c6;
+ flex: 1 1 0;
+ min-width: 0;
- @include left-border;
- border-color: $gray-dark;
- background: $gray-dark;
+ &.inspector {
+ top: 0;
+ position: sticky;
+ max-height: 100vh;
+ color: #c5c8c6;
- nav {
- background: inherit;
- }
-
- .content {
- margin: 0;
- padding: 0;
- display: flex;
- background: $gray-darker;
-
- > * {
- display: block;
- margin: 0;
- padding: 1em;
- border-radius: 0;
- border: 0;
- flex: 1;
- }
- }
- }
+ @include left-border;
+ border-color: $gray-dark;
+ background: $gray-dark;
nav {
- position: sticky;
- top: 0;
+ background: inherit;
+ }
+ .content {
+ margin: 0;
+ padding: 0;
display: flex;
- flex: 0 0 auto;
- flex-wrap: wrap;
- justify-content: space-between;
- background: $gray-bright;
- z-index: 1000;
-
- > span:first-of-type {
- flex: 1 0 auto;
- }
+ background: $gray-darker;
> * {
- margin: 1em;
- white-space: nowrap;
- }
-
- > .inspect-btn {
- @include media-small() { display: none; }
+ display: block;
+ margin: 0;
+ padding: 1em;
+ border-radius: 0;
+ border: 0;
+ flex: 1;
}
}
+ }
+
+ nav {
+ position: sticky;
+ top: 0;
- .error-wrap {
- flex: 0 0 auto;
- padding: 1em 2em;
- overflow: hidden;
+ display: flex;
+ flex: 0 0 auto;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ background: $gray-bright;
+ z-index: 1000;
+
+ > span:first-of-type {
+ flex: 1 0 auto;
+ }
- background: $gray-fail;
+ > * {
+ margin: 1em;
+ white-space: nowrap;
+ }
- &.empty {
- display: none;
- }
+ > .inspect-btn {
+ @include media-small() { display: none; }
+ }
+ }
- > span {
- display: inline-block;
- margin-bottom: 0.5em;
+ .error-wrap {
+ flex: 0 0 auto;
+ padding: 1em 2em;
+ overflow: hidden;
- font-weight: bold;
- color: #f00;
- }
+ background: $gray-fail;
- > pre {
- margin: 0;
- }
+ &.empty {
+ display: none;
}
- .content {
- flex: 1 1 auto;
- overflow: auto;
- padding: 1em 2em;
+ > span {
+ display: inline-block;
+ margin-bottom: 0.5em;
+
+ font-weight: bold;
+ color: #f00;
+ }
- position: relative;
+ > pre {
+ margin: 0;
}
}
.content {
- opacity: 1;
- transition: opacity 150ms;
+ flex: 1 1 auto;
+ overflow: auto;
+ padding: 1em 2em;
- body.loading & {
- opacity: 0;
- }
+ position: relative;
+ }
+}
+
+.content {
+ opacity: 1;
+ transition: opacity 150ms;
+
+ body.loading & {
+ opacity: 0;
}
}