mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-29 18:30:09 +00:00
fixed most of the issues with .walk2(..), preparing for the move/cleanup...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
d74482e037
commit
8e565bdad2
@ -1973,6 +1973,11 @@ var BaseBrowserPrototype = {
|
|||||||
// next([elem, ...])
|
// next([elem, ...])
|
||||||
// -> input
|
// -> input
|
||||||
//
|
//
|
||||||
|
// Explicitly pass children to be handled and process them sync...
|
||||||
|
// next(browser, true)
|
||||||
|
// next([elem, ...], true)
|
||||||
|
// -> input
|
||||||
|
//
|
||||||
//
|
//
|
||||||
// Stop walking (return undefined)...
|
// Stop walking (return undefined)...
|
||||||
// stop()
|
// stop()
|
||||||
@ -2049,8 +2054,7 @@ var BaseBrowserPrototype = {
|
|||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// XXX migrate .render(..) to use .walk2(..)
|
// XXX might be good to be able to return the partial result via stop(..)
|
||||||
// - are we rendering with the nested .render(..)???
|
|
||||||
walk2: function(func, options){
|
walk2: function(func, options){
|
||||||
var that = this
|
var that = this
|
||||||
var [func=null, options={}, path=[], context={}] = [...arguments]
|
var [func=null, options={}, path=[], context={}] = [...arguments]
|
||||||
@ -2135,7 +2139,7 @@ var BaseBrowserPrototype = {
|
|||||||
// skip...
|
// skip...
|
||||||
((!iterateCollapsed && elem.collapsed)
|
((!iterateCollapsed && elem.collapsed)
|
||||||
|| (skipDisabled == 'branch')) ?
|
|| (skipDisabled == 'branch')) ?
|
||||||
[]
|
false
|
||||||
// inlined...
|
// inlined...
|
||||||
: !options.skipInlined
|
: !options.skipInlined
|
||||||
&& (elem instanceof BaseBrowser || elem instanceof Array) ?
|
&& (elem instanceof BaseBrowser || elem instanceof Array) ?
|
||||||
@ -2143,32 +2147,38 @@ var BaseBrowserPrototype = {
|
|||||||
// nested...
|
// nested...
|
||||||
: (!options.skipNested && elem.children) )
|
: (!options.skipNested && elem.children) )
|
||||||
|| []
|
|| []
|
||||||
var next = function(elems){
|
var next = function(elems, now){
|
||||||
return (children =
|
return (children =
|
||||||
// skip...
|
// skip...
|
||||||
elems == null ?
|
elems == null ?
|
||||||
[]
|
[]
|
||||||
// force processing now...
|
// force processing now...
|
||||||
: elems === true ?
|
: now === true || elems === true ?
|
||||||
processChildren()
|
processChildren(now && elems)
|
||||||
// set elems as children...
|
// set elems as children...
|
||||||
: elems) }
|
: elems) }
|
||||||
var processed
|
var processed
|
||||||
// NOTE: this will calc the value once and return it cached next...
|
var processChildren = function(elems){
|
||||||
var processChildren = function(){
|
elems = elems instanceof Array ?
|
||||||
|
elems
|
||||||
|
: children
|
||||||
return (processed =
|
return (processed =
|
||||||
processed !== undefined ?
|
// nodes processed via next(true), no need to re-process...
|
||||||
|
elems === processed ?
|
||||||
|
[]
|
||||||
|
// cached value...
|
||||||
|
: processed !== undefined ?
|
||||||
processed
|
processed
|
||||||
: children instanceof Array ?
|
: elems instanceof Array ?
|
||||||
handleReverse(children)
|
handleReverse(elems)
|
||||||
.map(makeMap(p))
|
.map(makeMap(p))
|
||||||
.flat()
|
.flat()
|
||||||
: children instanceof BaseBrowser ?
|
: elems instanceof BaseBrowser ?
|
||||||
// NOTE: this will never return non-array as
|
// NOTE: this will never return non-array as
|
||||||
// when stop(..) is called it will break
|
// when stop(..) is called it will break
|
||||||
// execution and get handled in the catch
|
// execution and get handled in the catch
|
||||||
// clause below...
|
// clause below...
|
||||||
children
|
elems
|
||||||
.walk2(func, options, p, context)
|
.walk2(func, options, p, context)
|
||||||
: []) }
|
: []) }
|
||||||
|
|
||||||
@ -2786,7 +2796,7 @@ var BaseBrowserPrototype = {
|
|||||||
options || {},
|
options || {},
|
||||||
{rawResults: true})) },
|
{rawResults: true})) },
|
||||||
|
|
||||||
/*/ // XXX WALK2
|
/*/ // XXX
|
||||||
map: function(func, options){
|
map: function(func, options){
|
||||||
var that = this
|
var that = this
|
||||||
|
|
||||||
@ -3647,7 +3657,7 @@ var BaseBrowserPrototype = {
|
|||||||
// XXX should from/to/around/count be a feature of this or of .walk(..)???
|
// XXX should from/to/around/count be a feature of this or of .walk(..)???
|
||||||
// XXX might be a good idea to use this.root === this instead of context.root === this
|
// XXX might be a good idea to use this.root === this instead of context.root === this
|
||||||
|
|
||||||
/*/ XXX WALK2...
|
// XXX WALK2...
|
||||||
// XXX this still has problems....
|
// XXX this still has problems....
|
||||||
// - nested browser rendering not yet working correctly -- rendered flat...
|
// - nested browser rendering not yet working correctly -- rendered flat...
|
||||||
render: function(options, renderer, context){
|
render: function(options, renderer, context){
|
||||||
@ -3798,7 +3808,7 @@ var BaseBrowserPrototype = {
|
|||||||
: elem.children ?
|
: elem.children ?
|
||||||
[ renderer.renderNested(
|
[ renderer.renderNested(
|
||||||
renderer.renderNestedHeader(elem, i, context),
|
renderer.renderNestedHeader(elem, i, context),
|
||||||
elem.children instanceof BaseBrowser ?
|
(!elem.collapsed && elem.children instanceof BaseBrowser) ?
|
||||||
(nested(false),
|
(nested(false),
|
||||||
elem.children.render(options, renderer, context))
|
elem.children.render(options, renderer, context))
|
||||||
: nested(true),
|
: nested(true),
|
||||||
@ -3977,9 +3987,18 @@ var BaseBrowserPrototype = {
|
|||||||
: items } },
|
: items } },
|
||||||
//*/
|
//*/
|
||||||
|
|
||||||
|
// XXX .walk2(..): shoulc calling. next(..) return the list to the
|
||||||
|
// user and let them handle it???
|
||||||
|
// ...currently the user will get the list and each item will
|
||||||
|
// be added to the stream to the list by .walk2(..) this
|
||||||
|
// preventing the user from actually modifying the output...
|
||||||
render2: function(options, renderer, context){
|
render2: function(options, renderer, context){
|
||||||
|
|
||||||
// XXX args...
|
// XXX args...
|
||||||
|
options = {
|
||||||
|
includeInlinedBlocks: true,
|
||||||
|
iterateNonIterable: true,
|
||||||
|
}
|
||||||
|
|
||||||
// XXX rendering...
|
// XXX rendering...
|
||||||
var inline = function(lst){
|
var inline = function(lst){
|
||||||
@ -3987,7 +4006,7 @@ var BaseBrowserPrototype = {
|
|||||||
var nest = function(header, lst){
|
var nest = function(header, lst){
|
||||||
return [
|
return [
|
||||||
header,
|
header,
|
||||||
...lst.map(function(e){
|
...(lst || []).map(function(e){
|
||||||
return header +'/'+ e })]}
|
return header +'/'+ e })]}
|
||||||
var elem = function(e){
|
var elem = function(e){
|
||||||
return e.id || e }
|
return e.id || e }
|
||||||
@ -4007,17 +4026,16 @@ var BaseBrowserPrototype = {
|
|||||||
|
|
||||||
// nested...
|
// nested...
|
||||||
: e.children instanceof BaseBrowser ?
|
: e.children instanceof BaseBrowser ?
|
||||||
nest(elem(e), e.children.render2(options, renderer, context))
|
nest(elem(e),
|
||||||
|
!e.collapsed
|
||||||
|
&& e.children.render2(options, renderer, context))
|
||||||
: e.children instanceof Array ?
|
: e.children instanceof Array ?
|
||||||
nest(elem(e), children(true))
|
nest(elem(e), children(true))
|
||||||
|
|
||||||
// normal item...
|
// normal item...
|
||||||
: elem(e) )
|
: elem(e) )
|
||||||
|
|
||||||
}, {
|
}, options)
|
||||||
includeInlinedBlocks: true,
|
|
||||||
iterateNonIterable: true,
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user