refatoring and simplification...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2019-02-01 06:08:48 +03:00
parent 08d5d4bad9
commit a6eebf4aae

View File

@ -84,6 +84,7 @@ Items.group = function(...items){
return this return this
} }
// XXX add support for lists of items (a-la .group(..))
Items.nest = function(item, list, options){ Items.nest = function(item, list, options){
options = options || {} options = options || {}
options.sublist = list options.sublist = list
@ -280,10 +281,6 @@ var BaseBrowserPrototype = {
sublist, sublist,
]) ])
: sublist }, : sublist },
// Render nested list header...
// XXX should this be a renderer or an option to .renderItem(..)???
renderNestedHeader: function(item, i, options){
return this.renderItem(...arguments) },
// Render list item... // Render list item...
// NOTE: to skip rendering an item/list return null... // NOTE: to skip rendering an item/list return null...
renderItem: function(item, i, options){ renderItem: function(item, i, options){
@ -353,19 +350,18 @@ var BaseBrowserPrototype = {
// XXX should we always render the nested list here, // XXX should we always render the nested list here,
// only rendering it empty if collapsed??? // only rendering it empty if collapsed???
: item.sublist ? : item.sublist ?
that.renderNested(
that.renderItem(item, i, options),
// collapsed...
(item.collapsed ? (item.collapsed ?
// collapsed item... null
that.renderNestedHeader(item, i, options)
// expanded item (grouped)...
: that.renderNested(
that.renderNestedHeader(item, i, options),
item.sublist.render instanceof Function ?
// renderable... // renderable...
:item.sublist.render instanceof Function ?
item.sublist.render(context) item.sublist.render(context)
// list of items... // list of items...
: item.sublist.map(_render), : item.sublist.map(_render)),
item, item,
options)) options)
// basic item... // basic item...
: that.renderItem(item, i, options)) }) : that.renderItem(item, i, options)) })
.filter(function(e){ .filter(function(e){
@ -536,17 +532,26 @@ var TextBrowserPrototype = {
renderNested: function(header, sublist, item, options){ renderNested: function(header, sublist, item, options){
var that = this var that = this
var nested = sublist var nested = sublist
&& sublist
.flat() .flat()
.map(function(e){ .map(function(e){
return e instanceof Array ? return e instanceof Array ?
e.map(function(e){ return (that.options.renderIndent || ' ') + e }) e.map(function(e){
return (that.options.renderIndent || ' ') + e })
: e }) : e })
.flat() .flat()
return header ? return (
[header, nested] // expanded...
: nested }, header && nested ?
renderNestedHeader: function(item, i, options){ [
return this.renderItem(...arguments) + (item.collapsed ? ' >' : ' v') }, header + ' v',
nested,
]
// collapsed...
: header ?
[ header + ' >' ]
// headerless...
: nested )},
} }
var TextBrowser = var TextBrowser =