@hpcc-js/composite 3.3.0 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +1 -1
- package/dist/index.umd.cjs.map +1 -1
- package/package.json +12 -12
- package/src/__package__.ts +3 -3
- package/types/__package__.d.ts +3 -3
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Legend","obj: any","state: any"],"sources":["../src/__package__.ts","../../layout/dist/index.js","../src/Utility.ts","../src/MultiChart.ts","../src/ChartPanel.ts","../src/Dermatology.ts","../src/MegaChart.ts","../src/Persist.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/composite\";\nexport const PKG_VERSION = \"3.1.1\";\nexport const BUILD_VERSION = \"3.2.1\";\n","import { Button, Database, FAChar, HTMLWidget, IconBar, Palette, Platform, ProgressBar, SVGWidget, Spacer, Text, TitleBar, ToggleButton, Utility, d3Event, dispatch, drag, format, formatLocale, formatPrefix, formatSpecifier, scaleLinear, scaleOrdinal, select, selectAll, sum } from \"@hpcc-js/common\";\nimport { Table } from \"@hpcc-js/dgrid\";\nimport { instanceOfIHighlight } from \"@hpcc-js/api\";\n\n//#region rolldown:runtime\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJS = (cb, mod) => function() {\n\treturn mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {\n\t\tkey = keys[i];\n\t\tif (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n\t\t\tget: ((k$1) => from[k$1]).bind(null, key),\n\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t});\n\t}\n\treturn to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", {\n\tvalue: mod,\n\tenumerable: true\n}) : target, mod));\n\n//#endregion\n//#region src/__package__.ts\nconst PKG_NAME = \"@hpcc-js/layout\";\nconst PKG_VERSION = \"3.1.1\";\nconst BUILD_VERSION = \"3.2.1\";\n\n//#endregion\n//#region src/AbsoluteSurface.ts\nvar AbsoluteSurface = class extends HTMLWidget {\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\tlet xPos = 0;\n\t\tlet yPos = 0;\n\t\tlet width = this.clientWidth();\n\t\tlet height = this.clientHeight();\n\t\tswitch (this.units()) {\n\t\t\tcase \"pixels\":\n\t\t\t\txPos = this.widgetX();\n\t\t\t\tyPos = this.widgetY();\n\t\t\t\twidth = this.widgetWidth() === \"\" ? width - xPos : Number(this.widgetWidth());\n\t\t\t\theight = this.widgetHeight() === \"\" ? height - yPos : Number(this.widgetHeight());\n\t\t\t\tbreak;\n\t\t\tcase \"percent\":\n\t\t\t\txPos = this.widgetX() * width / 100;\n\t\t\t\tyPos = this.widgetY() * height / 100;\n\t\t\t\twidth = this.widgetWidth() === \"\" ? width - xPos : Number(this.widgetWidth()) * width / 100;\n\t\t\t\theight = this.widgetHeight() === \"\" ? height - yPos : Number(this.widgetHeight()) * height / 100;\n\t\t\t\tbreak;\n\t\t}\n\t\telement.style(\"opacity\", this.opacity());\n\t\tconst widgets = element.selectAll(\"#\" + this._id + \" > .placeholder\").data(this.widget() ? [this.widget()] : [], function(d) {\n\t\t\treturn d._id;\n\t\t});\n\t\twidgets.enter().append(\"div\").attr(\"class\", \"placeholder\").each(function(d) {\n\t\t\td.target(this);\n\t\t}).merge(widgets).style(\"left\", xPos + \"px\").style(\"top\", yPos + \"px\").style(\"width\", width + \"px\").style(\"bottom\", height + \"px\").each(function(d) {\n\t\t\td.resize({\n\t\t\t\twidth,\n\t\t\t\theight\n\t\t\t});\n\t\t});\n\t\twidgets.exit().each(function(d) {\n\t\t\td.target(null);\n\t\t}).remove();\n\t}\n\texit(domNode, element) {\n\t\tif (this.widget()) this.widget().target(null);\n\t\tsuper.exit(domNode, element);\n\t}\n};\nAbsoluteSurface.prototype._class += \" layout_AbsoluteSurface\";\nAbsoluteSurface.prototype.publish(\"units\", \"percent\", \"set\", \"Units\", [\"pixels\", \"percent\"]);\nAbsoluteSurface.prototype.publish(\"widgetX\", 0, \"number\", \"Widget XPos\");\nAbsoluteSurface.prototype.publish(\"widgetY\", 0, \"number\", \"Widget YPos\");\nAbsoluteSurface.prototype.publish(\"widgetWidth\", \"100\", \"string\", \"Widget Width, omit for full\");\nAbsoluteSurface.prototype.publish(\"widgetHeight\", \"100\", \"string\", \"Widget Height, omit for full\");\nAbsoluteSurface.prototype.publish(\"widget\", null, \"widget\", \"Widget\", null, { tags: [\"Private\"] });\nAbsoluteSurface.prototype.publish(\"opacity\", 1, \"number\", \"Opacity\");\n\n//#endregion\n//#region src/Accordion.ts\nvar Accordion = class extends HTMLWidget {\n\t_isClosed;\n\ttitleSpan;\n\ticonDiv;\n\tul;\n\ticon;\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t\tthis._isClosed = false;\n\t}\n\tpushListItem(widget, prepend = false, protect = false) {\n\t\tconst contentArr = this.content();\n\t\twidget._protected = protect;\n\t\tif (prepend) contentArr.unshift(widget);\n\t\telse contentArr.push(widget);\n\t\tthis.content(contentArr);\n\t\treturn this;\n\t}\n\tclearListItems() {\n\t\tconst arr = [];\n\t\tfor (const i in this.content()) if (this.content()[i]._protected) arr.push(this.content()[i]);\n\t\tthis.content(arr);\n\t\treturn this;\n\t}\n\tcollapseClick(element) {\n\t\tif (element.classed(\"closed\")) {\n\t\t\tthis._isClosed = false;\n\t\t\telement.classed(\"open\", true);\n\t\t\telement.classed(\"closed\", false);\n\t\t} else {\n\t\t\tthis._isClosed = true;\n\t\t\telement.classed(\"open\", false);\n\t\t\telement.classed(\"closed\", true);\n\t\t}\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tconst context = this;\n\t\tthis._isClosed = this.defaultCollapsed();\n\t\telement.classed(this._isClosed ? \"closed\" : \"open\", true);\n\t\tthis.titleSpan = element.append(\"span\").classed(\"collapsible-title\", true);\n\t\tthis.iconDiv = element.append(\"div\").classed(\"collapsible-icon\", true);\n\t\tthis.ul = element.append(\"ul\");\n\t\tthis.icon = new FAChar().size({\n\t\t\theight: 24,\n\t\t\twidth: 24\n\t\t}).target(this.iconDiv.node());\n\t\tthis.iconDiv.on(\"click\", function() {\n\t\t\tcontext.collapseClick(element);\n\t\t\tcontext.render();\n\t\t});\n\t\tthis.titleSpan.on(\"click\", function() {\n\t\t\tcontext.collapseClick(element);\n\t\t\tcontext.render();\n\t\t});\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\tconst context = this;\n\t\tthis.titleSpan.text(context.title().length > 0 ? context.title() + \"\" : \"Accordion [\" + context._id + \"]\");\n\t\tconst rows = this.ul.selectAll(\"#\" + context._id + \" > ul > li\").data(this.content(), function(d) {\n\t\t\treturn d._id;\n\t\t});\n\t\trows.enter().append(function(widget) {\n\t\t\tconst li = document.createElement(\"li\");\n\t\t\tif (widget._target === null) {\n\t\t\t\tconst wSize = widget.size();\n\t\t\t\tif (wSize.width === 0 || wSize.height === 0) {\n\t\t\t\t\tconst cSize = context.size();\n\t\t\t\t\twidget.size({\n\t\t\t\t\t\twidth: cSize.width,\n\t\t\t\t\t\theight: cSize.width\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\twidget.target(li);\n\t\t\t} else return widget._target;\n\t\t\treturn li;\n\t\t});\n\t\trows.exit().remove();\n\t\tthis.icon.text_colorFill(this.titleFontColor()).char(this._isClosed ? this.closedIcon() : this.openIcon()).render();\n\t}\n\texit(domNode, element) {\n\t\tsuper.exit(domNode, element);\n\t}\n};\nAccordion.prototype._class += \" layout_Accordion\";\nAccordion.prototype.publish(\"content\", [], \"widgetArray\", \"Array of widgets\", null, { tags: [\"Basic\"] });\nAccordion.prototype.publish(\"title\", \"\", \"string\", \"Title of collapsible section\", null, { tags: [\"Private\"] });\nAccordion.prototype.publish(\"openIcon\", \"\", \"string\", \"Icon to display when list is open\", null, { tags: [\"Private\"] });\nAccordion.prototype.publish(\"closedIcon\", \"\", \"string\", \"Icon to display when list is closed\", null, { tags: [\"Private\"] });\nAccordion.prototype.publish(\"titleFontColor\", \"#FFFFFF\", \"html-color\", \"Title font color\", null, { tags: [\"Private\"] });\nAccordion.prototype.publish(\"titleBackgroundColor\", \"#333333\", \"html-color\", \"Title background color\", null, { tags: [\"Private\"] });\nAccordion.prototype.publish(\"defaultCollapsed\", false, \"boolean\", \"Collapsed by default if true\", null, { tags: [\"Private\"] });\n\n//#endregion\n//#region src/Surface.ts\nvar Surface = class extends HTMLWidget {\n\t_surfaceButtons;\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t\tthis._surfaceButtons = [];\n\t}\n\twidgetSize(titleDiv, widgetDiv) {\n\t\tlet width = this.clientWidth();\n\t\tlet height = this.clientHeight();\n\t\tif (this.title()) height -= this.calcHeight(titleDiv);\n\t\theight -= this.calcFrameHeight(widgetDiv);\n\t\twidth -= this.calcFrameWidth(widgetDiv);\n\t\treturn {\n\t\t\twidth,\n\t\t\theight\n\t\t};\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t}\n\tupdate(domNode, element2) {\n\t\tsuper.update(domNode, element2);\n\t\tconst context = this;\n\t\telement2.classed(\"shadow2\", this.surfaceShadow()).style(\"border-width\", this.surfaceBorderWidth_exists() ? this.surfaceBorderWidth() + \"px\" : null).style(\"border-color\", this.surfaceBorderColor()).style(\"border-radius\", this.surfaceBorderRadius_exists() ? this.surfaceBorderRadius() + \"px\" : null).style(\"background-color\", this.surfaceBackgroundColor());\n\t\tconst titles = element2.selectAll(\".surfaceTitle\").data(this.title() ? [this.title()] : []);\n\t\ttitles.enter().insert(\"h3\", \"div\").attr(\"class\", \"surfaceTitle\").merge(titles).text(function(d) {\n\t\t\treturn d;\n\t\t}).style(\"text-align\", this.surfaceTitleAlignment()).style(\"color\", this.surfaceTitleFontColor()).style(\"font-size\", this.surfaceTitleFontSize_exists() ? this.surfaceTitleFontSize() + \"px\" : null).style(\"font-family\", this.surfaceTitleFontFamily()).style(\"font-weight\", this.surfaceTitleFontBold() ? \"bold\" : \"normal\").style(\"background-color\", this.surfaceTitleBackgroundColor()).style(\"padding\", this.surfaceTitlePadding_exists() ? this.surfaceTitlePadding() + \"px\" : null).style(\"title\", this.altText_exists() ? this.altText() : null);\n\t\ttitles.exit().remove();\n\t\tconst surfaceButtons = element2.select(\".surfaceTitle\").append(\"div\").attr(\"class\", \"html-button-container\").selectAll(\".surface-button\").data(this.buttonAnnotations());\n\t\tsurfaceButtons.enter().append(\"button\").classed(\"surface-button\", true).each(function(button, idx) {\n\t\t\tconst el = context._surfaceButtons[idx] = select(this).attr(\"class\", \"surface-button\" + (button.class ? \" \" + button.class : \"\")).attr(\"id\", button.id).style(\"padding\", button.padding).style(\"width\", button.width).style(\"height\", button.height).style(\"cursor\", \"pointer\");\n\t\t\tif (button.font === \"FontAwesome\") el.style(\"background\", \"transparent\").style(\"border\", \"none\").on(\"click\", function(d) {\n\t\t\t\tcontext.click(d);\n\t\t\t}).append(\"i\").attr(\"class\", \"fa\").text(function() {\n\t\t\t\treturn button.label;\n\t\t\t});\n\t\t\telse el.text(function() {\n\t\t\t\treturn button.label;\n\t\t\t}).on(\"click\", function(d) {\n\t\t\t\tcontext.click(d);\n\t\t\t});\n\t\t});\n\t\tsurfaceButtons.exit().each(function(_d, idx) {\n\t\t\tconst element = select(this);\n\t\t\tdelete context._surfaceButtons[idx];\n\t\t\telement.remove();\n\t\t});\n\t\tconst widgets = element2.selectAll(\"#\" + this._id + \" > .surfaceWidget\").data(this.widget() ? [this.widget()] : [], function(d) {\n\t\t\treturn d._id;\n\t\t});\n\t\twidgets.enter().append(\"div\").attr(\"class\", \"surfaceWidget\").each(function(d) {\n\t\t\tselect(context.element().node().parentElement).classed(\"content-icon content-icon-\" + d.classID().split(\"_\")[1], true);\n\t\t\td.target(this);\n\t\t}).merge(widgets).style(\"padding\", this.surfacePadding_exists() ? this.surfacePadding() + \"px\" : null).each(function(d) {\n\t\t\tconst widgetSize = context.widgetSize(element2.select(\"h3\"), select(this));\n\t\t\tif (widgetSize.width < 0) widgetSize.width = 0;\n\t\t\tif (widgetSize.height < 0) widgetSize.height = 0;\n\t\t\td.resize({\n\t\t\t\twidth: widgetSize.width,\n\t\t\t\theight: widgetSize.height\n\t\t\t});\n\t\t});\n\t\twidgets.exit().each(function(d) {\n\t\t\td.target(null);\n\t\t}).remove();\n\t}\n\texit(domNode, element) {\n\t\tif (this.widget()) this.widget().target(null);\n\t\tsuper.exit(domNode, element);\n\t}\n\tclick(obj) {}\n};\nSurface.prototype._class += \" layout_Surface\";\nSurface.prototype.publish(\"title\", \"\", \"string\", \"Title\", null, { tags: [\"Intermediate\"] });\nSurface.prototype.publish(\"altText\", null, \"string\", \"Alt text\", null, { optional: true });\nSurface.prototype.publish(\"surfaceTitlePadding\", null, \"number\", \"Title Padding (px)\", null, {\n\ttags: [\"Advanced\"],\n\tdisable: (w) => !w.title()\n});\nSurface.prototype.publish(\"surfaceTitleFontSize\", null, \"number\", \"Title Font Size (px)\", null, {\n\ttags: [\"Advanced\"],\n\tdisable: (w) => !w.title()\n});\nSurface.prototype.publish(\"surfaceTitleFontColor\", null, \"html-color\", \"Title Font Color\", null, {\n\ttags: [\"Advanced\"],\n\tdisable: (w) => !w.title()\n});\nSurface.prototype.publish(\"surfaceTitleFontFamily\", null, \"string\", \"Title Font Family\", null, {\n\ttags: [\"Advanced\"],\n\tdisable: (w) => !w.title()\n});\nSurface.prototype.publish(\"surfaceTitleFontBold\", true, \"boolean\", \"Enable Bold Title Font\", null, {\n\ttags: [\"Advanced\"],\n\tdisable: (w) => !w.title()\n});\nSurface.prototype.publish(\"surfaceTitleBackgroundColor\", null, \"html-color\", \"Title Background Color\", null, {\n\ttags: [\"Advanced\"],\n\tdisable: (w) => !w.title()\n});\nSurface.prototype.publish(\"surfaceTitleAlignment\", \"center\", \"set\", \"Title Alignment\", [\n\t\"left\",\n\t\"right\",\n\t\"center\"\n], {\n\ttags: [\"Basic\"],\n\tdisable: (w) => !w.title()\n});\nSurface.prototype.publish(\"surfaceShadow\", false, \"boolean\", \"3D Shadow\");\nSurface.prototype.publish(\"surfacePadding\", null, \"string\", \"Surface Padding (px)\", null, { tags: [\"Intermediate\"] });\nSurface.prototype.publish(\"surfaceBackgroundColor\", null, \"html-color\", \"Surface Background Color\", null, { tags: [\"Advanced\"] });\nSurface.prototype.publish(\"surfaceBorderWidth\", null, \"number\", \"Surface Border Width (px)\", null, { tags: [\"Advanced\"] });\nSurface.prototype.publish(\"surfaceBorderColor\", null, \"html-color\", \"Surface Border Color\", null, { tags: [\"Advanced\"] });\nSurface.prototype.publish(\"surfaceBorderRadius\", null, \"number\", \"Surface Border Radius (px)\", null, { tags: [\"Advanced\"] });\nSurface.prototype.publish(\"buttonAnnotations\", [], \"array\", \"Button Array\", null, { tags: [\"Private\"] });\nSurface.prototype.publish(\"widget\", null, \"widget\", \"Widget\", null, { tags: [\"Basic\"] });\n\n//#endregion\n//#region src/Cell.ts\nvar Cell = class extends Surface {\n\t_indicateTheseIds;\n\tconstructor() {\n\t\tsuper();\n\t\tthis._indicateTheseIds = [];\n\t}\n\tindicateTheseIds(_) {\n\t\tif (!arguments.length) return this._indicateTheseIds;\n\t\tthis._indicateTheseIds = _;\n\t\treturn this;\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tconst context = this;\n\t\telement.classed(\"layout_Surface\", true).on(\"mouseenter\", function() {\n\t\t\tcontext.onMouseEnter();\n\t\t}).on(\"mouseleave\", function() {\n\t\t\tcontext.onMouseLeave();\n\t\t});\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t}\n\tonMouseEnter() {\n\t\tconst arr = this.indicateTheseIds();\n\t\tconst opacity = this.indicatorOpacity();\n\t\tconst indicatorBorderColor = this.indicatorBorderColor();\n\t\tconst indicatorGlowColor = this.indicatorGlowColor();\n\t\tfor (let i = 0; i < arr.length; i++) {\n\t\t\tconst otherElement = select(\"#\" + arr[i]);\n\t\t\tconst otherWidget = otherElement.datum();\n\t\t\tif (otherElement && otherWidget) otherElement.append(\"div\").attr(\"class\", \"update-indicator\").style(\"width\", otherWidget.width() + \"px\").style(\"height\", otherWidget.height() + \"px\").style(\"opacity\", opacity).style(\"border-color\", indicatorBorderColor).style(\"-webkit-box-shadow\", \"inset 0px 0px 30px 0px \" + indicatorGlowColor).style(\"-moz-box-shadow\", \"inset 0px 0px 30px 0px \" + indicatorGlowColor).style(\"box-shadow\", \"inset 0px 0px 30px 0px \" + indicatorGlowColor);\n\t\t}\n\t}\n\tonMouseLeave() {\n\t\tconst arr = this.indicateTheseIds();\n\t\tfor (let i = 0; i < arr.length; i++) selectAll(\"#\" + arr[i] + \" > div.update-indicator\").remove();\n\t}\n};\nCell.prototype._class += \" layout_Cell\";\nCell.prototype.publish(\"gridRow\", 0, \"number\", \"Grid Row Position\", null, { tags: [\"Private\"] });\nCell.prototype.publish(\"gridCol\", 0, \"number\", \"Grid Column Position\", null, { tags: [\"Private\"] });\nCell.prototype.publish(\"gridRowSpan\", 1, \"number\", \"Grid Row Span\", null, { tags: [\"Private\"] });\nCell.prototype.publish(\"gridColSpan\", 1, \"number\", \"Grid Column Span\", null, { tags: [\"Private\"] });\nCell.prototype.publish(\"indicatorGlowColor\", \"#EEEE11\", \"html-color\", \"Glow color of update-indicator\", null, { tags: [\"Basic\"] });\nCell.prototype.publish(\"indicatorBorderColor\", \"#F48A00\", \"html-color\", \"Border color of update-indicator\", null, { tags: [\"Basic\"] });\nCell.prototype.publish(\"indicatorOpacity\", .8, \"number\", \"Opacity of update-indicator\", null, { tags: [\"Basic\"] });\n\n//#endregion\n//#region src/Border.ts\nvar Border = class extends HTMLWidget {\n\t_colCount;\n\t_rowCount;\n\t_colSize;\n\t_rowSize;\n\t_shrinkWrapBoxes;\n\t_watch;\n\t_offsetX;\n\t_offsetY;\n\t_dragCell;\n\t_dragCellSize;\n\t_dragCellStartSize;\n\t_handleTop;\n\t_handleLeft;\n\t_dragPrevX;\n\t_dragPrevY;\n\t_cellSizes;\n\tcontentDiv;\n\t_scrollBarWidth;\n\t_borderHandles;\n\t_sectionTypeArr;\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t\tthis._colCount = 0;\n\t\tthis._rowCount = 0;\n\t\tthis._colSize = 0;\n\t\tthis._rowSize = 0;\n\t\tthis._shrinkWrapBoxes = {};\n\t\tthis.content([]);\n\t\tthis.sectionTypes([]);\n\t}\n\twatchWidget(widget) {\n\t\tif (this._watch === void 0) this._watch = {};\n\t\tif (this._watch[widget.id()]) {\n\t\t\tthis._watch[widget.id()].remove();\n\t\t\tdelete this._watch[widget.id()];\n\t\t}\n\t\tif (widget) {\n\t\t\tconst context = this;\n\t\t\tthis._watch[widget.id()] = widget.monitor(function(paramId, newVal, oldVal) {\n\t\t\t\tif (oldVal !== newVal) context.lazyPostUpdate();\n\t\t\t});\n\t\t}\n\t}\n\tlazyPostUpdate = Utility.debounce(function() {\n\t\tthis.postUpdate();\n\t}, 100);\n\tapplyLayoutType() {\n\t\tconst layoutObj = this.borderLayoutObject();\n\t\tthis.content().forEach(function(cell, i) {\n\t\t\tcell._fixedLeft = layoutObj[this.sectionTypes()[i]].left;\n\t\t\tcell._fixedTop = layoutObj[this.sectionTypes()[i]].top;\n\t\t\tcell._fixedWidth = layoutObj[this.sectionTypes()[i]].width;\n\t\t\tcell._fixedHeight = layoutObj[this.sectionTypes()[i]].height;\n\t\t\tcell._dragHandles = this.cellSpecificDragHandles(this.sectionTypes()[i]);\n\t\t}, this);\n\t}\n\tcellSpecificDragHandles(sectionType) {\n\t\tswitch (sectionType) {\n\t\t\tcase \"top\": return [\"s\"];\n\t\t\tcase \"right\": return [\"w\"];\n\t\t\tcase \"bottom\": return [\"n\"];\n\t\t\tcase \"left\": return [\"e\"];\n\t\t\tcase \"center\": return [];\n\t\t}\n\t}\n\tborderLayoutObject(layoutType) {\n\t\tconst retObj = {};\n\t\tconst context = this;\n\t\tlet topSize;\n\t\tlet topPerc;\n\t\tlet bottomSize;\n\t\tlet bottomPerc;\n\t\tlet leftSize;\n\t\tlet leftPerc;\n\t\tlet rightSize;\n\t\tlet rightPerc;\n\t\tconst bcRect = this.target().getBoundingClientRect();\n\t\tconst gridRect = {};\n\t\tgridRect.top = bcRect.top;\n\t\tgridRect.left = bcRect.left;\n\t\tgridRect.bottom = bcRect.bottom;\n\t\tgridRect.right = bcRect.right;\n\t\tif (this.target() instanceof SVGElement) {\n\t\t\tgridRect.width = parseFloat(this.target().getAttribute(\"width\"));\n\t\t\tgridRect.height = parseFloat(this.target().getAttribute(\"height\"));\n\t\t} else {\n\t\t\tgridRect.width = bcRect.width;\n\t\t\tgridRect.height = bcRect.height;\n\t\t}\n\t\tif (this.sectionTypes().indexOf(\"top\") !== -1) {\n\t\t\ttopSize = this.topSize();\n\t\t\ttopPerc = this.topPercentage();\n\t\t\tif (typeof this._shrinkWrapBoxes[\"top\"] !== \"undefined\") {\n\t\t\t\ttopSize = this._shrinkWrapBoxes[\"top\"].height + this.gutter();\n\t\t\t\ttopPerc = 0;\n\t\t\t}\n\t\t}\n\t\tif (this.sectionTypes().indexOf(\"bottom\") !== -1) {\n\t\t\tbottomSize = this.bottomSize();\n\t\t\tbottomPerc = this.bottomPercentage();\n\t\t\tif (typeof this._shrinkWrapBoxes[\"bottom\"] !== \"undefined\") {\n\t\t\t\tbottomSize = this._shrinkWrapBoxes[\"bottom\"].height + this.gutter();\n\t\t\t\tbottomPerc = 0;\n\t\t\t}\n\t\t}\n\t\tif (this.sectionTypes().indexOf(\"left\") !== -1) {\n\t\t\tleftSize = this.leftSize();\n\t\t\tleftPerc = this.leftPercentage();\n\t\t\tif (typeof this._shrinkWrapBoxes[\"left\"] !== \"undefined\") {\n\t\t\t\tleftSize = this._shrinkWrapBoxes[\"left\"].width + this.gutter();\n\t\t\t\tleftPerc = 0;\n\t\t\t}\n\t\t}\n\t\tif (this.sectionTypes().indexOf(\"right\") !== -1) {\n\t\t\trightSize = this.rightSize();\n\t\t\trightPerc = this.rightPercentage();\n\t\t\tif (typeof this._shrinkWrapBoxes[\"right\"] !== \"undefined\") {\n\t\t\t\trightSize = this._shrinkWrapBoxes[\"right\"].width + this.gutter();\n\t\t\t\trightPerc = 0;\n\t\t\t}\n\t\t}\n\t\tconst t = _sectionPlacementObject({\n\t\t\twidth: {\n\t\t\t\t\"px\": 0,\n\t\t\t\t\"%\": 100\n\t\t\t},\n\t\t\theight: {\n\t\t\t\t\"px\": topSize,\n\t\t\t\t\"%\": topPerc\n\t\t\t},\n\t\t\ttop: {\n\t\t\t\t\"px\": 0,\n\t\t\t\t\"%\": 0\n\t\t\t},\n\t\t\tleft: {\n\t\t\t\t\"px\": 0,\n\t\t\t\t\"%\": 0\n\t\t\t}\n\t\t});\n\t\tconst b = _sectionPlacementObject({\n\t\t\twidth: {\n\t\t\t\t\"px\": 0,\n\t\t\t\t\"%\": 100\n\t\t\t},\n\t\t\theight: {\n\t\t\t\t\"px\": bottomSize,\n\t\t\t\t\"%\": bottomPerc\n\t\t\t},\n\t\t\ttop: {\n\t\t\t\t\"px\": 0,\n\t\t\t\t\"%\": 100\n\t\t\t},\n\t\t\tleft: {\n\t\t\t\t\"px\": 0,\n\t\t\t\t\"%\": 0\n\t\t\t}\n\t\t});\n\t\tb.top -= b.height;\n\t\tconst l = _sectionPlacementObject({\n\t\t\twidth: {\n\t\t\t\t\"px\": leftSize,\n\t\t\t\t\"%\": leftPerc\n\t\t\t},\n\t\t\theight: {\n\t\t\t\t\"px\": -t.height - b.height,\n\t\t\t\t\"%\": 100\n\t\t\t},\n\t\t\ttop: {\n\t\t\t\t\"px\": t.height,\n\t\t\t\t\"%\": 0\n\t\t\t},\n\t\t\tleft: {\n\t\t\t\t\"px\": 0,\n\t\t\t\t\"%\": 0\n\t\t\t}\n\t\t});\n\t\tconst r = _sectionPlacementObject({\n\t\t\twidth: {\n\t\t\t\t\"px\": rightSize,\n\t\t\t\t\"%\": rightPerc\n\t\t\t},\n\t\t\theight: {\n\t\t\t\t\"px\": -t.height - b.height,\n\t\t\t\t\"%\": 100\n\t\t\t},\n\t\t\ttop: {\n\t\t\t\t\"px\": t.height,\n\t\t\t\t\"%\": 0\n\t\t\t},\n\t\t\tleft: {\n\t\t\t\t\"px\": 0,\n\t\t\t\t\"%\": 100\n\t\t\t}\n\t\t});\n\t\tr.left -= r.width;\n\t\tconst c$1 = _sectionPlacementObject({\n\t\t\twidth: {\n\t\t\t\t\"px\": -r.width - l.width,\n\t\t\t\t\"%\": 100\n\t\t\t},\n\t\t\theight: {\n\t\t\t\t\"px\": -t.height - b.height,\n\t\t\t\t\"%\": 100\n\t\t\t},\n\t\t\ttop: {\n\t\t\t\t\"px\": t.height,\n\t\t\t\t\"%\": 0\n\t\t\t},\n\t\t\tleft: {\n\t\t\t\t\"px\": l.width,\n\t\t\t\t\"%\": 0\n\t\t\t}\n\t\t});\n\t\tretObj[\"top\"] = t;\n\t\tretObj[\"bottom\"] = b;\n\t\tretObj[\"right\"] = r;\n\t\tretObj[\"left\"] = l;\n\t\tretObj[\"center\"] = c$1;\n\t\treturn retObj;\n\t\tfunction _sectionPlacementObject(obj) {\n\t\t\tobj.width[\"px\"] = typeof obj.width[\"px\"] !== \"undefined\" ? obj.width[\"px\"] : 0;\n\t\t\tobj.width[\"%\"] = typeof obj.width[\"%\"] !== \"undefined\" ? obj.width[\"%\"] : 0;\n\t\t\tobj.height[\"px\"] = typeof obj.height[\"px\"] !== \"undefined\" ? obj.height[\"px\"] : 0;\n\t\t\tobj.height[\"%\"] = typeof obj.height[\"%\"] !== \"undefined\" ? obj.height[\"%\"] : 0;\n\t\t\treturn {\n\t\t\t\twidth: obj.width[\"px\"] + obj.width[\"%\"] / 100 * context.width(),\n\t\t\t\theight: obj.height[\"px\"] + obj.height[\"%\"] / 100 * context.height(),\n\t\t\t\ttop: obj.top[\"px\"] + obj.top[\"%\"] / 100 * context.height() + context.gutter() / 2,\n\t\t\t\tleft: obj.left[\"px\"] + obj.left[\"%\"] / 100 * context.width() + context.gutter() / 2\n\t\t\t};\n\t\t}\n\t}\n\tclearContent(sectionType) {\n\t\tif (!sectionType) {\n\t\t\tthis.content().forEach(function(contentWidget) {\n\t\t\t\tcontentWidget.target(null);\n\t\t\t\treturn false;\n\t\t\t});\n\t\t\tselect(\"#\" + this.id() + \" > div.borderHandle\").classed(\"borderHandleDisabled\", true);\n\t\t\tdelete this._watch;\n\t\t\tthis.content([]);\n\t\t\tthis.sectionTypes([]);\n\t\t} else {\n\t\t\tconst idx = this.sectionTypes().indexOf(sectionType);\n\t\t\tif (idx >= 0) {\n\t\t\t\tif (this._watch && this.content()[idx]) delete this._watch[this.content()[idx].id()];\n\t\t\t\tthis.content()[idx].target(null);\n\t\t\t\tselect(\"#\" + this.id() + \" > div.borderHandle_\" + sectionType).classed(\"borderHandleDisabled\", true);\n\t\t\t\tthis.content().splice(idx, 1);\n\t\t\t\tthis.sectionTypes().splice(idx, 1);\n\t\t\t}\n\t\t}\n\t}\n\thasContent(sectionType, widget, title) {\n\t\treturn this.sectionTypes().indexOf(sectionType) >= 0;\n\t}\n\tsetContent(sectionType, widget, title) {\n\t\tthis.clearContent(sectionType);\n\t\ttitle = typeof title !== \"undefined\" ? title : \"\";\n\t\tif (widget) {\n\t\t\tconst cell = new Cell().surfaceBorderWidth(0).widget(widget).title(title);\n\t\t\tthis.watchWidget(widget);\n\t\t\tthis.content().push(cell);\n\t\t\tthis.sectionTypes().push(sectionType);\n\t\t}\n\t\treturn this;\n\t}\n\tgetCell(id) {\n\t\tconst idx = this.sectionTypes().indexOf(id);\n\t\tif (idx >= 0) return this.content()[idx];\n\t\treturn null;\n\t}\n\tgetContent(id) {\n\t\tconst idx = this.sectionTypes().indexOf(id);\n\t\tif (idx >= 0) return this.content()[idx].widget();\n\t\treturn null;\n\t}\n\tsetLayoutOffsets() {\n\t\tthis._offsetX = this._element.node().getBoundingClientRect().left + this.gutter() / 2;\n\t\tthis._offsetY = this._element.node().getBoundingClientRect().top + this.gutter() / 2;\n\t}\n\tdragStart(handle) {\n\t\tconst event = d3Event();\n\t\tevent.sourceEvent.stopPropagation();\n\t\tconst context = this;\n\t\tthis._dragCell = handle;\n\t\tthis._dragCellStartSize = this[handle + \"Size\"]();\n\t\tif (this[handle + \"ShrinkWrap\"]()) {\n\t\t\tthis[handle + \"Percentage\"](0);\n\t\t\tthis[handle + \"ShrinkWrap\"](false);\n\t\t}\n\t\tconst handleElm = select(\"#\" + context.id() + \" > div.borderHandle_\" + handle);\n\t\tcontext._handleTop = parseFloat(handleElm.style(\"top\").split(\"px\")[0]);\n\t\tcontext._handleLeft = parseFloat(handleElm.style(\"left\").split(\"px\")[0]);\n\t\tthis._dragPrevX = event.sourceEvent.clientX;\n\t\tthis._dragPrevY = event.sourceEvent.clientY;\n\t}\n\tdragTick(handle) {\n\t\tconst context = this;\n\t\tconst event = d3Event();\n\t\tconst xDelta = this._dragPrevX - event.sourceEvent.clientX;\n\t\tconst yDelta = this._dragPrevY - event.sourceEvent.clientY;\n\t\tswitch (handle) {\n\t\t\tcase \"top\":\n\t\t\tcase \"bottom\":\n\t\t\t\t_moveHandles(handle, yDelta);\n\t\t\t\tbreak;\n\t\t\tcase \"right\":\n\t\t\tcase \"left\":\n\t\t\t\t_moveHandles(handle, xDelta);\n\t\t\t\tbreak;\n\t\t}\n\t\tfunction _moveHandles(handle2, delta) {\n\t\t\tif (delta === 0) return;\n\t\t\tconst handles = selectAll(\"#\" + context.id() + \" > div.borderHandle\");\n\t\t\tconst grabbedHandle = select(\"#\" + context.id() + \" > div.borderHandle_\" + handle2);\n\t\t\tif (grabbedHandle.classed(\"borderHandle_top\")) {\n\t\t\t\tgrabbedHandle.style(\"top\", context._handleTop - delta + \"px\");\n\t\t\t\tcontext._cellSizes.topHeight = context._handleTop - delta;\n\t\t\t\tcontext._cellSizes.leftHeight = context._cellSizes.height;\n\t\t\t\tcontext._cellSizes.leftHeight -= context._cellSizes.topHeight;\n\t\t\t\tcontext._cellSizes.leftHeight -= context._cellSizes.bottomHeight;\n\t\t\t\tcontext._cellSizes.rightHeight = context._cellSizes.leftHeight;\n\t\t\t} else if (grabbedHandle.classed(\"borderHandle_right\")) {\n\t\t\t\tgrabbedHandle.style(\"left\", context._handleLeft - delta + \"px\");\n\t\t\t\tcontext._cellSizes.rightWidth = context._cellSizes.width - context._handleLeft + delta;\n\t\t\t} else if (grabbedHandle.classed(\"borderHandle_bottom\")) {\n\t\t\t\tgrabbedHandle.style(\"top\", context._handleTop - delta + \"px\");\n\t\t\t\tcontext._cellSizes.bottomHeight = context._cellSizes.height - context._handleTop + delta;\n\t\t\t\tcontext._cellSizes.leftHeight = context._cellSizes.height;\n\t\t\t\tcontext._cellSizes.leftHeight -= context._cellSizes.bottomHeight;\n\t\t\t\tcontext._cellSizes.leftHeight -= context._cellSizes.topHeight;\n\t\t\t\tcontext._cellSizes.rightHeight = context._cellSizes.leftHeight;\n\t\t\t} else if (grabbedHandle.classed(\"borderHandle_left\")) {\n\t\t\t\tgrabbedHandle.style(\"left\", context._handleLeft - delta + \"px\");\n\t\t\t\tcontext._cellSizes.leftWidth = context._handleLeft - delta;\n\t\t\t}\n\t\t\thandles.each(function() {\n\t\t\t\tconst handle3 = select(this);\n\t\t\t\tif (handle3.classed(\"borderHandle_top\")) {\n\t\t\t\t\thandle3.style(\"width\", context._cellSizes.width + \"px\");\n\t\t\t\t\thandle3.style(\"top\", context._cellSizes.topHeight - 3 + \"px\");\n\t\t\t\t} else if (handle3.classed(\"borderHandle_right\")) {\n\t\t\t\t\thandle3.style(\"left\", context._cellSizes.width - context._cellSizes.rightWidth + \"px\");\n\t\t\t\t\thandle3.style(\"top\", context._cellSizes.topHeight + 3 + \"px\");\n\t\t\t\t\thandle3.style(\"height\", context._cellSizes.rightHeight + \"px\");\n\t\t\t\t} else if (handle3.classed(\"borderHandle_bottom\")) {\n\t\t\t\t\thandle3.style(\"width\", context._cellSizes.width + \"px\");\n\t\t\t\t\thandle3.style(\"top\", context._cellSizes.height - context._cellSizes.bottomHeight - 3 + \"px\");\n\t\t\t\t} else if (handle3.classed(\"borderHandle_left\")) {\n\t\t\t\t\thandle3.style(\"left\", context._cellSizes.leftWidth + \"px\");\n\t\t\t\t\thandle3.style(\"height\", context._cellSizes.leftHeight + \"px\");\n\t\t\t\t\thandle3.style(\"top\", context._cellSizes.topHeight + 3 + \"px\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\tdragEnd(handle) {\n\t\tif (handle) {\n\t\t\tconst event = d3Event();\n\t\t\tconst xDelta = this._dragPrevX - event.sourceEvent.clientX;\n\t\t\tconst yDelta = this._dragPrevY - event.sourceEvent.clientY;\n\t\t\tswitch (handle) {\n\t\t\t\tcase \"top\":\n\t\t\t\t\tif (yDelta !== 0) {\n\t\t\t\t\t\tthis.topPercentage(0);\n\t\t\t\t\t\tthis.topSize(this.topSize() === 0 ? this.getContent(\"top\").getBBox().height - yDelta : this.topSize() - yDelta);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"right\":\n\t\t\t\t\tif (xDelta !== 0) {\n\t\t\t\t\t\tthis.rightPercentage(0);\n\t\t\t\t\t\tthis.rightSize(this.rightSize() === 0 ? this.getContent(\"right\").getBBox().width + xDelta : this.rightSize() + xDelta);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"bottom\":\n\t\t\t\t\tif (yDelta !== 0) {\n\t\t\t\t\t\tthis.bottomPercentage(0);\n\t\t\t\t\t\tthis.bottomSize(this.bottomSize() === 0 ? this.getContent(\"bottom\").getBBox().height + yDelta : this.bottomSize() + yDelta);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"left\":\n\t\t\t\t\tif (xDelta !== 0) {\n\t\t\t\t\t\tthis.leftPercentage(0);\n\t\t\t\t\t\tthis.leftSize(this.leftSize() === 0 ? this.getContent(\"left\").getBBox().width - xDelta : this.leftSize() - xDelta);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis._dragPrevX = event.sourceEvent.clientX;\n\t\t\tthis._dragPrevY = event.sourceEvent.clientY;\n\t\t}\n\t\tthis.render();\n\t}\n\tsize(_) {\n\t\tconst retVal = HTMLWidget.prototype.size.apply(this, arguments);\n\t\tif (arguments.length && this.contentDiv) this.contentDiv.style(\"width\", this._size.width + \"px\").style(\"height\", this._size.height + \"px\");\n\t\treturn retVal;\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tconst context = this;\n\t\telement.style(\"position\", \"relative\");\n\t\tthis.contentDiv = element.append(\"div\").classed(\"border-content\", true);\n\t\tthis._scrollBarWidth = Platform.getScrollbarWidth();\n\t\tthis._borderHandles = [\n\t\t\t\"top\",\n\t\t\t\"left\",\n\t\t\t\"right\",\n\t\t\t\"bottom\"\n\t\t];\n\t\telement.selectAll(\"div.borderHandle\").data(this._borderHandles).enter().append(\"div\").classed(\"borderHandle\", true).each(function(handle) {\n\t\t\tselect(this).classed(\"borderHandle_\" + handle, true).classed(\"borderHandleDisabled\", context.getContent(handle) === null);\n\t\t});\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\tthis._sectionTypeArr = this.sectionTypes();\n\t\tconst context = this;\n\t\telement.classed(\"design-mode\", this.designMode());\n\t\tthis.setLayoutOffsets();\n\t\tconst rows = this.contentDiv.selectAll(\".cell_\" + this._id).data(this.content(), function(d) {\n\t\t\treturn d._id;\n\t\t});\n\t\tconst rowsUpdate = rows.enter().append(\"div\").classed(\"cell_\" + this._id, true).style(\"position\", \"absolute\").each(function(d, i) {\n\t\t\tselect(this).classed(\"border-cell border-cell-\" + context._sectionTypeArr[i], true);\n\t\t\td.target(this);\n\t\t\tselect(\"#\" + context.id() + \" > div.borderHandle_\" + context._sectionTypeArr[i]).classed(\"borderHandleDisabled\", false);\n\t\t}).merge(rows);\n\t\trowsUpdate.each(function(d, idx) {\n\t\t\tconst sectionType = context.sectionTypes()[idx];\n\t\t\tif (typeof context[sectionType + \"ShrinkWrap\"] !== \"undefined\" && context[sectionType + \"ShrinkWrap\"]()) {\n\t\t\t\td.render();\n\t\t\t\tcontext._shrinkWrapBoxes[sectionType] = d.widget().getBBox(true);\n\t\t\t} else delete context._shrinkWrapBoxes[sectionType];\n\t\t});\n\t\tconst drag$1 = drag().on(\"start\", function(d, i) {\n\t\t\tcontext.dragStart.call(context, d, i);\n\t\t}).on(\"drag\", function(d, i) {\n\t\t\tcontext.dragTick.call(context, d, i);\n\t\t}).on(\"end\", function(d, i) {\n\t\t\tcontext.dragEnd.call(context, d, i);\n\t\t});\n\t\tif (this.designMode()) element.selectAll(\"#\" + this.id() + \" > div.borderHandle\").call(drag$1);\n\t\telse element.selectAll(\"#\" + this.id() + \" > div.borderHandle\").on(\".drag\", null);\n\t\tconst layoutObj = this.borderLayoutObject();\n\t\tthis.content().forEach(function(cell, i) {\n\t\t\tcell._fixedLeft = layoutObj[this.sectionTypes()[i]].left;\n\t\t\tcell._fixedTop = layoutObj[this.sectionTypes()[i]].top;\n\t\t\tcell._fixedWidth = layoutObj[this.sectionTypes()[i]].width;\n\t\t\tcell._fixedHeight = layoutObj[this.sectionTypes()[i]].height;\n\t\t\tcell._dragHandles = [];\n\t\t}, this);\n\t\trowsUpdate.style(\"left\", function(d) {\n\t\t\treturn d._fixedLeft + \"px\";\n\t\t}).style(\"top\", function(d) {\n\t\t\treturn d._fixedTop + \"px\";\n\t\t}).style(\"width\", function(d) {\n\t\t\treturn d._fixedWidth - context.gutter() + \"px\";\n\t\t}).style(\"height\", function(d) {\n\t\t\treturn d._fixedHeight - context.gutter() + \"px\";\n\t\t}).each(function(d) {\n\t\t\td._placeholderElement.attr(\"draggable\", context.designMode()).selectAll(\".dragHandle\").attr(\"draggable\", context.designMode());\n\t\t\td.surfacePadding(context.surfacePadding()).resize();\n\t\t});\n\t\trows.exit().each(function(d) {\n\t\t\td.target(null);\n\t\t}).remove();\n\t\tthis.getCellSizes();\n\t\telement.selectAll(\"#\" + this.id() + \" > div.borderHandle\").each(function() {\n\t\t\tconst handle = select(this);\n\t\t\tif (handle.classed(\"borderHandle_top\")) {\n\t\t\t\thandle.style(\"width\", context._cellSizes.width + \"px\");\n\t\t\t\thandle.style(\"top\", context._cellSizes.topHeight - 3 + \"px\");\n\t\t\t} else if (handle.classed(\"borderHandle_right\")) {\n\t\t\t\thandle.style(\"left\", context._cellSizes.width - context._cellSizes.rightWidth + \"px\");\n\t\t\t\thandle.style(\"top\", context._cellSizes.topHeight + 3 + \"px\");\n\t\t\t\thandle.style(\"height\", context._cellSizes.rightHeight + \"px\");\n\t\t\t} else if (handle.classed(\"borderHandle_bottom\")) {\n\t\t\t\thandle.style(\"width\", context._cellSizes.width + \"px\");\n\t\t\t\thandle.style(\"top\", context._cellSizes.height - context._cellSizes.bottomHeight - 3 + \"px\");\n\t\t\t} else if (handle.classed(\"borderHandle_left\")) {\n\t\t\t\thandle.style(\"left\", context._cellSizes.leftWidth + \"px\");\n\t\t\t\thandle.style(\"height\", context._cellSizes.leftHeight + \"px\");\n\t\t\t\thandle.style(\"top\", context._cellSizes.topHeight + 3 + \"px\");\n\t\t\t}\n\t\t});\n\t}\n\tgetCellSizes() {\n\t\tconst context = this;\n\t\tcontext._cellSizes = {};\n\t\tconst contentRect = this.element().node().getBoundingClientRect();\n\t\tcontext._cellSizes.width = contentRect.width;\n\t\tcontext._cellSizes.height = contentRect.height;\n\t\tthis.element().selectAll(\"#\" + this.id() + \" > div > div.border-cell\").each(function() {\n\t\t\tconst cell = select(this);\n\t\t\tif (typeof cell.node === \"function\") {\n\t\t\t\tconst rect = cell.node().getBoundingClientRect();\n\t\t\t\tif (cell.classed(\"border-cell-top\")) context._cellSizes.topHeight = rect.height;\n\t\t\t\telse if (cell.classed(\"border-cell-left\")) {\n\t\t\t\t\tcontext._cellSizes.leftWidth = rect.width;\n\t\t\t\t\tcontext._cellSizes.leftHeight = rect.height;\n\t\t\t\t} else if (cell.classed(\"border-cell-right\")) {\n\t\t\t\t\tcontext._cellSizes.rightWidth = rect.width;\n\t\t\t\t\tcontext._cellSizes.rightHeight = rect.height;\n\t\t\t\t} else if (cell.classed(\"border-cell-bottom\")) context._cellSizes.bottomHeight = rect.height;\n\t\t\t}\n\t\t});\n\t\t[\n\t\t\t\"height\",\n\t\t\t\"width\",\n\t\t\t\"topHeight\",\n\t\t\t\"bottomHeight\",\n\t\t\t\"leftHeight\",\n\t\t\t\"rightHeight\",\n\t\t\t\"leftWidth\",\n\t\t\t\"rightWidth\"\n\t\t].forEach(function(size) {\n\t\t\tcontext._cellSizes[size] = context._cellSizes[size] === void 0 ? 0 : context._cellSizes[size];\n\t\t});\n\t}\n\tpostUpdate(domNode, element) {\n\t\tconst context = this;\n\t\tthis.content().forEach(function(n) {\n\t\t\tif (n._element.node() !== null && n.widget()) {\n\t\t\t\tconst prevBox = n.widget().getBBox(false, true);\n\t\t\t\tconst currBox = n.widget().getBBox(true, true);\n\t\t\t\tif (prevBox.width !== currBox.width || prevBox.height !== currBox.height) context.lazyRender();\n\t\t\t}\n\t\t});\n\t}\n\texit(domNode, element) {\n\t\tthis.content().forEach((w) => w.target(null));\n\t\tsuper.exit(domNode, element);\n\t}\n};\nBorder.prototype._class += \" layout_Border\";\nBorder.prototype.publish(\"designMode\", false, \"boolean\", \"Design Mode\", null, { tags: [\"Basic\"] });\nBorder.prototype.publish(\"content\", [], \"widgetArray\", \"widgets\", null, { tags: [\"Intermediate\"] });\nBorder.prototype.publish(\"gutter\", 0, \"number\", \"Gap Between Widgets\", null, { tags: [\"Basic\"] });\nBorder.prototype.publish(\"topShrinkWrap\", false, \"boolean\", \"'Top' Cell shrinks to fit content\", null, { tags: [\"Intermediate\"] });\nBorder.prototype.publish(\"leftShrinkWrap\", false, \"boolean\", \"'Left' Cell shrinks to fit content\", null, { tags: [\"Intermediate\"] });\nBorder.prototype.publish(\"rightShrinkWrap\", false, \"boolean\", \"'Right' Cell shrinks to fit content\", null, { tags: [\"Intermediate\"] });\nBorder.prototype.publish(\"bottomShrinkWrap\", false, \"boolean\", \"'Bottom' Cell shrinks to fit content\", null, { tags: [\"Intermediate\"] });\nBorder.prototype.publish(\"topSize\", 0, \"number\", \"Height of the 'Top' Cell (px)\", null, { tags: [\"Private\"] });\nBorder.prototype.publish(\"leftSize\", 0, \"number\", \"Width of the 'Left' Cell (px)\", null, { tags: [\"Private\"] });\nBorder.prototype.publish(\"rightSize\", 0, \"number\", \"Width of the 'Right' Cell (px)\", null, { tags: [\"Private\"] });\nBorder.prototype.publish(\"bottomSize\", 0, \"number\", \"Height of the 'Bottom' Cell (px)\", null, { tags: [\"Private\"] });\nBorder.prototype.publish(\"topPercentage\", 20, \"number\", \"Percentage (of parent) Height of the 'Top' Cell\", null, { tags: [\"Private\"] });\nBorder.prototype.publish(\"leftPercentage\", 20, \"number\", \"Percentage (of parent) Width of the 'Left' Cell\", null, { tags: [\"Private\"] });\nBorder.prototype.publish(\"rightPercentage\", 20, \"number\", \"Percentage (of parent) Width of the 'Right' Cell\", null, { tags: [\"Private\"] });\nBorder.prototype.publish(\"bottomPercentage\", 20, \"number\", \"Percentage (of parent) Height of the 'Bottom' Cell\", null, { tags: [\"Private\"] });\nBorder.prototype.publish(\"surfacePadding\", 0, \"number\", \"Cell Padding (px)\", null, { tags: [\"Intermediate\"] });\nBorder.prototype.publish(\"sectionTypes\", [], \"array\", \"Section Types sharing an index with 'content' - Used to determine position/size.\", null, { tags: [\"Private\"] });\n\n//#endregion\n//#region src/Border2.ts\nvar WidgetDiv = class {\n\t_div;\n\t_overlay = false;\n\t_overflowX = \"visible\";\n\t_overflowY = \"visible\";\n\t_widget;\n\tconstructor(div) {\n\t\tthis._div = div;\n\t}\n\toverlay(_) {\n\t\tif (!arguments.length) return this._overlay;\n\t\tthis._overlay = _;\n\t\treturn this;\n\t}\n\toverflowX(_) {\n\t\tif (!arguments.length) return this._overflowX;\n\t\tthis._overflowX = _;\n\t\tthis._div.style(\"overflow-x\", _);\n\t\treturn this;\n\t}\n\toverflowY(_) {\n\t\tif (!arguments.length) return this._overflowY;\n\t\tthis._overflowY = _;\n\t\tthis._div.style(\"overflow-y\", _);\n\t\treturn this;\n\t}\n\telement() {\n\t\treturn this._div;\n\t}\n\tnode() {\n\t\treturn this._div.node();\n\t}\n\twidget(_) {\n\t\tif (!arguments.length) return this._widget;\n\t\tif (this._widget !== _) {\n\t\t\tif (this._widget) this._widget.target(null);\n\t\t\tthis._widget = _;\n\t\t\tif (this._widget) this._widget.target(this._div.node());\n\t\t}\n\t\treturn this;\n\t}\n\tresize(size) {\n\t\tif (this._widget) {\n\t\t\tthis._div.style(\"width\", `${size.width}px`).style(\"height\", `${size.height}px`);\n\t\t\tthis._widget.resize(size);\n\t\t}\n\t\treturn this;\n\t}\n\tasync render(getBBox, availableHeight, availableWidth) {\n\t\tlet overflowX = this.overflowX();\n\t\tif (!this.overlay() && overflowX === \"visible\") overflowX = null;\n\t\tlet overflowY = this.overflowY();\n\t\tif (!this.overlay() && overflowY === \"visible\") overflowY = null;\n\t\tthis._div.style(\"height\", this.overlay() ? \"0px\" : null).style(\"overflow-x\", overflowX).style(\"overflow-y\", overflowY);\n\t\tif (this._widget) return this._widget.renderPromise().then((w) => {\n\t\t\tif (getBBox && this._widget.visible()) {\n\t\t\t\tconst retVal = this._widget.getBBox();\n\t\t\t\tretVal.width += 8;\n\t\t\t\tif (availableHeight !== void 0 && retVal.height > availableHeight) retVal.width += Platform.getScrollbarWidth();\n\t\t\t\tif (availableWidth !== void 0 && retVal.width > availableWidth) retVal.height += Platform.getScrollbarWidth();\n\t\t\t\tif (this.overlay()) retVal.height = 0;\n\t\t\t\telse retVal.height += 4;\n\t\t\t\treturn retVal;\n\t\t\t}\n\t\t\treturn getBBox ? {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0\n\t\t\t} : void 0;\n\t\t});\n\t\telse return Promise.resolve(getBBox ? {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t} : void 0);\n\t}\n};\nvar Border2 = class extends HTMLWidget {\n\t_bodyElement;\n\t_topWA;\n\t_leftWA;\n\t_centerWA;\n\t_rightWA;\n\t_bottomWA;\n\t_topPrevOverflow;\n\t_leftPrevOverflow;\n\t_rightPrevOverflow;\n\t_bottomPrevOverflow;\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tconst topElement = element.append(\"header\");\n\t\tthis._bodyElement = element.append(\"div\").attr(\"class\", \"body\");\n\t\tconst centerElement = this._bodyElement.append(\"div\").attr(\"class\", \"center\");\n\t\tconst leftElement = this._bodyElement.append(\"div\").attr(\"class\", \"lhs\");\n\t\tconst rightElement = this._bodyElement.append(\"div\").attr(\"class\", \"rhs\");\n\t\tconst bottomElement = element.append(\"div\").attr(\"class\", \"footer\");\n\t\tthis._topWA = new WidgetDiv(topElement);\n\t\tthis._centerWA = new WidgetDiv(centerElement);\n\t\tthis._leftWA = new WidgetDiv(leftElement);\n\t\tthis._rightWA = new WidgetDiv(rightElement);\n\t\tthis._bottomWA = new WidgetDiv(bottomElement);\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\tthis._topWA.element().style(\"display\", this.showTop() ? null : \"none\");\n\t\tthis._rightWA.element().style(\"display\", this.showRight() ? null : \"none\");\n\t\tthis._bottomWA.element().style(\"display\", this.showBottom() ? null : \"none\");\n\t\tthis._leftWA.element().style(\"display\", this.showLeft() ? null : \"none\");\n\t\tif (this.topOverflowX() !== this._topWA.overflowX()) this._topWA.overflowX(this.topOverflowX());\n\t\tif (this.rightOverflowX() !== this._rightWA.overflowX()) this._rightWA.overflowX(this.rightOverflowX());\n\t\tif (this.bottomOverflowX() !== this._bottomWA.overflowX()) this._bottomWA.overflowX(this.bottomOverflowX());\n\t\tif (this.leftOverflowX() !== this._leftWA.overflowX()) this._leftWA.overflowX(this.leftOverflowX());\n\t\tif (this.topOverflowY() !== this._topWA.overflowY()) this._topWA.overflowY(this.topOverflowY());\n\t\tif (this.rightOverflowY() !== this._rightWA.overflowY()) this._rightWA.overflowY(this.rightOverflowY());\n\t\tif (this.bottomOverflowY() !== this._bottomWA.overflowY()) this._bottomWA.overflowY(this.bottomOverflowY());\n\t\tif (this.leftOverflowY() !== this._leftWA.overflowY()) this._leftWA.overflowY(this.leftOverflowY());\n\t\tthis.element().style(\"width\", `${this.width()}px`).style(\"height\", `${this.height()}px`);\n\t}\n\ttargetNull(w) {\n\t\tif (w) w.target(null);\n\t}\n\texit(domNode, element) {\n\t\tthis.targetNull(this.center());\n\t\tthis.targetNull(this.bottom());\n\t\tthis.targetNull(this.right());\n\t\tthis.targetNull(this.left());\n\t\tthis.targetNull(this.top());\n\t\tsuper.exit(domNode, element);\n\t}\n\tswap(sectionA, sectionB) {\n\t\tconst a$1 = this[sectionA]();\n\t\tconst b = this[sectionB]();\n\t\tthis.targetNull(a$1);\n\t\tthis.targetNull(b);\n\t\tthis[`_${sectionA}WA`].widget(null);\n\t\tthis[`_${sectionB}WA`].widget(null);\n\t\tthis[sectionA](b);\n\t\tthis[sectionB](a$1);\n\t\treturn this;\n\t}\n\trender(callback) {\n\t\treturn super.render((w) => {\n\t\t\tif (this._topWA) this._topWA.widget(this.top()).overlay(this.topOverlay()).render(true).then(async (topBBox) => {\n\t\t\t\tconst bottomBBox = await this._bottomWA.widget(this.bottom()).render(true, void 0, this.width());\n\t\t\t\tconst availableHeight = this.height() - (topBBox.height + bottomBBox.height);\n\t\t\t\tconst leftBBox = await this._leftWA.widget(this.left()).render(true, availableHeight);\n\t\t\t\tconst rightBBox = await this._rightWA.widget(this.right()).render(true, availableHeight);\n\t\t\t\tif (this.bottomHeight_exists()) bottomBBox.height = this.bottomHeight();\n\t\t\t\tconst bodyWidth = this.width() - (leftBBox.width + rightBBox.width);\n\t\t\t\tconst bodyHeight = this.height() - (topBBox.height + bottomBBox.height);\n\t\t\t\tconst centerOverflowX = this.centerOverflowX();\n\t\t\t\tconst centerOverflowY = this.centerOverflowY();\n\t\t\t\tconst scrollCenterX = [\"auto\", \"scroll\"].indexOf(centerOverflowX) !== -1;\n\t\t\t\tconst scrollCenterY = [\"auto\", \"scroll\"].indexOf(centerOverflowY) !== -1;\n\t\t\t\tif (scrollCenterX || scrollCenterY) this._centerWA.overflowX(this.centerOverflowX()).overflowY(this.centerOverflowY()).widget(this.center()).resize({\n\t\t\t\t\twidth: bodyWidth,\n\t\t\t\t\theight: bodyHeight\n\t\t\t\t}).render();\n\t\t\t\tthis._bodyElement.style(\"height\", `${bodyHeight}px`);\n\t\t\t\tconst promises = [\n\t\t\t\t\tthis._topWA.overflowX(this.topOverflowX()).overflowY(this.topOverflowY()).resize({\n\t\t\t\t\t\twidth: this.width(),\n\t\t\t\t\t\theight: topBBox.height\n\t\t\t\t\t}).render(),\n\t\t\t\t\tthis._leftWA.overflowX(this.leftOverflowX()).overflowY(this.leftOverflowY()).resize({\n\t\t\t\t\t\twidth: leftBBox.width,\n\t\t\t\t\t\theight: bodyHeight\n\t\t\t\t\t}).render(),\n\t\t\t\t\tthis._rightWA.overflowX(this.rightOverflowX()).overflowY(this.rightOverflowY()).resize({\n\t\t\t\t\t\twidth: rightBBox.width,\n\t\t\t\t\t\theight: bodyHeight\n\t\t\t\t\t}).render(),\n\t\t\t\t\tthis._centerWA.overflowX(this.centerOverflowX()).overflowY(this.centerOverflowY()).widget(this.center()).resize({\n\t\t\t\t\t\twidth: bodyWidth,\n\t\t\t\t\t\theight: bodyHeight\n\t\t\t\t\t}).render(),\n\t\t\t\t\tthis._bottomWA.overflowX(this.bottomOverflowX()).overflowY(this.bottomOverflowY()).resize({\n\t\t\t\t\t\twidth: this.width(),\n\t\t\t\t\t\theight: bottomBBox.height\n\t\t\t\t\t}).render()\n\t\t\t\t];\n\t\t\t\tPromise.all(promises).then((promises$1) => {\n\t\t\t\t\tif (callback) callback(this);\n\t\t\t\t});\n\t\t\t});\n\t\t\telse if (callback) callback(this);\n\t\t});\n\t}\n};\nBorder2.prototype._class += \" layout_Border2\";\nBorder2.prototype.publish(\"showTop\", true, \"boolean\", \"If true, top widget adapter will display\");\nBorder2.prototype.publish(\"showRight\", true, \"boolean\", \"If true, right widget adapter will display\");\nBorder2.prototype.publish(\"showBottom\", true, \"boolean\", \"If true, bottom widget adapter will display\");\nBorder2.prototype.publish(\"showLeft\", true, \"boolean\", \"If true, left widget adapter will display\");\nBorder2.prototype.publish(\"topOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the top widget adapter\", [\n\t\"hidden\",\n\t\"scroll\",\n\t\"visible\",\n\t\"auto\"\n]);\nBorder2.prototype.publish(\"rightOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the right widget adapter\", [\n\t\"hidden\",\n\t\"scroll\",\n\t\"visible\",\n\t\"auto\"\n]);\nBorder2.prototype.publish(\"bottomOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the bottom widget adapter\", [\n\t\"hidden\",\n\t\"scroll\",\n\t\"visible\",\n\t\"auto\"\n]);\nBorder2.prototype.publish(\"leftOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the left widget adapter\", [\n\t\"hidden\",\n\t\"scroll\",\n\t\"visible\",\n\t\"auto\"\n]);\nBorder2.prototype.publish(\"centerOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the center widget adapter\", [\n\t\"hidden\",\n\t\"scroll\",\n\t\"visible\",\n\t\"auto\"\n]);\nBorder2.prototype.publish(\"topOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the top widget adapter\", [\n\t\"hidden\",\n\t\"scroll\",\n\t\"visible\",\n\t\"auto\"\n]);\nBorder2.prototype.publish(\"rightOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the right widget adapter\", [\n\t\"hidden\",\n\t\"scroll\",\n\t\"visible\",\n\t\"auto\"\n]);\nBorder2.prototype.publish(\"bottomOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the bottom widget adapter\", [\n\t\"hidden\",\n\t\"scroll\",\n\t\"visible\",\n\t\"auto\"\n]);\nBorder2.prototype.publish(\"leftOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the left widget adapter\", [\n\t\"hidden\",\n\t\"scroll\",\n\t\"visible\",\n\t\"auto\"\n]);\nBorder2.prototype.publish(\"centerOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the center widget adapter\", [\n\t\"hidden\",\n\t\"scroll\",\n\t\"visible\",\n\t\"auto\"\n]);\nBorder2.prototype.publish(\"top\", null, \"widget\", \"Top Widget\", void 0, { render: false });\nBorder2.prototype.publish(\"topOverlay\", false, \"boolean\", \"Overlay Top Widget\");\nBorder2.prototype.publish(\"left\", null, \"widget\", \"Left Widget\", void 0, { render: false });\nBorder2.prototype.publish(\"center\", null, \"widget\", \"Center Widget\", void 0, { render: false });\nBorder2.prototype.publish(\"right\", null, \"widget\", \"Right Widget\", void 0, { render: false });\nBorder2.prototype.publish(\"bottom\", null, \"widget\", \"Bottom Widget\", void 0, { render: false });\nBorder2.prototype.publish(\"bottomHeight\", null, \"number\", \"Bottom Fixed Height\", void 0, { optional: true });\n\n//#endregion\n//#region src/Carousel.ts\nvar Carousel = class extends HTMLWidget {\n\t_prevActive = 0;\n\t_root;\n\tactiveWidget() {\n\t\treturn this.widgets()[this.active()];\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tthis._root = element.append(\"div\").attr(\"id\", `${this.id()}_root`);\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\tconst active = this.active();\n\t\tconst width = this.width();\n\t\tthis._root.style(\"width\", `${width}px`).style(\"height\", `${this.height()}px`);\n\t\tconst widgetElements = this._root.selectAll(`#${this.id()}_root > .carouselItem`).data(this.widgets(), (d) => d.id());\n\t\tconst update = widgetElements.enter().append(\"div\").attr(\"class\", \"carouselItem\").each(function(w) {\n\t\t\tw.target(this);\n\t\t}).merge(widgetElements).style(\"left\", (d, i) => `${(i - this._prevActive) * width}px`).style(\"width\", `${width}px`);\n\t\tif (this._prevActive !== active) {\n\t\t\tupdate.style(\"display\", (d, i) => i === this._prevActive || i === active ? null : \"none\").transition().duration(this.transitionDuration()).style(\"left\", (d, i) => `${(i - active) * width}px`).on(\"end\", function(d, i) {\n\t\t\t\tselect(this).style(\"display\", () => i === active ? null : \"none\");\n\t\t\t});\n\t\t\tthis._prevActive = active;\n\t\t}\n\t\twidgetElements.exit().each(function(w) {\n\t\t\tw.target(null);\n\t\t}).remove();\n\t}\n\texit(domNode, element) {\n\t\tthis.widgets().forEach((w) => w.target(null));\n\t\tsuper.exit(domNode, element);\n\t}\n\trender(callback) {\n\t\treturn super.render((w) => {\n\t\t\tif (!this.visible() || this.isDOMHidden()) {\n\t\t\t\tif (callback) callback(w);\n\t\t\t} else {\n\t\t\t\tconst aw = this.activeWidget();\n\t\t\t\tif (aw) aw.resize(this.size()).render((w2) => {\n\t\t\t\t\tif (callback) callback(w);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n};\nCarousel.prototype._class += \" layout_Carousel\";\nCarousel.prototype.publish(\"widgets\", [], \"widgetArray\", \"Widgets\", null, { render: false });\nCarousel.prototype.publish(\"active\", 0, \"number\", \"Active widget\");\nCarousel.prototype.publish(\"transitionDuration\", 500, \"number\", \"Transition duration\");\n\n//#endregion\n//#region ../../node_modules/d3-path/src/path.js\nvar pi$1 = Math.PI, tau$1 = 2 * pi$1, epsilon = 1e-6, tauEpsilon = tau$1 - epsilon;\nfunction Path() {\n\tthis._x0 = this._y0 = this._x1 = this._y1 = null;\n\tthis._ = \"\";\n}\nfunction path() {\n\treturn new Path();\n}\nPath.prototype = path.prototype = {\n\tconstructor: Path,\n\tmoveTo: function(x, y) {\n\t\tthis._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n\t},\n\tclosePath: function() {\n\t\tif (this._x1 !== null) {\n\t\t\tthis._x1 = this._x0, this._y1 = this._y0;\n\t\t\tthis._ += \"Z\";\n\t\t}\n\t},\n\tlineTo: function(x, y) {\n\t\tthis._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n\t},\n\tquadraticCurveTo: function(x1, y1, x, y) {\n\t\tthis._ += \"Q\" + +x1 + \",\" + +y1 + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n\t},\n\tbezierCurveTo: function(x1, y1, x2, y2, x, y) {\n\t\tthis._ += \"C\" + +x1 + \",\" + +y1 + \",\" + +x2 + \",\" + +y2 + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n\t},\n\tarcTo: function(x1, y1, x2, y2, r) {\n\t\tx1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\t\tvar x0 = this._x1, y0 = this._y1, x21 = x2 - x1, y21 = y2 - y1, x01 = x0 - x1, y01 = y0 - y1, l01_2 = x01 * x01 + y01 * y01;\n\t\tif (r < 0) throw new Error(\"negative radius: \" + r);\n\t\tif (this._x1 === null) this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n\t\telse if (!(l01_2 > epsilon));\n\t\telse if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n\t\telse {\n\t\t\tvar x20 = x2 - x0, y20 = y2 - y0, l21_2 = x21 * x21 + y21 * y21, l20_2 = x20 * x20 + y20 * y20, l21 = Math.sqrt(l21_2), l01 = Math.sqrt(l01_2), l = r * Math.tan((pi$1 - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2), t01 = l / l01, t21 = l / l21;\n\t\t\tif (Math.abs(t01 - 1) > epsilon) this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n\t\t\tthis._ += \"A\" + r + \",\" + r + \",0,0,\" + +(y01 * x20 > x01 * y20) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n\t\t}\n\t},\n\tarc: function(x, y, r, a0, a1, ccw) {\n\t\tx = +x, y = +y, r = +r, ccw = !!ccw;\n\t\tvar dx = r * Math.cos(a0), dy = r * Math.sin(a0), x0 = x + dx, y0 = y + dy, cw = 1 ^ ccw, da = ccw ? a0 - a1 : a1 - a0;\n\t\tif (r < 0) throw new Error(\"negative radius: \" + r);\n\t\tif (this._x1 === null) this._ += \"M\" + x0 + \",\" + y0;\n\t\telse if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) this._ += \"L\" + x0 + \",\" + y0;\n\t\tif (!r) return;\n\t\tif (da < 0) da = da % tau$1 + tau$1;\n\t\tif (da > tauEpsilon) this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n\t\telse if (da > epsilon) this._ += \"A\" + r + \",\" + r + \",0,\" + +(da >= pi$1) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n\t},\n\trect: function(x, y, w, h) {\n\t\tthis._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + +w + \"v\" + +h + \"h\" + -w + \"Z\";\n\t},\n\ttoString: function() {\n\t\treturn this._;\n\t}\n};\nvar path_default = path;\n\n//#endregion\n//#region ../../node_modules/d3-shape/src/constant.js\nfunction constant_default(x) {\n\treturn function constant() {\n\t\treturn x;\n\t};\n}\n\n//#endregion\n//#region ../../node_modules/d3-shape/src/math.js\nvar pi = Math.PI;\nvar halfPi = pi / 2;\nvar tau = 2 * pi;\n\n//#endregion\n//#region ../../node_modules/d3-shape/src/symbol/circle.js\nvar circle_default = { draw: function(context, size) {\n\tvar r = Math.sqrt(size / pi);\n\tcontext.moveTo(r, 0);\n\tcontext.arc(0, 0, r, 0, tau);\n} };\n\n//#endregion\n//#region ../../node_modules/d3-shape/src/symbol/cross.js\nvar cross_default = { draw: function(context, size) {\n\tvar r = Math.sqrt(size / 5) / 2;\n\tcontext.moveTo(-3 * r, -r);\n\tcontext.lineTo(-r, -r);\n\tcontext.lineTo(-r, -3 * r);\n\tcontext.lineTo(r, -3 * r);\n\tcontext.lineTo(r, -r);\n\tcontext.lineTo(3 * r, -r);\n\tcontext.lineTo(3 * r, r);\n\tcontext.lineTo(r, r);\n\tcontext.lineTo(r, 3 * r);\n\tcontext.lineTo(-r, 3 * r);\n\tcontext.lineTo(-r, r);\n\tcontext.lineTo(-3 * r, r);\n\tcontext.closePath();\n} };\n\n//#endregion\n//#region ../../node_modules/d3-shape/src/symbol/diamond.js\nvar tan30 = Math.sqrt(1 / 3), tan30_2 = tan30 * 2;\nvar diamond_default = { draw: function(context, size) {\n\tvar y = Math.sqrt(size / tan30_2), x = y * tan30;\n\tcontext.moveTo(0, -y);\n\tcontext.lineTo(x, 0);\n\tcontext.lineTo(0, y);\n\tcontext.lineTo(-x, 0);\n\tcontext.closePath();\n} };\n\n//#endregion\n//#region ../../node_modules/d3-shape/src/symbol/star.js\nvar ka = .8908130915292852, kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10), kx = Math.sin(tau / 10) * kr, ky = -Math.cos(tau / 10) * kr;\nvar star_default = { draw: function(context, size) {\n\tvar r = Math.sqrt(size * ka), x = kx * r, y = ky * r;\n\tcontext.moveTo(0, -r);\n\tcontext.lineTo(x, y);\n\tfor (var i = 1; i < 5; ++i) {\n\t\tvar a$1 = tau * i / 5, c$1 = Math.cos(a$1), s$1 = Math.sin(a$1);\n\t\tcontext.lineTo(s$1 * r, -c$1 * r);\n\t\tcontext.lineTo(c$1 * x - s$1 * y, s$1 * x + c$1 * y);\n\t}\n\tcontext.closePath();\n} };\n\n//#endregion\n//#region ../../node_modules/d3-shape/src/symbol/square.js\nvar square_default = { draw: function(context, size) {\n\tvar w = Math.sqrt(size), x = -w / 2;\n\tcontext.rect(x, x, w, w);\n} };\n\n//#endregion\n//#region ../../node_modules/d3-shape/src/symbol/triangle.js\nvar sqrt3 = Math.sqrt(3);\nvar triangle_default = { draw: function(context, size) {\n\tvar y = -Math.sqrt(size / (sqrt3 * 3));\n\tcontext.moveTo(0, y * 2);\n\tcontext.lineTo(-sqrt3 * y, -y);\n\tcontext.lineTo(sqrt3 * y, -y);\n\tcontext.closePath();\n} };\n\n//#endregion\n//#region ../../node_modules/d3-shape/src/symbol/wye.js\nvar c = -.5, s = Math.sqrt(3) / 2, k = 1 / Math.sqrt(12), a = (k / 2 + 1) * 3;\nvar wye_default = { draw: function(context, size) {\n\tvar r = Math.sqrt(size / a), x0 = r / 2, y0 = r * k, x1 = x0, y1 = r * k + r, x2 = -x1, y2 = y1;\n\tcontext.moveTo(x0, y0);\n\tcontext.lineTo(x1, y1);\n\tcontext.lineTo(x2, y2);\n\tcontext.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n\tcontext.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n\tcontext.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n\tcontext.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n\tcontext.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n\tcontext.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n\tcontext.closePath();\n} };\n\n//#endregion\n//#region ../../node_modules/d3-shape/src/symbol.js\nfunction symbol_default() {\n\tvar type = constant_default(circle_default), size = constant_default(64), context = null;\n\tfunction symbol() {\n\t\tvar buffer;\n\t\tif (!context) context = buffer = path_default();\n\t\ttype.apply(this, arguments).draw(context, +size.apply(this, arguments));\n\t\tif (buffer) return context = null, buffer + \"\" || null;\n\t}\n\tsymbol.type = function(_) {\n\t\treturn arguments.length ? (type = typeof _ === \"function\" ? _ : constant_default(_), symbol) : type;\n\t};\n\tsymbol.size = function(_) {\n\t\treturn arguments.length ? (size = typeof _ === \"function\" ? _ : constant_default(+_), symbol) : size;\n\t};\n\tsymbol.context = function(_) {\n\t\treturn arguments.length ? (context = _ == null ? null : _, symbol) : context;\n\t};\n\treturn symbol;\n}\n\n//#endregion\n//#region ../../node_modules/d3-svg-legend/indexRollupNext.js\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function(obj) {\n\treturn typeof obj;\n} : function(obj) {\n\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\nvar d3_identity = function d3_identity$1(d) {\n\treturn d;\n};\nvar d3_reverse = function d3_reverse$1(arr) {\n\tvar mirror = [];\n\tfor (var i = 0, l = arr.length; i < l; i++) mirror[i] = arr[l - i - 1];\n\treturn mirror;\n};\nvar d3_textWrapping = function d3_textWrapping$1(text, width) {\n\ttext.each(function() {\n\t\tvar text$1 = select(this), words = text$1.text().split(/\\s+/).reverse(), word, line = [], lineHeight = 1.2;\n\t\ttext$1.attr(\"y\");\n\t\tvar dy = parseFloat(text$1.attr(\"dy\")) || 0, tspan = text$1.text(null).append(\"tspan\").attr(\"x\", 0).attr(\"dy\", dy + \"em\");\n\t\twhile (word = words.pop()) {\n\t\t\tline.push(word);\n\t\t\ttspan.text(line.join(\" \"));\n\t\t\tif (tspan.node().getComputedTextLength() > width && line.length > 1) {\n\t\t\t\tline.pop();\n\t\t\t\ttspan.text(line.join(\" \"));\n\t\t\t\tline = [word];\n\t\t\t\ttspan = text$1.append(\"tspan\").attr(\"x\", 0).attr(\"dy\", lineHeight + dy + \"em\").text(word);\n\t\t\t}\n\t\t}\n\t});\n};\nvar d3_mergeLabels = function d3_mergeLabels$1() {\n\tvar gen = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];\n\tvar labels = arguments[1];\n\tvar domain = arguments[2];\n\tvar range = arguments[3];\n\tvar labelDelimiter = arguments[4];\n\tif ((typeof labels === \"undefined\" ? \"undefined\" : _typeof(labels)) === \"object\") {\n\t\tif (labels.length === 0) return gen;\n\t\tvar i = labels.length;\n\t\tfor (; i < gen.length; i++) labels.push(gen[i]);\n\t\treturn labels;\n\t} else if (typeof labels === \"function\") {\n\t\tvar customLabels = [];\n\t\tvar genLength = gen.length;\n\t\tfor (var _i = 0; _i < genLength; _i++) customLabels.push(labels({\n\t\t\ti: _i,\n\t\t\tgenLength,\n\t\t\tgeneratedLabels: gen,\n\t\t\tdomain,\n\t\t\trange,\n\t\t\tlabelDelimiter\n\t\t}));\n\t\treturn customLabels;\n\t}\n\treturn gen;\n};\nvar d3_linearLegend = function d3_linearLegend$1(scale, cells, labelFormat) {\n\tvar data = [];\n\tif (cells.length > 1) data = cells;\n\telse {\n\t\tvar domain = scale.domain(), increment = (domain[domain.length - 1] - domain[0]) / (cells - 1);\n\t\tvar i = 0;\n\t\tfor (; i < cells; i++) data.push(domain[0] + i * increment);\n\t}\n\tvar labels = data.map(labelFormat);\n\treturn {\n\t\tdata,\n\t\tlabels,\n\t\tfeature: function feature(d) {\n\t\t\treturn scale(d);\n\t\t}\n\t};\n};\nvar d3_quantLegend = function d3_quantLegend$1(scale, labelFormat, labelDelimiter) {\n\tvar labels = scale.range().map(function(d) {\n\t\tvar invert = scale.invertExtent(d);\n\t\treturn labelFormat(invert[0]) + \" \" + labelDelimiter + \" \" + labelFormat(invert[1]);\n\t});\n\treturn {\n\t\tdata: scale.range(),\n\t\tlabels,\n\t\tfeature: d3_identity\n\t};\n};\nvar d3_ordinalLegend = function d3_ordinalLegend$1(scale) {\n\treturn {\n\t\tdata: scale.domain(),\n\t\tlabels: scale.domain(),\n\t\tfeature: function feature(d) {\n\t\t\treturn scale(d);\n\t\t}\n\t};\n};\nvar d3_cellOver = function d3_cellOver$1(cellDispatcher, d, obj) {\n\tcellDispatcher.call(\"cellover\", obj, d);\n};\nvar d3_cellOut = function d3_cellOut$1(cellDispatcher, d, obj) {\n\tcellDispatcher.call(\"cellout\", obj, d);\n};\nvar d3_cellClick = function d3_cellClick$1(cellDispatcher, d, obj) {\n\tcellDispatcher.call(\"cellclick\", obj, d);\n};\nvar helper = {\n\td3_drawShapes: function d3_drawShapes(shape, shapes, shapeHeight, shapeWidth, shapeRadius, path$1) {\n\t\tif (shape === \"rect\") shapes.attr(\"height\", shapeHeight).attr(\"width\", shapeWidth);\n\t\telse if (shape === \"circle\") shapes.attr(\"r\", shapeRadius);\n\t\telse if (shape === \"line\") shapes.attr(\"x1\", 0).attr(\"x2\", shapeWidth).attr(\"y1\", 0).attr(\"y2\", 0);\n\t\telse if (shape === \"path\") shapes.attr(\"d\", path$1);\n\t},\n\td3_addText: function d3_addText(svg, enter, labels, classPrefix, labelWidth) {\n\t\tenter.append(\"text\").attr(\"class\", classPrefix + \"label\");\n\t\tvar text = svg.selectAll(\"g.\" + classPrefix + \"cell text.\" + classPrefix + \"label\").data(labels).text(d3_identity);\n\t\tif (labelWidth) svg.selectAll(\"g.\" + classPrefix + \"cell text.\" + classPrefix + \"label\").call(d3_textWrapping, labelWidth);\n\t\treturn text;\n\t},\n\td3_calcType: function d3_calcType(scale, ascending, cells, labels, labelFormat, labelDelimiter) {\n\t\tvar type = scale.invertExtent ? d3_quantLegend(scale, labelFormat, labelDelimiter) : scale.ticks ? d3_linearLegend(scale, cells, labelFormat) : d3_ordinalLegend(scale);\n\t\tvar range = scale.range && scale.range() || scale.domain();\n\t\ttype.labels = d3_mergeLabels(type.labels, labels, scale.domain(), range, labelDelimiter);\n\t\tif (ascending) {\n\t\t\ttype.labels = d3_reverse(type.labels);\n\t\t\ttype.data = d3_reverse(type.data);\n\t\t}\n\t\treturn type;\n\t},\n\td3_filterCells: function d3_filterCells(type, cellFilter) {\n\t\tvar filterCells = type.data.map(function(d, i) {\n\t\t\treturn {\n\t\t\t\tdata: d,\n\t\t\t\tlabel: type.labels[i]\n\t\t\t};\n\t\t}).filter(cellFilter);\n\t\tvar dataValues = filterCells.map(function(d) {\n\t\t\treturn d.data;\n\t\t});\n\t\tvar labelValues = filterCells.map(function(d) {\n\t\t\treturn d.label;\n\t\t});\n\t\ttype.data = type.data.filter(function(d) {\n\t\t\treturn dataValues.indexOf(d) !== -1;\n\t\t});\n\t\ttype.labels = type.labels.filter(function(d) {\n\t\t\treturn labelValues.indexOf(d) !== -1;\n\t\t});\n\t\treturn type;\n\t},\n\td3_placement: function d3_placement(orient, cell, cellTrans, text, textTrans, labelAlign) {\n\t\tcell.attr(\"transform\", cellTrans);\n\t\ttext.attr(\"transform\", textTrans);\n\t\tif (orient === \"horizontal\") text.style(\"text-anchor\", labelAlign);\n\t},\n\td3_addEvents: function d3_addEvents(cells, dispatcher) {\n\t\tcells.on(\"mouseover.legend\", function(d) {\n\t\t\td3_cellOver(dispatcher, d, this);\n\t\t}).on(\"mouseout.legend\", function(d) {\n\t\t\td3_cellOut(dispatcher, d, this);\n\t\t}).on(\"click.legend\", function(d) {\n\t\t\td3_cellClick(dispatcher, d, this);\n\t\t});\n\t},\n\td3_title: function d3_title(svg, title, classPrefix, titleWidth) {\n\t\tif (title !== \"\") {\n\t\t\tsvg.selectAll(\"text.\" + classPrefix + \"legendTitle\").data([title]).enter().append(\"text\").attr(\"class\", classPrefix + \"legendTitle\");\n\t\t\tsvg.selectAll(\"text.\" + classPrefix + \"legendTitle\").text(title);\n\t\t\tif (titleWidth) svg.selectAll(\"text.\" + classPrefix + \"legendTitle\").call(d3_textWrapping, titleWidth);\n\t\t\tvar cellsSvg = svg.select(\".\" + classPrefix + \"legendCells\");\n\t\t\tvar yOffset = svg.select(\".\" + classPrefix + \"legendTitle\").nodes().map(function(d) {\n\t\t\t\treturn d.getBBox().height;\n\t\t\t})[0], xOffset = -cellsSvg.nodes().map(function(d) {\n\t\t\t\treturn d.getBBox().x;\n\t\t\t})[0];\n\t\t\tcellsSvg.attr(\"transform\", \"translate(\" + xOffset + \",\" + yOffset + \")\");\n\t\t}\n\t},\n\td3_defaultLocale: {\n\t\tformat,\n\t\tformatPrefix\n\t},\n\td3_defaultFormatSpecifier: \".01f\",\n\td3_defaultDelimiter: \"to\"\n};\nfunction color() {\n\tvar scale = scaleLinear(), shape = \"rect\", shapeWidth = 15, shapeHeight = 15, shapeRadius = 10, shapePadding = 2, cells = [5], cellFilter = void 0, labels = [], classPrefix = \"\", useClass = false, title = \"\", locale = helper.d3_defaultLocale, specifier = helper.d3_defaultFormatSpecifier, labelOffset = 10, labelAlign = \"middle\", labelDelimiter = helper.d3_defaultDelimiter, labelWrap = void 0, orient = \"vertical\", ascending = false, path$1 = void 0, titleWidth = void 0, legendDispatcher = dispatch(\"cellover\", \"cellout\", \"cellclick\");\n\tfunction legend(svg) {\n\t\tvar type = helper.d3_calcType(scale, ascending, cells, labels, locale.format(specifier), labelDelimiter);\n\t\tsvg.selectAll(\"g\").data([scale]).enter().append(\"g\").attr(\"class\", classPrefix + \"legendCells\");\n\t\tif (cellFilter) helper.d3_filterCells(type, cellFilter);\n\t\tvar cell = svg.select(\".\" + classPrefix + \"legendCells\").selectAll(\".\" + classPrefix + \"cell\").data(type.data);\n\t\tvar cellEnter = cell.enter().append(\"g\").attr(\"class\", classPrefix + \"cell\");\n\t\tcellEnter.append(shape).attr(\"class\", classPrefix + \"swatch\");\n\t\tvar shapes = svg.selectAll(\"g.\" + classPrefix + \"cell \" + shape + \".\" + classPrefix + \"swatch\").data(type.data);\n\t\thelper.d3_addEvents(cellEnter, legendDispatcher);\n\t\tcell.exit().transition().style(\"opacity\", 0).remove();\n\t\tshapes.exit().transition().style(\"opacity\", 0).remove();\n\t\tshapes = shapes.merge(shapes);\n\t\thelper.d3_drawShapes(shape, shapes, shapeHeight, shapeWidth, shapeRadius, path$1);\n\t\tvar text = helper.d3_addText(svg, cellEnter, type.labels, classPrefix, labelWrap);\n\t\tcell = cellEnter.merge(cell);\n\t\tvar textSize = text.nodes().map(function(d) {\n\t\t\treturn d.getBBox();\n\t\t}), shapeSize = shapes.nodes().map(function(d) {\n\t\t\treturn d.getBBox();\n\t\t});\n\t\tif (!useClass) if (shape == \"line\") shapes.style(\"stroke\", type.feature);\n\t\telse shapes.style(\"fill\", type.feature);\n\t\telse shapes.attr(\"class\", function(d) {\n\t\t\treturn classPrefix + \"swatch \" + type.feature(d);\n\t\t});\n\t\tvar cellTrans = void 0, textTrans = void 0, textAlign = labelAlign == \"start\" ? 0 : labelAlign == \"middle\" ? .5 : 1;\n\t\tif (orient === \"vertical\") (function() {\n\t\t\tvar cellSize = textSize.map(function(d, i) {\n\t\t\t\treturn Math.max(d.height, shapeSize[i].height);\n\t\t\t});\n\t\t\tcellTrans = function cellTrans$1(d, i) {\n\t\t\t\treturn \"translate(0, \" + (sum(cellSize.slice(0, i)) + i * shapePadding) + \")\";\n\t\t\t};\n\t\t\ttextTrans = function textTrans$1(d, i) {\n\t\t\t\treturn \"translate( \" + (shapeSize[i].width + shapeSize[i].x + labelOffset) + \", \" + (shapeSize[i].y + shapeSize[i].height / 2 + 5) + \")\";\n\t\t\t};\n\t\t})();\n\t\telse if (orient === \"horizontal\") {\n\t\t\tcellTrans = function cellTrans$1(d, i) {\n\t\t\t\treturn \"translate(\" + i * (shapeSize[i].width + shapePadding) + \",0)\";\n\t\t\t};\n\t\t\ttextTrans = function textTrans$1(d, i) {\n\t\t\t\treturn \"translate(\" + (shapeSize[i].width * textAlign + shapeSize[i].x) + \",\\n \" + (shapeSize[i].height + shapeSize[i].y + labelOffset + 8) + \")\";\n\t\t\t};\n\t\t}\n\t\thelper.d3_placement(orient, cell, cellTrans, text, textTrans, labelAlign);\n\t\thelper.d3_title(svg, title, classPrefix, titleWidth);\n\t\tcell.transition().style(\"opacity\", 1);\n\t}\n\tlegend.scale = function(_) {\n\t\tif (!arguments.length) return scale;\n\t\tscale = _;\n\t\treturn legend;\n\t};\n\tlegend.cells = function(_) {\n\t\tif (!arguments.length) return cells;\n\t\tif (_.length > 1 || _ >= 2) cells = _;\n\t\treturn legend;\n\t};\n\tlegend.cellFilter = function(_) {\n\t\tif (!arguments.length) return cellFilter;\n\t\tcellFilter = _;\n\t\treturn legend;\n\t};\n\tlegend.shape = function(_, d) {\n\t\tif (!arguments.length) return shape;\n\t\tif (_ == \"rect\" || _ == \"circle\" || _ == \"line\" || _ == \"path\" && typeof d === \"string\") {\n\t\t\tshape = _;\n\t\t\tpath$1 = d;\n\t\t}\n\t\treturn legend;\n\t};\n\tlegend.shapeWidth = function(_) {\n\t\tif (!arguments.length) return shapeWidth;\n\t\tshapeWidth = +_;\n\t\treturn legend;\n\t};\n\tlegend.shapeHeight = function(_) {\n\t\tif (!arguments.length) return shapeHeight;\n\t\tshapeHeight = +_;\n\t\treturn legend;\n\t};\n\tlegend.shapeRadius = function(_) {\n\t\tif (!arguments.length) return shapeRadius;\n\t\tshapeRadius = +_;\n\t\treturn legend;\n\t};\n\tlegend.shapePadding = function(_) {\n\t\tif (!arguments.length) return shapePadding;\n\t\tshapePadding = +_;\n\t\treturn legend;\n\t};\n\tlegend.labels = function(_) {\n\t\tif (!arguments.length) return labels;\n\t\tlabels = _;\n\t\treturn legend;\n\t};\n\tlegend.labelAlign = function(_) {\n\t\tif (!arguments.length) return labelAlign;\n\t\tif (_ == \"start\" || _ == \"end\" || _ == \"middle\") labelAlign = _;\n\t\treturn legend;\n\t};\n\tlegend.locale = function(_) {\n\t\tif (!arguments.length) return locale;\n\t\tlocale = formatLocale(_);\n\t\treturn legend;\n\t};\n\tlegend.labelFormat = function(_) {\n\t\tif (!arguments.length) return legend.locale().format(specifier);\n\t\tspecifier = formatSpecifier(_);\n\t\treturn legend;\n\t};\n\tlegend.labelOffset = function(_) {\n\t\tif (!arguments.length) return labelOffset;\n\t\tlabelOffset = +_;\n\t\treturn legend;\n\t};\n\tlegend.labelDelimiter = function(_) {\n\t\tif (!arguments.length) return labelDelimiter;\n\t\tlabelDelimiter = _;\n\t\treturn legend;\n\t};\n\tlegend.labelWrap = function(_) {\n\t\tif (!arguments.length) return labelWrap;\n\t\tlabelWrap = _;\n\t\treturn legend;\n\t};\n\tlegend.useClass = function(_) {\n\t\tif (!arguments.length) return useClass;\n\t\tif (_ === true || _ === false) useClass = _;\n\t\treturn legend;\n\t};\n\tlegend.orient = function(_) {\n\t\tif (!arguments.length) return orient;\n\t\t_ = _.toLowerCase();\n\t\tif (_ == \"horizontal\" || _ == \"vertical\") orient = _;\n\t\treturn legend;\n\t};\n\tlegend.ascending = function(_) {\n\t\tif (!arguments.length) return ascending;\n\t\tascending = !!_;\n\t\treturn legend;\n\t};\n\tlegend.classPrefix = function(_) {\n\t\tif (!arguments.length) return classPrefix;\n\t\tclassPrefix = _;\n\t\treturn legend;\n\t};\n\tlegend.title = function(_) {\n\t\tif (!arguments.length) return title;\n\t\ttitle = _;\n\t\treturn legend;\n\t};\n\tlegend.titleWidth = function(_) {\n\t\tif (!arguments.length) return titleWidth;\n\t\ttitleWidth = _;\n\t\treturn legend;\n\t};\n\tlegend.textWrap = function(_) {\n\t\tif (!arguments.length) return textWrap;\n\t\ttextWrap = _;\n\t\treturn legend;\n\t};\n\tlegend.on = function() {\n\t\tvar value = legendDispatcher.on.apply(legendDispatcher, arguments);\n\t\treturn value === legendDispatcher ? legend : value;\n\t};\n\treturn legend;\n}\n\n//#endregion\n//#region src/Legend.ts\nvar Legend = class extends SVGWidget {\n\t_owner;\n\t_targetWidget;\n\t_targetWidgetMonitor;\n\t_legendOrdinal;\n\t_disabled = [];\n\t_symbolTypeMap = {\n\t\t\"circle\": circle_default,\n\t\t\"cross\": cross_default,\n\t\t\"diamond\": diamond_default,\n\t\t\"square\": square_default,\n\t\t\"star\": star_default,\n\t\t\"triangle\": triangle_default,\n\t\t\"wye\": wye_default\n\t};\n\tconstructor(owner) {\n\t\tsuper();\n\t\tthis._owner = owner;\n\t\tthis._drawStartPos = \"origin\";\n\t\tconst context = this;\n\t\tthis._legendOrdinal = color().shape(\"path\", symbol_default().type(circle_default).size(150)()).shapePadding(10).shapeRadius(10).on(\"cellclick\", function(d) {\n\t\t\tcontext.onClick(d, this);\n\t\t}).on(\"cellover\", (d) => {\n\t\t\tcontext.onOver(d, this);\n\t\t}).on(\"cellout\", (d) => {\n\t\t\tcontext.onOut(d, this);\n\t\t});\n\t}\n\tisDisabled(d) {\n\t\tif (typeof d === \"undefined\") return false;\n\t\telse if (typeof d === \"string\") return d.indexOf(\"__\") === 0 || this._disabled.indexOf(d) >= 0;\n\t\telse if (d instanceof Database.Field) return d.id().indexOf(\"__\") === 0 || this._disabled.indexOf(d.id()) >= 0;\n\t\treturn this._disabled.indexOf(d) >= 0;\n\t}\n\tfilteredFields() {\n\t\tswitch (this.dataFamily()) {\n\t\t\tcase \"2D\": return this.fields();\n\t\t\tcase \"ND\": return this.fields().filter((d) => !this.isDisabled(d));\n\t\t}\n\t\treturn this.fields();\n\t}\n\tfilteredColumns() {\n\t\tswitch (this.dataFamily()) {\n\t\t\tcase \"2D\": return this.columns();\n\t\t\tcase \"ND\": return this.columns().filter((d) => !this.isDisabled(d));\n\t\t}\n\t\treturn this.columns();\n\t}\n\tfilteredData() {\n\t\tswitch (this.dataFamily()) {\n\t\t\tcase \"2D\": return this.data().filter((row) => !this.isDisabled(row[0]));\n\t\t\tcase \"ND\":\n\t\t\t\tconst disabledCols = {};\n\t\t\t\tlet anyDisabled = false;\n\t\t\t\tthis.columns().forEach((col, idx) => {\n\t\t\t\t\tconst disabled = this.isDisabled(col);\n\t\t\t\t\tdisabledCols[idx] = disabled;\n\t\t\t\t\tif (disabled) anyDisabled = true;\n\t\t\t\t});\n\t\t\t\treturn !anyDisabled ? this.data() : this.data().map((row) => {\n\t\t\t\t\treturn row.filter((cell, idx) => !disabledCols[idx]);\n\t\t\t\t});\n\t\t}\n\t\treturn this.data();\n\t}\n\tisRainbow() {\n\t\tconst widget = this.getWidget();\n\t\treturn widget && widget._palette && widget._palette.type() === \"rainbow\";\n\t}\n\ttargetWidget(_) {\n\t\tif (!arguments.length) return this._targetWidget;\n\t\tthis._targetWidget = _;\n\t\tif (this._targetWidgetMonitor) {\n\t\t\tthis._targetWidgetMonitor.remove();\n\t\t\tdelete this._targetWidgetMonitor;\n\t\t}\n\t\tif (this._targetWidget) {\n\t\t\tconst context = this;\n\t\t\tthis._targetWidgetMonitor = this._targetWidget.monitor(function(key, newProp, oldProp, source) {\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase \"chart\":\n\t\t\t\t\tcase \"columns\":\n\t\t\t\t\tcase \"data\":\n\t\t\t\t\tcase \"paletteID\":\n\t\t\t\t\t\tcontext.lazyRender();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\tgetWidget() {\n\t\tif (this._targetWidget) switch (this._targetWidget.classID()) {\n\t\t\tcase \"composite_MultiChart\": return this._targetWidget.chart();\n\t\t}\n\t\treturn this._targetWidget;\n\t}\n\tgetPalette() {\n\t\tconst widget = this.getWidget();\n\t\tif (widget && widget._palette) switch (widget._palette.type()) {\n\t\t\tcase \"ordinal\": return Palette.ordinal(widget._palette.id());\n\t\t\tcase \"rainbow\": return Palette.rainbow(widget._palette.id());\n\t\t}\n\t\treturn Palette.ordinal(\"default\");\n\t}\n\tgetPaletteType() {\n\t\treturn this.getPalette().type();\n\t}\n\tfillColorFunc() {\n\t\tconst widget = this.getWidget();\n\t\tif (widget && widget.fillColor) {\n\t\t\tif (widget._palette && widget.paletteID && widget._palette.name !== widget.paletteID()) widget._palette = widget._palette.switch(widget.paletteID());\n\t\t\treturn (row, col, sel) => {\n\t\t\t\treturn widget.fillColor(row, col, sel);\n\t\t\t};\n\t\t}\n\t\tconst palette = Palette.ordinal(widget && widget.paletteID ? widget.paletteID() || \"default\" : \"default\");\n\t\treturn (row, col, sel) => {\n\t\t\treturn palette(col);\n\t\t};\n\t}\n\tfillColor(row, col, sel) {\n\t\treturn this.fillColorFunc()(row, col, sel);\n\t}\n\t_g;\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tthis._g = element.append(\"g\").attr(\"class\", \"legendOrdinal\");\n\t}\n\tcalcMetaData() {\n\t\tlet dataArr = [];\n\t\tlet total = 0;\n\t\tlet maxLabelWidth = 0;\n\t\tconst colLength = this.columns().length;\n\t\tif (this._targetWidget) {\n\t\t\tconst columns = this.columns();\n\t\t\tswitch (this.getPaletteType()) {\n\t\t\t\tcase \"ordinal\":\n\t\t\t\t\tconst fillColor = this.fillColorFunc();\n\t\t\t\t\tlet val = 0;\n\t\t\t\t\tswitch (this.dataFamily()) {\n\t\t\t\t\t\tcase \"2D\":\n\t\t\t\t\t\t\tdataArr = this.data().map(function(n, i) {\n\t\t\t\t\t\t\t\tval = this.data()[i].slice(1, colLength).reduce((acc, n$1) => acc + n$1, 0);\n\t\t\t\t\t\t\t\tconst disabled = this.isDisabled(n[0]);\n\t\t\t\t\t\t\t\tif (!disabled) total += val;\n\t\t\t\t\t\t\t\tconst label = n[0] + (!disabled && this.showSeriesTotal() ? ` (${val})` : \"\");\n\t\t\t\t\t\t\t\tconst textSize = this.textSize(label);\n\t\t\t\t\t\t\t\tif (maxLabelWidth < textSize.width) maxLabelWidth = textSize.width;\n\t\t\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t\tfillColor(n, n[0], false),\n\t\t\t\t\t\t\t\t\tn[0],\n\t\t\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"ND\":\n\t\t\t\t\t\t\tdataArr = this.columns().filter((col) => col.indexOf(\"__\") !== 0).filter(function(n, i) {\n\t\t\t\t\t\t\t\treturn i > 0;\n\t\t\t\t\t\t\t}).map(function(n, i) {\n\t\t\t\t\t\t\t\tval = this.data().reduce((acc, n$1) => acc + n$1[i + 1], 0);\n\t\t\t\t\t\t\t\tconst disabled = this.isDisabled(columns[i + 1]);\n\t\t\t\t\t\t\t\tconst label = n + (!disabled && this.showSeriesTotal() ? ` (${val})` : \"\");\n\t\t\t\t\t\t\t\tif (!disabled) total += val;\n\t\t\t\t\t\t\t\tconst textSize = this.textSize(label);\n\t\t\t\t\t\t\t\tif (maxLabelWidth < textSize.width) maxLabelWidth = textSize.width;\n\t\t\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t\tfillColor(void 0, n, false),\n\t\t\t\t\t\t\t\t\tn,\n\t\t\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tdataArr = this.columns().map(function(n) {\n\t\t\t\t\t\t\t\treturn [fillColor(void 0, n, false), n];\n\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"rainbow\":\n\t\t\t\t\tconst palette = this.getPalette();\n\t\t\t\t\tconst format$1 = format(this.rainbowFormat());\n\t\t\t\t\tconst widget = this.getWidget();\n\t\t\t\t\tconst steps = this.rainbowBins();\n\t\t\t\t\tconst weightMin = widget._dataMinWeight;\n\t\t\t\t\tconst weightMax = widget._dataMaxWeight;\n\t\t\t\t\tconst stepWeightDiff = (weightMax - weightMin) / (steps - 1);\n\t\t\t\t\tdataArr.push([palette(weightMin, weightMin, weightMax), format$1(weightMin)]);\n\t\t\t\t\tfor (let x = 1; x < steps - 1; ++x) {\n\t\t\t\t\t\tlet mid = stepWeightDiff * x;\n\t\t\t\t\t\tif (Math.floor(mid) > parseInt(dataArr[0][1])) mid = Math.floor(mid);\n\t\t\t\t\t\tdataArr.push([palette(mid, weightMin, weightMax), format$1(mid)]);\n\t\t\t\t\t}\n\t\t\t\t\tdataArr.push([palette(weightMax, weightMin, weightMax), format$1(weightMax)]);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tdataArr,\n\t\t\ttotal,\n\t\t\tmaxLabelWidth\n\t\t};\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\tconst { dataArr, maxLabelWidth, total } = this.calcMetaData();\n\t\tconst radius = this.shapeRadius();\n\t\tconst size = this.radiusToSymbolSize(radius);\n\t\tconst strokeWidth = 1;\n\t\tlet shapePadding = this.itemPadding();\n\t\tif (this.orientation() === \"horizontal\") shapePadding += maxLabelWidth - radius * 2;\n\t\tconst ordinal = scaleOrdinal().domain(dataArr.map((row) => row[1])).range(dataArr.map((row) => row[0]));\n\t\tthis._legendOrdinal.shape(\"path\", symbol_default().type(this._symbolTypeMap[this.symbolType()]).size(size)()).orient(this.orientation()).title(this.title()).labelWrap(this.labelMaxWidth()).labelAlign(this.labelAlign()).shapePadding(shapePadding).scale(ordinal).labels((d) => dataArr[d.i][2]);\n\t\tthis._g.call(this._legendOrdinal);\n\t\tthis.updateDisabled(element, dataArr);\n\t\tconst legendCellsBbox = this._g.select(\".legendCells\").node().getBBox();\n\t\tlet offsetX = Math.abs(legendCellsBbox.x);\n\t\tlet offsetY = Math.abs(legendCellsBbox.y) + strokeWidth;\n\t\tif (this.orientation() === \"horizontal\") {\n\t\t\tif (this.labelAlign() === \"start\") offsetX += strokeWidth;\n\t\t\telse if (this.labelAlign() === \"end\") offsetX -= strokeWidth;\n\t\t\tif (this.width() > legendCellsBbox.width) {\n\t\t\t\tconst extraWidth = this.width() - legendCellsBbox.width;\n\t\t\t\toffsetX += extraWidth / 2;\n\t\t\t}\n\t\t} else if (this.orientation() === \"vertical\") {\n\t\t\toffsetX += strokeWidth;\n\t\t\tif (this._containerSize.height > legendCellsBbox.height) {\n\t\t\t\tconst extraHeight = this.height() - legendCellsBbox.height;\n\t\t\t\toffsetY += extraHeight / 2;\n\t\t\t}\n\t\t}\n\t\tthis._g.attr(\"transform\", `translate(${offsetX}, ${offsetY})`);\n\t\tthis.pos({\n\t\t\tx: 0,\n\t\t\ty: 0\n\t\t});\n\t\tthis._legendOrdinal.labelOffset(this.itemPadding());\n\t\tconst legendTotal = this._g.selectAll(\".legendTotal\").data(dataArr.length && this.showLegendTotal() ? [total] : []);\n\t\tconst totalText = `Total: ${total}`;\n\t\tconst totalOffsetX = -offsetX;\n\t\tconst totalOffsetY = legendCellsBbox.height + this.itemPadding() + strokeWidth;\n\t\tthis.enableOverflowScroll(false);\n\t\tthis.enableOverflow(true);\n\t\tlegendTotal.enter().append(\"text\").classed(\"legendTotal\", true).merge(legendTotal).attr(\"transform\", `translate(${totalOffsetX}, ${totalOffsetY})`).text(totalText);\n\t\tlegendTotal.exit().remove();\n\t}\n\tupdateDisabled(element, dataArr) {\n\t\telement.style(\"cursor\", \"pointer\").selectAll(\"path.swatch\").filter((d, i) => i < dataArr.length).style(\"stroke\", (d, i) => dataArr[i][0]).style(\"fill\", (d, i) => this._disabled.indexOf(d) < 0 ? dataArr[i][0] : \"white\");\n\t}\n\tpostUpdate(domNode, element) {\n\t\tlet w;\n\t\tif (this._boundingBox) {\n\t\t\tw = this._boundingBox.width;\n\t\t\tthis._boundingBox.width = this._size.width;\n\t\t}\n\t\tsuper.postUpdate(domNode, element);\n\t\tif (w !== void 0) this._boundingBox.width = w;\n\t\tthis._parentRelativeDiv.style(\"overflow\", \"hidden\");\n\t}\n\texit(domNode, element) {\n\t\tsuper.exit(domNode, element);\n\t}\n\tradiusToSymbolSize(radius) {\n\t\tconst circleSize = Math.pow(radius, 2) * Math.PI;\n\t\tswitch (this.symbolType()) {\n\t\t\tcase \"star\": return circleSize * .45;\n\t\t\tcase \"triangle\": return circleSize * .65;\n\t\t\tcase \"cross\":\n\t\t\tcase \"diamond\":\n\t\t\tcase \"wye\": return circleSize * .75;\n\t\t\tcase \"circle\": return circleSize;\n\t\t\tcase \"square\": return circleSize * 1.3;\n\t\t}\n\t}\n\tonClick(d, domNode) {\n\t\tswitch (this.getPaletteType()) {\n\t\t\tcase \"ordinal\":\n\t\t\t\tswitch (this.dataFamily()) {\n\t\t\t\t\tcase \"2D\":\n\t\t\t\t\tcase \"ND\":\n\t\t\t\t\t\tconst disabledIdx = this._disabled.indexOf(d);\n\t\t\t\t\t\tif (disabledIdx < 0) this._disabled.push(d);\n\t\t\t\t\t\telse this._disabled.splice(disabledIdx, 1);\n\t\t\t\t\t\tthis._owner.refreshColumns();\n\t\t\t\t\t\tthis._owner.refreshData();\n\t\t\t\t\t\tthis._owner.render();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tonOver(d, domNode) {\n\t\tif (instanceOfIHighlight(this._owner)) switch (this.getPaletteType()) {\n\t\t\tcase \"ordinal\":\n\t\t\t\tswitch (this.dataFamily()) {\n\t\t\t\t\tcase \"2D\":\n\t\t\t\t\tcase \"ND\":\n\t\t\t\t\t\tif (this._disabled.indexOf(d) < 0) this._owner.highlightColumn(d);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tonOut(d, domNode) {\n\t\tif (instanceOfIHighlight(this._owner)) switch (this.getPaletteType()) {\n\t\t\tcase \"ordinal\":\n\t\t\t\tswitch (this.dataFamily()) {\n\t\t\t\t\tcase \"2D\":\n\t\t\t\t\tcase \"ND\":\n\t\t\t\t\t\tthis._owner.highlightColumn();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tonDblClick(rowData, rowIdx) {}\n\tonMouseOver(rowData, rowIdx) {}\n\t_containerSize;\n\tresize(_size) {\n\t\tlet retVal;\n\t\tif (this.fitToContent()) {\n\t\t\tthis._containerSize = _size;\n\t\t\tconst bbox = this.getBBox();\n\t\t\tif (_size.width > bbox.width) bbox.width = _size.width;\n\t\t\tif (_size.height > bbox.height) bbox.height = _size.height;\n\t\t\tretVal = super.resize.apply(this, [{ ...bbox }]);\n\t\t} else retVal = super.resize.apply(this, arguments);\n\t\treturn retVal;\n\t}\n};\nLegend.prototype._class += \" layout_Legend\";\nLegend.prototype.publish(\"title\", \"\", \"string\", \"Title\");\nLegend.prototype.publish(\"symbolType\", \"circle\", \"set\", \"Shape of each legend item\", [\n\t\"circle\",\n\t\"cross\",\n\t\"diamond\",\n\t\"square\",\n\t\"star\",\n\t\"triangle\",\n\t\"wye\"\n]);\nLegend.prototype.publish(\"labelMaxWidth\", null, \"number\", \"Max Label Width (pixels)\", null, { optional: true });\nLegend.prototype.publish(\"orientation\", \"vertical\", \"set\", \"Orientation of Legend rows\", [\"vertical\", \"horizontal\"], { tags: [\"Private\"] });\nLegend.prototype.publish(\"dataFamily\", \"ND\", \"set\", \"Type of data\", [\n\t\"1D\",\n\t\"2D\",\n\t\"ND\",\n\t\"map\",\n\t\"graph\",\n\t\"any\"\n], { tags: [\"Private\"] });\nLegend.prototype.publish(\"rainbowFormat\", \",\", \"string\", \"Rainbow number formatting\", null, {\n\ttags: [\"Private\"],\n\toptional: true,\n\tdisable: (w) => !w.isRainbow()\n});\nLegend.prototype.publish(\"rainbowBins\", 8, \"number\", \"Number of rainbow bins\", null, {\n\ttags: [\"Private\"],\n\tdisable: (w) => !w.isRainbow()\n});\nLegend.prototype.publish(\"showSeriesTotal\", false, \"boolean\", \"Show value next to series\");\nLegend.prototype.publish(\"showLegendTotal\", false, \"boolean\", \"Show a total of the series values under the legend\", null);\nLegend.prototype.publish(\"itemPadding\", 8, \"number\", \"Padding between legend items (pixels)\");\nLegend.prototype.publish(\"shapeRadius\", 7, \"number\", \"Radius of legend shape (pixels)\");\nLegend.prototype.publish(\"fitToContent\", true, \"boolean\", \"If true, resize will simply reapply the bounding box dimensions\");\nLegend.prototype.publish(\"labelAlign\", \"start\", \"set\", \"Horizontal alignment of legend item label (for horizontal orientation only)\", [\n\t\"start\",\n\t\"middle\",\n\t\"end\"\n], {\n\toptional: true,\n\tdisable: (w) => w.orientation() === \"vertical\"\n});\n\n//#endregion\n//#region src/Modal.ts\nvar Modal = class extends HTMLWidget {\n\t_widget;\n\t_relativeTarget;\n\t_fade;\n\t_modal;\n\t_modalHeader;\n\t_modalBody;\n\t_modalHeaderAnnotations;\n\t_modalHeaderCloseButton;\n\t_close;\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t}\n\tcloseModal() {\n\t\tthis.visible(false);\n\t}\n\tgetRelativeTarget() {\n\t\tlet relativeTarget;\n\t\tif (this.relativeTargetId()) {\n\t\t\trelativeTarget = document.getElementById(this.relativeTargetId());\n\t\t\tif (relativeTarget) return relativeTarget;\n\t\t}\n\t\tif (!relativeTarget) {\n\t\t\trelativeTarget = this.locateAncestor(\"layout_Grid\");\n\t\t\tif (relativeTarget && relativeTarget.element) return relativeTarget.element().node();\n\t\t}\n\t\treturn document.body;\n\t}\n\tsetModalSize() {\n\t\tif (this.fixedHeight() !== null && this.fixedWidth() !== null) this._modal.style(\"height\", this.fixedHeight()).style(\"width\", this.fixedWidth()).style(\"min-height\", null).style(\"min-width\", null).style(\"max-height\", null).style(\"max-width\", null);\n\t\telse if (this.minHeight() || this.minWidth()) this._modal.style(\"min-height\", this.minHeight()).style(\"min-width\", this.minWidth()).style(\"max-height\", this.maxHeight()).style(\"max-width\", this.maxWidth());\n\t\tconst modalRect = this._modal.node().getBoundingClientRect();\n\t\tconst headerRect = this._modalHeader.node().getBoundingClientRect();\n\t\tthis._modalBody.style(\"height\", modalRect.height - headerRect.height + \"px\").style(\"width\", modalRect.width);\n\t\treturn modalRect;\n\t}\n\tsetFadePosition(rect) {\n\t\tthis._fade.style(\"top\", rect.top + \"px\").style(\"left\", rect.left + \"px\").style(\"width\", rect.width + \"px\").style(\"height\", rect.height + \"px\");\n\t}\n\tsetModalPosition(rect) {\n\t\tconst modalRect = this.setModalSize();\n\t\tif (this.fixedTop() !== null && this.fixedLeft() !== null) this._modal.style(\"top\", `calc(${this.fixedTop()} + ${rect.top}px)`).style(\"left\", `calc(${this.fixedLeft()} + ${rect.left}px)`);\n\t\telse if (this.fixedHeight() !== null && this.fixedWidth() !== null) this._modal.style(\"top\", rect.top + rect.height / 2 - modalRect.height / 2 + \"px\").style(\"left\", rect.left + rect.width / 2 - modalRect.width / 2 + \"px\");\n\t\telse if (this.minHeight() || this.minWidth()) {\n\t\t\tconst contentRect = this._modal.node().getBoundingClientRect();\n\t\t\tthis._modal.style(\"top\", rect.top + rect.height / 2 - contentRect.height / 2 + \"px\").style(\"left\", rect.left + rect.width / 2 - contentRect.width / 2 + \"px\");\n\t\t}\n\t}\n\tresize(size) {\n\t\tsuper.resize();\n\t\tif (this._modal) this.setModalSize();\n\t\treturn this;\n\t}\n\tresizeBodySync(width, height) {\n\t\tconst headerRect = this._modalHeader.node().getBoundingClientRect();\n\t\tthis._modal.style(\"width\", width + \"px\").style(\"height\", height + headerRect.height + \"px\").style(\"min-width\", width + \"px\").style(\"min-height\", height + headerRect.height + \"px\");\n\t\tthis._modalHeader.style(\"width\", width + \"px\");\n\t\tthis._modalBody.style(\"width\", width + \"px\").style(\"height\", height + \"px\");\n\t\treturn this.minWidth(width + \"px\").minHeight(height + headerRect.height + \"px\").resize({\n\t\t\theight: height + headerRect.height,\n\t\t\twidth\n\t\t});\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tthis._fade = element.append(\"div\").classed(\"layout_Modal-fade\", true).classed(\"layout_Modal-fadeClickable\", this.enableClickFadeToClose()).classed(\"layout_Modal-fade-hidden\", !this.showFade());\n\t\tconst header_h = this.titleFontSize() * 2;\n\t\tthis._modal = element.append(\"div\").classed(\"layout_Modal-content\", true);\n\t\tthis._modalHeader = this._modal.append(\"div\").classed(\"layout_Modal-header\", true).style(\"color\", this.titleFontColor()).style(\"font-size\", this.titleFontSize() + \"px\").style(\"height\", header_h + \"px\");\n\t\tthis._modalBody = this._modal.append(\"div\").classed(\"layout_Modal-body\", true).style(\"height\", `calc( 100% - ${header_h}px )`).style(\"overflow-x\", this.overflowX()).style(\"overflow-y\", this.overflowY());\n\t\tthis._modalHeader.append(\"div\").classed(\"layout_Modal-title\", true).style(\"line-height\", this.titleFontSize() + \"px\").style(\"top\", this.titleFontSize() / 2 + \"px\").style(\"left\", this.titleFontSize() / 2 + \"px\").text(this.formattedTitle());\n\t\tthis._modalHeaderAnnotations = this._modalHeader.append(\"div\").classed(\"layout_Modal-annotations\", true);\n\t\tthis._modalHeaderCloseButton = this._modalHeaderAnnotations.append(\"div\").classed(\"layout_Modal-closeButton\", true).html(\"<i class=\\\"fa fa-close\\\"></i>\");\n\t\tthis._modalHeaderAnnotations.style(\"line-height\", this.titleFontSize() + \"px\").style(\"right\", this.titleFontSize() / 2 + \"px\").style(\"top\", this.titleFontSize() / 2 + \"px\");\n\t\tthis._modalHeaderCloseButton.on(\"click\", () => {\n\t\t\tthis.closeModal();\n\t\t});\n\t\tthis._fade.on(\"click\", (n) => {\n\t\t\tif (this.enableClickFadeToClose()) this.closeModal();\n\t\t});\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\telement.style(\"display\", this.show() ? null : \"none\");\n\t\tthis._fade.classed(\"layout_Modal-fade-hidden\", !this.showFade());\n\t\tthis._relativeTarget = this.getRelativeTarget();\n\t\tthis.setModalSize();\n\t\tconst rect = this._relativeTarget.getBoundingClientRect();\n\t\tthis.setFadePosition(rect);\n\t\tthis.setModalPosition(rect);\n\t\tif (this.show()) {\n\t\t\tif (!this._widget.target()) this._widget.target(this._modalBody.node());\n\t\t\tthis._widget.resize().render();\n\t\t} else this._widget.target(null).render();\n\t}\n\texit(domNode, element) {\n\t\tif (this._widget) this._widget.target(null);\n\t\tsuper.exit(domNode, element);\n\t}\n\tformattedTitle() {\n\t\tconst title = this.title_exists() ? this.title().trim() : \"\";\n\t\tif (title.length > 0 && title.slice(0, 1) === \"(\" && title.slice(-1) === \")\") return title.slice(1, -1);\n\t\treturn this.title();\n\t}\n};\nModal.prototype._class += \" layout_Modal\";\nModal.prototype.publish(\"title\", null, \"string\", \"title\");\nModal.prototype.publish(\"widget\", null, \"widget\", \"widget\");\nModal.prototype.publish(\"titleFontSize\", 18, \"number\", \"titleFontSize (in pixels)\");\nModal.prototype.publish(\"titleFontColor\", \"#ffffff\", \"html-color\", \"titleFontColor\");\nModal.prototype.publish(\"relativeTargetId\", null, \"string\", \"relativeTargetId\");\nModal.prototype.publish(\"show\", true, \"boolean\", \"show\");\nModal.prototype.publish(\"showFade\", true, \"boolean\", \"showFade\");\nModal.prototype.publish(\"enableClickFadeToClose\", true, \"boolean\", \"enableClickFadeToClose\");\nModal.prototype.publish(\"minWidth\", \"400px\", \"string\", \"minWidth\");\nModal.prototype.publish(\"minHeight\", \"400px\", \"string\", \"minHeight\");\nModal.prototype.publish(\"maxWidth\", \"800px\", \"string\", \"maxWidth\");\nModal.prototype.publish(\"maxHeight\", \"800px\", \"string\", \"maxHeight\");\nModal.prototype.publish(\"fixedWidth\", null, \"string\", \"fixedWidth\");\nModal.prototype.publish(\"fixedHeight\", null, \"string\", \"fixedHeight\");\nModal.prototype.publish(\"fixedTop\", null, \"string\", \"fixedTop\");\nModal.prototype.publish(\"fixedLeft\", null, \"string\", \"fixedLeft\");\nModal.prototype.publish(\"overflowX\", \"hidden\", \"string\", \"overflowX\");\nModal.prototype.publish(\"overflowY\", \"scroll\", \"string\", \"overflowY\");\n\n//#endregion\n//#region src/ChartPanel.ts\nvar ChartPanel = class extends Border2 {\n\t_legend = new Legend(this).enableOverflow(true);\n\t_progressBar = new ProgressBar();\n\t_autoScale = false;\n\t_resolutions = {\n\t\ttiny: {\n\t\t\twidth: 100,\n\t\t\theight: 100\n\t\t},\n\t\tsmall: {\n\t\t\twidth: 300,\n\t\t\theight: 300\n\t\t}\n\t};\n\t_modal = new Modal();\n\t_highlight;\n\t_scale;\n\t_orig_size;\n\t_toggleInfo = new ToggleButton().faChar(\"fa-info-circle\").tooltip(\".Description\").selected(false).on(\"enabled\", () => {\n\t\treturn this.description() !== \"\";\n\t}).on(\"click\", () => {\n\t\tif (this._toggleInfo.selected()) {\n\t\t\tthis._modal.title(this.title()).widget(new Text().text(this.description())).show(true).render();\n\t\t\tconst origCloseFunc = this._modal._close;\n\t\t\tthis._modal._close = () => {\n\t\t\t\tthis._toggleInfo.selected(false).render();\n\t\t\t\tthis._modal._close = origCloseFunc;\n\t\t\t};\n\t\t}\n\t}).on(\"mouseMove\", () => {}).on(\"mouseOut\", () => {});\n\t_toggleData = new ToggleButton().faChar(\"fa-table\").tooltip(\"Data\").on(\"click\", () => {\n\t\tthis.dataVisible(this._toggleData.selected());\n\t\tthis.render();\n\t});\n\t_buttonDownload = new Button().faChar(\"fa-download\").tooltip(\"Download\").on(\"click\", () => {\n\t\tthis.downloadCSV();\n\t});\n\t_buttonDownloadImage = new Button().faChar(\"fa-image\").tooltip(\"Download Image\").on(\"click\", () => {\n\t\tthis.downloadPNG();\n\t});\n\t_toggleLegend = new ToggleButton().faChar(\"fa-list-ul\").tooltip(\"Legend\").selected(false).on(\"click\", () => {\n\t\tconst selected = this._toggleLegend.selected();\n\t\tif (this.legendPosition() === \"bottom\") this.showBottom(selected);\n\t\telse if (this.legendPosition() === \"right\") this.showRight(selected);\n\t\tthis.legendVisible(selected);\n\t\tthis.render();\n\t});\n\t_spacer = new Spacer();\n\t_titleBar = new TitleBar().buttons([\n\t\tthis._toggleData,\n\t\tthis._buttonDownload,\n\t\tthis._buttonDownloadImage,\n\t\tthis._spacer,\n\t\tthis._toggleLegend\n\t]);\n\t_carousel = new Carousel();\n\t_table = new Table();\n\t_widget;\n\t_hideLegendToggleList = [\"dgrid_Table\"];\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t}\n\tfields(_) {\n\t\tif (!arguments.length) return super.fields();\n\t\tsuper.fields(_);\n\t\tthis._legend.fields(_);\n\t\tthis.refreshFields();\n\t\treturn this;\n\t}\n\trefreshFields() {\n\t\tthis._widget.fields(this._legend.filteredFields());\n\t\tthis._table.fields(this._legend.filteredFields());\n\t\treturn this;\n\t}\n\tcolumns(_, asDefault) {\n\t\tif (!arguments.length) return super.columns();\n\t\tsuper.columns(_, asDefault);\n\t\tthis._legend.columns(_, asDefault);\n\t\tthis.refreshColumns();\n\t\treturn this;\n\t}\n\trefreshColumns() {\n\t\tthis._widget.columns(this._legend.filteredColumns());\n\t\tthis._table.columns(this._legend.filteredColumns());\n\t\treturn this;\n\t}\n\tdata(_) {\n\t\tif (!arguments.length) return super.data();\n\t\tsuper.data(_);\n\t\tthis._legend.data(_);\n\t\tthis.refreshData();\n\t\treturn this;\n\t}\n\trefreshData() {\n\t\tthis._widget.data(this._legend.filteredData());\n\t\tthis._table.data(this._legend.filteredData());\n\t\treturn this;\n\t}\n\thighlight(_) {\n\t\tif (!arguments.length) return this._highlight;\n\t\tthis._highlight = _;\n\t\treturn this;\n\t}\n\tstartProgress() {\n\t\tthis._progressBar.start();\n\t}\n\tfinishProgress() {\n\t\tthis._progressBar.finish();\n\t}\n\tbuttons(_) {\n\t\tif (!arguments.length) return this._titleBar.buttons();\n\t\tthis._titleBar.buttons(_);\n\t\treturn this;\n\t}\n\tdownloadCSV() {\n\t\tconst namePrefix = this.downloadTitle() ? this.downloadTitle() : this.title() ? this.title() : \"data\";\n\t\tconst nameSuffix = this.downloadTimestampSuffix() ? \"_\" + Utility.timestamp() : \"\";\n\t\tUtility.downloadString(\"CSV\", this._widget.export(\"CSV\"), namePrefix + nameSuffix);\n\t\treturn this;\n\t}\n\tdownloadPNG() {\n\t\tconst widget = this.widget();\n\t\tif (widget instanceof SVGWidget) if (!this.legendVisible()) widget.downloadPNG(this.title());\n\t\telse widget.downloadPNG(this.title(), void 0, this._legend);\n\t\treturn this;\n\t}\n\thighlightColumn(column) {\n\t\tif (column) {\n\t\t\tconst cssTag = `series-${this.cssTag(column)}`;\n\t\t\tthis._centerWA.element().selectAll(\".series\").each(function() {\n\t\t\t\tconst element = select(this);\n\t\t\t\tconst highlight = element.classed(cssTag);\n\t\t\t\telement.classed(\"highlight\", highlight).classed(\"lowlight\", !highlight);\n\t\t\t});\n\t\t} else this._centerWA.element().selectAll(\".series\").classed(\"highlight\", false).classed(\"lowlight\", false);\n\t\treturn this;\n\t}\n\tgetResponsiveMode() {\n\t\tif (!this.enableAutoscaling()) return \"none\";\n\t\tif (!this._autoScale) return \"regular\";\n\t\tif (this.size().width <= this._resolutions.tiny.width || this.size().height <= this._resolutions.tiny.height) return \"tiny\";\n\t\telse if (this.size().width <= this._resolutions.small.width || this.size().height <= this._resolutions.small.height) return \"small\";\n\t\treturn \"regular\";\n\t}\n\tsetOrigSize() {\n\t\tthis._orig_size = JSON.parse(JSON.stringify(this.size()));\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tthis._modal.target(this.target()).relativeTargetId(this.id());\n\t\tthis.top(this._titleBar);\n\t\tthis.center(this._carousel);\n\t\tthis._legend.targetWidget(this._widget).orientation(\"vertical\").title(\"\").visible(false);\n\t\tthis._progressBar.enter(domNode, element);\n\t\tthis.setOrigSize();\n\t}\n\tpreUpdateTiny(element) {\n\t\telement.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"none\");\n\t}\n\tpreUpdateSmall(element) {\n\t\tconst scale_x = this._orig_size.width / this._resolutions.small.width;\n\t\tconst scale_y = this._orig_size.height / this._resolutions.small.height;\n\t\tthis._scale = Math.min(scale_x, scale_y);\n\t\tconst x_is_smaller = this._scale === scale_x;\n\t\tthis.size({\n\t\t\twidth: x_is_smaller ? this._resolutions.small.width : this._orig_size.width * (1 / this._scale),\n\t\t\theight: !x_is_smaller ? this._resolutions.small.height : this._orig_size.height * (1 / this._scale)\n\t\t});\n\t\telement.select(\"div.title-icon\").style(\"position\", \"static\");\n\t\telement.selectAll(\"lhs\").style(\"display\", \"none\");\n\t\telement.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"\");\n\t\telement.selectAll(\"div.data-count\").style(\"visibility\", \"hidden\");\n\t\telement.style(\"transform\", `scale(${this._scale})`);\n\t}\n\tpreUpdateRegular(element) {\n\t\telement.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"\");\n\t\telement.selectAll(\"div.data-count\").style(\"visibility\", \"hidden\");\n\t\telement.select(\"div.title-icon\").style(\"position\", \"static\");\n\t\telement.style(\"transform\", \"translate(0px,0px) scale(1)\");\n\t}\n\t_prevdataVisible;\n\t_prevlegendVisible;\n\t_prevLegendPosition;\n\t_prevChartDataFamily;\n\t_prevChart;\n\t_prevButtons;\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t}\n\tpreUpdate(domNode, element) {\n\t\tsuper.preUpdate(domNode, element);\n\t\tif (this._prevLegendPosition !== this.legendPosition()) {\n\t\t\tif (this._legend.target() !== null) this._legend.target(null);\n\t\t\tif (this._prevLegendPosition !== void 0) this.swap(this._prevLegendPosition, this.legendPosition());\n\t\t\telse this[this.legendPosition()](this._legend);\n\t\t\tif (this.legendPosition() === \"right\") {\n\t\t\t\tthis.rightOverflowX(\"hidden\");\n\t\t\t\tthis.rightOverflowY(\"auto\");\n\t\t\t\tthis.bottomOverflowX(\"visible\");\n\t\t\t\tthis.bottomOverflowY(\"visible\");\n\t\t\t} else {\n\t\t\t\tthis.rightOverflowX(\"visible\");\n\t\t\t\tthis.rightOverflowY(\"visible\");\n\t\t\t\tthis.bottomOverflowX(\"auto\");\n\t\t\t\tthis.bottomOverflowY(\"hidden\");\n\t\t\t}\n\t\t\tthis._prevLegendPosition = this.legendPosition();\n\t\t}\n\t\tif (this._prevdataVisible !== this.dataVisible()) {\n\t\t\tthis._prevdataVisible = this.dataVisible();\n\t\t\tthis._toggleData.selected(this._prevdataVisible);\n\t\t\tthis._legend.visible(this._prevlegendVisible && !this._prevdataVisible);\n\t\t\tthis._carousel.active(this._prevdataVisible ? 1 : 0);\n\t\t}\n\t\tif (this._prevlegendVisible !== this.legendVisible()) {\n\t\t\tthis._prevlegendVisible = this.legendVisible();\n\t\t\tthis._toggleLegend.selected(this._prevlegendVisible);\n\t\t\tthis._legend.visible(this._prevlegendVisible && !this._prevdataVisible);\n\t\t}\n\t\tthis._legend.orientation(this.legendPosition() === \"bottom\" ? \"horizontal\" : \"vertical\");\n\t\tthis.showLeft(!this.left());\n\t\tswitch (this.getResponsiveMode()) {\n\t\t\tcase \"tiny\":\n\t\t\t\tthis.preUpdateTiny(element);\n\t\t\t\tbreak;\n\t\t\tcase \"small\":\n\t\t\t\tthis.preUpdateSmall(element);\n\t\t\t\tbreak;\n\t\t\tcase \"regular\":\n\t\t\t\tthis.preUpdateRegular(element);\n\t\t\t\tbreak;\n\t\t}\n\t\tconst chart = this._widget.classID() === \"composite_MultiChart\" ? this._widget[\"chart\"]() : this._widget;\n\t\tthis._legend.dataFamily(chart._dataFamily || \"any\");\n\t\tif (this._prevChartDataFamily !== this._legend.dataFamily()) {\n\t\t\tthis._prevChartDataFamily = this._legend.dataFamily();\n\t\t\tswitch (this._prevChartDataFamily) {\n\t\t\t\tcase \"any\":\n\t\t\t\t\tthis._toggleLegend.selected(false);\n\t\t\t\t\tthis._legend.visible(false);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\telement.style(\"box-shadow\", this.highlight() ? `inset 0px 0px 0px ${this.highlightSize()}px ${this.highlightColor()}` : \"none\");\n\t\tif (this._hideLegendToggleList.indexOf(chart.classID()) !== -1) {\n\t\t\tthis._spacer.visible(false);\n\t\t\tthis._toggleLegend.visible(false);\n\t\t} else {\n\t\t\tthis._spacer.visible(true);\n\t\t\tthis._toggleLegend.visible(true);\n\t\t}\n\t\tif (this._prevChart !== chart) {\n\t\t\tthis._prevChart = chart;\n\t\t\tconst widgetIconBar = chart ? chart[\"_titleBar\"] || chart[\"_iconBar\"] : void 0;\n\t\t\tif (widgetIconBar && widgetIconBar instanceof IconBar) {\n\t\t\t\tthis._prevButtons = this._prevButtons || [...this.buttons()];\n\t\t\t\tconst buttons = [\n\t\t\t\t\t...widgetIconBar.buttons(),\n\t\t\t\t\tnew Spacer(),\n\t\t\t\t\t...this._prevButtons\n\t\t\t\t];\n\t\t\t\twidgetIconBar.buttons([]).render();\n\t\t\t\tthis.buttons(buttons);\n\t\t\t} else if (this._prevButtons) this.buttons(this._prevButtons);\n\t\t}\n\t\tconst hiddenButtons = [];\n\t\tif (!this.dataButtonVisible()) hiddenButtons.push(this._toggleData);\n\t\tif (!this.downloadButtonVisible()) hiddenButtons.push(this._buttonDownload);\n\t\tif (!this.downloadImageButtonVisible()) hiddenButtons.push(this._buttonDownloadImage);\n\t\tif (!this.legendButtonVisible()) hiddenButtons.push(this._toggleLegend);\n\t\tthis._buttonDownloadImage.enabled(this.widget() instanceof SVGWidget);\n\t\tthis._titleBar.hiddenButtons(hiddenButtons).visible(this.titleVisible());\n\t\tthis.topOverlay(this.titleOverlay() || !this.titleVisible());\n\t}\n\tpostUpdate(domNode, element) {\n\t\tsuper.postUpdate(domNode, element);\n\t\tswitch (this.getResponsiveMode()) {\n\t\t\tcase \"tiny\":\n\t\t\t\tthis.postUpdateTiny(element);\n\t\t\t\tbreak;\n\t\t\tcase \"small\":\n\t\t\t\tthis.postUpdateSmall(element);\n\t\t\t\tbreak;\n\t\t\tcase \"regular\":\n\t\t\t\tthis.postUpdateRegular(element);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tpostUpdateTiny(element) {\n\t\telement.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"none\");\n\t\telement.selectAll(\"div.data-count\").style(\"visibility\", \"visible\").style(\"font-size\", this.titleIconFontSize() / 3 + \"px\").style(\"line-height\", this.titleIconFontSize() / 3 + \"px\").style(\"left\", this.titleIconFontSize() + \"px\").text(this.data().length);\n\t\telement.style(\"transform\", \"translate(0px,0px) scale(1)\");\n\t\tconst iconDiv = element.selectAll(\"div.title-icon\");\n\t\tconst _node = iconDiv.node();\n\t\tconst containerRect = element.node().parentElement.getBoundingClientRect();\n\t\tif (_node) {\n\t\t\tconst rect = iconDiv.node().getBoundingClientRect();\n\t\t\tconst icon_top = containerRect.height / 2;\n\t\t\ticonDiv.style(\"position\", \"absolute\").style(\"left\", `calc(50% - ${rect.width / 2}px)`).style(\"top\", `${icon_top - rect.height / 2}px`);\n\t\t\telement.selectAll(\"div.data-count\").style(\"position\", \"absolute\").style(\"left\", `calc(50% + ${rect.width / 2}px)`).style(\"top\", `${icon_top - rect.height / 2}px`);\n\t\t}\n\t}\n\tpostUpdateSmall(element) {\n\t\telement.selectAll(\"lhs\").style(\"display\", \"none\");\n\t\telement.selectAll(\"div.title-icon\").style(\"position\", \"static\");\n\t\telement.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"\");\n\t\telement.selectAll(\"div.data-count\").style(\"visibility\", \"hidden\");\n\t\tconst rect = element.node().getBoundingClientRect();\n\t\tconst parentRect = element.node().parentElement.getBoundingClientRect();\n\t\telement.style(\"transform\", `translate(${parentRect.x - rect.x}px, ${parentRect.y - rect.y}px) scale(${this._scale})`);\n\t}\n\tpostUpdateRegular(element) {\n\t\telement.selectAll(\"div.title-icon\").style(\"position\", \"static\");\n\t\telement.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"\");\n\t\telement.selectAll(\"div.data-count\").style(\"visibility\", \"hidden\");\n\t}\n\texit(domNode, element) {\n\t\tthis._progressBar.exit(domNode, element);\n\t\tthis.right(null);\n\t\tthis._legend.target(null);\n\t\tthis.center(null);\n\t\tthis._carousel.target(null);\n\t\tthis.top(null);\n\t\tthis._titleBar.target(null);\n\t\tthis._modal.target(null);\n\t\tdelete this._prevChart;\n\t\tdelete this._prevButtons;\n\t\tdelete this._prevChartDataFamily;\n\t\tdelete this._prevPos;\n\t\tdelete this._prevdataVisible;\n\t\tdelete this._prevlegendVisible;\n\t\tsuper.exit(domNode, element);\n\t}\n\tclick(row, column, selected) {}\n\tdblclick(row, column, selected) {}\n\tvertex_click(row, col, sel, more) {\n\t\tif (more && more.vertex) {}\n\t}\n\tvertex_dblclick(row, col, sel, more) {\n\t\tif (more && more.vertex) {}\n\t}\n\tedge_click(row, col, sel, more) {\n\t\tif (more && more.edge) {}\n\t}\n\tedge_dblclick(row, col, sel, more) {\n\t\tif (more && more.edge) {}\n\t}\n};\nChartPanel.prototype._class += \" layout_ChartPanel\";\nChartPanel.prototype.publishReset();\nChartPanel.prototype.publishProxy(\"title\", \"_titleBar\");\nChartPanel.prototype.publish(\"titleVisible\", true, \"boolean\");\nChartPanel.prototype.publish(\"titleOverlay\", false, \"boolean\");\nChartPanel.prototype.publishProxy(\"titleIcon\", \"_titleBar\");\nChartPanel.prototype.publishProxy(\"titleIconFont\", \"_titleBar\");\nChartPanel.prototype.publishProxy(\"titleFont\", \"_titleBar\");\nChartPanel.prototype.publishProxy(\"titleIconFontSize\", \"_titleBar\");\nChartPanel.prototype.publishProxy(\"titleFontSize\", \"_titleBar\");\nChartPanel.prototype.publishProxy(\"description\", \"_titleBar\");\nChartPanel.prototype.publishProxy(\"descriptionFont\", \"_titleBar\");\nChartPanel.prototype.publishProxy(\"descriptionFontSize\", \"_titleBar\");\nChartPanel.prototype.publish(\"dataVisible\", false, \"boolean\", \"Show data table\");\nChartPanel.prototype.publish(\"dataButtonVisible\", true, \"boolean\", \"Show data table button\");\nChartPanel.prototype.publish(\"downloadButtonVisible\", true, \"boolean\", \"Show data download button\");\nChartPanel.prototype.publish(\"downloadImageButtonVisible\", false, \"boolean\", \"Show image download button\");\nChartPanel.prototype.publish(\"downloadTitle\", \"\", \"string\", \"File name when downloaded\");\nChartPanel.prototype.publish(\"downloadTimestampSuffix\", true, \"boolean\", \"Use timestamp as file name suffix\");\nChartPanel.prototype.publish(\"legendVisible\", false, \"boolean\", \"Show legend\");\nChartPanel.prototype.publish(\"legendButtonVisible\", true, \"boolean\", \"Show legend button\");\nChartPanel.prototype.publish(\"legendPosition\", \"right\", \"set\", \"Position of legend\", [\"right\", \"bottom\"]);\nChartPanel.prototype.publishProxy(\"legend_labelMaxWidth\", \"_legend\", \"labelMaxWidth\");\nChartPanel.prototype.publishProxy(\"legend_showSeriesTotal\", \"_legend\", \"showSeriesTotal\");\nChartPanel.prototype.publishProxy(\"legend_showLegendTotal\", \"_legend\", \"showLegendTotal\");\nChartPanel.prototype.publishProxy(\"legend_itemPadding\", \"_legend\", \"itemPadding\");\nChartPanel.prototype.publishProxy(\"legend_shapeRadius\", \"_legend\", \"shapeRadius\");\nChartPanel.prototype.publishProxy(\"legend_symbolType\", \"_legend\", \"symbolType\");\nChartPanel.prototype.publishProxy(\"legend_labelAlign\", \"_legend\", \"labelAlign\");\nChartPanel.prototype.publish(\"widget\", null, \"widget\", \"Widget\", void 0, { render: false });\nChartPanel.prototype.publish(\"enableAutoscaling\", false, \"boolean\");\nChartPanel.prototype.publish(\"highlightSize\", 4, \"number\");\nChartPanel.prototype.publish(\"highlightColor\", \"#e67e22\", \"html-color\");\nChartPanel.prototype.publishProxy(\"progress_halfLife\", \"_progressBar\", \"halfLife\");\nChartPanel.prototype.publishProxy(\"progress_decay\", \"_progressBar\", \"decay\");\nChartPanel.prototype.publishProxy(\"progress_size\", \"_progressBar\", \"size\");\nChartPanel.prototype.publishProxy(\"progress_color\", \"_progressBar\", \"color\");\nChartPanel.prototype.publishProxy(\"progress_blurBar\", \"_progressBar\", \"blurBar\");\nChartPanel.prototype.publishProxy(\"progress_blurSize\", \"_progressBar\", \"blurSize\");\nChartPanel.prototype.publishProxy(\"progress_blurColor\", \"_progressBar\", \"blurColor\");\nChartPanel.prototype.publishProxy(\"progress_blurOpacity\", \"_progressBar\", \"blurOpacity\");\nChartPanel.prototype.widget = function(_) {\n\tif (!arguments.length) return this._widget;\n\tthis._carousel.widgets([_, this._table]);\n\tthis._widget = _;\n\tthis._widget.fields(this._legend.filteredFields()).data(this._legend.filteredData());\n\tconst context = this;\n\tconst tmpAny = this._widget;\n\ttmpAny.click = function() {\n\t\tcontext.click.apply(context, arguments);\n\t};\n\ttmpAny.dblclick = function() {\n\t\tcontext.dblclick.apply(context, arguments);\n\t};\n\ttmpAny.vertex_click = function() {\n\t\tcontext.vertex_click.apply(context, arguments);\n\t};\n\ttmpAny.vertex_dblclick = function() {\n\t\tcontext.vertex_dblclick.apply(context, arguments);\n\t};\n\ttmpAny.edge_click = function() {\n\t\tcontext.edge_click.apply(context, arguments);\n\t};\n\ttmpAny.edge_dblclick = function() {\n\t\tcontext.edge_dblclick.apply(context, arguments);\n\t};\n\treturn this;\n};\n\n//#endregion\n//#region src/FlexGrid.ts\nvar FlexGrid = class extends HTMLWidget {\n\tconstructor() {\n\t\tsuper();\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tselect(domNode.parentNode).style(\"height\", \"100%\").style(\"width\", \"100%\");\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\tconst context = this;\n\t\tconst cachedSizes = [];\n\t\tthis.updateFlexParent(element);\n\t\tconst listItems = element.selectAll(\".FlexGrid-list-item\").data(this.widgets(), (w) => w.id());\n\t\tlistItems.enter().append(\"div\").classed(\"FlexGrid-list-item\", true).each(function(w) {\n\t\t\tw.target(this);\n\t\t}).merge(listItems).style(\"min-height\", this.itemMinHeight() + \"px\").style(\"min-width\", this.itemMinWidth() + \"px\").style(\"flex-basis\", (n, i) => {\n\t\t\tconst flexBasis = this.widgetsFlexBasis()[i];\n\t\t\treturn typeof flexBasis !== \"undefined\" ? flexBasis : this.flexBasis();\n\t\t}).style(\"flex-grow\", (n, i) => {\n\t\t\tconst flexGrow = this.widgetsFlexGrow()[i];\n\t\t\treturn typeof flexGrow !== \"undefined\" ? flexGrow : this.flexGrow();\n\t\t}).style(\"border-width\", this.borderWidth() + \"px\").style(\"border-color\", this.itemBorderColor()).each(function() {\n\t\t\tthis.firstChild.style.display = \"none\";\n\t\t}).each(function() {\n\t\t\tconst rect = this.getBoundingClientRect();\n\t\t\tcachedSizes.push([rect.width, rect.height]);\n\t\t}).each(function(w, i) {\n\t\t\tthis.firstChild.style.display = \"block\";\n\t\t\tw.resize({\n\t\t\t\twidth: cachedSizes[i][0] - 2 * context.borderWidth(),\n\t\t\t\theight: cachedSizes[i][1] - 2 * context.borderWidth()\n\t\t\t});\n\t\t});\n\t\tlistItems.exit().remove();\n\t}\n\texit(domNode, element) {\n\t\tsuper.exit(domNode, element);\n\t}\n\tupdateFlexParent(element) {\n\t\telement.style(\"height\", \"100%\").style(\"flex-direction\", this.orientation() === \"horizontal\" ? \"row\" : \"column\").style(\"flex-wrap\", this.flexWrap()).style(\"align-items\", this.alignItems()).style(\"align-content\", this.alignContent()).style(\"overflow-x\", () => {\n\t\t\tif (this.forceXScroll() || this.orientation() === \"horizontal\" && this.flexWrap() === \"nowrap\" && !this.disableScroll()) return \"scroll\";\n\t\t\treturn \"hidden\";\n\t\t}).style(\"overflow-y\", () => {\n\t\t\tif (this.forceYScroll() || this.orientation() === \"vertical\" && this.flexWrap() === \"nowrap\" && !this.disableScroll()) return \"scroll\";\n\t\t\treturn \"hidden\";\n\t\t});\n\t}\n};\nFlexGrid.prototype._class += \" layout_FlexGrid\";\nFlexGrid.prototype.publish(\"itemBorderColor\", \"transparent\", \"html-color\", \"Color of list item borders\");\nFlexGrid.prototype.publish(\"borderWidth\", 0, \"number\", \"Width of list item borders (pixels)\");\nFlexGrid.prototype.publish(\"orientation\", \"horizontal\", \"set\", \"Controls the flex-direction of the list items\", [\"horizontal\", \"vertical\"]);\nFlexGrid.prototype.publish(\"flexWrap\", \"wrap\", \"set\", \"Controls the line wrap when overflow occurs\", [\n\t\"nowrap\",\n\t\"wrap\",\n\t\"wrap-reverse\"\n]);\nFlexGrid.prototype.publish(\"disableScroll\", false, \"boolean\", \"If false, scrollbar will show (when flexWrap is set to 'nowrap')\", null, { disable: (w) => w.flexWrap() !== \"nowrap\" });\nFlexGrid.prototype.publish(\"forceXScroll\", false, \"boolean\", \"If true, horzontal scrollbar will show\");\nFlexGrid.prototype.publish(\"forceYScroll\", false, \"boolean\", \"If true, vertical scrollbar will show\");\nFlexGrid.prototype.publish(\"itemMinHeight\", 64, \"number\", \"Minimum height of a list item (pixels)\");\nFlexGrid.prototype.publish(\"itemMinWidth\", 64, \"number\", \"Minimum width of a list item (pixels)\");\nFlexGrid.prototype.publish(\"alignItems\", \"stretch\", \"set\", \"Controls normal alignment of items\", [\n\t\"flex-start\",\n\t\"center\",\n\t\"flex-end\",\n\t\"stretch\"\n]);\nFlexGrid.prototype.publish(\"alignContent\", \"stretch\", \"set\", \"Controls normal alignment of item rows\", [\n\t\"flex-start\",\n\t\"center\",\n\t\"flex-end\",\n\t\"stretch\",\n\t\"space-between\",\n\t\"space-around\"\n]);\nFlexGrid.prototype.publish(\"flexGrow\", 1, \"number\", \"Default flex-grow style for all list items\");\nFlexGrid.prototype.publish(\"flexBasis\", \"10%\", \"string\", \"Default flex-basis style for all list items\");\nFlexGrid.prototype.publish(\"widgetsFlexGrow\", [], \"array\", \"Array of flex-grow values keyed on the widgets array\");\nFlexGrid.prototype.publish(\"widgetsFlexBasis\", [], \"array\", \"Array of flex-basis values keyed on the widgets array\");\nFlexGrid.prototype.publish(\"widgets\", [], \"widgetArray\", \"Array of widgets to be rendered as list items\");\n\n//#endregion\n//#region ../../node_modules/grid-list/src/gridList.js\nvar require_gridList = /* @__PURE__ */ __commonJS({ \"../../node_modules/grid-list/src/gridList.js\": ((exports, module) => {\n\t(function(root, factory) {\n\t\tif (typeof define === \"function\" && define.amd) define([], factory);\n\t\telse if (typeof exports === \"object\") module.exports = factory();\n\t\telse root.GridList = factory();\n\t})(exports, function() {\n\t\tvar GridList$1 = function(items, options) {\n\t\t\t/**\n\t\t\t* A GridList manages the two-dimensional positions from a list of items,\n\t\t\t* within a virtual matrix.\n\t\t\t*\n\t\t\t* The GridList's main function is to convert the item positions from one\n\t\t\t* grid size to another, maintaining as much of their order as possible.\n\t\t\t*\n\t\t\t* The GridList's second function is to handle collisions when moving an item\n\t\t\t* over another.\n\t\t\t*\n\t\t\t* The positioning algorithm places items in columns. Starting from left to\n\t\t\t* right, going through each column top to bottom.\n\t\t\t*\n\t\t\t* The size of an item is expressed using the number of cols and rows it\n\t\t\t* takes up within the grid (w and h)\n\t\t\t*\n\t\t\t* The position of an item is express using the col and row position within\n\t\t\t* the grid (x and y)\n\t\t\t*\n\t\t\t* An item is an object of structure:\n\t\t\t* {\n\t\t\t* w: 3, h: 1,\n\t\t\t* x: 0, y: 1\n\t\t\t* }\n\t\t\t*/\n\t\t\tthis._options = options;\n\t\t\tfor (var k$1 in this.defaults) if (!this._options.hasOwnProperty(k$1)) this._options[k$1] = this.defaults[k$1];\n\t\t\tthis.items = items;\n\t\t\tthis._adjustSizeOfItems();\n\t\t\tthis.generateGrid();\n\t\t};\n\t\tGridList$1.cloneItems = function(items, _items) {\n\t\t\t/**\n\t\t\t* Clone items with a deep level of one. Items are not referenced but their\n\t\t\t* properties are\n\t\t\t*/\n\t\t\tvar i, k$1;\n\t\t\tif (_items === void 0) _items = [];\n\t\t\tfor (i = 0; i < items.length; i++) {\n\t\t\t\tif (!_items[i]) _items[i] = {};\n\t\t\t\tfor (k$1 in items[i]) _items[i][k$1] = items[i][k$1];\n\t\t\t}\n\t\t\treturn _items;\n\t\t};\n\t\tGridList$1.prototype = {\n\t\t\tdefaults: {\n\t\t\t\tlanes: 5,\n\t\t\t\tdirection: \"horizontal\"\n\t\t\t},\n\t\t\ttoString: function() {\n\t\t\t\tvar widthOfGrid = this.grid.length, output = \"\\n #|\", border = \"\\n --\", item, i, j;\n\t\t\t\tfor (i = 0; i < widthOfGrid; i++) {\n\t\t\t\t\toutput += \" \" + this._padNumber(i, \" \");\n\t\t\t\t\tborder += \"---\";\n\t\t\t\t}\n\t\t\t\toutput += border;\n\t\t\t\tfor (i = 0; i < this._options.lanes; i++) {\n\t\t\t\t\toutput += \"\\n\" + this._padNumber(i, \" \") + \"|\";\n\t\t\t\t\tfor (j = 0; j < widthOfGrid; j++) {\n\t\t\t\t\t\toutput += \" \";\n\t\t\t\t\t\titem = this.grid[j][i];\n\t\t\t\t\t\toutput += item ? this._padNumber(this.items.indexOf(item), \"0\") : \"--\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\toutput += \"\\n\";\n\t\t\t\treturn output;\n\t\t\t},\n\t\t\tgenerateGrid: function() {\n\t\t\t\t/**\n\t\t\t\t* Build the grid structure from scratch, with the current item positions\n\t\t\t\t*/\n\t\t\t\tvar i;\n\t\t\t\tthis._resetGrid();\n\t\t\t\tfor (i = 0; i < this.items.length; i++) this._markItemPositionToGrid(this.items[i]);\n\t\t\t},\n\t\t\tresizeGrid: function(lanes) {\n\t\t\t\tvar currentColumn = 0;\n\t\t\t\tthis._options.lanes = lanes;\n\t\t\t\tthis._adjustSizeOfItems();\n\t\t\t\tthis._sortItemsByPosition();\n\t\t\t\tthis._resetGrid();\n\t\t\t\tfor (var i = 0; i < this.items.length; i++) {\n\t\t\t\t\tvar item = this.items[i], position = this._getItemPosition(item);\n\t\t\t\t\tthis._updateItemPosition(item, this.findPositionForItem(item, {\n\t\t\t\t\t\tx: currentColumn,\n\t\t\t\t\t\ty: 0\n\t\t\t\t\t}));\n\t\t\t\t\tcurrentColumn = Math.max(currentColumn, position.x);\n\t\t\t\t}\n\t\t\t\tthis._pullItemsToLeft();\n\t\t\t},\n\t\t\tfindPositionForItem: function(item, start, fixedRow) {\n\t\t\t\t/**\n\t\t\t\t* This method has two options for the position we want for the item:\n\t\t\t\t* - Starting from a certain row/column number and only looking for\n\t\t\t\t* positions to its right\n\t\t\t\t* - Accepting positions for a certain row number only (use-case: items\n\t\t\t\t* being shifted to the left/right as a result of collisions)\n\t\t\t\t*\n\t\t\t\t* @param {Object<x:Number, y:Number, w:Number, h:Number} item\n\t\t\t\t* @param {Object<x:Number, y:Number} start Position from which to start\n\t\t\t\t* the search.\n\t\t\t\t* @param {Number} [fixedRow] If provided, we're going to try to find a\n\t\t\t\t* position for the new item on it. If doesn't fit there, we're going\n\t\t\t\t* to put it on the first row.\n\t\t\t\t*\n\t\t\t\t* @returns {Number[2]} x and y.\n\t\t\t\t*/\n\t\t\t\tvar x, y, position;\n\t\t\t\tfor (x = start.x; x < this.grid.length; x++) if (fixedRow !== void 0) {\n\t\t\t\t\tposition = [x, fixedRow];\n\t\t\t\t\tif (this._itemFitsAtPosition(item, position)) return position;\n\t\t\t\t} else for (y = start.y; y < this._options.lanes; y++) {\n\t\t\t\t\tposition = [x, y];\n\t\t\t\t\tif (this._itemFitsAtPosition(item, position)) return position;\n\t\t\t\t}\n\t\t\t\tvar newCol = this.grid.length, newRow = 0;\n\t\t\t\tif (fixedRow !== void 0 && this._itemFitsAtPosition(item, [newCol, fixedRow])) newRow = fixedRow;\n\t\t\t\treturn [newCol, newRow];\n\t\t\t},\n\t\t\tmoveItemToPosition: function(item, newPosition) {\n\t\t\t\tvar position = this._getItemPosition({\n\t\t\t\t\tx: newPosition[0],\n\t\t\t\t\ty: newPosition[1],\n\t\t\t\t\tw: item.w,\n\t\t\t\t\th: item.h\n\t\t\t\t});\n\t\t\t\tthis._updateItemPosition(item, [position.x, position.y]);\n\t\t\t\tthis._resolveCollisions(item);\n\t\t\t},\n\t\t\tresizeItem: function(item, size) {\n\t\t\t\t/**\n\t\t\t\t* Resize an item and resolve collisions.\n\t\t\t\t*\n\t\t\t\t* @param {Object} item A reference to an item that's part of the grid.\n\t\t\t\t* @param {Object} size\n\t\t\t\t* @param {Number} [size.w=item.w] The new width.\n\t\t\t\t* @param {Number} [size.h=item.h] The new height.\n\t\t\t\t*/\n\t\t\t\tvar width = size.w || item.w, height = size.h || item.h;\n\t\t\t\tthis._updateItemSize(item, width, height);\n\t\t\t\tthis._resolveCollisions(item);\n\t\t\t\tthis._pullItemsToLeft();\n\t\t\t},\n\t\t\tgetChangedItems: function(initialItems, idAttribute) {\n\t\t\t\t/**\n\t\t\t\t* Compare the current items against a previous snapshot and return only\n\t\t\t\t* the ones that changed their attributes in the meantime. This includes both\n\t\t\t\t* position (x, y) and size (w, h)\n\t\t\t\t*\n\t\t\t\t* Since both their position and size can change, the items need an\n\t\t\t\t* additional identifier attribute to match them with their previous state\n\t\t\t\t*/\n\t\t\t\tvar changedItems = [];\n\t\t\t\tfor (var i = 0; i < initialItems.length; i++) {\n\t\t\t\t\tvar item = this._getItemByAttribute(idAttribute, initialItems[i][idAttribute]);\n\t\t\t\t\tif (item.x !== initialItems[i].x || item.y !== initialItems[i].y || item.w !== initialItems[i].w || item.h !== initialItems[i].h) changedItems.push(item);\n\t\t\t\t}\n\t\t\t\treturn changedItems;\n\t\t\t},\n\t\t\t_sortItemsByPosition: function() {\n\t\t\t\tthis.items.sort(function(item1, item2) {\n\t\t\t\t\tvar position1 = this._getItemPosition(item1), position2 = this._getItemPosition(item2);\n\t\t\t\t\tif (position1.x != position2.x) return position1.x - position2.x;\n\t\t\t\t\tif (position1.y != position2.y) return position1.y - position2.y;\n\t\t\t\t\treturn 0;\n\t\t\t\t}.bind(this));\n\t\t\t},\n\t\t\t_adjustSizeOfItems: function() {\n\t\t\t\t/**\n\t\t\t\t* Some items can have 100% height or 100% width. Those dimmensions are\n\t\t\t\t* expressed as 0. We need to ensure a valid width and height for each of\n\t\t\t\t* those items as the number of items per lane.\n\t\t\t\t*/\n\t\t\t\tfor (var i = 0; i < this.items.length; i++) {\n\t\t\t\t\tvar item = this.items[i];\n\t\t\t\t\tif (item.autoSize === void 0) item.autoSize = item.w === 0 || item.h === 0;\n\t\t\t\t\tif (item.autoSize) if (this._options.direction === \"horizontal\") item.h = this._options.lanes;\n\t\t\t\t\telse item.w = this._options.lanes;\n\t\t\t\t}\n\t\t\t},\n\t\t\t_resetGrid: function() {\n\t\t\t\tthis.grid = [];\n\t\t\t},\n\t\t\t_itemFitsAtPosition: function(item, newPosition) {\n\t\t\t\t/**\n\t\t\t\t* Check that an item wouldn't overlap with another one if placed at a\n\t\t\t\t* certain position within the grid\n\t\t\t\t*/\n\t\t\t\tvar position = this._getItemPosition(item), x, y;\n\t\t\t\tif (newPosition[0] < 0 || newPosition[1] < 0) return false;\n\t\t\t\tif (newPosition[1] + position.h > this._options.lanes) return false;\n\t\t\t\tfor (x = newPosition[0]; x < newPosition[0] + position.w; x++) {\n\t\t\t\t\tvar col = this.grid[x];\n\t\t\t\t\tif (!col) continue;\n\t\t\t\t\tfor (y = newPosition[1]; y < newPosition[1] + position.h; y++) if (col[y] && col[y] !== item) return false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\t_updateItemPosition: function(item, position) {\n\t\t\t\tif (item.x !== null && item.y !== null) this._deleteItemPositionFromGrid(item);\n\t\t\t\tthis._setItemPosition(item, position);\n\t\t\t\tthis._markItemPositionToGrid(item);\n\t\t\t},\n\t\t\t_updateItemSize: function(item, width, height) {\n\t\t\t\t/**\n\t\t\t\t* @param {Object} item A reference to a grid item.\n\t\t\t\t* @param {Number} width The new width.\n\t\t\t\t* @param {Number} height The new height.\n\t\t\t\t*/\n\t\t\t\tif (item.x !== null && item.y !== null) this._deleteItemPositionFromGrid(item);\n\t\t\t\titem.w = width;\n\t\t\t\titem.h = height;\n\t\t\t\tthis._markItemPositionToGrid(item);\n\t\t\t},\n\t\t\t_markItemPositionToGrid: function(item) {\n\t\t\t\t/**\n\t\t\t\t* Mark the grid cells that are occupied by an item. This prevents items\n\t\t\t\t* from overlapping in the grid\n\t\t\t\t*/\n\t\t\t\tvar position = this._getItemPosition(item), x, y;\n\t\t\t\tthis._ensureColumns(position.x + position.w);\n\t\t\t\tfor (x = position.x; x < position.x + position.w; x++) for (y = position.y; y < position.y + position.h; y++) this.grid[x][y] = item;\n\t\t\t},\n\t\t\t_deleteItemPositionFromGrid: function(item) {\n\t\t\t\tvar position = this._getItemPosition(item), x, y;\n\t\t\t\tfor (x = position.x; x < position.x + position.w; x++) {\n\t\t\t\t\tif (!this.grid[x]) continue;\n\t\t\t\t\tfor (y = position.y; y < position.y + position.h; y++) if (this.grid[x][y] == item) this.grid[x][y] = null;\n\t\t\t\t}\n\t\t\t},\n\t\t\t_ensureColumns: function(N) {\n\t\t\t\t/**\n\t\t\t\t* Ensure that the grid has at least N columns available.\n\t\t\t\t*/\n\t\t\t\tvar i;\n\t\t\t\tfor (i = 0; i < N; i++) if (!this.grid[i]) this.grid.push(new GridCol(this._options.lanes));\n\t\t\t},\n\t\t\t_getItemsCollidingWithItem: function(item) {\n\t\t\t\tvar collidingItems = [];\n\t\t\t\tfor (var i = 0; i < this.items.length; i++) if (item != this.items[i] && this._itemsAreColliding(item, this.items[i])) collidingItems.push(i);\n\t\t\t\treturn collidingItems;\n\t\t\t},\n\t\t\t_itemsAreColliding: function(item1, item2) {\n\t\t\t\tvar position1 = this._getItemPosition(item1), position2 = this._getItemPosition(item2);\n\t\t\t\treturn !(position2.x >= position1.x + position1.w || position2.x + position2.w <= position1.x || position2.y >= position1.y + position1.h || position2.y + position2.h <= position1.y);\n\t\t\t},\n\t\t\t_resolveCollisions: function(item) {\n\t\t\t\tif (!this._tryToResolveCollisionsLocally(item)) this._pullItemsToLeft(item);\n\t\t\t\tthis._pullItemsToLeft();\n\t\t\t},\n\t\t\t_tryToResolveCollisionsLocally: function(item) {\n\t\t\t\t/**\n\t\t\t\t* Attempt to resolve the collisions after moving a an item over one or more\n\t\t\t\t* other items within the grid, by shifting the position of the colliding\n\t\t\t\t* items around the moving one. This might result in subsequent collisions,\n\t\t\t\t* in which case we will revert all position permutations. To be able to\n\t\t\t\t* revert to the initial item positions, we create a virtual grid in the\n\t\t\t\t* process\n\t\t\t\t*/\n\t\t\t\tvar collidingItems = this._getItemsCollidingWithItem(item);\n\t\t\t\tif (!collidingItems.length) return true;\n\t\t\t\tvar _gridList = new GridList$1([], this._options), leftOfItem, rightOfItem, aboveOfItem, belowOfItem;\n\t\t\t\tGridList$1.cloneItems(this.items, _gridList.items);\n\t\t\t\t_gridList.generateGrid();\n\t\t\t\tfor (var i = 0; i < collidingItems.length; i++) {\n\t\t\t\t\tvar collidingItem = _gridList.items[collidingItems[i]], collidingPosition = this._getItemPosition(collidingItem);\n\t\t\t\t\tvar position = this._getItemPosition(item);\n\t\t\t\t\tleftOfItem = [position.x - collidingPosition.w, collidingPosition.y];\n\t\t\t\t\trightOfItem = [position.x + position.w, collidingPosition.y];\n\t\t\t\t\taboveOfItem = [collidingPosition.x, position.y - collidingPosition.h];\n\t\t\t\t\tbelowOfItem = [collidingPosition.x, position.y + position.h];\n\t\t\t\t\tif (_gridList._itemFitsAtPosition(collidingItem, leftOfItem)) _gridList._updateItemPosition(collidingItem, leftOfItem);\n\t\t\t\t\telse if (_gridList._itemFitsAtPosition(collidingItem, aboveOfItem)) _gridList._updateItemPosition(collidingItem, aboveOfItem);\n\t\t\t\t\telse if (_gridList._itemFitsAtPosition(collidingItem, belowOfItem)) _gridList._updateItemPosition(collidingItem, belowOfItem);\n\t\t\t\t\telse if (_gridList._itemFitsAtPosition(collidingItem, rightOfItem)) _gridList._updateItemPosition(collidingItem, rightOfItem);\n\t\t\t\t\telse return false;\n\t\t\t\t}\n\t\t\t\tGridList$1.cloneItems(_gridList.items, this.items);\n\t\t\t\tthis.generateGrid();\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\t_pullItemsToLeft: function(fixedItem) {\n\t\t\t\t/**\n\t\t\t\t* Build the grid from scratch, by using the current item positions and\n\t\t\t\t* pulling them as much to the left as possible, removing as space between\n\t\t\t\t* them as possible.\n\t\t\t\t*\n\t\t\t\t* If a \"fixed item\" is provided, its position will be kept intact and the\n\t\t\t\t* rest of the items will be layed around it.\n\t\t\t\t*/\n\t\t\t\tthis._sortItemsByPosition();\n\t\t\t\tthis._resetGrid();\n\t\t\t\tif (fixedItem) {\n\t\t\t\t\tvar fixedPosition = this._getItemPosition(fixedItem);\n\t\t\t\t\tthis._updateItemPosition(fixedItem, [fixedPosition.x, fixedPosition.y]);\n\t\t\t\t}\n\t\t\t\tfor (var i = 0; i < this.items.length; i++) {\n\t\t\t\t\tvar item = this.items[i], position = this._getItemPosition(item);\n\t\t\t\t\tif (fixedItem && item == fixedItem) continue;\n\t\t\t\t\tvar x = this._findLeftMostPositionForItem(item), newPosition = this.findPositionForItem(item, {\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty: 0\n\t\t\t\t\t}, position.y);\n\t\t\t\t\tthis._updateItemPosition(item, newPosition);\n\t\t\t\t}\n\t\t\t},\n\t\t\t_findLeftMostPositionForItem: function(item) {\n\t\t\t\t/**\n\t\t\t\t* When pulling items to the left, we need to find the leftmost position for\n\t\t\t\t* an item, with two considerations in mind:\n\t\t\t\t* - preserving its current row\n\t\t\t\t* - preserving the previous horizontal order between items\n\t\t\t\t*/\n\t\t\t\tvar tail = 0, position = this._getItemPosition(item);\n\t\t\t\tfor (var i = 0; i < this.grid.length; i++) for (var j = position.y; j < position.y + position.h; j++) {\n\t\t\t\t\tvar otherItem = this.grid[i][j];\n\t\t\t\t\tif (!otherItem) continue;\n\t\t\t\t\tvar otherPosition = this._getItemPosition(otherItem);\n\t\t\t\t\tif (this.items.indexOf(otherItem) < this.items.indexOf(item)) tail = otherPosition.x + otherPosition.w;\n\t\t\t\t}\n\t\t\t\treturn tail;\n\t\t\t},\n\t\t\t_getItemByAttribute: function(key, value) {\n\t\t\t\tfor (var i = 0; i < this.items.length; i++) if (this.items[i][key] === value) return this.items[i];\n\t\t\t\treturn null;\n\t\t\t},\n\t\t\t_padNumber: function(nr, prefix) {\n\t\t\t\treturn nr >= 10 ? nr : prefix + nr;\n\t\t\t},\n\t\t\t_getItemPosition: function(item) {\n\t\t\t\t/**\n\t\t\t\t* If the direction is vertical we need to rotate the grid 90 deg to the\n\t\t\t\t* left. Thus, we simulate the fact that items are being pulled to the top.\n\t\t\t\t*\n\t\t\t\t* Since the items have widths and heights, if we apply the classic\n\t\t\t\t* counter-clockwise 90 deg rotation\n\t\t\t\t*\n\t\t\t\t* [0 -1]\n\t\t\t\t* [1 0]\n\t\t\t\t*\n\t\t\t\t* then the top left point of an item will become the bottom left point of\n\t\t\t\t* the rotated item. To adjust for this, we need to subtract from the y\n\t\t\t\t* position the height of the original item - the width of the rotated item.\n\t\t\t\t*\n\t\t\t\t* However, if we do this then we'll reverse some actions: resizing the\n\t\t\t\t* width of an item will stretch the item to the left instead of to the\n\t\t\t\t* right; resizing an item that doesn't fit into the grid will push the\n\t\t\t\t* items around it instead of going on a new row, etc.\n\t\t\t\t*\n\t\t\t\t* We found it better to do a vertical flip of the grid after rotating it.\n\t\t\t\t* This restores the direction of the actions and greatly simplifies the\n\t\t\t\t* transformations.\n\t\t\t\t*/\n\t\t\t\tif (this._options.direction === \"horizontal\") return item;\n\t\t\t\telse return {\n\t\t\t\t\tx: item.y,\n\t\t\t\t\ty: item.x,\n\t\t\t\t\tw: item.h,\n\t\t\t\t\th: item.w\n\t\t\t\t};\n\t\t\t},\n\t\t\t_setItemPosition: function(item, position) {\n\t\t\t\t/**\n\t\t\t\t* See _getItemPosition.\n\t\t\t\t*/\n\t\t\t\tif (this._options.direction === \"horizontal\") {\n\t\t\t\t\titem.x = position[0];\n\t\t\t\t\titem.y = position[1];\n\t\t\t\t} else {\n\t\t\t\t\titem.x = position[1];\n\t\t\t\t\titem.y = position[0];\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tvar GridCol = function(lanes) {\n\t\t\tfor (var i = 0; i < lanes; i++) this.push(null);\n\t\t};\n\t\tGridCol.prototype = [];\n\t\treturn GridList$1;\n\t});\n}) });\n\n//#endregion\n//#region src/Grid.css\nvar import_gridList = /* @__PURE__ */ __toESM(require_gridList(), 1);\n\n//#endregion\n//#region src/Grid.ts\nvar GridList = import_gridList && import_gridList.default || import_gridList;\nvar Grid = class extends HTMLWidget {\n\tdivItems;\n\tgridList;\n\titems;\n\titemsMap;\n\torigItems;\n\tcellWidth;\n\tcellHeight;\n\tdragItem;\n\tdragItemPos;\n\t_d3Drag;\n\t_d3DragResize;\n\t_selectionBag;\n\t_scrollBarWidth;\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t\tthis._selectionBag = new Utility.Selection(this);\n\t\tthis.content([]);\n\t}\n\tgetDimensions() {\n\t\tconst size = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t\tthis.content().forEach(function(cell) {\n\t\t\tif (size.width < cell.gridCol() + cell.gridColSpan()) size.width = cell.gridCol() + cell.gridColSpan();\n\t\t\tif (size.height < cell.gridRow() + cell.gridRowSpan()) size.height = cell.gridRow() + cell.gridRowSpan();\n\t\t}, this);\n\t\treturn size;\n\t}\n\tclearContent(widget) {\n\t\tthis.content(this.content().filter(function(contentWidget) {\n\t\t\tif (!widget) {\n\t\t\t\tcontentWidget.target(null);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tlet w = contentWidget;\n\t\t\twhile (w) {\n\t\t\t\tif (widget === w) {\n\t\t\t\t\tcontentWidget.target(null);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tw = w.widget ? w.widget() : null;\n\t\t\t}\n\t\t\treturn true;\n\t\t}));\n\t}\n\tsetContent(row, col, widget, title, rowSpan, colSpan) {\n\t\trowSpan = rowSpan || 1;\n\t\tcolSpan = colSpan || 1;\n\t\ttitle = title || \"\";\n\t\tthis.content(this.content().filter(function(contentWidget) {\n\t\t\tif (contentWidget.gridRow() === row && contentWidget.gridCol() === col) {\n\t\t\t\tcontentWidget.target(null);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}));\n\t\tif (widget) {\n\t\t\tconst cell = new Cell().gridRow(row).gridCol(col).widget(widget).title(title).gridRowSpan(rowSpan).gridColSpan(colSpan);\n\t\t\tthis.content().push(cell);\n\t\t}\n\t\treturn this;\n\t}\n\tsortedContent() {\n\t\treturn this.content().sort(function(l, r) {\n\t\t\tif (l.gridRow() === r.gridRow()) return l.gridCol() - r.gridCol();\n\t\t\treturn l.gridRow() - r.gridRow();\n\t\t});\n\t}\n\tgetCell(row, col) {\n\t\tlet retVal = null;\n\t\tthis.content().some(function(cell) {\n\t\t\tif (row >= cell.gridRow() && row < cell.gridRow() + cell.gridRowSpan() && col >= cell.gridCol() && col < cell.gridCol() + cell.gridColSpan()) {\n\t\t\t\tretVal = cell;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t\treturn retVal;\n\t}\n\tgetWidgetCell(id) {\n\t\tlet retVal = null;\n\t\tthis.content().some(function(cell) {\n\t\t\tif (cell.widget().id() === id) {\n\t\t\t\tretVal = cell;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t\treturn retVal;\n\t}\n\tgetContent(id) {\n\t\tlet retVal = null;\n\t\tthis.content().some(function(cell) {\n\t\t\tif (cell.widget().id() === id) {\n\t\t\t\tretVal = cell.widget();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t\treturn retVal;\n\t}\n\tcellToGridItem(cell) {\n\t\treturn {\n\t\t\tx: cell.gridCol(),\n\t\t\ty: cell.gridRow(),\n\t\t\tw: cell.gridColSpan(),\n\t\t\th: cell.gridRowSpan(),\n\t\t\tid: cell.id(),\n\t\t\tcell\n\t\t};\n\t}\n\tgridItemToCell(item) {\n\t\titem.cell.gridCol(item.x).gridRow(item.y).gridColSpan(item.w).gridRowSpan(item.h);\n\t}\n\tresetItemsPos() {\n\t\tthis.origItems.forEach(function(origItem) {\n\t\t\tconst item = this.itemsMap[origItem.id];\n\t\t\titem.x = origItem.x;\n\t\t\titem.y = origItem.y;\n\t\t}, this);\n\t}\n\tinitGridList() {\n\t\tthis.itemsMap = {};\n\t\tthis.items = this.content().map(function(cell) {\n\t\t\tconst retVal = this.cellToGridItem(cell);\n\t\t\tthis.itemsMap[retVal.id] = retVal;\n\t\t\treturn retVal;\n\t\t}, this);\n\t\tthis.origItems = this.content().map(this.cellToGridItem);\n\t\tthis.gridList = new GridList(this.items, {\n\t\t\tdirection: this.snapping(),\n\t\t\tlanes: this.snapping() === \"horizontal\" ? this.snappingRows() : this.snappingColumns()\n\t\t});\n\t}\n\tkillGridList() {\n\t\tthis.gridList = null;\n\t\tdelete this.items;\n\t\tdelete this.itemsMap;\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tthis._scrollBarWidth = Platform.getScrollbarWidth();\n\t\tconst context = this;\n\t\tthis._d3Drag = drag().subject(function(_d) {\n\t\t\tconst d = context.cellToGridItem(_d);\n\t\t\treturn {\n\t\t\t\tx: d.x * context.cellWidth,\n\t\t\t\ty: d.y * context.cellHeight\n\t\t\t};\n\t\t}).on(\"start\", function(_d) {\n\t\t\tif (!context.designMode()) return;\n\t\t\td3Event().sourceEvent.stopPropagation();\n\t\t\tcontext.initGridList();\n\t\t\tconst d = context.itemsMap[_d.id()];\n\t\t\tcontext.dragItem = element.append(\"div\").attr(\"class\", \"dragging\").style(\"transform\", function() {\n\t\t\t\treturn \"translate(\" + d.x * context.cellWidth + \"px, \" + d.y * context.cellHeight + \"px)\";\n\t\t\t}).style(\"width\", function() {\n\t\t\t\treturn d.w * context.cellWidth - context.gutter() + \"px\";\n\t\t\t}).style(\"height\", function() {\n\t\t\t\treturn d.h * context.cellHeight - context.gutter() + \"px\";\n\t\t\t});\n\t\t\tcontext.selectionBagClick(_d);\n\t\t}).on(\"drag\", function(_d) {\n\t\t\tif (!context.designMode()) return;\n\t\t\tconst event = d3Event();\n\t\t\tevent.sourceEvent.stopPropagation();\n\t\t\tconst d = context.itemsMap[_d.id()];\n\t\t\tif (event.x < 0) event.x = 0;\n\t\t\tif (event.x + d.w * context.cellWidth > context.snappingColumns() * context.cellWidth) event.x = context.snappingColumns() * context.cellWidth - d.w * context.cellWidth;\n\t\t\tif (event.y < 0) event.y = 0;\n\t\t\tif (event.y + d.h * context.cellWidth > context.snappingRows() * context.cellWidth) event.y = context.snappingRows() * context.cellWidth - d.h * context.cellWidth;\n\t\t\tconst pos = [Math.max(0, Math.floor((event.x + context.cellWidth / 2) / context.cellWidth)), Math.max(0, Math.floor((event.y + context.cellHeight / 2) / context.cellHeight))];\n\t\t\tif (d.x !== pos[0] || d.y !== pos[1]) {\n\t\t\t\tif (context.snapping() !== \"none\") {\n\t\t\t\t\tcontext.resetItemsPos();\n\t\t\t\t\tcontext.gridList.moveItemToPosition(d, pos);\n\t\t\t\t} else {\n\t\t\t\t\td.x = pos[0];\n\t\t\t\t\td.y = pos[1];\n\t\t\t\t}\n\t\t\t\tif (_d.gridCol() !== d.x || _d.gridRow() !== d.y) {\n\t\t\t\t\tcontext.items.forEach(context.gridItemToCell);\n\t\t\t\t\tcontext.updateGrid(false, 100);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontext.dragItem.style(\"transform\", function() {\n\t\t\t\treturn \"translate(\" + event.x + \"px, \" + event.y + \"px)\";\n\t\t\t}).style(\"width\", function() {\n\t\t\t\treturn d.w * context.cellWidth + \"px\";\n\t\t\t}).style(\"height\", function() {\n\t\t\t\treturn d.h * context.cellHeight + \"px\";\n\t\t\t});\n\t\t}).on(\"end\", function() {\n\t\t\tif (!context.designMode()) return;\n\t\t\td3Event().sourceEvent.stopPropagation();\n\t\t\tcontext.dragItem.remove();\n\t\t\tcontext.dragItem = null;\n\t\t\tcontext.killGridList();\n\t\t});\n\t\tthis._d3DragResize = drag().subject(function(_d) {\n\t\t\tconst d = context.cellToGridItem(_d);\n\t\t\treturn {\n\t\t\t\tx: (d.x + d.w - 1) * context.cellWidth,\n\t\t\t\ty: (d.y + d.h - 1) * context.cellHeight\n\t\t\t};\n\t\t}).on(\"start\", function(_d) {\n\t\t\tif (!context.designMode()) return;\n\t\t\td3Event().sourceEvent.stopPropagation();\n\t\t\tcontext.initGridList();\n\t\t\tconst d = context.itemsMap[_d.id()];\n\t\t\tcontext.dragItem = element.append(\"div\").attr(\"class\", \"resizing\").style(\"transform\", function() {\n\t\t\t\treturn \"translate(\" + d.x * context.cellWidth + \"px, \" + d.y * context.cellHeight + \"px)\";\n\t\t\t}).style(\"width\", function() {\n\t\t\t\treturn d.w * context.cellWidth - context.gutter() + \"px\";\n\t\t\t}).style(\"height\", function() {\n\t\t\t\treturn d.h * context.cellHeight - context.gutter() + \"px\";\n\t\t\t});\n\t\t\tcontext.dragItemPos = {\n\t\t\t\tx: d.x,\n\t\t\t\ty: d.y\n\t\t\t};\n\t\t}).on(\"drag\", function(_d) {\n\t\t\tif (!context.designMode()) return;\n\t\t\tconst event = d3Event();\n\t\t\tevent.sourceEvent.stopPropagation();\n\t\t\tconst d = context.itemsMap[_d.id()];\n\t\t\tconst pos = [Math.max(0, Math.round(event.x / context.cellWidth)), Math.max(0, Math.round(event.y / context.cellHeight))];\n\t\t\tconst size = {\n\t\t\t\tw: Math.max(1, pos[0] - d.x + 1),\n\t\t\t\th: Math.max(1, pos[1] - d.y + 1)\n\t\t\t};\n\t\t\tif (d.w !== size.w || d.h !== size.h) {\n\t\t\t\tif (context.snapping() !== \"none\") {\n\t\t\t\t\tcontext.resetItemsPos();\n\t\t\t\t\tcontext.gridList.resizeItem(d, size);\n\t\t\t\t} else {\n\t\t\t\t\td.w = size.w;\n\t\t\t\t\td.h = size.h;\n\t\t\t\t}\n\t\t\t\tif (_d.gridColSpan() !== d.w || _d.gridRowSpan() !== d.h) {\n\t\t\t\t\tcontext.items.forEach(context.gridItemToCell);\n\t\t\t\t\tcontext.updateGrid(d.id, 100);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontext.dragItem.style(\"width\", function() {\n\t\t\t\treturn (-d.x + 1) * context.cellWidth + event.x - context.gutter() + \"px\";\n\t\t\t}).style(\"height\", function() {\n\t\t\t\treturn (-d.y + 1) * context.cellHeight + event.y - context.gutter() + \"px\";\n\t\t\t});\n\t\t}).on(\"end\", function() {\n\t\t\tif (!context.designMode()) return;\n\t\t\td3Event().sourceEvent.stopPropagation();\n\t\t\tcontext.dragItem.remove();\n\t\t\tcontext.dragItem = null;\n\t\t\tcontext.killGridList();\n\t\t});\n\t}\n\tupdateGrid(resize, transitionDuration = 0, _noRender = false) {\n\t\ttransitionDuration = transitionDuration || 0;\n\t\tconst context = this;\n\t\tthis.divItems.classed(\"draggable\", this.designMode()).transition().duration(transitionDuration).style(\"left\", function(d) {\n\t\t\treturn d.gridCol() * context.cellWidth + context.gutter() / 2 + \"px\";\n\t\t}).style(\"top\", function(d) {\n\t\t\treturn d.gridRow() * context.cellHeight + context.gutter() / 2 + \"px\";\n\t\t}).style(\"width\", function(d) {\n\t\t\treturn d.gridColSpan() * context.cellWidth - context.gutter() + \"px\";\n\t\t}).style(\"height\", function(d) {\n\t\t\treturn d.gridRowSpan() * context.cellHeight - context.gutter() + \"px\";\n\t\t}).on(\"end\", function(d) {\n\t\t\td.surfaceShadow_default(context.surfaceShadow()).surfacePadding_default(context.surfacePadding()).surfaceBorderWidth_default(context.surfaceBorderWidth()).surfaceBackgroundColor_default(context.surfaceBackgroundColor());\n\t\t\tif (resize === true || resize === d.id()) d.resize().lazyRender();\n\t\t});\n\t}\n\tupdate(domNode, element2) {\n\t\tsuper.update(domNode, element2);\n\t\tthis._placeholderElement.style(\"overflow-x\", this.fitTo() === \"width\" ? \"hidden\" : null);\n\t\tthis._placeholderElement.style(\"overflow-y\", this.fitTo() === \"width\" ? \"scroll\" : null);\n\t\tconst dimensions = this.getDimensions();\n\t\tthis.cellWidth = (this.width() - (this.fitTo() === \"width\" ? this._scrollBarWidth : 0)) / dimensions.width;\n\t\tthis.cellHeight = this.fitTo() === \"all\" ? this.height() / dimensions.height : this.cellWidth;\n\t\tif (this.designMode()) {\n\t\t\tconst cellLaneRatio = Math.min(this.width() / this.snappingColumns(), this.height() / this.snappingRows());\n\t\t\tthis.cellWidth = Math.floor(cellLaneRatio);\n\t\t\tthis.cellHeight = this.cellWidth;\n\t\t}\n\t\tconst context = this;\n\t\tconst divItems = element2.selectAll(\"#\" + this.id() + \" > .ddCell\").data(this.content(), function(d) {\n\t\t\treturn d.id();\n\t\t});\n\t\tthis.divItems = divItems.enter().append(\"div\").attr(\"class\", \"ddCell\").each(function(d) {\n\t\t\td.target(this);\n\t\t\td.__grid_watch = d.monitor(function(key, newVal, oldVal) {\n\t\t\t\tif (context._renderCount && (key === \"snapping\" || key.indexOf(\"grid\") === 0) && newVal !== oldVal) {\n\t\t\t\t\tif (!context.gridList) {\n\t\t\t\t\t\tcontext.initGridList();\n\t\t\t\t\t\tif (context.snapping() !== \"none\") context.gridList.resizeGrid(context.snapping() === \"horizontal\" ? context.snappingRows() : context.snappingColumns());\n\t\t\t\t\t\tcontext.items.forEach(context.gridItemToCell);\n\t\t\t\t\t\tcontext.updateGrid(d.id(), 100);\n\t\t\t\t\t\tcontext.killGridList();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tselect(this).append(\"div\").attr(\"class\", \"resizeHandle\").call(context._d3DragResize).append(\"div\").attr(\"class\", \"resizeHandleDisplay\");\n\t\t}).merge(divItems);\n\t\tthis.divItems.each(function(d) {\n\t\t\tconst element = select(this);\n\t\t\tif (context.designMode()) element.call(context._d3Drag);\n\t\t\telse element.on(\"mousedown.drag\", null).on(\"touchstart.drag\", null);\n\t\t});\n\t\tthis.divItems.select(\".resizeHandle\").style(\"display\", this.designMode() ? null : \"none\");\n\t\tthis.updateGrid(true);\n\t\tdivItems.exit().each(function(d) {\n\t\t\td.target(null);\n\t\t\tif (d.__grid_watch) d.__grid_watch.remove();\n\t\t}).remove();\n\t\tconst lanesBackground = element2.selectAll(\"#\" + this.id() + \" > .laneBackground\").data(this.designMode() ? [\"\"] : []);\n\t\tlanesBackground.enter().insert(\"div\", \":first-child\").attr(\"class\", \"laneBackground\").style(\"left\", \"1px\").style(\"top\", \"1px\").on(\"click\", function() {\n\t\t\tcontext.selectionBagClear();\n\t\t}).merge(lanesBackground).style(\"width\", this.snappingColumns() * this.cellWidth + \"px\").style(\"height\", this.snappingRows() * this.cellHeight + \"px\");\n\t\tlanesBackground.exit().each(function() {\n\t\t\tcontext.selectionBagClear();\n\t\t}).remove();\n\t\tconst lanes = element2.selectAll(\"#\" + this.id() + \" > .lane\").data(this.designMode() ? [\"\"] : []);\n\t\tlanes.enter().append(\"div\").attr(\"class\", \"lane\").style(\"left\", \"1px\").style(\"top\", \"1px\");\n\t\tlanes.style(\"display\", this.showLanes() ? null : \"none\").style(\"width\", this.snappingColumns() * this.cellWidth + \"px\").style(\"height\", this.snappingRows() * this.cellHeight + \"px\").style(\"background-image\", \"linear-gradient(to right, grey 1px, transparent 1px), linear-gradient(to bottom, grey 1px, transparent 1px)\").style(\"background-size\", this.cellWidth + \"px \" + this.cellHeight + \"px\");\n\t\tlanes.exit().remove();\n\t}\n\texit(domNode, element) {\n\t\tthis.content().forEach((w) => w.target(null));\n\t\tsuper.exit(domNode, element);\n\t}\n\t_createSelectionObject(d) {\n\t\treturn {\n\t\t\t_id: d._id,\n\t\t\telement: () => {\n\t\t\t\treturn d._element;\n\t\t\t},\n\t\t\twidget: d\n\t\t};\n\t}\n\tselection(_) {\n\t\tif (!arguments.length) return this._selectionBag.get().map(function(d) {\n\t\t\treturn d._id;\n\t\t});\n\t\tthis._selectionBag.set(_.map(function(row) {\n\t\t\treturn this._createSelectionObject(row);\n\t\t}, this));\n\t\treturn this;\n\t}\n\tselectionBagClear() {\n\t\tif (!this._selectionBag.isEmpty()) {\n\t\t\tthis._selectionBag.clear();\n\t\t\tthis.postSelectionChange();\n\t\t}\n\t}\n\tselectionBagClick(d) {\n\t\tif (d !== null) {\n\t\t\tconst selectionObj = this._createSelectionObject(d);\n\t\t\tif (d3Event().sourceEvent.ctrlKey) if (this._selectionBag.isSelected(selectionObj)) {\n\t\t\t\tthis._selectionBag.remove(selectionObj);\n\t\t\t\tthis.postSelectionChange();\n\t\t\t} else {\n\t\t\t\tthis._selectionBag.append(selectionObj);\n\t\t\t\tthis.postSelectionChange();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconst selected = this._selectionBag.get();\n\t\t\t\tif (selected.length === 1 && selected[0]._id === selectionObj._id) this.selectionBagClear();\n\t\t\t\telse this._selectionBag.set([selectionObj]);\n\t\t\t\tthis.postSelectionChange();\n\t\t\t}\n\t\t}\n\t}\n\tpostSelectionChange() {}\n\tapplyLayout(layoutArr) {\n\t\tthis.divItems.each((d, i) => {\n\t\t\tif (layoutArr[i]) {\n\t\t\t\tconst [x, y, w, h] = layoutArr[i];\n\t\t\t\td.gridCol(x).gridRow(y).gridColSpan(w).gridRowSpan(h);\n\t\t\t}\n\t\t});\n\t\tthis.updateGrid(true);\n\t}\n\tvizActivation(elem) {}\n};\nGrid.prototype._class += \" layout_Grid\";\nGrid.prototype.publish(\"designMode\", false, \"boolean\", \"Design Mode\", null, { tags: [\"Basic\"] });\nGrid.prototype.publish(\"showLanes\", true, \"boolean\", \"Show snapping lanes when in design mode\", null, {\n\ttags: [\"Basic\"],\n\tdisable: (w) => !w.designMode()\n});\nGrid.prototype.publish(\"fitTo\", \"all\", \"set\", \"Sizing Strategy\", [\"all\", \"width\"], { tags: [\"Basic\"] });\nGrid.prototype.publish(\"snapping\", \"vertical\", \"set\", \"Snapping Strategy\", [\n\t\"vertical\",\n\t\"horizontal\",\n\t\"none\"\n]);\nGrid.prototype.publish(\"snappingColumns\", 12, \"number\", \"Snapping Columns\");\nGrid.prototype.publish(\"snappingRows\", 16, \"number\", \"Snapping Rows\");\nGrid.prototype.publish(\"gutter\", 6, \"number\", \"Gap Between Widgets\", null, { tags: [\"Basic\"] });\nGrid.prototype.publish(\"surfaceShadow\", true, \"boolean\", \"3D Shadow\");\nGrid.prototype.publish(\"surfacePadding\", null, \"string\", \"Cell Padding (px)\", null, { tags: [\"Intermediate\"] });\nGrid.prototype.publish(\"surfaceBorderWidth\", 1, \"number\", \"Width (px) of Cell Border\", null, { tags: [\"Intermediate\"] });\nGrid.prototype.publish(\"surfaceBackgroundColor\", null, \"html-color\", \"Surface Background Color\", null, { tags: [\"Advanced\"] });\nGrid.prototype.publish(\"content\", [], \"widgetArray\", \"widgets\", null, {\n\ttags: [\"Basic\"],\n\trender: false\n});\n\n//#endregion\n//#region src/HorizontalList.ts\nvar HorizontalList = class extends FlexGrid {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.orientation_default(\"horizontal\");\n\t\tthis.flexWrap_default(\"nowrap\");\n\t}\n};\nHorizontalList.prototype._class += \" layout_HorizontalList\";\n\n//#endregion\n//#region src/Layered.ts\nvar Layered = class extends HTMLWidget {\n\t_contentContainer;\n\t_widgetPlacements;\n\t_widgetRatios;\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t\tthis._widgetPlacements = [];\n\t\tthis._widgetRatios = [];\n\t}\n\taddLayer(widget, placement = \"default\", widthRatio = 1, heightRatio = 1) {\n\t\tconst widgets = this.widgets();\n\t\twidgets.push(widget ? widget : new Text().text(\"No widget defined for layer.\"));\n\t\tthis.widgets(widgets);\n\t\tthis._widgetPlacements.push(placement);\n\t\tthis._widgetRatios.push([widthRatio, heightRatio]);\n\t\treturn this;\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tthis._contentContainer = element.append(\"div\").attr(\"class\", \"container\");\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\tconst context = this;\n\t\telement.style(\"padding\", this.surfacePadding() + \"px\");\n\t\tconst content = this._contentContainer.selectAll(\".content.id\" + this.id()).data(this.widgets(), function(d) {\n\t\t\treturn d.id();\n\t\t});\n\t\tcontent.enter().append(\"div\").attr(\"class\", \"content id\" + this.id()).each(function(widget, idx) {\n\t\t\twidget.target(this);\n\t\t}).merge(content).each(function(widget, idx) {\n\t\t\tconst clientSize = {\n\t\t\t\twidth: context.clientWidth(),\n\t\t\t\theight: context.clientHeight()\n\t\t\t};\n\t\t\tconst widgetSize = context.widgetSize(idx, clientSize);\n\t\t\tconst widgetPosition = context.widgetPosition(idx, clientSize, widgetSize);\n\t\t\tthis.style.top = widgetPosition.y + \"px\";\n\t\t\tthis.style.left = widgetPosition.x + \"px\";\n\t\t\twidget.resize(widgetSize).render();\n\t\t});\n\t\tcontent.exit().each(function(widget, idx) {\n\t\t\twidget.target(null);\n\t\t}).remove();\n\t\tcontent.order();\n\t}\n\twidgetSize(idx, clientSize) {\n\t\tif (this._widgetPlacements[idx] === \"default\") return {\n\t\t\twidth: clientSize.width * this._widgetRatios[idx][0],\n\t\t\theight: clientSize.height * this._widgetRatios[idx][1]\n\t\t};\n\t\telse return {\n\t\t\twidth: clientSize.width * this._widgetRatios[idx][0],\n\t\t\theight: clientSize.height * this._widgetRatios[idx][1]\n\t\t};\n\t}\n\twidgetPosition(idx, clientSize, widgetSize) {\n\t\tswitch (this._widgetPlacements[idx]) {\n\t\t\tdefault: return {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0\n\t\t\t};\n\t\t\tcase \"top\": return {\n\t\t\t\tx: clientSize.width / 2 - widgetSize.width / 2,\n\t\t\t\ty: 0\n\t\t\t};\n\t\t\tcase \"bottom\": return {\n\t\t\t\tx: clientSize.width / 2 - widgetSize.width / 2,\n\t\t\t\ty: clientSize.height - widgetSize.height\n\t\t\t};\n\t\t\tcase \"left\": return {\n\t\t\t\tx: 0,\n\t\t\t\ty: clientSize.height / 2 - widgetSize.height / 2\n\t\t\t};\n\t\t\tcase \"right\": return {\n\t\t\t\tx: clientSize.width - widgetSize.width,\n\t\t\t\ty: clientSize.height / 2 - widgetSize.height / 2\n\t\t\t};\n\t\t\tcase \"center\": return {\n\t\t\t\tx: clientSize.width / 2 - widgetSize.width / 2,\n\t\t\t\ty: clientSize.height / 2 - widgetSize.height / 2\n\t\t\t};\n\t\t}\n\t}\n};\nLayered.prototype._class += \" layout_Layered\";\nLayered.prototype.publish(\"surfacePadding\", 0, \"number\", \"Padding\");\nLayered.prototype.publish(\"widgets\", [], \"widgetArray\", \"widgets\", null, { tags: [\"Private\"] });\n\n//#endregion\n//#region src/Popup.ts\nvar Popup = class extends HTMLWidget {\n\t_surfaceButtons;\n\t_originalPosition;\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t\tthis._surfaceButtons = [];\n\t}\n\tupdateState(visible) {\n\t\tvisible = visible || !this.popupState();\n\t\tthis.popupState(visible).render();\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tthis.widget().target(domNode);\n\t\tthis._originalPosition = this.position();\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\telement.style(\"visibility\", this.popupState() ? null : \"hidden\").style(\"opacity\", this.popupState() ? null : 0).style(\"width\", this.shrinkWrap() ? this.widget().width() + \"px\" : this._size.width + \"px\").style(\"height\", this.shrinkWrap() ? this.widget().height() + \"px\" : this._size.height + \"px\");\n\t\tif (this.widget().size().height === 0) this.widget().resize(this.size());\n\t}\n\tpostUpdate(domNode, element) {\n\t\tlet left;\n\t\tlet top;\n\t\tswitch (this.centerPopup()) {\n\t\t\tcase \"container\":\n\t\t\t\tif (this._placeholderElement) {\n\t\t\t\t\tleft = parseInt(this._placeholderElement.style(\"width\")) / 2 - this.widget().width() / 2;\n\t\t\t\t\ttop = parseInt(this._placeholderElement.style(\"height\")) / 2 - this.widget().height() / 2;\n\t\t\t\t}\n\t\t\t\tthis.position(\"absolute\");\n\t\t\t\tbreak;\n\t\t\tcase \"window\":\n\t\t\t\tleft = window.innerWidth / 2 - this.widget().width() / 2;\n\t\t\t\ttop = window.innerHeight / 2 - this.widget().height() / 2;\n\t\t\t\tthis.position(\"fixed\");\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tleft = 0;\n\t\t\t\ttop = 0;\n\t\t\t\tthis.position(this._originalPosition);\n\t\t\t\tbreak;\n\t\t}\n\t\tthis.pos({\n\t\t\tx: left,\n\t\t\ty: top\n\t\t});\n\t\tsuper.postUpdate(domNode, element);\n\t\telement.style(\"position\", this.position()).style(\"left\", this.left() + \"px\").style(\"right\", this.right() + \"px\").style(\"top\", this.top() + \"px\").style(\"bottom\", this.bottom() + \"px\");\n\t}\n\texit(domNode, element) {\n\t\tif (this.widget()) this.widget().target(null);\n\t\tsuper.exit(domNode, element);\n\t}\n\tclick(obj) {}\n};\nPopup.prototype._class += \" layout_Popup\";\nPopup.prototype.publish(\"popupState\", false, \"boolean\", \"State of the popup, visible (true) or hidden (false)\", null, {});\nPopup.prototype.publish(\"shrinkWrap\", false, \"boolean\", \"The popup parent container either shrinks to the size of its contents (true) or expands to fit thge popup's parentDiv (false)\", null, {});\nPopup.prototype.publish(\"centerPopup\", \"none\", \"set\", \"Center the widget in its container element (target) or in the window\", [\n\t\"none\",\n\t\"container\",\n\t\"window\"\n], {});\nPopup.prototype.publish(\"top\", null, \"number\", \"Top position property of popup\", null, {});\nPopup.prototype.publish(\"bottom\", null, \"number\", \"Bottom position property of popup\", null, {});\nPopup.prototype.publish(\"left\", null, \"number\", \"Left position property of popup\", null, {});\nPopup.prototype.publish(\"right\", null, \"number\", \"Right position property of popup\", null, {});\nPopup.prototype.publish(\"position\", \"relative\", \"set\", \"Value of the 'position' property\", [\n\t\"absolute\",\n\t\"relative\",\n\t\"fixed\",\n\t\"static\",\n\t\"initial\",\n\t\"inherit\"\n], { tags: [\"Private\"] });\nPopup.prototype.publish(\"widget\", null, \"widget\", \"Widget\", null, { tags: [\"Private\"] });\n\n//#endregion\n//#region src/Tabbed.ts\nvar Tabbed = class extends HTMLWidget {\n\t_tabContainer;\n\t_contentContainer;\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t}\n\tclearTabs() {\n\t\tthis.labels([]);\n\t\tthis.widgets([]);\n\t\treturn this;\n\t}\n\taddTab(widget, label, isActive, callback) {\n\t\tconst widgetSize = widget.size();\n\t\tif (widgetSize.width === 0 && widgetSize.height === 0) widget.size({\n\t\t\twidth: \"100%\",\n\t\t\theight: \"100%\"\n\t\t});\n\t\tconst labels = this.labels();\n\t\tconst widgets = this.widgets();\n\t\tif (isActive) this.activeTabIdx(this.widgets().length);\n\t\tlabels.push(label);\n\t\tconst surface = new Surface().widget(widget ? widget : new Text().text(\"No widget defined for tab\"));\n\t\twidgets.push(surface);\n\t\tthis.labels(labels);\n\t\tthis.widgets(widgets);\n\t\tif (callback) callback(surface);\n\t\treturn this;\n\t}\n\twidgetSize(widgetDiv) {\n\t\tconst width = this.clientWidth();\n\t\tlet height = this.clientHeight();\n\t\tconst tcBox = this._tabContainer.node().getBoundingClientRect();\n\t\tif (typeof tcBox.height !== \"undefined\") height -= tcBox.height;\n\t\treturn {\n\t\t\twidth,\n\t\t\theight\n\t\t};\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tthis._tabContainer = element.append(\"div\");\n\t\tthis._contentContainer = element.append(\"div\");\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\tconst context = this;\n\t\telement.style(\"padding\", this.surfacePadding_exists() ? this.surfacePadding() + \"px\" : null);\n\t\tconst tabs = this._tabContainer.selectAll(\".tab-button.id\" + this.id()).data(this.showTabs() ? this.labels() : [], function(d) {\n\t\t\treturn d;\n\t\t});\n\t\ttabs.enter().append(\"span\").attr(\"class\", \"tab-button id\" + this.id()).style(\"cursor\", \"pointer\").on(\"click\", function(d, idx) {\n\t\t\tcontext.click(context.widgets()[idx].widget(), d, idx);\n\t\t\tcontext.activeTabIdx(idx).render();\n\t\t}).merge(tabs).classed(\"active\", function(d, idx) {\n\t\t\treturn context.activeTabIdx() === idx;\n\t\t}).text(function(d) {\n\t\t\treturn d;\n\t\t});\n\t\ttabs.exit().remove();\n\t\tconst content = this._contentContainer.selectAll(\".tab-content.id\" + this.id()).data(this.widgets(), function(d) {\n\t\t\treturn d.id();\n\t\t});\n\t\tcontent.enter().append(\"div\").attr(\"class\", \"tab-content id\" + this.id()).each(function(widget, idx) {\n\t\t\twidget.target(this);\n\t\t}).merge(content).classed(\"active\", function(d, idx) {\n\t\t\treturn context.activeTabIdx() === idx;\n\t\t}).style(\"display\", function(d, idx) {\n\t\t\treturn context.activeTabIdx() === idx ? \"block\" : \"none\";\n\t\t}).each(function(surface, idx) {\n\t\t\tsurface.visible(context.activeTabIdx() === idx);\n\t\t\tif (context.activeTabIdx() === idx) {\n\t\t\t\tconst wSize = context.widgetSize(select(this));\n\t\t\t\tsurface.surfaceBorderWidth(context.showTabs() ? null : 0).surfacePadding(context.showTabs() ? null : 0).resize(wSize);\n\t\t\t}\n\t\t});\n\t\tcontent.exit().each(function(widget, idx) {\n\t\t\twidget.target(null);\n\t\t}).remove();\n\t\tswitch (this.tabLocation()) {\n\t\t\tcase \"bottom\":\n\t\t\t\tthis._tabContainer.attr(\"class\", \"on_bottom\").style(\"top\", this._contentContainer.node().offsetHeight + this.surfacePadding() + \"px\").style(\"position\", \"absolute\");\n\t\t\t\tthis._contentContainer.style(\"top\", this.surfacePadding_exists() ? this.surfacePadding() + \"px\" : null).style(\"position\", \"absolute\");\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis._tabContainer.attr(\"class\", \"on_top\").style(\"top\", null).style(\"position\", \"relative\");\n\t\t\t\tthis._contentContainer.style(\"top\", this._tabContainer.node().offsetHeight + this.surfacePadding() + \"px\").style(\"position\", \"absolute\");\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tclick(widget, column, idx) {}\n};\nTabbed.prototype._class += \" layout_Tabbed\";\nTabbed.prototype.publish(\"showTabs\", true, \"boolean\", \"Show Tabs\", null, {});\nTabbed.prototype.publish(\"surfacePadding\", 4, \"number\", \"Padding\");\nTabbed.prototype.publish(\"activeTabIdx\", 0, \"number\", \"Index of active tab\", null, {});\nTabbed.prototype.publish(\"labels\", [], \"array\", \"Array of tab labels sharing an index with \", null, { tags: [\"Private\"] });\nTabbed.prototype.publish(\"tabLocation\", \"top\", \"set\", \"Position the tabs at the bottom of the widget\", [\"top\", \"bottom\"], { tags: [\"Private\"] });\nTabbed.prototype.publish(\"widgets\", [], \"widgetArray\", \"widgets\", null, { tags: [\"Private\"] });\n\n//#endregion\n//#region src/Toolbar.ts\nvar Toolbar = class extends HTMLWidget {\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\tconst context = this;\n\t\telement.attr(\"title\", context.title()).style(\"background-color\", this.backgroundColor());\n\t\tconst title = element.selectAll(\"div.toolbar-title\").data(this.title() ? [this.title()] : []);\n\t\ttitle.enter().append(\"div\").classed(\"toolbar-title\", true).append(\"span\");\n\t\ttitle.selectAll(\"div.toolbar-title > span\").style(\"font-size\", this.fontSize_exists() ? this.fontSize() + \"px\" : null).style(\"color\", this.fontColor_exists() ? this.fontColor() : null).style(\"font-family\", this.fontFamily_exists() ? this.fontFamily() : null).style(\"font-weight\", this.fontBold_exists() ? this.fontBold() ? \"bold\" : \"normal\" : null).style(\"background-color\", this.backgroundColor_exists() ? this.backgroundColor() : null).text(context.title());\n\t\ttitle.exit().remove();\n\t\tconst childWidgets = element.selectAll(\"div.toolbar-child\").data(this.widgets() !== null ? this.widgets() : [], function(d) {\n\t\t\treturn d.id();\n\t\t});\n\t\tchildWidgets.enter().insert(\"div\", \"div.toolbar-title\").each(function(d, i) {\n\t\t\tconst widgetClass = context.widgetClasses()[i] ? context.widgetClasses()[i] + \" toolbar-child\" : \"toolbar-child\";\n\t\t\tselect(this).classed(widgetClass, true);\n\t\t\td.target(this);\n\t\t});\n\t\tchildWidgets.exit().each(function(d) {\n\t\t\td.target(null);\n\t\t}).remove();\n\t\tchildWidgets.order();\n\t}\n\trender(callback) {\n\t\tconst context = this;\n\t\treturn super.render(function(w) {\n\t\t\tconst toolbarBBox = context.element().node().getBoundingClientRect();\n\t\t\tlet minX = toolbarBBox.left + toolbarBBox.width;\n\t\t\tcontext.element().selectAll(\"div.toolbar-child\").each(function(d, i) {\n\t\t\t\tconst childBBox = this.getBoundingClientRect();\n\t\t\t\tif (minX > childBBox.left) minX = childBBox.left;\n\t\t\t});\n\t\t\tcontext.element().select(\".toolbar-title\").style(\"width\", minX - toolbarBBox.left - 4 + \"px\");\n\t\t\tif (callback) callback(w);\n\t\t});\n\t}\n\texit(domNode, element) {\n\t\tthis.widgets().forEach(function(w) {\n\t\t\tw.target(null);\n\t\t});\n\t\tsuper.exit(domNode, element);\n\t}\n};\nToolbar.prototype._class += \" layout_Toolbar\";\nToolbar.prototype.publish(\"title\", \"\", \"string\", \"Title\", null, { tags: [\"Intermediate\"] });\nToolbar.prototype.publish(\"fontSize\", null, \"number\", \"Title Font Size (px)\", null, {\n\ttags: [\"Advanced\"],\n\toptional: true\n});\nToolbar.prototype.publish(\"fontColor\", null, \"html-color\", \"Title Font Color\", null, {\n\ttags: [\"Advanced\"],\n\toptional: true\n});\nToolbar.prototype.publish(\"fontFamily\", null, \"string\", \"Title Font Family\", null, {\n\ttags: [\"Advanced\"],\n\toptional: true\n});\nToolbar.prototype.publish(\"fontBold\", true, \"boolean\", \"Enable Bold Title Font\", null, {\n\ttags: [\"Advanced\"],\n\toptional: true\n});\nToolbar.prototype.publish(\"backgroundColor\", null, \"html-color\", \"Background Color\", null, {\n\ttags: [\"Intermediate\"],\n\toptional: true\n});\nToolbar.prototype.publish(\"responsive\", true, \"boolean\", \"Adapts to pixel width\", null, { tags: [\"Basic\"] });\nToolbar.prototype.publish(\"widgets\", [], \"widgetArray\", \"Child widgets of the toolbar\", null, { tags: [\"Basic\"] });\nToolbar.prototype.publish(\"widgetClasses\", [], \"array\", \"Array of Html Element classes to be assigned to the child widgets (shares index with widgets param)\", null, { tags: [\"Basic\"] });\n\n//#endregion\n//#region src/VerticalList.ts\nvar VerticalList = class extends FlexGrid {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.orientation_default(\"vertical\");\n\t\tthis.flexWrap_default(\"nowrap\");\n\t}\n};\nVerticalList.prototype._class += \" layout_VerticalList\";\n\n//#endregion\nexport { AbsoluteSurface, Accordion, BUILD_VERSION, Border, Border2, Carousel, Cell, ChartPanel, FlexGrid, Grid, HorizontalList, Layered, Legend, Modal, PKG_NAME, PKG_VERSION, Popup, Surface, Tabbed, Toolbar, VerticalList, WidgetDiv };\n//# sourceMappingURL=index.js.map!function(){try{if(\"undefined\"!=typeof document){var o=document.createElement(\"style\");o.appendChild(document.createTextNode('.layout_AbsoluteSurface{pointer-events:none!important}.layout_AbsoluteSurface>.placeholder{pointer-events:all;position:relative;overflow:hidden}.layout_Accordion>ul{position:relative}.layout_Accordion.open>span{font-style:italic}.layout_Accordion.closed>ul{height:0;overflow:hidden}.layout_Accordion.open>ul{display:block}.layout_Accordion>.collapsible-icon,.layout_Accordion>.collapsible-title{cursor:pointer;box-sizing:border-box}.layout_Accordion>.collapsible-title{color:#fff;width:100%;height:26px;padding:4px 8px;font-size:13px;display:block;box-shadow:inset 0 -1px 1px #0003}.layout_Accordion li{background-color:#fff}.layout_Accordion>ul,.layout_Accordion>.collapsible-title{background-color:#333}.layout_Accordion .layout_Accordion>ul,.layout_Accordion .layout_Accordion>.collapsible-title{background-color:#555}.layout_Accordion .layout_Accordion .layout_Accordion>ul,.layout_Accordion .layout_Accordion .layout_Accordion>.collapsible-title{background-color:#777}.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion>ul,.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion>.collapsible-title{background-color:#999}.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion>ul,.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion>.collapsible-title{background-color:#bbb}.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion>ul,.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion>.collapsible-title{background-color:#ccc}.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion>ul,.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion>.collapsible-title{background-color:#ddd}.layout_Accordion>ul,.layout_Accordion>span{padding-left:0}.layout_Accordion .layout_Accordion>ul,.layout_Accordion .layout_Accordion>span{padding-left:12px}.layout_Accordion>.collapsible-title:before{padding:4px 8px;position:absolute;top:0;left:0}.layout_Accordion>.collapsible-icon{color:#fff;width:24px;height:24px;position:absolute;top:0;right:0}.layout_Surface{box-sizing:border-box;border:1px solid #e5e5e5;width:100%;height:100%;margin:0;overflow:hidden}.layout_Surface.shadow2{box-shadow:0 2px 2px #00000024,0 3px 1px -2px #0003,0 1px 5px #0000001f}.layout_Surface>h3{background-color:#e5e5e5;margin:0;padding:2px}.layout_Surface .html-button-container{position:absolute;top:3px;right:0}.layout_Surface>div{padding:8px}.layout_Surface .html-button-container .surface-button{margin-right:5px}.layout_Surface .html-button-container .surface-button i{opacity:.8}.layout_Surface .html-button-container .surface-button:hover{opacity:1}.layout_Surface .html-button-container .surface-button:active{opacity:.5}div[draggable=true].hideDragCellContent.content-icon:before{content:\"\";font-family:FontAwesome;font-size:100px;position:absolute;top:calc(50% - 74px);left:calc(50% - 56px)}div[draggable=true].hideDragCellContent.content-icon-Line:before{content:\"\"}div[draggable=true].hideDragCellContent.content-icon-Pie:before{content:\"\";top:calc(50% - 72px);left:calc(50% - 45px)}div[draggable=true].hideDragCellContent.content-icon-Area:before{content:\"\"}div[draggable=true].hideDragCellContent.content-icon-Gauge:before{content:\"\"}div[draggable=true].hideDragCellContent.content-icon-Table:before{content:\"\"}div[draggable=true].hideDragCellContent.content-icon-Form:before{content:\"\"}div[draggable=true].hideDragCellContent.content-icon-Grid:before,div[draggable=true].hideDragCellContent.content-icon-Graph:before,div[draggable=true].hideDragCellContent.content-icon-Border:before,div[draggable=true].hideDragCellContent.content-icon-Tabbed:before,div[draggable=true].hideDragCellContent.content-icon-Accordion:before,div[draggable=true].hideDragCellContent.content-icon-MultiChart:before,div[draggable=true].hideDragCellContent.content-icon-MultiChartSurface:before{content:\"\"}div[draggable=true].hideDragCellContent.content-icon-ChoroplethStates:before,div[draggable=true].hideDragCellContent.content-icon-ChoroplethStatesHeat:before,div[draggable=true].hideDragCellContent.content-icon-ChoroplethCounties:before,div[draggable=true].hideDragCellContent.content-icon-ChoroplethCountries:before,div[draggable=true].hideDragCellContent.content-icon-GMap:before,div[draggable=true].hideDragCellContent.content-icon-GMapHeat:before,div[draggable=true].hideDragCellContent.content-icon-GMapGraph:before,div[draggable=true].hideDragCellContent.content-icon-Text:before,div[draggable=true].hideDragCellContent.content-icon-TextBox:before,div[draggable=true].hideDragCellContent.content-icon-FAChar:before{content:\"\"}.layout_Cell .update-indicator{box-sizing:border-box;z-index:1000;pointer-events:none;border-style:solid;border-width:0;padding:0;position:absolute;top:0;left:0}.layout_Border{width:100%;height:100%}.layout_Border>.border-content{width:100%;height:100%;position:relative}.layout_Border>.borderHandle{opacity:.3;visibility:hidden;background-color:#444;width:6px;height:6px;position:absolute}.layout_Border.design-mode>.borderHandle{visibility:visible}.layout_Border>.borderHandle:hover{background-color:#666}.layout_Border>.borderHandle.borderHandleDisabled{display:none}.layout_Border>.borderHandle_top,.layout_Border>.borderHandle_bottom{cursor:ns-resize}.layout_Border>.borderHandle_left,.layout_Border>.borderHandle_right{cursor:ew-resize}.layout_Border .cell{border:1px solid #e5e5e5;border-radius:5px;display:inline-block;overflow:hidden}.layout_Border .cell h2{-webkit-margin:0px;text-align:center;margin:0;padding-top:4px}.layout_Border .layout_BorderCell.over{border:2px dashed #000}.layout_Border .dragItem{z-index:-1;opacity:.33}.layout_Border .notDragItem{z-index:-1;opacity:1}.layout_Border div[draggable=true]{opacity:.75;cursor:default}.layout_Border div[draggable=true] .dragHandle{opacity:1}.layout_Border div[draggable=true] .dragHandle_n,.layout_Border div[draggable=true] .dragHandle_e,.layout_Border div[draggable=true] .dragHandle_s,.layout_Border div[draggable=true] .dragHandle_w{background-color:#aaa}.layout_Border div[draggable=true] .dragHandle_nw,.layout_Border div[draggable=true] .dragHandle_ne,.layout_Border div[draggable=true] .dragHandle_se,.layout_Border div[draggable=true] .dragHandle_sw{background-color:#333}.layout_Border div[draggable=true] .dragHandle_nw{cursor:nw-resize}.layout_Border div[draggable=true] .dragHandle_n{cursor:n-resize}.layout_Border div[draggable=true] .dragHandle_ne{cursor:ne-resize}.layout_Border div[draggable=true] .dragHandle_e{cursor:e-resize}.layout_Border div[draggable=true] .dragHandle_se{cursor:se-resize}.layout_Border div[draggable=true] .dragHandle_s{cursor:s-resize}.layout_Border div[draggable=true] .dragHandle_sw{cursor:sw-resize}.layout_Border div[draggable=true] .dragHandle_w{cursor:w-resize}.layout_Border div[draggable=false]>div>.dragHandle{display:none}.layout_Border .grid-drop-target{box-sizing:border-box;background:repeating-linear-gradient(-45deg,#0000,#0000 4px,#6464641a 4px 8px);border:2px dashed #7f8c8d;border-radius:0;position:fixed}.layout_Border .grid-drop-target.drop-target-over{background:repeating-linear-gradient(-45deg,#0000,#0000 6px,#119bd71a 6px 12px);border:2px dashed #179bd7}.layout_Border2{flex-direction:column;display:flex}.layout_Border2>.body{flex-flow:row;margin:0;padding:0;display:flex}.layout_Border2>.body>.center{flex:1}.layout_Border2>.header,.layout_Border2>.footer{display:block}.layout_Carousel>div{position:relative;overflow:hidden}.layout_Carousel>div>.carouselItem{position:absolute}.layout_Modal-header{background-color:#3f51b5;overflow:hidden}.layout_Modal-body{background-color:#fff;overflow:hidden scroll}.layout_Modal-title,.layout_Modal-annotations{position:absolute}.layout_Modal-closeButton{cursor:pointer}.layout_Modal-closeButton:hover{opacity:.7}.layout_Modal-closeButton:active{opacity:.5}.layout_Modal-fade{opacity:.5;z-index:10000;background-color:#000;position:fixed}.layout_Modal-content{z-index:10100;background-color:#fff;position:fixed}.layout_Modal-fade-hidden{display:none}.layout_Modal-fadeClickable{cursor:pointer}.layout_ChartPanel .series.highlight{stroke-width:2px;opacity:1}.layout_ChartPanel .series.lowlight{opacity:.3!important}.layout_FlexGrid{display:flex}.FlexGrid-list-item{border-style:solid;flex-grow:1;overflow:hidden}.layout_Grid>.ddCell{position:absolute}.layout_Grid>.laneBackground{background:#f5f5f5;border-style:solid;border-width:1px;position:absolute}.layout_Grid>.lane{opacity:.25;pointer-events:none;border-style:none;border-radius:0;position:absolute}.layout_Grid>.ddCell.draggable{cursor:move;background-color:#f8f8ff;border-style:solid;border-width:1px;border-radius:0}.layout_Grid>.ddCell.draggable>.resizeHandle{cursor:nwse-resize;border-style:none;width:8px;height:8px;position:absolute;bottom:0;right:0}.layout_Grid>.ddCell.draggable .resizeHandleDisplay{background-color:none;border:2px solid #a9a9a9;border-width:0 2px 2px 0;width:4px;height:4px;position:absolute;bottom:2px;right:2px}.layout_Grid>.ddCell.draggable .resizeHandleDisplay:hover{border-color:orange}.layout_Grid>.dragging{background:repeating-linear-gradient(-45deg,#0000,#0000 4px,#6464641a 4px 8px);border:1px solid gray;border-radius:0;position:absolute}.layout_Grid>.resizing{opacity:.3;background:repeating-linear-gradient(-45deg,#0000,#0000 4px,orange 4px 8px);border:1px solid gray;border-radius:0;position:absolute}.layout_Grid>.ddCell.draggable .common_Widget.selected{background:repeating-linear-gradient(-45deg,#0000,#0000 4px,#6400001a 4px 8px);border:1px solid red;border-radius:0;position:absolute}.layout_Grid #drag-me:before{content:\"#\" attr(id);font-weight:700}.layout_Layered{pointer-events:none}.layout_Layered>.container>.content{position:absolute}.layout_Layered>.container>.content>div>.common_Widget,.layout_Layered>.container>.content>div>svg>.common_Widget{pointer-events:all}.layout_Tabbed .tab-button{background-color:#ccc;border-top:1px solid #ddd;border-left:1px solid #ddd;border-right:1px solid #ddd;margin-right:4px;padding:2px 2px 4px;display:inline-block;position:relative;top:1px}.layout_Tabbed .tab-button.active{z-index:999;background-color:#fff}.layout_Tabbed .on_bottom .tab-button{border-top:none;border-bottom:1px solid #ddd;top:-1px}.layout_Toolbar{white-space:nowrap;background-color:#ddd;height:100%;overflow:hidden}.layout_Toolbar .toolbar-title{text-overflow:ellipsis;white-space:nowrap;margin-left:4px;font-weight:700;display:inline-block;position:relative;top:50%;overflow:hidden;transform:translateY(-50%)}.layout_Toolbar .toolbar-child{float:right;margin-left:4px;margin-right:4px;line-height:16px;position:relative;top:50%;transform:translateY(-50%)}\\n/*$vite$:1*/')),document.head.appendChild(o)}}catch(e){console.error(\"vite-plugin-css-injected-by-js\",e)}}();","import { Utility } from \"@hpcc-js/common\";\n\ndeclare const require: any;\nexport function requireWidget(classID) {\n return new Promise(function (resolve, _reject) {\n const parsedClassID = Utility.parseClassID(classID);\n if (require) {\n require([parsedClassID.package], function (Package) {\n let Widget = null;\n if (Package && Package[parsedClassID.widgetID]) {\n Widget = Package[parsedClassID.widgetID];\n }\n resolve(parsedClassID.memberWidgetID ? (Widget.prototype ? Widget.prototype[parsedClassID.memberWidgetID] : Widget[parsedClassID.memberWidgetID]) : Widget);\n });\n }\n });\n}\n\nexport function requireWidgets(classIDs) {\n return Promise.all(classIDs.map(requireWidget));\n}\n","import { IGraph, INDChart } from \"@hpcc-js/api\";\nimport { Database, HTMLWidget, Utility, Widget } from \"@hpcc-js/common\";\nimport { map as d3Map } from \"d3-collection\";\nimport { requireWidget } from \"./Utility.ts\";\n\ndeclare const require: any;\nexport class MultiChart extends HTMLWidget {\n _allCharts = {};\n _chartTypeDefaults;\n _chartTypeProperties;\n _chartMonitor;\n _switchingTo;\n\n constructor() {\n super();\n INDChart.call(this);\n IGraph.call(this);\n\n this._tag = \"div\";\n\n this._allCharts = {};\n this._allChartTypes.forEach(function (item) {\n const newItem = JSON.parse(JSON.stringify(item));\n newItem.widget = null;\n this._allCharts[item.id] = newItem;\n this._allCharts[item.display] = newItem;\n this._allCharts[item.widgetClass] = newItem;\n }, this);\n this._chartTypeDefaults = {};\n this._chartTypeProperties = {};\n }\n\n fields(): Database.Field[];\n fields(_: Database.Field[]): this;\n fields(_?: Database.Field[]): Database.Field[] | this {\n const retVal = super.fields.apply(this, arguments);\n if (this.chart()) {\n if (!arguments.length) return this.chart().fields();\n this.chart().fields(_);\n }\n return retVal;\n }\n\n columns(): string[];\n columns(_, asDefault?: boolean): this;\n columns(_?, asDefault?: boolean) {\n const retVal = HTMLWidget.prototype.columns.apply(this, arguments);\n if (this.chart()) {\n if (!arguments.length) return this.chart().columns();\n this.chart().columns(_, asDefault);\n }\n return retVal;\n }\n\n data(_?) {\n const retVal = HTMLWidget.prototype.data.apply(this, arguments);\n if (this.chart()) {\n if (!arguments.length) return this.chart().data();\n this.chart().data(_);\n }\n return retVal;\n }\n\n hasOverlay() {\n return this.chart() && this.chart().hasOverlay();\n }\n\n visible(): boolean;\n visible(_: boolean): this;\n visible(_?: boolean): boolean | this {\n if (!arguments.length) return this.chart() && this.chart().visible();\n if (this.chart()) {\n this.chart().visible(_);\n }\n return this;\n }\n\n chartTypeDefaults(): object;\n chartTypeDefaults(_: object): this;\n chartTypeDefaults(_?: object): object | this {\n if (!arguments.length) return this._chartTypeDefaults;\n this._chartTypeDefaults = _;\n return this;\n }\n\n chartTypeProperties(): object;\n chartTypeProperties(_: object): this;\n chartTypeProperties(_?: object): object | this {\n if (!arguments.length) return this._chartTypeProperties;\n this._chartTypeProperties = _;\n return this;\n }\n\n getChartDataFamily() {\n return this._allCharts[this.chartType()].family;\n }\n\n requireContent(chartType, callback) {\n const classInfo = Utility.parseClassID(this._allCharts[chartType].widgetClass);\n switch (classInfo.package) {\n case \"@hpcc-js/chart\":\n import(\"@hpcc-js/chart\").then(mod => {\n callback(new mod[classInfo.widgetID]());\n });\n break;\n case \"@hpcc-js/dgrid\":\n import(\"@hpcc-js/dgrid\").then(mod => {\n callback(new mod[classInfo.widgetID]());\n });\n break;\n default:\n requireWidget(this._allCharts[chartType].widgetClass).then(function (WidgetClass: any) {\n callback(new WidgetClass());\n });\n }\n }\n\n switchChart(callback) {\n if (this._switchingTo === this.chartType()) {\n if (callback) {\n callback(this);\n }\n return;\n } else if (this._switchingTo) {\n console.warn(\"Attempting switch to: \" + this.chartType() + \", before previous switch is complete (\" + this._switchingTo + \")\");\n }\n this._switchingTo = this.chartType();\n const oldContent = this.chart();\n const context = this;\n this.requireContent(this.chartType(), function (newContent) {\n if (newContent !== oldContent) {\n const size = context.size();\n newContent\n .fields(context.fields())\n .data(context.data())\n .size(size)\n ;\n\n context.chart(newContent);\n if (oldContent) {\n oldContent\n .size({ width: 1, height: 1 })\n .render()\n ;\n }\n }\n delete context._switchingTo;\n if (callback) {\n callback(this);\n }\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const content = element.selectAll(\".multiChart\").data(this.chart() ? [this.chart()] : [], function (d) { return d._id; });\n content.enter().append(\"div\")\n .attr(\"class\", \"multiChart\")\n .each(function (d) {\n d.target(this);\n })\n ;\n\n const currChart = this.chart();\n if (currChart) {\n for (const key in this._chartTypeDefaults) {\n if (currChart[key + \"_default\"]) {\n try {\n currChart[key + \"_default\"](this._chartTypeDefaults[key]);\n } catch (e) {\n console.warn(\"Exception Setting Default: \" + key);\n }\n } else {\n console.warn(\"Unknown Default: \" + key);\n }\n }\n this._chartTypeDefaults = {};\n for (const propKey in this._chartTypeProperties) {\n if (currChart[propKey]) {\n try {\n currChart[propKey](this._chartTypeProperties[propKey]);\n } catch (e) {\n console.warn(\"Exception Setting Property: \" + propKey);\n }\n } else {\n console.warn(\"Unknown Property: \" + propKey);\n }\n }\n this._chartTypeProperties = {};\n }\n\n const context = this;\n content\n .each(function (d) { d.resize(context.size()); })\n ;\n\n content.exit().transition()\n .each(function (d) { d.target(null); })\n .remove()\n ;\n }\n\n exit(domNode, element) {\n if (this._chartMonitor) {\n this._chartMonitor.remove();\n delete this._chartMonitor;\n }\n if (this.chart()) {\n this.chart().target(null);\n }\n super.exit(domNode, element);\n }\n\n render(_callback?) {\n if (this.chartType() && (!this.chart() || (this.chart().classID() !== this._allCharts[this.chartType()].widgetClass))) {\n const context = this;\n const args = arguments;\n this.switchChart(function () {\n HTMLWidget.prototype.render.apply(context, args);\n });\n return this;\n }\n return HTMLWidget.prototype.render.apply(this, arguments);\n }\n}\nMultiChart.prototype._class += \" composite_MultiChart\";\nMultiChart.prototype.implements(INDChart.prototype);\nMultiChart.prototype.implements(IGraph.prototype);\nexport interface ChartMeta {\n id: string;\n display: string;\n widgetClass: string;\n widgetPath?: string;\n}\nexport interface MultiChart {\n _otherChartTypes: ChartMeta[];\n _graphChartTypes: ChartMeta[];\n _1DChartTypes: ChartMeta[];\n _2DChartTypes: ChartMeta[];\n _NDChartTypes: ChartMeta[];\n _mapChartTypes: ChartMeta[];\n _anyChartTypes: ChartMeta[];\n _allChartTypes: ChartMeta[];\n _allMap;\n _allFamilies: string[];\n _allChartTypesMap;\n _allChartTypesByClass;\n\n hideRowOnLegendClick(): boolean;\n hideRowOnLegendClick(_: boolean): this;\n chartType(): string;\n chartType(_: string): this;\n chart(): Widget;\n chart(_: Widget): this;\n chart_access(): Widget;\n chart_access(_: Widget): this;\n\n click(_row, _column, _selected): void;\n dblclick(_row, _column, _selected): void;\n vertex_click(row, column, selected, more): void;\n vertex_dblclick(row, column, selected, more): void;\n edge_click(row, column, selected, more): void;\n edge_dblclick(row, column, selected, more): void;\n}\n\nMultiChart.prototype._otherChartTypes = [\n { id: \"FORM\", display: \"Form\", widgetClass: \"form_FieldForm\" }\n].map(function (item: any) { item.family = \"other\"; return item; });\nMultiChart.prototype._graphChartTypes = [\n { id: \"GRAPH\", display: \"Graph\", widgetClass: \"graph_Graph\" },\n { id: \"ADJACENCY_GRAPH\", display: \"Graph\", widgetClass: \"graph_AdjacencyGraph\" },\n { id: \"GRAPHC\", display: \"GraphC\", widgetClass: \"graph_GraphC\" }\n].map(function (item: any) { item.family = \"GRAPH\"; return item; });\nMultiChart.prototype._1DChartTypes = [\n].map(function (item: any) { item.family = \"1D\"; return item; });\nMultiChart.prototype._2DChartTypes = [\n { id: \"SUMMARY\", display: \"Summary\", widgetClass: \"chart_Summary\" },\n { id: \"BUBBLE\", display: \"Bubble\", widgetClass: \"chart_Bubble\" },\n { id: \"PIE\", display: \"Pie\", widgetClass: \"chart_Pie\" },\n { id: \"WORD_CLOUD\", display: \"Word Cloud\", widgetClass: \"other_WordCloud\" }\n].map(function (item: any) { item.family = \"2D\"; return item; });\nMultiChart.prototype._NDChartTypes = [\n { id: \"COLUMN\", display: \"Column\", widgetClass: \"chart_Column\" },\n { id: \"BAR\", display: \"Bar\", widgetClass: \"chart_Bar\" },\n { id: \"LINE\", display: \"Line\", widgetClass: \"chart_Line\" },\n { id: \"AREA\", display: \"Area\", widgetClass: \"chart_Area\" },\n { id: \"STEP\", display: \"Step\", widgetClass: \"chart_Step\" },\n { id: \"SCATTER\", display: \"Scatter\", widgetClass: \"chart_Scatter\" },\n { id: \"HEXBIN\", display: \"Hex Bin\", widgetClass: \"chart_HexBin\" }\n].map(function (item: any) { item.family = \"ND\"; return item; });\nMultiChart.prototype._mapChartTypes = [\n { id: \"CHORO_USSTATES\", display: \"US State Choropleth\", widgetClass: \"map_ChoroplethStates\" },\n { id: \"CHORO_USCOUNTIES\", display: \"US County Choropleth\", widgetClass: \"map_ChoroplethCounties\" },\n { id: \"CHORO_COUNTRIES\", display: \"Country Choropleth\", widgetClass: \"map_ChoroplethCountries\" },\n { id: \"GMAP_CHORO_USCOUNTIES\", display: \"Google Map US County Choropleth\", widgetClass: \"map_GMapCounties\" },\n { id: \"GOOGLE_MAP\", display: \"Google Map\", widgetClass: \"map_GMapLayered\" },\n { id: \"OPENSTREET\", display: \"Open Street Map\", widgetClass: \"map_OpenStreet\" }\n].map(function (item: any) { item.family = \"map\"; return item; });\nMultiChart.prototype._anyChartTypes = [\n { id: \"TABLE\", display: \"Table\", widgetClass: \"dgrid_Table\" },\n { id: \"TABLE_LEGACY\", display: \"Table (legacy)\", widgetClass: \"other_Table\" },\n { id: \"TABLE_NESTED\", display: \"Nested Table\", widgetClass: \"other_NestedTable\" },\n { id: \"TABLE_CALENDAR\", display: \"Table driven Calendar Heat Map\", widgetClass: \"other_CalendarHeatMap\" },\n { id: \"TABLE_BULLET\", display: \"Table driven bullet chart\", widgetClass: \"chart_Bullet\" },\n { id: \"TABLE_SELECT\", display: \"Table driven select\", widgetClass: \"other_Select\" },\n { id: \"TABLE_AUTOCOMPLETE\", display: \"Table driven auto complete\", widgetClass: \"other_AutoCompleteText\" },\n { id: \"TABLE_OPPORTUNITY\", display: \"Table driven opportunity widget\", widgetClass: \"graph_Opportunity\" },\n { id: \"TABLE_TREE\", display: \"Table driven tree\", widgetClass: \"tree_Dendrogram\" },\n { id: \"TABLE_TREEMAP\", display: \"Table driven Treemap\", widgetClass: \"tree_Treemap\" },\n { id: \"TABLE_SANKEY\", display: \"Table driven Sankey\", widgetClass: \"graph_Sankey\" },\n { id: \"TABLE_GMAP_PIN\", display: \"Table driven Google Map (pins)\", widgetClass: \"map_GMapPin\" },\n { id: \"TABLE_GMAP_PINLINE\", display: \"Table driven Google Map (pins/lines)\", widgetClass: \"map_GMapPinLine\" },\n { id: \"TABLE_XML_TREE\", display: \"Table driven XML Tree\", widgetClass: \"tree_Indented\" }\n].map(function (item: any) { item.family = \"any\"; return item; });\nMultiChart.prototype._allChartTypes =\n MultiChart.prototype._otherChartTypes.concat(\n MultiChart.prototype._graphChartTypes.concat(\n MultiChart.prototype._1DChartTypes.concat(\n MultiChart.prototype._2DChartTypes.concat(\n MultiChart.prototype._NDChartTypes.concat(\n MultiChart.prototype._mapChartTypes.concat(\n MultiChart.prototype._anyChartTypes\n ))))));\nMultiChart.prototype._allMap = d3Map(MultiChart.prototype._allChartTypes, function (item: any) { return item.family; });\nMultiChart.prototype._allFamilies = MultiChart.prototype._allMap.keys();\nMultiChart.prototype._allChartTypesMap = {};\nMultiChart.prototype._allChartTypesByClass = {};\nMultiChart.prototype._allChartTypes.forEach(function (item) {\n item.widgetPath = Utility.widgetPath(item.widgetClass);\n MultiChart.prototype._allChartTypesMap[item.id] = item;\n MultiChart.prototype._allChartTypesByClass[item.widgetClass] = item;\n});\n\nMultiChart.prototype.publishReset();\nMultiChart.prototype.publish(\"hideRowOnLegendClick\", false, \"boolean\", \"Enable/Disable hiding row on legend clicks\", null, { tags: [\"Basic\"] });\nMultiChart.prototype.publish(\"chartType\", \"BUBBLE\", \"set\", \"Chart Type\", MultiChart.prototype._allChartTypes.map(function (item) { return item.id; }), { tags: [\"Basic\"] });\nMultiChart.prototype.publish(\"chart\", null, \"widget\", \"Chart\", null, { tags: [\"Basic\"] });\n\nconst _origChart = MultiChart.prototype.chart;\nMultiChart.prototype.chart = function (_?) {\n const retVal = _origChart.apply(this, arguments);\n if (arguments.length) {\n const context = this;\n if (this._allChartTypesByClass[_.classID()]) {\n this.chartType(this._allChartTypesByClass[_.classID()].id);\n } else {\n console.warn(\"Unknown Class ID: \" + _.classID());\n }\n _.click = function (_row, _column, _selected) {\n context.click.apply(context, arguments);\n };\n _.dblclick = function (_row, _column, _selected) {\n context.dblclick.apply(context, arguments);\n };\n _.vertex_click = function (row, column, selected, more) {\n context.vertex_click.apply(context, arguments);\n };\n _.vertex_dblclick = function (row, column, selected, more) {\n context.vertex_dblclick.apply(context, arguments);\n };\n _.edge_click = function (row, column, selected, more) {\n context.edge_click.apply(context, arguments);\n };\n _.edge_dblclick = function (row, column, selected, more) {\n context.edge_dblclick.apply(context, arguments);\n };\n if (this._chartMonitor) {\n this._chartMonitor.remove();\n delete this._chartMonitor;\n }\n this._chartMonitor = _.monitor(function (key, newVal, oldVal) {\n context.broadcast(key, newVal, oldVal, _);\n });\n }\n return retVal;\n};\n","import { HTMLWidget, Widget } from \"@hpcc-js/common\";\nimport { ChartPanel } from \"@hpcc-js/layout\";\nimport { MultiChart } from \"./MultiChart.ts\";\n\nimport \"../src/ChartPanel.css\";\n\nclass Summary extends HTMLWidget {\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n element.append(\"p\");\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n element.select(\"p\").text(this.text());\n }\n}\ninterface Summary {\n text(): string;\n text(_: string): this;\n}\nSummary.prototype.publish(\"text\", \"\", \"string\");\n\nexport class MultiChartPanel extends ChartPanel<MultiChart> {\n\n constructor() {\n super();\n this.widget(new MultiChart().chartType(\"COLUMN\"));\n }\n\n multiChart(): MultiChart {\n return this._widget;\n }\n\n chartType(): string;\n chartType(_: string): this;\n chartType(_?: string): string | this {\n if (!arguments.length) return this._widget.chartType();\n this._widget.chartType(_);\n return this;\n }\n\n chart(): Widget;\n chart(_: Widget): this;\n chart(_?: Widget): Widget | this {\n if (!arguments.length) return this._widget.chart();\n this._widget.chart(_);\n return this;\n }\n\n chartTypeDefaults(): object;\n chartTypeDefaults(_: object): this;\n chartTypeDefaults(_?: object): this | object {\n if (!arguments.length) return this._widget.chartTypeDefaults();\n this._widget.chartTypeDefaults(_);\n return this;\n }\n\n chartTypeProperties(): object;\n chartTypeProperties(_: object): this;\n chartTypeProperties(_?: object): this | object {\n if (!arguments.length) return this._widget.chartTypeProperties();\n this._widget.chartTypeProperties(_);\n return this;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n if (this._widget instanceof MultiChart) {\n this._legend.dataFamily(this._widget.getChartDataFamily());\n }\n super.update(domNode, element);\n }\n}\nMultiChartPanel.prototype._class += \" composite_MultiChartPanel\";\n","import { OnOff } from \"@hpcc-js/form\";\nimport { Border, Toolbar } from \"@hpcc-js/layout\";\nimport { PropertyEditor } from \"@hpcc-js/other\";\n\nimport \"../src/Dermatology.css\";\n\nexport class Dermatology extends Border {\n _toolbar;\n _propEditor;\n _showProperties;\n _propsButton;\n _prevWidget;\n\n constructor() {\n super();\n\n this._toolbar = new Toolbar()\n .title(\"Dermatology\")\n ;\n this._propEditor = new PropertyEditor()\n .show_settings(true)\n ;\n }\n\n showProperties(_?) {\n if (!arguments.length) return this._showProperties;\n this._showProperties = _;\n this\n .rightPercentage(0)\n .rightSize(this._showProperties ? 360 : 0)\n .setContent(\"right\", this._showProperties ? this._propEditor : null)\n ;\n const widget = this.widget();\n if (widget && widget.designMode) {\n widget.designMode(this._showProperties);\n }\n return this;\n }\n\n toggleProperties() {\n return this.showProperties(!this.showProperties());\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this\n .topPercentage(0)\n .topSize(0)\n .setContent(\"top\", this._toolbar)\n ;\n this.getCell(\"top\").surfaceShadow(true);\n\n const context = this;\n this._propsButton = new OnOff()\n .id(this.id() + \"_props\")\n .value(\"Properties\")\n .on(\"click\", function () {\n context\n .toggleProperties()\n .render()\n ;\n })\n ;\n this._toolbar.widgets([this._propsButton]);\n }\n\n update(domNode, element) {\n this\n .topPercentage(0)\n .topSize(this.showToolbar() ? 32 : 0)\n ;\n\n super.update(domNode, element);\n\n const widget = this.widget();\n element.style(\"background-color\", widget && widget.surfaceShadow ? null : \"white\");\n }\n\n render(callback) {\n const widget = this.widget();\n if (widget !== this._prevWidget) {\n if (widget && widget.surfaceShadow) {\n widget.surfaceBackgroundColor_default(\"white\");\n }\n this.setContent(\"center\", widget);\n this._propEditor.widget(widget);\n this._prevWidget = widget;\n }\n return super.render(callback);\n }\n\n showToolbar: { (): boolean; (_: boolean): Dermatology };\n showToolbar_exists: () => boolean;\n widget: { (): any; (_: any): Dermatology };\n widget_exists: () => boolean;\n}\nDermatology.prototype._class += \" composite_Dermatology\";\n\nDermatology.prototype.publish(\"showToolbar\", true, \"boolean\", \"Show Toolbar\");\nDermatology.prototype.publish(\"widget\", null, \"widget\", \"Widget\");\n","import { Database, Text, Utility } from \"@hpcc-js/common\";\nimport { Button, Input, Select } from \"@hpcc-js/form\";\nimport { Border, Grid, Toolbar } from \"@hpcc-js/layout\";\nimport { Html, Legend } from \"@hpcc-js/other\";\nimport { select as d3Select } from \"d3-selection\";\nimport \"d3-transition\";\nimport { MultiChart } from \"./MultiChart.ts\";\n\nimport \"../src/MegaChart.css\";\n\nexport class MegaChart extends Border {\n _chart = new MultiChart();\n _toolbar = new Toolbar();\n _valueTitle = new Text();\n _domainTitle = new Text();\n _legend: Legend = new Legend();\n _csvButton;\n _infoButton;\n _maximizeButton;\n _legendButton;\n _chartTypeSelect;\n _prevLegendPosition;\n _prevShowToolbar;\n _1DChartTypes;\n _2DChartTypes;\n _NDChartTypes;\n _anyChartTypes;\n _allChartTypes;\n _contentClasses;\n _dataCount;\n\n constructor() {\n super();\n this._tag = \"div\";\n const context = this;\n this._chart.click = function () {\n context.click.apply(context, arguments);\n };\n this._chart.dblclick = function () {\n context.dblclick.apply(context, arguments);\n };\n this._chart.vertex_click = function () {\n context.vertex_click.apply(context, arguments);\n };\n this._chart.vertex_dblclick = function () {\n context.vertex_dblclick.apply(context, arguments);\n };\n this._chart.edge_click = function () {\n context.edge_click.apply(context, arguments);\n };\n this._chart.edge_dblclick = function () {\n context.edge_dblclick.apply(context, arguments);\n };\n }\n\n toolbarWidgets(_?) {\n if (!arguments.length) return this._toolbar.widgets();\n this._toolbar.widgets(_);\n return this;\n }\n\n chartTypeDefaults(_?) {\n if (!arguments.length) return this._chart.chartTypeDefaults();\n this._chart.chartTypeDefaults(_);\n return this;\n }\n\n chartTypeProperties(_?) {\n if (!arguments.length) return this._chart.chartTypeProperties();\n this._chart.chartTypeProperties(_);\n return this;\n }\n\n fields(): Database.Field[];\n fields(_: Database.Field[]): this;\n fields(_?: Database.Field[]): Database.Field[] | this {\n if (!arguments.length) return this._chart.fields();\n this._chart.fields(_);\n return this;\n }\n\n columns(): string[];\n columns(_: string[], asDefault?: boolean): this;\n columns(_?: string[], asDefault?: boolean): string[] | this {\n if (!arguments.length) return this._chart.columns();\n this._chart.columns(_, asDefault);\n return this;\n }\n\n data(_?) {\n if (!arguments.length) return this._chart.data();\n this._chart.data(_);\n return this;\n }\n\n downloadCSV() {\n Utility.downloadString(\"CSV\", this._chart.export(\"CSV\"));\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n\n this.topShrinkWrap(false).topPercentage(0).topSize(30);\n this._dataCount = new Html()\n .classed({ \"composite_MegaChart-dataCount\": true })\n .id(this.id() + \"_dataCount\")\n .html('<span class=\"MegaChart-dataCount-label\">Count:</span> <span class=\"MegaChart-dataCount-value\">' + (this.data() ? this.data().length : \"0\") + \"</span>\")\n .overflowX(\"visible\")\n .overflowY(\"visible\")\n ;\n\n this._csvButton = new Button()\n .classed({ \"composite_MegaChart-CSV\": true })\n .id(this.id() + \"_csv\")\n .value(\"CSV\")\n ;\n this._csvButton.click = function (a) {\n context.downloadCSV();\n };\n\n this._infoButton = new Button()\n .classed({ \"composite_MegaChart-Info\": true })\n .id(this.id() + \"_info\")\n .value(this.infoIcon())\n ;\n\n this._maximizeButton = new Button()\n .classed({ \"composite_MegaChart-Maximize\": true })\n .id(this.id() + \"_maximize\")\n .value(\"\\uf2d0\")\n ;\n this._maximizeButton.click = function (buttonWidget) {\n const target = context.target() as any;\n let node = target;\n const isMaximized = d3Select(target).classed(\"__hpccisMaximized\");\n\n // Find the layout_Grid ancestor\n const parentGrid = context.locateAncestor(\"layout_Grid\");\n if (parentGrid) {\n node = parentGrid.element().node();\n } else {\n node = document.body;\n }\n\n const targetElement = d3Select(context.target()) as any;\n if (isMaximized) {\n // Restore from maximized to natural size/position\n const targetParentBox = target.parentElement.getBoundingClientRect();\n const targetPaddingTop = parseInt(getComputedStyle(target, null).getPropertyValue(\"padding-top\").replace(\"px\", \"\"));\n const targetPaddingLeft = parseInt(getComputedStyle(target, null).getPropertyValue(\"padding-left\").replace(\"px\", \"\"));\n const targetPaddingRight = parseInt(getComputedStyle(target, null).getPropertyValue(\"padding-right\").replace(\"px\", \"\"));\n const targetPaddingBottom = parseInt(getComputedStyle(target, null).getPropertyValue(\"padding-bottom\").replace(\"px\", \"\"));\n context.contentDiv.style(\"opacity\", 0).transition(100);\n targetElement.transition()// .duration(3000)\n .style(\"top\", targetParentBox.top + \"px\")\n .style(\"left\", targetParentBox.left + \"px\")\n .style(\"width\", (targetParentBox.width - targetPaddingLeft - targetPaddingRight) + \"px\")\n .style(\"height\", (targetParentBox.height - targetPaddingTop - targetPaddingBottom) + \"px\")\n .each(\"end\", function () {\n targetElement.style(\"position\", target.__old_position);\n targetElement.style(\"z-index\", target.__old_zindex);\n targetElement.style(\"background-color\", target.__old_backgroundColor);\n targetElement.style(\"box-shadow\", target.__old_boxshadow);\n context\n .resize({\n width: targetParentBox.width - targetPaddingLeft - targetPaddingRight,\n height: targetParentBox.height - targetPaddingTop - targetPaddingBottom\n })\n .render(function () {\n context.contentDiv.transition()\n .style(\"opacity\", 1);\n });\n buttonWidget.value(\"\\uf2d0\").render();\n });\n } else {\n // Maximize this MegaChart\n target.__old_position = target.style.position;\n target.__old_zindex = target.style.zIndex;\n target.__old_boxshadow = target.style.boxShadow;\n target.__old_backgroundColor = context.element().style(\"background-color\");\n const grid = d3Select(node).datum() as Grid;\n const gridTarget = grid.target();\n const gridBox = grid ? gridTarget.getBoundingClientRect() : node.getBoundingClientRect();\n const gridPaddingTop = parseInt(getComputedStyle(gridTarget, null).getPropertyValue(\"padding-top\").replace(\"px\", \"\"));\n const gridPaddingLeft = parseInt(getComputedStyle(gridTarget, null).getPropertyValue(\"padding-left\").replace(\"px\", \"\"));\n const gridPaddingRight = parseInt(getComputedStyle(gridTarget, null).getPropertyValue(\"padding-right\").replace(\"px\", \"\"));\n const gridPaddingBottom = parseInt(getComputedStyle(gridTarget, null).getPropertyValue(\"padding-bottom\").replace(\"px\", \"\"));\n context.contentDiv.style(\"opacity\", 0).transition(100);\n targetElement\n .style(\"position\", \"fixed\")\n .style(\"z-index\", 999999)\n .style(\"box-shadow\", \"0 8px 8px 0 rgba(0,0,0,.14),0 12px 4px -8px rgba(0,0,0,.2),0 4px 20px 0 rgba(0,0,0,.12)\")\n .style(\"background-color\", target.__old_backgroundColor)\n .transition()// .duration(3000)\n .style(\"top\", (gridBox.top + gridPaddingTop) + \"px\")\n .style(\"left\", (gridBox.left + gridPaddingLeft) + \"px\")\n .style(\"width\", (gridBox.width - gridPaddingLeft - gridPaddingRight) + \"px\")\n .style(\"height\", (gridBox.height - gridPaddingTop - gridPaddingBottom) + \"px\")\n .each(\"end\", function () {\n targetElement.style(\"background-color\", context.maximizedBackgroundColor());\n context\n .resize({\n width: (gridBox.width - gridPaddingLeft - gridPaddingRight),\n height: (gridBox.height - gridPaddingTop - gridPaddingBottom)\n })\n .render(function () {\n context.contentDiv.transition()\n .style(\"opacity\", 1);\n });\n buttonWidget.value(\"\\uf2d1\").render();\n });\n }\n\n d3Select(target).classed(\"__hpccisMaximized\", !isMaximized);\n };\n\n this._legendButton = new Input()\n .classed({ \"composite_MegaChart-legend\": true })\n .id(this.id() + \"_legend\")\n .type(\"checkbox\")\n .inlineLabel(\"Legend: \")\n ;\n this._legendButton.click = function (a) {\n context.render();\n };\n\n this._chartTypeSelect = new Select()\n .classed({ \"composite_MegaChart-chartType\": true })\n .id(this.id() + \"_chartType\")\n .selectOptions(this._allChartTypes.map(function (a) { return [a.id, a.display]; }))\n .value(this.chartType())\n ;\n this._chartTypeSelect.change = function (a) {\n context.chartType(a.value()).render();\n };\n\n this.setContent(\"center\", this._chart);\n\n this._legend\n .targetWidget(this._chart)\n .orientation([\"top\", \"bottom\"].indexOf(this.legendPosition()) !== -1 ? \"horizontal\" : \"vertical\")\n .fixedSize(true)\n ;\n\n this._prevLegendPosition = this.legendPosition();\n\n if (this.valueAxisTitle()) {\n this.setContent(\"left\", this._valueTitle.rotation(-90)).leftShrinkWrap(true);\n }\n if (this.domainAxisTitle()) {\n this.setContent(\"bottom\", this._domainTitle).bottomShrinkWrap(true);\n }\n\n if (this.legendPosition() !== \"none\") {\n this.setContent(this.legendPosition(), this._legend)[this.legendPosition() + \"ShrinkWrap\"](true);\n }\n }\n\n update(domNode, element) {\n function showHideButton(twArr2, button, show) {\n if (show && twArr2.indexOf(button) === -1) {\n twArr2.push(button);\n } else if (!show) {\n const idx = twArr2.indexOf(button);\n if (idx >= 0) {\n twArr2.splice(idx, 1);\n }\n }\n }\n\n if (this._chart && typeof this._chart.hideRowOnLegendClick === \"function\") {\n this._chart.hideRowOnLegendClick(this.hideRowOnLegendClick());\n }\n\n this._dataCount.html('<span class=\"MegaChart-dataCount-label\">Count:</span> <span class=\"MegaChart-dataCount-value\">' + (this.data() ? this.data().length : \"0\") + \"</span>\");\n\n this._chartTypeSelect.value(this.chartType());\n const twArr = this.toolbarWidgets();\n showHideButton(twArr, this._csvButton, this.showCSV());\n showHideButton(twArr, this._maximizeButton, this.showMaximize());\n showHideButton(twArr, this._legendButton, this.toolbarShowLegend());\n showHideButton(twArr, this._chartTypeSelect, this.showChartSelect());\n showHideButton(twArr, this._infoButton, this.showInfoButton());\n showHideButton(twArr, this._dataCount, this.showCount());\n this.toolbarWidgets(twArr);\n\n if (this._prevShowToolbar !== this.showToolbar()) {\n this.setContent(\"top\", this.showToolbar() ? this._toolbar : null);\n this._prevShowToolbar = this.showToolbar();\n }\n\n // TODO: Proxy + themes not working...\n this._toolbar\n .fontSize(this.titleFontSize())\n .fontColor(this.titleFontColor())\n .fontFamily(this.titleFontFamily())\n .fontBold(this.titleFontBold())\n .backgroundColor(this.titleBackgroundColor())\n ;\n\n this._chart\n .data(this.data());\n\n if (this._chart.chartType() !== this.chartType()) {\n this._chart.chartType(this.chartType());\n }\n\n let legendPosition = this.legendPosition();\n if (this.toolbarShowLegend() && !this._legendButton.checked()) {\n legendPosition = \"none\";\n }\n if (this._prevLegendPosition !== legendPosition) {\n if (this._prevLegendPosition !== \"none\") {\n this.clearContent(this._prevLegendPosition);\n }\n this._prevLegendPosition = legendPosition;\n if (legendPosition !== \"none\") {\n this._legend = new Legend().targetWidget(this.getContent(\"center\").fixedSize(true));\n this.setContent(legendPosition, this._legend);\n this._legend.orientation([\"top\", \"bottom\"].indexOf(legendPosition) !== -1 ? \"horizontal\" : \"vertical\");\n }\n }\n this._contentClasses = this.getContentClasses();\n\n if (this.valueAxisTitle() && this._contentClasses.left !== \"common_Text\") {\n if (legendPosition !== \"left\") {\n this.setContent(\"left\", this._valueTitle.rotation(-90));\n }\n }\n if (this.domainAxisTitle() && this._contentClasses.bottom !== \"common_Text\") {\n if (legendPosition !== \"bottom\") {\n this.setContent(\"bottom\", this._domainTitle).bottomShrinkWrap(true);\n }\n }\n\n this._legend.dataFamily(this._chart.getChartDataFamily());\n\n super.update(domNode, element);\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n getContentClasses() {\n const obj: any = {};\n const t = this.getContent(\"top\");\n const r = this.getContent(\"right\");\n const b = this.getContent(\"bottom\");\n const l = this.getContent(\"left\");\n obj.top = t !== null ? t.classID() : undefined;\n obj.right = r !== null ? r.classID() : undefined;\n obj.bottom = b !== null ? b.classID() : undefined;\n obj.left = l !== null ? l.classID() : undefined;\n return obj;\n }\n\n serializeState() {\n const state: any = {\n title: this.title(),\n data: this.data()\n };\n const chart = this.chart();\n if (chart) {\n if (chart.serializeState) {\n state.chart = chart.serializeState();\n delete state.chart.data;\n }\n }\n return state;\n }\n\n deserializeState(state) {\n if (state) {\n this\n .title(state.title)\n .data(state.data)\n ;\n const chart = this.chart();\n if (chart && state.chart) {\n if (chart.serializeState) {\n chart.deserializeState(state.chart);\n }\n }\n }\n return this;\n }\n\n // Events ---\n click(row, column, selected) {\n }\n\n dblclick(row, column, selected) {\n }\n vertex_click(row, col, sel, more) {\n if (more && more.vertex) {\n // console.log(\"Vertex click: \" + more.vertex.id());\n }\n }\n\n vertex_dblclick(row, col, sel, more) {\n if (more && more.vertex) {\n // console.log(\"Vertex double click: \" + more.vertex.id());\n }\n }\n\n edge_click(row, col, sel, more) {\n if (more && more.edge) {\n // console.log(\"Edge click: \" + more.edge.id());\n }\n }\n\n edge_dblclick(row, col, sel, more) {\n if (more && more.edge) {\n // console.log(\"Edge double click: \" + more.edge.id());\n }\n }\n\n hideRowOnLegendClick: { (): boolean; (_: boolean): MegaChart };\n hideRowOnLegendClick_exists: () => boolean;\n showToolbar: { (): boolean; (_: boolean): MegaChart };\n showToolbar_exists: () => boolean;\n titleFontSize: { (): number; (_: number): MegaChart };\n titleFontSize_exists: () => boolean;\n titleFontColor: { (): string; (_: string): MegaChart };\n titleFontColor_exists: () => boolean;\n titleFontFamily: { (): string; (_: string): MegaChart };\n titleFontFamily_exists: () => boolean;\n titleFontBold: { (): boolean; (_: boolean): MegaChart };\n titleFontBold_exists: () => boolean;\n titleBackgroundColor: { (): string; (_: string): MegaChart };\n titleBackgroundColor_exists: () => boolean;\n maximizedBackgroundColor: { (): string; (_: string): MegaChart };\n maximizedBackgroundColor_exists: () => boolean;\n showChartSelect: { (): boolean; (_: boolean): MegaChart };\n showChartSelect_exists: () => boolean;\n showCSV: { (): boolean; (_: boolean): MegaChart };\n showCSV_exists: () => boolean;\n showCount: { (): boolean; (_: boolean): MegaChart };\n showCount_exists: () => boolean;\n showMaximize: { (): boolean; (_: boolean): MegaChart };\n showMaximize_exists: () => boolean;\n toolbarShowLegend: { (): boolean; (_: boolean): MegaChart };\n toolbarShowLegend_exists: () => boolean;\n showInfoButton: { (): boolean; (_: boolean): MegaChart };\n showInfoButton_exists: () => boolean;\n infoIcon: { (): string; (_: string): MegaChart };\n infoIcon_exists: () => boolean;\n legendPosition: { (): string; (_: string): MegaChart };\n legendPosition_exists: () => boolean;\n\n title: { (): string; (_: string): MegaChart };\n title_exists: () => boolean;\n\n domainAxisTitle: { (): string; (_: string): MegaChart };\n domainAxisTitle_exists: () => boolean;\n valueAxisTitle: { (): string; (_: string): MegaChart };\n valueAxisTitle_exists: () => boolean;\n\n chartType: { (): string; (_: string): MegaChart };\n chartType_exists: () => boolean;\n chart: { (): any; (_: any): MegaChart };\n chart_exists: () => boolean;\n}\nMegaChart.prototype._class += \" composite_MegaChart\";\n\nMegaChart.prototype._1DChartTypes = MultiChart.prototype._1DChartTypes;\nMegaChart.prototype._2DChartTypes = MultiChart.prototype._2DChartTypes;\nMegaChart.prototype._NDChartTypes = MultiChart.prototype._NDChartTypes;\nMegaChart.prototype._anyChartTypes = MultiChart.prototype._anyChartTypes;\nMegaChart.prototype._allChartTypes = MultiChart.prototype._allChartTypes;\n\nMegaChart.prototype.publishReset();\n\nMegaChart.prototype.publish(\"hideRowOnLegendClick\", false, \"boolean\", \"Enable/Disable hiding row on legend clicks\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"showToolbar\", true, \"boolean\", \"Enable/Disable Toolbar widget\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publishProxy(\"title\", \"_toolbar\", \"title\");\nMegaChart.prototype.publish(\"ddlParamsFormat\", \"\", \"string\", \"DDL Param Format '{fname}, {lname}'\", null, { tags: [\"Advanced\"], optional: true });\nMegaChart.prototype.publish(\"titleFontSize\", null, \"number\", \"Title Font Size (px)\", null, { tags: [\"Advanced\"], optional: true });\nMegaChart.prototype.publish(\"titleFontColor\", null, \"html-color\", \"Title Font Color\", null, { tags: [\"Advanced\"], optional: true });\nMegaChart.prototype.publish(\"titleFontFamily\", null, \"string\", \"Title Font Family\", null, { tags: [\"Advanced\"], optional: true });\nMegaChart.prototype.publish(\"titleFontBold\", true, \"boolean\", \"Enable Bold Title Font\", null, { tags: [\"Advanced\"], optional: true });\nMegaChart.prototype.publish(\"titleBackgroundColor\", null, \"html-color\", \"Background Color\", null, { tags: [\"Intermediate\"], optional: true });\nMegaChart.prototype.publish(\"maximizedBackgroundColor\", \"#FFFFFF\", \"html-color\", \"Background Color while maximized\", null, { tags: [\"Intermediate\"], optional: true });\n\nMegaChart.prototype.publish(\"showChartSelect\", true, \"boolean\", \"Show/Hide the chartType dropdown in the toolbar\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"showCSV\", true, \"boolean\", \"Show/Hide CSV button\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"showCount\", false, \"boolean\", \"Show/Hide Data Count\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"showMaximize\", false, \"boolean\", \"Show/Hide Maximize button\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"toolbarShowLegend\", false, \"boolean\", \"Show/Hide Legend button\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"showInfoButton\", false, \"boolean\", \"Show/Hide Info button in toolbar\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"infoIcon\", \"\\uf05a\", \"string\", \"Help Icon\", null, { tags: [\"Basic\"] });\n\nMegaChart.prototype.publish(\"legendPosition\", \"none\", \"set\", \"Position of the Legend widget\", [\"none\", \"top\", \"right\", \"bottom\", \"left\"], { tags: [\"Basic\"] });\nMegaChart.prototype.publishProxy(\"legendFormat\", \"_legend\", \"rainbowFormat\");\nMegaChart.prototype.publishProxy(\"legendBins\", \"_legend\", \"rainbowBins\");\n\nMegaChart.prototype.publishProxy(\"domainAxisTitle\", \"_domainTitle\", \"text\");\nMegaChart.prototype.publishProxy(\"valueAxisTitle\", \"_valueTitle\", \"text\");\n\nMegaChart.prototype.publishProxy(\"chartType\", \"_chart\", \"chartType\");\nMegaChart.prototype.publishProxy(\"chart\", \"_chart\", \"chart\");\n","import { Platform, Utility, Widget } from \"@hpcc-js/common\";\nimport { Persist } from \"@hpcc-js/other\";\nimport { requireWidget } from \"./Utility.ts\";\n\nexport function retrofit_114_serialization(state, replacement_version) {\n replacement_version = !replacement_version || replacement_version === \"1.14.2-dev\" ? \"1.18.0\" : replacement_version;\n if (!state.__version) return state;\n const state_version_obj = Utility.parseVersionString(state.__version);\n const target_version_obj = Utility.parseVersionString(replacement_version);\n if (state_version_obj.major === 1 && state_version_obj.minor === 14) {\n console.info(\"Upgrading old persist from \" + state.__version + \" to \" + replacement_version);\n let _json_str = JSON.stringify(state);\n _json_str = _json_str.split('\"' + state.__version).join('\"' + replacement_version);\n\n const ret_obj = JSON.parse(_json_str);\n if (ret_obj.__properties && ret_obj.__properties.content) {\n ret_obj.__properties.content.forEach(function (n) {// FOR EACH top tier layout_Cell\n if (JSON.stringify(n).split(\"graph_Graph\").length > 1 && target_version_obj.minor >= 16) {\n n.__properties.widget.__id = n.__properties.widget.__properties.widget.__id;\n n.__properties.widget.__class = \"composite_MegaChart\";\n n.__properties.widget.__properties.showCSV = false;\n n.__properties.widget.__properties.chartType = \"GRAPH\";\n n.__properties.widget.__properties.chart = n.__properties.widget.__properties.widget;\n delete n.__properties.widget.__properties.chart.__id;\n delete n.__properties.widget.__properties.widget;\n }\n if (\"undefined\" === typeof n.__properties.fields) {\n n.__properties.fields = [];\n }\n });\n }\n return ret_obj;\n } else {\n return state;\n }\n}\n\nexport function deserializeFromObject(widget, state) {\n const promises = [];\n Persist.widgetPropertyWalker(widget, null, (w, item) => {\n w[item.id + \"_reset\"]();\n if (state.__properties[item.id] !== undefined) {\n switch (item.type) {\n case \"widget\":\n const widgetKey = item.id;\n promises.push(create(state.__properties[item.id]).then((w2: any) => {\n w2._owner = w;\n w[widgetKey](w2);\n return w2;\n }));\n break;\n case \"widgetArray\":\n case \"propertyArray\":\n const widgetArrayKey = item.id;\n const widgetStateArray = state.__properties[item.id];\n if (widgetStateArray.length) {\n const arrPromises = [];\n for (const widgetState of widgetStateArray) {\n arrPromises.push(create(widgetState).then((widgetItem: any) => {\n widgetItem._owner = w;\n return widgetItem;\n }));\n }\n promises.push(Promise.all(arrPromises).then(widgetArray => {\n w[widgetArrayKey](widgetArray);\n }));\n }\n break;\n default:\n w[item.id](state.__properties[item.id]);\n break;\n }\n }\n });\n return Promise.all(promises).then(widgets => {\n if (state.__data) {\n for (const key in state.__data) {\n if (state.__data.HasOwnProperty(key)) {\n switch (key) {\n case \"data\":\n widget.data(state.__data[key]);\n break;\n default:\n console.warn(\"Unexpected __data item: \" + key);\n widget[key](state.__data[key]);\n break;\n }\n }\n }\n }\n if (state.__state) {\n if (widget.deserializeState) {\n widget.deserializeState(state.__state);\n } else if (state.__state.data && widget.data) {\n widget.data(state.__state.data);\n }\n }\n return widget;\n });\n}\n\nexport function deserialize(widget, state) {\n if (typeof state === \"string\") {\n state = JSON.parse(state);\n }\n if (state.__id && state.__id.indexOf(widget._idSeed) !== 0 && widget._id !== state.__id) {\n console.warn(\"Deserialize: IDs do not match - \" + widget._id);\n }\n deserializeFromObject(widget, state);\n}\n\nexport function create(state: any): Promise<Widget> {\n if (typeof state === \"string\") {\n state = JSON.parse(state);\n }\n state = retrofit_114_serialization(state, Platform.version());\n return requireWidget(state.__class).then((WidgetClass: any) => {\n const widget = new WidgetClass();\n if (state.__id && state.__id.indexOf(widget._idSeed) !== 0 && state.__id.indexOf(\"_pe\") !== 0) {\n widget._id = state.__id;\n }\n return deserializeFromObject(widget, state);\n }).catch(function (e) {\n console.error(\"Persist.create: ***exception***\");\n console.error(e);\n });\n}\n\nexport function clone(widget) {\n create(Persist.serializeToObject(widget, undefined, true, true));\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["Legend","obj: any","state: any"],"sources":["../src/__package__.ts","../../layout/dist/index.js","../src/Utility.ts","../src/MultiChart.ts","../src/ChartPanel.ts","../src/Dermatology.ts","../src/MegaChart.ts","../src/Persist.ts"],"sourcesContent":["export const PKG_NAME = \"__PACKAGE_NAME__\";\nexport const PKG_VERSION = \"__PACKAGE_VERSION__\";\nexport const BUILD_VERSION = \"__BUILD_VERSION__\";\n","import { Button, Database, FAChar, HTMLWidget, IconBar, Palette, Platform, ProgressBar, SVGWidget, Spacer, Text, TitleBar, ToggleButton, Utility, d3Event, dispatch, drag, format, formatLocale, formatPrefix, formatSpecifier, scaleLinear, scaleOrdinal, select, selectAll, sum } from \"@hpcc-js/common\";\nimport { Table } from \"@hpcc-js/dgrid\";\nimport { instanceOfIHighlight } from \"@hpcc-js/api\";\n\n//#region rolldown:runtime\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJS = (cb, mod) => function() {\n\treturn mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {\n\t\tkey = keys[i];\n\t\tif (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n\t\t\tget: ((k$1) => from[k$1]).bind(null, key),\n\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t});\n\t}\n\treturn to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", {\n\tvalue: mod,\n\tenumerable: true\n}) : target, mod));\n\n//#endregion\n//#region src/__package__.ts\nconst PKG_NAME = \"@hpcc-js/layout\";\nconst PKG_VERSION = \"3.4.0\";\nconst BUILD_VERSION = \"3.15.0\";\n\n//#endregion\n//#region src/AbsoluteSurface.ts\nvar AbsoluteSurface = class extends HTMLWidget {\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\tlet xPos = 0;\n\t\tlet yPos = 0;\n\t\tlet width = this.clientWidth();\n\t\tlet height = this.clientHeight();\n\t\tswitch (this.units()) {\n\t\t\tcase \"pixels\":\n\t\t\t\txPos = this.widgetX();\n\t\t\t\tyPos = this.widgetY();\n\t\t\t\twidth = this.widgetWidth() === \"\" ? width - xPos : Number(this.widgetWidth());\n\t\t\t\theight = this.widgetHeight() === \"\" ? height - yPos : Number(this.widgetHeight());\n\t\t\t\tbreak;\n\t\t\tcase \"percent\":\n\t\t\t\txPos = this.widgetX() * width / 100;\n\t\t\t\tyPos = this.widgetY() * height / 100;\n\t\t\t\twidth = this.widgetWidth() === \"\" ? width - xPos : Number(this.widgetWidth()) * width / 100;\n\t\t\t\theight = this.widgetHeight() === \"\" ? height - yPos : Number(this.widgetHeight()) * height / 100;\n\t\t\t\tbreak;\n\t\t}\n\t\telement.style(\"opacity\", this.opacity());\n\t\tconst widgets = element.selectAll(\"#\" + this._id + \" > .placeholder\").data(this.widget() ? [this.widget()] : [], function(d) {\n\t\t\treturn d._id;\n\t\t});\n\t\twidgets.enter().append(\"div\").attr(\"class\", \"placeholder\").each(function(d) {\n\t\t\td.target(this);\n\t\t}).merge(widgets).style(\"left\", xPos + \"px\").style(\"top\", yPos + \"px\").style(\"width\", width + \"px\").style(\"bottom\", height + \"px\").each(function(d) {\n\t\t\td.resize({\n\t\t\t\twidth,\n\t\t\t\theight\n\t\t\t});\n\t\t});\n\t\twidgets.exit().each(function(d) {\n\t\t\td.target(null);\n\t\t}).remove();\n\t}\n\texit(domNode, element) {\n\t\tif (this.widget()) this.widget().target(null);\n\t\tsuper.exit(domNode, element);\n\t}\n};\nAbsoluteSurface.prototype._class += \" layout_AbsoluteSurface\";\nAbsoluteSurface.prototype.publish(\"units\", \"percent\", \"set\", \"Units\", [\"pixels\", \"percent\"]);\nAbsoluteSurface.prototype.publish(\"widgetX\", 0, \"number\", \"Widget XPos\");\nAbsoluteSurface.prototype.publish(\"widgetY\", 0, \"number\", \"Widget YPos\");\nAbsoluteSurface.prototype.publish(\"widgetWidth\", \"100\", \"string\", \"Widget Width, omit for full\");\nAbsoluteSurface.prototype.publish(\"widgetHeight\", \"100\", \"string\", \"Widget Height, omit for full\");\nAbsoluteSurface.prototype.publish(\"widget\", null, \"widget\", \"Widget\", null, { tags: [\"Private\"] });\nAbsoluteSurface.prototype.publish(\"opacity\", 1, \"number\", \"Opacity\");\n\n//#endregion\n//#region src/Accordion.ts\nvar Accordion = class extends HTMLWidget {\n\t_isClosed;\n\ttitleSpan;\n\ticonDiv;\n\tul;\n\ticon;\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t\tthis._isClosed = false;\n\t}\n\tpushListItem(widget, prepend = false, protect = false) {\n\t\tconst contentArr = this.content();\n\t\twidget._protected = protect;\n\t\tif (prepend) contentArr.unshift(widget);\n\t\telse contentArr.push(widget);\n\t\tthis.content(contentArr);\n\t\treturn this;\n\t}\n\tclearListItems() {\n\t\tconst arr = [];\n\t\tfor (const i in this.content()) if (this.content()[i]._protected) arr.push(this.content()[i]);\n\t\tthis.content(arr);\n\t\treturn this;\n\t}\n\tcollapseClick(element) {\n\t\tif (element.classed(\"closed\")) {\n\t\t\tthis._isClosed = false;\n\t\t\telement.classed(\"open\", true);\n\t\t\telement.classed(\"closed\", false);\n\t\t} else {\n\t\t\tthis._isClosed = true;\n\t\t\telement.classed(\"open\", false);\n\t\t\telement.classed(\"closed\", true);\n\t\t}\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tconst context = this;\n\t\tthis._isClosed = this.defaultCollapsed();\n\t\telement.classed(this._isClosed ? \"closed\" : \"open\", true);\n\t\tthis.titleSpan = element.append(\"span\").classed(\"collapsible-title\", true);\n\t\tthis.iconDiv = element.append(\"div\").classed(\"collapsible-icon\", true);\n\t\tthis.ul = element.append(\"ul\");\n\t\tthis.icon = new FAChar().size({\n\t\t\theight: 24,\n\t\t\twidth: 24\n\t\t}).target(this.iconDiv.node());\n\t\tthis.iconDiv.on(\"click\", function() {\n\t\t\tcontext.collapseClick(element);\n\t\t\tcontext.render();\n\t\t});\n\t\tthis.titleSpan.on(\"click\", function() {\n\t\t\tcontext.collapseClick(element);\n\t\t\tcontext.render();\n\t\t});\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\tconst context = this;\n\t\tthis.titleSpan.text(context.title().length > 0 ? context.title() + \"\" : \"Accordion [\" + context._id + \"]\");\n\t\tconst rows = this.ul.selectAll(\"#\" + context._id + \" > ul > li\").data(this.content(), function(d) {\n\t\t\treturn d._id;\n\t\t});\n\t\trows.enter().append(function(widget) {\n\t\t\tconst li = document.createElement(\"li\");\n\t\t\tif (widget._target === null) {\n\t\t\t\tconst wSize = widget.size();\n\t\t\t\tif (wSize.width === 0 || wSize.height === 0) {\n\t\t\t\t\tconst cSize = context.size();\n\t\t\t\t\twidget.size({\n\t\t\t\t\t\twidth: cSize.width,\n\t\t\t\t\t\theight: cSize.width\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\twidget.target(li);\n\t\t\t} else return widget._target;\n\t\t\treturn li;\n\t\t});\n\t\trows.exit().remove();\n\t\tthis.icon.text_colorFill(this.titleFontColor()).char(this._isClosed ? this.closedIcon() : this.openIcon()).render();\n\t}\n\texit(domNode, element) {\n\t\tsuper.exit(domNode, element);\n\t}\n};\nAccordion.prototype._class += \" layout_Accordion\";\nAccordion.prototype.publish(\"content\", [], \"widgetArray\", \"Array of widgets\", null, { tags: [\"Basic\"] });\nAccordion.prototype.publish(\"title\", \"\", \"string\", \"Title of collapsible section\", null, { tags: [\"Private\"] });\nAccordion.prototype.publish(\"openIcon\", \"\", \"string\", \"Icon to display when list is open\", null, { tags: [\"Private\"] });\nAccordion.prototype.publish(\"closedIcon\", \"\", \"string\", \"Icon to display when list is closed\", null, { tags: [\"Private\"] });\nAccordion.prototype.publish(\"titleFontColor\", \"#FFFFFF\", \"html-color\", \"Title font color\", null, { tags: [\"Private\"] });\nAccordion.prototype.publish(\"titleBackgroundColor\", \"#333333\", \"html-color\", \"Title background color\", null, { tags: [\"Private\"] });\nAccordion.prototype.publish(\"defaultCollapsed\", false, \"boolean\", \"Collapsed by default if true\", null, { tags: [\"Private\"] });\n\n//#endregion\n//#region src/Surface.ts\nvar Surface = class extends HTMLWidget {\n\t_surfaceButtons;\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t\tthis._surfaceButtons = [];\n\t}\n\twidgetSize(titleDiv, widgetDiv) {\n\t\tlet width = this.clientWidth();\n\t\tlet height = this.clientHeight();\n\t\tif (this.title()) height -= this.calcHeight(titleDiv);\n\t\theight -= this.calcFrameHeight(widgetDiv);\n\t\twidth -= this.calcFrameWidth(widgetDiv);\n\t\treturn {\n\t\t\twidth,\n\t\t\theight\n\t\t};\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t}\n\tupdate(domNode, element2) {\n\t\tsuper.update(domNode, element2);\n\t\tconst context = this;\n\t\telement2.classed(\"shadow2\", this.surfaceShadow()).style(\"border-width\", this.surfaceBorderWidth_exists() ? this.surfaceBorderWidth() + \"px\" : null).style(\"border-color\", this.surfaceBorderColor()).style(\"border-radius\", this.surfaceBorderRadius_exists() ? this.surfaceBorderRadius() + \"px\" : null).style(\"background-color\", this.surfaceBackgroundColor());\n\t\tconst titles = element2.selectAll(\".surfaceTitle\").data(this.title() ? [this.title()] : []);\n\t\ttitles.enter().insert(\"h3\", \"div\").attr(\"class\", \"surfaceTitle\").merge(titles).text(function(d) {\n\t\t\treturn d;\n\t\t}).style(\"text-align\", this.surfaceTitleAlignment()).style(\"color\", this.surfaceTitleFontColor()).style(\"font-size\", this.surfaceTitleFontSize_exists() ? this.surfaceTitleFontSize() + \"px\" : null).style(\"font-family\", this.surfaceTitleFontFamily()).style(\"font-weight\", this.surfaceTitleFontBold() ? \"bold\" : \"normal\").style(\"background-color\", this.surfaceTitleBackgroundColor()).style(\"padding\", this.surfaceTitlePadding_exists() ? this.surfaceTitlePadding() + \"px\" : null).style(\"title\", this.altText_exists() ? this.altText() : null);\n\t\ttitles.exit().remove();\n\t\tconst surfaceButtons = element2.select(\".surfaceTitle\").append(\"div\").attr(\"class\", \"html-button-container\").selectAll(\".surface-button\").data(this.buttonAnnotations());\n\t\tsurfaceButtons.enter().append(\"button\").classed(\"surface-button\", true).each(function(button, idx) {\n\t\t\tconst el = context._surfaceButtons[idx] = select(this).attr(\"class\", \"surface-button\" + (button.class ? \" \" + button.class : \"\")).attr(\"id\", button.id).style(\"padding\", button.padding).style(\"width\", button.width).style(\"height\", button.height).style(\"cursor\", \"pointer\");\n\t\t\tif (button.font === \"FontAwesome\") el.style(\"background\", \"transparent\").style(\"border\", \"none\").on(\"click\", function(d) {\n\t\t\t\tcontext.click(d);\n\t\t\t}).append(\"i\").attr(\"class\", \"fa\").text(function() {\n\t\t\t\treturn button.label;\n\t\t\t});\n\t\t\telse el.text(function() {\n\t\t\t\treturn button.label;\n\t\t\t}).on(\"click\", function(d) {\n\t\t\t\tcontext.click(d);\n\t\t\t});\n\t\t});\n\t\tsurfaceButtons.exit().each(function(_d, idx) {\n\t\t\tconst element = select(this);\n\t\t\tdelete context._surfaceButtons[idx];\n\t\t\telement.remove();\n\t\t});\n\t\tconst widgets = element2.selectAll(\"#\" + this._id + \" > .surfaceWidget\").data(this.widget() ? [this.widget()] : [], function(d) {\n\t\t\treturn d._id;\n\t\t});\n\t\twidgets.enter().append(\"div\").attr(\"class\", \"surfaceWidget\").each(function(d) {\n\t\t\tselect(context.element().node().parentElement).classed(\"content-icon content-icon-\" + d.classID().split(\"_\")[1], true);\n\t\t\td.target(this);\n\t\t}).merge(widgets).style(\"padding\", this.surfacePadding_exists() ? this.surfacePadding() + \"px\" : null).each(function(d) {\n\t\t\tconst widgetSize = context.widgetSize(element2.select(\"h3\"), select(this));\n\t\t\tif (widgetSize.width < 0) widgetSize.width = 0;\n\t\t\tif (widgetSize.height < 0) widgetSize.height = 0;\n\t\t\td.resize({\n\t\t\t\twidth: widgetSize.width,\n\t\t\t\theight: widgetSize.height\n\t\t\t});\n\t\t});\n\t\twidgets.exit().each(function(d) {\n\t\t\td.target(null);\n\t\t}).remove();\n\t}\n\texit(domNode, element) {\n\t\tif (this.widget()) this.widget().target(null);\n\t\tsuper.exit(domNode, element);\n\t}\n\tclick(obj) {}\n};\nSurface.prototype._class += \" layout_Surface\";\nSurface.prototype.publish(\"title\", \"\", \"string\", \"Title\", null, { tags: [\"Intermediate\"] });\nSurface.prototype.publish(\"altText\", null, \"string\", \"Alt text\", null, { optional: true });\nSurface.prototype.publish(\"surfaceTitlePadding\", null, \"number\", \"Title Padding (px)\", null, {\n\ttags: [\"Advanced\"],\n\tdisable: (w) => !w.title()\n});\nSurface.prototype.publish(\"surfaceTitleFontSize\", null, \"number\", \"Title Font Size (px)\", null, {\n\ttags: [\"Advanced\"],\n\tdisable: (w) => !w.title()\n});\nSurface.prototype.publish(\"surfaceTitleFontColor\", null, \"html-color\", \"Title Font Color\", null, {\n\ttags: [\"Advanced\"],\n\tdisable: (w) => !w.title()\n});\nSurface.prototype.publish(\"surfaceTitleFontFamily\", null, \"string\", \"Title Font Family\", null, {\n\ttags: [\"Advanced\"],\n\tdisable: (w) => !w.title()\n});\nSurface.prototype.publish(\"surfaceTitleFontBold\", true, \"boolean\", \"Enable Bold Title Font\", null, {\n\ttags: [\"Advanced\"],\n\tdisable: (w) => !w.title()\n});\nSurface.prototype.publish(\"surfaceTitleBackgroundColor\", null, \"html-color\", \"Title Background Color\", null, {\n\ttags: [\"Advanced\"],\n\tdisable: (w) => !w.title()\n});\nSurface.prototype.publish(\"surfaceTitleAlignment\", \"center\", \"set\", \"Title Alignment\", [\n\t\"left\",\n\t\"right\",\n\t\"center\"\n], {\n\ttags: [\"Basic\"],\n\tdisable: (w) => !w.title()\n});\nSurface.prototype.publish(\"surfaceShadow\", false, \"boolean\", \"3D Shadow\");\nSurface.prototype.publish(\"surfacePadding\", null, \"string\", \"Surface Padding (px)\", null, { tags: [\"Intermediate\"] });\nSurface.prototype.publish(\"surfaceBackgroundColor\", null, \"html-color\", \"Surface Background Color\", null, { tags: [\"Advanced\"] });\nSurface.prototype.publish(\"surfaceBorderWidth\", null, \"number\", \"Surface Border Width (px)\", null, { tags: [\"Advanced\"] });\nSurface.prototype.publish(\"surfaceBorderColor\", null, \"html-color\", \"Surface Border Color\", null, { tags: [\"Advanced\"] });\nSurface.prototype.publish(\"surfaceBorderRadius\", null, \"number\", \"Surface Border Radius (px)\", null, { tags: [\"Advanced\"] });\nSurface.prototype.publish(\"buttonAnnotations\", [], \"array\", \"Button Array\", null, { tags: [\"Private\"] });\nSurface.prototype.publish(\"widget\", null, \"widget\", \"Widget\", null, { tags: [\"Basic\"] });\n\n//#endregion\n//#region src/Cell.ts\nvar Cell = class extends Surface {\n\t_indicateTheseIds;\n\tconstructor() {\n\t\tsuper();\n\t\tthis._indicateTheseIds = [];\n\t}\n\tindicateTheseIds(_) {\n\t\tif (!arguments.length) return this._indicateTheseIds;\n\t\tthis._indicateTheseIds = _;\n\t\treturn this;\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tconst context = this;\n\t\telement.classed(\"layout_Surface\", true).on(\"mouseenter\", function() {\n\t\t\tcontext.onMouseEnter();\n\t\t}).on(\"mouseleave\", function() {\n\t\t\tcontext.onMouseLeave();\n\t\t});\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t}\n\tonMouseEnter() {\n\t\tconst arr = this.indicateTheseIds();\n\t\tconst opacity = this.indicatorOpacity();\n\t\tconst indicatorBorderColor = this.indicatorBorderColor();\n\t\tconst indicatorGlowColor = this.indicatorGlowColor();\n\t\tfor (let i = 0; i < arr.length; i++) {\n\t\t\tconst otherElement = select(\"#\" + arr[i]);\n\t\t\tconst otherWidget = otherElement.datum();\n\t\t\tif (otherElement && otherWidget) otherElement.append(\"div\").attr(\"class\", \"update-indicator\").style(\"width\", otherWidget.width() + \"px\").style(\"height\", otherWidget.height() + \"px\").style(\"opacity\", opacity).style(\"border-color\", indicatorBorderColor).style(\"-webkit-box-shadow\", \"inset 0px 0px 30px 0px \" + indicatorGlowColor).style(\"-moz-box-shadow\", \"inset 0px 0px 30px 0px \" + indicatorGlowColor).style(\"box-shadow\", \"inset 0px 0px 30px 0px \" + indicatorGlowColor);\n\t\t}\n\t}\n\tonMouseLeave() {\n\t\tconst arr = this.indicateTheseIds();\n\t\tfor (let i = 0; i < arr.length; i++) selectAll(\"#\" + arr[i] + \" > div.update-indicator\").remove();\n\t}\n};\nCell.prototype._class += \" layout_Cell\";\nCell.prototype.publish(\"gridRow\", 0, \"number\", \"Grid Row Position\", null, { tags: [\"Private\"] });\nCell.prototype.publish(\"gridCol\", 0, \"number\", \"Grid Column Position\", null, { tags: [\"Private\"] });\nCell.prototype.publish(\"gridRowSpan\", 1, \"number\", \"Grid Row Span\", null, { tags: [\"Private\"] });\nCell.prototype.publish(\"gridColSpan\", 1, \"number\", \"Grid Column Span\", null, { tags: [\"Private\"] });\nCell.prototype.publish(\"indicatorGlowColor\", \"#EEEE11\", \"html-color\", \"Glow color of update-indicator\", null, { tags: [\"Basic\"] });\nCell.prototype.publish(\"indicatorBorderColor\", \"#F48A00\", \"html-color\", \"Border color of update-indicator\", null, { tags: [\"Basic\"] });\nCell.prototype.publish(\"indicatorOpacity\", .8, \"number\", \"Opacity of update-indicator\", null, { tags: [\"Basic\"] });\n\n//#endregion\n//#region src/Border.ts\nvar Border = class extends HTMLWidget {\n\t_colCount;\n\t_rowCount;\n\t_colSize;\n\t_rowSize;\n\t_shrinkWrapBoxes;\n\t_watch;\n\t_offsetX;\n\t_offsetY;\n\t_dragCell;\n\t_dragCellSize;\n\t_dragCellStartSize;\n\t_handleTop;\n\t_handleLeft;\n\t_dragPrevX;\n\t_dragPrevY;\n\t_cellSizes;\n\tcontentDiv;\n\t_scrollBarWidth;\n\t_borderHandles;\n\t_sectionTypeArr;\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t\tthis._colCount = 0;\n\t\tthis._rowCount = 0;\n\t\tthis._colSize = 0;\n\t\tthis._rowSize = 0;\n\t\tthis._shrinkWrapBoxes = {};\n\t\tthis.content([]);\n\t\tthis.sectionTypes([]);\n\t}\n\twatchWidget(widget) {\n\t\tif (this._watch === void 0) this._watch = {};\n\t\tif (this._watch[widget.id()]) {\n\t\t\tthis._watch[widget.id()].remove();\n\t\t\tdelete this._watch[widget.id()];\n\t\t}\n\t\tif (widget) {\n\t\t\tconst context = this;\n\t\t\tthis._watch[widget.id()] = widget.monitor(function(paramId, newVal, oldVal) {\n\t\t\t\tif (oldVal !== newVal) context.lazyPostUpdate();\n\t\t\t});\n\t\t}\n\t}\n\tlazyPostUpdate = Utility.debounce(function() {\n\t\tthis.postUpdate();\n\t}, 100);\n\tapplyLayoutType() {\n\t\tconst layoutObj = this.borderLayoutObject();\n\t\tthis.content().forEach(function(cell, i) {\n\t\t\tcell._fixedLeft = layoutObj[this.sectionTypes()[i]].left;\n\t\t\tcell._fixedTop = layoutObj[this.sectionTypes()[i]].top;\n\t\t\tcell._fixedWidth = layoutObj[this.sectionTypes()[i]].width;\n\t\t\tcell._fixedHeight = layoutObj[this.sectionTypes()[i]].height;\n\t\t\tcell._dragHandles = this.cellSpecificDragHandles(this.sectionTypes()[i]);\n\t\t}, this);\n\t}\n\tcellSpecificDragHandles(sectionType) {\n\t\tswitch (sectionType) {\n\t\t\tcase \"top\": return [\"s\"];\n\t\t\tcase \"right\": return [\"w\"];\n\t\t\tcase \"bottom\": return [\"n\"];\n\t\t\tcase \"left\": return [\"e\"];\n\t\t\tcase \"center\": return [];\n\t\t}\n\t}\n\tborderLayoutObject(layoutType) {\n\t\tconst retObj = {};\n\t\tconst context = this;\n\t\tlet topSize;\n\t\tlet topPerc;\n\t\tlet bottomSize;\n\t\tlet bottomPerc;\n\t\tlet leftSize;\n\t\tlet leftPerc;\n\t\tlet rightSize;\n\t\tlet rightPerc;\n\t\tconst bcRect = this.target().getBoundingClientRect();\n\t\tconst gridRect = {};\n\t\tgridRect.top = bcRect.top;\n\t\tgridRect.left = bcRect.left;\n\t\tgridRect.bottom = bcRect.bottom;\n\t\tgridRect.right = bcRect.right;\n\t\tif (this.target() instanceof SVGElement) {\n\t\t\tgridRect.width = parseFloat(this.target().getAttribute(\"width\"));\n\t\t\tgridRect.height = parseFloat(this.target().getAttribute(\"height\"));\n\t\t} else {\n\t\t\tgridRect.width = bcRect.width;\n\t\t\tgridRect.height = bcRect.height;\n\t\t}\n\t\tif (this.sectionTypes().indexOf(\"top\") !== -1) {\n\t\t\ttopSize = this.topSize();\n\t\t\ttopPerc = this.topPercentage();\n\t\t\tif (typeof this._shrinkWrapBoxes[\"top\"] !== \"undefined\") {\n\t\t\t\ttopSize = this._shrinkWrapBoxes[\"top\"].height + this.gutter();\n\t\t\t\ttopPerc = 0;\n\t\t\t}\n\t\t}\n\t\tif (this.sectionTypes().indexOf(\"bottom\") !== -1) {\n\t\t\tbottomSize = this.bottomSize();\n\t\t\tbottomPerc = this.bottomPercentage();\n\t\t\tif (typeof this._shrinkWrapBoxes[\"bottom\"] !== \"undefined\") {\n\t\t\t\tbottomSize = this._shrinkWrapBoxes[\"bottom\"].height + this.gutter();\n\t\t\t\tbottomPerc = 0;\n\t\t\t}\n\t\t}\n\t\tif (this.sectionTypes().indexOf(\"left\") !== -1) {\n\t\t\tleftSize = this.leftSize();\n\t\t\tleftPerc = this.leftPercentage();\n\t\t\tif (typeof this._shrinkWrapBoxes[\"left\"] !== \"undefined\") {\n\t\t\t\tleftSize = this._shrinkWrapBoxes[\"left\"].width + this.gutter();\n\t\t\t\tleftPerc = 0;\n\t\t\t}\n\t\t}\n\t\tif (this.sectionTypes().indexOf(\"right\") !== -1) {\n\t\t\trightSize = this.rightSize();\n\t\t\trightPerc = this.rightPercentage();\n\t\t\tif (typeof this._shrinkWrapBoxes[\"right\"] !== \"undefined\") {\n\t\t\t\trightSize = this._shrinkWrapBoxes[\"right\"].width + this.gutter();\n\t\t\t\trightPerc = 0;\n\t\t\t}\n\t\t}\n\t\tconst t = _sectionPlacementObject({\n\t\t\twidth: {\n\t\t\t\t\"px\": 0,\n\t\t\t\t\"%\": 100\n\t\t\t},\n\t\t\theight: {\n\t\t\t\t\"px\": topSize,\n\t\t\t\t\"%\": topPerc\n\t\t\t},\n\t\t\ttop: {\n\t\t\t\t\"px\": 0,\n\t\t\t\t\"%\": 0\n\t\t\t},\n\t\t\tleft: {\n\t\t\t\t\"px\": 0,\n\t\t\t\t\"%\": 0\n\t\t\t}\n\t\t});\n\t\tconst b = _sectionPlacementObject({\n\t\t\twidth: {\n\t\t\t\t\"px\": 0,\n\t\t\t\t\"%\": 100\n\t\t\t},\n\t\t\theight: {\n\t\t\t\t\"px\": bottomSize,\n\t\t\t\t\"%\": bottomPerc\n\t\t\t},\n\t\t\ttop: {\n\t\t\t\t\"px\": 0,\n\t\t\t\t\"%\": 100\n\t\t\t},\n\t\t\tleft: {\n\t\t\t\t\"px\": 0,\n\t\t\t\t\"%\": 0\n\t\t\t}\n\t\t});\n\t\tb.top -= b.height;\n\t\tconst l = _sectionPlacementObject({\n\t\t\twidth: {\n\t\t\t\t\"px\": leftSize,\n\t\t\t\t\"%\": leftPerc\n\t\t\t},\n\t\t\theight: {\n\t\t\t\t\"px\": -t.height - b.height,\n\t\t\t\t\"%\": 100\n\t\t\t},\n\t\t\ttop: {\n\t\t\t\t\"px\": t.height,\n\t\t\t\t\"%\": 0\n\t\t\t},\n\t\t\tleft: {\n\t\t\t\t\"px\": 0,\n\t\t\t\t\"%\": 0\n\t\t\t}\n\t\t});\n\t\tconst r = _sectionPlacementObject({\n\t\t\twidth: {\n\t\t\t\t\"px\": rightSize,\n\t\t\t\t\"%\": rightPerc\n\t\t\t},\n\t\t\theight: {\n\t\t\t\t\"px\": -t.height - b.height,\n\t\t\t\t\"%\": 100\n\t\t\t},\n\t\t\ttop: {\n\t\t\t\t\"px\": t.height,\n\t\t\t\t\"%\": 0\n\t\t\t},\n\t\t\tleft: {\n\t\t\t\t\"px\": 0,\n\t\t\t\t\"%\": 100\n\t\t\t}\n\t\t});\n\t\tr.left -= r.width;\n\t\tconst c$1 = _sectionPlacementObject({\n\t\t\twidth: {\n\t\t\t\t\"px\": -r.width - l.width,\n\t\t\t\t\"%\": 100\n\t\t\t},\n\t\t\theight: {\n\t\t\t\t\"px\": -t.height - b.height,\n\t\t\t\t\"%\": 100\n\t\t\t},\n\t\t\ttop: {\n\t\t\t\t\"px\": t.height,\n\t\t\t\t\"%\": 0\n\t\t\t},\n\t\t\tleft: {\n\t\t\t\t\"px\": l.width,\n\t\t\t\t\"%\": 0\n\t\t\t}\n\t\t});\n\t\tretObj[\"top\"] = t;\n\t\tretObj[\"bottom\"] = b;\n\t\tretObj[\"right\"] = r;\n\t\tretObj[\"left\"] = l;\n\t\tretObj[\"center\"] = c$1;\n\t\treturn retObj;\n\t\tfunction _sectionPlacementObject(obj) {\n\t\t\tobj.width[\"px\"] = typeof obj.width[\"px\"] !== \"undefined\" ? obj.width[\"px\"] : 0;\n\t\t\tobj.width[\"%\"] = typeof obj.width[\"%\"] !== \"undefined\" ? obj.width[\"%\"] : 0;\n\t\t\tobj.height[\"px\"] = typeof obj.height[\"px\"] !== \"undefined\" ? obj.height[\"px\"] : 0;\n\t\t\tobj.height[\"%\"] = typeof obj.height[\"%\"] !== \"undefined\" ? obj.height[\"%\"] : 0;\n\t\t\treturn {\n\t\t\t\twidth: obj.width[\"px\"] + obj.width[\"%\"] / 100 * context.width(),\n\t\t\t\theight: obj.height[\"px\"] + obj.height[\"%\"] / 100 * context.height(),\n\t\t\t\ttop: obj.top[\"px\"] + obj.top[\"%\"] / 100 * context.height() + context.gutter() / 2,\n\t\t\t\tleft: obj.left[\"px\"] + obj.left[\"%\"] / 100 * context.width() + context.gutter() / 2\n\t\t\t};\n\t\t}\n\t}\n\tclearContent(sectionType) {\n\t\tif (!sectionType) {\n\t\t\tthis.content().forEach(function(contentWidget) {\n\t\t\t\tcontentWidget.target(null);\n\t\t\t\treturn false;\n\t\t\t});\n\t\t\tselect(\"#\" + this.id() + \" > div.borderHandle\").classed(\"borderHandleDisabled\", true);\n\t\t\tdelete this._watch;\n\t\t\tthis.content([]);\n\t\t\tthis.sectionTypes([]);\n\t\t} else {\n\t\t\tconst idx = this.sectionTypes().indexOf(sectionType);\n\t\t\tif (idx >= 0) {\n\t\t\t\tif (this._watch && this.content()[idx]) delete this._watch[this.content()[idx].id()];\n\t\t\t\tthis.content()[idx].target(null);\n\t\t\t\tselect(\"#\" + this.id() + \" > div.borderHandle_\" + sectionType).classed(\"borderHandleDisabled\", true);\n\t\t\t\tthis.content().splice(idx, 1);\n\t\t\t\tthis.sectionTypes().splice(idx, 1);\n\t\t\t}\n\t\t}\n\t}\n\thasContent(sectionType, widget, title) {\n\t\treturn this.sectionTypes().indexOf(sectionType) >= 0;\n\t}\n\tsetContent(sectionType, widget, title) {\n\t\tthis.clearContent(sectionType);\n\t\ttitle = typeof title !== \"undefined\" ? title : \"\";\n\t\tif (widget) {\n\t\t\tconst cell = new Cell().surfaceBorderWidth(0).widget(widget).title(title);\n\t\t\tthis.watchWidget(widget);\n\t\t\tthis.content().push(cell);\n\t\t\tthis.sectionTypes().push(sectionType);\n\t\t}\n\t\treturn this;\n\t}\n\tgetCell(id) {\n\t\tconst idx = this.sectionTypes().indexOf(id);\n\t\tif (idx >= 0) return this.content()[idx];\n\t\treturn null;\n\t}\n\tgetContent(id) {\n\t\tconst idx = this.sectionTypes().indexOf(id);\n\t\tif (idx >= 0) return this.content()[idx].widget();\n\t\treturn null;\n\t}\n\tsetLayoutOffsets() {\n\t\tthis._offsetX = this._element.node().getBoundingClientRect().left + this.gutter() / 2;\n\t\tthis._offsetY = this._element.node().getBoundingClientRect().top + this.gutter() / 2;\n\t}\n\tdragStart(handle) {\n\t\tconst event = d3Event();\n\t\tevent.sourceEvent.stopPropagation();\n\t\tconst context = this;\n\t\tthis._dragCell = handle;\n\t\tthis._dragCellStartSize = this[handle + \"Size\"]();\n\t\tif (this[handle + \"ShrinkWrap\"]()) {\n\t\t\tthis[handle + \"Percentage\"](0);\n\t\t\tthis[handle + \"ShrinkWrap\"](false);\n\t\t}\n\t\tconst handleElm = select(\"#\" + context.id() + \" > div.borderHandle_\" + handle);\n\t\tcontext._handleTop = parseFloat(handleElm.style(\"top\").split(\"px\")[0]);\n\t\tcontext._handleLeft = parseFloat(handleElm.style(\"left\").split(\"px\")[0]);\n\t\tthis._dragPrevX = event.sourceEvent.clientX;\n\t\tthis._dragPrevY = event.sourceEvent.clientY;\n\t}\n\tdragTick(handle) {\n\t\tconst context = this;\n\t\tconst event = d3Event();\n\t\tconst xDelta = this._dragPrevX - event.sourceEvent.clientX;\n\t\tconst yDelta = this._dragPrevY - event.sourceEvent.clientY;\n\t\tswitch (handle) {\n\t\t\tcase \"top\":\n\t\t\tcase \"bottom\":\n\t\t\t\t_moveHandles(handle, yDelta);\n\t\t\t\tbreak;\n\t\t\tcase \"right\":\n\t\t\tcase \"left\":\n\t\t\t\t_moveHandles(handle, xDelta);\n\t\t\t\tbreak;\n\t\t}\n\t\tfunction _moveHandles(handle2, delta) {\n\t\t\tif (delta === 0) return;\n\t\t\tconst handles = selectAll(\"#\" + context.id() + \" > div.borderHandle\");\n\t\t\tconst grabbedHandle = select(\"#\" + context.id() + \" > div.borderHandle_\" + handle2);\n\t\t\tif (grabbedHandle.classed(\"borderHandle_top\")) {\n\t\t\t\tgrabbedHandle.style(\"top\", context._handleTop - delta + \"px\");\n\t\t\t\tcontext._cellSizes.topHeight = context._handleTop - delta;\n\t\t\t\tcontext._cellSizes.leftHeight = context._cellSizes.height;\n\t\t\t\tcontext._cellSizes.leftHeight -= context._cellSizes.topHeight;\n\t\t\t\tcontext._cellSizes.leftHeight -= context._cellSizes.bottomHeight;\n\t\t\t\tcontext._cellSizes.rightHeight = context._cellSizes.leftHeight;\n\t\t\t} else if (grabbedHandle.classed(\"borderHandle_right\")) {\n\t\t\t\tgrabbedHandle.style(\"left\", context._handleLeft - delta + \"px\");\n\t\t\t\tcontext._cellSizes.rightWidth = context._cellSizes.width - context._handleLeft + delta;\n\t\t\t} else if (grabbedHandle.classed(\"borderHandle_bottom\")) {\n\t\t\t\tgrabbedHandle.style(\"top\", context._handleTop - delta + \"px\");\n\t\t\t\tcontext._cellSizes.bottomHeight = context._cellSizes.height - context._handleTop + delta;\n\t\t\t\tcontext._cellSizes.leftHeight = context._cellSizes.height;\n\t\t\t\tcontext._cellSizes.leftHeight -= context._cellSizes.bottomHeight;\n\t\t\t\tcontext._cellSizes.leftHeight -= context._cellSizes.topHeight;\n\t\t\t\tcontext._cellSizes.rightHeight = context._cellSizes.leftHeight;\n\t\t\t} else if (grabbedHandle.classed(\"borderHandle_left\")) {\n\t\t\t\tgrabbedHandle.style(\"left\", context._handleLeft - delta + \"px\");\n\t\t\t\tcontext._cellSizes.leftWidth = context._handleLeft - delta;\n\t\t\t}\n\t\t\thandles.each(function() {\n\t\t\t\tconst handle3 = select(this);\n\t\t\t\tif (handle3.classed(\"borderHandle_top\")) {\n\t\t\t\t\thandle3.style(\"width\", context._cellSizes.width + \"px\");\n\t\t\t\t\thandle3.style(\"top\", context._cellSizes.topHeight - 3 + \"px\");\n\t\t\t\t} else if (handle3.classed(\"borderHandle_right\")) {\n\t\t\t\t\thandle3.style(\"left\", context._cellSizes.width - context._cellSizes.rightWidth + \"px\");\n\t\t\t\t\thandle3.style(\"top\", context._cellSizes.topHeight + 3 + \"px\");\n\t\t\t\t\thandle3.style(\"height\", context._cellSizes.rightHeight + \"px\");\n\t\t\t\t} else if (handle3.classed(\"borderHandle_bottom\")) {\n\t\t\t\t\thandle3.style(\"width\", context._cellSizes.width + \"px\");\n\t\t\t\t\thandle3.style(\"top\", context._cellSizes.height - context._cellSizes.bottomHeight - 3 + \"px\");\n\t\t\t\t} else if (handle3.classed(\"borderHandle_left\")) {\n\t\t\t\t\thandle3.style(\"left\", context._cellSizes.leftWidth + \"px\");\n\t\t\t\t\thandle3.style(\"height\", context._cellSizes.leftHeight + \"px\");\n\t\t\t\t\thandle3.style(\"top\", context._cellSizes.topHeight + 3 + \"px\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\tdragEnd(handle) {\n\t\tif (handle) {\n\t\t\tconst event = d3Event();\n\t\t\tconst xDelta = this._dragPrevX - event.sourceEvent.clientX;\n\t\t\tconst yDelta = this._dragPrevY - event.sourceEvent.clientY;\n\t\t\tswitch (handle) {\n\t\t\t\tcase \"top\":\n\t\t\t\t\tif (yDelta !== 0) {\n\t\t\t\t\t\tthis.topPercentage(0);\n\t\t\t\t\t\tthis.topSize(this.topSize() === 0 ? this.getContent(\"top\").getBBox().height - yDelta : this.topSize() - yDelta);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"right\":\n\t\t\t\t\tif (xDelta !== 0) {\n\t\t\t\t\t\tthis.rightPercentage(0);\n\t\t\t\t\t\tthis.rightSize(this.rightSize() === 0 ? this.getContent(\"right\").getBBox().width + xDelta : this.rightSize() + xDelta);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"bottom\":\n\t\t\t\t\tif (yDelta !== 0) {\n\t\t\t\t\t\tthis.bottomPercentage(0);\n\t\t\t\t\t\tthis.bottomSize(this.bottomSize() === 0 ? this.getContent(\"bottom\").getBBox().height + yDelta : this.bottomSize() + yDelta);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"left\":\n\t\t\t\t\tif (xDelta !== 0) {\n\t\t\t\t\t\tthis.leftPercentage(0);\n\t\t\t\t\t\tthis.leftSize(this.leftSize() === 0 ? this.getContent(\"left\").getBBox().width - xDelta : this.leftSize() - xDelta);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis._dragPrevX = event.sourceEvent.clientX;\n\t\t\tthis._dragPrevY = event.sourceEvent.clientY;\n\t\t}\n\t\tthis.render();\n\t}\n\tsize(_) {\n\t\tconst retVal = HTMLWidget.prototype.size.apply(this, arguments);\n\t\tif (arguments.length && this.contentDiv) this.contentDiv.style(\"width\", this._size.width + \"px\").style(\"height\", this._size.height + \"px\");\n\t\treturn retVal;\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tconst context = this;\n\t\telement.style(\"position\", \"relative\");\n\t\tthis.contentDiv = element.append(\"div\").classed(\"border-content\", true);\n\t\tthis._scrollBarWidth = Platform.getScrollbarWidth();\n\t\tthis._borderHandles = [\n\t\t\t\"top\",\n\t\t\t\"left\",\n\t\t\t\"right\",\n\t\t\t\"bottom\"\n\t\t];\n\t\telement.selectAll(\"div.borderHandle\").data(this._borderHandles).enter().append(\"div\").classed(\"borderHandle\", true).each(function(handle) {\n\t\t\tselect(this).classed(\"borderHandle_\" + handle, true).classed(\"borderHandleDisabled\", context.getContent(handle) === null);\n\t\t});\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\tthis._sectionTypeArr = this.sectionTypes();\n\t\tconst context = this;\n\t\telement.classed(\"design-mode\", this.designMode());\n\t\tthis.setLayoutOffsets();\n\t\tconst rows = this.contentDiv.selectAll(\".cell_\" + this._id).data(this.content(), function(d) {\n\t\t\treturn d._id;\n\t\t});\n\t\tconst rowsUpdate = rows.enter().append(\"div\").classed(\"cell_\" + this._id, true).style(\"position\", \"absolute\").each(function(d, i) {\n\t\t\tselect(this).classed(\"border-cell border-cell-\" + context._sectionTypeArr[i], true);\n\t\t\td.target(this);\n\t\t\tselect(\"#\" + context.id() + \" > div.borderHandle_\" + context._sectionTypeArr[i]).classed(\"borderHandleDisabled\", false);\n\t\t}).merge(rows);\n\t\trowsUpdate.each(function(d, idx) {\n\t\t\tconst sectionType = context.sectionTypes()[idx];\n\t\t\tif (typeof context[sectionType + \"ShrinkWrap\"] !== \"undefined\" && context[sectionType + \"ShrinkWrap\"]()) {\n\t\t\t\td.render();\n\t\t\t\tcontext._shrinkWrapBoxes[sectionType] = d.widget().getBBox(true);\n\t\t\t} else delete context._shrinkWrapBoxes[sectionType];\n\t\t});\n\t\tconst drag$1 = drag().on(\"start\", function(d, i) {\n\t\t\tcontext.dragStart.call(context, d, i);\n\t\t}).on(\"drag\", function(d, i) {\n\t\t\tcontext.dragTick.call(context, d, i);\n\t\t}).on(\"end\", function(d, i) {\n\t\t\tcontext.dragEnd.call(context, d, i);\n\t\t});\n\t\tif (this.designMode()) element.selectAll(\"#\" + this.id() + \" > div.borderHandle\").call(drag$1);\n\t\telse element.selectAll(\"#\" + this.id() + \" > div.borderHandle\").on(\".drag\", null);\n\t\tconst layoutObj = this.borderLayoutObject();\n\t\tthis.content().forEach(function(cell, i) {\n\t\t\tcell._fixedLeft = layoutObj[this.sectionTypes()[i]].left;\n\t\t\tcell._fixedTop = layoutObj[this.sectionTypes()[i]].top;\n\t\t\tcell._fixedWidth = layoutObj[this.sectionTypes()[i]].width;\n\t\t\tcell._fixedHeight = layoutObj[this.sectionTypes()[i]].height;\n\t\t\tcell._dragHandles = [];\n\t\t}, this);\n\t\trowsUpdate.style(\"left\", function(d) {\n\t\t\treturn d._fixedLeft + \"px\";\n\t\t}).style(\"top\", function(d) {\n\t\t\treturn d._fixedTop + \"px\";\n\t\t}).style(\"width\", function(d) {\n\t\t\treturn d._fixedWidth - context.gutter() + \"px\";\n\t\t}).style(\"height\", function(d) {\n\t\t\treturn d._fixedHeight - context.gutter() + \"px\";\n\t\t}).each(function(d) {\n\t\t\td._placeholderElement.attr(\"draggable\", context.designMode()).selectAll(\".dragHandle\").attr(\"draggable\", context.designMode());\n\t\t\td.surfacePadding(context.surfacePadding()).resize();\n\t\t});\n\t\trows.exit().each(function(d) {\n\t\t\td.target(null);\n\t\t}).remove();\n\t\tthis.getCellSizes();\n\t\telement.selectAll(\"#\" + this.id() + \" > div.borderHandle\").each(function() {\n\t\t\tconst handle = select(this);\n\t\t\tif (handle.classed(\"borderHandle_top\")) {\n\t\t\t\thandle.style(\"width\", context._cellSizes.width + \"px\");\n\t\t\t\thandle.style(\"top\", context._cellSizes.topHeight - 3 + \"px\");\n\t\t\t} else if (handle.classed(\"borderHandle_right\")) {\n\t\t\t\thandle.style(\"left\", context._cellSizes.width - context._cellSizes.rightWidth + \"px\");\n\t\t\t\thandle.style(\"top\", context._cellSizes.topHeight + 3 + \"px\");\n\t\t\t\thandle.style(\"height\", context._cellSizes.rightHeight + \"px\");\n\t\t\t} else if (handle.classed(\"borderHandle_bottom\")) {\n\t\t\t\thandle.style(\"width\", context._cellSizes.width + \"px\");\n\t\t\t\thandle.style(\"top\", context._cellSizes.height - context._cellSizes.bottomHeight - 3 + \"px\");\n\t\t\t} else if (handle.classed(\"borderHandle_left\")) {\n\t\t\t\thandle.style(\"left\", context._cellSizes.leftWidth + \"px\");\n\t\t\t\thandle.style(\"height\", context._cellSizes.leftHeight + \"px\");\n\t\t\t\thandle.style(\"top\", context._cellSizes.topHeight + 3 + \"px\");\n\t\t\t}\n\t\t});\n\t}\n\tgetCellSizes() {\n\t\tconst context = this;\n\t\tcontext._cellSizes = {};\n\t\tconst contentRect = this.element().node().getBoundingClientRect();\n\t\tcontext._cellSizes.width = contentRect.width;\n\t\tcontext._cellSizes.height = contentRect.height;\n\t\tthis.element().selectAll(\"#\" + this.id() + \" > div > div.border-cell\").each(function() {\n\t\t\tconst cell = select(this);\n\t\t\tif (typeof cell.node === \"function\") {\n\t\t\t\tconst rect = cell.node().getBoundingClientRect();\n\t\t\t\tif (cell.classed(\"border-cell-top\")) context._cellSizes.topHeight = rect.height;\n\t\t\t\telse if (cell.classed(\"border-cell-left\")) {\n\t\t\t\t\tcontext._cellSizes.leftWidth = rect.width;\n\t\t\t\t\tcontext._cellSizes.leftHeight = rect.height;\n\t\t\t\t} else if (cell.classed(\"border-cell-right\")) {\n\t\t\t\t\tcontext._cellSizes.rightWidth = rect.width;\n\t\t\t\t\tcontext._cellSizes.rightHeight = rect.height;\n\t\t\t\t} else if (cell.classed(\"border-cell-bottom\")) context._cellSizes.bottomHeight = rect.height;\n\t\t\t}\n\t\t});\n\t\t[\n\t\t\t\"height\",\n\t\t\t\"width\",\n\t\t\t\"topHeight\",\n\t\t\t\"bottomHeight\",\n\t\t\t\"leftHeight\",\n\t\t\t\"rightHeight\",\n\t\t\t\"leftWidth\",\n\t\t\t\"rightWidth\"\n\t\t].forEach(function(size) {\n\t\t\tcontext._cellSizes[size] = context._cellSizes[size] === void 0 ? 0 : context._cellSizes[size];\n\t\t});\n\t}\n\tpostUpdate(domNode, element) {\n\t\tconst context = this;\n\t\tthis.content().forEach(function(n) {\n\t\t\tif (n._element.node() !== null && n.widget()) {\n\t\t\t\tconst prevBox = n.widget().getBBox(false, true);\n\t\t\t\tconst currBox = n.widget().getBBox(true, true);\n\t\t\t\tif (prevBox.width !== currBox.width || prevBox.height !== currBox.height) context.lazyRender();\n\t\t\t}\n\t\t});\n\t}\n\texit(domNode, element) {\n\t\tthis.content().forEach((w) => w.target(null));\n\t\tsuper.exit(domNode, element);\n\t}\n};\nBorder.prototype._class += \" layout_Border\";\nBorder.prototype.publish(\"designMode\", false, \"boolean\", \"Design Mode\", null, { tags: [\"Basic\"] });\nBorder.prototype.publish(\"content\", [], \"widgetArray\", \"widgets\", null, { tags: [\"Intermediate\"] });\nBorder.prototype.publish(\"gutter\", 0, \"number\", \"Gap Between Widgets\", null, { tags: [\"Basic\"] });\nBorder.prototype.publish(\"topShrinkWrap\", false, \"boolean\", \"'Top' Cell shrinks to fit content\", null, { tags: [\"Intermediate\"] });\nBorder.prototype.publish(\"leftShrinkWrap\", false, \"boolean\", \"'Left' Cell shrinks to fit content\", null, { tags: [\"Intermediate\"] });\nBorder.prototype.publish(\"rightShrinkWrap\", false, \"boolean\", \"'Right' Cell shrinks to fit content\", null, { tags: [\"Intermediate\"] });\nBorder.prototype.publish(\"bottomShrinkWrap\", false, \"boolean\", \"'Bottom' Cell shrinks to fit content\", null, { tags: [\"Intermediate\"] });\nBorder.prototype.publish(\"topSize\", 0, \"number\", \"Height of the 'Top' Cell (px)\", null, { tags: [\"Private\"] });\nBorder.prototype.publish(\"leftSize\", 0, \"number\", \"Width of the 'Left' Cell (px)\", null, { tags: [\"Private\"] });\nBorder.prototype.publish(\"rightSize\", 0, \"number\", \"Width of the 'Right' Cell (px)\", null, { tags: [\"Private\"] });\nBorder.prototype.publish(\"bottomSize\", 0, \"number\", \"Height of the 'Bottom' Cell (px)\", null, { tags: [\"Private\"] });\nBorder.prototype.publish(\"topPercentage\", 20, \"number\", \"Percentage (of parent) Height of the 'Top' Cell\", null, { tags: [\"Private\"] });\nBorder.prototype.publish(\"leftPercentage\", 20, \"number\", \"Percentage (of parent) Width of the 'Left' Cell\", null, { tags: [\"Private\"] });\nBorder.prototype.publish(\"rightPercentage\", 20, \"number\", \"Percentage (of parent) Width of the 'Right' Cell\", null, { tags: [\"Private\"] });\nBorder.prototype.publish(\"bottomPercentage\", 20, \"number\", \"Percentage (of parent) Height of the 'Bottom' Cell\", null, { tags: [\"Private\"] });\nBorder.prototype.publish(\"surfacePadding\", 0, \"number\", \"Cell Padding (px)\", null, { tags: [\"Intermediate\"] });\nBorder.prototype.publish(\"sectionTypes\", [], \"array\", \"Section Types sharing an index with 'content' - Used to determine position/size.\", null, { tags: [\"Private\"] });\n\n//#endregion\n//#region src/Border2.ts\nvar WidgetDiv = class {\n\t_div;\n\t_overlay = false;\n\t_overflowX = \"visible\";\n\t_overflowY = \"visible\";\n\t_widget;\n\tconstructor(div) {\n\t\tthis._div = div;\n\t}\n\toverlay(_) {\n\t\tif (!arguments.length) return this._overlay;\n\t\tthis._overlay = _;\n\t\treturn this;\n\t}\n\toverflowX(_) {\n\t\tif (!arguments.length) return this._overflowX;\n\t\tthis._overflowX = _;\n\t\tthis._div.style(\"overflow-x\", _);\n\t\treturn this;\n\t}\n\toverflowY(_) {\n\t\tif (!arguments.length) return this._overflowY;\n\t\tthis._overflowY = _;\n\t\tthis._div.style(\"overflow-y\", _);\n\t\treturn this;\n\t}\n\telement() {\n\t\treturn this._div;\n\t}\n\tnode() {\n\t\treturn this._div.node();\n\t}\n\twidget(_) {\n\t\tif (!arguments.length) return this._widget;\n\t\tif (this._widget !== _) {\n\t\t\tif (this._widget) this._widget.target(null);\n\t\t\tthis._widget = _;\n\t\t\tif (this._widget) this._widget.target(this._div.node());\n\t\t}\n\t\treturn this;\n\t}\n\tresize(size) {\n\t\tif (this._widget) {\n\t\t\tthis._div.style(\"width\", `${size.width}px`).style(\"height\", `${size.height}px`);\n\t\t\tthis._widget.resize(size);\n\t\t}\n\t\treturn this;\n\t}\n\tasync render(getBBox, availableHeight, availableWidth) {\n\t\tlet overflowX = this.overflowX();\n\t\tif (!this.overlay() && overflowX === \"visible\") overflowX = null;\n\t\tlet overflowY = this.overflowY();\n\t\tif (!this.overlay() && overflowY === \"visible\") overflowY = null;\n\t\tthis._div.style(\"height\", this.overlay() ? \"0px\" : null).style(\"overflow-x\", overflowX).style(\"overflow-y\", overflowY);\n\t\tif (this._widget) return this._widget.renderPromise().then((w) => {\n\t\t\tif (getBBox && this._widget.visible()) {\n\t\t\t\tconst retVal = this._widget.getBBox();\n\t\t\t\tretVal.width += 8;\n\t\t\t\tif (availableHeight !== void 0 && retVal.height > availableHeight) retVal.width += Platform.getScrollbarWidth();\n\t\t\t\tif (availableWidth !== void 0 && retVal.width > availableWidth) retVal.height += Platform.getScrollbarWidth();\n\t\t\t\tif (this.overlay()) retVal.height = 0;\n\t\t\t\telse retVal.height += 4;\n\t\t\t\treturn retVal;\n\t\t\t}\n\t\t\treturn getBBox ? {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0\n\t\t\t} : void 0;\n\t\t});\n\t\telse return Promise.resolve(getBBox ? {\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t} : void 0);\n\t}\n};\nvar Border2 = class extends HTMLWidget {\n\t_bodyElement;\n\t_topWA;\n\t_leftWA;\n\t_centerWA;\n\t_rightWA;\n\t_bottomWA;\n\t_topPrevOverflow;\n\t_leftPrevOverflow;\n\t_rightPrevOverflow;\n\t_bottomPrevOverflow;\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tconst topElement = element.append(\"header\");\n\t\tthis._bodyElement = element.append(\"div\").attr(\"class\", \"body\");\n\t\tconst centerElement = this._bodyElement.append(\"div\").attr(\"class\", \"center\");\n\t\tconst leftElement = this._bodyElement.append(\"div\").attr(\"class\", \"lhs\");\n\t\tconst rightElement = this._bodyElement.append(\"div\").attr(\"class\", \"rhs\");\n\t\tconst bottomElement = element.append(\"div\").attr(\"class\", \"footer\");\n\t\tthis._topWA = new WidgetDiv(topElement);\n\t\tthis._centerWA = new WidgetDiv(centerElement);\n\t\tthis._leftWA = new WidgetDiv(leftElement);\n\t\tthis._rightWA = new WidgetDiv(rightElement);\n\t\tthis._bottomWA = new WidgetDiv(bottomElement);\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\tthis._topWA.element().style(\"display\", this.showTop() ? null : \"none\");\n\t\tthis._rightWA.element().style(\"display\", this.showRight() ? null : \"none\");\n\t\tthis._bottomWA.element().style(\"display\", this.showBottom() ? null : \"none\");\n\t\tthis._leftWA.element().style(\"display\", this.showLeft() ? null : \"none\");\n\t\tif (this.topOverflowX() !== this._topWA.overflowX()) this._topWA.overflowX(this.topOverflowX());\n\t\tif (this.rightOverflowX() !== this._rightWA.overflowX()) this._rightWA.overflowX(this.rightOverflowX());\n\t\tif (this.bottomOverflowX() !== this._bottomWA.overflowX()) this._bottomWA.overflowX(this.bottomOverflowX());\n\t\tif (this.leftOverflowX() !== this._leftWA.overflowX()) this._leftWA.overflowX(this.leftOverflowX());\n\t\tif (this.topOverflowY() !== this._topWA.overflowY()) this._topWA.overflowY(this.topOverflowY());\n\t\tif (this.rightOverflowY() !== this._rightWA.overflowY()) this._rightWA.overflowY(this.rightOverflowY());\n\t\tif (this.bottomOverflowY() !== this._bottomWA.overflowY()) this._bottomWA.overflowY(this.bottomOverflowY());\n\t\tif (this.leftOverflowY() !== this._leftWA.overflowY()) this._leftWA.overflowY(this.leftOverflowY());\n\t\tthis.element().style(\"width\", `${this.width()}px`).style(\"height\", `${this.height()}px`);\n\t}\n\ttargetNull(w) {\n\t\tif (w) w.target(null);\n\t}\n\texit(domNode, element) {\n\t\tthis.targetNull(this.center());\n\t\tthis.targetNull(this.bottom());\n\t\tthis.targetNull(this.right());\n\t\tthis.targetNull(this.left());\n\t\tthis.targetNull(this.top());\n\t\tsuper.exit(domNode, element);\n\t}\n\tswap(sectionA, sectionB) {\n\t\tconst a$1 = this[sectionA]();\n\t\tconst b = this[sectionB]();\n\t\tthis.targetNull(a$1);\n\t\tthis.targetNull(b);\n\t\tthis[`_${sectionA}WA`].widget(null);\n\t\tthis[`_${sectionB}WA`].widget(null);\n\t\tthis[sectionA](b);\n\t\tthis[sectionB](a$1);\n\t\treturn this;\n\t}\n\trender(callback) {\n\t\treturn super.render((w) => {\n\t\t\tif (this._topWA) this._topWA.widget(this.top()).overlay(this.topOverlay()).render(true).then(async (topBBox) => {\n\t\t\t\tconst bottomBBox = await this._bottomWA.widget(this.bottom()).render(true, void 0, this.width());\n\t\t\t\tconst availableHeight = this.height() - (topBBox.height + bottomBBox.height);\n\t\t\t\tconst leftBBox = await this._leftWA.widget(this.left()).render(true, availableHeight);\n\t\t\t\tconst rightBBox = await this._rightWA.widget(this.right()).render(true, availableHeight);\n\t\t\t\tif (this.bottomHeight_exists()) bottomBBox.height = this.bottomHeight();\n\t\t\t\tconst bodyWidth = this.width() - (leftBBox.width + rightBBox.width);\n\t\t\t\tconst bodyHeight = this.height() - (topBBox.height + bottomBBox.height);\n\t\t\t\tconst centerOverflowX = this.centerOverflowX();\n\t\t\t\tconst centerOverflowY = this.centerOverflowY();\n\t\t\t\tconst scrollCenterX = [\"auto\", \"scroll\"].indexOf(centerOverflowX) !== -1;\n\t\t\t\tconst scrollCenterY = [\"auto\", \"scroll\"].indexOf(centerOverflowY) !== -1;\n\t\t\t\tif (scrollCenterX || scrollCenterY) this._centerWA.overflowX(this.centerOverflowX()).overflowY(this.centerOverflowY()).widget(this.center()).resize({\n\t\t\t\t\twidth: bodyWidth,\n\t\t\t\t\theight: bodyHeight\n\t\t\t\t}).render();\n\t\t\t\tthis._bodyElement.style(\"height\", `${bodyHeight}px`);\n\t\t\t\tconst promises = [\n\t\t\t\t\tthis._topWA.overflowX(this.topOverflowX()).overflowY(this.topOverflowY()).resize({\n\t\t\t\t\t\twidth: this.width(),\n\t\t\t\t\t\theight: topBBox.height\n\t\t\t\t\t}).render(),\n\t\t\t\t\tthis._leftWA.overflowX(this.leftOverflowX()).overflowY(this.leftOverflowY()).resize({\n\t\t\t\t\t\twidth: leftBBox.width,\n\t\t\t\t\t\theight: bodyHeight\n\t\t\t\t\t}).render(),\n\t\t\t\t\tthis._rightWA.overflowX(this.rightOverflowX()).overflowY(this.rightOverflowY()).resize({\n\t\t\t\t\t\twidth: rightBBox.width,\n\t\t\t\t\t\theight: bodyHeight\n\t\t\t\t\t}).render(),\n\t\t\t\t\tthis._centerWA.overflowX(this.centerOverflowX()).overflowY(this.centerOverflowY()).widget(this.center()).resize({\n\t\t\t\t\t\twidth: bodyWidth,\n\t\t\t\t\t\theight: bodyHeight\n\t\t\t\t\t}).render(),\n\t\t\t\t\tthis._bottomWA.overflowX(this.bottomOverflowX()).overflowY(this.bottomOverflowY()).resize({\n\t\t\t\t\t\twidth: this.width(),\n\t\t\t\t\t\theight: bottomBBox.height\n\t\t\t\t\t}).render()\n\t\t\t\t];\n\t\t\t\tPromise.all(promises).then((promises$1) => {\n\t\t\t\t\tif (callback) callback(this);\n\t\t\t\t});\n\t\t\t});\n\t\t\telse if (callback) callback(this);\n\t\t});\n\t}\n};\nBorder2.prototype._class += \" layout_Border2\";\nBorder2.prototype.publish(\"showTop\", true, \"boolean\", \"If true, top widget adapter will display\");\nBorder2.prototype.publish(\"showRight\", true, \"boolean\", \"If true, right widget adapter will display\");\nBorder2.prototype.publish(\"showBottom\", true, \"boolean\", \"If true, bottom widget adapter will display\");\nBorder2.prototype.publish(\"showLeft\", true, \"boolean\", \"If true, left widget adapter will display\");\nBorder2.prototype.publish(\"topOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the top widget adapter\", [\n\t\"hidden\",\n\t\"scroll\",\n\t\"visible\",\n\t\"auto\"\n]);\nBorder2.prototype.publish(\"rightOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the right widget adapter\", [\n\t\"hidden\",\n\t\"scroll\",\n\t\"visible\",\n\t\"auto\"\n]);\nBorder2.prototype.publish(\"bottomOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the bottom widget adapter\", [\n\t\"hidden\",\n\t\"scroll\",\n\t\"visible\",\n\t\"auto\"\n]);\nBorder2.prototype.publish(\"leftOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the left widget adapter\", [\n\t\"hidden\",\n\t\"scroll\",\n\t\"visible\",\n\t\"auto\"\n]);\nBorder2.prototype.publish(\"centerOverflowX\", \"visible\", \"set\", \"Sets the overflow-x css style for the center widget adapter\", [\n\t\"hidden\",\n\t\"scroll\",\n\t\"visible\",\n\t\"auto\"\n]);\nBorder2.prototype.publish(\"topOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the top widget adapter\", [\n\t\"hidden\",\n\t\"scroll\",\n\t\"visible\",\n\t\"auto\"\n]);\nBorder2.prototype.publish(\"rightOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the right widget adapter\", [\n\t\"hidden\",\n\t\"scroll\",\n\t\"visible\",\n\t\"auto\"\n]);\nBorder2.prototype.publish(\"bottomOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the bottom widget adapter\", [\n\t\"hidden\",\n\t\"scroll\",\n\t\"visible\",\n\t\"auto\"\n]);\nBorder2.prototype.publish(\"leftOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the left widget adapter\", [\n\t\"hidden\",\n\t\"scroll\",\n\t\"visible\",\n\t\"auto\"\n]);\nBorder2.prototype.publish(\"centerOverflowY\", \"visible\", \"set\", \"Sets the overflow-y css style for the center widget adapter\", [\n\t\"hidden\",\n\t\"scroll\",\n\t\"visible\",\n\t\"auto\"\n]);\nBorder2.prototype.publish(\"top\", null, \"widget\", \"Top Widget\", void 0, { render: false });\nBorder2.prototype.publish(\"topOverlay\", false, \"boolean\", \"Overlay Top Widget\");\nBorder2.prototype.publish(\"left\", null, \"widget\", \"Left Widget\", void 0, { render: false });\nBorder2.prototype.publish(\"center\", null, \"widget\", \"Center Widget\", void 0, { render: false });\nBorder2.prototype.publish(\"right\", null, \"widget\", \"Right Widget\", void 0, { render: false });\nBorder2.prototype.publish(\"bottom\", null, \"widget\", \"Bottom Widget\", void 0, { render: false });\nBorder2.prototype.publish(\"bottomHeight\", null, \"number\", \"Bottom Fixed Height\", void 0, { optional: true });\n\n//#endregion\n//#region src/Carousel.ts\nvar Carousel = class extends HTMLWidget {\n\t_prevActive = 0;\n\t_root;\n\tactiveWidget() {\n\t\treturn this.widgets()[this.active()];\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tthis._root = element.append(\"div\").attr(\"id\", `${this.id()}_root`);\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\tconst active = this.active();\n\t\tconst width = this.width();\n\t\tthis._root.style(\"width\", `${width}px`).style(\"height\", `${this.height()}px`);\n\t\tconst widgetElements = this._root.selectAll(`#${this.id()}_root > .carouselItem`).data(this.widgets(), (d) => d.id());\n\t\tconst update = widgetElements.enter().append(\"div\").attr(\"class\", \"carouselItem\").each(function(w) {\n\t\t\tw.target(this);\n\t\t}).merge(widgetElements).style(\"left\", (d, i) => `${(i - this._prevActive) * width}px`).style(\"width\", `${width}px`);\n\t\tif (this._prevActive !== active) {\n\t\t\tupdate.style(\"display\", (d, i) => i === this._prevActive || i === active ? null : \"none\").transition().duration(this.transitionDuration()).style(\"left\", (d, i) => `${(i - active) * width}px`).on(\"end\", function(d, i) {\n\t\t\t\tselect(this).style(\"display\", () => i === active ? null : \"none\");\n\t\t\t});\n\t\t\tthis._prevActive = active;\n\t\t}\n\t\twidgetElements.exit().each(function(w) {\n\t\t\tw.target(null);\n\t\t}).remove();\n\t}\n\texit(domNode, element) {\n\t\tthis.widgets().forEach((w) => w.target(null));\n\t\tsuper.exit(domNode, element);\n\t}\n\trender(callback) {\n\t\treturn super.render((w) => {\n\t\t\tif (!this.visible() || this.isDOMHidden()) {\n\t\t\t\tif (callback) callback(w);\n\t\t\t} else {\n\t\t\t\tconst aw = this.activeWidget();\n\t\t\t\tif (aw) aw.resize(this.size()).render((w2) => {\n\t\t\t\t\tif (callback) callback(w);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n};\nCarousel.prototype._class += \" layout_Carousel\";\nCarousel.prototype.publish(\"widgets\", [], \"widgetArray\", \"Widgets\", null, { render: false });\nCarousel.prototype.publish(\"active\", 0, \"number\", \"Active widget\");\nCarousel.prototype.publish(\"transitionDuration\", 500, \"number\", \"Transition duration\");\n\n//#endregion\n//#region ../../node_modules/d3-path/src/path.js\nvar pi$1 = Math.PI, tau$1 = 2 * pi$1, epsilon = 1e-6, tauEpsilon = tau$1 - epsilon;\nfunction Path() {\n\tthis._x0 = this._y0 = this._x1 = this._y1 = null;\n\tthis._ = \"\";\n}\nfunction path() {\n\treturn new Path();\n}\nPath.prototype = path.prototype = {\n\tconstructor: Path,\n\tmoveTo: function(x, y) {\n\t\tthis._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n\t},\n\tclosePath: function() {\n\t\tif (this._x1 !== null) {\n\t\t\tthis._x1 = this._x0, this._y1 = this._y0;\n\t\t\tthis._ += \"Z\";\n\t\t}\n\t},\n\tlineTo: function(x, y) {\n\t\tthis._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n\t},\n\tquadraticCurveTo: function(x1, y1, x, y) {\n\t\tthis._ += \"Q\" + +x1 + \",\" + +y1 + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n\t},\n\tbezierCurveTo: function(x1, y1, x2, y2, x, y) {\n\t\tthis._ += \"C\" + +x1 + \",\" + +y1 + \",\" + +x2 + \",\" + +y2 + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n\t},\n\tarcTo: function(x1, y1, x2, y2, r) {\n\t\tx1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\t\tvar x0 = this._x1, y0 = this._y1, x21 = x2 - x1, y21 = y2 - y1, x01 = x0 - x1, y01 = y0 - y1, l01_2 = x01 * x01 + y01 * y01;\n\t\tif (r < 0) throw new Error(\"negative radius: \" + r);\n\t\tif (this._x1 === null) this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n\t\telse if (!(l01_2 > epsilon));\n\t\telse if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n\t\telse {\n\t\t\tvar x20 = x2 - x0, y20 = y2 - y0, l21_2 = x21 * x21 + y21 * y21, l20_2 = x20 * x20 + y20 * y20, l21 = Math.sqrt(l21_2), l01 = Math.sqrt(l01_2), l = r * Math.tan((pi$1 - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2), t01 = l / l01, t21 = l / l21;\n\t\t\tif (Math.abs(t01 - 1) > epsilon) this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n\t\t\tthis._ += \"A\" + r + \",\" + r + \",0,0,\" + +(y01 * x20 > x01 * y20) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n\t\t}\n\t},\n\tarc: function(x, y, r, a0, a1, ccw) {\n\t\tx = +x, y = +y, r = +r, ccw = !!ccw;\n\t\tvar dx = r * Math.cos(a0), dy = r * Math.sin(a0), x0 = x + dx, y0 = y + dy, cw = 1 ^ ccw, da = ccw ? a0 - a1 : a1 - a0;\n\t\tif (r < 0) throw new Error(\"negative radius: \" + r);\n\t\tif (this._x1 === null) this._ += \"M\" + x0 + \",\" + y0;\n\t\telse if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) this._ += \"L\" + x0 + \",\" + y0;\n\t\tif (!r) return;\n\t\tif (da < 0) da = da % tau$1 + tau$1;\n\t\tif (da > tauEpsilon) this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n\t\telse if (da > epsilon) this._ += \"A\" + r + \",\" + r + \",0,\" + +(da >= pi$1) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n\t},\n\trect: function(x, y, w, h) {\n\t\tthis._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + +w + \"v\" + +h + \"h\" + -w + \"Z\";\n\t},\n\ttoString: function() {\n\t\treturn this._;\n\t}\n};\nvar path_default = path;\n\n//#endregion\n//#region ../../node_modules/d3-shape/src/constant.js\nfunction constant_default(x) {\n\treturn function constant() {\n\t\treturn x;\n\t};\n}\n\n//#endregion\n//#region ../../node_modules/d3-shape/src/math.js\nvar pi = Math.PI;\nvar halfPi = pi / 2;\nvar tau = 2 * pi;\n\n//#endregion\n//#region ../../node_modules/d3-shape/src/symbol/circle.js\nvar circle_default = { draw: function(context, size) {\n\tvar r = Math.sqrt(size / pi);\n\tcontext.moveTo(r, 0);\n\tcontext.arc(0, 0, r, 0, tau);\n} };\n\n//#endregion\n//#region ../../node_modules/d3-shape/src/symbol/cross.js\nvar cross_default = { draw: function(context, size) {\n\tvar r = Math.sqrt(size / 5) / 2;\n\tcontext.moveTo(-3 * r, -r);\n\tcontext.lineTo(-r, -r);\n\tcontext.lineTo(-r, -3 * r);\n\tcontext.lineTo(r, -3 * r);\n\tcontext.lineTo(r, -r);\n\tcontext.lineTo(3 * r, -r);\n\tcontext.lineTo(3 * r, r);\n\tcontext.lineTo(r, r);\n\tcontext.lineTo(r, 3 * r);\n\tcontext.lineTo(-r, 3 * r);\n\tcontext.lineTo(-r, r);\n\tcontext.lineTo(-3 * r, r);\n\tcontext.closePath();\n} };\n\n//#endregion\n//#region ../../node_modules/d3-shape/src/symbol/diamond.js\nvar tan30 = Math.sqrt(1 / 3), tan30_2 = tan30 * 2;\nvar diamond_default = { draw: function(context, size) {\n\tvar y = Math.sqrt(size / tan30_2), x = y * tan30;\n\tcontext.moveTo(0, -y);\n\tcontext.lineTo(x, 0);\n\tcontext.lineTo(0, y);\n\tcontext.lineTo(-x, 0);\n\tcontext.closePath();\n} };\n\n//#endregion\n//#region ../../node_modules/d3-shape/src/symbol/star.js\nvar ka = .8908130915292852, kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10), kx = Math.sin(tau / 10) * kr, ky = -Math.cos(tau / 10) * kr;\nvar star_default = { draw: function(context, size) {\n\tvar r = Math.sqrt(size * ka), x = kx * r, y = ky * r;\n\tcontext.moveTo(0, -r);\n\tcontext.lineTo(x, y);\n\tfor (var i = 1; i < 5; ++i) {\n\t\tvar a$1 = tau * i / 5, c$1 = Math.cos(a$1), s$1 = Math.sin(a$1);\n\t\tcontext.lineTo(s$1 * r, -c$1 * r);\n\t\tcontext.lineTo(c$1 * x - s$1 * y, s$1 * x + c$1 * y);\n\t}\n\tcontext.closePath();\n} };\n\n//#endregion\n//#region ../../node_modules/d3-shape/src/symbol/square.js\nvar square_default = { draw: function(context, size) {\n\tvar w = Math.sqrt(size), x = -w / 2;\n\tcontext.rect(x, x, w, w);\n} };\n\n//#endregion\n//#region ../../node_modules/d3-shape/src/symbol/triangle.js\nvar sqrt3 = Math.sqrt(3);\nvar triangle_default = { draw: function(context, size) {\n\tvar y = -Math.sqrt(size / (sqrt3 * 3));\n\tcontext.moveTo(0, y * 2);\n\tcontext.lineTo(-sqrt3 * y, -y);\n\tcontext.lineTo(sqrt3 * y, -y);\n\tcontext.closePath();\n} };\n\n//#endregion\n//#region ../../node_modules/d3-shape/src/symbol/wye.js\nvar c = -.5, s = Math.sqrt(3) / 2, k = 1 / Math.sqrt(12), a = (k / 2 + 1) * 3;\nvar wye_default = { draw: function(context, size) {\n\tvar r = Math.sqrt(size / a), x0 = r / 2, y0 = r * k, x1 = x0, y1 = r * k + r, x2 = -x1, y2 = y1;\n\tcontext.moveTo(x0, y0);\n\tcontext.lineTo(x1, y1);\n\tcontext.lineTo(x2, y2);\n\tcontext.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n\tcontext.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n\tcontext.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n\tcontext.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n\tcontext.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n\tcontext.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n\tcontext.closePath();\n} };\n\n//#endregion\n//#region ../../node_modules/d3-shape/src/symbol.js\nfunction symbol_default() {\n\tvar type = constant_default(circle_default), size = constant_default(64), context = null;\n\tfunction symbol() {\n\t\tvar buffer;\n\t\tif (!context) context = buffer = path_default();\n\t\ttype.apply(this, arguments).draw(context, +size.apply(this, arguments));\n\t\tif (buffer) return context = null, buffer + \"\" || null;\n\t}\n\tsymbol.type = function(_) {\n\t\treturn arguments.length ? (type = typeof _ === \"function\" ? _ : constant_default(_), symbol) : type;\n\t};\n\tsymbol.size = function(_) {\n\t\treturn arguments.length ? (size = typeof _ === \"function\" ? _ : constant_default(+_), symbol) : size;\n\t};\n\tsymbol.context = function(_) {\n\t\treturn arguments.length ? (context = _ == null ? null : _, symbol) : context;\n\t};\n\treturn symbol;\n}\n\n//#endregion\n//#region ../../node_modules/d3-svg-legend/indexRollupNext.js\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function(obj) {\n\treturn typeof obj;\n} : function(obj) {\n\treturn obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\nvar d3_identity = function d3_identity$1(d) {\n\treturn d;\n};\nvar d3_reverse = function d3_reverse$1(arr) {\n\tvar mirror = [];\n\tfor (var i = 0, l = arr.length; i < l; i++) mirror[i] = arr[l - i - 1];\n\treturn mirror;\n};\nvar d3_textWrapping = function d3_textWrapping$1(text, width) {\n\ttext.each(function() {\n\t\tvar text$1 = select(this), words = text$1.text().split(/\\s+/).reverse(), word, line = [], lineHeight = 1.2;\n\t\ttext$1.attr(\"y\");\n\t\tvar dy = parseFloat(text$1.attr(\"dy\")) || 0, tspan = text$1.text(null).append(\"tspan\").attr(\"x\", 0).attr(\"dy\", dy + \"em\");\n\t\twhile (word = words.pop()) {\n\t\t\tline.push(word);\n\t\t\ttspan.text(line.join(\" \"));\n\t\t\tif (tspan.node().getComputedTextLength() > width && line.length > 1) {\n\t\t\t\tline.pop();\n\t\t\t\ttspan.text(line.join(\" \"));\n\t\t\t\tline = [word];\n\t\t\t\ttspan = text$1.append(\"tspan\").attr(\"x\", 0).attr(\"dy\", lineHeight + dy + \"em\").text(word);\n\t\t\t}\n\t\t}\n\t});\n};\nvar d3_mergeLabels = function d3_mergeLabels$1() {\n\tvar gen = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];\n\tvar labels = arguments[1];\n\tvar domain = arguments[2];\n\tvar range = arguments[3];\n\tvar labelDelimiter = arguments[4];\n\tif ((typeof labels === \"undefined\" ? \"undefined\" : _typeof(labels)) === \"object\") {\n\t\tif (labels.length === 0) return gen;\n\t\tvar i = labels.length;\n\t\tfor (; i < gen.length; i++) labels.push(gen[i]);\n\t\treturn labels;\n\t} else if (typeof labels === \"function\") {\n\t\tvar customLabels = [];\n\t\tvar genLength = gen.length;\n\t\tfor (var _i = 0; _i < genLength; _i++) customLabels.push(labels({\n\t\t\ti: _i,\n\t\t\tgenLength,\n\t\t\tgeneratedLabels: gen,\n\t\t\tdomain,\n\t\t\trange,\n\t\t\tlabelDelimiter\n\t\t}));\n\t\treturn customLabels;\n\t}\n\treturn gen;\n};\nvar d3_linearLegend = function d3_linearLegend$1(scale, cells, labelFormat) {\n\tvar data = [];\n\tif (cells.length > 1) data = cells;\n\telse {\n\t\tvar domain = scale.domain(), increment = (domain[domain.length - 1] - domain[0]) / (cells - 1);\n\t\tvar i = 0;\n\t\tfor (; i < cells; i++) data.push(domain[0] + i * increment);\n\t}\n\tvar labels = data.map(labelFormat);\n\treturn {\n\t\tdata,\n\t\tlabels,\n\t\tfeature: function feature(d) {\n\t\t\treturn scale(d);\n\t\t}\n\t};\n};\nvar d3_quantLegend = function d3_quantLegend$1(scale, labelFormat, labelDelimiter) {\n\tvar labels = scale.range().map(function(d) {\n\t\tvar invert = scale.invertExtent(d);\n\t\treturn labelFormat(invert[0]) + \" \" + labelDelimiter + \" \" + labelFormat(invert[1]);\n\t});\n\treturn {\n\t\tdata: scale.range(),\n\t\tlabels,\n\t\tfeature: d3_identity\n\t};\n};\nvar d3_ordinalLegend = function d3_ordinalLegend$1(scale) {\n\treturn {\n\t\tdata: scale.domain(),\n\t\tlabels: scale.domain(),\n\t\tfeature: function feature(d) {\n\t\t\treturn scale(d);\n\t\t}\n\t};\n};\nvar d3_cellOver = function d3_cellOver$1(cellDispatcher, d, obj) {\n\tcellDispatcher.call(\"cellover\", obj, d);\n};\nvar d3_cellOut = function d3_cellOut$1(cellDispatcher, d, obj) {\n\tcellDispatcher.call(\"cellout\", obj, d);\n};\nvar d3_cellClick = function d3_cellClick$1(cellDispatcher, d, obj) {\n\tcellDispatcher.call(\"cellclick\", obj, d);\n};\nvar helper = {\n\td3_drawShapes: function d3_drawShapes(shape, shapes, shapeHeight, shapeWidth, shapeRadius, path$1) {\n\t\tif (shape === \"rect\") shapes.attr(\"height\", shapeHeight).attr(\"width\", shapeWidth);\n\t\telse if (shape === \"circle\") shapes.attr(\"r\", shapeRadius);\n\t\telse if (shape === \"line\") shapes.attr(\"x1\", 0).attr(\"x2\", shapeWidth).attr(\"y1\", 0).attr(\"y2\", 0);\n\t\telse if (shape === \"path\") shapes.attr(\"d\", path$1);\n\t},\n\td3_addText: function d3_addText(svg, enter, labels, classPrefix, labelWidth) {\n\t\tenter.append(\"text\").attr(\"class\", classPrefix + \"label\");\n\t\tvar text = svg.selectAll(\"g.\" + classPrefix + \"cell text.\" + classPrefix + \"label\").data(labels).text(d3_identity);\n\t\tif (labelWidth) svg.selectAll(\"g.\" + classPrefix + \"cell text.\" + classPrefix + \"label\").call(d3_textWrapping, labelWidth);\n\t\treturn text;\n\t},\n\td3_calcType: function d3_calcType(scale, ascending, cells, labels, labelFormat, labelDelimiter) {\n\t\tvar type = scale.invertExtent ? d3_quantLegend(scale, labelFormat, labelDelimiter) : scale.ticks ? d3_linearLegend(scale, cells, labelFormat) : d3_ordinalLegend(scale);\n\t\tvar range = scale.range && scale.range() || scale.domain();\n\t\ttype.labels = d3_mergeLabels(type.labels, labels, scale.domain(), range, labelDelimiter);\n\t\tif (ascending) {\n\t\t\ttype.labels = d3_reverse(type.labels);\n\t\t\ttype.data = d3_reverse(type.data);\n\t\t}\n\t\treturn type;\n\t},\n\td3_filterCells: function d3_filterCells(type, cellFilter) {\n\t\tvar filterCells = type.data.map(function(d, i) {\n\t\t\treturn {\n\t\t\t\tdata: d,\n\t\t\t\tlabel: type.labels[i]\n\t\t\t};\n\t\t}).filter(cellFilter);\n\t\tvar dataValues = filterCells.map(function(d) {\n\t\t\treturn d.data;\n\t\t});\n\t\tvar labelValues = filterCells.map(function(d) {\n\t\t\treturn d.label;\n\t\t});\n\t\ttype.data = type.data.filter(function(d) {\n\t\t\treturn dataValues.indexOf(d) !== -1;\n\t\t});\n\t\ttype.labels = type.labels.filter(function(d) {\n\t\t\treturn labelValues.indexOf(d) !== -1;\n\t\t});\n\t\treturn type;\n\t},\n\td3_placement: function d3_placement(orient, cell, cellTrans, text, textTrans, labelAlign) {\n\t\tcell.attr(\"transform\", cellTrans);\n\t\ttext.attr(\"transform\", textTrans);\n\t\tif (orient === \"horizontal\") text.style(\"text-anchor\", labelAlign);\n\t},\n\td3_addEvents: function d3_addEvents(cells, dispatcher) {\n\t\tcells.on(\"mouseover.legend\", function(d) {\n\t\t\td3_cellOver(dispatcher, d, this);\n\t\t}).on(\"mouseout.legend\", function(d) {\n\t\t\td3_cellOut(dispatcher, d, this);\n\t\t}).on(\"click.legend\", function(d) {\n\t\t\td3_cellClick(dispatcher, d, this);\n\t\t});\n\t},\n\td3_title: function d3_title(svg, title, classPrefix, titleWidth) {\n\t\tif (title !== \"\") {\n\t\t\tsvg.selectAll(\"text.\" + classPrefix + \"legendTitle\").data([title]).enter().append(\"text\").attr(\"class\", classPrefix + \"legendTitle\");\n\t\t\tsvg.selectAll(\"text.\" + classPrefix + \"legendTitle\").text(title);\n\t\t\tif (titleWidth) svg.selectAll(\"text.\" + classPrefix + \"legendTitle\").call(d3_textWrapping, titleWidth);\n\t\t\tvar cellsSvg = svg.select(\".\" + classPrefix + \"legendCells\");\n\t\t\tvar yOffset = svg.select(\".\" + classPrefix + \"legendTitle\").nodes().map(function(d) {\n\t\t\t\treturn d.getBBox().height;\n\t\t\t})[0], xOffset = -cellsSvg.nodes().map(function(d) {\n\t\t\t\treturn d.getBBox().x;\n\t\t\t})[0];\n\t\t\tcellsSvg.attr(\"transform\", \"translate(\" + xOffset + \",\" + yOffset + \")\");\n\t\t}\n\t},\n\td3_defaultLocale: {\n\t\tformat,\n\t\tformatPrefix\n\t},\n\td3_defaultFormatSpecifier: \".01f\",\n\td3_defaultDelimiter: \"to\"\n};\nfunction color() {\n\tvar scale = scaleLinear(), shape = \"rect\", shapeWidth = 15, shapeHeight = 15, shapeRadius = 10, shapePadding = 2, cells = [5], cellFilter = void 0, labels = [], classPrefix = \"\", useClass = false, title = \"\", locale = helper.d3_defaultLocale, specifier = helper.d3_defaultFormatSpecifier, labelOffset = 10, labelAlign = \"middle\", labelDelimiter = helper.d3_defaultDelimiter, labelWrap = void 0, orient = \"vertical\", ascending = false, path$1 = void 0, titleWidth = void 0, legendDispatcher = dispatch(\"cellover\", \"cellout\", \"cellclick\");\n\tfunction legend(svg) {\n\t\tvar type = helper.d3_calcType(scale, ascending, cells, labels, locale.format(specifier), labelDelimiter);\n\t\tsvg.selectAll(\"g\").data([scale]).enter().append(\"g\").attr(\"class\", classPrefix + \"legendCells\");\n\t\tif (cellFilter) helper.d3_filterCells(type, cellFilter);\n\t\tvar cell = svg.select(\".\" + classPrefix + \"legendCells\").selectAll(\".\" + classPrefix + \"cell\").data(type.data);\n\t\tvar cellEnter = cell.enter().append(\"g\").attr(\"class\", classPrefix + \"cell\");\n\t\tcellEnter.append(shape).attr(\"class\", classPrefix + \"swatch\");\n\t\tvar shapes = svg.selectAll(\"g.\" + classPrefix + \"cell \" + shape + \".\" + classPrefix + \"swatch\").data(type.data);\n\t\thelper.d3_addEvents(cellEnter, legendDispatcher);\n\t\tcell.exit().transition().style(\"opacity\", 0).remove();\n\t\tshapes.exit().transition().style(\"opacity\", 0).remove();\n\t\tshapes = shapes.merge(shapes);\n\t\thelper.d3_drawShapes(shape, shapes, shapeHeight, shapeWidth, shapeRadius, path$1);\n\t\tvar text = helper.d3_addText(svg, cellEnter, type.labels, classPrefix, labelWrap);\n\t\tcell = cellEnter.merge(cell);\n\t\tvar textSize = text.nodes().map(function(d) {\n\t\t\treturn d.getBBox();\n\t\t}), shapeSize = shapes.nodes().map(function(d) {\n\t\t\treturn d.getBBox();\n\t\t});\n\t\tif (!useClass) if (shape == \"line\") shapes.style(\"stroke\", type.feature);\n\t\telse shapes.style(\"fill\", type.feature);\n\t\telse shapes.attr(\"class\", function(d) {\n\t\t\treturn classPrefix + \"swatch \" + type.feature(d);\n\t\t});\n\t\tvar cellTrans = void 0, textTrans = void 0, textAlign = labelAlign == \"start\" ? 0 : labelAlign == \"middle\" ? .5 : 1;\n\t\tif (orient === \"vertical\") (function() {\n\t\t\tvar cellSize = textSize.map(function(d, i) {\n\t\t\t\treturn Math.max(d.height, shapeSize[i].height);\n\t\t\t});\n\t\t\tcellTrans = function cellTrans$1(d, i) {\n\t\t\t\treturn \"translate(0, \" + (sum(cellSize.slice(0, i)) + i * shapePadding) + \")\";\n\t\t\t};\n\t\t\ttextTrans = function textTrans$1(d, i) {\n\t\t\t\treturn \"translate( \" + (shapeSize[i].width + shapeSize[i].x + labelOffset) + \", \" + (shapeSize[i].y + shapeSize[i].height / 2 + 5) + \")\";\n\t\t\t};\n\t\t})();\n\t\telse if (orient === \"horizontal\") {\n\t\t\tcellTrans = function cellTrans$1(d, i) {\n\t\t\t\treturn \"translate(\" + i * (shapeSize[i].width + shapePadding) + \",0)\";\n\t\t\t};\n\t\t\ttextTrans = function textTrans$1(d, i) {\n\t\t\t\treturn \"translate(\" + (shapeSize[i].width * textAlign + shapeSize[i].x) + \",\\n \" + (shapeSize[i].height + shapeSize[i].y + labelOffset + 8) + \")\";\n\t\t\t};\n\t\t}\n\t\thelper.d3_placement(orient, cell, cellTrans, text, textTrans, labelAlign);\n\t\thelper.d3_title(svg, title, classPrefix, titleWidth);\n\t\tcell.transition().style(\"opacity\", 1);\n\t}\n\tlegend.scale = function(_) {\n\t\tif (!arguments.length) return scale;\n\t\tscale = _;\n\t\treturn legend;\n\t};\n\tlegend.cells = function(_) {\n\t\tif (!arguments.length) return cells;\n\t\tif (_.length > 1 || _ >= 2) cells = _;\n\t\treturn legend;\n\t};\n\tlegend.cellFilter = function(_) {\n\t\tif (!arguments.length) return cellFilter;\n\t\tcellFilter = _;\n\t\treturn legend;\n\t};\n\tlegend.shape = function(_, d) {\n\t\tif (!arguments.length) return shape;\n\t\tif (_ == \"rect\" || _ == \"circle\" || _ == \"line\" || _ == \"path\" && typeof d === \"string\") {\n\t\t\tshape = _;\n\t\t\tpath$1 = d;\n\t\t}\n\t\treturn legend;\n\t};\n\tlegend.shapeWidth = function(_) {\n\t\tif (!arguments.length) return shapeWidth;\n\t\tshapeWidth = +_;\n\t\treturn legend;\n\t};\n\tlegend.shapeHeight = function(_) {\n\t\tif (!arguments.length) return shapeHeight;\n\t\tshapeHeight = +_;\n\t\treturn legend;\n\t};\n\tlegend.shapeRadius = function(_) {\n\t\tif (!arguments.length) return shapeRadius;\n\t\tshapeRadius = +_;\n\t\treturn legend;\n\t};\n\tlegend.shapePadding = function(_) {\n\t\tif (!arguments.length) return shapePadding;\n\t\tshapePadding = +_;\n\t\treturn legend;\n\t};\n\tlegend.labels = function(_) {\n\t\tif (!arguments.length) return labels;\n\t\tlabels = _;\n\t\treturn legend;\n\t};\n\tlegend.labelAlign = function(_) {\n\t\tif (!arguments.length) return labelAlign;\n\t\tif (_ == \"start\" || _ == \"end\" || _ == \"middle\") labelAlign = _;\n\t\treturn legend;\n\t};\n\tlegend.locale = function(_) {\n\t\tif (!arguments.length) return locale;\n\t\tlocale = formatLocale(_);\n\t\treturn legend;\n\t};\n\tlegend.labelFormat = function(_) {\n\t\tif (!arguments.length) return legend.locale().format(specifier);\n\t\tspecifier = formatSpecifier(_);\n\t\treturn legend;\n\t};\n\tlegend.labelOffset = function(_) {\n\t\tif (!arguments.length) return labelOffset;\n\t\tlabelOffset = +_;\n\t\treturn legend;\n\t};\n\tlegend.labelDelimiter = function(_) {\n\t\tif (!arguments.length) return labelDelimiter;\n\t\tlabelDelimiter = _;\n\t\treturn legend;\n\t};\n\tlegend.labelWrap = function(_) {\n\t\tif (!arguments.length) return labelWrap;\n\t\tlabelWrap = _;\n\t\treturn legend;\n\t};\n\tlegend.useClass = function(_) {\n\t\tif (!arguments.length) return useClass;\n\t\tif (_ === true || _ === false) useClass = _;\n\t\treturn legend;\n\t};\n\tlegend.orient = function(_) {\n\t\tif (!arguments.length) return orient;\n\t\t_ = _.toLowerCase();\n\t\tif (_ == \"horizontal\" || _ == \"vertical\") orient = _;\n\t\treturn legend;\n\t};\n\tlegend.ascending = function(_) {\n\t\tif (!arguments.length) return ascending;\n\t\tascending = !!_;\n\t\treturn legend;\n\t};\n\tlegend.classPrefix = function(_) {\n\t\tif (!arguments.length) return classPrefix;\n\t\tclassPrefix = _;\n\t\treturn legend;\n\t};\n\tlegend.title = function(_) {\n\t\tif (!arguments.length) return title;\n\t\ttitle = _;\n\t\treturn legend;\n\t};\n\tlegend.titleWidth = function(_) {\n\t\tif (!arguments.length) return titleWidth;\n\t\ttitleWidth = _;\n\t\treturn legend;\n\t};\n\tlegend.textWrap = function(_) {\n\t\tif (!arguments.length) return textWrap;\n\t\ttextWrap = _;\n\t\treturn legend;\n\t};\n\tlegend.on = function() {\n\t\tvar value = legendDispatcher.on.apply(legendDispatcher, arguments);\n\t\treturn value === legendDispatcher ? legend : value;\n\t};\n\treturn legend;\n}\n\n//#endregion\n//#region src/Legend.ts\nvar Legend = class extends SVGWidget {\n\t_owner;\n\t_targetWidget;\n\t_targetWidgetMonitor;\n\t_legendOrdinal;\n\t_disabled = [];\n\t_symbolTypeMap = {\n\t\t\"circle\": circle_default,\n\t\t\"cross\": cross_default,\n\t\t\"diamond\": diamond_default,\n\t\t\"square\": square_default,\n\t\t\"star\": star_default,\n\t\t\"triangle\": triangle_default,\n\t\t\"wye\": wye_default\n\t};\n\tconstructor(owner) {\n\t\tsuper();\n\t\tthis._owner = owner;\n\t\tthis._drawStartPos = \"origin\";\n\t\tconst context = this;\n\t\tthis._legendOrdinal = color().shape(\"path\", symbol_default().type(circle_default).size(150)()).shapePadding(10).shapeRadius(10).on(\"cellclick\", function(d) {\n\t\t\tcontext.onClick(d, this);\n\t\t}).on(\"cellover\", (d) => {\n\t\t\tcontext.onOver(d, this);\n\t\t}).on(\"cellout\", (d) => {\n\t\t\tcontext.onOut(d, this);\n\t\t});\n\t}\n\tisDisabled(d) {\n\t\tif (typeof d === \"undefined\") return false;\n\t\telse if (typeof d === \"string\") return d.indexOf(\"__\") === 0 || this._disabled.indexOf(d) >= 0;\n\t\telse if (d instanceof Database.Field) return d.id().indexOf(\"__\") === 0 || this._disabled.indexOf(d.id()) >= 0;\n\t\treturn this._disabled.indexOf(d) >= 0;\n\t}\n\tfilteredFields() {\n\t\tswitch (this.dataFamily()) {\n\t\t\tcase \"2D\": return this.fields();\n\t\t\tcase \"ND\": return this.fields().filter((d) => !this.isDisabled(d));\n\t\t}\n\t\treturn this.fields();\n\t}\n\tfilteredColumns() {\n\t\tswitch (this.dataFamily()) {\n\t\t\tcase \"2D\": return this.columns();\n\t\t\tcase \"ND\": return this.columns().filter((d) => !this.isDisabled(d));\n\t\t}\n\t\treturn this.columns();\n\t}\n\tfilteredData() {\n\t\tswitch (this.dataFamily()) {\n\t\t\tcase \"2D\": return this.data().filter((row) => !this.isDisabled(row[0]));\n\t\t\tcase \"ND\":\n\t\t\t\tconst disabledCols = {};\n\t\t\t\tlet anyDisabled = false;\n\t\t\t\tthis.columns().forEach((col, idx) => {\n\t\t\t\t\tconst disabled = this.isDisabled(col);\n\t\t\t\t\tdisabledCols[idx] = disabled;\n\t\t\t\t\tif (disabled) anyDisabled = true;\n\t\t\t\t});\n\t\t\t\treturn !anyDisabled ? this.data() : this.data().map((row) => {\n\t\t\t\t\treturn row.filter((cell, idx) => !disabledCols[idx]);\n\t\t\t\t});\n\t\t}\n\t\treturn this.data();\n\t}\n\tisRainbow() {\n\t\tconst widget = this.getWidget();\n\t\treturn widget && widget._palette && widget._palette.type() === \"rainbow\";\n\t}\n\ttargetWidget(_) {\n\t\tif (!arguments.length) return this._targetWidget;\n\t\tthis._targetWidget = _;\n\t\tif (this._targetWidgetMonitor) {\n\t\t\tthis._targetWidgetMonitor.remove();\n\t\t\tdelete this._targetWidgetMonitor;\n\t\t}\n\t\tif (this._targetWidget) {\n\t\t\tconst context = this;\n\t\t\tthis._targetWidgetMonitor = this._targetWidget.monitor(function(key, newProp, oldProp, source) {\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase \"chart\":\n\t\t\t\t\tcase \"columns\":\n\t\t\t\t\tcase \"data\":\n\t\t\t\t\tcase \"paletteID\":\n\t\t\t\t\t\tcontext.lazyRender();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\tgetWidget() {\n\t\tif (this._targetWidget) switch (this._targetWidget.classID()) {\n\t\t\tcase \"composite_MultiChart\": return this._targetWidget.chart();\n\t\t}\n\t\treturn this._targetWidget;\n\t}\n\tgetPalette() {\n\t\tconst widget = this.getWidget();\n\t\tif (widget && widget._palette) switch (widget._palette.type()) {\n\t\t\tcase \"ordinal\": return Palette.ordinal(widget._palette.id());\n\t\t\tcase \"rainbow\": return Palette.rainbow(widget._palette.id());\n\t\t}\n\t\treturn Palette.ordinal(\"default\");\n\t}\n\tgetPaletteType() {\n\t\treturn this.getPalette().type();\n\t}\n\tfillColorFunc() {\n\t\tconst widget = this.getWidget();\n\t\tif (widget && widget.fillColor) {\n\t\t\tif (widget._palette && widget.paletteID && widget._palette.name !== widget.paletteID()) widget._palette = widget._palette.switch(widget.paletteID());\n\t\t\treturn (row, col, sel) => {\n\t\t\t\treturn widget.fillColor(row, col, sel);\n\t\t\t};\n\t\t}\n\t\tconst palette = Palette.ordinal(widget && widget.paletteID ? widget.paletteID() || \"default\" : \"default\");\n\t\treturn (row, col, sel) => {\n\t\t\treturn palette(col);\n\t\t};\n\t}\n\tfillColor(row, col, sel) {\n\t\treturn this.fillColorFunc()(row, col, sel);\n\t}\n\t_g;\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tthis._g = element.append(\"g\").attr(\"class\", \"legendOrdinal\");\n\t}\n\tcalcMetaData() {\n\t\tlet dataArr = [];\n\t\tlet total = 0;\n\t\tlet maxLabelWidth = 0;\n\t\tconst colLength = this.columns().length;\n\t\tif (this._targetWidget) {\n\t\t\tconst columns = this.columns();\n\t\t\tswitch (this.getPaletteType()) {\n\t\t\t\tcase \"ordinal\":\n\t\t\t\t\tconst fillColor = this.fillColorFunc();\n\t\t\t\t\tlet val = 0;\n\t\t\t\t\tswitch (this.dataFamily()) {\n\t\t\t\t\t\tcase \"2D\":\n\t\t\t\t\t\t\tdataArr = this.data().map(function(n, i) {\n\t\t\t\t\t\t\t\tval = this.data()[i].slice(1, colLength).reduce((acc, n$1) => acc + n$1, 0);\n\t\t\t\t\t\t\t\tconst disabled = this.isDisabled(n[0]);\n\t\t\t\t\t\t\t\tif (!disabled) total += val;\n\t\t\t\t\t\t\t\tconst label = n[0] + (!disabled && this.showSeriesTotal() ? ` (${val})` : \"\");\n\t\t\t\t\t\t\t\tconst textSize = this.textSize(label);\n\t\t\t\t\t\t\t\tif (maxLabelWidth < textSize.width) maxLabelWidth = textSize.width;\n\t\t\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t\tfillColor(n, n[0], false),\n\t\t\t\t\t\t\t\t\tn[0],\n\t\t\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"ND\":\n\t\t\t\t\t\t\tdataArr = this.columns().filter((col) => col.indexOf(\"__\") !== 0).filter(function(n, i) {\n\t\t\t\t\t\t\t\treturn i > 0;\n\t\t\t\t\t\t\t}).map(function(n, i) {\n\t\t\t\t\t\t\t\tval = this.data().reduce((acc, n$1) => acc + n$1[i + 1], 0);\n\t\t\t\t\t\t\t\tconst disabled = this.isDisabled(columns[i + 1]);\n\t\t\t\t\t\t\t\tconst label = n + (!disabled && this.showSeriesTotal() ? ` (${val})` : \"\");\n\t\t\t\t\t\t\t\tif (!disabled) total += val;\n\t\t\t\t\t\t\t\tconst textSize = this.textSize(label);\n\t\t\t\t\t\t\t\tif (maxLabelWidth < textSize.width) maxLabelWidth = textSize.width;\n\t\t\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t\tfillColor(void 0, n, false),\n\t\t\t\t\t\t\t\t\tn,\n\t\t\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tdataArr = this.columns().map(function(n) {\n\t\t\t\t\t\t\t\treturn [fillColor(void 0, n, false), n];\n\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"rainbow\":\n\t\t\t\t\tconst palette = this.getPalette();\n\t\t\t\t\tconst format$1 = format(this.rainbowFormat());\n\t\t\t\t\tconst widget = this.getWidget();\n\t\t\t\t\tconst steps = this.rainbowBins();\n\t\t\t\t\tconst weightMin = widget._dataMinWeight;\n\t\t\t\t\tconst weightMax = widget._dataMaxWeight;\n\t\t\t\t\tconst stepWeightDiff = (weightMax - weightMin) / (steps - 1);\n\t\t\t\t\tdataArr.push([palette(weightMin, weightMin, weightMax), format$1(weightMin)]);\n\t\t\t\t\tfor (let x = 1; x < steps - 1; ++x) {\n\t\t\t\t\t\tlet mid = stepWeightDiff * x;\n\t\t\t\t\t\tif (Math.floor(mid) > parseInt(dataArr[0][1])) mid = Math.floor(mid);\n\t\t\t\t\t\tdataArr.push([palette(mid, weightMin, weightMax), format$1(mid)]);\n\t\t\t\t\t}\n\t\t\t\t\tdataArr.push([palette(weightMax, weightMin, weightMax), format$1(weightMax)]);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tdataArr,\n\t\t\ttotal,\n\t\t\tmaxLabelWidth\n\t\t};\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\tconst { dataArr, maxLabelWidth, total } = this.calcMetaData();\n\t\tconst radius = this.shapeRadius();\n\t\tconst size = this.radiusToSymbolSize(radius);\n\t\tconst strokeWidth = 1;\n\t\tlet shapePadding = this.itemPadding();\n\t\tif (this.orientation() === \"horizontal\") shapePadding += maxLabelWidth - radius * 2;\n\t\tconst ordinal = scaleOrdinal().domain(dataArr.map((row) => row[1])).range(dataArr.map((row) => row[0]));\n\t\tthis._legendOrdinal.shape(\"path\", symbol_default().type(this._symbolTypeMap[this.symbolType()]).size(size)()).orient(this.orientation()).title(this.title()).labelWrap(this.labelMaxWidth()).labelAlign(this.labelAlign()).shapePadding(shapePadding).scale(ordinal).labels((d) => dataArr[d.i][2]);\n\t\tthis._g.call(this._legendOrdinal);\n\t\tthis.updateDisabled(element, dataArr);\n\t\tconst legendCellsBbox = this._g.select(\".legendCells\").node().getBBox();\n\t\tlet offsetX = Math.abs(legendCellsBbox.x);\n\t\tlet offsetY = Math.abs(legendCellsBbox.y) + strokeWidth;\n\t\tif (this.orientation() === \"horizontal\") {\n\t\t\tif (this.labelAlign() === \"start\") offsetX += strokeWidth;\n\t\t\telse if (this.labelAlign() === \"end\") offsetX -= strokeWidth;\n\t\t\tif (this.width() > legendCellsBbox.width) {\n\t\t\t\tconst extraWidth = this.width() - legendCellsBbox.width;\n\t\t\t\toffsetX += extraWidth / 2;\n\t\t\t}\n\t\t} else if (this.orientation() === \"vertical\") {\n\t\t\toffsetX += strokeWidth;\n\t\t\tif (this._containerSize.height > legendCellsBbox.height) {\n\t\t\t\tconst extraHeight = this.height() - legendCellsBbox.height;\n\t\t\t\toffsetY += extraHeight / 2;\n\t\t\t}\n\t\t}\n\t\tthis._g.attr(\"transform\", `translate(${offsetX}, ${offsetY})`);\n\t\tthis.pos({\n\t\t\tx: 0,\n\t\t\ty: 0\n\t\t});\n\t\tthis._legendOrdinal.labelOffset(this.itemPadding());\n\t\tconst legendTotal = this._g.selectAll(\".legendTotal\").data(dataArr.length && this.showLegendTotal() ? [total] : []);\n\t\tconst totalText = `Total: ${total}`;\n\t\tconst totalOffsetX = -offsetX;\n\t\tconst totalOffsetY = legendCellsBbox.height + this.itemPadding() + strokeWidth;\n\t\tthis.enableOverflowScroll(false);\n\t\tthis.enableOverflow(true);\n\t\tlegendTotal.enter().append(\"text\").classed(\"legendTotal\", true).merge(legendTotal).attr(\"transform\", `translate(${totalOffsetX}, ${totalOffsetY})`).text(totalText);\n\t\tlegendTotal.exit().remove();\n\t}\n\tupdateDisabled(element, dataArr) {\n\t\telement.style(\"cursor\", \"pointer\").selectAll(\"path.swatch\").filter((d, i) => i < dataArr.length).style(\"stroke\", (d, i) => dataArr[i][0]).style(\"fill\", (d, i) => this._disabled.indexOf(d) < 0 ? dataArr[i][0] : \"white\");\n\t}\n\tpostUpdate(domNode, element) {\n\t\tlet w;\n\t\tif (this._boundingBox) {\n\t\t\tw = this._boundingBox.width;\n\t\t\tthis._boundingBox.width = this._size.width;\n\t\t}\n\t\tsuper.postUpdate(domNode, element);\n\t\tif (w !== void 0) this._boundingBox.width = w;\n\t\tthis._parentRelativeDiv.style(\"overflow\", \"hidden\");\n\t}\n\texit(domNode, element) {\n\t\tsuper.exit(domNode, element);\n\t}\n\tradiusToSymbolSize(radius) {\n\t\tconst circleSize = Math.pow(radius, 2) * Math.PI;\n\t\tswitch (this.symbolType()) {\n\t\t\tcase \"star\": return circleSize * .45;\n\t\t\tcase \"triangle\": return circleSize * .65;\n\t\t\tcase \"cross\":\n\t\t\tcase \"diamond\":\n\t\t\tcase \"wye\": return circleSize * .75;\n\t\t\tcase \"circle\": return circleSize;\n\t\t\tcase \"square\": return circleSize * 1.3;\n\t\t}\n\t}\n\tonClick(d, domNode) {\n\t\tswitch (this.getPaletteType()) {\n\t\t\tcase \"ordinal\":\n\t\t\t\tswitch (this.dataFamily()) {\n\t\t\t\t\tcase \"2D\":\n\t\t\t\t\tcase \"ND\":\n\t\t\t\t\t\tconst disabledIdx = this._disabled.indexOf(d);\n\t\t\t\t\t\tif (disabledIdx < 0) this._disabled.push(d);\n\t\t\t\t\t\telse this._disabled.splice(disabledIdx, 1);\n\t\t\t\t\t\tthis._owner.refreshColumns();\n\t\t\t\t\t\tthis._owner.refreshData();\n\t\t\t\t\t\tthis._owner.render();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tonOver(d, domNode) {\n\t\tif (instanceOfIHighlight(this._owner)) switch (this.getPaletteType()) {\n\t\t\tcase \"ordinal\":\n\t\t\t\tswitch (this.dataFamily()) {\n\t\t\t\t\tcase \"2D\":\n\t\t\t\t\tcase \"ND\":\n\t\t\t\t\t\tif (this._disabled.indexOf(d) < 0) this._owner.highlightColumn(d);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tonOut(d, domNode) {\n\t\tif (instanceOfIHighlight(this._owner)) switch (this.getPaletteType()) {\n\t\t\tcase \"ordinal\":\n\t\t\t\tswitch (this.dataFamily()) {\n\t\t\t\t\tcase \"2D\":\n\t\t\t\t\tcase \"ND\":\n\t\t\t\t\t\tthis._owner.highlightColumn();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tonDblClick(rowData, rowIdx) {}\n\tonMouseOver(rowData, rowIdx) {}\n\t_containerSize;\n\tresize(_size) {\n\t\tlet retVal;\n\t\tif (this.fitToContent()) {\n\t\t\tthis._containerSize = _size;\n\t\t\tconst bbox = this.getBBox();\n\t\t\tif (_size.width > bbox.width) bbox.width = _size.width;\n\t\t\tif (_size.height > bbox.height) bbox.height = _size.height;\n\t\t\tretVal = super.resize.apply(this, [{ ...bbox }]);\n\t\t} else retVal = super.resize.apply(this, arguments);\n\t\treturn retVal;\n\t}\n};\nLegend.prototype._class += \" layout_Legend\";\nLegend.prototype.publish(\"title\", \"\", \"string\", \"Title\");\nLegend.prototype.publish(\"symbolType\", \"circle\", \"set\", \"Shape of each legend item\", [\n\t\"circle\",\n\t\"cross\",\n\t\"diamond\",\n\t\"square\",\n\t\"star\",\n\t\"triangle\",\n\t\"wye\"\n]);\nLegend.prototype.publish(\"labelMaxWidth\", null, \"number\", \"Max Label Width (pixels)\", null, { optional: true });\nLegend.prototype.publish(\"orientation\", \"vertical\", \"set\", \"Orientation of Legend rows\", [\"vertical\", \"horizontal\"], { tags: [\"Private\"] });\nLegend.prototype.publish(\"dataFamily\", \"ND\", \"set\", \"Type of data\", [\n\t\"1D\",\n\t\"2D\",\n\t\"ND\",\n\t\"map\",\n\t\"graph\",\n\t\"any\"\n], { tags: [\"Private\"] });\nLegend.prototype.publish(\"rainbowFormat\", \",\", \"string\", \"Rainbow number formatting\", null, {\n\ttags: [\"Private\"],\n\toptional: true,\n\tdisable: (w) => !w.isRainbow()\n});\nLegend.prototype.publish(\"rainbowBins\", 8, \"number\", \"Number of rainbow bins\", null, {\n\ttags: [\"Private\"],\n\tdisable: (w) => !w.isRainbow()\n});\nLegend.prototype.publish(\"showSeriesTotal\", false, \"boolean\", \"Show value next to series\");\nLegend.prototype.publish(\"showLegendTotal\", false, \"boolean\", \"Show a total of the series values under the legend\", null);\nLegend.prototype.publish(\"itemPadding\", 8, \"number\", \"Padding between legend items (pixels)\");\nLegend.prototype.publish(\"shapeRadius\", 7, \"number\", \"Radius of legend shape (pixels)\");\nLegend.prototype.publish(\"fitToContent\", true, \"boolean\", \"If true, resize will simply reapply the bounding box dimensions\");\nLegend.prototype.publish(\"labelAlign\", \"start\", \"set\", \"Horizontal alignment of legend item label (for horizontal orientation only)\", [\n\t\"start\",\n\t\"middle\",\n\t\"end\"\n], {\n\toptional: true,\n\tdisable: (w) => w.orientation() === \"vertical\"\n});\n\n//#endregion\n//#region src/Modal.ts\nvar Modal = class extends HTMLWidget {\n\t_widget;\n\t_relativeTarget;\n\t_fade;\n\t_modal;\n\t_modalHeader;\n\t_modalBody;\n\t_modalHeaderAnnotations;\n\t_modalHeaderCloseButton;\n\t_close;\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t}\n\tcloseModal() {\n\t\tthis.visible(false);\n\t}\n\tgetRelativeTarget() {\n\t\tlet relativeTarget;\n\t\tif (this.relativeTargetId()) {\n\t\t\trelativeTarget = document.getElementById(this.relativeTargetId());\n\t\t\tif (relativeTarget) return relativeTarget;\n\t\t}\n\t\tif (!relativeTarget) {\n\t\t\trelativeTarget = this.locateAncestor(\"layout_Grid\");\n\t\t\tif (relativeTarget && relativeTarget.element) return relativeTarget.element().node();\n\t\t}\n\t\treturn document.body;\n\t}\n\tsetModalSize() {\n\t\tif (this.fixedHeight() !== null && this.fixedWidth() !== null) this._modal.style(\"height\", this.fixedHeight()).style(\"width\", this.fixedWidth()).style(\"min-height\", null).style(\"min-width\", null).style(\"max-height\", null).style(\"max-width\", null);\n\t\telse if (this.minHeight() || this.minWidth()) this._modal.style(\"min-height\", this.minHeight()).style(\"min-width\", this.minWidth()).style(\"max-height\", this.maxHeight()).style(\"max-width\", this.maxWidth());\n\t\tconst modalRect = this._modal.node().getBoundingClientRect();\n\t\tconst headerRect = this._modalHeader.node().getBoundingClientRect();\n\t\tthis._modalBody.style(\"height\", modalRect.height - headerRect.height + \"px\").style(\"width\", modalRect.width);\n\t\treturn modalRect;\n\t}\n\tsetFadePosition(rect) {\n\t\tthis._fade.style(\"top\", rect.top + \"px\").style(\"left\", rect.left + \"px\").style(\"width\", rect.width + \"px\").style(\"height\", rect.height + \"px\");\n\t}\n\tsetModalPosition(rect) {\n\t\tconst modalRect = this.setModalSize();\n\t\tif (this.fixedTop() !== null && this.fixedLeft() !== null) this._modal.style(\"top\", `calc(${this.fixedTop()} + ${rect.top}px)`).style(\"left\", `calc(${this.fixedLeft()} + ${rect.left}px)`);\n\t\telse if (this.fixedHeight() !== null && this.fixedWidth() !== null) this._modal.style(\"top\", rect.top + rect.height / 2 - modalRect.height / 2 + \"px\").style(\"left\", rect.left + rect.width / 2 - modalRect.width / 2 + \"px\");\n\t\telse if (this.minHeight() || this.minWidth()) {\n\t\t\tconst contentRect = this._modal.node().getBoundingClientRect();\n\t\t\tthis._modal.style(\"top\", rect.top + rect.height / 2 - contentRect.height / 2 + \"px\").style(\"left\", rect.left + rect.width / 2 - contentRect.width / 2 + \"px\");\n\t\t}\n\t}\n\tresize(size) {\n\t\tsuper.resize();\n\t\tif (this._modal) this.setModalSize();\n\t\treturn this;\n\t}\n\tresizeBodySync(width, height) {\n\t\tconst headerRect = this._modalHeader.node().getBoundingClientRect();\n\t\tthis._modal.style(\"width\", width + \"px\").style(\"height\", height + headerRect.height + \"px\").style(\"min-width\", width + \"px\").style(\"min-height\", height + headerRect.height + \"px\");\n\t\tthis._modalHeader.style(\"width\", width + \"px\");\n\t\tthis._modalBody.style(\"width\", width + \"px\").style(\"height\", height + \"px\");\n\t\treturn this.minWidth(width + \"px\").minHeight(height + headerRect.height + \"px\").resize({\n\t\t\theight: height + headerRect.height,\n\t\t\twidth\n\t\t});\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tthis._fade = element.append(\"div\").classed(\"layout_Modal-fade\", true).classed(\"layout_Modal-fadeClickable\", this.enableClickFadeToClose()).classed(\"layout_Modal-fade-hidden\", !this.showFade());\n\t\tconst header_h = this.titleFontSize() * 2;\n\t\tthis._modal = element.append(\"div\").classed(\"layout_Modal-content\", true);\n\t\tthis._modalHeader = this._modal.append(\"div\").classed(\"layout_Modal-header\", true).style(\"color\", this.titleFontColor()).style(\"font-size\", this.titleFontSize() + \"px\").style(\"height\", header_h + \"px\");\n\t\tthis._modalBody = this._modal.append(\"div\").classed(\"layout_Modal-body\", true).style(\"height\", `calc( 100% - ${header_h}px )`).style(\"overflow-x\", this.overflowX()).style(\"overflow-y\", this.overflowY());\n\t\tthis._modalHeader.append(\"div\").classed(\"layout_Modal-title\", true).style(\"line-height\", this.titleFontSize() + \"px\").style(\"top\", this.titleFontSize() / 2 + \"px\").style(\"left\", this.titleFontSize() / 2 + \"px\").text(this.formattedTitle());\n\t\tthis._modalHeaderAnnotations = this._modalHeader.append(\"div\").classed(\"layout_Modal-annotations\", true);\n\t\tthis._modalHeaderCloseButton = this._modalHeaderAnnotations.append(\"div\").classed(\"layout_Modal-closeButton\", true).html(\"<i class=\\\"fa fa-close\\\"></i>\");\n\t\tthis._modalHeaderAnnotations.style(\"line-height\", this.titleFontSize() + \"px\").style(\"right\", this.titleFontSize() / 2 + \"px\").style(\"top\", this.titleFontSize() / 2 + \"px\");\n\t\tthis._modalHeaderCloseButton.on(\"click\", () => {\n\t\t\tthis.closeModal();\n\t\t});\n\t\tthis._fade.on(\"click\", (n) => {\n\t\t\tif (this.enableClickFadeToClose()) this.closeModal();\n\t\t});\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\telement.style(\"display\", this.show() ? null : \"none\");\n\t\tthis._fade.classed(\"layout_Modal-fade-hidden\", !this.showFade());\n\t\tthis._relativeTarget = this.getRelativeTarget();\n\t\tthis.setModalSize();\n\t\tconst rect = this._relativeTarget.getBoundingClientRect();\n\t\tthis.setFadePosition(rect);\n\t\tthis.setModalPosition(rect);\n\t\tif (this.show()) {\n\t\t\tif (!this._widget.target()) this._widget.target(this._modalBody.node());\n\t\t\tthis._widget.resize().render();\n\t\t} else this._widget.target(null).render();\n\t}\n\texit(domNode, element) {\n\t\tif (this._widget) this._widget.target(null);\n\t\tsuper.exit(domNode, element);\n\t}\n\tformattedTitle() {\n\t\tconst title = this.title_exists() ? this.title().trim() : \"\";\n\t\tif (title.length > 0 && title.slice(0, 1) === \"(\" && title.slice(-1) === \")\") return title.slice(1, -1);\n\t\treturn this.title();\n\t}\n};\nModal.prototype._class += \" layout_Modal\";\nModal.prototype.publish(\"title\", null, \"string\", \"title\");\nModal.prototype.publish(\"widget\", null, \"widget\", \"widget\");\nModal.prototype.publish(\"titleFontSize\", 18, \"number\", \"titleFontSize (in pixels)\");\nModal.prototype.publish(\"titleFontColor\", \"#ffffff\", \"html-color\", \"titleFontColor\");\nModal.prototype.publish(\"relativeTargetId\", null, \"string\", \"relativeTargetId\");\nModal.prototype.publish(\"show\", true, \"boolean\", \"show\");\nModal.prototype.publish(\"showFade\", true, \"boolean\", \"showFade\");\nModal.prototype.publish(\"enableClickFadeToClose\", true, \"boolean\", \"enableClickFadeToClose\");\nModal.prototype.publish(\"minWidth\", \"400px\", \"string\", \"minWidth\");\nModal.prototype.publish(\"minHeight\", \"400px\", \"string\", \"minHeight\");\nModal.prototype.publish(\"maxWidth\", \"800px\", \"string\", \"maxWidth\");\nModal.prototype.publish(\"maxHeight\", \"800px\", \"string\", \"maxHeight\");\nModal.prototype.publish(\"fixedWidth\", null, \"string\", \"fixedWidth\");\nModal.prototype.publish(\"fixedHeight\", null, \"string\", \"fixedHeight\");\nModal.prototype.publish(\"fixedTop\", null, \"string\", \"fixedTop\");\nModal.prototype.publish(\"fixedLeft\", null, \"string\", \"fixedLeft\");\nModal.prototype.publish(\"overflowX\", \"hidden\", \"string\", \"overflowX\");\nModal.prototype.publish(\"overflowY\", \"scroll\", \"string\", \"overflowY\");\n\n//#endregion\n//#region src/ChartPanel.ts\nvar ChartPanel = class extends Border2 {\n\t_legend = new Legend(this).enableOverflow(true);\n\t_progressBar = new ProgressBar();\n\t_autoScale = false;\n\t_resolutions = {\n\t\ttiny: {\n\t\t\twidth: 100,\n\t\t\theight: 100\n\t\t},\n\t\tsmall: {\n\t\t\twidth: 300,\n\t\t\theight: 300\n\t\t}\n\t};\n\t_modal = new Modal();\n\t_highlight;\n\t_scale;\n\t_orig_size;\n\t_toggleInfo = new ToggleButton().faChar(\"fa-info-circle\").tooltip(\".Description\").selected(false).on(\"enabled\", () => {\n\t\treturn this.description() !== \"\";\n\t}).on(\"click\", () => {\n\t\tif (this._toggleInfo.selected()) {\n\t\t\tthis._modal.title(this.title()).widget(new Text().text(this.description())).show(true).render();\n\t\t\tconst origCloseFunc = this._modal._close;\n\t\t\tthis._modal._close = () => {\n\t\t\t\tthis._toggleInfo.selected(false).render();\n\t\t\t\tthis._modal._close = origCloseFunc;\n\t\t\t};\n\t\t}\n\t}).on(\"mouseMove\", () => {}).on(\"mouseOut\", () => {});\n\t_toggleData = new ToggleButton().faChar(\"fa-table\").tooltip(\"Data\").on(\"click\", () => {\n\t\tthis.dataVisible(this._toggleData.selected());\n\t\tthis.render();\n\t});\n\t_buttonDownload = new Button().faChar(\"fa-download\").tooltip(\"Download\").on(\"click\", () => {\n\t\tthis.downloadCSV();\n\t});\n\t_buttonDownloadImage = new Button().faChar(\"fa-image\").tooltip(\"Download Image\").on(\"click\", () => {\n\t\tthis.downloadPNG();\n\t});\n\t_toggleLegend = new ToggleButton().faChar(\"fa-list-ul\").tooltip(\"Legend\").selected(false).on(\"click\", () => {\n\t\tconst selected = this._toggleLegend.selected();\n\t\tif (this.legendPosition() === \"bottom\") this.showBottom(selected);\n\t\telse if (this.legendPosition() === \"right\") this.showRight(selected);\n\t\tthis.legendVisible(selected);\n\t\tthis.render();\n\t});\n\t_spacer = new Spacer();\n\t_titleBar = new TitleBar().buttons([\n\t\tthis._toggleData,\n\t\tthis._buttonDownload,\n\t\tthis._buttonDownloadImage,\n\t\tthis._spacer,\n\t\tthis._toggleLegend\n\t]);\n\t_carousel = new Carousel();\n\t_table = new Table();\n\t_widget;\n\t_hideLegendToggleList = [\"dgrid_Table\"];\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t}\n\tfields(_) {\n\t\tif (!arguments.length) return super.fields();\n\t\tsuper.fields(_);\n\t\tthis._legend.fields(_);\n\t\tthis.refreshFields();\n\t\treturn this;\n\t}\n\trefreshFields() {\n\t\tthis._widget.fields(this._legend.filteredFields());\n\t\tthis._table.fields(this._legend.filteredFields());\n\t\treturn this;\n\t}\n\tcolumns(_, asDefault) {\n\t\tif (!arguments.length) return super.columns();\n\t\tsuper.columns(_, asDefault);\n\t\tthis._legend.columns(_, asDefault);\n\t\tthis.refreshColumns();\n\t\treturn this;\n\t}\n\trefreshColumns() {\n\t\tthis._widget.columns(this._legend.filteredColumns());\n\t\tthis._table.columns(this._legend.filteredColumns());\n\t\treturn this;\n\t}\n\tdata(_) {\n\t\tif (!arguments.length) return super.data();\n\t\tsuper.data(_);\n\t\tthis._legend.data(_);\n\t\tthis.refreshData();\n\t\treturn this;\n\t}\n\trefreshData() {\n\t\tthis._widget.data(this._legend.filteredData());\n\t\tthis._table.data(this._legend.filteredData());\n\t\treturn this;\n\t}\n\thighlight(_) {\n\t\tif (!arguments.length) return this._highlight;\n\t\tthis._highlight = _;\n\t\treturn this;\n\t}\n\tstartProgress() {\n\t\tthis._progressBar.start();\n\t}\n\tfinishProgress() {\n\t\tthis._progressBar.finish();\n\t}\n\tbuttons(_) {\n\t\tif (!arguments.length) return this._titleBar.buttons();\n\t\tthis._titleBar.buttons(_);\n\t\treturn this;\n\t}\n\tdownloadCSV() {\n\t\tconst namePrefix = this.downloadTitle() ? this.downloadTitle() : this.title() ? this.title() : \"data\";\n\t\tconst nameSuffix = this.downloadTimestampSuffix() ? \"_\" + Utility.timestamp() : \"\";\n\t\tUtility.downloadString(\"CSV\", this._widget.export(\"CSV\"), namePrefix + nameSuffix);\n\t\treturn this;\n\t}\n\tdownloadPNG() {\n\t\tconst widget = this.widget();\n\t\tif (widget instanceof SVGWidget) if (!this.legendVisible()) widget.downloadPNG(this.title());\n\t\telse widget.downloadPNG(this.title(), void 0, this._legend);\n\t\treturn this;\n\t}\n\thighlightColumn(column) {\n\t\tif (column) {\n\t\t\tconst cssTag = `series-${this.cssTag(column)}`;\n\t\t\tthis._centerWA.element().selectAll(\".series\").each(function() {\n\t\t\t\tconst element = select(this);\n\t\t\t\tconst highlight = element.classed(cssTag);\n\t\t\t\telement.classed(\"highlight\", highlight).classed(\"lowlight\", !highlight);\n\t\t\t});\n\t\t} else this._centerWA.element().selectAll(\".series\").classed(\"highlight\", false).classed(\"lowlight\", false);\n\t\treturn this;\n\t}\n\tgetResponsiveMode() {\n\t\tif (!this.enableAutoscaling()) return \"none\";\n\t\tif (!this._autoScale) return \"regular\";\n\t\tif (this.size().width <= this._resolutions.tiny.width || this.size().height <= this._resolutions.tiny.height) return \"tiny\";\n\t\telse if (this.size().width <= this._resolutions.small.width || this.size().height <= this._resolutions.small.height) return \"small\";\n\t\treturn \"regular\";\n\t}\n\tsetOrigSize() {\n\t\tthis._orig_size = JSON.parse(JSON.stringify(this.size()));\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tthis._modal.target(this.target()).relativeTargetId(this.id());\n\t\tthis.top(this._titleBar);\n\t\tthis.center(this._carousel);\n\t\tthis._legend.targetWidget(this._widget).orientation(\"vertical\").title(\"\").visible(false);\n\t\tthis._progressBar.enter(domNode, element);\n\t\tthis.setOrigSize();\n\t}\n\tpreUpdateTiny(element) {\n\t\telement.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"none\");\n\t}\n\tpreUpdateSmall(element) {\n\t\tconst scale_x = this._orig_size.width / this._resolutions.small.width;\n\t\tconst scale_y = this._orig_size.height / this._resolutions.small.height;\n\t\tthis._scale = Math.min(scale_x, scale_y);\n\t\tconst x_is_smaller = this._scale === scale_x;\n\t\tthis.size({\n\t\t\twidth: x_is_smaller ? this._resolutions.small.width : this._orig_size.width * (1 / this._scale),\n\t\t\theight: !x_is_smaller ? this._resolutions.small.height : this._orig_size.height * (1 / this._scale)\n\t\t});\n\t\telement.select(\"div.title-icon\").style(\"position\", \"static\");\n\t\telement.selectAll(\"lhs\").style(\"display\", \"none\");\n\t\telement.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"\");\n\t\telement.selectAll(\"div.data-count\").style(\"visibility\", \"hidden\");\n\t\telement.style(\"transform\", `scale(${this._scale})`);\n\t}\n\tpreUpdateRegular(element) {\n\t\telement.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"\");\n\t\telement.selectAll(\"div.data-count\").style(\"visibility\", \"hidden\");\n\t\telement.select(\"div.title-icon\").style(\"position\", \"static\");\n\t\telement.style(\"transform\", \"translate(0px,0px) scale(1)\");\n\t}\n\t_prevdataVisible;\n\t_prevlegendVisible;\n\t_prevLegendPosition;\n\t_prevChartDataFamily;\n\t_prevChart;\n\t_prevButtons;\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t}\n\tpreUpdate(domNode, element) {\n\t\tsuper.preUpdate(domNode, element);\n\t\tif (this._prevLegendPosition !== this.legendPosition()) {\n\t\t\tif (this._legend.target() !== null) this._legend.target(null);\n\t\t\tif (this._prevLegendPosition !== void 0) this.swap(this._prevLegendPosition, this.legendPosition());\n\t\t\telse this[this.legendPosition()](this._legend);\n\t\t\tif (this.legendPosition() === \"right\") {\n\t\t\t\tthis.rightOverflowX(\"hidden\");\n\t\t\t\tthis.rightOverflowY(\"auto\");\n\t\t\t\tthis.bottomOverflowX(\"visible\");\n\t\t\t\tthis.bottomOverflowY(\"visible\");\n\t\t\t} else {\n\t\t\t\tthis.rightOverflowX(\"visible\");\n\t\t\t\tthis.rightOverflowY(\"visible\");\n\t\t\t\tthis.bottomOverflowX(\"auto\");\n\t\t\t\tthis.bottomOverflowY(\"hidden\");\n\t\t\t}\n\t\t\tthis._prevLegendPosition = this.legendPosition();\n\t\t}\n\t\tif (this._prevdataVisible !== this.dataVisible()) {\n\t\t\tthis._prevdataVisible = this.dataVisible();\n\t\t\tthis._toggleData.selected(this._prevdataVisible);\n\t\t\tthis._legend.visible(this._prevlegendVisible && !this._prevdataVisible);\n\t\t\tthis._carousel.active(this._prevdataVisible ? 1 : 0);\n\t\t}\n\t\tif (this._prevlegendVisible !== this.legendVisible()) {\n\t\t\tthis._prevlegendVisible = this.legendVisible();\n\t\t\tthis._toggleLegend.selected(this._prevlegendVisible);\n\t\t\tthis._legend.visible(this._prevlegendVisible && !this._prevdataVisible);\n\t\t}\n\t\tthis._legend.orientation(this.legendPosition() === \"bottom\" ? \"horizontal\" : \"vertical\");\n\t\tthis.showLeft(!this.left());\n\t\tswitch (this.getResponsiveMode()) {\n\t\t\tcase \"tiny\":\n\t\t\t\tthis.preUpdateTiny(element);\n\t\t\t\tbreak;\n\t\t\tcase \"small\":\n\t\t\t\tthis.preUpdateSmall(element);\n\t\t\t\tbreak;\n\t\t\tcase \"regular\":\n\t\t\t\tthis.preUpdateRegular(element);\n\t\t\t\tbreak;\n\t\t}\n\t\tconst chart = this._widget.classID() === \"composite_MultiChart\" ? this._widget[\"chart\"]() : this._widget;\n\t\tthis._legend.dataFamily(chart._dataFamily || \"any\");\n\t\tif (this._prevChartDataFamily !== this._legend.dataFamily()) {\n\t\t\tthis._prevChartDataFamily = this._legend.dataFamily();\n\t\t\tswitch (this._prevChartDataFamily) {\n\t\t\t\tcase \"any\":\n\t\t\t\t\tthis._toggleLegend.selected(false);\n\t\t\t\t\tthis._legend.visible(false);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\telement.style(\"box-shadow\", this.highlight() ? `inset 0px 0px 0px ${this.highlightSize()}px ${this.highlightColor()}` : \"none\");\n\t\tif (this._hideLegendToggleList.indexOf(chart.classID()) !== -1) {\n\t\t\tthis._spacer.visible(false);\n\t\t\tthis._toggleLegend.visible(false);\n\t\t} else {\n\t\t\tthis._spacer.visible(true);\n\t\t\tthis._toggleLegend.visible(true);\n\t\t}\n\t\tif (this._prevChart !== chart) {\n\t\t\tthis._prevChart = chart;\n\t\t\tconst widgetIconBar = chart ? chart[\"_titleBar\"] || chart[\"_iconBar\"] : void 0;\n\t\t\tif (widgetIconBar && widgetIconBar instanceof IconBar) {\n\t\t\t\tthis._prevButtons = this._prevButtons || [...this.buttons()];\n\t\t\t\tconst buttons = [\n\t\t\t\t\t...widgetIconBar.buttons(),\n\t\t\t\t\tnew Spacer(),\n\t\t\t\t\t...this._prevButtons\n\t\t\t\t];\n\t\t\t\twidgetIconBar.buttons([]).render();\n\t\t\t\tthis.buttons(buttons);\n\t\t\t} else if (this._prevButtons) this.buttons(this._prevButtons);\n\t\t}\n\t\tconst hiddenButtons = [];\n\t\tif (!this.dataButtonVisible()) hiddenButtons.push(this._toggleData);\n\t\tif (!this.downloadButtonVisible()) hiddenButtons.push(this._buttonDownload);\n\t\tif (!this.downloadImageButtonVisible()) hiddenButtons.push(this._buttonDownloadImage);\n\t\tif (!this.legendButtonVisible()) hiddenButtons.push(this._toggleLegend);\n\t\tthis._buttonDownloadImage.enabled(this.widget() instanceof SVGWidget);\n\t\tthis._titleBar.hiddenButtons(hiddenButtons).visible(this.titleVisible());\n\t\tthis.topOverlay(this.titleOverlay() || !this.titleVisible());\n\t}\n\tpostUpdate(domNode, element) {\n\t\tsuper.postUpdate(domNode, element);\n\t\tswitch (this.getResponsiveMode()) {\n\t\t\tcase \"tiny\":\n\t\t\t\tthis.postUpdateTiny(element);\n\t\t\t\tbreak;\n\t\t\tcase \"small\":\n\t\t\t\tthis.postUpdateSmall(element);\n\t\t\t\tbreak;\n\t\t\tcase \"regular\":\n\t\t\t\tthis.postUpdateRegular(element);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tpostUpdateTiny(element) {\n\t\telement.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"none\");\n\t\telement.selectAll(\"div.data-count\").style(\"visibility\", \"visible\").style(\"font-size\", this.titleIconFontSize() / 3 + \"px\").style(\"line-height\", this.titleIconFontSize() / 3 + \"px\").style(\"left\", this.titleIconFontSize() + \"px\").text(this.data().length);\n\t\telement.style(\"transform\", \"translate(0px,0px) scale(1)\");\n\t\tconst iconDiv = element.selectAll(\"div.title-icon\");\n\t\tconst _node = iconDiv.node();\n\t\tconst containerRect = element.node().parentElement.getBoundingClientRect();\n\t\tif (_node) {\n\t\t\tconst rect = iconDiv.node().getBoundingClientRect();\n\t\t\tconst icon_top = containerRect.height / 2;\n\t\t\ticonDiv.style(\"position\", \"absolute\").style(\"left\", `calc(50% - ${rect.width / 2}px)`).style(\"top\", `${icon_top - rect.height / 2}px`);\n\t\t\telement.selectAll(\"div.data-count\").style(\"position\", \"absolute\").style(\"left\", `calc(50% + ${rect.width / 2}px)`).style(\"top\", `${icon_top - rect.height / 2}px`);\n\t\t}\n\t}\n\tpostUpdateSmall(element) {\n\t\telement.selectAll(\"lhs\").style(\"display\", \"none\");\n\t\telement.selectAll(\"div.title-icon\").style(\"position\", \"static\");\n\t\telement.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"\");\n\t\telement.selectAll(\"div.data-count\").style(\"visibility\", \"hidden\");\n\t\tconst rect = element.node().getBoundingClientRect();\n\t\tconst parentRect = element.node().parentElement.getBoundingClientRect();\n\t\telement.style(\"transform\", `translate(${parentRect.x - rect.x}px, ${parentRect.y - rect.y}px) scale(${this._scale})`);\n\t}\n\tpostUpdateRegular(element) {\n\t\telement.selectAll(\"div.title-icon\").style(\"position\", \"static\");\n\t\telement.selectAll(\"div.body,div.title-text,div.icon-bar\").style(\"display\", \"\");\n\t\telement.selectAll(\"div.data-count\").style(\"visibility\", \"hidden\");\n\t}\n\texit(domNode, element) {\n\t\tthis._progressBar.exit(domNode, element);\n\t\tthis.right(null);\n\t\tthis._legend.target(null);\n\t\tthis.center(null);\n\t\tthis._carousel.target(null);\n\t\tthis.top(null);\n\t\tthis._titleBar.target(null);\n\t\tthis._modal.target(null);\n\t\tdelete this._prevChart;\n\t\tdelete this._prevButtons;\n\t\tdelete this._prevChartDataFamily;\n\t\tdelete this._prevPos;\n\t\tdelete this._prevdataVisible;\n\t\tdelete this._prevlegendVisible;\n\t\tsuper.exit(domNode, element);\n\t}\n\tclick(row, column, selected) {}\n\tdblclick(row, column, selected) {}\n\tvertex_click(row, col, sel, more) {\n\t\tif (more && more.vertex) {}\n\t}\n\tvertex_dblclick(row, col, sel, more) {\n\t\tif (more && more.vertex) {}\n\t}\n\tedge_click(row, col, sel, more) {\n\t\tif (more && more.edge) {}\n\t}\n\tedge_dblclick(row, col, sel, more) {\n\t\tif (more && more.edge) {}\n\t}\n};\nChartPanel.prototype._class += \" layout_ChartPanel\";\nChartPanel.prototype.publishReset();\nChartPanel.prototype.publishProxy(\"title\", \"_titleBar\");\nChartPanel.prototype.publish(\"titleVisible\", true, \"boolean\");\nChartPanel.prototype.publish(\"titleOverlay\", false, \"boolean\");\nChartPanel.prototype.publishProxy(\"titleIcon\", \"_titleBar\");\nChartPanel.prototype.publishProxy(\"titleIconFont\", \"_titleBar\");\nChartPanel.prototype.publishProxy(\"titleFont\", \"_titleBar\");\nChartPanel.prototype.publishProxy(\"titleIconFontSize\", \"_titleBar\");\nChartPanel.prototype.publishProxy(\"titleFontSize\", \"_titleBar\");\nChartPanel.prototype.publishProxy(\"description\", \"_titleBar\");\nChartPanel.prototype.publishProxy(\"descriptionFont\", \"_titleBar\");\nChartPanel.prototype.publishProxy(\"descriptionFontSize\", \"_titleBar\");\nChartPanel.prototype.publish(\"dataVisible\", false, \"boolean\", \"Show data table\");\nChartPanel.prototype.publish(\"dataButtonVisible\", true, \"boolean\", \"Show data table button\");\nChartPanel.prototype.publish(\"downloadButtonVisible\", true, \"boolean\", \"Show data download button\");\nChartPanel.prototype.publish(\"downloadImageButtonVisible\", false, \"boolean\", \"Show image download button\");\nChartPanel.prototype.publish(\"downloadTitle\", \"\", \"string\", \"File name when downloaded\");\nChartPanel.prototype.publish(\"downloadTimestampSuffix\", true, \"boolean\", \"Use timestamp as file name suffix\");\nChartPanel.prototype.publish(\"legendVisible\", false, \"boolean\", \"Show legend\");\nChartPanel.prototype.publish(\"legendButtonVisible\", true, \"boolean\", \"Show legend button\");\nChartPanel.prototype.publish(\"legendPosition\", \"right\", \"set\", \"Position of legend\", [\"right\", \"bottom\"]);\nChartPanel.prototype.publishProxy(\"legend_labelMaxWidth\", \"_legend\", \"labelMaxWidth\");\nChartPanel.prototype.publishProxy(\"legend_showSeriesTotal\", \"_legend\", \"showSeriesTotal\");\nChartPanel.prototype.publishProxy(\"legend_showLegendTotal\", \"_legend\", \"showLegendTotal\");\nChartPanel.prototype.publishProxy(\"legend_itemPadding\", \"_legend\", \"itemPadding\");\nChartPanel.prototype.publishProxy(\"legend_shapeRadius\", \"_legend\", \"shapeRadius\");\nChartPanel.prototype.publishProxy(\"legend_symbolType\", \"_legend\", \"symbolType\");\nChartPanel.prototype.publishProxy(\"legend_labelAlign\", \"_legend\", \"labelAlign\");\nChartPanel.prototype.publish(\"widget\", null, \"widget\", \"Widget\", void 0, { render: false });\nChartPanel.prototype.publish(\"enableAutoscaling\", false, \"boolean\");\nChartPanel.prototype.publish(\"highlightSize\", 4, \"number\");\nChartPanel.prototype.publish(\"highlightColor\", \"#e67e22\", \"html-color\");\nChartPanel.prototype.publishProxy(\"progress_halfLife\", \"_progressBar\", \"halfLife\");\nChartPanel.prototype.publishProxy(\"progress_decay\", \"_progressBar\", \"decay\");\nChartPanel.prototype.publishProxy(\"progress_size\", \"_progressBar\", \"size\");\nChartPanel.prototype.publishProxy(\"progress_color\", \"_progressBar\", \"color\");\nChartPanel.prototype.publishProxy(\"progress_blurBar\", \"_progressBar\", \"blurBar\");\nChartPanel.prototype.publishProxy(\"progress_blurSize\", \"_progressBar\", \"blurSize\");\nChartPanel.prototype.publishProxy(\"progress_blurColor\", \"_progressBar\", \"blurColor\");\nChartPanel.prototype.publishProxy(\"progress_blurOpacity\", \"_progressBar\", \"blurOpacity\");\nChartPanel.prototype.widget = function(_) {\n\tif (!arguments.length) return this._widget;\n\tthis._carousel.widgets([_, this._table]);\n\tthis._widget = _;\n\tthis._widget.fields(this._legend.filteredFields()).data(this._legend.filteredData());\n\tconst context = this;\n\tconst tmpAny = this._widget;\n\ttmpAny.click = function() {\n\t\tcontext.click.apply(context, arguments);\n\t};\n\ttmpAny.dblclick = function() {\n\t\tcontext.dblclick.apply(context, arguments);\n\t};\n\ttmpAny.vertex_click = function() {\n\t\tcontext.vertex_click.apply(context, arguments);\n\t};\n\ttmpAny.vertex_dblclick = function() {\n\t\tcontext.vertex_dblclick.apply(context, arguments);\n\t};\n\ttmpAny.edge_click = function() {\n\t\tcontext.edge_click.apply(context, arguments);\n\t};\n\ttmpAny.edge_dblclick = function() {\n\t\tcontext.edge_dblclick.apply(context, arguments);\n\t};\n\treturn this;\n};\n\n//#endregion\n//#region src/FlexGrid.ts\nvar FlexGrid = class extends HTMLWidget {\n\tconstructor() {\n\t\tsuper();\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tselect(domNode.parentNode).style(\"height\", \"100%\").style(\"width\", \"100%\");\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\tconst context = this;\n\t\tconst cachedSizes = [];\n\t\tthis.updateFlexParent(element);\n\t\tconst listItems = element.selectAll(\".FlexGrid-list-item\").data(this.widgets(), (w) => w.id());\n\t\tlistItems.enter().append(\"div\").classed(\"FlexGrid-list-item\", true).each(function(w) {\n\t\t\tw.target(this);\n\t\t}).merge(listItems).style(\"min-height\", this.itemMinHeight() + \"px\").style(\"min-width\", this.itemMinWidth() + \"px\").style(\"flex-basis\", (n, i) => {\n\t\t\tconst flexBasis = this.widgetsFlexBasis()[i];\n\t\t\treturn typeof flexBasis !== \"undefined\" ? flexBasis : this.flexBasis();\n\t\t}).style(\"flex-grow\", (n, i) => {\n\t\t\tconst flexGrow = this.widgetsFlexGrow()[i];\n\t\t\treturn typeof flexGrow !== \"undefined\" ? flexGrow : this.flexGrow();\n\t\t}).style(\"border-width\", this.borderWidth() + \"px\").style(\"border-color\", this.itemBorderColor()).each(function() {\n\t\t\tthis.firstChild.style.display = \"none\";\n\t\t}).each(function() {\n\t\t\tconst rect = this.getBoundingClientRect();\n\t\t\tcachedSizes.push([rect.width, rect.height]);\n\t\t}).each(function(w, i) {\n\t\t\tthis.firstChild.style.display = \"block\";\n\t\t\tw.resize({\n\t\t\t\twidth: cachedSizes[i][0] - 2 * context.borderWidth(),\n\t\t\t\theight: cachedSizes[i][1] - 2 * context.borderWidth()\n\t\t\t});\n\t\t});\n\t\tlistItems.exit().remove();\n\t}\n\texit(domNode, element) {\n\t\tsuper.exit(domNode, element);\n\t}\n\tupdateFlexParent(element) {\n\t\telement.style(\"height\", \"100%\").style(\"flex-direction\", this.orientation() === \"horizontal\" ? \"row\" : \"column\").style(\"flex-wrap\", this.flexWrap()).style(\"align-items\", this.alignItems()).style(\"align-content\", this.alignContent()).style(\"overflow-x\", () => {\n\t\t\tif (this.forceXScroll() || this.orientation() === \"horizontal\" && this.flexWrap() === \"nowrap\" && !this.disableScroll()) return \"scroll\";\n\t\t\treturn \"hidden\";\n\t\t}).style(\"overflow-y\", () => {\n\t\t\tif (this.forceYScroll() || this.orientation() === \"vertical\" && this.flexWrap() === \"nowrap\" && !this.disableScroll()) return \"scroll\";\n\t\t\treturn \"hidden\";\n\t\t});\n\t}\n};\nFlexGrid.prototype._class += \" layout_FlexGrid\";\nFlexGrid.prototype.publish(\"itemBorderColor\", \"transparent\", \"html-color\", \"Color of list item borders\");\nFlexGrid.prototype.publish(\"borderWidth\", 0, \"number\", \"Width of list item borders (pixels)\");\nFlexGrid.prototype.publish(\"orientation\", \"horizontal\", \"set\", \"Controls the flex-direction of the list items\", [\"horizontal\", \"vertical\"]);\nFlexGrid.prototype.publish(\"flexWrap\", \"wrap\", \"set\", \"Controls the line wrap when overflow occurs\", [\n\t\"nowrap\",\n\t\"wrap\",\n\t\"wrap-reverse\"\n]);\nFlexGrid.prototype.publish(\"disableScroll\", false, \"boolean\", \"If false, scrollbar will show (when flexWrap is set to 'nowrap')\", null, { disable: (w) => w.flexWrap() !== \"nowrap\" });\nFlexGrid.prototype.publish(\"forceXScroll\", false, \"boolean\", \"If true, horzontal scrollbar will show\");\nFlexGrid.prototype.publish(\"forceYScroll\", false, \"boolean\", \"If true, vertical scrollbar will show\");\nFlexGrid.prototype.publish(\"itemMinHeight\", 64, \"number\", \"Minimum height of a list item (pixels)\");\nFlexGrid.prototype.publish(\"itemMinWidth\", 64, \"number\", \"Minimum width of a list item (pixels)\");\nFlexGrid.prototype.publish(\"alignItems\", \"stretch\", \"set\", \"Controls normal alignment of items\", [\n\t\"flex-start\",\n\t\"center\",\n\t\"flex-end\",\n\t\"stretch\"\n]);\nFlexGrid.prototype.publish(\"alignContent\", \"stretch\", \"set\", \"Controls normal alignment of item rows\", [\n\t\"flex-start\",\n\t\"center\",\n\t\"flex-end\",\n\t\"stretch\",\n\t\"space-between\",\n\t\"space-around\"\n]);\nFlexGrid.prototype.publish(\"flexGrow\", 1, \"number\", \"Default flex-grow style for all list items\");\nFlexGrid.prototype.publish(\"flexBasis\", \"10%\", \"string\", \"Default flex-basis style for all list items\");\nFlexGrid.prototype.publish(\"widgetsFlexGrow\", [], \"array\", \"Array of flex-grow values keyed on the widgets array\");\nFlexGrid.prototype.publish(\"widgetsFlexBasis\", [], \"array\", \"Array of flex-basis values keyed on the widgets array\");\nFlexGrid.prototype.publish(\"widgets\", [], \"widgetArray\", \"Array of widgets to be rendered as list items\");\n\n//#endregion\n//#region ../../node_modules/grid-list/src/gridList.js\nvar require_gridList = /* @__PURE__ */ __commonJS({ \"../../node_modules/grid-list/src/gridList.js\": ((exports, module) => {\n\t(function(root, factory) {\n\t\tif (typeof define === \"function\" && define.amd) define([], factory);\n\t\telse if (typeof exports === \"object\") module.exports = factory();\n\t\telse root.GridList = factory();\n\t})(exports, function() {\n\t\tvar GridList$1 = function(items, options) {\n\t\t\t/**\n\t\t\t* A GridList manages the two-dimensional positions from a list of items,\n\t\t\t* within a virtual matrix.\n\t\t\t*\n\t\t\t* The GridList's main function is to convert the item positions from one\n\t\t\t* grid size to another, maintaining as much of their order as possible.\n\t\t\t*\n\t\t\t* The GridList's second function is to handle collisions when moving an item\n\t\t\t* over another.\n\t\t\t*\n\t\t\t* The positioning algorithm places items in columns. Starting from left to\n\t\t\t* right, going through each column top to bottom.\n\t\t\t*\n\t\t\t* The size of an item is expressed using the number of cols and rows it\n\t\t\t* takes up within the grid (w and h)\n\t\t\t*\n\t\t\t* The position of an item is express using the col and row position within\n\t\t\t* the grid (x and y)\n\t\t\t*\n\t\t\t* An item is an object of structure:\n\t\t\t* {\n\t\t\t* w: 3, h: 1,\n\t\t\t* x: 0, y: 1\n\t\t\t* }\n\t\t\t*/\n\t\t\tthis._options = options;\n\t\t\tfor (var k$1 in this.defaults) if (!this._options.hasOwnProperty(k$1)) this._options[k$1] = this.defaults[k$1];\n\t\t\tthis.items = items;\n\t\t\tthis._adjustSizeOfItems();\n\t\t\tthis.generateGrid();\n\t\t};\n\t\tGridList$1.cloneItems = function(items, _items) {\n\t\t\t/**\n\t\t\t* Clone items with a deep level of one. Items are not referenced but their\n\t\t\t* properties are\n\t\t\t*/\n\t\t\tvar i, k$1;\n\t\t\tif (_items === void 0) _items = [];\n\t\t\tfor (i = 0; i < items.length; i++) {\n\t\t\t\tif (!_items[i]) _items[i] = {};\n\t\t\t\tfor (k$1 in items[i]) _items[i][k$1] = items[i][k$1];\n\t\t\t}\n\t\t\treturn _items;\n\t\t};\n\t\tGridList$1.prototype = {\n\t\t\tdefaults: {\n\t\t\t\tlanes: 5,\n\t\t\t\tdirection: \"horizontal\"\n\t\t\t},\n\t\t\ttoString: function() {\n\t\t\t\tvar widthOfGrid = this.grid.length, output = \"\\n #|\", border = \"\\n --\", item, i, j;\n\t\t\t\tfor (i = 0; i < widthOfGrid; i++) {\n\t\t\t\t\toutput += \" \" + this._padNumber(i, \" \");\n\t\t\t\t\tborder += \"---\";\n\t\t\t\t}\n\t\t\t\toutput += border;\n\t\t\t\tfor (i = 0; i < this._options.lanes; i++) {\n\t\t\t\t\toutput += \"\\n\" + this._padNumber(i, \" \") + \"|\";\n\t\t\t\t\tfor (j = 0; j < widthOfGrid; j++) {\n\t\t\t\t\t\toutput += \" \";\n\t\t\t\t\t\titem = this.grid[j][i];\n\t\t\t\t\t\toutput += item ? this._padNumber(this.items.indexOf(item), \"0\") : \"--\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\toutput += \"\\n\";\n\t\t\t\treturn output;\n\t\t\t},\n\t\t\tgenerateGrid: function() {\n\t\t\t\t/**\n\t\t\t\t* Build the grid structure from scratch, with the current item positions\n\t\t\t\t*/\n\t\t\t\tvar i;\n\t\t\t\tthis._resetGrid();\n\t\t\t\tfor (i = 0; i < this.items.length; i++) this._markItemPositionToGrid(this.items[i]);\n\t\t\t},\n\t\t\tresizeGrid: function(lanes) {\n\t\t\t\tvar currentColumn = 0;\n\t\t\t\tthis._options.lanes = lanes;\n\t\t\t\tthis._adjustSizeOfItems();\n\t\t\t\tthis._sortItemsByPosition();\n\t\t\t\tthis._resetGrid();\n\t\t\t\tfor (var i = 0; i < this.items.length; i++) {\n\t\t\t\t\tvar item = this.items[i], position = this._getItemPosition(item);\n\t\t\t\t\tthis._updateItemPosition(item, this.findPositionForItem(item, {\n\t\t\t\t\t\tx: currentColumn,\n\t\t\t\t\t\ty: 0\n\t\t\t\t\t}));\n\t\t\t\t\tcurrentColumn = Math.max(currentColumn, position.x);\n\t\t\t\t}\n\t\t\t\tthis._pullItemsToLeft();\n\t\t\t},\n\t\t\tfindPositionForItem: function(item, start, fixedRow) {\n\t\t\t\t/**\n\t\t\t\t* This method has two options for the position we want for the item:\n\t\t\t\t* - Starting from a certain row/column number and only looking for\n\t\t\t\t* positions to its right\n\t\t\t\t* - Accepting positions for a certain row number only (use-case: items\n\t\t\t\t* being shifted to the left/right as a result of collisions)\n\t\t\t\t*\n\t\t\t\t* @param {Object<x:Number, y:Number, w:Number, h:Number} item\n\t\t\t\t* @param {Object<x:Number, y:Number} start Position from which to start\n\t\t\t\t* the search.\n\t\t\t\t* @param {Number} [fixedRow] If provided, we're going to try to find a\n\t\t\t\t* position for the new item on it. If doesn't fit there, we're going\n\t\t\t\t* to put it on the first row.\n\t\t\t\t*\n\t\t\t\t* @returns {Number[2]} x and y.\n\t\t\t\t*/\n\t\t\t\tvar x, y, position;\n\t\t\t\tfor (x = start.x; x < this.grid.length; x++) if (fixedRow !== void 0) {\n\t\t\t\t\tposition = [x, fixedRow];\n\t\t\t\t\tif (this._itemFitsAtPosition(item, position)) return position;\n\t\t\t\t} else for (y = start.y; y < this._options.lanes; y++) {\n\t\t\t\t\tposition = [x, y];\n\t\t\t\t\tif (this._itemFitsAtPosition(item, position)) return position;\n\t\t\t\t}\n\t\t\t\tvar newCol = this.grid.length, newRow = 0;\n\t\t\t\tif (fixedRow !== void 0 && this._itemFitsAtPosition(item, [newCol, fixedRow])) newRow = fixedRow;\n\t\t\t\treturn [newCol, newRow];\n\t\t\t},\n\t\t\tmoveItemToPosition: function(item, newPosition) {\n\t\t\t\tvar position = this._getItemPosition({\n\t\t\t\t\tx: newPosition[0],\n\t\t\t\t\ty: newPosition[1],\n\t\t\t\t\tw: item.w,\n\t\t\t\t\th: item.h\n\t\t\t\t});\n\t\t\t\tthis._updateItemPosition(item, [position.x, position.y]);\n\t\t\t\tthis._resolveCollisions(item);\n\t\t\t},\n\t\t\tresizeItem: function(item, size) {\n\t\t\t\t/**\n\t\t\t\t* Resize an item and resolve collisions.\n\t\t\t\t*\n\t\t\t\t* @param {Object} item A reference to an item that's part of the grid.\n\t\t\t\t* @param {Object} size\n\t\t\t\t* @param {Number} [size.w=item.w] The new width.\n\t\t\t\t* @param {Number} [size.h=item.h] The new height.\n\t\t\t\t*/\n\t\t\t\tvar width = size.w || item.w, height = size.h || item.h;\n\t\t\t\tthis._updateItemSize(item, width, height);\n\t\t\t\tthis._resolveCollisions(item);\n\t\t\t\tthis._pullItemsToLeft();\n\t\t\t},\n\t\t\tgetChangedItems: function(initialItems, idAttribute) {\n\t\t\t\t/**\n\t\t\t\t* Compare the current items against a previous snapshot and return only\n\t\t\t\t* the ones that changed their attributes in the meantime. This includes both\n\t\t\t\t* position (x, y) and size (w, h)\n\t\t\t\t*\n\t\t\t\t* Since both their position and size can change, the items need an\n\t\t\t\t* additional identifier attribute to match them with their previous state\n\t\t\t\t*/\n\t\t\t\tvar changedItems = [];\n\t\t\t\tfor (var i = 0; i < initialItems.length; i++) {\n\t\t\t\t\tvar item = this._getItemByAttribute(idAttribute, initialItems[i][idAttribute]);\n\t\t\t\t\tif (item.x !== initialItems[i].x || item.y !== initialItems[i].y || item.w !== initialItems[i].w || item.h !== initialItems[i].h) changedItems.push(item);\n\t\t\t\t}\n\t\t\t\treturn changedItems;\n\t\t\t},\n\t\t\t_sortItemsByPosition: function() {\n\t\t\t\tthis.items.sort(function(item1, item2) {\n\t\t\t\t\tvar position1 = this._getItemPosition(item1), position2 = this._getItemPosition(item2);\n\t\t\t\t\tif (position1.x != position2.x) return position1.x - position2.x;\n\t\t\t\t\tif (position1.y != position2.y) return position1.y - position2.y;\n\t\t\t\t\treturn 0;\n\t\t\t\t}.bind(this));\n\t\t\t},\n\t\t\t_adjustSizeOfItems: function() {\n\t\t\t\t/**\n\t\t\t\t* Some items can have 100% height or 100% width. Those dimmensions are\n\t\t\t\t* expressed as 0. We need to ensure a valid width and height for each of\n\t\t\t\t* those items as the number of items per lane.\n\t\t\t\t*/\n\t\t\t\tfor (var i = 0; i < this.items.length; i++) {\n\t\t\t\t\tvar item = this.items[i];\n\t\t\t\t\tif (item.autoSize === void 0) item.autoSize = item.w === 0 || item.h === 0;\n\t\t\t\t\tif (item.autoSize) if (this._options.direction === \"horizontal\") item.h = this._options.lanes;\n\t\t\t\t\telse item.w = this._options.lanes;\n\t\t\t\t}\n\t\t\t},\n\t\t\t_resetGrid: function() {\n\t\t\t\tthis.grid = [];\n\t\t\t},\n\t\t\t_itemFitsAtPosition: function(item, newPosition) {\n\t\t\t\t/**\n\t\t\t\t* Check that an item wouldn't overlap with another one if placed at a\n\t\t\t\t* certain position within the grid\n\t\t\t\t*/\n\t\t\t\tvar position = this._getItemPosition(item), x, y;\n\t\t\t\tif (newPosition[0] < 0 || newPosition[1] < 0) return false;\n\t\t\t\tif (newPosition[1] + position.h > this._options.lanes) return false;\n\t\t\t\tfor (x = newPosition[0]; x < newPosition[0] + position.w; x++) {\n\t\t\t\t\tvar col = this.grid[x];\n\t\t\t\t\tif (!col) continue;\n\t\t\t\t\tfor (y = newPosition[1]; y < newPosition[1] + position.h; y++) if (col[y] && col[y] !== item) return false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\t_updateItemPosition: function(item, position) {\n\t\t\t\tif (item.x !== null && item.y !== null) this._deleteItemPositionFromGrid(item);\n\t\t\t\tthis._setItemPosition(item, position);\n\t\t\t\tthis._markItemPositionToGrid(item);\n\t\t\t},\n\t\t\t_updateItemSize: function(item, width, height) {\n\t\t\t\t/**\n\t\t\t\t* @param {Object} item A reference to a grid item.\n\t\t\t\t* @param {Number} width The new width.\n\t\t\t\t* @param {Number} height The new height.\n\t\t\t\t*/\n\t\t\t\tif (item.x !== null && item.y !== null) this._deleteItemPositionFromGrid(item);\n\t\t\t\titem.w = width;\n\t\t\t\titem.h = height;\n\t\t\t\tthis._markItemPositionToGrid(item);\n\t\t\t},\n\t\t\t_markItemPositionToGrid: function(item) {\n\t\t\t\t/**\n\t\t\t\t* Mark the grid cells that are occupied by an item. This prevents items\n\t\t\t\t* from overlapping in the grid\n\t\t\t\t*/\n\t\t\t\tvar position = this._getItemPosition(item), x, y;\n\t\t\t\tthis._ensureColumns(position.x + position.w);\n\t\t\t\tfor (x = position.x; x < position.x + position.w; x++) for (y = position.y; y < position.y + position.h; y++) this.grid[x][y] = item;\n\t\t\t},\n\t\t\t_deleteItemPositionFromGrid: function(item) {\n\t\t\t\tvar position = this._getItemPosition(item), x, y;\n\t\t\t\tfor (x = position.x; x < position.x + position.w; x++) {\n\t\t\t\t\tif (!this.grid[x]) continue;\n\t\t\t\t\tfor (y = position.y; y < position.y + position.h; y++) if (this.grid[x][y] == item) this.grid[x][y] = null;\n\t\t\t\t}\n\t\t\t},\n\t\t\t_ensureColumns: function(N) {\n\t\t\t\t/**\n\t\t\t\t* Ensure that the grid has at least N columns available.\n\t\t\t\t*/\n\t\t\t\tvar i;\n\t\t\t\tfor (i = 0; i < N; i++) if (!this.grid[i]) this.grid.push(new GridCol(this._options.lanes));\n\t\t\t},\n\t\t\t_getItemsCollidingWithItem: function(item) {\n\t\t\t\tvar collidingItems = [];\n\t\t\t\tfor (var i = 0; i < this.items.length; i++) if (item != this.items[i] && this._itemsAreColliding(item, this.items[i])) collidingItems.push(i);\n\t\t\t\treturn collidingItems;\n\t\t\t},\n\t\t\t_itemsAreColliding: function(item1, item2) {\n\t\t\t\tvar position1 = this._getItemPosition(item1), position2 = this._getItemPosition(item2);\n\t\t\t\treturn !(position2.x >= position1.x + position1.w || position2.x + position2.w <= position1.x || position2.y >= position1.y + position1.h || position2.y + position2.h <= position1.y);\n\t\t\t},\n\t\t\t_resolveCollisions: function(item) {\n\t\t\t\tif (!this._tryToResolveCollisionsLocally(item)) this._pullItemsToLeft(item);\n\t\t\t\tthis._pullItemsToLeft();\n\t\t\t},\n\t\t\t_tryToResolveCollisionsLocally: function(item) {\n\t\t\t\t/**\n\t\t\t\t* Attempt to resolve the collisions after moving a an item over one or more\n\t\t\t\t* other items within the grid, by shifting the position of the colliding\n\t\t\t\t* items around the moving one. This might result in subsequent collisions,\n\t\t\t\t* in which case we will revert all position permutations. To be able to\n\t\t\t\t* revert to the initial item positions, we create a virtual grid in the\n\t\t\t\t* process\n\t\t\t\t*/\n\t\t\t\tvar collidingItems = this._getItemsCollidingWithItem(item);\n\t\t\t\tif (!collidingItems.length) return true;\n\t\t\t\tvar _gridList = new GridList$1([], this._options), leftOfItem, rightOfItem, aboveOfItem, belowOfItem;\n\t\t\t\tGridList$1.cloneItems(this.items, _gridList.items);\n\t\t\t\t_gridList.generateGrid();\n\t\t\t\tfor (var i = 0; i < collidingItems.length; i++) {\n\t\t\t\t\tvar collidingItem = _gridList.items[collidingItems[i]], collidingPosition = this._getItemPosition(collidingItem);\n\t\t\t\t\tvar position = this._getItemPosition(item);\n\t\t\t\t\tleftOfItem = [position.x - collidingPosition.w, collidingPosition.y];\n\t\t\t\t\trightOfItem = [position.x + position.w, collidingPosition.y];\n\t\t\t\t\taboveOfItem = [collidingPosition.x, position.y - collidingPosition.h];\n\t\t\t\t\tbelowOfItem = [collidingPosition.x, position.y + position.h];\n\t\t\t\t\tif (_gridList._itemFitsAtPosition(collidingItem, leftOfItem)) _gridList._updateItemPosition(collidingItem, leftOfItem);\n\t\t\t\t\telse if (_gridList._itemFitsAtPosition(collidingItem, aboveOfItem)) _gridList._updateItemPosition(collidingItem, aboveOfItem);\n\t\t\t\t\telse if (_gridList._itemFitsAtPosition(collidingItem, belowOfItem)) _gridList._updateItemPosition(collidingItem, belowOfItem);\n\t\t\t\t\telse if (_gridList._itemFitsAtPosition(collidingItem, rightOfItem)) _gridList._updateItemPosition(collidingItem, rightOfItem);\n\t\t\t\t\telse return false;\n\t\t\t\t}\n\t\t\t\tGridList$1.cloneItems(_gridList.items, this.items);\n\t\t\t\tthis.generateGrid();\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\t_pullItemsToLeft: function(fixedItem) {\n\t\t\t\t/**\n\t\t\t\t* Build the grid from scratch, by using the current item positions and\n\t\t\t\t* pulling them as much to the left as possible, removing as space between\n\t\t\t\t* them as possible.\n\t\t\t\t*\n\t\t\t\t* If a \"fixed item\" is provided, its position will be kept intact and the\n\t\t\t\t* rest of the items will be layed around it.\n\t\t\t\t*/\n\t\t\t\tthis._sortItemsByPosition();\n\t\t\t\tthis._resetGrid();\n\t\t\t\tif (fixedItem) {\n\t\t\t\t\tvar fixedPosition = this._getItemPosition(fixedItem);\n\t\t\t\t\tthis._updateItemPosition(fixedItem, [fixedPosition.x, fixedPosition.y]);\n\t\t\t\t}\n\t\t\t\tfor (var i = 0; i < this.items.length; i++) {\n\t\t\t\t\tvar item = this.items[i], position = this._getItemPosition(item);\n\t\t\t\t\tif (fixedItem && item == fixedItem) continue;\n\t\t\t\t\tvar x = this._findLeftMostPositionForItem(item), newPosition = this.findPositionForItem(item, {\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty: 0\n\t\t\t\t\t}, position.y);\n\t\t\t\t\tthis._updateItemPosition(item, newPosition);\n\t\t\t\t}\n\t\t\t},\n\t\t\t_findLeftMostPositionForItem: function(item) {\n\t\t\t\t/**\n\t\t\t\t* When pulling items to the left, we need to find the leftmost position for\n\t\t\t\t* an item, with two considerations in mind:\n\t\t\t\t* - preserving its current row\n\t\t\t\t* - preserving the previous horizontal order between items\n\t\t\t\t*/\n\t\t\t\tvar tail = 0, position = this._getItemPosition(item);\n\t\t\t\tfor (var i = 0; i < this.grid.length; i++) for (var j = position.y; j < position.y + position.h; j++) {\n\t\t\t\t\tvar otherItem = this.grid[i][j];\n\t\t\t\t\tif (!otherItem) continue;\n\t\t\t\t\tvar otherPosition = this._getItemPosition(otherItem);\n\t\t\t\t\tif (this.items.indexOf(otherItem) < this.items.indexOf(item)) tail = otherPosition.x + otherPosition.w;\n\t\t\t\t}\n\t\t\t\treturn tail;\n\t\t\t},\n\t\t\t_getItemByAttribute: function(key, value) {\n\t\t\t\tfor (var i = 0; i < this.items.length; i++) if (this.items[i][key] === value) return this.items[i];\n\t\t\t\treturn null;\n\t\t\t},\n\t\t\t_padNumber: function(nr, prefix) {\n\t\t\t\treturn nr >= 10 ? nr : prefix + nr;\n\t\t\t},\n\t\t\t_getItemPosition: function(item) {\n\t\t\t\t/**\n\t\t\t\t* If the direction is vertical we need to rotate the grid 90 deg to the\n\t\t\t\t* left. Thus, we simulate the fact that items are being pulled to the top.\n\t\t\t\t*\n\t\t\t\t* Since the items have widths and heights, if we apply the classic\n\t\t\t\t* counter-clockwise 90 deg rotation\n\t\t\t\t*\n\t\t\t\t* [0 -1]\n\t\t\t\t* [1 0]\n\t\t\t\t*\n\t\t\t\t* then the top left point of an item will become the bottom left point of\n\t\t\t\t* the rotated item. To adjust for this, we need to subtract from the y\n\t\t\t\t* position the height of the original item - the width of the rotated item.\n\t\t\t\t*\n\t\t\t\t* However, if we do this then we'll reverse some actions: resizing the\n\t\t\t\t* width of an item will stretch the item to the left instead of to the\n\t\t\t\t* right; resizing an item that doesn't fit into the grid will push the\n\t\t\t\t* items around it instead of going on a new row, etc.\n\t\t\t\t*\n\t\t\t\t* We found it better to do a vertical flip of the grid after rotating it.\n\t\t\t\t* This restores the direction of the actions and greatly simplifies the\n\t\t\t\t* transformations.\n\t\t\t\t*/\n\t\t\t\tif (this._options.direction === \"horizontal\") return item;\n\t\t\t\telse return {\n\t\t\t\t\tx: item.y,\n\t\t\t\t\ty: item.x,\n\t\t\t\t\tw: item.h,\n\t\t\t\t\th: item.w\n\t\t\t\t};\n\t\t\t},\n\t\t\t_setItemPosition: function(item, position) {\n\t\t\t\t/**\n\t\t\t\t* See _getItemPosition.\n\t\t\t\t*/\n\t\t\t\tif (this._options.direction === \"horizontal\") {\n\t\t\t\t\titem.x = position[0];\n\t\t\t\t\titem.y = position[1];\n\t\t\t\t} else {\n\t\t\t\t\titem.x = position[1];\n\t\t\t\t\titem.y = position[0];\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tvar GridCol = function(lanes) {\n\t\t\tfor (var i = 0; i < lanes; i++) this.push(null);\n\t\t};\n\t\tGridCol.prototype = [];\n\t\treturn GridList$1;\n\t});\n}) });\n\n//#endregion\n//#region src/Grid.css\nvar import_gridList = /* @__PURE__ */ __toESM(require_gridList(), 1);\n\n//#endregion\n//#region src/Grid.ts\nvar GridList = import_gridList && import_gridList.default || import_gridList;\nvar Grid = class extends HTMLWidget {\n\tdivItems;\n\tgridList;\n\titems;\n\titemsMap;\n\torigItems;\n\tcellWidth;\n\tcellHeight;\n\tdragItem;\n\tdragItemPos;\n\t_d3Drag;\n\t_d3DragResize;\n\t_selectionBag;\n\t_scrollBarWidth;\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t\tthis._selectionBag = new Utility.Selection(this);\n\t\tthis.content([]);\n\t}\n\tgetDimensions() {\n\t\tconst size = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t\tthis.content().forEach(function(cell) {\n\t\t\tif (size.width < cell.gridCol() + cell.gridColSpan()) size.width = cell.gridCol() + cell.gridColSpan();\n\t\t\tif (size.height < cell.gridRow() + cell.gridRowSpan()) size.height = cell.gridRow() + cell.gridRowSpan();\n\t\t}, this);\n\t\treturn size;\n\t}\n\tclearContent(widget) {\n\t\tthis.content(this.content().filter(function(contentWidget) {\n\t\t\tif (!widget) {\n\t\t\t\tcontentWidget.target(null);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tlet w = contentWidget;\n\t\t\twhile (w) {\n\t\t\t\tif (widget === w) {\n\t\t\t\t\tcontentWidget.target(null);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tw = w.widget ? w.widget() : null;\n\t\t\t}\n\t\t\treturn true;\n\t\t}));\n\t}\n\tsetContent(row, col, widget, title, rowSpan, colSpan) {\n\t\trowSpan = rowSpan || 1;\n\t\tcolSpan = colSpan || 1;\n\t\ttitle = title || \"\";\n\t\tthis.content(this.content().filter(function(contentWidget) {\n\t\t\tif (contentWidget.gridRow() === row && contentWidget.gridCol() === col) {\n\t\t\t\tcontentWidget.target(null);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}));\n\t\tif (widget) {\n\t\t\tconst cell = new Cell().gridRow(row).gridCol(col).widget(widget).title(title).gridRowSpan(rowSpan).gridColSpan(colSpan);\n\t\t\tthis.content().push(cell);\n\t\t}\n\t\treturn this;\n\t}\n\tsortedContent() {\n\t\treturn this.content().sort(function(l, r) {\n\t\t\tif (l.gridRow() === r.gridRow()) return l.gridCol() - r.gridCol();\n\t\t\treturn l.gridRow() - r.gridRow();\n\t\t});\n\t}\n\tgetCell(row, col) {\n\t\tlet retVal = null;\n\t\tthis.content().some(function(cell) {\n\t\t\tif (row >= cell.gridRow() && row < cell.gridRow() + cell.gridRowSpan() && col >= cell.gridCol() && col < cell.gridCol() + cell.gridColSpan()) {\n\t\t\t\tretVal = cell;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t\treturn retVal;\n\t}\n\tgetWidgetCell(id) {\n\t\tlet retVal = null;\n\t\tthis.content().some(function(cell) {\n\t\t\tif (cell.widget().id() === id) {\n\t\t\t\tretVal = cell;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t\treturn retVal;\n\t}\n\tgetContent(id) {\n\t\tlet retVal = null;\n\t\tthis.content().some(function(cell) {\n\t\t\tif (cell.widget().id() === id) {\n\t\t\t\tretVal = cell.widget();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t\treturn retVal;\n\t}\n\tcellToGridItem(cell) {\n\t\treturn {\n\t\t\tx: cell.gridCol(),\n\t\t\ty: cell.gridRow(),\n\t\t\tw: cell.gridColSpan(),\n\t\t\th: cell.gridRowSpan(),\n\t\t\tid: cell.id(),\n\t\t\tcell\n\t\t};\n\t}\n\tgridItemToCell(item) {\n\t\titem.cell.gridCol(item.x).gridRow(item.y).gridColSpan(item.w).gridRowSpan(item.h);\n\t}\n\tresetItemsPos() {\n\t\tthis.origItems.forEach(function(origItem) {\n\t\t\tconst item = this.itemsMap[origItem.id];\n\t\t\titem.x = origItem.x;\n\t\t\titem.y = origItem.y;\n\t\t}, this);\n\t}\n\tinitGridList() {\n\t\tthis.itemsMap = {};\n\t\tthis.items = this.content().map(function(cell) {\n\t\t\tconst retVal = this.cellToGridItem(cell);\n\t\t\tthis.itemsMap[retVal.id] = retVal;\n\t\t\treturn retVal;\n\t\t}, this);\n\t\tthis.origItems = this.content().map(this.cellToGridItem);\n\t\tthis.gridList = new GridList(this.items, {\n\t\t\tdirection: this.snapping(),\n\t\t\tlanes: this.snapping() === \"horizontal\" ? this.snappingRows() : this.snappingColumns()\n\t\t});\n\t}\n\tkillGridList() {\n\t\tthis.gridList = null;\n\t\tdelete this.items;\n\t\tdelete this.itemsMap;\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tthis._scrollBarWidth = Platform.getScrollbarWidth();\n\t\tconst context = this;\n\t\tthis._d3Drag = drag().subject(function(_d) {\n\t\t\tconst d = context.cellToGridItem(_d);\n\t\t\treturn {\n\t\t\t\tx: d.x * context.cellWidth,\n\t\t\t\ty: d.y * context.cellHeight\n\t\t\t};\n\t\t}).on(\"start\", function(_d) {\n\t\t\tif (!context.designMode()) return;\n\t\t\td3Event().sourceEvent.stopPropagation();\n\t\t\tcontext.initGridList();\n\t\t\tconst d = context.itemsMap[_d.id()];\n\t\t\tcontext.dragItem = element.append(\"div\").attr(\"class\", \"dragging\").style(\"transform\", function() {\n\t\t\t\treturn \"translate(\" + d.x * context.cellWidth + \"px, \" + d.y * context.cellHeight + \"px)\";\n\t\t\t}).style(\"width\", function() {\n\t\t\t\treturn d.w * context.cellWidth - context.gutter() + \"px\";\n\t\t\t}).style(\"height\", function() {\n\t\t\t\treturn d.h * context.cellHeight - context.gutter() + \"px\";\n\t\t\t});\n\t\t\tcontext.selectionBagClick(_d);\n\t\t}).on(\"drag\", function(_d) {\n\t\t\tif (!context.designMode()) return;\n\t\t\tconst event = d3Event();\n\t\t\tevent.sourceEvent.stopPropagation();\n\t\t\tconst d = context.itemsMap[_d.id()];\n\t\t\tif (event.x < 0) event.x = 0;\n\t\t\tif (event.x + d.w * context.cellWidth > context.snappingColumns() * context.cellWidth) event.x = context.snappingColumns() * context.cellWidth - d.w * context.cellWidth;\n\t\t\tif (event.y < 0) event.y = 0;\n\t\t\tif (event.y + d.h * context.cellWidth > context.snappingRows() * context.cellWidth) event.y = context.snappingRows() * context.cellWidth - d.h * context.cellWidth;\n\t\t\tconst pos = [Math.max(0, Math.floor((event.x + context.cellWidth / 2) / context.cellWidth)), Math.max(0, Math.floor((event.y + context.cellHeight / 2) / context.cellHeight))];\n\t\t\tif (d.x !== pos[0] || d.y !== pos[1]) {\n\t\t\t\tif (context.snapping() !== \"none\") {\n\t\t\t\t\tcontext.resetItemsPos();\n\t\t\t\t\tcontext.gridList.moveItemToPosition(d, pos);\n\t\t\t\t} else {\n\t\t\t\t\td.x = pos[0];\n\t\t\t\t\td.y = pos[1];\n\t\t\t\t}\n\t\t\t\tif (_d.gridCol() !== d.x || _d.gridRow() !== d.y) {\n\t\t\t\t\tcontext.items.forEach(context.gridItemToCell);\n\t\t\t\t\tcontext.updateGrid(false, 100);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontext.dragItem.style(\"transform\", function() {\n\t\t\t\treturn \"translate(\" + event.x + \"px, \" + event.y + \"px)\";\n\t\t\t}).style(\"width\", function() {\n\t\t\t\treturn d.w * context.cellWidth + \"px\";\n\t\t\t}).style(\"height\", function() {\n\t\t\t\treturn d.h * context.cellHeight + \"px\";\n\t\t\t});\n\t\t}).on(\"end\", function() {\n\t\t\tif (!context.designMode()) return;\n\t\t\td3Event().sourceEvent.stopPropagation();\n\t\t\tcontext.dragItem.remove();\n\t\t\tcontext.dragItem = null;\n\t\t\tcontext.killGridList();\n\t\t});\n\t\tthis._d3DragResize = drag().subject(function(_d) {\n\t\t\tconst d = context.cellToGridItem(_d);\n\t\t\treturn {\n\t\t\t\tx: (d.x + d.w - 1) * context.cellWidth,\n\t\t\t\ty: (d.y + d.h - 1) * context.cellHeight\n\t\t\t};\n\t\t}).on(\"start\", function(_d) {\n\t\t\tif (!context.designMode()) return;\n\t\t\td3Event().sourceEvent.stopPropagation();\n\t\t\tcontext.initGridList();\n\t\t\tconst d = context.itemsMap[_d.id()];\n\t\t\tcontext.dragItem = element.append(\"div\").attr(\"class\", \"resizing\").style(\"transform\", function() {\n\t\t\t\treturn \"translate(\" + d.x * context.cellWidth + \"px, \" + d.y * context.cellHeight + \"px)\";\n\t\t\t}).style(\"width\", function() {\n\t\t\t\treturn d.w * context.cellWidth - context.gutter() + \"px\";\n\t\t\t}).style(\"height\", function() {\n\t\t\t\treturn d.h * context.cellHeight - context.gutter() + \"px\";\n\t\t\t});\n\t\t\tcontext.dragItemPos = {\n\t\t\t\tx: d.x,\n\t\t\t\ty: d.y\n\t\t\t};\n\t\t}).on(\"drag\", function(_d) {\n\t\t\tif (!context.designMode()) return;\n\t\t\tconst event = d3Event();\n\t\t\tevent.sourceEvent.stopPropagation();\n\t\t\tconst d = context.itemsMap[_d.id()];\n\t\t\tconst pos = [Math.max(0, Math.round(event.x / context.cellWidth)), Math.max(0, Math.round(event.y / context.cellHeight))];\n\t\t\tconst size = {\n\t\t\t\tw: Math.max(1, pos[0] - d.x + 1),\n\t\t\t\th: Math.max(1, pos[1] - d.y + 1)\n\t\t\t};\n\t\t\tif (d.w !== size.w || d.h !== size.h) {\n\t\t\t\tif (context.snapping() !== \"none\") {\n\t\t\t\t\tcontext.resetItemsPos();\n\t\t\t\t\tcontext.gridList.resizeItem(d, size);\n\t\t\t\t} else {\n\t\t\t\t\td.w = size.w;\n\t\t\t\t\td.h = size.h;\n\t\t\t\t}\n\t\t\t\tif (_d.gridColSpan() !== d.w || _d.gridRowSpan() !== d.h) {\n\t\t\t\t\tcontext.items.forEach(context.gridItemToCell);\n\t\t\t\t\tcontext.updateGrid(d.id, 100);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontext.dragItem.style(\"width\", function() {\n\t\t\t\treturn (-d.x + 1) * context.cellWidth + event.x - context.gutter() + \"px\";\n\t\t\t}).style(\"height\", function() {\n\t\t\t\treturn (-d.y + 1) * context.cellHeight + event.y - context.gutter() + \"px\";\n\t\t\t});\n\t\t}).on(\"end\", function() {\n\t\t\tif (!context.designMode()) return;\n\t\t\td3Event().sourceEvent.stopPropagation();\n\t\t\tcontext.dragItem.remove();\n\t\t\tcontext.dragItem = null;\n\t\t\tcontext.killGridList();\n\t\t});\n\t}\n\tupdateGrid(resize, transitionDuration = 0, _noRender = false) {\n\t\ttransitionDuration = transitionDuration || 0;\n\t\tconst context = this;\n\t\tthis.divItems.classed(\"draggable\", this.designMode()).transition().duration(transitionDuration).style(\"left\", function(d) {\n\t\t\treturn d.gridCol() * context.cellWidth + context.gutter() / 2 + \"px\";\n\t\t}).style(\"top\", function(d) {\n\t\t\treturn d.gridRow() * context.cellHeight + context.gutter() / 2 + \"px\";\n\t\t}).style(\"width\", function(d) {\n\t\t\treturn d.gridColSpan() * context.cellWidth - context.gutter() + \"px\";\n\t\t}).style(\"height\", function(d) {\n\t\t\treturn d.gridRowSpan() * context.cellHeight - context.gutter() + \"px\";\n\t\t}).on(\"end\", function(d) {\n\t\t\td.surfaceShadow_default(context.surfaceShadow()).surfacePadding_default(context.surfacePadding()).surfaceBorderWidth_default(context.surfaceBorderWidth()).surfaceBackgroundColor_default(context.surfaceBackgroundColor());\n\t\t\tif (resize === true || resize === d.id()) d.resize().lazyRender();\n\t\t});\n\t}\n\tupdate(domNode, element2) {\n\t\tsuper.update(domNode, element2);\n\t\tthis._placeholderElement.style(\"overflow-x\", this.fitTo() === \"width\" ? \"hidden\" : null);\n\t\tthis._placeholderElement.style(\"overflow-y\", this.fitTo() === \"width\" ? \"scroll\" : null);\n\t\tconst dimensions = this.getDimensions();\n\t\tthis.cellWidth = (this.width() - (this.fitTo() === \"width\" ? this._scrollBarWidth : 0)) / dimensions.width;\n\t\tthis.cellHeight = this.fitTo() === \"all\" ? this.height() / dimensions.height : this.cellWidth;\n\t\tif (this.designMode()) {\n\t\t\tconst cellLaneRatio = Math.min(this.width() / this.snappingColumns(), this.height() / this.snappingRows());\n\t\t\tthis.cellWidth = Math.floor(cellLaneRatio);\n\t\t\tthis.cellHeight = this.cellWidth;\n\t\t}\n\t\tconst context = this;\n\t\tconst divItems = element2.selectAll(\"#\" + this.id() + \" > .ddCell\").data(this.content(), function(d) {\n\t\t\treturn d.id();\n\t\t});\n\t\tthis.divItems = divItems.enter().append(\"div\").attr(\"class\", \"ddCell\").each(function(d) {\n\t\t\td.target(this);\n\t\t\td.__grid_watch = d.monitor(function(key, newVal, oldVal) {\n\t\t\t\tif (context._renderCount && (key === \"snapping\" || key.indexOf(\"grid\") === 0) && newVal !== oldVal) {\n\t\t\t\t\tif (!context.gridList) {\n\t\t\t\t\t\tcontext.initGridList();\n\t\t\t\t\t\tif (context.snapping() !== \"none\") context.gridList.resizeGrid(context.snapping() === \"horizontal\" ? context.snappingRows() : context.snappingColumns());\n\t\t\t\t\t\tcontext.items.forEach(context.gridItemToCell);\n\t\t\t\t\t\tcontext.updateGrid(d.id(), 100);\n\t\t\t\t\t\tcontext.killGridList();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tselect(this).append(\"div\").attr(\"class\", \"resizeHandle\").call(context._d3DragResize).append(\"div\").attr(\"class\", \"resizeHandleDisplay\");\n\t\t}).merge(divItems);\n\t\tthis.divItems.each(function(d) {\n\t\t\tconst element = select(this);\n\t\t\tif (context.designMode()) element.call(context._d3Drag);\n\t\t\telse element.on(\"mousedown.drag\", null).on(\"touchstart.drag\", null);\n\t\t});\n\t\tthis.divItems.select(\".resizeHandle\").style(\"display\", this.designMode() ? null : \"none\");\n\t\tthis.updateGrid(true);\n\t\tdivItems.exit().each(function(d) {\n\t\t\td.target(null);\n\t\t\tif (d.__grid_watch) d.__grid_watch.remove();\n\t\t}).remove();\n\t\tconst lanesBackground = element2.selectAll(\"#\" + this.id() + \" > .laneBackground\").data(this.designMode() ? [\"\"] : []);\n\t\tlanesBackground.enter().insert(\"div\", \":first-child\").attr(\"class\", \"laneBackground\").style(\"left\", \"1px\").style(\"top\", \"1px\").on(\"click\", function() {\n\t\t\tcontext.selectionBagClear();\n\t\t}).merge(lanesBackground).style(\"width\", this.snappingColumns() * this.cellWidth + \"px\").style(\"height\", this.snappingRows() * this.cellHeight + \"px\");\n\t\tlanesBackground.exit().each(function() {\n\t\t\tcontext.selectionBagClear();\n\t\t}).remove();\n\t\tconst lanes = element2.selectAll(\"#\" + this.id() + \" > .lane\").data(this.designMode() ? [\"\"] : []);\n\t\tlanes.enter().append(\"div\").attr(\"class\", \"lane\").style(\"left\", \"1px\").style(\"top\", \"1px\");\n\t\tlanes.style(\"display\", this.showLanes() ? null : \"none\").style(\"width\", this.snappingColumns() * this.cellWidth + \"px\").style(\"height\", this.snappingRows() * this.cellHeight + \"px\").style(\"background-image\", \"linear-gradient(to right, grey 1px, transparent 1px), linear-gradient(to bottom, grey 1px, transparent 1px)\").style(\"background-size\", this.cellWidth + \"px \" + this.cellHeight + \"px\");\n\t\tlanes.exit().remove();\n\t}\n\texit(domNode, element) {\n\t\tthis.content().forEach((w) => w.target(null));\n\t\tsuper.exit(domNode, element);\n\t}\n\t_createSelectionObject(d) {\n\t\treturn {\n\t\t\t_id: d._id,\n\t\t\telement: () => {\n\t\t\t\treturn d._element;\n\t\t\t},\n\t\t\twidget: d\n\t\t};\n\t}\n\tselection(_) {\n\t\tif (!arguments.length) return this._selectionBag.get().map(function(d) {\n\t\t\treturn d._id;\n\t\t});\n\t\tthis._selectionBag.set(_.map(function(row) {\n\t\t\treturn this._createSelectionObject(row);\n\t\t}, this));\n\t\treturn this;\n\t}\n\tselectionBagClear() {\n\t\tif (!this._selectionBag.isEmpty()) {\n\t\t\tthis._selectionBag.clear();\n\t\t\tthis.postSelectionChange();\n\t\t}\n\t}\n\tselectionBagClick(d) {\n\t\tif (d !== null) {\n\t\t\tconst selectionObj = this._createSelectionObject(d);\n\t\t\tif (d3Event().sourceEvent.ctrlKey) if (this._selectionBag.isSelected(selectionObj)) {\n\t\t\t\tthis._selectionBag.remove(selectionObj);\n\t\t\t\tthis.postSelectionChange();\n\t\t\t} else {\n\t\t\t\tthis._selectionBag.append(selectionObj);\n\t\t\t\tthis.postSelectionChange();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconst selected = this._selectionBag.get();\n\t\t\t\tif (selected.length === 1 && selected[0]._id === selectionObj._id) this.selectionBagClear();\n\t\t\t\telse this._selectionBag.set([selectionObj]);\n\t\t\t\tthis.postSelectionChange();\n\t\t\t}\n\t\t}\n\t}\n\tpostSelectionChange() {}\n\tapplyLayout(layoutArr) {\n\t\tthis.divItems.each((d, i) => {\n\t\t\tif (layoutArr[i]) {\n\t\t\t\tconst [x, y, w, h] = layoutArr[i];\n\t\t\t\td.gridCol(x).gridRow(y).gridColSpan(w).gridRowSpan(h);\n\t\t\t}\n\t\t});\n\t\tthis.updateGrid(true);\n\t}\n\tvizActivation(elem) {}\n};\nGrid.prototype._class += \" layout_Grid\";\nGrid.prototype.publish(\"designMode\", false, \"boolean\", \"Design Mode\", null, { tags: [\"Basic\"] });\nGrid.prototype.publish(\"showLanes\", true, \"boolean\", \"Show snapping lanes when in design mode\", null, {\n\ttags: [\"Basic\"],\n\tdisable: (w) => !w.designMode()\n});\nGrid.prototype.publish(\"fitTo\", \"all\", \"set\", \"Sizing Strategy\", [\"all\", \"width\"], { tags: [\"Basic\"] });\nGrid.prototype.publish(\"snapping\", \"vertical\", \"set\", \"Snapping Strategy\", [\n\t\"vertical\",\n\t\"horizontal\",\n\t\"none\"\n]);\nGrid.prototype.publish(\"snappingColumns\", 12, \"number\", \"Snapping Columns\");\nGrid.prototype.publish(\"snappingRows\", 16, \"number\", \"Snapping Rows\");\nGrid.prototype.publish(\"gutter\", 6, \"number\", \"Gap Between Widgets\", null, { tags: [\"Basic\"] });\nGrid.prototype.publish(\"surfaceShadow\", true, \"boolean\", \"3D Shadow\");\nGrid.prototype.publish(\"surfacePadding\", null, \"string\", \"Cell Padding (px)\", null, { tags: [\"Intermediate\"] });\nGrid.prototype.publish(\"surfaceBorderWidth\", 1, \"number\", \"Width (px) of Cell Border\", null, { tags: [\"Intermediate\"] });\nGrid.prototype.publish(\"surfaceBackgroundColor\", null, \"html-color\", \"Surface Background Color\", null, { tags: [\"Advanced\"] });\nGrid.prototype.publish(\"content\", [], \"widgetArray\", \"widgets\", null, {\n\ttags: [\"Basic\"],\n\trender: false\n});\n\n//#endregion\n//#region src/HorizontalList.ts\nvar HorizontalList = class extends FlexGrid {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.orientation_default(\"horizontal\");\n\t\tthis.flexWrap_default(\"nowrap\");\n\t}\n};\nHorizontalList.prototype._class += \" layout_HorizontalList\";\n\n//#endregion\n//#region src/Layered.ts\nvar Layered = class extends HTMLWidget {\n\t_contentContainer;\n\t_widgetPlacements;\n\t_widgetRatios;\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t\tthis._widgetPlacements = [];\n\t\tthis._widgetRatios = [];\n\t}\n\taddLayer(widget, placement = \"default\", widthRatio = 1, heightRatio = 1) {\n\t\tconst widgets = this.widgets();\n\t\twidgets.push(widget ? widget : new Text().text(\"No widget defined for layer.\"));\n\t\tthis.widgets(widgets);\n\t\tthis._widgetPlacements.push(placement);\n\t\tthis._widgetRatios.push([widthRatio, heightRatio]);\n\t\treturn this;\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tthis._contentContainer = element.append(\"div\").attr(\"class\", \"container\");\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\tconst context = this;\n\t\telement.style(\"padding\", this.surfacePadding() + \"px\");\n\t\tconst content = this._contentContainer.selectAll(\".content.id\" + this.id()).data(this.widgets(), function(d) {\n\t\t\treturn d.id();\n\t\t});\n\t\tcontent.enter().append(\"div\").attr(\"class\", \"content id\" + this.id()).each(function(widget, idx) {\n\t\t\twidget.target(this);\n\t\t}).merge(content).each(function(widget, idx) {\n\t\t\tconst clientSize = {\n\t\t\t\twidth: context.clientWidth(),\n\t\t\t\theight: context.clientHeight()\n\t\t\t};\n\t\t\tconst widgetSize = context.widgetSize(idx, clientSize);\n\t\t\tconst widgetPosition = context.widgetPosition(idx, clientSize, widgetSize);\n\t\t\tthis.style.top = widgetPosition.y + \"px\";\n\t\t\tthis.style.left = widgetPosition.x + \"px\";\n\t\t\twidget.resize(widgetSize).render();\n\t\t});\n\t\tcontent.exit().each(function(widget, idx) {\n\t\t\twidget.target(null);\n\t\t}).remove();\n\t\tcontent.order();\n\t}\n\twidgetSize(idx, clientSize) {\n\t\tif (this._widgetPlacements[idx] === \"default\") return {\n\t\t\twidth: clientSize.width * this._widgetRatios[idx][0],\n\t\t\theight: clientSize.height * this._widgetRatios[idx][1]\n\t\t};\n\t\telse return {\n\t\t\twidth: clientSize.width * this._widgetRatios[idx][0],\n\t\t\theight: clientSize.height * this._widgetRatios[idx][1]\n\t\t};\n\t}\n\twidgetPosition(idx, clientSize, widgetSize) {\n\t\tswitch (this._widgetPlacements[idx]) {\n\t\t\tdefault: return {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0\n\t\t\t};\n\t\t\tcase \"top\": return {\n\t\t\t\tx: clientSize.width / 2 - widgetSize.width / 2,\n\t\t\t\ty: 0\n\t\t\t};\n\t\t\tcase \"bottom\": return {\n\t\t\t\tx: clientSize.width / 2 - widgetSize.width / 2,\n\t\t\t\ty: clientSize.height - widgetSize.height\n\t\t\t};\n\t\t\tcase \"left\": return {\n\t\t\t\tx: 0,\n\t\t\t\ty: clientSize.height / 2 - widgetSize.height / 2\n\t\t\t};\n\t\t\tcase \"right\": return {\n\t\t\t\tx: clientSize.width - widgetSize.width,\n\t\t\t\ty: clientSize.height / 2 - widgetSize.height / 2\n\t\t\t};\n\t\t\tcase \"center\": return {\n\t\t\t\tx: clientSize.width / 2 - widgetSize.width / 2,\n\t\t\t\ty: clientSize.height / 2 - widgetSize.height / 2\n\t\t\t};\n\t\t}\n\t}\n};\nLayered.prototype._class += \" layout_Layered\";\nLayered.prototype.publish(\"surfacePadding\", 0, \"number\", \"Padding\");\nLayered.prototype.publish(\"widgets\", [], \"widgetArray\", \"widgets\", null, { tags: [\"Private\"] });\n\n//#endregion\n//#region src/Popup.ts\nvar Popup = class extends HTMLWidget {\n\t_surfaceButtons;\n\t_originalPosition;\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t\tthis._surfaceButtons = [];\n\t}\n\tupdateState(visible) {\n\t\tvisible = visible || !this.popupState();\n\t\tthis.popupState(visible).render();\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tthis.widget().target(domNode);\n\t\tthis._originalPosition = this.position();\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\telement.style(\"visibility\", this.popupState() ? null : \"hidden\").style(\"opacity\", this.popupState() ? null : 0).style(\"width\", this.shrinkWrap() ? this.widget().width() + \"px\" : this._size.width + \"px\").style(\"height\", this.shrinkWrap() ? this.widget().height() + \"px\" : this._size.height + \"px\");\n\t\tif (this.widget().size().height === 0) this.widget().resize(this.size());\n\t}\n\tpostUpdate(domNode, element) {\n\t\tlet left;\n\t\tlet top;\n\t\tswitch (this.centerPopup()) {\n\t\t\tcase \"container\":\n\t\t\t\tif (this._placeholderElement) {\n\t\t\t\t\tleft = parseInt(this._placeholderElement.style(\"width\")) / 2 - this.widget().width() / 2;\n\t\t\t\t\ttop = parseInt(this._placeholderElement.style(\"height\")) / 2 - this.widget().height() / 2;\n\t\t\t\t}\n\t\t\t\tthis.position(\"absolute\");\n\t\t\t\tbreak;\n\t\t\tcase \"window\":\n\t\t\t\tleft = window.innerWidth / 2 - this.widget().width() / 2;\n\t\t\t\ttop = window.innerHeight / 2 - this.widget().height() / 2;\n\t\t\t\tthis.position(\"fixed\");\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tleft = 0;\n\t\t\t\ttop = 0;\n\t\t\t\tthis.position(this._originalPosition);\n\t\t\t\tbreak;\n\t\t}\n\t\tthis.pos({\n\t\t\tx: left,\n\t\t\ty: top\n\t\t});\n\t\tsuper.postUpdate(domNode, element);\n\t\telement.style(\"position\", this.position()).style(\"left\", this.left() + \"px\").style(\"right\", this.right() + \"px\").style(\"top\", this.top() + \"px\").style(\"bottom\", this.bottom() + \"px\");\n\t}\n\texit(domNode, element) {\n\t\tif (this.widget()) this.widget().target(null);\n\t\tsuper.exit(domNode, element);\n\t}\n\tclick(obj) {}\n};\nPopup.prototype._class += \" layout_Popup\";\nPopup.prototype.publish(\"popupState\", false, \"boolean\", \"State of the popup, visible (true) or hidden (false)\", null, {});\nPopup.prototype.publish(\"shrinkWrap\", false, \"boolean\", \"The popup parent container either shrinks to the size of its contents (true) or expands to fit thge popup's parentDiv (false)\", null, {});\nPopup.prototype.publish(\"centerPopup\", \"none\", \"set\", \"Center the widget in its container element (target) or in the window\", [\n\t\"none\",\n\t\"container\",\n\t\"window\"\n], {});\nPopup.prototype.publish(\"top\", null, \"number\", \"Top position property of popup\", null, {});\nPopup.prototype.publish(\"bottom\", null, \"number\", \"Bottom position property of popup\", null, {});\nPopup.prototype.publish(\"left\", null, \"number\", \"Left position property of popup\", null, {});\nPopup.prototype.publish(\"right\", null, \"number\", \"Right position property of popup\", null, {});\nPopup.prototype.publish(\"position\", \"relative\", \"set\", \"Value of the 'position' property\", [\n\t\"absolute\",\n\t\"relative\",\n\t\"fixed\",\n\t\"static\",\n\t\"initial\",\n\t\"inherit\"\n], { tags: [\"Private\"] });\nPopup.prototype.publish(\"widget\", null, \"widget\", \"Widget\", null, { tags: [\"Private\"] });\n\n//#endregion\n//#region src/Tabbed.ts\nvar Tabbed = class extends HTMLWidget {\n\t_tabContainer;\n\t_contentContainer;\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t}\n\tclearTabs() {\n\t\tthis.labels([]);\n\t\tthis.widgets([]);\n\t\treturn this;\n\t}\n\taddTab(widget, label, isActive, callback) {\n\t\tconst widgetSize = widget.size();\n\t\tif (widgetSize.width === 0 && widgetSize.height === 0) widget.size({\n\t\t\twidth: \"100%\",\n\t\t\theight: \"100%\"\n\t\t});\n\t\tconst labels = this.labels();\n\t\tconst widgets = this.widgets();\n\t\tif (isActive) this.activeTabIdx(this.widgets().length);\n\t\tlabels.push(label);\n\t\tconst surface = new Surface().widget(widget ? widget : new Text().text(\"No widget defined for tab\"));\n\t\twidgets.push(surface);\n\t\tthis.labels(labels);\n\t\tthis.widgets(widgets);\n\t\tif (callback) callback(surface);\n\t\treturn this;\n\t}\n\twidgetSize(widgetDiv) {\n\t\tconst width = this.clientWidth();\n\t\tlet height = this.clientHeight();\n\t\tconst tcBox = this._tabContainer.node().getBoundingClientRect();\n\t\tif (typeof tcBox.height !== \"undefined\") height -= tcBox.height;\n\t\treturn {\n\t\t\twidth,\n\t\t\theight\n\t\t};\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t\tthis._tabContainer = element.append(\"div\");\n\t\tthis._contentContainer = element.append(\"div\");\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\tconst context = this;\n\t\telement.style(\"padding\", this.surfacePadding_exists() ? this.surfacePadding() + \"px\" : null);\n\t\tconst tabs = this._tabContainer.selectAll(\".tab-button.id\" + this.id()).data(this.showTabs() ? this.labels() : [], function(d) {\n\t\t\treturn d;\n\t\t});\n\t\ttabs.enter().append(\"span\").attr(\"class\", \"tab-button id\" + this.id()).style(\"cursor\", \"pointer\").on(\"click\", function(d, idx) {\n\t\t\tcontext.click(context.widgets()[idx].widget(), d, idx);\n\t\t\tcontext.activeTabIdx(idx).render();\n\t\t}).merge(tabs).classed(\"active\", function(d, idx) {\n\t\t\treturn context.activeTabIdx() === idx;\n\t\t}).text(function(d) {\n\t\t\treturn d;\n\t\t});\n\t\ttabs.exit().remove();\n\t\tconst content = this._contentContainer.selectAll(\".tab-content.id\" + this.id()).data(this.widgets(), function(d) {\n\t\t\treturn d.id();\n\t\t});\n\t\tcontent.enter().append(\"div\").attr(\"class\", \"tab-content id\" + this.id()).each(function(widget, idx) {\n\t\t\twidget.target(this);\n\t\t}).merge(content).classed(\"active\", function(d, idx) {\n\t\t\treturn context.activeTabIdx() === idx;\n\t\t}).style(\"display\", function(d, idx) {\n\t\t\treturn context.activeTabIdx() === idx ? \"block\" : \"none\";\n\t\t}).each(function(surface, idx) {\n\t\t\tsurface.visible(context.activeTabIdx() === idx);\n\t\t\tif (context.activeTabIdx() === idx) {\n\t\t\t\tconst wSize = context.widgetSize(select(this));\n\t\t\t\tsurface.surfaceBorderWidth(context.showTabs() ? null : 0).surfacePadding(context.showTabs() ? null : 0).resize(wSize);\n\t\t\t}\n\t\t});\n\t\tcontent.exit().each(function(widget, idx) {\n\t\t\twidget.target(null);\n\t\t}).remove();\n\t\tswitch (this.tabLocation()) {\n\t\t\tcase \"bottom\":\n\t\t\t\tthis._tabContainer.attr(\"class\", \"on_bottom\").style(\"top\", this._contentContainer.node().offsetHeight + this.surfacePadding() + \"px\").style(\"position\", \"absolute\");\n\t\t\t\tthis._contentContainer.style(\"top\", this.surfacePadding_exists() ? this.surfacePadding() + \"px\" : null).style(\"position\", \"absolute\");\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis._tabContainer.attr(\"class\", \"on_top\").style(\"top\", null).style(\"position\", \"relative\");\n\t\t\t\tthis._contentContainer.style(\"top\", this._tabContainer.node().offsetHeight + this.surfacePadding() + \"px\").style(\"position\", \"absolute\");\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tclick(widget, column, idx) {}\n};\nTabbed.prototype._class += \" layout_Tabbed\";\nTabbed.prototype.publish(\"showTabs\", true, \"boolean\", \"Show Tabs\", null, {});\nTabbed.prototype.publish(\"surfacePadding\", 4, \"number\", \"Padding\");\nTabbed.prototype.publish(\"activeTabIdx\", 0, \"number\", \"Index of active tab\", null, {});\nTabbed.prototype.publish(\"labels\", [], \"array\", \"Array of tab labels sharing an index with \", null, { tags: [\"Private\"] });\nTabbed.prototype.publish(\"tabLocation\", \"top\", \"set\", \"Position the tabs at the bottom of the widget\", [\"top\", \"bottom\"], { tags: [\"Private\"] });\nTabbed.prototype.publish(\"widgets\", [], \"widgetArray\", \"widgets\", null, { tags: [\"Private\"] });\n\n//#endregion\n//#region src/Toolbar.ts\nvar Toolbar = class extends HTMLWidget {\n\tconstructor() {\n\t\tsuper();\n\t\tthis._tag = \"div\";\n\t}\n\tenter(domNode, element) {\n\t\tsuper.enter(domNode, element);\n\t}\n\tupdate(domNode, element) {\n\t\tsuper.update(domNode, element);\n\t\tconst context = this;\n\t\telement.attr(\"title\", context.title()).style(\"background-color\", this.backgroundColor());\n\t\tconst title = element.selectAll(\"div.toolbar-title\").data(this.title() ? [this.title()] : []);\n\t\ttitle.enter().append(\"div\").classed(\"toolbar-title\", true).append(\"span\");\n\t\ttitle.selectAll(\"div.toolbar-title > span\").style(\"font-size\", this.fontSize_exists() ? this.fontSize() + \"px\" : null).style(\"color\", this.fontColor_exists() ? this.fontColor() : null).style(\"font-family\", this.fontFamily_exists() ? this.fontFamily() : null).style(\"font-weight\", this.fontBold_exists() ? this.fontBold() ? \"bold\" : \"normal\" : null).style(\"background-color\", this.backgroundColor_exists() ? this.backgroundColor() : null).text(context.title());\n\t\ttitle.exit().remove();\n\t\tconst childWidgets = element.selectAll(\"div.toolbar-child\").data(this.widgets() !== null ? this.widgets() : [], function(d) {\n\t\t\treturn d.id();\n\t\t});\n\t\tchildWidgets.enter().insert(\"div\", \"div.toolbar-title\").each(function(d, i) {\n\t\t\tconst widgetClass = context.widgetClasses()[i] ? context.widgetClasses()[i] + \" toolbar-child\" : \"toolbar-child\";\n\t\t\tselect(this).classed(widgetClass, true);\n\t\t\td.target(this);\n\t\t});\n\t\tchildWidgets.exit().each(function(d) {\n\t\t\td.target(null);\n\t\t}).remove();\n\t\tchildWidgets.order();\n\t}\n\trender(callback) {\n\t\tconst context = this;\n\t\treturn super.render(function(w) {\n\t\t\tconst toolbarBBox = context.element().node().getBoundingClientRect();\n\t\t\tlet minX = toolbarBBox.left + toolbarBBox.width;\n\t\t\tcontext.element().selectAll(\"div.toolbar-child\").each(function(d, i) {\n\t\t\t\tconst childBBox = this.getBoundingClientRect();\n\t\t\t\tif (minX > childBBox.left) minX = childBBox.left;\n\t\t\t});\n\t\t\tcontext.element().select(\".toolbar-title\").style(\"width\", minX - toolbarBBox.left - 4 + \"px\");\n\t\t\tif (callback) callback(w);\n\t\t});\n\t}\n\texit(domNode, element) {\n\t\tthis.widgets().forEach(function(w) {\n\t\t\tw.target(null);\n\t\t});\n\t\tsuper.exit(domNode, element);\n\t}\n};\nToolbar.prototype._class += \" layout_Toolbar\";\nToolbar.prototype.publish(\"title\", \"\", \"string\", \"Title\", null, { tags: [\"Intermediate\"] });\nToolbar.prototype.publish(\"fontSize\", null, \"number\", \"Title Font Size (px)\", null, {\n\ttags: [\"Advanced\"],\n\toptional: true\n});\nToolbar.prototype.publish(\"fontColor\", null, \"html-color\", \"Title Font Color\", null, {\n\ttags: [\"Advanced\"],\n\toptional: true\n});\nToolbar.prototype.publish(\"fontFamily\", null, \"string\", \"Title Font Family\", null, {\n\ttags: [\"Advanced\"],\n\toptional: true\n});\nToolbar.prototype.publish(\"fontBold\", true, \"boolean\", \"Enable Bold Title Font\", null, {\n\ttags: [\"Advanced\"],\n\toptional: true\n});\nToolbar.prototype.publish(\"backgroundColor\", null, \"html-color\", \"Background Color\", null, {\n\ttags: [\"Intermediate\"],\n\toptional: true\n});\nToolbar.prototype.publish(\"responsive\", true, \"boolean\", \"Adapts to pixel width\", null, { tags: [\"Basic\"] });\nToolbar.prototype.publish(\"widgets\", [], \"widgetArray\", \"Child widgets of the toolbar\", null, { tags: [\"Basic\"] });\nToolbar.prototype.publish(\"widgetClasses\", [], \"array\", \"Array of Html Element classes to be assigned to the child widgets (shares index with widgets param)\", null, { tags: [\"Basic\"] });\n\n//#endregion\n//#region src/VerticalList.ts\nvar VerticalList = class extends FlexGrid {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.orientation_default(\"vertical\");\n\t\tthis.flexWrap_default(\"nowrap\");\n\t}\n};\nVerticalList.prototype._class += \" layout_VerticalList\";\n\n//#endregion\nexport { AbsoluteSurface, Accordion, BUILD_VERSION, Border, Border2, Carousel, Cell, ChartPanel, FlexGrid, Grid, HorizontalList, Layered, Legend, Modal, PKG_NAME, PKG_VERSION, Popup, Surface, Tabbed, Toolbar, VerticalList, WidgetDiv };\n//# sourceMappingURL=index.js.map!function(){try{if(\"undefined\"!=typeof document){var o=document.createElement(\"style\");o.appendChild(document.createTextNode('.layout_AbsoluteSurface{pointer-events:none!important}.layout_AbsoluteSurface>.placeholder{pointer-events:all;position:relative;overflow:hidden}.layout_Accordion>ul{position:relative}.layout_Accordion.open>span{font-style:italic}.layout_Accordion.closed>ul{height:0;overflow:hidden}.layout_Accordion.open>ul{display:block}.layout_Accordion>.collapsible-icon,.layout_Accordion>.collapsible-title{cursor:pointer;box-sizing:border-box}.layout_Accordion>.collapsible-title{color:#fff;width:100%;height:26px;padding:4px 8px;font-size:13px;display:block;box-shadow:inset 0 -1px 1px #0003}.layout_Accordion li{background-color:#fff}.layout_Accordion>ul,.layout_Accordion>.collapsible-title{background-color:#333}.layout_Accordion .layout_Accordion>ul,.layout_Accordion .layout_Accordion>.collapsible-title{background-color:#555}.layout_Accordion .layout_Accordion .layout_Accordion>ul,.layout_Accordion .layout_Accordion .layout_Accordion>.collapsible-title{background-color:#777}.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion>ul,.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion>.collapsible-title{background-color:#999}.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion>ul,.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion>.collapsible-title{background-color:#bbb}.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion>ul,.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion>.collapsible-title{background-color:#ccc}.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion>ul,.layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion .layout_Accordion>.collapsible-title{background-color:#ddd}.layout_Accordion>ul,.layout_Accordion>span{padding-left:0}.layout_Accordion .layout_Accordion>ul,.layout_Accordion .layout_Accordion>span{padding-left:12px}.layout_Accordion>.collapsible-title:before{padding:4px 8px;position:absolute;top:0;left:0}.layout_Accordion>.collapsible-icon{color:#fff;width:24px;height:24px;position:absolute;top:0;right:0}.layout_Surface{box-sizing:border-box;border:1px solid #e5e5e5;width:100%;height:100%;margin:0;overflow:hidden}.layout_Surface.shadow2{box-shadow:0 2px 2px #00000024,0 3px 1px -2px #0003,0 1px 5px #0000001f}.layout_Surface>h3{background-color:#e5e5e5;margin:0;padding:2px}.layout_Surface .html-button-container{position:absolute;top:3px;right:0}.layout_Surface>div{padding:8px}.layout_Surface .html-button-container .surface-button{margin-right:5px}.layout_Surface .html-button-container .surface-button i{opacity:.8}.layout_Surface .html-button-container .surface-button:hover{opacity:1}.layout_Surface .html-button-container .surface-button:active{opacity:.5}div[draggable=true].hideDragCellContent.content-icon:before{content:\"\";font-family:FontAwesome;font-size:100px;position:absolute;top:calc(50% - 74px);left:calc(50% - 56px)}div[draggable=true].hideDragCellContent.content-icon-Line:before{content:\"\"}div[draggable=true].hideDragCellContent.content-icon-Pie:before{content:\"\";top:calc(50% - 72px);left:calc(50% - 45px)}div[draggable=true].hideDragCellContent.content-icon-Area:before{content:\"\"}div[draggable=true].hideDragCellContent.content-icon-Gauge:before{content:\"\"}div[draggable=true].hideDragCellContent.content-icon-Table:before{content:\"\"}div[draggable=true].hideDragCellContent.content-icon-Form:before{content:\"\"}div[draggable=true].hideDragCellContent.content-icon-Grid:before,div[draggable=true].hideDragCellContent.content-icon-Graph:before,div[draggable=true].hideDragCellContent.content-icon-Border:before,div[draggable=true].hideDragCellContent.content-icon-Tabbed:before,div[draggable=true].hideDragCellContent.content-icon-Accordion:before,div[draggable=true].hideDragCellContent.content-icon-MultiChart:before,div[draggable=true].hideDragCellContent.content-icon-MultiChartSurface:before{content:\"\"}div[draggable=true].hideDragCellContent.content-icon-ChoroplethStates:before,div[draggable=true].hideDragCellContent.content-icon-ChoroplethStatesHeat:before,div[draggable=true].hideDragCellContent.content-icon-ChoroplethCounties:before,div[draggable=true].hideDragCellContent.content-icon-ChoroplethCountries:before,div[draggable=true].hideDragCellContent.content-icon-GMap:before,div[draggable=true].hideDragCellContent.content-icon-GMapHeat:before,div[draggable=true].hideDragCellContent.content-icon-GMapGraph:before,div[draggable=true].hideDragCellContent.content-icon-Text:before,div[draggable=true].hideDragCellContent.content-icon-TextBox:before,div[draggable=true].hideDragCellContent.content-icon-FAChar:before{content:\"\"}.layout_Cell .update-indicator{box-sizing:border-box;z-index:1000;pointer-events:none;border-style:solid;border-width:0;padding:0;position:absolute;top:0;left:0}.layout_Border{width:100%;height:100%}.layout_Border>.border-content{width:100%;height:100%;position:relative}.layout_Border>.borderHandle{opacity:.3;visibility:hidden;background-color:#444;width:6px;height:6px;position:absolute}.layout_Border.design-mode>.borderHandle{visibility:visible}.layout_Border>.borderHandle:hover{background-color:#666}.layout_Border>.borderHandle.borderHandleDisabled{display:none}.layout_Border>.borderHandle_top,.layout_Border>.borderHandle_bottom{cursor:ns-resize}.layout_Border>.borderHandle_left,.layout_Border>.borderHandle_right{cursor:ew-resize}.layout_Border .cell{border:1px solid #e5e5e5;border-radius:5px;display:inline-block;overflow:hidden}.layout_Border .cell h2{-webkit-margin:0px;text-align:center;margin:0;padding-top:4px}.layout_Border .layout_BorderCell.over{border:2px dashed #000}.layout_Border .dragItem{z-index:-1;opacity:.33}.layout_Border .notDragItem{z-index:-1;opacity:1}.layout_Border div[draggable=true]{opacity:.75;cursor:default}.layout_Border div[draggable=true] .dragHandle{opacity:1}.layout_Border div[draggable=true] .dragHandle_n,.layout_Border div[draggable=true] .dragHandle_e,.layout_Border div[draggable=true] .dragHandle_s,.layout_Border div[draggable=true] .dragHandle_w{background-color:#aaa}.layout_Border div[draggable=true] .dragHandle_nw,.layout_Border div[draggable=true] .dragHandle_ne,.layout_Border div[draggable=true] .dragHandle_se,.layout_Border div[draggable=true] .dragHandle_sw{background-color:#333}.layout_Border div[draggable=true] .dragHandle_nw{cursor:nw-resize}.layout_Border div[draggable=true] .dragHandle_n{cursor:n-resize}.layout_Border div[draggable=true] .dragHandle_ne{cursor:ne-resize}.layout_Border div[draggable=true] .dragHandle_e{cursor:e-resize}.layout_Border div[draggable=true] .dragHandle_se{cursor:se-resize}.layout_Border div[draggable=true] .dragHandle_s{cursor:s-resize}.layout_Border div[draggable=true] .dragHandle_sw{cursor:sw-resize}.layout_Border div[draggable=true] .dragHandle_w{cursor:w-resize}.layout_Border div[draggable=false]>div>.dragHandle{display:none}.layout_Border .grid-drop-target{box-sizing:border-box;background:repeating-linear-gradient(-45deg,#0000,#0000 4px,#6464641a 4px 8px);border:2px dashed #7f8c8d;border-radius:0;position:fixed}.layout_Border .grid-drop-target.drop-target-over{background:repeating-linear-gradient(-45deg,#0000,#0000 6px,#119bd71a 6px 12px);border:2px dashed #179bd7}.layout_Border2{flex-direction:column;display:flex}.layout_Border2>.body{flex-flow:row;margin:0;padding:0;display:flex}.layout_Border2>.body>.center{flex:1}.layout_Border2>.header,.layout_Border2>.footer{display:block}.layout_Carousel>div{position:relative;overflow:hidden}.layout_Carousel>div>.carouselItem{position:absolute}.layout_Modal-header{background-color:#3f51b5;overflow:hidden}.layout_Modal-body{background-color:#fff;overflow:hidden scroll}.layout_Modal-title,.layout_Modal-annotations{position:absolute}.layout_Modal-closeButton{cursor:pointer}.layout_Modal-closeButton:hover{opacity:.7}.layout_Modal-closeButton:active{opacity:.5}.layout_Modal-fade{opacity:.5;z-index:10000;background-color:#000;position:fixed}.layout_Modal-content{z-index:10100;background-color:#fff;position:fixed}.layout_Modal-fade-hidden{display:none}.layout_Modal-fadeClickable{cursor:pointer}.layout_ChartPanel .series.highlight{stroke-width:2px;opacity:1}.layout_ChartPanel .series.lowlight{opacity:.3!important}.layout_FlexGrid{display:flex}.FlexGrid-list-item{border-style:solid;flex-grow:1;overflow:hidden}.layout_Grid>.ddCell{position:absolute}.layout_Grid>.laneBackground{background:#f5f5f5;border-style:solid;border-width:1px;position:absolute}.layout_Grid>.lane{opacity:.25;pointer-events:none;border-style:none;border-radius:0;position:absolute}.layout_Grid>.ddCell.draggable{cursor:move;background-color:#f8f8ff;border-style:solid;border-width:1px;border-radius:0}.layout_Grid>.ddCell.draggable>.resizeHandle{cursor:nwse-resize;border-style:none;width:8px;height:8px;position:absolute;bottom:0;right:0}.layout_Grid>.ddCell.draggable .resizeHandleDisplay{background-color:none;border:2px solid #a9a9a9;border-width:0 2px 2px 0;width:4px;height:4px;position:absolute;bottom:2px;right:2px}.layout_Grid>.ddCell.draggable .resizeHandleDisplay:hover{border-color:orange}.layout_Grid>.dragging{background:repeating-linear-gradient(-45deg,#0000,#0000 4px,#6464641a 4px 8px);border:1px solid gray;border-radius:0;position:absolute}.layout_Grid>.resizing{opacity:.3;background:repeating-linear-gradient(-45deg,#0000,#0000 4px,orange 4px 8px);border:1px solid gray;border-radius:0;position:absolute}.layout_Grid>.ddCell.draggable .common_Widget.selected{background:repeating-linear-gradient(-45deg,#0000,#0000 4px,#6400001a 4px 8px);border:1px solid red;border-radius:0;position:absolute}.layout_Grid #drag-me:before{content:\"#\" attr(id);font-weight:700}.layout_Layered{pointer-events:none}.layout_Layered>.container>.content{position:absolute}.layout_Layered>.container>.content>div>.common_Widget,.layout_Layered>.container>.content>div>svg>.common_Widget{pointer-events:all}.layout_Tabbed .tab-button{background-color:#ccc;border-top:1px solid #ddd;border-left:1px solid #ddd;border-right:1px solid #ddd;margin-right:4px;padding:2px 2px 4px;display:inline-block;position:relative;top:1px}.layout_Tabbed .tab-button.active{z-index:999;background-color:#fff}.layout_Tabbed .on_bottom .tab-button{border-top:none;border-bottom:1px solid #ddd;top:-1px}.layout_Toolbar{white-space:nowrap;background-color:#ddd;height:100%;overflow:hidden}.layout_Toolbar .toolbar-title{text-overflow:ellipsis;white-space:nowrap;margin-left:4px;font-weight:700;display:inline-block;position:relative;top:50%;overflow:hidden;transform:translateY(-50%)}.layout_Toolbar .toolbar-child{float:right;margin-left:4px;margin-right:4px;line-height:16px;position:relative;top:50%;transform:translateY(-50%)}\\n/*$vite$:1*/')),document.head.appendChild(o)}}catch(e){console.error(\"vite-plugin-css-injected-by-js\",e)}}();","import { Utility } from \"@hpcc-js/common\";\n\ndeclare const require: any;\nexport function requireWidget(classID) {\n return new Promise(function (resolve, _reject) {\n const parsedClassID = Utility.parseClassID(classID);\n if (require) {\n require([parsedClassID.package], function (Package) {\n let Widget = null;\n if (Package && Package[parsedClassID.widgetID]) {\n Widget = Package[parsedClassID.widgetID];\n }\n resolve(parsedClassID.memberWidgetID ? (Widget.prototype ? Widget.prototype[parsedClassID.memberWidgetID] : Widget[parsedClassID.memberWidgetID]) : Widget);\n });\n }\n });\n}\n\nexport function requireWidgets(classIDs) {\n return Promise.all(classIDs.map(requireWidget));\n}\n","import { IGraph, INDChart } from \"@hpcc-js/api\";\nimport { Database, HTMLWidget, Utility, Widget } from \"@hpcc-js/common\";\nimport { map as d3Map } from \"d3-collection\";\nimport { requireWidget } from \"./Utility.ts\";\n\ndeclare const require: any;\nexport class MultiChart extends HTMLWidget {\n _allCharts = {};\n _chartTypeDefaults;\n _chartTypeProperties;\n _chartMonitor;\n _switchingTo;\n\n constructor() {\n super();\n INDChart.call(this);\n IGraph.call(this);\n\n this._tag = \"div\";\n\n this._allCharts = {};\n this._allChartTypes.forEach(function (item) {\n const newItem = JSON.parse(JSON.stringify(item));\n newItem.widget = null;\n this._allCharts[item.id] = newItem;\n this._allCharts[item.display] = newItem;\n this._allCharts[item.widgetClass] = newItem;\n }, this);\n this._chartTypeDefaults = {};\n this._chartTypeProperties = {};\n }\n\n fields(): Database.Field[];\n fields(_: Database.Field[]): this;\n fields(_?: Database.Field[]): Database.Field[] | this {\n const retVal = super.fields.apply(this, arguments);\n if (this.chart()) {\n if (!arguments.length) return this.chart().fields();\n this.chart().fields(_);\n }\n return retVal;\n }\n\n columns(): string[];\n columns(_, asDefault?: boolean): this;\n columns(_?, asDefault?: boolean) {\n const retVal = HTMLWidget.prototype.columns.apply(this, arguments);\n if (this.chart()) {\n if (!arguments.length) return this.chart().columns();\n this.chart().columns(_, asDefault);\n }\n return retVal;\n }\n\n data(_?) {\n const retVal = HTMLWidget.prototype.data.apply(this, arguments);\n if (this.chart()) {\n if (!arguments.length) return this.chart().data();\n this.chart().data(_);\n }\n return retVal;\n }\n\n hasOverlay() {\n return this.chart() && this.chart().hasOverlay();\n }\n\n visible(): boolean;\n visible(_: boolean): this;\n visible(_?: boolean): boolean | this {\n if (!arguments.length) return this.chart() && this.chart().visible();\n if (this.chart()) {\n this.chart().visible(_);\n }\n return this;\n }\n\n chartTypeDefaults(): object;\n chartTypeDefaults(_: object): this;\n chartTypeDefaults(_?: object): object | this {\n if (!arguments.length) return this._chartTypeDefaults;\n this._chartTypeDefaults = _;\n return this;\n }\n\n chartTypeProperties(): object;\n chartTypeProperties(_: object): this;\n chartTypeProperties(_?: object): object | this {\n if (!arguments.length) return this._chartTypeProperties;\n this._chartTypeProperties = _;\n return this;\n }\n\n getChartDataFamily() {\n return this._allCharts[this.chartType()].family;\n }\n\n requireContent(chartType, callback) {\n const classInfo = Utility.parseClassID(this._allCharts[chartType].widgetClass);\n switch (classInfo.package) {\n case \"@hpcc-js/chart\":\n import(\"@hpcc-js/chart\").then(mod => {\n callback(new mod[classInfo.widgetID]());\n });\n break;\n case \"@hpcc-js/dgrid\":\n import(\"@hpcc-js/dgrid\").then(mod => {\n callback(new mod[classInfo.widgetID]());\n });\n break;\n default:\n requireWidget(this._allCharts[chartType].widgetClass).then(function (WidgetClass: any) {\n callback(new WidgetClass());\n });\n }\n }\n\n switchChart(callback) {\n if (this._switchingTo === this.chartType()) {\n if (callback) {\n callback(this);\n }\n return;\n } else if (this._switchingTo) {\n console.warn(\"Attempting switch to: \" + this.chartType() + \", before previous switch is complete (\" + this._switchingTo + \")\");\n }\n this._switchingTo = this.chartType();\n const oldContent = this.chart();\n const context = this;\n this.requireContent(this.chartType(), function (newContent) {\n if (newContent !== oldContent) {\n const size = context.size();\n newContent\n .fields(context.fields())\n .data(context.data())\n .size(size)\n ;\n\n context.chart(newContent);\n if (oldContent) {\n oldContent\n .size({ width: 1, height: 1 })\n .render()\n ;\n }\n }\n delete context._switchingTo;\n if (callback) {\n callback(this);\n }\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const content = element.selectAll(\".multiChart\").data(this.chart() ? [this.chart()] : [], function (d) { return d._id; });\n content.enter().append(\"div\")\n .attr(\"class\", \"multiChart\")\n .each(function (d) {\n d.target(this);\n })\n ;\n\n const currChart = this.chart();\n if (currChart) {\n for (const key in this._chartTypeDefaults) {\n if (currChart[key + \"_default\"]) {\n try {\n currChart[key + \"_default\"](this._chartTypeDefaults[key]);\n } catch (e) {\n console.warn(\"Exception Setting Default: \" + key);\n }\n } else {\n console.warn(\"Unknown Default: \" + key);\n }\n }\n this._chartTypeDefaults = {};\n for (const propKey in this._chartTypeProperties) {\n if (currChart[propKey]) {\n try {\n currChart[propKey](this._chartTypeProperties[propKey]);\n } catch (e) {\n console.warn(\"Exception Setting Property: \" + propKey);\n }\n } else {\n console.warn(\"Unknown Property: \" + propKey);\n }\n }\n this._chartTypeProperties = {};\n }\n\n const context = this;\n content\n .each(function (d) { d.resize(context.size()); })\n ;\n\n content.exit().transition()\n .each(function (d) { d.target(null); })\n .remove()\n ;\n }\n\n exit(domNode, element) {\n if (this._chartMonitor) {\n this._chartMonitor.remove();\n delete this._chartMonitor;\n }\n if (this.chart()) {\n this.chart().target(null);\n }\n super.exit(domNode, element);\n }\n\n render(_callback?) {\n if (this.chartType() && (!this.chart() || (this.chart().classID() !== this._allCharts[this.chartType()].widgetClass))) {\n const context = this;\n const args = arguments;\n this.switchChart(function () {\n HTMLWidget.prototype.render.apply(context, args);\n });\n return this;\n }\n return HTMLWidget.prototype.render.apply(this, arguments);\n }\n}\nMultiChart.prototype._class += \" composite_MultiChart\";\nMultiChart.prototype.implements(INDChart.prototype);\nMultiChart.prototype.implements(IGraph.prototype);\nexport interface ChartMeta {\n id: string;\n display: string;\n widgetClass: string;\n widgetPath?: string;\n}\nexport interface MultiChart {\n _otherChartTypes: ChartMeta[];\n _graphChartTypes: ChartMeta[];\n _1DChartTypes: ChartMeta[];\n _2DChartTypes: ChartMeta[];\n _NDChartTypes: ChartMeta[];\n _mapChartTypes: ChartMeta[];\n _anyChartTypes: ChartMeta[];\n _allChartTypes: ChartMeta[];\n _allMap;\n _allFamilies: string[];\n _allChartTypesMap;\n _allChartTypesByClass;\n\n hideRowOnLegendClick(): boolean;\n hideRowOnLegendClick(_: boolean): this;\n chartType(): string;\n chartType(_: string): this;\n chart(): Widget;\n chart(_: Widget): this;\n chart_access(): Widget;\n chart_access(_: Widget): this;\n\n click(_row, _column, _selected): void;\n dblclick(_row, _column, _selected): void;\n vertex_click(row, column, selected, more): void;\n vertex_dblclick(row, column, selected, more): void;\n edge_click(row, column, selected, more): void;\n edge_dblclick(row, column, selected, more): void;\n}\n\nMultiChart.prototype._otherChartTypes = [\n { id: \"FORM\", display: \"Form\", widgetClass: \"form_FieldForm\" }\n].map(function (item: any) { item.family = \"other\"; return item; });\nMultiChart.prototype._graphChartTypes = [\n { id: \"GRAPH\", display: \"Graph\", widgetClass: \"graph_Graph\" },\n { id: \"ADJACENCY_GRAPH\", display: \"Graph\", widgetClass: \"graph_AdjacencyGraph\" },\n { id: \"GRAPHC\", display: \"GraphC\", widgetClass: \"graph_GraphC\" }\n].map(function (item: any) { item.family = \"GRAPH\"; return item; });\nMultiChart.prototype._1DChartTypes = [\n].map(function (item: any) { item.family = \"1D\"; return item; });\nMultiChart.prototype._2DChartTypes = [\n { id: \"SUMMARY\", display: \"Summary\", widgetClass: \"chart_Summary\" },\n { id: \"BUBBLE\", display: \"Bubble\", widgetClass: \"chart_Bubble\" },\n { id: \"PIE\", display: \"Pie\", widgetClass: \"chart_Pie\" },\n { id: \"WORD_CLOUD\", display: \"Word Cloud\", widgetClass: \"other_WordCloud\" }\n].map(function (item: any) { item.family = \"2D\"; return item; });\nMultiChart.prototype._NDChartTypes = [\n { id: \"COLUMN\", display: \"Column\", widgetClass: \"chart_Column\" },\n { id: \"BAR\", display: \"Bar\", widgetClass: \"chart_Bar\" },\n { id: \"LINE\", display: \"Line\", widgetClass: \"chart_Line\" },\n { id: \"AREA\", display: \"Area\", widgetClass: \"chart_Area\" },\n { id: \"STEP\", display: \"Step\", widgetClass: \"chart_Step\" },\n { id: \"SCATTER\", display: \"Scatter\", widgetClass: \"chart_Scatter\" },\n { id: \"HEXBIN\", display: \"Hex Bin\", widgetClass: \"chart_HexBin\" }\n].map(function (item: any) { item.family = \"ND\"; return item; });\nMultiChart.prototype._mapChartTypes = [\n { id: \"CHORO_USSTATES\", display: \"US State Choropleth\", widgetClass: \"map_ChoroplethStates\" },\n { id: \"CHORO_USCOUNTIES\", display: \"US County Choropleth\", widgetClass: \"map_ChoroplethCounties\" },\n { id: \"CHORO_COUNTRIES\", display: \"Country Choropleth\", widgetClass: \"map_ChoroplethCountries\" },\n { id: \"GMAP_CHORO_USCOUNTIES\", display: \"Google Map US County Choropleth\", widgetClass: \"map_GMapCounties\" },\n { id: \"GOOGLE_MAP\", display: \"Google Map\", widgetClass: \"map_GMapLayered\" },\n { id: \"OPENSTREET\", display: \"Open Street Map\", widgetClass: \"map_OpenStreet\" }\n].map(function (item: any) { item.family = \"map\"; return item; });\nMultiChart.prototype._anyChartTypes = [\n { id: \"TABLE\", display: \"Table\", widgetClass: \"dgrid_Table\" },\n { id: \"TABLE_LEGACY\", display: \"Table (legacy)\", widgetClass: \"other_Table\" },\n { id: \"TABLE_NESTED\", display: \"Nested Table\", widgetClass: \"other_NestedTable\" },\n { id: \"TABLE_CALENDAR\", display: \"Table driven Calendar Heat Map\", widgetClass: \"other_CalendarHeatMap\" },\n { id: \"TABLE_BULLET\", display: \"Table driven bullet chart\", widgetClass: \"chart_Bullet\" },\n { id: \"TABLE_SELECT\", display: \"Table driven select\", widgetClass: \"other_Select\" },\n { id: \"TABLE_AUTOCOMPLETE\", display: \"Table driven auto complete\", widgetClass: \"other_AutoCompleteText\" },\n { id: \"TABLE_OPPORTUNITY\", display: \"Table driven opportunity widget\", widgetClass: \"graph_Opportunity\" },\n { id: \"TABLE_TREE\", display: \"Table driven tree\", widgetClass: \"tree_Dendrogram\" },\n { id: \"TABLE_TREEMAP\", display: \"Table driven Treemap\", widgetClass: \"tree_Treemap\" },\n { id: \"TABLE_SANKEY\", display: \"Table driven Sankey\", widgetClass: \"graph_Sankey\" },\n { id: \"TABLE_GMAP_PIN\", display: \"Table driven Google Map (pins)\", widgetClass: \"map_GMapPin\" },\n { id: \"TABLE_GMAP_PINLINE\", display: \"Table driven Google Map (pins/lines)\", widgetClass: \"map_GMapPinLine\" },\n { id: \"TABLE_XML_TREE\", display: \"Table driven XML Tree\", widgetClass: \"tree_Indented\" }\n].map(function (item: any) { item.family = \"any\"; return item; });\nMultiChart.prototype._allChartTypes =\n MultiChart.prototype._otherChartTypes.concat(\n MultiChart.prototype._graphChartTypes.concat(\n MultiChart.prototype._1DChartTypes.concat(\n MultiChart.prototype._2DChartTypes.concat(\n MultiChart.prototype._NDChartTypes.concat(\n MultiChart.prototype._mapChartTypes.concat(\n MultiChart.prototype._anyChartTypes\n ))))));\nMultiChart.prototype._allMap = d3Map(MultiChart.prototype._allChartTypes, function (item: any) { return item.family; });\nMultiChart.prototype._allFamilies = MultiChart.prototype._allMap.keys();\nMultiChart.prototype._allChartTypesMap = {};\nMultiChart.prototype._allChartTypesByClass = {};\nMultiChart.prototype._allChartTypes.forEach(function (item) {\n item.widgetPath = Utility.widgetPath(item.widgetClass);\n MultiChart.prototype._allChartTypesMap[item.id] = item;\n MultiChart.prototype._allChartTypesByClass[item.widgetClass] = item;\n});\n\nMultiChart.prototype.publishReset();\nMultiChart.prototype.publish(\"hideRowOnLegendClick\", false, \"boolean\", \"Enable/Disable hiding row on legend clicks\", null, { tags: [\"Basic\"] });\nMultiChart.prototype.publish(\"chartType\", \"BUBBLE\", \"set\", \"Chart Type\", MultiChart.prototype._allChartTypes.map(function (item) { return item.id; }), { tags: [\"Basic\"] });\nMultiChart.prototype.publish(\"chart\", null, \"widget\", \"Chart\", null, { tags: [\"Basic\"] });\n\nconst _origChart = MultiChart.prototype.chart;\nMultiChart.prototype.chart = function (_?) {\n const retVal = _origChart.apply(this, arguments);\n if (arguments.length) {\n const context = this;\n if (this._allChartTypesByClass[_.classID()]) {\n this.chartType(this._allChartTypesByClass[_.classID()].id);\n } else {\n console.warn(\"Unknown Class ID: \" + _.classID());\n }\n _.click = function (_row, _column, _selected) {\n context.click.apply(context, arguments);\n };\n _.dblclick = function (_row, _column, _selected) {\n context.dblclick.apply(context, arguments);\n };\n _.vertex_click = function (row, column, selected, more) {\n context.vertex_click.apply(context, arguments);\n };\n _.vertex_dblclick = function (row, column, selected, more) {\n context.vertex_dblclick.apply(context, arguments);\n };\n _.edge_click = function (row, column, selected, more) {\n context.edge_click.apply(context, arguments);\n };\n _.edge_dblclick = function (row, column, selected, more) {\n context.edge_dblclick.apply(context, arguments);\n };\n if (this._chartMonitor) {\n this._chartMonitor.remove();\n delete this._chartMonitor;\n }\n this._chartMonitor = _.monitor(function (key, newVal, oldVal) {\n context.broadcast(key, newVal, oldVal, _);\n });\n }\n return retVal;\n};\n","import { HTMLWidget, Widget } from \"@hpcc-js/common\";\nimport { ChartPanel } from \"@hpcc-js/layout\";\nimport { MultiChart } from \"./MultiChart.ts\";\n\nimport \"../src/ChartPanel.css\";\n\nclass Summary extends HTMLWidget {\n\n constructor() {\n super();\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n element.append(\"p\");\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n element.select(\"p\").text(this.text());\n }\n}\ninterface Summary {\n text(): string;\n text(_: string): this;\n}\nSummary.prototype.publish(\"text\", \"\", \"string\");\n\nexport class MultiChartPanel extends ChartPanel<MultiChart> {\n\n constructor() {\n super();\n this.widget(new MultiChart().chartType(\"COLUMN\"));\n }\n\n multiChart(): MultiChart {\n return this._widget;\n }\n\n chartType(): string;\n chartType(_: string): this;\n chartType(_?: string): string | this {\n if (!arguments.length) return this._widget.chartType();\n this._widget.chartType(_);\n return this;\n }\n\n chart(): Widget;\n chart(_: Widget): this;\n chart(_?: Widget): Widget | this {\n if (!arguments.length) return this._widget.chart();\n this._widget.chart(_);\n return this;\n }\n\n chartTypeDefaults(): object;\n chartTypeDefaults(_: object): this;\n chartTypeDefaults(_?: object): this | object {\n if (!arguments.length) return this._widget.chartTypeDefaults();\n this._widget.chartTypeDefaults(_);\n return this;\n }\n\n chartTypeProperties(): object;\n chartTypeProperties(_: object): this;\n chartTypeProperties(_?: object): this | object {\n if (!arguments.length) return this._widget.chartTypeProperties();\n this._widget.chartTypeProperties(_);\n return this;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n if (this._widget instanceof MultiChart) {\n this._legend.dataFamily(this._widget.getChartDataFamily());\n }\n super.update(domNode, element);\n }\n}\nMultiChartPanel.prototype._class += \" composite_MultiChartPanel\";\n","import { OnOff } from \"@hpcc-js/form\";\nimport { Border, Toolbar } from \"@hpcc-js/layout\";\nimport { PropertyEditor } from \"@hpcc-js/other\";\n\nimport \"../src/Dermatology.css\";\n\nexport class Dermatology extends Border {\n _toolbar;\n _propEditor;\n _showProperties;\n _propsButton;\n _prevWidget;\n\n constructor() {\n super();\n\n this._toolbar = new Toolbar()\n .title(\"Dermatology\")\n ;\n this._propEditor = new PropertyEditor()\n .show_settings(true)\n ;\n }\n\n showProperties(_?) {\n if (!arguments.length) return this._showProperties;\n this._showProperties = _;\n this\n .rightPercentage(0)\n .rightSize(this._showProperties ? 360 : 0)\n .setContent(\"right\", this._showProperties ? this._propEditor : null)\n ;\n const widget = this.widget();\n if (widget && widget.designMode) {\n widget.designMode(this._showProperties);\n }\n return this;\n }\n\n toggleProperties() {\n return this.showProperties(!this.showProperties());\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this\n .topPercentage(0)\n .topSize(0)\n .setContent(\"top\", this._toolbar)\n ;\n this.getCell(\"top\").surfaceShadow(true);\n\n const context = this;\n this._propsButton = new OnOff()\n .id(this.id() + \"_props\")\n .value(\"Properties\")\n .on(\"click\", function () {\n context\n .toggleProperties()\n .render()\n ;\n })\n ;\n this._toolbar.widgets([this._propsButton]);\n }\n\n update(domNode, element) {\n this\n .topPercentage(0)\n .topSize(this.showToolbar() ? 32 : 0)\n ;\n\n super.update(domNode, element);\n\n const widget = this.widget();\n element.style(\"background-color\", widget && widget.surfaceShadow ? null : \"white\");\n }\n\n render(callback) {\n const widget = this.widget();\n if (widget !== this._prevWidget) {\n if (widget && widget.surfaceShadow) {\n widget.surfaceBackgroundColor_default(\"white\");\n }\n this.setContent(\"center\", widget);\n this._propEditor.widget(widget);\n this._prevWidget = widget;\n }\n return super.render(callback);\n }\n\n showToolbar: { (): boolean; (_: boolean): Dermatology };\n showToolbar_exists: () => boolean;\n widget: { (): any; (_: any): Dermatology };\n widget_exists: () => boolean;\n}\nDermatology.prototype._class += \" composite_Dermatology\";\n\nDermatology.prototype.publish(\"showToolbar\", true, \"boolean\", \"Show Toolbar\");\nDermatology.prototype.publish(\"widget\", null, \"widget\", \"Widget\");\n","import { Database, Text, Utility } from \"@hpcc-js/common\";\nimport { Button, Input, Select } from \"@hpcc-js/form\";\nimport { Border, Grid, Toolbar } from \"@hpcc-js/layout\";\nimport { Html, Legend } from \"@hpcc-js/other\";\nimport { select as d3Select } from \"d3-selection\";\nimport \"d3-transition\";\nimport { MultiChart } from \"./MultiChart.ts\";\n\nimport \"../src/MegaChart.css\";\n\nexport class MegaChart extends Border {\n _chart = new MultiChart();\n _toolbar = new Toolbar();\n _valueTitle = new Text();\n _domainTitle = new Text();\n _legend: Legend = new Legend();\n _csvButton;\n _infoButton;\n _maximizeButton;\n _legendButton;\n _chartTypeSelect;\n _prevLegendPosition;\n _prevShowToolbar;\n _1DChartTypes;\n _2DChartTypes;\n _NDChartTypes;\n _anyChartTypes;\n _allChartTypes;\n _contentClasses;\n _dataCount;\n\n constructor() {\n super();\n this._tag = \"div\";\n const context = this;\n this._chart.click = function () {\n context.click.apply(context, arguments);\n };\n this._chart.dblclick = function () {\n context.dblclick.apply(context, arguments);\n };\n this._chart.vertex_click = function () {\n context.vertex_click.apply(context, arguments);\n };\n this._chart.vertex_dblclick = function () {\n context.vertex_dblclick.apply(context, arguments);\n };\n this._chart.edge_click = function () {\n context.edge_click.apply(context, arguments);\n };\n this._chart.edge_dblclick = function () {\n context.edge_dblclick.apply(context, arguments);\n };\n }\n\n toolbarWidgets(_?) {\n if (!arguments.length) return this._toolbar.widgets();\n this._toolbar.widgets(_);\n return this;\n }\n\n chartTypeDefaults(_?) {\n if (!arguments.length) return this._chart.chartTypeDefaults();\n this._chart.chartTypeDefaults(_);\n return this;\n }\n\n chartTypeProperties(_?) {\n if (!arguments.length) return this._chart.chartTypeProperties();\n this._chart.chartTypeProperties(_);\n return this;\n }\n\n fields(): Database.Field[];\n fields(_: Database.Field[]): this;\n fields(_?: Database.Field[]): Database.Field[] | this {\n if (!arguments.length) return this._chart.fields();\n this._chart.fields(_);\n return this;\n }\n\n columns(): string[];\n columns(_: string[], asDefault?: boolean): this;\n columns(_?: string[], asDefault?: boolean): string[] | this {\n if (!arguments.length) return this._chart.columns();\n this._chart.columns(_, asDefault);\n return this;\n }\n\n data(_?) {\n if (!arguments.length) return this._chart.data();\n this._chart.data(_);\n return this;\n }\n\n downloadCSV() {\n Utility.downloadString(\"CSV\", this._chart.export(\"CSV\"));\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n\n this.topShrinkWrap(false).topPercentage(0).topSize(30);\n this._dataCount = new Html()\n .classed({ \"composite_MegaChart-dataCount\": true })\n .id(this.id() + \"_dataCount\")\n .html('<span class=\"MegaChart-dataCount-label\">Count:</span> <span class=\"MegaChart-dataCount-value\">' + (this.data() ? this.data().length : \"0\") + \"</span>\")\n .overflowX(\"visible\")\n .overflowY(\"visible\")\n ;\n\n this._csvButton = new Button()\n .classed({ \"composite_MegaChart-CSV\": true })\n .id(this.id() + \"_csv\")\n .value(\"CSV\")\n ;\n this._csvButton.click = function (a) {\n context.downloadCSV();\n };\n\n this._infoButton = new Button()\n .classed({ \"composite_MegaChart-Info\": true })\n .id(this.id() + \"_info\")\n .value(this.infoIcon())\n ;\n\n this._maximizeButton = new Button()\n .classed({ \"composite_MegaChart-Maximize\": true })\n .id(this.id() + \"_maximize\")\n .value(\"\\uf2d0\")\n ;\n this._maximizeButton.click = function (buttonWidget) {\n const target = context.target() as any;\n let node = target;\n const isMaximized = d3Select(target).classed(\"__hpccisMaximized\");\n\n // Find the layout_Grid ancestor\n const parentGrid = context.locateAncestor(\"layout_Grid\");\n if (parentGrid) {\n node = parentGrid.element().node();\n } else {\n node = document.body;\n }\n\n const targetElement = d3Select(context.target()) as any;\n if (isMaximized) {\n // Restore from maximized to natural size/position\n const targetParentBox = target.parentElement.getBoundingClientRect();\n const targetPaddingTop = parseInt(getComputedStyle(target, null).getPropertyValue(\"padding-top\").replace(\"px\", \"\"));\n const targetPaddingLeft = parseInt(getComputedStyle(target, null).getPropertyValue(\"padding-left\").replace(\"px\", \"\"));\n const targetPaddingRight = parseInt(getComputedStyle(target, null).getPropertyValue(\"padding-right\").replace(\"px\", \"\"));\n const targetPaddingBottom = parseInt(getComputedStyle(target, null).getPropertyValue(\"padding-bottom\").replace(\"px\", \"\"));\n context.contentDiv.style(\"opacity\", 0).transition(100);\n targetElement.transition()// .duration(3000)\n .style(\"top\", targetParentBox.top + \"px\")\n .style(\"left\", targetParentBox.left + \"px\")\n .style(\"width\", (targetParentBox.width - targetPaddingLeft - targetPaddingRight) + \"px\")\n .style(\"height\", (targetParentBox.height - targetPaddingTop - targetPaddingBottom) + \"px\")\n .each(\"end\", function () {\n targetElement.style(\"position\", target.__old_position);\n targetElement.style(\"z-index\", target.__old_zindex);\n targetElement.style(\"background-color\", target.__old_backgroundColor);\n targetElement.style(\"box-shadow\", target.__old_boxshadow);\n context\n .resize({\n width: targetParentBox.width - targetPaddingLeft - targetPaddingRight,\n height: targetParentBox.height - targetPaddingTop - targetPaddingBottom\n })\n .render(function () {\n context.contentDiv.transition()\n .style(\"opacity\", 1);\n });\n buttonWidget.value(\"\\uf2d0\").render();\n });\n } else {\n // Maximize this MegaChart\n target.__old_position = target.style.position;\n target.__old_zindex = target.style.zIndex;\n target.__old_boxshadow = target.style.boxShadow;\n target.__old_backgroundColor = context.element().style(\"background-color\");\n const grid = d3Select(node).datum() as Grid;\n const gridTarget = grid.target();\n const gridBox = grid ? gridTarget.getBoundingClientRect() : node.getBoundingClientRect();\n const gridPaddingTop = parseInt(getComputedStyle(gridTarget, null).getPropertyValue(\"padding-top\").replace(\"px\", \"\"));\n const gridPaddingLeft = parseInt(getComputedStyle(gridTarget, null).getPropertyValue(\"padding-left\").replace(\"px\", \"\"));\n const gridPaddingRight = parseInt(getComputedStyle(gridTarget, null).getPropertyValue(\"padding-right\").replace(\"px\", \"\"));\n const gridPaddingBottom = parseInt(getComputedStyle(gridTarget, null).getPropertyValue(\"padding-bottom\").replace(\"px\", \"\"));\n context.contentDiv.style(\"opacity\", 0).transition(100);\n targetElement\n .style(\"position\", \"fixed\")\n .style(\"z-index\", 999999)\n .style(\"box-shadow\", \"0 8px 8px 0 rgba(0,0,0,.14),0 12px 4px -8px rgba(0,0,0,.2),0 4px 20px 0 rgba(0,0,0,.12)\")\n .style(\"background-color\", target.__old_backgroundColor)\n .transition()// .duration(3000)\n .style(\"top\", (gridBox.top + gridPaddingTop) + \"px\")\n .style(\"left\", (gridBox.left + gridPaddingLeft) + \"px\")\n .style(\"width\", (gridBox.width - gridPaddingLeft - gridPaddingRight) + \"px\")\n .style(\"height\", (gridBox.height - gridPaddingTop - gridPaddingBottom) + \"px\")\n .each(\"end\", function () {\n targetElement.style(\"background-color\", context.maximizedBackgroundColor());\n context\n .resize({\n width: (gridBox.width - gridPaddingLeft - gridPaddingRight),\n height: (gridBox.height - gridPaddingTop - gridPaddingBottom)\n })\n .render(function () {\n context.contentDiv.transition()\n .style(\"opacity\", 1);\n });\n buttonWidget.value(\"\\uf2d1\").render();\n });\n }\n\n d3Select(target).classed(\"__hpccisMaximized\", !isMaximized);\n };\n\n this._legendButton = new Input()\n .classed({ \"composite_MegaChart-legend\": true })\n .id(this.id() + \"_legend\")\n .type(\"checkbox\")\n .inlineLabel(\"Legend: \")\n ;\n this._legendButton.click = function (a) {\n context.render();\n };\n\n this._chartTypeSelect = new Select()\n .classed({ \"composite_MegaChart-chartType\": true })\n .id(this.id() + \"_chartType\")\n .selectOptions(this._allChartTypes.map(function (a) { return [a.id, a.display]; }))\n .value(this.chartType())\n ;\n this._chartTypeSelect.change = function (a) {\n context.chartType(a.value()).render();\n };\n\n this.setContent(\"center\", this._chart);\n\n this._legend\n .targetWidget(this._chart)\n .orientation([\"top\", \"bottom\"].indexOf(this.legendPosition()) !== -1 ? \"horizontal\" : \"vertical\")\n .fixedSize(true)\n ;\n\n this._prevLegendPosition = this.legendPosition();\n\n if (this.valueAxisTitle()) {\n this.setContent(\"left\", this._valueTitle.rotation(-90)).leftShrinkWrap(true);\n }\n if (this.domainAxisTitle()) {\n this.setContent(\"bottom\", this._domainTitle).bottomShrinkWrap(true);\n }\n\n if (this.legendPosition() !== \"none\") {\n this.setContent(this.legendPosition(), this._legend)[this.legendPosition() + \"ShrinkWrap\"](true);\n }\n }\n\n update(domNode, element) {\n function showHideButton(twArr2, button, show) {\n if (show && twArr2.indexOf(button) === -1) {\n twArr2.push(button);\n } else if (!show) {\n const idx = twArr2.indexOf(button);\n if (idx >= 0) {\n twArr2.splice(idx, 1);\n }\n }\n }\n\n if (this._chart && typeof this._chart.hideRowOnLegendClick === \"function\") {\n this._chart.hideRowOnLegendClick(this.hideRowOnLegendClick());\n }\n\n this._dataCount.html('<span class=\"MegaChart-dataCount-label\">Count:</span> <span class=\"MegaChart-dataCount-value\">' + (this.data() ? this.data().length : \"0\") + \"</span>\");\n\n this._chartTypeSelect.value(this.chartType());\n const twArr = this.toolbarWidgets();\n showHideButton(twArr, this._csvButton, this.showCSV());\n showHideButton(twArr, this._maximizeButton, this.showMaximize());\n showHideButton(twArr, this._legendButton, this.toolbarShowLegend());\n showHideButton(twArr, this._chartTypeSelect, this.showChartSelect());\n showHideButton(twArr, this._infoButton, this.showInfoButton());\n showHideButton(twArr, this._dataCount, this.showCount());\n this.toolbarWidgets(twArr);\n\n if (this._prevShowToolbar !== this.showToolbar()) {\n this.setContent(\"top\", this.showToolbar() ? this._toolbar : null);\n this._prevShowToolbar = this.showToolbar();\n }\n\n // TODO: Proxy + themes not working...\n this._toolbar\n .fontSize(this.titleFontSize())\n .fontColor(this.titleFontColor())\n .fontFamily(this.titleFontFamily())\n .fontBold(this.titleFontBold())\n .backgroundColor(this.titleBackgroundColor())\n ;\n\n this._chart\n .data(this.data());\n\n if (this._chart.chartType() !== this.chartType()) {\n this._chart.chartType(this.chartType());\n }\n\n let legendPosition = this.legendPosition();\n if (this.toolbarShowLegend() && !this._legendButton.checked()) {\n legendPosition = \"none\";\n }\n if (this._prevLegendPosition !== legendPosition) {\n if (this._prevLegendPosition !== \"none\") {\n this.clearContent(this._prevLegendPosition);\n }\n this._prevLegendPosition = legendPosition;\n if (legendPosition !== \"none\") {\n this._legend = new Legend().targetWidget(this.getContent(\"center\").fixedSize(true));\n this.setContent(legendPosition, this._legend);\n this._legend.orientation([\"top\", \"bottom\"].indexOf(legendPosition) !== -1 ? \"horizontal\" : \"vertical\");\n }\n }\n this._contentClasses = this.getContentClasses();\n\n if (this.valueAxisTitle() && this._contentClasses.left !== \"common_Text\") {\n if (legendPosition !== \"left\") {\n this.setContent(\"left\", this._valueTitle.rotation(-90));\n }\n }\n if (this.domainAxisTitle() && this._contentClasses.bottom !== \"common_Text\") {\n if (legendPosition !== \"bottom\") {\n this.setContent(\"bottom\", this._domainTitle).bottomShrinkWrap(true);\n }\n }\n\n this._legend.dataFamily(this._chart.getChartDataFamily());\n\n super.update(domNode, element);\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n }\n\n getContentClasses() {\n const obj: any = {};\n const t = this.getContent(\"top\");\n const r = this.getContent(\"right\");\n const b = this.getContent(\"bottom\");\n const l = this.getContent(\"left\");\n obj.top = t !== null ? t.classID() : undefined;\n obj.right = r !== null ? r.classID() : undefined;\n obj.bottom = b !== null ? b.classID() : undefined;\n obj.left = l !== null ? l.classID() : undefined;\n return obj;\n }\n\n serializeState() {\n const state: any = {\n title: this.title(),\n data: this.data()\n };\n const chart = this.chart();\n if (chart) {\n if (chart.serializeState) {\n state.chart = chart.serializeState();\n delete state.chart.data;\n }\n }\n return state;\n }\n\n deserializeState(state) {\n if (state) {\n this\n .title(state.title)\n .data(state.data)\n ;\n const chart = this.chart();\n if (chart && state.chart) {\n if (chart.serializeState) {\n chart.deserializeState(state.chart);\n }\n }\n }\n return this;\n }\n\n // Events ---\n click(row, column, selected) {\n }\n\n dblclick(row, column, selected) {\n }\n vertex_click(row, col, sel, more) {\n if (more && more.vertex) {\n // console.log(\"Vertex click: \" + more.vertex.id());\n }\n }\n\n vertex_dblclick(row, col, sel, more) {\n if (more && more.vertex) {\n // console.log(\"Vertex double click: \" + more.vertex.id());\n }\n }\n\n edge_click(row, col, sel, more) {\n if (more && more.edge) {\n // console.log(\"Edge click: \" + more.edge.id());\n }\n }\n\n edge_dblclick(row, col, sel, more) {\n if (more && more.edge) {\n // console.log(\"Edge double click: \" + more.edge.id());\n }\n }\n\n hideRowOnLegendClick: { (): boolean; (_: boolean): MegaChart };\n hideRowOnLegendClick_exists: () => boolean;\n showToolbar: { (): boolean; (_: boolean): MegaChart };\n showToolbar_exists: () => boolean;\n titleFontSize: { (): number; (_: number): MegaChart };\n titleFontSize_exists: () => boolean;\n titleFontColor: { (): string; (_: string): MegaChart };\n titleFontColor_exists: () => boolean;\n titleFontFamily: { (): string; (_: string): MegaChart };\n titleFontFamily_exists: () => boolean;\n titleFontBold: { (): boolean; (_: boolean): MegaChart };\n titleFontBold_exists: () => boolean;\n titleBackgroundColor: { (): string; (_: string): MegaChart };\n titleBackgroundColor_exists: () => boolean;\n maximizedBackgroundColor: { (): string; (_: string): MegaChart };\n maximizedBackgroundColor_exists: () => boolean;\n showChartSelect: { (): boolean; (_: boolean): MegaChart };\n showChartSelect_exists: () => boolean;\n showCSV: { (): boolean; (_: boolean): MegaChart };\n showCSV_exists: () => boolean;\n showCount: { (): boolean; (_: boolean): MegaChart };\n showCount_exists: () => boolean;\n showMaximize: { (): boolean; (_: boolean): MegaChart };\n showMaximize_exists: () => boolean;\n toolbarShowLegend: { (): boolean; (_: boolean): MegaChart };\n toolbarShowLegend_exists: () => boolean;\n showInfoButton: { (): boolean; (_: boolean): MegaChart };\n showInfoButton_exists: () => boolean;\n infoIcon: { (): string; (_: string): MegaChart };\n infoIcon_exists: () => boolean;\n legendPosition: { (): string; (_: string): MegaChart };\n legendPosition_exists: () => boolean;\n\n title: { (): string; (_: string): MegaChart };\n title_exists: () => boolean;\n\n domainAxisTitle: { (): string; (_: string): MegaChart };\n domainAxisTitle_exists: () => boolean;\n valueAxisTitle: { (): string; (_: string): MegaChart };\n valueAxisTitle_exists: () => boolean;\n\n chartType: { (): string; (_: string): MegaChart };\n chartType_exists: () => boolean;\n chart: { (): any; (_: any): MegaChart };\n chart_exists: () => boolean;\n}\nMegaChart.prototype._class += \" composite_MegaChart\";\n\nMegaChart.prototype._1DChartTypes = MultiChart.prototype._1DChartTypes;\nMegaChart.prototype._2DChartTypes = MultiChart.prototype._2DChartTypes;\nMegaChart.prototype._NDChartTypes = MultiChart.prototype._NDChartTypes;\nMegaChart.prototype._anyChartTypes = MultiChart.prototype._anyChartTypes;\nMegaChart.prototype._allChartTypes = MultiChart.prototype._allChartTypes;\n\nMegaChart.prototype.publishReset();\n\nMegaChart.prototype.publish(\"hideRowOnLegendClick\", false, \"boolean\", \"Enable/Disable hiding row on legend clicks\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"showToolbar\", true, \"boolean\", \"Enable/Disable Toolbar widget\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publishProxy(\"title\", \"_toolbar\", \"title\");\nMegaChart.prototype.publish(\"ddlParamsFormat\", \"\", \"string\", \"DDL Param Format '{fname}, {lname}'\", null, { tags: [\"Advanced\"], optional: true });\nMegaChart.prototype.publish(\"titleFontSize\", null, \"number\", \"Title Font Size (px)\", null, { tags: [\"Advanced\"], optional: true });\nMegaChart.prototype.publish(\"titleFontColor\", null, \"html-color\", \"Title Font Color\", null, { tags: [\"Advanced\"], optional: true });\nMegaChart.prototype.publish(\"titleFontFamily\", null, \"string\", \"Title Font Family\", null, { tags: [\"Advanced\"], optional: true });\nMegaChart.prototype.publish(\"titleFontBold\", true, \"boolean\", \"Enable Bold Title Font\", null, { tags: [\"Advanced\"], optional: true });\nMegaChart.prototype.publish(\"titleBackgroundColor\", null, \"html-color\", \"Background Color\", null, { tags: [\"Intermediate\"], optional: true });\nMegaChart.prototype.publish(\"maximizedBackgroundColor\", \"#FFFFFF\", \"html-color\", \"Background Color while maximized\", null, { tags: [\"Intermediate\"], optional: true });\n\nMegaChart.prototype.publish(\"showChartSelect\", true, \"boolean\", \"Show/Hide the chartType dropdown in the toolbar\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"showCSV\", true, \"boolean\", \"Show/Hide CSV button\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"showCount\", false, \"boolean\", \"Show/Hide Data Count\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"showMaximize\", false, \"boolean\", \"Show/Hide Maximize button\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"toolbarShowLegend\", false, \"boolean\", \"Show/Hide Legend button\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"showInfoButton\", false, \"boolean\", \"Show/Hide Info button in toolbar\", null, { tags: [\"Basic\"] });\nMegaChart.prototype.publish(\"infoIcon\", \"\\uf05a\", \"string\", \"Help Icon\", null, { tags: [\"Basic\"] });\n\nMegaChart.prototype.publish(\"legendPosition\", \"none\", \"set\", \"Position of the Legend widget\", [\"none\", \"top\", \"right\", \"bottom\", \"left\"], { tags: [\"Basic\"] });\nMegaChart.prototype.publishProxy(\"legendFormat\", \"_legend\", \"rainbowFormat\");\nMegaChart.prototype.publishProxy(\"legendBins\", \"_legend\", \"rainbowBins\");\n\nMegaChart.prototype.publishProxy(\"domainAxisTitle\", \"_domainTitle\", \"text\");\nMegaChart.prototype.publishProxy(\"valueAxisTitle\", \"_valueTitle\", \"text\");\n\nMegaChart.prototype.publishProxy(\"chartType\", \"_chart\", \"chartType\");\nMegaChart.prototype.publishProxy(\"chart\", \"_chart\", \"chart\");\n","import { Platform, Utility, Widget } from \"@hpcc-js/common\";\nimport { Persist } from \"@hpcc-js/other\";\nimport { requireWidget } from \"./Utility.ts\";\n\nexport function retrofit_114_serialization(state, replacement_version) {\n replacement_version = !replacement_version || replacement_version === \"1.14.2-dev\" ? \"1.18.0\" : replacement_version;\n if (!state.__version) return state;\n const state_version_obj = Utility.parseVersionString(state.__version);\n const target_version_obj = Utility.parseVersionString(replacement_version);\n if (state_version_obj.major === 1 && state_version_obj.minor === 14) {\n console.info(\"Upgrading old persist from \" + state.__version + \" to \" + replacement_version);\n let _json_str = JSON.stringify(state);\n _json_str = _json_str.split('\"' + state.__version).join('\"' + replacement_version);\n\n const ret_obj = JSON.parse(_json_str);\n if (ret_obj.__properties && ret_obj.__properties.content) {\n ret_obj.__properties.content.forEach(function (n) {// FOR EACH top tier layout_Cell\n if (JSON.stringify(n).split(\"graph_Graph\").length > 1 && target_version_obj.minor >= 16) {\n n.__properties.widget.__id = n.__properties.widget.__properties.widget.__id;\n n.__properties.widget.__class = \"composite_MegaChart\";\n n.__properties.widget.__properties.showCSV = false;\n n.__properties.widget.__properties.chartType = \"GRAPH\";\n n.__properties.widget.__properties.chart = n.__properties.widget.__properties.widget;\n delete n.__properties.widget.__properties.chart.__id;\n delete n.__properties.widget.__properties.widget;\n }\n if (\"undefined\" === typeof n.__properties.fields) {\n n.__properties.fields = [];\n }\n });\n }\n return ret_obj;\n } else {\n return state;\n }\n}\n\nexport function deserializeFromObject(widget, state) {\n const promises = [];\n Persist.widgetPropertyWalker(widget, null, (w, item) => {\n w[item.id + \"_reset\"]();\n if (state.__properties[item.id] !== undefined) {\n switch (item.type) {\n case \"widget\":\n const widgetKey = item.id;\n promises.push(create(state.__properties[item.id]).then((w2: any) => {\n w2._owner = w;\n w[widgetKey](w2);\n return w2;\n }));\n break;\n case \"widgetArray\":\n case \"propertyArray\":\n const widgetArrayKey = item.id;\n const widgetStateArray = state.__properties[item.id];\n if (widgetStateArray.length) {\n const arrPromises = [];\n for (const widgetState of widgetStateArray) {\n arrPromises.push(create(widgetState).then((widgetItem: any) => {\n widgetItem._owner = w;\n return widgetItem;\n }));\n }\n promises.push(Promise.all(arrPromises).then(widgetArray => {\n w[widgetArrayKey](widgetArray);\n }));\n }\n break;\n default:\n w[item.id](state.__properties[item.id]);\n break;\n }\n }\n });\n return Promise.all(promises).then(widgets => {\n if (state.__data) {\n for (const key in state.__data) {\n if (state.__data.HasOwnProperty(key)) {\n switch (key) {\n case \"data\":\n widget.data(state.__data[key]);\n break;\n default:\n console.warn(\"Unexpected __data item: \" + key);\n widget[key](state.__data[key]);\n break;\n }\n }\n }\n }\n if (state.__state) {\n if (widget.deserializeState) {\n widget.deserializeState(state.__state);\n } else if (state.__state.data && widget.data) {\n widget.data(state.__state.data);\n }\n }\n return widget;\n });\n}\n\nexport function deserialize(widget, state) {\n if (typeof state === \"string\") {\n state = JSON.parse(state);\n }\n if (state.__id && state.__id.indexOf(widget._idSeed) !== 0 && widget._id !== state.__id) {\n console.warn(\"Deserialize: IDs do not match - \" + widget._id);\n }\n deserializeFromObject(widget, state);\n}\n\nexport function create(state: any): Promise<Widget> {\n if (typeof state === \"string\") {\n state = JSON.parse(state);\n }\n state = retrofit_114_serialization(state, Platform.version());\n return requireWidget(state.__class).then((WidgetClass: any) => {\n const widget = new WidgetClass();\n if (state.__id && state.__id.indexOf(widget._idSeed) !== 0 && state.__id.indexOf(\"_pe\") !== 0) {\n widget._id = state.__id;\n }\n return deserializeFromObject(widget, state);\n }).catch(function (e) {\n console.error(\"Persist.create: ***exception***\");\n console.error(e);\n });\n}\n\nexport function clone(widget) {\n create(Persist.serializeToObject(widget, undefined, true, true));\n}\n"],"mappings":"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"}
|