create-gojs-kit
Version:
A CLI for downloading GoJS samples, extensions, and docs
283 lines • 88.2 kB
HTML
<!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>DrawCommandHandler | 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="DrawCommandHandler.html">DrawCommandHandler</a></li></ul><h1 class="flex items-center">Class DrawCommandHandler</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-extension"><p>This is an extension and not part of the main GoJS library. Note that the API for this class may change at any time. If you intend to use an extension in production, you should copy the code to your own source directory. See the <a href="../../intro/extensions.html">Extensions intro page</a> for more information.</p></section><section class="tsd-panel tsd-hierarchy"><h4>Hierarchy (<a class="link" href="../hierarchy.html#DrawCommandHandler">view full</a>)</h4><ul class="tsd-hierarchy"><li><a href="CommandHandler.html" class="tsd-signature-type tsd-kind-class">CommandHandler</a><ul class="tsd-hierarchy"><li><span class="target">DrawCommandHandler</span></li></ul></li></ul></section><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>This CommandHandler class allows the user to position selected Parts in a diagram
relative to the first part selected, in addition to overriding the doKeyDown method
of the CommandHandler for handling the arrow keys in additional manners.</p>
<p>Typical usage:</p>
<pre><code class="language-js"><span class="hl-2"> </span><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-4">go</span><span class="hl-2">.</span><span class="hl-5">Diagram</span><span class="hl-2">(</span><span class="hl-6">"myDiagramDiv"</span><span class="hl-2">,</span><br/><span class="hl-2"> {</span><br/><span class="hl-2"> </span><span class="hl-4">commandHandler:</span><span class="hl-2"> </span><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-5">DrawCommandHandler</span><span class="hl-2">(),</span><br/><span class="hl-2"> . . .</span><br/><span class="hl-2"> }</span><br/><span class="hl-2"> )</span>
</code><button>Copy</button></pre>
<p>or:</p>
<pre><code class="language-js"><span class="hl-2"> </span><span class="hl-4">myDiagram</span><span class="hl-2">.</span><span class="hl-4">commandHandler</span><span class="hl-2"> = </span><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-5">DrawCommandHandler</span><span class="hl-2">();</span>
</code><button>Copy</button></pre>
<p>If you want to experiment with this extension, try the <a href="../../samples/DrawCommandHandler.html">Drawing Commands</a> sample.</p>
<p>New in version 3.1 this adds a command to save the model as a text file in the user's local file system,
typically in their Downloads folder, <a href="DrawCommandHandler.html#saveLocalFile" class="tsd-kind-method">saveLocalFile</a>.
And it adds a method for loading a File: <a href="DrawCommandHandler.html#loadLocalFile" class="tsd-kind-method">loadLocalFile</a>.</p>
<p>There are two optional properties that can be used for calling <a href="DrawCommandHandler.html#loadLocalFile" class="tsd-kind-method">loadLocalFile</a>:
<a href="DrawCommandHandler.html#localFileInput" class="tsd-kind-accessor">localFileInput</a> and <a href="DrawCommandHandler.html#localFileDropElement" class="tsd-kind-accessor">localFileDropElement</a>.
The former may be a file type HTMLInputElement that you have on your page;
the latter may be an HTMLElement, or even the whole document.body, where the user may drag-and-drop a saved file.</p>
<p>The default file type for files is controlled by <a href="DrawCommandHandler.html#localFileType" class="tsd-kind-accessor">localFileType</a>.</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="DrawCommandHandler.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="DrawCommandHandler.html#arrowKeyBehavior" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>arrow<wbr/>Key<wbr/>Behavior</span></a>
<a href="DrawCommandHandler.html#loader" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>loader</span></a>
<a href="DrawCommandHandler.html#localFileDropElement" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>local<wbr/>File<wbr/>Drop<wbr/>Element</span></a>
<a href="DrawCommandHandler.html#localFileInput" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>local<wbr/>File<wbr/>Input</span></a>
<a href="DrawCommandHandler.html#localFileType" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>local<wbr/>File<wbr/>Type</span></a>
<a href="DrawCommandHandler.html#pasteOffset" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>paste<wbr/>Offset</span></a>
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="DrawCommandHandler.html#alignBottom" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>align<wbr/>Bottom</span></a>
<a href="DrawCommandHandler.html#alignCenterX" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>align<wbr/>CenterX</span></a>
<a href="DrawCommandHandler.html#alignCenterY" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>align<wbr/>CenterY</span></a>
<a href="DrawCommandHandler.html#alignColumn" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>align<wbr/>Column</span></a>
<a href="DrawCommandHandler.html#alignLeft" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>align<wbr/>Left</span></a>
<a href="DrawCommandHandler.html#alignRight" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>align<wbr/>Right</span></a>
<a href="DrawCommandHandler.html#alignRow" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>align<wbr/>Row</span></a>
<a href="DrawCommandHandler.html#alignTop" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>align<wbr/>Top</span></a>
<a href="DrawCommandHandler.html#canAlignSelection" 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/>Align<wbr/>Selection</span></a>
<a href="DrawCommandHandler.html#canRotate" 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/>Rotate</span></a>
<a href="DrawCommandHandler.html#canSaveLocalFile" 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/>Save<wbr/>Local<wbr/>File</span></a>
<a href="DrawCommandHandler.html#copyToClipboard" 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<wbr/>To<wbr/>Clipboard</span></a>
<a href="DrawCommandHandler.html#doKeyDown" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>do<wbr/>Key<wbr/>Down</span></a>
<a href="DrawCommandHandler.html#loadLocalFile" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>load<wbr/>Local<wbr/>File</span></a>
<a href="DrawCommandHandler.html#pasteFromClipboard" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>paste<wbr/>From<wbr/>Clipboard</span></a>
<a href="DrawCommandHandler.html#pullToFront" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>pull<wbr/>To<wbr/>Front</span></a>
<a href="DrawCommandHandler.html#pushToBack" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>push<wbr/>To<wbr/>Back</span></a>
<a href="DrawCommandHandler.html#rotate" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>rotate</span></a>
<a href="DrawCommandHandler.html#saveLocalFile" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>save<wbr/>Local<wbr/>File</span></a>
<a href="DrawCommandHandler.html#spaceEvenlyHorizontally" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>space<wbr/>Evenly<wbr/>Horizontally</span></a>
<a href="DrawCommandHandler.html#spaceEvenlyVertically" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>space<wbr/>Evenly<wbr/>Vertically</span></a>
</div></section></div></details></section></section><section class="tsd-panel-group tsd-index-group tsd-is-inherited"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion"><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role="button" aria-expanded="false" tabIndex="0"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-chevronSmall"></use></svg> Inherited Index</h5></summary><div class="tsd-accordion-details"><div class="tsd-index-content"><section class="tsd-index-section"><h3 class="tsd-index-heading">Accessors</h3><div class="tsd-index-list"><a href="CommandHandler.html#archetypeGroupData" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>Command<wbr/>Handler.archetype<wbr/>Group<wbr/>Data</span></a>
<a href="CommandHandler.html#copiesConnectedLinks" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>Command<wbr/>Handler.copies<wbr/>Connected<wbr/>Links</span></a>
<a href="CommandHandler.html#copiesGroupKey" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>Command<wbr/>Handler.copies<wbr/>Group<wbr/>Key</span></a>
<a href="CommandHandler.html#copiesParentKey" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>Command<wbr/>Handler.copies<wbr/>Parent<wbr/>Key</span></a>
<a href="CommandHandler.html#copiesTree" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>Command<wbr/>Handler.copies<wbr/>Tree</span></a>
<a href="CommandHandler.html#deletesConnectedLinks" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>Command<wbr/>Handler.deletes<wbr/>Connected<wbr/>Links</span></a>
<a href="CommandHandler.html#deletesTree" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>Command<wbr/>Handler.deletes<wbr/>Tree</span></a>
<a href="CommandHandler.html#diagram" 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>Command<wbr/>Handler.diagram</span></a>
<a href="CommandHandler.html#focus" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>Command<wbr/>Handler.focus</span></a>
<a href="CommandHandler.html#focusBox" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>Command<wbr/>Handler.focus<wbr/>Box</span></a>
<a href="CommandHandler.html#focusChanged" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>Command<wbr/>Handler.focus<wbr/>Changed</span></a>
<a href="CommandHandler.html#isFocusEnabled" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>Command<wbr/>Handler.is<wbr/>Focus<wbr/>Enabled</span></a>
<a href="CommandHandler.html#isVirtualPointerDown" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>Command<wbr/>Handler.is<wbr/>Virtual<wbr/>Pointer<wbr/>Down</span></a>
<a href="CommandHandler.html#isVirtualPointerEnabled" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>Command<wbr/>Handler.is<wbr/>Virtual<wbr/>Pointer<wbr/>Enabled</span></a>
<a href="CommandHandler.html#isZoomToFitRestoreEnabled" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>Command<wbr/>Handler.is<wbr/>Zoom<wbr/>To<wbr/>Fit<wbr/>Restore<wbr/>Enabled</span></a>
<a href="CommandHandler.html#liveElementId" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>Command<wbr/>Handler.live<wbr/>Element<wbr/>Id</span></a>
<a href="CommandHandler.html#memberValidation" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>Command<wbr/>Handler.member<wbr/>Validation</span></a>
<a href="CommandHandler.html#storageLocation" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>Command<wbr/>Handler.storage<wbr/>Location</span></a>
<a href="CommandHandler.html#virtualPointerBox" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>Command<wbr/>Handler.virtual<wbr/>Pointer<wbr/>Box</span></a>
<a href="CommandHandler.html#virtualPointerChanged" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>Command<wbr/>Handler.virtual<wbr/>Pointer<wbr/>Changed</span></a>
<a href="CommandHandler.html#virtualPointerLocation" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>Command<wbr/>Handler.virtual<wbr/>Pointer<wbr/>Location</span></a>
<a href="CommandHandler.html#zoomFactor" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>Command<wbr/>Handler.zoom<wbr/>Factor</span></a>
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="CommandHandler.html#addTopLevelParts" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.add<wbr/>Top<wbr/>Level<wbr/>Parts</span></a>
<a href="CommandHandler.html#canCollapseSubGraph" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.can<wbr/>Collapse<wbr/>Sub<wbr/>Graph</span></a>
<a href="CommandHandler.html#canCollapseTree" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.can<wbr/>Collapse<wbr/>Tree</span></a>
<a href="CommandHandler.html#canCopySelection" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.can<wbr/>Copy<wbr/>Selection</span></a>
<a href="CommandHandler.html#canCutSelection" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.can<wbr/>Cut<wbr/>Selection</span></a>
<a href="CommandHandler.html#canDecreaseZoom" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.can<wbr/>Decrease<wbr/>Zoom</span></a>
<a href="CommandHandler.html#canDeleteSelection" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.can<wbr/>Delete<wbr/>Selection</span></a>
<a href="CommandHandler.html#canDownloadSvg" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.can<wbr/>Download<wbr/>Svg</span></a>
<a href="CommandHandler.html#canEditTextBlock" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.can<wbr/>Edit<wbr/>Text<wbr/>Block</span></a>
<a href="CommandHandler.html#canExpandSubGraph" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.can<wbr/>Expand<wbr/>Sub<wbr/>Graph</span></a>
<a href="CommandHandler.html#canExpandTree" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.can<wbr/>Expand<wbr/>Tree</span></a>
<a href="CommandHandler.html#canGroupSelection" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.can<wbr/>Group<wbr/>Selection</span></a>
<a href="CommandHandler.html#canIncreaseZoom" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.can<wbr/>Increase<wbr/>Zoom</span></a>
<a href="CommandHandler.html#canPasteSelection" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.can<wbr/>Paste<wbr/>Selection</span></a>
<a href="CommandHandler.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>Command<wbr/>Handler.can<wbr/>Redo</span></a>
<a href="CommandHandler.html#canResetZoom" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.can<wbr/>Reset<wbr/>Zoom</span></a>
<a href="CommandHandler.html#canScrollToPart" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.can<wbr/>Scroll<wbr/>To<wbr/>Part</span></a>
<a href="CommandHandler.html#canSelectAll" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.can<wbr/>Select<wbr/>All</span></a>
<a href="CommandHandler.html#canShowContextMenu" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.can<wbr/>Show<wbr/>Context<wbr/>Menu</span></a>
<a href="CommandHandler.html#canStopCommand" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.can<wbr/>Stop<wbr/>Command</span></a>
<a href="CommandHandler.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>Command<wbr/>Handler.can<wbr/>Undo</span></a>
<a href="CommandHandler.html#canUngroupSelection" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.can<wbr/>Ungroup<wbr/>Selection</span></a>
<a href="CommandHandler.html#canZoomToFit" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.can<wbr/>Zoom<wbr/>To<wbr/>Fit</span></a>
<a href="CommandHandler.html#collapseSubGraph" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.collapse<wbr/>Sub<wbr/>Graph</span></a>
<a href="CommandHandler.html#collapseTree" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.collapse<wbr/>Tree</span></a>
<a href="CommandHandler.html#computeEffectiveCollection" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.compute<wbr/>Effective<wbr/>Collection</span></a>
<a href="CommandHandler.html#copySelection" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.copy<wbr/>Selection</span></a>
<a href="CommandHandler.html#cutSelection" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.cut<wbr/>Selection</span></a>
<a href="CommandHandler.html#decreaseZoom" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.decrease<wbr/>Zoom</span></a>
<a href="CommandHandler.html#deleteSelection" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.delete<wbr/>Selection</span></a>
<a href="CommandHandler.html#describe" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.describe</span></a>
<a href="CommandHandler.html#doKeyUp" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.do<wbr/>Key<wbr/>Up</span></a>
<a href="CommandHandler.html#downloadSvg" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.download<wbr/>Svg</span></a>
<a href="CommandHandler.html#editTextBlock" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.edit<wbr/>Text<wbr/>Block</span></a>
<a href="CommandHandler.html#expandSubGraph" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.expand<wbr/>Sub<wbr/>Graph</span></a>
<a href="CommandHandler.html#expandTree" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.expand<wbr/>Tree</span></a>
<a href="CommandHandler.html#groupSelection" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.group<wbr/>Selection</span></a>
<a href="CommandHandler.html#increaseZoom" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.increase<wbr/>Zoom</span></a>
<a href="CommandHandler.html#isValidMember" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.is<wbr/>Valid<wbr/>Member</span></a>
<a href="CommandHandler.html#pasteSelection" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.paste<wbr/>Selection</span></a>
<a href="CommandHandler.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>Command<wbr/>Handler.redo</span></a>
<a href="CommandHandler.html#resetZoom" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.reset<wbr/>Zoom</span></a>
<a href="CommandHandler.html#scrollToPart" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.scroll<wbr/>To<wbr/>Part</span></a>
<a href="CommandHandler.html#selectAll" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.select<wbr/>All</span></a>
<a href="CommandHandler.html#showContextMenu" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.show<wbr/>Context<wbr/>Menu</span></a>
<a href="CommandHandler.html#stopCommand" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.stop<wbr/>Command</span></a>
<a href="CommandHandler.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>Command<wbr/>Handler.undo</span></a>
<a href="CommandHandler.html#ungroupSelection" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.ungroup<wbr/>Selection</span></a>
<a href="CommandHandler.html#zoomToFit" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Command<wbr/>Handler.zoom<wbr/>To<wbr/>Fit</span></a>
</div></section></div></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_DrawCommandHandler" class="tsd-anchor"></a><span class="tsd-kind-constructor-signature">new <wbr/>Draw<wbr/>Command<wbr/>Handler</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">init</span><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="DrawCommandHandler.html" class="tsd-signature-type tsd-kind-class">DrawCommandHandler</a><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="DrawCommandHandler.html" class="tsd-signature-type tsd-kind-class">DrawCommandHandler</a><a href="#constructor.new_DrawCommandHandler" 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-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">init</span>: <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="DrawCommandHandler.html" class="tsd-signature-type tsd-kind-class">DrawCommandHandler</a><span class="tsd-signature-symbol">></span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="DrawCommandHandler.html" class="tsd-signature-type tsd-kind-class">DrawCommandHandler</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="arrowKeyBehavior" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>arrow<wbr/>Key<wbr/>Behavior</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></div><a href="#arrowKeyBehavior" 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 arrow key behavior. Possible values are "move", "select", "scroll", "tree", "none", and "default".</p>
<p>The default value is "move".
Set this property to "default" in order to make use of the additional commands in this class
without affecting the arrow key behaviors.</p>
<p>Note that this functionality is different from the focus navigation behavior of the <a href="CommandHandler.html" class="tsd-kind-class">CommandHandler</a>
that was added in version 3.1 and enabled by the <a href="CommandHandler.html#isFocusEnabled" class="tsd-kind-accessor">CommandHandler.isFocusEnabled</a> property.
In this DrawCommandHandler the arrow keys for the "move", "select" or "tree" behaviors
depend on and modify the <a href="Diagram.html#selection" class="tsd-kind-accessor">Diagram.selection</a>. The built-in focus navigation is completely independent
of the selection mechanism.</p>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="loader" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>loader</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">diagram</span><span class="tsd-signature-symbol">: </span><a href="Diagram.html" class="tsd-signature-type tsd-kind-class">Diagram</a>, <span class="tsd-kind-parameter">model</span><span class="tsd-signature-symbol">: </span><a href="Model.html" class="tsd-signature-type tsd-kind-class">Model</a>, <span class="tsd-kind-parameter">name</span><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-type">void</span><span class="tsd-signature-symbol">)</span></div><a href="#loader" 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 a function that is used to set <a href="Diagram.html#model" class="tsd-kind-accessor">Diagram.model</a>.
It can do more things before and/or after the actual setting of <a href="Diagram.html#model" class="tsd-kind-accessor">Diagram.model</a>.</p>
<p>The default value is null.
Setting this property does not raise any events.</p>
<p>If non-null, the function is called by <a href="DrawCommandHandler.html#loadLocalFile" class="tsd-kind-method">loadLocalFile</a>.</p>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="localFileDropElement" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>local<wbr/>File<wbr/>Drop<wbr/>Element</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">HTMLElement</span></div><a href="#localFileDropElement" 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 HTMLElement so that the user can load a file saved by <a href="DrawCommandHandler.html#saveLocalFile" class="tsd-kind-method">saveLocalFile</a>
by drag-and-dropping it on this element.</p>
<p>By default the value is null -- there is no such element.
Setting this property does not raise any events or modify the DOM, but does add or remove listeners,
including a "drop" listener that actually calls <a href="DrawCommandHandler.html#loadLocalFile" class="tsd-kind-method">loadLocalFile</a> and <a href="Diagram.html#focus" class="tsd-kind-method">Diagram.focus</a>.</p>
<p>If you want to support drag-and-drop loading of files,
you will need to add the element to your page and set this property.</p>
</div><div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="DrawCommandHandler.html#localFileInput" class="tsd-kind-accessor">localFileInput</a></p>
</div><div class="flex items-center"><code class="tsd-tag">since</code><p>3.1</p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="localFileInput" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>local<wbr/>File<wbr/>Input</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">HTMLInputElement</span></div><a href="#localFileInput" 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 HTMLInputElement so that the user can load a file saved by <a href="DrawCommandHandler.html#saveLocalFile" class="tsd-kind-method">saveLocalFile</a>
by using the browser's file picker user interface.</p>
<p>By default the value is null -- there is no such input element.
Setting this property does not raise any events or modify the DOM, but does add or remove a "change" listener
that actually calls <a href="DrawCommandHandler.html#loadLocalFile" class="tsd-kind-method">loadLocalFile</a> and <a href="Diagram.html#focus" class="tsd-kind-method">Diagram.focus</a>.</p>
<p>If you want to support the user's picking of a file to load,
you will need to add an <input type="file"> element to your page and set this property.
It is moderately common to have this input element be hidden and invoke the input file picker by programmatically
calling <code>click()</code> on the element.</p>
</div><div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="DrawCommandHandler.html#localFileDropElement" class="tsd-kind-accessor">localFileDropElement</a></p>
</div><div class="flex items-center"><code class="tsd-tag">since</code><p>3.1</p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="localFileType" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>local<wbr/>File<wbr/>Type</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></div><a href="#localFileType" 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 default file type for locally saved files.
The default value is "gojs".
Setting this property does not raise any events.</p>
</div><div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">since</code><p>3.1</p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="pasteOffset" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>paste<wbr/>Offset</span><div class="membertype"><span class="tsd-signature-symbol">: </span><a href="Point.html" class="tsd-signature-type tsd-kind-class">Point</a></div><a href="#pasteOffset" 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 offset at which each repeated <a href="CommandHandler.html#pasteSelection" class="tsd-kind-method">pasteSelection</a> puts the new copied parts from the clipboard.</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="alignBottom" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>align<wbr/>Bottom</span><a href="#alignBottom" 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="alignBottom.alignBottom-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">align<wbr/>Bottom</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="#alignBottom.alignBottom-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>Aligns selected parts at the bottom-most edge of the bottom-most part.</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="alignCenterX" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>align<wbr/>CenterX</span><a href="#alignCenterX" 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="alignCenterX.alignCenterX-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">align<wbr/>CenterX</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="#alignCenterX.alignCenterX-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>Aligns selected parts at the x-value of the center point of the first selected part.</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="alignCenterY" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>align<wbr/>CenterY</span><a href="#alignCenterY" 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="alignCenterY.alignCenterY-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">align<wbr/>CenterY</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="#alignCenterY.alignCenterY-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>Aligns selected parts at the y-value of the center point of the first selected part.</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="alignColumn" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>align<wbr/>Column</span><a href="#alignColumn" 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="alignColumn.alignColumn-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">align<wbr/>Column</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">distance</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#alignColumn.alignColumn-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>Aligns selected parts top-to-bottom in order of the order selected.
Distance between parts can be specified. Default distance is 0.</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">distance</span>: <span class="tsd-signature-type">number</span></h5></li></ul></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="alignLeft" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>align<wbr/>Left</span><a href="#alignLeft" 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="alignLeft.alignLeft-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">align<wbr/>Left</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="#alignLeft.alignLeft-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>Aligns selected parts along the left-most edge of the left-most part.</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="alignRight" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>align<wbr/>Right</span><a href="#alignRight" 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="alignRight.alignRight-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">align<wbr/>Right</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="#alignRight.alignRight-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>Aligns selected parts at the right-most edge of the right-most part.</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="alignRow" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>align<wbr/>Row</span><a href="#alignRow" 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="alignRow.alignRow-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">align<wbr/>Row</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">distance</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#alignRow.alignRow-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>Aligns selected parts left-to-right in order of the order selected.
Distance between parts can be specified. Default distance is 0.</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">distance</span>: <span class="tsd-signature-type">number</span></h5></li></ul></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="alignTop" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>align<wbr/>Top</span><a href="#alignTop" 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="alignTop.alignTop-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">align<wbr/>Top</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="#alignTop.alignTop-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>Aligns selected parts at the top-most edge of the top-most part.</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="canAlignSelection" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>can<wbr/>Align<wbr/>Selection</span><a href="#canAlignSelection" 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="canAlignSelection.canAlignSelection-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Align<wbr/>Selection</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="#canAlignSelection.canAlignSelection-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 controls whether or not the user can invoke the <a href="DrawCommandHandler.html#alignLeft" class="tsd-kind-method">alignLeft</a>, <a href="DrawCommandHandler.html#alignRight" class="tsd-kind-method">alignRight</a>,
<a href="DrawCommandHandler.html#alignTop" class="tsd-kind-method">alignTop</a>, <a href="DrawCommandHandler.html#alignBottom" class="tsd-kind-method">alignBottom</a>, <a href="DrawCommandHandler.html#alignCenterX" class="tsd-kind-method">alignCenterX</a>, <a href="DrawCommandHandler.html#alignCenterY" class="tsd-kind-method">alignCenterY</a> commands.</p>
</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><p>This returns true:
if the diagram is not <a href="Diagram.html#isReadOnly" class="tsd-kind-accessor">go.Diagram.isReadOnly</a>,
if the model is not <a href="Model.html#isReadOnly" class="tsd-kind-accessor">go.Model.isReadOnly</a>, and
if there are at least two selected <a href="Part.html" class="tsd-kind-class">go.Part</a>s.</p>
</li></ul></section><section class="tsd-panel tsd-member"><a id="canRotate" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>can<wbr/>Rotate</span><a href="#canRotate" 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="canRotate.canRotate-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Rotate</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="#canRotate.canRotate-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 controls whether or not the user can invoke the <a href="DrawCommandHandler.html#rotate" class="tsd-kind-method">rotate</a> command.</p>
</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><p>This returns true:
if the diagram is not <a href="Diagram.html#isReadOnly" class="tsd-kind-accessor">go.Diagram.isReadOnly</a>,
if the model is not <a href="Model.html#isReadOnly" class="tsd-kind-accessor">go.Model.isReadOnly</a>, and
if there is at least one selected <a href="Part.html" class="tsd-kind-class">go.Part</a>.</p>
</li></ul></section><section class="tsd-panel tsd-member"><a id="canSaveLocalFile" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>can<wbr/>Save<wbr/>Local<wbr/>File</span><a href="#canSaveLocalFile" 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="canSaveLocalFile.canSaveLocalFile-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Save<wbr/>Local<wbr/>File</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="#canSaveLocalFile.canSaveLocalFile-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 controls whether or not the user can invoke the <a href="DrawCommandHandler.html#saveLocalFile" class="tsd-kind-method">saveLocalFile</a> command.</p>
</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><p>true, by default</p>
<div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">since</code><p>3.1</p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="copyToClipboard" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOverride">Override</code><span>copy<wbr/>To<wbr/>Clipboard</span><a href="#copyToClipboard" 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="copyToClipboard.copyToClipboard-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">copy<wbr/>To<wbr/>Clipboard</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">coll</span><span class="tsd-signature-symbol">: </span><a href="Iterable.html" class="tsd-signature-type tsd-kind-interface">Iterable</a><span class="tsd-signature-symbol"><</span><a href="Part.html" class="tsd-signature-type tsd-kind-class">Part</a><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="#copyToClipboard.copyToClipboard-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>Reset the last offset for pasting.</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">coll</span>: <a href="Iterable.html" class="tsd-signature-type tsd-kind-interface">Iterable</a><span class="tsd-signature-symbol"><</span><a href="Part.html" class="tsd-signature-type tsd-kind-class">Part</a><span class="tsd-signature-symbol">></span></h5><div class="tsd-comment tsd-typography"><p>a collection of <a href="Part.html" class="tsd-kind-class">go.Part</a>s.</p>
</div></li></ul></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="doKeyDown" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOverride">Override</code><span>do<wbr/>Key<wbr/>Down</span><a href="#doKeyDown" 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="doKeyDown.doKeyDown-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">do<wbr/>Key<wbr/>Down</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="#doKeyDown.doKeyDown-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 implements custom behaviors for arrow key keyboard events.
Set <a href="DrawCommandHandler.html#arrowKeyBehavior" class="tsd-kind-accessor">arrowKeyBehavior</a> to "select", "move" (the default), "scroll" (the standard behavior), or "none"
to affect the behavior when the user types an arrow key.
Set that property to "default" in order to make use of the additional commands in this class
without affecting the arrow key behaviors.</p>
<p>Note that this functionality is different from the focus navigation behavior of the <a href="CommandHandler.html" class="tsd-kind-class">CommandHandler</a>
that was added in version 3.1 and enabled by the <a href="CommandHandler.html#isFocusEnabled" class="tsd-kind-accessor">CommandHandler.isFocusEnabled</a> property.
In this DrawCommandHandler the arrow keys for the "move", "select" or "tree" behaviors
depend on and modify the <a href="Diagram.html#selection" class="tsd-kind-accessor">Diagram.selection</a>. The built-in focus navigation is completely independent
of the selection mechanism.</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="loadLocalFile" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>load<wbr/>Local<wbr/>File</span><a href="#loadLocalFile" 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="loadLocalFile.loadLocalFile-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">load<wbr/>Local<wbr/>File</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">file</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">File</span>, <span class="tsd-kind-parameter">loader</span><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">diagram</span><span class="tsd-signature-symbol">: </span><a href="Diagram.html" class="tsd-signature-type tsd-kind-class">Diagram</a>, <span class="tsd-kind-parameter">model</span><span class="tsd-signature-symbol">: </span><a href="Model.html" class="tsd-signature-type tsd-kind-class">Model</a>, <span class="tsd-kind-parameter">name</span><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-type">void</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="#loadLocalFile.loadLocalFile-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 method loads a text file that the user chooses or drops that holds this diagram's model as JSON-formatted text,
normally saved via <a href="DrawCommandHandler.html#saveLocalFile" class="tsd-kind-method">saveLocalFile</a>.</p>
<p>This calls <a href="Model.html#fromJson" class="tsd-kind-method">Model.fromJson</a>.
This is called by the "change" event of the <a href="DrawCommandHandler.html#localFileInput" class="tsd-kind-accessor">localFileInput</a> element (if present) or
the "drop" event of the <a href="DrawCommandHandler.html#localFileDropElement" class="tsd-kind-accessor">localFileDropElement</a> (if present).</p>
<p>The file type of the File.name must match the <a href="DrawCommandHandler.html#localFileType" class="tsd-kind-accessor">localFileType</a>, or it must not have a file type.</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">file</span>: <span class="tsd-signature-type">File</span></h5><div class="tsd-comment tsd-typography"><p>a File instance from which to read the JSON-formatted text</p>
</div></li><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">loader</span>: <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">diagram</span><span class="tsd-signature-symbol">: </span><a href="Diagram.html" class="tsd-signature-type tsd-kind-class">Diagram</a>, <span class="tsd-kind-parameter">model</span><span class="tsd-signature-symbol">: </span><a href="Model.html" class="tsd-signature-type tsd-kind-class">Model</a>, <span class="tsd-kind-parameter">name</span><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-type">void</span><span class="tsd-signature-symbol">)</span></h5><div class="tsd-comment tsd-typography"><p>an optional function that sets <a href="Diagram.html#model" class="tsd-kind-accessor">Diagram.model</a>, perhaps modifying the model first,
and perhaps doing other updates after assigning the given Model to the given Diagram.</p>
</div><ul class="tsd-parameters"><li class="tsd-parameter-signature"><ul class="tsd-signatures"><li class="tsd-signature"><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">diagram</span><span class="tsd-signature-symbol">: </span><a href="Diagram.html" class="tsd-signature-type tsd-kind-class">Diagram</a>, <span class="tsd-kind-parameter">model</span><span class="tsd-signature-symbol">: </span><a href="Model.html" class="tsd-signature-type tsd-kind-class">Model</a>, <span class="tsd-kind-parameter">name</span><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-type">void</span></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">diagram</span>: <a href="Diagram.html" class="tsd-signature-type tsd-kind-class">Diagram</a></h5></li><li><h5><span class="tsd-kind-parameter">model</span>: <a href="Model.html" class="tsd-signature-type tsd-kind-class">Model</a></h5></li><li><h5><span class="tsd-kind-parameter">name</span>: <span class="tsd-signature-type">string</span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4></li></ul></li></ul></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">since</code><p>3.1</p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="pasteFromClipboard" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOverride">Override</code><span>paste<wbr/>From<wbr/>Clipboard</span><a href="#pasteFromClipboard" 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="pasteFromClipboard.pasteFromClipboard-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">paste<wbr/>From<wbr/>Clipboard</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="Set.html" class="tsd-signature-type tsd-kind-class">Set</a><span class="tsd-signature-symbol"><</span><a href="Part.html" class="tsd-signature-type tsd-kind-class">Part</a><span class="tsd-signature-symbol">></span><a href="#pasteFromClipboard.pasteFromClipboard-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>Paste from the clipboard with an offset incremented on each paste, and reset when copied.</p>
</div><h4 class="tsd-returns-title">Returns <a href="Set.html" class="tsd-signature-type tsd-kind-class">Set</a><span class="tsd-signature-symbol"><</span><a href="Part.html" class="tsd-signature-type tsd-kind-class">Part</a><span class="tsd-signature-symbol">></span></h4><p>a collection of newly pasted <a href="Part.html" class="tsd-kind-class">go.Part</a>s</p>
</li></ul></section><section class="tsd-panel tsd-member"><a id="pullToFront" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>pull<wbr/>To<wbr/>Front</span><a href="#pullToFront" 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="pullToFront.pullToFront-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">pull<wbr/>To<wbr/>Front</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="#pullToFront.pullToFront-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>Change the z-ordering of selected parts to pull them forward, in front of all other parts
in their respective layers.
All unselected parts in each layer with a selected Part with a non-numeric <a href="Part.html#zOrder" class="tsd-kind-accessor">go.Part.zOrder</a> will get a zOrder of zero.</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="pushToBack" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>push<wbr/>To<wbr/>Back</span><a href="#pushToBack" 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="pushToBack.pushToBack-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">push<wbr/>To<wbr/>Back</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="#pushToBack.pushToBack-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>Change the z-ordering of selected parts to push them backward, behind of all other parts
in their respective layers.
All unselected parts in each layer with a selected Part with a non-numeric <a href="Part.html#zOrder" class="tsd-kind-accessor">go.Part.zOrder</a> will get a zOrder of zero.</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="rotate" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>rotate</span><a href="#rotate" 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="rotate.rotate-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">rotate</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">angle</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#rotate.rotate-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>Change the angle of the parts connected with the given part. This is in the command handler
so it can be easily accessed for the purpose of creating commands that change the rotation of a part.</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">angle</span>: <span class="tsd-signature-type">number</span></h5><div class="tsd-comment tsd-typography"><p>the positive (clockwise) or negative (counter-clockwise) change in the rotation angle of each Part, in degrees.</p>
</div></li></ul></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="saveLocalFile" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>save<wbr/>Local<wbr/>File</span><a href="#saveLocalFile" 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="saveLocalFile.saveLocalFile-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">save<wbr/>Local<wbr/>File</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-symbol">{ </span><br/><span> </span><span class="tsd-kind-property">mimetype</span><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span> </span><span class="tsd-kind-property">name</span><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><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="#saveLocalFile.saveLocalFile-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 command downloads a text file that holds this diagram's model as JSON-formatted text.</p>
<p>This calls <a href="Model.html#toJson" class="tsd-kind-method">Model.toJson</a>.</p>
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <span class="tsd-signature-symbol">{ </span><br/><span> </span><span class="tsd-kind-property">mimetype</span><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span> </span><span class="tsd-kind-property">name</span><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span></h5><div class="tsd-comment tsd-typography"><p>an optional file name (defaults to <a href="Model.html#name" class="tsd-kind-accessor">Model.name</a>.<a href="DrawCommandHandler.html#localFileType" class="tsd-kind-accessor">localFileType</a>) and
an optional MIME type (defaults to "application/text")</p>
</div><ul class="tsd-parameters"><li class="tsd-parameter"><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-property">mimetype</span><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">string</span></h5></li><li class="tsd-parameter"><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-property">name</span><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">string</span></h5></li></ul></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">since</code><p>3.1</p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="spaceEvenlyHorizontally" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>space<wbr/>Evenly<wbr/>Horizontally</span><a href="#spaceEvenlyHorizontally" 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="spaceEvenlyHorizontally.spaceEvenlyHorizontally-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">space<wbr/>Evenly<wbr/>Horizontally</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="#spaceEvenlyHorizontally.spaceEvenlyHorizontally-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>Position each selected non-Link horizontally so that each distance between them is the same,
given the total width of the area occupied by them.
Their Y positions are not modified.
It tries to maintain the same ordering of selected Parts by their X position.</p>
<p>Note that if there is not enough room, the spacing might be negative -- the Parts might overlap.</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="spaceEvenlyVertically" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>space<wbr/>Evenly<wbr/>Vertically</span><a href="#spaceEvenlyVertically" 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="spaceEvenlyVertically.spaceEvenlyVertically-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">space<wbr/>Evenly<wbr/>Vertically</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="#spaceEvenlyVertically.spaceEvenlyVertically-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>Position each selected non-Link vertically so that each distance between them is the same,
given the total height of the area occupied by them.
Their X positions are not modified.
It tries to maintain the same ordering of selected Parts by their Y position.</p>
<p>Note that if there is not enough room, the spacing might be negative -- the Parts might overlap.</p>
</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4></li></ul></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="#arrowKeyBehavior"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>arrow<wbr/>Key<wbr/>Behavior</span></a></li><li><a href="#loader"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>loader</span></a></li><li><a href="#localFileDropElement"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>local<wbr/>File<wbr/>Drop<wbr/>Element</span></a></li><li><a href="#localFileInput"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>local<wbr/>File<wbr/>Input</span></a></li><li><a href="#localFileType"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>local<wbr/>File<wbr/>Type</span></a></li><li><a href="#pasteOffset"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>paste<wbr/>Offset</span></a></li><li><a href="#alignBottom"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>align<wbr/>Bottom</span></a></li><li><a href="#alignCenterX"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>align<wbr/>CenterX</span></a></li><li><a href="#alignCenterY"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>align<wbr/>CenterY</span></a></li><li><a href="#alignColumn"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>align<wbr/>Column</span></a></li><li><a href="#alignLeft"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>align<wbr/>Left</span></a></li><li><a href="#alignRight"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>align<wbr/>Right</span></a></li><li><a href="#alignRow"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>align<wbr/>Row</span></a></li><li><a href="#alignTop"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>align<wbr/>Top</span></a></li><li><a href="#canAlignSelection"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Align<wbr/>Selection</span></a></li><li><a href="#canRotate"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Rotate</span></a></li><li><a href="#canSaveLocalFile"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Save<wbr/>Local<wbr/>File</span></a></li><li><a href="#copyToClipboard"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>copy<wbr/>To<wbr/>Clipboard</span></a></li><li><a href="#doKeyDown"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>do<wbr/>Key<wbr/>Down</span></a></li><li><a href="#loadLocalFile"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>load<wbr/>Local<wbr/>File</span></a></li><li><a href="#pasteFromClipboard"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>paste<wbr/>From<wbr/>Clipboard</span></a></li><li><a href="#pullToFront"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>pull<wbr/>To<wbr/>Front</span></a></li><li><a href="#pushToBack"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>push<wbr/>To<wbr/>Back</span></a></li><li><a href="#rotate"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>rotate</span></a></li><li><a href="#saveLocalFile"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>save<wbr/>Local<wbr/>File</span></a></li><li><a href="#spaceEvenlyHorizontally"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>space<wbr/>Evenly<wbr/>Horizontally</span></a></li><li><a href="#spaceEvenlyVertically"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>space<wbr/>Evenly<wbr/>Vertically</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>