(node, level, offset)
| 398 | } |
| 399 | |
| 400 | function iterateNode(node, level, offset) { |
| 401 | let values; |
| 402 | const array = node && node.array; |
| 403 | let from = offset > left ? 0 : (left - offset) >> level; |
| 404 | let to = ((right - offset) >> level) + 1; |
| 405 | if (to > SIZE) { |
| 406 | to = SIZE; |
| 407 | } |
| 408 | return () => { |
| 409 | while (true) { |
| 410 | if (values) { |
| 411 | const value = values(); |
| 412 | if (value !== DONE) { |
| 413 | return value; |
| 414 | } |
| 415 | values = null; |
| 416 | } |
| 417 | if (from === to) { |
| 418 | return DONE; |
| 419 | } |
| 420 | const idx = reverse ? --to : from++; |
| 421 | values = iterateNodeOrLeaf( |
| 422 | array && array[idx], |
| 423 | level - SHIFT, |
| 424 | offset + (idx << level) |
| 425 | ); |
| 426 | } |
| 427 | }; |
| 428 | } |
| 429 | } |
| 430 | |
| 431 | /** |
no test coverage detected