You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2772 lines
170 KiB

<!doctype html>
<html class="default no-js">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Part | GoJS API</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="../../assets/css/bootstrap.min.css">
<link rel="stylesheet" href="../assets/css/main.css">
</head>
<body>
<header>
<!-- non-fixed navbar -->
<nav id="non-fixed-nav" class="navbar navbar-inverse navbar-top">
<div class="container-fluid">
<div class="navbar-header">
<div class="navheader-container">
<div class="navheader-collapse" data-toggle="collapse" data-target="#navbar">
<a id="toplogo" class="navbar-brand" href="../../index.html">GoJS</a>
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
</div>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="../../index.html">Home</a></li>
<li><a href="../../learn/index.html">Learn</a></li>
<li><a href="../../samples/index.html">Samples</a></li>
<li><a href="../../intro/index.html">Intro</a></li>
<li><a href="../../api/index.html" target="api">API</a></li>
<li><a href="https://www.nwoods.com/components/evalform.htm">Register</a></li>
<li><a href="../../download.html">Download</a></li>
<li><a href="https://forum.nwoods.com/c/gojs">Forum</a></li>
<li><a href="https://www.nwoods.com/contact.html" onclick="ga('send','event','Outbound Link','click','contact');">Contact</a></li>
<li class="buy"><a href="https://www.nwoods.com/sales/index.html" onclick="ga('send','event','Outbound Link','click','buy');">Buy</a></li>
<li class="activate"><a href="https://www.nwoods.com/app/activate.aspx?sku=gojs">Activate</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</nav>
<div class="tsd-page-header">
<div class="tsd-page-toolbar">
<div class="container-fluid plr15">
<div class="table-wrap">
<div class="table-cell" id="tsd-search" data-index="../assets/js/search.js" data-base="..">
<div class="field">
<label for="tsd-search-field" class="tsd-widget search no-caption">Search</label>
<input id="tsd-search-field" type="text" />
</div>
<ul class="results">
<li class="state loading">Preparing search index...</li>
<li class="state failure">The search index is not available</li>
</ul>
<a href="../index.html" class="title">GoJS API</a>
</div>
<div class="table-cell" id="tsd-widgets">
<div id="tsd-filter">
<a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a>
<div class="tsd-filter-group">
<div class="tsd-select" id="tsd-filter-visibility">
<span class="tsd-select-label">All</span>
<ul class="tsd-select-list">
<li data-value="public">Public</li>
<li data-value="protected">Public/Protected</li>
<li data-value="private" class="selected">All</li>
</ul>
</div>
</div>
</div>
<a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a>
</div>
</div>
</div>
</div>
<div class="tsd-page-title">
<div class="container-fluid plr15">
<div class="top-copyright">
<!--<b>GoJS</b>&reg; Diagramming Components<br/>version &lt;br/&gt;version 2.0.17 for TypeScript/HTML<br/>by <a href="https://www.nwoods.com/">Northwoods Software&reg;</a>-->
<b>GoJS</b>&reg; Diagramming Components<br/>version 2.0.17<br/>by <a href="https://www.nwoods.com/">Northwoods Software&reg;</a>
</div>
<div>
<h1>Class Part</h1>
</div>
</div>
</div>
</div>
</header>
<div class="container-fluid container-main plr15">
<div class="row">
<div class="col-8 col-content">
<section class="tsd-panel tsd-hierarchy">
<h3>Hierarchy</h3>
<ul class="tsd-hierarchy">
<li>
<a href="GraphObject.html" class="tsd-signature-type">GraphObject</a>
<ul class="tsd-hierarchy">
<li>
<a href="Panel.html" class="tsd-signature-type">Panel</a>
<ul class="tsd-hierarchy">
<li>
<span class="target">Part</span>
<ul class="tsd-hierarchy">
<li>
<a href="Adornment.html" class="tsd-signature-type">Adornment</a>
</li>
<li>
<a href="Node.html" class="tsd-signature-type">Node</a>
</li>
<li>
<a href="Link.html" class="tsd-signature-type">Link</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</section>
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography">
<p>This is the base class for all user-manipulated top-level objects.
Because it inherits from <a href="Panel.html">Panel</a>, it is automatically a visual container
of other <a href="GraphObject.html">GraphObject</a>s.
Because it thus also inherits from <a href="GraphObject.html">GraphObject</a>, it also has properties such as
<a href="GraphObject.html#actualBounds">GraphObject.actualBounds</a>, <a href="GraphObject.html#contextMenu">GraphObject.contextMenu</a>, and <a href="GraphObject.html#visible">GraphObject.visible</a>.</p>
<p>If you just want an object that users can select and manipulate,
you can create an instance of this class.</p>
<p>If you want an object that also supports being connected by links to other objects,
use the <a href="Node.html">Node</a> class, which inherits from Part.
Create those connections by using instances of the <a href="Link.html">Link</a> class.</p>
<p>If you want a node that logically contains a subgraph of nodes and links,
use the <a href="Group.html">Group</a> class, which inherits from <a href="Node.html">Node</a>.</p>
<p>If you want an object that decorates another Part, without having to modify that Part,
use the <a href="Adornment.html">Adornment</a> class.
Adornments do not support linking or grouping or being selected.</p>
<p>You can construct a Part, add <a href="GraphObject.html">GraphObject</a>s to it programmatically,
and then add the part to a diagram by calling <a href="Diagram.html#add">Diagram.add</a>.
However it is commonplace to add data to a model by setting its <a href="Model.html#nodeDataArray">Model.nodeDataArray</a> or calling <a href="Model.html#addNodeData">Model.addNodeData</a>,
or for <a href="Link.html">Link</a>s, setting the <a href="GraphLinksModel.html#linkDataArray">GraphLinksModel.linkDataArray</a> or calling <a href="GraphLinksModel.html#addLinkData">GraphLinksModel.addLinkData</a>.
Such actions will cause a diagram that is displaying the model to copy a template,
which is a Part that may have data <a href="Binding.html">Binding</a>s, and add the new part to the diagram.
The <a href="Panel.html#data">Panel.data</a> property will refer to that data object in the model.</p>
<p>Some examples of adding Parts to a Diagram:</p>
<pre><code class="hljs js"><span class="hljs-comment">// A simple Part template</span>
myDiagram.nodeTemplate =
$(go.Part, <span class="hljs-string">"Horizontal"</span>,
$(go.Shape, <span class="hljs-string">"Circle"</span>, { <span class="hljs-attr">width</span>: <span class="hljs-number">20</span>, <span class="hljs-attr">height</span>: <span class="hljs-number">20</span> }),
$(go.TextBlock, <span class="hljs-string">"Hello World"</span>)
);
<span class="hljs-comment">// Node templates can be either Nodes, or simple Parts</span>
<span class="hljs-comment">// (But not Groups, Adornments, or Links)</span>
<span class="hljs-comment">// Adds copies of the nodeTemplate bound to the specified node data:</span>
myDiagram.model.nodeDataArray =
[
{ <span class="hljs-attr">key</span>: <span class="hljs-string">"Alpha"</span> },
{ <span class="hljs-attr">key</span>: <span class="hljs-string">"Beta"</span> }
];
<span class="hljs-comment">// Adds one copy of the nodeTemplate bound to the given node data:</span>
myDiagram.model.addNodeData( { <span class="hljs-attr">key</span>: <span class="hljs-string">"Gamma"</span> } );</code></pre>
<p class="boxread">
See the <a href="../../intro/usingModels.html">Introduction on using Models</a>
for examples and more information.
<h3>Layers and Z-ordering</h3>
<p>Parts added to a Diagram exist in one of the Diagram&#39;s <a href="Layer.html">Layer</a>s.
You can specify which layer the part should be in by setting <a href="Part.html#layerName">layerName</a>.
Parts cannot be nested in the visual tree -- they cannot be added to other Parts of Panels.</p>
<p>Parts can be individually z-ordered within a layer by setting <a href="Part.html#zOrder">zOrder</a>.
Parts within the same layer that have a higher zOrder number will be drawn above parts with a lower number.</p>
<h3>Size and Position</h3>
<p>The size and position of a part are given by its <a href="GraphObject.html#actualBounds">GraphObject.actualBounds</a>.
The size is determined by the <a href="GraphObject.html">GraphObject</a>s that are elements inside this part.
You can change the position by setting <a href="GraphObject.html#position">GraphObject.position</a> or <a href="Part.html#location">Part.location</a>.</p>
<p>The &quot;location&quot; of a part is commonly the same as its &quot;position&quot;.
The &quot;position&quot; is always the point that is at the top-left corner of the area occupied by the part.
But the &quot;location&quot; may be different from the &quot;position&quot; if you want to think of the part as being &quot;at&quot; a different spot in the part.
For example, you might want the &quot;location&quot; to be at the center of a <a href="Picture.html">Picture</a> that has a <a href="TextBlock.html">TextBlock</a> title of arbitrary size.
In this case you would set the <a href="Part.html#locationSpot">locationSpot</a> to be <a href="Spot.html#static-Center">Spot.Center</a> and the <a href="Part.html#locationObjectName">locationObjectName</a>
to be the name of the Picture element in your Part.</p>
<p>A part may be selected or de-selected by setting its <a href="Part.html#isSelected">isSelected</a> property.
This may also happen due to a call to <a href="Diagram.html#select">Diagram.select</a> or other operations that change the selection.
The user may change this property as part of the operation of the <a href="ClickSelectingTool.html">ClickSelectingTool</a>,
due to the user&#39;s mouse click, if the part is <a href="Part.html#selectable">selectable</a>.</p>
<h3>Ability Properties (Permissions)</h3>
<p>There are many properties named &quot;...able&quot;, that control what operations the user may perform on this part.
These properties correspond to the similarly named properties on <a href="Diagram.html">Diagram</a> and <a href="Layer.html">Layer</a> that govern the
behavior for all parts in all layers or for all parts in the given layer.
For example, the <a href="Part.html#copyable">Part.copyable</a> property corresponds to the properties <a href="Diagram.html#allowCopy">Diagram.allowCopy</a> and <a href="Layer.html#allowCopy">Layer.allowCopy</a>.</p>
<p>For each of these &quot;ability&quot; properties there is a corresponding &quot;can...&quot; predicate.
For example, the <a href="Part.html#canCopy">Part.canCopy</a> predicate is false if any of the three previously named properties is false.
Commands and tools will normally call these predicates rather than just looking at Part properties.</p>
<p class="boxread">
For more discussion about permissions, please read: <a href="../../intro/permissions.html">Permissions</a>.
<p>As previously mentioned, each <a href="Diagram.html">Diagram</a> supports the notion of selected parts.
One way of displaying that a part is selected is by modifying the part.
You can set the <a href="Part.html#selectionChanged">selectionChanged</a> property to be a function that is called when the value of <a href="Part.html#isSelected">isSelected</a> has changed;
it is passed the Part as the first argument.
The function can modify the color of one or more <a href="GraphObject.html">GraphObject</a>s in the visual tree of that Part.
Or perhaps it could toggle the <a href="GraphObject.html#visible">GraphObject.visible</a> property of an object that is normally hidden when the part is not selected.</p>
<p>The Part class also supports showing separate visual objects for a part when it gets selected.
These visuals are typically used to show that the part is selected (&quot;selection handles&quot;)
or are used to allow the user to manipulate or modify the part with a tool (&quot;tool handles&quot;).
These handles are instances of <a href="Adornment.html">Adornment</a>s.
The <a href="Part.html#updateAdornments">updateAdornments</a> method is responsible for showing or hiding adornments,
normally depending on whether the part is selected.</p>
<p>When the <a href="Part.html#selectionAdorned">selectionAdorned</a> property is true, a selected part automatically gets an <a href="Adornment.html">Adornment</a> created for it.
By default the selection adornment is just a simple blue box around the Part, and a blue shape following the route of a selected Link.
However you can set the <a href="Part.html#selectionAdornmentTemplate">selectionAdornmentTemplate</a> to an arbitrarily complex Adornment.
This way it can show more information or buttons for executing various commands when the user selects a Part.</p>
<p>Tool handles are shown for those mode-less mouse-down tools that need it.
The process of updating adornments for a part will call <a href="Tool.html#updateAdornments">Tool.updateAdornments</a> on each tool in <a href="ToolManager.html#mouseDownTools">ToolManager.mouseDownTools</a>.
Most tools might not need special tool handles.
But, for example, <a href="ResizingTool.html">ResizingTool</a> naturally will want to create an adornment with eight resize handles
positioned at the corners and at the middles of the sides of the selected node&#39;s visual element,
if the node has its <a href="Part.html#canResize">canResize</a> function returning true.</p>
<p>One may not always want the whole Part to get the selection handle or all tool handles.
Sometimes one wants to emphasize selection by highlighting a particular element within the part&#39;s visual tree.
This can be achieved by setting the <a href="Part.html#selectionObjectName">selectionObjectName</a> property,
and making sure the desired element has the same <a href="GraphObject.html#name">GraphObject.name</a> property value.</p>
<p class="boxread">
For more discussion about selection, see <a href="../../intro/selection.html">Selection</a>.
<p>Similarly the <a href="Part.html#resizeObjectName">resizeObjectName</a> and <a href="Part.html#rotateObjectName">rotateObjectName</a> properties direct the
corresponding <a href="ResizingTool.html">ResizingTool</a> and <a href="RotatingTool.html">RotatingTool</a> to operate on the particular <a href="GraphObject.html">GraphObject</a>
in the Part&#39;s visual tree with the given name.
That includes both providing tool handles and actually modifying properties on that object.</p>
<p>Parts are not resizable or rotatable by default: you need to set <a href="Part.html#resizable">resizable</a> and/or <a href="Part.html#rotatable">rotatable</a> to true.</p>
<p class="boxread">
For more discussion about tools, see <a href="../../intro/tools.html">Tools</a>.
<p>A Part may be positioned (or a <a href="Link.html">Link</a> may be routed) by a <a href="Layout.html">Layout</a>.
This will happen automatically if <a href="Diagram.html#layout">Diagram.layout</a> or <a href="Group.html#layout">Group.layout</a> are set.
The default <a href="Diagram.html#layout">Diagram.layout</a> will position any nodes that were not given explicit positions or location.</p>
<p>If you set <a href="Part.html#isLayoutPositioned">isLayoutPositioned</a> to false, this part will not participate in any of the standard layouts,
so it will not be moved by a layout or affect other parts in a layout.
In order for the part to get a <a href="Part.html#location">location</a> or position you will need to supply it explicitly.</p>
<p>As parts are added to or removed from a diagram, the <a href="Layout.html">Layout</a> responsible for positioning the part is invalidated.
This will cause the layout to be performed again in the near future, at the end of the transaction.
This automatic layout invalidation also occurs as parts change their visibility (<a href="GraphObject.html#visible">GraphObject.visible</a>)
or their size (<a href="GraphObject.html#actualBounds">GraphObject.actualBounds</a>).
If you do want there to be a <a href="Diagram.html#layout">Diagram.layout</a> but you do not want an automatic layout to happen
after removing parts (for example), you can set <a href="Part.html#layoutConditions">layoutConditions</a> not to include the <a href="Part.html#static-LayoutRemoved">Part.LayoutRemoved</a> flag.
In this particular case, you could set <a href="Part.html#layoutConditions">layoutConditions</a> to:
<code>go.Part.LayoutStandard &amp; ~go.Part.LayoutRemoved</code>.
It may also reasonable for your application to set it to <a href="Part.html#static-LayoutNone">Part.LayoutNone</a>.
Do not forget to consider applying the same conditions to links as well as to nodes and groups.</p>
<p>If you want to save the locations/positions of the parts in a diagram, it is commonplace to
data bind the <a href="Part.html#location">location</a> to a property on your node data with a TwoWay <a href="Binding.html">Binding</a>
(call <a href="Binding.html#makeTwoWay">Binding.makeTwoWay</a>). For example:</p>
<pre><code class="hljs js">$(go.Part, <span class="hljs-string">"Horizontal"</span>,
<span class="hljs-keyword">new</span> go.Binding(<span class="hljs-string">"location"</span>, <span class="hljs-string">"loc"</span>, go.Point.parse).makeTwoWay(go.Point.stringify),
...</code></pre>
<p>Then as the nodes are moved, whether manually by the user or automatically by a <a href="Layout.html">Layout</a>,
the model data is automatically updated with the location.</p>
<p class="boxread">
For more discussion about related topics, see <a href="../../intro/selection.html">Selection</a>,
<a href="../../intro/tools.html">Tools</a>, and
<a href="../../intro/permissions.html">Permissions</a>.
<p>Parts that are templates should have no relationships with other Parts.
Only real Parts that are in a Diagram can belong to Groups or have any Adornments.
Only real Nodes in a Diagram can be connected with Links.</p>
</div>
</section>
<section class="tsd-panel-group tsd-index-group">
<h2>Index</h2>
<section class="tsd-panel tsd-index-panel">
<div class="tsd-index-content">
<section class="tsd-index-section ">
<h3>Constructors</h3>
<ul class="tsd-index-list">
<li class="tsd-kind-constructor tsd-parent-kind-class"><a href="Part.html#constructor" class="tsd-kind-icon">constructor</a></li>
</ul>
</section>
<section class="tsd-index-section ">
<h3>Properties</h3>
<ul class="tsd-index-list">
<li class="tsd-kind-get-signature tsd-parent-kind-class"><a href="Part.html#adornments" class="tsd-kind-icon">adornments</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#category" class="tsd-kind-icon">category</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#containingGroup" class="tsd-kind-icon">containing<wbr>Group</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#containingGroupChanged" class="tsd-kind-icon">containing<wbr>Group<wbr>Changed</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#copyable" class="tsd-kind-icon">copyable</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#deletable" class="tsd-kind-icon">deletable</a></li>
<li class="tsd-kind-get-signature tsd-parent-kind-class"><a href="Part.html#diagram" class="tsd-kind-icon">diagram</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#dragComputation" class="tsd-kind-icon">drag<wbr>Computation</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#groupable" class="tsd-kind-icon">groupable</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#highlightedChanged" class="tsd-kind-icon">highlighted<wbr>Changed</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#isAnimated" class="tsd-kind-icon">is<wbr>Animated</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#isHighlighted" class="tsd-kind-icon">is<wbr>Highlighted</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#isInDocumentBounds" class="tsd-kind-icon">is<wbr>InDocument<wbr>Bounds</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#isLayoutPositioned" class="tsd-kind-icon">is<wbr>Layout<wbr>Positioned</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#isSelected" class="tsd-kind-icon">is<wbr>Selected</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#isShadowed" class="tsd-kind-icon">is<wbr>Shadowed</a></li>
<li class="tsd-kind-get-signature tsd-parent-kind-class"><a href="Part.html#isTopLevel" class="tsd-kind-icon">is<wbr>Top<wbr>Level</a></li>
<li class="tsd-kind-get-signature tsd-parent-kind-class"><a href="Part.html#key" class="tsd-kind-icon">key</a></li>
<li class="tsd-kind-get-signature tsd-parent-kind-class"><a href="Part.html#layer" class="tsd-kind-icon">layer</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#layerChanged" class="tsd-kind-icon">layer<wbr>Changed</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#layerName" class="tsd-kind-icon">layer<wbr>Name</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#layoutConditions" class="tsd-kind-icon">layout<wbr>Conditions</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#location" class="tsd-kind-icon">location</a></li>
<li class="tsd-kind-get-signature tsd-parent-kind-class"><a href="Part.html#locationObject" class="tsd-kind-icon">location<wbr>Object</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#locationObjectName" class="tsd-kind-icon">location<wbr>Object<wbr>Name</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#locationSpot" class="tsd-kind-icon">location<wbr>Spot</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#maxLocation" class="tsd-kind-icon">max<wbr>Location</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#minLocation" class="tsd-kind-icon">min<wbr>Location</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#movable" class="tsd-kind-icon">movable</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#reshapable" class="tsd-kind-icon">reshapable</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#resizable" class="tsd-kind-icon">resizable</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#resizeAdornmentTemplate" class="tsd-kind-icon">resize<wbr>Adornment<wbr>Template</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#resizeCellSize" class="tsd-kind-icon">resize<wbr>Cell<wbr>Size</a></li>
<li class="tsd-kind-get-signature tsd-parent-kind-class"><a href="Part.html#resizeObject" class="tsd-kind-icon">resize<wbr>Object</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#resizeObjectName" class="tsd-kind-icon">resize<wbr>Object<wbr>Name</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#rotatable" class="tsd-kind-icon">rotatable</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#rotateAdornmentTemplate" class="tsd-kind-icon">rotate<wbr>Adornment<wbr>Template</a></li>
<li class="tsd-kind-get-signature tsd-parent-kind-class"><a href="Part.html#rotateObject" class="tsd-kind-icon">rotate<wbr>Object</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#rotateObjectName" class="tsd-kind-icon">rotate<wbr>Object<wbr>Name</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#rotationSpot" class="tsd-kind-icon">rotation<wbr>Spot</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#selectable" class="tsd-kind-icon">selectable</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#selectionAdorned" class="tsd-kind-icon">selection<wbr>Adorned</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#selectionAdornmentTemplate" class="tsd-kind-icon">selection<wbr>Adornment<wbr>Template</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#selectionChanged" class="tsd-kind-icon">selection<wbr>Changed</a></li>
<li class="tsd-kind-get-signature tsd-parent-kind-class"><a href="Part.html#selectionObject" class="tsd-kind-icon">selection<wbr>Object</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#selectionObjectName" class="tsd-kind-icon">selection<wbr>Object<wbr>Name</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#shadowBlur" class="tsd-kind-icon">shadow<wbr>Blur</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#shadowColor" class="tsd-kind-icon">shadow<wbr>Color</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#shadowOffset" class="tsd-kind-icon">shadow<wbr>Offset</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#text" class="tsd-kind-icon">text</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#textEditable" class="tsd-kind-icon">text<wbr>Editable</a></li>
<li class="tsd-kind-accessor tsd-parent-kind-class"><a href="Part.html#zOrder" class="tsd-kind-icon">z<wbr>Order</a></li>
</ul>
</section>
<section class="tsd-index-section ">
<h3>Methods</h3>
<ul class="tsd-index-list">
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#addAdornment" class="tsd-kind-icon">add<wbr>Adornment</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#canCopy" class="tsd-kind-icon">can<wbr>Copy</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#canDelete" class="tsd-kind-icon">can<wbr>Delete</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#canEdit" class="tsd-kind-icon">can<wbr>Edit</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#canGroup" class="tsd-kind-icon">can<wbr>Group</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#canLayout" class="tsd-kind-icon">can<wbr>Layout</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#canMove" class="tsd-kind-icon">can<wbr>Move</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#canReshape" class="tsd-kind-icon">can<wbr>Reshape</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#canResize" class="tsd-kind-icon">can<wbr>Resize</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#canRotate" class="tsd-kind-icon">can<wbr>Rotate</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#canSelect" class="tsd-kind-icon">can<wbr>Select</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#clearAdornments" class="tsd-kind-icon">clear<wbr>Adornments</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#ensureBounds" class="tsd-kind-icon">ensure<wbr>Bounds</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#findAdornment" class="tsd-kind-icon">find<wbr>Adornment</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#findCommonContainingGroup" class="tsd-kind-icon">find<wbr>Common<wbr>Containing<wbr>Group</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#findSubGraphLevel" class="tsd-kind-icon">find<wbr>Sub<wbr>Graph<wbr>Level</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#findTopLevelPart" class="tsd-kind-icon">find<wbr>Top<wbr>Level<wbr>Part</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#getDocumentBounds" class="tsd-kind-icon">get<wbr>Document<wbr>Bounds</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#invalidateLayout" class="tsd-kind-icon">invalidate<wbr>Layout</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#isMemberOf" class="tsd-kind-icon">is<wbr>Member<wbr>Of</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#isVisible" class="tsd-kind-icon">is<wbr>Visible</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#move" class="tsd-kind-icon">move</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#moveTo" class="tsd-kind-icon">move<wbr>To</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#removeAdornment" class="tsd-kind-icon">remove<wbr>Adornment</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#updateAdornments" class="tsd-kind-icon">update<wbr>Adornments</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#updateRelationshipsFromData" class="tsd-kind-icon">update<wbr>Relationships<wbr>From<wbr>Data</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="Part.html#updateTargetBindings" class="tsd-kind-icon">update<wbr>Target<wbr>Bindings</a></li>
</ul>
</section>
<section class="tsd-index-section ">
<h3>Constants</h3>
<ul class="tsd-index-list">
<li class="tsd-kind-constant tsd-parent-kind-class tsd-is-static"><a href="Part.html#static-LayoutAdded" class="tsd-kind-icon">Layout<wbr>Added</a></li>
<li class="tsd-kind-constant tsd-parent-kind-class tsd-is-static"><a href="Part.html#static-LayoutGroupLayout" class="tsd-kind-icon">Layout<wbr>Group<wbr>Layout</a></li>
<li class="tsd-kind-constant tsd-parent-kind-class tsd-is-static"><a href="Part.html#static-LayoutHidden" class="tsd-kind-icon">Layout<wbr>Hidden</a></li>
<li class="tsd-kind-constant tsd-parent-kind-class tsd-is-static"><a href="Part.html#static-LayoutNodeReplaced" class="tsd-kind-icon">Layout<wbr>Node<wbr>Replaced</a></li>
<li class="tsd-kind-constant tsd-parent-kind-class tsd-is-static"><a href="Part.html#static-LayoutNodeSized" class="tsd-kind-icon">Layout<wbr>Node<wbr>Sized</a></li>
<li class="tsd-kind-constant tsd-parent-kind-class tsd-is-static"><a href="Part.html#static-LayoutNone" class="tsd-kind-icon">Layout<wbr>None</a></li>
<li class="tsd-kind-constant tsd-parent-kind-class tsd-is-static"><a href="Part.html#static-LayoutRemoved" class="tsd-kind-icon">Layout<wbr>Removed</a></li>
<li class="tsd-kind-constant tsd-parent-kind-class tsd-is-static"><a href="Part.html#static-LayoutShown" class="tsd-kind-icon">Layout<wbr>Shown</a></li>
<li class="tsd-kind-constant tsd-parent-kind-class tsd-is-static"><a href="Part.html#static-LayoutStandard" class="tsd-kind-icon">Layout<wbr>Standard</a></li>
</ul>
</section>
</div>
</section>
</section>
<section class="tsd-panel-group tsd-member-group ">
<h2>Constructors</h2>
<section class="tsd-panel tsd-member tsd-kind-constructor tsd-parent-kind-class">
<a name="constructor" class="tsd-anchor"></a>
<h3>
constructor
</h3>
<ul class="tsd-signatures tsd-kind-constructor tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">new <wbr>Part<span class="tsd-signature-symbol">(</span>type<span class="tsd-signature-symbol">?: </span><a href="PanelLayout.html" class="tsd-signature-type">PanelLayout</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="Part.html" class="tsd-signature-type">Part</a></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>The constructor builds an empty Part.</p>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5><span class="tsd-flag ts-flagOptional">Optional</span> type: <a href="PanelLayout.html" class="tsd-signature-type">PanelLayout</a></h5>
<div class="tsd-comment tsd-typography">
<p>if not supplied, the default Panel type is <a href="Panel.html#static-Position">Panel.Position</a>.</p>
</div>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <a href="Part.html" class="tsd-signature-type">Part</a></h4>
</li>
</ul>
</section>
</section>
<section class="tsd-panel-group tsd-member-group ">
<h2>Properties</h2>
<section class="tsd-panel tsd-member tsd-kind-get-signature tsd-parent-kind-class">
<a name="adornments" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagReadOnly">Read-only</span>
adornments
<span class="tsd-signature-symbol">: </span><a href="Iterator.html" class="tsd-signature-type">Iterator</a><span class="tsd-signature-symbol">&lt;</span><a href="Adornment.html" class="tsd-signature-type">Adornment</a><span class="tsd-signature-symbol">&gt;</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>This read-only property returns an iterator over all of the <a href="Adornment.html">Adornment</a>s associated with this part.
After each call to the iterator&#39;s next() method that returns true,
the iterator&#39;s key will be the category and the iterator&#39;s value will
be an <a href="Adornment.html">Adornment</a>.</p>
<p>Templates should not have any adornments.</p>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="category" class="tsd-anchor"></a>
<h3>
category
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the category of this part,
typically used to distinguish different kinds of nodes or links.</p>
<p>The initial value is an empty string, which is the default category.
Any new value must be a string.
This should not be set in templates.</p>
<p>When building Parts for node data or link data in a model,
the <a href="Diagram.html">Diagram</a> will call <a href="Model.html#getCategoryForNodeData">Model.getCategoryForNodeData</a> or
<a href="GraphLinksModel.html#getCategoryForLinkData">GraphLinksModel.getCategoryForLinkData</a> to get the category string for the data object.
The diagram uses this value to look up a template in <a href="Diagram.html#nodeTemplateMap">Diagram.nodeTemplateMap</a>,
<a href="Diagram.html#linkTemplateMap">Diagram.linkTemplateMap</a> or <a href="Diagram.html#groupTemplateMap">Diagram.groupTemplateMap</a>.
That template is copied to create the actual Part that is added to the diagram.
The diagram will set this property to remember the category it used.</p>
<p>Note that the class of the new Part must be the same as the class of the original Part.
For example, a Node cannot be replaced by a simple Part or vice-versa.
Nor can a Link be replaced by a subclass of Link or vice-versa.</p>
<p>To change the category for a Part created for model data, call <a href="Model.html#setCategoryForNodeData">Model.setCategoryForNodeData</a> or
<a href="GraphLinksModel.html#setCategoryForLinkData">GraphLinksModel.setCategoryForLinkData</a>.</p>
<p>This property is also used to distinguish <a href="Adornment.html">Adornment</a>s on a Part.
In this scenario you create the Adornment, often indirectly by specifying a template,
and set this property explicitly.
For example, <a href="ResizingTool.html#updateAdornments">ResizingTool.updateAdornments</a> creates a resizing Adornment from the
<a href="Part.html#resizeAdornmentTemplate">Part.resizeAdornmentTemplate</a> and sets its category to be &quot;Resizing&quot;.
Changing the category of an existing Adornment will update any adorned part&#39;s association.</p>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="containingGroup" class="tsd-anchor"></a>
<h3>
containing<wbr>Group
<span class="tsd-signature-symbol">: </span><a href="Group.html" class="tsd-signature-type">Group</a><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">null</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the <a href="Group.html">Group</a> of which this <a href="Part.html">Part</a> or <a href="Node.html">Node</a> is a member.
This will be null if this is a top-level part.</p>
<p>You cannot set this property on a <a href="Link.html">Link</a>; it is set for you automatically
based on the group memberships of the connected nodes.
You cannot set this property on an <a href="Adornment.html">Adornment</a> at all.</p>
<p>A template should not be a member of any group.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Group.html#memberParts">Group.memberParts</a>, <a href="Part.html#findTopLevelPart">findTopLevelPart</a>, <a href="Part.html#isTopLevel">isTopLevel</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="containingGroupChanged" class="tsd-anchor"></a>
<h3>
containing<wbr>Group<wbr>Changed
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">function</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">thisPart</span><span class="tsd-signature-symbol">: </span><a href="Part.html" class="tsd-signature-type">Part</a><span class="tsd-signature-symbol">, </span><span class="tsd-signature-symbol">oldGroup</span><span class="tsd-signature-symbol">: </span><a href="Group.html" class="tsd-signature-type">Group</a><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-symbol">newGroup</span><span class="tsd-signature-symbol">: </span><a href="Group.html" class="tsd-signature-type">Group</a><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">null</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the function that is called after this Part has changed which <a href="Group.html">Group</a> it belongs to, if any.
It is typically used to modify the appearance of the part.
The first argument will be this Part.
The second argument will be the old Group, or null if it had been a top-level part.
The third argument will be the new Group, or null if it is now a top-level part.</p>
<p>If the value is a function, that function must not modify the part&#39;s containing <a href="Group.html">Group</a>.
The containing Group has already been changed -- trying to change it again may produce undefined behavior.</p>
<p>The initial value is null -- no function is called.</p>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="copyable" class="tsd-anchor"></a>
<h3>
copyable
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets whether the user may copy this part.
The initial value is true.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#canCopy">canCopy</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="deletable" class="tsd-anchor"></a>
<h3>
deletable
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets whether the user may delete this part.
The initial value is true.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#canDelete">canDelete</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-get-signature tsd-parent-kind-class">
<a name="diagram" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagOverride">Override</span>
<span class="tsd-flag ts-flagReadOnly">Read-only</span>
diagram
<span class="tsd-signature-symbol">: </span><a href="Diagram.html" class="tsd-signature-type">Diagram</a><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">null</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>This read-only property returns the <a href="Diagram.html">Diagram</a> that this Part is in.</p>
<p>This will be null if it is not in a <a href="Layer.html">Layer</a>.</p>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="dragComputation" class="tsd-anchor"></a>
<h3>
drag<wbr>Computation
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">function</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">thisPart</span><span class="tsd-signature-symbol">: </span><a href="Part.html" class="tsd-signature-type">Part</a><span class="tsd-signature-symbol">, </span><span class="tsd-signature-symbol">newLoc</span><span class="tsd-signature-symbol">: </span><a href="Point.html" class="tsd-signature-type">Point</a><span class="tsd-signature-symbol">, </span><span class="tsd-signature-symbol">snappedLoc</span><span class="tsd-signature-symbol">: </span><a href="Point.html" class="tsd-signature-type">Point</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="Point.html" class="tsd-signature-type">Point</a><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">null</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the function used to determine the location that this Part can be dragged to.
The first argument is a reference to the Part being dragged, the second argument is a Point describing
the proposed location, and the third argument is a snapped location, if one was determined during dragging.
It should return a Point that is the proposed new location.</p>
<p>By default this function is null and the <a href="DraggingTool.html">DraggingTool</a> uses the snapped location,
if one was determined and if <a href="DraggingTool.html#isGridSnapEnabled">DraggingTool.isGridSnapEnabled</a> is true,
or the proposed location (the second argument) if not snapping to a grid.</p>
<p>In either case the <a href="DraggingTool.html">DraggingTool</a> will limit the proposed new location by <a href="Part.html#minLocation">minLocation</a> and <a href="Part.html#maxLocation">maxLocation</a>.</p>
<p>The function, if supplied, must not have any side-effects.</p>
<p>An example that limits moving a Node to the current viewport:</p>
<pre><code class="hljs js"> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">stayInViewport</span>(<span class="hljs-params">part, pt, gridpt</span>) </span>{
<span class="hljs-keyword">var</span> diagram = part.diagram;
<span class="hljs-keyword">if</span> (diagram === <span class="hljs-literal">null</span>) <span class="hljs-keyword">return</span> pt;
<span class="hljs-comment">// compute the area inside the viewport</span>
<span class="hljs-keyword">var</span> v = diagram.viewportBounds.copy();
v.subtractMargin(diagram.padding);
<span class="hljs-comment">// get the bounds of the part being dragged</span>
<span class="hljs-keyword">var</span> b = part.actualBounds;
<span class="hljs-keyword">var</span> loc = part.location;
<span class="hljs-comment">// now limit the location appropriately</span>
<span class="hljs-keyword">var</span> x = <span class="hljs-built_in">Math</span>.max(v.x+<span class="hljs-number">1</span>, <span class="hljs-built_in">Math</span>.min(pt.x, v.right-b.width<span class="hljs-number">-2</span>)) + (loc.x-b.x);
<span class="hljs-keyword">var</span> y = <span class="hljs-built_in">Math</span>.max(v.y+<span class="hljs-number">1</span>, <span class="hljs-built_in">Math</span>.min(pt.y, v.bottom-b.height<span class="hljs-number">-2</span>)) + (loc.y-b.y);
<span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> go.Point(x, y);
}</code></pre>
<p>Note that for this functionality you will also probably want to set <a href="Diagram.html#autoScrollRegion">Diagram.autoScrollRegion</a> to be a zero margin.</p>
<pre><code class="hljs js"> myDiagram.nodeTemplate =
$(go.Node, . . .,
{ <span class="hljs-attr">dragComputation</span>: stayInViewport },
. . .
);</code></pre>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#maxLocation">maxLocation</a>, <a href="Part.html#minLocation">minLocation</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="groupable" class="tsd-anchor"></a>
<h3>
groupable
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets whether the user may group this part to be a member of a new <a href="Group.html">Group</a>.
The initial value is true.</p>
<p>The grouping command is implemented by <a href="CommandHandler.html#groupSelection">CommandHandler.groupSelection</a>
and depends on <a href="CommandHandler.html#archetypeGroupData">CommandHandler.archetypeGroupData</a> having been set to a node data object.
A Group can be ungrouped by the user if you set <a href="Group.html#ungroupable">Group.ungroupable</a> to true.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#canGroup">canGroup</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="highlightedChanged" class="tsd-anchor"></a>
<h3>
highlighted<wbr>Changed
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">function</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">thisPart</span><span class="tsd-signature-symbol">: </span><a href="Part.html" class="tsd-signature-type">Part</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><span class="tsd-signature-type">null</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the function to execute when this <a href="Part.html#isHighlighted">isHighlighted</a> changes.
It is typically used to modify the appearance of the part.
This function must not highlight or unhighlight any parts.</p>
<p>If this property value is a function, it is called with one argument,
this <a href="Part.html">Part</a> that whose <a href="Part.html#isHighlighted">isHighlighted</a> value changed.
By default this property is null.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#isHighlighted">isHighlighted</a></p>
</dd>
<dt>since</dt>
<dd><p>1.7</p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="isAnimated" class="tsd-anchor"></a>
<h3>
is<wbr>Animated
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets whether this part may be animated.
The initial value is true.</p>
<dl class="tsd-comment-tags">
<dt>since</dt>
<dd><p>1.4</p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="isHighlighted" class="tsd-anchor"></a>
<h3>
is<wbr>Highlighted
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets whether this Part is highlighted.
The initial value is false.</p>
<p>Highlighted parts may be shown with a different appearance by changing the brush or visibility of one or
more of the <a href="GraphObject.html">GraphObject</a>s within the part.
One way of doing that is by using binding.
Consider part of the definition of a Node template:</p>
<pre><code class="hljs js"> $(go.Shape,
. . .,
<span class="hljs-comment">// Shape.fill is bound to Node.data.color</span>
<span class="hljs-keyword">new</span> go.Binding(<span class="hljs-string">"fill"</span>, <span class="hljs-string">"color"</span>),
<span class="hljs-comment">// Shape.stroke is red when Node.isHighlighted is true, black otherwise</span>
<span class="hljs-keyword">new</span> go.Binding(<span class="hljs-string">"stroke"</span>, <span class="hljs-string">"isHighlighted"</span>,
<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">h</span>) </span>{ <span class="hljs-keyword">return</span> h ? <span class="hljs-string">"red"</span> : <span class="hljs-string">"black"</span>; }).ofObject()),</code></pre>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#highlightedChanged">highlightedChanged</a>, <a href="Diagram.html#highlighteds">Diagram.highlighteds</a>, <a href="Diagram.html#highlight">Diagram.highlight</a>, <a href="Diagram.html#highlightCollection">Diagram.highlightCollection</a>, <a href="Diagram.html#clearHighlighteds">Diagram.clearHighlighteds</a></p>
</dd>
<dt>since</dt>
<dd><p>1.4</p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="isInDocumentBounds" class="tsd-anchor"></a>
<h3>
is<wbr>InDocument<wbr>Bounds
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets whether this Part is part of the document bounds.</p>
<p>The initial value is true.
A value of false causes <a href="Diagram.html#computeBounds">Diagram.computeBounds</a> to ignore this part.
If the value is false, it is possible that user will not be able to scroll far enough to see this part,
if the part&#39;s <a href="GraphObject.html#actualBounds">GraphObject.actualBounds</a> are outside of the <a href="Diagram.html#documentBounds">Diagram.documentBounds</a>.</p>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="isLayoutPositioned" class="tsd-anchor"></a>
<h3>
is<wbr>Layout<wbr>Positioned
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets whether a <a href="Layout.html">Layout</a> positions this Node or routes this Link.
This property affects the value of <a href="Part.html#canLayout">canLayout</a>.</p>
<p>The initial value is true, meaning that this part is laid out by the layout responsible for this Part.
If this part is a member of a <a href="Group.html">Group</a>, it is the <a href="Group.html#layout">Group.layout</a>,
otherwise it is the <a href="Diagram.html#layout">Diagram.layout</a>.</p>
<p>A value of false means that this part is not affected by and does not affect any automatic layout,
so the <a href="Part.html#layoutConditions">layoutConditions</a> property is ignored.
You will need to make sure that it has a real <a href="Part.html#location">location</a> or <a href="GraphObject.html#position">GraphObject.position</a> value,
or else the Part might not be visible anywhere in the diagram.</p>
<p>Another way of controlling when layouts are invalidated is by setting
<a href="Part.html#layoutConditions">Part.layoutConditions</a> or <a href="Layout.html#isInitial">Layout.isInitial</a> or <a href="Layout.html#isOngoing">Layout.isOngoing</a>.</p>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="isSelected" class="tsd-anchor"></a>
<h3>
is<wbr>Selected
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets whether this Part is selected.
The initial value is false.</p>
<p>Selected parts typically are shown either with an <a href="Adornment.html">Adornment</a>
or with a different appearance by changing the brush or visibility of one or
more of the <a href="GraphObject.html">GraphObject</a>s within the part.</p>
<p>Changing this value does not by itself raise any &quot;ChangingSelection&quot; and &quot;ChangedSelection&quot; <a href="DiagramEvent.html">DiagramEvent</a>s.
<a href="Tool.html">Tool</a>s and the <a href="CommandHandler.html">CommandHandler</a> and methods such as <a href="Diagram.html#select">Diagram.select</a> do raise those DiagramEvents
because they want to surround changes to this property with a single &quot;ChangingSelection&quot; DiagramEvent beforehand and a single &quot;ChangedSelection&quot; afterwards.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#selectable">selectable</a>, <a href="Part.html#selectionAdorned">selectionAdorned</a>, <a href="Part.html#selectionChanged">selectionChanged</a>, <a href="Part.html#selectionObjectName">selectionObjectName</a>, <a href="Part.html#selectionAdornmentTemplate">selectionAdornmentTemplate</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="isShadowed" class="tsd-anchor"></a>
<h3>
is<wbr>Shadowed
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets whether this part will draw shadows.
The initial value is false.</p>
<p>By default, setting this property to true will attempt to draw shadows only
on the GraphObjects in this Part that appear to act as background objects, and
not on GraphObjects that appear to be in front of other GraphObjects in the Part.</p>
<p>To finely control shadows, you may need to set <a href="GraphObject.html#shadowVisible">GraphObject.shadowVisible</a> on
elements of this Part, so that they explicitly do or do not get shadowed accordingly.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#shadowOffset">shadowOffset</a>, <a href="Part.html#shadowColor">shadowColor</a>, <a href="Part.html#shadowBlur">shadowBlur</a>, <a href="GraphObject.html#shadowVisible">GraphObject.shadowVisible</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-get-signature tsd-parent-kind-class">
<a name="isTopLevel" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagReadOnly">Read-only</span>
is<wbr>Top<wbr>Level
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>This read-only property is true when this part is not member of any <a href="Group.html">Group</a> node
nor is it a label node for a <a href="Link.html">Link</a>.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#containingGroup">containingGroup</a>, <a href="Node.html#labeledLink">Node.labeledLink</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-get-signature tsd-parent-kind-class">
<a name="key" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagReadOnly">Read-only</span>
key
<span class="tsd-signature-symbol">: </span><a href="../index.html#Key" class="tsd-signature-type">Key</a> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>This read-only property returns the Part&#39;s Model data key if it is in a Diagram and is backed by Model data.
Otherwise this returns undefined.</p>
<dl class="tsd-comment-tags">
<dt>since</dt>
<dd><p>1.8</p>
</dd>
<dt>see</dt>
<dd><p><a href="Model.html#getKeyForNodeData">Model.getKeyForNodeData</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-get-signature tsd-parent-kind-class">
<a name="layer" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagOverride">Override</span>
<span class="tsd-flag ts-flagReadOnly">Read-only</span>
layer
<span class="tsd-signature-symbol">: </span><a href="Layer.html" class="tsd-signature-type">Layer</a><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">null</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>This read-only property returns the <a href="Layer.html">Layer</a> that this Part is in.
The value is the Layer that is named with the value of <a href="Part.html#layerName">layerName</a>.
If you want to change what Layer this Part is in, change the value of <a href="Part.html#layerName">layerName</a> to refer to a different Layer.</p>
<p>This will be null if it has not yet been added to a <a href="Diagram.html">Diagram</a>,
or if it has already been removed from a Diagram.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#layerName">layerName</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="layerChanged" class="tsd-anchor"></a>
<h3>
layer<wbr>Changed
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">function</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">thisPart</span><span class="tsd-signature-symbol">: </span><a href="Part.html" class="tsd-signature-type">Part</a><span class="tsd-signature-symbol">, </span><span class="tsd-signature-symbol">oldLayer</span><span class="tsd-signature-symbol">: </span><a href="Layer.html" class="tsd-signature-type">Layer</a><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-symbol">newLayer</span><span class="tsd-signature-symbol">: </span><a href="Layer.html" class="tsd-signature-type">Layer</a><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">null</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the function to execute when this part changes layers.
It is typically used to modify the appearance of the part.
This function must not change the layer of this part by setting <a href="Part.html#layerName">layerName</a>.</p>
<p>If this property value is a function, it is called with three arguments,
this <a href="Part.html">Part</a>, the old <a href="Layer.html">Layer</a> (may be null), and the new <a href="Layer.html">Layer</a> (may be null).
By default this property is null -- no function is called.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#layerName">layerName</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="layerName" class="tsd-anchor"></a>
<h3>
layer<wbr>Name
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the layer name for this part.
The initial value is an empty string, which is the name of the default layer.
The value of this property determines the value of <a href="Part.html#layer">layer</a>.</p>
<p>If this part is not yet in a <a href="Diagram.html">Diagram</a>,
this value is used by <a href="Diagram.html#add">Diagram.add</a>
to determine which <a href="Layer.html">Layer</a> this part should go in.
If no layer can be found with this name, it uses the default layer.</p>
<p>Changing the value of this property while it is already in a layer
causes it to change layers if needed.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#layerChanged">layerChanged</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="layoutConditions" class="tsd-anchor"></a>
<h3>
layout<wbr>Conditions
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets flags that control when the <a href="Layout.html">Layout</a> that is responsible for this Part is invalidated.
The initial value is <a href="Part.html#static-LayoutStandard">Part.LayoutStandard</a>,
which causes the layout for this part to be invalidated when the part is added or removed or changes visibility or size.</p>
<p>Individual layout conditions include: <a href="Part.html#static-LayoutAdded">Part.LayoutAdded</a>, <a href="Part.html#static-LayoutRemoved">Part.LayoutRemoved</a>,
<a href="Part.html#static-LayoutShown">Part.LayoutShown</a>, <a href="Part.html#static-LayoutHidden">Part.LayoutHidden</a>, and <a href="Part.html#static-LayoutNodeSized">Part.LayoutNodeSized</a>.</p>
<p>This property is ignored when <a href="Part.html#isLayoutPositioned">isLayoutPositioned</a> is false -- no operation on this Part
will by itself cause the responsible Layout to be invalidated.</p>
<p>You can also control when layouts are invalidated is by setting <a href="Layout.html#isInitial">Layout.isInitial</a> or <a href="Layout.html#isOngoing">Layout.isOngoing</a>.</p>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="location" class="tsd-anchor"></a>
<h3>
location
<span class="tsd-signature-symbol">: </span><a href="Point.html" class="tsd-signature-type">Point</a> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the position of this part in document coordinates,
based on the <a href="Part.html#locationSpot">locationSpot</a> in this part&#39;s <a href="Part.html#locationObject">locationObject</a>.</p>
<p>Value must be of type <a href="Point.html">Point</a>.
The initial value is Point(NaN, NaN).
It is commonplace to data bind this property to some property on your model node data.</p>
<p>The value is related to the <a href="GraphObject.html#position">GraphObject.position</a>.
For Parts, both are in document coordinates; setting one property will set the other property.
By default both will have the same value.
However, by setting either or both of <a href="Part.html#locationSpot">locationSpot</a> and <a href="Part.html#locationObjectName">locationObjectName</a>,
the location will be determined by a spot in the <a href="Part.html#locationObject">locationObject</a>,
a <a href="GraphObject.html">GraphObject</a> that is in the visual tree of this Part.
The <a href="GraphObject.html#position">GraphObject.position</a> will always refer to the point at the top-left corner of the whole part.</p>
<p>The <a href="Part.html#minLocation">minLocation</a> and <a href="Part.html#maxLocation">maxLocation</a> limit the location of a part, not its position.
Grid snapping will normally locate the location to be on grid points.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#locationObjectName">locationObjectName</a>, <a href="Part.html#locationSpot">locationSpot</a>, <a href="Part.html#movable">movable</a>, <a href="Part.html#maxLocation">maxLocation</a>, <a href="Part.html#minLocation">minLocation</a>, <a href="Part.html#dragComputation">dragComputation</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-get-signature tsd-parent-kind-class">
<a name="locationObject" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagReadOnly">Read-only</span>
location<wbr>Object
<span class="tsd-signature-symbol">: </span><a href="GraphObject.html" class="tsd-signature-type">GraphObject</a> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>This read-only property returns the <a href="GraphObject.html">GraphObject</a> that determines the location of this Part.
The value will be in the visual tree of this Part and is usually named with
the value of <a href="Part.html#locationObjectName">locationObjectName</a>.</p>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="locationObjectName" class="tsd-anchor"></a>
<h3>
location<wbr>Object<wbr>Name
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the name of the <a href="GraphObject.html">GraphObject</a> that provides the location of this Part.
This name determines the value of <a href="Part.html#locationObject">locationObject</a>.
The actual <a href="Part.html#location">location</a> also depends on the <a href="Part.html#locationSpot">locationSpot</a>.</p>
<p>The initial value is an empty string, meaning the whole Part itself determines the location.
If you want to use a particular GraphObject in the visual tree of this Part,
set this property to be the <a href="GraphObject.html#name">GraphObject.name</a> of the element that you want to be the <a href="Part.html#locationObject">locationObject</a>.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#location">location</a>, <a href="Part.html#locationSpot">locationSpot</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="locationSpot" class="tsd-anchor"></a>
<h3>
location<wbr>Spot
<span class="tsd-signature-symbol">: </span><a href="Spot.html" class="tsd-signature-type">Spot</a> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the location Spot of this Node, the spot on the <a href="Part.html#locationObject">locationObject</a>
that is used in positioning this part in the diagram.</p>
<p>Value must be of the type <a href="Spot.html">Spot</a>.
The initial value is <code>Spot.TopLeft</code>.
The value must be a specific spot -- i.e. one for which <a href="Spot.html#isSpot">Spot.isSpot</a> is true.</p>
<p>It is commonplace to set this property to <code>Spot.Center</code>, so that the <a href="Part.html#location">location</a>
has a value corresponding to the point at the center of this Part&#39;s <a href="Part.html#locationObject">locationObject</a> element.
But the <a href="GraphObject.html#position">GraphObject.position</a> of a Part is always at the top-left corner
point of the <a href="GraphObject.html#actualBounds">GraphObject.actualBounds</a>.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#location">location</a>, <a href="Part.html#locationObjectName">locationObjectName</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="maxLocation" class="tsd-anchor"></a>
<h3>
max<wbr>Location
<span class="tsd-signature-symbol">: </span><a href="Point.html" class="tsd-signature-type">Point</a> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the maximum location of this Part to which the user may drag using the <a href="DraggingTool.html">DraggingTool</a>.</p>
<p>Value must be of type <a href="Point.html">Point</a>.
The initial value is (Infinity, Infinity), which imposes no position constraint.
A X value of NaN causes <a href="Diagram.html#computeMove">Diagram.computeMove</a> to use the part&#39;s current location&#39;s X value as the maximum,
and similarly for NaN as the Y value.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#location">location</a>, <a href="Part.html#minLocation">minLocation</a>, <a href="Part.html#dragComputation">dragComputation</a>, <a href="Part.html#movable">movable</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="minLocation" class="tsd-anchor"></a>
<h3>
min<wbr>Location
<span class="tsd-signature-symbol">: </span><a href="Point.html" class="tsd-signature-type">Point</a> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the minimum location of this Part to which the user may drag using the <a href="DraggingTool.html">DraggingTool</a>.</p>
<p>Value must be of type <a href="Point.html">Point</a>.
The initial value is (-Infinity, -Infinity), which imposes no position constraint.
A X value of NaN causes <a href="Diagram.html#computeMove">Diagram.computeMove</a> to use the part&#39;s current location&#39;s X value as the minimum,
and similarly for NaN as the Y value.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#location">location</a>, <a href="Part.html#maxLocation">maxLocation</a>, <a href="Part.html#dragComputation">dragComputation</a>, <a href="Part.html#movable">movable</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="movable" class="tsd-anchor"></a>
<h3>
movable
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets whether the user may move this part.
The initial value is true.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#canMove">canMove</a>, <a href="Part.html#dragComputation">dragComputation</a>, <a href="Part.html#maxLocation">maxLocation</a>, <a href="Part.html#minLocation">minLocation</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="reshapable" class="tsd-anchor"></a>
<h3>
reshapable
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets whether the user may reshape this part.
The initial value is false.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#canReshape">canReshape</a>, <a href="LinkReshapingTool.html">LinkReshapingTool</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="resizable" class="tsd-anchor"></a>
<h3>
resizable
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets whether the user may resize this part.
The initial value is false.</p>
<p>If you set this to true you may also want to set <a href="Part.html#resizeObjectName">resizeObjectName</a>
to the <a href="GraphObject.html#name">GraphObject.name</a>d element that you want the user to resize.
It is also commonplace to add a TwoWay <a href="Binding.html">Binding</a> of that named element&#39;s
<a href="GraphObject.html#desiredSize">GraphObject.desiredSize</a> in order to save to the model data the value that the user
set via the <a href="ResizingTool.html">ResizingTool</a>.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#canResize">canResize</a>, <a href="Part.html#resizeObjectName">resizeObjectName</a>, <a href="Part.html#resizeCellSize">resizeCellSize</a>, <a href="Part.html#resizeAdornmentTemplate">resizeAdornmentTemplate</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="resizeAdornmentTemplate" class="tsd-anchor"></a>
<h3>
resize<wbr>Adornment<wbr>Template
<span class="tsd-signature-symbol">: </span><a href="Adornment.html" class="tsd-signature-type">Adornment</a><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">null</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the adornment template used to create a resize handle <a href="Adornment.html">Adornment</a> for this part.
This is used by the <a href="ResizingTool.html">ResizingTool</a>, <a href="ToolManager.html#resizingTool">ToolManager.resizingTool</a>.</p>
<p>If an Adornment is supplied, it is normally a <a href="Panel.html#static-Spot">Panel.Spot</a> panel that contains a <a href="Placeholder.html">Placeholder</a>
with some number of resize handles at the four corners or at the four side midpoints.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#resizable">resizable</a>, <a href="Part.html#resizeObjectName">resizeObjectName</a>, <a href="ResizingTool.html">ResizingTool</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="resizeCellSize" class="tsd-anchor"></a>
<h3>
resize<wbr>Cell<wbr>Size
<span class="tsd-signature-symbol">: </span><a href="Size.html" class="tsd-signature-type">Size</a> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the width and height multiples used when resizing.
By default this property is the Size(NaN, NaN).</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#resizable">resizable</a>, <a href="Part.html#resizeObjectName">resizeObjectName</a>, <a href="ResizingTool.html">ResizingTool</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-get-signature tsd-parent-kind-class">
<a name="resizeObject" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagReadOnly">Read-only</span>
resize<wbr>Object
<span class="tsd-signature-symbol">: </span><a href="GraphObject.html" class="tsd-signature-type">GraphObject</a> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>This read-only property returns the <a href="GraphObject.html">GraphObject</a> that should get resize handles when this part is selected.
The value will be in the visual tree of this Part and is usually named with
the value of <a href="Part.html#resizeObjectName">resizeObjectName</a>.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#resizable">resizable</a>, <a href="Part.html#resizeObjectName">resizeObjectName</a>, <a href="ResizingTool.html">ResizingTool</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="resizeObjectName" class="tsd-anchor"></a>
<h3>
resize<wbr>Object<wbr>Name
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the name of the <a href="GraphObject.html">GraphObject</a> that should get a resize handle
when this part is selected.
The value of this property affects the value of <a href="Part.html#resizeObject">resizeObject</a>.
The initial value is an empty string, meaning the whole <a href="Part.html">Part</a> itself gets any resize handle.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#resizable">resizable</a>, <a href="Part.html#resizeObject">resizeObject</a>, <a href="ResizingTool.html">ResizingTool</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="rotatable" class="tsd-anchor"></a>
<h3>
rotatable
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets whether the user may rotate this part.
The initial value is false.</p>
<p>If you set this to true you may also want to set <a href="Part.html#rotateObjectName">rotateObjectName</a>
to the <a href="GraphObject.html#name">GraphObject.name</a>d element that you want the user to rotate.
It is also commonplace to add a TwoWay <a href="Binding.html">Binding</a> of that named element&#39;s
<a href="GraphObject.html#angle">GraphObject.angle</a> in order to save to the model data the value that the user
set via the <a href="RotatingTool.html">RotatingTool</a>.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#canRotate">canRotate</a>, <a href="Part.html#rotateObjectName">rotateObjectName</a>, <a href="Part.html#rotateAdornmentTemplate">rotateAdornmentTemplate</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="rotateAdornmentTemplate" class="tsd-anchor"></a>
<h3>
rotate<wbr>Adornment<wbr>Template
<span class="tsd-signature-symbol">: </span><a href="Adornment.html" class="tsd-signature-type">Adornment</a><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">null</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the adornment template used to create a rotation handle <a href="Adornment.html">Adornment</a> for this part.
This is used by the <a href="RotatingTool.html">RotatingTool</a>, <a href="ToolManager.html#rotatingTool">ToolManager.rotatingTool</a>.</p>
<p>This Adornment should not have a <a href="Placeholder.html">Placeholder</a> in it, because the RotatingTool will position it away from the
<a href="Part.html#rotateObject">rotateObject</a> at its <a href="GraphObject.html#angle">GraphObject.angle</a>.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#rotatable">rotatable</a>, <a href="Part.html#rotateObjectName">rotateObjectName</a>, <a href="RotatingTool.html">RotatingTool</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-get-signature tsd-parent-kind-class">
<a name="rotateObject" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagReadOnly">Read-only</span>
rotate<wbr>Object
<span class="tsd-signature-symbol">: </span><a href="GraphObject.html" class="tsd-signature-type">GraphObject</a> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>This read-only property returns the <a href="GraphObject.html">GraphObject</a> that should get rotate handles when this part is selected.
The value will be in the visual tree of this Part and is usually named with
the value of <a href="Part.html#rotateObjectName">rotateObjectName</a>.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#rotatable">rotatable</a>, <a href="Part.html#rotateObjectName">rotateObjectName</a>, <a href="RotatingTool.html">RotatingTool</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="rotateObjectName" class="tsd-anchor"></a>
<h3>
rotate<wbr>Object<wbr>Name
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the name of the <a href="GraphObject.html">GraphObject</a> that should get a rotate handle
when this part is selected.
The value of this property affects the value of <a href="Part.html#rotateObject">rotateObject</a>.
The initial value is an empty string, meaning the whole <a href="Part.html">Part</a> itself gets any rotate handle.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#rotatable">rotatable</a>, <a href="Part.html#rotateObject">rotateObject</a>, <a href="RotatingTool.html">RotatingTool</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="rotationSpot" class="tsd-anchor"></a>
<h3>
rotation<wbr>Spot
<span class="tsd-signature-symbol">: </span><a href="Spot.html" class="tsd-signature-type">Spot</a> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the spot on the <a href="Part.html#rotateObject">rotateObject</a>
that is used in rotating this part with the <a href="RotatingTool.html">RotatingTool</a>.</p>
<p>Value must be of the type <a href="Spot.html">Spot</a>.
The value must be a specific spot -- i.e. one for which <a href="Spot.html#isSpot">Spot.isSpot</a> is true, or else <code>Spot.Default</code>.</p>
<p>If the value is <code>Spot.Default</code>, the <a href="RotatingTool.html">RotatingTool</a> uses
the locationSpot if the <a href="Part.html#rotateObject">rotateObject</a> is equal to the <a href="Part.html#locationObject">locationObject</a>, otherwise
it uses <code>Spot.Center</code>.</p>
<p>The initial value is <code>Spot.Default</code>.</p>
<dl class="tsd-comment-tags">
<dt>since</dt>
<dd><p>2.0</p>
</dd>
<dt>see</dt>
<dd><p><a href="Part.html#rotateObjectName">rotateObjectName</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="selectable" class="tsd-anchor"></a>
<h3>
selectable
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets whether the user may select this part.
The initial value is true.</p>
<p>If you set this to true you may also want to set <a href="Part.html#selectionObjectName">selectionObjectName</a>
to the <a href="GraphObject.html#name">GraphObject.name</a>d element that you want to be adorned
when the Part is selected.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#canSelect">canSelect</a>, <a href="Part.html#isSelected">isSelected</a>, <a href="Part.html#selectionAdorned">selectionAdorned</a>, <a href="Part.html#selectionObjectName">selectionObjectName</a>, <a href="Part.html#selectionAdornmentTemplate">selectionAdornmentTemplate</a>, <a href="Part.html#selectionChanged">selectionChanged</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="selectionAdorned" class="tsd-anchor"></a>
<h3>
selection<wbr>Adorned
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets whether a selection adornment is shown for this part when it is selected.
The initial value is true.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#selectionChanged">selectionChanged</a>, <a href="Part.html#selectionAdornmentTemplate">selectionAdornmentTemplate</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="selectionAdornmentTemplate" class="tsd-anchor"></a>
<h3>
selection<wbr>Adornment<wbr>Template
<span class="tsd-signature-symbol">: </span><a href="Adornment.html" class="tsd-signature-type">Adornment</a><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">null</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the <a href="Adornment.html">Adornment</a> template used to create a selection handle for this Part.</p>
<p>If this is null, depending on the class of this Part, the value of <a href="Diagram.html#nodeSelectionAdornmentTemplate">Diagram.nodeSelectionAdornmentTemplate</a>, <a href="Diagram.html#groupSelectionAdornmentTemplate">Diagram.groupSelectionAdornmentTemplate</a>,
or <a href="Diagram.html#linkSelectionAdornmentTemplate">Diagram.linkSelectionAdornmentTemplate</a> is used instead.</p>
<p>It is commonplace to make use of a <a href="Placeholder.html">Placeholder</a> in an <a href="Adornment.html">Adornment</a> for a <a href="Node.html">Node</a>, <a href="Group.html">Group</a>, or simple <a href="Part.html">Part</a>.
The Placeholder represents the <a href="Adornment.html#adornedObject">Adornment.adornedObject</a> of the adorned Part.
For <a href="Link.html">Link</a>s, the Adornment must be of <a href="Panel.html#type">Panel.type</a> <a href="Panel.html#static-Link">Panel.Link</a>.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#selectable">selectable</a>, <a href="Part.html#selectionObjectName">selectionObjectName</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="selectionChanged" class="tsd-anchor"></a>
<h3>
selection<wbr>Changed
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">function</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">thisPart</span><span class="tsd-signature-symbol">: </span><a href="Part.html" class="tsd-signature-type">Part</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><span class="tsd-signature-type">null</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the function to execute when this part is selected or deselected.
It is typically used to modify the appearance of the part.
This function must not select or deselect any parts.</p>
<p>If this property value is a function, it is called with one argument,
this <a href="Part.html">Part</a> that was selected or that became unselected.
When it is called, the value of <a href="Diagram.html#skipsUndoManager">Diagram.skipsUndoManager</a> is temporarily set to true.
By default this property is null.</p>
<p>This function is called with <a href="Diagram.html#skipsUndoManager">Diagram.skipsUndoManager</a> temporarily set to true,
so that any changes to <a href="GraphObject.html">GraphObject</a>s are not recorded in the <a href="UndoManager.html">UndoManager</a>.
You do not need to start and commit any transaction in this function.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#isSelected">isSelected</a>, <a href="Part.html#selectionAdorned">selectionAdorned</a>, <a href="Part.html#selectionAdornmentTemplate">selectionAdornmentTemplate</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-get-signature tsd-parent-kind-class">
<a name="selectionObject" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagReadOnly">Read-only</span>
selection<wbr>Object
<span class="tsd-signature-symbol">: </span><a href="GraphObject.html" class="tsd-signature-type">GraphObject</a> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>This read-only property returns the <a href="GraphObject.html">GraphObject</a> that should get a selection handle when this part is selected.
The value will be in the visual tree of this Part and is usually named with
the value of <a href="Part.html#selectionObjectName">selectionObjectName</a>.
When the <a href="Part.html#selectionObjectName">selectionObjectName</a> is unspecified, this whole Part is used as the &quot;selection object&quot;.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#selectable">selectable</a>, <a href="Part.html#selectionObjectName">selectionObjectName</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="selectionObjectName" class="tsd-anchor"></a>
<h3>
selection<wbr>Object<wbr>Name
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the name of the <a href="GraphObject.html">GraphObject</a> that should get a selection handle
when this part is selected.
The value of this property affects the value of <a href="Part.html#selectionObject">selectionObject</a>.
The initial value is an empty string, meaning the whole <a href="Part.html">Part</a> itself gets any selection handle.</p>
<p>If no GraphObject has a <a href="GraphObject.html#name">GraphObject.name</a> that is this name, <a href="Part.html#selectionObject">selectionObject</a> returns the whole Part.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#selectable">selectable</a>, <a href="Part.html#selectionObject">selectionObject</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="shadowBlur" class="tsd-anchor"></a>
<h3>
shadow<wbr>Blur
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the numerical value that describes the shadow&#39;s blur. Number must be a non-negative non-infinity float.
A value of 0 would mean the shadow does not blur and larger numbers represent increasingly more blur.
The total blur area is independent of the Part&#39;s area and can become quite large as this number is increased.</p>
<p>This value is not affected by scale. Default value is 4.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#isShadowed">isShadowed</a>, <a href="Part.html#shadowOffset">shadowOffset</a>, <a href="Part.html#shadowColor">shadowColor</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="shadowColor" class="tsd-anchor"></a>
<h3>
shadow<wbr>Color
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the CSS string that describes a shadow color. Default is &#39;gray&#39;.
Brushes cannot be used for this property -- only strings.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#isShadowed">isShadowed</a>, <a href="Part.html#shadowOffset">shadowOffset</a>, <a href="Part.html#shadowBlur">shadowBlur</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="shadowOffset" class="tsd-anchor"></a>
<h3>
shadow<wbr>Offset
<span class="tsd-signature-symbol">: </span><a href="Point.html" class="tsd-signature-type">Point</a> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the X and Y offset of this part&#39;s shadow. This is only relevant if <a href="Part.html#isShadowed">isShadowed</a> is true.
The initial value is (6, 6).</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#isShadowed">isShadowed</a>, <a href="Part.html#shadowColor">shadowColor</a>, <a href="Part.html#shadowBlur">shadowBlur</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="text" class="tsd-anchor"></a>
<h3>
text
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets a text string that is associated with this part.</p>
<p>The initial value is an empty string.
This value is often used for sorting.</p>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="textEditable" class="tsd-anchor"></a>
<h3>
text<wbr>Editable
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets whether the user may do in-place text editing on <a href="TextBlock.html">TextBlock</a>s in this part
that have <a href="TextBlock.html#editable">TextBlock.editable</a> set to true.
The initial value is true.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#canEdit">canEdit</a>, <a href="TextBlock.html#editable">TextBlock.editable</a></p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class">
<a name="zOrder" class="tsd-anchor"></a>
<h3>
z<wbr>Order
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span> </h3>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets or sets the Z-ordering position of this Part within its Layer.</p>
<p>Within the same layer, nodes with larger zOrder values are placed in front of nodes with smaller zOrder values.
When the value is NaN the ordering is not specified.
The default value is NaN.</p>
<p>When a <a href="Group.html">Group</a> has a zOrder value of NaN, it is automatically placed behind its member nodes and links
that also have no zOrder.
Such automatic ordering is not guaranteed if any nodes including the groups have a numeric zOrder.
If you do want to specify the zOrder of nodes, you should also specify the zOrder of their containing groups
unless those groups are in different layers.</p>
<dl class="tsd-comment-tags">
<dt>since</dt>
<dd><p>1.6</p>
</dd>
</dl>
</div>
</li>
</ul>
</section>
</section>
<section class="tsd-panel-group tsd-member-group ">
<h2>Methods</h2>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="addAdornment" class="tsd-anchor"></a>
<h3>
add<wbr>Adornment
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">add<wbr>Adornment<span class="tsd-signature-symbol">(</span>category<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span>, ad<span class="tsd-signature-symbol">: </span><a href="Adornment.html" class="tsd-signature-type">Adornment</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Associate an <a href="Adornment.html">Adornment</a> with this Part, perhaps replacing any existing adornment of the same category.
Don&#39;t forget to set <a href="Adornment.html#adornedObject">Adornment.adornedObject</a> before calling this method.
This adds the Adornment to the <a href="Layer.html">Layer</a> named by <a href="Part.html#layerName">layerName</a>, normally &quot;Adornment&quot;.</p>
<p>Adornments are also data bound to the same data that this Part has, if any.
If the Adornment was already associated with a Part, it is unassociated with that old Part.</p>
<p>This method should not be called on templates.</p>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>category: <span class="tsd-signature-type">string</span></h5>
<div class="tsd-comment tsd-typography">
<p>a string identifying the kind or role of the given adornment for this Part.</p>
</div>
</li>
<li>
<h5>ad: <a href="Adornment.html" class="tsd-signature-type">Adornment</a></h5>
<div class="tsd-comment tsd-typography">
<p>the new Adornment.</p>
</div>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="canCopy" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagVirtual">Virtual</span>
can<wbr>Copy
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">can<wbr>Copy<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></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>This predicate returns true if <a href="Part.html#copyable">copyable</a> is true,
if the layer&#39;s <a href="Layer.html#allowCopy">Layer.allowCopy</a> is true, and
if the diagram&#39;s <a href="Diagram.html#allowCopy">Diagram.allowCopy</a> is true.</p>
<p>This does not check <a href="Diagram.html#isReadOnly">Diagram.isReadOnly</a> or <a href="Model.html#isReadOnly">Model.isReadOnly</a>,
but commands and tools should check those properties.</p>
</div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
<p>true if the user may copy this part.</p>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="canDelete" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagVirtual">Virtual</span>
can<wbr>Delete
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">can<wbr>Delete<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></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>This predicate returns true if <a href="Part.html#deletable">deletable</a> is true,
if the layer&#39;s <a href="Layer.html#allowDelete">Layer.allowDelete</a> is true, and
if the diagram&#39;s <a href="Diagram.html#allowDelete">Diagram.allowDelete</a> is true.</p>
<p>This does not check <a href="Diagram.html#isReadOnly">Diagram.isReadOnly</a> or <a href="Model.html#isReadOnly">Model.isReadOnly</a>,
but commands and tools should check those properties.</p>
</div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
<p>true if the user may delete this part.</p>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="canEdit" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagVirtual">Virtual</span>
can<wbr>Edit
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">can<wbr>Edit<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></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>This predicate returns true if <a href="Part.html#textEditable">textEditable</a> is true,
if the layer&#39;s <a href="Layer.html#allowTextEdit">Layer.allowTextEdit</a> is true, and
if the diagram&#39;s <a href="Diagram.html#allowTextEdit">Diagram.allowTextEdit</a> is true.</p>
<p>This does not check <a href="Diagram.html#isReadOnly">Diagram.isReadOnly</a> or <a href="Model.html#isReadOnly">Model.isReadOnly</a>,
but commands and tools should check those properties.</p>
</div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
<p>true if the user may edit this part.</p>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="canGroup" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagVirtual">Virtual</span>
can<wbr>Group
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">can<wbr>Group<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></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>This predicate returns true if <a href="Part.html#groupable">groupable</a> is true,
if the layer&#39;s <a href="Layer.html#allowGroup">Layer.allowGroup</a> is true, and
if the diagram&#39;s <a href="Diagram.html#allowGroup">Diagram.allowGroup</a> is true.</p>
<p>This does not check <a href="Diagram.html#isReadOnly">Diagram.isReadOnly</a> or <a href="Model.html#isReadOnly">Model.isReadOnly</a>,
but commands and tools should check those properties.</p>
</div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
<p>true if the user may group this part.</p>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="canLayout" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagVirtual">Virtual</span>
can<wbr>Layout
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">can<wbr>Layout<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></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>This predicate is called by Layout implementations to decide whether this Part
should be positioned and might affect the positioning of other Parts.</p>
<p>This is false if <a href="Part.html#isLayoutPositioned">isLayoutPositioned</a> is false, if <a href="Part.html#isVisible">isVisible</a> returns false,
or if the part is in a temporary <a href="Layer.html">Layer</a>.</p>
<p>This does not check <a href="Diagram.html#isReadOnly">Diagram.isReadOnly</a> or <a href="Model.html#isReadOnly">Model.isReadOnly</a>,
but commands and tools should check those properties.</p>
</div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="canMove" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagVirtual">Virtual</span>
can<wbr>Move
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">can<wbr>Move<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></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>This predicate returns true if <a href="Part.html#movable">movable</a> is true,
if the layer&#39;s <a href="Layer.html#allowMove">Layer.allowMove</a> is true, and
if the diagram&#39;s <a href="Diagram.html#allowMove">Diagram.allowMove</a> is true.</p>
<p>This does not check <a href="Diagram.html#isReadOnly">Diagram.isReadOnly</a> or <a href="Model.html#isReadOnly">Model.isReadOnly</a>,
but commands and tools should check those properties.</p>
</div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
<p>true if the user may move this part.</p>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="canReshape" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagVirtual">Virtual</span>
can<wbr>Reshape
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">can<wbr>Reshape<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></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>This predicate returns true if <a href="Part.html#reshapable">reshapable</a> is true,
if the layer&#39;s <a href="Layer.html#allowReshape">Layer.allowReshape</a> is true, and
if the diagram&#39;s <a href="Diagram.html#allowReshape">Diagram.allowReshape</a> is true.</p>
<p>This does not check <a href="Diagram.html#isReadOnly">Diagram.isReadOnly</a> or <a href="Model.html#isReadOnly">Model.isReadOnly</a>,
but commands and tools should check those properties.</p>
</div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
<p>true if the user may reshape this part.</p>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="canResize" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagVirtual">Virtual</span>
can<wbr>Resize
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">can<wbr>Resize<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></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>This predicate returns true if <a href="Part.html#resizable">resizable</a> is true,
if the layer&#39;s <a href="Layer.html#allowResize">Layer.allowResize</a> is true, and
if the diagram&#39;s <a href="Diagram.html#allowResize">Diagram.allowResize</a> is true.</p>
<p>This does not check <a href="Diagram.html#isReadOnly">Diagram.isReadOnly</a> or <a href="Model.html#isReadOnly">Model.isReadOnly</a>,
but commands and tools should check those properties.</p>
</div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
<p>true if the user may resize this part.</p>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="canRotate" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagVirtual">Virtual</span>
can<wbr>Rotate
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">can<wbr>Rotate<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></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>This predicate returns true if <a href="Part.html#rotatable">rotatable</a> is true,
if the layer&#39;s <a href="Layer.html#allowRotate">Layer.allowRotate</a> is true, and
if the diagram&#39;s <a href="Diagram.html#allowRotate">Diagram.allowRotate</a> is true.</p>
<p>This does not check <a href="Diagram.html#isReadOnly">Diagram.isReadOnly</a> or <a href="Model.html#isReadOnly">Model.isReadOnly</a>,
but commands and tools should check those properties.</p>
</div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
<p>true if the user may rotate this part.</p>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="canSelect" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagVirtual">Virtual</span>
can<wbr>Select
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">can<wbr>Select<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></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>This predicate returns true if <a href="Part.html#selectable">selectable</a> is true,
if the layer&#39;s <a href="Layer.html#allowSelect">Layer.allowSelect</a> is true, and
if the diagram&#39;s <a href="Diagram.html#allowSelect">Diagram.allowSelect</a> is true.</p>
<p>This does not check <a href="Diagram.html#isReadOnly">Diagram.isReadOnly</a> or <a href="Model.html#isReadOnly">Model.isReadOnly</a>,
but commands and tools should check those properties.</p>
</div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
<p>true if the user may select this part.</p>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="clearAdornments" class="tsd-anchor"></a>
<h3>
clear<wbr>Adornments
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">clear<wbr>Adornments<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Remove all adornments associated with this part.</p>
</div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="ensureBounds" class="tsd-anchor"></a>
<h3>
ensure<wbr>Bounds
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">ensure<wbr>Bounds<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Measures if needed to make sure the <a href="GraphObject.html#measuredBounds">GraphObject.measuredBounds</a> and <a href="GraphObject.html#naturalBounds">GraphObject.naturalBounds</a> are all real numbers,
primarily to get the actual width and height.
<a href="GraphObject.html#actualBounds">GraphObject.actualBounds</a> will get a real width and height, but the x and y values may continue to be <code>NaN</code>
if they were that way beforehand.</p>
<p>This is sometimes necessary to call when defining custom layouts or implementing virtualization,
so that it can work with the actual size of the nodes.</p>
<p>For efficiency, do not call this method unnecessarily.</p>
<dl class="tsd-comment-tags">
<dt>since</dt>
<dd><p>1.6</p>
</dd>
</dl>
</div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="findAdornment" class="tsd-anchor"></a>
<h3>
find<wbr>Adornment
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">find<wbr>Adornment<span class="tsd-signature-symbol">(</span>category<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="Adornment.html" class="tsd-signature-type">Adornment</a><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">null</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Find an <a href="Adornment.html">Adornment</a> of a given category associated with this Part.</p>
<p>Templates should not have any adornments.</p>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>category: <span class="tsd-signature-type">string</span></h5>
</li>
</ul>
<h4 class="tsd-returns-title">Returns
<a href="Adornment.html" class="tsd-signature-type">Adornment</a>
<span class="tsd-signature-symbol"> | </span>
<span class="tsd-signature-type">null</span>
</h4>
<p>Returns null if no such Adornment was found.</p>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="findCommonContainingGroup" class="tsd-anchor"></a>
<h3>
find<wbr>Common<wbr>Containing<wbr>Group
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">find<wbr>Common<wbr>Containing<wbr>Group<span class="tsd-signature-symbol">(</span>other<span class="tsd-signature-symbol">: </span><a href="Part.html" class="tsd-signature-type">Part</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="Group.html" class="tsd-signature-type">Group</a><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">null</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Find the <a href="Group.html">Group</a> that perhaps indirectly contains both this part and another one.
If this is a Group and it contains the OTHER Part, return this.
If the OTHER Part is a Group and it contains this Part, return that OTHER Part.</p>
<p>This returns null if the two parts are unrelated in the hierarchy of part membership.
If non-null, the result is a <a href="Group.html">Group</a>.</p>
<p>If you want to find the <a href="Node.html">Node</a> that is the tree parent of two Nodes,
call <a href="Node.html#findCommonTreeParent">Node.findCommonTreeParent</a>.</p>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>other: <a href="Part.html" class="tsd-signature-type">Part</a></h5>
</li>
</ul>
<h4 class="tsd-returns-title">Returns
<a href="Group.html" class="tsd-signature-type">Group</a>
<span class="tsd-signature-symbol"> | </span>
<span class="tsd-signature-type">null</span>
</h4>
<p>may be null</p>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="findSubGraphLevel" class="tsd-anchor"></a>
<h3>
find<wbr>Sub<wbr>Graph<wbr>Level
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">find<wbr>Sub<wbr>Graph<wbr>Level<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Return how deep this part is in the hierarchy of nested <a href="Group.html">Group</a>s.
For parts that have no <a href="Part.html#containingGroup">containingGroup</a> this returns zero.</p>
<p>If you want to know how deep a Node is in a tree structure, call <a href="Node.html#findTreeLevel">Node.findTreeLevel</a>.</p>
<dl class="tsd-comment-tags">
<dt>since</dt>
<dd><p>1.5</p>
</dd>
</dl>
</div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">number</span></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="findTopLevelPart" class="tsd-anchor"></a>
<h3>
find<wbr>Top<wbr>Level<wbr>Part
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">find<wbr>Top<wbr>Level<wbr>Part<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="Part.html" class="tsd-signature-type">Part</a></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Gets the top-level Part for this part, which is itself when <a href="Part.html#isTopLevel">isTopLevel</a> is true.
If this Part is a member of a <a href="Group.html">Group</a>, this returns the top-level Part for that Group.
If this is a <a href="Node.html">Node</a> that is a label node for a labeled <a href="Link.html">Link</a>, this returns the top-level Part for that Link.</p>
<p>If this is a Node and you are searching for the root of the tree that this node is in, use <a href="Node.html#findTreeRoot">Node.findTreeRoot</a>.</p>
<dl class="tsd-comment-tags">
<dt>since</dt>
<dd><p>1.1</p>
</dd>
</dl>
</div>
<h4 class="tsd-returns-title">Returns <a href="Part.html" class="tsd-signature-type">Part</a></h4>
<p>This will not return null.</p>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="getDocumentBounds" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagOverride">Override</span>
get<wbr>Document<wbr>Bounds
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">get<wbr>Document<wbr>Bounds<span class="tsd-signature-symbol">(</span>result<span class="tsd-signature-symbol">?: </span><a href="Rect.html" class="tsd-signature-type">Rect</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="Rect.html" class="tsd-signature-type">Rect</a></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Returns the Rect in document coordinates for this object&#39;s bounds.
If this GraphObject is a Part, the rect will be identical to its <a href="GraphObject.html#actualBounds">actualBounds</a>.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="GraphObject.html#getDocumentPoint">getDocumentPoint</a></p>
</dd>
<dt>since</dt>
<dd><p>2.0</p>
</dd>
</dl>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5><span class="tsd-flag ts-flagOptional">Optional</span> result: <a href="Rect.html" class="tsd-signature-type">Rect</a></h5>
<div class="tsd-comment tsd-typography">
<p>an optional Rect that is modified and returned.</p>
</div>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <a href="Rect.html" class="tsd-signature-type">Rect</a></h4>
<p>in document coordinates.</p>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="invalidateLayout" class="tsd-anchor"></a>
<h3>
invalidate<wbr>Layout
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">invalidate<wbr>Layout<span class="tsd-signature-symbol">(</span>condition<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></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Invalidate the <a href="Layout.html">Layout</a> that is responsible for positioning this Part.
If this part is in a <a href="Group.html">Group</a>, invalidate its <a href="Group.html#layout">Group.layout</a>, if it has one.
Otherwise invalidate the <a href="Diagram.html#layout">Diagram.layout</a>.</p>
<p>But note that if <a href="Part.html#isLayoutPositioned">isLayoutPositioned</a> is false, or if it is in a temporary <a href="Layer.html">Layer</a>,
or if it is not in a diagram or group, no layout is invalidated.</p>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5><span class="tsd-flag ts-flagOptional">Optional</span> condition: <span class="tsd-signature-type">number</span></h5>
<div class="tsd-comment tsd-typography">
<p>the reason that the layout should be invalidated;
if this argument is not supplied, any value of <a href="Part.html#layoutConditions">layoutConditions</a> other than <a href="Part.html#static-LayoutNone">Part.LayoutNone</a>
will allow the layout to be invalidated.</p>
</div>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="isMemberOf" class="tsd-anchor"></a>
<h3>
is<wbr>Member<wbr>Of
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">is<wbr>Member<wbr>Of<span class="tsd-signature-symbol">(</span>part<span class="tsd-signature-symbol">: </span><a href="Part.html" class="tsd-signature-type">Part</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>This predicate is true if this part is a member of the given <a href="Part.html">Part</a>, perhaps indirectly.</p>
<p>If the given part is a <a href="Group.html">Group</a> and this part is a member of the given group, this returns true.
If this part is a <a href="Node.html">Node</a> and it is a label node for the given link, this returns true.
Otherwise this searches recursively any <a href="Part.html#containingGroup">Part.containingGroup</a> of the given part.</p>
<p>A part cannot be contained by itself.
A template should not be a member of any group.</p>
<p>If this is a Node and you want to find whether it is in a subtree whose root is a given Node, use <a href="Node.html#isInTreeOf">Node.isInTreeOf</a>.</p>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>part: <a href="Part.html" class="tsd-signature-type">Part</a></h5>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="isVisible" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagVirtual">Virtual</span>
is<wbr>Visible
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">is<wbr>Visible<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></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>This predicate is true if this Part can be seen.
Parts that can be seen can be manipulated by the user, can take space in the document, or can take part in a layout,
among many possibilities.
Note that the value of this predicate can often be false even while <a href="GraphObject.html#visible">GraphObject.visible</a> is true.</p>
<p>A Part is not seen if it is not <a href="GraphObject.html#visible">GraphObject.visible</a> or if it is in a <a href="Layer.html">Layer</a> that is not <a href="Layer.html#visible">Layer.visible</a>.</p>
<p>If a Part is a member of a <a href="Group.html">Group</a> and the Group is not <a href="Group.html#isSubGraphExpanded">Group.isSubGraphExpanded</a>, the part is not seen.
(The containing Group might still be visible.)</p>
<p>If a <a href="Node.html">Node</a> is a &quot;tree child&quot; of a Node that is not <a href="Node.html#isTreeExpanded">Node.isTreeExpanded</a>, the node is not seen.
(The parent Node might still be visible.)</p>
<p>If a <a href="Link.html">Link</a> is connected to or from a <a href="Node.html">Node</a> that is not <code>isVisible()</code>
and is not a member of a <a href="Group.html">Group</a> that <code>isVisible()</code>, the link is not seen.</p>
<p>If a <a href="Node.html">Node</a> is a &quot;link label&quot; of a <a href="Link.html">Link</a> and that Link is not <code>isVisible()</code>, the node is not seen.</p>
<p>This is different from <a href="GraphObject.html#isVisibleObject">GraphObject.isVisibleObject</a>,
which ignores whether the <a href="Layer.html">Layer</a> is visible and just checks <a href="GraphObject.html#visible">GraphObject.visible</a>
up the chain of containing <a href="Panel.html">Panel</a>s.</p>
<p>If you want to know whether a Part is in the Diagram&#39;s viewport, try:</p>
<pre><code class="hljs js"> diagram.viewportBounds.containsRect(part.actualBounds);</code></pre>
<p>or:</p>
<pre><code class="hljs js"> diagram.viewportBounds.intersectsRect(part.actualBounds);</code></pre>
</div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4>
<p>true if <a href="GraphObject.html#visible">GraphObject.visible</a> is true and if <a href="Layer.html#visible">Layer.visible</a> is true.</p>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="move" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagVirtual">Virtual</span>
move
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">move<span class="tsd-signature-symbol">(</span>newpos<span class="tsd-signature-symbol">: </span><a href="Point.html" class="tsd-signature-type">Point</a>, useLocation<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">void</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Move this part and any parts that are owned by this part to a new position.</p>
<p>If this part is a <a href="Group.html">Group</a>, it also moves all of its members, recursively.
If this part is a <a href="Link.html">Link</a>, it also moves all of its label nodes.</p>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>newpos: <a href="Point.html" class="tsd-signature-type">Point</a></h5>
<div class="tsd-comment tsd-typography">
<p>a new <a href="Point.html">Point</a> in document coordinates.</p>
</div>
</li>
<li>
<h5><span class="tsd-flag ts-flagOptional">Optional</span> useLocation: <span class="tsd-signature-type">boolean</span></h5>
<div class="tsd-comment tsd-typography">
<p>true if you want to set the <a href="Part.html#location">location</a> instead of the position. False by default.</p>
</div>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="moveTo" class="tsd-anchor"></a>
<h3>
move<wbr>To
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">move<wbr>To<span class="tsd-signature-symbol">(</span>newx<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span>, newy<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span>, useLocation<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">void</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Move this part and any parts that are owned by this part to a new position.
This just calls <a href="Part.html#move">move</a> without the caller having to allocate a new <a href="Point.html">Point</a>.</p>
<dl class="tsd-comment-tags">
<dt>since</dt>
<dd><p>1.4</p>
</dd>
</dl>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>newx: <span class="tsd-signature-type">number</span></h5>
<div class="tsd-comment tsd-typography">
<p>a new X value in document coordinates.</p>
</div>
</li>
<li>
<h5>newy: <span class="tsd-signature-type">number</span></h5>
<div class="tsd-comment tsd-typography">
<p>a new Y value in document coordinates.</p>
</div>
</li>
<li>
<h5><span class="tsd-flag ts-flagOptional">Optional</span> useLocation: <span class="tsd-signature-type">boolean</span></h5>
<div class="tsd-comment tsd-typography">
<p>true if you want to set the <a href="Part.html#location">location</a> instead of the position. False by default.</p>
</div>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="removeAdornment" class="tsd-anchor"></a>
<h3>
remove<wbr>Adornment
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">remove<wbr>Adornment<span class="tsd-signature-symbol">(</span>category<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Remove any <a href="Adornment.html">Adornment</a> of the given category that may be associated with this Part.</p>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>category: <span class="tsd-signature-type">string</span></h5>
<div class="tsd-comment tsd-typography">
<p>a string identifying the kind or role of the given adornment for this Part.</p>
</div>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="updateAdornments" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagVirtual">Virtual</span>
update<wbr>Adornments
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">update<wbr>Adornments<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>This is responsible for creating any selection <a href="Adornment.html">Adornment</a> (if this Part <a href="Part.html#isSelected">isSelected</a>) and
any tool adornments for this part.</p>
</div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="updateRelationshipsFromData" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagVirtual">Virtual</span>
update<wbr>Relationships<wbr>From<wbr>Data
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">update<wbr>Relationships<wbr>From<wbr>Data<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Update all of the references to nodes in case they had been modified in the model without
properly notifying the model by calling <a href="GraphLinksModel.html#setGroupKeyForNodeData">GraphLinksModel.setGroupKeyForNodeData</a> or
<a href="GraphLinksModel.html#setToKeyForLinkData">GraphLinksModel.setToKeyForLinkData</a> or other similar methods.
This method does not conduct a transaction, so you need to start and commit one yourself.</p>
<p>This only updates the relationships between nodes, to have them reflect what is now declared in the model data.
For example, in a GraphLinksModel if code has changed the value of the &quot;to&quot; property of a link data,
calling this method on the corresponding <a href="Link.html">Link</a> would cause the link to connect with
the <a href="Node.html">Node</a> whose data has the new key.</p>
<p>To update <a href="GraphObject.html">GraphObject</a> properties that are data bound, call <a href="Part.html#updateTargetBindings">updateTargetBindings</a>.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#updateTargetBindings">updateTargetBindings</a></p>
</dd>
<dt>since</dt>
<dd><p>1.5</p>
</dd>
</dl>
</div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="updateTargetBindings" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagOverride">Override</span>
update<wbr>Target<wbr>Bindings
</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">update<wbr>Target<wbr>Bindings<span class="tsd-signature-symbol">(</span>srcprop<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<div class="tsd-comment tsd-typography">
<p>Re-evaluate all data bindings in this Part,
in order to assign new property values to the <a href="GraphObject.html">GraphObject</a>s in this visual tree
based on this this object&#39;s <a href="Panel.html#data">data</a> property values.
This method does nothing if <a href="Panel.html#data">data</a> is null.</p>
<p>It is better to call <a href="Model.html#setDataProperty">Model.setDataProperty</a> to modify data properties,
because that will both record changes for undo/redo and will update all bindings
that make depend on that property.</p>
<p>To update relationships between nodes, call <a href="Part.html#updateRelationshipsFromData">updateRelationshipsFromData</a>.</p>
<dl class="tsd-comment-tags">
<dt>see</dt>
<dd><p><a href="Part.html#updateRelationshipsFromData">updateRelationshipsFromData</a></p>
</dd>
</dl>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5><span class="tsd-flag ts-flagOptional">Optional</span> srcprop: <span class="tsd-signature-type">string</span></h5>
<div class="tsd-comment tsd-typography">
<p>An optional source data property name:
when provided, only evaluates those <a href="Binding.html">Binding</a>s that use that particular property;
when not provided or when it is the empty string, all bindings are evaluated.</p>
</div>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
</li>
</ul>
</section>
</section>
<section class="tsd-panel-group tsd-member-group ">
<h2>Constants</h2>
<section class="tsd-panel tsd-member tsd-kind-constant tsd-parent-kind-class tsd-is-static">
<a name="static-LayoutAdded" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagStatic">Static</span>
Layout<wbr>Added
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span> </h3>
<div class="tsd-comment tsd-typography">
<p>This flag may be combined with other &quot;Layout&quot; flags as the value of the <a href="Part.html#layoutConditions">Part.layoutConditions</a> property to indicate that
when a Part is added to a Diagram or Group, it invalidates the <a href="Layout.html">Layout</a> responsible for the Part.</p>
</div>
</section>
<section class="tsd-panel tsd-member tsd-kind-constant tsd-parent-kind-class tsd-is-static">
<a name="static-LayoutGroupLayout" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagStatic">Static</span>
Layout<wbr>Group<wbr>Layout
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span> </h3>
<div class="tsd-comment tsd-typography">
<p>This flag may be combined with other &quot;Layout&quot; flags as the value of the <a href="Part.html#layoutConditions">Part.layoutConditions</a> property to indicate that
when a <a href="Group.html">Group</a> has been laid out, it invalidates the <a href="Layout.html">Layout</a> responsible for that Group;
this flag is ignored for Parts that are not Groups.</p>
</div>
</section>
<section class="tsd-panel tsd-member tsd-kind-constant tsd-parent-kind-class tsd-is-static">
<a name="static-LayoutHidden" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagStatic">Static</span>
Layout<wbr>Hidden
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span> </h3>
<div class="tsd-comment tsd-typography">
<p>This flag may be combined with other &quot;Layout&quot; flags as the value of the <a href="Part.html#layoutConditions">Part.layoutConditions</a> property to indicate that
when a Part&#39;s <a href="GraphObject.html#visible">GraphObject.visible</a> becomes false, it invalidates the <a href="Layout.html">Layout</a> responsible for the Part.</p>
</div>
</section>
<section class="tsd-panel tsd-member tsd-kind-constant tsd-parent-kind-class tsd-is-static">
<a name="static-LayoutNodeReplaced" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagStatic">Static</span>
Layout<wbr>Node<wbr>Replaced
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span> </h3>
<div class="tsd-comment tsd-typography">
<p>This flag may be combined with other &quot;Layout&quot; flags as the value of the <a href="Part.html#layoutConditions">Part.layoutConditions</a> property to indicate that
when a Node or simple Part&#39;s <a href="Part.html#category">category</a> changes, it invalidates the <a href="Layout.html">Layout</a> responsible for the Part;
this flag is ignored for Parts that are Links.</p>
</div>
</section>
<section class="tsd-panel tsd-member tsd-kind-constant tsd-parent-kind-class tsd-is-static">
<a name="static-LayoutNodeSized" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagStatic">Static</span>
Layout<wbr>Node<wbr>Sized
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span> </h3>
<div class="tsd-comment tsd-typography">
<p>This flag may be combined with other &quot;Layout&quot; flags as the value of the <a href="Part.html#layoutConditions">Part.layoutConditions</a> property to indicate that
when a Node or simple Part&#39;s <a href="GraphObject.html#actualBounds">GraphObject.actualBounds</a> changes size, it invalidates the <a href="Layout.html">Layout</a> responsible for the Part;
this flag is ignored for Parts that are Links.</p>
</div>
</section>
<section class="tsd-panel tsd-member tsd-kind-constant tsd-parent-kind-class tsd-is-static">
<a name="static-LayoutNone" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagStatic">Static</span>
Layout<wbr>None
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span> </h3>
<div class="tsd-comment tsd-typography">
<p>This value may be used as the value of the <a href="Part.html#layoutConditions">Part.layoutConditions</a> property to indicate that
no operation on this Part causes invalidation of the <a href="Layout.html">Layout</a> responsible for this Part.</p>
</div>
</section>
<section class="tsd-panel tsd-member tsd-kind-constant tsd-parent-kind-class tsd-is-static">
<a name="static-LayoutRemoved" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagStatic">Static</span>
Layout<wbr>Removed
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span> </h3>
<div class="tsd-comment tsd-typography">
<p>This flag may be combined with other &quot;Layout&quot; flags as the value of the <a href="Part.html#layoutConditions">Part.layoutConditions</a> property to indicate that
when a Part is removed from a Diagram or Group, it invalidates the <a href="Layout.html">Layout</a> responsible for the Part.</p>
</div>
</section>
<section class="tsd-panel tsd-member tsd-kind-constant tsd-parent-kind-class tsd-is-static">
<a name="static-LayoutShown" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagStatic">Static</span>
Layout<wbr>Shown
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span> </h3>
<div class="tsd-comment tsd-typography">
<p>This flag may be combined with other &quot;Layout&quot; flags as the value of the <a href="Part.html#layoutConditions">Part.layoutConditions</a> property to indicate that
when a Part&#39;s <a href="GraphObject.html#visible">GraphObject.visible</a> becomes true, it invalidates the <a href="Layout.html">Layout</a> responsible for the Part.</p>
</div>
</section>
<section class="tsd-panel tsd-member tsd-kind-constant tsd-parent-kind-class tsd-is-static">
<a name="static-LayoutStandard" class="tsd-anchor"></a>
<h3>
<span class="tsd-flag ts-flagStatic">Static</span>
Layout<wbr>Standard
<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span> </h3>
<div class="tsd-comment tsd-typography">
<p>This is the default value for the <a href="Part.html#layoutConditions">Part.layoutConditions</a> property, basically a combination of all of the conditions:
the <a href="Layout.html">Layout</a> responsible for the Part is invalidated when the Part is added or removed or replaced
from the Diagram or Group, or when it changes visibility or size, or when a Group&#39;s layout has been performed.</p>
</div>
</section>
</section>
</div>
<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
<nav class="tsd-navigation primary">
<ul>
<li class="globals ">
<a href="../index.html"><em>GoJS <wbr>Class <wbr>Index</em></a>
</li>
</ul>
</nav>
<nav class="tsd-navigation secondary menu-sticky">
<ul class="before-current">
</ul>
<ul class="current">
<li class="current tsd-kind-class">
<a href="Part.html" class="tsd-kind-icon">Part</a>
<ul>
<li class=" tsd-kind-constructor tsd-parent-kind-class">
<a href="Part.html#constructor" class="tsd-kind-icon">constructor</a>
</li>
<li class=" tsd-kind-get-signature tsd-parent-kind-class">
<a href="Part.html#adornments" class="tsd-kind-icon">adornments</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#category" class="tsd-kind-icon">category</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#containingGroup" class="tsd-kind-icon">containing<wbr>Group</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#containingGroupChanged" class="tsd-kind-icon">containing<wbr>Group<wbr>Changed</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#copyable" class="tsd-kind-icon">copyable</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#deletable" class="tsd-kind-icon">deletable</a>
</li>
<li class=" tsd-kind-get-signature tsd-parent-kind-class">
<a href="Part.html#diagram" class="tsd-kind-icon">diagram</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#dragComputation" class="tsd-kind-icon">drag<wbr>Computation</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#groupable" class="tsd-kind-icon">groupable</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#highlightedChanged" class="tsd-kind-icon">highlighted<wbr>Changed</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#isAnimated" class="tsd-kind-icon">is<wbr>Animated</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#isHighlighted" class="tsd-kind-icon">is<wbr>Highlighted</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#isInDocumentBounds" class="tsd-kind-icon">is<wbr>InDocument<wbr>Bounds</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#isLayoutPositioned" class="tsd-kind-icon">is<wbr>Layout<wbr>Positioned</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#isSelected" class="tsd-kind-icon">is<wbr>Selected</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#isShadowed" class="tsd-kind-icon">is<wbr>Shadowed</a>
</li>
<li class=" tsd-kind-get-signature tsd-parent-kind-class">
<a href="Part.html#isTopLevel" class="tsd-kind-icon">is<wbr>Top<wbr>Level</a>
</li>
<li class=" tsd-kind-get-signature tsd-parent-kind-class">
<a href="Part.html#key" class="tsd-kind-icon">key</a>
</li>
<li class=" tsd-kind-get-signature tsd-parent-kind-class">
<a href="Part.html#layer" class="tsd-kind-icon">layer</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#layerChanged" class="tsd-kind-icon">layer<wbr>Changed</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#layerName" class="tsd-kind-icon">layer<wbr>Name</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#layoutConditions" class="tsd-kind-icon">layout<wbr>Conditions</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#location" class="tsd-kind-icon">location</a>
</li>
<li class=" tsd-kind-get-signature tsd-parent-kind-class">
<a href="Part.html#locationObject" class="tsd-kind-icon">location<wbr>Object</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#locationObjectName" class="tsd-kind-icon">location<wbr>Object<wbr>Name</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#locationSpot" class="tsd-kind-icon">location<wbr>Spot</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#maxLocation" class="tsd-kind-icon">max<wbr>Location</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#minLocation" class="tsd-kind-icon">min<wbr>Location</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#movable" class="tsd-kind-icon">movable</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#reshapable" class="tsd-kind-icon">reshapable</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#resizable" class="tsd-kind-icon">resizable</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#resizeAdornmentTemplate" class="tsd-kind-icon">resize<wbr>Adornment<wbr>Template</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#resizeCellSize" class="tsd-kind-icon">resize<wbr>Cell<wbr>Size</a>
</li>
<li class=" tsd-kind-get-signature tsd-parent-kind-class">
<a href="Part.html#resizeObject" class="tsd-kind-icon">resize<wbr>Object</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#resizeObjectName" class="tsd-kind-icon">resize<wbr>Object<wbr>Name</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#rotatable" class="tsd-kind-icon">rotatable</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#rotateAdornmentTemplate" class="tsd-kind-icon">rotate<wbr>Adornment<wbr>Template</a>
</li>
<li class=" tsd-kind-get-signature tsd-parent-kind-class">
<a href="Part.html#rotateObject" class="tsd-kind-icon">rotate<wbr>Object</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#rotateObjectName" class="tsd-kind-icon">rotate<wbr>Object<wbr>Name</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#rotationSpot" class="tsd-kind-icon">rotation<wbr>Spot</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#selectable" class="tsd-kind-icon">selectable</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#selectionAdorned" class="tsd-kind-icon">selection<wbr>Adorned</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#selectionAdornmentTemplate" class="tsd-kind-icon">selection<wbr>Adornment<wbr>Template</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#selectionChanged" class="tsd-kind-icon">selection<wbr>Changed</a>
</li>
<li class=" tsd-kind-get-signature tsd-parent-kind-class">
<a href="Part.html#selectionObject" class="tsd-kind-icon">selection<wbr>Object</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#selectionObjectName" class="tsd-kind-icon">selection<wbr>Object<wbr>Name</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#shadowBlur" class="tsd-kind-icon">shadow<wbr>Blur</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#shadowColor" class="tsd-kind-icon">shadow<wbr>Color</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#shadowOffset" class="tsd-kind-icon">shadow<wbr>Offset</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#text" class="tsd-kind-icon">text</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#textEditable" class="tsd-kind-icon">text<wbr>Editable</a>
</li>
<li class=" tsd-kind-accessor tsd-parent-kind-class">
<a href="Part.html#zOrder" class="tsd-kind-icon">z<wbr>Order</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#addAdornment" class="tsd-kind-icon">add<wbr>Adornment</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#canCopy" class="tsd-kind-icon">can<wbr>Copy</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#canDelete" class="tsd-kind-icon">can<wbr>Delete</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#canEdit" class="tsd-kind-icon">can<wbr>Edit</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#canGroup" class="tsd-kind-icon">can<wbr>Group</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#canLayout" class="tsd-kind-icon">can<wbr>Layout</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#canMove" class="tsd-kind-icon">can<wbr>Move</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#canReshape" class="tsd-kind-icon">can<wbr>Reshape</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#canResize" class="tsd-kind-icon">can<wbr>Resize</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#canRotate" class="tsd-kind-icon">can<wbr>Rotate</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#canSelect" class="tsd-kind-icon">can<wbr>Select</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#clearAdornments" class="tsd-kind-icon">clear<wbr>Adornments</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#ensureBounds" class="tsd-kind-icon">ensure<wbr>Bounds</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#findAdornment" class="tsd-kind-icon">find<wbr>Adornment</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#findCommonContainingGroup" class="tsd-kind-icon">find<wbr>Common<wbr>Containing<wbr>Group</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#findSubGraphLevel" class="tsd-kind-icon">find<wbr>Sub<wbr>Graph<wbr>Level</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#findTopLevelPart" class="tsd-kind-icon">find<wbr>Top<wbr>Level<wbr>Part</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#getDocumentBounds" class="tsd-kind-icon">get<wbr>Document<wbr>Bounds</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#invalidateLayout" class="tsd-kind-icon">invalidate<wbr>Layout</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#isMemberOf" class="tsd-kind-icon">is<wbr>Member<wbr>Of</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#isVisible" class="tsd-kind-icon">is<wbr>Visible</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#move" class="tsd-kind-icon">move</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#moveTo" class="tsd-kind-icon">move<wbr>To</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#removeAdornment" class="tsd-kind-icon">remove<wbr>Adornment</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#updateAdornments" class="tsd-kind-icon">update<wbr>Adornments</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#updateRelationshipsFromData" class="tsd-kind-icon">update<wbr>Relationships<wbr>From<wbr>Data</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="Part.html#updateTargetBindings" class="tsd-kind-icon">update<wbr>Target<wbr>Bindings</a>
</li>
<li class=" tsd-kind-constant tsd-parent-kind-class tsd-is-static">
<a href="Part.html#static-LayoutAdded" class="tsd-kind-icon">Layout<wbr>Added</a>
</li>
<li class=" tsd-kind-constant tsd-parent-kind-class tsd-is-static">
<a href="Part.html#static-LayoutGroupLayout" class="tsd-kind-icon">Layout<wbr>Group<wbr>Layout</a>
</li>
<li class=" tsd-kind-constant tsd-parent-kind-class tsd-is-static">
<a href="Part.html#static-LayoutHidden" class="tsd-kind-icon">Layout<wbr>Hidden</a>
</li>
<li class=" tsd-kind-constant tsd-parent-kind-class tsd-is-static">
<a href="Part.html#static-LayoutNodeReplaced" class="tsd-kind-icon">Layout<wbr>Node<wbr>Replaced</a>
</li>
<li class=" tsd-kind-constant tsd-parent-kind-class tsd-is-static">
<a href="Part.html#static-LayoutNodeSized" class="tsd-kind-icon">Layout<wbr>Node<wbr>Sized</a>
</li>
<li class=" tsd-kind-constant tsd-parent-kind-class tsd-is-static">
<a href="Part.html#static-LayoutNone" class="tsd-kind-icon">Layout<wbr>None</a>
</li>
<li class=" tsd-kind-constant tsd-parent-kind-class tsd-is-static">
<a href="Part.html#static-LayoutRemoved" class="tsd-kind-icon">Layout<wbr>Removed</a>
</li>
<li class=" tsd-kind-constant tsd-parent-kind-class tsd-is-static">
<a href="Part.html#static-LayoutShown" class="tsd-kind-icon">Layout<wbr>Shown</a>
</li>
<li class=" tsd-kind-constant tsd-parent-kind-class tsd-is-static">
<a href="Part.html#static-LayoutStandard" class="tsd-kind-icon">Layout<wbr>Standard</a>
</li>
</ul>
</li>
</ul>
<ul class="after-current">
</ul>
</nav>
</div>
</div>
</div>
<div class="container-fluid bottom-copyright plr15">
Copyright &copy; 1998-2019 by Northwoods Software Corporation.
</div>
<div class="overlay"></div>
<script src="../assets/js/main.js"></script>
<script src="../../assets/js/api.js"></script>
<script src="../../assets/js/bootstrap.min.js"></script>
<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-1506307-5', 'auto');
ga('send', 'pageview');
</script>
</body>
</html>