zippa
Version:
A Generic Zipper Library
2,465 lines (1,074 loc) • 95.5 kB
HTML
<!doctype html>
<html>
<head>
<meta charset='utf-8' />
<title> | Documentation</title>
<meta name='viewport' content='width=device-width,initial-scale=1'>
<link href='assets/bass.css' type='text/css' rel='stylesheet' />
<link href='assets/style.css' type='text/css' rel='stylesheet' />
<link href='assets/github.css' type='text/css' rel='stylesheet' />
</head>
<body class='documentation'>
<div class='max-width-4 mx-auto'>
<div class='clearfix md-mxn2'>
<div class='fixed xs-hide fix-3 overflow-auto max-height-100'>
<div class='py1 px2'>
<h3 class='mb0 no-anchor'></h3>
<div class='mb1'><code></code></div>
<input
placeholder='Filter'
id='filter-input'
class='col12 block input'
type='text' />
<div id='toc'>
<ul class='list-reset h5 py1-ul'>
<li><a
href='#zippa'
class="h5 bold black caps">
zippa
</a>
</li>
<li><a
href='#makezipper'
class="">
makeZipper
</a>
</li>
<li><a
href='#value'
class="">
value
</a>
</li>
<li><a
href='#root'
class="">
root
</a>
</li>
<li><a
href='#up'
class="">
up
</a>
</li>
<li><a
href='#down'
class="">
down
</a>
</li>
<li><a
href='#left'
class="">
left
</a>
</li>
<li><a
href='#right'
class="">
right
</a>
</li>
<li><a
href='#leftmost'
class="">
leftmost
</a>
</li>
<li><a
href='#rightmost'
class="">
rightmost
</a>
</li>
<li><a
href='#next'
class="">
next
</a>
</li>
<li><a
href='#prev'
class="">
prev
</a>
</li>
<li><a
href='#isend'
class="">
isEnd
</a>
</li>
<li><a
href='#istop'
class="">
isTop
</a>
</li>
<li><a
href='#isnottop'
class="">
isNotTop
</a>
</li>
<li><a
href='#isbranch'
class="">
isBranch
</a>
</li>
<li><a
href='#isleaf'
class="">
isLeaf
</a>
</li>
<li><a
href='#isleftmost'
class="">
isLeftmost
</a>
</li>
<li><a
href='#isrightmost'
class="">
isRightmost
</a>
</li>
<li><a
href='#cangoup'
class="">
canGoUp
</a>
</li>
<li><a
href='#cangoleft'
class="">
canGoLeft
</a>
</li>
<li><a
href='#cangoright'
class="">
canGoRight
</a>
</li>
<li><a
href='#cangodown'
class="">
canGoDown
</a>
</li>
<li><a
href='#replace'
class="">
replace
</a>
</li>
<li><a
href='#edit'
class="">
edit
</a>
</li>
<li><a
href='#insertleft'
class="">
insertLeft
</a>
</li>
<li><a
href='#insertright'
class="">
insertRight
</a>
</li>
<li><a
href='#insertchild'
class="">
insertChild
</a>
</li>
<li><a
href='#appendchild'
class="">
appendChild
</a>
</li>
<li><a
href='#remove'
class="">
remove
</a>
</li>
<li><a
href='#zipper'
class=" toggle-sibling">
Zipper
<span class='icon'>▸</span>
</a>
<div class='toggle-target display-none'>
<ul class='list-reset py1-ul pl1'>
<li class='h5'><span>Instance members</span></li>
<li><a
href='#Zipper#Zipper.prototype.value'
class='regular pre-open'>
#Zipper.prototype.value
</a></li>
<li><a
href='#Zipper#Zipper.prototype.root'
class='regular pre-open'>
#Zipper.prototype.root
</a></li>
<li><a
href='#Zipper#Zipper.prototype.up'
class='regular pre-open'>
#Zipper.prototype.up
</a></li>
<li><a
href='#Zipper#Zipper.prototype.down'
class='regular pre-open'>
#Zipper.prototype.down
</a></li>
<li><a
href='#Zipper#Zipper.prototype.left'
class='regular pre-open'>
#Zipper.prototype.left
</a></li>
<li><a
href='#Zipper#Zipper.prototype.right'
class='regular pre-open'>
#Zipper.prototype.right
</a></li>
<li><a
href='#Zipper#Zipper.prototype.leftmost'
class='regular pre-open'>
#Zipper.prototype.leftmost
</a></li>
<li><a
href='#Zipper#Zipper.prototype.rightmost'
class='regular pre-open'>
#Zipper.prototype.rightmost
</a></li>
<li><a
href='#Zipper#Zipper.prototype.next'
class='regular pre-open'>
#Zipper.prototype.next
</a></li>
<li><a
href='#Zipper#Zipper.prototype.prev'
class='regular pre-open'>
#Zipper.prototype.prev
</a></li>
<li><a
href='#Zipper#Zipper.prototype.isEnd'
class='regular pre-open'>
#Zipper.prototype.isEnd
</a></li>
<li><a
href='#Zipper#Zipper.prototype.isTop'
class='regular pre-open'>
#Zipper.prototype.isTop
</a></li>
<li><a
href='#Zipper#Zipper.prototype.isBranch'
class='regular pre-open'>
#Zipper.prototype.isBranch
</a></li>
<li><a
href='#Zipper#Zipper.prototype.isLeaf'
class='regular pre-open'>
#Zipper.prototype.isLeaf
</a></li>
<li><a
href='#Zipper#Zipper.prototype.isLeftmost'
class='regular pre-open'>
#Zipper.prototype.isLeftmost
</a></li>
<li><a
href='#Zipper#Zipper.prototype.isRightmost'
class='regular pre-open'>
#Zipper.prototype.isRightmost
</a></li>
<li><a
href='#Zipper#Zipper.prototype.canGoUp'
class='regular pre-open'>
#Zipper.prototype.canGoUp
</a></li>
<li><a
href='#Zipper#Zipper.prototype.canGoLeft'
class='regular pre-open'>
#Zipper.prototype.canGoLeft
</a></li>
<li><a
href='#Zipper#Zipper.prototype.canGoRight'
class='regular pre-open'>
#Zipper.prototype.canGoRight
</a></li>
<li><a
href='#Zipper#Zipper.prototype.canGoDown'
class='regular pre-open'>
#Zipper.prototype.canGoDown
</a></li>
<li><a
href='#Zipper#Zipper.prototype.edit'
class='regular pre-open'>
#Zipper.prototype.edit
</a></li>
<li><a
href='#Zipper#Zipper.prototype.replace'
class='regular pre-open'>
#Zipper.prototype.replace
</a></li>
<li><a
href='#Zipper#Zipper.prototype.insertLeft'
class='regular pre-open'>
#Zipper.prototype.insertLeft
</a></li>
<li><a
href='#Zipper#Zipper.prototype.insertRight'
class='regular pre-open'>
#Zipper.prototype.insertRight
</a></li>
<li><a
href='#Zipper#Zipper.prototype.insertChild'
class='regular pre-open'>
#Zipper.prototype.insertChild
</a></li>
<li><a
href='#Zipper#Zipper.prototype.appendChild'
class='regular pre-open'>
#Zipper.prototype.appendChild
</a></li>
<li><a
href='#Zipper#Zipper.prototype.remove'
class='regular pre-open'>
#Zipper.prototype.remove
</a></li>
</ul>
</div>
</li>
<li><a
href='#arrayzipper'
class="">
ArrayZipper
</a>
</li>
<li><a
href='#visitors'
class="h5 bold black caps">
Visitors
</a>
</li>
<li><a
href='#visit'
class="">
visit
</a>
</li>
<li><a
href='#onpre'
class="">
onPre
</a>
</li>
<li><a
href='#onpost'
class="">
onPost
</a>
</li>
<li><a
href='#pre'
class="">
PRE
</a>
</li>
<li><a
href='#post'
class="">
POST
</a>
</li>
<li><a
href='#walking'
class="h5 bold black caps">
Walking
</a>
</li>
<li><a
href='#walk'
class="">
walk
</a>
</li>
<li><a
href='#prewalk'
class="">
preWalk
</a>
</li>
<li><a
href='#postwalk'
class="">
postWalk
</a>
</li>
</ul>
</div>
<div class='mt1 h6 quiet'>
<a href='http://documentation.js.org/reading-documentation.html'>Need help reading this?</a>
</div>
</div>
</div>
<div class='fix-margin-3'>
<div class='keyline-top-not py2'><section class='py2 clearfix'>
<h2 id='zippa' class='mt0'>
zippa
</h2>
<p>The main zipper module.</p>
<p>Every member is importable under the package. I.e. <code>import { makeZipper, value } from 'zippa'</code></p>
</section>
</div>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='makezipper'>
makeZipper
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L887-L901'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Makes a Zipper factory that uses the implementation provided
in the parameters.</p>
<div class='pre p1 fill-light mt0'>makeZipper</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>_isBranch</span> <code class='quiet'>(<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function">Function</a>)</code> Function with signature
<code>(item: T) => boolean</code>
that indicates if the item can have children.
</div>
</div>
<div class='space-bottom0'>
<div>
<span class='code bold'>_getChildren</span> <code class='quiet'>(<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function">Function</a>)</code> Function with signature
<code>(item: T) => Array<T></code>
that returns an array of children for a branch.
</div>
</div>
<div class='space-bottom0'>
<div>
<span class='code bold'>_makeItem</span> <code class='quiet'>(<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function">Function</a>)</code> Function with signature
<code>(item: T, children: Array<T>) => T</code>
that returns a new item, given an old item and it's new children.
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function">Function</a></code>:
zipper factory with signature
<code>(item: T) => Zipper</code>
. The factory
can also be accessed from the factory's
<code>from</code>
property.
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='value'>
value
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L77-L77'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Gets the value of the current location.</p>
<div class='pre p1 fill-light mt0'>value</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code>(T | null)</code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='root'>
root
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L471-L471'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Moves location to the root, constructing
any changes made.</p>
<div class='pre p1 fill-light mt0'>root</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code><a href="#zipper">Zipper</a></code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='up'>
up
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L451-L462'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Moves location to the parent, constructing a new parent
if the children have changed.</p>
<p>If already at the top, returns null.</p>
<div class='pre p1 fill-light mt0'>up</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code>(<a href="#zipper">Zipper</a> | null)</code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='down'>
down
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L349-L369'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Moves location to the leftmost child.
If the current item is a leaf, returns null.</p>
<div class='pre p1 fill-light mt0'>down</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code>(<a href="#zipper">Zipper</a> | null)</code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='left'>
left
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L245-L268'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Moves location to the left sibling.
If the current location is already the leftmost,
returns null.</p>
<div class='pre p1 fill-light mt0'>left</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code>(<a href="#zipper">Zipper</a> | null)</code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='right'>
right
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L278-L299'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Moves location to the right sibling.
If the current location is already the rightmost,
returns null.</p>
<div class='pre p1 fill-light mt0'>right</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code>(<a href="#zipper">Zipper</a> | null)</code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='leftmost'>
leftmost
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L214-L235'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Moves location to the leftmost sibling.
If the current location is already the leftmost,
returns itself.</p>
<div class='pre p1 fill-light mt0'>leftmost</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code><a href="#zipper">Zipper</a></code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='rightmost'>
rightmost
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L309-L329'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Moves location to the rightmost sibling.
If the current location is already the rightmost,
returns itself.</p>
<div class='pre p1 fill-light mt0'>rightmost</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code><a href="#zipper">Zipper</a></code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='next'>
next
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L490-L495'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Moves location to the next element in depth-first order.</p>
<div class='pre p1 fill-light mt0'>next</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code><a href="#zipper">Zipper</a></code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='prev'>
prev
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L505-L509'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Moves location to the previous element in depth-first order.</p>
<div class='pre p1 fill-light mt0'>prev</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code><a href="#zipper">Zipper</a></code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='isend'>
isEnd
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L132-L132'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Returns a boolean indicating if the zipper has been
exhausted by calls to <code>next</code>.</p>
<div class='pre p1 fill-light mt0'>isEnd</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">boolean</a></code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='istop'>
isTop
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L151-L151'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Returns a boolean indicating if the zipper is at the top.</p>
<div class='pre p1 fill-light mt0'>isTop</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">boolean</a></code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='isnottop'>
isNotTop
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L158-L158'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Returns a boolean indicating if the zipper is not at the top.</p>
<div class='pre p1 fill-light mt0'>isNotTop</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">boolean</a></code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='isbranch'>
isBranch
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L103-L105'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Returns a boolean indicating if the current location is not a leaf.</p>
<div class='pre p1 fill-light mt0'>isBranch</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">boolean</a></code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='isleaf'>
isLeaf
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L112-L112'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Returns a boolean indicating if the current location is a leaf.</p>
<div class='pre p1 fill-light mt0'>isLeaf</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">boolean</a></code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='isleftmost'>
isLeftmost
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L176-L176'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Returns a boolean indicating if the item at the current location
is the leftmost sibling.</p>
<div class='pre p1 fill-light mt0'>isLeftmost</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">boolean</a></code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='isrightmost'>
isRightmost
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L184-L184'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Returns a boolean indicating if the item at the current location
is the rightmost sibling.</p>
<div class='pre p1 fill-light mt0'>isRightmost</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">boolean</a></code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='cangoup'>
canGoUp
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L431-L431'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Returns a boolean indicating if the zipper is not at the top.</p>
<p>Alias for <a href="#isnottop">isNotTop</a></p>
<div class='pre p1 fill-light mt0'>canGoUp</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">boolean</a></code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='cangoleft'>
canGoLeft
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L194-L194'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Returns a boolean indicating if the item at the current location
is the leftmost sibling.</p>
<p>Alias for <a href="#isleftmost">isLeftmost</a></p>
<div class='pre p1 fill-light mt0'>canGoLeft</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">boolean</a></code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='cangoright'>
canGoRight
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L204-L204'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Returns a boolean indicating if the item at the current location
is the rightmost sibling.</p>
<p>Alias for <a href="#isrightmost">isRightmost</a></p>
<div class='pre p1 fill-light mt0'>canGoRight</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">boolean</a></code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='cangodown'>
canGoDown
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L337-L339'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Alias for <code>isBranch</code></p>
<div class='pre p1 fill-light mt0'>canGoDown</div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
<div class='space-bottom0'>
<div>
<span class='code bold'>ipper</span> <code class='quiet'>(Any)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean">boolean</a></code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='replace'>
replace
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L964-L964'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Replaces the current item with the given value.</p>
<div class='pre p1 fill-light mt0'>replace(replaceWith: T, zipper: <a href="#zipper">Zipper</a>): <a href="#zipper">Zipper</a></div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>replaceWith</span> <code class='quiet'>(T)</code> item to replace the current one with.
</div>
</div>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code><a href="#zipper">Zipper</a></code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='edit'>
edit
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L954-L954'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Replaces the current item with value returned
by calling <code>fn</code> with the current item.</p>
<div class='pre p1 fill-light mt0'>edit(fn: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function">Function</a>, zipper: <a href="#zipper">Zipper</a>): <a href="#zipper">Zipper</a></div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>fn</span> <code class='quiet'>(<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function">Function</a>)</code> Function that takes the old item
and returns a new item.
</div>
</div>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code><a href="#zipper">Zipper</a></code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='insertleft'>
insertLeft
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L913-L913'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Inserts a new item as the left sibling.</p>
<div class='pre p1 fill-light mt0'>insertLeft(item: T, zipper: <a href="#zipper">Zipper</a>): <a href="#zipper">Zipper</a></div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>item</span> <code class='quiet'>(T)</code>
</div>
</div>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code><a href="#zipper">Zipper</a></code>:
</section>
<section class='p2 mb2 clearfix bg-white minishadow'>
<div class='clearfix'>
<h3 class='fl m0' id='insertright'>
insertRight
</h3>
<a class='fr fill-darken0 round round pad1x quiet h5' href='https://github.com/tommikaikkonen/zippa/blob/990c2a7a279dc830513d73ef4960e3d30f5f8244/./src/zipper.js#L923-L923'>
<span>./src/zipper.js</span>
</a>
</div>
<p>Inserts a new item as the right sibling.</p>
<div class='pre p1 fill-light mt0'>insertRight(item: T, zipper: <a href="#zipper">Zipper</a>): <a href="#zipper">Zipper</a></div>
<div class='py1 quiet mt1 prose-big'>Parameters</div>
<div class='prose'>
<div class='space-bottom0'>
<div>
<span class='code bold'>item</span> <code class='quiet'>(T)</code>
</div>
</div>
<div class='space-bottom0'>
<div>
<span class='code bold'>zipper</span> <code class='quiet'>(<a href="#zipper">Zipper</a>)</code>
</div>
</div>
</div>
<div class='py1 quiet mt1 prose-big'>Returns</div>
<code><a href="#zipper">Zipper</a></code>: