create-gojs-kit
Version:
A CLI for downloading GoJS samples, extensions, and docs
855 lines • 235 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>CommandHandler | 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="CommandHandler.html">CommandHandler</a></li></ul><h1 class="flex items-center">Class CommandHandler</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-hierarchy"><h4>Hierarchy (<a class="link" href="../hierarchy.html#CommandHandler">view full</a>)</h4><ul class="tsd-hierarchy"><li><span class="target">CommandHandler</span><ul class="tsd-hierarchy"><li><a href="AriaCommandHandler.html" class="tsd-signature-type tsd-kind-class">AriaCommandHandler</a></li><li><a href="DrawCommandHandler.html" class="tsd-signature-type tsd-kind-class">DrawCommandHandler</a></li><li><a href="LocalStorageCommandHandler.html" class="tsd-signature-type tsd-kind-class">LocalStorageCommandHandler</a></li></ul></li></ul></section><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>The <a href="Diagram.html#commandHandler" class="tsd-kind-accessor">Diagram.commandHandler</a> implements various
commands such as <a href="CommandHandler.html#deleteSelection" class="tsd-kind-method">CommandHandler.deleteSelection</a> or <a href="CommandHandler.html#redo" class="tsd-kind-method">CommandHandler.redo</a>.
The CommandHandler includes keyboard event handling to interpret
key presses as commands.</p>
<p>CommandHandlers cannot be shared amongst multiple Diagrams.</p>
<p>You may define a CommandHandler subclass and override methods.
However you must seriously consider calling the base method in order to get its default behavior.
There may be situations where not calling the base method may cause subtle bugs,
but that depends on the method.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call a base method.</p>
<p>There is an example custom CommandHandler in the extensions directory: <a href="../../extensions/DrawCommandHandler.js">DrawCommandHandler.js</a>,
which provides alignment commands and additional behaviors for the arrow keys.</p>
<p class="boxread">
For additional discussion, please read the <a href="../../intro/commands.html">Introduction page on Commands</a>.
<h3>Keyboard Shortcuts</h3>
<p>The CommandHandler implements the following command bindings for keyboard input in <a href="CommandHandler.html#doKeyDown" class="tsd-kind-method">doKeyDown</a>:</p>
<ul>
<li><code>Del</code> or <code>Backspace</code> invokes <a href="CommandHandler.html#deleteSelection" class="tsd-kind-method">deleteSelection</a></li>
<li><code>Ctrl-X</code> or <code>Shift-Del</code> invokes <a href="CommandHandler.html#cutSelection" class="tsd-kind-method">cutSelection</a></li>
<li><code>Ctrl-C</code> or <code>Ctrl-Insert</code> invokes <a href="CommandHandler.html#copySelection" class="tsd-kind-method">copySelection</a></li>
<li><code>Ctrl-V</code> or <code>Shift-Insert</code> invokes <a href="CommandHandler.html#pasteSelection" class="tsd-kind-method">pasteSelection</a></li>
<li><code>Ctrl-A</code> invokes <a href="CommandHandler.html#selectAll" class="tsd-kind-method">selectAll</a></li>
<li><code>Ctrl-Z</code> or <code>Alt-Backspace</code> invokes <a href="CommandHandler.html#undo" class="tsd-kind-method">undo</a></li>
<li><code>Ctrl-Y</code> or <code>Ctrl-Shift-Z</code> or <code>Alt-Shift-Backspace</code> invokes <a href="CommandHandler.html#redo" class="tsd-kind-method">redo</a></li>
<li><code>Up</code> or <code>Down</code> or <code>Left</code> or <code>Right</code> (arrow key) calls <a href="Diagram.html#scroll" class="tsd-kind-method">Diagram.scroll</a></li>
<li><code>PageUp</code> or <code>PageDown</code> calls <a href="Diagram.html#scroll" class="tsd-kind-method">Diagram.scroll</a></li>
<li><code>Home</code> or <code>End</code> calls <a href="Diagram.html#scroll" class="tsd-kind-method">Diagram.scroll</a></li>
<li><code>Space</code> invokes <a href="CommandHandler.html#scrollToPart" class="tsd-kind-method">scrollToPart</a></li>
<li><code>Ctrl-- (minus) or Numpad--</code> invokes <a href="CommandHandler.html#decreaseZoom" class="tsd-kind-method">decreaseZoom</a></li>
<li><code>Ctrl-+ (plus) or Numpad-+</code> invokes <a href="CommandHandler.html#increaseZoom" class="tsd-kind-method">increaseZoom</a></li>
<li><code>Ctrl-0</code> invokes <a href="CommandHandler.html#resetZoom" class="tsd-kind-method">resetZoom</a></li>
<li><code>Shift-Z</code> invokes <a href="CommandHandler.html#zoomToFit" class="tsd-kind-method">zoomToFit</a>; repeat to return to the original scale and position</li>
<li><code>Ctrl-G</code> invokes <a href="CommandHandler.html#groupSelection" class="tsd-kind-method">groupSelection</a></li>
<li><code>Ctrl-Shift-G</code> invokes <a href="CommandHandler.html#ungroupSelection" class="tsd-kind-method">ungroupSelection</a></li>
<li><code>F2</code> invokes <a href="CommandHandler.html#editTextBlock" class="tsd-kind-method">editTextBlock</a></li>
<li><code>Menu Key</code> or Shift-F10 or Ctrl-Shift-\ invokes <a href="CommandHandler.html#showContextMenu" class="tsd-kind-method">showContextMenu</a></li>
<li><code>Esc</code> invokes <a href="CommandHandler.html#stopCommand" class="tsd-kind-method">stopCommand</a></li>
</ul>
<p>On a Mac the Command key is used as the modifier instead of the Control key.
The Command key is called the "Meta" modifier in JavaScript HTML DOM.</p>
<p>On touch devices there is a default context menu that shows many commonly-used commands
when you hold a finger down on the diagram.</p>
<h3>Keyboard Controlled Focus Navigation and Virtual Pointer</h3>
The CommandHandler also supports a way to use the keyboard instead of the mouse or finger to focus on a node
or a link or on a button or port within a node or a link, and to act on it or to change focus to a nearby or related
node or link or button or port. This focus navigation mechanism is independent of the diagram's
selection and highlight mechanisms, although it does make it easy to select or deselect a focused node or link.
Focus is shown using a single <a href="Adornment.html" class="tsd-kind-class">Adornment</a>, the <a href="CommandHandler.html#focusBox" class="tsd-kind-accessor">focusBox</a>, that is added to the <a href="GraphObject.html" class="tsd-kind-class">GraphObject</a> that has <a href="CommandHandler.html#focus" class="tsd-kind-accessor">focus</a>.
<p>It also supports a virtual pointer to allow keyboard events to produce mouse events for invoking and controlling tools.
The virtual pointer is shown as a single <a href="Part.html" class="tsd-kind-class">Part</a>, the <a href="CommandHandler.html#virtualPointerBox" class="tsd-kind-accessor">virtualPointerBox</a>,
in the 'Tool' <a href="Layer.html" class="tsd-kind-class">Layer</a> when the <code>Shift</code> key is held down, and <code>Shift</code>-arrow keys move it around.</p>
<p>Enable this functionality in any Diagram by <code>Ctrl-Alt-Enter</code>.
That command actually toggles whether or not the focus navigation and virtual pointer system are enabled.
When <a href="CommandHandler.html#isFocusEnabled" class="tsd-kind-accessor">isFocusEnabled</a> and <a href="CommandHandler.html#isVirtualPointerEnabled" class="tsd-kind-accessor">isVirtualPointerEnabled</a> are false (the default) there is no difference in behavior
from earlier version libraries, except for the addition of this <code>Ctrl-Alt-Enter</code> command to toggle those two properties on and off.</p>
<h4>Focus Navigation</h4>
The focus navigation mode handles arrow keys and the `Enter`, `Escape`, `Space`, and `ContextMenu` keys to allow the user to change
which GraphObject has focus and to perform operations on what has focus. The focus is completely independent of
the <a href="Diagram.html#selection" class="tsd-kind-accessor">Diagram.selection</a> and <a href="Diagram.html#highlighteds" class="tsd-kind-accessor">Diagram.highlighteds</a> collections and mechanisms.
All other keyboard commands should operate normally.
For example, the `Delete` key will always operate on the selection, not on the focus.
<p>When the <a href="CommandHandler.html#focus" class="tsd-kind-accessor">focus</a> object changes, the function value of the <a href="CommandHandler.html#focusChanged" class="tsd-kind-accessor">focusChanged</a> property, if provided, is called.</p>
<h4>Virtual Pointer</h4>
When the user holds down the `Shift` key, it goes into virtual pointer mode, where the <a href="CommandHandler.html#virtualPointerBox" class="tsd-kind-accessor">virtualPointerBox</a> shows where the virtual pointer is,
and `Shift`-arrow keys move that <a href="CommandHandler.html#virtualPointerBox" class="tsd-kind-accessor">virtualPointerBox</a> around. Moving the <a href="CommandHandler.html#virtualPointerBox" class="tsd-kind-accessor">virtualPointerBox</a> results in mouse-move <a href="InputEvent.html" class="tsd-kind-class">InputEvent</a>s.
Also holding down the `Ctrl` modifier when typing arrow keys offers finer positioning at one document unit per keystroke.
`Shift-Enter` toggles whether the virtual pointer is 'down' or 'up', also shown in the <a href="CommandHandler.html#virtualPointerBox" class="tsd-kind-accessor">virtualPointerBox</a> with a thick dark-cyan circle
indicating 'down', and results in mouse-down or mouse-up <a href="InputEvent.html" class="tsd-kind-class">InputEvent</a>s.
<p>The <code>Shift-Numpad</code> keys from 1 to 9, excluding 5, also shift the virtual pointer around.</p>
<p>Basically, type <code>Shift-Enter</code> to do the mouse-down, type <code>Shift-arrow</code> keys to move the virtual pointer around,
and finally type <code>Shift-Enter</code> again to do the mouse-up.
Note that <code>Shift</code> does not need to be held down the whole time during what would be a mouse-down/moves/up sequence.
This allows almost any mouse <a href="Tool.html" class="tsd-kind-class">Tool</a> to run, except ones that involve timing which can be hard to control.
Changing the current <a href="CommandHandler.html#focus" class="tsd-kind-accessor">focus</a> object automatically cancels any <a href="Tool.html" class="tsd-kind-class">Tool</a> running due to the virtual pointer mechanism,
which helps with the times that the user forgets to do the second <code>Shift-Enter</code> for the mouse-up effect.</p>
<p><code>Shift-Space</code> changes the <a href="CommandHandler.html#focus" class="tsd-kind-accessor">focus</a> to be the <a href="Part.html" class="tsd-kind-class">Part</a> at the current virtual <a href="CommandHandler.html#virtualPointerLocation" class="tsd-kind-accessor">virtualPointerLocation</a>.</p>
<p>Because <code>Shift</code> and <code>Ctrl</code> are used to control the virtual pointer, there is no natural way to specify modifiers
during virtual mouse events, such as control-drag-and-drop in order to copy the selection.
Nor is there a reasonable way to specify which button to use for mouse-down or mouse-up events,
nor to control whether it's a single click or a double click. So there are additional commands to control those
aspects of future simulated mouse input events:</p>
<ul>
<li>Type `Shift-A`, `Shift-S`, `Shift-C`, `Shift-M` to toggle each of
<a href="InputEvent.html#alt" class="tsd-kind-accessor">InputEvent.alt</a>, <a href="InputEvent.html#shift" class="tsd-kind-accessor">InputEvent.shift</a>, <a href="InputEvent.html#control" class="tsd-kind-accessor">InputEvent.control</a>, <a href="InputEvent.html#meta" class="tsd-kind-accessor">InputEvent.meta</a></li>
<li>Type `Shift-1`, `Shift-2`, `Shift-3` for one of
<a href="InputEvent.html#left" class="tsd-kind-accessor">InputEvent.left</a>, <a href="InputEvent.html#middle" class="tsd-kind-accessor">InputEvent.middle</a>, <a href="InputEvent.html#right" class="tsd-kind-accessor">InputEvent.right</a></li>
<li>Type `Numpad0` to toggle between <a href="InputEvent.html#left" class="tsd-kind-accessor">InputEvent.left</a> and <a href="InputEvent.html#right" class="tsd-kind-accessor">InputEvent.right</a></li>
<li>Type `Shift-D` (or `Shift-Numpad-.`) to toggle between a <a href="InputEvent.html#clickCount" class="tsd-kind-accessor">InputEvent.clickCount</a> of 1 or 2
for the next `Shift-Enter` event that performs a mouse-up.</li>
</ul>
After a simulated mouse up event the <a href="InputEvent.html#clickCount" class="tsd-kind-accessor">InputEvent.clickCount</a> is automatically reset to 1.
The current modifiers/button/clickCount state is reflected in the <a href="CommandHandler.html#virtualPointerBox" class="tsd-kind-accessor">virtualPointerBox</a>.
<p>When the virtual pointer is modified by one of the above keyboard commands, the function value of
the <a href="CommandHandler.html#virtualPointerChanged" class="tsd-kind-accessor">virtualPointerChanged</a> property, if provided, is called.</p>
<h4>General Policies</h4>
The `Ctrl` and `Meta` modifier keys are interchangeable for all built-in command keyboard shortcuts.
Use whatever works well on your keyboard. But note that not all Tools are that way.
For example, the `Ctrl` modifier when using the <a href="DraggingTool.html" class="tsd-kind-class">DraggingTool</a> is replaced by the `Alt` modifier on macOS.
<p>The <code>Tab</code>, <code>Caps Lock</code>, <code>Insert</code>, and <code>Scroll Lock</code> keys are not used for either focus navigation or virtual pointer control.
Tabbing normally changes the HTML element that has keyboard focus, and that behavior is unmodified while the diagram has keyboard focus.</p>
<p>Note that nearly all of the regular keyboard-shortcut commands are unaffected by focus navigation.
This includes the common commands: delete, cut, copy, paste, selectAll, undo, redo, *Zoom, group, ungroup, editTextBlock.
However the arrow keys do not scroll, and the <code>ContextMenu</code> key works on the focus, not on the selection,
unless there is no focus object.</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="CommandHandler.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="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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>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>copy<wbr/>Selection</span></a>
<a href="CommandHandler.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="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>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>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>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>describe</span></a>
<a href="CommandHandler.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="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>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>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>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>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>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>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>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>is<wbr/>Valid<wbr/>Member</span></a>
<a href="CommandHandler.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="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>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>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>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>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>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>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>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>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>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>zoom<wbr/>To<wbr/>Fit</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_CommandHandler" class="tsd-anchor"></a><span class="tsd-kind-constructor-signature">new <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="CommandHandler.html" class="tsd-signature-type tsd-kind-class">CommandHandler</a><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="CommandHandler.html" class="tsd-signature-type tsd-kind-class">CommandHandler</a><a href="#constructor.new_CommandHandler" 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 constructor produces a CommandHandler with the default key bindings.</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">init</span>: <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="CommandHandler.html" class="tsd-signature-type tsd-kind-class">CommandHandler</a><span class="tsd-signature-symbol">></span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="CommandHandler.html" class="tsd-signature-type tsd-kind-class">CommandHandler</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="archetypeGroupData" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>archetype<wbr/>Group<wbr/>Data</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="#archetypeGroupData" 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 data object that is copied by <a href="CommandHandler.html#groupSelection" class="tsd-kind-method">groupSelection</a>
when creating a new Group.</p>
<p>The default value is null.
If you set this to an Object, be sure that <a href="GraphLinksModel.html#isGroupForNodeData" class="tsd-kind-method">GraphLinksModel.isGroupForNodeData</a> is true for that object.
Setting this property does not raise any events.</p>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="copiesConnectedLinks" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>copies<wbr/>Connected<wbr/>Links</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></div><a href="#copiesConnectedLinks" 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 whether <a href="CommandHandler.html#copySelection" class="tsd-kind-method">copySelection</a> should also copy Links that connect with selected Nodes.
The default value is true.
Setting this property does not raise any events.</p>
<p>The <a href="DraggingTool.html#copiesEffectiveCollection" class="tsd-kind-accessor">DraggingTool.copiesEffectiveCollection</a> property serves a similar role for the <a href="DraggingTool.html" class="tsd-kind-class">DraggingTool</a>
when the user holds down the control key to modify the drag into a copy operation.</p>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="copiesGroupKey" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>copies<wbr/>Group<wbr/>Key</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></div><a href="#copiesGroupKey" 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 whether <a href="CommandHandler.html#copySelection" class="tsd-kind-method">copySelection</a> and <a href="CommandHandler.html#copyToClipboard" class="tsd-kind-method">copyToClipboard</a> copy the node data property
whose value is the containing group data's key.</p>
<p>Set this property to true if you want a copy/paste of a node to automatically have the new node be a member of the original group.
Caution: this only has an effect if the Diagram's <a href="Diagram.html#model" class="tsd-kind-accessor">Diagram.model</a> is a <a href="GraphLinksModel.html" class="tsd-kind-class">GraphLinksModel</a>.</p>
<p>The default value is false.</p>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="copiesParentKey" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>copies<wbr/>Parent<wbr/>Key</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></div><a href="#copiesParentKey" 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 whether <a href="CommandHandler.html#copySelection" class="tsd-kind-method">copySelection</a> and <a href="CommandHandler.html#copyToClipboard" class="tsd-kind-method">copyToClipboard</a> copy the node data property
whose value is the tree-parent node data's key.</p>
<p>Set this property to true if you want a copy/paste of a node to automatically have the new node be a tree-child of the original tree-parent node.
Caution: this only has an effect if the Diagram's <a href="Diagram.html#model" class="tsd-kind-accessor">Diagram.model</a> is a <a href="TreeModel.html" class="tsd-kind-class">TreeModel</a>.</p>
<p>The default value is false.</p>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="copiesTree" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>copies<wbr/>Tree</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></div><a href="#copiesTree" 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 whether <a href="CommandHandler.html#copySelection" class="tsd-kind-method">copySelection</a> should also copy subtrees.
The default value is false.
Setting this property does not raise any events.</p>
<p>The <a href="DraggingTool.html#dragsTree" class="tsd-kind-accessor">DraggingTool.dragsTree</a> property serves a similar role for the <a href="DraggingTool.html" class="tsd-kind-class">DraggingTool</a>
for both moving and copying operations.</p>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="deletesConnectedLinks" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>deletes<wbr/>Connected<wbr/>Links</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></div><a href="#deletesConnectedLinks" 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 whether <a href="CommandHandler.html#deleteSelection" class="tsd-kind-method">deleteSelection</a> should also delete links that are connected to nodes that are deleted.
The default value is true.
Setting this property does not raise any events.</p>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="deletesTree" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>deletes<wbr/>Tree</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></div><a href="#deletesTree" 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 whether <a href="CommandHandler.html#deleteSelection" class="tsd-kind-method">deleteSelection</a> should also delete subtrees.
The default value is false.
Setting this property does not raise any events.</p>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="diagram" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagReadOnly">Readonly</code><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>This read-only property returns the <a href="Diagram.html" class="tsd-kind-class">Diagram</a> that is using this CommandHandler,
after <a href="Diagram.html#commandHandler" class="tsd-kind-accessor">Diagram.commandHandler</a> has been set to this object.</p>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="focus" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>focus</span><div class="membertype"><span class="tsd-signature-symbol">: </span><a href="GraphObject.html" class="tsd-signature-type tsd-kind-class">GraphObject</a></div><a href="#focus" 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="GraphObject.html" class="tsd-kind-class">GraphObject</a> that has focus for this CommandHandler; the value may be null.
Changing the focus automatically cancels any running <a href="Tool.html" class="tsd-kind-class">Tool</a> and sets <a href="CommandHandler.html#isVirtualPointerDown" class="tsd-kind-accessor">isVirtualPointerDown</a> to false.
Whichever <a href="GraphObject.html" class="tsd-kind-class">GraphObject</a> has focus automatically gets the <a href="CommandHandler.html#focusBox" class="tsd-kind-accessor">focusBox</a> <a href="Adornment.html" class="tsd-kind-class">Adornment</a>.</p>
<p>The initial value is null.
This can only be set, and thus focus navigation mode can only be started, when <a href="CommandHandler.html#isFocusEnabled" class="tsd-kind-accessor">isFocusEnabled</a> is true.
Any new focus GraphObject must be in the same Diagram as this CommandHandler.</p>
<p>This property is different than the <a href="Diagram.html#focus" class="tsd-kind-method">Diagram.focus</a> method, which requests DOM keyboard event focus.</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="focusBox" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>focus<wbr/>Box</span><div class="membertype"><span class="tsd-signature-symbol">: </span><a href="Adornment.html" class="tsd-signature-type tsd-kind-class">Adornment</a></div><a href="#focusBox" 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="Adornment.html" class="tsd-kind-class">Adornment</a> used to show the current <a href="GraphObject.html" class="tsd-kind-class">GraphObject</a> that has <a href="CommandHandler.html#focus" class="tsd-kind-accessor">focus</a>.</p>
<p>This defaults to two Shapes surrounding the focus object: a lime (or darkcyan if <a href="Part.html#isSelected" class="tsd-kind-accessor">Part.isSelected</a>) border
and a dotted magenta border. Here is how the default focusBox is defined:</p>
<pre><code class="language-js"><span class="hl-0">// in the "Tool" Layer so that it's in front of all regular Adornments</span><br/><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-5">Adornment</span><span class="hl-2">(</span><span class="hl-6">'Auto'</span><span class="hl-2">, { </span><span class="hl-4">layerName:</span><span class="hl-2"> </span><span class="hl-6">'Tool'</span><span class="hl-2">, </span><span class="hl-4">pickable:</span><span class="hl-2"> </span><span class="hl-1">false</span><span class="hl-2">, </span><span class="hl-4">selectable:</span><span class="hl-2"> </span><span class="hl-1">false</span><span class="hl-2"> })</span><br/><span class="hl-2"> .</span><span class="hl-5">add</span><span class="hl-2">(</span><br/><span class="hl-2"> </span><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-5">Panel</span><span class="hl-2">(</span><span class="hl-6">'Spot'</span><span class="hl-2">)</span><br/><span class="hl-2"> .</span><span class="hl-5">add</span><span class="hl-2">(</span><br/><span class="hl-2"> </span><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-5">Shape</span><span class="hl-2">({</span><br/><span class="hl-2"> </span><span class="hl-4">name:</span><span class="hl-2"> </span><span class="hl-6">'SHAPE'</span><span class="hl-2">, </span><span class="hl-4">fill:</span><span class="hl-2"> </span><span class="hl-1">null</span><span class="hl-2">, </span><span class="hl-4">stroke:</span><span class="hl-2"> </span><span class="hl-6">'lime'</span><span class="hl-2">, </span><span class="hl-4">strokeWidth:</span><span class="hl-2"> </span><span class="hl-7">4</span><br/><span class="hl-2"> })</span><br/><span class="hl-2"> .</span><span class="hl-5">bindObject</span><span class="hl-2">(</span><span class="hl-6">'stroke'</span><span class="hl-2">, </span><span class="hl-6">'adornedPart'</span><span class="hl-2">, </span><span class="hl-4">part</span><span class="hl-2"> </span><span class="hl-1">=></span><span class="hl-2"> </span><span class="hl-4">part</span><span class="hl-2">.</span><span class="hl-4">isSelected</span><span class="hl-2"> ? </span><span class="hl-6">'darkcyan'</span><span class="hl-2"> : </span><span class="hl-6">'lime'</span><span class="hl-2">),</span><br/><span class="hl-2"> </span><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-5">Shape</span><span class="hl-2">({</span><br/><span class="hl-2"> </span><span class="hl-4">name:</span><span class="hl-2"> </span><span class="hl-6">'SHAPE2'</span><span class="hl-2">, </span><span class="hl-4">stretch:</span><span class="hl-2"> </span><span class="hl-4">Stretch</span><span class="hl-2">.</span><span class="hl-4">Fill</span><span class="hl-2">, </span><span class="hl-4">fill:</span><span class="hl-2"> </span><span class="hl-1">null</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-4">stroke:</span><span class="hl-2"> </span><span class="hl-6">'magenta'</span><span class="hl-2">, </span><span class="hl-4">strokeWidth:</span><span class="hl-2"> </span><span class="hl-7">4</span><span class="hl-2">, </span><span class="hl-4">strokeDashArray:</span><span class="hl-2"> [</span><span class="hl-7">4</span><span class="hl-2">, </span><span class="hl-7">4</span><span class="hl-2">]</span><br/><span class="hl-2"> })</span><br/><span class="hl-2"> ),</span><br/><span class="hl-2"> </span><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-5">Placeholder</span><span class="hl-2">({ </span><span class="hl-4">padding:</span><span class="hl-2"> </span><span class="hl-7">4</span><span class="hl-2"> })</span><br/><span class="hl-2"> );</span>
</code><button>Copy</button></pre>
<p>This definition may change in any version.</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="focusChanged" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>focus<wbr/>Changed</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">oldobj</span><span class="tsd-signature-symbol">: </span><a href="GraphObject.html" class="tsd-signature-type tsd-kind-class">GraphObject</a>, <span class="tsd-kind-parameter">newobj</span><span class="tsd-signature-symbol">: </span><a href="GraphObject.html" class="tsd-signature-type tsd-kind-class">GraphObject</a>, <span class="tsd-kind-parameter">cmd</span><span class="tsd-signature-symbol">: </span><a href="CommandHandler.html" class="tsd-signature-type tsd-kind-class">CommandHandler</a><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="#focusChanged" 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 to be called as the <a href="CommandHandler.html#focus" class="tsd-kind-accessor">focus</a> changes to a different GraphObject or to null.
The default value for this property is null -- no function is called when the focus has changed.</p>
<p>When this is null, the CommandHandler uses its own live element to update screen readers.</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 class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#liveElementId" class="tsd-kind-accessor">liveElementId</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="isFocusEnabled" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>is<wbr/>Focus<wbr/>Enabled</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></div><a href="#isFocusEnabled" 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 whether the arrow/<code>Enter</code>/<code>Escape</code>/<code>Space</code>/<code>ContextMenu</code> keys are used for doing focus navigation.</p>
<p>The default value is false.
This must be set to true in order for the user to be able to use keyboard navigation.
When set to false, the <a href="CommandHandler.html#focus" class="tsd-kind-accessor">focus</a> is also set to null.</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="isVirtualPointerDown" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>is<wbr/>Virtual<wbr/>Pointer<wbr/>Down</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></div><a href="#isVirtualPointerDown" 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 whether the virtual pointer has the primary mouse button held down or not.
Note that this state is maintained even when the <a href="CommandHandler.html#virtualPointerBox" class="tsd-kind-accessor">virtualPointerBox</a> is not visible because
the user has let go of the <code>Shift</code> key.</p>
<p>The initial value is false -- as if the mouse button is not being held down.
This can only be set when <a href="CommandHandler.html#isVirtualPointerEnabled" class="tsd-kind-accessor">isVirtualPointerEnabled</a> is true.</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="isVirtualPointerEnabled" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>is<wbr/>Virtual<wbr/>Pointer<wbr/>Enabled</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></div><a href="#isVirtualPointerEnabled" 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 whether the <code>Shift</code> key shows a virtual pointer (<a href="CommandHandler.html#virtualPointerBox" class="tsd-kind-accessor">virtualPointerBox</a>)
causing the arrow keys and <code>Enter</code> to produce simulated mouse <a href="InputEvent.html" class="tsd-kind-class">InputEvent</a>s.</p>
<p>The default value is false.
This must be set to true in order for the user to be able to use the virtual pointer.</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="isZoomToFitRestoreEnabled" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>is<wbr/>Zoom<wbr/>To<wbr/>Fit<wbr/>Restore<wbr/>Enabled</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></div><a href="#isZoomToFitRestoreEnabled" 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 whether the <a href="CommandHandler.html#zoomToFit" class="tsd-kind-method">zoomToFit</a> command ever restores the previous
Diagram scale and position.
When this property is false, this command always calls <a href="Diagram.html#zoomToFit" class="tsd-kind-method">Diagram.zoomToFit</a>.</p>
<p>The default value is false.
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>2.2</p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="liveElementId" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>live<wbr/>Element<wbr/>Id</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></div><a href="#liveElementId" 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 <code>id</code> of the HTML element used to hold the description of the current <a href="CommandHandler.html#focus" class="tsd-kind-accessor">focus</a>
and possibly other state information.</p>
<p>The default value is the empty string. Note that the element must be in the same DOM as the diagram.
<a href="https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Reflected_attributes#element_id_reference_scope" target="_blank">Element id reference scope</a></p>
<p>If you do not provide your own HTML element by <code>id</code> nor your own your own <a href="CommandHandler.html#focusChanged" class="tsd-kind-accessor">focusChanged</a> event handler,
this will create and use one automatically.
However we suggest that you implement your own live element so that you can control its appearance and behavior.</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 class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#focusChanged" class="tsd-kind-accessor">focusChanged</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="memberValidation" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>member<wbr/>Validation</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">aGroup</span><span class="tsd-signature-symbol">: </span><a href="Group.html" class="tsd-signature-type tsd-kind-class">Group</a>, <span class="tsd-kind-parameter">somePart</span><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-type">boolean</span><span class="tsd-signature-symbol">)</span></div><a href="#memberValidation" 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 predicate that determines whether or not a node may become a member of a group.
This predicate is called in addition to any existing group's <a href="Group.html#memberValidation" class="tsd-kind-accessor">Group.memberValidation</a> predicate.
The default predicate is null, which is equivalent to simply returning true.
The predicate may be called passing null as the first argument (the Group) --
this asks whether it is OK to make the second argument (the Part, but not a Link) a top-level Part of the diagram.</p>
<p class="box">
For a more general discussion of validation, see <a href="../../intro/validation.html">Introduction to Validation</a>.
<p>The function, if supplied, must not have any side-effects.</p>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="storageLocation" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>storage<wbr/>Location</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">"memory"</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"sessionStorage"</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"localStorage"</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">"systemClipboard"</span></div><a href="#storageLocation" 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 where the clipboard is stored.
The value must be one of: "memory", "sessionStorage", "localStorage", or "systemClipboard".
If this value is not "memory", the value of <code>window[this.storageLocation]</code>
is expected to implement the <code>Storage</code> interface.</p>
<p>The default value is "memory".</p>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="virtualPointerBox" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>virtual<wbr/>Pointer<wbr/>Box</span><div class="membertype"><span class="tsd-signature-symbol">: </span><a href="Part.html" class="tsd-signature-type tsd-kind-class">Part</a></div><a href="#virtualPointerBox" 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 'Tool' layer <a href="Part.html" class="tsd-kind-class">Part</a> used to indicate the current location of the virtual pointer.
Its <a href="Part.html#location" class="tsd-kind-accessor">Part.location</a> will be positioned exactly where the <a href="InputEvent.html" class="tsd-kind-class">InputEvent</a>s happen.</p>
<p>The default box has some magenta lines looking like a target.
In addition there is a thick dark-cyan circle that is shown when <a href="CommandHandler.html#isVirtualPointerDown" class="tsd-kind-accessor">isVirtualPointerDown</a> is true.
Also, there is a visual indication of which mouse button is held down for future simulated mouse events,
there is a visual indication of which keyboard modifiers those future simulated mouse events will have,
and a visual indication of whether a future simulated mouse-up event is one-time double-click event.</p>
<p>Here is how the default virtual pointer box is defined:</p>
<pre><code class="language-js"><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-5">Part</span><span class="hl-2">({</span><br/><span class="hl-2"> </span><span class="hl-4">layerName:</span><span class="hl-2"> </span><span class="hl-6">'Tool'</span><span class="hl-2">, </span><span class="hl-4">isInDocumentBounds:</span><span class="hl-2"> </span><span class="hl-1">false</span><span class="hl-2">, </span><span class="hl-0">// avoid modifying documentBounds</span><br/><span class="hl-2"> </span><span class="hl-4">locationObjectName:</span><span class="hl-2"> </span><span class="hl-6">'CIRCLE'</span><span class="hl-2">, </span><span class="hl-4">locationSpot:</span><span class="hl-2"> </span><span class="hl-4">Spot</span><span class="hl-2">.</span><span class="hl-4">Center</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-4">pickable:</span><span class="hl-2"> </span><span class="hl-1">false</span><span class="hl-2">, </span><span class="hl-4">selectable:</span><span class="hl-2"> </span><span class="hl-1">false</span><br/><span class="hl-2"> })</span><br/><span class="hl-2"> .</span><span class="hl-5">add</span><span class="hl-2">(</span><br/><span class="hl-2"> </span><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-5">Shape</span><span class="hl-2">(</span><span class="hl-6">'Circle'</span><span class="hl-2">, {</span><br/><span class="hl-2"> </span><span class="hl-4">isGeometryPositioned:</span><span class="hl-2"> </span><span class="hl-1">true</span><span class="hl-2">, </span><span class="hl-4">width:</span><span class="hl-2"> </span><span class="hl-7">30</span><span class="hl-2">, </span><span class="hl-4">height:</span><span class="hl-2"> </span><span class="hl-7">30</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-4">fill:</span><span class="hl-2"> </span><span class="hl-1">null</span><span class="hl-2">, </span><span class="hl-4">stroke:</span><span class="hl-2"> </span><span class="hl-6">'darkcyan'</span><span class="hl-2">, </span><span class="hl-4">strokeWidth:</span><span class="hl-2"> </span><span class="hl-7">6</span><span class="hl-2">, </span><span class="hl-4">visible:</span><span class="hl-2"> </span><span class="hl-1">false</span><br/><span class="hl-2"> })</span><br/><span class="hl-2"> .</span><span class="hl-5">bind</span><span class="hl-2">(</span><span class="hl-6">'visible'</span><span class="hl-2">, </span><span class="hl-6">'down'</span><span class="hl-2">),</span><br/><span class="hl-2"> </span><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-5">Shape</span><span class="hl-2">({ </span><span class="hl-4">isGeometryPositioned:</span><span class="hl-2"> </span><span class="hl-1">true</span><span class="hl-2">, </span><span class="hl-4">geometryString:</span><span class="hl-2"> </span><span class="hl-6">'M15 0L15 30'</span><span class="hl-2">, </span><span class="hl-4">stroke:</span><span class="hl-2"> </span><span class="hl-6">'magenta'</span><span class="hl-2"> }),</span><br/><span class="hl-2"> </span><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-5">Shape</span><span class="hl-2">({ </span><span class="hl-4">isGeometryPositioned:</span><span class="hl-2"> </span><span class="hl-1">true</span><span class="hl-2">, </span><span class="hl-4">geometryString:</span><span class="hl-2"> </span><span class="hl-6">'M0 15L30 15'</span><span class="hl-2">, </span><span class="hl-4">stroke:</span><span class="hl-2"> </span><span class="hl-6">'magenta'</span><span class="hl-2"> }),</span><br/><span class="hl-2"> </span><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-5">Shape</span><span class="hl-2">(</span><span class="hl-6">'Circle'</span><span class="hl-2">, { </span><span class="hl-4">name:</span><span class="hl-2"> </span><span class="hl-6">'CIRCLE'</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-4">isGeometryPositioned:</span><span class="hl-2"> </span><span class="hl-1">true</span><span class="hl-2">, </span><span class="hl-4">width:</span><span class="hl-2"> </span><span class="hl-7">20</span><span class="hl-2">, </span><span class="hl-4">height:</span><span class="hl-2"> </span><span class="hl-7">20</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-4">fill:</span><span class="hl-2"> </span><span class="hl-1">null</span><span class="hl-2">, </span><span class="hl-4">stroke:</span><span class="hl-2"> </span><span class="hl-6">'magenta'</span><span class="hl-2">, </span><span class="hl-4">position:</span><span class="hl-2"> </span><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-5">Point</span><span class="hl-2">(</span><span class="hl-7">5</span><span class="hl-2">, </span><span class="hl-7">5</span><span class="hl-2">)</span><br/><span class="hl-2"> }),</span><br/><span class="hl-2"> </span><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-5">Shape</span><span class="hl-2">({</span><br/><span class="hl-2"> </span><span class="hl-4">isGeometryPositioned:</span><span class="hl-2"> </span><span class="hl-1">true</span><span class="hl-2">, </span><span class="hl-4">geometry:</span><span class="hl-2"> </span><span class="hl-4">CommandHandler</span><span class="hl-2">.</span><span class="hl-4">_LeftButtonGeo</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-4">fill:</span><span class="hl-2"> </span><span class="hl-1">null</span><span class="hl-2">, </span><span class="hl-4">stroke:</span><span class="hl-2"> </span><span class="hl-6">'cyan'</span><span class="hl-2">, </span><span class="hl-4">strokeWidth:</span><span class="hl-2"> </span><span class="hl-7">4</span><br/><span class="hl-2"> })</span><br/><span class="hl-2"> .</span><span class="hl-5">bind</span><span class="hl-2">(</span><span class="hl-6">'geometry'</span><span class="hl-2">, </span><span class="hl-6">'button'</span><span class="hl-2">, </span><span class="hl-4">CommandHandler</span><span class="hl-2">.</span><span class="hl-4">_showButton</span><span class="hl-2">),</span><br/><span class="hl-2"> </span><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-5">TextBlock</span><span class="hl-2">({ </span><span class="hl-4">position:</span><span class="hl-2"> </span><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-5">Point</span><span class="hl-2">(</span><span class="hl-7">12</span><span class="hl-2">, </span><span class="hl-7">0</span><span class="hl-2">), </span><span class="hl-4">font:</span><span class="hl-2"> </span><span class="hl-6">'bold 10pt sans-serif'</span><span class="hl-2"> })</span><br/><span class="hl-2"> .</span><span class="hl-5">bind</span><span class="hl-2">(</span><span class="hl-6">'text'</span><span class="hl-2">, </span><span class="hl-6">'clickCount'</span><span class="hl-2">, </span><span class="hl-4">c</span><span class="hl-2"> </span><span class="hl-1">=></span><span class="hl-2"> </span><span class="hl-4">c</span><span class="hl-2"> > </span><span class="hl-7">1</span><span class="hl-2"> ? </span><span class="hl-4">c</span><span class="hl-2">.</span><span class="hl-5">toString</span><span class="hl-2">() : </span><span class="hl-6">''</span><span class="hl-2">),</span><br/><span class="hl-2"> </span><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-5">TextBlock</span><span class="hl-2">({ </span><span class="hl-4">position:</span><span class="hl-2"> </span><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-5">Point</span><span class="hl-2">(</span><span class="hl-7">0</span><span class="hl-2">, </span><span class="hl-7">16</span><span class="hl-2">) })</span><br/><span class="hl-2"> .</span><span class="hl-5">bind</span><span class="hl-2">(</span><span class="hl-6">'text'</span><span class="hl-2">, </span><span class="hl-6">'modifiers'</span><span class="hl-2">, </span><span class="hl-4">CommandHandler</span><span class="hl-2">.</span><span class="hl-4">_showModifiers</span><span class="hl-2">)</span><br/><span class="hl-2"> )</span>
</code><button>Copy</button></pre>
<p>This definition may change in any version.</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="virtualPointerChanged" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>virtual<wbr/>Pointer<wbr/>Changed</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">box</span><span class="tsd-signature-symbol">: </span><a href="Part.html" class="tsd-signature-type tsd-kind-class">Part</a>, <span class="tsd-kind-parameter">cmd</span><span class="tsd-signature-symbol">: </span><a href="CommandHandler.html" class="tsd-signature-type tsd-kind-class">CommandHandler</a><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="#virtualPointerChanged" 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 called when the <a href="CommandHandler.html#virtualPointerBox" class="tsd-kind-accessor">virtualPointerBox</a> is replaced or modified.</p>
<p>Note that some of the state of the virtual pointer is stored in the <a href="Panel.html#data" class="tsd-kind-accessor">Panel.data</a> of the box Part.</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="virtualPointerLocation" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>virtual<wbr/>Pointer<wbr/>Location</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="#virtualPointerLocation" 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 location of the virtual pointer, the <a href="CommandHandler.html#virtualPointerBox" class="tsd-kind-accessor">virtualPointerBox</a> Part.
Changing this property results in <a href="InputEvent.html" class="tsd-kind-class">InputEvent</a>s and calls to <code>doMouseMove</code>.</p>
<p>The initial value is (NaN, NaN).</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="zoomFactor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>zoom<wbr/>Factor</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span></div><a href="#zoomFactor" 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 amount by which <a href="CommandHandler.html#decreaseZoom" class="tsd-kind-method">decreaseZoom</a> and <a href="CommandHandler.html#increaseZoom" class="tsd-kind-method">increaseZoom</a> change
the <a href="Diagram.html#scale" class="tsd-kind-accessor">Diagram.scale</a>.</p>
<p>The default value is 1.05 (5%).
The value must be a number larger than 1.0.
Setting this property does not raise any events.</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="addTopLevelParts" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>add<wbr/>Top<wbr/>Level<wbr/>Parts</span><a href="#addTopLevelParts" 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="addTopLevelParts.addTopLevelParts-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">add<wbr/>Top<wbr/>Level<wbr/>Parts</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><a href="Part.html" class="tsd-signature-type tsd-kind-class">Part</a><span class="tsd-signature-symbol">[]</span>, <span class="tsd-kind-parameter">check</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">boolean</span><a href="#addTopLevelParts.addTopLevelParts-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 sure all of the unnested <a href="Part.html" class="tsd-kind-class">Part</a>s in the given collection
are removed from any containing <a href="Group.html" class="tsd-kind-class">Group</a>s.</p>
<p>This sets <a href="Part.html#containingGroup" class="tsd-kind-accessor">Part.containingGroup</a> to null on each Part that is
not a member of another Part in the argument collection.
If the check argument to this method is supplied and true,
this will call <a href="CommandHandler.html#isValidMember" class="tsd-kind-method">isValidMember</a> on each part, passing null as the first argument.</p>
<p>This functionality is similar to <a href="CommandHandler.html#ungroupSelection" class="tsd-kind-method">ungroupSelection</a>,
except that this is not a command (there is no transaction and this does not raise a <a href="DiagramEvent.html" class="tsd-kind-class">DiagramEvent</a>)
and the parts are necessarily becoming top-level parts
(whereas ungrouping would add them to the Group containing the Group being ungrouped).</p>
<p>This function is typically called in a <a href="Diagram.html#mouseDrop" class="tsd-kind-accessor">Diagram.mouseDrop</a> event handler
in order to remove the selected Parts from whatever <a href="Group.html" class="tsd-kind-class">Group</a> they had been in.</p>
<p>If you want to add Parts to be members of a Group, call <a href="Group.html#addMembers" class="tsd-kind-method">Group.addMembers</a>.
If you want to remove Parts completely from a Diagram, call <a href="Diagram.html#removeParts" class="tsd-kind-method">Diagram.removeParts</a>.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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><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 Parts.</p>
</div></li><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">check</span>: <span class="tsd-signature-type">boolean</span></h5><div class="tsd-comment tsd-typography"><p>whether to call <a href="CommandHandler.html#isValidMember" class="tsd-kind-method">isValidMember</a> to confirm that changing the Part to be a top-level Part is valid.</p>
</div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><p>true if all non-Links were changed to be top-level Parts in this Diagram; false if some Parts or Nodes were not able to be added.</p>
</li></ul></section><section class="tsd-panel tsd-member"><a id="canCollapseSubGraph" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>can<wbr/>Collapse<wbr/>Sub<wbr/>Graph</span><a href="#canCollapseSubGraph" 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="canCollapseSubGraph.canCollapseSubGraph-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Collapse<wbr/>Sub<wbr/>Graph</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">group</span><span class="tsd-signature-symbol">?: </span><a href="Group.html" class="tsd-signature-type tsd-kind-class">Group</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><a href="#canCollapseSubGraph.canCollapseSubGraph-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 the user can collapse expanded <a href="Group.html" class="tsd-kind-class">Group</a>s.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
This method must not have any side-effects.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">group</span>: <a href="Group.html" class="tsd-signature-type tsd-kind-class">Group</a></h5><div class="tsd-comment tsd-typography"><p>if supplied, ignore the selection and consider collapsing this particular Group.</p>
</div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#collapseSubGraph" class="tsd-kind-method">collapseSubGraph</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="canCollapseTree" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>can<wbr/>Collapse<wbr/>Tree</span><a href="#canCollapseTree" 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="canCollapseTree.canCollapseTree-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Collapse<wbr/>Tree</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">node</span><span class="tsd-signature-symbol">?: </span><a href="Node.html" class="tsd-signature-type tsd-kind-class">Node</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><a href="#canCollapseTree.canCollapseTree-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 the user can collapse expanded subtrees of <a href="Node.html" class="tsd-kind-class">Node</a>s.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
This method must not have any side-effects.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">node</span>: <a href="Node.html" class="tsd-signature-type tsd-kind-class">Node</a></h5><div class="tsd-comment tsd-typography"><p>if supplied, ignore the selection and consider collapsing this particular Node.</p>
</div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#collapseTree" class="tsd-kind-method">collapseTree</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="canCopySelection" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>can<wbr/>Copy<wbr/>Selection</span><a href="#canCopySelection" 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="canCopySelection.canCopySelection-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Copy<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="#canCopySelection.canCopySelection-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="CommandHandler.html#copySelection" class="tsd-kind-method">copySelection</a> command.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
This method must not have any side-effects.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</p>
</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><p>This returns true:
if <a href="Diagram.html#allowCopy" class="tsd-kind-accessor">Diagram.allowCopy</a> is true,
if <a href="Diagram.html#allowClipboard" class="tsd-kind-accessor">Diagram.allowClipboard</a> is true, and
if there are some selected <a href="Part.html" class="tsd-kind-class">Part</a>s.</p>
<div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#copySelection" class="tsd-kind-method">copySelection</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="canCutSelection" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>can<wbr/>Cut<wbr/>Selection</span><a href="#canCutSelection" 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="canCutSelection.canCutSelection-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Cut<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="#canCutSelection.canCutSelection-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="CommandHandler.html#cutSelection" class="tsd-kind-method">cutSelection</a> command.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
This method must not have any side-effects.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">Diagram.isReadOnly</a>,
if <a href="Diagram.html#allowCopy" class="tsd-kind-accessor">Diagram.allowCopy</a> is true,
if <a href="Diagram.html#allowDelete" class="tsd-kind-accessor">Diagram.allowDelete</a> is true,
if <a href="Diagram.html#allowClipboard" class="tsd-kind-accessor">Diagram.allowClipboard</a> is true, and
if there are some selected <a href="Part.html" class="tsd-kind-class">Part</a>s.</p>
<div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#cutSelection" class="tsd-kind-method">cutSelection</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="canDecreaseZoom" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>can<wbr/>Decrease<wbr/>Zoom</span><a href="#canDecreaseZoom" 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="canDecreaseZoom.canDecreaseZoom-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Decrease<wbr/>Zoom</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">factor</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">boolean</span><a href="#canDecreaseZoom.canDecreaseZoom-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="CommandHandler.html#decreaseZoom" class="tsd-kind-method">decreaseZoom</a> command.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
This method must not have any side-effects.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">factor</span>: <span class="tsd-signature-type">number</span></h5><div class="tsd-comment tsd-typography"><p>This defaults to 1/<a href="CommandHandler.html#zoomFactor" class="tsd-kind-accessor">zoomFactor</a>. The value should be less than one and greater than zero.</p>
</div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><p>This returns true if <a href="Diagram.html#allowZoom" class="tsd-kind-accessor">Diagram.allowZoom</a> is true
and if the new scale is within the range of <a href="Diagram.html#minScale" class="tsd-kind-accessor">Diagram.minScale</a> and <a href="Diagram.html#maxScale" class="tsd-kind-accessor">Diagram.maxScale</a>.</p>
<div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#decreaseZoom" class="tsd-kind-method">decreaseZoom</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="canDeleteSelection" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>can<wbr/>Delete<wbr/>Selection</span><a href="#canDeleteSelection" 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="canDeleteSelection.canDeleteSelection-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Delete<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="#canDeleteSelection.canDeleteSelection-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="CommandHandler.html#deleteSelection" class="tsd-kind-method">deleteSelection</a> command.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
This method must not have any side-effects.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">Diagram.isReadOnly</a>,
if <a href="Diagram.html#allowDelete" class="tsd-kind-accessor">Diagram.allowDelete</a> is true, and
if there are some selected <a href="Part.html" class="tsd-kind-class">Part</a>s.</p>
<div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#deleteSelection" class="tsd-kind-method">deleteSelection</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="canDownloadSvg" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>can<wbr/>Download<wbr/>Svg</span><a href="#canDownloadSvg" 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="canDownloadSvg.canDownloadSvg-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Download<wbr/>Svg</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">?: </span><a href="SvgRendererOptions.html" class="tsd-signature-type tsd-kind-interface">SvgRendererOptions</a><span class="tsd-signature-symbol"> & </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">boolean</span><a href="#canDownloadSvg.canDownloadSvg-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="CommandHandler.html#downloadSvg" class="tsd-kind-method">downloadSvg</a> command.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
This method must not have any side-effects.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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>: <a href="SvgRendererOptions.html" class="tsd-signature-type tsd-kind-interface">SvgRendererOptions</a><span class="tsd-signature-symbol"> & </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 Object that satisfies the <a href="SvgRendererOptions.html" class="tsd-kind-interface">SvgRendererOptions</a> interface and may also
have an optional "name" property for the name of the downloaded file</p>
</div></li></ul></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">see</code><p><a href="CommandHandler.html#downloadSvg" class="tsd-kind-method">downloadSvg</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="canEditTextBlock" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>can<wbr/>Edit<wbr/>Text<wbr/>Block</span><a href="#canEditTextBlock" 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="canEditTextBlock.canEditTextBlock-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Edit<wbr/>Text<wbr/>Block</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">textblock</span><span class="tsd-signature-symbol">?: </span><a href="TextBlock.html" class="tsd-signature-type tsd-kind-class">TextBlock</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><a href="#canEditTextBlock.canEditTextBlock-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="CommandHandler.html#editTextBlock" class="tsd-kind-method">editTextBlock</a> command.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
This method must not have any side-effects.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">textblock</span>: <a href="TextBlock.html" class="tsd-signature-type tsd-kind-class">TextBlock</a></h5><div class="tsd-comment tsd-typography"><p>the <a href="TextBlock.html" class="tsd-kind-class">TextBlock</a> to consider editing.</p>
</div></li></ul></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">Diagram.isReadOnly</a>,
if <a href="Diagram.html#allowTextEdit" class="tsd-kind-accessor">Diagram.allowTextEdit</a> is true,
if there is a <a href="ToolManager.html#textEditingTool" class="tsd-kind-accessor">ToolManager.textEditingTool</a>, and
if there is any selected <a href="Part.html" class="tsd-kind-class">Part</a> for which <a href="Part.html#canEdit" class="tsd-kind-method">Part.canEdit</a> is true.</p>
<div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#editTextBlock" class="tsd-kind-method">editTextBlock</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="canExpandSubGraph" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>can<wbr/>Expand<wbr/>Sub<wbr/>Graph</span><a href="#canExpandSubGraph" 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="canExpandSubGraph.canExpandSubGraph-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Expand<wbr/>Sub<wbr/>Graph</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">group</span><span class="tsd-signature-symbol">?: </span><a href="Group.html" class="tsd-signature-type tsd-kind-class">Group</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><a href="#canExpandSubGraph.canExpandSubGraph-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 the user can expand collapsed <a href="Group.html" class="tsd-kind-class">Group</a>s.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
This method must not have any side-effects.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">group</span>: <a href="Group.html" class="tsd-signature-type tsd-kind-class">Group</a></h5><div class="tsd-comment tsd-typography"><p>if supplied, ignore the selection and consider expanding this particular Group.</p>
</div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#expandSubGraph" class="tsd-kind-method">expandSubGraph</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="canExpandTree" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>can<wbr/>Expand<wbr/>Tree</span><a href="#canExpandTree" 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="canExpandTree.canExpandTree-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Expand<wbr/>Tree</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">node</span><span class="tsd-signature-symbol">?: </span><a href="Node.html" class="tsd-signature-type tsd-kind-class">Node</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><a href="#canExpandTree.canExpandTree-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 the user can expand collapsed subtrees of <a href="Node.html" class="tsd-kind-class">Node</a>s.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
This method must not have any side-effects.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">node</span>: <a href="Node.html" class="tsd-signature-type tsd-kind-class">Node</a></h5><div class="tsd-comment tsd-typography"><p>if supplied, ignore the selection and consider expanding this particular Node.</p>
</div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#expandTree" class="tsd-kind-method">expandTree</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="canGroupSelection" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>can<wbr/>Group<wbr/>Selection</span><a href="#canGroupSelection" 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="canGroupSelection.canGroupSelection-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Group<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="#canGroupSelection.canGroupSelection-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="CommandHandler.html#groupSelection" class="tsd-kind-method">groupSelection</a> command.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
This method must not have any side-effects.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</p>
</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><p>This returns true:
if the <a href="CommandHandler.html#archetypeGroupData" class="tsd-kind-accessor">archetypeGroupData</a> is not null,
if the diagram is not <a href="Diagram.html#isReadOnly" class="tsd-kind-accessor">Diagram.isReadOnly</a>,
if <a href="Diagram.html#allowInsert" class="tsd-kind-accessor">Diagram.allowInsert</a> is true,
if <a href="Diagram.html#allowGroup" class="tsd-kind-accessor">Diagram.allowGroup</a> is true,
if <a href="Diagram.html#model" class="tsd-kind-accessor">Diagram.model</a> is a <a href="GraphLinksModel.html" class="tsd-kind-class">GraphLinksModel</a>, and
if there is any selected <a href="Part.html" class="tsd-kind-class">Part</a> that can be <a href="Part.html#canGroup" class="tsd-kind-method">Part.canGroup</a>ed.</p>
<div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#groupSelection" class="tsd-kind-method">groupSelection</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="canIncreaseZoom" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>can<wbr/>Increase<wbr/>Zoom</span><a href="#canIncreaseZoom" 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="canIncreaseZoom.canIncreaseZoom-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Increase<wbr/>Zoom</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">factor</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">boolean</span><a href="#canIncreaseZoom.canIncreaseZoom-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="CommandHandler.html#increaseZoom" class="tsd-kind-method">increaseZoom</a> command.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
This method must not have any side-effects.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">factor</span>: <span class="tsd-signature-type">number</span></h5><div class="tsd-comment tsd-typography"><p>This defaults to <a href="CommandHandler.html#zoomFactor" class="tsd-kind-accessor">zoomFactor</a>. The value should be greater than one.</p>
</div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><p>This returns true if <a href="Diagram.html#allowZoom" class="tsd-kind-accessor">Diagram.allowZoom</a> is true
and if the new scale is within the range of <a href="Diagram.html#minScale" class="tsd-kind-accessor">Diagram.minScale</a> and <a href="Diagram.html#maxScale" class="tsd-kind-accessor">Diagram.maxScale</a>.</p>
<div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#increaseZoom" class="tsd-kind-method">increaseZoom</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="canPasteSelection" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>can<wbr/>Paste<wbr/>Selection</span><a href="#canPasteSelection" 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="canPasteSelection.canPasteSelection-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Paste<wbr/>Selection</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">pos</span><span class="tsd-signature-symbol">?: </span><a href="Point.html" class="tsd-signature-type tsd-kind-class">Point</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><a href="#canPasteSelection.canPasteSelection-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="CommandHandler.html#pasteSelection" class="tsd-kind-method">pasteSelection</a> command.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
This method must not have any side-effects.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">pos</span>: <a href="Point.html" class="tsd-signature-type tsd-kind-class">Point</a></h5><div class="tsd-comment tsd-typography"><p>Point at which to center the newly pasted parts; if not present the parts would not be moved.</p>
</div></li></ul></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">Diagram.isReadOnly</a>,
if <a href="Diagram.html#allowInsert" class="tsd-kind-accessor">Diagram.allowInsert</a> is true,
if <a href="Diagram.html#allowClipboard" class="tsd-kind-accessor">Diagram.allowClipboard</a> is true, and
if the clipboard has parts in it.</p>
<div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#pasteSelection" class="tsd-kind-method">pasteSelection</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="canRedo" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><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 controls whether or not the user can invoke the <a href="CommandHandler.html#redo" class="tsd-kind-method">redo</a> command.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
This method must not have any side-effects.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">Diagram.isReadOnly</a>,
if <a href="Diagram.html#allowUndo" class="tsd-kind-accessor">Diagram.allowUndo</a> is true, and
if the <a href="UndoManager.html#canRedo" class="tsd-kind-method">UndoManager.canRedo</a> predicate returns true.</p>
<div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#redo" class="tsd-kind-method">redo</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="canResetZoom" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>can<wbr/>Reset<wbr/>Zoom</span><a href="#canResetZoom" 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="canResetZoom.canResetZoom-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Reset<wbr/>Zoom</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">newscale</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">boolean</span><a href="#canResetZoom.canResetZoom-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="CommandHandler.html#resetZoom" class="tsd-kind-method">resetZoom</a> command.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
This method must not have any side-effects.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">newscale</span>: <span class="tsd-signature-type">number</span></h5><div class="tsd-comment tsd-typography"><p>This defaults to <a href="Diagram.html#defaultScale" class="tsd-kind-accessor">Diagram.defaultScale</a>, which is normally 1.0. The value should be greater than zero.</p>
</div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><p>This returns true if <a href="Diagram.html#allowZoom" class="tsd-kind-accessor">Diagram.allowZoom</a> is true.
and if the new scale is within the range of <a href="Diagram.html#minScale" class="tsd-kind-accessor">Diagram.minScale</a> and <a href="Diagram.html#maxScale" class="tsd-kind-accessor">Diagram.maxScale</a>.</p>
<div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#resetZoom" class="tsd-kind-method">resetZoom</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="canScrollToPart" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>can<wbr/>Scroll<wbr/>To<wbr/>Part</span><a href="#canScrollToPart" 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="canScrollToPart.canScrollToPart-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Scroll<wbr/>To<wbr/>Part</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">part</span><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-type">boolean</span><a href="#canScrollToPart.canScrollToPart-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="CommandHandler.html#scrollToPart" class="tsd-kind-method">scrollToPart</a> command.
This returns false if there is no argument Part and there are no selected Parts.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
This method must not have any side-effects.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">part</span>: <a href="Part.html" class="tsd-signature-type tsd-kind-class">Part</a></h5><div class="tsd-comment tsd-typography"><p>This defaults to the first selected Part of <a href="Diagram.html#selection" class="tsd-kind-accessor">Diagram.selection</a></p>
</div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><p>This returns true if <a href="Diagram.html#allowHorizontalScroll" class="tsd-kind-accessor">Diagram.allowHorizontalScroll</a> and <a href="Diagram.html#allowVerticalScroll" class="tsd-kind-accessor">Diagram.allowVerticalScroll</a> are true.</p>
<div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#scrollToPart" class="tsd-kind-method">scrollToPart</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="canSelectAll" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>can<wbr/>Select<wbr/>All</span><a href="#canSelectAll" 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="canSelectAll.canSelectAll-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Select<wbr/>All</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="#canSelectAll.canSelectAll-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="CommandHandler.html#selectAll" class="tsd-kind-method">selectAll</a> command.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
This method must not have any side-effects.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</p>
</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><p>This returns true if <a href="Diagram.html#allowSelect" class="tsd-kind-accessor">Diagram.allowSelect</a> is true.</p>
<div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#selectAll" class="tsd-kind-method">selectAll</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="canShowContextMenu" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>can<wbr/>Show<wbr/>Context<wbr/>Menu</span><a href="#canShowContextMenu" 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="canShowContextMenu.canShowContextMenu-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Show<wbr/>Context<wbr/>Menu</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">obj</span><span class="tsd-signature-symbol">?: </span><a href="Diagram.html" class="tsd-signature-type tsd-kind-class">Diagram</a><span class="tsd-signature-symbol"> | </span><a href="GraphObject.html" class="tsd-signature-type tsd-kind-class">GraphObject</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><a href="#canShowContextMenu.canShowContextMenu-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="CommandHandler.html#showContextMenu" class="tsd-kind-method">showContextMenu</a> command.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
This method must not have any side-effects.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">obj</span>: <a href="Diagram.html" class="tsd-signature-type tsd-kind-class">Diagram</a><span class="tsd-signature-symbol"> | </span><a href="GraphObject.html" class="tsd-signature-type tsd-kind-class">GraphObject</a></h5><div class="tsd-comment tsd-typography"><p>a GraphObject or Diagram with a contextMenu defined.
If none is given, this method will use the first selected object, or else the Diagram.</p>
</div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#showContextMenu" class="tsd-kind-method">showContextMenu</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="canStopCommand" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>can<wbr/>Stop<wbr/>Command</span><a href="#canStopCommand" 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="canStopCommand.canStopCommand-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Stop<wbr/>Command</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="#canStopCommand.canStopCommand-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 the user may stop the current tool.
This just returns true.</p>
<p>This method may be overridden, but probably should not be overridden.
This method must not have any side-effects.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</p>
</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><p>true.</p>
<div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#stopCommand" class="tsd-kind-method">stopCommand</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="canUndo" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><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 controls whether or not the user can invoke the <a href="CommandHandler.html#undo" class="tsd-kind-method">undo</a> command.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
This method must not have any side-effects.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">Diagram.isReadOnly</a>,
if <a href="Diagram.html#allowUndo" class="tsd-kind-accessor">Diagram.allowUndo</a> is true, and
if the <a href="UndoManager.html#canUndo" class="tsd-kind-method">UndoManager.canUndo</a> predicate returns true.</p>
<div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#undo" class="tsd-kind-method">undo</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="canUngroupSelection" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>can<wbr/>Ungroup<wbr/>Selection</span><a href="#canUngroupSelection" 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="canUngroupSelection.canUngroupSelection-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Ungroup<wbr/>Selection</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">group</span><span class="tsd-signature-symbol">?: </span><a href="Group.html" class="tsd-signature-type tsd-kind-class">Group</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><a href="#canUngroupSelection.canUngroupSelection-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="CommandHandler.html#ungroupSelection" class="tsd-kind-method">ungroupSelection</a> command.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
This method must not have any side-effects.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">group</span>: <a href="Group.html" class="tsd-signature-type tsd-kind-class">Group</a></h5><div class="tsd-comment tsd-typography"><p>if supplied, ignore the selection and consider ungrouping this particular Group.</p>
</div></li></ul></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">Diagram.isReadOnly</a>,
if <a href="Diagram.html#allowDelete" class="tsd-kind-accessor">Diagram.allowDelete</a> is true,
if <a href="Diagram.html#allowUngroup" class="tsd-kind-accessor">Diagram.allowUngroup</a> is true,
if <a href="Diagram.html#model" class="tsd-kind-accessor">Diagram.model</a> is a <a href="GraphLinksModel.html" class="tsd-kind-class">GraphLinksModel</a>, and
if there are any selected <a href="Group.html" class="tsd-kind-class">Group</a>s that are <a href="Group.html#ungroupable" class="tsd-kind-accessor">Group.ungroupable</a>.</p>
<div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#ungroupSelection" class="tsd-kind-method">ungroupSelection</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="canZoomToFit" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>can<wbr/>Zoom<wbr/>To<wbr/>Fit</span><a href="#canZoomToFit" 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="canZoomToFit.canZoomToFit-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">can<wbr/>Zoom<wbr/>To<wbr/>Fit</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">rect</span><span class="tsd-signature-symbol">?: </span><a href="Rect.html" class="tsd-signature-type tsd-kind-class">Rect</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span><a href="#canZoomToFit.canZoomToFit-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="CommandHandler.html#zoomToFit" class="tsd-kind-method">zoomToFit</a> command.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
This method must not have any side-effects.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">rect</span>: <a href="Rect.html" class="tsd-signature-type tsd-kind-class">Rect</a></h5><div class="tsd-comment tsd-typography"><p>an optional Rect in document bounds that is the intended new viewport bounds.</p>
</div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><p>This returns true if <a href="Diagram.html#allowZoom" class="tsd-kind-accessor">Diagram.allowZoom</a> is true.</p>
<div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#zoomToFit" class="tsd-kind-method">zoomToFit</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="collapseSubGraph" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>collapse<wbr/>Sub<wbr/>Graph</span><a href="#collapseSubGraph" 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="collapseSubGraph.collapseSubGraph-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">collapse<wbr/>Sub<wbr/>Graph</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">group</span><span class="tsd-signature-symbol">?: </span><a href="Group.html" class="tsd-signature-type tsd-kind-class">Group</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#collapseSubGraph.collapseSubGraph-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 collapses all expanded selected <a href="Group.html" class="tsd-kind-class">Group</a>s.
This operation is performed within a "Collapse SubGraph" transaction.
Just before the end of the transaction this raises the "SubGraphCollapsed" <a href="DiagramEvent.html" class="tsd-kind-class">DiagramEvent</a>,
with a collection of collapsed <a href="Group.html" class="tsd-kind-class">Group</a>s as the subject.
This currently has no default keyboard shortcut.</p>
<p>This calls <a href="Group.html#collapseSubGraph" class="tsd-kind-method">Group.collapseSubGraph</a> to perform the collapse, which will set <a href="Group.html#isSubGraphExpanded" class="tsd-kind-accessor">Group.isSubGraphExpanded</a> to false.
You may want to save the collapsed/expanded state to the model by using a TwoWay <a href="Binding.html" class="tsd-kind-class">Binding</a> on the "isSubGraphExpanded" property of your Groups,
and perhaps also on the <a href="Group.html#wasSubGraphExpanded" class="tsd-kind-accessor">Group.wasSubGraphExpanded</a> property.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">group</span>: <a href="Group.html" class="tsd-signature-type tsd-kind-class">Group</a></h5><div class="tsd-comment tsd-typography"><p>if supplied, ignore the selection and collapse this particular Group.</p>
</div></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">see</code><p><a href="CommandHandler.html#canCollapseSubGraph" class="tsd-kind-method">canCollapseSubGraph</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="collapseTree" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>collapse<wbr/>Tree</span><a href="#collapseTree" 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="collapseTree.collapseTree-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">collapse<wbr/>Tree</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">node</span><span class="tsd-signature-symbol">?: </span><a href="Node.html" class="tsd-signature-type tsd-kind-class">Node</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#collapseTree.collapseTree-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 collapses all expanded selected <a href="Node.html" class="tsd-kind-class">Node</a>s.
This operation is performed within a "Collapse Tree" transaction.
Just before the end of the transaction this raises the "TreeCollapsed" <a href="DiagramEvent.html" class="tsd-kind-class">DiagramEvent</a>,
with a collection of collapsed <a href="Node.html" class="tsd-kind-class">Node</a>s as the subject.
This currently has no default keyboard shortcut.</p>
<p>This calls <a href="Node.html#collapseTree" class="tsd-kind-method">Node.collapseTree</a> to perform the collapse, which will set <a href="Node.html#isTreeExpanded" class="tsd-kind-accessor">Node.isTreeExpanded</a> to false.
You may want to save the collapsed/expanded state to the model by using a TwoWay <a href="Binding.html" class="tsd-kind-class">Binding</a> on the "isTreeExpanded" property of your Nodes,
and perhaps also on the <a href="Node.html#wasTreeExpanded" class="tsd-kind-accessor">Node.wasTreeExpanded</a> property.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">node</span>: <a href="Node.html" class="tsd-signature-type tsd-kind-class">Node</a></h5><div class="tsd-comment tsd-typography"><p>if supplied, ignore the selection and collapse this particular Node subtree.</p>
</div></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">see</code><p><a href="CommandHandler.html#canCollapseTree" class="tsd-kind-method">canCollapseTree</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="computeEffectiveCollection" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>compute<wbr/>Effective<wbr/>Collection</span><a href="#computeEffectiveCollection" 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="computeEffectiveCollection.computeEffectiveCollection-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">compute<wbr/>Effective<wbr/>Collection</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">parts</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-kind-parameter">options</span><span class="tsd-signature-symbol">?: </span><a href="DraggingOptions.html" class="tsd-signature-type tsd-kind-class">DraggingOptions</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="Map.html" class="tsd-signature-type tsd-kind-class">Map</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="DraggingInfo.html" class="tsd-signature-type tsd-kind-class">DraggingInfo</a><span class="tsd-signature-symbol">></span><a href="#computeEffectiveCollection.computeEffectiveCollection-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>Find the actual collection of nodes and links to be moved or copied,
given an initial collection.
This includes links that connected at both ends to nodes being moved or copied,
members of <a href="Group.html" class="tsd-kind-class">Group</a>s, and if <a href="DraggingTool.html#dragsTree" class="tsd-kind-accessor">DraggingTool.dragsTree</a> is true,
this includes nodes and links that are "tree" descendants from selected nodes.</p>
<p>Note that this does not return a simple collection of <a href="Part.html" class="tsd-kind-class">Part</a>s,
but a <a href="Map.html" class="tsd-kind-class">go.Map</a> associating a chosen <a href="Part.html" class="tsd-kind-class">Part</a>
with an Object holding its original location Points as the value of the "point" property.</p>
<p>This method may be overridden.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">parts</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 <a href="Set.html" class="tsd-kind-class">go.Set</a> or <a href="List.html" class="tsd-kind-class">List</a> of <a href="Part.html" class="tsd-kind-class">Part</a>s.</p>
</div></li><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">options</span>: <a href="DraggingOptions.html" class="tsd-signature-type tsd-kind-class">DraggingOptions</a></h5><div class="tsd-comment tsd-typography"><p>Potential options for the collection computation. If not specified, this uses the DraggingTool's drag options.</p>
</div></li></ul></div><h4 class="tsd-returns-title">Returns <a href="Map.html" class="tsd-signature-type tsd-kind-class">Map</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="DraggingInfo.html" class="tsd-signature-type tsd-kind-class">DraggingInfo</a><span class="tsd-signature-symbol">></span></h4><p>a Map mapping <a href="Part.html" class="tsd-kind-class">Part</a>s to DraggingInfo Objects
that have a "point" property remembering the original location of that Part.</p>
<div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">since</code><p>2.0</p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="copySelection" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>copy<wbr/>Selection</span><a href="#copySelection" 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="copySelection.copySelection-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">copy<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">void</span><a href="#copySelection.copySelection-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 copies the currently selected parts, <a href="Diagram.html#selection" class="tsd-kind-accessor">Diagram.selection</a>, from the <a href="Diagram.html" class="tsd-kind-class">Diagram</a> into the clipboard.
This is normally invoked by the <code>Ctrl-C</code> keyboard shortcut.</p>
<p>This makes a copy of the current selection by calling <a href="CommandHandler.html#copyToClipboard" class="tsd-kind-method">copyToClipboard</a>.
This also raises the "ClipboardChanged" diagram event.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</p>
</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">see</code><p><a href="CommandHandler.html#canCopySelection" class="tsd-kind-method">canCopySelection</a></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-flagVirtual">Virtual</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><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>Make a copy of the given collection of <a href="Part.html" class="tsd-kind-class">Part</a>s
and stores it in a static variable acting as the clipboard.</p>
<p>The clipboard is initially null.
It can hold a collection of copied <a href="Part.html" class="tsd-kind-class">Part</a>s.
It also remembers the <a href="Model.html#dataFormat" class="tsd-kind-accessor">Model.dataFormat</a> of the diagram
from which the parts were copied.</p>
<p>This calls <a href="Diagram.html#copyParts" class="tsd-kind-method">Diagram.copyParts</a> in order to make a copy of the Parts for the clipboard.
The values of <a href="CommandHandler.html#copiesParentKey" class="tsd-kind-accessor">copiesParentKey</a> and <a href="CommandHandler.html#copiesGroupKey" class="tsd-kind-accessor">copiesGroupKey</a> affect whether
a copied node data remembers its tree parent node (if in a <a href="TreeModel.html" class="tsd-kind-class">TreeModel</a>) or
its containing group (if in a <a href="GraphLinksModel.html" class="tsd-kind-class">GraphLinksModel</a>).</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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><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">Part</a>s.
If the value is null, the clipboard is cleared of all data.</p>
</div></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">see</code><p><a href="CommandHandler.html#pasteFromClipboard" class="tsd-kind-method">pasteFromClipboard</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="cutSelection" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>cut<wbr/>Selection</span><a href="#cutSelection" 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="cutSelection.cutSelection-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">cut<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">void</span><a href="#cutSelection.cutSelection-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 executes a <a href="CommandHandler.html#copySelection" class="tsd-kind-method">copySelection</a> followed by a <a href="CommandHandler.html#deleteSelection" class="tsd-kind-method">deleteSelection</a>.
This is normally invoked by the <code>Ctrl-X</code> keyboard shortcut.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</p>
</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">see</code><p><a href="CommandHandler.html#canCutSelection" class="tsd-kind-method">canCutSelection</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="decreaseZoom" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>decrease<wbr/>Zoom</span><a href="#decreaseZoom" 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="decreaseZoom.decreaseZoom-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">decrease<wbr/>Zoom</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">factor</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="#decreaseZoom.decreaseZoom-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 decreases the <a href="Diagram.html#scale" class="tsd-kind-accessor">Diagram.scale</a> by a given factor.
This is normally invoked by the <code>Ctrl--</code> and <code>Numpad--</code> keyboard shortcuts.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">factor</span>: <span class="tsd-signature-type">number</span></h5><div class="tsd-comment tsd-typography"><p>This defaults to 1/<a href="CommandHandler.html#zoomFactor" class="tsd-kind-accessor">zoomFactor</a>. The value should be less than one and greater than zero.</p>
</div></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">see</code><p><a href="CommandHandler.html#canDecreaseZoom" class="tsd-kind-method">canDecreaseZoom</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="deleteSelection" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>delete<wbr/>Selection</span><a href="#deleteSelection" 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="deleteSelection.deleteSelection-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">delete<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">void</span><a href="#deleteSelection.deleteSelection-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 deletes the currently selected parts from the diagram.
This is normally invoked by the <code>Del</code> keyboard shortcut.</p>
<p>This will first start a "Delete" transaction, then
raise the "SelectionDeleting" <a href="DiagramEvent.html" class="tsd-kind-class">DiagramEvent</a>,
call <a href="Diagram.html#removeParts" class="tsd-kind-method">Diagram.removeParts</a> on a perhaps extended collection of selected Parts,
raise the "SelectionDeleted" diagram event,
and finally commit the transaction.</p>
<p>Because this command changes the selection,
this method also raises the "ChangingSelection" and "ChangedSelection" diagram events.
Changes are performed within a transaction, but the selection events are raised outside the transaction.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</p>
</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">see</code><p><a href="CommandHandler.html#canDeleteSelection" class="tsd-kind-method">canDeleteSelection</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="describe" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>describe</span><a href="#describe" 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="describe.describe-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">describe</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">oldobj</span><span class="tsd-signature-symbol">: </span><a href="GraphObject.html" class="tsd-signature-type tsd-kind-class">GraphObject</a>, <span class="tsd-kind-parameter">newobj</span><span class="tsd-signature-symbol">: </span><a href="GraphObject.html" class="tsd-signature-type tsd-kind-class">GraphObject</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><a href="#describe.describe-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 produces the default description string for a GraphObject that is the new <a href="CommandHandler.html#focus" class="tsd-kind-accessor">focus</a>.</p>
<p>This will need to be replaced or overridden for internationalization purposes
if you have not specified an event handler for <a href="CommandHandler.html#focusChanged" class="tsd-kind-accessor">focusChanged</a>.
Internally this is only called when <a href="CommandHandler.html#focusChanged" class="tsd-kind-accessor">focusChanged</a> is null.</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">oldobj</span>: <a href="GraphObject.html" class="tsd-signature-type tsd-kind-class">GraphObject</a></h5><div class="tsd-comment tsd-typography"><p>the previous value for <a href="CommandHandler.html#focus" class="tsd-kind-accessor">focus</a>, might be null or the same value oas NEWOBJ</p>
</div></li><li><h5><span class="tsd-kind-parameter">newobj</span>: <a href="GraphObject.html" class="tsd-signature-type tsd-kind-class">GraphObject</a></h5><div class="tsd-comment tsd-typography"><p>the new value for <a href="CommandHandler.html#focus" class="tsd-kind-accessor">focus</a>, might be null or the same value as OLDOBJ</p>
</div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><p>a generic string describing the NEWOBJ, to be read by a screen reader</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="doKeyDown" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</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 is called by tools to handle keyboard commands.
For most commands, this calls the "can..." predicate; if that returns true it calls the command method.
If GoJS handles a key-down event as a keyboard command, the underlying event will not bubble.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</p>
<p>There is an example custom CommandHandler in the extensions directory: <a href="../../extensions/DrawCommandHandler.js">DrawCommandHandler.js</a>,
which implements additional behaviors for the arrow keys by overriding this method.
For additional discussion, please read the <a href="../../intro/commands.html">Introduction page on Commands</a>.</p>
<p>Starting in 3.0.7, this uses the value of <a href="InputEvent.html#commandKey" class="tsd-kind-accessor">InputEvent.commandKey</a>.</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="doKeyUp" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>do<wbr/>Key<wbr/>Up</span><a href="#doKeyUp" 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="doKeyUp.doKeyUp-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">do<wbr/>Key<wbr/>Up</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="#doKeyUp.doKeyUp-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 called by tools to handle keyboard commands.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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="downloadSvg" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>download<wbr/>Svg</span><a href="#downloadSvg" 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="downloadSvg.downloadSvg-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">download<wbr/>Svg</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">?: </span><a href="SvgRendererOptions.html" class="tsd-signature-type tsd-kind-interface">SvgRendererOptions</a><span class="tsd-signature-symbol"> & </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="#downloadSvg.downloadSvg-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 an SVG file that holds a rendering of this diagram.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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>: <a href="SvgRendererOptions.html" class="tsd-signature-type tsd-kind-interface">SvgRendererOptions</a><span class="tsd-signature-symbol"> & </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 Object that satisfies the <a href="SvgRendererOptions.html" class="tsd-kind-interface">SvgRendererOptions</a> interface and may also
have an optional "name" property for the name of the downloaded file;
if "name" is not supplied, the downloaded file name will be the <a href="Model.html#name" class="tsd-kind-accessor">Model.name</a> if it is not an empty string, with an "svg" file type.</p>
</div></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">see</code><p><a href="CommandHandler.html#canDownloadSvg" class="tsd-kind-method">canDownloadSvg</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="editTextBlock" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>edit<wbr/>Text<wbr/>Block</span><a href="#editTextBlock" 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="editTextBlock.editTextBlock-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">edit<wbr/>Text<wbr/>Block</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">textblock</span><span class="tsd-signature-symbol">?: </span><a href="TextBlock.html" class="tsd-signature-type tsd-kind-class">TextBlock</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#editTextBlock.editTextBlock-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 starts in-place editing of a <a href="TextBlock.html" class="tsd-kind-class">TextBlock</a> in the selected <a href="Part.html" class="tsd-kind-class">Part</a>.
This is normally invoked by the <code>F2</code> keyboard shortcut.</p>
<p>This starts the <a href="TextEditingTool.html" class="tsd-kind-class">TextEditingTool</a> to have the user enter or modify the text string and finally set the <a href="TextBlock.html#text" class="tsd-kind-accessor">TextBlock.text</a>.
You may want to save the new string to the model by using a TwoWay <a href="Binding.html" class="tsd-kind-class">Binding</a> on the "text" property of your TextBlock.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">textblock</span>: <a href="TextBlock.html" class="tsd-signature-type tsd-kind-class">TextBlock</a></h5><div class="tsd-comment tsd-typography"><p>the <a href="TextBlock.html" class="tsd-kind-class">TextBlock</a> to start editing.</p>
</div></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">see</code><p><a href="CommandHandler.html#canEditTextBlock" class="tsd-kind-method">canEditTextBlock</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="expandSubGraph" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>expand<wbr/>Sub<wbr/>Graph</span><a href="#expandSubGraph" 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="expandSubGraph.expandSubGraph-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">expand<wbr/>Sub<wbr/>Graph</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">group</span><span class="tsd-signature-symbol">?: </span><a href="Group.html" class="tsd-signature-type tsd-kind-class">Group</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#expandSubGraph.expandSubGraph-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 expands all collapsed selected <a href="Group.html" class="tsd-kind-class">Group</a>s.
This operation is performed within an "Expand SubGraph" transaction.
Just before the end of the transaction this raises the "SubGraphExpanded" <a href="DiagramEvent.html" class="tsd-kind-class">DiagramEvent</a>,
with a collection of expanded <a href="Group.html" class="tsd-kind-class">Group</a>s as the subject.
This currently has no default keyboard shortcut.</p>
<p>This calls <a href="Group.html#expandSubGraph" class="tsd-kind-method">Group.expandSubGraph</a> to perform the collapse, which will set <a href="Group.html#isSubGraphExpanded" class="tsd-kind-accessor">Group.isSubGraphExpanded</a> to true.
You may want to save the collapsed/expanded state to the model by using a TwoWay <a href="Binding.html" class="tsd-kind-class">Binding</a> on the "isSubGraphExpanded" property of your Groups,
and perhaps also on the <a href="Group.html#wasSubGraphExpanded" class="tsd-kind-accessor">Group.wasSubGraphExpanded</a> property.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">group</span>: <a href="Group.html" class="tsd-signature-type tsd-kind-class">Group</a></h5><div class="tsd-comment tsd-typography"><p>if supplied, ignore the selection and expand this particular Group.</p>
</div></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">see</code><p><a href="CommandHandler.html#canExpandSubGraph" class="tsd-kind-method">canExpandSubGraph</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="expandTree" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>expand<wbr/>Tree</span><a href="#expandTree" 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="expandTree.expandTree-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">expand<wbr/>Tree</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">node</span><span class="tsd-signature-symbol">?: </span><a href="Node.html" class="tsd-signature-type tsd-kind-class">Node</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#expandTree.expandTree-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 expands all collapsed selected <a href="Node.html" class="tsd-kind-class">Node</a>s.
This operation is performed within an "Expand Tree" transaction.
Just before the end of the transaction this raises the "TreeExpanded" <a href="DiagramEvent.html" class="tsd-kind-class">DiagramEvent</a>,
with a collection of expanded <a href="Node.html" class="tsd-kind-class">Node</a>s as the subject.
This currently has no default keyboard shortcut.</p>
<p>This calls <a href="Node.html#expandTree" class="tsd-kind-method">Node.expandTree</a> to perform the expand, which will set <a href="Node.html#isTreeExpanded" class="tsd-kind-accessor">Node.isTreeExpanded</a> to true.
You may want to save the collapsed/expanded state to the model by using a TwoWay <a href="Binding.html" class="tsd-kind-class">Binding</a> on the "isTreeExpanded" property of your Nodes,
and perhaps also on the <a href="Node.html#wasTreeExpanded" class="tsd-kind-accessor">Node.wasTreeExpanded</a> property.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">node</span>: <a href="Node.html" class="tsd-signature-type tsd-kind-class">Node</a></h5><div class="tsd-comment tsd-typography"><p>if supplied, ignore the selection and collapse this particular Node subtree.</p>
</div></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">see</code><p><a href="CommandHandler.html#canExpandTree" class="tsd-kind-method">canExpandTree</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="groupSelection" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>group<wbr/>Selection</span><a href="#groupSelection" 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="groupSelection.groupSelection-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">group<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">void</span><a href="#groupSelection.groupSelection-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 adds a copy of <a href="CommandHandler.html#archetypeGroupData" class="tsd-kind-accessor">archetypeGroupData</a> to the diagram's model
to create a new <a href="Group.html" class="tsd-kind-class">Group</a> and then adds the selected <a href="Part.html" class="tsd-kind-class">Part</a>s to that new group.
This is normally invoked by the <code>Ctrl-G</code> keyboard shortcut.</p>
<p>This creates a new <a href="Group.html" class="tsd-kind-class">Group</a> by adding a copy of the <a href="CommandHandler.html#archetypeGroupData" class="tsd-kind-accessor">archetypeGroupData</a> to the model.
Each of the selected parts for which <a href="Part.html#canGroup" class="tsd-kind-method">Part.canGroup</a> is true
and for which <a href="CommandHandler.html#isValidMember" class="tsd-kind-method">isValidMember</a> is true
is made a member of that new group.
If all of the selected groupable parts were members of a pre-existing group,
the new group also becomes a member of that pre-existing group,
if <a href="CommandHandler.html#isValidMember" class="tsd-kind-method">isValidMember</a> is true for that existing group with the new group.
The new group becomes the only selected part.
This raises the "SelectionGrouped" diagram event.
This method also raises the "ChangingSelection" and "ChangedSelection" diagram events.
Changes are performed in a "Group" transaction, but the selection events are raised outside the transaction.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</p>
</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">see</code><p><a href="CommandHandler.html#canGroupSelection" class="tsd-kind-method">canGroupSelection</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="increaseZoom" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>increase<wbr/>Zoom</span><a href="#increaseZoom" 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="increaseZoom.increaseZoom-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">increase<wbr/>Zoom</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">factor</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="#increaseZoom.increaseZoom-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 increases the <a href="Diagram.html#scale" class="tsd-kind-accessor">Diagram.scale</a> by a given factor.
This is normally invoked by the <code>Ctrl-+</code> and <code>Numpad-+</code> keyboard shortcuts.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">factor</span>: <span class="tsd-signature-type">number</span></h5><div class="tsd-comment tsd-typography"><p>This defaults to <a href="CommandHandler.html#zoomFactor" class="tsd-kind-accessor">zoomFactor</a>. The value should be greater than one.</p>
</div></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">see</code><p><a href="CommandHandler.html#canIncreaseZoom" class="tsd-kind-method">canIncreaseZoom</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="isValidMember" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>is<wbr/>Valid<wbr/>Member</span><a href="#isValidMember" 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="isValidMember.isValidMember-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">is<wbr/>Valid<wbr/>Member</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">group</span><span class="tsd-signature-symbol">: </span><a href="Group.html" class="tsd-signature-type tsd-kind-class">Group</a>, <span class="tsd-kind-parameter">part</span><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-type">boolean</span><a href="#isValidMember.isValidMember-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 is called to determine whether a Node may be added as a member of a Group.
This always checks to make sure no group might become a member of itself, either directly or indirectly.
If the Group has a <a href="Group.html#memberValidation" class="tsd-kind-accessor">Group.memberValidation</a> predicate and if it returns false, this method returns false.
If this CommandHandler has a <a href="CommandHandler.html#memberValidation" class="tsd-kind-accessor">memberValidation</a> predicate and if it returns false, this method returns false.
Otherwise this will return true.</p>
<p class="box">
For a more general discussion of validation, see <a href="../../intro/validation.html">Introduction to Validation</a>.
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">group</span>: <a href="Group.html" class="tsd-signature-type tsd-kind-class">Group</a></h5><div class="tsd-comment tsd-typography"><p>this may be null if the node is being added as a top-level node.</p>
</div></li><li><h5><span class="tsd-kind-parameter">part</span>: <a href="Part.html" class="tsd-signature-type tsd-kind-class">Part</a></h5><div class="tsd-comment tsd-typography"><p>a Part, usually a Node, possibly another Group, but not a Link or an Adornment.</p>
</div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4><p>true if OK to add the node to the group.</p>
</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-flagVirtual">Virtual</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>If the clipboard holds a collection of <a href="Part.html" class="tsd-kind-class">Part</a>s,
and if the <a href="Model.html#dataFormat" class="tsd-kind-accessor">Model.dataFormat</a> matches that stored in the clipboard,
this makes a copy of the clipboard's parts and adds the copies to this <a href="Diagram.html" class="tsd-kind-class">Diagram</a>.</p>
<p>This calls <a href="Diagram.html#copyParts" class="tsd-kind-method">Diagram.copyParts</a> in order to make a copy of the Parts in the clipboard and add them to this diagram.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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 the newly pasted <a href="Part.html" class="tsd-kind-class">Part</a>s,
or an empty Set if there was no data in the clipboard.</p>
<div class="tsd-comment-tags tsd-typography"><div class="flex items-center"><code class="tsd-tag">see</code><p><a href="CommandHandler.html#copyToClipboard" class="tsd-kind-method">copyToClipboard</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="pasteSelection" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>paste<wbr/>Selection</span><a href="#pasteSelection" 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="pasteSelection.pasteSelection-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">paste<wbr/>Selection</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">pos</span><span class="tsd-signature-symbol">?: </span><a href="Point.html" class="tsd-signature-type tsd-kind-class">Point</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#pasteSelection.pasteSelection-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 copies the contents of the clipboard into this diagram and makes those new parts the new selection.
This is normally invoked by the <code>Ctrl-V</code> keyboard shortcut.</p>
<p>This calls <a href="CommandHandler.html#pasteFromClipboard" class="tsd-kind-method">pasteFromClipboard</a> to add copies of <a href="Part.html" class="tsd-kind-class">Part</a>s
into this diagram, and then selects all of the newly created parts.
This also raises the "ClipboardPasted" diagram event.
This method raises the "ChangingSelection" and "ChangedSelection" diagram events.
Changes are performed in a transaction, but the selection events are raised outside the transaction.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">pos</span>: <a href="Point.html" class="tsd-signature-type tsd-kind-class">Point</a></h5><div class="tsd-comment tsd-typography"><p>Point at which to center the newly pasted parts; if not present the parts are not moved.</p>
</div></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">see</code><p><a href="CommandHandler.html#canPasteSelection" class="tsd-kind-method">canPasteSelection</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="redo" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><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>This command calls <a href="UndoManager.html#redo" class="tsd-kind-method">UndoManager.redo</a>.
This is normally invoked by the <code>Ctrl-Y</code> keyboard shortcut.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</p>
</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">see</code><p><a href="CommandHandler.html#canRedo" class="tsd-kind-method">canRedo</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="resetZoom" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>reset<wbr/>Zoom</span><a href="#resetZoom" 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="resetZoom.resetZoom-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">reset<wbr/>Zoom</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">newscale</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="#resetZoom.resetZoom-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 sets the <a href="Diagram.html#scale" class="tsd-kind-accessor">Diagram.scale</a> to a new scale value, by default 1.
This is normally invoked by the <code>Ctrl-0</code> keyboard shortcut.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">newscale</span>: <span class="tsd-signature-type">number</span></h5><div class="tsd-comment tsd-typography"><p>This defaults to <a href="Diagram.html#defaultScale" class="tsd-kind-accessor">Diagram.defaultScale</a>, which is normally 1.0. The value should be greater than zero.</p>
</div></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">see</code><p><a href="CommandHandler.html#canResetZoom" class="tsd-kind-method">canResetZoom</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="scrollToPart" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>scroll<wbr/>To<wbr/>Part</span><a href="#scrollToPart" 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="scrollToPart.scrollToPart-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">scroll<wbr/>To<wbr/>Part</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">part</span><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-type">void</span><a href="#scrollToPart.scrollToPart-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 scrolls the diagram to make a highlighted or selected Part visible in the viewport.
Call this command repeatedly to cycle through the <a href="Diagram.html#highlighteds" class="tsd-kind-accessor">Diagram.highlighteds</a> collection,
if there are any Parts in that collection, or else in the <a href="Diagram.html#selection" class="tsd-kind-accessor">Diagram.selection</a> collection,
scrolling to each one in turn by calling <a href="Diagram.html#centerRect" class="tsd-kind-method">Diagram.centerRect</a>.</p>
<p>This method animates to the scrolled part, and <a href="Diagram.html#scrollToRect" class="tsd-kind-method">Diagram.scrollToRect</a> does not.</p>
<p>This is normally invoked by the <code>Space</code> keyboard shortcut.
If there is no argument and there is no highlighted or selected Part, this command does nothing.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">part</span>: <a href="Part.html" class="tsd-signature-type tsd-kind-class">Part</a></h5><div class="tsd-comment tsd-typography"><p>This defaults to the first highlighted Part of <a href="Diagram.html#highlighteds" class="tsd-kind-accessor">Diagram.highlighteds</a>,
or, if there are no highlighted Parts, the first selected Part.</p>
</div></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">see</code><ul>
<li><a href="CommandHandler.html#canScrollToPart" class="tsd-kind-method">canScrollToPart</a></li>
<li><a href="Diagram.html#scrollToRect" class="tsd-kind-method">Diagram.scrollToRect</a></li>
</ul>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="selectAll" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>select<wbr/>All</span><a href="#selectAll" 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="selectAll.selectAll-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">select<wbr/>All</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="#selectAll.selectAll-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 selects all of the selectable <a href="Part.html" class="tsd-kind-class">Part</a>s in the diagram by setting <a href="Part.html#isSelected" class="tsd-kind-accessor">Part.isSelected</a> to true on each one.
This is normally invoked by the <code>Ctrl-A</code> keyboard shortcut.</p>
<p>This method raises the "ChangingSelection" and "ChangedSelection" diagram events.
This ignores all parts in temporary layers.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</p>
</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">see</code><p><a href="CommandHandler.html#canSelectAll" class="tsd-kind-method">canSelectAll</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="showContextMenu" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>show<wbr/>Context<wbr/>Menu</span><a href="#showContextMenu" 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="showContextMenu.showContextMenu-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">show<wbr/>Context<wbr/>Menu</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">obj</span><span class="tsd-signature-symbol">?: </span><a href="Diagram.html" class="tsd-signature-type tsd-kind-class">Diagram</a><span class="tsd-signature-symbol"> | </span><a href="GraphObject.html" class="tsd-signature-type tsd-kind-class">GraphObject</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#showContextMenu.showContextMenu-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 opens the context menu for a selected Part or given GraphObject, or else for the whole Diagram.
This is normally invoked by the <code>Menu</code> keyboard shortcut.</p>
<p>The given GraphObject must have a <a href="GraphObject.html#contextMenu" class="tsd-kind-accessor">GraphObject.contextMenu</a>
defined in order to show anything.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">obj</span>: <a href="Diagram.html" class="tsd-signature-type tsd-kind-class">Diagram</a><span class="tsd-signature-symbol"> | </span><a href="GraphObject.html" class="tsd-signature-type tsd-kind-class">GraphObject</a></h5><div class="tsd-comment tsd-typography"><p>a GraphObject or Diagram with a contextMenu defined.
If none is given, this method will use the first selected object, or else the Diagram.
The method will simulate a right-button click at the middle of the GraphObject or,
if a Diagram, at the current mouse position if it is in the viewport.</p>
</div></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">see</code><p><a href="CommandHandler.html#canShowContextMenu" class="tsd-kind-method">canShowContextMenu</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="stopCommand" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>stop<wbr/>Command</span><a href="#stopCommand" 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="stopCommand.stopCommand-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">stop<wbr/>Command</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="#stopCommand.stopCommand-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 hides any visible tooltip, clears the selection, and cancels the operation of the current tool.
This is typically called when the user presses <code>Escape</code>.</p>
<p>If the current tool is a <a href="ToolManager.html" class="tsd-kind-class">ToolManager</a> and a tooltip is visible, this hides the tooltip and returns.
If the current tool is a <a href="ToolManager.html" class="tsd-kind-class">ToolManager</a> and no tooltip is visible, this clears the diagram's selection,
and then calls <a href="Tool.html#doCancel" class="tsd-kind-method">Tool.doCancel</a> on the current tool.</p>
</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">see</code><p><a href="CommandHandler.html#canStopCommand" class="tsd-kind-method">canStopCommand</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="undo" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><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>This command calls <a href="UndoManager.html#undo" class="tsd-kind-method">UndoManager.undo</a>.
This is normally invoked by the <code>Ctrl-Z</code> keyboard shortcut.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</p>
</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">see</code><p><a href="CommandHandler.html#canUndo" class="tsd-kind-method">canUndo</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="ungroupSelection" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>ungroup<wbr/>Selection</span><a href="#ungroupSelection" 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="ungroupSelection.ungroupSelection-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">ungroup<wbr/>Selection</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">group</span><span class="tsd-signature-symbol">?: </span><a href="Group.html" class="tsd-signature-type tsd-kind-class">Group</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#ungroupSelection.ungroupSelection-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 removes selected groups from the diagram without removing their members from the diagram.
This is normally invoked by the <code>Ctrl-Shift-G</code> keyboard shortcut.</p>
<p>For the given group, or if not supplied, each selected <a href="Group.html" class="tsd-kind-class">Group</a> that is <a href="Group.html#ungroupable" class="tsd-kind-accessor">Group.ungroupable</a>,
expand the subgraph and change all of its member parts to be members of the group that the selected group node is in.
(If the selected group is a top-level node, i.e. not a member of any group node, its members become top-level parts too.)
All of those selected groups are deleted.
All of the reparented member parts are selected.</p>
<p>This raises the "SelectionUngrouped" diagram event.
This method also raises the "ChangingSelection" and "ChangedSelection" diagram events.
Changes are performed in an "Ungroup" transaction, but the selection events are raised outside the transaction.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">group</span>: <a href="Group.html" class="tsd-signature-type tsd-kind-class">Group</a></h5><div class="tsd-comment tsd-typography"><p>if supplied, ignore the selection and consider ungrouping this particular Group.</p>
</div></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">see</code><p><a href="CommandHandler.html#canUngroupSelection" class="tsd-kind-method">canUngroupSelection</a></p>
</div></div></li></ul></section><section class="tsd-panel tsd-member"><a id="zoomToFit" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagVirtual">Virtual</code><span>zoom<wbr/>To<wbr/>Fit</span><a href="#zoomToFit" 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="zoomToFit.zoomToFit-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">zoom<wbr/>To<wbr/>Fit</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">rect</span><span class="tsd-signature-symbol">?: </span><a href="Rect.html" class="tsd-signature-type tsd-kind-class">Rect</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#zoomToFit.zoomToFit-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 changes the <a href="Diagram.html#scale" class="tsd-kind-accessor">Diagram.scale</a> so that the <a href="Diagram.html#documentBounds" class="tsd-kind-accessor">Diagram.documentBounds</a> fits within the viewport.
If <a href="CommandHandler.html#isZoomToFitRestoreEnabled" class="tsd-kind-accessor">isZoomToFitRestoreEnabled</a> is true and this command had been called before without any other zooming since then,
the original Diagram scale and position are restored.
This is normally invoked by the <code>Shift-Z</code> keyboard shortcut.</p>
<p>If you provide a Rect argument, it will change the Diagram scale and position to match, calling <a href="Diagram.html#zoomToRect" class="tsd-kind-method">Diagram.zoomToRect</a>.
Otherwise it calls <a href="Diagram.html#zoomToFit" class="tsd-kind-method">Diagram.zoomToFit</a> in order to fit the document bounds in the viewport.</p>
<p>This animates zooming, unless animation has been disabled.
<a href="Diagram.html#zoomToFit" class="tsd-kind-method">Diagram.zoomToFit</a> and <a href="Diagram.html#zoomToRect" class="tsd-kind-method">Diagram.zoomToRect</a> do not animate.</p>
<p>This method may be overridden, but you should consider calling this base method in order to get all of its functionality.
Please read the Introduction page on <a href="../../intro/extensions.html">Extensions</a> for how to override methods and how to call this base method.</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">rect</span>: <a href="Rect.html" class="tsd-signature-type tsd-kind-class">Rect</a></h5><div class="tsd-comment tsd-typography"><p>a Rect in document bounds that is the intended new viewport bounds.
If this is provided, the command will call <a href="Diagram.html#zoomToRect" class="tsd-kind-method">Diagram.zoomToRect</a>, otherwise it will call <a href="Diagram.html#zoomToFit" class="tsd-kind-method">Diagram.zoomToFit</a>.</p>
</div></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">see</code><ul>
<li><a href="CommandHandler.html#canZoomToFit" class="tsd-kind-method">canZoomToFit</a></li>
<li><a href="CommandHandler.html#isZoomToFitRestoreEnabled" class="tsd-kind-accessor">isZoomToFitRestoreEnabled</a></li>
<li><a href="Diagram.html#zoomToFit" class="tsd-kind-method">Diagram.zoomToFit</a></li>
<li><a href="Diagram.html#zoomToRect" class="tsd-kind-method">Diagram.zoomToRect</a></li>
</ul>
</div></div></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="#archetypeGroupData"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>archetype<wbr/>Group<wbr/>Data</span></a></li><li><a href="#copiesConnectedLinks"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>copies<wbr/>Connected<wbr/>Links</span></a></li><li><a href="#copiesGroupKey"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>copies<wbr/>Group<wbr/>Key</span></a></li><li><a href="#copiesParentKey"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>copies<wbr/>Parent<wbr/>Key</span></a></li><li><a href="#copiesTree"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>copies<wbr/>Tree</span></a></li><li><a href="#deletesConnectedLinks"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>deletes<wbr/>Connected<wbr/>Links</span></a></li><li><a href="#deletesTree"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>deletes<wbr/>Tree</span></a></li><li><a href="#diagram"><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>diagram</span></a></li><li><a href="#focus"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>focus</span></a></li><li><a href="#focusBox"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>focus<wbr/>Box</span></a></li><li><a href="#focusChanged"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>focus<wbr/>Changed</span></a></li><li><a href="#isFocusEnabled"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>is<wbr/>Focus<wbr/>Enabled</span></a></li><li><a href="#isVirtualPointerDown"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>is<wbr/>Virtual<wbr/>Pointer<wbr/>Down</span></a></li><li><a href="#isVirtualPointerEnabled"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>is<wbr/>Virtual<wbr/>Pointer<wbr/>Enabled</span></a></li><li><a href="#isZoomToFitRestoreEnabled"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>is<wbr/>Zoom<wbr/>To<wbr/>Fit<wbr/>Restore<wbr/>Enabled</span></a></li><li><a href="#liveElementId"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>live<wbr/>Element<wbr/>Id</span></a></li><li><a href="#memberValidation"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>member<wbr/>Validation</span></a></li><li><a href="#storageLocation"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>storage<wbr/>Location</span></a></li><li><a href="#virtualPointerBox"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>virtual<wbr/>Pointer<wbr/>Box</span></a></li><li><a href="#virtualPointerChanged"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>virtual<wbr/>Pointer<wbr/>Changed</span></a></li><li><a href="#virtualPointerLocation"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>virtual<wbr/>Pointer<wbr/>Location</span></a></li><li><a href="#zoomFactor"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>zoom<wbr/>Factor</span></a></li><li><a href="#addTopLevelParts"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>add<wbr/>Top<wbr/>Level<wbr/>Parts</span></a></li><li><a href="#canCollapseSubGraph"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Collapse<wbr/>Sub<wbr/>Graph</span></a></li><li><a href="#canCollapseTree"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Collapse<wbr/>Tree</span></a></li><li><a href="#canCopySelection"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Copy<wbr/>Selection</span></a></li><li><a href="#canCutSelection"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Cut<wbr/>Selection</span></a></li><li><a href="#canDecreaseZoom"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Decrease<wbr/>Zoom</span></a></li><li><a href="#canDeleteSelection"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Delete<wbr/>Selection</span></a></li><li><a href="#canDownloadSvg"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Download<wbr/>Svg</span></a></li><li><a href="#canEditTextBlock"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Edit<wbr/>Text<wbr/>Block</span></a></li><li><a href="#canExpandSubGraph"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Expand<wbr/>Sub<wbr/>Graph</span></a></li><li><a href="#canExpandTree"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Expand<wbr/>Tree</span></a></li><li><a href="#canGroupSelection"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Group<wbr/>Selection</span></a></li><li><a href="#canIncreaseZoom"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Increase<wbr/>Zoom</span></a></li><li><a href="#canPasteSelection"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Paste<wbr/>Selection</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="#canResetZoom"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Reset<wbr/>Zoom</span></a></li><li><a href="#canScrollToPart"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Scroll<wbr/>To<wbr/>Part</span></a></li><li><a href="#canSelectAll"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Select<wbr/>All</span></a></li><li><a href="#canShowContextMenu"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Show<wbr/>Context<wbr/>Menu</span></a></li><li><a href="#canStopCommand"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Stop<wbr/>Command</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="#canUngroupSelection"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Ungroup<wbr/>Selection</span></a></li><li><a href="#canZoomToFit"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>can<wbr/>Zoom<wbr/>To<wbr/>Fit</span></a></li><li><a href="#collapseSubGraph"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>collapse<wbr/>Sub<wbr/>Graph</span></a></li><li><a href="#collapseTree"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>collapse<wbr/>Tree</span></a></li><li><a href="#computeEffectiveCollection"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>compute<wbr/>Effective<wbr/>Collection</span></a></li><li><a href="#copySelection"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>copy<wbr/>Selection</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="#cutSelection"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>cut<wbr/>Selection</span></a></li><li><a href="#decreaseZoom"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>decrease<wbr/>Zoom</span></a></li><li><a href="#deleteSelection"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>delete<wbr/>Selection</span></a></li><li><a href="#describe"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>describe</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="#doKeyUp"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>do<wbr/>Key<wbr/>Up</span></a></li><li><a href="#downloadSvg"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>download<wbr/>Svg</span></a></li><li><a href="#editTextBlock"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>edit<wbr/>Text<wbr/>Block</span></a></li><li><a href="#expandSubGraph"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>expand<wbr/>Sub<wbr/>Graph</span></a></li><li><a href="#expandTree"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>expand<wbr/>Tree</span></a></li><li><a href="#groupSelection"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>group<wbr/>Selection</span></a></li><li><a href="#increaseZoom"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>increase<wbr/>Zoom</span></a></li><li><a href="#isValidMember"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>is<wbr/>Valid<wbr/>Member</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="#pasteSelection"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>paste<wbr/>Selection</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="#resetZoom"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>reset<wbr/>Zoom</span></a></li><li><a href="#scrollToPart"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>scroll<wbr/>To<wbr/>Part</span></a></li><li><a href="#selectAll"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>select<wbr/>All</span></a></li><li><a href="#showContextMenu"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>show<wbr/>Context<wbr/>Menu</span></a></li><li><a href="#stopCommand"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>stop<wbr/>Command</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="#ungroupSelection"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>ungroup<wbr/>Selection</span></a></li><li><a href="#zoomToFit"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>zoom<wbr/>To<wbr/>Fit</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>