UNPKG

create-gojs-kit

Version:

A CLI for downloading GoJS samples, extensions, and docs

230 lines 57.7 kB
<!DOCTYPE html><html class="default" lang="en"><head><meta charSet="utf-8"/><link rel="stylesheet" href="../../assets/css/style.css"/><link rel="preconnect" href="https://rsms.me/"/><link rel="stylesheet" href="https://rsms.me/inter/inter.css"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>ChangedEvent | GoJS API</title><meta name="description" content="Documentation for GoJS API"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><link rel="stylesheet" href="../assets/custom.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script type="text/javascript">// formerly in api.js
  var hash = null;
  function changeHash() {
      var panels = document.getElementsByClassName("tsd-panel");
      for (let i = 0; i < panels.length; i++) {
          var p = panels[i];
          p.classList.remove("targeted");
      }
      hash = window.location.hash.slice(1);
      if (hash) {
          var elt = document.getElementById(hash);
          if (elt) elt.parentNode.classList.add("targeted");
      }
  }
  document.addEventListener("DOMContentLoaded", changeHash);
  window.addEventListener("hashchange", changeHash);</script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header><nav id="navTop" class="w-full h-[var(--topnav-h)] z-30 bg-[var(--color-background-secondary)] border-b border-b-[var(--color-accent)]"><div class="max-w-screen-xl mx-auto flex flex-wrap items-start justify-between px-4"><a class="!text-white bg-nwoods-primary font-bold !leading-[calc(var(--topnav-h)_-_1px)] my-0 px-2 text-4xl lg:text-5xl logo" href="../../index.html">GoJS</a><div class="relative"><button id="topnavButton" class="h-[calc(var(--topnav-h)_-_1px)] px-2 m-0 text-[var(--color-text)] bg-inherit shadow-none md:hidden hover:!bg-inherit hover:!text-nwoods-accent hover:!shadow-none" aria-label="Navigation"><svg class="h-7 w-7 block" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></button><div id="topnavList" class="hidden md:block"><div class="absolute right-0 z-30 flex flex-col items-end rounded border border-[var(--color-accent)] p-4 pl-12 shadow bg-[var(--color-background-secondary)] text-[var(--color-text)] font-semibold
                        md:flex-row md:space-x-4 md:items-start md:border-0 md:p-0 md:shadow-none md:!bg-inherit"><a href="../../learn/index.html">Learn</a><a href="../../samples/index.html">Samples</a><a href="../../intro/index.html">Intro</a><a class="active" href="../../api/index.html">API</a><a href="../../download.html">Download</a><a href="https://forum.nwoods.com/c/gojs/11" target="_blank" rel="noopener">Forum</a><a href="https://nwoods.com/contact.html" target="_blank" rel="noopener" id="contactBtn">Contact</a><a href="https://nwoods.com/sales/index.html" target="_blank" rel="noopener" id="buyBtn">Buy</a></div></div></div></div></nav><script>window.addEventListener("DOMContentLoaded", function () {
    // topnav
    var topButton = document.getElementById("topnavButton");
    var topnavList = document.getElementById("topnavList");
    if (topButton && topnavList) {
      topButton.addEventListener("click", function (e) {
        topnavList
          .classList
          .toggle("hidden");
        e.stopPropagation();
      });
      document.addEventListener("click", function (e) {
        // if the clicked element isn't the list, close the list
        if (!topnavList.classList.contains("hidden") && !e.target.closest("#topnavList")) {
          topButton.click();
        }
      });

      // set active <a> element
      // done via active tag below, always API
    }
  });</script><div class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><div id="tsd-search-help"><code class="!text-lg">/</code> to search</div><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></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">GoJS API</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><div class="flex w-full max-w-screen-xl mx-auto px-2 items-center justify-between"><div><ul class="tsd-breadcrumb"><li><a href="../index.html">GoJS API</a></li><li><a href="ChangedEvent.html">ChangedEvent</a></li></ul><h1 class="flex items-center">Class ChangedEvent</h1></div><div class="text-xs"><b>GoJS</b>® Diagramming Components<br/>version 3.1.0<br/>by <a href="https://nwoods.com/">Northwoods Software®</a></div></div></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>A ChangedEvent represents a change to an object, typically a <a href="GraphObject.html" class="tsd-kind-class">GraphObject</a>,
