aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2018-11-06 07:45:06 +0000
committers-ol <s-ol@users.noreply.github.com>2018-11-06 07:45:06 +0000
commit519df416d3bda3c3699d5eddb32c1df97b051a73 (patch)
treed1b50bf22f262053f79edd8ba912a2dff838f831
parentMerge branch 'tru-fs' into inspect-mode (diff)
downloadmmm-519df416d3bda3c3699d5eddb32c1df97b051a73.tar.gz
mmm-519df416d3bda3c3699d5eddb32c1df97b051a73.zip
property browsing
-rw-r--r--mmm/component/init.client.moon6
-rw-r--r--mmm/mmmfs/browser.moon36
-rw-r--r--mmm/mmmfs/conversion.moon14
-rw-r--r--mmm/mmmfs/fileder.moon8
4 files changed, 35 insertions, 29 deletions
diff --git a/mmm/component/init.client.moon b/mmm/component/init.client.moon
index 193fd94..86432e4 100644
--- a/mmm/component/init.client.moon
+++ b/mmm/component/init.client.moon
@@ -14,6 +14,7 @@ tohtml = (val) ->
assert (js.instanceof val, js.global.Node), "userdata is not a Node"
val
else
+ warn "NOT A NODE: #{val}, ", debug.traceback!
error "not a Node: #{val}, #{type val}"
-- shorthand to form a text node from strings
@@ -118,9 +119,8 @@ class ReactiveElement
return
child = tohtml child
- ok, last = pcall tohtml, last
- if ok
- @node\replaceChild child, last
+ if last
+ @node\replaceChild child, tohtml last
else
switch mode
when 'append' then @node\appendChild child
diff --git a/mmm/mmmfs/browser.moon b/mmm/mmmfs/browser.moon
index f9a2725..50de0f8 100644
--- a/mmm/mmmfs/browser.moon
+++ b/mmm/mmmfs/browser.moon
@@ -72,27 +72,25 @@ class Browser
current = current and current.name
with select :onchange, disabled: not fileder
if fileder
- for key, _ in pairs {k,k for k in pairs fileder.props}
- value = key.name
+ for i, value in ipairs fileder\get_prop_names!
label = if value == '' then '(main)' else value
\append option label, :value, selected: value == current
-
- ' as ',
- @active\map (fileder) ->
- onchange = (_, e) ->
- { :name } = @prop\get!
- @prop\set Key :name, type: e.target.value
-
- current = @prop\get!
- curent = current and current.type
- with select :onchange
- opt = (value) -> option value, :value, selected: value == current
- \append opt 'mmm/dom'
- \append opt 'text/plain'
- -- if fileder
- -- for key, _ in pairs fileder.props
- -- value = key.type
- -- \append option value, :value, selected: value == current
+-- ' as ',
+-- @active\map (fileder) ->
+-- onchange = (_, e) ->
+-- { :name } = @prop\get!
+-- @prop\set Key :name, type: e.target.value
+--
+-- current = @prop\get!
+-- curent = current and current.type
+-- with select :onchange
+-- opt = (value) -> option value, :value, selected: value == current
+-- \append opt 'mmm/dom'
+-- \append opt 'text/plain'
+-- -- if fileder
+-- -- for key, _ in pairs fileder.props
+-- -- value = key.type
+-- -- \append option value, :value, selected: value == current
}
-- append or patch #browser-content
diff --git a/mmm/mmmfs/conversion.moon b/mmm/mmmfs/conversion.moon
index 6c5d768..df7318a 100644
--- a/mmm/mmmfs/conversion.moon
+++ b/mmm/mmmfs/conversion.moon
@@ -1,4 +1,4 @@
-import text, code from require 'mmm.dom'
+import div, text, code from require 'mmm.dom'
import tohtml from require 'mmm.component'
-- limit function to one argument
@@ -49,15 +49,15 @@ converts = {
inp: 'text/html',
out: 'mmm/dom',
transform: if MODE == 'SERVER'
- (...) -> ...
+ (html) -> div html
else
(html) ->
tmp = document\createElement 'div'
tmp.innerHTML = html
- if tmp.childElementCount == 1
- tmp.firstChild
- else
- tmp
+ -- if tmp.childElementCount == 1
+ -- tmp.firstChild
+ -- else
+ tmp
},
{
inp: 'text/lua -> (.+)',
@@ -66,7 +66,7 @@ converts = {
},
}
-do
+if MODE == 'SERVER'
ok, moon = pcall require, 'moonscript.base'
if ok
_load = moon.load or moon.loadstring
diff --git a/mmm/mmmfs/fileder.moon b/mmm/mmmfs/fileder.moon
index 310d8c5..cd4bbe6 100644
--- a/mmm/mmmfs/fileder.moon
+++ b/mmm/mmmfs/fileder.moon
@@ -107,6 +107,14 @@ class Fileder
for child in *@children
child\iterate depth - 1
+ -- get all unique names associated with properties (list)
+ get_prop_names: =>
+ names = {}
+ for key in pairs @props
+ names[key.name] = true
+
+ [name for name in pairs names]
+
-- find property key according to criteria, nil if no value or conversion path
-- * ... - arguments like Key
find: (...) =>