diff options
| author | s-ol <s-ol@users.noreply.github.com> | 2018-11-06 07:45:06 +0000 |
|---|---|---|
| committer | s-ol <s-ol@users.noreply.github.com> | 2018-11-06 07:45:06 +0000 |
| commit | 519df416d3bda3c3699d5eddb32c1df97b051a73 (patch) | |
| tree | d1b50bf22f262053f79edd8ba912a2dff838f831 | |
| parent | Merge branch 'tru-fs' into inspect-mode (diff) | |
| download | mmm-519df416d3bda3c3699d5eddb32c1df97b051a73.tar.gz mmm-519df416d3bda3c3699d5eddb32c1df97b051a73.zip | |
property browsing
| -rw-r--r-- | mmm/component/init.client.moon | 6 | ||||
| -rw-r--r-- | mmm/mmmfs/browser.moon | 36 | ||||
| -rw-r--r-- | mmm/mmmfs/conversion.moon | 14 | ||||
| -rw-r--r-- | mmm/mmmfs/fileder.moon | 8 |
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: (...) => |