but also for model data, a <a href="Model.html" class="tsd-kind-class">Model</a>, or a <a href="Diagram.html" class="tsd-kind-class">Diagram</a>.
The most common case is for remembering the name of a property
and the before-and-after values for that property.</p>
<p>You can listen for changed events on the model using <a href="Model.html#addChangedListener" class="tsd-kind-method">Model.addChangedListener</a>
or <a href="Diagram.html#addModelChangedListener" class="tsd-kind-method">Diagram.addModelChangedListener</a>, and on the Diagram using <a href="Diagram.html#addChangedListener" class="tsd-kind-method">Diagram.addChangedListener</a>.</p>
<p>There are four kinds of changes, represented by enumerated values:
<a href="ChangeType.html#Property" class="tsd-kind-enum-member">ChangeType.Property</a> (the most common),
<a href="ChangeType.html#Insert" class="tsd-kind-enum-member">ChangeType.Insert</a> and <a href="ChangeType.html#Remove" class="tsd-kind-enum-member">ChangeType.Remove</a> (to represent inserting or removing objects from collections),
and <a href="ChangeType.html#Transaction" class="tsd-kind-enum-member">ChangeType.Transaction</a> (to notify about beginning or ending transactions or undo or redo).</p>
<p>The most common kind of ChangedEvent is a Property change.
The name of the property is given by <a href="ChangedEvent.html#propertyName" class="tsd-kind-accessor">propertyName</a>.
The modified object is given by <a href="ChangedEvent.html#object" class="tsd-kind-accessor">object</a>.
Use the <a href="ChangedEvent.html#oldValue" class="tsd-kind-accessor">oldValue</a> and <a href="ChangedEvent.html#newValue" class="tsd-kind-accessor">newValue</a> properties for the before and after property values.</p>
<p>For an Insert ChangedEvent, the modified collection (often an Array) is a property value on the <a href="ChangedEvent.html#object" class="tsd-kind-accessor">object</a>.
The <a href="ChangedEvent.html#propertyName" class="tsd-kind-accessor">propertyName</a> helps distinguish between different collections on the object.
Use the <a href="ChangedEvent.html#newValue" class="tsd-kind-accessor">newValue</a> property to indicate the value that was inserted.
Use the <a href="ChangedEvent.html#newParam" class="tsd-kind-accessor">newParam</a> property to indicate where or how, such as an array index or dictionary key.</p>
<p>For a Remove ChangedEvent, the modified collection is a property value on the <a href="ChangedEvent.html#object" class="tsd-kind-accessor">object</a>.
The <a href="ChangedEvent.html#propertyName" class="tsd-kind-accessor">propertyName</a> helps distinguish between different collections on the object.
Use the <a href="ChangedEvent.html#oldValue" class="tsd-kind-accessor">oldValue</a> property to indicate the value that was removed.
Use the <a href="ChangedEvent.html#oldParam" class="tsd-kind-accessor">oldParam</a> property to indicate where or how, such as an array index or dictionary key.</p>
<p>Transaction ChangedEvents are generated by the <a href="UndoManager.html" class="tsd-kind-class">UndoManager</a>, typically to update the database or other pieces of the UI.
Listeners should not modify the model or its diagram(s).
The <a href="ChangedEvent.html#propertyName" class="tsd-kind-accessor">propertyName</a> names the nature of the ChangedEvent.
For the very first transaction, the property name is &quot;StartingFirstTransaction&quot;.
This ChangedEvent precedes a ChangedEvent whose property name is &quot;StartedTransaction&quot;,
which occurs for every top-level transaction.</p>
<p>When ending a top-level transaction, there is first a ChangedEvent whose name is &quot;ComittingTransaction&quot;.
This is followed by one with either &quot;CommittedTransaction&quot; or &quot;RolledBackTransaction&quot;,
depending on how the transaction is ending.
The <a href="ChangedEvent.html#oldValue" class="tsd-kind-accessor">oldValue</a> provides the transaction name and the <a href="ChangedEvent.html#object" class="tsd-kind-accessor">object</a> is the <a href="Transaction.html" class="tsd-kind-class">Transaction</a> being finished.
(Note that the Transaction value may be null if no Transaction is available at that time,
perhaps because there were no changes made during the transaction.)
That Transaction can be scanned to look for ChangedEvents that you may wish to record in a database,
all within a single database transaction.</p>
<p>There are also Transaction ChangedEvents corresponding to &quot;StartingUndo&quot;, &quot;FinishedUndo&quot;,
&quot;StartingRedo&quot;, and &quot;FinishedRedo&quot;.
The <a href="ChangedEvent.html#object" class="tsd-kind-accessor">object</a> property provides the <a href="Transaction.html" class="tsd-kind-class">Transaction</a> that is about-to-be or just-was undone or redone.</p>
<p>Non-Transaction ChangedEvents are remembered by the <a href="UndoManager.html" class="tsd-kind-class">UndoManager</a>, if <a href="UndoManager.html#isEnabled" class="tsd-kind-accessor">UndoManager.isEnabled</a>,
and held in the <a href="UndoManager.html#history" class="tsd-kind-accessor">UndoManager.history</a> as <a href="Transaction.html" class="tsd-kind-class">Transaction</a>s which hold lists of ChangedEvents.
That is why ChangedEvent implements <a href="ChangedEvent.html#undo" class="tsd-kind-method">undo</a> and <a href="ChangedEvent.html#redo" class="tsd-kind-method">redo</a> of the change that it remembers.</p>
<p>When the ChangedEvent represents a change to a <a href="Model.html" class="tsd-kind-class">Model</a>, the value of <a href="ChangedEvent.html#model" class="tsd-kind-accessor">model</a> is non-null
and the value of <a href="ChangedEvent.html#diagram" class="tsd-kind-accessor">diagram</a> is meaningless.
If the change is a structural change to the model,
the value of <a href="ChangedEvent.html#modelChange" class="tsd-kind-accessor">modelChange</a> indicates the kind of change.
Currently defined model changed event names include:</p>
<ul>
<li><strong>&quot;nodeDataArray&quot;</strong>, after the model&#39;s <a href="Model.html#nodeDataArray" class="tsd-kind-accessor">Model.nodeDataArray</a> is replaced, inserted into or removed from
(setting <a href="Model.html#nodeDataArray" class="tsd-kind-accessor">Model.nodeDataArray</a> or calling <a href="Model.html#addNodeData" class="tsd-kind-method">Model.addNodeData</a> or <a href="Model.html#removeNodeData" class="tsd-kind-method">Model.removeNodeData</a>)</li>
<li><strong>&quot;nodeKey&quot;</strong>, after changing a node data&#39;s unique key (<a href="Model.html#setKeyForNodeData" class="tsd-kind-method">Model.setKeyForNodeData</a>)</li>
<li><strong>&quot;nodeCategory&quot;</strong>, after changing a node data&#39;s category (<a href="Model.html#setCategoryForNodeData" class="tsd-kind-method">Model.setCategoryForNodeData</a>)</li>
<li><strong>&quot;linkDataArray&quot;</strong>, after the model&#39;s <a href="GraphLinksModel.html#linkDataArray" class="tsd-kind-accessor">GraphLinksModel.linkDataArray</a> is replaced, inserted into or removed from
(setting <a href="GraphLinksModel.html#linkDataArray" class="tsd-kind-accessor">GraphLinksModel.linkDataArray</a> or calling <a href="GraphLinksModel.html#addLinkData" class="tsd-kind-method">GraphLinksModel.addLinkData</a>
or <a href="GraphLinksModel.html#removeLinkData" class="tsd-kind-method">GraphLinksModel.removeLinkData</a>)</li>
<li><strong>&quot;linkKey&quot;</strong>, after changing a link data&#39;s unique key (<a href="GraphLinksModel.html#setKeyForLinkData" class="tsd-kind-method">GraphLinksModel.setKeyForLinkData</a>)</li>
<li><strong>&quot;linkCategory&quot;</strong>, after changing a link data&#39;s category (<a href="GraphLinksModel.html#setCategoryForLinkData" class="tsd-kind-method">GraphLinksModel.setCategoryForLinkData</a>)</li>
<li><strong>&quot;linkFromKey&quot;</strong>, after changing a link data&#39;s &quot;from&quot; node key (<a href="GraphLinksModel.html#setFromKeyForLinkData" class="tsd-kind-method">GraphLinksModel.setFromKeyForLinkData</a>)</li>
<li><strong>&quot;linkToKey&quot;</strong>, after changing a link data&#39;s &quot;to&quot; node key (<a href="GraphLinksModel.html#setToKeyForLinkData" class="tsd-kind-method">GraphLinksModel.setToKeyForLinkData</a>)</li>
<li><strong>&quot;linkFromPortId&quot;</strong>, after changing a link data&#39;s &quot;from&quot; port identifier string (<a href="GraphLinksModel.html#setFromPortIdForLinkData" class="tsd-kind-method">GraphLinksModel.setFromPortIdForLinkData</a>)</li>
<li><strong>&quot;linkToPortId&quot;</strong>, after changing a link data&#39;s &quot;to&quot; port identifier string (<a href="GraphLinksModel.html#setToPortIdForLinkData" class="tsd-kind-method">GraphLinksModel.setToPortIdForLinkData</a>)</li>
<li><strong>&quot;linkLabelKeys&quot;</strong>, after replacing, inserting into, or removing from a link data&#39;s array of keys to label nodes
(calling <a href="GraphLinksModel.html#setLabelKeysForLinkData" class="tsd-kind-method">GraphLinksModel.setLabelKeysForLinkData</a>, <a href="GraphLinksModel.html#addLabelKeyForLinkData" class="tsd-kind-method">GraphLinksModel.addLabelKeyForLinkData</a>,
or <a href="GraphLinksModel.html#removeLabelKeyForLinkData" class="tsd-kind-method">GraphLinksModel.removeLabelKeyForLinkData</a>)</li>
<li><strong>&quot;nodeGroupKey&quot;</strong>, after changing a node data&#39;s key for a containing group data (<a href="GraphLinksModel.html#setGroupKeyForNodeData" class="tsd-kind-method">GraphLinksModel.setGroupKeyForNodeData</a>)</li>
<li><strong>&quot;nodeParentKey&quot;</strong>, after changing a node data&#39;s &quot;parent&quot; node key (<a href="TreeModel.html#setParentKeyForNodeData" class="tsd-kind-method">TreeModel.setParentKeyForNodeData</a>)</li>
<li><strong>&quot;parentLinkCategory&quot;</strong>, after changing a node data&#39;s &quot;parent&quot; link&#39;s category(<a href="TreeModel.html#setParentLinkCategoryForNodeData" class="tsd-kind-method">TreeModel.setParentLinkCategoryForNodeData</a>)</li>
<li>other names are for internal implementation use only, only on Transaction ChangedEvents</li>
</ul>
<p>The value of <a href="ChangedEvent.html#propertyName" class="tsd-kind-accessor">ChangedEvent.propertyName</a> indicates the actual name of the property that was modified,
which may be different than the predefined structural change name listed above.
<a href="ChangedEvent.html#modelChange" class="tsd-kind-accessor">ChangedEvent.modelChange</a> is a non-empty string only when there is a known structural change to the model,
not just the setting of some property on some object.</p>
<p>When the ChangedEvent represents a change to a <a href="Diagram.html" class="tsd-kind-class">Diagram</a> or a <a href="Layer.html" class="tsd-kind-class">Layer</a> or a <a href="GraphObject.html" class="tsd-kind-class">GraphObject</a> within a diagram,
the value of <a href="ChangedEvent.html#diagram" class="tsd-kind-accessor">diagram</a> is non-null and the values of <a href="ChangedEvent.html#model" class="tsd-kind-accessor">model</a> and <a href="ChangedEvent.html#modelChange" class="tsd-kind-accessor">modelChange</a> are meaningless.</p>
<p>Please note that ChangedEvents can be raised for many different causes.
You may not be interested in changes to temporary objects -- in that case ignore the ChangedEvent when
<a href="Model.html#skipsUndoManager" class="tsd-kind-accessor">Model.skipsUndoManager</a> or <a href="Diagram.html#skipsUndoManager" class="tsd-kind-accessor">Diagram.skipsUndoManager</a> is true.</p>
</div></section><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role="button" aria-expanded="true" tabIndex="0"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-chevronSmall"></use></svg> Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Constructors</h3><div class="tsd-index-list"><a href="ChangedEvent.html#constructor" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a>
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Accessors</h3><div class="tsd-index-list"><a href="ChangedEvent.html#change" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>change</span></a>
<a href="ChangedEvent.html#diagram" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>diagram</span></a>
<a href="ChangedEvent.html#isTransactionFinished" class="tsd-index-link"><svg class="readonly tsd-subicon" viewBox="0 0 28 28"><g id="subicon-R,#FF4D4D"><rect fill="var(--color-icon-background)" width="28" height="28" rx="14"></rect><path transform="translate(2, 2)" fill="none" stroke-width="1.5" stroke="var(--color-text)" d="M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z" stroke-linecap="round" stroke-linejoin="round"></path></g></svg><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>is<wbr/>Transaction<wbr/>Finished</span></a>
<a href="ChangedEvent.html#model" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>model</span></a>
<a href="ChangedEvent.html#modelChange" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>model<wbr/>Change</span></a>
<a href="ChangedEvent.html#newParam" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>new<wbr/>Param</span></a>
<a href="ChangedEvent.html#newValue" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>new<wbr/>Value</span></a>
<a href="ChangedEvent.html#object" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>object</span></a>
<a href="ChangedEvent.html#oldParam" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>old<wbr/>Param</span></a>
<a href="ChangedEvent.html#oldValue" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>old<wbr/>Value</span></a>
<a href="ChangedEvent.html#propertyName" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>property<wbr/>Name</span></a>
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="ChangedEvent.html#canRedo" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Redo</span></a>
<a href="ChangedEvent.html#canUndo" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Undo</span></a>
<a href="ChangedEvent.html#clear" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>clear</span></a>
<a href="ChangedEvent.html#copy" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>copy</span></a>
<a href="ChangedEvent.html#getParam" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>get<wbr/>Param</span></a>
<a href="ChangedEvent.html#getValue" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>get<wbr/>Value</span></a>
<a href="ChangedEvent.html#redo" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>redo</span></a>
<a href="ChangedEvent.html#undo" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>undo</span></a>
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="ChangedEvent.html#Insert" class="tsd-index-link deprecated"><svg class="static tsd-subicon" viewBox="0 0 28 28"><g id="subicon-S,#FF984D"><rect fill="var(--color-icon-background)" width="28" height="28" rx="14"></rect><path transform="translate(2, 2)" fill="none" stroke-width="1.5" stroke="var(--color-text)" d="M5.25 8.25h15m-16.5 7.5h15m-1.8-13.5-3.9 19.5m-2.1-19.5-3.9 19.5" stroke-linecap="round" stroke-linejoin="round"></path></g></svg><svg class="readonly tsd-subicon" viewBox="0 0 28 28"><g id="subicon-R,#FF984D"><rect fill="var(--color-icon-background)" width="28" height="28" rx="14"></rect><path transform="translate(2, 2)" fill="none" stroke-width="1.5" stroke="var(--color-text)" d="M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z" stroke-linecap="round" stroke-linejoin="round"></path></g></svg><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>Insert</span></a>
<a href="ChangedEvent.html#Property" class="tsd-index-link deprecated"><svg class="static tsd-subicon" viewBox="0 0 28 28"><use href="#subicon-S,#FF984D"></use></svg><svg class="readonly tsd-subicon" viewBox="0 0 28 28"><use href="#subicon-R,#FF984D"></use></svg><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>Property</span></a>
<a href="ChangedEvent.html#Remove" class="tsd-index-link deprecated"><svg class="static tsd-subicon" viewBox="0 0 28 28"><use href="#subicon-S,#FF984D"></use></svg><svg class="readonly tsd-subicon" viewBox="0 0 28 28"><use href="#subicon-R,#FF984D"></use></svg><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>Remove</span></a>
<a href="ChangedEvent.html#Transaction" class="tsd-index-link deprecated"><svg class="static tsd-subicon" viewBox="0 0 28 28"><use href="#subicon-S,#FF984D"></use></svg><svg class="readonly tsd-subicon" viewBox="0 0 28 28"><use href="#subicon-R,#FF984D"></use></svg><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>Transaction</span></a>
</div></section></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_ChangedEvent" class="tsd-anchor"></a><span class="tsd-kind-constructor-signature">new <wbr/>Changed<wbr/>Event</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="ChangedEvent.html" class="tsd-signature-type tsd-kind-class">ChangedEvent</a><a href="#constructor.new_ChangedEvent" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>The ChangedEvent class constructor produces an empty ChangedEvent object.
It would be unusual to need to call this constructor.
Normally the Diagram automatically constructs ChangedEvents as the diagram or its GraphObjects are modified,
and the Model automatically constructs ChangedEvents as the model or its data are modified.</p>
</div><h4 class="tsd-returns-title">Returns <a href="ChangedEvent.html" class="tsd-signature-type tsd-kind-class">ChangedEvent</a></h4></li></ul></section></section><section class="tsd-panel-group tsd-member-group"><h2>Accessors</h2><section class="tsd-panel tsd-member"><a id="change" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>change</span><div class="membertype"><span class="tsd-signature-symbol">: </span><a href="ChangeType.html" class="tsd-signature-type tsd-kind-enum">ChangeType</a></div><a href="#change" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Gets or sets the nature of change that occurred.
The default is <a href="ChangeType.html#Property" class="tsd-kind-enum-member">ChangeType.Property</a>.
Other values are <a href="ChangeType.html#Insert" class="tsd-kind-enum-member">ChangeType.Insert</a>, <a href="ChangeType.html#Remove" class="tsd-kind-enum-member">ChangeType.Remove</a>,
and <a href="ChangeType.html#Transaction" class="tsd-kind-enum-member">ChangeType.Transaction</a>.</p>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="diagram" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>diagram</span><div class="membertype"><span class="tsd-signature-symbol">: </span><a href="Diagram.html" class="tsd-signature-type tsd-kind-class">Diagram</a></div><a href="#diagram" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Gets or sets the <a href="Diagram.html" class="tsd-kind-class">Diagram</a> that was modified.
When this property is non-null, the <a href="ChangedEvent.html#model" class="tsd-kind-accessor">model</a> property will be null.
However this property and the <a href="ChangedEvent.html#model" class="tsd-kind-accessor">model</a> property may both be null simultaneously,
when no particular model or diagram applies.</p>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="isTransactionFinished" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagReadOnly">Readonly</code><span>is<wbr/>Transaction<wbr/>Finished</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></div><a href="#isTransactionFinished" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>This read-only property is true when this ChangedEvent is of type <a href="ChangeType.html#Transaction" class="tsd-kind-enum-member">ChangeType.Transaction</a> and represents the end of a transactional change.
It is implemented as:</p>
<pre><code class="language-js"><span class="hl-8">return</span><span class="hl-2"> (</span><span class="hl-1">this</span><span class="hl-2">.</span><span class="hl-4">change</span><span class="hl-2"> === </span><span class="hl-4">ChangeType</span><span class="hl-2">.</span><span class="hl-4">Transaction</span><span class="hl-2"> &amp;&amp;</span><br/><span class="hl-2">        (</span><span class="hl-1">this</span><span class="hl-2">.</span><span class="hl-4">propertyName</span><span class="hl-2"> === </span><span class="hl-6">&quot;CommittedTransaction&quot;</span><span class="hl-2"> ||</span><br/><span class="hl-2">         </span><span class="hl-1">this</span><span class="hl-2">.</span><span class="hl-4">propertyName</span><span class="hl-2"> === </span><span class="hl-6">&quot;FinishedUndo&quot;</span><span class="hl-2"> ||</span><br/><span class="hl-2">         </span><span class="hl-1">this</span><span class="hl-2">.</span><span class="hl-4">propertyName</span><span class="hl-2"> === </span><span class="hl-6">&quot;FinishedRedo&quot;</span><span class="hl-2">));</span>
</code><button>Copy</button></pre>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="model" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>model</span><div class="membertype"><span class="tsd-signature-symbol">: </span><a href="Model.html" class="tsd-signature-type tsd-kind-class">Model</a></div><a href="#model" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Gets or sets the <a href="Model.html" class="tsd-kind-class">Model</a> or <a href="TreeModel.html" class="tsd-kind-class">TreeModel</a> or <a href="GraphLinksModel.html" class="tsd-kind-class">GraphLinksModel</a> that was modified.
When this property is non-null, the <a href="ChangedEvent.html#diagram" class="tsd-kind-accessor">diagram</a> property will be null.
However this property and the <a href="ChangedEvent.html#diagram" class="tsd-kind-accessor">diagram</a> property may both be null simultaneously,
when no particular model or diagram applies.</p>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="modelChange" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>model<wbr/>Change</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></div><a href="#modelChange" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Gets or sets the name of the model change, reflecting a change to
model data in addition to a change to the model itself.</p>
<p>The default is an empty string, which indicates that this is just
a regular change to some object&#39;s state, probably its property.
For a list of possible model change names, see the documentation for <a href="ChangedEvent.html" class="tsd-kind-class">ChangedEvent</a>.
The names are compared in a case-sensitive manner.</p>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="newParam" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>new<wbr/>Param</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">any</span></div><a href="#newParam" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Gets or sets an optional value associated with the new value.
Most properties do not require any parameter to describe the change.
This is typically a value that helps distinguish the new value, such as an index into an array.
It is null if it is not used.
The default is null.</p>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="newValue" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>new<wbr/>Value</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">any</span></div><a href="#newValue" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Gets or sets the next or current value that the property has.
The default is null.</p>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="object" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>object</span><div class="membertype"><span class="tsd-signature-symbol">: </span><a href="ObjectData.html" class="tsd-signature-type tsd-kind-interface">ObjectData</a></div><a href="#object" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Gets or sets the Object that was modified.
The default is null.</p>
<p>For <a href="ChangeType.html#Transaction" class="tsd-kind-enum-member">ChangeType.Transaction</a> changes, this may be the <a href="Transaction.html" class="tsd-kind-class">Transaction</a>.</p>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="oldParam" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>old<wbr/>Param</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">any</span></div><a href="#oldParam" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Gets or sets an optional value associated with the old value.
Most properties do not require any parameter to describe the change.
This is typically a value that helps distinguish the old value, such as an index into an array.
It is null if it is not used.
The default is null.</p>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="oldValue" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>old<wbr/>Value</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">any</span></div><a href="#oldValue" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Gets or sets the previous or old value that the property had.
The default is null.</p>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="propertyName" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>property<wbr/>Name</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">a</span><span class="tsd-signature-symbol">: </span><a href="ObjectData.html" class="tsd-signature-type tsd-kind-interface">ObjectData</a>, <span class="tsd-kind-parameter">b</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">)</span></div><a href="#propertyName" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Gets or sets the name of the property change.
The default is an empty string, which is not a valid property name.
This property can be useful even when the type of change is
not <a href="ChangeType.html#Property" class="tsd-kind-enum-member">ChangeType.Property</a>, because it can help identify
the collection in the <a href="ChangedEvent.html#object" class="tsd-kind-accessor">object</a> that was modified
(for <a href="ChangeType.html#Insert" class="tsd-kind-enum-member">ChangeType.Insert</a> or <a href="ChangeType.html#Remove" class="tsd-kind-enum-member">ChangeType.Remove</a>)
or the stage of the current transaction (for <a href="ChangeType.html#Transaction" class="tsd-kind-enum-member">ChangeType.Transaction</a>).</p>
</div></li></ul></section></section><section class="tsd-panel-group tsd-member-group"><h2>Methods</h2><section class="tsd-panel tsd-member"><a id="canRedo" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>can<wbr/>Redo</span><a href="#canRedo" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="canRedo.canRedo-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Redo</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><a href="#canRedo.canRedo-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>This predicate returns true if you can call redo().</p>
</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><p>True if ready for redo() to be called.</p>
</li></ul></section><section class="tsd-panel tsd-member"><a id="canUndo" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>can<wbr/>Undo</span><a href="#canUndo" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="canUndo.canUndo-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Undo</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><a href="#canUndo.canUndo-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>This predicate returns true if you can call undo().</p>
</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><p>True if ready for undo() to be called.</p>
</li></ul></section><section class="tsd-panel tsd-member"><a id="clear" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>clear</span><a href="#clear" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="clear.clear-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">clear</span><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><a href="#clear.clear-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Forget any object references that this ChangedEvent may have.</p>
</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4></li></ul></section><section class="tsd-panel tsd-member"><a id="copy" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>copy</span><a href="#copy" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="copy.copy-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">copy</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="ChangedEvent.html" class="tsd-signature-type tsd-kind-class">ChangedEvent</a><a href="#copy.copy-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Make a copy of this ChangedEvent.
ChangedEvents are copied when the <a href="UndoManager.html" class="tsd-kind-class">UndoManager</a> adds to a <a href="Transaction.html" class="tsd-kind-class">Transaction</a>.</p>
</div><h4 class="tsd-returns-title">Returns <a href="ChangedEvent.html" class="tsd-signature-type tsd-kind-class">ChangedEvent</a></h4></li></ul></section><section class="tsd-panel tsd-member"><a id="getParam" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>get<wbr/>Param</span><a href="#getParam" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="getParam.getParam-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">get<wbr/>Param</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">undo</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">any</span><a href="#getParam.getParam-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>This is a convenient method to get the right parameter value, depending on the value of undo,
when implementing a state change as part of an undo or a redo.</p>
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">undo</span>: <span class="tsd-signature-type">boolean</span></h5><div class="tsd-comment tsd-typography"><p>If true, returns the oldParam, otherwise returns the newParam.</p>
</div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">any</span></h4><p>Either the oldParam or the newParam.</p>
</li></ul></section><section class="tsd-panel tsd-member"><a id="getValue" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>get<wbr/>Value</span><a href="#getValue" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="getValue.getValue-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">get<wbr/>Value</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">undo</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">any</span><a href="#getValue.getValue-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>This is a convenient method to get the right value, depending on the value of undo,
when implementing a state change as part of an undo or a redo.</p>
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">undo</span>: <span class="tsd-signature-type">boolean</span></h5><div class="tsd-comment tsd-typography"><p>If true, returns the oldValue, otherwise returns the newValue.</p>
</div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">any</span></h4><p>Either the oldValue or the newValue.</p>
</li></ul></section><section class="tsd-panel tsd-member"><a id="redo" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>redo</span><a href="#redo" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="redo.redo-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">redo</span><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><a href="#redo.redo-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Re-perform this object change after an undo().
canRedo() must be true for this method to have any effect.</p>
</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4></li></ul></section><section class="tsd-panel tsd-member"><a id="undo" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>undo</span><a href="#undo" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="undo.undo-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">undo</span><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><a href="#undo.undo-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Reverse the effects of this object change.
canUndo() must be true for this method to have any effect.</p>
</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4></li></ul></section></section><section class="tsd-panel-group tsd-member-group"><h2>Properties</h2><section class="tsd-panel tsd-member"><a id="Insert" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagStatic">Static</code> <code class="tsd-tag ts-flagReadonly">Readonly</code> <span class="deprecated">Insert</span><a href="#Insert" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">deprecated</code><p>See <a href="ChangeType.html#Insert" class="tsd-kind-enum-member">ChangeType.Insert</a>.</p>
</div></div></section><section class="tsd-panel tsd-member"><a id="Property" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagStatic">Static</code> <code class="tsd-tag ts-flagReadonly">Readonly</code> <span class="deprecated">Property</span><a href="#Property" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">deprecated</code><p>See <a href="ChangeType.html#Property" class="tsd-kind-enum-member">ChangeType.Property</a>.</p>
</div></div></section><section class="tsd-panel tsd-member"><a id="Remove" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagStatic">Static</code> <code class="tsd-tag ts-flagReadonly">Readonly</code> <span class="deprecated">Remove</span><a href="#Remove" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">deprecated</code><p>See <a href="ChangeType.html#Remove" class="tsd-kind-enum-member">ChangeType.Remove</a>.</p>
</div></div></section><section class="tsd-panel tsd-member"><a id="Transaction" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagStatic">Static</code> <code class="tsd-tag ts-flagReadonly">Readonly</code> <span class="deprecated">Transaction</span><a href="#Transaction" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">deprecated</code><p>See <a href="ChangeType.html#Transaction" class="tsd-kind-enum-member">ChangeType.Transaction</a>.</p>
</div></div></section></section></div><div class="col-sidebar"><div class="page-menu"><details open class="tsd-index-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><ul><li><a href="#constructor"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a></li><li><a href="#change"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>change</span></a></li><li><a href="#diagram"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>diagram</span></a></li><li><a href="#isTransactionFinished"><svg class="readonly tsd-subicon" viewBox="0 0 28 28"><use href="#subicon-R,#FF4D4D"></use></svg><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>is<wbr/>Transaction<wbr/>Finished</span></a></li><li><a href="#model"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>model</span></a></li><li><a href="#modelChange"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>model<wbr/>Change</span></a></li><li><a href="#newParam"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>new<wbr/>Param</span></a></li><li><a href="#newValue"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>new<wbr/>Value</span></a></li><li><a href="#object"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>object</span></a></li><li><a href="#oldParam"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>old<wbr/>Param</span></a></li><li><a href="#oldValue"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>old<wbr/>Value</span></a></li><li><a href="#propertyName"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>property<wbr/>Name</span></a></li><li><a href="#canRedo"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Redo</span></a></li><li><a href="#canUndo"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Undo</span></a></li><li><a href="#clear"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>clear</span></a></li><li><a href="#copy"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>copy</span></a></li><li><a href="#getParam"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>get<wbr/>Param</span></a></li><li><a href="#getValue"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>get<wbr/>Value</span></a></li><li><a href="#redo"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>redo</span></a></li><li><a href="#undo"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>undo</span></a></li><li><a href="#Insert" class="deprecated"><svg class="static tsd-subicon" viewBox="0 0 28 28"><use href="#subicon-S,#FF984D"></use></svg><svg class="readonly tsd-subicon" viewBox="0 0 28 28"><use href="#subicon-R,#FF984D"></use></svg><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>Insert</span></a></li><li><a href="#Property" class="deprecated"><svg class="static tsd-subicon" viewBox="0 0 28 28"><use href="#subicon-S,#FF984D"></use></svg><svg class="readonly tsd-subicon" viewBox="0 0 28 28"><use href="#subicon-R,#FF984D"></use></svg><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>Property</span></a></li><li><a href="#Remove" class="deprecated"><svg class="static tsd-subicon" viewBox="0 0 28 28"><use href="#subicon-S,#FF984D"></use></svg><svg class="readonly tsd-subicon" viewBox="0 0 28 28"><use href="#subicon-R,#FF984D"></use></svg><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>Remove</span></a></li><li><a href="#Transaction" class="deprecated"><svg class="static tsd-subicon" viewBox="0 0 28 28"><use href="#subicon-S,#FF984D"></use></svg><svg class="readonly tsd-subicon" viewBox="0 0 28 28"><use href="#subicon-R,#FF984D"></use></svg><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>Transaction</span></a></li></ul></div></details><div class="tsd-navigation settings"><div class="tsd-theme-toggle"><h4 class="uppercase">Theme</h4><select id="tsd-theme"><option value="os">System</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>GoJS API</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><div class="tsd w-full max-w-screen-xl mx-auto px-2"><div class="bottom-copyright">Copyright © 1998-2025 by Northwoods Software Corporation.</div></div><div class="overlay"></div><script async src="https://www.googletagmanager.com/gtag/js?id=G-S5QK8VSK84"></script><script>window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-S5QK8VSK84');
var getOutboundLink = function(url, label) {
  gtag('event', 'click', {
  'event_category': 'outbound',
  'event_label': label,
  'transport_type': 'beacon'
  });
}

document.getElementById("contactBtn").addEventListener("click", function() {
  getOutboundLink('https://nwoods.com/contact.html', 'contact');
});
document.getElementById("buyBtn").addEventListener("click", function() {
  getOutboundLink('https://nwoods.com/sales/index.html', 'buy');
});</script></body></html>