gojs
Version:
Interactive diagrams, charts, and graphs, such as trees, flowcharts, orgcharts, UML, BPMN, or business diagrams
95 lines (93 loc) • 23.8 kB
HTML
<html class="default"><head><meta charSet="utf-8"/><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/css/style.css"/><link rel="stylesheet" href="../assets/style-tsd.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script async src="../assets/search.js" id="search-script"></script></head><body><script>document.body.classList.add(localStorage.getItem("tsd-theme") || "os")</script><header><nav id="navTop" class="w-full z-30 top-0 text-white bg-nwoods-primary"><div class="w-full container max-w-screen-lg mx-auto flex flex-wrap sm:flex-nowrap items-center justify-between mt-0 py-2"><div class="md:pl-4"><a class="text-white hover:text-white no-underline hover:no-underline\n font-bold text-2xl lg:text-4xl rounded-lg hover:bg-nwoods-secondary" href="../../index.html"><h1 class="my-0 p-1 leading-none">GoJS</h1></a></div><button id="topnavButton" class="rounded-lg sm:hidden focus:outline-none focus:ring" aria-label="Navigation"><svg fill="currentColor" viewBox="0 0 20 20" class="w-6 h-6"><path id="topnavOpen" fill-rule="evenodd" d="M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM9 15a1 1 0 011-1h6a1 1 0 110 2h-6a1 1 0 01-1-1z" clip-rule="evenodd"></path><path id="topnavClosed" class="hidden" fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"></path></svg></button><div id="topnavList" class="hidden sm:block items-center w-auto mt-0 text-white p-0 z-20"><ul class="list-reset list-none font-semibold flex justify-end flex-wrap sm:flex-nowrap items-center px-0 pb-0"><li class="p-1 sm:p-0"><a class="topnav-link" href="../../learn/index.html">Learn</a></li><li class="p-1 sm:p-0"><a class="topnav-link" href="../../samples/index.html">Samples</a></li><li class="p-1 sm:p-0"><a class="topnav-link" href="../../intro/index.html">Intro</a></li><li class="p-1 sm:p-0"><a class="topnav-link" href="../../api/index.html">API</a></li><li class="p-1 sm:p-0"><a class="topnav-link" href="https://www.nwoods.com/products/register.html">Register</a></li><li class="p-1 sm:p-0"><a class="topnav-link" href="../../download.html">Download</a></li><li class="p-1 sm:p-0"><a class="topnav-link" href="https://forum.nwoods.com/c/gojs/11">Forum</a></li><li class="p-1 sm:p-0"><a class="topnav-link" href="https://www.nwoods.com/contact.html" target="_blank" rel="noopener" id="contactBtn">Contact</a></li><li class="p-1 sm:p-0"><a class="topnav-link" href="https://www.nwoods.com/sales/index.html" target="_blank" rel="noopener" id="buyBtn">Buy</a></li></ul></div></div><hr class="border-b border-gray-600 opacity-50 my-0 py-0"/></nav><div class="tsd-page-header"><div class="tsd-page-toolbar"><div class="w-full max-w-screen-xl mx-auto px-2"><div class="table-wrap"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget search no-caption">Search</label><input type="text" id="tsd-search-field"/></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> <input type="checkbox" id="tsd-filter-inherited"/><label class="tsd-widget" for="tsd-filter-inherited">Inherited</label></div></div><a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a></div></div></div></div></div><div class="tsd-page-title"><div class="w-full max-w-screen-xl mx-auto px-2"><div class="top-copyright"><b>GoJS</b>® Diagramming Components<br/>version 2.3.8<br/>by <a href="https://www.nwoods.com/">Northwoods Software®</a></div><div><h1>Class PanelLayoutFlow <span class="tsd-flag ts-flagExtension">Extension</span> </h1></div></div></div></header><div class="tsd w-full max-w-screen-xl mx-auto pb-4"><div class="row px-2 w-full"><div class="col-8 col-content"><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. Extensions can be found in the GoJS kit under the <code>extensions</code> (for loading via script tags),<code>extensionsTS</code> (UMD modules), or <code>extensionsJSM</code> (ES6 modules) folders. See the <a href="../../intro/extensions.html">Extensions intro page</a> for more information.</p></section><section class="tsd-panel tsd-hierarchy"><h3>Hierarchy</h3><ul class="tsd-hierarchy"><li><a href="PanelLayout.html" class="tsd-signature-type" data-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">PanelLayout</a> that arranges panel elements in rows or columns.
A typical use might be:</p>
<pre>
$(go.Node,
...
$(go.Panel, "Flow",
... the elements to be laid out in rows with no space between them ...
)
...
)
</pre>
<p>A customized use might be:</p>
<pre>
$(go.Node,
...
$(go.Panel,
$(PanelLayoutFlow, { spacing: new go.Size(5, 5), direction: 90 }),
... the elements to be laid out in columns ...
)
...
)
</pre><div><p>The <a href="PanelLayoutFlow.html#direction">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">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">GraphObject.visible</a>, <a href="GraphObject.html#stretch">GraphObject.stretch</a>,
and <a href="GraphObject.html#alignment">GraphObject.alignment</a> properties on each element, along with the Panel's
<a href="Panel.html#defaultStretch">Panel.defaultStretch</a>, <a href="Panel.html#defaultAlignment">Panel.defaultAlignment</a>, and <a href="Panel.html#padding">Panel.padding</a> properties.</p>
<p>If you want to experiment with this extension, try the <a href="../../extensionsJSM/PanelLayoutFlow.html">Flow PanelLayout</a> sample.</p>
</div></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 tsd-is-overwrite"><a href="PanelLayoutFlow.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-accessor tsd-parent-kind-class"><a href="PanelLayoutFlow.html#direction" class="tsd-kind-icon">direction</a></li><li class="tsd-kind-accessor tsd-parent-kind-class"><a href="PanelLayoutFlow.html#spacing" class="tsd-kind-icon">spacing</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 tsd-is-overwrite"><a href="PanelLayoutFlow.html#arrange" class="tsd-kind-icon">arrange</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-overwrite"><a href="PanelLayoutFlow.html#measure" class="tsd-kind-icon">measure</a></li></ul></section></div></section></section><section class="tsd-panel-group tsd-index-group tsd-is-inherited"><h2>Inherited Members</h2><section class="tsd-panel tsd-index-panel"><div class="tsd-index-content"><section class="tsd-index-section undefined"><h3>Properties</h3><ul class="tsd-index-list"><li class="tsd-kind-accessor tsd-parent-kind-class"><a href="PanelLayout.html#name" class="tsd-kind-icon">Panel<wbr/>Layout.name</a></li></ul></section><section class="tsd-index-section undefined"><h3>Methods</h3><ul class="tsd-index-list"><li class="tsd-kind-method tsd-parent-kind-class tsd-is-protected"><a href="PanelLayout.html#arrangeElement" class="tsd-kind-icon">Panel<wbr/>Layout.arrange<wbr/>Element</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-protected"><a href="PanelLayout.html#measureElement" class="tsd-kind-icon">Panel<wbr/>Layout.measure<wbr/>Element</a></li><li class="tsd-kind-method tsd-parent-kind-class"><a href="PanelLayout.html#remeasureObject" class="tsd-kind-icon">Panel<wbr/>Layout.remeasure<wbr/>Object</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 tsd-is-overwrite"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"> constructor<a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path></svg></a></h3><ul class="tsd-signatures tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite"><li class="tsd-signature tsd-kind-icon">new <wbr/>Panel<wbr/>Layout<wbr/>Flow<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" data-tsd-kind="Class">PanelLayoutFlow</a></li></ul><ul class="tsd-descriptions"><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><h4 class="tsd-returns-title">Returns <a href="PanelLayoutFlow.html" class="tsd-signature-type" data-tsd-kind="Class">PanelLayoutFlow</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-accessor tsd-parent-kind-class"><a id="direction" class="tsd-anchor"></a><h3 class="tsd-anchor-link"> direction<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><a href="#direction" aria-label="Permalink" class="tsd-anchor-icon"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path></svg></a></h3><ul class="tsd-descriptions"><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>
<div><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></div></li></ul></section><section class="tsd-panel tsd-member tsd-kind-accessor tsd-parent-kind-class"><a id="spacing" class="tsd-anchor"></a><h3 class="tsd-anchor-link"> spacing<span class="tsd-signature-symbol">: </span><a href="Size.html" class="tsd-signature-type" data-tsd-kind="Class">Size</a><a href="#spacing" aria-label="Permalink" class="tsd-anchor-icon"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path></svg></a></h3><ul class="tsd-descriptions"><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>
<div><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></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 tsd-is-overwrite"><a id="arrange" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span class="tsd-flag ts-flagOverride">Override</span> arrange<a href="#arrange" aria-label="Permalink" class="tsd-anchor-icon"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path></svg></a></h3><ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class tsd-is-overwrite"><li class="tsd-signature tsd-kind-icon">arrange<span class="tsd-signature-symbol">(</span>panel<span class="tsd-signature-symbol">: </span><a href="Panel.html" class="tsd-signature-type" data-tsd-kind="Class">Panel</a>, elements<span class="tsd-signature-symbol">: </span><a href="GraphObject.html" class="tsd-signature-type" data-tsd-kind="Class">GraphObject</a><span class="tsd-signature-symbol">[]</span>, union<span class="tsd-signature-symbol">: </span><a href="Rect.html" class="tsd-signature-type" data-tsd-kind="Class">Rect</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>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">arrangeElement</a> with each Panel element, which will set that element's <a href="GraphObject.html#actualBounds">GraphObject.actualBounds</a>.</p>
<div><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">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">GraphObject.alignment</a> of the element, and the GraphObject's own <code>measuredBounds.height</code>.</p>
</div></div><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>panel: <a href="Panel.html" class="tsd-signature-type" data-tsd-kind="Class">Panel</a></h5></li><li><h5>elements: <a href="GraphObject.html" class="tsd-signature-type" data-tsd-kind="Class">GraphObject</a><span class="tsd-signature-symbol">[]</span></h5></li><li><h5>union: <a href="Rect.html" class="tsd-signature-type" data-tsd-kind="Class">Rect</a></h5></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 tsd-is-overwrite"><a id="measure" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span class="tsd-flag ts-flagOverride">Override</span> measure<a href="#measure" aria-label="Permalink" class="tsd-anchor-icon"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-link" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path></svg></a></h3><ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class tsd-is-overwrite"><li class="tsd-signature tsd-kind-icon">measure<span class="tsd-signature-symbol">(</span>panel<span class="tsd-signature-symbol">: </span><a href="Panel.html" class="tsd-signature-type" data-tsd-kind="Class">Panel</a>, width<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span>, height<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span>, elements<span class="tsd-signature-symbol">: </span><a href="GraphObject.html" class="tsd-signature-type" data-tsd-kind="Class">GraphObject</a><span class="tsd-signature-symbol">[]</span>, union<span class="tsd-signature-symbol">: </span><a href="Rect.html" class="tsd-signature-type" data-tsd-kind="Class">Rect</a>, minw<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span>, minh<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>Given the available size, measure the Panel and
determine its expected drawing size.</p>
<div><p>This must call <a href="PanelLayout.html#measureElement">measureElement</a> with each Panel element, which will set the
<a href="GraphObject.html#measuredBounds">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">GraphObject.desiredSize</a>, <a href="GraphObject.html#minSize">GraphObject.minSize</a>, and <a href="GraphObject.html#maxSize">GraphObject.maxSize</a>,
before passing it to <a href="PanelLayoutFlow.html#arrange">arrange</a>.</p>
</div></div><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameters"><li><h5>panel: <a href="Panel.html" class="tsd-signature-type" data-tsd-kind="Class">Panel</a></h5></li><li><h5>width: <span class="tsd-signature-type">number</span></h5></li><li><h5>height: <span class="tsd-signature-type">number</span></h5></li><li><h5>elements: <a href="GraphObject.html" class="tsd-signature-type" data-tsd-kind="Class">GraphObject</a><span class="tsd-signature-symbol">[]</span></h5></li><li><h5>union: <a href="Rect.html" class="tsd-signature-type" data-tsd-kind="Class">Rect</a></h5></li><li><h5>minw: <span class="tsd-signature-type">number</span></h5></li><li><h5>minh: <span class="tsd-signature-type">number</span></h5></li></ul><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4></li></ul></section></section></div><div class="col-4 col-menu menu-sticky-wrap menu-highlight"><nav class="tsd-navigation primary"><ul><li class=""><a href="../index.html">GoJS Class Index</a></li></ul></nav><nav class="tsd-navigation secondary menu-sticky"><ul><li class="current tsd-kind-class tsd-is-extension"><a href="PanelLayoutFlow.html" class="tsd-kind-icon">Panel<wbr/>Layout<wbr/>Flow</a><ul><li class="tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite"><a href="PanelLayoutFlow.html#constructor" class="tsd-kind-icon">constructor</a></li><li class="tsd-kind-accessor tsd-parent-kind-class"><a href="PanelLayoutFlow.html#direction" class="tsd-kind-icon">direction</a></li><li class="tsd-kind-accessor tsd-parent-kind-class"><a href="PanelLayoutFlow.html#spacing" class="tsd-kind-icon">spacing</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-overwrite"><a href="PanelLayoutFlow.html#arrange" class="tsd-kind-icon">arrange</a></li><li class="tsd-kind-method tsd-parent-kind-class tsd-is-overwrite"><a href="PanelLayoutFlow.html#measure" class="tsd-kind-icon">measure</a></li></ul></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-2022 by Northwoods Software Corporation.</div></div><footer class=""><div class="tsd w-full max-w-screen-xl mx-auto px-2"><h2>Settings</h2><p class="mb-4">Theme <select id="theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></p></div></footer><div class="overlay"></div><script src="../assets/main.js"></script><script async src="https://www.googletagmanager.com/gtag/js?id=UA-1506307-5"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date()); gtag('config', 'UA-1506307-5');
var getOutboundLink = function(url, label) {
gtag('event', 'click', {
'event_category': 'outbound',
'event_label': label,
'transport_type': 'beacon'
});
}
// topnav
var topButton = document.getElementById("topnavButton");
var topnavList = document.getElementById("topnavList");
topButton.addEventListener("click", function() {
this.classList.toggle("active");
topnavList.classList.toggle("hidden");
document.getElementById("topnavOpen").classList.toggle("hidden");
document.getElementById("topnavClosed").classList.toggle("hidden");
});
document.getElementById("contactBtn").addEventListener("click", function() {
getOutboundLink('https://www.nwoods.com/contact.html', 'contact');
});
document.getElementById("buyBtn").addEventListener("click", function() {
getOutboundLink('https://www.nwoods.com/sales/index.html', 'buy');
});
</script></body></html>