create-gojs-kit
Version:
A CLI for downloading GoJS samples, extensions, and docs
122 lines (120 loc) • 31.3 kB
HTML
<html class="default" lang="en"><head><meta charSet="utf-8"/><link rel="stylesheet" href="../../assets/css/style.css"/><link rel="preconnect" href="https://rsms.me/"/><link rel="stylesheet" href="https://rsms.me/inter/inter.css"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>PanelLayoutFlow | GoJS API</title><meta name="description" content="Documentation for GoJS API"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><link rel="stylesheet" href="../assets/custom.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script type="text/javascript">// formerly in api.js
var hash = null;
function changeHash() {
var panels = document.getElementsByClassName("tsd-panel");
for (let i = 0; i < panels.length; i++) {
var p = panels[i];
p.classList.remove("targeted");
}
hash = window.location.hash.slice(1);
if (hash) {
var elt = document.getElementById(hash);
if (elt) elt.parentNode.classList.add("targeted");
}
}
document.addEventListener("DOMContentLoaded", changeHash);
window.addEventListener("hashchange", changeHash);</script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header><nav id="navTop" class="w-full h-[var(--topnav-h)] z-30 bg-[var(--color-background-secondary)] border-b border-b-[var(--color-accent)]"><div class="max-w-screen-xl mx-auto flex flex-wrap items-start justify-between px-4"><a class="!text-white bg-nwoods-primary font-bold !leading-[calc(var(--topnav-h)_-_1px)] my-0 px-2 text-4xl lg:text-5xl logo" href="../../index.html">GoJS</a><div class="relative"><button id="topnavButton" class="h-[calc(var(--topnav-h)_-_1px)] px-2 m-0 text-[var(--color-text)] bg-inherit shadow-none md:hidden hover:!bg-inherit hover:!text-nwoods-accent hover:!shadow-none" aria-label="Navigation"><svg class="h-7 w-7 block" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></button><div id="topnavList" class="hidden md:block"><div class="absolute right-0 z-30 flex flex-col items-end rounded border border-[var(--color-accent)] p-4 pl-12 shadow bg-[var(--color-background-secondary)] text-[var(--color-text)] font-semibold
md:flex-row md:space-x-4 md:items-start md:border-0 md:p-0 md:shadow-none md:!bg-inherit"><a href="../../learn/index.html">Learn</a><a href="../../samples/index.html">Samples</a><a href="../../intro/index.html">Intro</a><a class="active" href="../../api/index.html">API</a><a href="../../download.html">Download</a><a href="https://forum.nwoods.com/c/gojs/11" target="_blank" rel="noopener">Forum</a><a href="https://nwoods.com/contact.html" target="_blank" rel="noopener" id="contactBtn">Contact</a><a href="https://nwoods.com/sales/index.html" target="_blank" rel="noopener" id="buyBtn">Buy</a></div></div></div></div></nav><script>window.addEventListener("DOMContentLoaded", function () {
// topnav
var topButton = document.getElementById("topnavButton");
var topnavList = document.getElementById("topnavList");
if (topButton && topnavList) {
topButton.addEventListener("click", function (e) {
topnavList
.classList
.toggle("hidden");
e.stopPropagation();
});
document.addEventListener("click", function (e) {
// if the clicked element isn't the list, close the list
if (!topnavList.classList.contains("hidden") && !e.target.closest("#topnavList")) {
topButton.click();
}
});
// set active <a> element
// done via active tag below, always API
}
});</script><div class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><div id="tsd-search-help"><code class="!text-lg">/</code> to search</div><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">GoJS API</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><div class="flex w-full max-w-screen-xl mx-auto px-2 items-center justify-between"><div><ul class="tsd-breadcrumb"><li><a href="../index.html">GoJS API</a></li><li><a href="PanelLayoutFlow.html">PanelLayoutFlow</a></li></ul><h1 class="flex items-center">Class PanelLayoutFlow</h1></div><div class="text-xs"><b>GoJS</b>® Diagramming Components<br/>version 3.1.0<br/>by <a href="https://nwoods.com/">Northwoods Software®</a></div></div></div><section class="tsd-panel tsd-extension"><p>This is an extension and not part of the main GoJS library. Note that the API for this class may change at any time. If you intend to use an extension in production, you should copy the code to your own source directory. See the <a href="../../intro/extensions.html">Extensions intro page</a> for more information.</p></section><section class="tsd-panel tsd-hierarchy"><h4>Hierarchy (<a class="link" href="../hierarchy.html#PanelLayoutFlow">view full</a>)</h4><ul class="tsd-hierarchy"><li><a href="PanelLayout.html" class="tsd-signature-type tsd-kind-class">PanelLayout</a><ul class="tsd-hierarchy"><li><span class="target">PanelLayoutFlow</span></li></ul></li></ul></section><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>A custom <a href="PanelLayout.html" class="tsd-kind-class">go.PanelLayout</a> that arranges panel elements in rows or columns.
A typical use might be:</p>
<pre><code class="language-js"><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-4">go</span><span class="hl-2">.</span><span class="hl-5">Node</span><span class="hl-2">(. . .)</span><br/><span class="hl-2"> .</span><span class="hl-5">add</span><span class="hl-2">(</span><br/><span class="hl-2"> . . .,</span><br/><span class="hl-2"> </span><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-4">go</span><span class="hl-2">.</span><span class="hl-5">Panel</span><span class="hl-2">(</span><span class="hl-6">"Flow"</span><span class="hl-2">)</span><br/><span class="hl-2"> .</span><span class="hl-5">add</span><span class="hl-2">(</span><br/><span class="hl-2"> ... </span><span class="hl-4">the</span><span class="hl-2"> </span><span class="hl-4">elements</span><span class="hl-2"> </span><span class="hl-4">to</span><span class="hl-2"> </span><span class="hl-4">be</span><span class="hl-2"> </span><span class="hl-4">laid</span><span class="hl-2"> </span><span class="hl-4">out</span><span class="hl-2"> </span><span class="hl-1">in</span><span class="hl-2"> </span><span class="hl-4">rows</span><span class="hl-2"> </span><span class="hl-4">with</span><span class="hl-2"> </span><span class="hl-4">no</span><span class="hl-2"> </span><span class="hl-4">space</span><span class="hl-2"> </span><span class="hl-4">between</span><span class="hl-2"> </span><span class="hl-4">them</span><span class="hl-2"> ...</span><br/><span class="hl-2"> ),</span><br/><span class="hl-2"> . . .</span><br/><span class="hl-2"> )</span>
</code><button>Copy</button></pre>
<p>A customized use might be:</p>
<pre><code class="language-js"><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-4">go</span><span class="hl-2">.</span><span class="hl-5">Node</span><span class="hl-2">(. . .)</span><br/><span class="hl-2"> .</span><span class="hl-5">add</span><span class="hl-2">(</span><br/><span class="hl-2"> . . .,</span><br/><span class="hl-2"> </span><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-4">go</span><span class="hl-2">.</span><span class="hl-5">Panel</span><span class="hl-2">(</span><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-5">PanelLayoutFlow</span><span class="hl-2">({ </span><span class="hl-4">spacing:</span><span class="hl-2"> </span><span class="hl-1">new</span><span class="hl-2"> </span><span class="hl-4">go</span><span class="hl-2">.</span><span class="hl-5">Size</span><span class="hl-2">(</span><span class="hl-7">5</span><span class="hl-2">, </span><span class="hl-7">5</span><span class="hl-2">), </span><span class="hl-4">direction:</span><span class="hl-2"> </span><span class="hl-7">90</span><span class="hl-2"> }))</span><br/><span class="hl-2"> .</span><span class="hl-5">add</span><span class="hl-2">(</span><br/><span class="hl-2"> ... </span><span class="hl-4">the</span><span class="hl-2"> </span><span class="hl-4">elements</span><span class="hl-2"> </span><span class="hl-4">to</span><span class="hl-2"> </span><span class="hl-4">be</span><span class="hl-2"> </span><span class="hl-4">laid</span><span class="hl-2"> </span><span class="hl-4">out</span><span class="hl-2"> </span><span class="hl-1">in</span><span class="hl-2"> </span><span class="hl-4">columns</span><span class="hl-2"> ...</span><br/><span class="hl-2"> ),</span><br/><span class="hl-2"> . . .</span><br/><span class="hl-2"> )</span>
</code><button>Copy</button></pre>
<p>The <a href="PanelLayoutFlow.html#direction" class="tsd-kind-accessor">direction</a> property determines whether the elements are arranged in rows (if 0 or 180)
or in columns (if 90 or 270).</p>
<p>Use the <a href="PanelLayoutFlow.html#spacing" class="tsd-kind-accessor">spacing</a> property to control how much space there is between elements in a row or column
as well as between rows or columns.</p>
<p>This layout respects the <a href="GraphObject.html#visible" class="tsd-kind-accessor">go.GraphObject.visible</a>, <a href="GraphObject.html#stretch" class="tsd-kind-accessor">go.GraphObject.stretch</a>,
and <a href="GraphObject.html#alignment" class="tsd-kind-accessor">go.GraphObject.alignment</a> properties on each element, along with the Panel's
<a href="Panel.html#defaultStretch" class="tsd-kind-accessor">go.Panel.defaultStretch</a>, <a href="Panel.html#defaultAlignment" class="tsd-kind-accessor">go.Panel.defaultAlignment</a>, and <a href="Panel.html#padding" class="tsd-kind-accessor">go.Panel.padding</a> properties.</p>
<p>If you want to experiment with this extension, try the <a href="../../samples/PanelLayoutFlow.html">Flow PanelLayout</a> sample.</p>
</div></section><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role="button" aria-expanded="true" tabIndex="0"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-chevronSmall"></use></svg> Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Constructors</h3><div class="tsd-index-list"><a href="PanelLayoutFlow.html#constructor" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a>
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Accessors</h3><div class="tsd-index-list"><a href="PanelLayoutFlow.html#direction" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>direction</span></a>
<a href="PanelLayoutFlow.html#spacing" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>spacing</span></a>
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="PanelLayoutFlow.html#arrange" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>arrange</span></a>
<a href="PanelLayoutFlow.html#measure" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>measure</span></a>
</div></section></div></details></section></section><section class="tsd-panel-group tsd-index-group tsd-is-inherited"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-index-accordion"><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role="button" aria-expanded="false" tabIndex="0"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-chevronSmall"></use></svg> Inherited Index</h5></summary><div class="tsd-accordion-details"><div class="tsd-index-content"><section class="tsd-index-section"><h3 class="tsd-index-heading">Accessors</h3><div class="tsd-index-list"><a href="PanelLayout.html#name" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>Panel<wbr/>Layout.name</span></a>
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="PanelLayout.html#arrangeElement" class="tsd-index-link tsd-is-protected"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Panel<wbr/>Layout.arrange<wbr/>Element</span></a>
<a href="PanelLayout.html#measureElement" class="tsd-index-link tsd-is-protected"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Panel<wbr/>Layout.measure<wbr/>Element</span></a>
<a href="PanelLayout.html#remeasureObject" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>Panel<wbr/>Layout.remeasure<wbr/>Object</span></a>
</div></section></div></div></details></section></section><section class="tsd-panel-group tsd-member-group"><h2>Constructors</h2><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_PanelLayoutFlow" class="tsd-anchor"></a><span class="tsd-kind-constructor-signature">new <wbr/>Panel<wbr/>Layout<wbr/>Flow</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">init</span><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="PanelLayoutFlow.html" class="tsd-signature-type tsd-kind-class">PanelLayoutFlow</a><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="PanelLayoutFlow.html" class="tsd-signature-type tsd-kind-class">PanelLayoutFlow</a><a href="#constructor.new_PanelLayoutFlow" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Constructs a PanelLayoutFlow that lays out elements in rows
with no space between the elements or between the rows.</p>
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><code class="tsd-tag ts-flagOptional">Optional</code> <span class="tsd-kind-parameter">init</span>: <span class="tsd-signature-type">Partial</span><span class="tsd-signature-symbol"><</span><a href="PanelLayoutFlow.html" class="tsd-signature-type tsd-kind-class">PanelLayoutFlow</a><span class="tsd-signature-symbol">></span></h5></li></ul></div><h4 class="tsd-returns-title">Returns <a href="PanelLayoutFlow.html" class="tsd-signature-type tsd-kind-class">PanelLayoutFlow</a></h4></li></ul></section></section><section class="tsd-panel-group tsd-member-group"><h2>Accessors</h2><section class="tsd-panel tsd-member"><a id="direction" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>direction</span><div class="membertype"><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span></div><a href="#direction" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Gets or sets the initial direction in which elements are laid out.
The value must be 0 or 180, which results in rows, or 90 or 270, which results in columns.</p>
<p>The default value is 0, resulting in rows that go rightward.
A value of 90 results in columns that go downward.</p>
<p>Setting this property does not notify about any changed event,
nor does a change in value automatically cause the panel layout to be performed again.</p>
</div></li></ul></section><section class="tsd-panel tsd-member"><a id="spacing" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>spacing</span><div class="membertype"><span class="tsd-signature-symbol">: </span><a href="Size.html" class="tsd-signature-type tsd-kind-class">Size</a></div><a href="#spacing" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Gets or sets the space between adjacent elements in the panel and the space between adjacent rows or columns.</p>
<p>The default value is (0, 0). The size is in the panel's coordinate system.</p>
<p>Setting this property does not notify about any changed event,
nor does a change in value automatically cause the panel layout to be performed again.</p>
</div></li></ul></section></section><section class="tsd-panel-group tsd-member-group"><h2>Methods</h2><section class="tsd-panel tsd-member"><a id="arrange" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOverride">Override</code><span>arrange</span><a href="#arrange" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="arrange.arrange-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">arrange</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">panel</span><span class="tsd-signature-symbol">: </span><a href="Panel.html" class="tsd-signature-type tsd-kind-class">Panel</a>, <span class="tsd-kind-parameter">elements</span><span class="tsd-signature-symbol">: </span><a href="GraphObject.html" class="tsd-signature-type tsd-kind-class">GraphObject</a><span class="tsd-signature-symbol">[]</span>, <span class="tsd-kind-parameter">union</span><span class="tsd-signature-symbol">: </span><a href="Rect.html" class="tsd-signature-type tsd-kind-class">Rect</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#arrange.arrange-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>After measuring, a Panel must arrange each element, giving the elements a position and size in the Panel's coordinate system.
This must call <a href="PanelLayout.html#arrangeElement" class="tsd-kind-method">arrangeElement</a> with each Panel element, which will set that element's <a href="GraphObject.html#actualBounds" class="tsd-kind-accessor">GraphObject.actualBounds</a>.</p>
<p>For arranging some elements, it is useful to know the total unioned area of every element, which is given as the <code>union</code> argument.
This Rect can be used to right-align or center-align, etc, elements within an area.</p>
<p>For example, PanelLayoutHorizontal arranges each element sequentially, starting with an <code>x</code> value of <code>0</code>,
and increasing it by each previous element's <a href="GraphObject.html#measuredBounds" class="tsd-kind-accessor">GraphObject.measuredBounds</a> <code>width</code>.
The horizontal Panel arranges each element with a <code>y</code> value determined by the <code>union</code> argument's <code>height</code>
considering the <a href="GraphObject.html#alignment" class="tsd-kind-accessor">GraphObject.alignment</a> of the element, and the GraphObject's own <code>measuredBounds.height</code>.</p>
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">panel</span>: <a href="Panel.html" class="tsd-signature-type tsd-kind-class">Panel</a></h5><div class="tsd-comment tsd-typography"><p>Panel which called this layout</p>
</div></li><li><h5><span class="tsd-kind-parameter">elements</span>: <a href="GraphObject.html" class="tsd-signature-type tsd-kind-class">GraphObject</a><span class="tsd-signature-symbol">[]</span></h5><div class="tsd-comment tsd-typography"><p>Array of Panel elements</p>
</div></li><li><h5><span class="tsd-kind-parameter">union</span>: <a href="Rect.html" class="tsd-signature-type tsd-kind-class">Rect</a></h5><div class="tsd-comment tsd-typography"><p>rectangle, if properly constructed in <a href="PanelLayout.html#measure" class="tsd-kind-method">measure</a>, that contains the expected union bounds of every element in the Panel.</p>
</div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4></li></ul></section><section class="tsd-panel tsd-member"><a id="measure" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag ts-flagOverride">Override</code><span>measure</span><a href="#measure" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="measure.measure-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">measure</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">panel</span><span class="tsd-signature-symbol">: </span><a href="Panel.html" class="tsd-signature-type tsd-kind-class">Panel</a>, <span class="tsd-kind-parameter">width</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span>, <span class="tsd-kind-parameter">height</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span>, <span class="tsd-kind-parameter">elements</span><span class="tsd-signature-symbol">: </span><a href="GraphObject.html" class="tsd-signature-type tsd-kind-class">GraphObject</a><span class="tsd-signature-symbol">[]</span>, <span class="tsd-kind-parameter">union</span><span class="tsd-signature-symbol">: </span><a href="Rect.html" class="tsd-signature-type tsd-kind-class">Rect</a>, <span class="tsd-kind-parameter">minw</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span>, <span class="tsd-kind-parameter">minh</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#measure.measure-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-comment tsd-typography"><p>Given the available size, measure the Panel and
determine its expected drawing size.</p>
<p>This must call <a href="PanelLayout.html#measureElement" class="tsd-kind-method">measureElement</a> with each Panel element, which will set the
<a href="GraphObject.html#measuredBounds" class="tsd-kind-accessor">GraphObject.measuredBounds</a> of those elements. Depending on how the Panel intends to lay out its elements,
the programmer must construction the <code>union</code> by setting <code>union.width</code> and <code>union.height</code> of the supplied argument.
For example PanelLayoutHorizontal measures its elements and sums their widths to set its <code>union.width</code>,
and takes the maximum of their heights to set its <code>union.height</code>.</p>
<p>This union must reflect the measured size of the Panel. After measure is called, the Panel class will modify this union Rect,
constraining its size by the Panel's <a href="GraphObject.html#desiredSize" class="tsd-kind-accessor">GraphObject.desiredSize</a>, <a href="GraphObject.html#minSize" class="tsd-kind-accessor">GraphObject.minSize</a>, and <a href="GraphObject.html#maxSize" class="tsd-kind-accessor">GraphObject.maxSize</a>,
before passing it to <a href="PanelLayout.html#arrange" class="tsd-kind-method">arrange</a>.</p>
</div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><h5><span class="tsd-kind-parameter">panel</span>: <a href="Panel.html" class="tsd-signature-type tsd-kind-class">Panel</a></h5><div class="tsd-comment tsd-typography"><p>Panel which called this layout</p>
</div></li><li><h5><span class="tsd-kind-parameter">width</span>: <span class="tsd-signature-type">number</span></h5><div class="tsd-comment tsd-typography"><p>expected width of the Panel, informed by any containing Panel and by the Panel's own
<a href="GraphObject.html#desiredSize" class="tsd-kind-accessor">GraphObject.desiredSize</a>, <a href="GraphObject.html#minSize" class="tsd-kind-accessor">GraphObject.minSize</a>, and <a href="GraphObject.html#maxSize" class="tsd-kind-accessor">GraphObject.maxSize</a>.
Often Infinity.</p>
</div></li><li><h5><span class="tsd-kind-parameter">height</span>: <span class="tsd-signature-type">number</span></h5><div class="tsd-comment tsd-typography"><p>expected height of the Panel.</p>
</div></li><li><h5><span class="tsd-kind-parameter">elements</span>: <a href="GraphObject.html" class="tsd-signature-type tsd-kind-class">GraphObject</a><span class="tsd-signature-symbol">[]</span></h5><div class="tsd-comment tsd-typography"><p>Array of Panel elements</p>
</div></li><li><h5><span class="tsd-kind-parameter">union</span>: <a href="Rect.html" class="tsd-signature-type tsd-kind-class">Rect</a></h5><div class="tsd-comment tsd-typography"><p>rectangle to be modified to contain the expected union bounds of every element in the Panel,
to be potentially used in <a href="PanelLayout.html#arrange" class="tsd-kind-method">arrange</a>.</p>
</div></li><li><h5><span class="tsd-kind-parameter">minw</span>: <span class="tsd-signature-type">number</span></h5><div class="tsd-comment tsd-typography"><p>expected minimum width of the Panel, informed by any containing Panel. Often zero.</p>
</div></li><li><h5><span class="tsd-kind-parameter">minh</span>: <span class="tsd-signature-type">number</span></h5><div class="tsd-comment tsd-typography"><p>expected minimum height of the Panel.</p>
</div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4></li></ul></section></section></div><div class="col-sidebar"><div class="page-menu"><details open class="tsd-index-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><ul><li><a href="#constructor"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a></li><li><a href="#direction"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>direction</span></a></li><li><a href="#spacing"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-262144"></use></svg><span>spacing</span></a></li><li><a href="#arrange"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>arrange</span></a></li><li><a href="#measure"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>measure</span></a></li></ul></div></details><div class="tsd-navigation settings"><div class="tsd-theme-toggle"><h4 class="uppercase">Theme</h4><select id="tsd-theme"><option value="os">System</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>GoJS API</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><div class="tsd w-full max-w-screen-xl mx-auto px-2"><div class="bottom-copyright">Copyright © 1998-2025 by Northwoods Software Corporation.</div></div><div class="overlay"></div><script async src="https://www.googletagmanager.com/gtag/js?id=G-S5QK8VSK84"></script><script>window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-S5QK8VSK84');
var getOutboundLink = function(url, label) {
gtag('event', 'click', {
'event_category': 'outbound',
'event_label': label,
'transport_type': 'beacon'
});
}
document.getElementById("contactBtn").addEventListener("click", function() {
getOutboundLink('https://nwoods.com/contact.html', 'contact');
});
document.getElementById("buyBtn").addEventListener("click", function() {
getOutboundLink('https://nwoods.com/sales/index.html', 'buy');
});</script></body></html>