mutation-summary
Version:
Makes observing the DOM fast and easy
406 lines • 20.9 kB
HTML
<html class="default no-js">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>MutationSummary | mutation-summary</title>
<meta name="description" content="Documentation for mutation-summary">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="../assets/css/main.css">
<script async src="../assets/js/search.js" id="search-script"></script>
</head>
<body>
<header>
<div class="tsd-page-toolbar">
<div class="container">
<div class="table-wrap">
<div class="table-cell" id="tsd-search" data-index="../assets/js/search.json" data-base="..">
<div class="field">
<label for="tsd-search-field" class="tsd-widget search no-caption">Search</label>
<input id="tsd-search-field" type="text" />
</div>
<ul class="results">
<li class="state loading">Preparing search index...</li>
<li class="state failure">The search index is not available</li>
</ul>
<a href="../index.html" class="title">mutation-summary</a>
</div>
<div class="table-cell" id="tsd-widgets">
<div id="tsd-filter">
<a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a>
<div class="tsd-filter-group">
<div class="tsd-select" id="tsd-filter-visibility">
<span class="tsd-select-label">All</span>
<ul class="tsd-select-list">
<li data-value="public">Public</li>
<li data-value="protected">Public/Protected</li>
<li data-value="private" class="selected">All</li>
</ul>
</div>
<input type="checkbox" id="tsd-filter-inherited" checked />
<label class="tsd-widget" for="tsd-filter-inherited">Inherited</label>
<input type="checkbox" id="tsd-filter-externals" checked />
<label class="tsd-widget" for="tsd-filter-externals">Externals</label>
</div>
</div>
<a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a>
</div>
</div>
</div>
</div>
<div class="tsd-page-title">
<div class="container">
<ul class="tsd-breadcrumb">
<li>
<a href="../modules.html">mutation-summary</a>
</li>
<li>
<a href="mutationsummary.html">MutationSummary</a>
</li>
</ul>
<h1>Class MutationSummary</h1>
</div>
</div>
</header>
<div class="container container-main">
<div class="row">
<div class="col-8 col-content">
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>This is the main entry point class for the Mutation Summary library. When
created, a MutationSummary takes care of the details of observing the DOM
for changes, computing the "net-effect" of what's changed and then delivers
these changes to the provided callback.</p>
</div>
<dl class="tsd-comment-tags">
<dt>example</dt>
<dd><pre><code>
<span style="color: #0000FF">const</span><span style="color: #000000"> </span><span style="color: #0070C1">ms</span><span style="color: #000000"> = </span><span style="color: #0000FF">new</span><span style="color: #000000"> </span><span style="color: #795E26">MutationSummary</span><span style="color: #000000">({</span>
<span style="color: #795E26">callback</span><span style="color: #000000">(</span><span style="color: #001080">summaries</span><span style="color: #000000">: </span><span style="color: #267F99">Summary</span><span style="color: #000000">[]) {</span>
<span style="color: #000000"> </span><span style="color: #001080">summaries</span><span style="color: #000000">.</span><span style="color: #795E26">forEach</span><span style="color: #000000">((</span><span style="color: #001080">summary</span><span style="color: #000000">: </span><span style="color: #267F99">Summary</span><span style="color: #000000">) </span><span style="color: #0000FF">=></span><span style="color: #000000"> </span><span style="color: #001080">console</span><span style="color: #000000">.</span><span style="color: #795E26">log</span><span style="color: #000000">(</span><span style="color: #001080">summary</span><span style="color: #000000">));</span>
<span style="color: #000000"> },</span>
<span style="color: #000000"> </span><span style="color: #001080">queries:</span><span style="color: #000000"> [</span>
<span style="color: #000000"> { </span><span style="color: #001080">all:</span><span style="color: #000000"> </span><span style="color: #0000FF">true</span><span style="color: #000000"> }</span>
<span style="color: #000000"> ]</span>
<span style="color: #000000">});</span>
</code></pre>
</dd>
</dl>
</div>
</section>
<section class="tsd-panel tsd-hierarchy">
<h3>Hierarchy</h3>
<ul class="tsd-hierarchy">
<li>
<span class="target">MutationSummary</span>
</li>
</ul>
</section>
<section class="tsd-panel-group tsd-index-group">
<h2>Index</h2>
<section class="tsd-panel tsd-index-panel">
<div class="tsd-index-content">
<section class="tsd-index-section ">
<h3>Constructors</h3>
<ul class="tsd-index-list">
<li class="tsd-kind-constructor tsd-parent-kind-class"><a href="mutationsummary.html#constructor" class="tsd-kind-icon">constructor</a></li>
</ul>
</section>
<section class="tsd-index-section ">
<h3>Properties</h3>
<ul class="tsd-index-list">
<li class="tsd-kind-property tsd-parent-kind-class tsd-is-static"><a href="mutationsummary.html#createqueryvalidator" class="tsd-kind-icon">create<wbr>Query<wbr>Validator</a></li>
</ul>
</section>
<section class="tsd-index-section ">
<h3>Methods</h3>
<ul class="tsd-index-list">
<li class="tsd-kind-method tsd-parent-kind-class"><a href="mutationsummary.html#disconnect" class="tsd-kind-icon">disconnect</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="mutationsummary.html#reconnect" class="tsd-kind-icon">reconnect</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="mutationsummary.html#takesummaries" class="tsd-kind-icon">take<wbr>Summaries</a></li>
</ul>
</section>
</div>
</section>
</section>
<section class="tsd-panel-group tsd-member-group ">
<h2>Constructors</h2>
<section class="tsd-panel tsd-member tsd-kind-constructor tsd-parent-kind-class">
<a name="constructor" class="tsd-anchor"></a>
<h3>constructor</h3>
<ul class="tsd-signatures tsd-kind-constructor tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">new <wbr>Mutation<wbr>Summary<span class="tsd-signature-symbol">(</span>opts<span class="tsd-signature-symbol">: </span><a href="../interfaces/imutationsummaryoptions.html" class="tsd-signature-type" data-tsd-kind="Interface">IMutationSummaryOptions</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="mutationsummary.html" class="tsd-signature-type" data-tsd-kind="Class">MutationSummary</a></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/convergencelabs/mutation-summary/blob/7c78d6f/src/MutationSummary.ts#L41">MutationSummary.ts:41</a></li>
</ul>
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Creates a new MutationSummary class using the specified options.</p>
</div>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>opts: <a href="../interfaces/imutationsummaryoptions.html" class="tsd-signature-type" data-tsd-kind="Interface">IMutationSummaryOptions</a></h5>
<div class="tsd-comment tsd-typography">
<p>The options that configure how the MutationSummary
instance will observe and report changes.</p>
</div>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <a href="mutationsummary.html" class="tsd-signature-type" data-tsd-kind="Class">MutationSummary</a></h4>
</li>
</ul>
</section>
</section>
<section class="tsd-panel-group tsd-member-group ">
<h2>Properties</h2>
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-class tsd-is-static">
<a name="createqueryvalidator" class="tsd-anchor"></a>
<h3><span class="tsd-flag ts-flagStatic">Static</span> create<wbr>Query<wbr>Validator</h3>
<div class="tsd-signature tsd-kind-icon">create<wbr>Query<wbr>Validator<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>root<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Node</span>, query<span class="tsd-signature-symbol">: </span><a href="../interfaces/iquery.html" class="tsd-signature-type" data-tsd-kind="Interface">IQuery</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> => </span><a href="../interfaces/iqueryvalidator.html" class="tsd-signature-type" data-tsd-kind="Interface">IQueryValidator</a></div>
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/convergencelabs/mutation-summary/blob/7c78d6f/src/MutationSummary.ts#L31">MutationSummary.ts:31</a></li>
</ul>
</aside>
<div class="tsd-type-declaration">
<h4>Type declaration</h4>
<ul class="tsd-parameters">
<li class="tsd-parameter-signature">
<ul class="tsd-signatures tsd-kind-type-literal tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon"><span class="tsd-signature-symbol">(</span>root<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Node</span>, query<span class="tsd-signature-symbol">: </span><a href="../interfaces/iquery.html" class="tsd-signature-type" data-tsd-kind="Interface">IQuery</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="../interfaces/iqueryvalidator.html" class="tsd-signature-type" data-tsd-kind="Interface">IQueryValidator</a></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>root: <span class="tsd-signature-type">Node</span></h5>
</li>
<li>
<h5>query: <a href="../interfaces/iquery.html" class="tsd-signature-type" data-tsd-kind="Interface">IQuery</a></h5>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <a href="../interfaces/iqueryvalidator.html" class="tsd-signature-type" data-tsd-kind="Interface">IQueryValidator</a></h4>
</li>
</ul>
</li>
</ul>
</div>
</section>
</section>
<section class="tsd-panel-group tsd-member-group ">
<h2>Methods</h2>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="disconnect" class="tsd-anchor"></a>
<h3>disconnect</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">disconnect<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="summary.html" class="tsd-signature-type" data-tsd-kind="Class">Summary</a><span class="tsd-signature-symbol">[]</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/convergencelabs/mutation-summary/blob/7c78d6f/src/MutationSummary.ts#L116">MutationSummary.ts:116</a></li>
</ul>
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Discontinues observation immediately. If DOM changes are pending delivery,
they will be fetched and reported as the same array of summaries which
are handed into the callback. If there is nothing to report,
this function returns undefined.</p>
</div>
</div>
<h4 class="tsd-returns-title">Returns <a href="summary.html" class="tsd-signature-type" data-tsd-kind="Class">Summary</a><span class="tsd-signature-symbol">[]</span></h4>
<p>A list of changes that have not yet been delivered to a callback.</p>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="reconnect" class="tsd-anchor"></a>
<h3>reconnect</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">reconnect<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/convergencelabs/mutation-summary/blob/7c78d6f/src/MutationSummary.ts#L87">MutationSummary.ts:87</a></li>
</ul>
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Starts observation using an existing <code>MutationSummary</code> which has been
disconnected. Note that this function is just a convenience method for
creating a new <code>MutationSummary</code> with the same options. The next time
changes are reported, they will relative to the state of the observed
DOM at the point that <code>reconnect</code> was called.</p>
</div>
</div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="takesummaries" class="tsd-anchor"></a>
<h3>take<wbr>Summaries</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">take<wbr>Summaries<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="summary.html" class="tsd-signature-type" data-tsd-kind="Class">Summary</a><span class="tsd-signature-symbol">[]</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/convergencelabs/mutation-summary/blob/7c78d6f/src/MutationSummary.ts#L100">MutationSummary.ts:100</a></li>
</ul>
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Immediately calculates changes and returns them as an array of summaries.
If there are no changes to report, returns undefined.</p>
</div>
</div>
<h4 class="tsd-returns-title">Returns <a href="summary.html" class="tsd-signature-type" data-tsd-kind="Class">Summary</a><span class="tsd-signature-symbol">[]</span></h4>
</li>
</ul>
</section>
</section>
</div>
<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
<nav class="tsd-navigation primary">
<ul>
<li class=" ">
<a href="../modules.html">Exports</a>
</li>
</ul>
</nav>
<nav class="tsd-navigation secondary menu-sticky">
<ul class="before-current">
<li class=" tsd-kind-enum">
<a href="../enums/movement.html" class="tsd-kind-icon">Movement</a>
</li>
<li class=" tsd-kind-class">
<a href="childlistchange.html" class="tsd-kind-icon">Child<wbr>List<wbr>Change</a>
</li>
<li class=" tsd-kind-class">
<a href="mutationprojection.html" class="tsd-kind-icon">Mutation<wbr>Projection</a>
</li>
</ul>
<ul class="current">
<li class="current tsd-kind-class">
<a href="mutationsummary.html" class="tsd-kind-icon">Mutation<wbr>Summary</a>
<ul>
<li class=" tsd-kind-constructor tsd-parent-kind-class">
<a href="mutationsummary.html#constructor" class="tsd-kind-icon">constructor</a>
</li>
<li class=" tsd-kind-property tsd-parent-kind-class tsd-is-static">
<a href="mutationsummary.html#createqueryvalidator" class="tsd-kind-icon">create<wbr>Query<wbr>Validator</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="mutationsummary.html#disconnect" class="tsd-kind-icon">disconnect</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="mutationsummary.html#reconnect" class="tsd-kind-icon">reconnect</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="mutationsummary.html#takesummaries" class="tsd-kind-icon">take<wbr>Summaries</a>
</li>
</ul>
</li>
</ul>
<ul class="after-current">
<li class=" tsd-kind-class">
<a href="nodechange.html" class="tsd-kind-icon">Node<wbr>Change</a>
</li>
<li class=" tsd-kind-class tsd-has-type-parameter">
<a href="nodemap.html" class="tsd-kind-icon">Node<wbr>Map</a>
</li>
<li class=" tsd-kind-class">
<a href="qualifier.html" class="tsd-kind-icon">Qualifier</a>
</li>
<li class=" tsd-kind-class">
<a href="selector.html" class="tsd-kind-icon">Selector</a>
</li>
<li class=" tsd-kind-class">
<a href="summary.html" class="tsd-kind-icon">Summary</a>
</li>
<li class=" tsd-kind-class">
<a href="treechanges.html" class="tsd-kind-icon">Tree<wbr>Changes</a>
</li>
<li class=" tsd-kind-class">
<a href="treemirror.html" class="tsd-kind-icon">Tree<wbr>Mirror</a>
</li>
<li class=" tsd-kind-class">
<a href="treemirrorclient.html" class="tsd-kind-icon">Tree<wbr>Mirror<wbr>Client</a>
</li>
<li class=" tsd-kind-interface">
<a href="../interfaces/iattributedata.html" class="tsd-kind-icon">IAttribute<wbr>Data</a>
</li>
<li class=" tsd-kind-interface">
<a href="../interfaces/imutationsummaryoptions.html" class="tsd-kind-icon">IMutation<wbr>Summary<wbr>Options</a>
</li>
<li class=" tsd-kind-interface">
<a href="../interfaces/inodedata.html" class="tsd-kind-icon">INode<wbr>Data</a>
</li>
<li class=" tsd-kind-interface tsd-has-type-parameter">
<a href="../interfaces/inumbermap.html" class="tsd-kind-icon">INumber<wbr>Map</a>
</li>
<li class=" tsd-kind-interface">
<a href="../interfaces/ipositiondata.html" class="tsd-kind-icon">IPosition<wbr>Data</a>
</li>
<li class=" tsd-kind-interface">
<a href="../interfaces/iquery.html" class="tsd-kind-icon">IQuery</a>
</li>
<li class=" tsd-kind-interface">
<a href="../interfaces/iqueryvalidator.html" class="tsd-kind-icon">IQuery<wbr>Validator</a>
</li>
<li class=" tsd-kind-interface tsd-has-type-parameter">
<a href="../interfaces/istringmap.html" class="tsd-kind-icon">IString<wbr>Map</a>
</li>
<li class=" tsd-kind-interface">
<a href="../interfaces/itextdata.html" class="tsd-kind-icon">IText<wbr>Data</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<footer class="with-border-bottom">
<div class="container">
<h2>Legend</h2>
<div class="tsd-legend-group">
<ul class="tsd-legend">
<li class="tsd-kind-constructor tsd-parent-kind-class"><span class="tsd-kind-icon">Constructor</span></li>
<li class="tsd-kind-property tsd-parent-kind-class"><span class="tsd-kind-icon">Property</span></li>
<li class="tsd-kind-method tsd-parent-kind-class"><span class="tsd-kind-icon">Method</span></li>
</ul>
<ul class="tsd-legend">
<li class="tsd-kind-property tsd-parent-kind-interface"><span class="tsd-kind-icon">Property</span></li>
<li class="tsd-kind-method tsd-parent-kind-interface"><span class="tsd-kind-icon">Method</span></li>
</ul>
<ul class="tsd-legend">
<li class="tsd-kind-property tsd-parent-kind-class tsd-is-static"><span class="tsd-kind-icon">Static property</span></li>
<li class="tsd-kind-method tsd-parent-kind-class tsd-is-static"><span class="tsd-kind-icon">Static method</span></li>
</ul>
<ul class="tsd-legend">
<li class="tsd-kind-method tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited method</span></li>
</ul>
</div>
</div>
</footer>
<div class="container tsd-generator">
<p>Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p>
</div>
<div class="overlay"></div>
<script src="../assets/js/main.js"></script>
</body>
</html>